GrayFace / Misc

Repository of my Delphi tools, MM patches etc.
Other
45 stars 7 forks source link

Yet more MM7 bugs #21

Open Tomsod opened 1 year ago

Tomsod commented 1 year ago

Hi! I've uncovered some more bugs since the last time, finally got around to composing them. All are fixed in some way in my mod, you can ask for details if something is unclear.

  1. Crate traders EVT bug: the player is not supposed to buy more than one crate of goods for re-sale at a time, but the dialog option fails to disappear until you leave the house.

  2. Monsters can cast Dispel Magic when fighting other monsters, with it still targeting the party.

  3. The byte variable at 0xf8b06c that controls which hireling NPC reply is displayed is not reset on dialog re-enter, and that causes the "more information" option sometimes not work on the first click.

  4. Player buffs 20 to 23 are not removed at rest at 0x490d21.

  5. During a wait in the rest screen at 0x41f567, time is advanced in increments of 6 minutes, which causes the HP/SP regen effects to only trigger 10 times per hour instead of 12.

  6. Raised age is colored green, but it's bad, so it should be yellow or red, I think.

  7. You must have heard this by now, but due to a typo at 0x4bd120, Harmondale town hall can place bounties on one type of peasant instead of trolls. Also, Celeste places bounties on angels -- this is not a typo, but all other guard monsters are excluded from the respective halls.

  8. Some areas (e.g. Avlee) have zero-charge wands lying on the ground. I've tried to fix it here by recharging them on map load, although it only works in my mod because getting a wand below 0/1 is impossible now, otherwise dropping a spent wand and reloading would recharge it too.

  9. I think Nighon volcano is supposed to have ruby reagents on top of it, but instead it has ruby gems (sprite confusion?), and some code prevents them from appearing. Also, a few of the reagents are misplaced and fall down into the volcano.

  10. Repairing items also identifies them at 0x4bdc15 and 0x41da49.

  11. Stun spell is very broken, as it can miss, using equipped bow's attack, and also does not advance with rank despite the description, which leaves it very weak with its 20 recovery penalty. Also, weapon stun uses the same code (0x439c47) and thus checks for Earth resistance.

  12. Monsters that are supposed to always attack a certain class ignore that class's promotions. (The function is at 0x426dc7.)

  13. Rangers can learn Meditation before the first promotion, despite having no SP.

  14. PC's race resets to human upon change to a lich or zombie, as it's determined based on face. But the old PC face is still stored at offset 0x1928.

  15. In the new game screen, ID Item and ID Monster are both shortened to Identify (at 0x496749), which is confusing.

  16. When generating gold piles (not items) on the ground (not in chests), the code at 0x450084 does not take map treasure level into account, so some dungeons (e.g. barrow 8) with high-level floor item spawners that are supposed to be capped end up with too much gold.

  17. Some guard archers in Tatalia have Wimp AI.

  18. Stealing from monsters (0x48d8ee) and shops (0x48d7ad) ignores item and hireling bonuses.

  19. If lich becomes a zombie (e.g. through a dark temple) and is then cured, their face (and voice) is restored to the old human one. Normally liches are immune to zombification, though.

  20. If some PCs were zombified on total party kill, they're cured on revival but their old faces (0x1928) and voices (0x1924) are not restored.

  21. With a XP-boosting hireling in the party, all PCs are treated as having the Learning skill and thus get the 9% starting bonus (the code is at 0x49130f).

  22. The code at 0x433209 imposes a ~140 recovery penalty for aiming a spell in the realtime mode (most aimed spell have less). This also changes a PC mid-cast of Telekinesis.

Tomsod commented 1 year ago

Also about the crate traders: I think when selling the expensive crates, prices of 2500 and 2250 gold are switched around. I haven't fixed this, though.