Repository navigation
fix(Scripts/BlackTemple): Match boss ids to DBC and save Illidan's gate state - #28317
brighton-chi wants to merge 2 commits into
Conversation
Black Temple kept Akama's gate event in boss slot 8, the DungeonEncounter.dbc index for Illidan, so Illidan sat in slot 9. Move the gate event to persistent data and number Illidan 8. The gate now opens on load only if Akama's scene opened it, and Akama is sent back down to his spot by the Council when the Council is dead and the gate is still shut. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ions Akama's gossip menu 8713 picked its text and option by boss state 8, which was the gate event and is now Illidan. After the gate scene he showed the pre-gate text again. Expose the gate's persistent value through GetData(DATA_ILLIDAN_GATE) and point the four conditions rows at it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Self-review — fix/black-temple-boss-ids → masterOutcome 2 findings — 1 fixed, 1 dismissed — final round clean Reviewed By Claude Code (desktop app), claude-opus-5-5 — self-review v1.0, 2026-10-29 Tested in-game by the author the four "How to Test" steps on a fresh instance before the round 1 fix — all pass; after it, Akama's gossip text and option with the Council dead before the scene, after the scene, and after a restart with the gate open — all correct; an Illidan wipe not tested, and its step dropped from the PR's test steps Review details (2 rounds)Intent Make Black Temple's boss state ids match DungeonEncounter.dbc (Illidan Stormrage at 8, 9 boss slots) by moving Akama's gate-opening event out of the boss states into instance persistent data, keeping the gate to Illidan's summit shut until Akama's scene opens it, across restarts too, and keeping Akama reachable when the Council is dead but the scene hasn't played. Project rules Diff Metadata Round 1 —
|
|
No actionable comments were generated in the recent review.
|
869c993 to
07acc0a
Compare
Changes Proposed:
This PR proposes changes to:
Black Temple's boss state ids drift from DungeonEncounter.dbc at the end. Slot 8 holds Akama's event that opens the gate to Illidan's summit, so Illidan sits in slot 9 while the DBC has him at 8. Since #27818,
.instance getbossstatenames each slot after its DBC encounter, so Akama's event shows up as "Illidan Stormrage" and Illidan as "Unknown".The gate event isn't an encounter, so it moves out of the boss states into persistent data, the way Ulduar and Culling of Stratholme keep their events. Illidan is now 8 and the boss count is 9, same as the DBC. Akama's gossip conditions read boss state 8 to pick his text before and after the scene, so a world update points them at the gate's saved value, exposed through
GetData(DATA_ILLIDAN_GATE).This also changes what happens after a restart. Until now the gate opened on load whenever the Council was dead, even if nobody had talked to Akama yet. Now it only opens if Akama's scene opened it before the restart. If the Council is dead and the gate is still shut, Akama is sent back down to his spot by the Council so the scene can still be done, since his spawn point is on the summit behind the gate.
Decisions:
OnGameObjectCreatecloses it explicitly unless the saved value says it was opened. Its spawn in the DB is open, and the door row was the only thing keeping it shut.JustRespawned, which runs on his first update after he spawns.Resetalso runs on evade, and the instance's create hooks run while he's still being added to the map. He's only moved while Illidan isn't done.DATA_AKAMA_ILLIDANkeeps its name with a new value, so every lookup by it stays as is. The gate getsDATA_ILLIDAN_GATE.Worth a close look:
npc_akama_illidaninboss_illidan.cpp(the newJustRespawned, and the scene now saving the gate and opening it itself) andOnGameObjectCreateininstance_black_temple.cpp. The header changes are just the new numbering. The world update only moves Akama's four gossip conditions (menu 8713) from boss state 8 to the gate data.AI-assisted Pull Requests
Important
Using AI tools to prepare pull requests is allowed, but it must be disclosed and it must follow our AC guidelines for AI Agentic Engineering (link below).
You are expected to fully understand the changes you submit and to be able to explain and justify them when maintainers ask.
Issues Addressed:
SOURCE:
The changes have been validated through:
Tests Performed:
This PR has been:
How to Test the Changes:
.instance getbossstatelists 0 to 8 under the DBC names, 8 being Illidan Stormrage.Known Issues and TODO List:
How to Test AzerothCore PRs
When a PR is ready to be tested, it will be marked as [WAITING TO BE TESTED].
You can help by testing PRs and writing your feedback here on the PR's page on GitHub. Follow the instructions here:
http://www.azerothcore.org/wiki/How-to-test-a-PR
REMEMBER: when testing a PR that changes something generic (i.e. a part of code that handles more than one specific thing), the tester should not only check that the PR does its job (e.g. fixing spell XXX) but especially check that the PR does not cause any regression (i.e. introducing new bugs).
For example: if a PR fixes spell X by changing a part of code that handles spells X, Y, and Z, we should not only test X, but we should test Y and Z as well.