fix(Scripts/Ulduar): Freya's Ancient Conservator should cast Nature's Fury on a random player (#26199)

Co-authored-by: Lopin <Lopin@TwinStar.cz>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Andrew
2026-06-14 20:13:02 -03:00
committed by GitHub
parent e1262cd99a
commit fe7daf2d87
3 changed files with 9 additions and 4 deletions

View File

@@ -292,10 +292,14 @@ SpellCastResult UnitAI::DoCastAOE(uint32 spellId, bool triggered)
/**
* @brief Cast the spell on a random unit from the threat list
*
* @param aura Optional aura filter forwarded to SelectTarget: a positive value
* requires the aura on the target, a negative value excludes targets
* that already have it.
*/
SpellCastResult UnitAI::DoCastRandomTarget(uint32 spellId, uint32 threatTablePosition, float dist, bool playerOnly, bool triggered, bool withTank)
SpellCastResult UnitAI::DoCastRandomTarget(uint32 spellId, uint32 threatTablePosition, float dist, bool playerOnly, bool triggered, bool withTank, int32 aura)
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, threatTablePosition, dist, playerOnly, withTank))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, threatTablePosition, dist, playerOnly, withTank, aura))
{
return DoCast(target, spellId, triggered);
}

View File

@@ -395,7 +395,8 @@ public:
SpellCastResult DoCastToAllHostilePlayers(uint32 spellid, bool triggered = false);
SpellCastResult DoCastVictim(uint32 spellId, bool triggered = false);
SpellCastResult DoCastAOE(uint32 spellId, bool triggered = false);
SpellCastResult DoCastRandomTarget(uint32 spellId, uint32 threatTablePosition = 0, float dist = 0.0f, bool playerOnly = true, bool triggered = false, bool withTank = true);
// aura: forwarded to SelectTarget - if 0: ignored, if > 0: the target shall have the aura, if < 0: the target shall NOT have the aura
SpellCastResult DoCastRandomTarget(uint32 spellId, uint32 threatTablePosition = 0, float dist = 0.0f, bool playerOnly = true, bool triggered = false, bool withTank = true, int32 aura = 0);
/// @brief Cast spell on the top threat target, which may not be the current victim.
SpellCastResult DoCastMaxThreat(uint32 spellId, uint32 threatTablePosition = 0, float dist = 0.0f, bool playerOnly = true, bool triggered = false);

View File

@@ -1058,7 +1058,7 @@ struct boss_freya_summons : public ScriptedAI
switch (events.ExecuteEvent())
{
case EVENT_ANCIENT_CONSERVATOR_NATURE_FURY:
me->CastSpell(me->GetVictim(), SPELL_NATURE_FURY, false);
DoCastRandomTarget(SPELL_NATURE_FURY, 0, 100.0f, true, false, true, -SPELL_NATURE_FURY);
events.Repeat(14s);
break;
case EVENT_ANCIENT_CONSERVATOR_GRIP: