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);
1102 if (
GetTarget()->GetCharmedGUID().IsEmpty())
1110 marmot->DespawnOrUnsummon();
1129 creature->DespawnOrUnsummon(1ms);
1153 if (
Player* player =
GetCaster()->GetCharmerOrOwnerPlayerOrPlayerItself())
1171 player->CastSpell(
nullptr, spellId,
true);
1270 std::vector<Player*> playerList;
1272 for (
Player* player : playerList)
First const & RAND(First const &first, Second const &second, Rest const &... rest)
T GetEntry(std::unordered_map< uint32, T > const &map, CriteriaTreeEntry const *tree)
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
@ TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
@ TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN
@ QUEST_STATUS_INCOMPLETE
#define RegisterCreatureAI(ai_name)
#define RegisterSpellScript(spell_script)
Creature * GetClosestCreatureWithEntry(WorldObject *source, uint32 entry, float maxSearchRange, bool alive=true)
void CloseGossipMenuFor(Player *player)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_MOD_INVISIBILITY
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ TRIGGERED_IGNORE_CASTER_MOUNTED_OR_ON_VEHICLE
Will ignore mounted/on vehicle restrictions.
#define SpellCheckCastFn(F)
#define SpellEffectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_FLAG_NON_ATTACKABLE
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
ObjectGuid const & GetGUID() const
virtual void MoveInLineOfSight(Unit *)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
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 CancelEvent(EventId eventId)
void CancelEventGroup(GroupIndex group)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void AddFlag(FLAG_TYPE flag)
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={}, Optional< MovementFadeObject > fadeObject={}, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
GameObject * ToGameObject()
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)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< CheckCastHandler > OnCheckCast
Player * GetHitPlayer() const
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() 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)
bool HasAuraType(AuraType auraType) const
void NearTeleportTo(TeleportLocation const &target, bool casting=false)
void SetUnitFlag(UnitFlags flags)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveUnitFlag(UnitFlags flags)
void GetPlayerListInGrid(Container &playerContainer, float maxSearchRange, bool alive=true) const
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)
FlaggedValuesArray32< int32, uint64, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibilityDetect
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 HandleEffectPeriodic(AuraEffect const *)
void HandleTriggerSpell(AuraEffect const *)
void HandleDummy(SpellEffIndex)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
SpellCastResult CheckRequirement()
void HandleDummy(SpellEffIndex)
void HandleEffectRemove(AuraEffect const *, AuraEffectHandleModes)
void HandleEffectApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleScriptEffect(SpellEffIndex)
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
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)
struct GameObjectTemplate::@199::@211 goober
struct GameObjectTemplate::@199::@203 questgiver
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
static QuaternionData fromOrientation(float orientation)
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
ScriptedAI(Creature *creature, uint32 scriptId=0) noexcept
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
npc_q10720_keg_credit(Creature *creature)
void IsSummonedBy(WorldObject *summoner) 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_SWIFTNESS_APEXIS_EMANATIONS
@ SPELL_SWIFTNESS_APEXIS_VIBRATIONS
@ SPELL_APEXIS_VIBRATIONS
@ SPELL_APEXIS_ENLIGHTENMENT
@ SPELL_SWIFTNESS_APEXIS_ENLIGHTENMENT
@ SPELL_APEXIS_EMANATIONS
@ SPELL_TAKE_REAGENTS_SOLO
@ SPELL_TAKE_REAGENTS_GROUP
void AddSC_blades_edge_mountains()
@ SPELL_REXXARS_BIRD_EFFECT
@ 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
@ SPELL_FLAK_CANNON_TRIGGER
@ 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
@ SPELL_LASHHAN_CHANNELING
@ SPELL_CHARM_REXXARS_RODENT
@ NPC_RIPE_MOONSHINE_KEG_CREDIT
@ NPC_GREEN_SPOT_GROG_KEG_CREDIT
@ SPELL_RIPE_MOONSHINE_CREDIT
@ SPELL_GREEN_EYE_GROG_CREDIT
@ SPELL_FERMENTED_SEED_BEER_CREDIT
@ NPC_FERMENTED_SEED_BEER_KEG_CREDIT
ACurseUponBothOfYourClans
@ NPC_OGRE_BUILDING_BUNNY_LARGE
@ NPC_OSCILLATING_FREQUENCY_SCANNER_TOP_BUNNY
@ GO_OSCILLATING_FREQUENCY_SCANNER
@ QUEST_GAUGING_THE_RESONANT_FREQUENCY
@ SPELL_OSCILLATION_FIELD