350 uint32 engagedPlayers = 0;
353 if (itr->GetVictim()->IsPlayer())
358 if (frothingRageStacks > 0)
361 frothingRageStacks += aura->GetStackAmount();
395 if (targets.size() < 2)
514template<u
int32 ColorSpellId>
520 template<u
int32 ColorSpell>
527 switch (breathDamageSpell)
562 guarm->
CastSpell(player, ColorSpell,
true);
577template<u
int32 SpellId1, u
int32 SpellId2>
706template<u
int32 ExcludeSpellId>
722 if (unit->
HasAura(ExcludeSpellId))
765template<u
int32 SpellIdOnExpire>
783 target->
CastSpell(target, SpellIdOnExpire);
First const & RAND(First const &first, Second const &second, Rest const &... rest)
@ ENCOUNTER_FRAME_DISENGAGE
uint32 urand(uint32 min, uint32 max)
#define RegisterSpellScript(spell_script)
#define RegisterSpellScriptWithArgs(spell_script, script_name,...)
#define RegisterSpellAndAuraScriptPairWithArgs(script_1, script_2, script_name,...)
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_SRC_AREA_ALLY
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_ENEMY_SPELL
@ SPELL_AURA_PERIODIC_DAMAGE
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ ACTION_HANDLE_FROTHING_RAGE
@ ACTION_BREATH_HIT_TARGET
GuardiansBreathSpellPair const GuardiansBreathSpellPairs[]
@ POINT_HEADLONG_CHARGE_MAX
JumpMovePathPair const BerserkerPair
@ SPELL_HEADLONG_CHARGE_INITIAL
@ SPELL_GUARDIANS_BREATH_UNK
@ SPELL_HEADLONG_CHARGE_DAMAGE
@ SPELL_GUARDIANS_BREATH_SUMMON_ATS_GRB
@ SPELL_GUARDIANS_BREATH_COLOR_SELECTOR
@ SPELL_VOLATILE_FOAM_INITIAL
@ SPELL_GUARDIANS_BREATH_SUMMON_ATS_RGB
@ SPELL_HEADLONG_CHARGE_AT
@ SPELL_ROARING_LEAP_JUMP
@ SPELL_VOLATILE_FOAM_SELECTOR_BLUE
@ SPELL_SHADOW_LICK_SELECTOR
@ SPELL_ROARING_LEAP_INITIAL_KNOCKBACK
@ SPELL_MULTI_HEADED_AURA
@ SPELL_GUARDIANS_BREATH_SUMMON_ATS_BRG
@ SPELL_GUARDIANS_BREATH_CAST_BRG
@ SPELL_BERSERK_TRAMPLE_AOE
@ SPELL_GUARDIANS_BREATH_CAST_GBR
@ SPELL_FROST_LICK_SELECTOR
@ SPELL_GUARDIANS_BREATH_CAST_GRB
@ SPELL_ROARING_LEAP_SELECTOR
@ SPELL_GUARDIANS_BREATH_CAST_RGB
@ SPELL_FLAME_LICK_SELECTOR
@ SPELL_SALTY_SPITTLE_AURA
@ SPELL_DARK_DISCHARGE_AURA
@ SPELL_GUARDIANS_BREATH_SUMMON_ATS_BGR
@ SPELL_BERSERK_CHARGE_AT
@ SPELL_HELYATOSIS_INITIAL_ENERGIZE
@ SPELL_VOLATILE_FOAM_SELECTOR_RED
@ SPELL_GUARDIANS_BREATH_SUMMON_ATS_GBR
@ SPELL_VOLATILE_FOAM_SELECTOR_GREEN
@ SPELL_GUARDIANS_BREATH_CAST_BGR
@ SPELL_GUARDIANS_BREATH_SUMMON_ATS_RBG
@ SPELL_MULTI_HEADED_DAMAGE
@ SPELL_HEADLONG_CHARGE_PERIODIC_DAMAGE
@ SPELL_FIERY_PHLEGM_AURA
@ SPELL_GUARDIANS_BREATH_CAST_RBG
JumpMovePathPair const HeadlongChargePairs[]
@ TALK_GUARDIANS_BREATH_ANNOUNCE
GuidUnorderedSet const & GetInsideUnits() const
AuraRemoveMode GetRemoveMode() const
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
SpellInfo const * GetSpellInfo() const
HookList< EffectApplyHandler > AfterEffectApply
AuraEffect * GetEffect(uint8 effIndex) const
HookList< AuraProcHandler > OnProc
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
static Conversation * CreateConversation(uint32 conversationEntry, Unit *creator, Position const &pos, ObjectGuid privateObjectOwner, SpellInfo const *spellInfo=nullptr, bool autoStart=true)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
bool _EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void SetReactState(ReactStates st)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void CancelEvent(uint32 eventId)
Creature * GetCreature(uint32 type)
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
void MoveJump(Position const &pos, float speedXY, float speedZ, uint32 id=EVENT_JUMP, bool hasOrientation=false, JumpArrivalCastArgs const *arrivalCast=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
void MovePath(uint32 pathId, bool repeatable, Optional< Milliseconds > duration={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< std::pair< Milliseconds, Milliseconds > > waitTimeRangeAtPathEnd={}, Optional< float > wanderDistanceAtPathEnds={}, Optional< bool > followPathBackwardsFromEndToStart={}, bool generatePath=true)
static ObjectGuid const Empty
static Creature * ToCreature(Object *o)
static Unit * ToUnit(Object *o)
static Player * ToPlayer(Object *o)
Unit * GetProcTarget() const
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
WorldLocation * GetHitDest() const
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
Unit * GetExplTargetUnit() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
Trinity::IteratorPair< ThreatListIterator, std::nullptr_t > GetUnsortedThreatList() const
virtual void DoAction(int32)
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
ThreatManager & GetThreatManager()
void SetAuraStack(uint32 spellId, Unit *target, uint32 stack)
MotionMaster * GetMotionMaster()
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
int32 GetPower(Powers power) const
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void SetMaxPower(Powers power, int32 val)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
at_guardians_breath(char const *script)
AreaTriggerAI * GetAI(AreaTrigger *at) const override
bool Validate(SpellInfo const *) override
void HandleHit(SpellEffIndex)
void HandleHit(SpellEffIndex)
void HandleHit(SpellEffIndex)
void HandleHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets)
void HandleProc(ProcEventInfo &eventInfo)
void HandleApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleRemove(AuraEffect const *, AuraEffectHandleModes)
void HandleHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *spellInfo) override
bool Validate(SpellInfo const *) override
void HandleHit(SpellEffIndex)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *spellInfo) override
void HandleHitTarget(SpellEffIndex)
void FilterTargets(std::list< WorldObject * > &targets)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
constexpr void GetPosition(float &x, float &y) const
Difficulty GetDifficulty() const
at_guardians_breathAI(AreaTrigger *at)
uint32 GetBreathDebuffByDamageSpell(uint32 breathDamageSpell) const
uint8 _unitsHitByBreathCount
void WaypointPathEnded(uint32, uint32 pathId) override
boss_guarm(Creature *creature)
void JustDied(Unit *) override
void DoAction(int32 param) override
void UpdateAI(uint32 diff) override
void EnterEvadeMode(EvadeReason) override
void MovementInform(uint32 type, uint32 pointId) override
void JustEngagedWith(Unit *who) override
void JustAppeared() override
#define RegisterTrialOfValorCreatureAI(ai_name)