diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index f43052ebb0a..a3d600830f5 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -76,14 +76,14 @@ class boss_saviana_ragefire : public CreatureScript struct boss_saviana_ragefireAI : public BossAI { - boss_saviana_ragefireAI(Creature* creature) : BossAI(creature, DATA_SAVIANA_RAGEFIRE) - { - } + boss_saviana_ragefireAI(Creature* creature) : BossAI(creature, DATA_SAVIANA_RAGEFIRE) { } void Reset() override { _Reset(); me->SetReactState(REACT_AGGRESSIVE); + me->SetCanFly(false); + me->SetDisableGravity(false); } void EnterCombat(Unit* /*who*/) override @@ -91,15 +91,15 @@ class boss_saviana_ragefire : public CreatureScript _EnterCombat(); Talk(SAY_AGGRO); events.Reset(); - events.ScheduleEvent(EVENT_ENRAGE, 20000, EVENT_GROUP_LAND_PHASE); - events.ScheduleEvent(EVENT_FLAME_BREATH, 14000, EVENT_GROUP_LAND_PHASE); - events.ScheduleEvent(EVENT_FLIGHT, 60000); + events.ScheduleEvent(EVENT_ENRAGE, Seconds(20), EVENT_GROUP_LAND_PHASE); + events.ScheduleEvent(EVENT_FLAME_BREATH, Seconds(14), EVENT_GROUP_LAND_PHASE); + events.ScheduleEvent(EVENT_FLIGHT, Seconds(60), EVENT_GROUP_LAND_PHASE); } void JustDied(Unit* /*killer*/) override { _JustDied(); - me->PlayDirectSound(SOUND_ID_DEATH); + DoPlaySoundToSet(me, SOUND_ID_DEATH); } void MovementInform(uint32 type, uint32 point) override @@ -110,32 +110,32 @@ class boss_saviana_ragefire : public CreatureScript switch (point) { case POINT_FLIGHT: - events.ScheduleEvent(EVENT_CONFLAGRATION, 1000); + events.ScheduleEvent(EVENT_CONFLAGRATION, Seconds(1)); Talk(SAY_CONFLAGRATION); break; case POINT_LAND: - events.ScheduleEvent(EVENT_LAND_GROUND, 1); + events.ScheduleEvent(EVENT_LAND_GROUND, Milliseconds(1)); break; case POINT_LAND_GROUND: me->SetCanFly(false); me->SetDisableGravity(false); me->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); me->SetReactState(REACT_AGGRESSIVE); - DoStartMovement(me->GetVictim()); + events.ScheduleEvent(EVENT_ENRAGE, Seconds(1), EVENT_GROUP_LAND_PHASE); + events.ScheduleEvent(EVENT_FLAME_BREATH, Seconds(2), Seconds(4), EVENT_GROUP_LAND_PHASE); + events.ScheduleEvent(EVENT_FLIGHT, Seconds(50), EVENT_GROUP_LAND_PHASE); break; case POINT_TAKEOFF: - events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1); + events.ScheduleEvent(EVENT_AIR_MOVEMENT, Milliseconds(1)); break; default: break; } } - void JustReachedHome() override + void EnterEvadeMode(EvadeReason /*why*/) override { - _JustReachedHome(); - me->SetCanFly(false); - me->SetDisableGravity(false); + _DespawnAtEvade(); } void KilledUnit(Unit* victim) override @@ -169,21 +169,20 @@ class boss_saviana_ragefire : public CreatureScript pos.Relocate(me); pos.m_positionZ += 10.0f; me->GetMotionMaster()->MoveTakeoff(POINT_TAKEOFF, pos); - events.ScheduleEvent(EVENT_FLIGHT, 50000); - events.DelayEvents(12500, EVENT_GROUP_LAND_PHASE); + events.CancelEventGroup(EVENT_GROUP_LAND_PHASE); break; } case EVENT_CONFLAGRATION: - DoCast(me, SPELL_CONFLAGRATION, true); + DoCastSelf(SPELL_CONFLAGRATION, true); break; case EVENT_ENRAGE: - DoCast(me, SPELL_ENRAGE); + DoCastSelf(SPELL_ENRAGE); Talk(EMOTE_ENRAGED); - events.ScheduleEvent(EVENT_ENRAGE, urand(15000, 20000), EVENT_GROUP_LAND_PHASE); + events.Repeat(Seconds(24)); break; case EVENT_FLAME_BREATH: DoCastVictim(SPELL_FLAME_BREATH); - events.ScheduleEvent(EVENT_FLAME_BREATH, urand(20000, 30000), EVENT_GROUP_LAND_PHASE); + events.Repeat(Seconds(20), Seconds(30)); break; case EVENT_AIR_MOVEMENT: me->GetMotionMaster()->MovePoint(POINT_FLIGHT, SavianaRagefireFlyOutPos); @@ -220,6 +219,7 @@ class ConflagrationTargetSelector } }; +// 74452 - Conflagration class spell_saviana_conflagration_init : public SpellScriptLoader { public: @@ -229,6 +229,14 @@ class spell_saviana_conflagration_init : public SpellScriptLoader { PrepareSpellScript(spell_saviana_conflagration_init_SpellScript); + bool Validate(SpellInfo const* /*spell*/) override + { + if (!sSpellMgr->GetSpellInfo(SPELL_FLAME_BEACON) + || !sSpellMgr->GetSpellInfo(SPELL_CONFLAGRATION_2)) + return false; + return true; + } + void FilterTargets(std::list<WorldObject*>& targets) { targets.remove_if(ConflagrationTargetSelector()); @@ -257,6 +265,7 @@ class spell_saviana_conflagration_init : public SpellScriptLoader } }; +// 74455 - Conflagration class spell_saviana_conflagration_throwback : public SpellScriptLoader { public: |