97 { -11.276042f, -19.234375f, 361.8286f, 2.490876f },
98 { -11.395833f, 19.628473f, 361.8286f, 3.805543f },
99 { -25.248264f, 34.609375f, 361.8286f, 4.397980f },
100 { -20.77257f, -34.930557f, 361.82837f, 1.994346f }
327 me->GetMotionMaster()->MovePoint(POINT_EDNA, summoner->GetPosition());
328 summoner->CastSpell(me, SPELL_REFRACTING_BEAM_INTRO, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
373 .TriggeringAura = aurEff
414 .TriggeringAura = aurEff
479 if (targets.size() > maxTargets)
480 targets.resize(maxTargets);
498 static constexpr uint8 MAX_TARGETS = 1;
500 if (targets.size() <= MAX_TARGETS)
508 if (closestTargetItr == targets.end())
513 targets.push_back(closestTarget);
533 std::list<Creature*> volatileSpikes;
536 for (
Creature* spike : volatileSpikes)
576 casterCreature->DespawnOrUnsummon();
@ ENCOUNTER_FRAME_DISENGAGE
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
void GetCreatureListWithEntryInGrid(Container &container, WorldObject *source, uint32 entry, float maxSearchRange)
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_LINE_CASTER_TO_DEST
@ SPELL_EFFECT_SCRIPT_EFFECT
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_ENEMY_SPELL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_PERIODIC_DUMMY
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will not check if a current cast is in progress.
@ TRIGGERED_DONT_REPORT_CAST_ERROR
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define SpellDestinationTargetSelectFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
@ SPELL_EARTH_SHATTERER_MISSILE
@ SPELL_VOLATILE_SPIKE_SELECTOR
@ SPELL_REFRACTING_BEAM_INTRO
@ SPELL_VOLATILE_SPIKE_MISSILE
@ SPELL_EDNA_START_ENERGY
@ SPELL_REFRACTING_BEAM_DAMAGE
@ SPELL_REFRACTING_BEAM_SELECTOR
@ SPELL_SHADOW_DISSOLVE_IN
@ SPELL_SKARDEN_SPAWN_PERIODIC
@ SPELL_VOLATILE_EXPLOSION
static constexpr Position EdnaCombatPosition
static constexpr Position SkardenSpawnPositions[4]
@ SAY_SEISMIC_SMASH_ALERT
uint32 GetTickNumber() const
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
static Conversation * CreateConversation(uint32 conversationEntry, Unit *creator, Position const &pos, ObjectGuid privateObjectOwner, SpellInfo const *spellInfo=nullptr, bool autoStart=true)
bool _EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void SetImmuneToPC(bool apply) override
void Repeat(Milliseconds time)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void AddEvent(BasicEvent *event, Milliseconds e_time, bool set_addtime=true)
EncounterState GetBossState(uint32 id) const
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
static ObjectGuid const Empty
int32 CalcValueAsInt(WorldObject const *caster=nullptr, SpellEffectValue const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
HookList< CastHandler > AfterCast
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
Difficulty GetCastDifficulty() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
Unit * GetSummonerUnit() const
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
int32 ModifyPower(Powers power, int32 val, bool withPowerUpdate=true)
void SetPower(Powers power, int32 val, bool withPowerUpdate=true)
MotionMaster * GetMotionMaster()
Powers GetPowerType() const
TempSummon * ToTempSummon()
int32 GetPower(Powers power) const
bool HasUnitState(const uint32 f) const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetPowerType(Powers power, bool sendUpdate=true, bool onInit=false)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
bool Validate(SpellInfo const *) override
void HandleAfterCast() const
void HandleScriptEffect(SpellEffIndex) const
static constexpr std::array< uint8, 6 > EdnaEnergizeCycle
void PeriodicTick(AuraEffect const *aurEff) const
void FilterTargets(std::list< WorldObject * > &targets) const
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets) const
void HandleHitTarget(SpellEffIndex)
void OnRemove(AuraEffect const *aurEff, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandlePeriodic(AuraEffect const *aurEff) const
static void SetDest(SpellScript const &, SpellDestination &dest)
void HandleHitTarget(SpellEffIndex) const
bool Validate(SpellInfo const *) override
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
auto SelectRandomContainerElement(C const &container) -> std::add_const_t< decltype(*std::ranges::begin(container))> &
constexpr void GetPosition(float &x, float &y) const
constexpr void Relocate(float x, float y)
bool IsMythicPlus() const
void Relocate(Position const &pos)
void OnUnitEnter(Unit *unit) override
at_edna_volatile_spike(AreaTrigger *areatrigger)
void EnterEvadeMode(EvadeReason) override
uint16 _seismicSmashCount
void MovementInform(uint32 type, uint32 id) override
void DoAction(int32 actionId) override
void JustDied(Unit *) override
void KilledUnit(Unit *victim) override
uint16 _volatileSpikeCount
boss_edna(Creature *creature)
void UpdateAI(uint32 diff) override
void JustAppeared() override
void InitializeAI() override
uint16 _refractingBeamCount
void JustEngagedWith(Unit *who) override
void UpdateAI(uint32 diff) override
npc_skardyn_invader(Creature *creature)
void JustAppeared() override
#define RegisterTheStonevaultCreatureAI(ai_name)
@ ACTION_START_EDNA_INTRO