Core/Misc: Refactor scripts to fix static analysis warnings

Seventh batch of fixes targeting 100 issues reported by Coverity
This commit is contained in:
jackpoz committed 2014-09-21 22:15:04 +02:00
1 parent dc814ed282
commit 6e27841382
50 files changed
+1112 -431

No files matched your search

@@ -1061,6 +1061,7 @@ BfWGGameObjectBuilding::BfWGGameObjectBuilding(BattlefieldWG* wg, WintergraspGam
_type = type;
_worldState = worldState;
_state = BATTLEFIELD_WG_OBJECTSTATE_NONE;
_staticTowerInfo = nullptr;
}
void BfWGGameObjectBuilding::Rebuild()
@@ -73,6 +73,7 @@ public:
{
Initialize();
instance = creature->GetInstanceScript();
uiOutroStep = 0;
}
void Initialize()
@@ -356,6 +356,7 @@ public:
step = 0;
gossipStep = 0;
bossEvent = 0;
WavesCounter = 0;
}
void Initialize()
@@ -346,7 +346,6 @@ public:
uint32 uiBladeStormTimer;
uint32 uiInterceptTimer;
uint32 uiMortalStrikeTimer;
uint32 uiAttackTimer;
bool bDone;
bool bHome;
@@ -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()
@@ -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);
@@ -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 Initialize()
{
_counter = 0;
_gender = 0;
}
void Reset() override
{
_counter = 0;
_gender = 0;
Initialize();
}
void SetData(uint32 Type, uint32 Data) override
@@ -341,11 +349,19 @@ public:
struct npc_tallhorn_stagAI : public ScriptedAI
{
npc_tallhorn_stagAI(Creature* creature) : ScriptedAI(creature) { }
npc_tallhorn_stagAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
_phase = 1;
}
void Reset() override
{
_phase = 1;
Initialize();
}
void UpdateAI(uint32 /*diff*/) override
@@ -459,11 +475,19 @@ public:
struct npc_wounded_skirmisherAI : public ScriptedAI
{
npc_wounded_skirmisherAI(Creature* creature) : ScriptedAI(creature) { }
npc_wounded_skirmisherAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
_despawnTimer = 5000;
}
void Reset() override
{
_despawnTimer = 5000;
Initialize();
}
void MovementInform(uint32, uint32 id) override
@@ -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);
}
@@ -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)
+10 -2
View File
@@ -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
@@ -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
@@ -265,7 +265,6 @@ public:
uint32 SummonDoomBlossomTimer;
uint32 EnrageTimer;
uint32 CrushingShadowsTimer;
uint32 ShadowOfDeathTimer;
uint32 SummonShadowsTimer;
uint32 RandomYellTimer;
uint32 AggroTimer;
@@ -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);
@@ -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
@@ -98,13 +98,29 @@ public:
{
boss_morogrim_tidewalkerAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
Playercount = 0;
counter = 0;
}
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;
}
InstanceScript* instance;
Map::PlayerList const* PlayerList;
uint32 TidalWave_Timer;
uint32 WateryGrave_Timer;
uint32 Earthquake_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);
@@ -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
@@ -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);
}
@@ -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
@@ -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);
@@ -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();
}
@@ -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
@@ -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);
}
@@ -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);
}
@@ -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();
}
@@ -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,11 +473,19 @@ 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 Initialize()
{
KidneyShot_Timer = urand(3000, 7000);
}
void Reset() override
{
KidneyShot_Timer = urand(3000, 7000);
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -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 Initialize()
{
hasTaunted = false;
yelledForHeal = false;
retaliation = false;
}
void Reset() override
{
hasTaunted = false;
yelledForHeal = false;
retaliation = false;
Initialize();
_Reset();
}
@@ -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
{
@@ -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
@@ -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);
@@ -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.
}
@@ -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);
@@ -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
@@ -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
@@ -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
@@ -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);
@@ -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
@@ -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));
@@ -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 { }
@@ -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);
@@ -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
@@ -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
@@ -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
@@ -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()
@@ -51,13 +51,21 @@ 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 Initialize()
{
_phase1 = true;
_phase2 = true;
}
void Reset() override
{
_Reset();
_phase1 = true;
_phase2 = true;
Initialize();
}
void EnterCombat(Unit* /*who*/) override
@@ -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);
}
@@ -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
@@ -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;
@@ -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)
+23 -7
View File
@@ -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
+28 -12
View File
@@ -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
@@ -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);
}