HOME / CHANGELOG / v2.10.0

Release notes

v2.10.0

PUBLISHED: 12 July 2026

Release Scope

ItemValue
Release date2026-07-12
Compared fromv2.9.0 (053b03676c4e5b315f2f21667325e35a0dc81fdc)
Reviewed through354085130cd1cba01719a9c3193bf171dad5a058
Commit rangev2.9.0..354085130cd1cba01719a9c3193bf171dad5a058
Commits reviewed145

This release moves beyond the v2.9.0 class refresh by giving several of those class identities the systems they need in the live world. Rangers now have a persistent beast-companion game loop, casters have a real Spell Power gear axis, Monks have a fuller fist-combat rotation, and NPCs can use modern class and creature tactics. Stranglethorn Vale supplies a large level 35-50 hunting region built around the new Ranger and NPC systems.

Enchanting is the largest cross-class mechanic in this release. The old shard commands remain recognizable, but success is no longer a flat or immortal-only operation: characters develop an Enchanting skill, inspect exact odds, choose between ordinary and stabilized attempts, and turn failed focused extraction into a reusable character-bound resource.

The notes below summarize the player-, builder-, client-, and operator-facing outcomes of the release. They intentionally group related work rather than repeating every commit.

Enchanting And Crafting

A universal progression skill

  • Every class receives Enchanting at level 1 with a normal learn rate.
  • New and migrated player characters begin with 25 percent Enchanting when no prior learned value exists.
  • Meaningful binding and focused extraction attempts can improve the skill on success or failure.
  • Intelligence and Wisdom contribute to both binding and focused extraction, making character stats part of crafting rather than treating the shard ledger as a purely administrative inventory.

Eligible items and affix order

Enchanting accepts tracked ObjGen base, magic, and rare equipment. Ordinary authored equipment, uniques, old generated objects without tracked affix vnums, and non-generated items are rejected without consuming materials.

An affix must share a real wear slot with the target and must be between ten levels below and five levels above the item. Affixes are applied in this order:

  1. Suffix.
  2. Prefix, after a suffix exists.
  3. Rare affix, after both suffix and prefix exist.

craft lookup <item> and craft affixes <item> show every compatible affix, the current slot state, owned shard counts, affix stats, and the character’s normal and stabilized chances. craft shards <item> filters the shard ledger to choices that can currently fit the selected item. Ledger shards can be used directly; withdrawing a physical shard is optional.

Binding chance

Normal binding begins with a base chance of 60 percent and then applies:

  • one third of current Enchanting skill;
  • an Intelligence-plus-Wisdom adjustment, clamped from -5 to +10;
  • no suffix penalty, a 10-point prefix penalty, or a 25-point rare penalty;
  • a two-point penalty for each affix level above the item level.

The final normal chance is clamped from 20 to 95 percent. craft stabilize adds 20 percentage points, still capped at 95 percent, and costs:

Affix being boundFractured essence cost
Suffix1
Prefix2
Rare3

A valid binding attempt consumes its physical or ledger shard whether it succeeds or fails. Stabilized attempts also consume the stated essence. On failure the target item and its existing affixes remain unchanged; internal validation or merge errors consume neither shard nor essence.

Disenchanting and fractured essence

craft disenchant <item> preserves the familiar deterministic path: it destroys an eligible generated magic or rare item and awards one randomly selected recorded affix shard.

craft disenchant <item> suffix|prefix|rare instead focuses on a chosen slot. Focused extraction uses a 70-percent base before the same skill, stat, slot, and above-item-level adjustments used by binding. Its final chance is clamped from 25 to 95 percent.

  • Focused success awards the chosen shard and destroys the item.
  • Focused failure still destroys the item but awards one fractured essence.
  • Fractured essence is character-bound, saved with the player, shown in the shard display, and cannot be withdrawn or traded.
  • Random disenchanting still returns only one shard even when an item carries multiple affixes.

Purging remains a separate risk

craft purge still attempts to restore a generated item to its base form. Its success chance is based on the number of tracked affixes: 35 percent for one, 60 percent for two, and 85 percent for three. A failed purge destroys the item. This mechanic does not use Enchanting skill or fractured essence.

Crafting observability

Binding, disenchanting, and purging now emit non-player-visible activity events containing the item, affix slot, chance, roll, skill and stat inputs, material source, essence spent or awarded, and outcome. A retained SQL report summarizes crafting outcomes without turning the activity feed into player spam. Crafting chance and compatibility logic also has focused unit and static coverage.

Ranger Beast Companions

Taming and persistence

Rangers learn tamebeast at level 10 and mend pet at level 12. A tameable target must be a living, visible, non-humanoid animal at or below the Ranger’s level. It cannot be a protected service NPC, another controlled creature, a temporary summon, or already fighting.

The tame attempt uses Ranger skill and the level difference, bounded to a 5-95 percent chance. Failure provokes the beast. Success records the original mobile prototype as a persistent companion, removes the wild instance, and either activates the new pet or sends it to the stable when another pet is already active.

Rangers can retain up to ten distinct pet records. Only one Ranger pet is active at a time; the rest remain stabled or dead. Pet state, custom name, and source prototype survive saving, reconnects, copyover, and normal restoration.

Pet lifecycle commands

CommandBehavior
pet statusLists controlled summons and all Ranger pets with state, location, combat status, specialization, and abilities.
pet returnCalls safe, out-of-combat controlled followers back to the owner.
pet dismissStables the active Ranger pet and despawns other safe temporary followers.
`pet summon [#name]`
`pet name <#name> `
pet reviveRestores a fallen Ranger pet at one-third resources for 100 movement.
`pet disband <#name>`

mend pet provides the Ranger’s direct companion recovery action. Ranger pet death is recorded instead of silently deleting the companion, while ordinary temporary pets continue to use their existing summon lifecycle.

Owned follower summons also receive general status, return, and dismiss handling. mount status, mount return, and mount dismiss provide the same basic ownership controls for temporary mounts. Out-of-combat follower pets can automatically return when stranded in another room, addressing cases such as a Voidwalker being left behind after its owner flees.

Specializations

Pet family specialization is loaded from runtime race data:

SpecializationPet profilePersistent owner/pet effect
Ferocity115% damage, 90% health and armor, fast offensePredator’s Thirst
Tenacity130% health and armor, 90% damage, rescue behaviorEndurance Training; owner gains 5% maximum health
Cunning115% Accuracy, 120% movement, dodge and Hamstring behaviorPathfinding

Base pet combat values scale from the Ranger and the source beast, then the family profile is applied. Existing beast abilities remain visible in the pet status output, and pet combat/movement cleanup prevents stale ownership, duplicate active pets, cross-room fighting, and unsafe dismissal or swapping.

NPC Combat And Pursuit

NPC melee specials now pass through a role-aware selector rather than a random switch containing invalid or dead branches. Existing OFF_* permissions remain the builder-facing contract, and modern tactics replace legacy action slots so ordinary mobs do not gain an extra special every round.

The supported modern permissions include:

  • warrior pressure: Rend, Hamstring, Mortal Strike, Execute, and Shield Slam;
  • rogue pressure: Rupture, Eviscerate, and Sinister Strike;
  • creature attacks: Bite, Tail Sweep, and Swoop;
  • retained legacy actions such as Bash, Disarm, Trip, Kick, dirt kicking, and Berserk where the mobile already permits them.

Backstab is treated as an opener instead of being selected after combat has already begun. Tail Sweep can strike the primary opponent and a bounded number of other attackers, Bite uses the modern melee calculation, and level-20-plus Swoop adds movement control. Builder and audit tables now understand the new offense flags.

Configurable hunt modes replace scattered pursuit assumptions. Guards can track appropriate aggressors without turning every NPC into a global hunter, and engagement paths consistently link attacker and victim combat targets. Pet, service, quest, and no-fight protections remain in place.

Class ability execution also checks actual proficiency. NPCs and players no longer receive a guaranteed modern ability outcome merely because a command path exists, and class, creature, and quest actions now carry more distinct combat audio and feedback.

Spell Power, Magic, And Monk Combat

Spell Power and spell critical strikes

Spell Power is now a first-class apply, character field, save value, OLC field, equipment comparison input, and displayed combat stat. Effective Spell Power is the sum of equipped/applied Spell Power and current Intelligence, clamped at zero.

Supported spell damage, healing, and periodic paths use a shared initial 25-percent coefficient: 25 percent of effective Spell Power is added to the base amount before later spell-specific modifiers. Spell critical chance begins at 5 percent, gains the level-scaled bonus from Crit Rating, is independent of weapon skill, and is capped at 85 percent. Critical spell damage and supported healing double the resulting amount.

New caster-oriented prefix and suffix entries make Spell Power available in the generated loot and Enchanting pools. The stat is included in score, item attributes, comparisons, gear scoring, crafting displays, save/load rebuilding, GMCP, MSDP, and ObjGen analysis scripts.

Monk fist-combat expansion

Monk progression now introduces Tiger Palm, Blackout Kick, Roll, Vivify, Dodge, and Crackling Jade Lightning earlier. Expel Harm arrives at level 10, Paralysis at level 34, and several later abilities were reordered to make the leveling kit more coherent.

  • Expel Harm spends movement to heal the Monk and, while fighting, deals half of the effective healing as Nature damage to the opponent.
  • Crackling Jade Lightning adds a ranged Nature option.
  • Paralysis applies a short pressure-point command and magic stun.
  • Fists of Fury now makes four strikes instead of three.
  • Chi Focus and Elusive Brew use modern Accuracy, Attack Power, and Armor Rating conversions and have their command waits reduced from 12 to 6 pulses.
  • An unarmed Monk, or one using a fist weapon, receives an additional attack opportunity equal to one quarter of Hand to Hand proficiency. Slow suppresses this extra strike.

Other class and spell changes

  • Curse of Agony now ramps over its duration.
  • Temporary summons use more consistent ownership, duration, cleanup, and combat behavior; Voidwalkers can rescue while already engaged.
  • Movement and combo opening windows were refined, including Mongoose Bite, Overpower, and Tiger Palm affect classification.
  • Remort characters pay double spell mana costs, and client ability metadata reports the effective cost.
  • Room-targeted abilities are explicitly represented and no longer require a target placeholder; room-cast execution paths were corrected.
  • Obsolete residual spells were removed and class data was regenerated.

Stranglethorn Vale And World Content

Stranglethorn Vale is a new level 35-50 area in vnums 35500-36999, connected to the Astral Plane by a two-way portal. It contains 617 playable rooms, 46 mobile prototypes, 11 objects, three shops, 340 resets, and ambient and encounter programs.

The area follows a continuous north-to-south Great Jungle Road through the Nesingwary expedition, Lake Nazferiti, Grom’gol, Gurubashi territory, Crystalvein Mine, the Cape, Booty Bay, Wild Shore, and Jaguero Isle. A sealed exterior threshold reserves the future Zul’Gurub connection without pretending that dungeon is already implemented.

The wildlife roster covers multiple level bands and the Cat, Raptor, Spider, Crocolisk, Turtle, Bat, Wind Serpent, Basilisk, Crab, and Gorilla families. It deliberately supplies Ferocity, Tenacity, and Cunning Ranger choices while keeping civic and service mobiles protected. Named hunts include Sin’Dall, Tethis, Konda, Nalak, and the group-oriented level-50 King Mukla encounter.

King Mukla layers authored boss health and defenses with an opening Bash, mid-health Berserk, and low-health Haste. Routine wildlife and humanoid rewards use calibrated leveling profiles; Booty Bay civic NPCs have no generated loot. The area was checked for internal topology, portal safety, service placement, reset references, pet-family parity, and combat separation.

Existing areas received saved-format normalization, beast race/form/part updates, pet-taming corrections, portal adjustments, generated object updates, and targeted live-content polish. The large textual churn in those files mostly reflects standardizing current OLC serialization, not hundreds of separate player-facing features.

Quests, Help, And Player Usability

  • Removed the parallel obsolete personal-quest implementation while retaining the current kingdom quest flow.
  • Kingdom quest reward caches are capped at level 50, objective progress has distinct sounds, and quest info reports whether a new quest is available or how many hours remain on cooldown.
  • appraise <item> shows full attributes for an item offered by the current shopkeeper before purchase.
  • Help lookup now opens a unique exact keyword match, presents a compact ranked ID list for ambiguous matches, and supports help search <text> for broader discovery without dumping every matching helpfile body.
  • target now uses the stored $$ target system consistently; target clear, target none, and untarget immediately clear it and refresh combat data.
  • Player-entered communication bodies can be up to 1,024 bytes, replacing the historical short command-line ceiling for supported communication commands.
  • Combat, invulnerability, pet, quest, movement, magic, and sound messages were clarified, and duplicate starter base drops are suppressed.

Client And Protocol Notes

The canonical native GMCP reference now lives at .ai-skills/low-api-supervisor/references/gmcp-api.md, with docs/gmcp-api.md pointing client authors to it.

Additive fields and behavior

  • Char.Stats and Char.Combat expose spell_power and spell_crit_chance; bridged MSDP exposes SPELL_POWER and SPELL_CRIT_CHANCE.
  • Char.Combat.stored_target reports the saved target/$$ substitution even outside combat, while target_name remains the visible current opponent.
  • Char.Combat.target_affects uses the same entry schema as Char.Affects.effects for the visible opponent’s effects.
  • Game.GlobalQuest.joined and MSDP JOINED distinguish a running global quest from the current player’s participation.
  • Char.Abilities reports effective remort mana costs and the room target type for room-wide abilities.
  • Native effect entries include a more precise mechanic classification for combo windows, cooldowns, periodic damage, and periodic healing.

Compatibility changes requiring client attention

Char.Stats.armor_rating is now one numeric consolidated value. Native GMCP no longer emits the old armor_rating.pierce, .bash, .slash, or .exotic object fields, nor the matching flat armor_rating_* fields. Clients that rendered the old object must migrate to the scalar.

Settable resistance apply names were normalized to resist_fire, resist_frost, resist_nature, resist_arcane, resist_holy, resist_shadow, resist_all, and matching perc_resist_* names. Deprecated area/OLC aliases continue to map during migration, but clients should consume the canonical names.

Stored-target metadata moved from the Char.Abilities.target object into Char.Combat.stored_target, where it can update independently of the ability list. Clients using the old location should migrate.

Media and Mudlet

Areas can define multiple ambient regions. Client media transitions rotate stable keys and send five-second fade-in/fade-out instructions so adjacent soundscapes crossfade without leaving duplicate loops.

The server can advertise a manifest-driven Mudlet core package through Client.GUI. Package metadata comes from data/mudlet-packages.json, with safe fallbacks. Automatic package push is disabled by default and must be enabled with LOW_GMCP_MUDLET_PACKAGE_PUSH=1; non-Mudlet clients can ignore the package.

Builder, Runtime, And Release Operations

  • NPC race definitions now load from data/race.dat instead of relying only on the compiled table. Warcraft-aligned forms, anatomy, and pet-family fields are available to runtime systems and migration scripts.
  • Mobile OLC racial-flag editing, area save output, area-validator parsing, and builder references were updated for current Format 2 records.
  • Administrator activity telemetry now records sessions, reconnect/link-dead transitions, location and actor context, and filterable event summaries.
  • Open-beta tooling covers validation, suppression, test delivery, send ledgers, and analytics; public listing and connection copy was refreshed.
  • MSSP uses a dedicated LOW_MUD_HOSTNAME value instead of deriving the game connection host from the website URL.
  • Pipe-to-process command stacking, area-save null-file handling, room boot initialization, affect cancellation iteration, xlist bounds, character deletion, starter race assignment, clan launch flow, and related release safety issues were corrected.

Verification And Known Release Notes

The reviewed range adds focused tests for crafting rules and integration, Ranger pet persistence and commands, help matching, modern NPC multi-hit selection, spell stats, combat behavior, and protocol serialization. The Stranglethorn review records a clean full build, Ranger pet tests, isolated cold boot, deterministic generation, and an area-validator result of zero errors with 13 expected proper-name warnings.

Two retained tooling limitations are documented rather than hidden:

  • the general loot validator still stops on a pre-existing area/objbase.are Wel parsing issue before it can perform a whole-world pass;
  • the legacy race-data test parser does not yet understand every Format 2 mobile record, so the release relies on the focused Ranger tests, direct race checks, area validation, and successful cold-boot evidence for that surface.

The release build and focused crafting, protocol, help, Ranger-pet, and combat tests passed before publication. Publishing the source release does not deploy, copy over, or migrate the running game; operators should take normal runtime and database backups, review environment additions, and use the normal copyover process when promoting it to a live server.