v0.57.9 - Hotfix Rollup
Thirteen fixes from your bug reports plus one new accessibility preference. Thank you to everyone who sent reports through the in-game ! menu - this entire patch came from those.
New Preference: Hide Character/Monster Art
By request. New toggle in the Preferences menu under Display:
Hide Character/Monster Art
. Skips race/class portraits at character creation, NPC portraits in dialogue, monster silhouettes in combat, and the Old God boss reveal art. Borders, status bars, splash screens, and event art (level up, treasure, death, victory) all stay. Works independently of Screen Reader and Compact Mode.
Bug Fixes
Magicians and Sages can cast spells with looted staves again. Equipping a procedurally-named staff like "Blazing Archmage's Staff" through your inventory used to mark its weapon type as "None" instead of "Staff", which then failed the spell-casting check with "you need a staff." Every inventory-equip path through the helper had the same hole, hidden because most equips happen at drop time through a different code path that handles the type correctly. Now both paths agree.
Bug reports no longer ping the developer in Discord. Useful once, intrusive at volume. Fixed on both the client and the server-side proxy, so existing v0.57.8 clients also stop pinging without needing an update.
World boss kill credit no longer counts twice. When two players brought a shared-HP world boss to zero in the same round, both saw the killing-blow line, both broadcast a server announcement, both posted defeat news, and the per-contributor reward distribution ran twice. Now exactly one concurrent caller wins the kill claim through an atomic database flip; the other sees a new "the boss falls, another hero landed the killing blow" line and still gets their proper contributor reward.
Team Corner stopped stealing the ! hotkey from Bug Report. Resurrect Teammate moved to U. The global ! now opens the bug report screen in Team Corner like it does everywhere else.
Companion equip messages no longer contradict themselves. When you handed a companion a weapon and your bag was full, you used to get "their old item couldn't fit, dropped" followed by "moved item to inventory, equipped on companion." The two messages were rendered from different code paths and both fired. The misleading one is gone; you now see only the accurate per-item outcome.
Ghost turf controllers can be challenged in Gang War. When a team holds the town turf but all its NPC members are dead or perma-dead, the team became invisible to Gang War even though their turf control persisted. You'd see "Watchers control the town" on the main screen but couldn't target them. Now they appear as ghost entries with a special unopposed-takeover flow: no fight, no XP/gold (nobody to defeat), but turf transfers correctly.
Ravanella offers 13 stat enchantments instead of 5. The Magic Shop's stat-enchant tiers used to cover only Strength, Defence, Dexterity, Wisdom, and Weapon Power. Magicians with Intelligence builds had no way to enhance the stat their class actually scales on. Now the menu also covers Armor Power, HP, Mana, Agility, Charisma, Stamina, Constitution, and Intelligence. Tier costs and bonuses unchanged.
Royal audience quests no longer target floors past the dungeon cap. At level 94 with difficulty 4 you could be sent to floor 106. The dungeon only goes to 100. Quest was literally uncompletable. Now clamped to your accessible floor range, matching the regular quest board.
Feature stat checks now reward heavy stat investment. Room-feature interactions in the dungeon use a d20 roll plus a stat bonus capped at +20. That cap kicked in at stat 200 and never moved, so an Intelligence 967 specialist had the same odds as Intelligence 200. Cap raised to +40 - committed specialists with stat 400+ now auto-pass even floor-100 checks, the way investment should pay off.
Loot drops show the actual required level. You'd pick up a high-end staff, see "Requires Level: 80" on the drop screen, then try to equip it and get "requires level 100." Two different code paths computed the level requirement differently and the display picked the charitable one. Now they agree on what your save's equip check is going to enforce.
Stale grief no longer fires for living party members. If a companion was revived through the editor or admin tools, their grief entry sometimes lingered, so you'd see grief flashbacks for someone standing in your party. Two layers of fix: editor revive paths now strip the matching grief entries, and the grief system itself now sanity-checks "is this person actually still dead?" before surfacing any grief text or applying its stat penalties. Existing affected saves self-heal.
Curse removal price now shows what you'll actually pay. Ravanella's curse list showed the base cost. The gold check at click time used the tax-inclusive total. With ~15% combined king plus city tax, the listed 261,200 became ~300,400 at confirmation - so a player with 300,000 gold saw "you can afford it" prices but kept getting "you lack the gold" rejections. Now the list shows the tax-inclusive total, and the "you lack the gold" message also tells you exactly how much more is needed.
Royal Guards can actually defend the castle now. When the throne came under attack and a royal guard accepted the rush-to-defend prompt, the game responded with "You cannot go to Royal Castle from here" and the alert dead-ended. The teleport call was being routed through the same navigation rules used for normal walking, which don't allow direct travel to the Castle. Now uses a proper emergency teleport that bypasses the walking-rules check.
596 of 596 tests passing. Save format unchanged. Existing saves load cleanly.
Thanks again to Lumina, Coosh, Aura, Krunch, Hesperos, Grug, and spudman for the reports.
