240 trapper->SetFacingToObject(
me);
247 trapper->GetMotionMaster()->MovePoint(0, trapper->GetFirstCollisionPosition(20.0f, 0));
254 if (trapper->IsAIEnabled())
275 player->KilledMonsterCredit(trapper->GetEntry(), trapper->GetGUID());
282 trapper->DespawnOrUnsummon();
372 mammoth->SetFacingToObject(player);
383 if (mammoth->IsAIEnabled())
389 mammoth->GetMotionMaster()->MovePoint(0, mammoth->GetFirstCollisionPosition(50.0f,
me->
GetOrientation()));
394 mammoth->DespawnOrUnsummon(0s, 120s);
644 uint32 charGossipItem = 0;
824 arthas->SetWalk(
true);
829 talbot->SetWalk(
true);
837 arthas->GetMotionMaster()->MovePath(
PATH_ARTHAS,
false);
843 talbot->GetMotionMaster()->MovePath(
PATH_TALBOT,
false);
851 talbot->SetFullHealth();
862 if (talbot->IsAIEnabled())
871 arlos->SetWalk(
true);
874 arlos->GetMotionMaster()->MovePath(
PATH_ARLOS,
false);
879 leryssa->SetWalk(
true);
882 leryssa->GetMotionMaster()->MovePath(
PATH_LERYSSA,
false);
889 if (talbot->IsAIEnabled())
907 arthas->SetFacingToObject(
me);
915 if (arthas->IsAIEnabled())
927 if (talbot->IsAIEnabled())
936 arthas->SetFacingToObject(talbot);
937 if (arthas->IsAIEnabled())
946 arthas->SetFacingToObject(
me);
954 arthas->RemoveFromWorld();
962 if (talbot->IsAIEnabled())
967 talbot->Attack(
me,
false);
976 if (arlos->IsAIEnabled())
996 leryssa->SetFacingToObject(
me);
1006 if (arlos->IsAIEnabled())
1012 if (leryssa->IsAIEnabled())
1027 leryssa->SetWalk(
false);
1028 leryssa->MonsterMoveWithSpeed(3726.751f, 3568.1633f, 477.44086f, leryssa->GetSpeed(
MOVE_RUN),
true,
true);
1036 if (leryssa->IsAIEnabled())
1050 if (leryssa->IsAIEnabled())
1062 if (leryssa->IsAIEnabled())
1092 talbot->DespawnOrUnsummon();
1095 leryssa->DespawnOrUnsummon();
1098 arlos->DespawnOrUnsummon();
1101 arthas->DespawnOrUnsummon();
1106 if (gossipListId == 0)
1144 if (
Unit* summoner = tempSummon->GetSummonerUnit())
1163 if (
Unit* summoner = tempSummon->GetSummonerUnit())
1229 if (
Unit* summoner = tempSummon->GetSummonerUnit())
1273 laurith->AI()->SetGUID(caster->GetGUID());
1362 caster->
CastSpell(caster, spellId,
true);
1363 target->
CastSpell(target, spellId2,
true);
1470 aura->ModStackAmount(-1);
1580 if (!caster || !target)
1587 switch (aura->GetStackAmount())
1632 if (!caster || !target)
1640 switch (aura->GetStackAmount())
1657 target->
AI()->
Talk(text, caster);
First const & RAND(First const &first, Second const &second, Rest const &... rest)
DB2Storage< BroadcastTextEntry > sBroadcastTextStore("BroadcastText.db2", &BroadcastTextLoadInfo::Instance)
@ TEMPSUMMON_DEAD_DESPAWN
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
#define INTERACTION_DISTANCE
@ QUEST_STATUS_INCOMPLETE
uint32 urand(uint32 min, uint32 max)
bool roll_chance_i(int chance)
#define RegisterCreatureAI(ai_name)
#define RegisterGameObjectAI(ai_name)
#define RegisterSpellScript(spell_script)
void AddGossipItemFor(Player *player, GossipOptionNpc optionNpc, std::string text, uint32 sender, uint32 action)
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
void ClearGossipMenuFor(Player *player)
void InitGossipMenuFor(Player *player, uint32 menuId)
void CloseGossipMenuFor(Player *player)
#define GOSSIP_TEXT_BROWSE_GOODS
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_SEND_EVENT
@ AURA_EFFECT_HANDLE_REAL
#define SpellEffectFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
NPCFlags
Non Player Character flags.
@ UNIT_NPC_FLAG_QUESTGIVER
@ UNIT_FLAG_NON_ATTACKABLE
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
WorldObject * GetOwner() const
HookList< EffectApplyHandler > OnEffectRemove
uint8 GetStackAmount() const
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void GetHomePosition(float &x, float &y, float &z, float &ori) const
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetImmuneToAll(bool apply) override
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void StartFollow(Player *player, uint32 factionForFollower=0, uint32 quest=0)
void MoveInLineOfSight(Unit *) override
void SetFollowComplete(bool withEndEvent=false)
void SetGoState(GOState state)
GOState GetGoState() const
void DespawnOrUnsummon(Milliseconds delay=0ms, Seconds forceRespawnTime=0s)
void MovePath(uint32 pathId, bool repeatable, Optional< Milliseconds > duration={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< std::pair< Milliseconds, Milliseconds > > waitTimeRangeAtPathEnd={}, Optional< float > wanderDistanceAtPathEnds={}, Optional< bool > followPathBackwardsFromEndToStart={}, bool generatePath=true)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
void MoveFollow(Unit *target, float dist, ChaseAngle angle, Optional< Milliseconds > duration={}, MovementSlot slot=MOTION_SLOT_ACTIVE)
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
WorldSession * GetSession() const
QuestStatus GetQuestStatus(uint32 quest_id) const
std::unique_ptr< PlayerMenu > PlayerTalkClass
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
Creature * GetHitCreature() const
HookList< HitHandler > AfterHit
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
SpellInfo const * GetSpellInfo() const
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
void CombatStop(bool includingCast=false, bool mutualPvP=true, bool(*unitFilter)(Unit const *otherUnit)=nullptr)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
Emote GetEmoteState() const
NPCFlags GetNpcFlags() const
void SetFaction(uint32 faction) override
void RemoveAllAurasExceptType(AuraType type)
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
void RemoveNpcFlag(NPCFlags flags)
TempSummon * ToTempSummon()
void AddUnitState(uint32 f)
void SetEmoteState(Emote emote)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void SetNpcFlag(NPCFlags flags)
bool SetWalk(bool enable)
void SetFacingTo(float const ori, bool force=true)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
void ReplaceAllNpcFlags(NPCFlags 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={ })
bool IsValidAttackTarget(WorldObject const *target, SpellInfo const *bySpell=nullptr) const
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
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Position GetFirstCollisionPosition(float dist, float angle)
void SendListInventory(ObjectGuid guid)
void HandleScriptEffect(SpellEffIndex)
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
void HandleEffect(SpellEffIndex)
void HandleEffectRemove(AuraEffect const *, AuraEffectHandleModes)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
TC_GAME_API GameObject * GetGameObject(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
constexpr void GetPosition(float &x, float &y) const
constexpr float GetOrientation() const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
go_caribou_trap(GameObject *go)
void UpdateAI(uint32 diff) override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
go_mammoth_trap(GameObject *go)
void UpdateAI(uint32 diff) override
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *who) override
void JustAppeared() override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
npc_beryl_sorcerer(Creature *creature)
npc_bloodmage_laurith(Creature *creature)
void UpdateAI(uint32 diff) override
void SetGUID(ObjectGuid const &guid, int32) override
void JustAppeared() override
npc_captured_beryl_sorcerer(Creature *creature)
void MoveInLineOfSight(Unit *who) override
npc_counselor_talbot(Creature *creature)
void JustDied(Unit *) override
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *) override
npc_general_arlos(Creature *creature)
void WaypointPathEnded(uint32, uint32 pathId) override
void DoAction(int32) override
npc_hidden_cultist(Creature *creature)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
void UpdateAI(uint32 uiDiff) override
bool OnGossipHello(Player *player) override
void WaypointPathEnded(uint32, uint32 pathId) override
npc_leryssa(Creature *creature)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
npc_thassarian(Creature *creature)
void JustAppeared() override
void WaypointPathEnded(uint32, uint32 pathId) override
void UpdateAI(uint32 diff) override
void JustDied(Unit *) override
npc_valiance_keep_cannoneer(Creature *creature)
void UpdateAI(uint32 diff) override
@ GO_VALIANCE_KEEP_CANNON_2
@ GO_VALIANCE_KEEP_CANNON_1
@ EVENT_THASSARIAN_SCRIPT_29
@ EVENT_THASSARIAN_SCRIPT_5
@ EVENT_THASSARIAN_SCRIPT_22
@ EVENT_THASSARIAN_SCRIPT_7
@ EVENT_THASSARIAN_SCRIPT_11
@ EVENT_THASSARIAN_SCRIPT_2
@ EVENT_THASSARIAN_SCRIPT_18
@ EVENT_THASSARIAN_SCRIPT_16
@ EVENT_THASSARIAN_SCRIPT_17
@ EVENT_THASSARIAN_SCRIPT_20
@ EVENT_THASSARIAN_SCRIPT_12
@ EVENT_THASSARIAN_SCRIPT_8
@ EVENT_THASSARIAN_SCRIPT_27
@ EVENT_THASSARIAN_SCRIPT_1
@ EVENT_THASSARIAN_SCRIPT_26
@ EVENT_THASSARIAN_SCRIPT_4
@ SPELL_TRANSFORM_VALANAR
@ EVENT_THASSARIAN_SCRIPT_25
@ EVENT_THASSARIAN_SCRIPT_21
@ EVENT_THASSARIAN_SCRIPT_9
@ EVENT_THASSARIAN_SCRIPT_6
@ EVENT_THASSARIAN_SCRIPT_15
@ EVENT_THASSARIAN_SCRIPT_14
@ EVENT_THASSARIAN_SCRIPT_19
@ EVENT_THASSARIAN_SCRIPT_23
@ EVENT_THASSARIAN_SCRIPT_13
@ EVENT_THASSARIAN_SCRIPT_24
@ EVENT_THASSARIAN_SCRIPT_10
@ EVENT_THASSARIAN_SCRIPT_3
@ EVENT_THASSARIAN_SCRIPT_28
@ SPELL_SHORTENING_BLASTER_POLYMORPH1
@ SPELL_SHORTENING_BLASTER_GHOST1
@ SPELL_SHORTENING_BLASTER_SHRUNK1
@ SPELL_SHORTENING_BLASTER_POLYMORPH2
@ SPELL_SHORTENING_BLASTER_GHOST2
@ SPELL_SHORTENING_BLASTER_YELLOW2
@ SPELL_SHORTENING_BLASTER_BIGGER1
@ SPELL_SHORTENING_BLASTER_SHRUNK2
@ SPELL_SHORTENING_BLASTER_BIGGER2
@ SPELL_SHORTENING_BLASTER_YELLOW1
@ SPELL_SUMMON_ARCANE_PRISONER_1
@ SPELL_SUMMON_ARCANE_PRISONER_2
@ SPELL_DRAKE_HATCHLING_SUBDUED
@ GOSSIP_ITEM_TOM_HEGGER_MENUID
@ GOSSIP_ITEM_GUARD_MITCHELLS_MENUID
@ SPELL_SHROUD_OF_THE_DEATH_CULTIST
@ GOSSIP_ITEM_HIDDEN_CULTIST_OPTIONID
@ GOSSIP_ITEM_SALTY_JOHN_THORPE_MENUID
@ GOSSIP_TEXT_GUARD_MITCHELSS
@ GOSSIP_TEXT_SALTY_JOHN_THORPE
std::array< uint32, 3 > const CocoonSummonSpells
@ SPELL_ARCANE_CHAINS_CHARACTER_FORCE_CAST
@ NPC_CAPTURED_BERLY_SORCERER
@ SPELL_COSMETIC_ENSLAVE_CHAINS_SELF
@ SPELL_ARCANE_CHAINS_CHANNEL_II
@ SPELL_ARCANE_CHAINS_SUMMON_CHAINED_MAGE_HUNTER
@ EVENT_RESET_ORIENTATION
void AddSC_borean_tundra()
@ SPELL_FREED_WARSONG_MAGE
@ SPELL_FREED_SOLDIER_DEBUFF
@ SPELL_FREED_WARSONG_WARRIOR
@ SPELL_FREED_WARSONG_PEON
@ SPELL_FREED_WARSONG_SHAMAN
@ WHISPER_TORTURE_RANDOM_2
@ WHISPER_TORTURE_RANDOM_3
@ WHISPER_TORTURE_PROTO_10
@ WHISPER_TORTURE_PROTO_9
@ WHISPER_TORTURE_PROTO_4
@ WHISPER_TORTURE_PROTO_3
@ SPELL_PROTOTYPE_NEURAL_NEEDLE_IMPACT
@ WHISPER_TORTURE_PROTO_5
@ WHISPER_TORTURE_PROTO_1
@ WHISPER_TORTURE_PROTO_7
@ WHISPER_TORTURE_PROTO_2
@ WHISPER_TORTURE_PROTO_8
@ WHISPER_TORTURE_RANDOM_1
@ WHISPER_TORTURE_PROTO_6
@ SPELL_NEURAL_NEEDLE_IMPACT