230 .TriggeringAura = aurEff
279 float randomAngle =
frand(
float(
M_PI) / -7.0f,
float(
M_PI) / 7.0f);
280 float randomDist =
frand(2.0f, 40.0f);
297 for (
uint8 i = 0; i < 20; ++i)
305 for (
uint8 i = 0; i < 7; ++i)
374 navarrogg->SetScriptStringId(
"RokmoraIntro");
421 ularogg->SetFacingTo(5.480333f);
487 if (!ularogg || !navarrogg)
First const & RAND(First const &first, Second const &second, Rest const &... rest)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::seconds Seconds
Seconds shorthand typedef.
@ ENCOUNTER_FRAME_DISENGAGE
float frand(float min, float max)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
#define RegisterConversationAI(ai_name)
@ SPELL_EFFECT_APPLY_AURA
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ 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 AuraEffectPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ CURRENT_CHANNELED_SPELL
constexpr Position NavarroggIntroPosition
constexpr Position NavarroggJumpIntroPosition
@ SAY_CRYSTALLINE_GROUND_WARNING
@ SAY_RAZOR_SHARDS_WARNING
@ CONVO_ULAROGG_INTRO_LINE_03
@ CONVO_ACTOR_ID_NAVARROGG
@ EVENT_CRYSTALLINE_GROUND
@ EVENT_ROKMORA_INTRO_MOVE
constexpr Position NavarroggIntroPosition2
@ SPELL_ROKMORA_COMBAT_CONVO_4
@ SPELL_CRYSTALLINE_GROUND_AREATRIGGER
@ SPELL_RAZOR_SHARDS_VISUAL_2
@ SPELL_BOSS_INTRO_CONVERSATION
@ SPELL_ROKMORA_COMBAT_CONVO_2
@ SPELL_UPDATE_INTERACTIONS
@ SPELL_ROKMORA_COMBAT_CONVO_3
@ SPELL_ROKMORA_COMBAT_CONVO_1
@ SPELL_RUPTURING_SKITTER
@ SPELL_CHOKING_DUST_DAMAGE
@ SPELL_CRYSTALLINE_GROUND_VISUAL
@ SPELL_CRYSTALLINE_GROUND_PERIODIC
@ SPELL_SHATTER_KILL_SKITTERS
@ SPELL_CRYSTALLINE_GROUND
@ SPELL_CRYSTALLINE_GROUND_DAMAGE
@ SPELL_JUMP_TO_GROUND_COSMETIC
@ SPELL_BOSS_INTRO_EMERGE
@ SPELL_RAZOR_SHARDS_VISUAL
void AddSC_boss_rokmora()
AreaTriggerAI(AreaTrigger *a, uint32 scriptId={}) noexcept
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > OnEffectRemove
HookList< EffectApplyHandler > OnEffectApply
ObjectGuid const & GetGUID() const
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
Conversation *const conversation
ConversationAI(Conversation *c, uint32 scriptId={}) noexcept
void AddActor(int32 actorId, uint32 actorIdx, ObjectGuid const &actorGuid)
Milliseconds const * GetLineStartTime(LocaleConstant locale, int32 lineId) const
Creature * GetActorCreature(uint32 actorIdx) const
bool _EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void SetImmuneToPC(bool apply) override
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool HasStringId(std::string_view id) const
void Repeat(Milliseconds time)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
Creature * GetCreature(uint32 type)
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
bool IsHeroicOrHigher() const
void MoveJump(uint32 id, Position const &pos, std::variant< std::monostate, float, Milliseconds > speedOrTime={}, Optional< float > minHeight={}, Optional< float > maxHeight={}, MovementFacingTarget const &facing={}, bool orientationFixed=false, bool unlimitedSpeed=false, Optional< float > speedMultiplier={}, JumpArrivalCastArgs const *arrivalCast=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={}, Optional< MovementFadeObject > fadeObject={}, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
void MovePath(uint32 pathId, bool repeatable, Optional< Milliseconds > duration={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< std::pair< Milliseconds, Milliseconds > > waitTimeRangeAtPathEnd={}, Optional< float > wanderDistanceAtPathEnds={}, Optional< bool > followPathBackwardsFromEndToStart={}, Optional< bool > exactSplinePath={}, bool generatePath=true, Optional< MovementFadeObject > fadeObject={}, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
bool IsGameMaster() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< CastHandler > AfterCast
HookList< EffectHandler > OnEffectHitTarget
Unit * GetExplTargetUnit() const
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
void ClearUnitState(uint32 f)
void SetPower(Powers power, int32 val, bool withPowerUpdate=true)
MotionMaster * GetMotionMaster()
void AddUnitState(uint32 f)
int32 GetPower(Powers power) const
bool HasUnitState(const uint32 f) const
void SetMaxPower(Powers power, int32 val)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void MovePosition(Position &pos, float dist, float angle, float maxHeightChange=6.0f) const
Creature * FindNearestCreatureWithOptions(float range, FindCreatureOptions const &options) const
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)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
void OnCreate(Unit *creator) override
void OnUpdate(uint32 diff) override
void HandleEffectPeriodic(AuraEffect const *aurEff) const
bool Validate(SpellInfo const *) override
void OnApply(AuraEffect const *, AuraEffectHandleModes) const
void OnRemove(AuraEffect const *, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
void HandleShatter() const
Position GetRandomRazorShardPosition(Unit *caster) const
void OnPrecast() override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleShatter() const
void HandleScript(SpellEffIndex) const
@ DATA_ROKMORA_INTRO_STATE
#define RegisterNeltharionsLairCreatureAI(ai_name)
float GetAbsoluteAngle(float x, float y) const
constexpr void GetPosition(float &x, float &y) const
constexpr float GetOrientation() const
bool IsHeroicOrHigher() const
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override
void OnUnitEnter(Unit *unit) override
at_rokmora_intro(AreaTrigger *areatrigger)
void JustEngagedWith(Unit *who) override
void UpdateAI(uint32 diff) override
void EnterEvadeMode(EvadeReason) override
void KilledUnit(Unit *victim) override
void JustAppeared() override
void JustDied(Unit *) override
boss_rokmora(Creature *creature)
void JustAppeared() override
void WaypointReached(uint32 waypointId, uint32 pathId) override
void TriggerRokmoraIntro()
npc_rokmora_navarrogg_intro(Creature *creature)
void UpdateAI(uint32 diff) override