I couldn’t see anything anywhere on whether this exists in FE7/8 already or not, so I’m sorry if this has already been answered/done before.
If it is a simple enough thing to do, I would like to make a request for some sort of hack that allows stat promotions to be based purely on base stats as seen in FE4/5/6/10/11/12/13 for the purpose of implementing reclassing in FE8.
The reason I ask for this is because of situations like as follows:
Let’s say a unit can reclass into three classes: a class with a speed stat of 10, a class with a speed stat of 8, and a class with a speed stat of 6. Since promotion bonuses are based on a set value tied to the class in FE8, this becomes a problem when trying to reclass into the class with 10 speed because you can’t give the class a value of +4 speed on reclass and +2 speed on reclass. Situations where you will need to subtract stats as well will cause similar problems. Additionally such a patch will also allow for managing stat capping much easier as well.
While the above problem can be solved by manipulating classes that a unit can promote into so that two different versions of the 10 base speed class exists for such situations, this is inefficient since it takes up a lot of classes depending on how many reclass options you’d like to have, especially when it comes to making use of something like Hextator’s skill patch since that patch is purely class based. I believe Brendor plans on making his skill patch class based as well so I am also making this request in an effort to plan ahead.
I believe con and movement already work based on this kind of promotion as does FE6 in general, so if it is an easy enough hack to make, I was wondering if it could be done. If it seems like something that would take very long to do or be difficult to implement, then please say so and I will drop this request.
I’ve always thought reclassing would be good for GBA if done in this way.
The reclassing part in general sounds a lot harder than just changing the way stats get added.
Anyways, 2BD50 is the subroutine that adds (or subtracts!) promotion stat/weapon rank gains to a character - if you tweak the places where r0=promotion gain of [some stat] is added to r1=old stat, you can do the stuff you want.
I thought the reclassing part would be kinda simple to do with your 3 class branch promotion patch. It means that you’d have to have promotion items and reclassing items be shared together, but it still works. I also had an idea I wanted to test out in regards to the event command for promoting units that I think Eirika and Ephraim use in chapter 16 since I was curious if that would let you promote into any class or just the set one you would have to promote into despite being able to use the command to pick the class. Weapon levels are another problem, but I already have some ideas on how to get around it.
Promotions are the one part I wasn’t sure how to work with.
I can probably do this sometime soon, since I already ripped and edited and rewound the loop in my luk promotion gains hack.
If not, someone can use that as a base for this hack (it’s in the dropbox)
Thanks a lot for offering to help! I’m in no rush for a solution so please take your time.
I guess the main things would be getting rid of the “can’t promote if already promoted” things that I think is in there, and also the resetting of levels/exp. Weapon levels are actually “add difference between new class and old class” so that might work out, but would probably lead to people using weapons the class isn’t supposed to, if that’s a problem.
You could put a “if ‘already promoted’ flag is on, it means you’re doing a reclass and not a promotion, so don’t reset experience” in the routine and make reclassing a promoted units exclusive thing, which does make logical sense.
Uh you can already do this though. You can have a promoted class promote to another promoted class, correct? That’s how I did T3’s anyway. The trick is just making stats work like blademaster wants so T2 bases are calculated for the ‘bonuses’ meaning a unit will lose/gain based on their class bases. If it’s an FE8 hack you just have two tables, one for T0 to T1 to T2 promotions, and one for reclassing ‘promotions’ where you can load up to three classes. So in my ideas, Hero could reclass to Hero, Swordmaster, Warrior. Warrior would reclass to Warrior, Hero, Berserker. So on and so forth.
One of the things I forgot in all my haste is for my hack that I want to have implement this, the level cap is 30 and promoting a unit doesn’t reset the level thanks to Nintenlord’s patch for that. For exp, I’m probably just going to raise the class power of all promoted classes instead of using the promoted bytes. For my purposes it will work for reclassing but for others it will require more ASM.
For the weapon level problem, my current plan is to just create a bunch of weapon locks with Venno’s patch and then just have those weapon levels be set on the unit/class in question at base anyway so they can only use said weapons in the correct class. This also works around the problem of how weapon exp is stored(I don’t know if you lose a weapon level if when you promote back that level remains the same. It probably stays the same like with Ewan. Maybe this relates to why Venno’s weapon loss patch caused a bug in the arbitrary weapon level patch or why I ran into a problem with it. I should test it again.) and what weapons are lost.
I imagine you could just check to see if the promoted unit byte is set in one class and not in the other to help determine whether to reset the level or not. There are I think four of those promoted bytes(Promoted, mounted, dragon, pegasus). You’re going to need both of those classes data for the base changes I imagine so this would be the way to go.
For my purposes I’ll be able to get reclassing to work just fine, though it will be limited. Granted those limits add to unit uniqueness so I’m not too bothered by it.
Is it possible to do class cap based promotion instead of base stat based promotion? Now that I’m finally up to working on class stats, doing the changes by base stat is too restricting and the end result would be the same anyway.
Based on @Crazycolorz5’s luk promotion gain hack with thanks to @jjl2357’s notes on FE8 promotion routines.
The current HP doesn’t get calculated properly unless you are already at full HP it seems? Still looking into that, just posting this in case anyone by chance was working on this request since it otherwise works from my tests. I also made an FE7 version, but since FE7 doesn’t have reclassing I don’t see much point in sharing it? The only difference is the registers used and that you need some extra code to get the pre promoted class.
All you have to do is paste the dump at 0x2BD70
I did this for the purpose of trolling. But something good came out of it apparently.
Original Routine: https://www.dropbox.com/s/q12f79xep06gblh/Class%20Change%20Routine.asm?dl=0
Dump File: https://www.dropbox.com/s/800alo1kvl0uzs8/Class%20Base%20Promotion%20Gains.dmp?dl=0
(Paste at 2BD50)
Edit: I’m editing it so that it resets the level iff it’s unpromoted class -> promoted class. Currently never resets level. You can check the source and make the modification yourself though, it should be easy enough.
Edit: It’s made so that the level resets when you promote a lv10cap unit or an unpromoted to promoted class, when its level is <=20 (otherwise it just subtracts 20 from the level). If you’re changing a promoted to unpromoted unit, it adds 20 to the level.
I’m going to piggyback off of this into that but without doing this to weapon ranks on promotion.
Anybody who wants to do it can, I can’t and I don’t want to make a new thread for something so similar to that.
ldrb r1, [r4, r1] @Current wlvl
ldrb r2, [r6, r1] @New base
ldrb r1, [r4, r1] @Current wlvl
ldrb r2, [r6, r2] @New base
edit: slightly more involved than that. But still an easy fix.
#incbin "Class Base Promotion Gains.dmp"
//This is the graphic that resets the level.
//Change to ping to the new level (usually the same)
Do you still have a version that doesn’t reset the level for both promoted and unpromoted classes?