45 { 1465.3872f, 3283.8604f, 137.69096f },
46 { 1431.401f, 3264.001f, 136.02579f },
47 { 1397.2067f, 3276.5618f, 133.84508f },
48 { 1441.566f, 3232.8013f, 135.01802f },
49 { 1403.632f, 3229.1094f, 132.14877f },
50 { 1347.1927f, 3286.5842f, 131.94803f },
51 { 1365.1865f, 3338.9502f, 128.57233f },
52 { 1349.6024f, 3315.0574f, 130.97443f },
53 { 1335.4618f, 3344.019f, 130.42047f },
54 { 1360.1198f, 3378.02f, 127.34183f },
55 { 1435.8524f, 3355.6423f, 173.77744f },
56 { 1432.7031f, 3385.1572f, 184.4187f },
57 { 1452.6094f, 3373.3315f, 187.0402f },
58 { 1426.7778f, 3364.7517f, 184.39569f },
59 { 1450.3646f, 3361.264f, 184.42484f },
113 float currentDist = 1000.0f;
117 if (dist >= currentDist)
120 currentPosition = pos;
332 std::list<Creature*> traineeList;
337 for (
Creature* trainee : traineeList)
338 trainee->HandleEmoteCommand(emote);
std::chrono::seconds Seconds
Seconds shorthand typedef.
#define RegisterCreatureAI(ai_name)
@ EMOTE_ONESHOT_MONKOFFENSE_ATTACKUNARMEDOFF
@ EMOTE_ONESHOT_MONKOFFENSE_PARRYUNARMED
@ EMOTE_ONESHOT_PALMSTRIKE
@ EMOTE_STATE_MONKOFFENSE_READYUNARMED
@ EMOTE_ONESHOT_MONKOFFENSE_SPECIALUNARMED
@ EMOTE_ONESHOT_MONKOFFENSE_ATTACKUNARMED
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool IsInEvadeMode() const
HuojinTraineePartnerSearch(Creature *partner)
bool operator()(Creature const *target)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
TaskContext & Schedule(std::chrono::duration< Rep, Period > time, TaskScheduler::task_handler_t task)
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)
TushuiTraineeSearch(Creature *leader, float maxDist)
bool operator()(Creature const *target) const
virtual void DoAction(int32)
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
void CombatStop(bool includingCast=false, bool mutualPvP=true, bool(*unitFilter)(Unit const *otherUnit)=nullptr)
MotionMaster * GetMotionMaster()
void SetEmoteState(Emote emote)
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
void SetUnitFlag(UnitFlags flags)
float GetDistance(WorldObject const *obj) const
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 &
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
float GetExactDist(float x, float y, float z) const
void JustEngagedWith(Unit *attacker) override
npc_huojin_trainee(Creature *creature)
void JustReachedHome() override
void JustAppeared() override
void BeginSparring(ObjectGuid guid)
void DoAction(int32 action) override
Creature * GetNewPartner() const
void BeginSparringDelayed(ObjectGuid partnerGuid)
npc_instructor_zhi(Creature *creature)
void JustAppeared() override
void UpdateAI(uint32 diff) override
Emote PlayRandomEmote() const
void EnterEvadeMode(EvadeReason why) override
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *) override
void MovementInform(uint32 type, uint32 id) override
void DamageTaken(Unit *attacker, uint32 &damage, DamageEffectType, SpellInfo const *) override
npc_tushui_huojin_trainee(Creature *creature)
void JustEngagedWith(Unit *attacker) override
npc_tushui_leading_trainee(Creature *creature)
void JustReachedHome() override
void ScheduleEmoteExecution()
void JustAppeared() override
Emote constexpr TraineeEmotes[5]
@ NPC_TUSHUI_TRAINEE_FEMALE
@ NPC_HUOJIN_TRAINEE_FEMALE
@ NPC_HUOJIN_TRAINEE_MALE
@ NPC_TUSHUI_TRAINEE_MALE
void HandleEmoteNearbyTushuiTrainees(Creature *leader, Emote emote)
void AddSC_zone_the_wandering_isle()
@ ACTION_PARTNER_ENTERED_COMBAT
Position const TraineeEndpoints[]