v0.54.4 - Bug Fixes, BBS Socket Fix & Companion Updates
This patch addresses a long-standing BBS connectivity issue, adds Mira-Veloura story content, fixes companion equipment logic, and includes several quality-of-life improvements.
BBS Socket Handle Leak Fix
Long-standing bug affecting EleBBS and Mystic BBS sysops: after exiting the game, players had to disconnect from the entire BBS before they could re-enter. The socket handle inherited from DOOR32.SYS was never properly closed on exit. The game now explicitly shuts down and closes the socket on exit, freeing the connection for the BBS to reuse immediately.
Mira-Veloura Companion Interaction
Mira's entire backstory is built around being a priestess in Veloura's temple, but there was zero interaction between them during the Veloura encounter on Floor 40. Players who brought Mira got no special dialogue, no reactions, and no acknowledgment of their shared history. Fixed:
- Mira's tension builds as the party approaches Floor 40 -- she trembles, remembers her temple, and struggles to say Veloura's name
- Before the Veloura dialogue choices, Mira steps forward and addresses her former goddess directly, recalling her years of service and the corruption of the temple
- Veloura recognizes her former priestess and hesitates, dealing 10% less damage when Mira is in the party
- Mira has unique reactions to each outcome -- breaking down in gratitude if Veloura is saved, processing grief if she's killed, or grappling with an unexpected alliance
Companion Weapon Restrictions
Companions had no weapon type restrictions -- auto-equip would give Melodia a bow, Vex a staff, or Mira a greatsword. Each companion now has a role-appropriate weapon list:
- Aldric (Tank): Swords, axes, maces, hammers, flails, mauls, greatswords, greataxes
- Mira (Healer): Maces, staves, hammers, flails
- Lyris (Ranger): Bows, swords, daggers
- Vex (Assassin): Daggers, swords, rapiers
- Melodia (Bard): Instruments, rapiers, daggers
Applies to both manual equip and "Equip Best" auto-equip.
Flametongue Attack Buff
Flametongue was the only Shaman weapon enchant with no secondary effect. Rockbiter gives +15% DEF, Frostbrand slows enemies, Stormstrike restores mana, but Flametongue just did fire damage. It now grants +15% ATK (based on STR) for the enchant's 5-round duration, making it the offensive counterpart to Rockbiter's defensive buff.
Mystic Shaman Weapon Restrictions
Per the class design ("swords, axes, maces, mauls -- no bows, no staves"), Shaman is supposed to be a melee class with a restricted weapon pool. However, there was no enforcement in the equip system -- Shaman could wield greatswords, polearms, staves, bows, and other forbidden weapon types from generic drops. Now blocked with a hard weapon whitelist. The enchant filter (Flametongue, Rockbiter, Frostbrand, Stormstrike) was also updated to include Hammer and Flail, which were valid Shaman weapons missing from the filter.
Magical Abilities No Longer Proc Weapon Enchants
Single-target magical class abilities like Holy Smite (Cleric) incorrectly triggered weapon enchants -- giving Mira a mana siphon sword caused the siphon to fire on her Holy Smite even though it's pure divine damage. Magical and divine abilities (Holy Smite, Lightning Bolt, Shadow Strike, etc.) no longer proc weapon-based enchantments like lifedrinker, mana siphon, or elemental procs. Physical melee abilities (backstab, power strike, execute, etc.) continue to proc weapon enchants correctly.
Dungeon Mana Potion Drops
Dungeon potion sources (potion caches, treasure rooms, room events) only ever gave healing potions. Spellcasters never found mana potions in the dungeon and had to buy them from the Magic Shop.
- All 3 dungeon potion sources now give mana potions to mana classes
- Healing potions are prioritized first -- when healing is full, overflow becomes mana potions
- Non-mana classes are unaffected
Child Naming
- Players can now name their children at birth -- when a child is born, you're prompted to enter a first name (the father's surname is kept). Press Enter to keep the auto-generated name.
- Rename children at Home -- the Spend Time with Child menu now shows Spend Time and Rename options
- Fixed: children of the same parents with the same first name were treated as duplicates and silently deleted. With only 10 first names per sex, this was inevitable for players with many children.
Other Fixes
- Combat Loot Not Persisted -- Items picked up from combat loot could silently vanish in online mode. The post-combat autosave was throttled and could be silently skipped. Now forces an immediate save after every combat victory.
- Magic Shop Healing Potion Cap -- Ravanella refused to sell healing potions once you had 50, even though the per-level cap is higher (69 at level 50). Fixed to use the correct per-level maximum.
- Version File in Builds -- BBS sysops running the auto-update script saw "Current version: unknown". Release builds now include a version.txt file.
- SQL Display Name Constraint -- Saving could silently fail if another player had a case-insensitively matching display name. Now falls back to saving player data without updating the display name.
- Disposed Object Errors -- False Discord alerts from harmless "Cannot access a disposed object" errors during session teardown. Downgraded to debug level.
