PDA

View Full Version : Imzogelmo's Propsal for FF1 monster data template



Imzogelmo
01-13-2013, 10:56 PM
IV. Monster
A. Attributes (32 * 4 bytes)
1.
2.
3. CurrentHP
4. MaxHP
5.
6.
7. Strength
8. Vitality
9. Agility
10. Luck
11. Intelligence
12. NumberOfHits
13. Attack
14. Hit
15. Defense
16. Evade
17. MagicAttack
18. MagicDefense
19. MagicBlock
20. HitPercentUp
21. Unknown
22. Critical
23. Morale
24.
25.
26.
27.
28.
29. Gil
30. Experience
31.
32.
B. Elemental (32 * 2 bytes)
1. ElementalAttack (applied to physical attack only)
2. (reserved for expansion of above)
3. ElementalResistance
4. (reserved for expansion of above)
5. ElementalWeakness
6. (reserved for expansion of above)
7. ElementalNullify
8. (reserved for expansion of above)
9. ElementalAbsorb
10. (reserved for expansion of above)
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
C. Status (32 * 2 bytes)
1. BlockedStatus
2. (reserved for expansion of above)
3. (reserved for expansion of above)
4. (reserved for expansion of above)
5. (reserved for expansion of above)
6. (reserved for expansion of above)
7. CurrentStatus
8. (reserved for expansion of above)
9. (reserved for expansion of above)
10. (reserved for expansion of above)
11. (reserved for expansion of above)
12. (reserved for expansion of above)
13. SpecialAttackStatus (status to apply on use of special attack)
14. (reserved for expansion of above)
15. (reserved for expansion of above)
16. (reserved for expansion of above)
17. (reserved for expansion of above)
18. (reserved for expansion of above)
19.
20.
21.
22.
23.
24.
25. PermanentStatus
26. (reserved for expansion of above)
27. (reserved for expansion of above)
28. (reserved for expansion of above)
29. (reserved for expansion of above)
30. (reserved for expansion of above)
31.
32.
D. Miscellaneous (32 * 2 bytes)
1. Categories
0x0001 Aquatic
0x0002 Beast
0x0004 Giant
0x0008 Humanoid
0x0010 Aquatic
0x0020 Flying
0x0040 Regenerative
0x0080 Were
0x0100 Plant
0x0200 Machine
0x0400 Non-corporeal
0x0800 Undead
0x1000 Insectoid
0x2000 Dragon
0x4000 Spellcaster
0x8000 -reserved
2. AIScript
3. AIMagicIndex (index within circular list)
4. AISpecialIndex (index within circular list)
5. (reserved for AI script use)
6. MagicChance
7. SpecialChance
8. (reserved for AI script use)
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.

Imzogelmo
01-16-2013, 03:50 PM
Perhaps "Categories" should go into Attributes slot 1, giving it more options and also to parallel the use of "class" there for characters and "sphere" for spells. Thoughts?

Gleeok
02-07-2013, 09:21 PM
I'm trying to work out the last of these today.
As it stands now monsters are incredibly similar to characters except for item drops/steals, equipment, skill/spell management, etc. They probably need a few more variables for basic AI like spell-happiness rate, counter-attack, whatever.
There are 32 flags for enemy "families", the same with classes - so an item can do extra damage to a Giant family, and likewise enemies can have class bits set.
IA for 1.0 has to go inside a script "<monster-name>" otherwise the base script "Monster" is run with default AI if it is not overridden.
Monsters will have lists of abilities, but not like the NES version (which has lame AI), so they can be a little smarter in their special attacks. (Should each ability in the list have an adjustable rate, or each category of ability?)

Consequently items have a very similar structure to these as well, due to them being equippable. I think spells are the only thing that are very different.

Imzogelmo
02-07-2013, 09:37 PM
It wasn't just because I copy-pasted them... they all are similar in that they should probably derive from a "combatants" class or whatever. They should dump into a common struct during battle for common use in algorithms.

Speaking of which, we need to decide how many combatants (max) a battle would contain. Since each combatant may have several parallel variables to keep track of, it would probably be helpful to have fixed indexes for each monster and character. It could be done dynamically, but then you'd need each algorithm to know the cutoff (index dividing characters and monsters) which would suddenly be moving, ergo held in a battle variable.

One thing to consider in that is the multi-targeting attacks. We probably want to have a bit per target for those--so some even power like 16 or 32 seems appropriate (8 is too low, IMO).