Objective
Extend Twin Emperors scripting and multiplier control so the encounter reacts from explicit events instead of waiting for passive aura fallout or late positional inference.
Why this exists
Current AQ40 Twin scripting only hooks teleport, but the actual failures are being driven by other mechanics too.
Observed locally:
RaidAq40Scripts.cpp currently installs only Aq40TwinEmperorsListenerScript for TwinTeleport.
- The supplied combat log shows repeated Twin hazards that are not currently first-class script events:
68 Heal Brother events
210 Blizzard events
19 Arcane Burst events
16 Uppercut events
8 Unbalancing Strike events
- The combat log does not expose an obvious visible teleport sequence, which makes server-side spell hooks even more important for reliable timing.
Current code hotspots
src/Ai/Raid/Aq40/Util/RaidAq40Scripts.cpp
src/Ai/Raid/Aq40/Util/RaidAq40TwinEmperors.cpp
- teleport window / pickup memory / melee recovery timers
src/Ai/Raid/Aq40/Multiplier/RaidAq40Multipliers.cpp
- Twin movement ownership suppression
- target / pet / follow / flee suppression
src/Ai/Raid/Aq40/Action/RaidAq40Actions_TwinEmperors.cpp
Aq40TwinEmperorsDodgeBlizzardAction
Aq40TwinEmperorsAvoidVeklorAction
Aq40TwinEmperorsHoldSplitAction
Required implementation
- Extend AQ40 Twin scripting beyond
TwinTeleport to capture at least:
TwinBlizzard
TwinArcaneBurst
TwinHealBrother
TwinUppercut
TwinUnbalancingStrike
- Use direct spell listeners where possible and delayed creature polling only where direct hooks are insufficient.
- Record event state by
instanceId.
- Use scripted events to:
- request immediate spell interrupts for bots that must move now
- arm or refresh tank recovery windows
- trigger
EmergencySplitRecovery immediately on Heal Brother
- trigger ranged / pet safety transitions on
Arcane Burst and Blizzard windows
- Tighten the Twin multiplier so generic movement, assist, follow, flee, current-target casts, and pet attack logic cannot override encounter-owned behavior during Twin recovery phases.
- Keep the logic strategy-scoped and cheap outside active Twin conditions.
Reference patterns
Validation
- Supported comp test across multiple teleports and hazard overlaps.
- Success criteria:
- encounter reactions fire from explicit scripted state, not just after logs show damage already happened
Heal Brother triggers emergency recovery immediately
- Blizzard / Arcane Burst cause immediate interrupt-and-move behavior when appropriate
- generic AI does not steal movement ownership during Twin recovery windows
Related
- Can begin in parallel with
#2, but the final event model should align with the new phase/state definitions.
- Unblocks cleaner implementations for
#3, #4, and #5.
Objective
Extend Twin Emperors scripting and multiplier control so the encounter reacts from explicit events instead of waiting for passive aura fallout or late positional inference.
Why this exists
Current AQ40 Twin scripting only hooks teleport, but the actual failures are being driven by other mechanics too.
Observed locally:
RaidAq40Scripts.cppcurrently installs onlyAq40TwinEmperorsListenerScriptforTwinTeleport.68Heal Brotherevents210Blizzard events19Arcane Burst events16Uppercut events8Unbalancing Strike eventsCurrent code hotspots
src/Ai/Raid/Aq40/Util/RaidAq40Scripts.cppsrc/Ai/Raid/Aq40/Util/RaidAq40TwinEmperors.cppsrc/Ai/Raid/Aq40/Multiplier/RaidAq40Multipliers.cppsrc/Ai/Raid/Aq40/Action/RaidAq40Actions_TwinEmperors.cppAq40TwinEmperorsDodgeBlizzardActionAq40TwinEmperorsAvoidVeklorActionAq40TwinEmperorsHoldSplitActionRequired implementation
TwinTeleportto capture at least:TwinBlizzardTwinArcaneBurstTwinHealBrotherTwinUppercutTwinUnbalancingStrikeinstanceId.EmergencySplitRecoveryimmediately onHeal BrotherArcane Burstand Blizzard windowsReference patterns
#2363: ICC V2, Autogear BiS cmd mod-playerbots/mod-playerbots#2363#2258: Implement Battle for Mount Hyjal Strategies mod-playerbots/mod-playerbots#2258EredarTwinsSpellListenerScriptValidation
Heal Brothertriggers emergency recovery immediatelyRelated
#2, but the final event model should align with the new phase/state definitions.#3,#4, and#5.