109 if (spawn.myEntry == entry)
111 ASSERT_NODEBUGINFO(
sObjectMgr->GetCreatureTemplate(spawn.otherEntry),
"Invalid creature entry %u in 'npc_air_force_bots' script", spawn.otherEntry);
115 ASSERT_NODEBUGINFO(
false,
"Unhandled creature with entry %u is assigned 'npc_air_force_bots' script", entry);
477 std::list<Player*> players;
482 return players.empty();
552 {-3757.38f, -4533.05f, 14.16f, 3.62f},
553 {-3754.36f, -4539.13f, 14.16f, 5.13f},
554 {-3749.54f, -4540.25f, 14.28f, 3.34f},
555 {-3742.10f, -4536.85f, 14.28f, 3.64f},
556 {-3755.89f, -4529.07f, 14.05f, 0.57f},
557 {-3749.51f, -4527.08f, 14.07f, 5.26f},
558 {-3746.37f, -4525.35f, 14.16f, 5.22f},
562#define A_RUNTOX -3742.96f
563#define A_RUNTOY -4531.52f
564#define A_RUNTOZ 11.91f
568 {-1013.75f, -3492.59f, 62.62f, 4.34f},
569 {-1017.72f, -3490.92f, 62.62f, 4.34f},
570 {-1015.77f, -3497.15f, 62.82f, 4.34f},
571 {-1019.51f, -3495.49f, 62.82f, 4.34f},
572 {-1017.25f, -3500.85f, 62.98f, 4.34f},
573 {-1020.95f, -3499.21f, 62.98f, 4.34f}
577#define H_RUNTOX -1016.44f
578#define H_RUNTOY -3508.48f
579#define H_RUNTOZ 62.96f
705 for (GuidList::const_iterator itr =
Patients.begin(); itr !=
Patients.end(); ++itr)
805 if (!player || !
me->
IsAlive() || spellInfo->
Id != 20804)
894 TC_LOG_ERROR(
"scripts",
"Invalid entry for Triage doctor. Please check your database");
898 std::vector<Position const*>::iterator point =
Coordinates.begin();
906 Patients.push_back(Patient->GetGUID());
959 switch (me->GetEntry())
1008 me->SetHealth(me->CountPctFromMaxHealth(70));
1018 if (me->IsInCombat())
1036 CasterGUID = player->GetGUID();
1045 player->TalkedToCreature(me->GetEntry(), me->GetGUID());
1052 if (
CanRun && !me->IsInCombat())
1054 if (RunAwayTimer <= diff)
1058 switch (me->GetEntry())
1069 LoadPath((me->GetEntry() << 3) | 2);
1075 RunAwayTimer = 30000;
1078 RunAwayTimer -= diff;
1120 if (!UpdateVictim())
1123 if (me->isAttackReady())
1126 me->resetAttackTimer();
1154 me->InitCharmInfo();
1155 me->GetCharmInfo()->InitEmptyActionBar(
false);
1274 _pennantSpellId = 0;
1285 _pennantSpellId = GetPennantSpellId(player);
1286 player->
CastSpell(
nullptr, _pennantSpellId,
true);
1297 switch (me->GetEntry())
1463 NPC_BREWFEST_REVELER = 24484,
1465 EVENT_FILL_LIST = 1,
1476 _events.ScheduleEvent(EVENT_FILL_LIST, 1s, 2s);
1493 _events.Update(diff);
1495 while (
uint32 eventId = _events.ExecuteEvent())
1499 case EVENT_FILL_LIST:
1501 std::list<Creature*> creatureList;
1503 for (
Creature* creature : creatureList)
1505 _revelerGuids.push_back(creature->GetGUID());
1507 _events.ScheduleEvent(EVENT_FACE_TO, 1s, 2s);
1513 if (!_revelerGuids.empty())
1515 me->SetFacingToObject(creature);
1525 _events.ScheduleEvent(EVENT_NEXT, 4s, 6s);
1530 _events.ScheduleEvent(EVENT_NEXT, 8s, 12s);
1540 _events.ScheduleEvent(EVENT_FACE_TO, 1s);
1561 _combatTimer[who->
GetGUID()] = 5s;
1568 if (!attacker || damageType ==
DOT)
1571 _combatTimer[attacker->
GetGUID()] = 5s;
1576 for (
auto itr = _combatTimer.begin(); itr != _combatTimer.end();)
1579 if (itr->second <= 0s)
1582 auto const& pveRefs = me->GetCombatManager().GetPvECombatRefs();
1583 auto it = pveRefs.find(itr->first);
1584 if (it != pveRefs.end())
1585 it->second->EndCombat();
1587 itr = _combatTimer.erase(itr);
1634 _showUnderground =
urand(0, 100) == 0;
1655 if (_showUnderground)
1746 jumpTimer =
urand(5000, 10000);
1747 bunnyTimer =
urand(10000, 20000);
1748 searchTimer =
urand(5000, 10000);
1777 if (jumpTimer <= diff)
1781 jumpTimer =
urand(5000, 10000);
1782 }
else jumpTimer -= diff;
1784 if (bunnyTimer <= diff)
1787 bunnyTimer =
urand(20000, 40000);
1788 }
else bunnyTimer -= diff;
1792 if (searchTimer <= diff)
1802 rabbit->AI()->DoAction(1);
1804 rabbitGUID = rabbit->GetGUID();
1806 searchTimer =
urand(5000, 10000);
1807 }
else searchTimer -= diff;
1830 summonerGUID.Clear();
1837 summonerGUID = summoner->
GetGUID();
1844 events.Update(diff);
1909 _isSearching =
false;
1910 _target = target->GetGUID();
1912 me->GetMotionMaster()->MovePoint(
MOVEID_CHASE, target->GetNearPosition(3.0f, target->GetAbsoluteAngle(me)));
1920 switch (_nextAction)
1924 me->GetMotionMaster()->MoveJump(*target, 5.0, 10.0,
MOVEID_JUMP);
1930 me->SetFacingTo(target->GetOrientation());
1961 me->DespawnOrUnsummon(5s);
2068 squireTired->SetDuration(ownerTired->GetDuration());
2082 switch (gossipListId)
2088 if (!me->HasAura(_bankAura))
2089 DoCastSelf(_bankAura);
2099 if (!me->HasAura(_shopAura))
2100 DoCastSelf(_shopAura);
2110 if (!me->HasAura(_mailAura))
2111 DoCastSelf(_mailAura);
2122 if (IsArgentSquire())
2123 DoCastSelf(
bannerSpells[gossipListId - 3].spellSquire,
true);
2125 DoCastSelf(
bannerSpells[gossipListId - 3].spellGruntling,
true);
2183 _owner->CastSpell(_owner, _spellId,
true);
2236 holders->InstallAllAccessories(
true);
2244 init.DisableTransportPathTransformations();
2245 init.MoveTo(x, y, z,
false);
2251 creature->SetDisplayFromModel(0);
2285 _scheduler.Update(diff);
T GetEntry(std::unordered_map< uint32, T > const &map, CriteriaTreeEntry const *tree)
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
@ QUEST_STATUS_INCOMPLETE
uint32 urand(uint32 min, uint32 max)
bool roll_chance_i(int chance)
#define RegisterCreatureAI(ai_name)
void GetCreatureListWithEntryInGrid(Container &container, WorldObject *source, uint32 entry, float maxSearchRange)
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)
@ EMOTE_ONESHOT_LAUGH_NO_SHEATHE
@ EMOTE_ONESHOT_EAT_NO_SHEATHE
@ CHAT_MSG_MONSTER_WHISPER
@ UNIT_NPC_FLAG_QUESTGIVER
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_PLAYER_CONTROLLED
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
bool Execute(uint64, uint32) override
CastFoodSpell(Unit *owner, uint32 spellId)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void setDeathState(DeathState s) override
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
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={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
bool GetQuestRewardStatus(uint32 quest_id) const
bool HasAchieved(uint32 achievementId) const
void AreaExploredOrEventHappens(uint32 questId)
QuestStatus GetQuestStatus(uint32 quest_id) const
void FailQuest(uint32 quest_id)
std::unique_ptr< PlayerMenu > PlayerTalkClass
uint32 GetQuestId() const
TaskContext & Repeat(std::chrono::duration< Rep, Period > duration)
TaskScheduler & CancelAll()
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
TaskScheduler & Update(success_t const &callback=nullptr)
WorldObject * GetSummoner() const
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
void SetHealth(uint64 val)
void SetUnitFlag3(UnitFlags3 flags)
int64 ModifyHealth(int64 val)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
void SetFaction(uint32 faction) override
MotionMaster * GetMotionMaster()
void RemoveNpcFlag(NPCFlags flags)
TempSummon * ToTempSummon()
void SetUninteractible(bool apply)
void SetEmoteState(Emote emote)
void SetNpcFlag(NPCFlags flags)
bool SetWalk(bool enable)
void EngageWithTarget(Unit *who)
bool HasNpcFlag(NPCFlags flags) const
uint64 CountPctFromMaxHealth(int32 pct) const
void SetFacingTo(float const ori, bool force=true)
bool IsEngagedBy(Unit const *who) const
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 SetUnitFlag(UnitFlags flags)
Vehicle * GetVehicleKit() const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
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
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
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_EXULTING_WIND_UP_TRAIN_WRECKER
@ 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
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
void UpdateAI(uint32 diff) override
constexpr float GetPositionX() const
constexpr float GetPositionY() const
float GetAbsoluteAngle(float x, float y) const
constexpr void GetPosition(float &x, float &y) const
constexpr void Relocate(float x, float y)
constexpr float GetPositionZ() const
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()
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 ReceiveEmote(Player *player, uint32 emote) override
void OnQuestAccept(Player *, Quest const *quest) override
void OnQuestReward(Player *, Quest const *quest, LootItemType, uint32) 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
npc_garments_of_questsAI(Creature *creature)
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) 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()
void JustEngagedWith(Unit *) override
npc_spring_rabbitAI(Creature *creature)
void DoAction(int32) override
void UpdateAI(uint32 diff) 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