I also pumped it up to Holy 16 to make it slightly less underwhelming, but its damage still falls far short of Thunderbolt 16 from the Thunder Lance due to Thunderbolt's +5 base damage and +50% success rate compared to Holy.
Oops, this was an unfair comparison - I was actually testing against something that was weak to thunder, so Thunderbolt 16 was always dealing its full 32 hits and getting a double damage multiplier on top of that! Trying again against something not weak to thunder, Thunderbolt 16 is only a little over twice as strong as Holy 16 when cast from an item instead of being over six times stronger
. (Casting Holy 16 as a spell with a decent Spirit bonus, on the other hand, is nearly three times stronger than Thunderbolt 16 even against a target weak to Thunder.)
I'm not sure about Flee off the top of my head
It looks like the only ailments that prevent a monster from running through its fear calculation are KO/Stone/Paralysis/Sleep.
I'm in the process of updating the new bug fix txt, which I'll happily maintain, but I'll update things soon. The Holy 8 -> Holy 16 is only for Restored, right? I think just making it not break in Bug Fix is sufficient, but I agree that it's pretty underwhelming at the point you get it so that's a solid change for Restored.
Hmm, I actually did it for both, but you're right, Bug Fix should keep the level at 8. Fun fact: the game appears to be perfectly happy letting you cast spells with levels over 16 from items, and even Holy 99 as an item doesn't do as much damage as Thunderbolt 16 to a target weak against thunder
Also I know this may sound silly, but I was looking at the Magic menu, and there's easily one tile of space beside each spell's experience to put a % in it, isn't there? I'm guessing that would be something I'd have to apply in the translation as well since I'm pretty sure that interface is handled at least partially in the Misc 2 bank of script.
You could do that either in the menu layout string (follow the pointer at 0x2845C) or in the code for printing skill level + "-" + skill experience at $0E:$898D.
Does the refresh actually run at the end of every battle, or only when stat calculations have occurred? I want to be accurate in my notes.
It runs after the end of each character's level up code regardless of whether the character gained any stats or not; we could have saved (lots of) cycles by only running it inside the level up code, but it was more convenient to locate the code after updating the NMI handler since we were running into timing issues.
Ahhh, that's the difference. So Mini is like the Basuna version of Toad, then. I agree with your assessment of that newly discovered quirk, that the 0 defense resists probably don't matter since you'll never hit with physical attacks anyway. As I'm updating the bug fix txt, I'm curious if those NEW+FIXED bugs apply only to Toad, or also to Mini? Can it be assumed that it did, since the logic behind the code likely assumed neither of them could succeed at casting anything?
Yeah, somewhat, though unlike Toads, Mini characters are able to cast spells (but like Toads, they still get 0 successes). The last 3 bugs only apply to Toad, and they were all fixed by flipping a single bit
. I went into a little more detail in the text file, but basically the game loops over each character at the end of every command execution (including once for each target during multi-target commands) and sets the battle command of each KO/Stone/Toad character to nothing (#$FF) until the first non-KO/Stone/Toad character, which results in Toads randomly not getting to act and multi-target commands issued by Toads only affecting their first target. This game really doesn't like Toads for some reason
I've been curious about this for a while. This is (arithmetic?) right shift 5 on the difference and then ignoring high byte and carry, but in practice what does this mean for its current behavior? In our current version of the game (where monsters run way more frequently compared to it almost never happening in vanilla), are the monsters running more often, less often? Or is the high byte issue essentially resulting in unpredictable results so that it could be either or? Through tentative testing, it seems like the issue is that enemies aren't running away ENOUGH, but it seems ludicrous to me that enemies would run away more than they do in the Jade Passage, for example, where my party has between 2720 and 3450 HP (minus Leon who's at 1290). Even with that HP, there's plenty of enemies who could still do serious damage to my party based on gear.
Oh, I forgot to mention this: the original code with its overflow errors effectively capped a monster's chance to run at 85% (= 255 - 170), and since monsters were running too often with the overflow errors fixed, I added a cap at 85%. But yeah, if your party has somewhere around 10000 HP and is facing a monster party with around 2000 HP, then (10000 - 2000) / 32 = 250; assuming you're fighting one of the monsters with a Fear level of 4, that gives it a 250 + 4 - 170 = 84% chance of running. That calculation didn't involve any overflow, so you should be seeing the same thing with an unaltered ROM. If the difference between your HP and the enemy HP was at least 8192, though, 8192 / 32 = 256, but the game didn't check the high byte of the result, so it would treat $100 as $00. Conversely, if you were fighting one of the monsters with a Fear level of 9, 250 + 9 = $103, but the game didn't check for overflow, so it would calculate 3 - 170, see that the result was negative, and set the monster's chance to flee to 0%.
The entire system is based around HP and the monster's Fear level, so it doesn't take any of your gear or other stats into account. Like a lot of things in this game, it's a decent idea that's just not quite fleshed out enough to work really well.