I only just recently started Fire Emblem hacking two days ago and in that time span I went from not knowing what asm even is to making my very first functioning skill!
Most of my issues came from constitution and I have some questions about that. I read from Teq’s character structure (outdated?) that con was seperated into base, class and bonus con and only after adding all three do you get your true con.
I copied the con section from Heavy Blade as a template but after hours of testing I finally realize that that code section seemed to be adding health values to the bonus con? Very strange.
In the end, it seems like the value at offset 1A isn’t just bonus con but the entire con value? I tested it in the FEBuilder debugger but I also understand that the FEBuilder built specifically for these things so I’m not sure.
Anyways, once I cut the fat from Heavy Blade’s con section and just used 1A, the skill worked exactly as intended, even with body rings and promotions.
Is there some story behind constitution? Is my skill going to suddenly break lately on because I’m only used 1A? Any thoughts would be appreciated.
The stat fields in the unit (“character”) struct work a bit differently outside vs. during battle calculations.
Outside of battle calcs, the stat fields are just the base stats before any modifiers (equip bonuses, barrier, rescue penalties, …) are applied; except for mov and con which only hold the bonuses gotten from stat boosters. This is what the Teq Doq describes.
During battle calculations, however, all the stat fields in the unit are “expanded” into the final value with the bonuses applied when copied to the battle unit struct (this was perhaps an attempt at optimizing and/or simplifying battle calcs). The difference for most stats is not always noticeable. For con and mov, the field that used to be only the bonus from stat boosts becomes the actual stat value itself.
That’s absolutely clear and concise, thank you! With this knowledge the coding for the skill Heavy Blade looks it was trying to draw from the overworld character values. That’s probably why is defaulted to ID 255 I guess.