128 { 458.5323f, -516.2537f, 104.617f },
129 { 429.4242f, -517.5624f, 104.8936f },
130 { 394.4955f, -514.6144f, 104.7235f },
131 { 362.2862f, -515.8771f, 104.7539f },
132 { 333.5374f, -514.7942f, 104.4779f },
133 { 457.6105f, -508.8362f, 104.4013f },
134 { 427.4026f, -510.7716f, 104.8802f },
135 { 392.5114f, -507.9429f, 104.7433f },
136 { 362.9511f, -508.4115f, 104.7218f },
137 { 333.536f, -506.0805f, 104.4258f },
138 { 478.31f, -511.049f, 104.7242f, 3.263766f },
139 { 482.25f, -514.1273f, 104.7234f, 3.263766f },
140 { 481.3883f, -507.1089f, 104.7241f, 3.263766f },
251 combatTrigger->AI()->DoZoneInCombat();
277 poisonedSpear.Repeat();
333 skadi->ExitVehicle();
349 init.DisableTransportPathTransformations();
350 init.MoveTo(0.3320355f, 0.05355075f, 5.196949f,
false);
468 skadi->AI()->JustSummoned(
me);
681 if (targets.size() >= 2)
742 for (
uint8 i = 0; i < 2; ++i)
752 for (
uint8 j = 0; j < 2; ++j)
First const & RAND(First const &first, Second const &second, Rest const &... rest)
std::chrono::seconds Seconds
Seconds shorthand typedef.
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ MOTION_PRIORITY_HIGHEST
@ SPLINE_CHAIN_MOTION_TYPE
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_SRC_AREA_ENTRY
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ SPELL_EFFECT_APPLY_AURA
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_CONTROL_VEHICLE
@ SPELL_AURA_PERIODIC_DUMMY
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraCheckAreaTargetFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ FIRST_WAVE_MAX_WARRIORS
@ ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI
Position const SecondaryWavesInitialPoint
Position const SecondaryWavesFinalPoint
float const BreathPointRight
@ SPELL_FREEZING_CLOUD_LEFT_PERIODIC
@ SPELL_SUMMON_YMIRJAR_WARRIOR_E
@ SPELL_SUMMON_YMIRJAR_WARRIOR_W
@ SPELL_SUMMON_YMIRJAR_HARPOONER_W
@ SPELL_SUMMON_YMIRJAR_HARPOONER_E
@ SPELL_SUMMON_YMIRJAR_WITCH_DOCTOR_E
@ SPELL_FREEZING_CLOUD_RIGHT_AREA
@ SPELL_POISONED_SPEAR_PERIODIC
@ SPELL_FREEZING_CLOUD_RIGHT_PERIODIC
@ SPELL_SUMMON_GAUNLET_MOBS_PERIODIC
@ SPELL_FREEZING_CLOUD_LEFT_AREA
@ SPELL_SUMMON_YMIRJAR_WITCH_DOCTOR_W
@ SPELL_UTGARDE_PINNACLE_GUANTLET_RESET_CHECK
@ SPELL_UTGARDE_PINNACLE_GAUNTLET_EFFECT
Position const FirstWaveLocations[FIRST_WAVE_SIZE]
@ SPLINE_CHAIN_BREACH_RIGHT
@ SPLINE_CHAIN_BREACH_LEFT
float const BreathPointLeft
void PreventDefaultAction()
HookList< EffectPeriodicHandler > OnEffectPeriodic
WorldObject * GetOwner() const
HookList< CheckAreaTargetHandler > DoCheckAreaTarget
HookList< EffectApplyHandler > OnEffectRemove
InstanceScript *const instance
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
virtual void JustEngagedWith(Unit *)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetImmuneToPC(bool apply) override
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetRegenerateHealth(bool value)
virtual bool SetBossState(uint32 id, EncounterState state)
Creature * GetCreature(uint32 type)
EncounterState GetBossState(uint32 id) const
void TriggerGameEvent(uint32 gameEventId, WorldObject *source=nullptr, WorldObject *target=nullptr) override
void LaunchMoveSpline(std::function< void(Movement::MoveSplineInit &init)> &&initializer, uint32 id=0, MovementGeneratorPriority priority=MOTION_PRIORITY_NORMAL, MovementGeneratorType type=EFFECT_MOTION_TYPE)
void MoveAlongSplineChain(uint32 pointId, uint16 dbChainId, bool walk)
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)
bool IsGameMaster() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Creature * GetHitCreature() const
HookList< HitHandler > OnHit
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
void SetHitDamage(int32 damage)
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void DespawnEntry(uint32 entry)
void Summon(Creature const *summon)
TaskContext & Repeat(std::chrono::duration< Rep, Period > duration)
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
TaskScheduler & Update(success_t const &callback=nullptr)
TaskScheduler & SetValidator(P &&predicate)
Sets a validator which is asked if tasks are allowed to be executed.
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
SpellCastResult DoCast(uint32 spellId)
void SetControlled(bool apply, UnitState state)
MotionMaster * GetMotionMaster()
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void SetUninteractible(bool apply)
void SetEmoteState(Emote emote)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool SetCanFly(bool enable)
void SetSpeedRate(UnitMoveType mtype, float rate)
void SetFacingTo(float const ori, bool force=true)
bool HasUnitState(const uint32 f) const
Vehicle * GetVehicleKit() const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Vehicle * RemovePassenger(WorldObject *passenger) override
Removes the passenger from the vehicle.
InstanceScript * GetInstanceScript() const
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)
void setActive(bool isActiveObject)
void SetFarVisible(bool on)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
virtual void DoAction(uint32 actionId, WorldObject *source=nullptr, WorldObject *target=nullptr)
bool OnCheck(Player *, Unit *target) override
achievement_girl_love_to_skadi()
bool OnTrigger(Player *player, AreaTriggerEntry const *) override
void FilterTargets(std::list< WorldObject * > &targets)
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets)
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool CanBeAppliedOn(Unit *target)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
void CountTargets(std::list< WorldObject * > &targets)
void HandleDummy(SpellEffIndex)
void OnRemoveVehicle(AuraEffect const *, AuraEffectHandleModes)
std::deque< uint32 > SummonSpellsList
void CastTheNextTwoSpells()
void PushBackTheNextTwoSpells()
void OnPeriodic(AuraEffect const *)
constexpr float GetPositionY() const
void UpdateAI(uint32 diff) override
void EnterEvadeMode(EvadeReason) override
uint32 GetData(uint32 id) const override
void JustDied(Unit *) override
void KilledUnit(Unit *who) override
boss_skadi(Creature *creature)
void JustSummoned(Creature *summon) override
void DoAction(int32 action) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void PassengerBoarded(Unit *who, int8, bool apply) override
== Fields =======================================
void JustDied(Unit *) override
void MovementInform(uint32 type, uint32 pointId) override
InstanceScript * _instance
npc_grauf(Creature *creature)
void UpdateAI(uint32 diff) override
npc_skadi_trashAI(Creature *creature)
void IsSummonedBy(WorldObject *) override
void MovementInform(uint32 type, uint32 pointId) override
void JustEngagedWith(Unit *who) override
virtual void ScheduleTasks()=0
void UpdateAI(uint32 diff) override
InstanceScript * _instance
void ScheduleTasks() override
void JustDied(Unit *) override
npc_ymirjar_harpooner(Creature *creature)
npc_ymirjar_warrior(Creature *creature)
void ScheduleTasks() override
npc_ymirjar_witch_doctor(Creature *creature)
void ScheduleTasks() override
#define RegisterUtgardePinnacleCreatureAI(ai_name)
@ DATA_SKADI_THE_RUTHLESS
@ NPC_YMIRJAR_WITCH_DOCTOR