52 {302.0f, -87.0f, -24.4f, 0.157f},
53 {321.0f, -63.5f, -24.6f, 4.887f},
54 {346.0f, -74.5f, -24.6f, 3.595f},
55 {344.0f, -103.5f, -24.5f, 2.356f},
56 {316.0f, -109.0f, -24.6f, 1.257f}
125 for (
uint8 i = 0; i<5; ++i)
128 if (who && channeler && !channeler->
IsInCombat())
135 for (
uint8 i = 0; i < 5; ++i)
138 if (channeler && channeler->
IsAlive())
155 for (i = 0; i < 5; ++i)
166 for (
uint8 i = 0; i < 5; ++i)
169 if (!channeler || channeler->
isDead())
252 return GetBloodFurnaceAI<boss_kelidan_the_breakerAI>(creature);
362 return GetBloodFurnaceAI<npc_shadowmoon_channelerAI>(creature);
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
@ UNIT_FLAG_NON_ATTACKABLE
@ DATA_KELIDAN_THE_BREAKER
@ SPELL_SHADOW_BOLT_VOLLEY
@ H_SPELL_SHADOW_BOLT_VOLLEY
const float ShadowmoonChannelers[5][4]
void AddSC_boss_kelidan_the_breaker()
void JustEngagedWith(Unit *who) override
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
void SetReactState(ReactStates st)
void SetImmuneToAll(bool apply) override
static ObjectGuid const Empty
static ObjectGuid GetGUID(Object const *o)
SpellCastResult DoCastVictim(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 InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
bool IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
Aura * AddAura(uint32 spellId, Unit *target)
void SetUnitFlag(UnitFlags flags)
void RemoveUnitFlag(UnitFlags flags)
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
CreatureAI * GetAI(Creature *creature) const override
boss_kelidan_the_breaker()
npc_shadowmoon_channeler()
CreatureAI * GetAI(Creature *creature) const override
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void DoTeleportAll(float x, float y, float z, float o)
void DoStartMovement(Unit *target, float distance=0.0f, float angle=0.0f)
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *who) override
void ChannelerDied(Unit *killer)
ObjectGuid GetChanneled(Creature *channeler1)
void KilledUnit(Unit *) override
void ChannelerEngaged(Unit *who)
void JustDied(Unit *) override
uint32 ShadowVolley_Timer
boss_kelidan_the_breakerAI(Creature *creature)
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *who) override
uint32 MarkOfShadow_Timer
void JustDied(Unit *killer) override
npc_shadowmoon_channelerAI(Creature *creature)