Friday, November 27, 2009
Developoment tools
For starters there will be one main window which will be the whole workspace for the development program, under this there is not really any need for menus so the next part will be folders; kind of like the new Word 2007 where you have folders for each set of tools you can use in the program. The folders are the different types of files I need to manipulate, namely; characters, weapons, shields, armors and enemies. The window you get will have some similarities; the main one is the file list where you get all the files that are included in the set you are currently watching, for this there will also be an add and remove button. Another similarity will be that there attributes and that you can change these attributes and add new attributes.
Attributes themselves will come in a tree structure, where branches are usually a true or false and leaves usually have a value, this is to narrow down the size of each file and remove the need to have all values in all files. Attributes can furthermore be shown as radio buttons (for limited string or integer options), tick boxes (for Booleans) or fields that accept either strings (for example names) or normally only integers (for values). When a new attribute is added a popup window will show to ask if it is a branch or a leaf; branches will generally be true or false with default value false, leaves will generally be integers with suggested default value 1 (0 can be dangerous to use as it might result in divisions by 0 by mistake). After something is added the program will go through all files that are included in the list for that type and add the new attribute, one special file will save all default values. When a file changes a branch from false to true the attributes and their default values under that branch will be fetched from the save file.
Example structure for a weapon:
•Item_type : (fixed)
•Name : (String field)
•Type : (radio buttons)
•Damage_type* : (radio buttons)
oDamage_subtype : (radio buttons)
•Hands : (radio buttons)
•Min_damage : (integer)
•Max_damage : (integer)
•Range : (integer)
•Speed : (integer)
•Primary_attributes : (box)
oAttribute* : (box)
*Attribute** : (integer)
•Secondary_attributes : (box)
oAttribute*** : (box)
*Attribute : (integer)
* Damage_type will be devided into: Physical, Magical and Elemental, with sub types being for Physical: Slashing, Piercing and Blunt, for Magical: Dark (Black), Light (White), Arcane and Gravity, and for Elemental: Fire, Earth, Water and Wind.
** Primary attributes are: Strength, Agility, Intelligence, Endurance and Vitality (I might not include these attributes in items at all).
*** Secondary attributes are: Block, Parry, Dodge, Accuracy, Critical_strike, Armor, Resistance and Power.
Actions
Since beneficial skills works pretty much the same way as damaging skills this apply for those too, I will still call it attacks here though.
For all types of attacks there will be a set of target area, each attack will mainly have one target area; in rare cases an attack can have two target areas. These target areas are as follows:
· Single hit – the intuitively normal area, one hit on one target.
· Multiple hits – also very intuitive but it comes in flavors. Basically it is a single attack done multiple, but a finite number of, times and will roll attacks several times.
o Multiple hits/single target – all hits are directed at the same target, efficiently doing lots of damage to one target.
o Multiple hits/multiple targets – hits several targets, randomly or by choice.
· Slashing hit – one single attack that hits multiple, but a finite number of, targets. This also comes in flavors.
o Slashing hit/multiplying – a slash that rolls one attack and does the same damage to all targets it hits, e.g. the total damage done will be the attack multiplied by the amount of targets.
o Slashing hit/dividing – a slash that rolls one attack and divides it equally among all targets it hits, e.g. the total damage will be like one attack and the individual target damage will be the attack divided by the amount of targets.
· Area of effect (AoE) – one single attack that damages all targets within an area, this can hit an infinite amount of targets.
o AoE dividing – one roll divided on all targets it hits.
o AoE re-rolling – one roll for each target it hits.
· All targets – much like the AoE attack but with the area being the whole map. All target attacks can have specifics such as of target group: all hostiles, all friendly, or a unit type: all humanoids, all beasts, or a combination: all hostile beasts.
Attacks will also have effects, one attack can have more than one effect but rarely more than a few:
· Instant damage – the most obvious way to hurt an enemy target (or heal a friend), the damage will be instantly deducted from the targets health.
· Damage over time (DoT) – damage that ticks each turn for a certain amount of turns.
· Damage over actions (DoA) – damage that only occurs when the unit does something, the amount of damage taken will depend on the action.
· Damage after time (DaT) – damage that lies dormant until a certain amount of time has passed. E.g. there is time to remove the DaT before the damage actually happens, but because of the easy to save you completely from it this damage is often massive.
· Damage after action (DaA) – damage that lies dormant until the target does an action, by not doing anything a target can avoid damage until it can be removed. Because of the easy to save you completely from it this damage is often massive.
· Slow (or other speed effects) – increases the period between actions and the time it takes to do timed actions, but not cooldowns.
· Interrupt – break any action that takes time and set time until next action to full.
· Attribute effects – decrease (or increase) any secondary attribute of the target.