[FE7] Item-based branching promotions

Other shit that would be cool

  • Possible support for branched promotions? Promotion class determined in the promotion item list instead of the class array. Reads XX YY (T1 class that can use the item, T2 promotion) instead of just XX, XX, XX, XX… By assigning a class to different promotion items, you get branches.

I’ve been thinking about doing branched promotions based on the promotion item. I’ll let you know if I actually get anywhere with it :stuck_out_tongue: #unlikely

There also has to be some sort of way to designate alternate palettes…something in the vein of FE8’s system. So yeah definitely no walk through the park.

This is the branch system (two links) I sort of came up with for FE1A. My pipe dream, lol.

depends on how the split works IMO :stuck_out_tongue: It might be possible to sync the palettes between the two branches but yeah it could be difficult otherwise. In my hack I’m also not doing many characters (thinking < 20) so I could probably just recolour the animations and use default palettes…

That doesn’t help you guys though. I’ll see what can be done, maybe I can have it call Cam’s FE9 style promotion hack (where you can switch the portrait and stuff too) somewhere in the routine.

@Arch
Mind trying to copy this into 27140 ?
08 06 00 0C 6D 68 6D 79 08 49 0C 78 FF 2C 09 D0 84 42 01 D0 02 31 F8 E7 4C 78 AC 42 00 D0 F9 E7 01 20 00 E0 00 20 30 BC 02 BC 08 47 00 00 80 09

The last 4 byte is reversed form of the table of promotion (1 byte item followed by 1 byte class).

Inserted the code and tested it:

Wrote my table first with only 64 14 (Knight’s Crest Knight) and 65 14 (Orion’s Bolt Knight) for testing purposes. Is it one entry per class relative to their index (so after 0x14 pairs of 00 00 I’d write the value for Knight)? Anyways, I tried both approaches, designating 65 14 the second time for the Orion’s Bolt. Both times the Orion’s Bolt was unusable, and the Knight’s Crest worked on both a Knight and Cavalier promote as per normal (despite me specifying nothing for the Cav).

Sorry for mistyping.
Correction.
08 06 00 0E 6D 68 2D 79 08 49 0C 78 FF 2C 09 D0 84 42 01 D0 02 31 F8 E7 4C 78 AC 42 00 D0 F9 E7 01 20 00 E0 00 20 30 BC 02 BC 08 47 00 00 80 09

Copy them into 27410.

Works like a charm! At first I hadn’t changed the pointed, so it went to a bunch of FEditor nonsense and the promotion items didn’t work (just wanted to check that it properly broke). Pointed to my table, Knight could use both promotion items specified. Cavalier can’t use the Knight’s Crest.

Could we possibly add to this with a third byte specifying the class to promote to? That’s pretty much exactly what I was envisioning.

Another thing I just checked out, but I’m curious about the potential for:

I just tried to assign a promotion item status to the Emblem seal, and gave it the use effect of the Hero’s Crest in the Item editor, hoping that might make it work. Being able to add promotion items simply through this array would be pretty powerful, since they’re partially hard-coded.

I’m pretty sure you have to add a promotion pointer. There should be a nightmare module for that.

Yes. You must edit several pointer tables (though it’s easy to implement. Just delete the subtraction and comparation, then repoint all the value into bigger table). I think you must repoint up to 6 other tables (together with staff effect. Idk the exact number).

So what exactly does this hack do? :blush:

It transfers control of promotion item access to a specified offset where you just have a list: XX (item ID) YY (class ID) to determine which class can use which item.

So it wouldn’t branch them, right? It’s just getting it into a more ideal format?

So far.

Yeah, it’s definitely more ideal to then implement the final idea, just checking to make sure the whole thing isn’t going over my head.

And here is the promotion alteration. Note that this doesn’t fix any weapon exp limitation (e.g. won’t delete your old weapon exp)

Copy this into 1800000
F0 B5 04 1C 10 1C 66 30 00 78 01 49 08 47 00 00 21 98 02 08

Copy this into 08029818
00 49 08 47 01 00 80 09

Copy this into 08027410
08 06 00 0E 6D 68 2D 79 0A 49 0C 78 FF 2C 0D D0 84 42 01 D0 04 31 F8 E7 4C 78 AC 42 00 D0 F9 E7 8C 78 05 49 0C 70 01 20 01 E0 00 00 00 20 30 BC 02 BC 08 47 14 00 80 09 56 A4 03 02

Got it all pasted in, but the game is freezing when I select the “use” command. It shows only the Orion’s Bolt usable as well, instead of both the bolt and the Knight’s Crest.

29818
00 49 08 47 01 00 80 09

27410
08 06 00 0E 6D 68 2D 79 0A 49 0C 78 FF 2C 0D D0 84 42 01 D0 04 31 F8 E7 4C 78 AC 42 00 D0 F9 E7 8C 78 05 49 0C 70 01 20 01 E0 00 00 00 20 30 BC 02 BC 08 47 14 00 D9 08 56 A4 03 02

D90000 (my list location)
F0 B5 04 1C 10 1C 66 30 00 78 01 49 08 47 00 00 21 98 02 08

Starting at D90014
65 14 16 64 14 1A 

@Arch
For your case 01 00 08 09 (on 29818) must be changed into 01 00 D9 08
And it’s 4 byte (The last byte acts for separator, for now.). To make it 3 byte, just change 04 into 03 (21th byte of 27410)

Okay, got that taken care of: I can confirm that the specification of class works.

At D90014    
65 14 2A 64 14 16 00 00 00

The Orion’s Bolt is the first item listed, and promotes the Knight into a Paladin. The second lists the Knight’s Crest promoting the Knight into a General, but the item is unusable.