229 { -6247.328f, 299.5365f, 390.266f },
230 { -6247.328f, 299.5365f, 390.266f },
231 { -6250.934f, 283.5417f, 393.46f },
232 { -6253.335f, 252.7066f, 403.0702f },
233 { -6257.292f, 217.4167f, 424.3807f },
234 { -6224.2f, 159.9861f, 447.0882f },
235 { -6133.597f, 164.3177f, 491.0316f },
236 { -6084.236f, 183.375f, 508.5401f },
237 { -6020.382f, 179.5052f, 521.5396f },
238 { -5973.592f, 161.7396f, 521.5396f },
239 { -5953.665f, 151.6111f, 514.5687f },
240 { -5911.031f, 146.4462f, 482.1806f },
241 { -5886.389f, 124.125f, 445.6252f },
242 { -5852.08f, 55.80903f, 406.7922f },
243 { -5880.707f, 12.59028f, 406.7922f },
244 { -5927.887f, -74.02257f, 406.7922f },
245 { -5988.436f, -152.0174f, 425.6251f },
246 { -6015.274f, -279.467f, 449.528f },
247 { -5936.465f, -454.1875f, 449.528f },
248 { -5862.575f, -468.0504f, 444.3899f },
249 { -5783.58f, -458.6042f, 432.5026f },
250 { -5652.707f, -463.4427f, 415.0308f },
251 { -5603.897f, -466.3438f, 409.8931f },
252 { -5566.957f, -472.5642f, 399.0056f }
347 milo->DespawnOrUnsummon();
443 target->SetRegenerateHealth(
false);
444 target->SetHealth(target->CountPctFromMaxHealth(10));
462 { -6237.6807f, 375.5191f, 385.44696f, 5.168368339538574218f },
463 { -6299.6113f, 347.11978f, 377.25546f, 6.068230628967285156f },
464 { -6208.724f, 354.3229f, 387.3534f, 4.338659286499023437f },
465 { -6261.8228f, 371.06598f, 383.35944f, 5.383506298065185546f },
466 { -6253.722f, 340.1389f, 382.50888f, 5.957066535949707031f },
467 { -6286.6113f, 316.9566f, 376.9441f, 6.195390701293945312f },
468 { -6204.599f, 304.64932f, 388.9596f, 2.362043619155883789f }
489 _invadersToShoot.push(guid);
499 if (me->HasInArc(float(M_PI), invader) && !me->IsInCombat())
500 EnqueueInvader(invader, 1s, 3s);
502 EnqueueInvader(invader, 5s, 8s);
503 invader->AI()->AttackStart(me);
512 ObjectGuid guid = _invadersToShoot.front();
513 _invadersToShoot.pop();
515 Creature* invader = ObjectAccessor::GetCreature(*me, guid);
516 if (invader && invader->IsAlive())
518 SpellCastResult result = DoCast(invader, SPELL_SHOOT);
519 if (result == SpellCastResult::SPELL_CAST_OK)
521 if (roll_chance_i(50))
522 Talk(SAY_SHOOT_ROCKJAW, invader);
525 _invadersToShoot.push(guid);
534 _scheduler.Update(diff);
std::chrono::seconds Seconds
Seconds shorthand typedef.
@ TEMPSUMMON_CORPSE_DESPAWN
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
uint32 urand(uint32 min, uint32 max)
#define RegisterCreatureAI(ai_name)
@ SPELL_EFFECT_FORCE_CAST
@ SPELL_EFFECT_APPLY_AURA
#define SpellEffectFn(F, I, N)
@ UNIT_FLAG_IMMUNE_TO_NPC
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void MoveSmoothPath(uint32 pointId, Position const *pathPoints, size_t pathSize, bool walk=false, bool fly=false)
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)
Creature * GetHitCreature() const
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
TaskContext & Repeat(std::chrono::duration< Rep, Period > duration)
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
void SetHealth(uint64 val)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
uint64 CountPctFromMaxHealth(int32 pct) const
bool HasUnitState(const uint32 f) const
void SetUnitFlag(UnitFlags flags)
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)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
npc_wounded_coldridge_mountaineer()
CreatureAI * GetAI(Creature *creature) const override
void HandleForceCast(SpellEffIndex effIndex)
SpellScript * GetSpellScript() const override
spell_a_trip_to_ironforge_quest_complete()
void HandleForceCast(SpellEffIndex effIndex)
SpellScript * GetSpellScript() const override
spell_follow_that_gyrocopter_quest_start()
void HandleDummyEffect(SpellEffIndex)
SpellScript * GetSpellScript() const override
TC_GAME_API Unit * GetUnit(WorldObject 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
npc_joren_ironstock(Creature *creature)
std::queue< ObjectGuid > _invadersToShoot
void EnqueueInvader(Unit *invader, Seconds minTime=1s, Seconds maxTime=9s)
void JustAppeared() override
void UpdateAI(uint32 diff) override
void UpdateAI(uint32 diff) override
npc_milos_gyro_AI(Creature *creature)
void PassengerBoarded(Unit *passenger, int8, bool apply) override
== Fields =======================================
void MovementInform(uint32 type, uint32 pointId) override
void SpellHit(WorldObject *caster, SpellInfo const *spell) override
npc_wounded_coldridge_mountaineerAI(Creature *creature)
void UpdateAI(uint32 diff) override
void SpellHit(WorldObject *caster, SpellInfo const *spell) override
npc_wounded_militaAI(Creature *creature)
void UpdateAI(uint32 diff) override
@ SPELL_RIDE_VEHICLE_HARD_CODED
@ SPELL_EJECT_ALL_PASSENGERS
WoundedColdridgeMountaineer
@ SPELL_HEAL_WOUNDED_MOUNTAINEER
Position const RockjawInvaderSpawnPoints[7]
Position const kharanosPath[]
void AddSC_dun_morogh_area_coldridge_valley()