[FE 14] Magic Weapon Help

(Cross-posting this from Serenes Forest; I was informed this was a more active community for FE modding)

For a long time now, I’ve really wanted the ability to repoint/resequence existing weapon animations in FE:Fates by reassigning the labels for them. The biggest example of this is getting the game to understand that a weapon given ranged capability needs to call the ‘weapon is casting a spell’ animation sequence, rather than using the ‘weapon needs to be thrown’ animation sequence. I was wondering/hoping to see if any sort of progress has been made in figuring this out, as I’m currently stuck.

An example would be Corrin assuming a ‘sword casting’ stance while wielding the Yato, and the Ragnarok spell effect being produced afterward, much like how the Levin Sword already has its labels set to make the wielder assume their ‘sword casting’ stance (for the given class they’re in) and produce the Thunder spell effect afterward.

Now, I know this is possible because I’ve seen the Siegfried, a weapon that normally uses a spellcasting animation at range, get thrown in battle as if it didn’t. This is because the label for using the ‘weapon is casting a spell’ animation sequence (whatever it is) is not assigned/pointered for when Dragon Fang is triggered.

I had made a copy of Siegfried (including its weapon model) for the avatar using Paragon, and it works great with everything else and does exactly the same things animation-wise that it does when Xander’s wielding it…except that Dragon Fang triggering (as Dragon Fang is a skill Xander never learns, so they didn’t put in the label/reference for it) at range causes Corrin to throw Siegfried instead. Siegfried is never thrown in the base game; the program was already capable of having Corrin do that instead without my having to add or edit anything despite Siegfried having labels assigned for ranged spellcasting.

So, all the animation sequences for things like this are already there in the game. I must iterate that I’m not interested in trying to create brand new animations; this would likely require developer’s tools to which we do not have public access. I just want to re-point the ones that already exist for other weapons so that they’re called up when making ranged attacks (the Siegfried, Raijinto, and Levin Sword all use the same character animation routine for this, and that’s the one I want to use for other sword-class weapons, as an example).

The “Effects” list has also already been discovered by thane and put into Paragon, but I don’t know the way to point these effects towards specific weapons. For example, Mgs_氷打 is the effect label for the snowflake-erupting effect when getting hit with an ice-themed weapon (or an ice-themed character hits you period; as an aside, this is another example of an unknown assignment and I believe it’s attached to possessing certain personal skills), ColdAir is the emitter label that makes a weapon model look like it’s leaking cold mist/snowflakes, and Fimbul’s the name for the actual spell effect called when casting the Fimbulvetr spell. Leo’s Iceblade as a weapon model is also already in the game (model name here is wep_sw037).

But I don’t know how to repoint/reassign any of these so that they’re called up in the right order/at the right time, like what points Mgs_氷打 and ColdAir to the weapon model wep_sw037 (this is already in the game), and how would I also point Fimbul towards that model as well when it’s called to make a ranged attack (this is something I’d want to add that’s not there already) while also having the wielder assume their “I’m attacking with a magic weapon” stance. Basically, how would you take the above information and get it so that the following sequence of events occurs:

-Wielder of the weapon in question (let’s say Leo’s Iceblade) declares a ranged attack, or has to counterattack at range.

-Wielder of the weapon in question assumes their ‘casting a spell with a weapon’ stance (whatever one they use while wielding the Levin Sword); this data is attached to the class of the wielder and it’s the one used for magic-producing weapons of the types they’re capable of wielding. Anything capable of wielding a magic weapon in the first place already has these animation routines in the game, otherwise they wouldn’t be able to use Levin Swords/Bolt Naginatas/etc. properly. I just want to be able to have other weapon models call that character animation routine, which I’m thinking should not require anything more than a simple repoint/reassignment because nothing new seems to be created, here.

-The ‘spell effect’ is produced, and you see/hear the effects of the Fimbulvetr spell. Again, this just feels like pointer/reference manipulation so long as the spell effect in question already exists within the game; this data is attached to the weapon model (for example wep_sw011 seems to call Mag_オーディンの黒書, or “Siegfried”'s weapon model calls the animation for Odin’s Grimoire when it’s time to make a ranged attack).

I’m pretty comfortable with using the Paragon utility; I feel like the problem’s that the file/s holding this information just haven’t been located/deciphered yet (and I’m not sure where to start looking, if that’s the case). If anyone has information about this that might make it possible to accomplish, I’d be very grateful to learn of it.

(Second cross-post, sorry for double-posting but this isn’t meant to be a bump, it’s extra data for the question).

Let me put up an example of what I’m talking about with respect to pointers.

I just got my current Corrin, who is male and in his Nohr Noble class (this does in fact matter for the moment), to assume the ‘casting a spell from a sword’ stance and actually cast the Fire spell from the Grim Yato at range 2. It worked perfectly, but therein lies my issues at this time, which I’ll get into after detailing how to do it:

--------------

  1. Open up Paragon (you’ll need to have a project already set up for your dump of FE14, there’s tutorials out there for that). You’ll be editing “Items,” “Animation Sets,” “ROM4.” You’ll also need “ROM1” for some additional information.

  2. The simplest part by far: in “Items,” look for “Grim Yato” and set its maximum range to 2 (kinda the whole point of this).

  3. Next, in “Animation Sets,” Add a new set and name it; I called mine “uAnim_M_ch001_Eiyu_sw1”.

  4. Find “uAnim_M_ch001_Eiyu_sw0” in “Animation Sets”, and Copy it to the new set you just Added/named. Then, specifically in the Shoot and ShootC fields of your new animation set, replace what you find there with what’s bolded in the brackets: (uAnim_M_ch001_Eiyu_sw0_Discharge).

  5. In “ROM1,” locate the Grim Yato’s entry. You will need to copy its ID, bolded in the brackets: (IID_夜刀神・長夜).

  6. Next, in “ROM4,” create a new asset. Paste the ID from step 5 into the Overview → Name field. When clicked away and back, the name of the asset in the side menu should refresh to “Grim Yato.”

  7. Still in “ROM4,” into the Animations → Attack Animation field type/paste whatever you named the Added Animation Set from step 3; for me it was (uAnim_M_ch001_Eiyu_sw1), minus the brackets.

8 ) Into the Misc. → Visual Effect field (still in ROM4), type/paste the bold part inside the brackets: (Mag_ファイアー0). This happens to be the effect ID for the Fire spell (there’s a ton of other ones already in the game, I just wanted to test the most basic one that didn’t already have a physical weapon model pre-pointed into using it so I’d be sure this wasn’t a ‘raw graphics’ issue (see below)).

  1. Save the alterations to your project folder and migrate them over to wherever you’re keeping your mods for Fates (again this is basic Paragon stuff that there’s already tutorials for out there). Try to get a save file where there’s a Corrin(M) (or at least a male) in the Nohr Prince class line; you’ll want to equip him with the Grim Yato while he’s in said class line (I checked this while he was a Nohr Noble, but I’m fairly certain it will function with Nohr Prince and Hoshido Noble so long as Corrin’s a dude). Get him into a fight and have him attack at range 2 with the Grim Yato. He should do his fancy class-specific sword twirl, then assume the ‘casting a spell from a sword’ stance, followed by the Fire animation being used to chuck a fireball at whatever you had him attack (this works for me). I should note that the weapon model being used is irrelevant, here; to check, I changed Grim Yato’s weapon model ID to match Ganglari’s (wep_sw010 instead of wep_sw026), and lo and behold, I got Corrin(M) as a Nohr Noble to chuck fireballs with this ‘Ganglari’.

--------------

…ok, so, problem solved, right? No, sadly. See, all that fuss? That’s for one specific class line. “uAnim_M_ch001_Eiyu_sw0” basically means “animation set for the Nohr Prince class line given the user is male (Corrin(M), Kana(M), and other male kids using it, I’m guessing) and wielding a sword.” You Add the sw1 version explicitly so a single weapon, in this case the Grim Yato, can reference that animation set instead for its altered “Shoot” and “ShootC” instructions, which are forced to reference the listed “Discharge” animation when telling the game what spell animation to use; if you don’t do this, Corrin will just throw the damn sword/whatever instead of cast a spell from it. And this method as-written works ONLY for dudes in the Nohr Prince line. You’d have to do this separately for every different class set, both male and female, and in my case for each model of the Yato, and frankly there’s not enough room in the Animation → Attack Animation field for a given set to do so (the limit’s two).

Somewhere in the data, certain weapon model IDs are already pointered so that a wide variety of classes using their generic Shoot animation instructions are forced into using their Discharge animation instructions instead when wielding weapons using said model IDs (as otherwise, the character will chuck the weapon, even if its IID (item ID, not model ID) is the same; I checked this by replacing the IID Siegfried’s weapon model ID with Ganglari’s, and Xander promptly started throwing his sword…then I replaced it with the Levin Sword’s model, and he started shocking things with it). These model IDs are also already pointered into using certain Game Effects (auras and on-hit emissions which are found in the Effects section in Paragon) and certain spell animations along with their forced Discharge instructions (though as mentioned below, you can override these without issue). That’s what I’m hoping someone has found any information on.

I really don’t think this is intrinsic to the raw graphical data/textures/etc. for said model IDs (and thus I don’t believe we need dev tools for this; a theoretical Paragon module should be able to handle it). I can absolutely get the Siegfried/Raijinto/etc.. models to utilize other magic animations using the above methodology, and have done so! I just made the Siegfried model also chuck fireballs in place of its usual black death laser. So, after seeing all this I just can’t accept that this is a direct sprite/model hacking issue.

EDIT: Welp, I just bit the bullet and added 252 additional assets to the ROM4 file, along with ~20 or so new animation sets, entirely for the Yatos to have their 1~2 range spell attack without screwing up their other attack animations. It took friggin’ hours and now the ROM4 has just about quadrupled in size. It worked (Corrin’s tossing Fire at range now with his sword, in fact when Dragon Fang activates as a Nohr Prince at 2-range he spits fireballs while wielding it (crit or not) and frankly it looked fantastic), but it should not have taken that long. I will also warn here that if you want to try doing this with any other sword, you’ll need to make 37 extra ROM4 assets to account for all the possible animations. Axes and Lances, I haven’t tried those (Yato’s a sword and that’s all I cared about honestly), but for them it’s likely a similar number. Absolutely ridiculous; there’s got to be a more efficient way of doing this.