aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp1
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp1
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp1
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp207
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp50
-rw-r--r--src/server/scripts/Northrend/zone_howling_fjord.cpp27
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp12
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp24
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp1
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp69
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp46
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp47
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp28
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp14
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp12
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp28
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp21
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_gruul.cpp24
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp72
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp34
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp12
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp42
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp16
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp5
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp52
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp16
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp33
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp23
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp40
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp45
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp148
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp18
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp14
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp14
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp18
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp36
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp24
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp12
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp20
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp20
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp14
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp20
-rw-r--r--src/server/scripts/Outland/boss_doomwalker.cpp8
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp36
-rw-r--r--src/server/scripts/Outland/zone_hellfire_peninsula.cpp24
-rw-r--r--src/server/scripts/Outland/zone_nagrand.cpp30
-rw-r--r--src/server/scripts/Outland/zone_netherstorm.cpp40
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp42
50 files changed, 1112 insertions, 431 deletions
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
index 3b3f6eb247a..4c5994f6b3a 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
@@ -1061,6 +1061,7 @@ BfWGGameObjectBuilding::BfWGGameObjectBuilding(BattlefieldWG* wg, WintergraspGam
_type = type;
_worldState = worldState;
_state = BATTLEFIELD_WG_OBJECTSTATE_NONE;
+ _staticTowerInfo = nullptr;
}
void BfWGGameObjectBuilding::Rebuild()
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
index 3f74ed2eb88..a654a37e2f5 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
@@ -73,6 +73,7 @@ public:
{
Initialize();
instance = creature->GetInstanceScript();
+ uiOutroStep = 0;
}
void Initialize()
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index ff104a28197..fd5e328b7f2 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -356,6 +356,7 @@ public:
step = 0;
gossipStep = 0;
bossEvent = 0;
+ WavesCounter = 0;
}
void Initialize()
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
index 7e83c24e0dd..fa4627e443b 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
@@ -346,7 +346,6 @@ public:
uint32 uiBladeStormTimer;
uint32 uiInterceptTimer;
uint32 uiMortalStrikeTimer;
- uint32 uiAttackTimer;
bool bDone;
bool bHome;
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index bd1a345e55b..eb01dfab141 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -345,6 +345,7 @@ public:
Initialize();
_despawned = false; // We determine if Malygos will be realocated to spawning position on reset triggered by boss despawn on evade
_flySpeed = me->GetSpeed(MOVE_FLIGHT); // Get initial fly speed, otherwise on each wipe fly speed would add up if we get it
+ _phase = PHASE_NOT_STARTED;
}
void Initialize()
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 7824fe86c87..6af60b322a7 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -67,7 +67,17 @@ public:
struct npc_sinkhole_kill_creditAI : public ScriptedAI
{
- npc_sinkhole_kill_creditAI(Creature* creature) : ScriptedAI(creature){ }
+ npc_sinkhole_kill_creditAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ phaseTimer = 500;
+ phase = 0;
+ casterGuid.Clear();
+ }
uint32 phaseTimer;
uint8 phase;
@@ -75,9 +85,7 @@ public:
void Reset() override
{
- phaseTimer = 500;
- phase = 0;
- casterGuid.Clear();
+ Initialize();
}
void SpellHit(Unit* caster, const SpellInfo* spell) override
@@ -447,7 +455,18 @@ public:
struct npc_nesingwary_trapperAI : public ScriptedAI
{
- npc_nesingwary_trapperAI(Creature* creature) : ScriptedAI(creature) { creature->SetVisible(false); }
+ npc_nesingwary_trapperAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ me->SetVisible(false);
+ phaseTimer = 2500;
+ phase = 1;
+ go_caribouGUID.Clear();
+ }
ObjectGuid go_caribouGUID;
uint8 phase;
@@ -455,10 +474,7 @@ public:
void Reset() override
{
- me->SetVisible(false);
- phaseTimer = 2500;
- phase = 1;
- go_caribouGUID.Clear();
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -576,7 +592,16 @@ public:
struct npc_lurgglbrAI : public npc_escortAI
{
- npc_lurgglbrAI(Creature* creature) : npc_escortAI(creature){ }
+ npc_lurgglbrAI(Creature* creature) : npc_escortAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ IntroTimer = 0;
+ IntroPhase = 0;
+ }
uint32 IntroTimer;
uint32 IntroPhase;
@@ -584,10 +609,7 @@ public:
void Reset() override
{
if (!HasEscortState(STATE_ESCORT_ESCORTING))
- {
- IntroTimer = 0;
- IntroPhase = 0;
- }
+ Initialize();
}
void WaypointReached(uint32 waypointId) override
@@ -723,6 +745,12 @@ public:
{
npc_nexus_drake_hatchlingAI(Creature* creature) : FollowerAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ WithRedDragonBlood = false;
}
ObjectGuid HarpoonerGUID;
@@ -730,7 +758,7 @@ public:
void Reset() override
{
- WithRedDragonBlood = false;
+ Initialize();
}
void EnterCombat(Unit* who) override
@@ -862,7 +890,26 @@ public:
struct npc_thassarianAI : public npc_escortAI
{
- npc_thassarianAI(Creature* creature) : npc_escortAI(creature) { }
+ npc_thassarianAI(Creature* creature) : npc_escortAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ arthasGUID.Clear();
+ talbotGUID.Clear();
+ leryssaGUID.Clear();
+ arlosGUID.Clear();
+
+ arthasInPosition = false;
+ arlosInPosition = false;
+ leryssaInPosition = false;
+ talbotInPosition = false;
+
+ phase = 0;
+ phaseTimer = 0;
+ }
ObjectGuid arthasGUID;
ObjectGuid talbotGUID;
@@ -882,18 +929,7 @@ public:
me->RestoreFaction();
me->RemoveStandFlags(UNIT_STAND_STATE_SIT);
- arthasGUID.Clear();
- talbotGUID.Clear();
- leryssaGUID.Clear();
- arlosGUID.Clear();
-
- arthasInPosition = false;
- arlosInPosition = false;
- leryssaInPosition = false;
- talbotInPosition = false;
-
- phase = 0;
- phaseTimer = 0;
+ Initialize();
}
void WaypointReached(uint32 waypointId) override
@@ -1239,7 +1275,20 @@ public:
struct npc_counselor_talbotAI : public ScriptedAI
{
- npc_counselor_talbotAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_counselor_talbotAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ leryssaGUID.Clear();
+ arlosGUID.Clear();
+ bCheck = false;
+ shadowBoltTimer = urand(5000, 12000);
+ deflectionTimer = urand(20000, 25000);
+ soulBlastTimer = urand(12000, 18000);
+ }
ObjectGuid leryssaGUID;
ObjectGuid arlosGUID;
@@ -1252,12 +1301,7 @@ public:
void Reset() override
{
- leryssaGUID.Clear();
- arlosGUID.Clear();
- bCheck = false;
- shadowBoltTimer = urand(5000, 12000);
- deflectionTimer = urand(20000, 25000);
- soulBlastTimer = urand(12000, 18000);
+ Initialize();
}
void MovementInform(uint32 uiType, uint32 /*uiId*/) override
{
@@ -1487,14 +1531,22 @@ public:
struct npc_beryl_sorcererAI : public FollowerAI
{
- npc_beryl_sorcererAI(Creature* creature) : FollowerAI(creature) { }
+ npc_beryl_sorcererAI(Creature* creature) : FollowerAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ bEnslaved = false;
+ }
bool bEnslaved;
void Reset() override
{
me->SetReactState(REACT_AGGRESSIVE);
- bEnslaved = false;
+ Initialize();
}
void EnterCombat(Unit* who) override
@@ -1571,7 +1623,15 @@ public:
struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
{
- npc_imprisoned_beryl_sorcererAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_imprisoned_beryl_sorcererAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ rebuff = 0;
+ }
uint32 rebuff;
@@ -1580,7 +1640,7 @@ public:
if (me->GetReactState() != REACT_PASSIVE)
me->SetReactState(REACT_PASSIVE);
- rebuff = 0;
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -1775,12 +1835,21 @@ public:
struct npc_bonker_togglevoltAI : public npc_escortAI
{
- npc_bonker_togglevoltAI(Creature* creature) : npc_escortAI(creature) { }
+ npc_bonker_togglevoltAI(Creature* creature) : npc_escortAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Bonker_agro = 0;
+ }
+
uint32 Bonker_agro;
void Reset() override
{
- Bonker_agro=0;
+ Initialize();
SetDespawnAtFar(false);
}
@@ -1873,15 +1942,23 @@ public:
struct npc_trapped_mammoth_calfAI : public ScriptedAI
{
- npc_trapped_mammoth_calfAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_trapped_mammoth_calfAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ uiTimer = 1500;
+ bStarted = false;
+ }
uint32 uiTimer;
bool bStarted;
void Reset() override
{
- uiTimer = 1500;
- bStarted = false;
+ Initialize();
GameObject* pTrap = NULL;
for (uint8 i = 0; i < MammothTrapsNum; ++i)
@@ -2003,13 +2080,21 @@ public:
struct npc_valiance_keep_cannoneerAI : public ScriptedAI
{
- npc_valiance_keep_cannoneerAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_valiance_keep_cannoneerAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ uiTimer = urand(13000, 18000);
+ }
uint32 uiTimer;
void Reset() override
{
- uiTimer = urand(13000, 18000);
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -2061,13 +2146,21 @@ public:
struct npc_warmage_coldarraAI : public ScriptedAI
{
- npc_warmage_coldarraAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_warmage_coldarraAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ m_uiTimer = 0;
+ }
uint32 m_uiTimer; //Timer until recast
void Reset() override
{
- m_uiTimer = 0;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -2180,8 +2273,17 @@ public:
{
npc_hidden_cultistAI(Creature* creature) : ScriptedAI(creature)
{
- uiEmoteState = creature->GetUInt32Value(UNIT_NPC_EMOTESTATE);
- uiNpcFlags = creature->GetUInt32Value(UNIT_NPC_FLAGS);
+ Initialize();
+ uiEmoteState = creature->GetUInt32Value(UNIT_NPC_EMOTESTATE);
+ uiNpcFlags = creature->GetUInt32Value(UNIT_NPC_FLAGS);
+ }
+
+ void Initialize()
+ {
+ uiEventTimer = 0;
+ uiEventPhase = 0;
+
+ uiPlayerGUID.Clear();
}
uint32 uiEmoteState;
@@ -2200,10 +2302,7 @@ public:
if (uiNpcFlags)
me->SetUInt32Value(UNIT_NPC_FLAGS, uiNpcFlags);
- uiEventTimer = 0;
- uiEventPhase = 0;
-
- uiPlayerGUID.Clear();
+ Initialize();
DoCast(SPELL_SHROUD_OF_THE_DEATH_CULTIST);
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
index e60c2162339..198fd53438a 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -279,12 +279,20 @@ public:
struct npc_outhouse_bunnyAI : public ScriptedAI
{
- npc_outhouse_bunnyAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_outhouse_bunnyAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
_counter = 0;
- _gender = 0;
+ _gender = 0;
+ }
+
+ void Reset() override
+ {
+ Initialize();
}
void SetData(uint32 Type, uint32 Data) override
@@ -341,13 +349,21 @@ public:
struct npc_tallhorn_stagAI : public ScriptedAI
{
- npc_tallhorn_stagAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_tallhorn_stagAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
_phase = 1;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 /*diff*/) override
{
if (_phase == 1)
@@ -459,13 +475,21 @@ public:
struct npc_wounded_skirmisherAI : public ScriptedAI
{
- npc_wounded_skirmisherAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_wounded_skirmisherAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
_despawnTimer = 5000;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void MovementInform(uint32, uint32 id) override
{
if (id == 1)
@@ -651,12 +675,20 @@ public:
struct npc_lake_frogAI : public ScriptedAI
{
- npc_lake_frogAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_lake_frogAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
_following = false;
_runningScript = false;
+ }
+
+ void Reset() override
+ {
+ Initialize();
if (me->GetEntry() == NPC_LAKE_FROG_QUEST)
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp
index 53dc2a62f90..adf2af50a8e 100644
--- a/src/server/scripts/Northrend/zone_howling_fjord.cpp
+++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp
@@ -74,13 +74,22 @@ public:
struct npc_Apothecary_HanesAI : public npc_escortAI
{
- npc_Apothecary_HanesAI(Creature* creature) : npc_escortAI(creature){ }
+ npc_Apothecary_HanesAI(Creature* creature) : npc_escortAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ PotTimer = 10000; //10 sec cooldown on potion
+ }
+
uint32 PotTimer;
void Reset() override
{
SetDespawnAtFar(false);
- PotTimer = 10000; //10 sec cooldown on potion
+ Initialize();
}
void JustDied(Unit* /*killer*/) override
@@ -318,15 +327,23 @@ public:
/// @todo make prisoners help (unclear if summoned or using npc's from surrounding cages (summon inside small cages?))
struct npc_daegarnAI : public ScriptedAI
{
- npc_daegarnAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_daegarnAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ bEventInProgress = false;
+ uiPlayerGUID.Clear();
+ }
bool bEventInProgress;
ObjectGuid uiPlayerGUID;
void Reset() override
{
- bEventInProgress = false;
- uiPlayerGUID.Clear();
+ Initialize();
}
void StartEvent(ObjectGuid uiGUID)
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index 44f559bfa79..cde2cf94e3c 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -222,13 +222,21 @@ public:
struct npc_crusade_recruitAI : public ScriptedAI
{
- npc_crusade_recruitAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_crusade_recruitAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ _heading = me->GetOrientation();
+ }
void Reset() override
{
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER);
- _heading = me->GetOrientation();
+ Initialize();
}
void UpdateAI(uint32 diff) override
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 99cda91b866..08d042582e5 100644
--- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
+++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
@@ -170,9 +170,23 @@ public:
{
boss_exarch_maladaarAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
HasTaunted = false;
}
+ void Initialize()
+ {
+ soulmodel = 0;
+ soulholder.Clear();
+ soulclass = 0;
+
+ Fear_timer = 15000 + rand32() % 5000;
+ Ribbon_of_Souls_timer = 5000;
+ StolenSoul_Timer = 25000 + rand32() % 10000;
+
+ Avatar_summoned = false;
+ }
+
uint32 soulmodel;
ObjectGuid soulholder;
uint8 soulclass;
@@ -186,15 +200,7 @@ public:
void Reset() override
{
- soulmodel = 0;
- soulholder.Clear();
- soulclass = 0;
-
- Fear_timer = 15000 + rand32() % 5000;
- Ribbon_of_Souls_timer = 5000;
- StolenSoul_Timer = 25000 + rand32() % 10000;
-
- Avatar_summoned = false;
+ Initialize();
}
void MoveInLineOfSight(Unit* who) override
diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
index aa0f3daeef0..9e9f3f60a59 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
@@ -265,7 +265,6 @@ public:
uint32 SummonDoomBlossomTimer;
uint32 EnrageTimer;
uint32 CrushingShadowsTimer;
- uint32 ShadowOfDeathTimer;
uint32 SummonShadowsTimer;
uint32 RandomYellTimer;
uint32 AggroTimer;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
index 9f51155b334..94b75727d69 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
@@ -83,6 +83,13 @@ public:
{
npc_inner_demonAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ShadowBolt_Timer = 10000;
+ Link_Timer = 1000;
}
uint32 ShadowBolt_Timer;
@@ -92,8 +99,7 @@ public:
void Reset() override
{
- ShadowBolt_Timer = 10000;
- Link_Timer = 1000;
+ Initialize();
}
void SetGUID(ObjectGuid guid, int32 id/* = 0 */) override
@@ -187,10 +193,30 @@ public:
{
boss_leotheras_the_blindAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
creature->GetPosition(x, y, z);
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ BanishTimer = 1000;
+ Whirlwind_Timer = 15000;
+ ChaosBlast_Timer = 1000;
+ SwitchToDemon_Timer = 45000;
+ SwitchToHuman_Timer = 60000;
+ Berserk_Timer = 600000;
+ InnerDemons_Timer = 30000;
+
+ DealDamage = true;
+ DemonForm = false;
+ IsFinalForm = false;
+ NeedThreatReset = false;
+ EnrageUsed = false;
+ memset(InnderDemon, 0, sizeof(InnderDemon));
+ InnerDemon_Count = 0;
+ }
+
InstanceScript* instance;
uint32 Whirlwind_Timer;
@@ -216,21 +242,8 @@ public:
void Reset() override
{
CheckChannelers();
- BanishTimer = 1000;
- Whirlwind_Timer = 15000;
- ChaosBlast_Timer = 1000;
- SwitchToDemon_Timer = 45000;
- SwitchToHuman_Timer = 60000;
- Berserk_Timer = 600000;
- InnerDemons_Timer = 30000;
+ Initialize();
me->SetCanDualWield(true);
- DealDamage = true;
- DemonForm = false;
- IsFinalForm = false;
- NeedThreatReset = false;
- EnrageUsed = false;
- memset(InnderDemon, 0, sizeof(InnderDemon));
- InnerDemon_Count = 0;
me->SetSpeed(MOVE_RUN, 2.0f, true);
me->SetDisplayId(MODEL_NIGHTELF);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
@@ -600,15 +613,23 @@ public:
struct boss_leotheras_the_blind_demonformAI : public ScriptedAI
{
- boss_leotheras_the_blind_demonformAI(Creature* creature) : ScriptedAI(creature) { }
+ boss_leotheras_the_blind_demonformAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ChaosBlast_Timer = 1000;
+ DealDamage = true;
+ }
uint32 ChaosBlast_Timer;
bool DealDamage;
void Reset() override
{
- ChaosBlast_Timer = 1000;
- DealDamage = true;
+ Initialize();
}
void StartEvent()
@@ -675,10 +696,17 @@ public:
{
npc_greyheart_spellbinderAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
AddedBanish = false;
}
+ void Initialize()
+ {
+ Mindblast_Timer = urand(3000, 8000);
+ Earthshock_Timer = urand(5000, 10000);
+ }
+
InstanceScript* instance;
ObjectGuid leotherasGUID;
@@ -690,8 +718,7 @@ public:
void Reset() override
{
- Mindblast_Timer = urand(3000, 8000);
- Earthshock_Timer = urand(5000, 10000);
+ Initialize();
instance->SetGuidData(DATA_LEOTHERAS_EVENT_STARTER, ObjectGuid::Empty);
Creature* leotheras = ObjectAccessor::GetCreature(*me, leotherasGUID);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
index 83b8722ce47..0fffdaa0554 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
@@ -88,10 +88,30 @@ public:
{
boss_the_lurker_belowAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{
+ Initialize();
SetCombatMovement(false);
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ SpoutAnimTimer = 1000;
+ RotTimer = 0;
+ WaterboltTimer = 15000; // give time to get in range when fight starts
+ SpoutTimer = 45000;
+ WhirlTimer = 18000; // after avery spout
+ PhaseTimer = 120000;
+ GeyserTimer = rand32() % 5000 + 15000;
+ CheckTimer = 15000; // give time to get in range when fight starts
+ WaitTimer = 60000; // never reached
+ WaitTimer2 = 60000; // never reached
+
+ Submerged = true; // will be false at combat start
+ Spawned = false;
+ InRange = false;
+ CanStartEvent = false;
+ }
+
InstanceScript* instance;
SummonList Summons;
@@ -121,21 +141,7 @@ public:
{
me->SetSwim(true);
me->SetDisableGravity(true);
- SpoutAnimTimer = 1000;
- RotTimer = 0;
- WaterboltTimer = 15000; // give time to get in range when fight starts
- SpoutTimer = 45000;
- WhirlTimer = 18000; // after avery spout
- PhaseTimer = 120000;
- GeyserTimer = rand32() % 5000 + 15000;
- CheckTimer = 15000; // give time to get in range when fight starts
- WaitTimer = 60000; // never reached
- WaitTimer2 = 60000; // never reached
-
- Submerged = true; // will be false at combat start
- Spawned = false;
- InRange = false;
- CanStartEvent = false;
+ Initialize();
Summons.DespawnAll();
@@ -374,16 +380,22 @@ public:
{
npc_coilfang_ambusherAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
SetCombatMovement(false);
}
+ void Initialize()
+ {
+ MultiShotTimer = 10000;
+ ShootBowTimer = 4000;
+ }
+
uint32 MultiShotTimer;
uint32 ShootBowTimer;
void Reset() override
{
- MultiShotTimer = 10000;
- ShootBowTimer = 4000;
+ Initialize();
}
void MoveInLineOfSight(Unit* who) override
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp
index 0a538ac0c39..ccf7903ebe3 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp
@@ -98,12 +98,28 @@ public:
{
boss_morogrim_tidewalkerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
+ Playercount = 0;
+ counter = 0;
}
- InstanceScript* instance;
+ void Initialize()
+ {
+ TidalWave_Timer = 10000;
+ WateryGrave_Timer = 30000;
+ Earthquake_Timer = 40000;
+ WateryGlobules_Timer = 0;
+ globulespell[0] = SPELL_SUMMON_WATER_GLOBULE_1;
+ globulespell[1] = SPELL_SUMMON_WATER_GLOBULE_2;
+ globulespell[2] = SPELL_SUMMON_WATER_GLOBULE_3;
+ globulespell[3] = SPELL_SUMMON_WATER_GLOBULE_4;
+
+ Earthquake = false;
+ Phase2 = false;
+ }
- Map::PlayerList const* PlayerList;
+ InstanceScript* instance;
uint32 TidalWave_Timer;
uint32 WateryGrave_Timer;
@@ -118,17 +134,7 @@ public:
void Reset() override
{
- TidalWave_Timer = 10000;
- WateryGrave_Timer = 30000;
- Earthquake_Timer = 40000;
- WateryGlobules_Timer = 0;
- globulespell[0] = SPELL_SUMMON_WATER_GLOBULE_1;
- globulespell[1] = SPELL_SUMMON_WATER_GLOBULE_2;
- globulespell[2] = SPELL_SUMMON_WATER_GLOBULE_3;
- globulespell[3] = SPELL_SUMMON_WATER_GLOBULE_4;
-
- Earthquake = false;
- Phase2 = false;
+ Initialize();
instance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED);
}
@@ -154,8 +160,7 @@ public:
void EnterCombat(Unit* /*who*/) override
{
- PlayerList = &me->GetMap()->GetPlayers();
- Playercount = PlayerList->getSize();
+ Playercount = me->GetMap()->GetPlayers().getSize();
StartEvent();
}
@@ -296,13 +301,21 @@ public:
struct npc_water_globuleAI : public ScriptedAI
{
- npc_water_globuleAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_water_globuleAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Check_Timer = 1000;
+ }
uint32 Check_Timer;
void Reset() override
{
- Check_Timer = 1000;
+ Initialize();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp
index 3207727b5d1..745c44eebec 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp
@@ -64,9 +64,21 @@ public:
{
boss_mekgineer_steamriggerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ Shrink_Timer = 20000;
+ Saw_Blade_Timer = 15000;
+ Electrified_Net_Timer = 10000;
+
+ Summon75 = false;
+ Summon50 = false;
+ Summon25 = false;
+ }
+
InstanceScript* instance;
uint32 Shrink_Timer;
@@ -78,13 +90,7 @@ public:
void Reset() override
{
- Shrink_Timer = 20000;
- Saw_Blade_Timer = 15000;
- Electrified_Net_Timer = 10000;
-
- Summon75 = false;
- Summon50 = false;
- Summon25 = false;
+ Initialize();
instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, NOT_STARTED);
}
@@ -201,16 +207,22 @@ public:
{
npc_steamrigger_mechanicAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ Repair_Timer = 2000;
+ }
+
InstanceScript* instance;
uint32 Repair_Timer;
void Reset() override
{
- Repair_Timer = 2000;
+ Initialize();
}
void MoveInLineOfSight(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
index 8024d5138eb..16b84e53cfd 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
@@ -110,9 +110,18 @@ public:
{
boss_warlord_kalithreshAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ Reflection_Timer = 10000;
+ Impale_Timer = 7000 + rand32() % 7000;
+ Rage_Timer = 45000;
+ CanRage = false;
+ }
+
InstanceScript* instance;
uint32 Reflection_Timer;
@@ -122,10 +131,7 @@ public:
void Reset() override
{
- Reflection_Timer = 10000;
- Impale_Timer = 7000 + rand32() % 7000;
- Rage_Timer = 45000;
- CanRage = false;
+ Initialize();
instance->SetBossState(DATA_WARLORD_KALITHRESH, NOT_STARTED);
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp
index 6fb41f2eab5..546ed38082f 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp
@@ -48,12 +48,20 @@ class boss_rokmar_the_crackler : public CreatureScript
struct boss_rokmar_the_cracklerAI : public BossAI
{
- boss_rokmar_the_cracklerAI(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER) { }
+ boss_rokmar_the_cracklerAI(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ rokmarFrenzy = false;
+ }
void Reset() override
{
_Reset();
- rokmarFrenzy = false;
+ Initialize();
}
void JustDied(Unit* /*killer*/) override
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp
index 90853138448..f097b2c1551 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp
@@ -50,6 +50,14 @@ public:
{
boss_hungarfenAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Root = false;
+ Mushroom_Timer = 5000; // 1 mushroom after 5s, then one per 10s. This should be different in heroic mode
+ AcidGeyser_Timer = 10000;
}
bool Root;
@@ -58,9 +66,7 @@ public:
void Reset() override
{
- Root = false;
- Mushroom_Timer = 5000; // 1 mushroom after 5s, then one per 10s. This should be different in heroic mode
- AcidGeyser_Timer = 10000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
@@ -116,7 +122,17 @@ public:
struct npc_underbog_mushroomAI : public ScriptedAI
{
- npc_underbog_mushroomAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_underbog_mushroomAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Stop = false;
+ Grow_Timer = 0;
+ Shrink_Timer = 20000;
+ }
bool Stop;
uint32 Grow_Timer;
@@ -124,9 +140,7 @@ public:
void Reset() override
{
- Stop = false;
- Grow_Timer = 0;
- Shrink_Timer = 20000;
+ Initialize();
DoCast(me, SPELL_PUTRID_MUSHROOM, true);
DoCast(me, SPELL_SPORE_CLOUD, true);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp
index d3b11d481fb..e8ce29e9f1a 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp
@@ -56,6 +56,19 @@ public:
{
boss_the_black_stalkerAI(Creature* creature) : ScriptedAI(creature), Striders(creature)
{
+ Initialize();
+ InAir = false;
+ }
+
+ void Initialize()
+ {
+ Levitate_Timer = 12000;
+ ChainLightning_Timer = 6000;
+ StaticCharge_Timer = 10000;
+ SporeStriders_Timer = 10000 + rand32() % 5000;
+ check_Timer = 5000;
+ LevitatedTarget.Clear();
+ LevitatedTarget_Timer = 0;
}
uint32 SporeStriders_Timer;
@@ -70,13 +83,7 @@ public:
void Reset() override
{
- Levitate_Timer = 12000;
- ChainLightning_Timer = 6000;
- StaticCharge_Timer = 10000;
- SporeStriders_Timer = 10000 + rand32() % 5000;
- check_Timer = 5000;
- LevitatedTarget.Clear();
- LevitatedTarget_Timer = 0;
+ Initialize();
Striders.DespawnAll();
}
diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
index 592ffc1f69e..2cee741cbf3 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
@@ -72,7 +72,21 @@ class boss_gruul : public CreatureScript
struct boss_gruulAI : public BossAI
{
- boss_gruulAI(Creature* creature) : BossAI(creature, DATA_GRUUL) { }
+ boss_gruulAI(Creature* creature) : BossAI(creature, DATA_GRUUL)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ m_uiGrowth_Timer = 30000;
+ m_uiCaveIn_Timer = 27000;
+ m_uiCaveIn_StaticTimer = 30000;
+ m_uiGroundSlamTimer = 35000;
+ m_bPerformingGroundSlam = false;
+ m_uiHurtfulStrike_Timer = 8000;
+ m_uiReverberation_Timer = 60000 + 45000;
+ }
uint32 m_uiGrowth_Timer;
uint32 m_uiCaveIn_Timer;
@@ -86,13 +100,7 @@ class boss_gruul : public CreatureScript
void Reset() override
{
_Reset();
- m_uiGrowth_Timer= 30000;
- m_uiCaveIn_Timer= 27000;
- m_uiCaveIn_StaticTimer = 30000;
- m_uiGroundSlamTimer= 35000;
- m_bPerformingGroundSlam= false;
- m_uiHurtfulStrike_Timer= 8000;
- m_uiReverberation_Timer= 60000+45000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
index 0fcc7310d07..4dcfe2be4cb 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
@@ -77,9 +77,21 @@ public:
{
boss_high_king_maulgarAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ ArcingSmash_Timer = 10000;
+ MightyBlow_Timer = 40000;
+ Whirlwind_Timer = 30000;
+ Charging_Timer = 0;
+ Roar_Timer = 0;
+
+ Phase2 = false;
+ }
+
InstanceScript* instance;
uint32 ArcingSmash_Timer;
@@ -92,16 +104,10 @@ public:
void Reset() override
{
- ArcingSmash_Timer = 10000;
- MightyBlow_Timer = 40000;
- Whirlwind_Timer = 30000;
- Charging_Timer = 0;
- Roar_Timer = 0;
+ Initialize();
DoCast(me, SPELL_DUAL_WIELD, false);
- Phase2 = false;
-
instance->SetBossState(DATA_MAULGAR, NOT_STARTED);
}
@@ -209,20 +215,26 @@ public:
{
boss_olm_the_summonerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ DarkDecay_Timer = 10000;
+ Summon_Timer = 15000;
+ DeathCoil_Timer = 20000;
+ }
+
uint32 DarkDecay_Timer;
uint32 Summon_Timer;
- uint32 DeathCoil_Timer;
+ uint32 DeathCoil_Timer;
InstanceScript* instance;
void Reset() override
{
- DarkDecay_Timer = 10000;
- Summon_Timer = 15000;
- DeathCoil_Timer = 20000;
+ Initialize();
instance->SetBossState(DATA_MAULGAR, NOT_STARTED);
}
@@ -305,9 +317,18 @@ public:
{
boss_kiggler_the_crazedAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ GreaterPolymorph_Timer = 5000;
+ LightningBolt_Timer = 10000;
+ ArcaneShock_Timer = 20000;
+ ArcaneExplosion_Timer = 30000;
+ }
+
uint32 GreaterPolymorph_Timer;
uint32 LightningBolt_Timer;
uint32 ArcaneShock_Timer;
@@ -317,10 +338,7 @@ public:
void Reset() override
{
- GreaterPolymorph_Timer = 5000;
- LightningBolt_Timer = 10000;
- ArcaneShock_Timer = 20000;
- ArcaneExplosion_Timer = 30000;
+ Initialize();
instance->SetBossState(DATA_MAULGAR, NOT_STARTED);
}
@@ -393,9 +411,17 @@ public:
{
boss_blindeye_the_seerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ GreaterPowerWordShield_Timer = 5000;
+ Heal_Timer = urand(25000, 40000);
+ PrayerofHealing_Timer = urand(45000, 55000);
+ }
+
uint32 GreaterPowerWordShield_Timer;
uint32 Heal_Timer;
uint32 PrayerofHealing_Timer;
@@ -404,9 +430,7 @@ public:
void Reset() override
{
- GreaterPowerWordShield_Timer = 5000;
- Heal_Timer = urand(25000, 40000);
- PrayerofHealing_Timer = urand(45000, 55000);
+ Initialize();
instance->SetBossState(DATA_MAULGAR, NOT_STARTED);
}
@@ -470,9 +494,17 @@ public:
{
boss_krosh_firehandAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ GreaterFireball_Timer = 1000;
+ SpellShield_Timer = 5000;
+ BlastWave_Timer = 20000;
+ }
+
uint32 GreaterFireball_Timer;
uint32 SpellShield_Timer;
uint32 BlastWave_Timer;
@@ -481,9 +513,7 @@ public:
void Reset() override
{
- GreaterFireball_Timer = 1000;
- SpellShield_Timer = 5000;
- BlastWave_Timer = 20000;
+ Initialize();
instance->SetBossState(DATA_MAULGAR, NOT_STARTED);
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
index da7074b131f..1d9eb81b1e7 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
@@ -65,6 +65,17 @@ class boss_kelidan_the_breaker : public CreatureScript
{
boss_kelidan_the_breakerAI(Creature* creature) : BossAI(creature, DATA_KELIDAN_THE_BREAKER)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ShadowVolley_Timer = 1000;
+ BurningNova_Timer = 15000;
+ Corruption_Timer = 5000;
+ check_Timer = 0;
+ Firenova = false;
+ addYell = false;
}
uint32 ShadowVolley_Timer;
@@ -79,12 +90,7 @@ class boss_kelidan_the_breaker : public CreatureScript
void Reset() override
{
_Reset();
- ShadowVolley_Timer = 1000;
- BurningNova_Timer = 15000;
- Corruption_Timer = 5000;
- check_Timer = 0;
- Firenova = false;
- addYell = false;
+ Initialize();
SummonChannelers();
me->SetReactState(REACT_PASSIVE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
@@ -271,7 +277,17 @@ class npc_shadowmoon_channeler : public CreatureScript
struct npc_shadowmoon_channelerAI : public ScriptedAI
{
- npc_shadowmoon_channelerAI(Creature* creature) : ScriptedAI(creature){ }
+ npc_shadowmoon_channelerAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ShadowBolt_Timer = 1000 + rand32() % 1000;
+ MarkOfShadow_Timer = 5000 + rand32() % 2000;
+ check_Timer = 0;
+ }
uint32 ShadowBolt_Timer;
uint32 MarkOfShadow_Timer;
@@ -279,9 +295,7 @@ class npc_shadowmoon_channeler : public CreatureScript
void Reset() override
{
- ShadowBolt_Timer = 1000 + rand32() % 1000;
- MarkOfShadow_Timer = 5000 + rand32() % 2000;
- check_Timer = 0;
+ Initialize();
if (me->IsNonMeleeSpellCast(false))
me->InterruptNonMeleeSpells(true);
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp
index 061d6a6a9a8..831818a4c9a 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp
@@ -60,13 +60,12 @@ class boss_omor_the_unscarred : public CreatureScript
{
boss_omor_the_unscarredAI(Creature* creature) : BossAI(creature, DATA_OMOR_THE_UNSCARRED)
{
+ Initialize();
SetCombatMovement(false);
}
- void Reset() override
+ void Initialize()
{
- Talk(SAY_WIPE);
-
OrbitalStrike_Timer = 25000;
ShadowWhip_Timer = 2000;
Aura_Timer = 10000;
@@ -76,6 +75,13 @@ class boss_omor_the_unscarred : public CreatureScript
SummonedCount = 0;
PlayerGUID.Clear();
CanPullBack = false;
+ }
+
+ void Reset() override
+ {
+ Talk(SAY_WIPE);
+
+ Initialize();
_Reset();
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
index 44c93dc77c9..566c6439893 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
@@ -70,16 +70,24 @@ class boss_nazan : public CreatureScript
{
boss_nazanAI(Creature* creature) : BossAI(creature, DATA_NAZAN)
{
+ Initialize();
flight = true;
+ BellowingRoar_Timer = 0;
+ ConeOfFire_Timer = 0;
}
- void Reset() override
+ void Initialize()
{
Fireball_Timer = 4000;
Fly_Timer = 45000;
Turn_Timer = 0;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void EnterCombat(Unit* /*who*/) override { }
void IsSummonedBy(Unit* summoner) override
@@ -198,13 +206,21 @@ class boss_vazruden : public CreatureScript
struct boss_vazrudenAI : public BossAI
{
- boss_vazrudenAI(Creature* creature) : BossAI(creature, DATA_VAZRUDEN) { }
+ boss_vazrudenAI(Creature* creature) : BossAI(creature, DATA_VAZRUDEN)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
Revenge_Timer = 4000;
UnsummonCheck = 2000;
WipeSaid = false;
+ }
+
+ void Reset() override
+ {
+ Initialize();
_Reset();
}
@@ -278,16 +294,22 @@ class boss_vazruden_the_herald : public CreatureScript
{
boss_vazruden_the_heraldAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
summoned = false;
sentryDown = false;
lootSpawned = false;
}
- void Reset() override
+ void Initialize()
{
phase = 0;
waypoint = 0;
check = 0;
+ }
+
+ void Reset() override
+ {
+ Initialize();
UnsummonAdds();
}
@@ -451,13 +473,21 @@ class npc_hellfire_sentry : public CreatureScript
struct npc_hellfire_sentryAI : public ScriptedAI
{
- npc_hellfire_sentryAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_hellfire_sentryAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
KidneyShot_Timer = urand(3000, 7000);
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void EnterCombat(Unit* /*who*/) override { }
void JustDied(Unit* killer) override
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
index 5baaebc0d7b..2fbef051313 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
@@ -58,13 +58,21 @@ class boss_watchkeeper_gargolmar : public CreatureScript
struct boss_watchkeeper_gargolmarAI : public BossAI
{
- boss_watchkeeper_gargolmarAI(Creature* creature) : BossAI(creature, DATA_WATCHKEEPER_GARGOLMAR) { }
+ boss_watchkeeper_gargolmarAI(Creature* creature) : BossAI(creature, DATA_WATCHKEEPER_GARGOLMAR)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
- hasTaunted = false;
+ hasTaunted = false;
yelledForHeal = false;
- retaliation = false;
+ retaliation = false;
+ }
+
+ void Reset() override
+ {
+ Initialize();
_Reset();
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
index 1c3eb6d8c34..7b8eeb8834d 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
@@ -34,7 +34,10 @@ class instance_ramparts : public InstanceMapScript
struct instance_ramparts_InstanceMapScript : public InstanceScript
{
- instance_ramparts_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_ramparts_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ spawned = false;
+ }
void Initialize() override
{
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
index 50cdcfe121b..e7c1e60e432 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
@@ -100,17 +100,23 @@ class npc_abyssal : public CreatureScript
{
npc_abyssalAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
trigger = 0;
Despawn_Timer = 60000;
}
+ void Initialize()
+ {
+ FireBlast_Timer = 6000;
+ }
+
uint32 FireBlast_Timer;
uint32 Despawn_Timer;
uint32 trigger;
void Reset() override
{
- FireBlast_Timer = 6000;
+ Initialize();
}
void SpellHit(Unit*, const SpellInfo* spell) override
@@ -207,11 +213,26 @@ class boss_magtheridon : public CreatureScript
{
boss_magtheridonAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
me->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10);
me->SetFloatValue(UNIT_FIELD_COMBATREACH, 10);
}
+ void Initialize()
+ {
+ Berserk_Timer = 1320000;
+ Quake_Timer = 40000;
+ Debris_Timer = 10000;
+ Blaze_Timer = 10000 + rand32() % 20000;
+ BlastNova_Timer = 60000;
+ Cleave_Timer = 15000;
+ RandChat_Timer = 90000;
+
+ Phase3 = false;
+ NeedCheckCube = false;
+ }
+
CubeMap Cube;
InstanceScript* instance;
@@ -229,16 +250,7 @@ class boss_magtheridon : public CreatureScript
void Reset() override
{
- Berserk_Timer = 1320000;
- Quake_Timer = 40000;
- Debris_Timer = 10000;
- Blaze_Timer = 10000 + rand32() % 20000;
- BlastNova_Timer = 60000;
- Cleave_Timer = 15000;
- RandChat_Timer = 90000;
-
- Phase3 = false;
- NeedCheckCube = false;
+ Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -468,9 +480,20 @@ class npc_hellfire_channeler : public CreatureScript
{
npc_hellfire_channelerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ ShadowBoltVolley_Timer = urand(8000, 10000);
+ DarkMending_Timer = 10000;
+ Fear_Timer = urand(15000, 20000);
+ Infernal_Timer = urand(10000, 50000);
+
+ Check_Timer = 5000;
+ }
+
InstanceScript* instance;
uint32 ShadowBoltVolley_Timer;
@@ -482,12 +505,7 @@ class npc_hellfire_channeler : public CreatureScript
void Reset() override
{
- ShadowBoltVolley_Timer = urand(8000, 10000);
- DarkMending_Timer = 10000;
- Fear_Timer = urand(15000, 20000);
- Infernal_Timer = urand(10000, 50000);
-
- Check_Timer = 5000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
index 741d5b78285..59fb8b48e30 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
@@ -83,12 +83,13 @@ class boss_grand_warlock_nethekurse : public CreatureScript
struct boss_grand_warlock_nethekurseAI : public BossAI
{
- boss_grand_warlock_nethekurseAI(Creature* creature) : BossAI(creature, DATA_NETHEKURSE) { }
-
- void Reset() override
+ boss_grand_warlock_nethekurseAI(Creature* creature) : BossAI(creature, DATA_NETHEKURSE)
{
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ Initialize();
+ }
+ void Initialize()
+ {
IsIntroEvent = false;
IntroOnce = false;
IsMainEvent = false;
@@ -105,6 +106,13 @@ class boss_grand_warlock_nethekurse : public CreatureScript
Cleave_Timer = 5000;
}
+ void Reset() override
+ {
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+
+ Initialize();
+ }
+
void JustDied(Unit* /*killer*/) override
{
Talk(SAY_DIE);
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
index f60c65b0b7a..2d33bee4091 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
@@ -136,6 +136,26 @@ class boss_warbringer_omrogg : public CreatureScript
{
boss_warbringer_omroggAI(Creature* creature) : BossAI(creature, DATA_OMROGG)
{
+ Initialize();
+ iaggro = 0;
+ ithreat = 0;
+ ikilling = 0;
+ }
+
+ void Initialize()
+ {
+ AggroYell = false;
+ ThreatYell = false;
+ ThreatYell2 = false;
+ KillingYell = false;
+
+ Delay_Timer = 4000;
+ BlastWave_Timer = 0;
+ BlastCount = 0;
+ Fear_Timer = 8000;
+ BurningMaul_Timer = 25000;
+ ThunderClap_Timer = 15000;
+ ResetThreat_Timer = 30000;
}
void Reset() override
@@ -152,18 +172,7 @@ class boss_warbringer_omrogg : public CreatureScript
RightHeadGUID.Clear();
}
- AggroYell = false;
- ThreatYell = false;
- ThreatYell2 = false;
- KillingYell = false;
-
- Delay_Timer = 4000;
- BlastWave_Timer = 0;
- BlastCount = 0;
- Fear_Timer = 8000;
- BurningMaul_Timer = 25000;
- ThunderClap_Timer = 15000;
- ResetThreat_Timer = 30000;
+ Initialize();
instance->SetData(DATA_OMROGG, NOT_STARTED); //End boss can use this later. O'mrogg must be defeated(DONE) or he will come to aid.
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
index 7145ebfd7aa..ff8bb84c397 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
@@ -65,15 +65,14 @@ class boss_warchief_kargath_bladefist : public CreatureScript
struct boss_warchief_kargath_bladefistAI : public BossAI
{
- boss_warchief_kargath_bladefistAI(Creature* creature) : BossAI(creature, DATA_KARGATH) { }
-
- void Reset() override
+ boss_warchief_kargath_bladefistAI(Creature* creature) : BossAI(creature, DATA_KARGATH)
{
- removeAdds();
-
- me->SetSpeed(MOVE_RUN, 2);
- me->SetWalk(false);
+ Initialize();
+ target_num = 0;
+ }
+ void Initialize()
+ {
summoned = 2;
InBlade = false;
Wait_Timer = 0;
@@ -85,6 +84,16 @@ class boss_warchief_kargath_bladefist : public CreatureScript
resetcheck_timer = 5000;
}
+ void Reset() override
+ {
+ removeAdds();
+
+ me->SetSpeed(MOVE_RUN, 2);
+ me->SetWalk(false);
+
+ Initialize();
+ }
+
void JustDied(Unit* /*killer*/) override
{
Talk(SAY_DEATH);
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
index 8dd1aad5d4d..0f9547a2b37 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
@@ -81,8 +81,28 @@ class boss_alar : public CreatureScript
{
boss_alarAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
DefaultMoveSpeedRate = creature->GetSpeedRate(MOVE_RUN);
+ DiveBomb_Timer = 0;
+ MeltArmor_Timer = 0;
+ Charge_Timer = 0;
+ FlamePatch_Timer = 0;
+ }
+
+ void Initialize()
+ {
+ Berserk_Timer = 1200000;
+ Platforms_Move_Timer = 0;
+
+ Phase1 = true;
+ WaitEvent = WE_NONE;
+ WaitTimer = 0;
+ AfterMoving = false;
+ ForceMove = false;
+ ForceTimer = 5000;
+
+ cur_wp = 4;
}
InstanceScript* instance;
@@ -111,17 +131,7 @@ class boss_alar : public CreatureScript
{
instance->SetData(DATA_ALAREVENT, NOT_STARTED);
- Berserk_Timer = 1200000;
- Platforms_Move_Timer = 0;
-
- Phase1 = true;
- WaitEvent = WE_NONE;
- WaitTimer = 0;
- AfterMoving = false;
- ForceMove = false;
- ForceTimer = 5000;
-
- cur_wp = 4;
+ Initialize();
me->SetDisplayId(me->GetNativeDisplayId());
me->SetSpeed(MOVE_RUN, DefaultMoveSpeedRate);
@@ -461,17 +471,23 @@ class npc_ember_of_alar : public CreatureScript
{
npc_ember_of_alarAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
creature->SetDisableGravity(true);
creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
}
+ void Initialize()
+ {
+ toDie = false;
+ }
+
InstanceScript* instance;
bool toDie;
void Reset() override
{
- toDie = false;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
index 0a9e5665ec8..cd433000e8e 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
@@ -101,10 +101,29 @@ class boss_high_astromancer_solarian : public CreatureScript
{
boss_high_astromancer_solarianAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{
+ Initialize();
instance = creature->GetInstanceScript();
defaultarmor = creature->GetArmor();
defaultsize = creature->GetObjectScale();
+ memset(Portals, 0, sizeof(Portals));
+ }
+
+ void Initialize()
+ {
+ ArcaneMissiles_Timer = 2000;
+ m_uiWrathOfTheAstromancer_Timer = 15000;
+ BlindingLight_Timer = 41000;
+ Fear_Timer = 20000;
+ VoidBolt_Timer = 10000;
+ Phase1_Timer = 50000;
+ Phase2_Timer = 10000;
+ Phase3_Timer = 15000;
+ AppearDelay_Timer = 2000;
+ BlindingLight = false;
+ AppearDelay = false;
+ Wrath_Timer = 20000 + rand32() % 5000;//twice in phase one
+ Phase = 1;
}
InstanceScript* instance;
@@ -132,19 +151,7 @@ class boss_high_astromancer_solarian : public CreatureScript
void Reset() override
{
- ArcaneMissiles_Timer = 2000;
- m_uiWrathOfTheAstromancer_Timer = 15000;
- BlindingLight_Timer = 41000;
- Fear_Timer = 20000;
- VoidBolt_Timer = 10000;
- Phase1_Timer = 50000;
- Phase2_Timer = 10000;
- Phase3_Timer = 15000;
- AppearDelay_Timer = 2000;
- BlindingLight = false;
- AppearDelay = false;
- Wrath_Timer = 20000 + rand32() % 5000;//twice in phase one
- Phase = 1;
+ Initialize();
instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, NOT_STARTED);
@@ -433,9 +440,17 @@ class npc_solarium_priest : public CreatureScript
{
npc_solarium_priestAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ healTimer = 9000;
+ holysmiteTimer = 1;
+ aoesilenceTimer = 15000;
+ }
+
InstanceScript* instance;
uint32 healTimer;
@@ -444,9 +459,7 @@ class npc_solarium_priest : public CreatureScript
void Reset() override
{
- healTimer = 9000;
- holysmiteTimer = 1;
- aoesilenceTimer = 15000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
index 8b23ee172af..961f07bd823 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -155,10 +155,18 @@ struct advisorbase_ai : public ScriptedAI
{
advisorbase_ai(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
m_bDoubled_Health = false;
}
+ void Initialize()
+ {
+ FakeDeath = false;
+ DelayRes_Timer = 0;
+ DelayRes_Target.Clear();
+ }
+
InstanceScript* instance;
bool FakeDeath;
bool m_bDoubled_Health;
@@ -173,9 +181,7 @@ struct advisorbase_ai : public ScriptedAI
m_bDoubled_Health = false;
}
- FakeDeath = false;
- DelayRes_Timer = 0;
- DelayRes_Target.Clear();
+ Initialize();
me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -289,7 +295,29 @@ class boss_kaelthas : public CreatureScript
{
boss_kaelthasAI(Creature* creature) : ScriptedAI(creature), summons(me)
{
+ Initialize();
instance = creature->GetInstanceScript();
+ PhaseSubphase = 0;
+ Phase_Timer = 0;
+ }
+
+ void Initialize()
+ {
+ Fireball_Timer = 5000 + rand32() % 10000;
+ ArcaneDisruption_Timer = 45000;
+ MindControl_Timer = 40000;
+ Phoenix_Timer = 50000;
+ ShockBarrier_Timer = 60000;
+ FlameStrike_Timer = 30000;
+ GravityLapse_Timer = 20000;
+ GravityLapse_Phase = 0;
+ NetherBeam_Timer = 8000;
+ NetherVapor_Timer = 10000;
+ PyrosCast = 0;
+ Phase = 0;
+ InGravityLapse = false;
+ IsCastingFireball = false;
+ ChainPyros = false;
}
InstanceScript* instance;
@@ -319,21 +347,7 @@ class boss_kaelthas : public CreatureScript
void Reset() override
{
- Fireball_Timer = 5000 + rand32() % 10000;
- ArcaneDisruption_Timer = 45000;
- MindControl_Timer = 40000;
- Phoenix_Timer = 50000;
- ShockBarrier_Timer = 60000;
- FlameStrike_Timer = 30000;
- GravityLapse_Timer = 20000;
- GravityLapse_Phase = 0;
- NetherBeam_Timer = 8000;
- NetherVapor_Timer = 10000;
- PyrosCast = 0;
- Phase = 0;
- InGravityLapse = false;
- IsCastingFireball = false;
- ChainPyros = false;
+ Initialize();
if (me->IsInCombat())
PrepareAdvisors();
@@ -1016,7 +1030,17 @@ class boss_thaladred_the_darkener : public CreatureScript
}
struct boss_thaladred_the_darkenerAI : public advisorbase_ai
{
- boss_thaladred_the_darkenerAI(Creature* creature) : advisorbase_ai(creature) { }
+ boss_thaladred_the_darkenerAI(Creature* creature) : advisorbase_ai(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Gaze_Timer = 100;
+ Silence_Timer = 20000;
+ PsychicBlow_Timer = 10000;
+ }
uint32 Gaze_Timer;
uint32 Silence_Timer;
@@ -1024,9 +1048,7 @@ class boss_thaladred_the_darkener : public CreatureScript
void Reset() override
{
- Gaze_Timer = 100;
- Silence_Timer = 20000;
- PsychicBlow_Timer = 10000;
+ Initialize();
advisorbase_ai::Reset();
}
@@ -1114,13 +1136,21 @@ class boss_lord_sanguinar : public CreatureScript
}
struct boss_lord_sanguinarAI : public advisorbase_ai
{
- boss_lord_sanguinarAI(Creature* creature) : advisorbase_ai(creature) { }
+ boss_lord_sanguinarAI(Creature* creature) : advisorbase_ai(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Fear_Timer = 20000;
+ }
uint32 Fear_Timer;
void Reset() override
{
- Fear_Timer = 20000;
+ Initialize();
advisorbase_ai::Reset();
}
@@ -1181,7 +1211,19 @@ class boss_grand_astromancer_capernian : public CreatureScript
}
struct boss_grand_astromancer_capernianAI : public advisorbase_ai
{
- boss_grand_astromancer_capernianAI(Creature* creature) : advisorbase_ai(creature) { }
+ boss_grand_astromancer_capernianAI(Creature* creature) : advisorbase_ai(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Fireball_Timer = 2000;
+ Conflagration_Timer = 20000;
+ ArcaneExplosion_Timer = 5000;
+ Yell_Timer = 2000;
+ Yell = false;
+ }
uint32 Fireball_Timer;
uint32 Conflagration_Timer;
@@ -1191,11 +1233,7 @@ class boss_grand_astromancer_capernian : public CreatureScript
void Reset() override
{
- Fireball_Timer = 2000;
- Conflagration_Timer = 20000;
- ArcaneExplosion_Timer = 5000;
- Yell_Timer = 2000;
- Yell = false;
+ Initialize();
advisorbase_ai::Reset();
}
@@ -1326,15 +1364,23 @@ class boss_master_engineer_telonicus : public CreatureScript
}
struct boss_master_engineer_telonicusAI : public advisorbase_ai
{
- boss_master_engineer_telonicusAI(Creature* creature) : advisorbase_ai(creature) { }
+ boss_master_engineer_telonicusAI(Creature* creature) : advisorbase_ai(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Bomb_Timer = 10000;
+ RemoteToy_Timer = 5000;
+ }
uint32 Bomb_Timer;
uint32 RemoteToy_Timer;
void Reset() override
{
- Bomb_Timer = 10000;
- RemoteToy_Timer = 5000;
+ Initialize();
advisorbase_ai::Reset();
}
@@ -1411,18 +1457,24 @@ class npc_kael_flamestrike : public CreatureScript
{
npc_kael_flamestrikeAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
SetCombatMovement(false);
}
+ void Initialize()
+ {
+ Timer = 5000;
+ Casting = false;
+ KillSelf = false;
+ }
+
uint32 Timer;
bool Casting;
bool KillSelf;
void Reset() override
{
- Timer = 5000;
- Casting = false;
- KillSelf = false;
+ Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->setFaction(14);
@@ -1477,13 +1529,21 @@ class npc_phoenix_tk : public CreatureScript
}
struct npc_phoenix_tkAI : public ScriptedAI
{
- npc_phoenix_tkAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_phoenix_tkAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Cycle_Timer = 2000;
+ }
uint32 Cycle_Timer;
void Reset() override
{
- Cycle_Timer = 2000;
+ Initialize();
DoCast(me, SPELL_BURN, true);
}
@@ -1531,13 +1591,21 @@ class npc_phoenix_egg_tk : public CreatureScript
}
struct npc_phoenix_egg_tkAI : public ScriptedAI
{
- npc_phoenix_egg_tkAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_phoenix_egg_tkAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Rebirth_Timer = 15000;
+ }
uint32 Rebirth_Timer;
void Reset() override
{
- Rebirth_Timer = 15000;
+ Initialize();
}
//ignore any
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
index b518eb1cb8b..dd97d10cfbe 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
@@ -56,9 +56,20 @@ class boss_void_reaver : public CreatureScript
{
boss_void_reaverAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ Pounding_Timer = 15000;
+ ArcaneOrb_Timer = 3000;
+ KnockAway_Timer = 30000;
+ Berserk_Timer = 600000;
+
+ Enraged = false;
+ }
+
InstanceScript* instance;
uint32 Pounding_Timer;
@@ -70,12 +81,7 @@ class boss_void_reaver : public CreatureScript
void Reset() override
{
- Pounding_Timer = 15000;
- ArcaneOrb_Timer = 3000;
- KnockAway_Timer = 30000;
- Berserk_Timer = 600000;
-
- Enraged = false;
+ Initialize();
if (me->IsAlive())
instance->SetData(DATA_VOIDREAVEREVENT, NOT_STARTED);
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp
index 32af9f647ad..22526465283 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp
@@ -47,15 +47,23 @@ class npc_crystalcore_devastator : public CreatureScript
}
struct npc_crystalcore_devastatorAI : public ScriptedAI
{
- npc_crystalcore_devastatorAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_crystalcore_devastatorAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Countercharge_Timer = 9000;
+ Knockaway_Timer = 25000;
+ }
uint32 Knockaway_Timer;
uint32 Countercharge_Timer;
void Reset() override
{
- Countercharge_Timer = 9000;
- Knockaway_Timer = 25000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
index 3e4e6a213bd..276b291e236 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
@@ -151,9 +151,18 @@ class npc_ragin_flames : public CreatureScript
{
npc_ragin_flamesAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ inferno_Timer = 10000;
+ flame_timer = 500;
+ Check_Timer = 2000;
+ onlyonce = false;
+ }
+
InstanceScript* instance;
uint32 inferno_Timer;
@@ -164,10 +173,7 @@ class npc_ragin_flames : public CreatureScript
void Reset() override
{
- inferno_Timer = 10000;
- flame_timer = 500;
- Check_Timer = 2000;
- onlyonce = false;
+ Initialize();
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
me->SetSpeed(MOVE_RUN, DUNGEON_MODE(0.5f, 0.7f));
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp
index 3c6fe2040fc..8f416d3aa8c 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp
@@ -172,7 +172,18 @@ class npc_nether_wraith : public CreatureScript
struct npc_nether_wraithAI : public ScriptedAI
{
- npc_nether_wraithAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_nether_wraithAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ArcaneMissiles_Timer = urand(1000, 4000);
+ Detonation_Timer = 20000;
+ Die_Timer = 2200;
+ Detonation = false;
+ }
uint32 ArcaneMissiles_Timer;
uint32 Detonation_Timer;
@@ -181,10 +192,7 @@ class npc_nether_wraith : public CreatureScript
void Reset() override
{
- ArcaneMissiles_Timer = urand(1000, 4000);
- Detonation_Timer = 20000;
- Die_Timer = 2200;
- Detonation = false;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp
index 1a8658c8fbc..cb875e26c42 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp
@@ -75,9 +75,21 @@ class npc_millhouse_manastorm : public CreatureScript
{
npc_millhouse_manastormAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ EventProgress_Timer = 2000;
+ LowHp = false;
+ Init = false;
+ Phase = 1;
+
+ Pyroblast_Timer = 1000;
+ Fireball_Timer = 2500;
+ }
+
InstanceScript* instance;
uint32 EventProgress_Timer;
@@ -90,13 +102,7 @@ class npc_millhouse_manastorm : public CreatureScript
void Reset() override
{
- EventProgress_Timer = 2000;
- LowHp = false;
- Init = false;
- Phase = 1;
-
- Pyroblast_Timer = 1000;
- Fireball_Timer = 2500;
+ Initialize();
if (instance->GetData(DATA_WARDEN_2) == DONE)
Init = true;
@@ -271,9 +277,19 @@ class npc_warden_mellichar : public CreatureScript
{
npc_warden_mellicharAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ IsRunning = false;
+ CanSpawn = false;
+
+ EventProgress_Timer = 22000;
+ Phase = 1;
+ }
+
InstanceScript* instance;
bool IsRunning;
@@ -284,11 +300,7 @@ class npc_warden_mellichar : public CreatureScript
void Reset() override
{
- IsRunning = false;
- CanSpawn = false;
-
- EventProgress_Timer = 22000;
- Phase = 1;
+ Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
DoCast(me, SPELL_TARGET_OMEGA);
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
index ec22baf2d4e..2d549e590c5 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
@@ -67,9 +67,23 @@ class boss_harbinger_skyriss : public CreatureScript
{
boss_harbinger_skyrissAI(Creature* creature) : BossAI(creature, DATA_HARBINGER_SKYRISS)
{
+ Initialize();
Intro = false;
}
+ void Initialize()
+ {
+ IsImage33 = false;
+ IsImage66 = false;
+
+ Intro_Phase = 1;
+ Intro_Timer = 5000;
+ MindRend_Timer = 3000;
+ Fear_Timer = 15000;
+ Domination_Timer = 30000;
+ ManaBurn_Timer = 25000;
+ }
+
bool Intro;
bool IsImage33;
bool IsImage66;
@@ -86,15 +100,7 @@ class boss_harbinger_skyriss : public CreatureScript
if (!Intro)
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
- IsImage33 = false;
- IsImage66 = false;
-
- Intro_Phase = 1;
- Intro_Timer = 5000;
- MindRend_Timer = 3000;
- Fear_Timer = 15000;
- Domination_Timer = 30000;
- ManaBurn_Timer = 25000;
+ Initialize();
}
void MoveInLineOfSight(Unit* who) override
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp
index 7b831e82a75..e254d92bac8 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp
@@ -50,12 +50,20 @@ class boss_commander_sarannis : public CreatureScript
struct boss_commander_sarannisAI : public BossAI
{
- boss_commander_sarannisAI(Creature* creature) : BossAI(creature, DATA_COMMANDER_SARANNIS) { }
+ boss_commander_sarannisAI(Creature* creature) : BossAI(creature, DATA_COMMANDER_SARANNIS)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ _phase = true;
+ }
void Reset() override
{
_Reset();
- _phase = true;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp
index c0591f7b874..ff336216954 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp
@@ -64,7 +64,19 @@ class boss_high_botanist_freywinn : public CreatureScript
struct boss_high_botanist_freywinnAI : public BossAI
{
- boss_high_botanist_freywinnAI(Creature* creature) : BossAI(creature, DATA_HIGH_BOTANIST_FREYWINN) { }
+ boss_high_botanist_freywinnAI(Creature* creature) : BossAI(creature, DATA_HIGH_BOTANIST_FREYWINN)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ SummonSeedling_Timer = 6000;
+ TreeForm_Timer = 30000;
+ MoveCheck_Timer = 1000;
+ DeadAddsCount = 0;
+ MoveFree = true;
+ }
uint32 SummonSeedling_Timer;
uint32 TreeForm_Timer;
@@ -76,11 +88,7 @@ class boss_high_botanist_freywinn : public CreatureScript
{
summons.DespawnAll();
- SummonSeedling_Timer = 6000;
- TreeForm_Timer = 30000;
- MoveCheck_Timer = 1000;
- DeadAddsCount = 0;
- MoveFree = true;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp
index 768c9b5b8f1..0e25a6e0758 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp
@@ -62,7 +62,19 @@ class boss_laj : public CreatureScript
struct boss_lajAI : public BossAI
{
- boss_lajAI(Creature* creature) : BossAI(creature, DATA_LAJ) { }
+ boss_lajAI(Creature* creature) : BossAI(creature, DATA_LAJ)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ CanSummon = false;
+ Teleport_Timer = 20000;
+ Summon_Timer = 2500;
+ Transform_Timer = 30000;
+ Allergic_Timer = 5000;
+ }
bool CanSummon;
uint32 Teleport_Timer;
@@ -79,11 +91,7 @@ class boss_laj : public CreatureScript
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, false);
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
- CanSummon = false;
- Teleport_Timer = 20000;
- Summon_Timer = 2500;
- Transform_Timer = 30000;
- Allergic_Timer = 5000;
+ Initialize();
}
void DoTransform()
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp
index 9114027b9fb..906c6e187ce 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp
@@ -51,15 +51,23 @@ class boss_thorngrin_the_tender : public CreatureScript
struct boss_thorngrin_the_tenderAI : public BossAI
{
- boss_thorngrin_the_tenderAI(Creature* creature) : BossAI(creature, DATA_THORNGRIN_THE_TENDER) { }
+ boss_thorngrin_the_tenderAI(Creature* creature) : BossAI(creature, DATA_THORNGRIN_THE_TENDER)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
- _Reset();
_phase1 = true;
_phase2 = true;
}
+ void Reset() override
+ {
+ _Reset();
+ Initialize();
+ }
+
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
index 56c62bbf50f..fbebe897477 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
@@ -74,6 +74,12 @@ class npc_warp_splinter_treant : public CreatureScript
{
npc_warp_splinter_treantAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ check_Timer = 0;
}
ObjectGuid WarpGuid;
@@ -81,7 +87,7 @@ class npc_warp_splinter_treant : public CreatureScript
void Reset() override
{
- check_Timer = 0;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -138,10 +144,18 @@ class boss_warp_splinter : public CreatureScript
{
boss_warp_splinterAI(Creature* creature) : BossAI(creature, DATA_WARP_SPLINTER)
{
+ Initialize();
Treant_Spawn_Pos_X = creature->GetPositionX();
Treant_Spawn_Pos_Y = creature->GetPositionY();
}
+ void Initialize()
+ {
+ War_Stomp_Timer = urand(25000, 40000);
+ Summon_Treants_Timer = 45000;
+ Arcane_Volley_Timer = urand(8000, 20000);
+ }
+
uint32 War_Stomp_Timer;
uint32 Summon_Treants_Timer;
uint32 Arcane_Volley_Timer;
@@ -151,9 +165,7 @@ class boss_warp_splinter : public CreatureScript
void Reset() override
{
- War_Stomp_Timer = urand(25000, 40000);
- Summon_Treants_Timer = 45000;
- Arcane_Volley_Timer = urand(8000, 20000);
+ Initialize();
me->SetSpeed(MOVE_RUN, 0.7f, true);
}
diff --git a/src/server/scripts/Outland/boss_doomwalker.cpp b/src/server/scripts/Outland/boss_doomwalker.cpp
index 7b72da0b02e..05113520566 100644
--- a/src/server/scripts/Outland/boss_doomwalker.cpp
+++ b/src/server/scripts/Outland/boss_doomwalker.cpp
@@ -57,6 +57,12 @@ class boss_doomwalker : public CreatureScript
{
boss_doomwalkerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ _inEnrage = false;
}
void Reset() override
@@ -67,7 +73,7 @@ class boss_doomwalker : public CreatureScript
_events.ScheduleEvent(EVENT_CHAIN, urand(10000, 30000));
_events.ScheduleEvent(EVENT_QUAKE, urand(25000, 35000));
_events.ScheduleEvent(EVENT_OVERRUN, urand(30000, 45000));
- _inEnrage = false;
+ Initialize();
}
void KilledUnit(Unit* victim) override
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index 5c95376cdfc..5941bd3decf 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -242,7 +242,21 @@ public:
struct npc_nether_drakeAI : public ScriptedAI
{
- npc_nether_drakeAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_nether_drakeAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ IsNihil = false;
+ NihilSpeech_Timer = 3000;
+ NihilSpeech_Phase = 0;
+
+ ArcaneBlast_Timer = 7500;
+ ManaBurn_Timer = 10000;
+ IntangiblePresence_Timer = 15000;
+ }
bool IsNihil;
uint32 NihilSpeech_Timer;
@@ -254,13 +268,7 @@ public:
void Reset() override
{
- IsNihil = false;
- NihilSpeech_Timer = 3000;
- NihilSpeech_Phase = 0;
-
- ArcaneBlast_Timer = 7500;
- ManaBurn_Timer = 10000;
- IntangiblePresence_Timer = 15000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -602,7 +610,17 @@ class npc_simon_bunny : public CreatureScript
struct npc_simon_bunnyAI : public ScriptedAI
{
- npc_simon_bunnyAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_simon_bunnyAI(Creature* creature) : ScriptedAI(creature)
+ {
+ large = false;
+ listening = false;
+ gameLevel = 0;
+ fails = 0;
+ gameTicks = 0;
+ memset(clusterIds, 0, sizeof(clusterIds));
+ zCoordCorrection = 0.f;
+ searchDistance = 0.f;
+ }
bool large;
bool listening;
diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
index 01ad2ce334f..79e6649495b 100644
--- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
+++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
@@ -58,13 +58,21 @@ public:
struct npc_aeranasAI : public ScriptedAI
{
- npc_aeranasAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_aeranasAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
faction_Timer = 8000;
envelopingWinds_Timer = 9000;
shock_Timer = 5000;
+ }
+
+ void Reset() override
+ {
+ Initialize();
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
me->setFaction(FACTION_FRIENDLY);
@@ -305,14 +313,22 @@ public:
struct npc_fel_guard_houndAI : public ScriptedAI
{
- npc_fel_guard_houndAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_fel_guard_houndAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
checkTimer = 5000; //check for creature every 5 sec
helboarGUID.Clear();
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void MovementInform(uint32 type, uint32 id) override
{
if (type != POINT_MOTION_TYPE || id != 1)
diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp
index b8dd1393600..c08f891d13f 100644
--- a/src/server/scripts/Outland/zone_nagrand.cpp
+++ b/src/server/scripts/Outland/zone_nagrand.cpp
@@ -338,15 +338,23 @@ public:
struct npc_corkiAI : public ScriptedAI
{
- npc_corkiAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_corkiAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Say_Timer = 5000;
+ ReleasedFromCage = false;
+ }
uint32 Say_Timer;
bool ReleasedFromCage;
void Reset() override
{
- Say_Timer = 5000;
- ReleasedFromCage = false;
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -441,7 +449,17 @@ public:
struct npc_kurenai_captiveAI : public npc_escortAI
{
- npc_kurenai_captiveAI(Creature* creature) : npc_escortAI(creature) { }
+ npc_kurenai_captiveAI(Creature* creature) : npc_escortAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ChainLightningTimer = 1000;
+ HealTimer = 0;
+ FrostShockTimer = 6000;
+ }
uint32 ChainLightningTimer;
uint32 HealTimer;
@@ -449,9 +467,7 @@ public:
void Reset() override
{
- ChainLightningTimer = 1000;
- HealTimer = 0;
- FrostShockTimer = 6000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Outland/zone_netherstorm.cpp b/src/server/scripts/Outland/zone_netherstorm.cpp
index eb2fae03202..8bc94663f30 100644
--- a/src/server/scripts/Outland/zone_netherstorm.cpp
+++ b/src/server/scripts/Outland/zone_netherstorm.cpp
@@ -81,7 +81,22 @@ public:
struct npc_commander_dawnforgeAI : public ScriptedAI
{
- npc_commander_dawnforgeAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_commander_dawnforgeAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ PlayerGUID.Clear();
+ ardonisGUID.Clear();
+ pathaleonGUID.Clear();
+
+ Phase = 1;
+ PhaseSubphase = 0;
+ Phase_Timer = 4000;
+ isEvent = false;
+ }
ObjectGuid PlayerGUID;
ObjectGuid ardonisGUID;
@@ -94,14 +109,7 @@ public:
void Reset() override
{
- PlayerGUID.Clear();
- ardonisGUID.Clear();
- pathaleonGUID.Clear();
-
- Phase = 1;
- PhaseSubphase = 0;
- Phase_Timer = 4000;
- isEvent = false;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -623,15 +631,23 @@ public:
struct npc_maxx_a_million_escortAI : public npc_escortAI
{
- npc_maxx_a_million_escortAI(Creature* creature) : npc_escortAI(creature) { }
+ npc_maxx_a_million_escortAI(Creature* creature) : npc_escortAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ bTake = false;
+ uiTakeTimer = 3000;
+ }
bool bTake;
uint32 uiTakeTimer;
void Reset() override
{
- bTake=false;
- uiTakeTimer=3000;
+ Initialize();
}
void WaypointReached(uint32 waypointId) override
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index 9eba6fdef0b..a96cf3ac254 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -1026,13 +1026,21 @@ public:
struct npc_earthmender_wildaAI : public npc_escortAI
{
- npc_earthmender_wildaAI(Creature* creature) : npc_escortAI(creature) { }
+ npc_earthmender_wildaAI(Creature* creature) : npc_escortAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ m_uiHealingTimer = 0;
+ }
uint32 m_uiHealingTimer;
void Reset() override
{
- m_uiHealingTimer = 0;
+ Initialize();
}
void WaypointReached(uint32 waypointId) override
@@ -1411,7 +1419,24 @@ public:
struct npc_lord_illidan_stormrageAI : public ScriptedAI
{
- npc_lord_illidan_stormrageAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_lord_illidan_stormrageAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ PlayerGUID.Clear();
+
+ WaveTimer = 10000;
+ AnnounceTimer = 7000;
+ LiveCount = 0;
+ WaveCount = 0;
+
+ EventStarted = false;
+ Announced = false;
+ Failed = false;
+ }
ObjectGuid PlayerGUID;
@@ -1427,16 +1452,7 @@ public:
void Reset() override
{
- PlayerGUID.Clear();
-
- WaveTimer = 10000;
- AnnounceTimer = 7000;
- LiveCount = 0;
- WaveCount = 0;
-
- EventStarted = false;
- Announced = false;
- Failed = false;
+ Initialize();
me->SetVisible(false);
}