Sorry for necroposting.
I've recently working on the italian translation of this DOS game I used to play when I was a child. The official italian translation was beyond absurd and completely different from the boardgame (another game I used to play with my friends back in the days).
The game was also plagued by a bug that prevented the player to save the progresses of any character. Only now I found out that it was a bug of the italian version only. Upon fixing it I've decided to go deeper and use the project as pretext to learn some assembly. I've already had mild debugging experiece but hey, there is always room for improvement.
So, I came across this excellent and detailed topic by @kurgan and used it as reference to understand what can be done to improve the game. I am now at a point that almost every "complaints" of this topic have been solved.
What I am at now is the hard part: monster pathfinding and shooting. Help wanted!
Monsters are really dumb and the crossbow is insanely powerful (if you find the right spot and shoot perfectly diagonal, you can take down a monster at the other end of the map even across multiple undiscovered rooms).
I've reverse engineered pretty much all the code and understood most of the functions, memory locations and variables. Every things I've mapped are now on
moddingwiki page.
A (mostly) comprehensive list of the bug fixed and features added so far:
- some Walls/doors/furniture/floor tiles were in the wrong position or missing in quests
- The spell "reveal a room" of the Genie now correctly works
- Now when you happen to click on a hidden pit trap the game doesn't "warn" you keeping the hero in place anymore, you walk towards it and eventually fall into it. Before it was "legal cheating".
- In the quest 4 "the gold of the prince Magnus" the message "you can carry only one" didn't appear and it was possible to take 4 chests
- Now wrongly cast a spell (ie on an out of sight monster or on an undiscovered point on the map) doesn't waste it anymore.
- In quest 6 even if the equipment has been subtracted, the heroes kept the stats
- When looking for traps, as soon as a secret passage is discovered, all the other traps were no longer revealed
- the special event ID 0x16 (trapped chest in quest17) didn't reveal the secret port if triggered first
- In mission 9 "race against time" the second chest cannot be taken anymore if you first searched for traps and THEN treasures. Added the message "you can carry only one".
- Defeating Bellthor didn't show any text although present in the language file.
- Aligned the graphics of hero heads icons with their in-game appearance
- Restored the protection screen for preservation (just enter whatever page number)
- The witch lord could have been killed by magic in quest24
- when casting "heal body" on a monster the text "the hero is back in force" appeaered and the monster couldn't be targeted anymore and froze
- Orthogonally shoot across a tile with an opened door or a undiscovered secret door, blocked the line of sight
- Fallen rocks didn't block the line of sight as it should
- Search random events weren't always random, groups with subsequent events had high incidence (first gold events, than potions, then bad things), now they are properly pseudo-random
- unequipping a weapon now doesn't auto-unequip Borin's armour anymore
- Changed the order of monster's target priority from barbarian-dwarf-elf-mage-ragnar to the opposite
- removed unnecessary confirmation (insert floppy) when loading/saving
- added a brief description of the weapons, potions and spells in-game and in the armory
- The mage has now restricted use of the equipment (staff, toolkit and special items only)
- Special events "you find a shield" and "you find a spear" didn't assign them to the mage
- The Armory is completely revamped. You can sell items at half price or give them to other heroes
- the potions are no longer lost between quests
- the "refresh" button now only reset body and mind points, leaving all other stats/equip intact.
- the healing potion no longer cancels all effects of other potions
- When suffering the last wound if you have an healing potion in the inventory or an healing spell is now automatically used to save you from death
Some fixes are language specific (italian) but I am going to port all the changes to english too.
If you want to help or betatest please feel free to do so!