Changelog
A changelog is a running record of what’s changed in a piece of software over time, organized by version or build, newest entries first. This one covers Brigadoon Resurrected starting from the alpha.
Most recent work
ShadowKnight and Paladin research menus were swapped, now fixed
- The research lists for these two classes had been crossed: ShadowKnights were being offered the Paladin’s holy abilities (holy armor, ray of truth, divine restoration) and Paladins were offered the ShadowKnight’s dark ones (demonfire, vampiric blade, soul kiss, unholy defense). Each class now researches its own kit. If you researched an ability that belonged to the other class, it is no longer available; the matching ability from your own class’s list is now there to research instead.
- ShadowKnights can no longer learn holy armor, and Paladins can no longer learn unholy defense. Each keeps the version that fits its calling.
- Paladin skill training costs were corrected to their intended values; several skills that had drifted are now priced as designed.
- Tightened who can pick up hide on a ShadowKnight so it once again follows the race rules rather than being offered to every ShadowKnight.
Two-handed grip is now Samurai-only, and no longer follows you through remort
- The two-handed grip stance is a Samurai discipline, and it now behaves like one. Only Samurai can grip their weapon two-handed; other classes that happen to know dual wield can no longer use the stance.
- Remorting into a new class now clears any grip stance you were holding. A player reported carrying their old Samurai grip into ShadowKnight; remort is meant to be a clean slate, and now the stance resets along with everything else your previous life left behind.
Rare drops retuned in Drakyri Isle and Divided Souls
- The finely balanced adamantite longsword is no longer a chance drop. Its stats already sit right on the power curve, so it now drops every time its guardian falls.
- Drop rates climbed on several other rare pieces: the tempered throwing dagger (now 50%), the sharpened stiletto (now 25%), and the Laerkai armour set and flame of balance (now 12 to 20%).
- The Laerkai might, pain, power, and flame of balance pieces now grant a consistent 100 bonus hit points and mana.
- Zedraikis, the honed shortsword, had its hit and damage bonuses eased back.
- Divided Souls’ Oath of Vengeance keeps its punch but had its all stat and movement bonuses trimmed to saner numbers, and both it and the crimson hilted stiletto now drop a little more often.
Ninja creation cleanup: no more phantom “third attack” group
- Ninja character creation and the guildmaster gain menu used to list a one-item “third attack” group. That was redundant clutter: third attack is an ordinary combat skill Ninjas already train directly, and it now simply rides in the Ninja default skill bundle like every other class. No Ninja loses access to third attack.
More vivid combat damage messages
- The heaviest hits now show in colour, escalating through the spectrum as the damage climbs, so you can read at a glance just how hard a blow landed.
ShadowKnight life drain now connects even on a resist
- Energy drain and drain life used to do nothing at all when the target resisted, which left drain-focused ShadowKnights unable to keep their health up while grinding. A resisted drain now still lands for half and returns that much health to the caster, though the target is spared the mana, movement, and experience loss. A failed resist is unchanged.
Endgame gear rebalance: Olympus, Dragon Tower, Galaxy, and Drakyri Isle
- Weapon damage across these areas now follows a consistent power curve tied to item level, so a weapon’s punch lines up with where it is found. Several underpowered weapons in Galaxy and Olympus were brought up to standard.
- Hit and damage bonuses on gear were already in line and are unchanged.
- Bonus hit points and mana on gear had drifted well above the intended budget, especially in Drakyri Isle. These have been reined in to sensible per-level limits, trimming a handful of extreme outliers (a belt granting 400 mana at level 75, for one) while leaving already reasonable items alone.
New “research” system: study rare skills and spells at a sage
- A research sage has set up a study in Midgaard, tucked south of the Abandoned Warehouse. Certain skills and spells that no guildmaster will teach can now be earned from him instead.
- Type
researchto check your progress,research listat the sage to see everything your class can study, andresearch <name>to begin. - Each project costs a block of training points up front plus a wait measured in in-game days (time spent playing), and you can only research one thing at a time. You must be high enough level for the ability first.
- Guildmasters now point you to the sage for these abilities rather than refusing them outright.
- Paladins and Shadowknights especially benefit: a number of their signature abilities were previously listed but not actually usable, and are now properly earned through research. As part of that, a couple that had been temporary stand-ins shifted to their intended levels (ray of truth to 60, demonfire to 45).
Sunken Hoard chest refills and relocks for every run
- The treasure chest at the end of the Sunken Hoard gauntlet used to stay open, unlocked, and empty after the first party looted it. Its loot was capped at one copy in the world, so as long as a previous winner still carried a piece, the chest could never refill or relock.
- The chest now re-seals and restocks its full haul on every area reset, so each group that fights through the gauntlet finds it locked and full, just like the first.
Bosses can break the old 32,767 health and damage ceiling
- Under the hood the engine used to store a creature’s hit points and a blow’s damage in a 16-bit number, which silently capped any mob at 32,767 HP and any single strike at 32,767 damage no matter what the numbers were meant to be. Both fields have been widened to the full 32-bit range (into the billions), so the biggest bosses can now carry the enormous health pools and land the heavy hits their level calls for. Existing characters and mobs are unaffected; nothing needs to be reset.
Dragon Tower loot fixes
- Two powerful Dragon Tower relics that existed but never actually spawned are now obtainable: a diamond ring drops from Tiamat, and a plain black robe drops from the holy Draconian.
- Fixed a shed dragon scale in the Sunken Hoard chest that was invisible to players (only immortals could see it).
Vorpal weapons now dismember instead of always beheading
- A vorpal weapon’s rare killing strike no longer always takes the head. It now strikes a random body part the victim actually has, weighted so that arms and legs come off far more often than a head, and only a foe with no arms or legs left is guaranteed to lose their head next. Severed arms and legs drop to the ground where the blow landed.
- Losing limbs has real consequences. With one leg gone, every step drains more movement; with both legs gone you can’t walk at all (only flight will carry you) and you collapse where you stand. Losing your first arm means you can no longer wield a second weapon; losing the second means you drop everything you’re holding and can’t wield, wear, or pick anything up until you’re made whole again.
- Your
scorenow tells you which limbs you’re missing.
Healers can regrow severed limbs
- Any temple healer can now regrow a lost arm or leg. Ask them to
heal armorheal leg(50 gold each, and covered by the usual healer discount) and they’ll lay hands on you and grow the limb back good as new.
Smoother progression across Drakyri Isle, Olympus, Dragon Tower, and Galaxy
- Attribute and vitality gear (armor, jewelry, and trinkets) across the whole level range now scales consistently: hit points, mana, hitroll, and damroll bonuses grow at the same steady rate per level whether you’re gearing up in Drakyri Isle, Olympus, or the endgame Dragon Tower and Galaxy zones.
- A second round of this work, done today, gave three previously inert rings a genuine armor bonus for the first time (the copper ring, the Ring of Dignity, and the ring of the universe) and added spell resistance to a dozen attribute-focused Dragon Tower and Galaxy trinkets that had no magical defense at all.
Fixed instant-death bosses in the Sunken Hoard
- Several of the toughest guardians at the end of the Sunken Hoard chain, including the final Vault Warden, had HP values so high they overflowed the game’s internal health counter and wrapped around to a negative number, causing them to appear to die instantly instead of putting up a fight. Their HP is now scaled back to a safe range while keeping them the toughest fights in the dungeon.
A new job board from the thieves’ guild fence
- A shady fence now stands in both the Midgaard and New Thalos
thieves’ guild halls, starting at level 15. Ask them to
requesta job and they’ll send you to either steal a specific item off a specific mark or pick a specific lock somewhere in the world, matched to your own level. You’ve got four real hours to get it done before the job goes cold;abandonit early if you’d rather try something else. Bring back proof and get paid in gold plus a piece of jewelry for your collection, sellable at the Midgaard jeweller.
Weapons across the world now carry more special properties
- Many maces that previously had no special property at all (no flaming, frost, vampiric, sharp, and so on) now carry one, closing a gap where a large share of the game’s weapons felt plain compared to their armor/jewelry counterparts.
New items added to Galaxy and Olympus
- Galaxy has new weapons and gear. Olympus has three new treasures: the Eye of Argus, the Laurel of Victory, and the Oracle’s Flame, found among Athena, Apollo, and Hera’s belongings.
The Sunken Hoard added beneath Dragon Tower
- A new underground dungeon has opened beneath Dragon Tower: a flooded cave system leading to seven guardian chambers protecting a hoard at its heart.
Decepticon invasion event paused
- The Decepticon invasion’s wave spawns are temporarily disabled.
Fixed the grind command colliding with the grin social
- Typing an abbreviation of “grind” could accidentally trigger the “grin” social instead. “grind” now requires an exact match, the same fix already applied to “remort”.
Dragon Tower and Galaxy gear enchanted further
- Armor, jewelry, and other equipment in Dragon Tower and Galaxy now carries more stat bonuses per item, bringing them up to the same richness players already find in Divided Souls and Drakyri Isle gear.
Permanent healing fountain added at the Temple of Mota (recall room)
- A restorative fountain now stands permanently in the recall room, so everyone has a place to fully heal up right after recalling. Unlike the timed fountains an immortal can summon elsewhere, this one never dries up.
Dodge/parry/evasion/shield-block dex bonus now only applies to players
- The dexterity bonus added to dodge, parry, evasion, and shield-block chance was meant to make low-dex players worse at avoiding hits, but it was also applying to monsters, whose dexterity climbs fast with level. That was making monsters far harder to hit than intended, especially with multiple attacks a round. The bonus is now player-only; monster defense is back to normal.
Galaxy releveled to 110-130
- The Galaxy area has been releveled from its original 4-30 range up to 110-130, turning it into an evil-alignment-safe, high-level counterpart to Dragon Tower and Olympus.
Protection hunger/thirst now silences the hunger/thirst warnings
- Characters affected by protection hunger or protection thirst no longer see “You are hungry.” or “You are thirsty.” while the spell is active, whether checking score or getting the periodic warning.
Paladin and Shadowknight: fixed missing scrolls, staves, wands, and recall
- Fixed a bug where Paladins and Shadowknights could never actually use scrolls, staves, wands, or the recall skill, despite starting with them at character creation like every other class. Both classes will pick this up automatically on next login, no action needed.
Shaman weapon totems: fixed, rebalanced, and expanded to 4 tiers
- Fixed a bug where a landed fire/frost/shocking weapon proc could be separately dodged, parried, or evaded on top of the swing that triggered it, silently eating the bonus damage. That damage is now unavoidable once the swing lands.
- Casting more than one weapon totem now replaces the old one instead of stacking, matching every other totem family.
- Totem-granted fire, frost, and shocking weapon procs now hit for the same average damage as each other, in a tighter, more consistent range than before. Real permanently-enchanted elemental weapons are unaffected and keep their own distinct fire/frost/shocking damage.
- Each element’s weapon totems now have a 4th tier, and all four tiers across fire, frost, and lightning are releveled onto one even ladder (roughly every 5-9 levels) instead of the old, wildly inconsistent spacing.
- A weapon totem now hits hardest within about 10 levels of when you first gain that specific tier, and falls off sharply the longer you keep using a tier you’ve outgrown. The top tier (IV) of each element is exempt from this falloff, so it stays fully effective for the rest of your leveling career.
New class: Paladin
- New remort class: Paladin (requires completing Cleric and Warrior). A holy knight built around a full cleric-style healing and protection spell line, with two signature abilities: “lay hands”, the opposite of Shadowknight’s pain touch — damage taken in combat builds up over a few seconds, then can be unleashed as a heal on yourself, your pet, or another player — and “holy armor”, a shield of light that automatically kicks in when you engage a truly evil opponent, stronger the more evil they are.
- New capstone spell, divine restoration: a full heal that also cures blindness, poison, disease, and curse in one cast.
New class: Shadowknight, the evil mirror of Paladin
- New remort class: Shadowknight (requires completing Warrior and Wizard). An evil knight built around a curse and cause-wounds spell line, with an innate signature ability, “pain touch”: damage taken in combat builds up over a few seconds, then can be unleashed back on your opponent in one blow.
- Casts spells at a small effective-level boost, making abilities like energy drain land more reliably and heal for more.
- Must stay evil-aligned or takes periodic damage, the same way Fiend and Demon do.
New race: Geomantic, plus weapon resistance for Gargoyle/Mithril Dragon and a Monk group rework
- New remort race: Geomantic. Casts every spell at half its normal mana cost (including when borrowing mana through Link), and starts with the meditation skill.
- Gargoyle and Mithril Dragon both now resist weapon damage.
- Monk’s
protection hunger/protection thirstmoved out of the free “monk default” bundle and into a separatecreationpurchase.
Whirlwind now always lands two hits, and ward potions show what they actually resist
- Fixed a real bug: Whirlwind’s second hit was tied to the random dual-wield proc chance, so it landed inconsistently. It’s now a guaranteed second swing every time, using your off-hand weapon if you have one.
- Fixed a real bug: the poison/plague ward potions’ spell-affect listing showed “modifies none by 1” instead of saying what they actually do. It now reads, for example, “light poison resistance”.
More alchemy fixes: an unkillable deer, a toadstool mixup, and stronger whirlwind hits
- Fixed a real bug: the fallow deer (a source of deer sinew) had a leftover flag marking her as an unattackable pet, making her completely unkillable. She can be hunted normally now.
- Fixed a real bug: the forest has two nearly identical toadstools; alchemy recipes only recognized one of them, so picking the wrong one silently failed to brew. Both are now accepted.
- Whirlwind strikes now hit 10% harder than a normal attack.
Shaman Alchemy recipes reworked to use more of the Holy Grove’s herbs
- Every alchemy recipe now takes multiple distinct ingredients instead of just a larger amount of one thing, and several recipes now pull from the Holy Grove’s colored herbs (matched to each herb’s own effect where it made sense, like the poison-curing herb going into the cure poison potion) instead of reusing the same couple of ingredients everywhere.
brew listnow shows exactly which ingredients each recipe needs, and splits recipes into what you can brew right now versus what’s still out of reach at your current level.- Fixed the Apothecary’s herbalist wandering off instead of staying at her counter.
Berserker whirlwind fixed: extra hits, slow cooldown, and movement cost all removed
- Fixed a real bug: Whirlwind was landing extra hits beyond one per weapon, was only usable roughly once every two combat rounds instead of every round like other skills, and was draining movement points for no reason. All three are corrected: one hit per weapon (plus the normal dual wield chance for a second), usable every round, and no movement cost.
Decepticon invasion event paused
- The Decepticon invasion’s automatic wave releases and repopulation have been switched off. The mobs, objects, and event progress are untouched and can be resumed later.
New: Shaman Alchemy
- Shamans can now gather ingredients from creatures around the world
(deer, bears, foxes, snakes, and a rare dragon scale among them), grind
raw ingredients into refined ones with a mortar and pestle, and brew
them into potions, chews, and salves. All ingredients can also be bought
directly from a new herbalist shop in Midgaard (formerly the abandoned
Temple of Stupid). See
help alchemyin game for the full rundown.
Racial ability unlock levels rebalanced away from a flat level 1
- Several of the racial abilities fixed in the previous update unlocked at a flat level 1 for every class that didn’t already have its own confirmed level. Those have been rebalanced to the average of that same skill’s other real class levels instead, so a race granting (for example) invisibility doesn’t hand it out at level 1 to classes that would normally have to wait much longer for it.
Kobold’s strategic retreat has never worked until now, plus ~100 other racial abilities fixed
- Fixed a real bug: Kobold’s signature strategic-retreat ability has been completely non-functional for every player since it shipped, regardless of class. A second bug, unrelated to race, made it possible to waste training points buying it at a guildmaster even though it could never be used.
- A systematic audit found the same underlying issue affecting nearly every race in the game: a race would grant a skill or spell, but the receiving class’s own level requirement was still set to “never,” making it show up as known but permanently unusable. Fixed roughly 100 of these across most races, including Shaman’s access to several racial skills, Djinni’s illusion of grandeur, Wyvern and Mithril Dragon’s granted combat skills, and Beast’s dual wield for spellcasting classes.
- A handful of larger racial grants (Skeletal Dragon, Demon, Seraph, and Mist’s own spell kits) are still being reviewed before a similar fix, since those involve significantly more spells at once.
Berserker, Scribe, Samurai, Monk, Illusionist, and Shaman now get scrolls/staves/wands/recall
- Fixed a real bug: those six classes couldn’t use
scrolls, staves, wands, or the recall skill at all, despite the
community reference material confirming every class but Monk should have
them from level
- Monk had a partial fix for scrolls only from an earlier session; now gets the full set like everyone else.
- Also fixed Djinni’s new illusion-flavored racial spells (camoflage, false orders, the race disguise spell) so they actually work for every class, not just Scribe and Illusionist.
Class and race data corrections from a full chargen audit
- Fixed several real data bugs found by cross-checking every class and race’s stats and skills against the original community reference documents: Beast’s intelligence cap was one point too low, Monk and Ninja’s stat bonuses were placeholder guesses now replaced with the real numbers, and Shaman’s healing totems and animal spirit forms had a scaling bug making every tier weaker than intended.
- Ninja can now buy the weaponsmaster group, matching their reference data (previously missing entirely).
- Djinni’s racial illusion bonus now grants three real spells (camoflage, false orders, and a race disguise spell) instead of nothing extra beyond the base illusion group.
- Removed several classes’ undocumented access to skills and spell groups that didn’t belong to them, a leftover from the original codebase this game was built on, while confirming and keeping everything with real evidence it was intentional.
Monks hit noticeably harder, especially at higher levels
- Changed: the unarmed strike damage bonus was widened from a flat 15% to a bonus that scales with level, from +10% early on up to +35% by level 121 and beyond. A review of live combat data showed Monks falling well behind comparable classes at high levels; this narrows that gap.
New Shaman skill: Alchemy (spells and item plumbing only, for now)
- New feature (partial). Shamans can train a new
alchemyskill and use it toruba ward salve on themselves or an ally, or eat a ward chew, protecting against a specific danger (fire, poison, plague, or blindness) ahead of time. Only one chew’s effect can be active at once, with a short cooldown after it fades. - The engine-side support (item types, commands, ward effects) is live, but the actual potions/salves/chews don’t have an in-game vendor yet – that’s coming in a follow-up.
score
now lists every class you’ve completed after remort
- Once you reach remort level,
scoreshows a “Classes completed” line listing every class you’ve finished, not just your current one.
Fixed:
practice silently failed if you quoted a skill/spell
name
- Fixed a real bug: typing something like
practice 'acid breath'(quoting a multi-word name, the way some other commands require) always failed with “You can’t practice that.” Quotes around the name are no longer required and no longer break the lookup.
Race & Class Reference page is live on the website
- Added a
/race-class-referencepage, linked from the site footer, with a full reference table for chargen options.
A Decepticon invasion is loose in the world
- A Hasbro vending machine in Market Square now sells Transformers lunchboxes. Also fixed Blitzwing and Astrotrain (wave 3) spawning in the wrong room.
- Six waves of Decepticons (Rumble and Frenzy, then Ravage and Laserbeak, then Skywarp and Thundercracker, and so on up through Megatron) are landing in different areas across the world, one wave every 8 hours. They hunt down and fight the local wildlife and townsfolk on their own, not just players who attack them, and each one announces its arrival over gossip when it shows up.
- Once a wave lands, killing a Decepticon doesn’t get rid of it for good; it’ll be back within a couple of minutes, and stays that way for the rest of the event.
- Fixed a real bug: Decepticons’ gossip announcements weren’t actually reaching anyone, thanks to a long-standing engine quirk that silently blocked any mob from using chat channels at all. Their gossip lines work correctly now.
- Every Decepticon drops a themed action figure when killed. Each one
is more than meets the eye:
transform <name>folds it into its vehicle mode and back, cassette tapes, jets, a tank, a train, even a ray gun and a pistol.
Fireproof is now a real personal buff, not a one-item spell
- Changed:
fireproofused to target a single object in your inventory. Now it’s cast on yourself, shows up inaffects, and wards everything you’re wearing and carrying against fire, acid, and lightning damage for the duration.
Pet
affects now show up in affects, and Shaman spirits last
half as long
- If you have a pet,
affectsnow lists its affects right after your own, clearly labeled with its name. - Shaman spirit spells (Spirit of Rhino, etc.) now last half as long as before.
More
“your ” attack messages fixed, plus a couple of real bugs
- Fixed a real bug: dragon races’
bitecommand showed a blank attack noun (“Your mauls X”). Now correctly says “Your bite mauls X.” - Fixed a real bug: all six of Shaman’s affliction spells (Festering Sores, Disease Cloud, Poison Bolt, Languishing Decay, Rain of Poison, Envenom Blood) had the same blank-noun bug – each now shows a themed attack word.
- Fixed a real bug: the
practicelisting’s columns were badly misaligned for anyone who knows a long skill/spell name (several totems and spells run well past the old fixed-width column). Widened the column and dropped to a 2-column layout so everything lines up again. - Removed Wizard’s access to the weaponsmaster skill group (unused dead weight for that class).
Thieves can circlestab without fleeing first, if a mob isn’t watching them
- Changed: Circlestab used to require you to be completely out of combat. Now it only checks whether the mob you’re circling actually has its attention on you – if a group member or their pet is tanking it, you’re free to circle around and strike without needing to flee and re-engage.
New help entries: rename, circlestab, and Berserker’s Bloodlust
- Added help topics for the new
renamecommand and forcirclestab(both previously undocumented), and added a section to the Berserker help entry describing Bloodlust, the innate rage that makes them hit harder and shrug off more damage the closer they get to death.
Renamed items with color no longer bleed into the next line
- If you use a color code with
renameand forget to close it, the game now automatically resets it back to white at the end – no more color leaking into your inventory list or whatever prints next.
The renaming shop now allows color codes
- Item names, short descriptions, and room descriptions set through
renamecan now include real color codes (e.g.{Rfor red), instead of having them stripped out.
New service: pay a shopkeeper to rename your gear
- New feature. A new shopkeeper on Clan Road (in a
new Renaming Shop, just south of the road’s midpoint – the repair
artisan also moved into a new Repair Shop just north of there) will
rename an item for 500 gold. Use
rename name/short/long <text>to set what you want changed (its keywords, its display name, and/or its room description – set only the ones you want changed),rename showto review before you commit, then hand any item to the shopkeeper to apply it.
Festering Sores and friends now deal the right damage type
- Fixed a real bug: Festering Sores was applying a poison affliction instead of disease, despite being thematically a disease effect. It (and Disease Cloud and Languishing Decay) also now deal their instant damage as disease-typed, not poison-typed, matching their actual affliction.
Ninja thrown weapons: three bugs found from a DPS audit
- Fixed a real live bug: after a thrown weapon was consumed, the game auto-readied whichever thrown weapon happened to be most recently picked up, not the strongest one you were carrying. A Ninja carrying a mix of throwing-dagger tiers could get silently downgraded to a weak one mid-fight with zero indication – now it always readies your best available thrown weapon.
- Fixed a real live bug:
identifyandstatshowed “Weapon type is unknown” for every thrown weapon, since the display code predated the Ninja class. Now correctly shows “thrown.” - Fixed a real live bug: manually spamming the
throwcommand had almost no cooldown (a leftover 0 in the skill’s own data), letting a fast typer land 5+ throws in the time 3 was supposed to be the cap. Throw now has a real recovery timer matching the intended “3 per round” cadence.
Grouping with someone far above your level could hand out huge exp
- Fixed a real live exploit: a low-level character grouped with a much higher-level one, tagging along on kills far above their own tier, could rack up disproportionately large exp – essentially free powerleveling. Group exp now scales down the further a member’s level is from the group leader’s, so tagging along with someone dramatically stronger no longer pays off nearly as well as fighting things close to your own level.
Vampires still couldn’t actually drink from corpses
- Fixed a real live bug: every corpse in the game was
secretly already marked “drained of blood” the instant it was created,
so a Vampire trying
drink corpsealways got “has already been drained,” even on a corpse nobody had touched. Drinking from a fresh corpse now works as intended – heals you, and works equally well whether you’re resting or still mid-fight.
Seraph/Demon alignment backlash (and Vampire sunlight, and Fiend’s own alignment punishment) now show a real damage word
- The self-inflicted damage from these racial punishments used to either show a broken generic message (“Your none hits you”) or, for Seraph/Demon, suppress it entirely to hide that bug. All four now show a proper severity word (“You wound yourself!”) alongside any dedicated flavor text.
Dozens of skill/spell levels and ratings across every class didn’t match the design docs
- Audited every class and race against the community’s original design docs (creation points, skill/spell levels and ratings, group costs) and fixed every confirmed mismatch found – among others: Mage/Cleric couldn’t get a sword, third attack, scrolls, staves, or wands until much later than intended (or at all); Thief’s dodge, calm, acid blast/breath, and gate were off by several levels; Warrior’s parry and six offensive spells (chain lightning, fireball, fly, gate, lightning bolt, pass door) were unlocking earlier than intended; Berserker couldn’t train enhanced damage at all; Samurai was missing working levels for parry, fast healing, kick, rescue, berserk, magnified damage, and their 4th/5th attacks; Wizard’s meditation and Illusionist’s blink were mistimed; Scribe’s second-tier spell group rating was off; false orders was unusable for Clerics. Also fixed: the Beast race could train wisdom one point past its documented cap.
- Left untouched on purpose: anything gated at level 175 (not yet intended to be reachable), and skills/spells that were never actually implemented in the engine.
Dying repeatedly could quietly refund way more exp than it took
- Fixed a real live bug: once repeated deaths had driven your banked exp deep into the red, any further exp-losing event (fleeing combat, for example) would report a small loss (“You lost 10 exp”) while actually handing back a large net gain – a safety floor meant to keep your exp from dropping below what your current level implies was only checking against a single level’s worth, not your real level, so it could snap you far higher than it should have.
Ninja’s detection/enhancement/illusion spells were all stuck at level 1
- Fixed a real live bug: a fresh Ninja could immediately cast 19 spells that should only unlock much later (or, in several cases, never for that class at all) – detect evil/good/hidden/invis/magic/ poison, dispel magic, farsight, fireproof, giant strength, haste, identify, infravision, know alignment, locate object, mass invis, refresh, stone skin, and ventriloquate. Also fixed: Ninja couldn’t read scrolls, use a staff/wand, or recall at all (silently locked out), and lore was never actually purchasable despite having a real training cost.
Shaman spirits could be stacked for unlimited hit points
- Fixed a real live bug: recasting the same animal spirit (e.g. Spirit of Lion) while it was already active didn’t refresh it – it stacked on top, over and over, with no limit. Recasting a spirit now always replaces whatever spirit you currently have active, exactly like recasting a totem does.
Seraph and Demon alignment backlash finally has real flavor text
- The self-inflicted damage that punishes a Seraph for straying from good (or a Demon for straying from evil) used to show a broken, generic combat message. It now has its own dramatic text.
Illusion of Grandeur could leave you permanently stuck “dead” while still playing
- Fixed a real live bug: if Illusion of Grandeur wore off while you were still fighting and it dropped you to a fatal negative hp, you could end up frozen at “dead” forever instead of actually dying and respawning – never got a corpse, never came back to the temple, but weren’t extracted from the world either, so a later heal could walk your hp back up while you stayed stuck. Root cause was in the general combat engine (a gap in how the game resolves someone dying while mid-fight), not the spell itself, so this protects against the same freeze from any future effect that can drop hp sharply outside of a normal landed hit.
Thrown weapon cadence is now guaranteed, not a percent roll
- Ninja thrown weapons now reliably throw 3 times per combat round instead of only having a chance at bonus throws. A miss no longer cuts the sequence short, and it no longer stacks with second/third/ fourth/fifth/sixth attack.
- Fixed: mobs could end up wielding a thrown weapon (e.g. one transferred to them by a landed hit) and fight with it like a normal weapon – thrown weapons are a Ninja-only mechanic now.
Nine new maces
- Maces were scarce across the game. Added one to Olympus (the Hammer of Hephaestus), two to Divided Souls (a sacrificial mace on the Cultist High Priest, a knotted oak club on the Druid of Peace), two to Drakyri Isle (the Mace of Judgement on The Hand, a blessed mace on the drakyri healer), two to Sesame Street (a giant rubber mallet on Super Grover, the Count’s bat-topped scepter), and two to Midgaard’s Weaponsmith shop (a temple war mace, a silverblessed mace).
Ninja counter attack, thrown weapons, and Dragon Tower gear
- Fixed: Ninja’s counter attack showed a message but never actually landed a hit – it now runs through the real combat pipeline, so a successful counter shows a proper damage message (and can be parried/ dodged/evaded back, same as any other attack).
- Fixed: thrown weapon attacks always missed against a hidden, unspotted attacker – they now land normally, same as a spell.
- Ninjas can no longer
wielda thrown weapon directly – thrown weapons are throw-only now (throw <item> <target>); wielding one said “You can only throw that, not wield it.” - Thrown weapon shop prices cut 90% (was up to 4000 gold for the best knives, now up to 400).
- Dragon Tower’s weapons and armor rescaled up – the zone’s own loot had never been re-tuned when it was releveled to 110-130, so it was weaker than the paired Olympus zone’s gear despite targeting a higher level range. Weapons got more dice plus higher hit/damroll; armor got higher AC and hp/mana bonuses.
- Agitate Wounds damage doubled.
- Fixed: Wraith Form and Dark Ritual couldn’t be cast while actually fighting – both were misconfigured to require standing still, same as some other combat spells already correctly allow.
Damage totems now actually announce their hits, totems tick 3x faster
- Fixed: damage totems (fire/frost/lightning I-IV, firestorm/ icestorm/lightningstorm) were dealing damage with no message at all – neither the totem nor bystanders were told anything happened. Now announces when the totem strikes (“The lightning i totem crackles and lashes out!”) followed by a real hit message (“Shargaas’s blast of lightning maims the goblin!”).
- Fixed: Phoenix’s fire shield always showed the same flat “sears” message regardless of how much damage it actually did. Now uses the same damage-word system every other attack in the game does.
- Totems now tick 3x faster than the last speed pass.
- Poison bolt damage doubled.
Totems now grow with you, skin totems show what they’re actually doing
- Totem power now scales with your own character level, not the fixed level of the specific tier you cast – a totem tier you unlock early keeps getting stronger (and lasting longer) as you level, instead of staying permanently stuck at its unlock-level strength.
- Fixed: Shaman had holy word, remove curse, remove alignment, and remove invisible usable from level 1 (a leftover side effect of an earlier unrelated fix) – now unlock at the same levels Cleric gets them.
affectsnow explains what a skin-resist totem is actually doing (e.g. “resists blunt piercing slashing”) instead of a blank “modifies none by 0.”- Skin-reduce totems (leather/wood/iron/steel/diamond) now
show up in
score’s Damage Reduction line – and in the process, a real bug got fixed: they’d silently stopped doing anything at all since an earlier naming fix, despite still showing as active.
Healing totems now tell you when they heal you
- Fixed: healing totems gave no feedback when they healed you – the healing itself was always working correctly, but it happened silently, so a totem quietly doing its job looked identical to a broken one unless you were watching your raw hp number. Now says “The healing totem’s energy washes over you.”
Totems now replace their own kind, last longer as they scale, weapon totems hit harder
- Casting a stronger (or weaker) totem in the same line now replaces the old one instead of running both at once – e.g. plant healing I, then plant healing IV, and the healing I totem is retired instead of both sitting there together.
- Totem lifespan reworked: the very first tier in any totem line now lasts 2 ticks, and each tier after that lasts 2 ticks longer – a real fix for higher healing tiers barely outliving the totem they were planted from.
- Weapon totems now hit for double damage.
Skin totem buffs no longer accumulate forever, totems announce when they crumble
- Fixed: skin-resist/skin-reduce totem buffs kept growing the
longer the totem stood – a totem re-applies its buff every 3-7
seconds while it’s up, and each re-application was adding to the
remaining duration instead of refreshing it, so
affectscould show a totem buff with dozens of “hours” left after standing around for under a minute. Now applies a clean, flat 1-hour buff each tick. - Totems now announce it when they crumble (“A copper skin totem crumbles to dust.”) instead of silently vanishing from the room.
- Re-verified totem lifespan live: even the weakest tier of any totem stands for several ticks before crumbling, growing longer at higher tiers – already working as intended.
Shaman totems/spirits were mislabeled, plus real Ninja combat corrections
- Fixed: shaman totems and spirits showed the wrong name in
affects. Weapon totems, resist/reduce skin totems, and spirits all shared one internal identity across every tier in the family – so no matter which tier you actually cast,affectsalways displayed the single highest tier in that family (mithril skin totem, diamond skin totem, lightning weapon iii totem, spirit of rhino) instead of the real one. Switching tiers (e.g. spirit of wolf to spirit of bear) still properly replaces the old one instead of stacking. - Spellup’s totem tier-selection and the totem tick timing were both re-verified live and are working correctly – the wrong-name bug above was almost certainly what looked like “spellup gave me a tier I don’t have” and “totems aren’t ticking.”
- Ninja counter attack now fires off your own successful parry/ dodge/evasion, not off landing a hit – a riposte against an opponent’s failed attack, matching how it was actually meant to work.
- Thrown weapon attacks can no longer be parried, dodged, or evaded by the target (shield block still works against them) – a released weapon can’t be defended against the way a live melee exchange can.
Ninja could barely use half its own kit – 18 races’ worth of grants fixed
- A full audit found Ninja’s own
detection,enhancement,illusion, andprotectivegroups were mostly dead on arrival – 8 of 10, 4 of 4, 2 of 3, and 3 of 3 of their real spells respectively were silently unusable, even though the groups themselves cost real creation points at chargen. Same root cause as the exp/level bug above: Ninja’s column defaulted to unlearnable and was never backfilled. - 12 racial “flavor” grants fixed the same way across dwarf, giant, all 6 dragons, gargoyle, goblin, dark dwarf, draconian, and vampire (berserk, bash, the 5 breath weapons, bite, hand to hand, fast healing, magnified damage, deep meditation) – a Ninja of any of these races now actually gets what their race promises.
- 7 more specific racial grants fixed: Djinni’s illusion of grandeur, Mist’s 4 weather spells, Wyvern’s rescue, Faerie’s meditation.
- Phoenix’s racial cost is now a real 40 creation points (was an implementation-default 0) – still 1500 exp/level for a customizing player who buys nothing.
- Remort now clears your pet – it belonged to the old life.
- Shaman totems now tick every 3-7 seconds (randomized), instead of a flat 5 – felt too slow at roughly once per mud tick.
- Spellup can now include your skin totems (resist and reduce only) – picks whichever tier your level allows automatically.
Fixed a real exp/level bug affecting 11 races, plus more Ninja cost corrections
- Shaman and Ninja were silently getting a cheaper exp/level rate than every other class on 11 races (all 6 dragons, Fungus, Gargoyle, Djinni, Beast, Vampire) – a leftover default from when those two classes were added meant a Shaman or Ninja of any of those races leveled up needing as little as 2/5 the exp intended, instead of matching every other class on that race. Fixed across all 11.
- Ninja’s sword, third attack, and boomerang training costs corrected against the source material; sword added to the weaponsmaster training bundle.
- Demon and Seraph’s exp/level lowered from 3000 to 2500.
Live report from Famon (Seraph Ninja), fixed by ClaudeCode.
Ninja skill/training-cost pass, plus a real fix to a dead group
- Ninja’s own “weaponsmaster” training group shared a name with an unrelated stock group, so it silently pointed at the wrong one. Throw, parry, counter attack, and boomerang have been unreachable since Ninja launched – fixed, and now bundled with newly-opened dual wield, shield block, disarm, kick, and trip.
- Evasion is now free from level 1 as part of Ninja’s starting kit, instead of a level-19 purchase.
- Ninja gained access to the enhancement and detection spell groups.
- Third attack is now its own cheap (6-point) purchase instead of being bundled into the larger 40-point default skill set.
- Corrected a batch of individual training costs for Ninja (and one for Shaman) that didn’t match the source material.
Breath damage cut softened
- The second breath damage cut from last update was too aggressive. It’s been revised from a 1/3 cut to a 1/5 cut – breath spells now land at roughly 53% of their original pre-rework damage, up from 44%.
Fixed: Ninja was unreachable as a remort
- Ninja was fully built – skills, groups, help text – but the code that decides which classes you’re allowed to remort into never got a check for it. Players who completed both Warrior and Thief could see every other eligible remort class except Ninja. Fixed – Ninja now correctly appears once you’ve completed both prereqs.
Breath damage cut further, Inferno doubled
- Breath spells (acid/fire/frost/gas/lightning) are down to roughly 44% of their original pre-rework damage, a further cut on top of the 2/3 reduction below – still landed too hard even after that first pullback.
- Inferno’s damage (and its splash rings) has been doubled.
Breath spells scaled back down to 2/3 damage
- Acid/fire/frost/gas/lightning breath were hitting too hard after last update’s fix. They now land at 2/3 of that damage – still above where they were before the fix, just pulled back from full parity with Wizard’s Acid Blast.
New races: Demon, Seraph, Phoenix
- Demon grants the whole “maladictions” spell group (blindness, change sex, curse, energy drain, plague, poison, slow, weaken) plus detect hidden and detect invis.
- Seraph grants the whole “benedictions” spell group (bless, calm, frenzy, holy word, remove curse, remove alignment, remove invisible) plus renewal.
- Phoenix grants detect hidden and detect invis, plus Fire Shield: whenever a Phoenix is struck in melee, the attacker automatically takes fire damage back, scaled to the Phoenix’s own level – always on, not something you have to trigger.
- All three are remort-only races, unlocked the same way as the dragons and every other remort-only race: complete any single class once, in any life.
- Also corrected the exp/level cost for Gargoyle and Vampire, which turned out not to actually be landing on their own intended 1500 exp/level in real play – both now genuinely cost 1500, not more.
Removed the note board system
- The old “General/Ideas/Announce/Bugs/Personal” board listing shown at login is gone, along with the board/note commands behind it. It hadn’t been used in a long time and was cluttering the login flow.
Two blood fountains added to the world
- A fountain of blood now bubbles up right inside the Graveyard’s main gate, renamed “The Fountain of Blood” to mark it. The Graveyard’s entrance gate (off Elm Street) has also been unlocked – no key needed anymore, just walk in.
- A second blood fountain has been added to Divided Souls, in a cavern now renamed “The Weeping Cavern.”
- Both are ordinary drinkable fountains – anyone can drink from them, but they’re primarily there to satisfy Vampires’ blood hunger without needing to hunt down a fresh kill every time.
New shop: Thrown Weapons R Us, in Midgaard
- A new shop selling thrown weapons has opened just north of the existing Weapon Shop. Stocks 20 throwing daggers, knives, and stars spanning level 1 through 95 in even 5-level steps, so Ninjas (and anyone else using thrown weapons) have a real place to gear up instead of relying purely on drops.
Vorpal weapons’ instant-kill proc now scales with level difference
- Previously a flat 3% chance against anything, regardless of how far below the wielder’s level the target was. Now it holds at 3% against anything at or below half the wielder’s level, then tapers down as the target gets closer to the wielder’s own level – down to a slim 0.01% chance against something the wielder’s own level, and no chance at all against anything above it.
Agitate Wounds no longer scales with the caster’s level
- Damage now depends only on how badly hurt the target already is, not on the caster’s own level. Previously a higher-level Cleric got noticeably more out of this spell against the exact same wounded target than a lower-level one would. It now hits every caster the same – equivalent to what the old formula would have produced for a level 130 caster, regardless of the caster’s real level.
New class: Ninja
- Ninjas fight by throwing weapons, not swinging
them. Wield a thrown weapon (dagger, shuriken, etc.) and combat
uses it automatically – and much faster than melee, releasing 2-3 throws
in the time it takes most classes to land one hit, scaling with
dexterity and throwing skill. A landed throw usually ends up on the
target, so it’s typically recoverable off their corpse afterward;
there’s a small chance any given throw is lost outright. The
throw <item> [target]command also lets you throw on demand – opening a fight at range, or lobbing a spare blade while your real weapon is something else entirely, like a sword. - Counter Attack gives a chance to strike back automatically whenever your current opponent lands a hit on you.
- Boomerang, the class’s capstone ability, gives a landed throw a chance to spin right back into your hand instead of leaving it behind at all.
- Ninja is a remort-only class (requires completing both Thief and Warrior first), and keeps the usual Thief-lineage kit – hide, sneak, dodge, pick lock, evasion, and the normal multi-attack ladder – alongside its own throwing kit.
New class: Shaman
- Shaman plants totems instead of casting spells directly. A totem sits in the room and ticks on its own every few seconds until it expires. Four totem families: healing totems restore everyone in the room, damage totems hit a single target (or the whole room, or a one-shot burst), protection totems grant a tiered damage reduction or resistance, and restorative totems cure poison/disease/curse (the strongest tier cures the whole room). Weapon totems buff the whole group’s melee damage instead.
- Spirits are a separate self-buff spell (not a totem) that adds bonus hp, and Shaman also has an affliction line for direct poison/ plague-style damage over time.
- Shaman is a remort-only class requiring a completed Cleric.
Breath spells (acid/fire/frost/gas/lightning) hit noticeably harder
- Dragon breath spells were landing well below Acid Blast despite using bigger damage dice. A 50% damage cut applied to all five breath spells back when they were essentially dragon-only content predated Wizard’s own “casts up” effective-level boost and flat 20% damage bonus – both of which apply equally to breath spells, but nobody revisited the old cut once Wizard’s other nukes (Acid Blast, Flare, Frostbite, Thunderbolt) picked up those bonuses without an equivalent reduction. Removed the leftover halving, so breath spells now land at parity with or above Acid Blast, matching their bigger dice size.
Illusion of Grandeur’s fatal expiry could leave you stuck at deeply negative hp forever
- Losing the buff below your original max hp was supposed to be dangerous – possibly fatal within a tick – but characters with any damage reduction (gear, Stone Skin, etc.) could sit at very negative hp indefinitely without ever dying. The self-inflicted “bleed” tick that’s supposed to finish the job was only ever 1 point of damage, and a flat damage-reduction stat was being applied to all incoming damage, including that tick – flooring it to 0 before it could ever trigger death. That self-bleed tick is now exempt from damage reduction, so the expiry danger works as intended again.
Inferno’s beast punishment could pile up multiple immune hunters at once
- Surviving or evading your first inferno beast didn’t stop later casts from summoning more of them – since the beast only despawns by landing a killing blow on you, a caster who kept casting Inferno while evading their existing beast could end up with several immune, unkillable hunters all chasing them simultaneously. Inferno now checks for an existing live beast already hunting the caster before summoning a new one, so at most one is ever active per caster. Also changed the “weak enough to trigger it” threshold from a flat 15-level gap to 50% of the caster’s own level, since a flat gap stopped meaning “weak” once casters reached high levels.
Racial flight (and other innate racial traits) no longer wears off
- Wyverns and other racial-flyers were losing their permanent flight and having to recast “fly” to get it back. Root cause wasn’t specific to flight – any temporary affect that shared a flag with a character’s own permanent racial trait (say, casting “fly” on a wyvern who already flies innately) would strip that flag entirely once the temporary affect wore off, since the two were sharing the same underlying bit with no way to tell them apart. Fixed generally for all innate racial traits (flight, immunities, resistances, vulnerabilities), not just flying.
Blink now actually gets you out of a fight
- Blinking away mid-combat left you (and your opponent) still flagged as fighting each other, even though you’d just teleported rooms away. It now properly disengages both sides, so blink works as the escape option it’s supposed to be.
Several racial abilities were silently unlearnable for Illusionists
- Fire dragon Illusionists couldn’t get third attack or
berserk, Mithril dragon Illusionists couldn’t get magnified damage, Elf
Illusionists couldn’t get hide – and the same gap affected several other
race/ability combinations (dwarf, giant, swamp/arctic/storm
dragon, yeti, imp, dark elf, kender, and more). When Illusionist was
added as a class, a handful of universal race-granted abilities got left
off its access list by mistake. Fixed for
bash,berserk,bite,evasion,hide,kick,magnified damage,sneak, andthird attack.
Character creation: stopping customization early is more rewarding, but no longer a shortcut
- Stopping customization (or a remort) below the full 40 points now banks the full unspent difference as immediate training sessions (previously only about half). Stop at 37 points, get 3 trains; stop at 10, get 30.
- To keep this from being a way to get a permanently cheaper exp-per-level curve on top of the free trains, your creation points are now normalized to 40 either way – the trains are the reward for stopping early, not a lighter long-term exp cost.
Economy rebalance: Divided Souls, Drakyri Isle, Olympus, and Dragon Tower
- Mob gold drops and item sell values in the four above-level-50 custom areas were wildly inconsistent with each other – Drakyri Isle’s mobs were paying out roughly 3x what their level should earn, while Dragon Tower’s and Olympus’s mobs were paying out almost nothing for the hardest content in the game, and Divided Souls’ items were worth a fraction of what comparable-level gear should sell for. All four areas have been rebalanced against the same level-vs-value trend the rest of the game follows: Drakyri’s gold drops came down, while Divided Souls’, Olympus’s, and Dragon Tower’s gold income and Divided Souls’ item values went up significantly.
Illusionary guardian: real hp, and it actually goes away now
- Fixed: the guardian’s hp was calibrated against the wrong numbers, landing it at roughly 1/4 of what it was supposed to match. Live report: a level-73 Illusionist’s guardian rolled ~3000 hp, far below what a same-level real pet has. Root cause – the guardian was meant to match the real purchasable Divided Souls pets, but the last fix for this assumed those pets used a random formula instead of their actual listed stats, so it was matching a number that was never their real hp. Refit directly against the 16 real pets’ own numbers; a level-73 guardian now averages ~13000 hp instead of ~3500, in line with a same-level pet.
- Fixed: the guardian could linger around forever after its magic should have ended. It now actually dissolves once it loses its master – whether that’s its timer running out or its summoner dying – instead of sticking around as an ownerless spirit.
Healer’s cancellation service actually works now
- The “cancel” purchase at any healer was silently failing
every single time, while still charging you.
cancellationrefuses to work when cast by an NPC on a player (by design, it’s meant to be self/group-cast) – so a healer “casting” it on you always bounced off that check with “You failed, try dispel magic,” charged the gold anyway, and did nothing. The purchase is still labeled “cancellation,” but the healer now actually casts dispel magic instead, which does the same buff-stripping job without that restriction.
Samurai grip stance now survives logging out
- Set your two-handed grip, log out, log back in – you’d always be back in dual-wield stance regardless of what you’d set. The grip toggle was never saved to your character file. Fixed; your stance now persists across sessions like everything else.
Permanently-hidden mobs (Laerkai Master and similar) are killable again
- Real bug from the hide rework: some mobs could never be
damaged at all. Live report: the Laerkai Master went from an
easy fight at level 105 to unkillable at 110. Root cause – mobs with
hide built directly into their stats (rather than a temporary cast)
never actually cleared it when “spotted”: the reveal code was only ever
clearing the temporary version of hide, so the spot check could
“succeed” every round forever and nothing changed – meaning nobody
without detect hidden could land a single point of damage on them, ever.
Fixed so a spot check that succeeds actually reveals a
permanently-hidden mob too, same as it already did for a player’s own
hideskill. The same gap existed in thefaerie fogreveal spell and thevisiblecommand – fixed there too.
New Thief skill:
circlestab
- A lesser cousin of
backstab. Same setup (you can’t already be fighting, need a weapon wielded, target can’t already be badly hurt) but the hit chance is dex- and skill-based rather than a flat skill roll, and a landed hit only deals half of what backstab’s own damage multiplier would. Fail the roll and you get “you fail to sneak around them” instead of a free opener. Added to the Thief default skill bundle alongside backstab.
Gear can push stats above 25 again
- Fixed: high-max races (Djinni especially) had zero real headroom above their trainable stat cap, even with strong gear. The absolute stat ceiling and training cap were both hardcoded at 25 – fine for most races, but a race+class combo that already reached 25 through training alone (e.g. a Djinni Wizard’s Intelligence) had nowhere left to go, so equipping +INT gear visibly did nothing. Ceiling raised 25 -> 30 so gear has real room to push a stat past what training alone can reach.
Dispel magic now respects counterspell
- Counterspell wasn’t blocking dispel magic. Every other harmful spell counterspell is supposed to ward against (curses, poison, plague, direct-damage nukes) went through one of two central choke points that already check for it – dispel magic is a buff-stripping spell that never touched either one, so it was quietly bypassing an active counterspell ward. Fixed; dispel magic now consumes/blocks the same as everything else it should.
You can talk while dying
- Mortally wounded or incapacitated characters can now use channels (tell, gossip, gtell, clantalk, auction, music, question, answer, shout) – previously blocked entirely, same as any other command, even though you’re not doing anything physical to call for help. Movement, combat, and item commands are still blocked as normal at that position.
Small area fixes
- Two Draconia rooms had incomplete room-flag data (a missing “no-mob”/“indoors” style flag each); a Drakyri warp pill’s healing effect pointed at the wrong internal spell slot and wasn’t actually granting haste like its description promises. All three fixed.
Berserker:
melee skill now does something
meleewas a purchasable Berserker skill that had zero effect since it was added – now it actually does what its name implies. When someone who isn’t the mob you’re currently fighting lands a hit on you (the classic “walked into a room with 5 aggro mobs, fighting one of them, the other 4 are also swinging”)meleenow gives you a chance to strike back at that specific attacker, separate from your main fight. Doesn’t react to spell damage, only physical hits. The retaliation strike can hurt but can’t land a killing blow on its own – the actual finish still has to come from your normal turn.
Wizard
gets its own basics group – blink is now guaranteed
- Wizard was the only class in the game reusing another
class’s “basics” group instead of having its own – it shared
Mage’s, which meant anything Wizard-specific either had to leak onto
Mage too or live behind an optional purchase. Wizard now has its own
wizard basicsgroup, andblinkmoves into it as a free, guaranteed skill instead of a 40-point purchase insidewizard arcana. Existing Wizards need their save file updated to pick this up (group grants aren’t retroactive) – Charrel’s has been patched; reach out if you’re a Wizard and don’t seeblinkin your skill list yet.
Vorpal blade – fixed for real this time
- The previous vorpal fix (below) shipped broken: the proc
message fired but the kill didn’t land. Live report: “the
vorpal triggered but it didn’t kill the mob/end the fight.” Root cause –
damage()has an unconditional diminishing-returns curve that compresses any large damage number down toward a fixed ceiling regardless of source, so passing a huge “guaranteed lethal” number got crushed to a fraction of itself against a tanky target. Fixed by not fighting that curve at all: the proc now drops the victim to 1 hp directly and deals a trivial 1 point of damage, which is too small for the curve to touch and still finishes the kill through the normal death pipeline. Something immune or resistant to slashing still shrugs it off exactly as before.
Vorpal blade – now actually a vorpal weapon
- The 3%-per-hit proc on a vorpal-enchanted weapon is now a real instant kill (decapitation), not a bonus-damage hit. This shipped earlier as a rare heavy-damage proc since the only source at the time was a player’s own uncertain secondhand memory of the spell. Directly confirmed since: “vorpal instantly kills by decapitation. the mob’s head drops and you get the exp for the kill, like a normal kill.” It now goes through the exact same kill pipeline as any other lethal hit – normal exp, normal corpse, normal death message – just guaranteed fatal regardless of the target’s remaining hp. Something immune or resistant to slashing damage still shrugs it off like it would any other slash, same as before.
Berserker bloodlust – incoming damage reduction halved again
- Cut the “damage taken” side of Berserk bloodlust by another
50%. Live tester report: a badly hurt Berserker (around 40% hp
and below) was taking so little damage it felt unkillable – could tank a
high-level mob at low hp and just not get hit (spells/debuffs like
blind/plague/curse/weaken still landed fine, just melee damage barely
registered). The outgoing side (“+X% damage dealt” when you’re the one
hurt and swinging) is untouched – hitting harder while wounded wasn’t
the complaint, surviving was.
scorenow shows the two sides separately reflecting this (e.g. “+75% damage dealt, -37% damage taken” instead of the same number on both).
Wizard “casts up” – now applies everywhere, not just resist rolls
- Wizard’s 1.5x-1.25x effective-level boost now applies to
everything a spell does, not just whether it lands. Previously
it only nudged the save roll on damage spells
(
wizard_saves_spell) – dispel magic/ cancellation/undo’s own resist roll never got it at all (a level-59 Wizard trying to dispel a permanent buff off an 84th-level target was stuck at a 95% resist chance no matter what), and damage dice/buff duration/magnitude were explicitly left untouched. Now the boosted level is computed once, centrally, and handed to every Wizard spell uniformly – bigger damage numbers, longer/stronger buffs, and (through the exact same mechanism, no separate fix needed) a real shot at dispelling something well above your level. Verified live: a level-59 Wizard’ssanctuarylanded with an affect level of 89 (the boosted value) and a matching 14-hour duration, instead of the unboosted level 59’s ~9 hours. flare/frostbite/thunderboltreverted to the same dice size as the spells they’re variants of (was hand-tuned slightly higher to compensate for Wizard scaling weakness – now redundant and would’ve double-counted against the fix above). The AoE quartet (forcewave/acid spray/blizzard/firestorm) keeps its own higher dice – that bump is for a different, unrelated reason (AoE should hit harder per target than a single-target nuke) and was left alone.
Immortals (follow-up)
- Fixed immortals losing concentration on every cast of a
spell disabled for their class. The class/level gate bypass
from Build 213 fixed
do_cast’s own refusal, but missed thatget_skill()– used for the actual success roll – has its own independent level check, so the cast still always rolled a 0% chance to land. Also swept the same duplicated level check in every combat skill that had one (berserk,grip,whirlwind,bash,dirt kick,trip,kick,bite,hunt,scribe) plus thepracticelisting, so immortals can actually use everything they can now see, not just attempt and fail it. Found and fixed after granting ClaudeCode every skill/spell and testing it live.
Equipment
- Now hides empty slots that are currently impossible to equip
anything into, instead of always listing them as “Nothing.”: no
dual wield skill, or a two-handed grip active, or a shield already worn
all hide the off-hand weapon slot; a two-handed grip, or an off-hand
weapon already wielded, both hide the shield slot. Mirrors the exact
rules
wield/wear shieldalready enforce, so a slot is only ever hidden when actually trying to use it right now would be refused. A slot with something genuinely equipped in it is always shown regardless of these rules.
Spellup
- Now supports skills, not just spells
(e.g.
spellup set armor, berserk). A skill is activated by running the matching command directly (same as typing it yourself), and only supports targeting yourself – there’s no way to activate a skill on someone else. spellup shownow always lists your full considered pool (default or custom), marking anything already active with “(active)”, instead of silently filtering active ones out. It used to look like a narrower “what you’re missing” list, which made it confusing to use as a reference when customizing withspellup set. Only the actual cast/activate pass still figures out what’s missing and skips the rest.
Wizard (spelldown)
- Rescaled the effective-casting-level curve that makes Wizard’s damage spells land more reliably. Per Charrel (public droplet): flat 1.5x through level 100, then sliding down to 1.25x by level 300, holding flat at 1.25x beyond that – replacing the previous 1-70 descent. Deliberately built out to a 300-level horizon even though the level cap is still 140 today, per explicit request (“I know there aren’t even 300 levels yet but let’s build for the future”). At today’s cap this mostly just means the 1.5x plateau now extends much further (through level 100 instead of leveling off by 70), with only a shallow start of the eventual descent visible before level 140.
Stat training caps (every class)
- Fixed the trainable stat cap and the gear-inclusive
current-stat ceiling both using a stale, inconsistent formula.
Reported 2026-08-19 as a Djinni Wizard issue (“stats seem broken, and
int never moves no matter what gear I wear”), but the root cause hits
every class:
get_max_train/get_curr_stat(handler.c) still used an old flat “+2/+3 if this is your class’s prime stat” approximation for the training ceiling, while the real, fully-implemented per-class deltas (class_table[].stat_bonus, e.g. Wizard’s -1 str / +3 int / +2 wis / -1 con) only ever applied once, at chargen/remort time – they never fed into the ongoing training cap or the current- stat ceiling at all. So a class’s non-prime stats trained up to the race’s raw max as if the class had no penalty/bonus there, and a prime stat that already sat at the universal 25 cap (common for INT-primary casters on a high-INT race) could never visibly move with gear regardless of formula, since 25 is the hard ceiling either way. Both formulas now use the real per-class deltas. Verified live: a Djinni Wizard’s current stats now land at 24/25/ 25/24/23 (str/int/wis/dex/con) instead of ignoring the class’s stat deltas entirely.
Djinni
- Fixed the racial “illusion” group grant never actually working. Reported 2026-08-19: Djinni was supposed to get the whole “illusion” group (invisibility, mass invis, ventriloquate) for free as a racial bonus, alongside “illusion of grandeur” – but only the latter was ever actually granted. Root cause: skill/group name resolution matches by prefix, and “illusion” is a prefix of the skill name “illusion of grandeur”, so it always got intercepted as that skill before the group lookup ever ran. Fixed at the shared resolver level (skills.c’s group_add/group_remove now require an exact match before treating a name as a skill, falling through to the group check otherwise), so this class of bug can’t recur elsewhere the same way. Verified live: a Djinni now actually knows invisibility/mass invis/ ventriloquate, not just illusion of grandeur.
Illusion of grandeur (spell)
- Now dispellable (dispel magic, cancellation, undo) like any other buff. It was simply missing from those spells’ whitelists, so it survived a dispel sweep that stripped everything else – confirmed 2026-08-19 by a player directly. Useful for arena-style PvP once that’s back, where being able to dispel a bloated hp pool actually matters.
- Dispelling it now correctly reverses current hp too, not just max hp. Its hp bonus is applied in two places at cast time (max hp via the normal affect system, current hp via a direct bump, since the affect system only ever touches max hp) – an early dispel now reverses both symmetrically, clamped so it can never drop you below 1 hp. (Letting the buff run out naturally is still the more dangerous way for it to end – that path can knock you into mortal peril if you’re low, unchanged.)
Wizard (combat2)
- Flare, frostbite, thunderbolt, acid spray, blizzard, and firestorm no longer damage or destroy equipment. These six were calling the same fire/cold/acid/shock “effect” functions dragon breath weapons use, which carry a chance to blind and to burn/melt/corrode gear on the target. That destructive side effect belongs to breath weapons, not Wizard’s elemental nukes – damage output is unchanged, just the equipment-damage/blindness side effect is gone. (Forcewave already didn’t have this, since it’s bash damage, not elemental.)
Blink (spell)
- Rewrote Wizard’s “blink” to match the real spell.
The previous implementation was this codebase’s own unconfirmed
invention – a random-direction, combat-only escape. The actual spell
(confirmed by a player directly, 2026-08-19):
cast blink <direction>travels a deterministic number of rooms that way (2-3 at level 15, up to ~10 at high level – the same distance every time at a given level, so blinking back the opposite direction returns you exactly as far), usable any time, and passes straight through closed/locked doors and rivers instead of being stopped by them. If you’re already hidden when you blink, you stay hidden – no “vanishes”/“appears” message gives you away either. - “blink step” (Scribe/Illusionist) now shares this same corrected mechanic. It was added in an earlier session modeling this exact spell under a different name (to avoid colliding with Wizard’s old “blink”), but with a guessed hop count and no door/river bypass. Both spells now use the same underlying logic.
Immortals
- Immortals now bypass the class/level gate on skills and
spells entirely. Previously,
set skill <name> all 100only set the learned percentage — it couldn’t get aroundskill_level[class]being 200 (disabled) for the vast majority of entries for any given class, so most skills/spells stayed permanently unusable and invisible inskills/spellsno matter how high the percentage was set. Immortals (trust >= 132) now see and cancast/use every skill and spell in the game once it’s set to a nonzero percentage, regardless of their own class. Entries beyond a class’s normal reach still show “n/a” instead of a mana cost in the listing (the character’s real level genuinely doesn’t reach the spell’s native level), but they’re fully castable.
Damage (anti-cheat cap)
- Fixed the “You really shouldn’t cheat” false positive that was destroying legitimately-earned weapons. The safety-net cap that flags suspiciously high single-hit damage and destroys the offending weapon was still using stock ROM’s original 1200 threshold, tuned for a level-60 damage ceiling — it was never rescaled when this server’s level cap went to 140, so an ordinary top-end hit (dual wield, whirlwind, berserk, samurai grip, stacked together) could trip it on totally legitimate gear. Rescaled to 2800 using the same 140/60 ratio already used for the nearby damage-reduction breakpoints.
Illusionist
- Opened
gate(40),illusionary guardian(65), andrace(39) for Illusionist. All three now sit in the “illusion2” group alongside the class’s other later-added spells, so buying that group and hitting the level actually makes them usable. Reverses an earlier “not in the confirmed dump, deliberately left unlearnable” call on illusionary guardian specifically.
Illusion of grandeur (spell)
- Mage and Wizard now open it 2 levels after their own
sanctuarylevel (level 38 for both), instead of Wizard’s old Scribe-matched level 81 and Mage’s previous unlearnable 200. Mostly matters for djinni of either class, since it’s granted racially — this just moves when that grant actually becomes usable.
Spellup (new command)
- New
spellup [target]command spells up you (or someone else) in one go. Attempts every known spell from a default beneficial pool — armor, protection evil/good, sanctuary, shield, stone skin, giant strength, haste, infravision — casting each once on the target (yourself by default). Failures and lost concentration show up per spell, same as a normalcast. spellup showlists which spells it would actually attempt, filtered to ones you currently know and don’t already have active — anything already up on you is skipped rather than wastefully re-cast.spellup set <spell>, <spell>, ...replaces the default pool with your own comma-separated list (persists on your pfile);spellup setwith no arguments reverts to the default pool.- The wait-state after a spellup burst is deliberately short — much shorter than any single one of those spells’ normal post-cast delay — so spelling up doesn’t leave you standing around afterward the way casting each spell individually would.
- Added a
help spellupentry.
Help
- Added a
help gripentry. The Samurai and grip help text already pointed players athelp gripfor details, but the entry itself didn’t exist. It now explains the two-handed grip tradeoff and the shield/ off-hand weapon restrictions.
Equipment
equipmentnow shows every wear slot, not just filled ones. A naked (or nearly naked) character used to just get a single “Nothing.” with no indication of what slots even exist. Every slot now always prints — either what’s worn there, or “Nothing.” — so you can see your whole loadout, gaps included, at a glance.
Samurai (grip)
- Two-handed grip and a shield/off-hand weapon are now mutually exclusive, in both directions. You can’t switch to a two-handed grip while carrying a shield or an off-hand weapon (same reasoning as never being able to equip a second weapon while gripped), and you now can’t wear a shield or wield a second weapon while already gripped, either. Both directions warn and refuse instead of silently letting an impossible combination through.
Renewal (spell)
- Reverted the earlier same-day change blocking it mid-combat. Renewal can be cast on (or by) a fighting target again.
Inferno (spell)
- Fixed ordinary mobs hunting you forever after you died to them. Anything inferno’s blast hit and didn’t kill starts hunting the caster down — that’s intended. But if the caster died before finishing them off, that grudge never got cleared, so those mobs would keep hunting into the caster’s post-death respawn room and attack them there, indefinitely. That relentless “finds you no matter what” behavior was only ever meant to belong to the actual inferno beast; everyone else now properly loses interest once you die, the same as normal aggro would.
Whirlwind
- Now hits more than once per target, scaling with skill. Used to be a single swing at everyone in the room regardless of skill; now it’s 1 hit per target at low-to-mid skill, 2 somewhere in the middle, and up to 3 at 100%.
- Dual wield can now trigger on every one of those swings. If you’re wielding a weapon in each hand, each whirlwind swing gets its own shot at landing a bonus off-hand hit, same as it already works on a normal attack.
Berserker
- Cut the unarmored damage reduction in half. Ditching armor scales up a Berserker’s hit/damroll AND how much incoming damage they shrug off, and the damage-taken side of that was hitting a little too hard. Halved just that side — the attack bonus (hitroll/ damroll, and score’s own display of it) is unchanged.
Renewal (spell)
- Restored curing blindness, poison, and disease. It used to strip these along with its full hp/mana/move restore; that part had quietly stopped happening. Fixed — casting it now clears all three again, unconditionally (no save roll), on top of the full restore.
- Fixed it being castable on a target who’s actively fighting. A caster standing safely outside a fight could still use it on a fighting ally, turning an extremely expensive (500 mana + 25% of the caster’s own hp) rare-recovery ritual into a free mid-combat panic button. It now refuses if the target is fighting, regardless of whether the caster themselves is.
Soul kiss (spell)
- Fixed it flooding
affectswith duplicate entries. Every cast used to lay down a brand new set of 3 affects side by side instead of strengthening the existing ones, so casting it repeatedly left a wall of near-identical “Spell: soul kiss” lines instead of one. It now merges into a single combined entry — recasting still stacks the same way it always has (another -100 hp / +10 hit / +10 dam, another hour added to the duration), it just does it in place instead of piling up new copies, andaffectsshows exactly one summarized line for it no matter how many times it’s been cast.
Illusionary guardian (spell)
- Fixed its hp still being way too low. An earlier pass fit its hp to low-level (1-20) pet-shop animals, but checked against the real, purchasable Divided Souls pets (level 40-100) it was still badly short — only ~54% of a real level-40 pet’s hp, dropping to ~26% by level 100. Rather than another approximation, the guardian now uses the exact same hp formula every other mob of its kind in the game already computes its own hp with, so a summoned guardian draws from the identical hp range a same-level Divided Souls pet does.
Illusion of grandeur (spell)
- Fixed it being castable on other people. It’s meant to be self-only, and casting it live already enforced that — but reciting it from a scroll (or using it from a wand, staff, or potion) skipped the check entirely, so it could be used on someone else through any of those.
- Now doubles current hp, not just max hp. It always doubled your maximum; current hp was left untouched, so you didn’t actually feel any bigger until you took damage. Both double now, together.
Takklemaggot (spell)
- Shortened its duration to a few ticks and made it uncurable. It used to last as long as every other maladiction (scaling with the caster’s level, so a high-level cast could linger for a long time) and was removable the same way any other affliction is. Now it’s a short, sharp outbreak — a handful of ticks, no more — but nothing removes it early. You just have to ride it out.
- Fixed the disease’s escalation and contagion never actually running. Its own skill-table entry never registered a real identifier, so the tick logic responsible for it worsening over time and spreading to others in the room was silently dead code since the day it was written — it now genuinely does both.
- Fixed a duplicate-infection bug on reconnect. A carrier who logged out and back in could catch a second, independent copy of the disease from themselves the moment they reappeared in the world, stacking two active infections at once instead of the “already afflicted” refusal that’s supposed to prevent that.
Soul kiss (spell)
- Fixed soul kiss being able to kill you passively, outside of combat. Each cast stacks another -100 max hit with no floor; once max hit dropped to 0 or below, the next regen tick would set your current hp straight to that negative number with no warning and no fight involved. The spell now refuses to cast (with flavor text) if it would push max hit below 1, instead of ever letting it happen.
Skill/spell audit (droplet-wide)
- Fixed four more “known but permanently unusable” skill bugs, found by auditing every character on the live server against the skill and group tables: Illusionist could buy the “protective” group but armor/fireproof/sanctuary/stone skin were dead the moment they did; Warrior could buy “benedictions” but remove alignment/remove invisible were dead the same way; change sex (bundled in “maladictions”) was dead for every class except Scribe, along with blindness/curse/slow/weaken specifically for Illusionist; and Djinni’s own racial “illusion of grandeur” grant was dead for Wizard. All opened to real, usable levels.
Fear (spell)
- Fixed fear occasionally turning its target to stone. The affect bitvector field was a 32-bit int, but the flag fear sets doesn’t fit in one — it overflowed to a negative number that, once folded into a character’s wider affect flags, also lit up petrification and link as a side effect. Widened the field (and its save/load path) to fix it; fear now only ever does the one thing it’s supposed to.
Samurai
- Fixed a leftover from the “protective” group fix above: dispel magic, fireproof, and stone skin were learnable for Samurai but had a practice cost of 0, which would have crashed practice the first time a Samurai tried to train one. Corrected to match Warrior’s cost.
Monk
- Fixed the scrolls skill being unlearnable — every other class had it, Monk alone was silently blocked with nothing to grant it anyway. Added to Monk’s own starter skills, so scrolls are readable again.
Yeti
- Fixed the racial kick skill actually being usable. Yeti has always granted kick regardless of class, but Mage/Berserker/Wizard/ Scribe/Samurai couldn’t actually use or see it once granted — a yeti of any of those classes now gets a real, usable kick, matching how Giant’s racial bash already works for every class.
Samurai
- Opened the “protective” group (armor, cancellation, dispel magic, fireproof, protection evil/good, sanctuary, shield, stone skin) — several of these already had real Samurai levels set with no way to actually gain them from a guildmaster.
Berserker
- New passive: bloodlust. The more hurt a Berserker
is, the harder they hit and the less damage they take — 0% at full HP,
ramping up to +75% damage dealt / -75% damage taken once HP drops to 20%
or below. Shown on
scoreas “Berserk bloodlust.”
Wizard
- Re-leveled the whole spell list to match the real historical
data (
fiend wizard.doc) — most shared spells were unlocking 1-3 levels earlier than they should, and a few (Weaken, Sanctuary, Nexus, Inferno) were off by a lot more. Also corrected mana costs on every Wizard-exclusive spell (Blink, Flare, Frostbite, Thunderbolt, Counterspell, Forcewave, Acid Spray, Blizzard, Firestorm, Deflection). - New spell:
undo. Removes exactly one named buff from yourself (cast undo armor), instead of Cancellation’s strip-everything. - No longer gets enhanced damage, hand to hand, second attack, fast healing, peek, or pick lock, and is restricted to dagger among weapon skills.
Berserker
- Can no longer be spelled up by anyone or anything — not by another caster, a potion, a pill, a wand, or a staff — except curatives (healing, disease/poison/blindness cures, curse removal). Offensive magic is unaffected.
Healer
- Now casts sold spells at full power (was capped well below max).
Djinni
- Fixed race base stats — Int/Wis/Con were significantly too high. The numbers had been sourced from one trained Djinni Mage’s own score sheet instead of the actual race table, so they included that character’s class bonus and spent trains baked in as if they were the race’s raw starting point. New Djinni characters now start from the correct base. Existing Djinni characters had their earned training preserved and rebuilt on the corrected base rather than a flat stat cut.
Damage Reduction
- New stat:
scorenow shows a Damage Reduction line, the same way it already shows Hitroll/Damroll. Equipment and spells can grant it directly (area builders:apply damagereductionin oedit), and everything that grants it stacks together automatically. - Stone Skin now grants this stat directly instead of its own
behind-the-scenes math — same numbers as before, now visible on
scoreand listed properly underaffects(was showing up as “(unknown)”). - Berserker’s unarmored bonus (below) stacks into this same number.
Berserker
- The unarmored-combat bonus now actually shows up in
score, as a “Berserk unarmored bonus” line that moves live as you strip gear, so you can see and tune it instead of guessing. - Fixed the to-hit half of that bonus running hotter than the damage half for well-trained fighters — they now move together, exactly 9 hitroll/damroll per empty armor slot at level 73 (scales with level).
- Being unarmored now also reduces damage you take, not just boosts your own hit/damage — same per-slot number, all three move together and show up in the new Damage Reduction stat above.
Scribe
- Fixed Gate/Nexus (and other world-target spells like Locate Object) being unusable from a scroll — for real this time. The previous fix in this section only got it partway there: reciting still silently failed for anyone not standing in your room. Verified live: Scribes can now actually gate/nexus/locate to a target anywhere, same as casting it directly.
Whirlwind
- No longer requires an existing target — you can use it without already being locked into combat, and it now hits everyone in the room (still respecting the usual protections — safe rooms, NPC shopkeepers/trainers/healers, pets, and PVP rules).
- No longer costs mana. Kick, Bite, Bash, and Trip were already free — Whirlwind was the odd one out.
Illusionary Guardian
- Fixed way-too-low HP at higher levels. The old formula was just a guess with no real data behind it. Replaced with a formula fitted to every real pet actually placed in the game (the pet-shop animals across several areas) — it undershot by a growing amount as level went up, off by roughly 180 hp by the high end of the level range.
Healer
- Healers now sell cancellation for a flat 1 gold —
type
heal cancel. Note this strips your own beneficial buffs (armor, bless, shield, sanctuary, etc.), not a curative effect — useful if you want to clear your own buffs before re-stacking them or heading into a specific fight.
Wizard
- Wizard’s damage spells could barely land on anything above your own level. The math got so punishing at a big enough level gap that success rates against tougher enemies dropped to single digits, even with Wizard’s existing casting bonus. Now Wizard’s success chance is based on the target’s own saves instead of the level gap: about 95% against a normal target, about 70% against one with genuinely good saves, regardless of how far above you they are.
- Wizard now hits 20% harder than a Mage casting the same spell at the same level and proficiency.
- Wizard can no longer cast helpful spells (armor, bless, shield, sanctuary, etc.) on other players, including your own group — self-casting and buffing mobs/pets still work normally.
Soul Kiss
- Fixed stacking. Recasting while already active only extended the duration before — now every cast also stacks another -100hp/+10hit/+10dam on top, same as it always should have, plus still adding an hour to the duration on every cast after the first.
Samurai
- Fixed second attack being completely unavailable. It’s meant to be a free starter skill alongside your sword, not something you’d need to buy or train — you’ll have it from level 5 on.
- Fixed third attack unlocking way too early. It was sitting at level 1 instead of its real level, 12.
Inferno
- Fixed the inferno beast punishment triggering on almost every cast. It’s meant to be a rare consequence of nuking prey far below your level, not a near-guarantee — the chance was being rolled separately for every weak target caught in the blast instead of once per cast, so splashing a room full of them made it fire almost every time.
- The beast now despawns once it kills you. Previously it hunted forever, even across recalls and safe rooms. Once it’s done its job, it’s done.
Wizard
- Wizard now gets “combat2”/“protection2” instead of “combat”/ “protective”. Same prices (6cp/4cp), but bundled in with Wizard’s own exclusive spells that used to be locked behind a separate 40cp purchase: combat2 adds Flare, Frostbite, Thunderbolt, Forcewave, Acid Spray, Blizzard, and Firestorm; protection2 adds Counterspell and Deflection.
- Flare and Frostbite actually hit harder than Acid Blast now, matching Thunderbolt — previously identical damage, no bonus at all.
- Forcewave, Acid Spray, Blizzard, and Firestorm hit much harder. These area-effect spells were doing roughly a fifth of Acid Blast’s damage per target; now each one averages about 1.3x Acid Blast, making them genuine capstone nukes instead of an afterthought.
- Counterspell and Deflection are castable in combat now — both were silently blocked from being cast while fighting. Counterspell also now blocks any incoming spell, not just curses/poison/plague- type effects. Deflection’s actual effect was fixed too: it now reflects the incoming spell back at whoever cast it, instead of just absorbing it like Counterspell does. With both active, the first spell that hits you gets reflected and the next gets absorbed.
Monk
- Fixed “harmful” costing points for nothing — same issue as “creation” below, every spell in it was silently unlearnable for Monk. There’s no real data for what level Monk should get these at, so it’s blocked from purchase entirely rather than left as a paid-for dead end. If you already bought it, we’ll clean up your character and refund the points.
- “creation” replaced with “life” (Renewal). Turns out “creation” really was on offer during customization, but a closer look showed it never actually granted anything either way — so instead of just blocking it, we tracked down what it should have been. Comparing a real Monk’s known spells against every group Monk has access to left exactly one unaccounted-for spell: Renewal (level 40), which only ever lives in a group called “life.” Monk now gets that instead, for the same points “creation” used to cost.
Gargoyle
- Fixed Gargoyles turning to stone indoors. The petrify-in-sunlight mechanic itself was working correctly — it only turns you to stone outdoors — but a lot of rooms that are clearly indoors (houses, cellars, attics, temple chambers, gatehouses, tunnels) had never been tagged as indoors in the area data, since that flag barely mattered before Gargoyles existed. 74 rooms across 20 areas fixed.
Remort
- Fixed a real character-corruption bug. Losing your connection mid-remort (during the sex/alignment/customize/weapon walk) and reconnecting used to drop you straight into the game with your race and class already changed but nothing else reset — no level reset, no stat reset, none of the actual remort finalization. Reconnecting now correctly falls back to your real last-saved identity instead (including reverting an abandoned remort if you hadn’t reached level 5 yet).
- You can now remort into the exact same race/class combo you’re already playing — previously blocked outright, now a legitimate way to redo your customization/skill picks from scratch.
Samurai
- Fixed six missing customization options. Disarm, Enhanced Damage, Parry, Rescue, Fourth Attack, and Fifth Attack were all silently blocked for Samurai despite being real, intended options — a player-provided cost table confirmed all six should be purchasable. (Enhanced Damage and Swordsmanship already stacked correctly in the damage math — Samurai just never had access to Enhanced Damage to begin with.)
- Fixed the rest of the Samurai customization list to match the real cost table. Berserk, Dodge, Magnified Damage, Third Attack, Dual Wield, Swordsmanship, Fast Healing, Haggle, and Sixth Attack now cost exactly what they should, and Armor, Cancellation, Faerie Fog, Protection Evil, Protection Good, Sanctuary, and Shield are now each individually purchasable (previously only reachable bundled in the flat “samurai default” package).
- Fixed a real bug along the way: typing
add berserkwas resolving to the unrelated “berserker basics” group instead of the Berserk skill itself (both start with “berserk”), so it printed “That group is not available” even when Berserk was open and costed. The underlying name-resolution bug affected any class trying to buy a skill whose name is a prefix of an unrelated group’s name — fixed generally, not just for Samurai.
Character creation
- You can now finish customization (
done) having picked nothing at all, same as declining customize entirely already worked. Previously this was blocked with “You didn’t pick anything.” — now it lands you in-game at the minimum creation points, with training sessions awarded accordingly so you can still raise skills later without it touching your locked-in exp/level.
Help catch-up
help monkandhelp illusionistdidn’t exist at all — added.help gargoyleandhelp djinnididn’t exist either — added.help class/help raceand the mainhelp remortpage now list Monk, Illusionist, Gargoyle, and Djinni (previously missing from all of them) along with their unlock requirements.- Fixed a stale “2200 exp/level” in
help dragons— the real number- was corrected in the code a while back but never made it into the help text.
Djinni
- Djinni’s exp/level set to 1700 (was 1000).
Beast
- Beast’s exp/level set to 850 (was 1000).
Locker, ownership fix
- Fixed anyone being able to take items out of someone else’s locker. Ownership was being checked by looking for the owner in the list of currently-connected players — if they simply weren’t online at that moment (true for most players most of the time), the game treated the item as unowned and let anyone take it. Locker items are now protected by their stored owner regardless of whether that player happens to be logged in.
Hide, one more fix
- Casting a non-damaging offensive spell (dispel magic, curse, faerie fire, and the like) on a mob while hidden was still starting combat even when unspotted — a separate, pre-existing “the target retaliates” mechanic never checked hide at all. Now it does: staying hidden and unspotted means these spells land with no fight starting, matching how damaging spells and skills already worked.
Dragons
- Swamp Dragon gets acid breath again, alongside its gas breath — an earlier fix had moved it to Mithril Dragon entirely instead of just adding it there, when both dragons actually have it.
Gain
- Restored
gain trains— the mirror image of the existinggain points. Takes on one creation point (raising your exp/level cost) in exchange for an extra train, right away. - Restored
gain hpandgain mana— spend a train for one bonus roll of your class’s own hp/mana growth (the same formula a real level-up already uses), so a Berserker gets a Berserker-sized bonus and a Wizard gets a Wizard-sized one automatically. help gainnow says “train”/“trains” throughout instead of “session”/“sessions”.
Hide, more fixes
- Fixed hide never actually showing up in
affects, no matter how many times you hid. Checkingaffects(orscore, orlook) was itself an “any other command” that broke hide immediately, before you ever saw it listed — the checks that were supposed to just let you glance at your own status were quietly costing you your hide the instant you looked. - Rebalanced the spot-check chance. It was landing near a guaranteed spot on the first cast against anything with decent intelligence, instead of the wide “sometimes immediate, sometimes 20 rounds” spread it’s supposed to have. Now clamped to a sane range regardless of build or opponent.
- Added a per-round automatic spot check on top of the existing per-cast one — you can now also get noticed just by continuing to fight while hidden, not only by casting something.
Locker
- Fixed items stored in the locker slowly decaying away. Anything with a decay timer (scrolls, corpses, other timed items) kept counting down while sitting in the locker, same as if it were lying on the ground — the exact opposite of what a locker’s for. Items stored in the locker (including nested inside a sub-container placed in it) are now fully exempt from decay.
- Fixed a related ordering bug where taking something out of the locker never actually re-saved the locker file afterward, only right before — a restart between then and your next unrelated locker visit could have duplicated the item you’d just withdrawn back into the locker.
Server
- Redeploys now save everyone gracefully instead of just
killing the process. There was no shutdown handler at all
before this — a restart could cut off anyone connected at that moment
mid-session, losing whatever hadn’t hit the last periodic autosave.
That’s what was behind a report of exp-to-level numbers looking wrong
right after a restart (it self-corrected because the underlying data was
fine — it was just a stale reload). A restart now saves and disconnects
every connected character cleanly first, same as an admin-issued
shutdown.
Monk
- Fixed Monks dealing near-zero weapon damage. Nothing stopped a Monk from wielding a weapon, but every weapon skill is (and always was) blocked for Monk — so wielding anything gave them 0% skill with it, silently throwing away their real, level-scaling unarmed damage. A live report of a Monk out-damaged by a Scribe’s weapon traced back to exactly this. Monks can no longer wield weapons at all; anyone already wielding one will have it moved to their inventory the next time they log in.
Mob condition colors
- The health-condition line (
look, and the same text elsewhere) is now colored, the whole line rather than just the status phrase. Worst to best: bleeding to death (dark grey), awful condition (dark red), pretty hurt (red), big nasty wounds (light purple), quite a few wounds (dark purple), small wounds and bruises (light blue), a few scratches (cyan), excellent condition (dark blue).
Scribe
- Scroll decay times doubled across all three tiers — thin scrolls now last 8-16 ticks (was 4-8), regular 24-40 (was 12-20), tough 60-100 (was 30-50).
New race: Djinni
- Added Djinni, a 23rd remort-only race (14 creation points). Str 14, Int 25, Wis 19, Dex 11, Con 20.
- Gets the whole
illusionspell group for free, plusillusion of grandeuras a racial spell — a bonus to hp equal to your own current max hp (gear and buffs included).
Fiend
- A Fiend whose alignment climbs above 0 now suffers for it: damage and a 50-point shove back toward evil every tick, until alignment drops back to 0 or below.
Geomantic (partial)
- Wired up “casts spells at half mana cost” as a racial mechanic, ready to go the moment the race itself gets built — still waiting on real base stats for Geomantic before it can be added as a playable race.
New race: Gargoyle
- Added Gargoyle, a 22nd remort-only race (3 creation points). Str 19(23), Int 16(20), Wis 15(19), Dex 15(18), Con 17(24), the magnified damage skill, resistance to weapons, and 1500 exp/level.
- New racial mechanic: a Gargoyle caught outdoors when a tick lands while the sun is up turns to stone. While petrified it can’t move or use most commands (recall, sneak, hide, say, etc.) — only channels (gossip, auction, clan, music, question, answer, shout) and tells/gtell still work. It also takes drastically reduced damage and regenerates hp/mana much faster while stone. It reverts back to normal the moment it’s indoors or the sun sets.
Inferno access corrected across classes
- Mage now gets
inferno(level 60) — checked against a real player data dump, it was missing entirely before. - Wizard gets
inferno(level 60) too, confirmed with an authoritative player check. - Scribe’s
inferno(level 63) was already correct — no change.
Hide reworked
- Hide now shows up in the
affectslist, like Sneak already did. It used to be a raw flag with no visible trace; it’s a real (permanent) affect now. - Hidden characters are ignored by mob AI, not just “can’t be seen while standing still”: no stealing from you, no random aggressive-mob attacks, and a mob that respawns into your room while you’re hidden won’t notice you either.
- You can use spells and skills on a mob while hidden without it fighting back, unless you’re spotted. Casting something like dispel magic, curse, or faerie fire on a mob no longer starts a fight at all unless you’re spotted the moment you cast it — repeatable indefinitely as long as you stay unspotted.
- A damaging skill or spell still starts a fight, but the mob can’t land anything on you while you’re hidden and unspotted — its physical attacks miss outright and its spells can’t connect either. Your own ordinary combat-round swings miss too while you’re still hidden; only a deliberate skill/spell/item use lands normally.
- Getting spotted reveals you — from then on you’re a normal, visible combatant.
- Using a scroll, wand, or staff while hidden works exactly like using a skill or spell directly — same spot-check, same rules.
Monk
- Fixed
dual wieldfor Monk. An earlier fix removed it entirely on a bad report; Monks are meant to have it, but the normal weapon-swap version of dual wield can never trigger for someone fighting bare- handed. Monk now gets a dedicated unarmed version instead: landing a hand-to-hand hit has a chance to earn one more immediate hand-to-hand attack, chaining a couple of times at most so it can’t run away. - Fixed Monk only ever receiving 5 of its 37 spells.
The “monk default” purchase bundle lists every skill/spell a Monk gets,
but an internal table size limit (
MAX_IN_GROUP) was smaller than the real list needed, so everything past the 25th entry was silently dropped at compile time — in practice this meantcure light,detect invis,armor,detect magic, anddetect goodwere the only spells a Monk ever actually received, no matter what remort customization showed. This is almost certainly why a freshly-remorted Monk looked like it “came with no spells.” Fixed by raising the table size; all 37 confirmed spells are now actually granted. - Wired in Monk’s full real spell list, confirmed from community data: Monk is a hybrid martial/magical class drawing on the same spell groups as Cleric (benedictions, creation, detection, harmful, healing, illusion, protective), but gated to later levels and not a 1:1 copy of Cleric’s own list.
- Monk’s remort customization now offers those 7 spell groups individually (at their own confirmed point costs), the same way Cleric’s does, instead of only offering one bundled “monk default” package — matches the source data’s own per-group cost table.
- Added two new Monk-exclusive spells from that same data:
protection hunger(level 4) andprotection thirst(level 7) — while active, being hungry or thirsty no longer slows your hp/mana/move regeneration. - Fixed dragon breath spells and
bite/evasionbeing unusable by a Monk of any dragon race — they were granted as “known” at remort but blocked from ever actually being cast. Also decided: a class that only has a breath spell because its race is a dragon (every class except Mage, which has its own real spellcasting progression for them) now needs level 50 to use it, not level 1. - Fixed Mithril Dragon never actually granting
acid breath— it had been misplaced into Swamp Dragon’s race-skill list instead (Swamp is poison-immune, a gas-breather; Mithril is acid-immune). Both fixed. - Fixed
magnified damage— same “granted as known but blocked from use” bug as the breath spells above — also unusable for a Mithril Dragon Monk despite being part of its racial kit. - Fixed
gain <skillname>at a trainer failing for any skill name that happens to be a literal prefix of a group name —berserk(the skill) was being intercepted byberserker basics/berserker default(the groups) and rejected as “beyond your powers” before the real skill was ever checked, even for a Monk who’d unlocked it. An exact skill-name match now always wins over a group prefix match. - Fixed a real, serious bug: a dropped connection in the middle of a
remort could corrupt the game’s internal character list and hang the
whole server at 100% CPU until restarted — likely the cause of an outage
tonight. Root cause was
close_socket()freeing a character’s memory without first unlinking it from the world, something remort made possible for the first time since it keeps a character “in the world” through several connection states that fresh character creation never reaches. Fixed and stress-tested.
Scribe
Scribes no longer cast spells directly. Their only path to using a spell is scribing it onto a scroll and reciting that scroll — casting it straight from memory is blocked with a flavor message, matching how the class is meant to work. Scribing and reciting themselves are untouched.
Full audit of Scribe’s spell list against real community data, fixing the level for 19 spells that had the wrong one, plus 4 spells that were at the right level but completely unreachable — a scroll- writing class doesn’t help if nothing ever actually grants the spell. One of those was a real pre-existing bug affecting every class with illusion-magic access, not just Scribe: a typo in an internal list meant
invisibilitywas silently never actually granted to anyone who bought that group, going back a while.Fixed a scribed scroll’s power being based on the level you first learned the spell at instead of your own current level — a high- level Scribe inscribing an early spell now gets a scroll as strong as they actually are.
Fixed a second, sneakier version of the “wrong scroll” bug above: scribing the same spell twice while carrying both a fresh blank scroll and one that already had a spell on it could silently add the second casting onto the existing scroll instead of starting a new one.
20 new Scribe spells added, reconstructed from a live player’s own memory of how they used to work (details necessarily approximate — vampiric blade, vorpal blade, false orders, stasis, drain life, wraith form, dark ritual, terror, kiss of death, soul kiss, illusion of grandeur, takklemaggot (a genuinely spreading, worsening plague — be careful with this one), link, camoflage, fear, illusionary guardian, simulacrum, blink step, knock, and a purely cosmetic
racespell for the who-list. One spell (mark) was deliberately left out for now — it’s a bigger change than the rest of this batch.Fixed scribing almost always producing a thin scroll and sometimes silently overwriting one you’d already inscribed. Blank scrolls were being matched by their base item type instead of by whether they were still actually blank, so scribing could re-target an already-used scroll instead of finding a fresh one.
Clarified how the scroll-writing skills work:
scribelets you write a scroll’s first spell,scribe2lets you add a second spell to a scroll that already has one (a third spell isn’t available yet).Scribing is now blocked while fighting, matching its intended out-of-combat design.
Blank scrolls were priced above a scroll of identify (1000 gold for all three tiers, more than identify’s own 890) — lowered and spread out to 200/400/700 for thin/blank/tough. Also fixed the shop’s
buy blanksometimes handing you a thin or tough scroll instead of the plain one you asked for.Thin, blank, and tough scrolls now behave distinctly: thin scrolls recite fastest but crumble soonest, are ruined by a single failed scribe attempt, and can never hold more than one spell; tough scrolls recite slowest but last longest and tolerate more failed attempts before a still-blank one is ruined; blank scrolls sit in the middle.
Fixed Scribe missing almost all of its real spell-group access. 15 of 17 confirmed groups (attack, beguiling, benedictions, combat, creation, curative, detection, draconian, enchantment, enhancement, harmful, healing, illusion, maladictions, protective, transportation, weather) were coded as unavailable to Scribe at all, so remort customization could only ever offer one bundled bonus group. All 17 are now purchasable at their own confirmed point costs, matching what a live Scribe remort should have shown all along.
Fixed the
scribeskill itself — the class’s own namesake, level 1 — missing from the starting skill set every Scribe gets automatically.Fixed
whip,dodge,hand to hand,second attack, andmeditationhaving the wrong (or completely blocked) Scribe cost and/or level.
Illusionist
- New class, remort-only, unlocked after completing
both Mage and Thief. Built from a live player’s own dumped skill/spell
list — a swashbuckling battle-mage flavor, wielding a sword instead of a
dagger and drawing on most of the same custom magic Scribe just picked
up above, alongside the usual mage-style spell groups (combat,
detection, enchantment, and more). Two spells mentioned elsewhere as
belonging to the class (
simulacrum,illusionary guardian) aren’t in this character’s own list and were left out rather than guessed. - This is a first pass: stat growth (hp/mana/melee) isn’t from any
confirmed source. The level-up title sequence (what shows in
who/scoreas you level) now has a full custom set from level 2 to 131; the top handful of levels are still a placeholder.
New races
- 21 new playable races, built from a live player’s own dumped race stat/ability table: Goblin, Orc, Kobold, Troll, Wyvern, Faerie, Minotaur, Skeleton, Centaur, Imp, Yeti, Wraith, Beast, Fiend, Dark Elf, Dark Dwarf, Klackon, Draconian, Skaven, Kender, and Mist — all selectable at character creation, none locked behind remort. Racial abilities are wired in properly: passive ones (an innate detect spell, permanent haste, walking through doors, flight, and so on) are always on, while active ones (berserk, sneak, hide, breath weapons, spell-group access) work the normal trainable way.
- Creation-point costs and experience-per-level for all 21 are this team’s own best judgment, not from any confirmed source — expect some rebalancing after real play.
Berserker
- Fixed
second attackbeing completely blocked for Berserker. A real Berserker character’s own level-gated skill data confirms it should unlock at level 3, same as any other core attack-count skill. - Fixed
dodgebeing set to an always-available level 1 instead of its real level 13.
Fountains
- The healing fountain no longer tries to “heal” a character stuck in a corrupted zero/negative-max-hp state — that could leave them alive looking but effectively dead instead of actually dying properly.
- The immortal-summoned healing fountain now fully satisfies hunger and thirst when you drink from it, not just a partial thirst top-up like plain water.
- The fountain’s periodic full heal now also covers charmed pets standing in the room, not just their owners.
Pets
- Fixed a pet’s hp eventually overflowing into large negative numbers after enough level-ups (most likely on a long-lived, frequently remorted pet) — it could get stuck fighting and following you around while effectively dead.
A cluster of fixes and new features, all from the same investigation:
- Fixed pets vanishing from your group. If you owned
a pet and then joined someone else’s group (rather than being the leader
yourself), your pet was silently left in its own private two-member
group instead of the real party — invisible to
group, no auto-assist, and prone to bogus “Kill stealing is not permitted” refusals when trying to help fight something a groupmate was already fighting. Now a pet’s group membership stays in sync with its owner’s, automatically, the moment the owner joins or leaves a group — no extra steps needed. - Fixed
group <petname>refusing to ever add a pet. The check meant to stop you from voluntarily kicking your own charmed pet out of the group was firing on every group command targeting a pet, including the very first attempt to add it — so a pet could never be (re)grouped by hand at all. It now only blocks actual removal. - Pets now explain themselves when they can’t follow an
order. Previously a pet’s own failure message (e.g. from a bad
order ... kill) had nowhere to go and just vanished, which read as the pet ignoring you. Now it speaks up: blind pets say so, pets blinded by breath-weapon smoke specifically mention the smoke, and a pet that can’t perceive its target (missing, invisible, or hidden) says it doesn’t see it. - Pets now level up alongside their owner, instead of staying frozen at their shop-purchase level forever — hp, hitroll, damroll, and AC all grow with you.
- New
pet stance <aggressive|defensive|passive>— aggressive (the old, only behavior) auto-joins any fight your group gets into; defensive only joins when you specifically are fighting, not other groupmates; passive never auto-joins (but still defends itself if attacked directly). - New
pet rename <name>— rename a pet you already own, without needing to sell it back and buy a new one. - New
%p/%Pprompt variables — your pet’s current and max hp, so you can add them to a custompromptand keep an eye on your pet without having tolookat it. Shows0if you don’t have a pet out.
Everything else
- Closed an item-duplication exploit. Players were
timing manual
savecalls to duplicate items;saveis now immortal-only. Automatic periodic saving (and saving on quit) is completely unaffected — you’ll still always be saved, you just can’t force it on demand anymore. - Rebuilt
inferno(Wizard/Scribe) to match a live player’s full description of how it actually worked, replacing an earlier approximation: damage now scales off your level as a percent of your own current hp (not max hp — still a real risk/reward nuke); the splash now unconditionally hits every adjacent room at 75% and every room adjacent to those at 50%, instead of sometimes reaching one extra room; and every mob that survives a hit now hunts you down persistently — crossing between areas if it has to — until it either catches you or you kill it. The rare “inferno beast” it can summon behaves the same way, except it won’t stop just because you reached a normally-safe room. - Fixed the
%eprompt variable (visible exits) printing single-letter abbreviations mashed together with no spaces instead of real direction names, and opened%z(area name) to everyone instead of immortals only. ray of truthnow mirrorsdemonfire: casting it shifts your own alignment 50 points toward good every time (capped at 1000), the same way demonfire always pushes you 50 points toward evil.- Colorized several equipment/character status tags that were plain
text before:
(Glowing)is now yellow,(Humming),(Invis)(both on items and on people), and(Magical)use their own colors, sanctuary’s(White Aura)is colorized,(Hide)is now dim, and(Charmed)is purple/pink. - Reworked
renewalfor Clerics (level 5) — it used to be a no-op (cost mana, did nothing). Now it costs 500 mana plus 25% of your own max hp, and fully restores the target’s hp, mana, and moves. Casting it on yourself still costs the full price — it can’t be used to refund itself. - Rescaled
agitate woundsfor Clerics — it was landing far weaker than intended. Its ceiling now scales with your own level instead of being capped atharm’s own damage, so a heavily wounded target can now take dramatically more thanharmalone would ever do, all the way up into this codebase’s top damage-message tiers at high level against a target in awful condition. Still zero effect above “excellent condition,” and still ramps up gradually rather than being strong everywhere. - Fixed both Divided Souls pet shops (Zeinia International and the
Elite Pets Counter) — 7 of the 16 pets (shadowcat, silver lynx, firecat,
icecat, ethereal panther, aerial servant, ethereal weebie) could be seen
in
listbut would refuse to sell with “Sorry, you can’t buy that here,” always for the invisible ones and intermittently for the sneaking ones. - Added the Monk class — a remort option for anyone who’s completed
both Warrior and Cleric. Unarmed-only fighters who hit 15% harder
bare-handed, with a full attack-count ladder up through a sixth attack.
Also brings the new
huntskill: search for a mob by name and get pointed one step closer to it, direction by direction. - The
damagetoggle now also shows numbers for damage you take, not just damage you deal — each side is gated on its own setting independently. - Fixed
hasteandgiant strengthbeing granted to Clerics through the newenhancementgroup but staying permanently unusable — their own level requirement was still blocked from before Clerics had any access to that group at all. - Fixed the
areascommand running two columns together with no gap when the left entry’s name was long (e.g. “Dangerous Neighborhood” butting right up against “Wyvern’s Tower”). - Added a
lolsocial. help dualnow points to thesecondcommand’s help (dual wield’s off-hand weapon command), since that’s what people were actually looking for.- Clerics now get access to the
enhancementandharmfulspell groups, and a newlifegroup (containingrenewal) — all three confirmed from real community data but never wired in. Also corrected themaladictionsgroup’s training cost. - Midgaard’s shopkeepers no longer run permanently out of money — they now regenerate 10% of their wealth toward their baseline every in-game hour, and the wealth baseline itself has been raised for everyone (up to a level 140 tier) to actually keep pace with the gear players are selling them.
- Warrior’s fourth attack, fifth attack, and dual wield are no longer automatically granted — they’re now trained through a guildmaster once you hit the right level, same as every other class’s optional skills.
- Added a
{Pcolor code for Bright Purple. On thewho/whoislist, the level and class are now bright green, the race is bright yellow, and the brackets and player name are bright white. - Fixed dual wielding letting you wear a shield at the same time (and vice versa) — a shield and an off-hand weapon now require a free hand from each other, so you have to remove one before equipping the other.
- Added two new prompt variables:
%d(stashed diamonds) and%t(time of day). Addedhelp promptdocumenting the full set of prompt codes. - The level/race/class bracket on
whoandwhoisis now colored bright green. - Login/logout announcements are now bookended by
=*=instead of***. - Dual wield now rolls separately on every landed hit in a round (not
just once), so more attacks means more chances at a bonus off-hand
strike. It also has its own dedicated off-hand slot now instead of
squatting in your shield slot, so wearing a real shield works correctly
again (block chance, damage bonus) while dual wielding. New
second <item>command wields a weapon in your off hand, separate fromwear. - Added a
damagecommand that toggles showing the exact number of damage you’re dealing on your own melee hits, skills, and spells. - Breath spells (acid/fire/frost/gas/lightning breath) cast even faster now (5 beats) and hit twice as hard.
- Warriors now get a fourth attack (level 55) and fifth attack (level 77), and Thieves get a fourth attack (level 35) — previously only Berserkers could get past third attack.
- Added the
remove invisiblespell for Clerics (level 45) and Scribes (level 53) — strips the invisible flag off a piece of equipment. - Added help entries for
diamonds,second, anddamage. - Added the
remove alignmentspell for Clerics (level 54) and Scribes (level 56) — strips the good/evil/neutral restriction off a piece of equipment so you can actually use it. - Dual wield is no longer Samurai-only — Warriors (22), Thieves (20), and Berserkers (1) can now learn it too, and a second weapon now has to be lighter than your main-hand one, the exact limit depending on your strength.
- Stone skin no longer works by making you dodge more — it now reduces the actual damage of every hit that lands on you, scaling up with your level.
- Rebalanced the draconian breath spells (acid/fire/frost/gas/ lightning breath) — much lower damage per hit, but they cast four times as fast now.
- Added a “diamonds” currency system — buy diamonds from the jeweller,
then
diamondstucks every diamond you’re carrying into an invisible pouch that can’t be looted off you,worthshows how many are stashed, anddiamonds <N>pulls them back out. - Speedwalking now accepts bare directions too —
4s2es2ewalks south 4 times, east twice, south once, then east twice, no digit required on every leg. - Fixed speedwalking letting you run straight through rooms with aggressive monsters without giving them a chance to attack.
- Fixed the draconian spell group’s breath spells costing far more mana than intended, and never getting cheaper as you leveled up — they now scale down with level like every other mage spell.
- Added speedwalking — type a string like
6e3nto walk east 6 times then north 3 times in one command, using the same movement rules as typing each step by hand. - Added an alpha-testing toggle so admins can let players keep their gear on death instead of losing it to a corpse.
- The temple-altar healer’s curative spells are discounted to 1 gold each for alpha testing.
- Fixed the
areascommand showing scrambled color codes and eaten digits on every single area in the game. - Socials now work over the gossip channel —
gossip nodorgossip highfive <player>emotes the real social to everyone listening instead of just saying the word. - Immortal-summoned healing fountains and active bonus-exp events now survive a server restart instead of vanishing.
- Launched this website: the story of the rebuild, the living specification, and a live “who’s online” page.
Dragon races rebuilt from real community data
- Rebuilt all 6 playable dragon races’ stats and ability kits against a second, independently-recorded community race/class table.
- Replaced the flat “+3 to one stat” class bonus with real per-class multi-stat bonuses (confirmed data for Berserker, Wizard, Scribe, Samurai).
- Fixed race-locked abilities (like a dragon’s bite or breath weapon) showing up as purchasable by any race during character customization.
Remort system hardening
- Fixed remort not resetting your room, equipment, or starting trains/practices to a fresh start.
- Fixed a critical bug where remorting could corrupt a character down to deeply negative hit points.
- Fixed a server-hanging bug triggered by a specific remort sequence.
- Let remort classes (Berserker, Wizard, Scribe, Samurai) into their prerequisite class’s guild.
- Wired Lenny’s House and Divided Souls into the world map at their real, community-confirmed locations.
Alpha content expansion
- Added the playable Fungus race (remort-only, extreme low-stat challenge race).
- Added full in-game help for remort, all 4 remort classes, and all 7 new races.
- Added dragon races, remort probation (finish what you start or it doesn’t stick), bonus experience events, and the immortal healing fountain.
Foundational alpha work
- Added the Samurai class, an item durability/repair system, and rebalanced Olympus and Dragon Tower for the 90-130 remort content gap.
- Added the Berserker, Wizard, and Scribe remort classes, and extended the level cap to 140.
- Began the Brigadoon Resurrected rebuild: design specs, source area imports, and dev tooling on top of the QuickMUD/ROM 2.4b codebase.