105 if (spawn.myEntry == entry)
107 ASSERT_NODEBUGINFO(
sObjectMgr->GetCreatureTemplate(spawn.otherEntry),
"Invalid creature entry %u in 'npc_air_force_bots' script", spawn.otherEntry);
111 ASSERT_NODEBUGINFO(
false,
"Unhandled creature with entry %u is assigned 'npc_air_force_bots' script", entry);
474 std::list<Player*> players;
479 return players.empty();
549 {-3757.38f, -4533.05f, 14.16f, 3.62f},
550 {-3754.36f, -4539.13f, 14.16f, 5.13f},
551 {-3749.54f, -4540.25f, 14.28f, 3.34f},
552 {-3742.10f, -4536.85f, 14.28f, 3.64f},
553 {-3755.89f, -4529.07f, 14.05f, 0.57f},
554 {-3749.51f, -4527.08f, 14.07f, 5.26f},
555 {-3746.37f, -4525.35f, 14.16f, 5.22f},
559#define A_RUNTOX -3742.96f
560#define A_RUNTOY -4531.52f
561#define A_RUNTOZ 11.91f
565 {-1013.75f, -3492.59f, 62.62f, 4.34f},
566 {-1017.72f, -3490.92f, 62.62f, 4.34f},
567 {-1015.77f, -3497.15f, 62.82f, 4.34f},
568 {-1019.51f, -3495.49f, 62.82f, 4.34f},
569 {-1017.25f, -3500.85f, 62.98f, 4.34f},
570 {-1020.95f, -3499.21f, 62.98f, 4.34f}
574#define H_RUNTOX -1016.44f
575#define H_RUNTOY -3508.48f
576#define H_RUNTOZ 62.96f
702 for (GuidList::const_iterator itr =
Patients.begin(); itr !=
Patients.end(); ++itr)
802 if (!player || !
me->
IsAlive() || spellInfo->
Id != 20804)
891 TC_LOG_ERROR(
"scripts",
"Invalid entry for Triage doctor. Please check your database");
895 std::vector<Position const*>::iterator point =
Coordinates.begin();
900 Patients.push_back(Patient->GetGUID());
947 if (me->isAttackReady())
950 me->resetAttackTimer();
979 me->GetCharmInfo()->InitEmptyActionBar(
false);
1098 _pennantSpellId = 0;
1109 _pennantSpellId = GetPennantSpellId(player);
1110 player->
CastSpell(
nullptr, _pennantSpellId,
true);
1121 switch (me->GetEntry())
1287 NPC_BREWFEST_REVELER = 24484,
1289 EVENT_FILL_LIST = 1,
1300 _events.ScheduleEvent(EVENT_FILL_LIST, 1s, 2s);
1317 _events.Update(diff);
1319 while (
uint32 eventId = _events.ExecuteEvent())
1323 case EVENT_FILL_LIST:
1325 std::list<Creature*> creatureList;
1327 for (
Creature* creature : creatureList)
1329 _revelerGuids.push_back(creature->GetGUID());
1331 _events.ScheduleEvent(EVENT_FACE_TO, 1s, 2s);
1337 if (!_revelerGuids.empty())
1339 me->SetFacingToObject(creature);
1349 _events.ScheduleEvent(EVENT_NEXT, 4s, 6s);
1354 _events.ScheduleEvent(EVENT_NEXT, 8s, 12s);
1364 _events.ScheduleEvent(EVENT_FACE_TO, 1s);
1385 _combatTimer[who->
GetGUID()] = 5s;
1392 if (!attacker || damageType ==
DOT)
1395 _combatTimer[attacker->
GetGUID()] = 5s;
1400 for (
auto itr = _combatTimer.begin(); itr != _combatTimer.end();)
1403 if (itr->second <= 0s)
1406 auto const& pveRefs = me->GetCombatManager().GetPvECombatRefs();
1407 auto it = pveRefs.find(itr->first);
1408 if (it != pveRefs.end())
1409 it->second->EndCombat();
1411 itr = _combatTimer.erase(itr);
1458 _showUnderground =
urand(0, 100) == 0;
1479 if (_showUnderground)
1667 jumpTimer =
urand(5000, 10000);
1668 bunnyTimer =
urand(10000, 20000);
1669 searchTimer =
urand(5000, 10000);
1698 if (jumpTimer <= diff)
1702 jumpTimer =
urand(5000, 10000);
1703 }
else jumpTimer -= diff;
1705 if (bunnyTimer <= diff)
1708 bunnyTimer =
urand(20000, 40000);
1709 }
else bunnyTimer -= diff;
1713 if (searchTimer <= diff)
1723 rabbit->AI()->DoAction(1);
1725 rabbitGUID = rabbit->GetGUID();
1727 searchTimer =
urand(5000, 10000);
1728 }
else searchTimer -= diff;
1751 summonerGUID.Clear();
1758 summonerGUID = summoner->
GetGUID();
1765 events.Update(diff);
1816 switch (gossipListId)
1894 _isSearching =
false;
1895 _target = target->GetGUID();
1897 me->GetMotionMaster()->MovePoint(
MOVEID_CHASE, target->GetNearPosition(3.0f, target->GetAbsoluteAngle(me)));
1905 switch (_nextAction)
1909 me->GetMotionMaster()->MoveJump(*target, 5.0, 10.0,
MOVEID_JUMP);
1915 me->SetFacingTo(target->GetOrientation());
1945 me->DespawnOrUnsummon(5s);
2053 squireTired->SetDuration(ownerTired->GetDuration());
2065 switch (gossipListId)
2071 if (!me->HasAura(_bankAura))
2072 DoCastSelf(_bankAura);
2082 if (!me->HasAura(_shopAura))
2083 DoCastSelf(_shopAura);
2095 if (!me->HasAura(_mailAura))
2096 DoCastSelf(_mailAura);
2107 if (IsArgentSquire())
2108 DoCastSelf(
bannerSpells[gossipListId - 3].spellSquire,
true);
2110 DoCastSelf(
bannerSpells[gossipListId - 3].spellGruntling,
true);
2119 _scheduler.Update(diff);
2172 _owner->CastSpell(_owner, _spellId,
true);
2225 holders->InstallAllAccessories(
true);
2233 init.DisableTransportPathTransformations();
2234 init.MoveTo(x, y, z,
false);
2274 _scheduler.Update(diff);
std::chrono::seconds Seconds
Seconds shorthand typedef.
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
#define ASSERT_NODEBUGINFO
bool IsHolidayActive(HolidayIds id)
#define TC_LOG_ERROR(filterType__,...)
@ MOTION_PRIORITY_HIGHEST
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
std::list< ObjectGuid > GuidList
std::vector< ObjectGuid > GuidVector
@ PLAYER_FLAGS_NO_XP_GAIN
@ QUEST_STATUS_INCOMPLETE
uint32 urand(uint32 min, uint32 max)
bool roll_chance_i(int chance)
if(posix_memalign(&__mallocedMemory, __align, __size)) return NULL
#define RegisterCreatureAI(ai_name)
void GetCreatureListWithEntryInGrid(Container &container, WorldObject *source, uint32 entry, float maxSearchRange)
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
void AddGossipItemFor(Player *player, GossipOptionIcon icon, std::string const &text, uint32 sender, uint32 action)
void ClearGossipMenuFor(Player *player)
void InitGossipMenuFor(Player *player, uint32 menuId)
void CloseGossipMenuFor(Player *player)
@ EMOTE_ONESHOT_LAUGH_NO_SHEATHE
@ EMOTE_ONESHOT_EAT_NO_SHEATHE
@ CHAT_MSG_MONSTER_WHISPER
@ UNIT_NPC_FLAG_QUESTGIVER
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_UNINTERACTIBLE
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
WorldObject * GetOwner() const
bool Execute(uint64, uint32) override
CastFoodSpell(Unit *owner, uint32 spellId)
virtual void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
void setDeathState(DeathState s) override
CreatureTemplate const * GetCreatureTemplate() const
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void AddEvent(BasicEvent *event, Milliseconds e_time, bool set_addtime=true)
Milliseconds CalculateTime(Milliseconds t_offset) const
void DespawnOrUnsummon(Milliseconds delay=0ms, Seconds forceRespawnTime=0s)
void LaunchMoveSpline(std::function< void(Movement::MoveSplineInit &init)> &&initializer, uint32 id=0, MovementGeneratorPriority priority=MOTION_PRIORITY_NORMAL, MovementGeneratorType type=EFFECT_MOTION_TYPE)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
static Creature * ToCreature(Object *o)
void SetFlag(uint16 index, uint32 newFlag)
void RemoveFlag(uint16 index, uint32 oldFlag)
virtual void SetDynamicFlag(uint32 flag)
bool HasFlag(uint16 index, uint32 flag) const
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
bool GetQuestRewardStatus(uint32 quest_id) const
bool HasAchieved(uint32 achievementId) const
WorldSession * GetSession() const
void AreaExploredOrEventHappens(uint32 questId)
QuestStatus GetQuestStatus(uint32 quest_id) const
void FailQuest(uint32 quest_id)
PlayerMenu * PlayerTalkClass
uint32 GetQuestId() const
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
TaskContext & Repeat(std::chrono::duration< _Rep, _Period > const &duration)
TaskScheduler & CancelAll()
TaskScheduler & Schedule(std::chrono::duration< _Rep, _Period > const &time, task_handler_t const &task)
TaskScheduler & Update(success_t const &callback=EmptyCallback)
WorldObject * GetSummoner() const
void DoMeleeAttackIfReady()
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
int32 ModifyHealth(int32 val)
void SetFaction(uint32 faction) override
MotionMaster * GetMotionMaster()
void RemoveNpcFlag(NPCFlags flags)
void SetHealth(uint32 val)
TempSummon * ToTempSummon()
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
void SetEmoteState(Emote emote)
void SetNpcFlag(NPCFlags flags)
bool SetWalk(bool enable)
void EngageWithTarget(Unit *who)
bool HasNpcFlag(NPCFlags flags) const
virtual void SetDisplayId(uint32 modelId)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
bool IsEngagedBy(Unit const *who) const
void HandleEmoteCommand(Emote emoteId)
void SetFacingTo(float ori, bool force=true, uint32 movementId=EVENT_FACE)
uint32 CountPctFromMaxHealth(int32 pct) const
void SetStandState(UnitStandStateType state)
void SetUnitFlag(UnitFlags flags)
Vehicle * GetVehicleKit() const
void RemoveUnitFlag(UnitFlags flags)
GameObject * FindNearestGameObject(uint32 entry, float range, bool spawnedOnly=true) const
bool IsWithinLOS(float x, float y, float z, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool IsValidAttackTarget(WorldObject const *target, SpellInfo const *bySpell=nullptr) const
bool IsHostileTo(WorldObject const *target) 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)
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
void SendShowMailBox(ObjectGuid guid)
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
npc_argent_squire_gruntling()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
npc_midsummer_bunny_pole()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
npc_torch_tossing_target_bunny_controller()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
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 &
@ GOSSIP_OPTION_GNOMEREGAN_ORGRIMMAR_PENNANT
@ GOSSIP_OPTION_EXODAR_UNDERCITY_PENNANT
@ GOSSIP_OPTION_STORMWIND_THUNDERBLUFF_PENNANT
@ GOSSIP_OPTION_DARNASSUS_SENJIN_PENNANT
@ GOSSIP_OPTION_IRONFORGE_SILVERMOON_PENNANT
Position const HordeCoords[]
TournamentQuestsAchievements
@ ACHIEVEMENT_CHAMPION_UNDERCITY
@ QUEST_VALIANT_OF_UNDERCITY
@ ACHIEVEMENT_CHAMPION_THUNDER_BLUFF
@ QUEST_A_VALIANT_OF_STORMWIND
@ QUEST_A_VALIANT_OF_GNOMEREGAN
@ ACHIEVEMENT_CHAMPION_IRONFORGE
@ ACHIEVEMENT_CHAMPION_DARNASSUS
@ QUEST_VALIANT_OF_STORMWIND
@ QUEST_VALIANT_OF_GNOMEREGAN
@ ACHIEVEMENT_CHAMPION_SILVERMOON
@ QUEST_VALIANT_OF_DARNASSUS
@ ACHIEVEMENT_CHAMPION_GNOMEREGAN
@ QUEST_VALIANT_OF_ORGRIMMAR
@ QUEST_VALIANT_OF_THUNDER_BLUFF
@ QUEST_VALIANT_OF_IRONFORGE
@ QUEST_VALIANT_OF_SILVERMOON
@ QUEST_A_VALIANT_OF_SILVERMOON
@ QUEST_VALIANT_OF_SEN_JIN
@ ACHIEVEMENT_CHAMPION_HORDE
@ QUEST_VALIANT_OF_THE_EXODAR
@ ACHIEVEMENT_CHAMPION_STORMWIND
@ QUEST_A_VALIANT_OF_DARNASSUS
@ ACHIEVEMENT_CHAMPION_ALLIANCE
@ ACHIEVEMENT_ARGENT_VALOR
@ QUEST_A_VALIANT_OF_ORGRIMMAR
@ ACHIEVEMENT_CHAMPION_SEN_JIN
@ QUEST_A_VALIANT_OF_UNDERCITY
@ QUEST_A_VALIANT_OF_THUNDER_BLUFF
@ QUEST_A_VALIANT_OF_SEN_JIN
@ QUEST_A_VALIANT_OF_IRONFORGE
@ ACHIEVEMENT_CHAMPION_ORGRIMMAR
@ QUEST_A_VALIANT_OF_THE_EXODAR
@ ACHIEVEMENT_CHAMPION_THE_EXODAR
float constexpr RANGE_ALARMBOT
float constexpr RANGE_TRIPWIRE
ArgentPonyBannerSpells const bannerSpells[5]
@ NPC_DARNASSIAN_NIGHTSABER
@ NPC_SILVERMOON_HAWKSTRIDER
@ NPC_ARGENT_STEED_ASPIRANT
@ NPC_GNOMEREGAN_MECHANOSTRIDER
@ NPC_ARGENT_HAWKSTRIDER_ASPIRANT
@ SPELL_SILVERMOON_PENNANT
@ SPELL_UNDERCITY_PENNANT
@ SPELL_GNOMEREGAN_PENNANT
@ SPELL_IRONFORGE_PENNANT
@ SPELL_DARNASSUS_PENNANT
@ SPELL_ORGRIMMAR_PENNANT
@ SPELL_STORMWIND_PENNANT
@ SPELL_THUNDERBLUFF_PENNANT
ChairSpells const _chairSpells
AirForceSpawn constexpr airforceSpawns[]
@ EVENT_CAST_RED_FIRE_RING
@ SPELL_RIBBON_DANCE_COSMETIC
@ EVENT_CAST_BLUE_FIRE_RING
Emote const BrewfestRandomEmote[]
Position const AllianceCoords[]
@ SPELL_SPRING_RABBIT_WANDER
@ SPELL_SPRING_RABBIT_JUMP
@ SPELL_SPRING_RABBIT_IN_LOVE
@ SPELL_SUMMON_BABY_BUNNY
uint32 const AllianceSoldierId[3]
@ SPELL_PENNANT_EXODAR_ASPIRANT
@ SPELL_PENNANT_IRONFORGE_ASPIRANT
@ SPELL_PENNANT_GNOMEREGAN_ASPIRANT
@ SPELL_PENNANT_EBON_BLADE_CHAMPION
@ SPELL_PENNANT_IRONFORGE_CHAMPION
@ SPELL_PENNANT_ORGRIMMAR_CHAMPION
@ SPELL_PENNANT_THUNDER_BLUFF_CHAMPION
@ SPELL_PENNANT_ORGRIMMAR_VALIANT
@ SPELL_PENNANT_STORMWIND_CHAMPION
@ SPELL_PENNANT_THUNDER_BLUFF_VALIANT
@ SPELL_PENNANT_SEN_JIN_ASPIRANT
@ SPELL_PENNANT_ORGRIMMAR_ASPIRANT
@ SPELL_PENNANT_UNDERCITY_CHAMPION
@ SPELL_PENNANT_GNOMEREGAN_VALIANT
@ SPELL_PENNANT_GNOMEREGAN_CHAMPION
@ SPELL_PENNANT_EBON_BLADE_VALIANT
@ SPELL_PENNANT_IRONFORGE_VALIANT
@ SPELL_PENNANT_STORMWIND_VALIANT
@ SPELL_PENNANT_UNDERCITY_ASPIRANT
@ SPELL_PENNANT_UNDERCITY_VALIANT
@ SPELL_PENNANT_ARGENT_CRUSADE_VALIANT
@ SPELL_PENNANT_STORMWIND_ASPIRANT
@ SPELL_PENNANT_EXODAR_VALIANT
@ SPELL_PENNANT_ARGENT_CRUSADE_CHAMPION
@ SPELL_PENNANT_EBON_BLADE_ASPIRANT
@ SPELL_PENNANT_SILVERMOON_VALIANT
@ SPELL_PENNANT_SILVERMOON_CHAMPION
@ SPELL_PENNANT_SEN_JIN_VALIANT
@ SPELL_PENNANT_ARGENT_CRUSADE_ASPIRANT
@ SPELL_PENNANT_SEN_JIN_CHAMPION
@ SPELL_PENNANT_DARNASSUS_CHAMPION
@ SPELL_PENNANT_THUNDER_BLUFF_ASPIRANT
@ SPELL_PENNANT_DARNASSUS_VALIANT
@ SPELL_PENNANT_DARNASSUS_ASPIRANT
@ SPELL_PENNANT_EXODAR_CHAMPION
@ SPELL_PENNANT_SILVERMOON_ASPIRANT
void AddSC_npcs_special()
@ NPC_THE_SWEET_POTATO_CHAIR
@ SEAT_SWEET_POTATO_CHAIR
@ NPC_THE_CRANBERRY_CHAIR
@ SPELL_SWEET_POTATOES_SERVER
@ SPELL_TORCH_TARGET_PICKER
uint32 const HordeSoldierId[3]
std::unordered_map< uint32, uint32 > ChairSpells
@ STABLE_MASTER_GOSSIP_SUB_MENU
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
float GetPositionZ() const
float GetAbsoluteAngle(float x, float y) const
float GetPositionX() const
void GetPosition(float &x, float &y) const
float GetPositionY() const
void Relocate(float x, float y)
npc_air_force_botsAI(Creature *creature)
static AirForceSpawn const & FindSpawnFor(uint32 entry)
void UpdateAI(uint32) override
void MoveInLineOfSight(Unit *who) override
AirForceSpawn const & _spawn
std::unordered_set< ObjectGuid > _toAttack
Creature * GetOrSummonGuard()
void UpdateAI(uint32 diff) override
bool IsArgentSquire() const
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
npc_argent_squire_gruntlingAI(Creature *creature)
void PassengerBoarded(Unit *who, int8 seatId, bool) override
== Fields =======================================
npc_bountiful_tableAI(Creature *creature)
void ReceiveEmote(Player *player, uint32 emote) override
npc_brewfest_revelerAI(Creature *creature)
void ReceiveEmote(Player *player, uint32 emote) override
npc_brewfest_reveler_2(Creature *creature)
void UpdateAI(uint32 diff) override
npc_chicken_cluckAI(Creature *creature)
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
void OnQuestReward(Player *, Quest const *quest, uint32) override
void ReceiveEmote(Player *player, uint32 emote) override
void OnQuestAccept(Player *, Quest const *quest) override
void ReceiveEmote(Player *player, uint32 emote) override
npc_dancing_flames(Creature *creature)
void UpdateAI(uint32 diff) override
void BeginEvent(Player *player)
void PatientSaved(Creature *, Player *player, Position const *point)
uint32 SummonPatientCount
void PatientDied(Position const *point)
npc_doctorAI(Creature *creature)
std::vector< Position const * > Coordinates
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *) override
uint32 SummonPatientTimer
void OnQuestAccept(Player *player, Quest const *quest) override
bool OnGossipHello(Player *player) override
npc_experienceAI(Creature *creature)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
void UpdateAI(uint32 diff) override
npc_gen_void_zone(Creature *creature)
void JustAppeared() override
void InitializeAI() override
void JustEngagedWith(Unit *) override
void UpdateAI(uint32) override
npc_guardianAI(Creature *creature)
void IsSummonedBy(WorldObject *summoner) override
npc_imp_in_a_ballAI(Creature *creature)
void UpdateAI(uint32 diff) override
npc_injured_patientAI(Creature *creature)
void UpdateAI(uint32) override
void JustEngagedWith(Unit *) override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
void UpdateAI(uint32 diff) override
void DoAction(int32) override
npc_midsummer_bunny_poleAI(Creature *creature)
bool checkNearbyPlayers()
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
npc_pet_trainerAI(Creature *creature)
void JustEngagedWith(Unit *) override
npc_spring_rabbitAI(Creature *creature)
void DoAction(int32) override
void UpdateAI(uint32 diff) override
npc_stable_masterAI(Creature *creature)
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
npc_steam_tonkAI(Creature *creature)
void OnPossess(bool apply)
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
npc_torch_tossing_target_bunny_controllerAI(Creature *creature)
npc_tournament_mountAI(Creature *creature)
uint32 GetPennantSpellId(Player *player) const
void PassengerBoarded(Unit *passenger, int8, bool apply) override
== Fields =======================================
void UpdateAI(uint32 diff) override
GameObject * VerifyTarget() const
void MovementInform(uint32, uint32 id) override
npc_train_wreckerAI(Creature *creature)
void JustEnteredCombat(Unit *who) override
std::unordered_map< ObjectGuid, Milliseconds > _combatTimer
void DamageTaken(Unit *attacker, uint32 &damage, DamageEffectType damageType, SpellInfo const *) override
npc_training_dummy(Creature *creature)
void UpdateAI(uint32 diff) override
bool OnGossipHello(Player *player) override
npc_wormholeAI(Creature *creature)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
void InitializeAI() override