434 float dist =
frand(10.0f, 35.0f);
435 float angle =
frand(0.0f, 2.0f *
float(
M_PI));
491 float angle =
_angles[tickNumber - 1];
516 for (
int8 i = 0; i < 4; i++)
537 std::array<float, BANE_MAX_TOTAL_TICKS * 2>
_angles = { };
538 std::array<float, BANE_MAX_TOTAL_TICKS * 2>
_distances = { };
558 orbitInfo.
Radius = radius;
640 for (
uint8 i = 0; i < atNum; i++)
650 float travelSpeed =
frand(1.50f, 2.50f);
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ ENCOUNTER_FRAME_DISENGAGE
float frand(float min, float max)
bool roll_chance(T chance)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_SRC_AREA_ENEMY
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DUMMY
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectCalcPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
void AddSC_boss_ymiron_the_fallen_king()
constexpr Position YmironIntroJumpPos
@ SPELL_SCREAMS_OF_THE_DEAD
@ SPELL_SOUL_SIPHON_CHANNEL
@ SPELL_BANE_AT_NHC_HEROIC
@ SPELL_ARISE_FALLEN_ENABLER
@ SPELL_WINDS_OF_NORTHREND
@ SPELL_ARISE_FALLEN_SELECTOR
@ SPELL_ARISE_FALLEN_SUMMON
@ SPELL_DESPAWN_AREA_TRIGGERS
constexpr Position YmironRespawnPos
YmironFallenKingSpellVisuals
@ SPELL_VISUAL_BANE_PRECAST
@ SPELL_VISUAL_ARISE_FALLEN
@ SPELL_VISUAL_SOUL_SIPHON
@ SPELL_VISUAL_KIT_ARISE_FALLEN
@ EVENT_DARK_SLASH_CHECKER
@ EVENT_SCREAMS_OF_THE_DEAD
@ EVENT_WINDS_OF_NORTHREND
@ PATH_INTRO_AWAY_FROM_SLAVES
@ PATH_INTRO_TOWARDS_SLAVES
@ SAY_SCREAMS_OF_THE_DEAD
void InitOrbit(AreaTriggerOrbitInfo const &orbit, Optional< float > overrideSpeed={}, Optional< bool > speedIsTimeInSeconds={})
uint32 GetTickNumber() const
HookList< EffectCalcPeriodicHandler > DoEffectCalcPeriodic
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
ObjectGuid const & GetGUID() const
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
bool _EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void Repeat(Milliseconds time)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
Creature * GetCreature(uint32 type)
EncounterState GetBossState(uint32 id) const
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
bool IsMythicPlus() const
bool IsGameMaster() const
HookList< EffectHandler > OnEffectHit
int64 GetUnitTargetCountForEffect(SpellEffIndex effect) const
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
TaskContext & Schedule(TaskScheduler::duration_t time, TaskScheduler::task_handler_t task)
TaskContext & Repeat(TaskScheduler::duration_t duration)
TaskScheduler & CancelAll()
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & ClearValidator()
Clears the validator which is asked if tasks are allowed to be executed.
TaskScheduler & Update()
Update the scheduler to the current time.
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
virtual void DoAction(int32 param)
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
void SendPlaySpellVisual(Unit *target, uint32 spellVisualId, uint8 missReason, uint8 reflectStatus, float travelSpeed, bool speedAsTime=false, float launchDelay=0.0f)
void SetPower(Powers power, int32 val, bool withPowerUpdate=true)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
Powers GetPowerType() const
int32 GetPower(Powers power) const
bool HasUnitState(const uint32 f) const
void SendPlaySpellVisualKit(uint32 id, uint32 type, uint32 duration) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
std::vector< AreaTrigger * > GetAreaTriggers(uint32 spellId) const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void SendPlayOrphanSpellVisual(Position const &sourceLocation, ObjectGuid const &target, uint32 spellVisualId, float travelSpeed, bool speedAsTime=false, bool withSourceOrientation=false)
float GetDistance(WorldObject const *obj) const
Position GetFirstCollisionPosition(float dist, float angle)
static constexpr float BANE_VISUAL_TIME_OFFSET
bool Execute(uint64, uint32) override
static constexpr int8 BANE_VISUAL_NUM
YmironAriseFallenVisual(Unit *caster, Position dest)
static constexpr float BANE_VISUAL_TIME_BASE
static constexpr int8 BANE_VISUAL_NUM
int8 _remainingVisualsToSpawn
bool Execute(uint64, uint32) override
static constexpr float BANE_VISUAL_TIME_OFFSET
YmironBanePrecastVisual(Unit *caster, int8 remainingVisualsToSpawn)
static constexpr float BANE_VISUAL_TIME_BASE
YmironSoulSiphonVisual(ObjectGuid ymironGUID, Unit *runecarver, float travelSpeed)
bool Execute(uint64, uint32) override
std::queue< ObjectGuid > _baneATGUIDs
void HandleHit(SpellEffIndex)
static constexpr float SPAWN_DIST_TO_TARGET
void HandleHitTarget(SpellEffIndex)
void FilterTargets(std::list< WorldObject * > &targets)
void OnAfterRemove(AuraEffect const *, AuraEffectHandleModes)
static constexpr float BANE_MISSILE_ANGLE_OFFSET
void CalcPeriodic(AuraEffect const *, bool &, int32 &litude)
void SpawnBaneOrb(int8 tickNumber)
static constexpr std::size_t BANE_MAX_TOTAL_TICKS
static constexpr float BANE_MISSILE_DIST_BASE
std::array< float, BANE_MAX_TOTAL_TICKS *2 > _distances
std::array< float, BANE_MAX_TOTAL_TICKS *2 > _angles
void OnAfterApply(AuraEffect const *, AuraEffectHandleModes)
void OnPeriodic(AuraEffect const *aurEff)
static constexpr float BANE_MISSILE_DIST_OFFSET
void OnPrecast() override
void OnPeriodic(AuraEffect const *aurEff)
void OnAfterApply(AuraEffect const *, AuraEffectHandleModes)
void OnAfterRemove(AuraEffect const *, AuraEffectHandleModes)
void OnPeriodic(AuraEffect const *)
#define RegisterMawOfSoulsCreatureAI(ai_name)
TC_GAME_API AreaTrigger * GetAreaTrigger(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
void RandomShuffle(Iterator begin, Iterator end)
Reorder the elements of the iterator range randomly.
int32 ExtraTimeForBlending
Optional< ObjectGuid > PathTarget
constexpr float GetPositionX() const
constexpr float GetPositionY() const
static float NormalizeOrientation(float o)
float GetExactDist(float x, float y, float z) const
constexpr void GetPosition(float &x, float &y) const
constexpr void Relocate(float x, float y)
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
bool IsHeroicOrHigher() const
void OnUnitEnter(Unit *unit) override
at_ymiron_the_fallen_king_activation(AreaTrigger *areatrigger)
void OnInitialize() override
at_ymiron_the_fallen_king_bane(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
void InitializeAI() override
void EnterEvadeMode(EvadeReason) override
void JustEngagedWith(Unit *who) override
void JustAppeared() override
void UpdateAI(uint32 diff) override
void MovementInform(uint32 type, uint32 pointId) override
void DoAction(int32 param) override
void WaypointPathEnded(uint32, uint32 pathId) override
void JustDied(Unit *) override
void OnChannelFinished(SpellInfo const *spell) override
boss_ymiron_the_fallen_king(Creature *creature)
npc_ymiron_the_fallen_king_risen_warrior(Creature *creature)
void JustAppeared() override
void UpdateAI(uint32 diff) override