-- HexCD Bundled Plan Data
-- Generated: 2026-04-14T00:39:19.093Z
-- This file is auto-loaded by the addon. Plans here are merged with SavedVariables.
-- Structure: BundledPlans[encounterID][difficulty] = plan

HexCDReminder = HexCDReminder or {}
HexCDReminder.BundledPlans = HexCDReminder.BundledPlans or {}
HexCDReminder.BundledPlans[3176] = HexCDReminder.BundledPlans[3176] or {}
HexCDReminder.BundledPlans[3176][4] = {
  encounterID = 3176,
  difficulty = 4,
  patchVersion = "12.0.5 (Beta)",
  fightDurationSec = 358,
  damageTimeline = {
    {
      timeSec = 23,
      description = "Umbral Collapse #1 — soak split burst",
      raidDamage = 3000000,
      severity = "medium",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 45,
      description = "Dark Upheaval + Word of Recall — tank damage spike",
      raidDamage = 4500000,
      severity = "medium",
    },
    {
      timeSec = 66,
      description = "Desolation #1 (soaked: 300k / unsoaked: 1.8M raid-wide)",
      raidDamage = 1800000,
      severity = "high",
      abilityGameIDs = {
        1270949,
        1270951,
      },
    },
    {
      timeSec = 95,
      description = "Umbral Collapse #2 — soak split burst",
      raidDamage = 3700000,
      severity = "medium",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 132,
      description = "Light's End + Shadow's Advance — add spawn + knockback",
      raidDamage = 3200000,
      severity = "medium",
      abilityGameIDs = {
        1253691,
        1260816,
      },
    },
    {
      timeSec = 185,
      description = "Umbral Collapse #3 + general AoE",
      raidDamage = 3900000,
      severity = "high",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 217,
      description = "Desolation #2 (soaked: 300k / unsoaked: 1.9M raid-wide)",
      raidDamage = 1900000,
      severity = "critical",
      abilityGameIDs = {
        1270949,
        1270951,
      },
    },
    {
      timeSec = 265,
      description = "Umbral Collapse + Void Fall cluster — deadly burst",
      raidDamage = 4200000,
      severity = "high",
      abilityGameIDs = {
        1249262,
        1258883,
      },
    },
    {
      timeSec = 300,
      description = "Gnashing Void + Void Fall — highest sustained damage window",
      raidDamage = 5600000,
      severity = "critical",
      abilityGameIDs = {
        1255680,
        1258883,
      },
    },
    {
      timeSec = 348,
      description = "March of the Endless — enrage, wipes in 3-5s",
      raidDamage = 6700000,
      severity = "lethal",
      abilityGameIDs = {
        1260981,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 60,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pre-heal before Desolation #1 — covers the 1.8M unsoaked scenario or tops raid for the soaked DoT.",
        },
        {
          timeSec = 90,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on Umbral Collapse #2 soak target — front-loaded DoT is dangerous.",
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second Convoke (~70s effective CD) for Shadow's Advance knockback + add spawn healing.",
        },
        {
          timeSec = 180,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          rationale = "Pre-ramp before the sustained high-damage window (3:00-5:00). 30s of enhanced healing covers Umbral Collapse #3.",
        },
        {
          timeSec = 185,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on Umbral Collapse #3 soak target.",
        },
        {
          timeSec = 200,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Third Convoke to stabilize before Desolation #2.",
        },
        {
          timeSec = 270,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Fourth Convoke for the Void Fall cluster burst at 4:25.",
        },
        {
          timeSec = 280,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on tank during Gnashing Void + Void Fall window.",
        },
        {
          timeSec = 295,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Save Tranquility for the highest sustained damage window (4:55-5:00). 8s channel covers the critical Gnashing Void + Void Fall burst.",
        },
        {
          timeSec = 340,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final Convoke — last-ditch healing before March of the Endless enrage.",
        },
      },
    },
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 2,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered spell for early raid damage.",
        },
        {
          timeSec = 31,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "First Dream Flight covers Umbral Collapse #1 aftermath.",
        },
        {
          timeSec = 44,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind after Dark Upheaval burst — reverses heavy raid damage.",
        },
        {
          timeSec = 88,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip the Scales for Umbral Collapse #2.",
        },
        {
          timeSec = 154,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for Shadow's Advance knockback + add spawn healing.",
        },
        {
          timeSec = 180,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip the Scales for Umbral Collapse #3 window.",
        },
      },
    },
  },
  notes = "Tranquility is saved for the 4:55 critical window — do NOT use it earlier. Convoke with ~70s effective CD (talent-reduced) gives 5 uses across a 6-minute fight. Incarnation at 3:00 covers the escalating damage phase. If Desolation soaks are assigned properly (tank soaks), the 1:06 and 3:37 windows drop from HIGH/CRITICAL to LOW.",
}
HexCDReminder.BundledPlans[3176][5] = {
  encounterID = 3176,
  difficulty = 5,
  patchVersion = "12.0.5",
  fightDurationSec = 420,
  damageTimeline = {
    {
      timeSec = 25,
      description = "Lingering Darkness #1 — multi-target DoT after UC targeting debuffs",
      raidDamage = 4500000,
      severity = "medium",
      abilityGameIDs = {
        457273,
        1280075,
      },
    },
    {
      timeSec = 38,
      description = "Umbral Collapse #1a — first detonation (466k base Mythic, reduced by stacking within 10yd)",
      raidDamage = 5800000,
      severity = "high",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 45,
      description = "Umbral Collapse #1b — second detonation 7.5s later + Dark Upheaval overlap",
      raidDamage = 6200000,
      severity = "high",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 65,
      description = "Oblivion's Wrath #1 — massive single-target burst (~285k), requires personal defensives",
      raidDamage = 3500000,
      severity = "medium",
      abilityGameIDs = {
        1260718,
      },
    },
    {
      timeSec = 97,
      description = "Shadow's Advance #1 — 3 Voidshapers spawn + raid-wide knockback (163k+)",
      raidDamage = 5000000,
      severity = "medium",
      abilityGameIDs = {
        1253691,
      },
    },
    {
      timeSec = 118,
      description = "Umbral Collapse #2a + Lingering Darkness — first detonation with claimed zone damage stacking",
      raidDamage = 6500000,
      severity = "high",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 125,
      description = "Umbral Collapse #2b — second detonation, Concentrated Void adds pulsing Dark Radiation",
      raidDamage = 6800000,
      severity = "high",
      abilityGameIDs = {
        1249262,
        1250991,
      },
    },
    {
      timeSec = 175,
      description = "Void Fall #1 — rain of destruction at multiple locations (~350k per hit within 7yd)",
      raidDamage = 5200000,
      severity = "high",
      abilityGameIDs = {
        1258883,
        1269160,
      },
    },
    {
      timeSec = 203,
      description = "Shadow's Advance #2 — more adds + knockback, Voidmaw rushes on Mythic",
      raidDamage = 5500000,
      severity = "medium",
      abilityGameIDs = {
        1253691,
      },
    },
    {
      timeSec = 224,
      description = "Umbral Collapse #3a — escalating damage from accumulated claimed zones",
      raidDamage = 7200000,
      severity = "high",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 231,
      description = "Umbral Collapse #3b — second detonation + Lingering Darkness stacking",
      raidDamage = 7500000,
      severity = "critical",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 260,
      description = "Oblivion's Wrath #2 + Gnashing Void — burst + tank DoT stacking",
      raidDamage = 6000000,
      severity = "high",
      abilityGameIDs = {
        1260718,
        1255680,
      },
    },
    {
      timeSec = 304,
      description = "*** HARD WINDOW *** UC #4a + Lingering Darkness — most claimed zones active, 8-9M 15s bucket",
      raidDamage = 8500000,
      severity = "critical",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 311,
      description = "Umbral Collapse #4b — second detonation in the hardest sustained window",
      raidDamage = 9000000,
      severity = "critical",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 365,
      description = "Void Fall #2 — late-fight rain of destruction, less room to dodge with claimed zones",
      raidDamage = 7000000,
      severity = "high",
      abilityGameIDs = {
        1258883,
        1269160,
      },
    },
    {
      timeSec = 387,
      description = "Shadow's Advance #4 — massive (hit 8 targets for 1.6M in top parse kill)",
      raidDamage = 10000000,
      severity = "critical",
      abilityGameIDs = {
        1253691,
      },
    },
    {
      timeSec = 408,
      description = "Umbral Collapse #5a — final pair, maximum claimed zone damage stacking",
      raidDamage = 9500000,
      severity = "critical",
      abilityGameIDs = {
        1249262,
      },
    },
    {
      timeSec = 415,
      description = "Umbral Collapse #5b — if still alive, kill the boss NOW",
      raidDamage = 10000000,
      severity = "lethal",
      abilityGameIDs = {
        1249262,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Hexastyle",
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (truncated ~9s pull ramp). WG + SM + Rejuvs before Convoke.",
        },
        {
          timeSec = 9,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 1. Stabilizes raid through initial Dark Upheaval pulses + Lingering Darkness at 0:25.",
        },
        {
          timeSec = 13,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 18,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp anchored 20s before UC#1. SM + NS + RGs + refresh Rejuvs + build Abundance.",
        },
        {
          timeSec = 34,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 anchored 4s before UC#1a (~8s channel). 466k base Mythic. Extends HoTs by 10s via Flourish.",
        },
        {
          timeSec = 42,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s). Max Abundance — free, ~100% crit Regrowths post-Tranq.",
        },
        {
          timeSec = 48,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~5s. Brief mana recovery.",
        },
        {
          timeSec = 27,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#1 dispel 1 — dispel marked player at Add 1 (fast, ~4s after apply). Strips 1 Cosmic Shell stack.",
        },
        {
          timeSec = 38,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#1 dispel 2 — overflow target after Add 2 is handled by shamans (~15s after apply).",
        },
        {
          timeSec = 53,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (9s). Prep for Oblivion's Wrath at 1:05.",
        },
        {
          timeSec = 62,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 2. Covers Oblivion's Wrath #1 at 1:05 (285k burst).",
        },
        {
          timeSec = 66,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 71,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~22s. Mana recovery before Shadow's Advance #1 at 1:37.",
        },
        {
          timeSec = 107,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#2 dispel 1 — fast dispel at Add 1 (~4s after apply). Self-dispel OK if you have VM.",
        },
        {
          timeSec = 117,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#2 dispel 2 — overflow target (~14s after apply). Watch: UC#2 coming at 1:58.",
        },
        {
          timeSec = 93,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp anchored 25s before UC#2. Prep for pair at 1:58+2:05.",
        },
        {
          timeSec = 115,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 3 anchored 3s before UC#2a. Burst heal through 1:58.",
        },
        {
          timeSec = 119,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 130,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~34s. Extended mana recovery — Gnashing Void at 2:28 is mostly tank damage. Conserve for the push.",
        },
        {
          timeSec = 213,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#3 dispel 1 — fast dispel at Add 1. Do NOT dispel during Tranq channel (ends ~229s).",
        },
        {
          timeSec = 228,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#3 dispel 2 — overflow target. Safe to dispel after Tranq ends.",
        },
        {
          timeSec = 148,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on tank/soak target during Void Fall #1 at 2:55.",
        },
        {
          timeSec = 164,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (22s). Covers Void Fall #1 at 2:55 and Shadow's Advance #2 at 3:23.",
        },
        {
          timeSec = 186,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 4. Shadow's Advance #2 knockback + Voidmaw rush healing.",
        },
        {
          timeSec = 190,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 195,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~4s. Brief mana recovery before Tranq ramp.",
        },
        {
          timeSec = 199,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp anchored 25s before UC#3. Critical ramp for Tranq 2.",
        },
        {
          timeSec = 221,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 anchored 3s before UC#3a (~8s channel). Escalating damage from claimed zones.",
        },
        {
          timeSec = 229,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s). Max Abundance Regrowths post-Tranq.",
        },
        {
          timeSec = 235,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (7s). Quick re-ramp for Convoke 5 under post-Tranq Abundance.",
        },
        {
          timeSec = 242,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 5. UC#3b at 3:51 aftermath — burst throughput under max Abundance.",
        },
        {
          timeSec = 248,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~25s. Mana recovery before Oblivion's Wrath #2.",
        },
        {
          timeSec = 293,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#4 dispel 1 — fast dispel at Add 1. ⚠️ UC#4 HARD WINDOW coming at 5:04 — get dispels done before ramp.",
        },
        {
          timeSec = 307,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#4 dispel 2 — overflow target. Prioritize ramp for UC#4 over slow dispel if needed.",
        },
        {
          timeSec = 279,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp anchored 25s before UC#4 HARD WINDOW — most claimed zones active.",
        },
        {
          timeSec = 301,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 6 anchored 3s before UC#4a. Hardest sustained window.",
        },
        {
          timeSec = 305,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 320,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~15s. Mana recovery — second druid Tree covers UC#4b aftermath.",
        },
        {
          timeSec = 331,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark anchored to UC#4 (+27s after UC#4a for UC#4b soak target).",
        },
        {
          timeSec = 397,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#5 dispel 1 — fast dispel at Add 1. Final wave — every GCD counts toward kill.",
        },
        {
          timeSec = 412,
          abilityGameID = 88423,
          abilityName = "⚡ Dispel (Nature's Cure)",
          rationale = "VM#5 dispel 2 — overflow. ⚠️ Do NOT let Tranq 3 channel prevent this dispel. UC#5 at 6:48.",
        },
        {
          timeSec = 345,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (22s). Final ramp — Void Fall #2 at 6:05, Shadow's Advance #4 at 6:27, UC#5 at 6:48.",
        },
        {
          timeSec = 367,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 7. Shadow's Advance #4 at 6:27 (1.6M on 8 targets). Covers Void Fall #2.",
        },
        {
          timeSec = 371,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 381,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp anchored 27s before UC#5. Final ramp.",
        },
        {
          timeSec = 403,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 3 anchored 5s before UC#5a (~8s channel). Final UC, maximum damage. Kill the boss.",
        },
        {
          timeSec = 415,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark during UC#5b. (331+90=421 earliest, placed at 415 for urgency).",
        },
        {
          timeSec = 411,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn RG (~12s). Max Abundance — spam Regrowth.",
        },
        {
          timeSec = 418,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 8. Final Convoke during UC#5b. Everything you have — kill the boss.",
        },
      },
    },
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Kodyäk",
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Pull Convoke (offset from Hexastyle). Raw throughput on opening damage.",
        },
        {
          timeSec = 60,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke for Oblivion's Wrath at 1:05. Offset from Hexastyle's C2 at 1:30.",
        },
        {
          timeSec = 110,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 anchored 8s before UC#2. Hexastyle uses Convoke here, Kodyäk covers with Tranq.",
        },
        {
          timeSec = 120,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke anchored ON UC#2. Mid-UC recovery burst.",
        },
        {
          timeSec = 180,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke for Void Fall #1 at 2:55 and Shadow's Advance #2 at 3:23.",
        },
        {
          timeSec = 240,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke for Oblivion's Wrath #2 at 4:20. Pairs with Hexastyle's C5 for full coverage.",
        },
        {
          timeSec = 295,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 anchored 9s before UC#4 (HARDEST WINDOW). Combined with Hexastyle Convoke 6.",
        },
        {
          timeSec = 355,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke for Void Fall #2 at 6:05. Pre-kill push.",
        },
        {
          timeSec = 410,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Final Convoke anchored ON UC#5. Everything on the table — kill the boss.",
        },
      },
    },
    {
      className = "Shaman",
      specName = "Restoration",
      playerName = "Cellaresto",
      assignments = {
        {
          timeSec = 35,
          abilityGameID = 98008,
          abilityName = "Spirit Link Totem",
          rationale = "SLT anchored 3s before UC#1. Equalizes HP during the double detonation.",
        },
        {
          timeSec = 118,
          abilityGameID = 108280,
          abilityName = "Healing Tide Totem",
          rationale = "HTT anchored ON UC#2. Passive healing during the double detonation gap.",
        },
        {
          timeSec = 220,
          abilityGameID = 98008,
          abilityName = "Spirit Link Totem",
          rationale = "SLT anchored 4s before UC#3. Equalizes through escalating damage.",
        },
        {
          timeSec = 300,
          abilityGameID = 108280,
          abilityName = "Healing Tide Totem",
          rationale = "HTT anchored 4s before UC#4 (HARD WINDOW). Combines with Kodyäk Tranq.",
        },
        {
          timeSec = 395,
          abilityGameID = 98008,
          abilityName = "Spirit Link Totem",
          rationale = "SLT anchored 13s before UC#5. Final SLT — equalize through the kill push.",
        },
      },
    },
    {
      className = "Paladin",
      specName = "Holy",
      playerName = "Bubbléoseven",
      assignments = {
        {
          timeSec = 38,
          abilityGameID = 31821,
          abilityName = "Aura Mastery",
          rationale = "AM anchored ON UC#1. Shadow damage reduction covers both detonations.",
        },
        {
          timeSec = 224,
          abilityGameID = 31821,
          abilityName = "Aura Mastery",
          rationale = "AM anchored ON UC#3. Pairs with Cellaresto SLT and Hexastyle Tranq 2.",
        },
        {
          timeSec = 408,
          abilityGameID = 31821,
          abilityName = "Aura Mastery",
          rationale = "AM anchored ON UC#5. Final AM — maximum shadow damage reduction for the kill push.",
        },
      },
    },
    {
      className = "Priest",
      specName = "Holy",
      playerName = "Kitti",
      assignments = {
        {
          timeSec = 40,
          abilityGameID = 200183,
          abilityName = "Apotheosis",
          rationale = "Apotheosis anchored ON UC#1 recovery. Enhanced Holy Words cover the double detonation gap.",
        },
        {
          timeSec = 118,
          abilityGameID = 64843,
          abilityName = "Divine Hymn",
          rationale = "Divine Hymn anchored ON UC#2. 8s channel covers both detonations.",
        },
        {
          timeSec = 160,
          abilityGameID = 200183,
          abilityName = "Apotheosis",
          rationale = "Apotheosis for Void Fall #1 at 2:55 — spot healing targets hit by 350k bursts.",
        },
        {
          timeSec = 304,
          abilityGameID = 64843,
          abilityName = "Divine Hymn",
          rationale = "Divine Hymn anchored ON UC#4 (HARD WINDOW). Combined with Kodyäk Tranq + Cellaresto HTT.",
        },
        {
          timeSec = 310,
          abilityGameID = 200183,
          abilityName = "Apotheosis",
          rationale = "Apotheosis anchored to UC#4 (+6s for UC#4b). Enhanced Holy Words for hardest sustained window.",
        },
        {
          timeSec = 400,
          abilityGameID = 200183,
          abilityName = "Apotheosis",
          rationale = "Final Apotheosis anchored 8s before UC#5. Everything available.",
        },
      },
    },
  },
  notes = "Mythic Averzian is a 7-minute single-phase escalating fight. Umbral Collapse pairs (~80-90s cadence) are the primary healing check — 466k base Mythic (vs 323k Heroic). Plan places Tranqs on UC#1, UC#3, UC#5 (Hexastyle) and UC#2, UC#4 (Kodyäk) for full druid coverage of every pair. Cellaresto SLT covers UC#1/3/5, HTT covers UC#2/4. Bubbléoseven AM on UC#1/3/5. Kitti Hymn on UC#2/4. Every UC pair has at least 2 healing CDs assigned. UC#4 at 5:04 is the hardest window with 3 CDs (Kodyäk Tranq + Cellaresto HTT + Kitti Hymn). Convoke effective CD is ~55-60s — 8 uses for Hexastyle across the fight. Cross-validated against #1 parse Kaelayze (v1kXwzdynD976YKQ f35, 165k HPS, 7 Convokes + 2 Tranqs). Pattern: Ramp (22s) → CD (Convoke/Tranq) → Burn (Regrowth chain). Cat weave windows are critical for mana — the 2:25-3:04 gap and 5:35-5:45 gap are the longest safe recovery windows. DISPEL PLAN: Resto Druid handles 2 Nature's Cure per Void Marked wave (10 total across fight). VM waves at 23s, 103s, 209s, 289s, 393s. Dispel at ~4s (fast, at Add 1) and ~14s (overflow). DO NOT dispel during Tranq/Convoke channels. Kaelayze pattern: self-dispel OK when you have VM. Resto Shamans (Purify Spirit) handle 70% of dispel volume — druid is secondary dispeller. Black Miasma (Abyssal Malus curse) must be decursed by Druid/Mage/Shaman — 70% haste red for 15s is lethal on a healer. Voidmaw RUSHES on Mythic (not crawls) — adds must die before reaching portals. No time to kite.",
}
HexCDReminder.BundledPlans[3177] = HexCDReminder.BundledPlans[3177] or {}
HexCDReminder.BundledPlans[3177][4] = {
  encounterID = 3177,
  difficulty = 4,
  patchVersion = "12.0.5 (Beta)",
  fightDurationSec = 300,
  damageTimeline = {
    {
      timeSec = 15,
      description = "Primordial Roar #1 — pull-in + knockback (350k raid-wide)",
      raidDamage = 3500000,
      severity = "medium",
      abilityGameIDs = {
        1260052,
      },
    },
    {
      timeSec = 30,
      description = "Shadowclaw Slam #1 — tank soak + Aftershock waves",
      raidDamage = 2500000,
      severity = "medium",
      abilityGameIDs = {
        1241692,
        1272328,
        1276584,
      },
    },
    {
      timeSec = 55,
      description = "Shadowclaw Slam #2 + Aftershock",
      raidDamage = 2500000,
      severity = "medium",
      abilityGameIDs = {
        1272328,
        1276584,
      },
    },
    {
      timeSec = 75,
      description = "Parasite Expulsion — Blistercreep adds spawn + ichor splash",
      raidDamage = 2800000,
      severity = "medium",
      abilityGameIDs = {
        1275556,
        1275558,
      },
    },
    {
      timeSec = 95,
      description = "Blisterburst wave — adds die near walls, 272k + 97k raid-wide + 100% Shadow debuff",
      raidDamage = 3500000,
      severity = "high",
      abilityGameIDs = {
        1259186,
      },
    },
    {
      timeSec = 102,
      description = "Void Breath #1 — 3.1M frontal beam + Dark Energy zones",
      raidDamage = 3100000,
      severity = "critical",
      abilityGameIDs = {
        1259921,
        1259923,
      },
    },
    {
      timeSec = 120,
      description = "Primordial Roar #2 — Gathering Void stack 2, sustained Shadow DoT ramping",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1260052,
        1272950,
      },
    },
    {
      timeSec = 155,
      description = "Shadowclaw Slam + Parasite Expulsion overlap — heavy multi-source damage",
      raidDamage = 4500000,
      severity = "high",
      abilityGameIDs = {
        1272328,
        1275558,
      },
    },
    {
      timeSec = 190,
      description = "Blisterburst wave #2 + Void Breath #2 — must dodge with debuff active",
      raidDamage = 5000000,
      severity = "critical",
      abilityGameIDs = {
        1259186,
        1259921,
      },
    },
    {
      timeSec = 210,
      description = "Primordial Roar #3 — Gathering Void stack 3, sustained damage now very high",
      raidDamage = 5500000,
      severity = "critical",
      abilityGameIDs = {
        1260052,
        1272950,
      },
    },
    {
      timeSec = 250,
      description = "Primordial Roar #4+ — soft enrage, Gathering Void overwhelms healing",
      raidDamage = 6500000,
      severity = "lethal",
      abilityGameIDs = {
        1260052,
        1272950,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Early Innervate to fuel opener ramp — top parses use at 4-26s for mana-neutral HoT blanketing.",
        },
        {
          timeSec = 15,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Opener Convoke at ~15s — aligns with Primordial Roar #1 (avg 16s across 8/10 top parses).",
        },
        {
          timeSec = 60,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranquility for Blisterburst wave — 7/10 top parses use Tranq at 46-67s to cover add death splash + Shadow debuff.",
        },
        {
          timeSec = 70,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second Convoke at ~70s — covers Blisterburst aftermath and Void Breath #1 recovery (avg 69s across 9 parses).",
        },
        {
          timeSec = 85,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark on Void Breath target or Blisterburst-debuffed player — top parses use at 81-85s.",
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Third Convoke at ~130s — covers Slam + Parasite Expulsion overlap (avg 133s across 9 parses).",
        },
        {
          timeSec = 128,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark for Primordial Roar #2 window — 5/10 parses use at 119-139s as Gathering Void ramps.",
        },
        {
          timeSec = 190,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Fourth Convoke at ~190s — covers Blisterburst #2 + Void Breath #2, deadliest overlap (avg 192s across 8 parses).",
        },
        {
          timeSec = 220,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Second Innervate at ~220s — mana critical in soft enrage phase (7/10 parses use at 220-272s).",
        },
        {
          timeSec = 230,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark for Roar #3+ soft enrage — 5/10 parses use at 211-263s on lowest HP player.",
        },
        {
          timeSec = 250,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Fifth Convoke for soft enrage — Gathering Void overwhelms sustained healing (avg 247s across 5 parses).",
        },
      },
    },
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 8,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered spell.",
        },
        {
          timeSec = 27,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "First Dream Flight covers initial Blisterburst damage.",
        },
        {
          timeSec = 62,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind after Roar #1 — reverses the big raid burst.",
        },
        {
          timeSec = 97,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip the Scales for Gathering Void stack 2.",
        },
        {
          timeSec = 102,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for Roar #1 aftermath + Void Breath damage.",
        },
        {
          timeSec = 182,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Zephyr for Roar #2 — AoE damage reduction during Gathering Void stack 3.",
        },
        {
          timeSec = 185,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip the Scales during Roar #2 window.",
        },
        {
          timeSec = 220,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for post-Roar #2 recovery.",
        },
        {
          timeSec = 232,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Second Rewind for Roar #3 — deadliest moment of the fight.",
        },
      },
    },
  },
  notes = "Based on top 10 Heroic Resto Druid parses (163k–136k HPS, April 2026). Convoke builds dominate (7/10 top parses) — cast every ~60s for consistent burst throughput. Tranquility at ~60s covers the first Blisterburst wave; save second Tranq for soft enrage (220s+). Ironbark windows: Void Breath (~85s), Roar #2 (~128s), soft enrage (~230s). Innervate early (~5s) and late (~220s) for mana-neutral ramp phases.",
}
HexCDReminder.BundledPlans[3177][5] = {
  encounterID = 3177,
  difficulty = 5,
  patchVersion = "12.0.5",
  fightDurationSec = 360,
  damageTimeline = {
    {
      timeSec = 12,
      description = "Primordial Roar #1 — pull-in + knockback (2.1M raid-wide)",
      raidDamage = 2133000,
      severity = "medium",
      abilityGameIDs = {
        1260052,
      },
    },
    {
      timeSec = 60,
      description = "Parasite Expulsion #1 — 6.4M add spawn splash, biggest early spike",
      raidDamage = 6400000,
      severity = "high",
      abilityGameIDs = {
        1275558,
      },
    },
    {
      timeSec = 90,
      description = "Blisterburst chain #1 — 3 wall breaks over 15s, 10M total raid damage",
      raidDamage = 10000000,
      severity = "critical",
      abilityGameIDs = {
        1259186,
      },
    },
    {
      timeSec = 105,
      description = "Dark Energy #1 — post-Void Breath zones, 8.1M spike window",
      raidDamage = 8100000,
      severity = "critical",
      abilityGameIDs = {
        1280101,
      },
    },
    {
      timeSec = 132,
      description = "Primordial Roar #2 — Gathering Void stack 2, 3.5M burst + sustained DoT",
      raidDamage = 3455000,
      severity = "high",
      abilityGameIDs = {
        1260052,
        1272950,
      },
    },
    {
      timeSec = 180,
      description = "Parasite Expulsion #2 — 6.2M add splash",
      raidDamage = 6200000,
      severity = "high",
      abilityGameIDs = {
        1275558,
      },
    },
    {
      timeSec = 210,
      description = "Blisterburst chain #2 — 9M over 15s with Dark Goo puddles",
      raidDamage = 9000000,
      severity = "critical",
      abilityGameIDs = {
        1259186,
        1243270,
      },
    },
    {
      timeSec = 225,
      description = "Dark Energy #2 — 9.3M spike, highest single damage event of the fight",
      raidDamage = 9300000,
      severity = "critical",
      abilityGameIDs = {
        1280101,
      },
    },
    {
      timeSec = 252,
      description = "Primordial Roar #3 — Gathering Void stack 3, 3.3M burst + heavy sustained",
      raidDamage = 3328000,
      severity = "high",
      abilityGameIDs = {
        1260052,
        1272950,
      },
    },
    {
      timeSec = 300,
      description = "Parasite Expulsion #3 — 6.4M add splash, final wave",
      raidDamage = 6400000,
      severity = "high",
      abilityGameIDs = {
        1275558,
      },
    },
    {
      timeSec = 330,
      description = "Blisterburst chain #3 + Dark Energy #3 — fight must end here",
      raidDamage = 8000000,
      severity = "lethal",
      abilityGameIDs = {
        1259186,
        1280101,
        1243270,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Hexastyle",
      assignments = {
        {
          timeSec = 3,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Self-cast. Funds opener ramp. 5/5 parses at 0-5s.",
        },
        {
          timeSec = 4,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×5 + WG×2 before Convoke 1.",
        },
        {
          timeSec = 12,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 1 for Primordial Roar #1. 1,096k eff (83% OH — establishes HoT blanket).",
        },
        {
          timeSec = 16,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 8 RG (~10s). Spend Convoke throughput + Abundance stacks.",
        },
        {
          timeSec = 28,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — mana recovery before Parasite Expulsion #1 ramp.",
        },
        {
          timeSec = 53,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×5 + WG×2 + SM before Convoke 2.",
        },
        {
          timeSec = 61,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 2 for Parasite Expulsion #1 (6.4M). 3,062k eff.",
        },
        {
          timeSec = 66,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 stacked 5s after Convoke. 15s mega-heal window. 2,187k eff (54% OH).",
        },
        {
          timeSec = 74,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 4 RG (~5s). Max Abundance post-Tranq.",
        },
        {
          timeSec = 80,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — mana recovery. Blisterburst chain at 90s is avoidance only.",
        },
        {
          timeSec = 124,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×5 + WG×2 + SM before Convoke 3.",
        },
        {
          timeSec = 132,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 3 for Primordial Roar #2 (3.5M). 2,244k eff.",
        },
        {
          timeSec = 136,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 6 RG (~8s).",
        },
        {
          timeSec = 146,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — mana recovery before Parasite #2.",
        },
        {
          timeSec = 175,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×5 + WG×1 + SM before Convoke 4.",
        },
        {
          timeSec = 184,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 4 for Parasite Expulsion #2 (6.2M). 2,571k eff — best conversion, lowest OH%.",
        },
        {
          timeSec = 188,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 4 RG (~5s).",
        },
        {
          timeSec = 192,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Self-cast Innervate #2 — mana critical for soft enrage. Range 191-235s.",
        },
        {
          timeSec = 198,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — extended mana recovery through Dark Energy #2 (9.3M at 225s).",
        },
        {
          timeSec = 244,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×4 + WG×2 before Convoke 5.",
        },
        {
          timeSec = 252,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 5 for Primordial Roar #3 (3.3M + heavy sustained). 3,573k eff.",
        },
        {
          timeSec = 256,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 7 RG (~9s).",
        },
        {
          timeSec = 268,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — last mana recovery before final push.",
        },
        {
          timeSec = 298,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×6 + WG×2 before Convoke 6.",
        },
        {
          timeSec = 306,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 6 for Parasite #3 (6.4M). 3,958k eff — biggest heal, everything converts.",
        },
        {
          timeSec = 310,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 stacked 4s after Convoke 6. 15s mega-heal. 3,334k eff (37% OH). Critical save.",
        },
        {
          timeSec = 318,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 7 RG (~9s). Max Abundance post-Tranq.",
        },
      },
    },
  },
  notes = "Updated 2026-04-07 from top 5 Mythic Resto Druid parses (163k–158k HPS). Damage timeline verified from Frippoleaves kill log (ZA3J1DqXCKhr4zkd f32, 344s). Convoke builds: 5/5 top parses — zero Tree of Life, zero Flourish. Convoke 60s CD aligns with the 60s Parasite/Roar cadence. 6-7 casts per fight. Key technique: Convoke → Tranquility stacking (4-5s gap) on Parasite windows #1 and #3 creates 15s mega-heal windows. Tranq is NOT a standalone CD — it amplifies the Convoke window. Ramp: Rejuv x3 → WG → WG → Convoke. Double WG for mastery + Embrace of the Dream. Effective healing per Convoke INCREASES through fight (1.1M → 4.0M) as Primordial Power stacks reduce overhealing. Late Convokes are 2-3x more valuable than early ones. Innervate self-cast at ~3s and ~192s to fund ramp sequences. Ironbark optional — most top parsers skip some/all casts for GCD efficiency. Healer comps: 3-heal dominates (Pres Evoker + HPal + RDruid, or HPal + Monk + RDruid). Top players: Frippoleaves (Tarren Mill), Veljkovic (Frostmourne), Alentors (Twisting Nether).",
}
HexCDReminder.BundledPlans[3178] = HexCDReminder.BundledPlans[3178] or {}
HexCDReminder.BundledPlans[3178][4] = {
  encounterID = 3178,
  difficulty = 4,
  patchVersion = "12.0.5 (Beta)",
  fightDurationSec = 330,
  damageTimeline = {
    {
      timeSec = 20,
      description = "Void Howl #1 — spread damage + Voidorb spawns",
      raidDamage = 2000000,
      severity = "medium",
      abilityGameIDs = {
        1245302,
      },
    },
    {
      timeSec = 45,
      description = "Nullbeam → Nullzone — tether breaks cause raid-wide Shadow ticking",
      raidDamage = 3000000,
      severity = "high",
      abilityGameIDs = {
        1262688,
        1244672,
        1244413,
      },
    },
    {
      timeSec = 70,
      description = "Gloom soak — soakers take Gloomtouched DoT",
      raidDamage = 2500000,
      severity = "medium",
      abilityGameIDs = {
        1245500,
        1245554,
      },
    },
    {
      timeSec = 100,
      description = "Midnight Flames intermission — massive pulsing Shadow damage for 25s",
      raidDamage = 5500000,
      severity = "critical",
      abilityGameIDs = {
        1249748,
        1250071,
      },
    },
    {
      timeSec = 140,
      description = "Post-intermission: Nullzone + Void Howl overlap",
      raidDamage = 3500000,
      severity = "high",
      abilityGameIDs = {
        1244672,
        1245302,
      },
    },
    {
      timeSec = 180,
      description = "Gloom soak #2 + Nullsnap tethers — simultaneous raid damage",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1245500,
        1244413,
      },
    },
    {
      timeSec = 210,
      description = "Midnight Flames #2 — second intermission, higher damage due to accumulated debuffs",
      raidDamage = 6000000,
      severity = "critical",
      abilityGameIDs = {
        1249748,
        1250071,
      },
    },
    {
      timeSec = 260,
      description = "Post-intermission #2: overlapping mechanics — Nullzone + Void Howl + Gloom",
      raidDamage = 4500000,
      severity = "high",
      abilityGameIDs = {
        1244672,
        1245302,
        1245500,
      },
    },
    {
      timeSec = 310,
      description = "Midnight Flames #3 (if fight extends) — lethal sustained damage",
      raidDamage = 7000000,
      severity = "lethal",
      abilityGameIDs = {
        1249748,
        1250071,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 9,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "First Innervate on pull — fund the opening ramp.",
        },
        {
          timeSec = 11,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP start — 12 Rejuv + 3 RG + WG + SM for Tranquility at 0:33.",
        },
        {
          timeSec = 28,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke mid-ramp — extends Rejuv blanket, adds direct healing before Tranq.",
        },
        {
          timeSec = 32,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "Ramp continues — SM + NS + RG + Rejuv refresh, building Abundance for Tranq.",
        },
        {
          timeSec = 33,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "FULL RAMP → Tranquility 1 — covers Nullbeam tether breaks. Early Tranq unlocks 2nd use at 3:33.",
        },
        {
          timeSec = 47,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Regrowth burn — 12 RGs under max Abundance stacks (free, ~100% crit).",
        },
        {
          timeSec = 90,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 2 — pre-position for Midnight Flames #1 incoming at 1:40.",
        },
        {
          timeSec = 94,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Regrowth burn — 4 RGs post-Convoke.",
        },
        {
          timeSec = 145,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 3 — post-intermission Nullzone + Void Howl overlap.",
        },
        {
          timeSec = 149,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Regrowth burn — 4 RGs post-Convoke.",
        },
        {
          timeSec = 150,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on Nullzone tether target post-intermission.",
        },
        {
          timeSec = 195,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Second Innervate — fund the ramp into Midnight Flames #2.",
        },
        {
          timeSec = 196,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP start — 12 Rejuv + 3 RG + WG + SM for Tranquility at 3:38.",
        },
        {
          timeSec = 210,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke mid-ramp — extends HoTs into Midnight Flames #2.",
        },
        {
          timeSec = 214,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "Ramp continues — SM + NS + RG + Rejuv refresh, building Abundance for Tranq 2.",
        },
        {
          timeSec = 218,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "FULL RAMP → Tranquility 2 — covers Midnight Flames #2 (highest sustained damage).",
        },
        {
          timeSec = 232,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Regrowth burn — 12 RGs under max Abundance stacks after Tranq 2.",
        },
        {
          timeSec = 275,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 5 — post-intermission #2 triple overlap (Nullzone + Void Howl + Gloom).",
        },
        {
          timeSec = 279,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Regrowth burn — 4 RGs post-Convoke.",
        },
        {
          timeSec = 285,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on lowest HP player heading into late fight.",
        },
      },
    },
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 15,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered spell.",
        },
        {
          timeSec = 73,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight covers first major damage window.",
        },
        {
          timeSec = 75,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind after first intermission burst.",
        },
        {
          timeSec = 91,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip the Scales for post-intermission overlap.",
        },
        {
          timeSec = 153,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Zephyr for Midnight Flames intermission #1 — AoE DR.",
        },
        {
          timeSec = 188,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip the Scales for post-intermission healing.",
        },
        {
          timeSec = 209,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for sustained healing through intermission recovery.",
        },
        {
          timeSec = 285,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Fourth Tip the Scales for late fight damage.",
        },
        {
          timeSec = 321,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Third Dream Flight for final damage window.",
        },
        {
          timeSec = 340,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Second Rewind for late-fight emergency healing.",
        },
      },
    },
  },
  notes = "Wildstalker build (top parse meta). Convoke on ~60s CD paired with Nature's Swiftness. Tranq 1 at 0:33 (Nullbeam window) enables 2nd use at 3:38 (Midnight Flames #2). Both Tranqs get full 22s ramps with Convoke mid-ramp. Standalone Convokes used as raw burns on post-intermission overlaps. Innervate twice: pull ramp + pre-intermission #2 ramp.",
}
HexCDReminder.BundledPlans[3179] = HexCDReminder.BundledPlans[3179] or {}
HexCDReminder.BundledPlans[3179][4] = {
  encounterID = 3179,
  difficulty = 4,
  patchVersion = "12.0.5 (Beta)",
  fightDurationSec = 360,
  damageTimeline = {
    {
      timeSec = 25,
      description = "Twisting Obscurity #1 — chain bolt + 23s Shadow DoT on all players",
      raidDamage = 2500000,
      severity = "medium",
      abilityGameIDs = {
        1250686,
      },
    },
    {
      timeSec = 50,
      description = "Concentrated Void orb kills — stacking Dark Radiation DoT (8s)",
      raidDamage = 2000000,
      severity = "medium",
      abilityGameIDs = {
        1250991,
      },
    },
    {
      timeSec = 80,
      description = "Despotic Command — targets spread + Oppressive Darkness healing absorb on expiry",
      raidDamage = 2500000,
      severity = "medium",
      abilityGameIDs = {
        1260835,
        1248697,
      },
    },
    {
      timeSec = 100,
      description = "Entropic Unraveling #1 — 20s pulsing Shadow damage + Umbral Beams",
      raidDamage = 5500000,
      severity = "critical",
      abilityGameIDs = {
        1254018,
        1260030,
      },
    },
    {
      timeSec = 135,
      description = "Post-Unraveling: Twisting Obscurity + Dark Radiation overlap",
      raidDamage = 3500000,
      severity = "high",
      abilityGameIDs = {
        1250686,
        1250991,
      },
    },
    {
      timeSec = 170,
      description = "Despotic Command #2 + Concentrated Void orbs — sustained healing pressure",
      raidDamage = 3000000,
      severity = "high",
      abilityGameIDs = {
        1260835,
        1250991,
      },
    },
    {
      timeSec = 210,
      description = "Entropic Unraveling #2 — higher damage due to accumulated Torturous Extract pools",
      raidDamage = 6500000,
      severity = "critical",
      abilityGameIDs = {
        1254018,
        1260030,
      },
    },
    {
      timeSec = 250,
      description = "Post-Unraveling #2: overlapping mechanics in cramped arena",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1250686,
        1260835,
      },
    },
    {
      timeSec = 310,
      description = "Entropic Unraveling #3 — arena heavily polluted, healing very difficult",
      raidDamage = 7000000,
      severity = "lethal",
      abilityGameIDs = {
        1254018,
        1260030,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Hexastyle",
      assignments = {
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → raw Convoke into opening damage before Twisting Obscurity.",
        },
        {
          timeSec = 14,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 4x Regrowth after opener Convoke.",
        },
        {
          timeSec = 20,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — low damage window. Recover mana for first big ramp.",
        },
        {
          timeSec = 68,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → 12 Rejuv + WG + SM before Convoke + Tranq stack.",
        },
        {
          timeSec = 76,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "ramp → Convoke for Radiation overlap. Stacking with Tranq for 15s mega-heal.",
        },
        {
          timeSec = 82,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranq 1 stacked after Convoke. Covers Radiation wave — finishes BEFORE Unraveling beams at ~100s.",
        },
        {
          timeSec = 90,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → Regrowth chain under max Abundance stacks post-Tranq.",
        },
        {
          timeSec = 96,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave through Unraveling #1 beams. HoT blanket already up from Tranq ramp. Dodge beams, don't channel.",
        },
        {
          timeSec = 105,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on beam-clipped player during Unraveling #1.",
        },
        {
          timeSec = 130,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "RAMP → Rejuv spread before Convoke for post-Unraveling overlap.",
        },
        {
          timeSec = 140,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke for post-Unraveling Obscurity + Radiation overlap.",
        },
        {
          timeSec = 144,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → Regrowth chain after Convoke.",
        },
        {
          timeSec = 155,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — mana recovery before Unraveling #2.",
        },
        {
          timeSec = 195,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "RAMP → Rejuv spread before Convoke. Coordinate with Cellaresto SLT for Unraveling #2.",
        },
        {
          timeSec = 205,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke before Unraveling #2 at ~210s. No Tranq available — SLT + AM cover the beams.",
        },
        {
          timeSec = 209,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → Regrowth spam. Pre-load HoTs before beams start.",
        },
        {
          timeSec = 212,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on lowest HP player during Unraveling #2.",
        },
        {
          timeSec = 215,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave through Unraveling #2 beams. Dodge and let HoTs work.",
        },
        {
          timeSec = 240,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — final mana recovery before lethal Unraveling #3.",
        },
        {
          timeSec = 268,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → 12 Rejuv + WG + SM before Convoke + Tranq #2.",
        },
        {
          timeSec = 276,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "ramp → Convoke for pre-Unraveling #3 overlap. Stacking with Tranq.",
        },
        {
          timeSec = 282,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranq 2 stacked after Convoke. Covers late-fight overlap — finishes BEFORE Unraveling #3 beams at ~310s.",
        },
        {
          timeSec = 290,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → Regrowth chain under max Abundance post-Tranq.",
        },
        {
          timeSec = 300,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on tank during lethal Unraveling #3. Pre-applied before beams.",
        },
        {
          timeSec = 305,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave through Unraveling #3 beams. HoT blanket up from Tranq ramp. Boss must die here.",
        },
        {
          timeSec = 340,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → final Convoke for kill push after Unraveling #3.",
        },
      },
    },
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 10,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered spell.",
        },
        {
          timeSec = 32,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "First Dream Flight for initial damage burst.",
        },
        {
          timeSec = 36,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Early Rewind reverses the first Concentrated Void damage.",
        },
        {
          timeSec = 102,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip the Scales for Entropic Unraveling #1.",
        },
        {
          timeSec = 104,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Zephyr for Entropic Unraveling #1 — AoE DR on lethal burst.",
        },
        {
          timeSec = 152,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for sustained healing through Unraveling recovery.",
        },
        {
          timeSec = 192,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip the Scales for mid-fight damage window.",
        },
        {
          timeSec = 230,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Second Zephyr for Entropic Unraveling #2 — deadliest moment.",
        },
        {
          timeSec = 240,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Second Rewind for Unraveling #2 aftermath.",
        },
        {
          timeSec = 270,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Third Dream Flight during late-fight sustained damage.",
        },
      },
    },
  },
  notes = "Tranquility used BEFORE Unraveling windows — can't channel during spinning beams. Tranq #1 at ~82s (Radiation overlap, finishes before beams at ~100s). Tranq #2 at ~282s (pre-Unraveling #3, finishes before beams at ~310s). Cat weave through all 3 Unraveling beam phases — pre-applied HoTs sustain the raid. Unraveling #2 (~210s) has no Tranq — coordinate with Cellaresto SLT + Bubbléoseven AM. Cat weave between every damage window for mana recovery. Kill Concentrated Void orbs one at a time to avoid stacking Dark Radiation.",
}
HexCDReminder.BundledPlans[3179][5] = {
  encounterID = 3179,
  difficulty = 5,
  patchVersion = "12.0.5",
  fightDurationSec = 360,
  damageTimeline = {
    {
      timeSec = 20,
      description = "Twisting Obscurity #1 + Dark Radiation — sustained DoT pressure begins",
      raidDamage = 4400000,
      severity = "medium",
      abilityGameIDs = {
        1250686,
        1285504,
      },
    },
    {
      timeSec = 35,
      description = "Dark Radiation wave #1 — orb kills, 6.7M stacking DoT",
      raidDamage = 6700000,
      severity = "high",
      abilityGameIDs = {
        1285504,
      },
    },
    {
      timeSec = 65,
      description = "Despotic Command #1 + Twisting Obscurity — spread + sustained damage",
      raidDamage = 6300000,
      severity = "high",
      abilityGameIDs = {
        1260835,
        1250686,
      },
    },
    {
      timeSec = 80,
      description = "Dark Radiation wave #2 — 5.1M stacking DoT, Mythic Enduring Void respawns",
      raidDamage = 5100000,
      severity = "high",
      abilityGameIDs = {
        1285504,
      },
    },
    {
      timeSec = 105,
      description = "Entropic Unraveling #1 — 14.4M over 20s, pulsing Shadow + Umbral Beams. THE healing check.",
      raidDamage = 14400000,
      severity = "critical",
      abilityGameIDs = {
        1254018,
        1260030,
      },
    },
    {
      timeSec = 150,
      description = "Post-Unraveling #1: Twisting Obscurity + Dark Radiation overlap — 11M combined",
      raidDamage = 10900000,
      severity = "high",
      abilityGameIDs = {
        1250686,
        1285504,
      },
    },
    {
      timeSec = 195,
      description = "Despotic Command #2 + Dark Radiation + Twisting Obscurity — triple overlap",
      raidDamage = 12700000,
      severity = "critical",
      abilityGameIDs = {
        1260835,
        1285504,
        1250686,
      },
    },
    {
      timeSec = 230,
      description = "Entropic Unraveling #2 — 14.7M over 20s, arena polluted with Torturous Extract",
      raidDamage = 14700000,
      severity = "critical",
      abilityGameIDs = {
        1254018,
        1260030,
      },
    },
    {
      timeSec = 275,
      description = "Post-Unraveling #2: Dark Radiation + Twisting Obscurity — 10M sustained",
      raidDamage = 10200000,
      severity = "high",
      abilityGameIDs = {
        1285504,
        1250686,
      },
    },
    {
      timeSec = 320,
      description = "Final phase: Twisting Obscurity + Dark Radiation + Despotic — 14M sustained, boss must die",
      raidDamage = 14500000,
      severity = "lethal",
      abilityGameIDs = {
        1250686,
        1285504,
        1260835,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Hexastyle",
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Self-cast. Funds opener ramp. 4/5 parses at 8-36s.",
        },
        {
          timeSec = 20,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×6 + WG×1 + SM before Convoke 1.",
        },
        {
          timeSec = 30,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 1 for Obscurity #1 + Radiation wave #1. Range 28-32s.",
        },
        {
          timeSec = 35,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 stacked 5s after Convoke. 15s mega-heal. Covers Radiation wave #1 (6.7M).",
        },
        {
          timeSec = 43,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 11 RG (~13s). Max Abundance post-Tranq.",
        },
        {
          timeSec = 56,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — mana recovery before Radiation wave #2.",
        },
        {
          timeSec = 72,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×5 + WG×2 + SM before Convoke 2.",
        },
        {
          timeSec = 80,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 2 for Radiation wave #2 + pre-Unraveling. Range 75-90s.",
        },
        {
          timeSec = 84,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 8 RG (~10s).",
        },
        {
          timeSec = 96,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — Unraveling #1 at 105s covered by raid CDs. Recover mana.",
        },
        {
          timeSec = 142,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×5 + WG×2 before Convoke 3.",
        },
        {
          timeSec = 150,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 3 for post-Unraveling #1 overlap (11M). Range 148-154s.",
        },
        {
          timeSec = 154,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 8 RG (~10s).",
        },
        {
          timeSec = 166,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — mana recovery before Unraveling #2 ramp.",
        },
        {
          timeSec = 195,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Self-cast Innervate #2 — mana critical. Range 188-218s.",
        },
        {
          timeSec = 200,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×3 + WG×2 before Convoke 4.",
        },
        {
          timeSec = 208,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 4 for Despotic + Radiation triple overlap (12.7M) into Unraveling #2. Deadliest window.",
        },
        {
          timeSec = 213,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 stacked 5s after Convoke 4. 15s mega-heal through Unraveling #2 (14.7M). Critical save.",
        },
        {
          timeSec = 221,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 6 RG (~8s). Max Abundance post-Tranq.",
        },
        {
          timeSec = 234,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — mana recovery after Unraveling #2.",
        },
        {
          timeSec = 265,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×2 + WG×1 before Convoke 5.",
        },
        {
          timeSec = 273,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 5 for post-Unraveling #2 overlap (10M). Range 271-277s.",
        },
        {
          timeSec = 277,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 4 RG (~5s).",
        },
        {
          timeSec = 284,
          abilityGameID = 768,
          abilityName = "Cat Form",
          rationale = "cat weave — final mana recovery before kill push.",
        },
        {
          timeSec = 314,
          abilityGameID = 774,
          abilityName = "Rejuvenation",
          rationale = "FULL RAMP → Rejuv×5 + WG×2 + SM before Convoke 6.",
        },
        {
          timeSec = 322,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 6 for final Obscurity + Radiation + Despotic triple overlap (14.5M). Boss must die.",
        },
        {
          timeSec = 326,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "burn → 10 RG (~12s). Everything you have.",
        },
      },
    },
  },
  notes = "Updated 2026-04-07 from top 5 Mythic Resto Druid parses (192k–184k HPS). Damage timeline verified from Skyleaf kill (ZaPnG7pxzKkLrAwf f9, 347s). Build: Convoke 5/5 — 6 casts per fight, ~60s intervals. Two Entropic Unraveling windows at ~105s and ~230s are the healing checks (14-15M each). Convoke + Tranq stacking covers both: Tranq #1 at ~35s (early bank), Tranq #2 at ~213s (Unraveling #2). Between Unravelings, sustained Obscurity + Radiation is 5-10M per 15s — Convoke alone handles these. Mythic adds Nexus Shield on Fractured Images (sequential interrupts) and Enduring Void orb respawns. Innervate self-cast at ~5s and ~195s. Ironbark optional — most skip some casts. Healer comps: 4-heal (HPal + Disc + RShaman + RDruid) or 4-heal (2x HPriest + MW + RDruid). Top players: Skyleaf (Draenor), Amazemint (Stormrage).",
}
HexCDReminder.BundledPlans[3180] = HexCDReminder.BundledPlans[3180] or {}
HexCDReminder.BundledPlans[3180][4] = {
  encounterID = 3180,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 320,
  damageTimeline = {
    {
      timeSec = 30,
      description = "Execution Sentence #1 — soak split damage + Divine Hammers",
      raidDamage = 3000000,
      severity = "medium",
      abilityGameIDs = {
        1248994,
        1249024,
        1249047,
      },
    },
    {
      timeSec = 55,
      description = "Searing Radiance #1 — 15s channeled Holy damage to all players",
      raidDamage = 2500000,
      severity = "medium",
      abilityGameIDs = {
        1255739,
      },
    },
    {
      timeSec = 80,
      description = "Sacred Toll #1 — unavoidable raid nuke from Lightblood",
      raidDamage = 3500000,
      severity = "high",
      abilityGameIDs = {
        1246749,
      },
    },
    {
      timeSec = 110,
      description = "Aura of Wrath #1 (Lightblood 100E) — 100% Holy damage increase for 15s",
      raidDamage = 5000000,
      severity = "critical",
      abilityGameIDs = {
        1248450,
        1258661,
      },
    },
    {
      timeSec = 150,
      description = "Execution Sentence + Searing Radiance overlap — sustained healing pressure",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1248994,
        1255739,
      },
    },
    {
      timeSec = 190,
      description = "Sacred Toll #2 + Light Infusion scaling — heavier raid nuke",
      raidDamage = 4500000,
      severity = "high",
      abilityGameIDs = {
        1246749,
        1258661,
      },
    },
    {
      timeSec = 230,
      description = "Aura of Wrath #2 + accumulated Light Infusion — very high sustained damage",
      raidDamage = 6000000,
      severity = "critical",
      abilityGameIDs = {
        1248450,
        1258661,
      },
    },
    {
      timeSec = 280,
      description = "Boss kill push + Retribution — burn phase, all CDs needed",
      raidDamage = 7000000,
      severity = "critical",
      abilityGameIDs = {
        1256133,
        1258661,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Hexastyle",
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start. Heavy Rejuv blanketing (9 in first 15s) + WG + SM before Convoke at 0:10.",
        },
        {
          timeSec = 4,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Innervate 1 on pull — fuel the heavy opening ramp. Enables aggressive Rejuv blanketing.",
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 1 — pull Convoke after 10s ramp. Covers Execution Sentence #1 at 0:30.",
        },
        {
          timeSec = 14,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 15 RG (~18s, 0:14-0:32). Massive Regrowth spam — peak throughput window.",
        },
        {
          timeSec = 40,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (33s). Rejuv blanket + WG + SM on CD → Convoke at 1:13 for Sacred Toll #1 at 1:20.",
        },
        {
          timeSec = 73,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 2 — covers Sacred Toll #1 window. Burns into Aura of Wrath #1 at 1:50.",
        },
        {
          timeSec = 77,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 8 RG (~10s). Spend Convoke throughput window.",
        },
        {
          timeSec = 115,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark on tank or soak target during Aura of Wrath #1 window.",
        },
        {
          timeSec = 120,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). Heavy Rejuv blanket (9 in 15s) + WG + SM → Convoke mid-ramp at 2:22 → Tranq at 2:26.",
        },
        {
          timeSec = 142,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 3 mid-ramp — extends HoTs, blankets raid before Tranq. Biggest healing window of the fight.",
        },
        {
          timeSec = 146,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranquility (~8s channel, 2:26-2:34). Paired 4s after Convoke. Covers Sacred Toll #2 + Aura of Wrath #2 window.",
        },
        {
          timeSec = 154,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 15+ RG (~20s, 2:34-2:54). Max Abundance stacks — free, ~100% crit Regrowths. Heaviest burn of the fight.",
        },
        {
          timeSec = 185,
          abilityGameID = 29166,
          abilityName = "Innervate",
          rationale = "Innervate 2 — refuel for final push. ~181s after first Innervate.",
        },
        {
          timeSec = 190,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start. Rejuv blanket + WG + SM → Convoke at 3:23.",
        },
        {
          timeSec = 203,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 4 — covers Aura of Wrath #2 sustained damage. 61s after Convoke 3.",
        },
        {
          timeSec = 207,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 5 RG (~6s). Spend Convoke throughput window.",
        },
        {
          timeSec = 229,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark on tank or vulnerable player during Retribution buildup.",
        },
        {
          timeSec = 250,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start. Final Rejuv blanket → Convoke at 4:24 for kill push.",
        },
        {
          timeSec = 264,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 5 — Retribution burn phase. Final major CD. 61s after Convoke 4.",
        },
        {
          timeSec = 268,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn RG until kill. Retribution damage ramps — spam healing.",
        },
      },
    },
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 3,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered spell.",
        },
        {
          timeSec = 44,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "First Dream Flight covers initial boss cleave damage.",
        },
        {
          timeSec = 96,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip the Scales for first Aura of Wrath window.",
        },
        {
          timeSec = 100,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind during Aura of Wrath #1 — reverses the big burst.",
        },
        {
          timeSec = 163,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for mid-fight sustained healing.",
        },
        {
          timeSec = 187,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip the Scales for second Aura of Wrath.",
        },
        {
          timeSec = 269,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Fourth Tip the Scales during Retribution phase.",
        },
        {
          timeSec = 276,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Third Dream Flight for late-fight Retribution ramp.",
        },
      },
    },
  },
  notes = "CD timings copied from Scottykins-Silvermoon (v7ntFaP3x4Vhk6Wp fight 26, 139k HPS, 320s kill). Keeper/Reforestation build — no cat weaving, no Incarnation. Single Tranq at 2:26 paired with Convoke 3 (4s gap). 5 Convokes at ~63s intervals. Innervate on pull + at 3:05. Heavy Regrowth burns after every Convoke/Tranq. NEVER use Heroism before bosses have Forbearance (2.5+ min) — triggers Divine Shield.",
}
HexCDReminder.BundledPlans[3181] = HexCDReminder.BundledPlans[3181] or {}
HexCDReminder.BundledPlans[3181][4] = {
  encounterID = 3181,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 596,
  phaseTimings = {
    ["1"] = 0,
    ["2"] = 165,
    ["3"] = 410,
    ["1.5"] = 130,
    ["2.5"] = 375,
  },
  damageTimeline = {
    {
      timeSec = 15,
      description = "P1 — Grasp of Emptiness + Bursting Emptiness + Echoing Darkness",
      raidDamage = 9200000,
      severity = "medium",
      phase = 1,
    },
    {
      timeSec = 30,
      description = "P1 — Silverstrike Arrow + Interrupting Tremor + Echoing Darkness",
      raidDamage = 10600000,
      severity = "high",
      phase = 1,
    },
    {
      timeSec = 60,
      description = "P1 — Echoing Darkness + Grasp + Dark Hand + Void Expulsion",
      raidDamage = 7800000,
      severity = "medium",
      phase = 1,
    },
    {
      timeSec = 75,
      description = "P1 — Grasp + Echoing + Void Expulsion sustained",
      raidDamage = 8100000,
      severity = "medium",
      phase = 1,
    },
    {
      timeSec = 135,
      description = "Intermission 1 — Stellar Emission pull + stacking damage",
      raidDamage = 5400000,
      severity = "medium",
      phase = 1.5,
    },
    {
      timeSec = 195,
      description = "P2 — Voidstalker Sting + Cosmic Barrier + Void Expulsion + Rift Slash",
      raidDamage = 10800000,
      severity = "high",
      phase = 2,
    },
    {
      timeSec = 225,
      description = "P2 — Voidstalker Sting + Void Barrage + Void Expulsion + Cosmic Barrier",
      raidDamage = 13200000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 240,
      description = "P2 — Voidstalker Sting + Cosmic Barrier + Rift Slash + Void Expulsion",
      raidDamage = 10500000,
      severity = "high",
      phase = 2,
    },
    {
      timeSec = 270,
      description = "P2 *** WORST WINDOW *** Sting + Volatile Fissure + Void Barrage + Rift Slash",
      raidDamage = 15600000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 285,
      description = "P2 — Voidstalker Sting + Volatile Fissure + Cosmic Barrier + Void Expulsion",
      raidDamage = 10500000,
      severity = "high",
      phase = 2,
    },
    {
      timeSec = 315,
      description = "P2 — Voidstalker Sting + Void Barrage + Void Remnants + Void Expulsion",
      raidDamage = 14600000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 330,
      description = "P2 — Voidstalker Sting + Cosmic Barrier + Rift Slash + Void Remnants",
      raidDamage = 10100000,
      severity = "high",
      phase = 2,
    },
    {
      timeSec = 390,
      description = "Intermission 2 — Stellar Emission (stronger) + rotating orbs (Heroic)",
      raidDamage = 5700000,
      severity = "medium",
      phase = 2.5,
    },
    {
      timeSec = 450,
      description = "P3 — Voidstalker Sting + Gravity Collapse + Grasp of Emptiness",
      raidDamage = 14100000,
      severity = "critical",
      phase = 3,
    },
    {
      timeSec = 510,
      description = "P3 — Voidstalker Sting + Gravity Collapse + Grasp of Emptiness",
      raidDamage = 11300000,
      severity = "high",
      phase = 3,
    },
    {
      timeSec = 525,
      description = "P3 — Voidstalker Sting + Dark Rush + Grasp + Bursting Emptiness",
      raidDamage = 10300000,
      severity = "high",
      phase = 3,
    },
    {
      timeSec = 570,
      description = "P3 near-enrage — Voidstalker Sting + Gravity Collapse + Grasp",
      raidDamage = 12500000,
      severity = "critical",
      phase = 3,
    },
    {
      timeSec = 593,
      description = "P3 — Devouring Cosmos (soft enrage)",
      raidDamage = 3500000,
      severity = "lethal",
      phase = 3,
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Hexastyle",
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (truncated ~10s pull ramp). Prioritize WG + SM + as many Rejuvs as possible before Convoke at 0:10.",
          phase = 1,
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P1 opener — Convoke on pull ramp. HoTs cover 0:15 Grasp (9.2M).",
          phase = 1,
        },
        {
          timeSec = 14,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Continue ramp for Tranq 1 — SM + NS + RGs + refresh Rejuvs + build Abundance stacks before Tranq at 0:33.",
          phase = 1,
        },
        {
          timeSec = 33,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 (~8s channel, 0:33-0:41). Covers 0:30 Arrow+Tremor spike (10.6M). Ramp HoTs still rolling from Convoke.",
          phase = 1,
        },
        {
          timeSec = 41,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s, 0:41-0:55). Max Abundance stacks — free, ~100% crit Regrowths. Full Tranq value.",
          phase = 1,
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke at 1:17.",
          phase = 1,
        },
        {
          timeSec = 77,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P1 — Convoke at 1:17. Ramp HoTs cover 1:00 Echoing+Grasp (7.8M), Convoke covers 1:15 sustained (8.1M).",
          phase = 1,
        },
        {
          timeSec = 81,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput window.",
          phase = 1,
        },
        {
          timeSec = 86,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave 22s. Low damage window. Mana recovery before next ramp. Ends at 1:48.",
          phase = 1,
        },
        {
          timeSec = 108,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke at 2:10.",
          phase = 1,
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pre-Intermission — Convoke at 2:10. Covers 2:15 Stellar Emission (5.4M).",
          phase = 1.5,
        },
        {
          timeSec = 134,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke value before cat weave.",
          phase = 1.5,
        },
        {
          timeSec = 139,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave 29s. Intermission lull — low damage. Top off mana before P2 ramp at 2:48.",
          phase = 1.5,
        },
        {
          timeSec = 168,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke mid-ramp at 3:10 → Tranq 2 at 3:33.",
          phase = 2,
        },
        {
          timeSec = 190,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P2 entry — Convoke mid-FULL RAMP. Extends Rejuvs while blanketing for Tranq 2.",
          phase = 2,
        },
        {
          timeSec = 194,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Continue ramp for Tranq 2 — SM + RGs + refresh Rejuvs + build Abundance before Tranq at 3:33.",
          phase = 2,
        },
        {
          timeSec = 213,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 (~8s channel, 3:33-3:41). Covers 3:15 (10.8M) and 3:45 (13.2M CRITICAL).",
          phase = 2,
        },
        {
          timeSec = 221,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s, 3:41-3:55). Max Abundance — free ~100% crit RGs through 3:45 critical spike (13.2M).",
          phase = 2,
        },
        {
          timeSec = 235,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke at 4:17. Pre-heals for 4:30 WORST WINDOW.",
          phase = 2,
        },
        {
          timeSec = 257,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P2 — Convoke at 4:17. Pre-heals for 4:30 WORST WINDOW (15.6M). Pair with SLT+AMZ.",
          phase = 2,
        },
        {
          timeSec = 261,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn extended (~32s, 4:21-4:53). Spam RG through 4:30 WORST WINDOW (15.6M) and 4:45 spike (10.5M). No CD active — raw throughput is critical here.",
          phase = 2,
        },
        {
          timeSec = 293,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke at 5:15. Back-to-back ramp in P2 — no cat weave possible.",
          phase = 2,
        },
        {
          timeSec = 315,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P2 — Convoke at 5:15. Lands exactly at 5:15 spike (14.6M Sting+Barrage).",
          phase = 2,
        },
        {
          timeSec = 319,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke value through 5:24.",
          phase = 2,
        },
        {
          timeSec = 335,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave 18s. Brief P2 lull after 5:30 damage subsides. Quick mana top-off before intermission ramp.",
          phase = 2,
        },
        {
          timeSec = 353,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke mid-ramp at 6:15 → Tranq 3 at 6:33.",
          phase = 2.5,
        },
        {
          timeSec = 375,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pre-Intermission 2 — Convoke mid-FULL RAMP for Tranq 3.",
          phase = 2.5,
        },
        {
          timeSec = 379,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Continue ramp for Tranq 3 — SM + RGs + refresh Rejuvs + build Abundance before Tranq at 6:33.",
          phase = 2.5,
        },
        {
          timeSec = 393,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 3 (~8s channel, 6:33-6:41). Covers Intermission 2 Stellar Emission (6:30, 5.7M).",
          phase = 2.5,
        },
        {
          timeSec = 401,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s, 6:41-6:55). Max Abundance — full Tranq value into Intermission 2.",
          phase = 2.5,
        },
        {
          timeSec = 418,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke at 7:20.",
          phase = 3,
        },
        {
          timeSec = 440,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P3 — Convoke at 7:20. HoTs active at 7:30 Gravity Collapse (14.1M).",
          phase = 3,
        },
        {
          timeSec = 444,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s, 7:24-7:29). Spend Convoke value before cat weave.",
          phase = 3,
        },
        {
          timeSec = 449,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave 29s. P3 lull between Gravity Collapses. Last big mana window — use it all. Ends at 7:58.",
          phase = 3,
        },
        {
          timeSec = 478,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). 12 Rejuv + 3 Regrowth + WG + SM → Convoke at 8:20.",
          phase = 3,
        },
        {
          timeSec = 500,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P3 — Convoke at 8:20. Covers 8:30 Gravity Collapse (11.3M).",
          phase = 3,
        },
        {
          timeSec = 504,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn extended (~34s, 8:24-8:58). Spam RG through 8:30 Gravity Collapse (11.3M) and 8:45 double spike (10.3M). No cat weave — continuous damage into enrage.",
          phase = 3,
        },
        {
          timeSec = 538,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "FULL RAMP start (22s). Final ramp — 12 Rejuv + 3 Regrowth + WG + SM → Convoke mid-ramp at 9:20 → Tranq 4 at 9:33. No mana left after this.",
          phase = 3,
        },
        {
          timeSec = 560,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P3 final — Convoke mid-FULL RAMP for Tranq 4.",
          phase = 3,
        },
        {
          timeSec = 564,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Continue ramp for Tranq 4 — SM + RGs + Rejuv refresh before Tranq at 9:33. Last stand.",
          phase = 3,
        },
        {
          timeSec = 573,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 4 (~8s channel, 9:33-9:41). Covers 9:30 near-enrage (12.5M). 4th Tranq use thanks to early Tranq 1 at 0:33.",
          phase = 3,
        },
        {
          timeSec = 581,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s, 9:41-9:55). Final burn — max Abundance RGs through 9:53 enrage. Last stand.",
          phase = 3,
        },
      },
    },
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Kodyäk",
      assignments = {
        {
          timeSec = 30,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ FULL RAMP → TRANQ 1 for P1 sustained pressure (10.6M Arrow spike).",
          phase = 1,
        },
        {
          timeSec = 195,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ FULL RAMP → TRANQ 2 for P2 entry (10.8M Sting + Barrier).",
          phase = 2,
        },
        {
          timeSec = 450,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ FULL RAMP → TRANQ 3 for P3 first Gravity Collapse (14.1M).",
          phase = 3,
        },
      },
    },
    {
      className = "Shaman",
      specName = "Restoration",
      playerName = "Cellaresto",
      assignments = {
        {
          timeSec = 135,
          abilityGameID = 108280,
          abilityName = "Healing Tide Totem",
          rationale = "Intermission 1 Stellar Emission — sustained ticking damage during pull.",
          phase = 1.5,
        },
        {
          timeSec = 270,
          abilityGameID = 98008,
          abilityName = "Spirit Link Totem",
          rationale = "P2 4:30 CRITICAL (15.6M) — HP equalization prevents deaths from uneven Sting ticks.",
          phase = 2,
        },
        {
          timeSec = 315,
          abilityGameID = 108280,
          abilityName = "Healing Tide Totem",
          rationale = "P2 5:15 spike (14.6M) — off CD from Intermission 1.",
          phase = 2,
        },
        {
          timeSec = 465,
          abilityGameID = 98008,
          abilityName = "Spirit Link Totem",
          rationale = "P3 7:45 Dark Rush + Bursting Emptiness — equalize after Gravity Collapse.",
          phase = 3,
        },
        {
          timeSec = 510,
          abilityGameID = 108280,
          abilityName = "Healing Tide Totem",
          rationale = "P3 8:30 Gravity Collapse (11.3M) — off CD.",
          phase = 3,
        },
      },
    },
    {
      className = "Paladin",
      specName = "Holy",
      playerName = "Bubbléoseven",
      assignments = {
        {
          timeSec = 15,
          abilityGameID = 31821,
          abilityName = "Aura Mastery",
          rationale = "P1 opener — covers first Bursting Emptiness + Echoing Darkness.",
          phase = 1,
        },
        {
          timeSec = 240,
          abilityGameID = 31821,
          abilityName = "Aura Mastery",
          rationale = "P2 4:00 continued Barrier + Rift Slash pressure (10.5M).",
          phase = 2,
        },
        {
          timeSec = 525,
          abilityGameID = 31821,
          abilityName = "Aura Mastery",
          rationale = "P3 8:45 Sting + Dark Rush + Bursting (10.3M).",
          phase = 3,
        },
      },
    },
    {
      className = "Priest",
      specName = "Holy",
      playerName = "Kitti",
      assignments = {
        {
          timeSec = 60,
          abilityGameID = 64843,
          abilityName = "Divine Hymn",
          rationale = "P1 sustained damage — covers Echoing Darkness + Grasp overlap.",
          phase = 1,
        },
        {
          timeSec = 285,
          abilityGameID = 64843,
          abilityName = "Divine Hymn",
          rationale = "P2 4:45 Sting + Barrier + Void Expulsion (10.5M).",
          phase = 2,
        },
        {
          timeSec = 390,
          abilityGameID = 64901,
          abilityName = "Symbol of Hope",
          rationale = "Intermission 2 — mana boost for entire healer team before P3 burn.",
          phase = 2.5,
        },
        {
          timeSec = 570,
          abilityGameID = 64843,
          abilityName = "Divine Hymn",
          rationale = "P3 near-enrage — 9:30 Gravity Collapse (12.5M). Stacks with Hexastyle Tranq 3.",
          phase = 3,
        },
      },
    },
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 3,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered spell.",
          phase = 1,
        },
        {
          timeSec = 31,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Early Rewind covers P1 initial burst.",
          phase = 1,
        },
        {
          timeSec = 54,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "First Dream Flight for P1 sustained damage.",
          phase = 1,
        },
        {
          timeSec = 96,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip the Scales.",
          phase = 1,
        },
        {
          timeSec = 179,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip the Scales for P1 Gravity Collapse.",
          phase = 1,
        },
        {
          timeSec = 206,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for Gravity Collapse recovery.",
          phase = 1,
        },
        {
          timeSec = 232,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Second Rewind for P2 transition burst.",
          phase = 2,
        },
        {
          timeSec = 266,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Tip the Scales for P2 Gravity Collapse (15.6M).",
          phase = 2,
        },
        {
          timeSec = 352,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "P2 healing support during sustained damage.",
          phase = 2,
        },
        {
          timeSec = 411,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Third Rewind for P3 transition or late P2.",
          phase = 2,
        },
        {
          timeSec = 420,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for P3 entry healing.",
          phase = 3,
        },
        {
          timeSec = 436,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "P3 Tip the Scales — near-enrage territory.",
          phase = 3,
        },
        {
          timeSec = 509,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Final Tip the Scales — everything into the enrage burn.",
          phase = 3,
        },
      },
    },
  },
  notes = "Hexastyle-specific plan for the Hexastyle raid team (27-player heroic). Convoke ~60s CD, Tranq ~180s CD. GCD ≈ 1.2s. r = Regrowth. Every CD has a full ramp before it: Ramp (22s: 12 Rejuv + 3 RG + WG + SM) → CD → post-RGs. Convoke burn: Ramp → Conv(4s) + 4r post. Tranq burn: Ramp → Tranq + 12r post (max Abundance). Cat weave between burn cycles for mana regen. Cycle: Cat Weave → Ramp → CD → post-RGs → Cat Weave. P2 4:30 (15.6M) is the worst window — needs SLT + AMZ/Rally, Convoke pre-heals at 4:15. Damage timeline from reference kill JKLcPnTgd2vDRkrh fight 134. Phase timings are relative to the 596s reference kill — addon auto-adjusts via BigWigs phase detection.",
}
HexCDReminder.BundledPlans[3181][3] = {
  encounterID = 3181,
  difficulty = 3,
  patchVersion = "12.0.5",
  fightDurationSec = 473,
  phaseTimings = {
    ["1"] = 0,
    ["2"] = 130,
    ["3"] = 320,
    ["1.5"] = 100,
    ["2.5"] = 290,
  },
  damageTimeline = {
    {
      timeSec = 15,
      description = "P1 — Grasp of Emptiness + Bursting Emptiness + Echoing Darkness",
      raidDamage = 6000000,
      severity = "medium",
      phase = 1,
    },
    {
      timeSec = 30,
      description = "P1 — Silverstrike Arrow + Interrupting Tremor + Echoing Darkness",
      raidDamage = 7000000,
      severity = "high",
      phase = 1,
    },
    {
      timeSec = 60,
      description = "P1 — Echoing Darkness + Grasp + Void Expulsion",
      raidDamage = 5500000,
      severity = "medium",
      phase = 1,
    },
    {
      timeSec = 105,
      description = "Intermission 1 — Stellar Emission stacking damage",
      raidDamage = 3800000,
      severity = "medium",
      phase = 1.5,
    },
    {
      timeSec = 160,
      description = "P2 — Voidstalker Sting + Cosmic Barrier + Void Expulsion",
      raidDamage = 7500000,
      severity = "high",
      phase = 2,
    },
    {
      timeSec = 195,
      description = "P2 — Voidstalker Sting + Void Barrage + Void Expulsion",
      raidDamage = 9000000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 230,
      description = "P2 *** WORST WINDOW *** Sting + Volatile Fissure + Void Barrage",
      raidDamage = 10500000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 265,
      description = "P2 — Voidstalker Sting + Void Barrage + Void Remnants",
      raidDamage = 9500000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 295,
      description = "Intermission 2 — Stellar Emission (stronger)",
      raidDamage = 4000000,
      severity = "medium",
      phase = 2.5,
    },
    {
      timeSec = 360,
      description = "P3 — Voidstalker Sting + Gravity Collapse + Grasp of Emptiness",
      raidDamage = 9000000,
      severity = "critical",
      phase = 3,
    },
    {
      timeSec = 420,
      description = "P3 — Voidstalker Sting + Gravity Collapse + Dark Rush",
      raidDamage = 7500000,
      severity = "high",
      phase = 3,
    },
    {
      timeSec = 460,
      description = "P3 near-enrage — Gravity Collapse + Grasp",
      raidDamage = 8000000,
      severity = "critical",
      phase = 3,
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 8,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Opener — Ironbark on tank or Sting target before first damage.",
          phase = 1,
        },
        {
          timeSec = 11,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pull Convoke — ramp HoTs cover 0:15 Grasp + Bursting spike.",
          phase = 1,
        },
        {
          timeSec = 41,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 — covers 0:30 Arrow + Tremor spike (7.0M). Ramp HoTs still rolling from Convoke.",
          phase = 1,
        },
        {
          timeSec = 106,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 2 at 1:46 — covers Intermission 1 Stellar Emission.",
          phase = 1.5,
        },
        {
          timeSec = 152,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "P2 entry — Ironbark on Sting target.",
          phase = 2,
        },
        {
          timeSec = 171,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 3 at 2:51 — covers P2 first damage spike (Sting + Barrier, 7.5M).",
          phase = 2,
        },
        {
          timeSec = 233,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 at 3:53 — covers P2 WORST WINDOW (10.5M Sting + Fissure + Barrage).",
          phase = 2,
        },
        {
          timeSec = 242,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 4 at 4:02 — back-to-back with Tranq for maximum P2 throughput.",
          phase = 2,
        },
        {
          timeSec = 276,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "P2 Ironbark — covers continued Sting + Remnants pressure.",
          phase = 2,
        },
        {
          timeSec = 303,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 5 at 5:03 — covers Intermission 2 transition.",
          phase = 2.5,
        },
        {
          timeSec = 370,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 6 at 6:10 — covers P3 first Gravity Collapse (9.0M).",
          phase = 3,
        },
        {
          timeSec = 386,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "P3 Ironbark — spot heal through Gravity Collapse aftershock.",
          phase = 3,
        },
        {
          timeSec = 430,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 3 at 7:10 — covers P3 near-enrage Gravity Collapse (8.0M).",
          phase = 3,
        },
        {
          timeSec = 435,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 7 at 7:15 — final Convoke, stacks with Tranq for enrage push.",
          phase = 3,
        },
      },
    },
  },
  notes = "Normal difficulty plan based on top WCL Resto Druid parses (Fernandoge 113k HPS reference, 7:53 kill). All top Normal parsers run Convoke build — zero Flourish or Tree of Life usage. Convoke every ~60s on CD (7 casts), Tranq every ~3min (3 casts), Ironbark every ~90s (4 casts). Opener: Ironbark (8s) → Convoke (11s) → Tranq (41s). Phase timings estimated from Normal kill durations (7:30-7:53 range). Damage values are ~65-70% of Heroic.",
}
HexCDReminder.BundledPlans[3181][4] = {
  encounterID = 3181,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 559,
  phaseTimings = {
    ["1"] = 0,
    ["2"] = 165,
    ["3"] = 410,
    ["1.5"] = 130,
    ["2.5"] = 375,
  },
  damageTimeline = {
    {
      timeSec = 15,
      description = "P1 — Grasp of Emptiness + Bursting Emptiness + Echoing Darkness",
      raidDamage = 9200000,
      severity = "medium",
      phase = 1,
    },
    {
      timeSec = 30,
      description = "P1 — Silverstrike Arrow + Interrupting Tremor + Echoing Darkness",
      raidDamage = 10600000,
      severity = "high",
      phase = 1,
    },
    {
      timeSec = 60,
      description = "P1 — Echoing Darkness + Grasp + Dark Hand + Void Expulsion",
      raidDamage = 7800000,
      severity = "medium",
      phase = 1,
    },
    {
      timeSec = 135,
      description = "Intermission 1 — Stellar Emission pull + stacking damage",
      raidDamage = 5400000,
      severity = "medium",
      phase = 1.5,
    },
    {
      timeSec = 195,
      description = "P2 — Voidstalker Sting + Cosmic Barrier + Void Expulsion + Rift Slash",
      raidDamage = 10800000,
      severity = "high",
      phase = 2,
    },
    {
      timeSec = 225,
      description = "P2 — Voidstalker Sting + Void Barrage + Void Expulsion + Cosmic Barrier",
      raidDamage = 13200000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 270,
      description = "P2 *** WORST WINDOW *** Sting + Volatile Fissure + Void Barrage + Rift Slash",
      raidDamage = 15600000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 315,
      description = "P2 — Voidstalker Sting + Void Barrage + Void Remnants + Void Expulsion",
      raidDamage = 14600000,
      severity = "critical",
      phase = 2,
    },
    {
      timeSec = 390,
      description = "Intermission 2 — Stellar Emission (stronger) + rotating orbs",
      raidDamage = 5700000,
      severity = "medium",
      phase = 2.5,
    },
    {
      timeSec = 450,
      description = "P3 — Voidstalker Sting + Gravity Collapse + Grasp of Emptiness",
      raidDamage = 14100000,
      severity = "critical",
      phase = 3,
    },
    {
      timeSec = 510,
      description = "P3 — Voidstalker Sting + Gravity Collapse + Dark Rush",
      raidDamage = 11300000,
      severity = "high",
      phase = 3,
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 6,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Opener — Ironbark on tank or first Sting target.",
          phase = 1,
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pull Convoke — ramp HoTs cover 0:15 Grasp + Bursting (9.2M).",
          phase = 1,
        },
        {
          timeSec = 13,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 — immediate after Convoke for maximum opener burst. Covers 0:15 and 0:30 spikes.",
          phase = 1,
        },
        {
          timeSec = 59,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 2 at 0:59 — covers 1:00 Echoing + Grasp + Void Expulsion (7.8M).",
          phase = 1,
        },
        {
          timeSec = 99,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark 2 — spot heal late P1.",
          phase = 1,
        },
        {
          timeSec = 119,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 3 at 1:59 — pre-heals for Intermission 1 Stellar Emission.",
          phase = 1,
        },
        {
          timeSec = 182,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 4 at 3:02 — P2 entry healing, covers 3:15 spike (10.8M).",
          phase = 2,
        },
        {
          timeSec = 197,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark 3 — covers P2 sustained Sting pressure.",
          phase = 2,
        },
        {
          timeSec = 222,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 at 3:42 — covers 3:45 critical spike (13.2M) and aftermath.",
          phase = 2,
        },
        {
          timeSec = 235,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 5 at 3:55 — back-to-back with Tranq, covers P2 sustained.",
          phase = 2,
        },
        {
          timeSec = 297,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark 4 — P2 4:57 continued pressure.",
          phase = 2,
        },
        {
          timeSec = 305,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 6 at 5:05 — covers P2 5:15 spike (14.6M).",
          phase = 2,
        },
        {
          timeSec = 357,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 7 at 5:57 — last P2 Convoke before Intermission 2.",
          phase = 2,
        },
        {
          timeSec = 409,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark 5 — P3 entry spot heal.",
          phase = 3,
        },
        {
          timeSec = 423,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 8 at 7:03 — covers P3 first Gravity Collapse (14.1M at 7:30).",
          phase = 3,
        },
        {
          timeSec = 451,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 3 at 7:31 — covers P3 Gravity Collapse aftermath and sustained.",
          phase = 3,
        },
        {
          timeSec = 487,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 9 at 8:07 — covers 8:30 Gravity Collapse (11.3M).",
          phase = 3,
        },
        {
          timeSec = 515,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark 6 — enrage territory spot heal.",
          phase = 3,
        },
        {
          timeSec = 538,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Convoke 10 at 8:58 — final Convoke for enrage push.",
          phase = 3,
        },
      },
    },
  },
  notes = "Generic Resto Druid plan from top Heroic WCL parses (Hotkoinvos 158k HPS reference, 9:19 kill). Cross-validated with Tuskua (146k, 9:22) and Aldur (143k, 8:17). All top parsers run Convoke build — zero Flourish or Tree of Life. Convoke every ~60s on CD (10 casts), Tranq every ~3min (3 casts), Ironbark every ~90s (6 casts). Key difference from Hexastyle plan: Tranq 1 is immediate after opener Convoke (0:13) rather than delayed to 0:33. Convoke is pressed strictly on CD — no holding for specific mechanics.",
}
HexCDReminder.BundledPlans[3182] = HexCDReminder.BundledPlans[3182] or {}
HexCDReminder.BundledPlans[3182][4] = {
  encounterID = 3182,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 105,
  phaseTimings = {
    ["1"] = 0,
    ["2"] = 75,
  },
  damageTimeline = {
    {
      timeSec = 5,
      description = "P1 — Burning Heart ticking + Voidlight Convergence (feather assignment)",
      severity = "medium",
      phase = 1,
      abilityGameIDs = {
        1264650,
        1241932,
      },
    },
    {
      timeSec = 20,
      description = "P1 — Dive soaks (Light/Void Patch) + Burning Heart",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1241840,
        1241841,
        1264650,
      },
    },
    {
      timeSec = 45,
      description = "P1 — Infused Quills + Radiant Echoes + Burning Heart",
      severity = "medium",
      phase = 1,
      abilityGameIDs = {
        1242093,
        1242094,
        1242991,
        1242996,
      },
    },
    {
      timeSec = 60,
      description = "P1 — Guardian's Edict tank damage + second Dive soaks",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1262861,
        1241840,
        1241841,
      },
    },
    {
      timeSec = 75,
      description = "Death Drop — P1→P2 transition burst (distance-based Fire knockback)",
      severity = "critical",
      phase = 1,
      abilityGameIDs = {
        1241333,
      },
    },
    {
      timeSec = 80,
      description = "P2 — Ashen Benediction burst + permanent -10% healing done + accelerated Burning Heart",
      severity = "critical",
      phase = 2,
      abilityGameIDs = {
        1262573,
        1264650,
      },
    },
    {
      timeSec = 95,
      description = "P2 — Incubation of Flames wrong-color DoTs + Burning Heart at max intensity",
      severity = "high",
      phase = 2,
      abilityGameIDs = {
        1242803,
        1242815,
        1264650,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Opener Convoke — burst heal through initial Burning Heart + first Dive soaks.",
        },
        {
          timeSec = 56,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS Regrowth before transition — top-off a low target ahead of Death Drop.",
        },
        {
          timeSec = 68,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second Convoke pre-positioned for Death Drop transition + Ashen Benediction burst into P2.",
        },
        {
          timeSec = 78,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranquility at P2 entry — peak raid damage with accelerated Burning Heart + healing reduction.",
        },
      },
    },
  },
  notes = "Short fight — 2 Convoke uses, 1 Tranq, 1 NS. Top parses push second Convoke earlier (64-84s) to front-load P2 healing. If fight extends to a second Rebirth cycle (>120s), Convoke comes back ~125s for the second P2 entry. Ironbark optional — use on tank for Eternal Burns or on a Dive soak target if NS is not needed.",
}
HexCDReminder.BundledPlans[3182][4] = {
  encounterID = 3182,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 120,
  damageTimeline = {
    {
      timeSec = 5,
      description = "P1 — Burning Heart ticking + Voidlight Convergence",
      severity = "medium",
      phase = 1,
      abilityGameIDs = {
        1264650,
        1241932,
      },
    },
    {
      timeSec = 20,
      description = "P1 — Dive soaks + Burning Heart",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1241840,
        1241841,
        1264650,
      },
    },
    {
      timeSec = 45,
      description = "P1 — Infused Quills + Radiant Echoes + Burning Heart",
      severity = "medium",
      phase = 1,
      abilityGameIDs = {
        1242093,
        1242094,
      },
    },
    {
      timeSec = 60,
      description = "P1 — Guardian's Edict + second Dive soaks",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1262861,
        1241840,
      },
    },
    {
      timeSec = 75,
      description = "Death Drop — P1→P2 transition burst",
      severity = "critical",
      phase = 1,
      abilityGameIDs = {
        1241333,
      },
    },
    {
      timeSec = 80,
      description = "P2 — Ashen Benediction burst + -10% healing + accelerated Burning Heart",
      severity = "critical",
      phase = 2,
      abilityGameIDs = {
        1262573,
        1264650,
      },
    },
    {
      timeSec = 95,
      description = "P2 — Incubation of Flames + Burning Heart at max",
      severity = "high",
      phase = 2,
      abilityGameIDs = {
        1242803,
        1264650,
      },
    },
  },
  healerAssignments = {
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 2,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered Spiritbloom. 3/3 parses use at 1-2s.",
        },
        {
          timeSec = 55,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind for Dive soaks + Guardian's Edict burst. Range 54-80s across 3 parses.",
        },
        {
          timeSec = 60,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight during P1 high damage — covers Dive soaks into transition. Range 54-117s.",
        },
        {
          timeSec = 75,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Zephyr for Death Drop transition + Ashen Benediction P2 entry burst. Range 69-101s across 3 parses.",
        },
        {
          timeSec = 89,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip for P2 healing under -10% healing debuff. Range 88-91s across 3 parses.",
        },
      },
    },
  },
  notes = "Updated 2026-04-07 from top 3 Heroic Pres Evoker parses (209k–204k HPS). Short fight — all major CDs used once. Rewind covers the hardest burst (Dive/transition). Zephyr for P2 entry is critical — Ashen Benediction reduces healing by 10% permanently. Dream Flight timing varies widely (54-117s) — use when raid is lowest. Top players: Scalygary (Tichondrius), Nerzevok (Tarren Mill), Outofmyrange (Area 52).",
}
HexCDReminder.BundledPlans[3183] = HexCDReminder.BundledPlans[3183] or {}
HexCDReminder.BundledPlans[3183][4] = {
  encounterID = 3183,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 400,
  phaseTimings = {
    ["1"] = 0,
    ["2"] = 150,
    ["3"] = 270,
    ["1.5"] = 120,
  },
  damageTimeline = {
    {
      timeSec = 15,
      description = "P1 — Death's Dirge (symbol ordering) + Starsplinter spread",
      severity = "medium",
      phase = 1,
      abilityGameIDs = {
        1249594,
        1254076,
      },
    },
    {
      timeSec = 45,
      description = "P1 — Disintegration (Prism shatters) + Midnight Crystal Cosmic Fracture",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1251649,
        1251789,
      },
    },
    {
      timeSec = 70,
      description = "P1 — Second Death's Dirge + Starsplinter + Dusk Crystal healing check",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1249594,
        1254076,
        1252975,
      },
    },
    {
      timeSec = 100,
      description = "P1 — Third Disintegration + Impale targets",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1251649,
        1253879,
      },
    },
    {
      timeSec = 130,
      description = "Intermission — Dissonance healing absorbs + Dark Quasar pushback",
      severity = "critical",
      phase = 1.5,
      abilityGameIDs = {
        1249585,
        1282458,
      },
    },
    {
      timeSec = 165,
      description = "P2 — Galvanize beams targeting players + Abyssal Pools",
      severity = "medium",
      phase = 2,
      abilityGameIDs = {
        1284530,
        1282004,
      },
    },
    {
      timeSec = 195,
      description = "P2 — Cosmic Fission explosions from activated cores",
      severity = "high",
      phase = 2,
      abilityGameIDs = {
        1282372,
      },
    },
    {
      timeSec = 240,
      description = "P2 — Core Harvest (boss pulls cores in) — burst raid damage",
      severity = "critical",
      phase = 2,
      abilityGameIDs = {
        1282425,
      },
    },
    {
      timeSec = 280,
      description = "P3 — Midnight zone DoT + movement penalty (-30% speed)",
      severity = "high",
      phase = 3,
      abilityGameIDs = {
        1262055,
      },
    },
    {
      timeSec = 320,
      description = "P3 — Shattered Sky (Dark Archangel) — massive Cosmic blast, need Dawnlight Barrier",
      severity = "lethal",
      phase = 3,
      abilityGameIDs = {
        1249797,
      },
    },
    {
      timeSec = 360,
      description = "P3 — Second Shattered Sky + Light Siphon soaks (Heroic)",
      severity = "lethal",
      phase = 3,
      abilityGameIDs = {
        1249797,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 12,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Opener Convoke — heal through first Death's Dirge + Starsplinter spread.",
        },
        {
          timeSec = 60,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second Convoke for Disintegration crystal spawn + Dusk Crystal healing check.",
        },
        {
          timeSec = 65,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on Impale target or tank.",
        },
        {
          timeSec = 134,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Intermission Convoke — burst through Dissonance healing absorbs + Dark Quasar.",
        },
        {
          timeSec = 137,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranquility during Intermission — sustained healing against constant Cosmic pressure + absorbs.",
        },
        {
          timeSec = 194,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P2 Convoke — Cosmic Fission explosions from Galvanize core activations.",
        },
        {
          timeSec = 197,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on Galvanize beam target soaking in P2.",
        },
        {
          timeSec = 245,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Core Harvest Convoke — burst heal through boss pulling all cores in.",
        },
        {
          timeSec = 299,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P3 entry Convoke — Midnight zone DoT ramps up, movement penalty active.",
        },
        {
          timeSec = 323,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranquility for first Shattered Sky (Dark Archangel) — the lethal P3 blast.",
        },
        {
          timeSec = 327,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on a player without Dawnlight Barrier coverage during Shattered Sky.",
        },
        {
          timeSec = 372,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final Convoke for second Shattered Sky + burn phase.",
        },
      },
    },
  },
  notes = "Convoke build plan (~60s CD). Alt build: Incarnation (~90s CD) — cast at 6s, 105s, 196s, 288s, 377s. Intermission (~120-150s) is a sustained healing check — Tranq + Convoke overlap is key. P3 Shattered Sky is lethal without Dawnlight Barrier — if barrier is missed, stack every CD. Ironbark is flexible — Impale targets in P1, Galvanize soakers in P2, or missing-barrier players in P3.",
}
HexCDReminder.BundledPlans[3183][4] = {
  encounterID = 3183,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 440,
  phaseTimings = {
    ["1"] = 0,
    ["2"] = 150,
    ["3"] = 270,
    ["1.5"] = 120,
  },
  damageTimeline = {
    {
      timeSec = 15,
      description = "P1 — Death's Dirge + Starsplinter spread",
      severity = "medium",
      phase = 1,
      abilityGameIDs = {
        1249594,
        1254076,
      },
    },
    {
      timeSec = 45,
      description = "P1 — Disintegration + Cosmic Fracture",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1251649,
        1251789,
      },
    },
    {
      timeSec = 70,
      description = "P1 — Second Death's Dirge + Dusk Crystal healing check",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1249594,
        1252975,
      },
    },
    {
      timeSec = 100,
      description = "P1 — Third Disintegration + Impale",
      severity = "high",
      phase = 1,
      abilityGameIDs = {
        1251649,
        1253879,
      },
    },
    {
      timeSec = 130,
      description = "Intermission — Dissonance absorbs + Dark Quasar",
      severity = "critical",
      phase = 1.5,
      abilityGameIDs = {
        1249585,
        1282458,
      },
    },
    {
      timeSec = 165,
      description = "P2 — Galvanize beams + Abyssal Pools",
      severity = "medium",
      phase = 2,
      abilityGameIDs = {
        1284530,
        1282004,
      },
    },
    {
      timeSec = 195,
      description = "P2 — Cosmic Fission core explosions",
      severity = "high",
      phase = 2,
      abilityGameIDs = {
        1282372,
      },
    },
    {
      timeSec = 240,
      description = "P2 — Core Harvest burst",
      severity = "critical",
      phase = 2,
      abilityGameIDs = {
        1282425,
      },
    },
    {
      timeSec = 280,
      description = "P3 — Midnight zone DoT + movement penalty",
      severity = "high",
      phase = 3,
      abilityGameIDs = {
        1262055,
      },
    },
    {
      timeSec = 320,
      description = "P3 — Shattered Sky #1 (Dark Archangel) — lethal blast",
      severity = "lethal",
      phase = 3,
      abilityGameIDs = {
        1249797,
      },
    },
    {
      timeSec = 360,
      description = "P3 — Shattered Sky #2 + Light Siphon soaks",
      severity = "lethal",
      phase = 3,
      abilityGameIDs = {
        1249797,
      },
    },
  },
  healerAssignments = {
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 3,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener. 3/3 parses use at 0-4s.",
        },
        {
          timeSec = 5,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Early Dream Flight for P1 opener sustain. 2/3 parses use at 2-4s.",
        },
        {
          timeSec = 67,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind for second Death's Dirge + Dusk Crystal healing check (~70s). Range 67-135s.",
        },
        {
          timeSec = 90,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip for P1 Disintegration window. Range 86-118s.",
        },
        {
          timeSec = 127,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight into Intermission — sustained healing through Dissonance absorbs. Range 125-137s.",
        },
        {
          timeSec = 135,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Zephyr for Intermission — AoE DR on Dark Quasar. 2/3 parses use at 134-463s (variable).",
        },
        {
          timeSec = 190,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip for P2 Cosmic Fission. Range 188-207s.",
        },
        {
          timeSec = 250,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for Core Harvest burst in P2. Range 247-250s.",
        },
        {
          timeSec = 275,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Fourth Tip for P3 entry. Range 271-294s.",
        },
        {
          timeSec = 310,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind for Shattered Sky #1 — the lethal P3 blast. Range 246-307s. (67+180=247 earliest from Rewind#1)",
        },
        {
          timeSec = 365,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight for P3 sustained Midnight zone damage. Range 346-363s. (250+120=370 limit)",
        },
        {
          timeSec = 370,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Fifth Tip for Shattered Sky #2. Range 357-383s.",
        },
      },
    },
  },
  notes = "Updated 2026-04-07 from top 3 Heroic Pres Evoker parses (171k–160k HPS). Long 3-phase fight — Dream Flight every ~120s for sustained throughput. Rewind covers Intermission Dissonance and P3 Shattered Sky. Zephyr saved for Intermission or P3 (variable usage across parses). Tip the Scales on cooldown (~90s) for instant empowered heals. P3 Shattered Sky is lethal without Dawnlight Barrier — stack Rewind + Zephyr if barrier missed. Top players: Lingmo (384s kill), Nishanghaine (483s kill).",
}
HexCDReminder.BundledPlans[3306] = HexCDReminder.BundledPlans[3306] or {}
HexCDReminder.BundledPlans[3306][4] = {
  encounterID = 3306,
  difficulty = 4,
  patchVersion = "12.0.5 (Beta)",
  fightDurationSec = 390,
  damageTimeline = {
    {
      timeSec = 20,
      description = "Caustic Phlegm #1 — 12s Nature DoT on all players (repeats frequently)",
      raidDamage = 2000000,
      severity = "medium",
      abilityGameIDs = {
        1246653,
      },
    },
    {
      timeSec = 45,
      description = "Rift Emergence #1 — heavy Nature nuke + Manifestation spawns",
      raidDamage = 3500000,
      severity = "high",
      abilityGameIDs = {
        1258610,
      },
    },
    {
      timeSec = 70,
      description = "Consuming Miasma dispels + Discordant Roar from Colossal Horror add",
      raidDamage = 3000000,
      severity = "medium",
      abilityGameIDs = {
        1257087,
        1249207,
      },
    },
    {
      timeSec = 100,
      description = "Rift Emergence #2 — second wave of adds, Discordant Roar stacks ramping",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1258610,
        1249207,
      },
    },
    {
      timeSec = 130,
      description = "Corrupted Devastation #1 (100E) — boss flight, massive Nature breath sweeps",
      raidDamage = 5500000,
      severity = "critical",
      abilityGameIDs = {
        1245486,
      },
    },
    {
      timeSec = 150,
      description = "Ravenous Dive #1 — landing damage + add consumption check",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1245406,
      },
    },
    {
      timeSec = 190,
      description = "Rift Emergence #3 + Caustic Phlegm overlap — heavy sustained damage",
      raidDamage = 4500000,
      severity = "high",
      abilityGameIDs = {
        1258610,
        1246653,
      },
    },
    {
      timeSec = 240,
      description = "Rift Emergence #4 + Discordant Roar at high stacks — dangerous burst window",
      raidDamage = 5000000,
      severity = "critical",
      abilityGameIDs = {
        1258610,
        1249207,
      },
    },
    {
      timeSec = 270,
      description = "Corrupted Devastation #2 — second flight phase, arena polluted with pools",
      raidDamage = 6000000,
      severity = "critical",
      abilityGameIDs = {
        1245486,
      },
    },
    {
      timeSec = 290,
      description = "Ravenous Dive #2 — must have all adds dead, otherwise Cannibalized Essence stacks",
      raidDamage = 4500000,
      severity = "high",
      abilityGameIDs = {
        1245406,
      },
    },
    {
      timeSec = 350,
      description = "Corrupted Devastation #3 (if fight extends) — extremely tight add check + lethal damage",
      raidDamage = 7000000,
      severity = "lethal",
      abilityGameIDs = {
        1245486,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      assignments = {
        {
          timeSec = 40,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pre-heal before Rift Emergence #1 — burst healing for the raid nuke.",
        },
        {
          timeSec = 95,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second Convoke for Rift Emergence #2 + Discordant Roar overlap.",
        },
        {
          timeSec = 100,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on tank taking Colossal Strikes during add phase.",
        },
        {
          timeSec = 125,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          rationale = "Pre-ramp before Corrupted Devastation #1 — 30s buff covers the flight phase and Ravenous Dive.",
        },
        {
          timeSec = 130,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranquility during Corrupted Devastation #1 — the highest raid-wide damage event.",
        },
        {
          timeSec = 165,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Third Convoke for post-Dive recovery and incoming add pressure.",
        },
        {
          timeSec = 190,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on Consuming Miasma target about to be dispelled.",
        },
        {
          timeSec = 235,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Fourth Convoke for Rift Emergence #4 + high Discordant Roar stacks.",
        },
        {
          timeSec = 265,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Tranquility for Corrupted Devastation #2 — deadlier than the first with arena pollution.",
        },
        {
          timeSec = 270,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on lowest HP player during flight phase #2.",
        },
        {
          timeSec = 305,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Fifth Convoke for post-Dive #2 recovery.",
        },
        {
          timeSec = 345,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          rationale = "Second Incarnation for potential third Corrupted Devastation — fight must end here.",
        },
        {
          timeSec = 350,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final Convoke — lethal damage territory.",
        },
      },
    },
  },
  notes = "Both Tranquility uses are mapped to Corrupted Devastation flight phases — the deadliest windows. Incarnation #1 at 2:05 covers the first flight + Dive. Incarnation #2 at 5:45 for potential third flight. Add control is everything — if Chimaerus consumes Manifestations, Cannibalized Essence makes damage unhealable. Coordinate Consuming Miasma dispels carefully — dispel only after target clears Alndust Essence pools.",
}
HexCDReminder.BundledPlans[3306][5] = {
  encounterID = 3306,
  difficulty = 5,
  patchVersion = "12.0.5",
  fightDurationSec = 397,
  damageTimeline = {
    {
      timeSec = 30,
      description = "Caustic Phlegm ramp + Discordant Roar #1 (117k avg burst)",
      raidDamage = 6600000,
      severity = "high",
      abilityGameIDs = {
        1246653,
        1249207,
      },
    },
    {
      timeSec = 60,
      description = "Phlegm + Consuming Miasma overlap — sustained pressure before Consume",
      raidDamage = 5100000,
      severity = "medium",
      abilityGameIDs = {
        1246653,
        1257087,
      },
    },
    {
      timeSec = 70,
      description = "★ Consume #1 — boss channels, 102k avg hit per player (10.9M total in 10s)",
      raidDamage = 10900000,
      severity = "critical",
      abilityGameIDs = {
        1273112,
      },
    },
    {
      timeSec = 80,
      description = "Rift Emergence #1 — heavy raid nuke (132k avg) + Manifestation spawns",
      raidDamage = 3700000,
      severity = "high",
      abilityGameIDs = {
        1258610,
      },
    },
    {
      timeSec = 110,
      description = "Discordant Roar #2 + Phlegm sustained damage",
      raidDamage = 6000000,
      severity = "high",
      abilityGameIDs = {
        1249207,
        1246653,
      },
    },
    {
      timeSec = 140,
      description = "★★ Consume #2 — HARDEST WINDOW (14.4M in 10s, highest of entire fight)",
      raidDamage = 14400000,
      severity = "lethal",
      abilityGameIDs = {
        1273112,
      },
    },
    {
      timeSec = 180,
      description = "Discordant Roar at high stacks + Phlegm overlap (7.0M)",
      raidDamage = 7000000,
      severity = "high",
      abilityGameIDs = {
        1249207,
        1246653,
      },
    },
    {
      timeSec = 200,
      description = "Discordant Roar + Colossal Strikes — tank + raid overlap (8.9M)",
      raidDamage = 8900000,
      severity = "critical",
      abilityGameIDs = {
        1249207,
        1262305,
      },
    },
    {
      timeSec = 240,
      description = "Ravenous Dive landing + Phlegm (6.5M)",
      raidDamage = 6500000,
      severity = "high",
      abilityGameIDs = {
        1245406,
        1246653,
      },
    },
    {
      timeSec = 260,
      description = "Rift Emergence #2 — second heavy nuke + add wave",
      raidDamage = 2600000,
      severity = "medium",
      abilityGameIDs = {
        1258610,
      },
    },
    {
      timeSec = 290,
      description = "Discordant Roar at max stacks + Phlegm (7.8M)",
      raidDamage = 7800000,
      severity = "critical",
      abilityGameIDs = {
        1249207,
        1246653,
      },
    },
    {
      timeSec = 320,
      description = "★ Consume #3 — third major burst (10.7M in 10s)",
      raidDamage = 10700000,
      severity = "critical",
      abilityGameIDs = {
        1273112,
      },
    },
    {
      timeSec = 330,
      description = "Rift Emergence #3 + Consume tail (5.1M)",
      raidDamage = 5100000,
      severity = "high",
      abilityGameIDs = {
        1258610,
        1273112,
      },
    },
    {
      timeSec = 390,
      description = "Consume #4 + boss kill (5.3M — boss dies during channel)",
      raidDamage = 5300000,
      severity = "high",
      abilityGameIDs = {
        1273112,
      },
    },
  },
  healerAssignments = {
    {
      className = "Druid",
      specName = "Restoration",
      playerName = "Hexastyle",
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (truncated ~10s pull ramp). WG + SM + Rejuvs before Convoke.",
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 1. Stabilizes raid through opening Caustic Phlegm ramp.",
        },
        {
          timeSec = 14,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 20,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~24s. Mana recovery before Consume #1 ramp.",
        },
        {
          timeSec = 44,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External on lowest HP player during Discordant Roar #1.",
        },
        {
          timeSec = 48,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp Consume #1. Full ramp: 12 Rejuv + 3 RG + WG + SM.",
        },
        {
          timeSec = 70,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 1 Consume #1 (~8s channel). 102k avg per player, 10.9M total.",
        },
        {
          timeSec = 78,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s). Max Abundance post-Tranq + Consume recovery.",
        },
        {
          timeSec = 70,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp during Tranq (HoTs ticking under channel). Prep for Convoke 2.",
        },
        {
          timeSec = 79,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 2 post-Consume #1. Burst heal through aftermath + Rift Emergence #1.",
        },
        {
          timeSec = 83,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 92,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~22s. Mana recovery before Consume #2 ramp.",
        },
        {
          timeSec = 114,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp Consume #2. CRITICAL — 14.4M damage (highest in fight).",
        },
        {
          timeSec = 130,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp Consume #2 — refresh HoTs for hardest window.",
        },
        {
          timeSec = 136,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Ironbark Consume #2 — external on lowest HP player.",
        },
        {
          timeSec = 144,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 3 Consume #2. Burst heal through hardest window (14.4M).",
        },
        {
          timeSec = 148,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 155,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~30s. Extended mana recovery — long gap before next spike.",
        },
        {
          timeSec = 186,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (22s → 3:28). Covers Discordant Roar at high stacks + Phlegm overlap (7.0M).",
        },
        {
          timeSec = 208,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 4. Discordant Roar + Colossal Strikes overlap (8.9M).",
        },
        {
          timeSec = 212,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 218,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~22s. Mana recovery.",
        },
        {
          timeSec = 240,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External during Ravenous Dive landing at 4:00.",
        },
        {
          timeSec = 247,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp (22s → 4:29). Covers Rift Emergence #2 at 4:20 + Discordant Roar.",
        },
        {
          timeSec = 269,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 5. Discordant Roar at max stacks + post-Rift recovery.",
        },
        {
          timeSec = 273,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 4 RG (~5s). Spend Convoke throughput.",
        },
        {
          timeSec = 280,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Cat weave ~18s. Final mana recovery before Consume #3.",
        },
        {
          timeSec = 298,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp Consume #3. Full ramp for Tranq 2.",
        },
        {
          timeSec = 310,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp Consume #3. Refresh HoTs for Tranq 2.",
        },
        {
          timeSec = 325,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "★ Tranq 2 Consume #3 (~8s channel, 5:25-5:33). Covers 10.7M burst.",
        },
        {
          timeSec = 334,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn 12 RG (~14s). Max Abundance post-Tranq.",
        },
        {
          timeSec = 361,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "External during late-fight sustained pressure.",
        },
        {
          timeSec = 362,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Ramp Consume #4. Final ramp — boss must die.",
        },
        {
          timeSec = 384,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "burn → Convoke 6 Consume #4. Everything you have, kill the boss.",
        },
        {
          timeSec = 388,
          abilityGameID = 8936,
          abilityName = "Regrowth",
          rationale = "Burn RG until dead. Max Abundance — spam Regrowth.",
        },
      },
    },
  },
  notes = "Mythic Chimaerus is a 6:37 encounter dominated by Consume windows (~102k avg per player). Caustic Phlegm is constant 22k/hit sustain damage (50%+ of total damage taken). Pattern: Ramp (22s) → CD (Convoke/Tranq) → Burn (Regrowth chain). Tranqs to Consume #1 (70s) and Consume #3 (325s). Convoke 3 to Consume #2, Convoke 6 to Consume #4. Top parse (Shalla) uses NO Tree — 6 Convokes + 2 Tranqs + 4 Ironbarks. ~60s Convoke cadence. Reference: Shalla (top parse rdruid) PDZLTMmCbcj1Nx7w fight 26. Consume #2 at ~140s is the lethal window (14.4M in 10s) — stack Convoke + Ironbark. Cat weave windows: 0:20-0:44 (24s) and 2:35-3:06 (31s) are the longest safe mana recovery gaps. Discordant Roar from Colossal Horror adds hits 117k avg — stacks escalate through the fight.",
}
HexCDReminder.BundledPlans[3306][4] = {
  encounterID = 3306,
  difficulty = 4,
  patchVersion = "12.0.5",
  fightDurationSec = 300,
  damageTimeline = {
    {
      timeSec = 20,
      description = "Caustic Phlegm #1 — 12s Nature DoT on all (repeats)",
      raidDamage = 2000000,
      severity = "medium",
      abilityGameIDs = {
        1246653,
      },
    },
    {
      timeSec = 45,
      description = "Rift Emergence #1 — heavy nuke + Manifestation spawns",
      raidDamage = 3500000,
      severity = "high",
      abilityGameIDs = {
        1258610,
      },
    },
    {
      timeSec = 70,
      description = "Consuming Miasma + Discordant Roar",
      raidDamage = 3000000,
      severity = "medium",
      abilityGameIDs = {
        1257087,
        1249207,
      },
    },
    {
      timeSec = 100,
      description = "Rift Emergence #2 + Discordant Roar stacks",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1258610,
        1249207,
      },
    },
    {
      timeSec = 130,
      description = "Corrupted Devastation #1 (100E) — boss flight, Nature breath",
      raidDamage = 5500000,
      severity = "critical",
      abilityGameIDs = {
        1245486,
      },
    },
    {
      timeSec = 150,
      description = "Ravenous Dive #1 — landing + add consumption",
      raidDamage = 4000000,
      severity = "high",
      abilityGameIDs = {
        1245406,
      },
    },
    {
      timeSec = 190,
      description = "Rift Emergence #3 + Phlegm overlap",
      raidDamage = 4500000,
      severity = "high",
      abilityGameIDs = {
        1258610,
        1246653,
      },
    },
    {
      timeSec = 240,
      description = "Rift Emergence #4 + high Roar stacks",
      raidDamage = 5000000,
      severity = "critical",
      abilityGameIDs = {
        1258610,
        1249207,
      },
    },
    {
      timeSec = 270,
      description = "Corrupted Devastation #2 — arena polluted",
      raidDamage = 6000000,
      severity = "critical",
      abilityGameIDs = {
        1245486,
      },
    },
    {
      timeSec = 290,
      description = "Ravenous Dive #2 — add check",
      raidDamage = 4500000,
      severity = "high",
      abilityGameIDs = {
        1245406,
      },
    },
  },
  healerAssignments = {
    {
      className = "Evoker",
      specName = "Preservation",
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Pull opener — instant empowered Spiritbloom. 3/3 parses use at 0-9s.",
        },
        {
          timeSec = 12,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Early Dream Flight for Caustic Phlegm ramp. Range 6-13s across 2 non-outlier parses.",
        },
        {
          timeSec = 65,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Zephyr for Consuming Miasma + Discordant Roar window. Range 65-114s.",
        },
        {
          timeSec = 72,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind for Rift Emergence #1 aftermath + Discordant Roar. Range 70-78s across 3 parses.",
        },
        {
          timeSec = 95,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Second Tip for Rift Emergence #2 window. Range 92-98s.",
        },
        {
          timeSec = 130,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight during Corrupted Devastation #1 flight phase. Range 129-142s.",
        },
        {
          timeSec = 178,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Third Tip for Rift Emergence #3 + Phlegm overlap. Range 173-181s.",
        },
        {
          timeSec = 230,
          abilityGameID = 374227,
          abilityName = "Zephyr",
          rationale = "Zephyr for Corrupted Devastation #2 approach — AoE DR on flight damage. Range 229-233s.",
        },
        {
          timeSec = 243,
          abilityGameID = 363534,
          abilityName = "Rewind",
          rationale = "Rewind for Rift Emergence #4 + high Discordant Roar stacks. Range 237-247s.",
        },
        {
          timeSec = 258,
          abilityGameID = 359816,
          abilityName = "Dream Flight",
          rationale = "Dream Flight during Corrupted Devastation #2. Range 222-257s.",
        },
        {
          timeSec = 275,
          abilityGameID = 370553,
          abilityName = "Tip the Scales",
          rationale = "Fourth Tip for Ravenous Dive #2 + kill push. Range 274-294s.",
        },
      },
    },
  },
  notes = "Updated 2026-04-07 from top 3 Heroic Pres Evoker parses (181k–177k HPS). Rewind at ~72s and ~243s covers the two biggest Rift Emergence + Discordant Roar overlaps. Zephyr covers Corrupted Devastation flight phases. Dream Flight every ~120s for sustain. Tip the Scales on cooldown — 3-4 uses in a ~280s fight. Simvoker (308s) is an outlier with 8x Tip + 5x DF — aggressive CD usage in longer fight. Add control is critical — Cannibalized Essence from consumed adds makes healing impossible. Top players: Inwakes (Area 52), Simvoker (Silvermoon), Lerrastrasza (Zirkel des Cenarius).",
}

HexCDReminder.BundledDungeonPlans = HexCDReminder.BundledDungeonPlans or {}
HexCDReminder.BundledDungeonPlans[402] = {
  dungeonSlug = "algethar-academy",
  dungeonName = "Algeth'ar Academy",
  challengeMapID = 402,
  keyLevel = 17,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    2562,
    2563,
    2564,
    2565,
  },
  notes = "Route: Botanica → Grounds → Arcane Wing → Doragosa. Grab Arcane Tome for 5% haste. Lust on Doragosa (longest fight, highest damage ramp).",
  sections = {
    {
      sectionId = "botanica-1",
      label = "Botanica Pull 1: Vile Lashers + Skitterflies",
      type = "trash",
      creatureIDs = {
        236894,
        197406,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Vile Bite (avg 126k) hits hard on pull. Burst heal through it.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "Kite Lashers if needed. Interrupt Skitterfly casts.",
    },
    {
      sectionId = "botanica-2",
      label = "Botanica Pull 2: More Lashers",
      type = "trash",
      creatureIDs = {
        236894,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for sustained Lasher damage.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Multiple Lashers hitting group — sustained healing needed.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
      },
      notes = "Big pull. AoE stun for burst window.",
    },
    {
      sectionId = "boss-ancient",
      label = "Boss: Overgrown Ancient",
      type = "boss",
      encounterID = 2563,
      creatureIDs = {
        196482,
      },
      maxCDs = 5,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 388923,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before first Burst Forth.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 388923,
          anchorOffsetSec = 0,
          rationale = "Burst Forth — burst heal through the group damage.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388923,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Burst Forth casts. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 388923,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for 2nd Burst Forth + Splinterbark overlap.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388923,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 388923,
          anchorOffsetSec = 0,
          rationale = "2nd Burst Forth + Splinterbark (avg 104k) overlap — Tree for sustained throughput.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388923,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 110,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 388923,
          anchorOffsetSec = 0,
          rationale = "Third Burst Forth cycle. Burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388923,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 145,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Late fight sustained healing — adds + boss overlapping.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 145,
          },
        },
        {
          timeSec = 170,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — Convoke to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 170,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Burst Forth #1",
          severity = "high",
          abilityGameIDs = {
            388923,
          },
        },
        {
          timeSec = 65,
          description = "Burst Forth #2 + Splinterbark (104k avg)",
          severity = "critical",
          abilityGameIDs = {
            388923,
            396716,
          },
        },
        {
          timeSec = 110,
          description = "Burst Forth #3",
          severity = "high",
          abilityGameIDs = {
            388923,
          },
        },
      },
      notes = "Dodge Splinterbark cones. Kill Lashlings quickly during Burst Forth.",
    },
    {
      sectionId = "grounds-1",
      label = "Grounds: Guardian Sentries + Eagles",
      type = "trash",
      creatureIDs = {
        192680,
        192333,
        192329,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for Expel Intruders + Raging Screech overlap.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Expel Intruders LoS + Raging Screech — burst heal through it.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
      },
      notes = "LoS Expel Intruders behind pillar. Interrupt Raging Screech.",
    },
    {
      sectionId = "boss-crawth",
      label = "Boss: Crawth",
      type = "boss",
      encounterID = 2564,
      creatureIDs = {
        191736,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 377004,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before first Deafening Screech.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 377004,
          anchorOffsetSec = 0,
          rationale = "Deafening Screech — burst heal through the group damage.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 377004,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Low damage window. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1276752,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Ruinous Winds phase.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1276752,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1276752,
          anchorOffsetSec = 0,
          rationale = "Ruinous Winds — sustained group damage, Tranq to stabilize.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1276752,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Post-Winds recovery. Burst heal.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 100,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — Convoke to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 130,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Deafening Screech",
          severity = "high",
          abilityGameIDs = {
            377004,
          },
        },
        {
          timeSec = 65,
          description = "Ruinous Winds",
          severity = "critical",
          abilityGameIDs = {
            1276752,
          },
        },
      },
      notes = "Stand in book circles for buffs during Savage Peck intermission. Dodge tornadoes.",
    },
    {
      sectionId = "arcane-1",
      label = "Arcane Pull 1: Manafiends + Ravagers",
      type = "trash",
      creatureIDs = {
        196045,
        196671,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Manafiend + Ravager burst — Convoke to heal through it.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "Interrupt Manafiend casts. Kite Ravagers.",
    },
    {
      sectionId = "arcane-2",
      label = "Arcane Pull 2: Textbooks",
      type = "trash",
      creatureIDs = {
        196044,
      },
      maxCDs = 0,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Light pull — DPS in cat form, save CDs for Vexamus.",
          scheduling = {
            mode = "immediate",
          },
        },
      },
      notes = "Easy pull. Recover mana.",
    },
    {
      sectionId = "boss-vexamus",
      label = "Boss: Vexamus",
      type = "boss",
      encounterID = 2562,
      creatureIDs = {
        194181,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 388537,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before first Arcane Fissure.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 388537,
          anchorOffsetSec = 0,
          rationale = "Arcane Fissure — burst heal through the explosion.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388537,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Fissures. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 388537,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for 2nd Arcane Fissure.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388537,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 388537,
          anchorOffsetSec = 0,
          rationale = "2nd Arcane Fissure — sustained group damage. Tranq to stabilize.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388537,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 388537,
          anchorOffsetSec = 0,
          rationale = "Third Fissure cycle. Burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388537,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — Convoke to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 130,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Arcane Fissure #1",
          severity = "high",
          abilityGameIDs = {
            388537,
          },
        },
        {
          timeSec = 65,
          description = "Arcane Fissure #2",
          severity = "high",
          abilityGameIDs = {
            388537,
          },
        },
      },
      notes = "Soak Mana Bombs — missed soak is raid-wide explosion. Dodge Arcane Expulsion orbs.",
    },
    {
      sectionId = "echo-trash",
      label = "Echo Trash: Echoknights + Invokers",
      type = "trash",
      creatureIDs = {
        196200,
        196202,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT — Arcane Smash (avg 196k!) is the hardest hitting trash ability.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Arcane Smash + Invoker casts — sustained healing needed.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
        {
          timeSec = 35,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second wave of casts. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 2,
            minDelaySec = 27,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Arcane Smash (196k avg!)",
          severity = "critical",
        },
      },
      notes = "DANGER PULL. Dodge Arcane Smash frontal. Interrupt Spectral Invoker. This is the hardest trash in the dungeon.",
    },
    {
      sectionId = "boss-doragosa",
      label = "Boss: Echo of Doragosa",
      type = "boss",
      encounterID = 2565,
      creatureIDs = {
        190609,
      },
      maxCDs = 6,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 388822,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before Overwhelming Power + rifts.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 388822,
          anchorOffsetSec = 0,
          rationale = "Overwhelming Power — burst heal through arcane damage.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388822,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Power cycles. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 388822,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Power Vacuum + stacking rifts.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388822,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 388822,
          anchorOffsetSec = 0,
          rationale = "Power Vacuum + rifts stacking — Tree for sustained throughput through overlap.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388822,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 388822,
          anchorOffsetSec = 0,
          rationale = "Mid-fight burst heal — rifts accumulating.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 388822,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 140,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 374361,
          anchorOffsetSec = 0,
          rationale = "Astral Breath — sustained group damage. Tranq to stabilize.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 374361,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 170,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Late fight burst heal — arena getting crowded with rifts.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 170,
          },
        },
        {
          timeSec = 200,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — Convoke to survive.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 200,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Overwhelming Power + rifts",
          severity = "high",
          abilityGameIDs = {
            388822,
          },
        },
        {
          timeSec = 65,
          description = "Power Vacuum + stacking rifts",
          severity = "critical",
          abilityGameIDs = {
            388822,
          },
        },
        {
          timeSec = 140,
          description = "Astral Breath",
          severity = "high",
          abilityGameIDs = {
            374361,
          },
        },
      },
      notes = "Drop rifts at arena edges. Dodge Astral Breath. Arena shrinks as rifts accumulate — positioning is key.",
    },
  },
}
HexCDReminder.BundledDungeonPlans[560] = {
  dungeonSlug = "maisara-caverns",
  dungeonName = "Maisara Caverns",
  challengeMapID = 560,
  keyLevel = 17,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    3212,
    3213,
    3214,
  },
  notes = "Linear route, 3 bosses. Lust on Boss 3. Withering Miasma from Vordaza is the healing check of the dungeon. Top parse reference (2026-04-08): Vitalitie +20 (128k HPS, 24 Convokes/8 Tranqs/32min), Jawadruid +19 (115k HPS, 25 Convokes/9 Tranqs/31.5min). All top parses use Convoke build (Cenarius Guidance, 60s CD). Convoke every 60-80s, Tranq every 3-4min on boss/big trash.",
  mobProfile = {
    casterEliteDPS = 20000,
    meleeEliteDPS = 10000,
    lieutenantDPS = 25000,
    trivialDPS = 3000,
  },
  trashCDTiers = {
    tier0 = {
      {
        abilityGameID = 768,
        abilityName = "Cat Weave",
        scheduling = "immediate",
        windowSec = 30,
      },
    },
    tier1 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
    },
    tier2 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
      {
        abilityGameID = 740,
        abilityName = "Tranquility",
        scheduling = "sequential",
        order = 2,
        delaySec = 20,
        windowSec = 9,
      },
    },
    tier3 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
      {
        abilityGameID = 33891,
        abilityName = "Incarnation: Tree of Life",
        scheduling = "sequential",
        order = 2,
        delaySec = 12,
        windowSec = 30,
      },
      {
        abilityGameID = 740,
        abilityName = "Tranquility",
        scheduling = "sequential",
        order = 3,
        delaySec = 25,
        windowSec = 9,
      },
    },
  },
  sections = {
    {
      sectionId = "boss-1",
      label = "Boss: Muro'jin & Nekraxx",
      type = "boss",
      encounterID = 3212,
      creatureIDs = {
        0,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1249479,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before first Carrion Swoop.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1249479,
          anchorOffsetSec = 0,
          rationale = "Carrion Swoop + Flanking Spear overlap — burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249479,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between mechanic cycles. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1249479,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for second Swoop cycle.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249479,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1260643,
          anchorOffsetSec = 0,
          rationale = "Barrage + Fetid Quillstorm overlap — sustained healing.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1260643,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1249479,
          anchorOffsetSec = 0,
          rationale = "Third mechanic cycle. Burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249479,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — both bosses must die close together.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 130,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Carrion Swoop + Flanking Spear",
          severity = "high",
          abilityGameIDs = {
            1249479,
            1266480,
          },
        },
        {
          timeSec = 65,
          description = "Barrage (5s channel) + Fetid Quillstorm overlap",
          severity = "critical",
          abilityGameIDs = {
            1260643,
            1243900,
          },
        },
        {
          timeSec = 100,
          description = "Carrion Swoop #3",
          severity = "high",
          abilityGameIDs = {
            1249479,
          },
        },
      },
      notes = "Use Freezing Traps to counter Carrion Swoop. Kill bosses at similar health to avoid enrage. Dispel Infected Pinions.",
    },
    {
      sectionId = "boss-2",
      label = "Boss: Vordaza",
      type = "boss",
      encounterID = 3213,
      creatureIDs = {
        0,
      },
      maxCDs = 5,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT on pull. Early damage is manageable.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 25,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Burst heal on first Unmake — group-wide damage check.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1252054,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Unmake cycles. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for Necrotic Convergence shield phase.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1250708,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          rationale = "Necrotic Convergence — healer-intensive shield phase. Tree for sustained throughput.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1250708,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 110,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Post-shield recovery. Burst heal on Unmake after phase change.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1252054,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 145,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Late fight — Miasma stacking. Sustained healing.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 145,
          },
        },
        {
          timeSec = 170,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — Convoke to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 170,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 25,
          description = "Unmake #1 — group damage check",
          severity = "high",
          abilityGameIDs = {
            1252054,
          },
        },
        {
          timeSec = 65,
          description = "Necrotic Convergence shield phase",
          severity = "critical",
          abilityGameIDs = {
            1250708,
          },
        },
        {
          timeSec = 110,
          description = "Post-phase Unmake + Miasma stacking",
          severity = "high",
          abilityGameIDs = {
            1252054,
          },
        },
      },
      notes = "DPS the Necrotic Convergence shield fast. Force Unstable Phantoms to collide — do NOT attack them. Constant rot damage from Miasma.",
    },
    {
      sectionId = "boss-3",
      label = "Boss: Final Boss",
      type = "boss",
      encounterID = 3214,
      creatureIDs = {
        0,
      },
      maxCDs = 7,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "LUST ON PULL. Pre-HoT for opening damage.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 17,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Crush Souls #1 — burst heal during lust.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1252676,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 35,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "DPS in cat during lust window.",
          scheduling = {
            mode = "immediate",
            delaySec = 35,
          },
        },
        {
          timeSec = 60,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT 10s before Soulrending Roar — major heal check.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253788,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 70,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Soulrending Roar #1 — massive group damage. Sustained heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253788,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 124,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Phase 2 start — burst heal on Spiritbreaker overlap.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1251023,
            anchorOffsetSec = 0,
            occurrence = 4,
          },
        },
        {
          timeSec = 137,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          rationale = "Phase 2 sustained damage — Tree for throughput through Crush Souls + Spiritbreaker.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1252676,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 160,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Late phase 2 — burst heal through overlapping mechanics.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 160,
          },
        },
        {
          timeSec = 185,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Deep late fight — everything overlapping. Sustained healing.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 185,
          },
        },
        {
          timeSec = 200,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — Convoke to survive.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 200,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 17,
          description = "Crush Souls #1 — lust window",
          severity = "high",
          abilityGameIDs = {
            1252676,
          },
        },
        {
          timeSec = 70,
          description = "Soulrending Roar #1 — massive group damage",
          severity = "critical",
          abilityGameIDs = {
            1253788,
          },
        },
        {
          timeSec = 124,
          description = "Phase 2 start — Spiritbreaker + Crush Souls overlap",
          severity = "high",
          abilityGameIDs = {
            1251023,
            1252676,
          },
        },
      },
      notes = "LUST ON PULL. Phase reset at ~2:00. Save Tree for phase 2 sustained damage. Soulrending Roar at 1:10 is the healing check.",
    },
  },
}
HexCDReminder.BundledDungeonPlans[558] = {
  dungeonSlug = "magisters-terrace",
  dungeonName = "Magisters' Terrace",
  challengeMapID = 558,
  keyLevel = 17,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    3071,
    3072,
    3073,
    3074,
  },
  notes = "Linear route: Arcanotron → Seranel → channel Cynosure → Gemellus → Degentrius. Grab Arcane Tome for 5% haste. Lust on Degentrius (sub-30% DPS check).",
  sections = {
    {
      sectionId = "entrance-1",
      label = "Entrance Pull 1: Magisters + Enforcers",
      type = "trash",
      creatureIDs = {
        232369,
        234124,
        234486,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Opener — Arcane Blade buff + multiple casters hitting group. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "INTERRUPT Polymorph (Magister). Purge Arcane Blade (Enforcer) + Power Word: Shield (Healer). Dispel Holy Fire.",
    },
    {
      sectionId = "entrance-2",
      label = "Entrance Pull 2: Sentries + Pyromancers",
      type = "trash",
      creatureIDs = {
        234062,
        251861,
        234089,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT — Pyroblast + Arcane Volley overlap.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Arcane Volley sustained damage + Ethereal Shackles preventing movement. Tranq through it.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 3,
          description = "Pyroblast (if missed interrupt)",
          severity = "critical",
          abilityGameIDs = {
            1254294,
          },
        },
        {
          timeSec = 10,
          description = "Arcane Volley sustained pulse",
          severity = "high",
          abilityGameIDs = {
            1244985,
          },
        },
      },
      notes = "INTERRUPT Pyroblast every cast. Dispel Ethereal Shackles. CC-immune mobs — focus Pyromancer.",
    },
    {
      sectionId = "entrance-3",
      label = "Library Gauntlet",
      type = "trash",
      creatureIDs = {
        234067,
        259387,
        232106,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Spellwoven Familiar group hit + Brightscale Energy Release. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "Avoid Librarian detection zones. Grab Arcane Tome for 5% haste buff (whole group, 30 min).",
    },
    {
      sectionId = "boss-arcanotron",
      label = "Boss: Arcanotron Custos",
      type = "boss",
      encounterID = 3071,
      creatureIDs = {
        231861,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1214081,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Arcane Expulsion knockback + puddle.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1214081,
          anchorOffsetSec = 0,
          rationale = "First Arcane Expulsion — burst heal through knockback.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1214081,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Expulsion casts. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 474308,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Refueling Protocol — orbs spawn.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 474308,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 474308,
          anchorOffsetSec = 0,
          rationale = "Refueling Protocol — orbs must be soaked, Unstable Energy stacks on soakers. Sustained healing.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 474308,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1214081,
          anchorOffsetSec = 0,
          rationale = "Second Arcane Expulsion cycle. Burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1214081,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — Repulsing Slam + Expulsion overlap.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 130,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Arcane Expulsion + knockback",
          severity = "high",
          abilityGameIDs = {
            1214081,
          },
        },
        {
          timeSec = 65,
          description = "Refueling Protocol — soak Energy Orbs",
          severity = "critical",
          abilityGameIDs = {
            474308,
          },
        },
        {
          timeSec = 100,
          description = "Arcane Expulsion #2",
          severity = "high",
          abilityGameIDs = {
            1214081,
          },
        },
      },
      notes = "Dispel Ethereal Shackles. Spread to soak orbs during Refueling. Tank defensive on Repulsing Slam.",
    },
    {
      sectionId = "courtyard-1",
      label = "Courtyard: Runed Spellbreakers",
      type = "trash",
      creatureIDs = {
        240973,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Runic Glaive (avg 73k, 2 targets) + Shield Slam line. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "CC-immune. Shield Slam is a line — tank points away. Dodge Runic Glaive paths.",
    },
    {
      sectionId = "boss-seranel",
      label = "Boss: Seranel Sunlash",
      type = "boss",
      encounterID = 3072,
      creatureIDs = {
        231863,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1225792,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for first Runic Mark + Null Reaction.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1225792,
          anchorOffsetSec = 0,
          rationale = "Runic Mark clearing triggers Null Reaction. Burst heal the 2 targets.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1225792,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 50,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Runic Mark cycles. DPS + mana.",
          scheduling = {
            mode = "immediate",
            delaySec = 50,
          },
        },
        {
          timeSec = 70,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1225193,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Wave of Silence + Runic Mark overlap.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1225193,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 80,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 1225193,
          anchorOffsetSec = 0,
          rationale = "Wave of Silence pacifies group. Tree for sustained throughput when others are silenced.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1225193,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 120,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1225792,
          anchorOffsetSec = 0,
          rationale = "Third Runic Mark cycle. Burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1225792,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 155,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Final phase — Hastening Ward + Runic Mark + Wave overlap. Sustained healing.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 155,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Runic Mark #1 → Null Reaction",
          severity = "high",
          abilityGameIDs = {
            1225792,
            1246446,
          },
        },
        {
          timeSec = 45,
          description = "Wave of Silence (step into Suppression Zone)",
          severity = "high",
          abilityGameIDs = {
            1225193,
          },
        },
        {
          timeSec = 80,
          description = "Runic Mark + Wave of Silence overlap",
          severity = "critical",
          abilityGameIDs = {
            1225792,
            1225193,
          },
        },
      },
      notes = "Purge Hastening Ward. Clear Runic Marks in Suppression Zone. Step into zone to avoid Wave of Silence pacify.",
    },
    {
      sectionId = "void-1",
      label = "Void Pull 1: Shredders + Voidcallers",
      type = "trash",
      creatureIDs = {
        234065,
        257447,
        234068,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT — Dimensional Shred (avg 107k!) + Consuming Shadows.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Consuming Shadows sustained group damage. Tranq to survive. LoS if possible.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
        {
          timeSec = 30,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second wave of Dimensional Shred + Shadow Bolt pressure. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 2,
            minDelaySec = 22,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Consuming Shadows — LoS or heal through",
          severity = "critical",
          abilityGameIDs = {
            1265977,
          },
        },
        {
          timeSec = 15,
          description = "Dimensional Shred (107k avg)",
          severity = "critical",
          abilityGameIDs = {
            1227020,
          },
        },
      },
      notes = "DANGER PULL. LoS Consuming Shadows behind walls. Interrupt Shadow Bolt. Dimensional Shred is unavoidable — pure healing check.",
    },
    {
      sectionId = "void-2",
      label = "Void Pull 2: Tyrant + Voidwalkers",
      type = "trash",
      creatureIDs = {
        234066,
        234064,
        234069,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Devouring Strike tank damage + Void Bomb healing absorb. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "CC-immune Tyrant. Interrupt Shadow Bolt (Voidwalker). Tank uses defensive for Devouring Strike.",
    },
    {
      sectionId = "boss-gemellus",
      label = "Boss: Gemellus",
      type = "boss",
      encounterID = 3073,
      creatureIDs = {
        231864,
        239636,
      },
      maxCDs = 5,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1224299,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Triplicate clone spawn.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1224299,
          anchorOffsetSec = 0,
          rationale = "Astral Grasp pull-in (avg 64k) during clone phase. Burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1224299,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Clones dying, low damage. DPS + mana.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 60,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1223847,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for 50% Triplicate — second clone wave.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1223847,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
        },
        {
          timeSec = 70,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 1223847,
          anchorOffsetSec = 0,
          rationale = "Second Triplicate + Astral Grasp + Neural Link overlap. Tree for sustained throughput.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1223847,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1224299,
          anchorOffsetSec = 0,
          rationale = "Cosmic Sting puddles + Astral Grasp. Arena getting tight.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1224299,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 140,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Late fight — multiple mechanics overlapping. Sustained healing.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 140,
          },
        },
        {
          timeSec = 165,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn. Burst heal to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 165,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Triplicate #1 — 3 clones spawn",
          severity = "high",
          abilityGameIDs = {
            1223847,
          },
        },
        {
          timeSec = 10,
          description = "Astral Grasp pull-in (64k avg)",
          severity = "high",
          abilityGameIDs = {
            1224299,
          },
        },
        {
          timeSec = 70,
          description = "Triplicate #2 at 50% HP",
          severity = "critical",
          abilityGameIDs = {
            1223847,
          },
        },
      },
      notes = "Run to linked clone for Neural Link. Drop Cosmic Sting puddles away. Run away from Astral Grasp.",
    },
    {
      sectionId = "boss-degentrius",
      label = "Boss: Degentrius",
      type = "boss",
      encounterID = 3074,
      creatureIDs = {
        231865,
      },
      maxCDs = 7,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1215157,
          anchorOffsetSec = -10,
          rationale = "LUST ON PULL. Pre-HoT for opening damage.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1215157,
          anchorOffsetSec = 0,
          rationale = "First Void Essence bounces + Devouring Entropy stacks. Burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1215157,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between major damage phases. DPS hard during lust window.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 60,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1215897,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for second Void Essence cycle.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1215897,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 70,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1215897,
          anchorOffsetSec = 0,
          rationale = "Devouring Entropy stacks building (avg 47k). Sustained healing.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1215897,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Hulking Fragment puddles + Entropy Blast overlap. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 30,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 1215157,
          anchorOffsetSec = 0,
          rationale = "Approaching sub-30% — bounce frequency increases. Tree for extended throughput.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 130,
          },
        },
        {
          timeSec = 160,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Sub-30% — accelerated bounces + Hulking Fragment arena shrinking.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 160,
          },
        },
        {
          timeSec = 190,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1215897,
          anchorOffsetSec = 0,
          rationale = "Deep sub-30% — everything overlapping. Tranq to survive.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 190,
          },
        },
        {
          timeSec = 215,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn. Must kill before arena fills with puddles.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 215,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Unstable Void Essence bounces start",
          severity = "high",
          abilityGameIDs = {
            1215157,
          },
        },
        {
          timeSec = 70,
          description = "Devouring Entropy stacking (47k avg)",
          severity = "high",
          abilityGameIDs = {
            1215897,
          },
        },
        {
          timeSec = 130,
          description = "Sub-30% — accelerated bounces + Hulking Fragments",
          severity = "critical",
          abilityGameIDs = {
            1215157,
            1280113,
          },
        },
        {
          timeSec = 190,
          description = "Deep sub-30% — arena shrinking, max pressure",
          severity = "critical",
          abilityGameIDs = {
            1215897,
          },
        },
      },
      notes = "LUST ON PULL. At least 1 player per side of Void Torrent. Catch EVERY Void Essence bounce — missed soak = 40s group DoT. Sub-30% is the DPS check wall on Tyrannical.",
    },
  },
}
HexCDReminder.BundledDungeonPlans[559] = {
  dungeonSlug = "nexus-point-xenas",
  dungeonName = "Nexus-Point Xenas",
  challengeMapID = 559,
  keyLevel = 17,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    3328,
    3332,
    3333,
  },
  notes = "Route-independent dynamic trash planning. Lust on Nysarra during Lightscar Flare for 300% damage amp.",
  mobProfile = {
    casterEliteDPS = 30000,
    meleeEliteDPS = 8000,
    lieutenantDPS = 35000,
    trivialDPS = 3000,
  },
  trashCDTiers = {
    tier0 = {
      {
        abilityGameID = 768,
        abilityName = "Cat Weave",
        scheduling = "immediate",
        windowSec = 30,
      },
    },
    tier1 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
    },
    tier2 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
      {
        abilityGameID = 740,
        abilityName = "Tranquility",
        scheduling = "sequential",
        order = 2,
        delaySec = 20,
        windowSec = 9,
      },
    },
    tier3 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
      {
        abilityGameID = 33891,
        abilityName = "Incarnation: Tree of Life",
        scheduling = "sequential",
        order = 2,
        delaySec = 12,
        windowSec = 30,
      },
      {
        abilityGameID = 740,
        abilityName = "Tranquility",
        scheduling = "sequential",
        order = 3,
        delaySec = 25,
        windowSec = 9,
      },
    },
  },
  sections = {
    {
      sectionId = "boss-kasreth",
      label = "Boss: Chief Corewright Kasreth",
      type = "boss",
      encounterID = 3328,
      creatureIDs = {
        241539,
      },
      maxCDs = 10,
      assignments = {
        {
          timeSec = 40,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "immediate",
          },
          rationale = "Pre-HoT 10s before first Corespark Detonation (~50s). Sparkburn heal absorb incoming.",
        },
        {
          timeSec = 50,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
          rationale = "Corespark Detonation #1 — burst through Sparkburn heal absorb.",
        },
        {
          timeSec = 65,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          scheduling = {
            mode = "sequential",
            order = 2,
            minDelaySec = 10,
          },
          rationale = "Low damage window between Detonations. DPS + recover mana.",
        },
        {
          timeSec = 88,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "sequential",
            order = 3,
            minDelaySec = 15,
          },
          rationale = "Pre-HoT ~10s before second Corespark Detonation.",
        },
        {
          timeSec = 98,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          scheduling = {
            mode = "sequential",
            order = 4,
            minDelaySec = 8,
          },
          rationale = "Corespark Detonation #2 — Tree for sustained healing. Convoke still on CD (~50s left).",
        },
        {
          timeSec = 138,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "sequential",
            order = 5,
            minDelaySec = 30,
          },
          rationale = "Pre-HoT before third Corespark Detonation.",
        },
        {
          timeSec = 148,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "sequential",
            order = 6,
            minDelaySec = 8,
          },
          rationale = "Corespark Detonation #3 — Convoke off CD again (~110s since last use).",
        },
        {
          timeSec = 180,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "sequential",
            order = 7,
            minDelaySec = 25,
          },
          rationale = "Pre-HoT before Corespark Detonation #4.",
        },
        {
          timeSec = 190,
          abilityGameID = 740,
          abilityName = "Tranquility",
          scheduling = {
            mode = "sequential",
            order = 8,
            minDelaySec = 8,
          },
          rationale = "Corespark Detonation #4 — Tranq if fight runs this long. Sparkburn + fatigue.",
        },
      },
      damageEvents = {
        {
          timeSec = 50,
          description = "Corespark Detonation #1 → Sparkburn heal absorb",
          severity = "high",
          abilityGameIDs = {
            1257509,
          },
        },
        {
          timeSec = 60,
          description = "Reflux Charge + Leyline Array overlap",
          severity = "medium",
          abilityGameIDs = {
            1282915,
            1251626,
          },
        },
        {
          timeSec = 102,
          description = "Corespark Detonation #2 → Sparkburn",
          severity = "high",
          abilityGameIDs = {
            1257509,
          },
        },
        {
          timeSec = 150,
          description = "Corespark Detonation #3 → Sparkburn + fatigue",
          severity = "high",
          abilityGameIDs = {
            1257509,
          },
        },
        {
          timeSec = 200,
          description = "Corespark Detonation #4 → deep fatigue",
          severity = "high",
          abilityGameIDs = {
            1257509,
          },
        },
      },
      notes = "C_EncounterTimeline bars have NO barId — anchor scheduling impossible. Using elapsed-time sequential instead. Corespark Detonation every ~50s. Sparkburn is heal absorb — must burst through it. Tree covers Detonation #2 when Convoke is on CD.",
    },
    {
      sectionId = "boss-nysarra",
      label = "Boss: Corewarden Nysarra",
      type = "boss",
      encounterID = 3332,
      creatureIDs = {
        241542,
        254227,
      },
      maxCDs = 12,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249014,
            anchorOffsetSec = -10,
            occurrence = 1,
          },
          rationale = "Pre-HoT 10s before first Eclipsing Step.",
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249014,
            anchorOffsetSec = 0,
            occurrence = 1,
          },
          rationale = "Eclipsing Step #1 — 2 targets, avg 72k each. Burst heal.",
        },
        {
          timeSec = 30,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1264439,
            anchorOffsetSec = 0,
            occurrence = 1,
          },
          rationale = "LUST HERE — Lightscar Flare 300% damage amp zone. DPS hard in cat.",
        },
        {
          timeSec = 40,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1247937,
            anchorOffsetSec = -10,
            occurrence = 1,
          },
          rationale = "Pre-HoT before first Umbral Lash. Adds spawning — damage increasing.",
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1247937,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
          rationale = "Pre-HoT for Umbral Lash #2 + add overlap.",
        },
        {
          timeSec = 65,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1247937,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
          rationale = "Umbral Lash #2 — Tree for sustained throughput during add phase. DTPS peaks at 258k.",
        },
        {
          timeSec = 60,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249014,
            anchorOffsetSec = -10,
          },
          rationale = "Pre-HoT before next Eclipsing Step.",
        },
        {
          timeSec = 70,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249014,
            anchorOffsetSec = 0,
          },
          rationale = "Eclipsing Step — Convoke off CD. Burst heal under Tree.",
        },
        {
          timeSec = 90,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1247937,
            anchorOffsetSec = -10,
            occurrence = 3,
          },
          rationale = "Pre-HoT before Umbral Lash #3.",
        },
        {
          timeSec = 100,
          abilityGameID = 740,
          abilityName = "Tranquility",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1247937,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
          rationale = "Umbral Lash #3 — Tranq for sustained healing. Void Gash stacks increasing.",
        },
        {
          timeSec = 110,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249014,
            anchorOffsetSec = -10,
          },
          rationale = "Pre-HoT before next Eclipsing Step.",
        },
        {
          timeSec = 120,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1249014,
            anchorOffsetSec = 0,
          },
          rationale = "Eclipsing Step — Convoke off CD again.",
        },
        {
          timeSec = 140,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1247937,
            anchorOffsetSec = -10,
          },
          rationale = "Pre-HoT before next Umbral Lash.",
        },
        {
          timeSec = 160,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "conditional",
            condition = "afterAnchor",
            afterAnchorSpellID = 1247937,
            afterAnchorCount = 5,
            offsetSec = 0,
          },
          rationale = "Late phase — Convoke if fight runs long (>5 Umbral Lashes).",
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Eclipsing Step #1 (2 targets, 72k each)",
          severity = "high",
          abilityGameIDs = {
            1249014,
          },
        },
        {
          timeSec = 30,
          description = "Lightscar Flare — LUST + 300% damage amp zone",
          severity = "medium",
          abilityGameIDs = {
            1264439,
          },
        },
        {
          timeSec = 50,
          description = "Umbral Lash #1 + adds spawning",
          severity = "high",
          abilityGameIDs = {
            1247937,
          },
        },
        {
          timeSec = 65,
          description = "Umbral Lash #2 + add overlap — DTPS peak 258k",
          severity = "critical",
          abilityGameIDs = {
            1247937,
          },
        },
        {
          timeSec = 90,
          description = "Umbral Lash #3 + Void Gash stacks",
          severity = "high",
          abilityGameIDs = {
            1247937,
          },
        },
        {
          timeSec = 120,
          description = "Eclipsing Step (recurring)",
          severity = "high",
          abilityGameIDs = {
            1249014,
          },
        },
      },
      notes = "LUST on Lightscar Flare (300% damage amp). Spread for Eclipsing Step. Tree covers peak DTPS at Umbral Lash #2. Convoke on every Eclipsing Step when off CD. Interrupt Entropic Blast from adds.",
    },
    {
      sectionId = "boss-lothraxion",
      label = "Boss: Lothraxion",
      type = "boss",
      encounterID = 3333,
      creatureIDs = {
        241546,
      },
      maxCDs = 12,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253855,
            anchorOffsetSec = -10,
            occurrence = 1,
          },
          rationale = "Pre-HoT 10s before first Brilliant Dispersion.",
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253855,
            anchorOffsetSec = 0,
            occurrence = 1,
          },
          rationale = "Brilliant Dispersion #1 — burst heal through group damage.",
        },
        {
          timeSec = 25,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 10,
          },
          rationale = "Mana recovery between Dispersion cycles.",
        },
        {
          timeSec = 42,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1257595,
            anchorOffsetSec = -10,
            occurrence = 1,
          },
          rationale = "Pre-HoT 10s before Divine Guile #1.",
        },
        {
          timeSec = 52,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1257595,
            anchorOffsetSec = 0,
            occurrence = 1,
          },
          rationale = "Divine Guile #1 — Tree covers Core Exposure if wrong interrupt.",
        },
        {
          timeSec = 60,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253855,
            anchorOffsetSec = -10,
          },
          rationale = "Pre-HoT before next Brilliant Dispersion.",
        },
        {
          timeSec = 70,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253855,
            anchorOffsetSec = 0,
          },
          rationale = "Brilliant Dispersion — Convoke off CD. Burst heal.",
        },
        {
          timeSec = 94,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1257595,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
          rationale = "Pre-HoT before Divine Guile #2.",
        },
        {
          timeSec = 104,
          abilityGameID = 740,
          abilityName = "Tranquility",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1257595,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
          rationale = "Divine Guile #2 — sustained healing for Core Exposure risk.",
        },
        {
          timeSec = 120,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253855,
            anchorOffsetSec = -10,
          },
          rationale = "Pre-HoT before next Brilliant Dispersion.",
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253855,
            anchorOffsetSec = 0,
          },
          rationale = "Brilliant Dispersion — Convoke off CD again.",
        },
        {
          timeSec = 146,
          abilityGameID = 774,
          abilityName = "Ramp",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1257595,
            anchorOffsetSec = -10,
          },
          rationale = "Pre-HoT before next Divine Guile.",
        },
        {
          timeSec = 170,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "conditional",
            condition = "afterAnchor",
            afterAnchorSpellID = 1257595,
            afterAnchorCount = 3,
            offsetSec = 0,
          },
          rationale = "Post Divine Guile #3 — Convoke if fight still going.",
        },
      },
      damageEvents = {
        {
          timeSec = 11,
          description = "Brilliant Dispersion #1 (3 targets)",
          severity = "high",
          abilityGameIDs = {
            1253855,
          },
        },
        {
          timeSec = 36,
          description = "Brilliant Dispersion #2",
          severity = "high",
          abilityGameIDs = {
            1253855,
          },
        },
        {
          timeSec = 52,
          description = "Divine Guile #1 — interrupt correctly",
          severity = "critical",
          abilityGameIDs = {
            1257595,
          },
        },
        {
          timeSec = 61,
          description = "Brilliant Dispersion #3",
          severity = "high",
          abilityGameIDs = {
            1253855,
          },
        },
        {
          timeSec = 104,
          description = "Divine Guile #2",
          severity = "critical",
          abilityGameIDs = {
            1257595,
          },
        },
        {
          timeSec = 156,
          description = "Divine Guile #3",
          severity = "critical",
          abilityGameIDs = {
            1257595,
          },
        },
      },
      notes = "Hardest boss. Only interrupt the REAL Lothraxion during Divine Guile. Convoke on every Brilliant Dispersion when off CD. Manage Radiant Scar puddles.",
    },
  },
}
HexCDReminder.BundledDungeonPlans[556] = {
  dungeonSlug = "pit-of-saron",
  dungeonName = "Pit of Saron",
  challengeMapID = 556,
  keyLevel = 21,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    1999,
    2000,
    2001,
  },
  notes = "Macro NS + Convoke together — fires on every boss pull and every ~85s after. Tranq: mid-Garfrost + Ick/Krick opener + one quarry pull. NO Tranq on Tyrannus. Route: Quarry (liberate 6 camps) → Garfrost → Ick Corridor → Ick/Krick → Tyrannus Corridor + Glacieth → Tyrannus. Lust on Tyrannus.",
  sections = {
    {
      sectionId = "quarry-1",
      label = "Quarry Pull 1: Dreadpulse Lich + Enforcers",
      type = "trash",
      creatureIDs = {
        252563,
        252565,
        252561,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "Macro with Convoke. Top players open every pack with NS+Convoke, no ramp.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "NS+Convoke macro — pull opener. Dread Pulse activates at 50% so burst window lines up.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 7,
          abilityGameID = 102793,
          abilityName = "Ursol's Vortex",
          rationale = "Slow the Lich — buys kick rotation + reduces Torrent of Misery hits.",
          scheduling = {
            mode = "immediate",
            delaySec = 7,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Icy Blast (if missed interrupt)",
          severity = "critical",
          abilityGameIDs = {
            1271074,
          },
        },
        {
          timeSec = 15,
          description = "Dread Pulse at 50% HP",
          severity = "high",
          abilityGameIDs = {
            1258798,
          },
        },
      },
      notes = "INTERRUPT Icy Blast every cast (CC-immune). Kill Necrolytes first. Decurse Torment.",
    },
    {
      sectionId = "quarry-2",
      label = "Quarry Pull 2: Necrolytes + Graveblades (Tranq pull)",
      type = "trash",
      creatureIDs = {
        252551,
        252610,
        252558,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke pull opener.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Graveblade (CC-immune) burst + Necrolyte minions. Opens the biggest trash pull of the run.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 12,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Only Tranq budgeted for trash. Graveblade + Necrolyte minions + Rotting Ghoul damage overlap at ~10-15s.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 12,
          },
        },
      },
      notes = "Kill Necrolyte first (minions immune until it dies). Graveblade CC-immune — tank uses defensive.",
    },
    {
      sectionId = "quarry-3",
      label = "Quarry Pull 3: Mixed camps",
      type = "trash",
      creatureIDs = {
        252557,
        252555,
        252559,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke pull opener.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Plaguehorror hits hard. Burst heal.",
          scheduling = {
            mode = "immediate",
          },
        },
      },
      notes = "Lighter pull — liberating camps while moving through.",
    },
    {
      sectionId = "boss-garfrost",
      label = "Boss: Forgemaster Garfrost",
      type = "boss",
      encounterID = 1999,
      creatureIDs = {
        252635,
      },
      maxCDs = 6,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "Macro with Convoke on pull. Top +21 resto opens every boss this way.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pull opener — Siphoning Chill starts immediately (50k constant). Burst window front-loads the HoT ramp.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 7,
          abilityGameID = 102793,
          abilityName = "Ursol's Vortex",
          rationale = "Drop near Throw Saronite puddles to cluster them off the melee. Top player does this within 10s.",
          scheduling = {
            mode = "immediate",
            delaySec = 7,
          },
        },
        {
          timeSec = 82,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke cycle 2 — 82s after pull (matches top parse).",
          scheduling = {
            mode = "immediate",
            delaySec = 82,
          },
        },
        {
          timeSec = 82,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "NS+Convoke cycle 2. Covers Cryostomp dispel + Glacial Overload prep window.",
          scheduling = {
            mode = "immediate",
            delaySec = 82,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1262029,
          anchorOffsetSec = 0,
          rationale = "Mid-fight Siphoning Chill ramp + 2nd Glacial Overload. Top player tranqs here, NOT on pull.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1262029,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 163,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Tank defensive on Orebreaker. Top parse fires Ironbark here — don't forget it.",
          scheduling = {
            mode = "immediate",
            delaySec = 163,
          },
        },
        {
          timeSec = 164,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke cycle 3 — exactly 82s after cycle 2.",
          scheduling = {
            mode = "immediate",
            delaySec = 164,
          },
        },
        {
          timeSec = 164,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "NS+Convoke cycle 3. Kill window — push the boss.",
          scheduling = {
            mode = "immediate",
            delaySec = 164,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 0,
          description = "Siphoning Chill begins — constant 50k frost damage",
          severity = "high",
          abilityGameIDs = {
            1261808,
          },
        },
        {
          timeSec = 55,
          description = "Glacial Overload #1 — hide behind Ore Chunk",
          severity = "critical",
          abilityGameIDs = {
            1262029,
          },
        },
        {
          timeSec = 70,
          description = "Cryostomp — dispel 2 Magic debuffs",
          severity = "high",
          abilityGameIDs = {
            1261847,
          },
        },
        {
          timeSec = 130,
          description = "Glacial Overload #2 — Tranq window",
          severity = "critical",
          abilityGameIDs = {
            1262029,
          },
        },
      },
      notes = "DPS race. Siphoning Chill never stops. Dispel Cryostomp immediately. Tank overlaps Orebreaker with Ore Chunks.",
    },
    {
      sectionId = "ick-corridor-1",
      label = "Ick Corridor: Coldwraiths + Ghouls",
      type = "trash",
      creatureIDs = {
        252566,
        252558,
        252602,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke pull opener.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Multiple casters hitting group. Burst heal.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 10,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          rationale = "Coldwraith cleave damage on tank. Top parse drops Ironbark here.",
          scheduling = {
            mode = "immediate",
            delaySec = 10,
          },
        },
      },
      notes = "Interrupt Icebolt. Dispel Permeating Cold. Destroy bone piles before pulling.",
    },
    {
      sectionId = "boss-ick",
      label = "Boss: Ick and Krick",
      type = "boss",
      encounterID = 2001,
      creatureIDs = {
        252625,
        252621,
      },
      maxCDs = 6,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          rationale = "Personal defensive on pull — Blight Smash + Plague Explosion pressure starts immediately.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 4,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke macro — fires ~4s after pull (top parse pattern: Barkskin → NS → Convoke).",
          scheduling = {
            mode = "immediate",
            delaySec = 4,
          },
        },
        {
          timeSec = 4,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Pull burst. Ick/Krick share HP — Death Bolt + Get 'em Ick fixate ramp starts fast.",
          scheduling = {
            mode = "immediate",
            delaySec = 4,
          },
        },
        {
          timeSec = 25,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "FIRST Shade Shift at ~20s. Top parse tranqs on the opener burst — not late like the old plan.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1264027,
            anchorOffsetSec = 0,
            occurrence = 1,
          },
        },
        {
          timeSec = 87,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          rationale = "Barkskin #2 — before 2nd NS+Convoke cycle. Fixate phase overlap.",
          scheduling = {
            mode = "immediate",
            delaySec = 87,
          },
        },
        {
          timeSec = 96,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke cycle 2 (~92s after cycle 1). Matches top parse.",
          scheduling = {
            mode = "immediate",
            delaySec = 96,
          },
        },
        {
          timeSec = 96,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second Shade Shift window.",
          scheduling = {
            mode = "immediate",
            delaySec = 96,
          },
        },
        {
          timeSec = 174,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke cycle 3. Execute phase.",
          scheduling = {
            mode = "immediate",
            delaySec = 174,
          },
        },
        {
          timeSec = 174,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Third Shade Shift + late-fight Plague Explosions.",
          scheduling = {
            mode = "immediate",
            delaySec = 174,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 20,
          description = "Shade Shift #1 — 2 clones spawn (TRANQ WINDOW)",
          severity = "critical",
          abilityGameIDs = {
            1264027,
          },
        },
        {
          timeSec = 75,
          description = "Get 'em, Ick! fixate (28s)",
          severity = "high",
          abilityGameIDs = {
            1264363,
          },
        },
        {
          timeSec = 110,
          description = "Shade Shift #2",
          severity = "high",
          abilityGameIDs = {
            1264027,
          },
        },
      },
      notes = "INTERRUPT Death Bolt every cast — it kills. Cleave Ick and Krick (shared HP via Necrolink). Kite during fixate.",
    },
    {
      sectionId = "tyrannus-corridor-1",
      label = "Tyrannus Corridor: Arcanist Cadavers + Gargoyles",
      type = "trash",
      creatureIDs = {
        252603,
        252606,
        257190,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke pull opener.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Caster-heavy pack. Burst heal through Netherburst + Gargoyle damage.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 102793,
          abilityName = "Ursol's Vortex",
          rationale = "Slow Arcanist Cadavers — helps lock down Netherburst interrupts.",
          scheduling = {
            mode = "immediate",
            delaySec = 8,
          },
        },
      },
      notes = "INTERRUPT Netherburst every cast. Focus-fire casters.",
    },
    {
      sectionId = "tyrannus-corridor-2",
      label = "Glacieth (Mini-boss)",
      type = "trash",
      creatureIDs = {
        252564,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke pull opener.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Cryoburst AoE is the heavy group hit. Burst heal.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 15,
          abilityGameID = 102793,
          abilityName = "Ursol's Vortex",
          rationale = "Slow Glacieth to simplify positioning.",
          scheduling = {
            mode = "immediate",
            delaySec = 15,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Cryoburst group damage",
          severity = "high",
          abilityGameIDs = {
            1259187,
          },
        },
      },
      notes = "Spread for Cryoburst. Stay in front — Focused Guard gives guaranteed crits from behind.",
    },
    {
      sectionId = "boss-tyrannus",
      label = "Boss: Scourgelord Tyrannus",
      type = "boss",
      encounterID = 2000,
      creatureIDs = {
        252648,
      },
      maxCDs = 8,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "LUST ON PULL. NS+Convoke macro on pull — top +21 parse never tranqs Tyrannus.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 0,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "LUST ON PULL. Pull burst — Bone Infusion + Army ramp starts immediately.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 89,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke cycle 2 — covers 1st Army of the Dead / Festering Pulse window.",
          scheduling = {
            mode = "immediate",
            delaySec = 89,
          },
        },
        {
          timeSec = 89,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "First Army of the Dead. Festering Pulse 72k avg — Convoke covers it without needing Tranq.",
          scheduling = {
            mode = "immediate",
            delaySec = 89,
          },
        },
        {
          timeSec = 125,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          rationale = "Personal defensive mid-fight — Ice Barrage + Plaguespreader overlap pressure.",
          scheduling = {
            mode = "immediate",
            delaySec = 125,
          },
        },
        {
          timeSec = 175,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          rationale = "NS+Convoke cycle 3 — second Army of the Dead window.",
          scheduling = {
            mode = "immediate",
            delaySec = 175,
          },
        },
        {
          timeSec = 175,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Second Army phase. Keep cycling.",
          scheduling = {
            mode = "immediate",
            delaySec = 175,
          },
        },
        {
          timeSec = 210,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          rationale = "Barkskin #2 — late fight overlapping mechanics.",
          scheduling = {
            mode = "immediate",
            delaySec = 210,
          },
        },
        {
          timeSec = 237,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Execute Convoke. Final burn — boss under 20%.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 237,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Bone Infusion — shadow damage spike",
          severity = "high",
          abilityGameIDs = {
            1276648,
          },
        },
        {
          timeSec = 70,
          description = "Army of the Dead #1 — Festering Pulse 72k avg",
          severity = "critical",
          abilityGameIDs = {
            1263406,
            1263000,
          },
        },
        {
          timeSec = 160,
          description = "Army of the Dead #2",
          severity = "critical",
          abilityGameIDs = {
            1263406,
          },
        },
        {
          timeSec = 200,
          description = "Late Army + Ice Barrage overlap",
          severity = "critical",
          abilityGameIDs = {
            1276948,
          },
        },
      },
      notes = "LUST ON PULL. NO TRANQ — Convoke cycles cover everything. Aim Rime Blast at Bone Piles (green pillars). Interrupt Plague Bolt. Kill Plaguespreaders on sight.",
    },
  },
}
HexCDReminder.BundledDungeonPlans[239] = {
  dungeonSlug = "seat-of-the-triumvirate",
  dungeonName = "Seat of the Triumvirate",
  challengeMapID = 239,
  keyLevel = 17,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    2065,
    2066,
    2067,
    2068,
  },
  notes = "Route: Zuraal → Saprish → Nezhar → L'ura. Lust on L'ura. Save Tree for Saprish 2nd Overload or L'ura sub-50%.",
  sections = {
    {
      sectionId = "zuraal-trash",
      label = "Zuraal Trash: Subjugators",
      type = "trash",
      creatureIDs = {
        124171,
        122322,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for Chains of Subjugation group damage.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Chains of Subjugation hits hard on pull — burst heal through it.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
      },
      notes = "Interrupt Chains of Subjugation. CC Famished Broken if possible.",
    },
    {
      sectionId = "boss-zuraal",
      label = "Boss: Zuraal the Wrathful",
      type = "boss",
      encounterID = 2065,
      creatureIDs = {
        122313,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1263399,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before first Oozing Slam.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263399,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1263399,
          anchorOffsetSec = 0,
          rationale = "Oozing Slam — burst heal through the impact + DoT.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263399,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Low damage window between slams. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1263297,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Crashing Void.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263297,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1263297,
          anchorOffsetSec = 0,
          rationale = "Crashing Void — sustained group damage, Tranq to stabilize.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263297,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1263399,
          anchorOffsetSec = 0,
          rationale = "Third mechanic cycle — burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263399,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn phase — Convoke to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 130,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Oozing Slam — impact + 6s DoT",
          severity = "high",
          abilityGameIDs = {
            1263399,
          },
        },
        {
          timeSec = 65,
          description = "Crashing Void — pull then knockback",
          severity = "critical",
          abilityGameIDs = {
            1263297,
          },
        },
        {
          timeSec = 100,
          description = "Oozing Slam #3 — Coalesced Void puddles",
          severity = "high",
          abilityGameIDs = {
            1263399,
          },
        },
      },
      notes = "Spread for Oozing Slam. Dodge Crashing Void puddles.",
    },
    {
      sectionId = "saprish-trash",
      label = "Saprish Trash: Rift Wardens",
      type = "trash",
      creatureIDs = {
        122571,
        122413,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Void Expulsion group damage — burst heal through it.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "Interrupt Void Expulsion. Tank Riftstalkers facing away from group.",
    },
    {
      sectionId = "boss-saprish",
      label = "Boss: Saprish",
      type = "boss",
      encounterID = 2066,
      creatureIDs = {
        122316,
        122319,
        125340,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1263523,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before first Overload.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263523,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1263523,
          anchorOffsetSec = 0,
          rationale = "First Overload — burst heal through the group damage.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263523,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Overloads. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1263523,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for 2nd Overload + Dread Screech overlap.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263523,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 1263523,
          anchorOffsetSec = 0,
          rationale = "2nd Overload + Dread Screech overlap — Tree for sustained throughput.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263523,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1263523,
          anchorOffsetSec = 0,
          rationale = "Third mechanic cycle — burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263523,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Final phase — sustained healing to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 130,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Overload #1 — Void Bombs ignite",
          severity = "high",
          abilityGameIDs = {
            1263523,
          },
        },
        {
          timeSec = 65,
          description = "2nd Overload + Dread Screech overlap",
          severity = "critical",
          abilityGameIDs = {
            1263523,
            248831,
          },
        },
        {
          timeSec = 100,
          description = "Overload #3",
          severity = "high",
          abilityGameIDs = {
            1263523,
          },
        },
      },
      notes = "Kill Darkfang + Shadewing adds quickly. Interrupt Dread Screech. Dodge Shadow Pounce.",
    },
    {
      sectionId = "nezhar-trash-1",
      label = "Nezhar Trash 1: Dark Conjurers + Voidbenders",
      type = "trash",
      creatureIDs = {
        122405,
        122404,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT — Conjurer + Voidbender casts overlap hard.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Sustained damage from multiple casters. Tranq to stabilize.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
      },
      notes = "Interrupt Dark Conjurers. Focus Voidbenders first.",
    },
    {
      sectionId = "nezhar-trash-2",
      label = "Nezhar Trash 2: Shadow-Weavers",
      type = "trash",
      creatureIDs = {
        122423,
        122421,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Shadow-Weaver group damage — burst heal through it.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "Interrupt Shadow-Weaver casts. Spread for War-Adept cleave.",
    },
    {
      sectionId = "boss-nezhar",
      label = "Boss: Viceroy Nezhar",
      type = "boss",
      encounterID = 2067,
      creatureIDs = {
        122056,
      },
      maxCDs = 5,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1263528,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT before first Repulse.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263528,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1263528,
          anchorOffsetSec = 0,
          rationale = "First Repulse — burst heal through knockback damage.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263528,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Repulses. DPS + mana recovery.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for Tentacles + 2nd Repulse overlap.",
          scheduling = {
            mode = "immediate",
            delaySec = 55,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1263528,
          anchorOffsetSec = 0,
          rationale = "2nd Repulse + Tentacles overlap — burst heal.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263528,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 1263528,
          anchorOffsetSec = 0,
          rationale = "3rd Repulse — Tree for sustained throughput through overlap.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1263528,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 140,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Late phase burst heal.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 140,
          },
        },
        {
          timeSec = 165,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Final burn — sustained healing to the kill.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 165,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Repulse — knockback + Mass Void Infusion",
          severity = "critical",
          abilityGameIDs = {
            1263528,
          },
        },
        {
          timeSec = 65,
          description = "2nd Repulse + Tentacles overlap",
          severity = "high",
          abilityGameIDs = {
            1263528,
            1263538,
          },
        },
        {
          timeSec = 100,
          description = "3rd Repulse",
          severity = "critical",
          abilityGameIDs = {
            1263528,
          },
        },
      },
      notes = "Dodge Repulse knockback. Kill Umbral Tentacles fast. Soak Mass Void Infusion.",
    },
    {
      sectionId = "lura-trash",
      label = "L'ura Trash: Pre-boss Void Packs",
      type = "trash",
      creatureIDs = {
        122403,
        252756,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Void packs hit hard — burst heal on pull.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "Last trash before final boss. Save major CDs for L'ura.",
    },
    {
      sectionId = "boss-lura",
      label = "Boss: L'ura",
      type = "boss",
      encounterID = 2068,
      creatureIDs = {
        124729,
      },
      maxCDs = 7,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1265421,
          anchorOffsetSec = -10,
          rationale = "LUST ON PULL. Pre-HoT before first Dirge of Despair.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1265421,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 10,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1265421,
          anchorOffsetSec = 0,
          rationale = "Dirge of Despair #1 — burst heal through the group damage.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1265421,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Dirges. DPS hard during lust window.",
          scheduling = {
            mode = "immediate",
            delaySec = 40,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 1265421,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Dirge #2.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1265421,
            anchorOffsetSec = -10,
            occurrence = 2,
          },
        },
        {
          timeSec = 65,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1265421,
          anchorOffsetSec = 0,
          rationale = "Dirge of Despair #2 — sustained healing through P2 transition.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1265421,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "P2 burst heal — Backlash + Pulsing Void ramping.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 100,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 33891,
          abilityName = "Incarnation: Tree of Life",
          anchorSpellID = 1266001,
          anchorOffsetSec = 0,
          rationale = "First Backlash — Tree for sustained throughput through P2 ramp.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1266001,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 160,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Late P2 burst heal — Pulsing Void at peak.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 160,
          },
        },
        {
          timeSec = 190,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1266001,
          anchorOffsetSec = 0,
          rationale = "Deep P2 — Pulsing Void + Backlash overlap. Sustained healing.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1266001,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 220,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Final burn — everything overlapping, Convoke to survive.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 220,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 10,
          description = "Dirge of Despair #1 (avg 17k)",
          severity = "high",
          abilityGameIDs = {
            1265421,
          },
        },
        {
          timeSec = 65,
          description = "Dirge of Despair #2 + P2 transition",
          severity = "high",
          abilityGameIDs = {
            1265421,
          },
        },
        {
          timeSec = 130,
          description = "P2 Backlash — big group damage",
          severity = "critical",
          abilityGameIDs = {
            1266001,
          },
        },
      },
      notes = "LUST ON PULL. P2 starts at Symphony of the Eternal Night (~1:04). Pulsing Void ramps passively (no BigWigs bar). Soak Remnant of Anguish. Dodge Naaru's Lament swirls.",
    },
  },
}
HexCDReminder.BundledDungeonPlans[161] = {
  dungeonSlug = "skyreach",
  dungeonName = "Skyreach",
  challengeMapID = 161,
  keyLevel = 17,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    1698,
    1699,
    1700,
    1701,
  },
  notes = "Linear route: Ranjit → Araknath → Rukhran → High Sage Viryx. 28-minute timer. Interrupt Repel and Blinding Light on trash. Lust on Rukhran or Viryx.",
  mobProfile = {
    casterEliteDPS = 25000,
    meleeEliteDPS = 12000,
    lieutenantDPS = 30000,
    trivialDPS = 3000,
  },
  trashCDTiers = {
    tier0 = {
      {
        abilityGameID = 768,
        abilityName = "Cat Weave",
        scheduling = "immediate",
        windowSec = 30,
      },
    },
    tier1 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
    },
    tier2 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
      {
        abilityGameID = 740,
        abilityName = "Tranquility",
        scheduling = "sequential",
        order = 2,
        delaySec = 20,
        windowSec = 9,
      },
    },
    tier3 = {
      {
        abilityGameID = 774,
        abilityName = "Ramp",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "sequential",
        order = 1,
        delaySec = 5,
        windowSec = 9,
      },
      {
        abilityGameID = 33891,
        abilityName = "Incarnation: Tree of Life",
        scheduling = "sequential",
        order = 2,
        delaySec = 12,
        windowSec = 30,
      },
      {
        abilityGameID = 740,
        abilityName = "Tranquility",
        scheduling = "sequential",
        order = 3,
        delaySec = 25,
        windowSec = 9,
      },
    },
  },
  sections = {
    {
      sectionId = "wind-1",
      label = "Wind Corridor Pull 1: Windwalkers + Hawks",
      type = "trash",
      creatureIDs = {
        76132,
        78932,
        76149,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Blade Rush (avg 112k) on opener. Convoke for burst healing.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 3,
          description = "Blade Rush on 3 targets",
          severity = "high",
          abilityGameIDs = {
            1254475,
          },
        },
        {
          timeSec = 15,
          description = "Dire Screech AoE",
          severity = "high",
          abilityGameIDs = {
            1254566,
          },
        },
      },
      notes = "Interrupt Repel. Purge Rushing Winds. Soothe Wrathful Wind.",
    },
    {
      sectionId = "wind-2",
      label = "Wind Corridor Pull 2: Bladetalons + Ravens",
      type = "trash",
      creatureIDs = {
        79303,
        76149,
        78932,
      },
      maxCDs = 0,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Lighter pull — DPS in cat, save CDs for Ranjit.",
          scheduling = {
            mode = "immediate",
          },
        },
      },
      notes = "Stay away from edges for Dread Wind knockback.",
    },
    {
      sectionId = "boss-ranjit",
      label = "Boss: Ranjit",
      type = "boss",
      encounterID = 1698,
      creatureIDs = {
        75964,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 153757,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Fan of Blades (repeats every 20s, first at 12s).",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 153757,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 25,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 153757,
          anchorOffsetSec = 0,
          rationale = "Fan of Blades bleed. Top druids Convoke 20-34s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 153757,
            anchorOffsetSec = 0,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Fan of Blades. DPS + mana before Four Winds.",
          scheduling = {
            mode = "immediate",
            delaySec = 55,
          },
        },
        {
          timeSec = 90,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 156793,
          anchorOffsetSec = 0,
          rationale = "Four Winds + Fan of Blades overlap. Top druids Tranq 94-134s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 156793,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 130,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 156793,
          anchorOffsetSec = 0,
          rationale = "Third Four Winds phase. Convoke for burst heal + final burn.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 156793,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 160,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Long fight fallback. Fan of Blades + Four Winds overlap.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 155,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 12,
          description = "Fan of Blades #1 (repeats every 20s)",
          severity = "high",
          abilityGameIDs = {
            153757,
          },
        },
        {
          timeSec = 35,
          description = "Four Winds #1 + Fan overlap",
          severity = "critical",
          abilityGameIDs = {
            156793,
            153757,
          },
        },
        {
          timeSec = 75,
          description = "Four Winds #2 + Fan overlap",
          severity = "critical",
          abilityGameIDs = {
            156793,
            153757,
          },
        },
        {
          timeSec = 115,
          description = "Four Winds #3 + Fan overlap",
          severity = "critical",
          abilityGameIDs = {
            156793,
            153757,
          },
        },
      },
      notes = "Fan of Blades every 20s. Four Winds every 40s from 35s. Dodge Wind Chakram and Spinning Blade.",
    },
    {
      sectionId = "solar-1",
      label = "Solar Wing Pull 1: Sun-Talons + Solar Familiars",
      type = "trash",
      creatureIDs = {
        79467,
        79466,
        79462,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT — Blinding Light + Solar Flame overlap.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Solar Flame (avg 128k!) + Fiery Talon stacks. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 8,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Blinding Light (if missed interrupt)",
          severity = "critical",
        },
        {
          timeSec = 15,
          description = "Solar Flame pulse",
          severity = "high",
          abilityGameIDs = {
            1253446,
          },
        },
      },
      notes = "INTERRUPT Blinding Light every cast. Purge Solar Barrier. Fiery Talon forces tank to kite.",
    },
    {
      sectionId = "solar-2",
      label = "Solar Wing Pull 2: Solar Constructs",
      type = "trash",
      creatureIDs = {
        76087,
        76367,
        76267,
      },
      maxCDs = 2,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 740,
          abilityName = "Tranquility",
          rationale = "Solar Zealot Solar Flame (128k avg) + Solar Nova. Sustained healing needed.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
        {
          timeSec = 25,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Late pull burst — Solar Orb may have spawned.",
          scheduling = {
            mode = "sequential",
            order = 2,
            minDelaySec = 20,
          },
        },
      },
      notes = "Kill Solar Orb immediately. Dodge Solar Fire circles. Solar Nova — get out.",
    },
    {
      sectionId = "boss-araknath",
      label = "Boss: Araknath",
      type = "boss",
      encounterID = 1699,
      creatureIDs = {
        76141,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for beam phase starting at ~5s. Light Ray is dominant damage.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 20,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Early beams + Fiery Smash. Top druids Convoke 17-43s in.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 15,
          },
        },
        {
          timeSec = 50,
          abilityGameID = 774,
          abilityName = "Ramp",
          anchorSpellID = 154135,
          anchorOffsetSec = -10,
          rationale = "Pre-HoT for Supernova (first at ~50s, every ~54s).",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 154135,
            anchorOffsetSec = -10,
          },
        },
        {
          timeSec = 80,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Post-Supernova recovery + ongoing beams. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 2,
            minDelaySec = 55,
          },
        },
        {
          timeSec = 100,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 154135,
          anchorOffsetSec = 0,
          rationale = "Second Supernova + beams overlap. Top druids Tranq 46-99s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 154135,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 150,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 154135,
          anchorOffsetSec = 0,
          rationale = "Third Supernova + beams. Final burn Convoke.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 154135,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Light Ray beams start (dominant damage, 21k total)",
          severity = "high",
          abilityGameIDs = {
            1287905,
          },
        },
        {
          timeSec = 50,
          description = "Supernova #1 — worse if beams reached boss",
          severity = "critical",
          abilityGameIDs = {
            154135,
          },
        },
        {
          timeSec = 104,
          description = "Supernova #2 + beams",
          severity = "critical",
          abilityGameIDs = {
            154135,
          },
        },
        {
          timeSec = 158,
          description = "Supernova #3",
          severity = "critical",
          abilityGameIDs = {
            154135,
          },
        },
      },
      notes = "Light Ray beams are the #1 damage source. Intercept beams to prevent boss healing. Supernova every ~54s. Fiery Smash every ~7s.",
    },
    {
      sectionId = "sunroad-1",
      label = "Sun Road Pull: Raptors + Hawks",
      type = "trash",
      creatureIDs = {
        79093,
        76154,
      },
      maxCDs = 1,
      assignments = {
        {
          timeSec = 5,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Mark of Death fixate + melee cleave. Burst heal.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 5,
          },
        },
      },
      notes = "Kite Mark of Death. CC Bloodcrazed mobs.",
    },
    {
      sectionId = "boss-rukhran",
      label = "Boss: Rukhran",
      type = "boss",
      encounterID = 1700,
      creatureIDs = {
        76143,
      },
      maxCDs = 5,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for Sunbreak (first at ~12s) + Burning Pursuit.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 20,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1253510,
          anchorOffsetSec = 5,
          rationale = "Sunbreak → Burning Pursuit (25k total, #1 damage). Top druids Convoke 16-40s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253510,
            anchorOffsetSec = 5,
          },
        },
        {
          timeSec = 55,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Between Sunbreak + Searing Quills. DPS + mana.",
          scheduling = {
            mode = "immediate",
            delaySec = 55,
          },
        },
        {
          timeSec = 70,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 159382,
          anchorOffsetSec = 0,
          rationale = "Searing Quills fire waves. Top druids Tranq 62-83s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 159382,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 85,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Post-Searing Quills recovery + Burning Pursuit. Top druids Convoke 85s in.",
          scheduling = {
            mode = "sequential",
            order = 1,
            minDelaySec = 60,
          },
        },
        {
          timeSec = 135,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 159382,
          anchorOffsetSec = 0,
          rationale = "Third Searing Quills + Sunbreak overlap. Top druids Convoke 134-156s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 159382,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 200,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Long fight fallback. Searing Quills #4 + Burning Pursuit.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 195,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 12,
          description = "Sunbreak #1 → Burning Pursuit fixate (dominant damage)",
          severity = "critical",
          abilityGameIDs = {
            1253510,
            1253368,
          },
        },
        {
          timeSec = 39,
          description = "Searing Quills #1 — hide behind pillar",
          severity = "critical",
          abilityGameIDs = {
            159381,
          },
        },
        {
          timeSec = 87,
          description = "Searing Quills #2 + Sunbreak overlap",
          severity = "critical",
          abilityGameIDs = {
            159381,
            1253510,
          },
        },
        {
          timeSec = 133,
          description = "Searing Quills #3 + Sunbreak overlap",
          severity = "critical",
          abilityGameIDs = {
            159381,
            1253510,
          },
        },
        {
          timeSec = 180,
          description = "Searing Quills #4 (long fight)",
          severity = "high",
          abilityGameIDs = {
            159381,
          },
        },
      },
      notes = "LUST HERE. Burning Pursuit is #1 damage source. Searing Quills every ~47s. Tank stays in melee (Screech). Burning Claws requires tank defensive.",
    },
    {
      sectionId = "boss-viryx",
      label = "Boss: High Sage Viryx",
      type = "boss",
      encounterID = 1701,
      creatureIDs = {
        76266,
      },
      maxCDs = 4,
      assignments = {
        {
          timeSec = 0,
          abilityGameID = 774,
          abilityName = "Ramp",
          rationale = "Pre-HoT for cycle 1: Scorching Ray at 5s, Solar Blast at 8s, Cast Down at 12s.",
          scheduling = {
            mode = "immediate",
          },
        },
        {
          timeSec = 8,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1253538,
          anchorOffsetSec = 3,
          rationale = "Cycle 1 Scorching Ray burst (3 targets, 24k total). Top druids Convoke 8-49s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253538,
            anchorOffsetSec = 3,
          },
        },
        {
          timeSec = 40,
          abilityGameID = 768,
          abilityName = "Cat Weave",
          rationale = "Gap between cycles. DPS + mana before cycle 2.",
          scheduling = {
            mode = "immediate",
            delaySec = 35,
          },
        },
        {
          timeSec = 70,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          anchorSpellID = 1253840,
          anchorOffsetSec = 0,
          rationale = "Cycle 2 Lens Flare + Blazing Ground. Top druids Convoke 70-111s in.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253840,
            anchorOffsetSec = 0,
            occurrence = 2,
          },
        },
        {
          timeSec = 110,
          abilityGameID = 740,
          abilityName = "Tranquility",
          anchorSpellID = 1253840,
          anchorOffsetSec = 0,
          rationale = "Cycle 3 Lens Flare + accumulated Blazing Ground. Top druids Tranq 137s or skip.",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 1253840,
            anchorOffsetSec = 0,
            occurrence = 3,
          },
        },
        {
          timeSec = 145,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          rationale = "Cycle 4 — everything overlapping, arena tight. Final burn Convoke.",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 140,
          },
        },
      },
      damageEvents = {
        {
          timeSec = 5,
          description = "Cycle 1: Scorching Ray x3 (5/15/25s)",
          severity = "high",
          abilityGameIDs = {
            1253538,
          },
        },
        {
          timeSec = 12,
          description = "Cast Down — run to entrance! (repeats every 39s)",
          severity = "critical",
          abilityGameIDs = {
            153954,
          },
        },
        {
          timeSec = 30,
          description = "Lens Flare → Blazing Ground (repeats every 39s)",
          severity = "high",
          abilityGameIDs = {
            1253840,
            154043,
          },
        },
        {
          timeSec = 44,
          description = "Cycle 2: Scorching Ray x3 (44/54/64s)",
          severity = "high",
          abilityGameIDs = {
            1253538,
          },
        },
        {
          timeSec = 69,
          description = "Cycle 2 Lens Flare + arena shrinking",
          severity = "high",
          abilityGameIDs = {
            1253840,
            154043,
          },
        },
        {
          timeSec = 83,
          description = "Cycle 3: Scorching Ray x3 (83/93/103s)",
          severity = "high",
          abilityGameIDs = {
            1253538,
          },
        },
        {
          timeSec = 108,
          description = "Cycle 3 Lens Flare + Blazing Ground stacking",
          severity = "critical",
          abilityGameIDs = {
            1253840,
            154043,
          },
        },
      },
      notes = "ALL mechanics on a 39s CYCLE. Interrupt Solar Blast (2x per cycle). Cast Down = run to entrance. Lens Flare = movement CDs. Arena shrinks via Blazing Ground.",
    },
  },
}
HexCDReminder.BundledDungeonPlans[557] = {
  dungeonSlug = "windrunner-spire",
  dungeonName = "Windrunner Spire",
  challengeMapID = 557,
  keyLevel = 20,
  patchVersion = "12.1.0",
  playerName = "Hexastyle",
  className = "Druid",
  specName = "Restoration",
  bossEncounterIDs = {
    3056,
    3057,
    3058,
    3059,
  },
  notes = "Route-independent dynamic trash planning. Lust on Restless Heart. Top parse reference: 你又没了是吧 +20 (122k HPS, 31min, report 39tHnWCmY2FRaAkL). Convoke build (Cenarius Guidance, 60s CD). Heavy Ironbark on Kroluk/Heart (melee bosses). Tranq ONLY on Emberdawn + Kalis/Latch — never on Kroluk or Restless Heart.",
  mobProfile = {
    casterEliteDPS = 28000,
    meleeEliteDPS = 10000,
    lieutenantDPS = 32000,
    trivialDPS = 3000,
  },
  trashCDTiers = {
    tier0 = {
      {
        abilityGameID = 768,
        abilityName = "Cat Weave",
        scheduling = "immediate",
        windowSec = 30,
      },
    },
    tier1 = {
      {
        abilityGameID = 132158,
        abilityName = "Nature's Swiftness",
        scheduling = "immediate",
        windowSec = 5,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "immediate",
        windowSec = 8,
      },
    },
    tier2 = {
      {
        abilityGameID = 132158,
        abilityName = "Nature's Swiftness",
        scheduling = "immediate",
        windowSec = 5,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 102342,
        abilityName = "Ironbark",
        scheduling = "sequential",
        order = 1,
        delaySec = 8,
        windowSec = 9,
      },
    },
    tier3 = {
      {
        abilityGameID = 132158,
        abilityName = "Nature's Swiftness",
        scheduling = "immediate",
        windowSec = 5,
      },
      {
        abilityGameID = 391528,
        abilityName = "Convoke the Spirits",
        scheduling = "immediate",
        windowSec = 8,
      },
      {
        abilityGameID = 102342,
        abilityName = "Ironbark",
        scheduling = "sequential",
        order = 1,
        delaySec = 8,
        windowSec = 9,
      },
      {
        abilityGameID = 740,
        abilityName = "Tranquility",
        scheduling = "sequential",
        order = 2,
        delaySec = 18,
        windowSec = 9,
      },
    },
  },
  sections = {
    {
      sectionId = "boss-emberdawn",
      label = "Boss: Emberdawn",
      type = "boss",
      encounterID = 3056,
      creatureIDs = {
        231606,
      },
      maxCDs = 10,
      assignments = {
        {
          timeSec = 25,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 25,
          },
          rationale = "Top parse fires first Convoke at ~25s (approach to second Burning Gale) — not on pull.",
        },
        {
          timeSec = 77,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 77,
          },
          rationale = "Ironbark on tank — Searing Beak pressure building. Top parse fires here.",
        },
        {
          timeSec = 85,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 85,
          },
          rationale = "Convoke cycle 2 (60s CD off cycle 1).",
        },
        {
          timeSec = 124,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 124,
          },
          rationale = "Personal defensive before triple-burst window.",
        },
        {
          timeSec = 141,
          abilityGameID = 740,
          abilityName = "Tranquility",
          scheduling = {
            mode = "immediate",
            delaySec = 141,
          },
          rationale = "Mid-fight Tranq — Twisters + Updraft damage peaking. Top parse fires here.",
        },
        {
          timeSec = 144,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 144,
          },
          rationale = "NS into instant Regrowth immediately after Tranq start.",
        },
        {
          timeSec = 146,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 146,
          },
          rationale = "Convoke cycle 3 stacked with Tranq + NS — triple burst through peak damage.",
        },
        {
          timeSec = 187,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 187,
          },
          rationale = "Execute — Ironbark off CD.",
        },
        {
          timeSec = 190,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 190,
          },
          rationale = "Execute defensive.",
        },
      },
      damageEvents = {
        {
          timeSec = 15,
          description = "Burning Gale #1 (16s channel)",
          severity = "high",
          abilityGameIDs = {
            465904,
          },
        },
        {
          timeSec = 30,
          description = "Burning Gale #2",
          severity = "high",
          abilityGameIDs = {
            465904,
          },
        },
        {
          timeSec = 68,
          description = "Burning Gale #3 + Twisters",
          severity = "high",
          abilityGameIDs = {
            465904,
            466556,
          },
        },
        {
          timeSec = 140,
          description = "Peak damage window — Tranq here",
          severity = "critical",
          abilityGameIDs = {
            465904,
            466556,
          },
        },
      },
      notes = "Face Burning Gale away from group. Drop Flaming Updraft patches at edges. Top parse skips pull Convoke, saves for the 25s / 85s / 145s triple.",
    },
    {
      sectionId = "boss-duo",
      label = "Boss: Derelict Duo",
      type = "boss",
      encounterID = 3057,
      creatureIDs = {
        231626,
        231629,
      },
      maxCDs = 10,
      assignments = {
        {
          timeSec = 13,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 13,
          },
          rationale = "Early Convoke — Shadow Bolt pressure from Kalis + tank cleave.",
        },
        {
          timeSec = 43,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 43,
          },
          rationale = "Personal defensive before Shriek 1.",
        },
        {
          timeSec = 45,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 45,
          },
          rationale = "NS+Regrowth into Shriek damage (~48s anchor).",
        },
        {
          timeSec = 74,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 472736,
            anchorOffsetSec = 26,
            occurrence = 1,
          },
          rationale = "Convoke cycle 2 (60s CD) — post-Shriek recovery.",
        },
        {
          timeSec = 105,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 105,
          },
          rationale = "Pre-Shriek 2 defensive cluster.",
        },
        {
          timeSec = 107,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 107,
          },
          rationale = "Ironbark on tank before Shriek 2 + Splattering Spew.",
        },
        {
          timeSec = 133,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 133,
          },
          rationale = "NS charge ready — holds for Convoke stacking at 154s.",
        },
        {
          timeSec = 154,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 154,
          },
          rationale = "Convoke cycle 3 — stacked with Tranq window. Shriek 2 overlap.",
        },
        {
          timeSec = 168,
          abilityGameID = 740,
          abilityName = "Tranquility",
          scheduling = {
            mode = "immediate",
            delaySec = 168,
          },
          rationale = "Post-Shriek 2 Tranq — Shadow Bolt pressure + both bosses still active.",
        },
        {
          timeSec = 186,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 186,
          },
          rationale = "Execute defensive.",
        },
        {
          timeSec = 215,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "conditional",
            condition = "fightElapsed",
            minFightElapsedSec = 215,
          },
          rationale = "Execute Convoke — final burn.",
        },
      },
      damageEvents = {
        {
          timeSec = 48,
          description = "Debilitating Shriek #1 (54k × 5)",
          severity = "high",
          abilityGameIDs = {
            472736,
          },
        },
        {
          timeSec = 109,
          description = "Debilitating Shriek #2 + Shadow Bolt",
          severity = "critical",
          abilityGameIDs = {
            472736,
            472724,
          },
        },
        {
          timeSec = 170,
          description = "Late-fight Shadow Bolt pressure + Broken Bond threat",
          severity = "high",
          abilityGameIDs = {
            472724,
          },
        },
      },
      notes = "INTERRUPT Shadow Bolt (Kalis). Aim Heaving Yank through Kalis to cancel Shriek. Kill at similar health to avoid Broken Bond enrage.",
    },
    {
      sectionId = "boss-kroluk",
      label = "Boss: Commander Kroluk",
      type = "boss",
      encounterID = 3058,
      creatureIDs = {
        231631,
      },
      maxCDs = 12,
      assignments = {
        {
          timeSec = 11,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 11,
          },
          rationale = "Ironbark on tank for opening Rampage + Reckless Leap (39k + 33k avg).",
        },
        {
          timeSec = 30,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 30,
          },
          rationale = "First Convoke at 30s — top parse holds through Ironbark coverage.",
        },
        {
          timeSec = 39,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 39,
          },
          rationale = "Personal defensive — Reckless Leap + Rampage window.",
        },
        {
          timeSec = 72,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 72,
          },
          rationale = "NS charge — emergency Regrowth through Bellow 1 approach (~52s fired).",
        },
        {
          timeSec = 80,
          abilityGameID = 102793,
          abilityName = "Ursol's Vortex",
          scheduling = {
            mode = "immediate",
            delaySec = 80,
          },
          rationale = "Ursol slow — cluster adds from Rallying Bellow #1 for cleave.",
        },
        {
          timeSec = 99,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 99,
          },
          rationale = "Convoke cycle 2 — mid-fight Rampage + adds still up.",
        },
        {
          timeSec = 114,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 114,
          },
          rationale = "Ironbark cycle 2 on tank — Rampage pressure continues.",
        },
        {
          timeSec = 142,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 142,
          },
          rationale = "Personal defensive pre-Bellow 2.",
        },
        {
          timeSec = 146,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 146,
          },
          rationale = "NS charge ready pre-Bellow 2.",
        },
        {
          timeSec = 174,
          abilityGameID = 102793,
          abilityName = "Ursol's Vortex",
          scheduling = {
            mode = "immediate",
            delaySec = 174,
          },
          rationale = "Ursol slow #2 — Bellow 2 adds + Bladestorm.",
        },
        {
          timeSec = 190,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "immediate",
            delaySec = 190,
          },
          rationale = "Convoke cycle 3 — Bellow 2 damage window.",
        },
        {
          timeSec = 200,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 200,
          },
          rationale = "Ironbark cycle 3 on tank — execute phase.",
        },
      },
      damageEvents = {
        {
          timeSec = 8,
          description = "Opening Rampage (39k) + Reckless Leap (33k)",
          severity = "high",
          abilityGameIDs = {
            467620,
            472054,
          },
        },
        {
          timeSec = 52,
          description = "Rallying Bellow 1 (66%) + Bladestorm adds",
          severity = "critical",
          abilityGameIDs = {
            468221,
          },
        },
        {
          timeSec = 90,
          description = "Mid-fight Reckless Leap + Rampage",
          severity = "high",
          abilityGameIDs = {
            472054,
            467620,
          },
        },
        {
          timeSec = 130,
          description = "Rallying Bellow 2 (33%) + more adds",
          severity = "critical",
          abilityGameIDs = {
            468221,
          },
        },
      },
      notes = "Rallying Bellow has NO BigWigs bar (HP threshold) — sequential scheduling. Heavy Ironbark + Ursol cycling (melee-heavy boss). Top parse uses NO TRANQ here — Convoke cycles cover. Interrupt Chain Lightning from Phantasmal Mystics.",
    },
    {
      sectionId = "boss-heart",
      label = "Boss: Restless Heart",
      type = "boss",
      encounterID = 3059,
      creatureIDs = {
        231636,
      },
      maxCDs = 12,
      assignments = {
        {
          timeSec = 26,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 468429,
            anchorOffsetSec = 2,
            occurrence = 1,
          },
          rationale = "LUST ON PULL. First Convoke right after Bullseye Windblast #1 lands (~24s).",
        },
        {
          timeSec = 36,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 36,
          },
          rationale = "NS+Regrowth for Squall Leap first stacks.",
        },
        {
          timeSec = 37,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 37,
          },
          rationale = "Ironbark on tank — early Gust Shot pressure.",
        },
        {
          timeSec = 63,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 63,
          },
          rationale = "Personal defensive before 50-80s peak (5.2M cumulative).",
        },
        {
          timeSec = 90,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 468429,
            anchorOffsetSec = 1,
            occurrence = 2,
          },
          rationale = "Convoke cycle 2 — on Bullseye Windblast #2 (~89s) + high Squall stacks.",
        },
        {
          timeSec = 116,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 116,
          },
          rationale = "NS for second Squall wave (110-130s = 3.1M cumulative).",
        },
        {
          timeSec = 128,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 128,
          },
          rationale = "Second Barkskin in second Squall wave.",
        },
        {
          timeSec = 142,
          abilityGameID = 102342,
          abilityName = "Ironbark",
          scheduling = {
            mode = "immediate",
            delaySec = 142,
          },
          rationale = "Ironbark cycle 2 on tank.",
        },
        {
          timeSec = 155,
          abilityGameID = 391528,
          abilityName = "Convoke the Spirits",
          scheduling = {
            mode = "anchor",
            anchorSpellID = 468429,
            anchorOffsetSec = 1,
            occurrence = 3,
          },
          rationale = "Convoke cycle 3 — Bullseye Windblast #3 (~154s).",
        },
        {
          timeSec = 181,
          abilityGameID = 132158,
          abilityName = "Nature's Swiftness",
          scheduling = {
            mode = "immediate",
            delaySec = 181,
          },
          rationale = "NS for execute phase — high Squall stacks.",
        },
        {
          timeSec = 194,
          abilityGameID = 22812,
          abilityName = "Barkskin",
          scheduling = {
            mode = "immediate",
            delaySec = 194,
          },
          rationale = "Third Barkskin — execute phase.",
        },
      },
      damageEvents = {
        {
          timeSec = 9,
          description = "Squall Leap #1 (55k burst + 17k/2s stacking dot)",
          severity = "high",
          abilityGameIDs = {
            1216042,
            1283371,
          },
        },
        {
          timeSec = 24,
          description = "Bullseye Windblast #1 (203k ring)",
          severity = "high",
          abilityGameIDs = {
            468429,
          },
        },
        {
          timeSec = 60,
          description = "Peak damage zone: Squall + Gust Shot (2.0M / 10s)",
          severity = "critical",
          abilityGameIDs = {
            1283371,
            1253978,
          },
        },
        {
          timeSec = 89,
          description = "Bullseye Windblast #2 + high Squall stacks",
          severity = "critical",
          abilityGameIDs = {
            468429,
            1283371,
          },
        },
        {
          timeSec = 130,
          description = "Squall Leap second wave (2.0M / 10s)",
          severity = "critical",
          abilityGameIDs = {
            1283371,
          },
        },
        {
          timeSec = 154,
          description = "Bullseye Windblast #3",
          severity = "critical",
          abilityGameIDs = {
            468429,
            1283371,
          },
        },
      },
      notes = "LUST ON PULL. NO TRANQ — top parse uses pure Convoke cycles at 26/90/155s. Heavy NS + Ironbark + Barkskin cycling for personal survival. Touch Turbulent Arrow platforms to clear Squall stacks.",
    },
  },
}
