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)
330 for (
uint8 itr = 0; itr < 4; ++itr)
334 if (crusader->IsAlive() && crusader->GetEntry() == crusader->GetCreatureData()->id)
336 crusader->m_Events.AddEvent(
new CaptainSurviveTalk(crusader), crusader->m_Events.CalculateTime(delay));
448 switch (spellInfo->
Id)
460 summon->SetInteractionAllowedWhileHostile(
true);
566 for (
uint32 itr = 0; itr < 4; ++itr)
643 float minY = 2600.0f;
644 float maxY = 2650.0f;
653 else if (waypointId == 4)
660 std::list<Creature*> temp;
666 for (
auto itr = temp.begin(); itr != temp.end(); ++itr)
667 if ((*itr)->GetHomePosition().GetPositionY() < maxY && (*itr)->GetHomePosition().GetPositionY() > minY)
963 if (!targets.empty())
1405 return unit->IsAlive();
1449 target->DespawnOrUnsummon(1ms);
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::set< ObjectGuid > GuidSet
#define RegisterSpellScript(spell_script)
#define RegisterSpellScriptWithArgs(spell_script, script_name,...)
@ TARGET_UNIT_DEST_AREA_ENTRY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
@ VEHICLE_SPELL_RIDE_HARDCODED
@ 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
#define SPELL_ROCKET_LAUNCH
@ ACTION_RESURRECT_CAPTAINS
void AddSC_boss_sister_svalna()
#define SPELL_FEL_IRON_BOMB
static constexpr uint32 PATH_ESCORT_CROK_SCOURGEBANE
ICCSisterSvalnaMovePoints
@ 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
ICCSisterSvalnaTimedEventIds
@ 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
#define SPELL_POWER_WORD_SHIELD
#define SPELL_MACHINE_GUN
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
bool Execute(uint64, uint32) override
CaptainSurviveTalk(Creature const *owner)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
bool _EnterEvadeMode(EvadeReason why=EvadeReason::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(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
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 MoveLand(uint32 id, Position const &pos, Optional< int32 > tierTransitionId={}, Optional< float > velocity={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default)
void MoveFollow(Unit *target, float dist, ChaseAngle angle, Optional< Milliseconds > duration={}, MovementSlot slot=MOTION_SLOT_ACTIVE)
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)
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)
Vehicle * GetVehicle() const
int64 ModifyHealth(int64 val)
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 SetDisableGravity(bool disable, bool updateAnimTier=true)
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
uint64 CountPctFromMaxHealth(int32 pct) const
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
static void Kill(Unit *attacker, Unit *victim, bool durabilityLoss=true, bool skipSettingDeathState=false)
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, bool incOwnRadius=true, bool incTargetRadius=true) const
at_icc_start_frostwing_gauntlet()
bool OnTrigger(Player *player, AreaTriggerEntry const *) override
void HandleScript(SpellEffIndex effIndex)
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)
constexpr float GetPositionY() const
float GetAbsoluteAngle(float x, float y) const
constexpr float GetOrientation() 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