Move the Titanstrike-recovered credit (114509), Hati companion grant, and
return-to-Dalaran off the scenario director and onto npc_prustaga_temple's
death, so leg 3 completes even if scenario 1099 is unavailable. The director
now only fires the on-screen step game events. Prevents a double Hati summon.
The Grif gossip interaction doesn't reliably reach OnGossipHello at this step
(the credit never fires), so bind quest 41574 to quest_stolen_thunder: on accept
(status -> INCOMPLETE) credit the flight objective (104993) and transport the
player to the Shield's Rest landing via a short deferred event.
The WoD garrison is entered via a seamless (no-loading-screen) map transfer. On
login the client runs the garrison handshake (CMSG_GET_GARRISON_INFO +
CMSG_GARRISON_GET_MAP_DATA) and renders the plot buildings, but on a seamless
transfer it never re-requests that data, so the building GameObjects spawn yet
the client renders empty plots - only each building's interior/work-order spawns
appear. Relog fixes it (full handshake); ".reload" cannot (server-side only).
Push GetGarrisonInfoResult + GarrisonMapDataResponse (the same responses the
client would request) whenever a player enters a garrison map, via a short
deferred event: OnMapChanged fires from within Map::AddPlayerToMap, before the
client has finished loading the new map, so an immediate send arrives too early
to stick (matching the observed "buildings flash then vanish" on re-entry). A
~1.5s delayed BasicEvent (guarded by IsInWorld + IsGarrison + matching site
MapID) lands after the client is ready.
The Legion class order-hall intro chain's first quest is offered in retail by a
class-specific NPC who seeks the player out in Dalaran. In our world DB that
NPC's only static spawn sits in a scenario/staging area the arriving player
never reaches (Hunter: Vereesa Windrunner 100190 spawns in zone 7543 at z~26,
far below floating Dalaran), leaving the otherwise-intact chain unreachable.
Add a data-driven "class messenger": a PlayerScript that, when an eligible
player enters Legion Dalaran (zone 7502), summons a personal copy of their
class's messenger a few yards away and has it walk up and follow the player
until the root quest is engaged. The summon keeps its template quest-giver flag
and creature_queststarter relation, so the root quest can be accepted directly;
it despawns on accept, on leaving Dalaran, on logout, or after 5 minutes.
Eligibility: class is configured, player has no class-order garrison, has not
started the root quest, and CanTakeQuest passes (level/prereqs). The shared
tracking map is mutex-guarded since dismiss/logout/quest hooks can fire from
other map threads.
Only Hunter is wired for now (40400 -> 40419 -> ... -> 40955 is intact). The
other 11 classes' Prev/Next chain links dead-end mid-campaign and need repair
before their messenger rows are added.
* Fixed spells being interrupted when casting channeled spells with SPELL_ATTR5_ALLOW_ACTIONS_DURING_CHANNEL
* Check both attributes when starting autorepeat spells