[FE8] Gaiden-style Magic Menu

The first version of FE8 Gaiden-style Magic Menu is now publicly released!

FE8 Spell Menu - Repository

This hack lets you select a spell that the unit learns by leveling up from a separate menu, essentially attacking with a weapon outside your unit’s inventory. Casting a spell also costs HP, so be careful!

The repo above will let you build it to a clean FE8 ROM. (Tobins not included.)

Known issues:

  1. Has not been tested with SkillSystem (that’s why this is released as an open source buildfile).
  2. Magic menu can only be selected on player phase; if the unit does not have a fallback weapon in their inventory they will be unable to counterattack on enemy phase. All vanilla characters defined in the SpellAssociationTable can wield magic normally so in normal gameplay it wouldn’t make a difference. (It would just give you a free attack on player phase if for some reason your weapon breaks.)
  3. When selecting a unit to move it, if they do not have a usable weapon in their inventory their attack range won’t be drawn.
  4. HP cost per cast isn’t animated in the magic user’s HP bar during battle.

Will update again when 1.1 is out - if any other bugs show up, drop me a github issue or post here.

31 Likes

Looks interesting. How is the skill learning on level up handled? Is it per class or per unit?
Hopefully for the next update you can add dynamic hp depletion and access on enemy phase.
Nice work

1 Like

The spell list is per unit (as it was in Gaiden). There’s a vanilla_spell_lists.event included in the repo, and each unit can have up to 5 spells defined there, plus the level learned. There’s also a BlackMagicSpellLearnTable in Tables where you can associate each unit to its spell list pointer.

If the unit’s current class has the “Promoted” flag set, it adds 0x80 to their level when calculating learned spells. So you can set promoted-only spells for units by adding 0x80 to the level you want them to learn it, and they’ll have access to all their base-level spells when they reach their final class tier.

The unit won’t be able to use a spell if they don’t have the weapon rank to use it through normal means (and they won’t display the spell menu at all if they have no rank in any offensive magic) - so for, say, L’arachel, I set her up to learn both Fire and Lightning as level-1 spells, but she’ll only be able to use the corresponding one when she promotes to Mage Knight or Valkyrie respectively.

The process to do this for staves/white magic is pretty similar - I’ll also look into adding that option in a future update.

4 Likes

Was going to ask about staves as well.
The bit about needing weapon rank is odd, but I guess you could always just set them all to E if you don’t want tomes.

It’s there to account for characters who can’t use spells unless they’re in a class that can use them (e.g. unpromoted staffbots, or how in Gaiden/Echoes each of the Villagers has a spell list defined, but can only access it if they are currently a Mage/Sage/Priestess)

I see, but I can see a magic system being better off with giving different unit types magic access.

Things are happening with displaying a unit’s learned spell list thanks to some tweaks I’m making to the Modular Stat Screen. I’ll release an official update after some bugfixes.

(ignore the sword rank, it gets removed if he’s promoted to Mage normally)

9 Likes

screw the gaiden magic that tobin mug is what i’m really interested in :eyes:

Once again, Tobin demonstrates the latest update:

This is mostly just some discoverability fixes to provide the player more info - Spells now show up in the statscreen, and popups appear whenever a unit learns a new spell on level up.

The spell getter and spell learner functions have been improved to include a weapon rank check as well as a level check, so units who can’t use magic in their current class won’t learn spells they can’t use, nor will their spells show in their stat screen. For those of you using the vanilla patch, this means that you can define, say, both Anima and Light spells for L’arachel, and she’ll be able to access the corresponding ones when she promotes to either Mage Knight or Valkyrie.

Also, HP bars now decrease on spell casting if you have battle anims on (still working on the anims-off case).

I’ll release the source in the github repo once I set up the updated code to work with vanilla.

Next updates will address:
-Fix display range when unit doesn’t have a fallback weapon in their inventory
-Incorporate White Magic

8 Likes

How modular is this going to be when finished?

If someone wants to have a world where they have unified magic ranks a la Shadow Dragon forward where Light, Anima, and Dark are all lumped together, is that an issue? (I’m assuming not, since you’d just have a single Tome weapon rank and would replace the individual checks with checks for that rank, but it doesn’t hurt to ask.)

Or, could it be tweaked to allow the check to just be for one type of magic rank to make sure the unit is a mage instead of for the specific magic type of the spell, in the event you would still want separate weapon ranks but want a unit to learn a spell outside of their specialization (and not have a rank in that type) for character/plot reasoning?

To add on to this,
would it be possible to create healing / misc spells a la sacrifice from micaiah?

It’s intended to be pretty modular. For point 1, you could just combine all Tome weapon types under, say, weapon type 5 (used as Anima in vanilla) and just check for that rank. In fact, that really wouldn’t require changing the ASM at all, it’d just be a character/item editor thing.

For 2… most likely so, in fact that’s how the first release handles it, it just checks if the unit has a rank in any magic type to determine if they can access the menu command and use the spell. It would, however, give that unit a weapon rank in the type of spell cast at the end of the battle round, as they’d gain WEXP from using it (similar to the stone glitch in vanilla FE8). To avoid that, you’d either edit the spell to yield 0 WEXP (which would also make it cost no HP to cast), or you’d need to edit the function which gives WEXP at the end of a battle round to not award WEXP if the unit’s current weapon rank is 0. So there would be some very minor ASM tweaking to achieve that, but it certainly sounds possible.

myst1cp4nd4
To add on to this,
would it be possible to create healing / misc spells a la sacrifice from micaiah?

Certainly - this is basically what I mean by “white magic” (e.g. Gaiden’s heal spell which costs 1 HP to use), and is planned for the next update.

1 Like

hyper doing the lord’s work again. GREEEEEEEEEEAAAAAAAAAAAAAAATTTTTTTOO

This is a really cool system you’ve created, great job! I was wondering if it’s possible to use this hack to give a unit the “sacrifice” ability from FE10, where someone lacking staves can transfer their own HP to an ally. It’s one of the more interesting abilities that has yet to be implemented in FE8.

it’s like people don’t read

My bad, I should have read more carefully.

HP bar animations are now working! This bit has been a minor pain point throughout the whole Gaiden magic system (and is actually the thing I joined here in order to get help fixing), so it’s nice to see how far this has come.

There are still some bugfixes before I release the full White Magic update (including a fatal one involving selecting the menu command when no units that can be staff targets are in range) but it’s steadily coming along.

10 Likes

Staff range bug is now fixed (though I had to dismantle the RangeDisplayFixes patch a bit to fit it in), as is the fatal bug mentioned in the previous post. Now all I have left to do is update the movement range graphics to account for spells, and update the map anims to show the HP bars changing properly. Once that’s done, that should cover basically everything I’ve set out to do with this system…

4 Likes

Wow, this is ultra cool.

My first thought when seeing this is kind of the opposite of everyone else’s - “What if I made a Magic Swordsman class that can’t use tomes, but can wield swords + use this magic system”. Or using it as a neat way of spicing up a sword only infantry Lord on promotion.

My second thought is that it’d be perfect if you could show the HP costs instead of the ‘–’ in the spell list. But I can’t imagine that’d be easy to do.

Seems like I really have to learn how this whole ASM hacking thing works.

This thought actually made me think about something entirely different - would the system work in having learned spells actually have a defined number of uses (instead of infinite) in addition to HP costs? Whether that defined number was per game (“Learn Warp? Well, it only has 3 casts and then it’s gone, even though you learned it”) or per chapter (the casts could refill between chapters, but you’d be limited in how many times you could use it during a given chapter - to reference previous example, you’d get 1 Warp cast, but it refilled between maps), it really doesn’t matter to the question, I guess.

Obviously, it’s not entirely Gaiden-style if you add limitations like that, but it could open up interesting strategic choices.