diff options
Diffstat (limited to 'src/server/scripts/Northrend')
10 files changed, 200 insertions, 61 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index 5d8756bcffc..23c498a9dc1 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -44,9 +44,18 @@ public: { boss_lavanthorAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiFireboltTimer = 1000; + uiFlameBreathTimer = 5000; + uiLavaBurnTimer = 10000; + uiCauterizingFlamesTimer = 3000; + } + uint32 uiFireboltTimer; uint32 uiFlameBreathTimer; uint32 uiLavaBurnTimer; @@ -56,10 +65,7 @@ public: void Reset() override { - uiFireboltTimer = 1000; - uiFlameBreathTimer = 5000; - uiLavaBurnTimer = 10000; - uiCauterizingFlamesTimer = 3000; + Initialize(); if (instance->GetData(DATA_WAVE_COUNT) == 6) instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); else if (instance->GetData(DATA_WAVE_COUNT) == 12) diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index 67d71cad24c..a9013333ef9 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -40,9 +40,16 @@ public: { boss_moraggAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiOpticLinkTimer = 10000; + uiCorrosiveSalivaTimer = 5000; + } + uint32 uiOpticLinkTimer; uint32 uiCorrosiveSalivaTimer; @@ -50,8 +57,7 @@ public: void Reset() override { - uiOpticLinkTimer = 10000; - uiCorrosiveSalivaTimer = 5000; + Initialize(); if (instance->GetData(DATA_WAVE_COUNT) == 6) instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 79c535979d7..d79e5525650 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -70,9 +70,17 @@ public: { boss_xevozzAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiSummonEtherealSphere_Timer = urand(10000, 12000); + uiArcaneBarrageVolley_Timer = urand(20000, 22000); + uiArcaneBuffet_Timer = uiSummonEtherealSphere_Timer + urand(5000, 6000); + } + InstanceScript* instance; uint32 uiSummonEtherealSphere_Timer; @@ -86,9 +94,7 @@ public: else if (instance->GetData(DATA_WAVE_COUNT) == 12) instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - uiSummonEtherealSphere_Timer = urand(10000, 12000); - uiArcaneBarrageVolley_Timer = urand(20000, 22000); - uiArcaneBuffet_Timer = uiSummonEtherealSphere_Timer + urand(5000, 6000); + Initialize(); DespawnSphere(); } @@ -229,9 +235,16 @@ public: { npc_ethereal_sphereAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiSummonPlayers_Timer = urand(33000, 35000); + uiRangeCheck_Timer = 1000; + } + InstanceScript* instance; uint32 uiSummonPlayers_Timer; @@ -239,8 +252,7 @@ public: void Reset() override { - uiSummonPlayers_Timer = urand(33000, 35000); - uiRangeCheck_Timer = 1000; + Initialize(); } void UpdateAI(uint32 uiDiff) override diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index e155c4d2e71..5854d242248 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -65,9 +65,18 @@ public: { boss_zuramatAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + SpellShroudOfDarknessTimer = 22000; + SpellVoidShiftTimer = 15000; + SpellSummonVoidTimer = 12000; + voidDance = true; + } + InstanceScript* instance; uint32 SpellVoidShiftTimer; @@ -82,10 +91,7 @@ public: else if (instance->GetData(DATA_WAVE_COUNT) == 12) instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - SpellShroudOfDarknessTimer = 22000; - SpellVoidShiftTimer = 15000; - SpellSummonVoidTimer = 12000; - voidDance = true; + Initialize(); } void AttackStart(Unit* who) override diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 76a7b701717..a28442dc8dd 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -305,9 +305,16 @@ public: { npc_sinclariAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiPhase = 0; + uiTimer = 0; + } + InstanceScript* instance; uint8 uiPhase; @@ -315,8 +322,7 @@ public: void Reset() override { - uiPhase = 0; - uiTimer = 0; + Initialize(); me->SetReactState(REACT_AGGRESSIVE); @@ -549,8 +555,14 @@ public: { npc_teleportation_portalAI(Creature* creature) : ScriptedAI(creature), listOfMobs(me) { + Initialize(); instance = creature->GetInstanceScript(); uiTypeOfMobsPortal = urand(0, 1); // 0 - elite mobs 1 - portal guardian or portal keeper with regular mobs + } + + void Initialize() + { + uiSpawnTimer = 10000; bPortalGuardianOrKeeperOrEliteSpawn = false; } @@ -564,8 +576,7 @@ public: void Reset() override { - uiSpawnTimer = 10000; - bPortalGuardianOrKeeperOrEliteSpawn = false; + Initialize(); } void EnterCombat(Unit* /*who*/) override { } @@ -672,7 +683,7 @@ struct violet_hold_trashAI : public npc_escortAI instance = creature->GetInstanceScript(); bHasGotMovingPoints = false; portalLocationID = instance->GetData(DATA_PORTAL_LOCATION); - Reset(); + secondPortalRouteID = 0; } public: @@ -797,9 +808,18 @@ public: { npc_azure_invaderAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiCleaveTimer = 5000; + uiImpaleTimer = 4000; + uiBrutalStrikeTimer = 5000; + uiSunderArmorTimer = 4000; + } + uint32 uiCleaveTimer; uint32 uiImpaleTimer; uint32 uiBrutalStrikeTimer; @@ -807,10 +827,7 @@ public: void Reset() override { - uiCleaveTimer = 5000; - uiImpaleTimer = 4000; - uiBrutalStrikeTimer = 5000; - uiSunderArmorTimer = 4000; + Initialize(); } void UpdateAI(uint32 diff) override @@ -875,9 +892,18 @@ public: { npc_azure_binderAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiArcaneExplosionTimer = 5000; + uiArcainBarrageTimer = 4000; + uiFrostNovaTimer = 5000; + uiFrostboltTimer = 4000; + } + uint32 uiArcaneExplosionTimer; uint32 uiArcainBarrageTimer; uint32 uiFrostNovaTimer; @@ -885,10 +911,7 @@ public: void Reset() override { - uiArcaneExplosionTimer = 5000; - uiArcainBarrageTimer = 4000; - uiFrostNovaTimer = 5000; - uiFrostboltTimer = 4000; + Initialize(); } void UpdateAI(uint32 diff) override @@ -953,16 +976,22 @@ public: { npc_azure_mage_slayerAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiArcaneEmpowermentTimer = 5000; + uiSpellLockTimer = 5000; + } + uint32 uiArcaneEmpowermentTimer; uint32 uiSpellLockTimer; void Reset() override { - uiArcaneEmpowermentTimer = 5000; - uiSpellLockTimer = 5000; + Initialize(); } void UpdateAI(uint32 diff) override @@ -1013,16 +1042,22 @@ public: { npc_azure_raiderAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiConcussionBlowTimer = 5000; + uiMagicReflectionTimer = 8000; + } + uint32 uiConcussionBlowTimer; uint32 uiMagicReflectionTimer; void Reset() override { - uiConcussionBlowTimer = 5000; - uiMagicReflectionTimer = 8000; + Initialize(); } void UpdateAI(uint32 diff) override @@ -1060,14 +1095,20 @@ public: { npc_azure_stalkerAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } - void Reset() override + void Initialize() { _backstabTimer = 1300; _tacticalBlinkTimer = 8000; - _tacticalBlinkCast =false; + _tacticalBlinkCast = false; + } + + void Reset() override + { + Initialize(); } void UpdateAI(uint32 diff) override @@ -1125,9 +1166,18 @@ public: { npc_azure_spellbreakerAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiArcaneBlastTimer = 5000; + uiSlowTimer = 4000; + uiChainsOfIceTimer = 5000; + uiConeOfColdTimer = 4000; + } + uint32 uiArcaneBlastTimer; uint32 uiSlowTimer; uint32 uiChainsOfIceTimer; @@ -1135,10 +1185,7 @@ public: void Reset() override { - uiArcaneBlastTimer = 5000; - uiSlowTimer = 4000; - uiChainsOfIceTimer = 5000; - uiConeOfColdTimer = 4000; + Initialize(); } void UpdateAI(uint32 diff) override @@ -1209,16 +1256,22 @@ public: { npc_azure_captainAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiMortalStrikeTimer = 5000; + uiWhirlwindTimer = 8000; + } + uint32 uiMortalStrikeTimer; uint32 uiWhirlwindTimer; void Reset() override { - uiMortalStrikeTimer = 5000; - uiWhirlwindTimer = 8000; + Initialize(); } void UpdateAI(uint32 diff) override @@ -1261,18 +1314,24 @@ public: { npc_azure_sorcerorAI(Creature* creature) : violet_hold_trashAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + uiArcaneStreamTimer = 4000; + uiArcaneStreamTimerStartingValueHolder = uiArcaneStreamTimer; + uiManaDetonationTimer = 5000; + } + uint32 uiArcaneStreamTimer; uint32 uiArcaneStreamTimerStartingValueHolder; uint32 uiManaDetonationTimer; void Reset() override { - uiArcaneStreamTimer = 4000; - uiArcaneStreamTimerStartingValueHolder = uiArcaneStreamTimer; - uiManaDetonationTimer = 5000; + Initialize(); } void UpdateAI(uint32 diff) override @@ -1311,13 +1370,21 @@ public: struct npc_violet_hold_arcane_sphereAI : public ScriptedAI { - npc_violet_hold_arcane_sphereAI(Creature* creature) : ScriptedAI(creature) { } + npc_violet_hold_arcane_sphereAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + DespawnTimer = 3000; + } uint32 DespawnTimer; void Reset() override { - DespawnTimer = 3000; + Initialize(); me->SetDisableGravity(true); DoCast(me, SPELL_ARCANE_SPHERE_PASSIVE, true); diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 68c0ce3acc4..eff84365f63 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -565,7 +565,18 @@ class npc_wyrmrest_defender : public CreatureScript struct npc_wyrmrest_defenderAI : public VehicleAI { - npc_wyrmrest_defenderAI(Creature* creature) : VehicleAI(creature) { } + npc_wyrmrest_defenderAI(Creature* creature) : VehicleAI(creature) + { + Initialize(); + } + + void Initialize() + { + hpWarningReady = true; + renewRecoveryCanCheck = false; + + RenewRecoveryChecker = 0; + } bool hpWarningReady; bool renewRecoveryCanCheck; @@ -574,10 +585,7 @@ class npc_wyrmrest_defender : public CreatureScript void Reset() override { - hpWarningReady = true; - renewRecoveryCanCheck = false; - - RenewRecoveryChecker = 0; + Initialize(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index e06bf32d7d8..e60c2162339 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -464,7 +464,6 @@ public: void Reset() override { _despawnTimer = 5000; - _playerGUID = 0; } void MovementInform(uint32, uint32 id) override @@ -498,7 +497,6 @@ public: DoMeleeAttackIfReady(); } private: - uint64 _playerGUID; uint32 _despawnTimer; }; diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index a43df0dc3f0..7436ac8400f 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -91,17 +91,23 @@ public: { npc_argent_valiantAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); creature->GetMotionMaster()->MovePoint(0, 8599.258f, 963.951f, 547.553f); creature->setFaction(35); //wrong faction in db? } + void Initialize() + { + uiChargeTimer = 7000; + uiShieldBreakerTimer = 10000; + } + uint32 uiChargeTimer; uint32 uiShieldBreakerTimer; void Reset() override { - uiChargeTimer = 7000; - uiShieldBreakerTimer = 10000; + Initialize(); } void MovementInform(uint32 uiType, uint32 /*uiId*/) override @@ -285,9 +291,15 @@ class npc_tournament_training_dummy : public CreatureScript { npc_tournament_training_dummyAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); SetCombatMovement(false); } + void Initialize() + { + isVulnerable = false; + } + EventMap events; bool isVulnerable; @@ -295,7 +307,7 @@ class npc_tournament_training_dummy : public CreatureScript { me->SetControlled(true, UNIT_STATE_STUNNED); me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); - isVulnerable = false; + Initialize(); // Cast Defend spells to max stack size switch (me->GetEntry()) diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index 53fe1500624..f4275121101 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -229,7 +229,15 @@ public: struct npc_engineer_heliceAI : public npc_escortAI { - npc_engineer_heliceAI(Creature* creature) : npc_escortAI(creature) { } + npc_engineer_heliceAI(Creature* creature) : npc_escortAI(creature) + { + Initialize(); + } + + void Initialize() + { + m_uiChatTimer = 4000; + } uint32 m_uiChatTimer; @@ -274,7 +282,7 @@ public: void Reset() override { - m_uiChatTimer = 4000; + Initialize(); } void JustDied(Unit* /*killer*/) override @@ -366,9 +374,12 @@ public: struct npc_jungle_punch_targetAI : public ScriptedAI { - npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature) { } + npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } - void Reset() override + void Initialize() { sayTimer = 3500; sayStep = 0; @@ -378,6 +389,11 @@ public: orphanGUID.Clear(); } + void Reset() override + { + Initialize(); + } + void MoveInLineOfSight(Unit* who) override { if (!phase && who && who->GetDistance2d(me) < 10.0f) diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index a183d0997d4..e4cff7323b1 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -179,13 +179,21 @@ public: struct npc_brunnhildar_prisonerAI : public ScriptedAI { - npc_brunnhildar_prisonerAI(Creature* creature) : ScriptedAI(creature) { } + npc_brunnhildar_prisonerAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + freed = false; + } bool freed; void Reset() override { - freed = false; + Initialize(); me->CastSpell(me, SPELL_ICE_PRISON, true); } |
