Archived, we've been using JSON for a while and added more fields/slots/types to Items.
Items Concept Design:
Items will be created in XML, field default values will be filled be the class.
Item might fail without these 2 fields:
ID: Name of the Item.
- Game is likely to crash if not specified.
- xml field: id="Dummy Item"
Icon: Path to file with picture of an item.
- We might use default here as well after we find some pics for slots that would make good defaults. For now, this is the second field item will fail without!
- xml field: icon="content/items/dummy_item.png"
Optional fields:
Description:
- Defaults to an empty string.
- xml field: desc="This is a dummy item for testing!"
Changing stats:
- Defaults to an empty dict.
- xml field: <mod charisma = '20' />
Changing minimum/maximum of stats:
- Defaults to an empty dict.
- xml field: <min charisma = '20' />
- xml field: <max charisma = '20' />
Add/Remove traits:
- Defaults to an empty list.
- xml field: <addtrait name = 'Sexy Air' />
- xml field: <removetrait name = 'Retarded' />
Add/Remove skills:
- Defaults to an empty list.
- xml field: <addskill name = 'Water 2' />
- xml field: <removeskill name = 'Fire 1' />
Add/Remove Effects:
- Not implemented yet but the fields will be there. Effects in the future would be sick, poisoned, exhausted, pregnant and so on).
- Defaults to an empty list.
- xml field: <addeffect name = 'Dizzy' />
- xml field: <removeeffect name = 'Poisoned' />
Locations: Locations where the item can be acquired.
- At least one must be specified or item will be registered but will never appear in the game. The only reason to leave this out is if item can only be awarded by a script.
- This defaults to an empty list.
- xml field: <location name = 'Item Shop' />
List of traits that favor/reject the item: (for auto-equipping or shopping).
- Defaults to an empty list.
- xml field: <goodtrait name = 'Strong' />
- xml field: <badtrait name = 'Meek' />
Price:
- Defaults to 0.
- xml field: price = '10'
Cmax: Will only apply mod effects if girl's stat is below this value. The idea is not to allow cheap, peace of crap consumables to max out a girl completely. (Now also works for misc items!) Cmax will not work with ctemp and if ctemp is active, your cmax setting will be overridden.
- Defaults to 'false' and game will enforce 'false' if item is not consumable or misc.
- xml field: cmax = '75'
Sex: (Male/Female/Uni) This should prevent Male hero from being able to equip a dress or a strap-on.
- This will defaults to Unisex
- xml field: sex = 'female'
Infinite: (If item is infinite in the shop)
- Defaults to false.
- xml field: infinite = 'false'
Chance:(To acquire an item at any Location)
- Defaults to 50 if not specified.
- xml field: chance = '100'
Badness: (Chance of girl buying this item)
- Defaults to 0 if not specified. (Meaning 100% chance)
- xml field: badness = '10'
EqChance: (Chance of girl AutoEquipping the item)
- Defaults to Badness if not specified.
- xml field: eqchance = '22'
Slots:
- Slot default to consumable!
- xml field: slot = 'consumable'
List of slots:
self.eqslots = dict(head = false,
body = false,
cape = false,
feet = false,
amulet = false,
wrist = false,
weapon = false,
smallweapon = false,
ring0 = false,
ring1 = false,
ring2 = false,
belt0 = false,
belt1 = false,
belt2 = false,
misc = false,
consumable = None
)
The 'key' (or the first word in each pair) is the slot you can choose for the item.
Options (possible but not limited to):
Weapon Slot - Sword, Dagger, Mace.
Concealed Weapon Slot - Dagger.
Three Ring Slots - Rings
Amulet Slot - Amulet
Head Slot - Helmet, Tiara, Crown
Body Slot - Armor/Clothing
Cape Slot - Cape
Feet Slot - Boots
Consumable Slot - Consumable
Consumable also opens a number of optional fields (maybe more in the future):
Block: Will have no effect if used again before x number of days. (Actually cannot be used again the way I programmed it for now)
- Defaults to false.
- xml field: cblock = '5'
Temp: If item effect is temporary (in days).
- Defaults to false
- xml field: ctemp = '3'
Effect: Determines the 'area' of items effect.
- Defaults to false (Meaning single girl)
- xml field: ceffect = 'brothelfree'
Effect areas:
- 'false' = Single Girl
- 'brothelgirls' = All Girls in the same brothel with the girl.
- 'brothelfree' = All free girls in the brothel.
- 'brothelslave' = All slavegirls in the brothel.
- 'allslaves' = All slave girls that you own.
- 'allfree' = All free girls working for you.
- 'allgirls' = All girls in your service.
Three Belt Slots - To take items into battle or use them in events/quests.
Note: Battle Items are always consumables and will be created by dev team because we'll have to design them twice (Once in the game and another in BE). After a decent release version of a game is completed, I will figure out Battle Engine in depth and create a bridge to items as well as adding more synergy between BE and the game. For now I would prefer to focus on game code and content using just basic BE features.
Misc Slot:
- Will allow to equip one item that will give it's full effect after an item has been worn for a number of days. Basically the moment item is equipped, game starts to count days until a specified number is reached, than applies it's effect permanently and can be passed to a different girl or disappears.
Misc slot adds new fields:
Temp: How long until item takes affect in days.
- Will default to 10 days.
- xml field: mtemp = '3'
Destruct: (Optional) Does the item disappear after it takes effect.
- Defaults to false.
- xml field: mdestruct = 'true'
Reusable: Blocks the item to be used for the same girl twice.
- Defaults to false.
- xml field: mreusable = 'false'
Book for example might be set to:
Reusable: false
Destruct : false
Temp = 10
Pet might be set to:
Reusable: true
Destruct : false
Temp = 1
Type: Important in some places like weapons since different weapons might make different sounds and have different damage modifiers in battle engine.
- Default to it's slot.
- xml field: type = 'Sword'
- Items should be stackable.
- Shops should have locked inventories to be restocked once in 'x' number of days.
Notes:
- Only consumables (without temp effect) and misc items should award traits because if girl already has a trait that is awarded to her by a wearable item (ring or cape for example), trait will disappear as item is taken off. This is obviously possible to avoid but that would require a bit of coding and I see little benefit.
----------------------------------------------------------------------------
Still to design:
We still need to decide if we want shops to look like they do in Alkion/OtherWorld or give them a retro look like in old FF games.
Another issue is how to pass items to girls from player, do it in the girl profile screen or construct something like WM.
TODO:
- Items that can only be equipped by one character.
- Change upkeep, exp, gold.
- For cmax you should probably use condition <= rather than just <.