This is a significant overhaul:
- Tomato Man moved to prevent bug causing crystal orb to not spawn.
- Sand Stinger was still missable and was added to new spot in Kakkara desert.
- Adding an extra Imp and Nitro Pumpkin was unnecessary and that was reverted.
- Dark Funk, Red Drop, Dark Ninja, and Wizard Eye were moved into slightly better spots.
- Bug fixed causing Wizard Eye to be pushable.
- Luka's Ice Thug will now be a Water Thug until you attain Pure Land access.
- Incorporated "Revisit Sunken Continent" and "Revisit Pure Land" hacks by Queue to provide more elegant way to render Fierce Head, Steelpion, Ghoul, Gremlin, Griffin Hand, Mushgloom, Ice Thug, and Ghost revisitable. Queue: I refactored the code in "Revisit Sunken Continent" to auto extend the bridge to prevent the needing to irrelevantly talk to the girl. I don't believe there are any significant side effects to my revised code, but this should be reviewed just in case.
- Unstuck a few more monsters from walls: A Water Thug in Matango Caves, a Howler in Ice Country, and a Fierce Head in Palace of Darkness.
- The Shadow X enemies can now be refought if you visit them again in Joch's Cave.
- Moved a few more monsters around to make them better positioned:
- Some Chobin Hoods were moved from those weird pits/islands outside of Elinee's Castle to the ramparts of the castle instead. This pairs well with Accessible Ramparts.
- A Red Drop in Fire Palace has been moved from a useless dead end to a place where you are more likely to have to fight him.
- A Dark Ninja in a dead end of Palace of Darkness was changed to an Imp so that he might pose a threat to you via his long distance attacks whereas the Dark Ninja would not.
OK perfect that's what I was hoping for. Even at 7x HP/MP enemies and bosses don't last very long with level 99 maxed out party, so with the Enemy_Stat_Changes that'll give them even more HP for me to whack away at, thanks for the reply.
Not sure if this is normal or not, but second room in the Pandora Ruins with the two Chess Knights, if I poison them the text window that pops up displays the "po" from poisoned at the end, then a second text window pops up that just has "isoned" dispalyed. Is that correct or should the complete word poisoned appear on the second window?
EDIT: Looks like it might be having Relocalized on, it makes the Chess Knight's name longer so any info about status ailments or buffs pours into a second text window.
A probably not related but similar bug I've seen is sometimes when targeting the Dark Lich or the Mana Beast, instead of saying "Dark Lich" or "Mana Beast" it will say "Dark Lichin" or "Mana Beastin." Not sure what could be causing that. This was with the vanilla script, not Relocalized.
I think I already have something for the Wall bypass, though I want feedback on the logic / choice of data.
The gist is, use the spell's target type, specifically overloading the "boy with sword" bit, 0x40, to mean bypass Wall, with a small tweak to targeting code so if the target type is ONLY 0x40, do the "boy with sword" target restriction for the two Mana Magics. So Dispel Magic's (vanilla) target type would change from 0x81 (enemies, multi-targetable), to 0xC1 (enemies, wall-bypass, multi-targetable). Then any other spell could have 0x40 added to let it also bypass Wall.
This only presents a limitation for Moon Energy, since it's ally, single-target (0x00), where adding 0x40 would just make it 0x40. Two unused bits, 0x08 and 0x04 (and technically 0x10, but I use that for the enemy / ally Turn Undead / Dispel on allies feature) could be harmlessly tacked on for Moon Energy (so 0x48 or 0x44) to make it skip the "boy with sword" code, though I may give them a use later so not the safest choice (I also sorta use 0x08 currently in some QuickSpell logic, though that can be rewritten to not need that bit). It seems like a harmless limitation given the benefits of no longer needing a hardcoded list of Wall bypassing spells.
My first pass implementation only requires changing 10 bytes (including the byte for the Dispel Magic target type), and fits in place (it actually leaves 8 bytes free where the hardcoded spell numbers were before).
Another option for maximum compatibility could be to leave Dispel Magic as a hardcoded bypass, so its target type wouldn't need changing, but also with bit 0x40 letting any other spell bypass Wall. There's code space to do this, just seems less elegant than simply changing Dispel Magic's target type.
Very clever. I have no opinion as to which bit to reserve. It sounds like you've thought it through pretty well.