aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2014-09-20 20:16:00 +0200
committerjackpoz <giacomopoz@gmail.com>2014-09-20 20:21:54 +0200
commitb5e3535dbf9032bab06a1dc35201d2db72d265d6 (patch)
treeb79fe2c146f3510d401bb521ea87ac331f8c5bc7 /src/server/scripts/Outland
parent53dbab809f1df35e051ad5ab52f5adf1929f376b (diff)
Core/Misc: Refactor scripts to fix static analysis warnings
Sixth batch of fixes targeting 100 issues reported by Coverity
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp12
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp26
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp51
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp14
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp16
-rw-r--r--src/server/scripts/Outland/BlackTemple/black_temple.cpp8
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp37
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp116
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp78
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp59
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_supremus.cpp8
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp64
-rw-r--r--src/server/scripts/Outland/BlackTemple/illidari_council.cpp117
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp62
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp31
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp90
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp7
17 files changed, 543 insertions, 253 deletions
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 { }
};