diff options
author | jackpoz <giacomopoz@gmail.com> | 2014-09-20 20:16:00 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2014-09-20 20:21:54 +0200 |
commit | b5e3535dbf9032bab06a1dc35201d2db72d265d6 (patch) | |
tree | b79fe2c146f3510d401bb521ea87ac331f8c5bc7 /src | |
parent | 53dbab809f1df35e051ad5ab52f5adf1929f376b (diff) |
Core/Misc: Refactor scripts to fix static analysis warnings
Sixth batch of fixes targeting 100 issues reported by Coverity
Diffstat (limited to 'src')
28 files changed, 743 insertions, 317 deletions
diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp index d0bda5d73cb..93205738534 100644 --- a/src/server/scripts/Kalimdor/zone_durotar.cpp +++ b/src/server/scripts/Kalimdor/zone_durotar.cpp @@ -58,13 +58,10 @@ public: void Initialize() { - PlayerGUID = 0; RebuffTimer = 0; work = false; } - uint64 PlayerGUID; - uint32 RebuffTimer; bool work; 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); } diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp index 1cfd7a23f39..99cda91b866 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp @@ -318,13 +318,21 @@ public: struct npc_avatar_of_martyredAI : public ScriptedAI { - npc_avatar_of_martyredAI(Creature* creature) : ScriptedAI(creature) { } + npc_avatar_of_martyredAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + Mortal_Strike_timer = 10000; + } uint32 Mortal_Strike_timer; void Reset() override { - Mortal_Strike_timer = 10000; + Initialize(); } void EnterCombat(Unit* /*who*/) override diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp index 9a94096c2de..b354df9d63a 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp @@ -62,6 +62,16 @@ public: { boss_shirrak_the_dead_watcherAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); + } + + void Initialize() + { + Inhibitmagic_Timer = 0; + Attractmagic_Timer = 28000; + Carnivorousbite_Timer = 10000; + FocusFire_Timer = 17000; + FocusedTargetGUID.Clear(); } uint32 Inhibitmagic_Timer; @@ -73,11 +83,7 @@ public: void Reset() override { - Inhibitmagic_Timer = 0; - Attractmagic_Timer = 28000; - Carnivorousbite_Timer = 10000; - FocusFire_Timer = 17000; - FocusedTargetGUID.Clear(); + Initialize(); } void EnterCombat(Unit* /*who*/) override @@ -174,6 +180,13 @@ public: { npc_focus_fireAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); + } + + void Initialize() + { + FieryBlast_Timer = 3000 + (rand32() % 1000); + fiery1 = fiery2 = true; } uint32 FieryBlast_Timer; @@ -181,8 +194,7 @@ public: void Reset() override { - FieryBlast_Timer = 3000 + (rand32() % 1000); - fiery1 = fiery2 = true; + Initialize(); } void EnterCombat(Unit* /*who*/) override diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index 67cc6b99e93..5f6fde8ad98 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -78,7 +78,22 @@ public: struct boss_nexusprince_shaffarAI : public ScriptedAI { - boss_nexusprince_shaffarAI(Creature* creature) : ScriptedAI(creature), summons(me) { HasTaunted = false; } + boss_nexusprince_shaffarAI(Creature* creature) : ScriptedAI(creature), summons(me) + { + Initialize(); + HasTaunted = false; + } + + void Initialize() + { + Blink_Timer = 1500; + Beacon_Timer = 10000; + FireBall_Timer = 8000; + Frostbolt_Timer = 4000; + FrostNova_Timer = 15000; + + CanBlink = false; + } uint32 Blink_Timer; uint32 Beacon_Timer; @@ -93,13 +108,7 @@ public: void Reset() override { - Blink_Timer = 1500; - Beacon_Timer = 10000; - FireBall_Timer = 8000; - Frostbolt_Timer = 4000; - FrostNova_Timer = 15000; - - CanBlink = false; + Initialize(); float dist = 8.0f; float posX, posY, posZ, angle; @@ -241,6 +250,14 @@ public: { npc_ethereal_beaconAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); + } + + void Initialize() + { + Apprentice_Timer = DUNGEON_MODE(20000, 10000); + ArcaneBolt_Timer = 1000; + Check_Timer = 1000; } uint32 Apprentice_Timer; @@ -254,9 +271,7 @@ public: void Reset() override { - Apprentice_Timer = DUNGEON_MODE(20000, 10000); - ArcaneBolt_Timer = 1000; - Check_Timer = 1000; + Initialize(); } void EnterCombat(Unit* who) override @@ -331,7 +346,16 @@ public: struct npc_ethereal_apprenticeAI : public ScriptedAI { - npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature) { } + npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + Cast_Timer = 3000; + isFireboltTurn = true; + } uint32 Cast_Timer; @@ -339,8 +363,7 @@ public: void Reset() override { - Cast_Timer = 3000; - isFireboltTurn = true; + Initialize(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp index 1787933143c..e2d6bee85ca 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp @@ -67,14 +67,22 @@ class boss_anzu : public CreatureScript struct boss_anzuAI : public BossAI { - boss_anzuAI(Creature* creature) : BossAI(creature, DATA_ANZU) { } + boss_anzuAI(Creature* creature) : BossAI(creature, DATA_ANZU) + { + Initialize(); + } + + void Initialize() + { + _under33Percent = false; + _under66Percent = false; + } void Reset() override { //_Reset(); events.Reset(); - _under33Percent = false; - _under66Percent = false; + Initialize(); } void EnterCombat(Unit* /*who*/) override diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp index b3aac6becc4..109174f5807 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -86,13 +86,19 @@ class boss_grandmaster_vorpil : public CreatureScript { boss_grandmaster_vorpilAI(Creature* creature) : BossAI(creature, DATA_GRANDMASTER_VORPIL) { + Initialize(); _intro = false; } + void Initialize() + { + _helpYell = false; + } + void Reset() override { _Reset(); - _helpYell = false; + Initialize(); } void SummonPortals() @@ -223,15 +229,21 @@ class npc_voidtraveler : public CreatureScript { npc_voidtravelerAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); _instance = creature->GetInstanceScript(); } - void Reset() override + void Initialize() { _moveTimer = 0; _sacrificed = false; } + void Reset() override + { + Initialize(); + } + void EnterCombat(Unit* /*who*/) override { } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp index 5302aa34a29..71136f79919 100644 --- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp @@ -95,13 +95,19 @@ public: { npc_wrathbone_flayerAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); _instance = creature->GetInstanceScript(); } + void Initialize() + { + _enteredCombat = false; + } + void Reset() override { _events.ScheduleEvent(EVENT_GET_CHANNELERS, 3000); - _enteredCombat = false; + Initialize(); _bloodmageList.clear(); _deathshaperList.clear(); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp index b41e7e77452..0b219eeff56 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp @@ -68,9 +68,29 @@ public: { boss_gurtogg_bloodboilAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + TargetGUID.Clear(); + TargetThreat = 0; + + BloodboilTimer = 10000; + BloodboilCount = 0; + AcidGeyserTimer = 1000; + AcidicWoundTimer = 6000; + ArcingSmashTimer = 19000; + EnrageTimer = 600000; + FelAcidTimer = 25000; + EjectTimer = 10000; + BewilderingStrikeTimer = 15000; + PhaseChangeTimer = 60000; + + Phase1 = true; + } + InstanceScript* instance; ObjectGuid TargetGUID; @@ -94,22 +114,7 @@ public: { instance->SetBossState(DATA_GURTOGG_BLOODBOIL, NOT_STARTED); - TargetGUID.Clear(); - - TargetThreat = 0; - - BloodboilTimer = 10000; - BloodboilCount = 0; - AcidGeyserTimer = 1000; - AcidicWoundTimer = 6000; - ArcingSmashTimer = 19000; - EnrageTimer = 600000; - FelAcidTimer = 25000; - EjectTimer = 10000; - BewilderingStrikeTimer = 15000; - PhaseChangeTimer = 60000; - - Phase1 = true; + Initialize(); me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false); me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, false); diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 4ec6aed9655..aec4e982a49 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -375,15 +375,23 @@ public: struct flame_of_azzinothAI : public ScriptedAI { - flame_of_azzinothAI(Creature* creature) : ScriptedAI(creature) { } + flame_of_azzinothAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } - void Reset() override + void Initialize() { FlameBlastTimer = 15000; CheckTimer = 5000; GlaiveGUID.Clear(); } + void Reset() override + { + Initialize(); + } + void EnterCombat(Unit* /*who*/) override { DoZoneInCombat(); @@ -474,10 +482,30 @@ public: { boss_illidan_stormrageAI(Creature* creature) : ScriptedAI(creature), Summons(me) { + Initialize(); instance = creature->GetInstanceScript(); DoCast(me, SPELL_DUAL_WIELD, true); } + void Initialize() + { + MaievGUID.Clear(); + for (uint8 i = 0; i < 2; ++i) + { + FlameGUID[i].Clear(); + GlaiveGUID[i].Clear(); + } + + Phase = PHASE_ILLIDAN_NULL; + Event = EVENT_NULL; + Timer[EVENT_BERSERK] = 1500000; + + HoverPoint = 0; + TalkCount = 0; + FlightCount = 0; + TransformCount = 0; + } + void Reset() override; void JustSummoned(Creature* summon) override; @@ -1133,9 +1161,12 @@ public: struct boss_maievAI : public ScriptedAI { - boss_maievAI(Creature* creature) : ScriptedAI(creature) { }; + boss_maievAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } - void Reset() override + void Initialize() { MaxTimer = 0; Phase = PHASE_NORMAL_MAIEV; @@ -1143,6 +1174,11 @@ public: Timer[EVENT_MAIEV_STEALTH] = 0; Timer[EVENT_MAIEV_TAUNT] = urand(22, 43) * 1000; Timer[EVENT_MAIEV_SHADOW_STRIKE] = 30000; + } + + void Reset() override + { + Initialize(); SetEquipmentSlots(false, EQUIP_ID_MAIN_HAND_MAIEV, EQUIP_UNEQUIP, EQUIP_NO_CHANGE); me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, 45738); } @@ -1268,7 +1304,7 @@ public: && !Timer[EVENT_MAIEV_STEALTH]) return; - Event = EVENT_MAIEV_NULL; + EventMaiev Event = EVENT_MAIEV_NULL; for (uint8 i = 1; i <= MaxTimer; ++i) if (Timer[i]) { @@ -1334,7 +1370,6 @@ public: private: ObjectGuid IllidanGUID; PhaseIllidan Phase; - EventMaiev Event; uint32 Timer[5]; uint32 MaxTimer; }; @@ -1354,13 +1389,29 @@ public: { npc_akama_illidanAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); JustCreated = true; } - void Reset() override + void Initialize() { + ChannelGUID.Clear(); + SpiritGUID[0].Clear(); + SpiritGUID[1].Clear(); + + Phase = PHASE_AKAMA_NULL; + Timer = 0; + + ChannelCount = 0; + TalkCount = 0; + Check_Timer = 5000; WalkCount = 0; + } + + void Reset() override + { + Initialize(); instance->SetBossState(DATA_ILLIDAN_STORMRAGE, NOT_STARTED); IllidanGUID = instance->GetGuidData(DATA_ILLIDAN_STORMRAGE); @@ -1384,17 +1435,6 @@ public: instance->HandleGameObject(DoorGUID[i], true); } - ChannelGUID.Clear(); - SpiritGUID[0].Clear(); - SpiritGUID[1].Clear(); - - Phase = PHASE_AKAMA_NULL; - Timer = 0; - - ChannelCount = 0; - TalkCount = 0; - Check_Timer = 5000; - KillAllElites(); me->SetUInt32Value(UNIT_NPC_FLAGS, 0); // Database sometimes has strange values.. @@ -1552,7 +1592,6 @@ public: break; } Phase = NextPhase; - Event = false; } void HandleTalkSequence() @@ -1674,7 +1713,7 @@ public: Check_Timer = 5000; } else Check_Timer -= diff; } - Event = false; + bool Event = false; if (Timer) { if (Timer <= diff) @@ -1755,7 +1794,6 @@ public: bool JustCreated; InstanceScript* instance; PhaseAkama Phase; - bool Event; uint32 Timer; ObjectGuid IllidanGUID; ObjectGuid ChannelGUID; @@ -1786,21 +1824,7 @@ void boss_illidan_stormrage::boss_illidan_stormrageAI::Reset() akama->AI()->EnterEvadeMode(); } - MaievGUID.Clear(); - for (uint8 i = 0; i < 2; ++i) - { - FlameGUID[i].Clear(); - GlaiveGUID[i].Clear(); - } - - Phase = PHASE_ILLIDAN_NULL; - Event = EVENT_NULL; - Timer[EVENT_BERSERK] = 1500000; - - HoverPoint = 0; - TalkCount = 0; - FlightCount = 0; - TransformCount = 0; + Initialize(); me->SetDisplayId(MODEL_ILLIDAN); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); @@ -1951,9 +1975,12 @@ public: struct cage_trap_triggerAI : public ScriptedAI { - cage_trap_triggerAI(Creature* creature) : ScriptedAI(creature) { } + cage_trap_triggerAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } - void Reset() override + void Initialize() { IllidanGUID.Clear(); @@ -1961,6 +1988,11 @@ public: SummonedBeams = false; DespawnTimer = 0; + } + + void Reset() override + { + Initialize(); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } @@ -2130,14 +2162,20 @@ public: { npc_parasitic_shadowfiendAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + CheckTimer = 5000; + } + void Reset() override { IllidanGUID = instance->GetGuidData(DATA_ILLIDAN_STORMRAGE); - CheckTimer = 5000; + Initialize(); DoCast(me, SPELL_SHADOWFIEND_PASSIVE, true); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index c5989f4df64..dd0e271a02d 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -144,7 +144,17 @@ public: { boss_reliquary_of_soulsAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); + Counter = 0; + Timer = 0; + SoulCount = 0; + SoulDeathCount = 0; + } + + void Initialize() + { + Phase = 0; } InstanceScript* instance; @@ -170,7 +180,7 @@ public: EssenceGUID.Clear(); } - Phase = 0; + Initialize(); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); @@ -396,9 +406,19 @@ public: struct boss_essence_of_sufferingAI : public ScriptedAI { - boss_essence_of_sufferingAI(Creature* creature) : ScriptedAI(creature) { } + boss_essence_of_sufferingAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } - uint64 StatAuraGUID; + void Initialize() + { + AggroYellTimer = 5000; + FixateTimer = 8000; + EnrageTimer = 30000; + SoulDrainTimer = 45000; + AuraTimer = 5000; + } uint32 AggroYellTimer; uint32 FixateTimer; @@ -408,13 +428,7 @@ public: void Reset() override { - StatAuraGUID = 0; - - AggroYellTimer = 5000; - FixateTimer = 8000; - EnrageTimer = 30000; - SoulDrainTimer = 45000; - AuraTimer = 5000; + Initialize(); } void DamageTaken(Unit* /*done_by*/, uint32 &damage) override @@ -519,7 +533,17 @@ public: struct boss_essence_of_desireAI : public ScriptedAI { - boss_essence_of_desireAI(Creature* creature) : ScriptedAI(creature) { } + boss_essence_of_desireAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + RuneShieldTimer = 60000; + DeadenTimer = 30000; + SoulShockTimer = 5000; + } uint32 RuneShieldTimer; uint32 DeadenTimer; @@ -527,9 +551,7 @@ public: void Reset() override { - RuneShieldTimer = 60000; - DeadenTimer = 30000; - SoulShockTimer = 5000; + Initialize(); me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_CONFUSE, true); } @@ -622,7 +644,21 @@ public: struct boss_essence_of_angerAI : public ScriptedAI { - boss_essence_of_angerAI(Creature* creature) : ScriptedAI(creature) { } + boss_essence_of_angerAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + AggroTargetGUID.Clear(); + + CheckTankTimer = 5000; + SoulScreamTimer = 10000; + SpiteTimer = 30000; + + CheckedAggro = false; + } ObjectGuid AggroTargetGUID; @@ -630,21 +666,11 @@ public: uint32 SoulScreamTimer; uint32 SpiteTimer; - std::list<uint64> SpiteTargetGUID; - bool CheckedAggro; void Reset() override { - AggroTargetGUID.Clear(); - - CheckTankTimer = 5000; - SoulScreamTimer = 10000; - SpiteTimer = 30000; - - SpiteTargetGUID.clear(); - - CheckedAggro = false; + Initialize(); } void EnterCombat(Unit* /*who*/) override diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 6b337e42087..ecc4457e454 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -165,12 +165,21 @@ public: struct boss_shade_of_akamaAI : public ScriptedAI { - boss_shade_of_akamaAI(Creature* creature) : ScriptedAI(creature), HasKilledAkamaAndReseting(false) + boss_shade_of_akamaAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } + void Initialize() + { + combatStarted = false; + akamaReached = false; + HasKilledAkama = false; + HasKilledAkamaAndReseting = false; + } + void Reset() override { if (!HasKilledAkamaAndReseting) @@ -190,10 +199,7 @@ public: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); me->SetWalk(true); - combatStarted = false; - akamaReached = false; - HasKilledAkama = false; - HasKilledAkamaAndReseting = false; + Initialize(); } void JustDied(Unit* /*killer*/) override @@ -417,18 +423,24 @@ public: { npc_akamaAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + StartChannel = false; + StartCombat = false; + HasYelledOnce = false; + ShadeHasDied = false; + } + void Reset() override { me->setFaction(FACTION_FRIENDLY); me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); DoCast(me, SPELL_STEALTH); - StartChannel = false; - StartCombat = false; - HasYelledOnce = false; - ShadeHasDied = false; + Initialize(); } void JustDied(Unit* /*killer*/) override @@ -631,15 +643,21 @@ public: { npc_creature_generator_akamaAI(Creature* creature) : ScriptedAI(creature), Summons(me) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + doSpawning = false; + leftSide = false; + } + void Reset() override { Summons.DespawnAll(); - doSpawning = false; - leftSide = false; + Initialize(); if (me->GetPositionY() < 400.0f) leftSide = true; @@ -739,8 +757,14 @@ public: { npc_ashtongue_sorcererAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); + } + + void Initialize() + { startedBanishing = false; + switchToCombat = false; } void Reset() override @@ -760,8 +784,7 @@ public: } summonerGuid.Clear(); - startedBanishing = false; - switchToCombat = false; + Initialize(); } void JustDied(Unit* /*killer*/) override @@ -1111,14 +1134,20 @@ public: { npc_ashtongue_spiritbinderAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } - void Reset() override + void Initialize() { spiritMend = false; - chainHeal = false; + chainHeal = false; summonerGuid.Clear(); + } + + void Reset() override + { + Initialize(); if (Unit* target = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_AKAMA_SHADE))) AttackStart(target); diff --git a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp index b9b654f8b95..93061a3a57f 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp @@ -223,16 +223,22 @@ public: { npc_volcanoAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); SetCombatMovement(false); } + void Initialize() + { + wait = 3000; + } + void Reset() override { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); //DoCast(me, SPELL_VOLCANIC_ERUPTION); me->SetReactState(REACT_PASSIVE); - wait = 3000; + Initialize(); } uint32 wait; diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 081dbc079a7..aa0f3daeef0 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -63,7 +63,17 @@ public: struct npc_doom_blossomAI : public ScriptedAI { - npc_doom_blossomAI(Creature* creature) : ScriptedAI(creature) { } + npc_doom_blossomAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + CheckTeronTimer = 5000; + ShadowBoltTimer = 12000; + TeronGUID.Clear(); + } uint32 CheckTeronTimer; uint32 ShadowBoltTimer; @@ -71,9 +81,7 @@ public: void Reset() override { - CheckTeronTimer = 5000; - ShadowBoltTimer = 12000; - TeronGUID.Clear(); + Initialize(); } void EnterCombat(Unit* /*who*/) override { } @@ -132,7 +140,19 @@ public: struct npc_shadowy_constructAI : public ScriptedAI { - npc_shadowy_constructAI(Creature* creature) : ScriptedAI(creature) { } + npc_shadowy_constructAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + GhostGUID.Clear(); + TeronGUID.Clear(); + + CheckPlayerTimer = 2000; + CheckTeronTimer = 5000; + } ObjectGuid GhostGUID; ObjectGuid TeronGUID; @@ -142,11 +162,7 @@ public: void Reset() override { - GhostGUID.Clear(); - TeronGUID.Clear(); - - CheckPlayerTimer = 2000; - CheckTeronTimer = 5000; + Initialize(); } void EnterCombat(Unit* /*who*/) override { } @@ -224,9 +240,25 @@ public: { boss_teron_gorefiendAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + IncinerateTimer = urand(20000, 31000); + SummonDoomBlossomTimer = 12000; + EnrageTimer = 600000; + CrushingShadowsTimer = 22000; + SummonShadowsTimer = 60000; + RandomYellTimer = 50000; + + AggroTimer = 20000; + AggroTargetGUID.Clear(); + Intro = false; + Done = false; + } + InstanceScript* instance; uint32 IncinerateTimer; @@ -248,21 +280,11 @@ public: { instance->SetBossState(DATA_TERON_GOREFIEND, NOT_STARTED); - IncinerateTimer = urand(20000, 31000); - SummonDoomBlossomTimer = 12000; - EnrageTimer = 600000; - CrushingShadowsTimer = 22000; - SummonShadowsTimer = 60000; - RandomYellTimer = 50000; + Initialize(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); // Start off unattackable so that the intro is done properly me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - - AggroTimer = 20000; - AggroTargetGUID.Clear(); - Intro = false; - Done = false; } void EnterCombat(Unit* /*who*/) override { } diff --git a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp index a14a4c576cb..3c4b37165de 100644 --- a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp @@ -129,6 +129,17 @@ public: { npc_blood_elf_council_voice_triggerAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); + } + + void Initialize() + { + EnrageTimer = 900000; // 15 minutes + AggroYellTimer = 500; + + YellCounter = 0; + + EventStarted = false; } ObjectGuid Council[4]; @@ -142,12 +153,7 @@ public: void Reset() override { - EnrageTimer = 900000; // 15 minutes - AggroYellTimer = 500; - - YellCounter = 0; - - EventStarted = false; + Initialize(); } // finds and stores the GUIDs for each Council member using instance data system. @@ -223,9 +229,19 @@ public: { npc_illidari_councilAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + CheckTimer = 2000; + EndEventTimer = 0; + + DeathCount = 0; + EventBegun = false; + } + InstanceScript* instance; ObjectGuid Council[4]; @@ -239,10 +255,7 @@ public: void Reset() override { - CheckTimer = 2000; - EndEventTimer = 0; - - DeathCount = 0; + Initialize(); Creature* pMember = NULL; for (uint8 i = 0; i < 4; ++i) @@ -263,8 +276,6 @@ public: if (Creature* VoiceTrigger = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BLOOD_ELF_COUNCIL_VOICE))) VoiceTrigger->AI()->EnterEvadeMode(); - EventBegun = false; - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetDisplayId(11686); @@ -451,7 +462,19 @@ public: struct boss_gathios_the_shattererAI : public boss_illidari_councilAI { - boss_gathios_the_shattererAI(Creature* creature) : boss_illidari_councilAI(creature) { } + boss_gathios_the_shattererAI(Creature* creature) : boss_illidari_councilAI(creature) + { + Initialize(); + } + + void Initialize() + { + ConsecrationTimer = 40000; + HammerOfJusticeTimer = 10000; + SealTimer = 40000; + AuraTimer = 90000; + BlessingTimer = 60000; + } uint32 ConsecrationTimer; uint32 HammerOfJusticeTimer; @@ -461,11 +484,7 @@ public: void Reset() override { - ConsecrationTimer = 40000; - HammerOfJusticeTimer = 10000; - SealTimer = 40000; - AuraTimer = 90000; - BlessingTimer = 60000; + Initialize(); } void KilledUnit(Unit* /*victim*/) override @@ -583,7 +602,20 @@ public: struct boss_high_nethermancer_zerevorAI : public boss_illidari_councilAI { - boss_high_nethermancer_zerevorAI(Creature* creature) : boss_illidari_councilAI(creature) { } + boss_high_nethermancer_zerevorAI(Creature* creature) : boss_illidari_councilAI(creature) + { + Initialize(); + } + + void Initialize() + { + BlizzardTimer = urand(30, 91) * 1000; + FlamestrikeTimer = urand(30, 91) * 1000; + ArcaneBoltTimer = 10000; + DampenMagicTimer = 2000; + ArcaneExplosionTimer = 14000; + Cooldown = 0; + } uint32 BlizzardTimer; uint32 FlamestrikeTimer; @@ -594,12 +626,7 @@ public: void Reset() override { - BlizzardTimer = urand(30, 91) * 1000; - FlamestrikeTimer = urand(30, 91) * 1000; - ArcaneBoltTimer = 10000; - DampenMagicTimer = 2000; - ArcaneExplosionTimer = 14000; - Cooldown = 0; + Initialize(); } void KilledUnit(Unit* /*victim*/) override @@ -687,7 +714,18 @@ public: struct boss_lady_malandeAI : public boss_illidari_councilAI { - boss_lady_malandeAI(Creature* creature) : boss_illidari_councilAI(creature) { } + boss_lady_malandeAI(Creature* creature) : boss_illidari_councilAI(creature) + { + Initialize(); + } + + void Initialize() + { + EmpoweredSmiteTimer = 38000; + CircleOfHealingTimer = 20000; + DivineWrathTimer = 40000; + ReflectiveShieldTimer = 0; + } uint32 EmpoweredSmiteTimer; uint32 CircleOfHealingTimer; @@ -696,10 +734,7 @@ public: void Reset() override { - EmpoweredSmiteTimer = 38000; - CircleOfHealingTimer = 20000; - DivineWrathTimer = 40000; - ReflectiveShieldTimer = 0; + Initialize(); } void KilledUnit(Unit* /*victim*/) override @@ -765,9 +800,19 @@ public: struct boss_veras_darkshadowAI : public boss_illidari_councilAI { - boss_veras_darkshadowAI(Creature* creature) : boss_illidari_councilAI(creature) { } + boss_veras_darkshadowAI(Creature* creature) : boss_illidari_councilAI(creature) + { + Initialize(); + } - uint64 EnvenomTargetGUID; + void Initialize() + { + DeadlyPoisonTimer = 20000; + VanishTimer = urand(60, 121) * 1000; + AppearEnvenomTimer = 150000; + + HasVanished = false; + } uint32 DeadlyPoisonTimer; uint32 VanishTimer; @@ -777,13 +822,7 @@ public: void Reset() override { - EnvenomTargetGUID = 0; - - DeadlyPoisonTimer = 20000; - VanishTimer = urand(60, 121) * 1000; - AppearEnvenomTimer = 150000; - - HasVanished = false; + Initialize(); me->SetVisible(true); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp index 05db2c12b90..ca04d41e3c8 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp @@ -111,9 +111,19 @@ public: { boss_fathomlord_karathressAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + CataclysmicBolt_Timer = 10000; + Enrage_Timer = 600000; //10 minutes + SearNova_Timer = 20000 + rand32() % 40000; // 20 - 60 seconds + + BlessingOfTides = false; + } + InstanceScript* instance; uint32 CataclysmicBolt_Timer; @@ -126,11 +136,7 @@ public: void Reset() override { - CataclysmicBolt_Timer = 10000; - Enrage_Timer = 600000; //10 minutes - SearNova_Timer = 20000 + rand32() % 40000; // 20 - 60 seconds - - BlessingOfTides = false; + Initialize(); ObjectGuid RAdvisors[MAX_ADVISORS]; RAdvisors[0] = instance->GetGuidData(DATA_SHARKKIS); @@ -304,9 +310,20 @@ public: { boss_fathomguard_sharkkisAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + LeechingThrow_Timer = 20000; + TheBeastWithin_Timer = 30000; + Multishot_Timer = 15000; + Pet_Timer = 10000; + + pet = false; + } + InstanceScript* instance; uint32 LeechingThrow_Timer; @@ -320,12 +337,7 @@ public: void Reset() override { - LeechingThrow_Timer = 20000; - TheBeastWithin_Timer = 30000; - Multishot_Timer = 15000; - Pet_Timer = 10000; - - pet = false; + Initialize(); Creature* Pet = ObjectAccessor::GetCreature(*me, SummonedPet); if (Pet && Pet->IsAlive()) @@ -442,9 +454,18 @@ public: { boss_fathomguard_tidalvessAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + FrostShock_Timer = 25000; + Spitfire_Timer = 60000; + PoisonCleansing_Timer = 30000; + Earthbind_Timer = 45000; + } + InstanceScript* instance; uint32 FrostShock_Timer; @@ -454,10 +475,7 @@ public: void Reset() override { - FrostShock_Timer = 25000; - Spitfire_Timer = 60000; - PoisonCleansing_Timer = 30000; - Earthbind_Timer = 45000; + Initialize(); instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); } @@ -558,9 +576,18 @@ public: { boss_fathomguard_caribdisAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + WaterBoltVolley_Timer = 35000; + TidalSurge_Timer = 15000 + rand32() % 5000; + Heal_Timer = 55000; + Cyclone_Timer = 30000 + rand32() % 10000; + } + InstanceScript* instance; uint32 WaterBoltVolley_Timer; @@ -570,10 +597,7 @@ public: void Reset() override { - WaterBoltVolley_Timer = 35000; - TidalSurge_Timer = 15000 + rand32() % 5000; - Heal_Timer = 55000; - Cyclone_Timer = 30000 + rand32() % 10000; + Initialize(); instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); } diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp index cea6a1854a1..d6117c9053f 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp @@ -93,9 +93,27 @@ public: { boss_hydross_the_unstableAI(Creature* creature) : ScriptedAI(creature), Summons(me) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + beams[0].Clear(); + beams[1].Clear(); + PosCheck_Timer = 2500; + MarkOfHydross_Timer = 15000; + MarkOfCorruption_Timer = 15000; + WaterTomb_Timer = 7000; + VileSludge_Timer = 7000; + MarkOfHydross_Count = 0; + MarkOfCorruption_Count = 0; + EnrageTimer = 600000; + + CorruptedForm = false; + beam = false; + } + InstanceScript* instance; ObjectGuid beams[2]; @@ -114,18 +132,8 @@ public: void Reset() override { DeSummonBeams(); - beams[0].Clear(); - beams[1].Clear(); - PosCheck_Timer = 2500; - MarkOfHydross_Timer = 15000; - MarkOfCorruption_Timer = 15000; - WaterTomb_Timer = 7000; - VileSludge_Timer = 7000; - MarkOfHydross_Count = 0; - MarkOfCorruption_Count = 0; - EnrageTimer = 600000; + Initialize(); - CorruptedForm = false; me->SetMeleeDamageSchool(SPELL_SCHOOL_FROST); me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false); @@ -133,7 +141,6 @@ public: me->SetDisplayId(MODEL_CLEAN); instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); - beam = false; Summons.DespawnAll(); } diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp index 4630620c585..450ac350f0c 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp @@ -147,12 +147,34 @@ public: { boss_lady_vashjAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); Intro = false; JustCreated = true; + CanAttack = false; creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); // set it only once on Creature create (no need do intro if wiped) } + void Initialize() + { + AggroTimer = 19000; + ShockBlastTimer = 1 + rand32() % 60000; + EntangleTimer = 30000; + StaticChargeTimer = 10000 + rand32() % 15000; + ForkedLightningTimer = 2000; + CheckTimer = 15000; + EnchantedElementalTimer = 5000; + TaintedElementalTimer = 50000; + CoilfangEliteTimer = 45000 + rand32() % 5000; + CoilfangStriderTimer = 60000 + rand32() % 10000; + SummonSporebatTimer = 10000; + SummonSporebatStaticTimer = 30000; + EnchantedElementalPos = 0; + Phase = 0; + + Entangle = false; + } + InstanceScript* instance; ObjectGuid ShieldGeneratorChannel[4]; @@ -179,22 +201,8 @@ public: void Reset() override { - AggroTimer = 19000; - ShockBlastTimer = 1 + rand32() % 60000; - EntangleTimer = 30000; - StaticChargeTimer = 10000 + rand32() % 15000; - ForkedLightningTimer = 2000; - CheckTimer = 15000; - EnchantedElementalTimer = 5000; - TaintedElementalTimer = 50000; - CoilfangEliteTimer = 45000 + rand32() % 5000; - CoilfangStriderTimer = 60000 + rand32() % 10000; - SummonSporebatTimer = 10000; - SummonSporebatStaticTimer = 30000; - EnchantedElementalPos = 0; - Phase = 0; + Initialize(); - Entangle = false; if (JustCreated) { CanAttack = false; @@ -555,9 +563,20 @@ public: { npc_enchanted_elementalAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + Move = 0; + Phase = 1; + + X = ElementWPPos[0][0]; + Y = ElementWPPos[0][1]; + Z = ElementWPPos[0][2]; + } + InstanceScript* instance; uint32 Move; uint32 Phase; @@ -569,12 +588,7 @@ public: { me->SetSpeed(MOVE_WALK, 0.6f); // walk me->SetSpeed(MOVE_RUN, 0.6f); // run - Move = 0; - Phase = 1; - - X = ElementWPPos[0][0]; - Y = ElementWPPos[0][1]; - Z = ElementWPPos[0][2]; + Initialize(); //search for nearest waypoint (up on stairs) for (uint32 i = 1; i < 8; ++i) @@ -644,9 +658,16 @@ public: { npc_tainted_elementalAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + PoisonBoltTimer = 5000 + rand32() % 5000; + DespawnTimer = 30000; + } + InstanceScript* instance; uint32 PoisonBoltTimer; @@ -654,8 +675,7 @@ public: void Reset() override { - PoisonBoltTimer = 5000 + rand32() % 5000; - DespawnTimer = 30000; + Initialize(); } void JustDied(Unit* /*killer*/) override @@ -712,10 +732,19 @@ public: { npc_toxic_sporebatAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); EnterEvadeMode(); } + void Initialize() + { + MovementTimer = 0; + ToxicSporeTimer = 5000; + BoltTimer = 5500; + CheckTimer = 1000; + } + InstanceScript* instance; uint32 MovementTimer; @@ -727,10 +756,7 @@ public: { me->SetDisableGravity(true); me->setFaction(14); - MovementTimer = 0; - ToxicSporeTimer = 5000; - BoltTimer = 5500; - CheckTimer = 1000; + Initialize(); } void MoveInLineOfSight(Unit* /*who*/) override @@ -808,17 +834,23 @@ public: { npc_shield_generator_channelAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); instance = creature->GetInstanceScript(); } + void Initialize() + { + CheckTimer = 0; + Cast = false; + } + InstanceScript* instance; uint32 CheckTimer; bool Cast; void Reset() override { - CheckTimer = 0; - Cast = false; + Initialize(); me->SetDisplayId(11686); // invisible me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index b5e54fe85f0..5c95376cdfc 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -73,13 +73,6 @@ public: } } - uint64 OgreGUID; - - void Reset() override - { - OgreGUID = 0; - } - void UpdateAI(uint32 /*diff*/) override { } }; |