206#define SPELL_FLASH_HEAL (IsUndead ? SPELL_FLASH_HEAL_UNDEAD : SPELL_FLASH_HEAL_NORMAL)
207#define SPELL_POWER_WORD_SHIELD (IsUndead ? SPELL_POWER_WORD_SHIELD_UNDEAD : SPELL_POWER_WORD_SHIELD_NORMAL)
208#define SPELL_SMITE (IsUndead ? SPELL_SMITE_UNDEAD : SPELL_SMITE_NORMAL)
211#define SPELL_FEL_IRON_BOMB (IsUndead ? SPELL_FEL_IRON_BOMB_UNDEAD : SPELL_FEL_IRON_BOMB_NORMAL)
212#define SPELL_MACHINE_GUN (IsUndead ? SPELL_MACHINE_GUN_UNDEAD : SPELL_MACHINE_GUN_NORMAL)
213#define SPELL_ROCKET_LAUNCH (IsUndead ? SPELL_ROCKET_LAUNCH_UNDEAD : SPELL_ROCKET_LAUNCH_NORMAL)
331 for (
uint8 itr = 0; itr < 4; ++itr)
335 if (crusader->IsAlive() && crusader->GetEntry() == crusader->GetCreatureData()->id)
337 crusader->m_Events.AddEvent(
new CaptainSurviveTalk(crusader), crusader->m_Events.CalculateTime(delay));
449 switch (spellInfo->
Id)
570 for (
uint32 itr = 0; itr < 4; ++itr)
647 float minY = 2600.0f;
648 float maxY = 2650.0f;
657 else if (waypointId == 4)
664 std::list<Creature*> temp;
670 for (
auto itr = temp.begin(); itr != temp.end(); ++itr)
671 if ((*itr)->GetHomePosition().GetPositionY() < maxY && (*itr)->GetHomePosition().GetPositionY() > minY)
970 if (!targets.empty())
1431 return unit->IsAlive();
1479 target->DespawnOrUnsummon(1ms);
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::set< ObjectGuid > GuidSet
#define RegisterSpellScript(spell_script)
#define RegisterSpellScriptWithArgs(spell_script, script_name,...)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ TARGET_UNIT_DEST_AREA_ENTRY
@ TRIGGERED_FULL_MASK
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
@ UNIT_FLAG2_ALLOW_ENEMY_INTERACT
@ VEHICLE_SPELL_RIDE_HARDCODED
#define SPELL_ROCKET_LAUNCH
void AddSC_boss_sister_svalna()
#define SPELL_FEL_IRON_BOMB
static constexpr uint32 PATH_ESCORT_CROK_SCOURGEBANE
@ SAY_SVALNA_CAPTAIN_DEATH
@ SAY_CROK_WEAKENING_SVALNA
@ SAY_CROK_WEAKENING_GAUNTLET
@ SAY_CAPTAIN_SECOND_DEATH
@ SAY_SVALNA_KILL_CAPTAIN
@ SAY_SVALNA_RESURRECT_CAPTAINS
@ SAY_CAPTAIN_SURVIVE_TALK
@ SAY_CAPTAIN_RESURRECTED
@ EMOTE_SVALNA_BROKEN_SHIELD
@ SPELL_ROCKET_LAUNCH_NORMAL
@ SPELL_FEL_IRON_BOMB_NORMAL
@ SPELL_JUDGEMENT_OF_COMMAND
@ SPELL_FLASH_HEAL_NORMAL
@ SPELL_AWAKEN_YMIRJAR_FALLEN
@ SPELL_IMPALING_SPEAR_KILL
@ SPELL_YMIRJAR_SHADOW_BOLT
@ SPELL_POWER_WORD_SHIELD_NORMAL
@ SPELL_FLASH_HEAL_UNDEAD
@ SPELL_POWER_WORD_SHIELD_UNDEAD
@ SPELL_HAMMER_OF_BETRAYAL
@ SPELL_FROZEN_ORB_MISSILE
@ SPELL_FEL_IRON_BOMB_UNDEAD
@ SPELL_ROCKET_LAUNCH_UNDEAD
@ SPELL_WARLORDS_PRESENCE
@ SPELL_MACHINE_GUN_NORMAL
@ SPELL_MACHINE_GUN_UNDEAD
#define SPELL_POWER_WORD_SHIELD
@ EVENT_RUPERT_FEL_IRON_BOMB
@ EVENT_BRANDON_CRUSADER_STRIKE
@ EVENT_GRONDEL_MORTAL_STRIKE
@ EVENT_ARNATH_DOMINATE_MIND
@ EVENT_YMIRJAR_BARBARIC_STRIKE
@ EVENT_GRONDEL_SUNDER_ARMOR
@ EVENT_YMIRJAR_TWISTED_WINDS
@ EVENT_YMIRJAR_DEATH_EMBRACE
@ EVENT_RUPERT_ROCKET_LAUNCH
@ EVENT_BRANDON_JUDGEMENT_OF_COMMAND
@ EVENT_YMIRJAR_WHIRLWIND
@ EVENT_BRANDON_HAMMER_OF_BETRAYAL
@ EVENT_GRONDEL_CONFLAGRATION
@ EVENT_YMIRJAR_SPIRIT_STREAM
@ EVENT_YMIRJAR_ADRENALINE_RUSH
@ EVENT_RUPERT_MACHINE_GUN
@ EVENT_YMIRJAR_RAPID_SHOT
@ EVENT_BRANDON_DIVINE_SHIELD
@ EVENT_YMIRJAR_FROZEN_ORB
@ EVENT_YMIRJAR_SHADOW_BOLT
@ EVENT_ARNATH_FLASH_HEAL
@ EVENT_GRONDEL_CHARGE_CHECK
@ ACTION_RESURRECT_CAPTAINS
#define SPELL_MACHINE_GUN
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
bool Execute(uint64, uint32) override
CaptainSurviveTalk(Creature const *owner)
bool _EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
void DoZoneInCombat(Creature *creature=nullptr)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
virtual void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
void SetHomePosition(float x, float y, float z, float o)
void setDeathState(DeathState s) override
uint32 GetOriginalEntry() const
bool IsEngaged() const override
void SetReactState(ReactStates st)
void SetRespawnDelay(uint32 delay)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool UpdateEntry(uint32 entry, CreatureData const *data=nullptr, bool updateLevel=true)
CreatureData const * GetCreatureData() const
uint32 GetRespawnDelay() const
void SetImmuneToNPC(bool apply) override
uint32 GetCorpseDelay() const
void SetImmuneToAll(bool apply) override
void SetCorpseDelay(uint32 delay, bool ignoreCorpseDecayRatio=false)
void Repeat(Milliseconds time)
void DelayEvents(Milliseconds delay)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void operator()(Creature *creature)
FrostwingVrykulSearcher(Creature const *source, float range)
bool operator()(Unit *unit)
bool operator()(WorldObject *object) const
virtual ObjectGuid GetGuidData(uint32 type) const override
EncounterState GetBossState(uint32 id) const
void LoadGrid(float x, float y)
MovementGeneratorType GetCurrentMovementGeneratorType() const
void MoveFollow(Unit *target, float dist, ChaseAngle angle, MovementSlot slot=MOTION_SLOT_ACTIVE)
void MoveLand(uint32 id, Position const &pos, Optional< float > velocity={})
static Creature * ToCreature(Object *o)
static Unit * ToUnit(Object *o)
Creature * GetHitCreature() const
HookList< EffectHandler > OnEffectHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void Despawn(Creature const *summon)
void Summon(Creature const *summon)
virtual void DoAction(int32)
void DoMeleeAttackIfReady()
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 DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
int32 ModifyHealth(int32 val)
Vehicle * GetVehicle() const
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Unit * GetVehicleBase() const
MotionMaster * GetMotionMaster()
bool SetHover(bool enable, bool updateAnimTier=true)
Aura * AddAura(uint32 spellId, Unit *target)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
bool HasUnitState(const uint32 f) const
uint32 CountPctFromMaxHealth(int32 pct) const
static void Kill(Unit *attacker, Unit *victim, bool durabilityLoss=true)
InstanceScript * GetInstanceScript() 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)
void setActive(bool isActiveObject)
Position GetNearPosition(float dist, float angle)
float GetDistance2d(WorldObject const *obj) const
void SetFarVisible(bool on)
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true) const
at_icc_start_frostwing_gauntlet()
bool OnTrigger(Player *player, AreaTriggerEntry const *) override
void HandleScript(SpellEffIndex effIndex)
PrepareSpellScript(spell_svalna_remove_spear)
PrepareSpellScript(spell_svalna_revive_champion)
void RemoveAliveTarget(std::list< WorldObject * > &targets)
#define RegisterIcecrownCitadelCreatureAI(ai_name)
@ NPC_CAPTAIN_GRONDEL_UNDEAD
@ NPC_YMIRJAR_BATTLE_MAIDEN
@ NPC_CAPTAIN_BRANDON_UNDEAD
@ NPC_CAPTAIN_ARNATH_UNDEAD
@ NPC_CAPTAIN_RUPERT_UNDEAD
@ NPC_YMIRJAR_FROSTBINDER
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 &
void RandomResize(C &container, std::size_t requestedSize)
@ NPC_YMIRJAR_DEATHBRINGER
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
void Start(bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false)
void SetDespawnAtFar(bool despawn)
void SetDespawnAtEnd(bool despawn)
void LoadPath(uint32 pathId)
void SetEscortPaused(bool on)
float GetOrientation() const
float GetAbsoluteAngle(float x, float y) const
float GetPositionY() const
bool HealthAbovePct(uint32 pct) const
bool HealthBelowPct(uint32 pct) const
std::list< Creature * > DoFindFriendlyMissingBuff(float range, uint32 spellId)
void UpdateAI(uint32 diff) override
void InitializeAI() override
void DoAction(int32 action) override
boss_sister_svalna(Creature *creature)
void KilledUnit(Unit *victim) override
void JustDied(Unit *) override
void JustEngagedWith(Unit *who) override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
void MovementInform(uint32 type, uint32 id) override
void JustReachedHome() override
void SpellHitTarget(WorldObject *target, SpellInfo const *spellInfo) override
InstanceScript * instance
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void JustEngagedWith(Unit *) override
npc_argent_captainAI(Creature *creature)
bool CanAIAttack(Unit const *target) const override
void DoAction(int32 action) override
void JustDied(Unit *) override
void KilledUnit(Unit *victim) override
void EnterEvadeMode(EvadeReason why) override
Creature * FindFriendlyCreature() const
void UpdateAI(uint32 diff) override
npc_captain_arnath(Creature *creature)
npc_captain_brandon(Creature *creature)
void UpdateAI(uint32 diff) override
npc_captain_grondel(Creature *creature)
void UpdateAI(uint32 diff) override
npc_captain_rupert(Creature *creature)
void UpdateAI(uint32 diff) override
void DoAction(int32 action) override
void WaypointReached(uint32 waypointId, uint32) override
bool CanAIAttack(Unit const *target) const override
InstanceScript * _instance
uint32 const _respawnTime
void SetGUID(ObjectGuid const &guid, int32 id) override
uint32 const _corpseDelay
void UpdateEscortAI(uint32 diff) override
void WaypointStarted(uint32 waypointId, uint32) override
== Waypoints system =============================
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
npc_crok_scourgebane(Creature *creature)
bool _didUnderTenPercentText
void JustDied(Unit *) override
void UpdateAI(uint32 diff) override
void SummonedCreatureDespawn(Creature *summon) override
void JustSummoned(Creature *summon) override
void JustEngagedWith(Unit *who) override
npc_frostwing_ymirjar_vrykul(Creature *creature)
npc_impaling_spear(Creature *creature)
void UpdateAI(uint32 diff) override
uint32 _vehicleCheckTimer