Skip to content

Twin Emperors: add spell-driven encounter scripts and strict multiplier suppression #6

Description

@RovxBot

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions