Realm Update – 21 September 2026

21/09/2026 · Realm Update

AzerothCore (Playerbots fork)

  • fix(Core/Unit): prevent dangling AbstractFollower pointer crash in ~Unit() (#27726)
  • fix(Core/Scripting): ask OnPlayerCanLearnSpell before a trainer casts an entry (#27707)
  • chore(DB): import pending files
  • fix(DB/Ulduar): correct Freya’s Gift emblem counts (#27718)
  • fix(Scripts/Karazhan): Set Terestian Illhoof to _JustEngagedWith() upon Pull (#27642)
  • fix(Scripts/Ulduar): Corrupted Wisdom for JoTW paladins (#27712)
  • fix(Scripts/ICC): stop marking the Blood Prince Council as failed on spawn (#27665)
  • fix(Core/SmartAI): Avoid duplicate scripts for creatures with no GUID AI (#27685)
  • fix(Scripts/Ulduar): spawn Immortal Guardians at full Empowered size (#27692)
  • fix(Scripts/AQ40): Prevent Twin Emperors & C’Thun engagement without required bosses (#13395) (#27675)
  • test(e2e/Ulduar): drop the flaky Brightleaf sun beam despawn test (#27703)
  • Change Position declaration to struct in SpellDefines
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): stop Freya’s Tidal Wave when its cast is kicked (#27636)
  • Strip Playerbot database core changes
  • fix(Scripts/Commands): Allow negative action IDs in .npc do (#27691)
  • chore(skills/generate-pr-description): add a line separator (#27686)
  • fix(Scripts/ICC): spawn Keleseth Shadow Resonance adds away from him (#27661)
  • chore(DB): import pending files
  • fix(DB/Creature): show the Dark Iron Tunneler health bars (#27667)
  • perf(Core): derive creature terrain status lazily; cache GetScriptId() (#27445)
  • chore(DB): import pending files
  • fix(DB/Creature): Add missing creatures in Stormwind Harbor and update positions to match sniffed data (#27319)
  • fix(Core/Calendar): count only the holidays actually sent (#27669)
  • fix(Scripts/Dalaran): Eject only from the quarters (#27666)
  • fix(Scripts/Ulduar): do not let Thorim’s evade despawn trigger his defeat (#27672)
  • fix(CI): run the checks when a draft PR is marked ready for review (#27635)
  • fix(Core/Events): match a holiday to its own event, not its building stage (#27655)
  • chore(DB): import pending files
  • fix(DB/Quest): Correct Report to Kadrak gating (#27418)
  • chore(DB): import pending files
  • fix(Scripts/BlackrockDepths): script the Black Vault warder event (#26973)
  • fix(Scripts/Ulduar): stop Freya’s Ward adds despawning on the spell timer (#27651)
  • chore(DB): import pending files
  • feat(Scripts/ICC): script the Deathbringer Saurfang outro and victory… (#27112)
  • fix(Scripts/Feralas): summon the Gordunni trap mound through its own spells (#27632)
  • feat(Codestyle/SQL): require both id and guid in spawn UPDATEs (#27657)
  • chore(DB): import pending files
  • fix(DB/SAI): Make some aggro talk lines speak from self (#27649)
  • chore(DB): import pending files
  • fix(Scripts/Spells): Mage T8 4P bonus never preserving procs (#27637)
  • fix(DB/Events): Implement Argent Tournament construction quest behavior. (#27650)
  • fix(DB/Creature): let Winterfall Runners attack nearby players (#27658)
  • fix(Scripts/Icecrown): Crusaders’ Pinnacle waves emerge from the ground and charge the banner (#27090)
  • fix(Scripts/Quest): start City of Light escort movement (#27245)
  • fix(Scripts/ICC): Restore Svalna’s spear kill on the Argent captains (#27233)
  • fix(Scripts/DarkmoonFaire): play the faire music (#27653)
  • fix(Core/Events): validate holiday data when loading game events (#27652)
  • fix(Core/Spells): correct SPELLMOD_COST order of operations (#27388)
  • fix(Scripts/ICC): restore Rocket Artillery in the Gunship Battle (#27199)
  • fix(Scripts/ICC): make the Lady Deathwhisper elevator wait 7s at each stop (#27149)
  • fix(Core/Battlefield): resurrect ghosts when a Wintergrasp workshop is contested (#27264)
  • fix(Core/Spell): Don’t put ritual spells on cooldown when the spell is cancelled. (#27643)
  • fix(Core/Spells): preserve loaded aura amount without caster (#27375)
  • fix(Core/Events): do not count a holiday as active during its building stage (#27646)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): cap Elder Brightleaf’s Unstable Sun Beams (#27638)
  • feat(Core/Database): enable modules to own their database (#27544)
  • chore(DB): import pending files
  • fix(DB/Ulduar): give Freya’s Elders their emblems (#27634)
  • fix(Scripts/Spells): Glyph of Lightwell not increasing Lightwell healing (#27162)
  • fix(Scripts/Ulduar): give Algalon a stasis period after Big Bang (#27630)
  • feat(Core/World): apply PlayerLimit on config reload (#27633)
  • fix(Core/Groups): identify the finished roll in SMSG_LOOT_ROLL_WON (#27631)
  • fix(Core/Groups): finalize timed-out loot votes (#27486)
  • refactor(Core/Spells): allow any WorldObject to be a spell caster (#27627)
  • feat(Core/Mail): add Mail.PushInboxOnDelivery to refresh stale mailboxes (#27508)
  • fix(Core): Correct Spelling of WorldSession::isLogingOut() & Use PascalCase (#27238)
  • – Fix for PointMovementGenerator constructor
  • fix(Scripts/Ulduar): stop Yogg-Saron’s Psychosis and Malady of the Mind from picking low Sanity targets (#27628)
  • fix(Core/Unit): clear moving flags before sending root (#27563)
  • fix(Core/Movement): Fix pet pathing and chase angle against oversized targets (e.g. Brain of Yogg-Saron) (#27426)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): give Elder Brightleaf’s Unstable Sun Beams their own lifetime (#27619)
  • fix(Core/Vehicle): avoid Vehicle-kit use-after-free in TeleportVehicle (#26116)
  • feat(Core/Scripting): Add spell aura exclusivity hook (#26565)
  • fix(Scripts/SlavePens): Fixed the loot permissions for boss_ahune’s chest in Slave Pens (#27117)
  • fix(Scripts/Silverpine): prevent duplicate Pyrewood Ambush events (#26832)
  • fix(Core/Pets): Resume chase after deferred casts (#27623)
  • fix(Core/Movement): Prevent waypoints from passing through the ground when using SmoothTransition (#27107)
  • chore(DB): import pending files
  • fix(DB/Creature): set NO_PARRY_HASTEN for t7-t10 bosses (#27625)
  • fix(Core/Spells): stop forced casts from inheriting the caster as their destination (#27621)
  • chore(DB): import pending files
  • fix(DB/Ulduar): correct 10-man and 25-man loot pools (#27624)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): stop Flame Leviathan saving the raid on pull (#27622)
  • fix(DB/Quest): Summon Lord Kragaru from the Serpent Statue (#27611)
  • fix(Core/Spells): allow paladin auras from different casters to coexist (#27509)
  • fix(Core/Spells): Prevent taunts from affecting totems (#27601)
  • fix(Scripts/Ulduar): cast Razorscale’s Wing Buffet once per grounding (#27616)
  • – Fixed return in CheckSoulboundTradeExpire
  • fix(Core/Pets): Stop moving for autocast channels (#27564)
  • fix(Core/Spells): load all spell_custom_attr rows (#27365)
  • chore(DB): import pending files
  • fix(DB/Scholomance): guarantee one rare loot from Lord Alexei Barov (#27270)
  • fix(Scripts/Ulduar): make Yogg-Saron’s Laughing Skulls respect line of sight (#27614)
  • chore(DB): import pending files
  • fix(DB/SAI): drop Mogg’s link to an undefined event (#27609)
  • fix(Scripts/MagtheridonsLair): anchor the release countdown to the Channeler pull (#27600)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): keep Razorscale grounded during her permanent ground phase (#27610)
  • chore(DB): import pending files
  • fix(DB/Ulduar): award Stokin’ the Furnace on Ignis kill (#27598)
  • fix(Core/Item): unlock openable item on the client when opened while dead (#27431)
  • feat(Core/Deps): require Boost.Thread alongside the other Boost components (#27584)
  • fix(Shared/DBC): keep DBC string when DB override column is empty (#27581)
  • fix(Core/Database): allow reopening a DatabaseWorkerPool after a failed Open() (#27585)
  • fix(Core/Chat): accept uppercase link colors and the ‘found’ tag (#27580)
  • fix(Scripts/Ulduar): keep Kologarn’s corpse as the bridge across instance reloads (#27557)
  • docs(agents): state the PR title convention inline (#27568)
  • fix(Scripts/IcecrownCitadel): restore flight animations for Sindragosa, Rimefang, Spinestalker and Spire Frostwyrm (#26738)
  • fix(Core/Creature): Keep a spell’s own recovery time on category cooldowns (#27595)
  • docs(agents): set flags_extra on every difficulty entry (#27586)
  • chore(DB): import pending files
  • fix(DB/SAI): Attempt another fix for Sky Darkener accumulation (#27597)
  • chore(DB): import pending files
  • fix(DB/Ulduar): Void Zone summoned during XT-002 Deconstructor Hard Mode doen’t stay in combat with the players. (#27596)
  • chore(DB): import pending files
  • fix(DB/Creature): stop Mimiron DB Target entering combat (#27594)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): give Flame Leviathan’s Freya’s Ward lashers their own targeting AI (#27567)
  • chore(DB): import pending files
  • fix(DB/Creature): sync Freya’s 25-man HARD_RESET flag (#27587)
  • fix(Scripts/Ulduar): stop XT-002 summoning adds after death (#27589)
  • chore(DB): import pending files
  • fix(DB/Loot): Remove Petrified Shinbone from random lists (#27588)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): Respawn Hodir’s Rare Cache with the boss (#27582)
  • fix(Scripts/Ulduar): Use Thorim Sif’s 10-man spell ids (#27575)
  • chore(DB): import pending files
  • fix(DB/Quest): Show objective marker on Zaxxis mobs (#27569)
  • chore(DB): import pending files
  • fix(DB/Loot): Allow Kirtonos the Herald to drop greens as well as at least two equipment (#27377)
  • test(e2e): review, flakes, no unsolicited e2e (#27514)
  • chore(DB): import pending files
  • fix(Scripts/Dragonblight): make Alystros’ Lapsing Dream affect players (#27356)
  • chore(DB): import pending files
  • fix(DB/SAI): correct Serpentbloom Snake movement (#27467)
  • fix(Scripts/VaultOfArchavon): Respawn Emalon’s minions at the boss and announce them (#27433)
  • chore(DB): import pending files
  • docs(agents): warn against summoning entries tracked by InstanceScript ObjectData (#27565)
  • fix(DB/Loot): Correct Steelbreaker 10-man hard mode loot (#27566)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): Prevent Expedition Base Camp protective bubble from respawning after gauntlet start (#27442)
  • fix(Scripts/Ulduar): fix Mimiron’s Laser Barrage visual rotation and wipe desync (#27555)
  • feat(Core/Scripting): add player hooks for trainers and spell learning (#27552)
  • chore(DB): import pending files
  • Fix(DB/AreaTrigger): Gnomeregan AreaTrigger teleport location (#27459)
  • chore(DB): import pending files
  • fix(DB/Quest): gate Relics of the Snow Leopard Goddess behind Breaking Through Jin’Alai (#27458)
  • chore(DB): import pending files
  • fix(DB/SAI): Correct Frostmourne Cavern text and RP progression(#27522)
  • chore(DB): import pending files
  • fix(DB/Quest): Gate The Drakkari Do Not Need Water Elementals! (#27471)
  • chore(DB): import pending files
  • fix(DB/Loot): remove Grunnda vendor drops (#27474)
  • chore(DB): import pending files
  • fix(DB/Quest): Remove pre-quest requirement for Amani Encroachment (#27542)
  • fix(Core/Unit): Use caster’s level to calculate spell resistance (#27558)
  • chore(DB): import pending files
  • fix(DB/Gameobject): Correct Call to Arms banner sides in Shattrath and Dalaran (#27559)
  • chore(DB): import pending files
  • fix(DB/Creature): link Storm Tempered Keeper pairs (#27493)
  • fix(DB/Creature): restore Forest Swarmer patrol (#27475)
  • fix(Scripts/Ulduar): constellations closing black holes while in the air (#27543)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): Spawn Thorim’s golem hand bunnies statically and drop their combat (#27523)
  • fix(Core/Spells): respect hostile self-immunity (#27482)
  • fix(Scripts/Naxxramas): Gluth – zombie chow locations (#27074)
  • fix(Core/Pets): Pet follow and stay behavior when casting spells out of range (#26661)
  • fix(Core/Item): null-owner guard in CheckSoulboundTradeExpire (#27528)
  • fix(Core/Player): reject wrong-class relics in CanUseItem (#27530)
  • chore(DB): import pending files
  • fix(DB/Immunities): Update Ignis’ Iron Constructs immunities (#27520)
  • fix(DB/Immunities): Update Algalon Dark Matter immunities (#27540)
  • fix(DB/Immunities): Update Algalon Living Constellation immunities (#27541)
  • chore(DB): import pending files
  • fix(Core/Spells): General Vezax Shadow Crash puddles must not stack, strip their linked aura, or show a countdown (#27374)
  • feat(Core/Arena): swap OnGetStartPersonalRating for OnAddMember, add OnArenaWeekReset (#27512)
  • chore(DB): import pending files
  • fix(DB/Immunities): update Badlands Rock Elementals immunities (#27513)
  • fix(Core/Pets): Prevent follow from interrupting channels (#27010)
  • fix(Core/Creature): populate spawnId when saving creatures to DB (#27532)
  • chore(DB): import pending files
  • fix(DB/CreatureTemplate): allow pickpocketing on heroic difficulty entries (#26851)
  • feat(Codestyle/SQL): require both id and guid in spawn DELETEs (#27517)
  • fix(Core/Unit): cancel pending events before aura cleanup on map removal (#27527)
  • fix(Core/Spells): Prevent Grounding Totem from consuming AoE hits (#26809)
  • fix(Core/Group): guard RemoveInvite against a stale group pointer (#27529)
  • chore(DB): import pending files
  • fix(DB/Loot): split Sapphiron 25 reference loot to pools (#26751)
  • feat(Core/Scripting): add OnPlayerAfterTakeItemFromMail player hook (#27447)
  • chore(DB): import pending files
  • fix(DB/SAI): Correct Mobile Databank temple line offsets (#27511)
  • chore(DB): import pending files
  • fix(DB/Spells): prevent Frost Breath stun refresh (#27472)
  • feat(Core/Players): Add inventory arrival hook (#27018)
  • fix(Core/Script): target-aware MOVE_FORWARD, spawn A Plague Upon Thee termites (#26725)
  • chore(DB): import pending files
  • fix(Scripts/Stratholme): Restore Scarlet Threads (#27342)
  • refactor(Core/Unit): extract rage weapon-speed term with test (#27004)
  • refactor(Core/Movement): Do a little cleanup for PointMovementGenerator.h (#27114)
  • fix(Tests): build unit tests with core interface warnings (#26092)
  • fix(Scripts/Ulduar): Resolve Razorscale Breath issue. (#27409)
  • fix(Core/Mail): announce every delayed mail, not just the first (#27507)
  • fix(Scripts/ZulAman): Zul’jin no longer stays in troll form when entering Dragonhawk phase (#27501)
  • chore(DB): import pending files
  • fix(DB/Quest): synchronize Platinum Discs visual aids (#27334)
  • fix(Scripts/Ulduar): correct Mimiron hardmode timer (#27480)
  • fix(Core/Skills): use progressive crafting skill-up chance (#27219)
  • chore(DB): import pending files
  • fix(DB/Creature): Ironwork Cannon should attack players with Flame Cannon (#27401)
  • chore(DB): import pending files
  • fix(Scripts/SSC): drive Hydross’ form and beams from the Cleansing Field aura (#27503)
  • chore(DB): import pending files
  • fix(DB/Quest): restrict Flatulate targets (#27477)
  • chore(DB): import pending files
  • fix(DB/SAI): make Trollgore invaders attack (#27478)
  • fix(Scripts/HoL): restore lieutenant follow (#27479)
  • fix(Core/Player): Fixed cross-zone weather residual bug (Burning Flatlands example). (#27116)
  • fix(Core/Mail): correct the declared size of mail list entries (#27505)
  • fix(Core/Mail): deliver mail to online receivers addressed only by guid (#27506)
  • docs(agents): require upstream author credit for mirrored code (#27504)
  • chore(DB): import pending files
  • fix(DB/SAI): Thysta summons Enraged Wyverns instead of Alliance Gryphons (#27173)
  • fix(DB/Creature): Thorim’s Thunder Orbs can no longer enter combat (#27470)
  • chore(DB): import pending files
  • fix(DB/Spells): Mimiron’s Laser Barrage hits a 10 degree cone instead of a 19yd wide line (#27469)
  • chore(DB): import pending files
  • fix(DB/SAI): Lost Drakkari Spirit is neutral and no longer spams Arca… (#27468)
  • chore(DB): import pending files
  • fix(DB/Quest): Gate Gluttonous Lurkers behind Precious Elemental Fluids (#27461)
  • chore(DB): import pending files
  • fix(DB/SAI): Bronzebeard talks are not triggered by an Area Trigger anymore. (#27451)
  • chore(DB): import pending files
  • fix(DB/Creature): Remove excess 4th trash pack before Mimiron tram in Ulduar (#27440)
  • chore(DB): import pending files
  • fix(DB/Quest): Quest reset state in The Reckoning(#27450)
  • chore(DB): import pending files
  • fix(DB/Creature): Add movement to Balnazzar skeletons (#27452)
  • chore(DB): import pending files
  • fix(Scripts/CavernsOfTime): Old Hillsbrad Missing Abilities (#27454)
  • fix(DB/Quest): summon Illidan for The Hunter and the Prince (#27456)
  • feat(Workflow/Labeler) – Adds “e2e” label to PRs (#27439)
  • chore(DB): import pending files
  • fix(DB/SAI): Restore Timmy the Cruel (#27241)
  • fix(Scripts/VaultOfArchavon): despawn Emalon’s Tempest Minions on hard reset (#27432)
  • fix(Scripts/Ulduar): fix Razorscale add spawn composition and queuein… (#27411)
  • fix(Scripts/Ulduar): scope gear scaling formula to Ulduar only (#27430)
  • chore(DB): import pending files
  • fix(DB/Creature): drop combat with Mechanolift 304-A when damaged but not killed (#27370)
  • fix(Core/Spells): Fix Charge pathing against oversized targets standing over unwalkable space (e.g. Kologarn) (#27412)
  • chore(DB): import pending files
  • fix(Scripts/StormPeaks): Add new patrol to TLPD and adjust spawn position and timings (#26073)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): Salvaged Chopper should change Grab Pyrite with Eject Passenger when a player/Pyrite is on the passenger seat. (#27415)
  • chore(DB): import pending files
  • fix(DB/Creature): Trapdoor Crawler no longer casts Poison while crowd controlled (#27414)
  • chore(DB): import pending files
  • fix(DB/Creature): Steelforged Defenders now despawn when they stay OOC. (#27413)
  • chore(DB): import pending files
  • fix(DB/Creature): Link Dire Maul Whip Lasher packs (#27408)
  • chore(DB): import pending files
  • fix(DB/SmartAI): make Boomer XP-500 a contact bomb (#27301)
  • fix(Core/Vehicles): Salvaged Demolishers should spawn with full pyrite (#27399)
  • chore(DB): import pending files
  • fix(Core/Spells): keep the Demolisher gunner seat’s pyrite in sync in Ulduar (#27398)
  • fix(Scripts/Ulduar): Yogg-Saron should be defeated below 1.5% health (#27393)
  • chore(DB): import pending files
  • fix(DB/Creature): Ironwork Cannon should always use display id 25723 (#27395)
  • docs(Agents): VerifiedBuild stamping and DoCast helper rules (#27396)
  • chore(DB): import pending files
  • fix(DB/SmartAI): Flightmasters summon the correct faction Wyverns (#27389)
  • chore(DB): import pending files
  • fix(DB/Quest): restore The Hunter and the Prince (#27345)
  • chore(DB): import pending files
  • fix(DB/Creature): Correct LBRS patrols and spawns (#27344)
  • fix(Scripts/Ulduar): Yogg-Saron’s Grim Reprisal should not reflect damage dealt by totems (#27392)
  • chore(DB): import pending files
  • fix(DB/SAI): Champion of Hodir should cast Freezing Breath on the second highest threat target (#27387)
  • chore(DB): import pending files
  • fix(Scripts/Ulduar): Allow CC on Thorim’s pre-fight pack and add NPCs (#27269)
  • fix(Scripts/Ulduar): Salvaged Siege Engine cannot be mounted anymore by more than two players at the same time. (#27371)
  • fix(Scripts/Ulduar): Salvaged Vehicles at the Expedition Base Camp must respawn when destroyed before pulling Flame Leviathan. (#27364)
  • chore(DB): import pending files
  • fix(DB/Creature): Remove experience gains from “Blockade Cannon” and “Blockade Pirate” (#27366)
  • This overload is redundant – it matches the old mangostwo version that mod-playerbots was ported from originally, but we have a perfectly viable alternative that builds the packet identically.

mod-playerbots

  • Macos build fix (#2809)
  • Dungeon Clean-ups (#2803)
  • fix(pmon): measure every calculated value, not just the target pickers (#2738)
  • Bots score item by stats only and correctly value Feral weapons (#2790)
  • Use core modular database functionality (#2793)
  • fix: stop cyclic craft chains from overflowing the stack (#2777)
  • Limit gem socketing via maintenance to gems that do not exceed the equipment quality (#2795)
  • Rewrite Tempest Keep: The Eye Strategies (#2755)
  • Rewrite Hyjal Strategy (#2760)
  • Add Hellfire Citadel: Hellfire Ramparts dungeon strategy (#2776)
  • Update Magtheridon Strategy (#2791)
  • Rename isLogingout to IsLoggingOut (#2788)
  • AI agents, code review guidelines, and coderabbit. (#2769)
  • fix(Bot): re-anchor m_lastFallZ so LFG can teleport bots into a dungeon (#2754)
  • fix(bots): make random bot account/character deletion work with a remote login database (#2772)
  • Remove forward declarations that required core changes. (#2767)
  • feat(pmon): dump the performance monitor to JSON alongside the table (#2740)
  • Rewrite Zul’Aman Strategy (#2762)
  • Gruul Bug Fixes & Improvements (#2751)
  • Align Rogue strategy names with specs (#2766)
  • fix(rpg): let a wandering bot pick up the quest it is standing next to (#2696)
  • Rewrite Vigilance action and trigger to target dps and change inheritance (#2771)
  • Fix a crash from a whispered item command, and a wrapping loop counter in parseMoney (#2727)
  • fix(chat): guard null PlayerbotAI in HandleCommand (#2713)

mod-ah-bot

  • fix: allow items matching any enabled acquisition source (#166)

mod-aoe-loot

  • fix: only merge AoE loot the looting player can take (#67)

mod-dungeon-clear

  • feat(oculus): implement The Oculus (map 578)
  • fix(nav): route straight on maps the core runs without pathfinding
  • feat(toc): implement Trial of the Champion (map 650)