135 int cid =
rand32() % (4 - 1);
534 std::list<WorldObject*> ClusterList;
539 for (std::list<WorldObject*>::const_iterator i = ClusterList.begin(); i != ClusterList.end(); ++i)
546 switch (go->GetGOInfo()->displayId)
567 switch (go->GetGOInfo()->displayId)
608 auraGo->RemoveFromWorld();
661 auraGo->RemoveFromWorld();
715 cluster->GetPosition(x, y, z, o);
736 relic->GetPosition(x, y, z, o);
765 DoCast(player, rewSpell,
true);
781 guardian->AI()->AttackStart(player);
818 if (player->isDead())
901 bunny->AI()->SetGUID(player->
GetGUID(), large);
First const & RAND(First const &first, Second const &second, Rest const &... rest)
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
@ TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
@ QUEST_STATUS_INCOMPLETE
Creature * GetClosestCreatureWithEntry(WorldObject *source, uint32 entry, float maxSearchRange, bool alive=true)
void CloseGossipMenuFor(Player *player)
@ SPELL_EFFECT_APPLY_AURA
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define SpellEffectFn(F, I, N)
@ UNIT_FLAG_NON_ATTACKABLE
virtual void MoveInLineOfSight(Unit *)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetObjectScale(float scale) override
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool UpdateEntry(uint32 entry, CreatureData const *data=nullptr, bool updateLevel=true)
void CancelEventGroup(uint32 group)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void CancelEvent(uint32 eventId)
GameObjectTemplate const * GetGOInfo() const
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static Unit * ToUnit(Object *o)
static GameObject * ToGameObject(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
void SendPreparedGossip(WorldObject *source)
QuestStatus GetQuestStatus(uint32 quest_id) const
void PrepareGossipMenu(WorldObject *source, uint32 menuId, bool showQuests=false)
Player * GetHitPlayer() const
HookList< EffectHandler > OnEffectHitTarget
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
MotionMaster * GetMotionMaster()
Powers GetPowerType() const
bool HasUnitFlag(UnitFlags flags) const
void SetUninteractible(bool apply)
uint64 GetMaxHealth() const
bool SetCanFly(bool enable)
void NearTeleportTo(Position const &pos, bool casting=false)
void SetUnitFlag(UnitFlags flags)
void RemoveUnitFlag(UnitFlags flags)
GameObject * FindNearestGameObject(uint32 entry, float range, bool spawnedOnly=true) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
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)
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
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
npc_oscillating_frequency_scanner_master_bunny()
CreatureAI * GetAI(Creature *creature) const override
void HandleEffect(SpellEffIndex)
SpellScript * GetSpellScript() const override
spell_oscillating_field()
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
struct GameObjectTemplate::@213::@217 questgiver
struct GameObjectTemplate::@213::@225 goober
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
static QuaternionData fromEulerAnglesZYX(float Z, float Y, float X)
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void DoPlaySoundToSet(WorldObject *source, uint32 soundId)
go_apexis_relicAI(GameObject *go)
bool OnGossipSelect(Player *player, uint32, uint32) override
bool OnGossipHello(Player *player) override
go_legion_obeliskAI(GameObject *go)
bool OnGossipHello(Player *player) override
go_simon_clusterAI(GameObject *go)
bool OnGossipHello(Player *player) override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
void JustEngagedWith(Unit *) override
npc_nether_drakeAI(Creature *creature)
void MoveInLineOfSight(Unit *who) override
void UpdateAI(uint32 diff) override
uint32 IntangiblePresence_Timer
void MovementInform(uint32 type, uint32 id) override
npc_oscillating_frequency_scanner_master_bunnyAI(Creature *creature)
void IsSummonedBy(WorldObject *summoner) override
void UpdateAI(uint32 diff) override
void SetData(uint32 type, uint32) override
void PlayColor(uint8 color)
uint32 clusterIds[SIMON_MAX_COLORS]
std::list< uint8 > playableSequence
void SpellHitTarget(WorldObject *target, SpellInfo const *spellInfo) override
void CheckPlayerSequence()
std::list< uint8 > playerSequence
void DoAction(int32 action) override
void GenerateColorSequence()
void SetGUID(ObjectGuid const &guid, int32 id) override
void UpdateAI(uint32 diff) override
void PrepareClusters(bool clustersOnly=false)
std::list< uint8 > colorSequence
void GiveRewardForLevel(uint8 level)
npc_simon_bunnyAI(Creature *creature)
@ GO_LEGION_OBELISK_THREE
@ SPELL_TAKE_REAGENTS_SOLO
@ SPELL_TAKE_REAGENTS_GROUP
void AddSC_blades_edge_mountains()
@ SPELL_INTANGIBLE_PRESENCE
@ SPELL_T_PHASE_MODULATOR
@ EVENT_SIMON_RESET_CLUSTERS
@ ACTION_SIMON_ROUND_FINISHED
@ EVENT_SIMON_PLAY_SEQUENCE
@ EVENT_SIMON_TOO_LONG_TIME
@ EVENT_SIMON_SETUP_PRE_GAME
@ EVENT_SIMON_PERIODIC_PLAYER_CHECK
@ ACTION_SIMON_WRONG_SEQUENCE
@ ACTION_SIMON_CORRECT_FULL_SEQUENCE
@ EVENT_SIMON_ROUND_FINISHED
@ GO_YELLOW_CLUSTER_DISPLAY
@ GO_BLUE_CLUSTER_DISPLAY_LARGE
@ GO_GREEN_CLUSTER_DISPLAY
@ GO_BLUE_CLUSTER_DISPLAY
@ GO_GREEN_CLUSTER_DISPLAY_LARGE
@ SPELL_VISUAL_START_PLAYER_LEVEL
@ SPELL_AUDIBLE_GAME_TICK
@ GO_RED_CLUSTER_DISPLAY_LARGE
@ GO_YELLOW_CLUSTER_DISPLAY_LARGE
@ SPELL_BAD_PRESS_TRIGGER
@ SPELL_VISUAL_START_AI_LEVEL
@ NPC_OSCILLATING_FREQUENCY_SCANNER_TOP_BUNNY
@ GO_OSCILLATING_FREQUENCY_SCANNER
@ QUEST_GAUGING_THE_RESONANT_FREQUENCY
@ SPELL_OSCILLATION_FIELD