144 sister->AI()->DoZoneInCombat();
160 if (triad == invoker)
163 triad->AI()->EnterEvadeMode(why);
177 if (sister->IsAlive())
233 HeartsbaneTriadEncounterFail(
instance, why,
me);
267 HeartsbaneTriadEncounterStart(
instance);
315 HeartsbaneTriadEncounterDone(
instance);
869 if (
Player* player = players.GetSource())
903 if (stack->GetStackAmount() > 1)
First const & RAND(First const &first, Second const &second, Rest const &... rest)
@ ENCOUNTER_FRAME_DISENGAGE
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_ENEMY_SPELL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_PERIODIC_DUMMY
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will not check if a current cast is in progress.
#define SpellEffectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraCheckProcFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ CURRENT_CHANNELED_SPELL
@ EVENT_UNSTABLE_RUNIC_MARK
@ EVENT_RUINOUS_BOLT_ENHANCED
@ EVENT_SOUL_MANIPULATION
@ EVENT_SOUL_BOLT_ENHANCED
@ EVENT_BRAMBLE_BOLT_ENHANCED
HeartsbaneTriadSummonGroups
@ SUMMON_GROUP_TRIAD_FOCUSING_IRIS
void AddSC_boss_heartsbane_triad()
@ SPELL_RUINOUS_BOLT_ENHANCED
@ SPELL_SOUL_MANIPULATION_VISUAL
@ SPELL_SOUL_MANIPULATION_DAMAGE_REDUCTION
@ SPELL_AURA_OF_DREAD_MOVE_CHECK
@ SPELL_AURA_OF_DREAD_DAMAGE
@ SPELL_AURA_OF_THORNS_CHECK_PROC
@ SPELL_BRAMBLE_BOLT_ENHANCED
@ SPELL_SOUL_MANIPULATION_SELECTOR
@ SPELL_UNSTABLE_RUNIC_MARK
@ SPELL_SOUL_BOLT_ENHANCED
@ SPELL_AURA_OF_APATHY_DEBUFF
@ SPELL_UNSTABLE_RUNIC_MARK_DAMAGE
@ SPELL_SOUL_MANIPULATION_CHARM
@ SAY_UNSTABLE_RUNIC_MARK
uint32 const HeartsbaneTriadData[3]
@ ACTION_CLAIM_THE_IRIS_INTRO
uint32 GetTickNumber() const
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
HookList< CheckProcHandler > DoCheckProc
ObjectGuid const & GetGUID() const
InstanceScript *const instance
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
bool _EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void SetBoundary(CreatureBoundary const *boundary, bool negativeBoundaries=false)
void SetUnkillable(bool unkillable)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetFloating(bool floating)
void SetSessile(bool sessile)
void Repeat(Milliseconds time)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void CancelEvent(uint32 eventId)
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
virtual bool SetBossState(uint32 id, EncounterState state)
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
Creature * GetCreature(uint32 type)
CreatureBoundary const * GetBossBoundary(uint32 id) const
EncounterState GetBossState(uint32 id) const
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
uint32 GetPlayersCountExceptGMs() const
PlayerList const & GetPlayers() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< CastHandler > AfterCast
Creature * GetHitCreature() const
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
HookList< EffectHandler > OnEffectLaunch
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
SpellCastResult DoCast(uint32 spellId)
void SetPower(Powers power, int32 val, bool withPowerUpdate=true)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HealthBelowPctDamaged(float pct, uint32 damage) const
void RemoveAuraFromStack(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT, uint16 num=1)
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 RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetPowerType(Powers power, bool sendUpdate=true, bool onInit=false)
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
void SummonCreatureGroup(uint8 group, std::list< TempSummon * > *list=nullptr)
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool HandleCheckProc(ProcEventInfo &eventInfo)
void HandleHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void RemoveIris(SpellEffIndex)
void HandlePeriodic(AuraEffect const *aurEff)
void HandlePeriodic(AuraEffect const *)
void HandleHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleDamage(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void JustEngagedWith(Unit *) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void ExecuteEvent(uint32 eventId) override
void JustAppeared() override
void EnterEvadeMode(EvadeReason why) override
void UpdateAI(uint32 diff) override
void DoAction(int32 actionId) override
void JustDied(Unit *) override
HeartsbaneTriadSharedAI(Creature *creature, uint32 bossId)
virtual void HandleClaimIris()
virtual void ScheduleEvents()
void KilledUnit(Unit *victim) override
virtual void HandleDropIris(bool, bool)
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override
at_heartsbane_triad_aura_of_apathy(AreaTrigger *areatrigger)
at_heartsbane_triad_aura_of_dread(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override
at_heartsbane_triad_aura_of_thorns(AreaTrigger *areatrigger)
void ScheduleEvents() override
boss_sister_briar(Creature *creature)
void HandleClaimIris() override
void HandleDropIris(bool skipShieldPhase, bool skipIrisDrop) override
void ExecuteEvent(uint32 eventId) override
void JustDied(Unit *killer) override
void EnterEvadeMode(EvadeReason why) override
void JustDied(Unit *killer) override
void HandleDropIris(bool skipShieldPhase, bool skipIrisDrop) override
void HandleClaimIris() override
void ExecuteEvent(uint32 eventId) override
boss_sister_malady(Creature *creature)
void ScheduleEvents() override
boss_sister_solena(Creature *creature)
void DoAction(int32 actionId) override
void HandleClaimIris() override
void HandleDropIris(bool skipShieldPhase, bool skipIrisDrop) override
void ScheduleEvents() override
void JustAppeared() override
void ExecuteEvent(uint32 eventId) override
void JustDied(Unit *killer) override
void JustEngagedWith(Unit *who) override
#define RegisterWaycrestManorCreatureAI(ai_name)