153 { -1954.946f, -10654.714f, 110.448f },
154 { -1956.331f, -10654.494f, 110.869f },
155 { -1955.906f, -10656.221f, 110.791f },
156 { -1957.294f, -10656.000f, 111.219f },
157 { -1954.462f, -10656.451f, 110.404f }
160 { -1915.137f, -10583.651f, 178.365f },
161 { -1914.006f, -10582.964f, 178.471f },
162 { -1912.717f, -10582.398f, 178.658f },
163 { -1915.056f, -10582.251f, 178.162f },
164 { -1913.883f, -10581.778f, 178.346f }
204 if (killer->
GetGUID() == legoso->GetGUID() ||
247 std::list<Creature*> BeamList;
249 if (!BeamList.empty())
250 for (std::list<Creature*>::iterator itr = BeamList.begin(); itr != BeamList.end(); ++itr)
257 std::list<Creature*> creatureList;
259 if (!creatureList.empty())
261 for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
373 Unit* target =
nullptr;
377 if (player->GetHealthPct() < 85)
571 sironas->SetImmuneToAll(
false);
591 sironas->SetObjectScale(3.0f);
604 sironas->Attack(target,
true);
605 sironas->GetMotionMaster()->MoveChase(target);
std::list< ObjectGuid > GuidList
bool roll_chance_i(int chance)
#define RegisterSpellScript(spell_script)
void GetCreatureListWithEntryInGrid(Container &container, WorldObject *source, uint32 entry, float maxSearchRange)
@ EMOTE_ONESHOT_EXCLAMATION
#define SpellEffectFn(F, I, N)
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void Respawn(bool force=false)
void SetObjectScale(float scale) override
void SetDisplayFromModel(uint32 modelIdx)
bool isTappedBy(Player const *player) const
void SetCanDualWield(bool value) override
void DelayEvents(Milliseconds delay)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static ObjectGuid const Empty
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
uint32 GetQuestId() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
virtual void DoAction(int32)
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
void RemoveGameObject(GameObject *gameObj, bool del)
float GetHealthPct() const
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
void SetFacingTo(float const ori, bool force=true)
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
void GetCreatureListWithEntryInGrid(Container &creatureContainer, uint32 entry, float maxSearchRange=250.0f) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
GameObject * SummonGameObject(uint32 entry, Position const &pos, QuaternionData const &rot, Seconds respawnTime, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
npc_demolitionist_legoso()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
TC_GAME_API GameObject * GetGameObject(WorldObject const &u, ObjectGuid const &guid)
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
void Start(bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false)
bool HasEscortState(uint32 escortState)
void LoadPath(uint32 pathId)
Player * GetPlayerForEscort()
void SetEscortPaused(bool on)
void UpdateAI(uint32 diff) override
constexpr float GetOrientation() const
static QuaternionData fromEulerAnglesZYX(float Z, float Y, float X)
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
void UpdateAI(uint32 diff) override
void OnQuestAccept(Player *player, Quest const *quest) override
void SetGUID(ObjectGuid const &guid, int32 type) override
GuidList _explosivesGuids
ObjectGuid _eventStarterGuid
ObjectGuid GetGUID(int32 type) const override
void DoAction(int32 param) override
npc_demolitionist_legosoAI(Creature *creature)
void WaypointReached(uint32 waypointId, uint32) override
void UpdateAI(uint32 diff) override
npc_sironasAI(Creature *creature)
void JustEngagedWith(Unit *) override
void JustDied(Unit *killer) override
void DoAction(int32 param) override
uint32 const CocoonSummonSpells[10]
Position const ExplosivesPos[2][MAX_EXPLOSIVES]
@ PHASE_PLANT_FIRST_STAND
@ SPELL_SIRONAS_CHANNELING
@ PHASE_MEET_SIRONAS_TURN
@ PHASE_PLANT_SECOND_SPEECH
@ WP_EXPLOSIVES_SECOND_DETONATE
@ WP_EXPLOSIVES_FIRST_DETONATE
@ PHASE_SIRONAS_SLAIN_EMOTE_1
@ PHASE_PLANT_SECOND_FINISH
@ ACTION_LEGOSO_SIRONAS_KILLED
@ PHASE_MEET_SIRONAS_ROAR
@ WP_EXPLOSIVES_FIRST_RUNOFF
@ PHASE_PLANT_SECOND_TIMER_3
@ GO_DRAENEI_EXPLOSIVES_1
@ EVENT_STRENGTH_OF_EARTH_TOTEM
@ DATA_EVENT_STARTER_GUID
@ PHASE_PLANT_FIRST_FINISH
@ PHASE_PLANT_FIRST_SPEECH
@ SPELL_STRENGTH_OF_EARTH_TOTEM
@ PHASE_SIRONAS_SLAIN_SPEECH_1
@ PHASE_PLANT_SECOND_STAND
@ PHASE_PLANT_SECOND_KNEEL
@ PHASE_PLANT_FIRST_ROTATE
@ WP_EXPLOSIVES_SECOND_BATTLEROAR
@ QUEST_ENDING_THEIR_WORLD
@ ACTION_SIRONAS_CHANNEL_STOP
@ ACTION_SIRONAS_CHANNEL_START
@ PHASE_SIRONAS_SLAIN_EMOTE_2
@ PHASE_PLANT_FIRST_KNEEL
@ PHASE_PLANT_SECOND_TIMER_2
@ PHASE_FIGHT_SIRONAS_SPEECH_2
@ PHASE_FIGHT_SIRONAS_SPEECH_1
@ PHASE_PLANT_FIRST_TIMER_3
@ PHASE_PLANT_FIRST_DETONATE
@ GO_DRAENEI_EXPLOSIVES_2
@ PHASE_PLANT_FIRST_TIMER_1
@ WP_EXPLOSIVES_SECOND_PLANT
@ PHASE_FIGHT_SIRONAS_START
@ PHASE_PLANT_FIRST_TIMER_2
@ PHASE_PLANT_SECOND_DETONATE
@ PHASE_PLANT_FIRST_POINT
@ WP_EXPLOSIVES_FIRST_PLANT
@ PHASE_PLANT_SECOND_WAIT
@ NPC_BLOODMYST_TESLA_COIL
@ PHASE_PLANT_SECOND_TIMER_1
@ WP_EXPLOSIVES_FIRST_POINT
@ PHASE_FIGHT_SIRONAS_STOP
@ PHASE_SIRONAS_SLAIN_SPEECH_2
@ PHASE_MEET_SIRONAS_SPEECH
void AddSC_bloodmyst_isle()
static constexpr uint32 PATH_ESCORT_LEGOSO