38 Commits
Author SHA1 Message Date
moostigre 102c26d971 fix(Scripts/TrialOfTheCrusader): retain protected spike targets (#27733) 2026-10-04 21:43:10 -03:00
Andrew 7d9ade14a6 fix(Scripts/TrialOfTheCrusader): Don't despawn Gormok's Snobolds when he dies (#27942) 2026-10-03 21:54:48 -03:00
Andrew 486e692c82 test(e2e): Remove flaky Psychosis low sanity test (#27946) 2026-10-03 20:49:34 -03:00
Andrew d8daef1f55 fix(Scripts/OnyxiasLair): Match Onyxia's phase transitions and Eruption to retail (#27843) 2026-09-27 16:27:00 -03:00
Andrew 0a9ad7ecdb fix(Scripts/OnyxiasLair): Spawn Onyxia's whelps from rookery points and hatching eggs (#27833) 2026-09-27 10:54:02 -03:00
Andrewandrazer025 012af5510e fix(Scripts/Ulduar): Let interrupts stop Flame Leviathan's Flame Vents (#27809)
Co-authored-by: razer025 <[email protected]>
2026-09-26 21:09:04 -03:00
Andrew ec2aa2d5d8 fix(e2e): wait for the Sweeping Strikes aura before failing its precondition (#27812) 2026-09-26 19:30:20 -03:00
Andrew 93ab9ad63e fix(Scripts/Ulduar): let the hard-reset respawn bring Algalon back after a wipe (#27807) 2026-09-26 11:32:56 -03:00
Gultask b23319181d chore(e2e): e2e failing CI (#27792) 2026-09-25 18:29:53 +02:00
moostigre 9c1bbfafec fix(Spells/Paladin): Apply Beacon target healing bonuses (#27772) 2026-09-24 15:46:24 -03:00
moostigre 46cc4c62a6 fix(Core/GameObject): trigger chest traps once per loot generation (#27381) 2026-09-24 11:05:42 -03:00
Andrew 7185e0a9c2 refactor(Scripts/Ulduar): track Thorim's defeat through the boss state (#27755) 2026-09-22 20:07:35 -03:00
Andrew d1813fe4bb fix(Scripts/Ulduar): kill every Iron Construct when Ignis dies (#27751)
Only constructs that were already in combat were killed, leaving the dormant ones alive
after the boss died. Activate Construct is a slow missile, so a bolt still in flight then
landed on one of the survivors and activated it, pulling the raid back into combat.

Retail handles this with Kill All Constructs (65109), an instakill that hits every Iron
Construct in range, so cast that instead of killing them from script. Its implicit target
is entry-based and matches every unit in range without a condition, players included, so
the targeting row ships with it.

Adds e2e coverage: TestAC_27736_IgnisKillsAllConstructs.

Closes #27736
2026-09-21 22:14:46 -03:00
llupa a13ab50c4e fix(DB/Trainer): Add missing master Engineering recipes (#27573) 2026-09-21 21:07:01 -03:00
Andrew e622cb5157 fix(DB/Ulduar): correct Freya's Gift emblem counts (#27718) 2026-09-19 22:34:17 -03:00
Andrew 7eeef5223b test(e2e/Ulduar): drop the flaky Brightleaf sun beam despawn test (#27703) 2026-09-19 06:48:09 -03:00
Andrew a53ddd813e fix(Scripts/Ulduar): stop Freya's Tidal Wave when its cast is kicked (#27636) 2026-09-18 19:06:44 -03:00
llupa 41f475e9da fix(Scripts/Dalaran): Eject only from the quarters (#27666) 2026-09-17 14:11:11 +02:00
Andrew 0e6a5d322c fix(Scripts/Ulduar): do not let Thorim's evade despawn trigger his defeat (#27672) 2026-09-17 06:14:54 -03:00
tomfranz2000-glitch f8cc92b5c0 fix(DB/Quest): Correct Report to Kadrak gating (#27418) 2026-09-16 20:12:10 +02:00
Andrew 4d4ae4f957 fix(Scripts/Ulduar): stop Freya's Ward adds despawning on the spell timer (#27651) 2026-09-16 08:03:09 -03:00
f68a9759bd fix(Scripts/Feralas): summon the Gordunni trap mound through its own spells (#27632)
Co-authored-by: offl <[email protected]>
Co-authored-by: Giacomo Pozzoni <[email protected]>
Co-authored-by: blinkysc <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>
2026-09-15 19:09:25 -03:00
Andrew d32c4abe8b fix(Scripts/Ulduar): cap Elder Brightleaf's Unstable Sun Beams (#27638) 2026-09-14 20:23:13 -03:00
AndrewandShauren 92f5ce9a73 fix(Scripts/Ulduar): give Algalon a stasis period after Big Bang (#27630)
Co-authored-by: Shauren <[email protected]>
2026-09-13 16:59:43 -03:00
AndrewandCyberium 71012e3ce3 fix(Core/Groups): identify the finished roll in SMSG_LOOT_ROLL_WON (#27631)
Co-authored-by: Cyberium <[email protected]>
2026-09-13 14:36:33 -03:00
Andrewandhorn 7409484aa3 fix(Scripts/Ulduar): stop Yogg-Saron's Psychosis and Malady of the Mind from picking low Sanity targets (#27628)
Co-authored-by: horn <[email protected]>
2026-09-13 05:21:19 -03:00
AndrewandLopin e9675bf3e0 fix(Scripts/Ulduar): give Elder Brightleaf's Unstable Sun Beams their own lifetime (#27619)
The beams were summoned by hand with TEMPSUMMON_MANUAL_DESPAWN and no
duration, which InitStats turns into TEMPSUMMON_DEAD_DESPAWN, and NPC
33050 is a trigger with NullCreatureAI that can neither die nor despawn
itself. The only thing that removed them was an event on the elder, and
his event map stops running the moment he dies, so a kill taken while a
wave was up left the beams standing forever. With a 20s summon cycle and
a 15s despawn that was most kills.

Move the lifetime onto the beam: 33050 gets SmartAI rows that cast
Unstable Sun Beam and Photosynthesis when summoned, then cast Unstable
Energy and despawn after 18-25s. AIName and ScriptName resolve from the
base entry, so the 25-man template is covered too. The react-passive row
is required because InitializeReactState gives a SmartAI trigger
REACT_AGGRESSIVE; Freya's own Sun Beam (33170) carries the same row.

The elder now casts 62207 rather than placing two creatures himself, so
the placement comes from the spell: one beam at his feet, plus a forced
62221 on every player in range each summoning one under themselves. That
relies on the EffectForceCast fix in #27621.

Wave timing from a sniff: first wave 6s after the pull and then every
22-26s, against a fixed 8s and 20s. Beam lifetime 18-25s across eight
observed beams, against a fixed 15s.

The beam owning its own despawn and the 62207 cast mirror TrinityCore
60388f39073ca85f9592b1e67e88e507a1a79421. The timers come from the sniff
and the beam side is SmartAI rather than a C++ AI.

Covered by TestUlduar_BrightleafSunBeamsDespawnAfterDeath, which asserts a
beam lands on the player and that none outlive the elder. It enters at
Brightleaf's own spawn rather than the Freya pad: that pad is 12y from
Freya, and aggroing her banishes every living elder, after which he
schedules no beams at all.

Reported as https://github.com/chromiecraft/chromiecraft/issues/10163

Co-authored-by: Lopin <[email protected]>
2026-09-12 19:43:53 -03:00
AndrewandClaude Opus 5 5054796f66 fix(Core/Spells): stop forced casts from inheriting the caster as their destination (#27621)
Spell::EffectForceCast always handed the forced cast the original caster
as its unit target. When the triggered spell takes no unit target but
does need a destination, Spell::InitExplicitTargets turns that unit
target into the destination, so the forced cast resolves against the
original caster instead of against the unit that was forced to cast it.

Only pass the unit target when the triggered spell's explicit target mask
accepts one, which is the same test InitExplicitTargets applies before
discarding it.

Twelve spells in the client data force-cast a spell that needs a
destination but takes no unit target: 42073, 48759, 52187, 57838, 58566,
62207, 62301, 62921, 64088, 64598, 69839 and 70882. Seven of them place
their summon somewhere new - 48759, 52187, 57838, 58566, 62207, 62921 and
64088, whose triggers summon at the destination itself or at a fixed
offset from it. The rest do not move: 42073 force-casts on itself,
69839's force-cast effect is prevented by a spell script, and 70882's
trigger overwrites the destination with TARGET_DEST_CASTER.

62301 and 64598 are the last two. Their trigger 62293 inherited the
destination like the others, but a spell_info correction forcing its
TargetB to TARGET_DEST_CASTER had SelectImplicitCasterDestTargets
overwrite it with the forced caster afterwards, so Algalon's craters
landed correctly in spite of the bug. With the root cause fixed that
correction is dead code and goes with it; the fallback destination
InitExplicitTargets now picks is the same position the correction used to
write, so nothing moves in-game.

TestEffects_ForceCastDestination covers both trigger shapes: 62221 and
62293 summoning at the destination itself, and 48757 summoning at an
offset from it.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-12 15:38:34 -03:00
83ad15d755 fix(DB/Quest): Summon Lord Kragaru from the Serpent Statue (#27611)
Co-authored-by: Aokromes <[email protected]>
Co-authored-by: Dr-J <[email protected]>
Co-authored-by: Gultask <[email protected]>
2026-09-12 12:08:45 -03:00
sogladev c3e3d216bf fix(Core/Spells): allow paladin auras from different casters to coexist (#27509) 2026-09-12 16:57:59 +02:00
Andrew c0e6272af9 fix(Scripts/Ulduar): make Yogg-Saron's Laughing Skulls respect line of sight (#27614) 2026-09-11 21:28:07 -03:00
llupa 516af2d687 fix(DB/Quest): Show objective marker on Zaxxis mobs (#27569) 2026-09-09 18:36:06 -03:00
Anton Popovichenkoandsudlud 19ca6e1128 test(e2e): review, flakes, no unsolicited e2e (#27514)
Co-authored-by: sudlud <[email protected]>
2026-09-09 17:41:34 +02:00
llupa b0796ebda4 fix(DB/SAI): Correct Frostmourne Cavern text and RP progression(#27522) 2026-09-08 15:38:16 -03:00
llupa 7d0367957c fix(DB/Gameobject): Correct Call to Arms banner sides in Shattrath and Dalaran (#27559) 2026-09-08 13:58:49 -03:00
e89548f2f7 fix(Core/Spells): respect hostile self-immunity (#27482)
Co-authored-by: sogladev <[email protected]>
Co-authored-by: sogladev <[email protected]>
Co-authored-by: sudlud <[email protected]>
2026-09-07 21:51:03 +02:00
moostigre fc82095b02 fix(DB/SAI): Restore Timmy the Cruel (#27241) 2026-09-02 19:52:06 -03:00
Anton Popovichenko 887538fe67 feat(Core/e2e): live protocol e2e suite (#27158) 2026-08-27 14:57:14 +02:00