PyTFall > PyTFall: Game design

<-- Archived -->

(1/50) > >>

Xela:
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:
--- Code: ---id="Dummy Item"
--- End code ---

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:
--- Code: ---icon="content/items/dummy_item.png"
--- End code ---


Optional fields:

Description:
- Defaults to an empty string.
- xml field:
--- Code: ---desc="This is a dummy item for testing!"
--- End code ---

Changing stats:
- Defaults to an empty dict.
- xml field:
--- Code: ---<mod charisma = '20' />
--- End code ---

Changing minimum/maximum of stats:
- Defaults to an empty dict.
- xml field:
--- Code: ---<min charisma = '20' />
--- End code ---
- xml field:
--- Code: ---<max charisma = '20' />
--- End code ---

Add/Remove traits:
- Defaults to an empty list.
- xml field:
--- Code: ---<addtrait name = 'Sexy Air' />
--- End code ---
- xml field:
--- Code: ---<removetrait name = 'Retarded' />
--- End code ---

Add/Remove skills:
- Defaults to an empty list.
- xml field:
--- Code: ---<addskill name = 'Water 2' />
--- End code ---
- xml field:
--- Code: ---<removeskill name = 'Fire 1' />
--- End code ---

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:
--- Code: ---<addeffect name = 'Dizzy' />
--- End code ---
- xml field:
--- Code: ---<removeeffect name = 'Poisoned' />
--- End code ---

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:
--- Code: ---<location name = 'Item Shop' />
--- End code ---

List of traits that favor/reject the item: (for auto-equipping or shopping).
- Defaults to an empty list.
- xml field:
--- Code: ---<goodtrait name = 'Strong' />
--- End code ---
- xml field:
--- Code: ---<badtrait name = 'Meek' />
--- End code ---

Price:
- Defaults to 0.
- xml field:
--- Code: ---price = '10'
--- End code ---

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!)
- Defaults to 'false' and game will enforce 'false' if item is not consumable or misc.
- xml field:
--- Code: ---cmax = '75'
--- End code ---

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:
--- Code: ---sex = 'female'
--- End code ---

Infinite: (If item is infinite in the shop)
- Defaults to false.
- xml field:
--- Code: ---infinite = 'false'
--- End code ---

Chance:(To acquire an item at any Location)
- Defaults to 50 if not specified.
- xml field:
--- Code: ---chance = '100'
--- End code ---

Badness: (Chance of girl buying this item)
- Defaults to 0 if not specified. (Meaning 100% chance)
- xml field:
--- Code: ---badness = '10'
--- End code ---

EqChance: (Chance of girl AutoEquipping the item)
- Defaults to Badness if not specified.
- xml field:
--- Code: ---eqchance = '22'
--- End code ---


Slots:
- Slot default to consumable!
- xml field:
--- Code: ---slot = 'consumable'
--- End code ---

List of slots:


--- Code: ---            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
                                      )
--- End code ---

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:
--- Code: ---cblock = '5'
--- End code ---

Temp: If item effect is temporary (in days).
- Defaults to false
- xml field:
--- Code: ---ctemp = '3'
--- End code ---

Effect: Determines the 'area' of items effect.
- Defaults to false (Meaning single girl)
- xml field:
--- Code: ---ceffect = 'brothelfree'
--- End code ---
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:
--- Code: ---mtemp = '3'
--- End code ---

Destruct: (Optional) Does the item disappear after it takes effect.
- Defaults to false.
- xml field:
--- Code: ---mdestruct = 'true'
--- End code ---

Reusable: Blocks the item to be used for the same girl twice.
- Defaults to false.
- xml field:
--- Code: ---mreusable = 'false'
--- End code ---


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:
--- Code: ---type = 'Sword'
--- End code ---


   - 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 <.

Xela:
Traits Concept Design:

Traits will be created in XML.


Trait might fail without this field:

ID: Name of the Trait.
- Game is likely to crash if not specified.
- xml field:
--- Code: ---id="Big Boobs"
--- End code ---


Optional Fields:

Description:
- Defaults to an empty string.
- xml field:
--- Code: ---desc="This girl really has knockers."
--- End code ---

Temp: Trait has only temporary effect.
- Defaults to 0. (Effect is permanent)
- xml field:
--- Code: ---temp='0'
--- End code ---

Modifies stat values (current, max, min):
- Defaults to an empty list
- xml field:
--- Code: ---<mod charisma = '10' />
      <max charisma = '10' />
      <min charisma = '10' />
--- End code ---

Block: Blocks other traits while active.
- Defaults to an empty list.
- xml field:
--- Code: ---<blocks name = 'Small Boobs' />
--- End code ---

Effect: Does not currently do anything.
- Defaults to an empty list.
-


Notes:

- Traits are supposed to be more permanent than items so in this scenario:

Girl has 80 charisma current and 100 charisma max.

Case 1:
- Girls acquires a trait that raises her charisma by 20 points (Maxed out).
- Girl works hard on improving her looks and gains 10 more points (Still at 100 because of Max stat).
- Girl looses the trait, her charisma falls back to 80 points.
 
Case 2:
- Girl equips an item that raises her charisma by 20 points (Maxed out).
- Girl works hard on improving her looks and gains 10 more points (Still at 100 because of Max stat).
- Girls takes the item of, her charisma is now 90 points.

This is done by design in order to prevent chaos of traits being awarded/removed by every item and event and getting girls with a few dozen traits each (Block is another precaution)

- There is a trait related field in girl's XML called Absolute Block, that ensures that a number of traits can NEVER be awarded to a girl. There is no way to influence that through traits or items and the only way to clear that list is command in game's console or python script.

Xela:
Brothels concept:

XML Fields:



--- Code: ---id= "1"
--- End code ---
ID, should be numerical from 1 to 10.  To be used by the game internally.



--- Code: ---img='content/buildings/oldshack.jpg'
--- End code ---
Image of the Brothel.



--- Code: ---name= 'Old Shack'
--- End code ---
Name of the brothel to be displayed to the player.



--- Code: ---desc= 'Small, rundown building on the very outskirts of town.'
--- End code ---
Description of the Hotel.



--- Code: ---price= '500'
--- End code ---
Price of the building.


--- Code: ---upgrade_slots= '5'
--- End code ---
Game defaults this to 3, sets maximum amount of upgrades slots for the brothel.


--- Code: ---rooms= '1'
maxrooms= '2'
--- End code ---
Amount of rooms and maximum amount of rooms.



--- Code: ---fame= '0'
maxfame= '100'
--- End code ---
Fame and maximum fame. Amount of clients coming to a brothel partially depends on this.



--- Code: ---rep= '0'
maxrep= '100'
--- End code ---
Reputation and maximum reputation. Quality of clients depends on this.



--- Code: ---maxrank= '2'
--- End code ---
Max rank prostitutes can obtain in this brothel.



--- Code: ---mod= '1'
--- End code ---
Modifier to base prices. Each upgrade has a fixed price, this field is a multiplier for that price so upgrades, upkeep and advertisements can be adjusted.



=============================
Other stats:


Dirt:
Representation of brothels state, high values should scare off costumers and have negative effects on work.


Base Clients:
Set to 5 for all brothels but this value is (should be) also effected by brothel modifier.

=============================
Other attributes:


Flags:
Same system as for girls.


Bookkeeping:
Brothels support basic bookkeeping (income/expenses). Calculated per brothel and logged in on daily basis.


Advertising:
Modifies fame and reputation of the brothel.

--- Code: ---            self.advert = dict(
                sign = dict(active = false, price = 200),
                flyers = dict(active = false, price = 30),
                magazine = dict(active = false, price = 50),
                billboard = dict(active = false, price = 100),
                girl = dict(active = false, price = 150),
                celeb = dict(active = false, price = 5000)
                )
--- End code ---

* Lack of signboard should set clients to 0?

==============================================================
Upgrades:

1) Garden

- Flowerbeds (Joy bonus)
- Garden (Rest + Joy)
- Landscape design (Rest + Joy + Costumer satisfaction bonus)



2) Rooms

- Improved interior (Costumer satisfaction, Joy, Price)
- Luxury Rooms (Costumer satisfaction, Joy, Price)
- VIP Rooms (Costumer satisfaction, Joy, Price)


3) Guards

- Guard Quarters (Frees up all rooms otherwise taken by security (max 5), small security bonus)
- Training Quarters (Battle stats bonuses of girls had nothing to do during the day)
- Sparring Quarters (Better battle stat bonuses + joy bonuses + disposition bonuses for warriors in the building)


4) Bar

- Bar (Enables Bar job)
- Draft Beer (Improves income)
- Tapas (Tasty snacks, farther improves income and costumer satisfaction)


5) Strip Lounge

- Strip Lounge (Enables Strip job)
- Large podium (Improves girls stats and costumer satisfaction)
- Golden cages (Further Improves girls stats, costumer satisfaction and income from the club)


6) Main hall

- Main Hall (Improves costumer satisfaction, security and reputation)
- Reception (Improves brothel income, costumer satisfaction)
- Statue of some goddess (Improves fame and brothel income)


Upgrades are set in xml on the main node. Yeah brothel can have each own set:

Entries are:


--- Code: ---      garden = '3'
      bar = '3'
      stripclub = '3'
      room_upgrades = '3'
      mainhall = '3'
      guards = '3'


--- End code ---

garden = '2' would mean garden branch can be upgraded to level 2 (including).

Otherwise there are now slots, for example, if brothel just has 2 slots, even if all 18 upgrades are available, only two can be built, game will throw an no slots available warning afterwards.

==================================
We've discussed (I will be coding this in soon):

Upkeep:
Should be paid on weekly basis and preferably only for good brothels (aka property tax).


Upgrades:
As soon as we figure out what upgrades we need, I will code in a system that enables them on per brothel basis on xml. One idea I really liked is to allow more upgrades than their are slots to fill them in a brothel.


Security level:
Come up with a security level system.


Damage:
Dislike this myself, but I'll think about it.

Location: Just an extra field in the class, can be added after we have actually locations.

Xela:
Reserved

Xela:
Reserved

Navigation

[0] Message Index

[#] Next page

Go to full version