FFT style revival mechanics

Does anyone know if it would be possible to use similar dying mechanics in fire emblem to the ones that are used in final fantasy tactics? In FFT, when a unit dies, he gets a counter above his head that starts at 3 and counts down by 1 every turn. When the number hits 0, the unit is dead forever, but if you revive him before that happens, you can bring the unit back.

2 Likes

You could definitely modify Lex Talionis Maker’s python code to do that. I have no idea if it could be hacked into the GBA games.

You could probably do it in GBA but you’d have to modify the death routine and make a new status to account for being downed. You’d also have to edit the Restore staff so it doesn’t remove downed. You could probably implement downed in a way other than status but idk

Edit: could also run an event on death quote that spawns a unit with Shade+ which can’t do anything but can be revived with something. (or make a downed status) The problem is being able to replace the downed unit with the counterpart unit since there aren’t enough memory slots for that.

If you have enough unit IDs to double your player character units then you could take the “downed” unit’s ID and subtract the required amount to get the correct ID to spawn back in

1 Like

Perhaps some kind of “HP threshold” where if damage hits it, the character is “downed” with a modified 1-damage poison until that counts down to 0, which can only be “healed” with a specific staff/item on that adjacent “downed” ally?

There are several ways to do this. The ideal way would be by writing custom code, and you could hook death quotes, create a “death’s door” status, and other fancier options.

But you can also do it entirely with events and existing patches, which we call the spaghetti option. I made a patch showing the spaghetti option in the prologue for Seth.

To properly see the events, you need the UNCM, Set Unit Status, and Death to Player Unit patches.

The events:

Seth's death quote

-I “change” him to playable again to change his deployment byte, otherwise he’d still die normally.
-I give him the “use link arena palette” (which really is the light rune palette outside of the link arena) to visually differentiate him from a normal petrified/already moved unit.
-I set him to Petrified for 3 turns (0x3B, 0x3 is the duration, 0xB means Petrified), which is the time you have to revive him.
-Flag 0x21, which was turned ON in the start event, is turned OFF to enable the Turn and Talk events with him.

Turn event


-I check for how much longer Seth is petrified (dying).
-If he still has at least 1 turn left, decrement the duration and end the event.
-If he has 0 turns left, he dies for good. “Making” him blue again isn’t really necessary, but since I did so at the start, I do it again here to re-update his deployment byte.

Talk event


-I make Seth be petrified for 1 turn simply so next phase he gets the “status cleared” animation, but you can set it to 0 if you want.
-“Making” him playable isn’t necessary, but I do it here because I also did so at the beginning.

Even the spaghetti option can vary.
-I used temporary flag 0x21 arbitrarily since I was only doing it for one chapter, but if I was looking to have this for the whole game, I’d have used a Global Flag instead, like vanilla uses for Amelia.
-I used Seth by ID because I was only doing it for one chapter and one unit, but if I was doing it for multiple units, I’d just set a flag for all death quotes, use it to trigger an Always Event, use the patch that gets the coordinates of the most recently killed unit and would do it by coordinates instead to make the event reusable for multiple units.
-I “made” Seth playable because in vanilla he’s guaranteed to be a blue unit the whole game, but if he wasn’t, I’d check his allegiance and branch based on it.
-I set Seth’s HP to 0 because I decided that the revival would happen only with Talk. If I wanted to enable Restore as well, I’d have set it to 1, but then I’d also need to write custom code since Restore wouldn’t change his dead, already moved, or link arena palette states.
-I used the status as the counter because status is saved on suspend and it also doesn’t change for dead units. Another option I considered was the recovery mode, but that one does get automatically updated so it wouldn’t be reliable.
-I used Petrify as the status because it has both effects of preventing a unit from moving and giving them an unique palette, even though it’s redundant considering I set him to Dead and change his palette. You could experiment with other statuses, even invalid ones, but I don’t guarantee it won’t have other effects.
-I set his state to Dead because this prevents him from being attacked by enemies. If you want him to be able to attacked by enemies, then don’t set him to Dead, but keep in mind this would require reworking the events since as it is, he’d just keep refreshing his 3 turns counter whenever he gets killed while already dying, which is abusable.
-Enemy units still can’t move through Seth, which is abusable. However, changing this would require writing custom code (like a reverse Pass), or using the Fourth Allegiance patch and setting the fourth allegiance to essentially be dying units who can be passed by every other unit.
And so on.

If you think this is somewhat clunky, you’d be right, but it’s an option that doesn’t require writing any new code. If you’re willing to learn ASM or C, then you’d be able to do it more elegantly…eventually. On the Vesly scale of wizardry complexity, this would rank at level 4 out of 5.