hmsong

SD3 Spell Balance patch

173 posts in this topic

16 hours ago, praetarius5018 said:

SPI wouldn't help much, that is 4 damage less taken per point.
M.def in general is a rather weak stat, imo.
Spells are rarely thrown at you (boss-only spells are mostly physical even), the best you can get is 8 damage reduction per point (physical goes up to 15), and then half of them are INT other PIE based defense. For a rebalance it might make more sense to make all spell damage INT based and unify the m.def to PIE or something like that, so you are not getting nothing out of your displayed m.def 90% of the time.

Yeah, M.Def is rather weak.  Or rather, Def/M.Def is much weaker than offense, hence why this game suffers so much.

I noticed this while testing some things yesterday (I've been restarting over and over again to test various things), and as you said, most of boss attacks are indeed INT/PIE based non-screen-freezing attacks.  Very interesting logic.  No wonder you used that for SoM.

I thought about what you said about making all spells INT based and making M.Def based on PIE.  Hmm.  In addition to it probably being not an "easy fix" (meaning I probably can't do it), it would make Carlie quite useless in fights, even more so than she already is.  Then again, that might be a good thing.

As for rebalance, I was actually thinking about making some of spells based on PIE or AGI rather than INT.  Most of them were too INT based.  For example, things like Poison Bubble and Evil Gate/Dark Force would be PIE based, while Dive Attack and Power Punch would be AGI based.  However, not much was tested --  for all I know, one boss may have some absurd AGI or something and just one-shot my party.

Btw, for the multiplies for spells (ex: 11994E for Diamond Missile), I know that 00 is INT attack, 10 is PIE attack, and 20 is AGI attack.  But what is 30?  Spells like Hypercannon, Spiral Moon, and Hell Cross seems to use it.  I don't think it's based on STR (although I haven't tested on it), but I highly doubt it's LCK based either.  I can't tell at all.

Share this post


Link to post
Share on other sites
7 hours ago, hmsong said:

I thought about what you said about making all spells INT based and making M.Def based on PIE.  Hmm.  In addition to it probably being not an "easy fix" (meaning I probably can't do it), it would make Carlie quite useless in fights, even more so than she already is.  Then again, that might be a good thing.

She has 1 INT less than PIE. And Angela already has to deal with the same split because light spells are PIE based.

7 hours ago, hmsong said:

However, not much was tested --  for all I know, one boss may have some absurd AGI or something and just one-shot my party.

Btw, for the multiplies for spells (ex: 11994E for Diamond Missile), I know that 00 is INT attack, 10 is PIE attack, and 20 is AGI attack.  But what is 30?  Spells like Hypercannon, Spiral Moon, and Hell Cross seems to use it.  I don't think it's based on STR (although I haven't tested on it), but I highly doubt it's LCK based either.  I can't tell at all.

30 is STR. Every boss aside from Heath and Koren uses Lise's stat base so there is no boss that would have sudden absurd AGL or anything. In fact STR is her highest stat - that is probably the reason boss unique spells are based on STR, they've already used the max multiplier of 15 and that wasn't enough with her other stats.
On the downside that makes those spells be subject to the higher p.def so that doesn't even help as much as it could.

Share this post


Link to post
Share on other sites
38 minutes ago, praetarius5018 said:

She has 1 INT less than PIE. And Angela already has to deal with the same split because light spells are PIE based.

Yeah, so I thought about making Holy Ball and Saint Beam into INT based (but keeping Heal Light as PIE based).  But I felt that it would mostly make PIE even less useful, since it means that most enemies will be using INT based attacks.  I figured one typical spell that can be bought from black market should have PIE based attack.

42 minutes ago, praetarius5018 said:

30 is STR. Every boss aside from Heath and Koren uses Lise's stat base so there is no boss that would have sudden absurd AGL or anything. In fact STR is her highest stat - that is probably the reason boss unique spells are based on STR, they've already used the max multiplier of 15 and that wasn't enough with her other stats.
On the downside that makes those spells be subject to the higher p.def so that doesn't even help as much as it could.

Ah, so that's what it is.  Thank you.  I shall test to see if making some boss attacks using AGI stat instead of INT will make some fights more interesting.

Btw, here's what I found out about the beginning few bosses (I used Ghost's Eye to manually test out what the bosses' levels are):

                                    Level

  • FM Hugger          04
  • Machine Golem    04
  • Jewel Eater         06
  • Tzenker              10
  • Genova               12
  • Bill & Ben            12
  • Gorva                 13

I tried to make the first two bosses (FM Hugger and Machine Golem) easier by giving higher stat to the player characters in the beginning (+1 for all stat), but that also raised bosses' stats, which made them even harder (even with the bonus stats).  But I can't just lower the Lv4 stats, since that'll lower the stats of the players later joining (they all join at Lv4).  Is there a way to make the later characters join at Lv3 instead of Lv4?  Perhaps an address where I can edit their initial experience points?

Share this post


Link to post
Share on other sites
8 hours ago, hmsong said:

Yeah, so I thought about making Holy Ball and Saint Beam into INT based (but keeping Heal Light as PIE based).  But I felt that it would mostly make PIE even less useful, since it means that most enemies will be using INT based attacks.  I figured one typical spell that can be bought from black market should have PIE based attack.

No I meant INT for all spell damage (primary elemental spells, light, dark and summons), PIE for Heal Light and all magic defense.
Though I'd leave Jutsus as they are.

8 hours ago, hmsong said:

I tried to make the first two bosses (FM Hugger and Machine Golem) easier by giving higher stat to the player characters in the beginning (+1 for all stat), but that also raised bosses' stats, which made them even harder (even with the bonus stats).  But I can't just lower the Lv4 stats, since that'll lower the stats of the players later joining (they all join at Lv4).  Is there a way to make the later characters join at Lv3 instead of Lv4?  Perhaps an address where I can edit their initial experience points?

Same answer as for the werwolf bonus.

There's a tool called map jester, it lets you edit boss levels if that helps.
Though you'll need to make a patch that fixes an issue with it; every time I save with that tool it screws some 80 bits up which are responsible for lampflower forest flower color at night (the hint for the labyrinth) and the autumn/destruction theme of the mana holy land at the end.

  1. backup current ROM
  2. make a change, save
  3. undo that change, save again
  4. create IPS patch that uses the new file as "unchanged" and the backup from 1. as "changed"

Share this post


Link to post
Share on other sites

Hmm.  I played around with the exp points, and apparently, when a character joins, it doesn't matter what the exp is -- it checks for Level.  And in this case, it's Lv4, regardless of what the required exp is for Lv4.  Damn it.

My intention is not to reduce the boss strength (nor its level), but not increase it either.  That's why I'm trying to reduce the character's level when they join.  That way, I only need to edit the stats for the first 3 levels of a character, and it won't affect the bosses' strength.  Do you know how I should go about that?  It would help if I at least knew its bank.

I actually tried using map jester some time ago (found it on RHDN), but I couldn't really figure out how it worked.  It loaded the game, but after that, it didn't tell me anything.  The only thing I could do was look at some of the maps.

01.thumb.png.23b2c91a2a35a70ba5d36264789dc572.png

 Really, there's no guide of any kind for me to use this to its potential.  Do you know if there's any kind of guide somewhere?  I only read the attached document, and it simply tells me what some of its capabilities are, but not tell me how those are done.

Why would you not want the Jutsus to be AGI based?  Hawk has high AGI, so I figured jutsus based on AGI would make sense.  It's got weak multiplies (6), so it doesn't do much damage though.

 

Btw, I can see why you decided to change everyone's max stat limit, strength, level, equipment power, and everything else for SoM.  Balancing is hard.  Very hard.  Christ.

Edited by hmsong

Share this post


Link to post
Share on other sites
14 hours ago, hmsong said:

Why would you not want the Jutsus to be AGI based?  Hawk has high AGI, so I figured jutsus based on AGI would make sense.  It's got weak multiplies (6), so it doesn't do much damage though.

Don't ask me that. Square made them based on INT, in Sin of Mana they are based on AGL; they probably thought that debuff + decent damage on a "main" stat was too much.

14 hours ago, hmsong said:

My intention is not to reduce the boss strength (nor its level), but not increase it either.  That's why I'm trying to reduce the character's level when they join.  That way, I only need to edit the stats for the first 3 levels of a character, and it won't affect the bosses' strength.  Do you know how I should go about that?  It would help if I at least knew its bank.

On 6/11/2020 at 9:25 AM, hmsong said:

Is there a way to make the later characters join at Lv3 instead of Lv4?  Perhaps an address where I can edit their initial experience points?

23 hours ago, praetarius5018 said:

Same answer as for the werwolf bonus.

Deja vu

14 hours ago, hmsong said:

I actually tried using map jester some time ago (found it on RHDN), but I couldn't really figure out how it worked.  It loaded the game, but after that, it didn't tell me anything.  The only thing I could do was look at some of the maps.

Try the NPC tab. Priority for mobs is their level (+128 because the $80 bit is used for something)

14 hours ago, hmsong said:

Btw, I can see why you decided to change everyone's max stat limit, strength, level, equipment power, and everything else for SoM.  Balancing is hard.  Very hard.  Christ.

As you may have guessed by now, vanilla enemy levels are very stair-ish. Going from 4 to 6 doesn't do much since the stat cap it is based on is the same. But going from 6 to 7 is a massive leap. That makes the whole thing even better.

Edited by praetarius5018

Share this post


Link to post
Share on other sites
4 hours ago, praetarius5018 said:

Deja vu

Okay, I guess I was not being specific enough when I asked that question.  As you said for werewolf, I can change his STR stat and then change to werewolf form to see the difference -- 2 reference points to compare.  But for the initial level of joining, I can't.  There's only 1 reference point.  I can change a character's level just fine during the gameplay (RAM), but I can't change the initial level when they first join (neither ROM nor RAM).  There's no 2nd reference point for me to experiment.  That's why I can't use the same method.  Or is there?  If so, could you tell me what I should look for as a 2nd reference point?

4 hours ago, praetarius5018 said:

Try the NPC tab. Priority for mobs is their level (+128 because the $80 bit is used for something)

For adding $80, are you talking about the "Memory Check" part? (shown in the picture above)  So for FM Hugger (I'm guessing my picture is looking at that map), it's $FE2F32?

4 hours ago, praetarius5018 said:

As you may have guessed by now, vanilla enemy levels are very stair-ish. Going from 4 to 6 doesn't do much since the stat cap it is based on is the same. But going from 6 to 7 is a massive leap. That makes the whole thing even better.

Yeah, I noticed that.  It's esp noticeable in the beginning.  Of course, that can be changed if you changed Lise's stat "cap" (which what I'm trying to avoid doing, since that may really screw up the enemies' difficulty in mid-dungeon).

Share this post


Link to post
Share on other sites
43 minutes ago, hmsong said:

Okay, I guess I was not being specific enough when I asked that question.  As you said for werewolf, I can change his STR stat and then change to werewolf form to see the difference -- 2 reference points to compare.  But for the initial level of joining, I can't.  There's only 1 reference point.  I can change a character's level just fine during the gameplay (RAM), but I can't change the initial level when they first join (neither ROM nor RAM).  There's no 2nd reference point for me to experiment.  That's why I can't use the same method.  Or is there?  If so, could you tell me what I should look for as a 2nd reference point?

If you have no 2nd reference point then make one.

Make a savestate before the cutscene where a character joins.
Let the cutscene run until the character is in the party.
Now search for where its level is.
A give you a hint here: level is saved as displayed level-1.
There'll be hundreds of 3s in the RAM, so how about finding out first where the actual attack power (NOT STR!!!) is saved, there should be 2 values, one for buffed, one base. Level should be close-ish by.

Once you have the level address you can put a write breakpoint on the address of level and run the cutscene with that and logging running.

41 minutes ago, hmsong said:

For adding $80, are you talking about the "Memory Check" part? (shown in the picture above)  So for FM Hugger (I'm guessing my picture is looking at that map), it's $FE2F32?

Clipboard01.thumb.png.8cd1a4954e634bbcce693ce33660395e.png

Share this post


Link to post
Share on other sites
2 hours ago, praetarius5018 said:

There'll be hundreds of 3s in the RAM, so how about finding out first where the actual attack power (NOT STR!!!) is saved, there should be 2 values, one for buffed, one base. Level should be close-ish by.

Ohh, so that's why I couldn't find the werewolf change  I was searching for STR values.  I guess the number I'm looking for is the one displayed on the Equip screen.  I gave up mid-way, because I couldn't find it.  Dang it.  Okay, I'll approach it in that sense.  Thanks.

Yeah, I found out (the hard way) that level displayed is actually Level-1.  I struggled for a bit to find that info.  Thanks for telling me nevertheless.

Edited by hmsong

Share this post


Link to post
Share on other sites

Okay, for changing werewolf form boost, I found out that there are 3 addresses that deal with Kevin (P1)'s attack power -- 7e3390, 7ff743, and 7ff753 (in the final Mana Holyland).  I'm guessing it's 7ff743, since changing that seems to change the numbers shown in the menu screen.

I put the breakpoint, and I logged it -- lots of logged files, from 0000 to 000A to 0034.  But now what do I do?  Sure, I can open the files using notepad, and it has lots of codes, but I don't know what I'm supposed to search.

Share this post


Link to post
Share on other sites

I didn't say this was easy. This is not a beginner friendly section at all. Or game.

You have to search where the value originally comes from. Which means going from the write to 7ff743 backwards until you find where the math happens.
STA writes to an address.
LDA loads from an address to A.
And all the other nice tricks like stack manipulation.

Share this post


Link to post
Share on other sites
37 minutes ago, praetarius5018 said:

You have to search where the value originally comes from. Which means going from the write to 7ff743 backwards until you find where the math happens.
STA writes to an address.
LDA loads from an address to A.
And all the other nice tricks like stack manipulation.

Uhh.  Sorry, but I did not understand that explanation.  "going from the write to 7ff743 backwards"?  What does that mean?  And math?  I remember there being 25 - Luck for TransShape, but I don't know which code goes with "Luck" or "-".  Could you tell me some of the math codes that I need to know to find the Kevin werewolf boost?

Also, so I need to search for "07" for Kevin's werewolf boost?  Or is it another number? (ex: Level was [Level - 1], so in my case, I had to search for 03 instead of 04).

Share this post


Link to post
Share on other sites
9 hours ago, hmsong said:

Uhh.  Sorry, but I did not understand that explanation.  "going from the write to 7ff743 backwards"?  What does that mean?

I've no idea how else to say this.
You need to log up to the point where the new attack value gets written to 7ff743 and then search where it comes from.
Considering this is the compressed section this can easily be 10s of thousands of lines back.

9 hours ago, hmsong said:

Could you tell me some of the math codes that I need to know to find the Kevin werewolf boost?

LDA, STA, ADC, SBC, LSR, ASL, ROL, ROR, ... that it was the "bible" is for.

9 hours ago, hmsong said:

Also, so I need to search for "07" for Kevin's werewolf boost?

No idea, that's what you have to find out. If I knew what we're looking for I'd knew where it was.

I'd suggest making a new log; start the logging when 7ff743 is read first and then log until it is written to again.
And turn of the split option to have it all in one file.

Share this post


Link to post
Share on other sites
20 hours ago, praetarius5018 said:

I'd suggest making a new log; start the logging when 7ff743 is read first and then log until it is written to again.

And turn of the split option to have it all in one file.

Okay, I did that.  I don't see anything resembling 7ff743 in the log file.  And I don't know what value I'm suppose to search for.  Hmm.  What am I supposed to search for in the log file?  The value of Kevin's attack power?

 

Share this post


Link to post
Share on other sites
3 hours ago, hmsong said:

Okay, I did that.  I don't see anything resembling 7ff743 in the log file.

If you've set the breakpoint correctly that should've been the last line in the log. Specifically the instruction where it writes the updated value to it.

3 hours ago, hmsong said:

And I don't know what value I'm suppose to search for.  Hmm.  What am I supposed to search for in the log file?  The value of Kevin's attack power?

 

That should already be the 7ff743.
I thought you wanted to find where Kevin's wolf bonus is or did I understand you wrong?

Share this post


Link to post
Share on other sites

Damn, I wish I could upload a video or something, but I can't (can't record my computer screen, because Game Bar is not working).

Here's what I did:

01.thumb.png.8fe5d483e4ac683576a1f8a844dd24d4.png

02.thumb.png.b35cbcee3d115f4347256261a660d9d7.png

03.png.9bd65e40ddae19e41111286aaaf2cde7.png

 

Well, the log file from non-split resulted in a huge notepad file, so I couldn't even open it (my computer simply froze).  So I had to use Split.  Anyways, for the last file (before Breakpoint froze the game), I couldn't find 7ff743, but I was able to find its equivalent, 7fee43 (this code is used in different map for the same attack edit):

04.thumb.png.4f34b8250c49aa53910545fd78847a28.png

But now what do I do?

 

8 hours ago, praetarius5018 said:

I thought you wanted to find where Kevin's wolf bonus is or did I understand you wrong?

Well, I certainly would like to find that, but my real goal is to edit the joining level for the allies (default is Lv04, which in code is 03, as you mentioned earlier).

Share this post


Link to post
Share on other sites
5 hours ago, hmsong said:

I couldn't find 7ff743, but I was able to find its equivalent, 7fee43 (this code is used in different map for the same attack edit):

if it is used on a different map but here it is 7ff743 then 7fee43 is "useless" now. it means something entirely different here.

5 hours ago, hmsong said:

Well, the log file from non-split resulted in a huge notepad file, so I couldn't even open it (my computer simply froze).

I use HiEditor for that, can load files of multiple GB size.

So just that I get what you did right:

  1. put a read&write breakpoint at 7ff743
  2. do NOT mark CPU logging yet
  3. enter a battle and have Kevin transform
  4. the game should freeze now and you should see one line in the debugger that has some variation of a LDA on 7ff743
  5. NOW you toggle CPU logging and hit run
  6. wait until the game freezes again; you should now see a variant of STA on 7ff743 in the debugger
  7. hit "step into" once and then cancel the logging (step into isn't strictly necessary but it adds the STA line to the log which otherwise is missing)
5 hours ago, hmsong said:

Well, I certainly would like to find that, but my real goal is to edit the joining level for the allies (default is Lv04, which in code is 03, as you mentioned earlier).

Then why are we doing this?
As written way above, you need to find the RAM address of the joining ally's level AFTER they have joined (make a savestate BEFORE the cutscene), have you got that one?

Share this post


Link to post
Share on other sites
3 hours ago, praetarius5018 said:

Then why are we doing this?

As written way above, you need to find the RAM address of the joining ally's level AFTER they have joined (make a savestate BEFORE the cutscene), have you got that one?

Quote

There'll be hundreds of 3s in the RAM, so how about finding out first where the actual attack power (NOT STR!!!) is saved, there should be 2 values, one for buffed, one base. Level should be close-ish by.

Apparently, I misunderstood.  I thought I have to find the ATK first, and for some reason, I misinterpreted that as solving the werewolf form first (I thought buff = werewolf).  Now that I read back, I feel stupid for misreading.

But it's true that I want to decrease the werewolf bonus boost, since I hated seeing Kevin being so stupid OP (esp with his Energy Ball).

Thank you for the specific instruction on how to make a logging file.  I was doing it all wrong.  Way wrong.  I started logging before Kevin transformed, then transformed, then waited until the game froze.  Boy, was I off.

One thing at a time.  I shall proceed with whichever one is easier first, then proceed with the harder one.

Here's what I got for werewolf boost:

01.png.5bc484df0c70abd499afd63e95166f90.png

02.thumb.png.327f846cffa39851461c0c2f08f3bac7.png03.thumb.png.bc9cb20c0d7c4def9a0d31a18c9211d8.png

 

I feel like there's some real progress there.  I hope that's a progress.  Okay.  They seem to give the same info.  It doesn't seem to point to any particular address, unless D0D871 is supposed to mean something.

As for the level joining, I have a saved state before an ally joins.  And I found the level edit RAM address for joined ally at the waterfall (I got this by simply leveling up the ally, which is 7ff111).  But what do I do with this info?

Btw, thank you for suggesting HiEditor.  I can actually open this file, and the computer doesn't freeze.

Edited by hmsong

Share this post


Link to post
Share on other sites
10 hours ago, hmsong said:

03.thumb.png.bc9cb20c0d7c4def9a0d31a18c9211d8.png

I feel like there's some real progress there.  I hope that's a progress.  Okay.  They seem to give the same info.  It doesn't seem to point to any particular address, unless D0D871 is supposed to mean something.

D0D871 is the address in the ROM where this code is.

As you should be able to see whatever is now in 7ff743 came from 7ff753 so you have to look further back where 7ff753 got the changed value from.
If it looks like we're going down some rabbit hole with chasing origin after origin - that is really what it is.

10 hours ago, hmsong said:

As for the level joining, I have a saved state before an ally joins.  And I found the level edit RAM address for joined ally at the waterfall (I got this by simply leveling up the ally, which is 7ff111).  But what do I do with this info?

Same process as with the the Kevin attack bonus, make a log up to the write breakpoint snaps, though in this case there's no read before so this can be a much bigger log.
7ff111 looks ok, that is the expected difference to the attack value.

As for which of the two is easier? Dunno.
Kevin bonus involves math (harder) but you have a got idea of the range where it should happen, between the read and the write (easier).
Starter level should just be a constant (easier) but you have NO idea where it may even start (harder).

Share this post


Link to post
Share on other sites
On 6/18/2020 at 3:58 AM, praetarius5018 said:

As you should be able to see whatever is now in 7ff743 came from 7ff753 so you have to look further back where 7ff753 got the changed value from.

Huh?  How did you figure out that 7ff743 came from 7ff753?  I mean, I know they have the same value, since they resulted in the same thing when I searched for Kevin's attack value, but looking at the picture I pasted earlier, I don't see how you got 7ff753 from looking at 7ff743.  The value is at  D0D871 is 91 34, which doesn't seem like anything close to 7ff753.  It doesn't even seem to be pointing at d0d86f.

I don't mind chasing origin after origin, as long as I know how to chase and know what to look for.

Edited by hmsong

Share this post


Link to post
Share on other sites
7 hours ago, hmsong said:

Huh?  How did you figure out that 7ff743 came from 7ff753?

On 6/15/2020 at 8:36 AM, praetarius5018 said:

STA writes to an address.
LDA loads from an address to A.

Check the middle of the last two entries in the window.
LDA 7ff753 -> it takes the value from that address and puts it into A (shown to the right of that)
STA 7ff743 -> it takes the value of A and write it to that address

Share this post


Link to post
Share on other sites

Wow, this is hard.  I couldn't do either of them.  This is... disappointing.  Damn it.  I thought werewolf would be easier, but in the end, I couldn't do either of them.  It seems I'm just... not understanding it.  I mean, I understand that LDA copies a value from the given address to another address (A), and STA takes the value from A and copies it to the given address.  But I don't understand how 7ff743 and 7ff753 are connected, since one is $34 and the other is $36, which means "A" is different for each address.

Sigh.

On a different matter... I noticed that if I give Luna element to a magic attack, it ends up hurting me instead (I figured Luna magic would allow me to absorb HP or something, since Dryad element absorbs MP).  Is there a simple fix for that?

Edited by hmsong

Share this post


Link to post
Share on other sites

For now it doesn't matter what kind of LDA or STA is used; look to the right columns.

LDA $something takes the value that is in the variable $something and puts it to A (the value is update for the next line).
STA $something takes whatever value is in A and writes it to the variable $something.

Whether it is LDA $34,y or whatever is not relevant for now, just follow the actual displayed address in the [] brackets.

There may also be a lot of space between the reading and writing, in that case you have to follow the value at the right side;
it may get doubled (ASL A), halved (LSR A), incremented (INC A), decremented (DEC A), or something
and it may be transferred to a different column, e.g. TAX copies the value of A and writes it to X, TXA does the opposite.

5 hours ago, hmsong said:

On a different matter... I noticed that if I give Luna element to a magic attack, it ends up hurting me instead (I figured Luna magic would allow me to absorb HP or something, since Dryad element absorbs MP).  Is there a simple fix for that?

The simple way is - don't.
The game tries to run the HP steal from normal weapons but this part is not intended for spell routines which interpret some values differently, so any attempt to fix this quickly will 99% break weapon logic.

Share this post


Link to post
Share on other sites

I was quite sick for the last few days (hypotension, of all things).  That sucked.  I'm still having trouble.

I tried to follow what you were saying, but I... can't seem to actually do what I want to do.  I mean, I can see the addresses in [], but I don't see how one address links to another.  I can find the RAM codes of level, stat, etc, but I can't seem to apply that to ROM.  So sad.  And my physical condition isn't helping the matter.  I give up.  I truly thank you for your help, but I feel like what you're trying to teach requires prerequisite knowledge, and therefore beyond my ability.

 

Quote

The simple way is - don't.

So I shall.  I don't want to mess with weapon logic.  I'm guessing it'll screw with Moon Saber.

 

On a different matter, for the 9th byte of spell definition, I found the following (including the info that you provided me):

00: Damage (+SE Cause, +Debuff)
01: Heal - Depends on stat
04: Saber
05: Debuff and SE Cause
07: SE Purify
08: Buff
09: Critical Hit, Aura Wave, and Counter Magic
0A: Traps (percent damage based on Max HP)
0B: Half Vanish (percent damage based on Current HP)
13: Heal - Fixed amount
15: MP Recovery - Fixed amount
18: Exorcism (works only on Undead enemies)
19: Weapon Special (Lv2/3 Tech)
1A: Magical Rope effect?
1C: Revive from Death
25: Anti-Magic
27: Death (checks for Level)

In addition, 12 does fixed damage on a target (not sure what determines the damage though), and 17 does some sort of unfinished Detect thing.

Are there any others that can be used? (maybe some spell logics are available, but were not used?)

 

Also, could you please tell me what address determines the spell animation? (ex: Saint Saber's spell animation is linked to xxxxxx address for xx bytes).  I can change the effects of the spell, but I can't switch the animation of a spell.  For example, I want to give Black Curse the animation of Demon Scream, but I don't know how to do that.  Or give Unicorn Head spell the multi-target animation (just does vanilla animation for all 3 targets).  Or give Good Luck Die the Counter Magic spell animation instead of Life Up animation.  Or use the Angel's Grail animation for some random spell.

Edited by hmsong

Share this post


Link to post
Share on other sites

What I have for those is:
type flags:
00 damage spell; respects stat1-3 for (de)buffs and status ailments
01 heal, variable (Heal Light, Regeneration)
02 does nothing
03 does nothing
04 saber spells, no extra options...
05 debuff, set POWER1 1-5 to ORA respective resistance by spell's element, POWER1 6+ to reset all resistances
06 does nothing
07 tinkle rain, Bottle of Salt
08 buff, set POWER1 1-5 to ORA respective resistance by spell's element, POWER1 6+ to reset all resistances
09 counter magic, aura wave, energy ball
0A fraction damage (enemy-exclusive damage spells); deals no damage vs bosses; damage is target maxHP / POWER1
0B fraction damage (half vanish); deals no damage vs bosses; fraction set by POWER1
0C was same as 0A but without boss check
0D was same as 0B but without boss check
0E does nothing
0F does nothing
10 unknown but used by some (dummy?) spells, seems to do nothing
11 does nothing
12 fixed 162 damage?
13 heal, fixed (items); use both power flags for exact value
14 does nothing
15 MP restore; use both power flags for exact value
16 does nothing
17 analyze, but bugged
18 exorcism
19 Lv2/3 tech damage (only consumes TP when used as tech?)
1A escape rope
1B ...dunno calls same stuff as map transition
1C revive; use both power flags for exact HP value, MP is always full?
1D EXACT same routine as 1B, NOT a copy
1E reinitializes variables
1F does nothing
20 does nothing
21 does nothing
22 does nothing
23 toggle status ailment (chibikko hammer, moogle badge)
24 does nothing
25 anti-magic
26 does nothing
27 death (&roulette)
28 from here on crashes the game

 

I doubt you'll manage to do with spell animations what you set out to do but give this a try:
the animations are at 17E200+4x spellId, 4 bytes per entry, first 2 bytes are the ST animation, other 2 the MT animation

if you try to set an ST-only animation as MT the spell will crash the game and blindly guessing is right out since those 2 bytes are our "friends" pointers.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now