mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Misc: Refactor scripts to fix static analysis warnings
Sixth batch of fixes targeting 100 issues reported by Coverity
This commit is contained in:
@@ -58,13 +58,10 @@ public:
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PlayerGUID = 0;
|
||||
RebuffTimer = 0;
|
||||
work = false;
|
||||
}
|
||||
|
||||
uint64 PlayerGUID;
|
||||
|
||||
uint32 RebuffTimer;
|
||||
bool work;
|
||||
|
||||
|
||||
@@ -44,9 +44,18 @@ public:
|
||||
{
|
||||
boss_lavanthorAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiFireboltTimer = 1000;
|
||||
uiFlameBreathTimer = 5000;
|
||||
uiLavaBurnTimer = 10000;
|
||||
uiCauterizingFlamesTimer = 3000;
|
||||
}
|
||||
|
||||
uint32 uiFireboltTimer;
|
||||
uint32 uiFlameBreathTimer;
|
||||
uint32 uiLavaBurnTimer;
|
||||
@@ -56,10 +65,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiFireboltTimer = 1000;
|
||||
uiFlameBreathTimer = 5000;
|
||||
uiLavaBurnTimer = 10000;
|
||||
uiCauterizingFlamesTimer = 3000;
|
||||
Initialize();
|
||||
if (instance->GetData(DATA_WAVE_COUNT) == 6)
|
||||
instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED);
|
||||
else if (instance->GetData(DATA_WAVE_COUNT) == 12)
|
||||
|
||||
@@ -40,9 +40,16 @@ public:
|
||||
{
|
||||
boss_moraggAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiOpticLinkTimer = 10000;
|
||||
uiCorrosiveSalivaTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 uiOpticLinkTimer;
|
||||
uint32 uiCorrosiveSalivaTimer;
|
||||
|
||||
@@ -50,8 +57,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiOpticLinkTimer = 10000;
|
||||
uiCorrosiveSalivaTimer = 5000;
|
||||
Initialize();
|
||||
|
||||
if (instance->GetData(DATA_WAVE_COUNT) == 6)
|
||||
instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED);
|
||||
|
||||
@@ -70,9 +70,17 @@ public:
|
||||
{
|
||||
boss_xevozzAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiSummonEtherealSphere_Timer = urand(10000, 12000);
|
||||
uiArcaneBarrageVolley_Timer = urand(20000, 22000);
|
||||
uiArcaneBuffet_Timer = uiSummonEtherealSphere_Timer + urand(5000, 6000);
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 uiSummonEtherealSphere_Timer;
|
||||
@@ -86,9 +94,7 @@ public:
|
||||
else if (instance->GetData(DATA_WAVE_COUNT) == 12)
|
||||
instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED);
|
||||
|
||||
uiSummonEtherealSphere_Timer = urand(10000, 12000);
|
||||
uiArcaneBarrageVolley_Timer = urand(20000, 22000);
|
||||
uiArcaneBuffet_Timer = uiSummonEtherealSphere_Timer + urand(5000, 6000);
|
||||
Initialize();
|
||||
DespawnSphere();
|
||||
}
|
||||
|
||||
@@ -229,9 +235,16 @@ public:
|
||||
{
|
||||
npc_ethereal_sphereAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiSummonPlayers_Timer = urand(33000, 35000);
|
||||
uiRangeCheck_Timer = 1000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 uiSummonPlayers_Timer;
|
||||
@@ -239,8 +252,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiSummonPlayers_Timer = urand(33000, 35000);
|
||||
uiRangeCheck_Timer = 1000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 uiDiff) override
|
||||
|
||||
@@ -65,9 +65,18 @@ public:
|
||||
{
|
||||
boss_zuramatAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
SpellShroudOfDarknessTimer = 22000;
|
||||
SpellVoidShiftTimer = 15000;
|
||||
SpellSummonVoidTimer = 12000;
|
||||
voidDance = true;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 SpellVoidShiftTimer;
|
||||
@@ -82,10 +91,7 @@ public:
|
||||
else if (instance->GetData(DATA_WAVE_COUNT) == 12)
|
||||
instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED);
|
||||
|
||||
SpellShroudOfDarknessTimer = 22000;
|
||||
SpellVoidShiftTimer = 15000;
|
||||
SpellSummonVoidTimer = 12000;
|
||||
voidDance = true;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who) override
|
||||
|
||||
@@ -305,9 +305,16 @@ public:
|
||||
{
|
||||
npc_sinclariAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiPhase = 0;
|
||||
uiTimer = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint8 uiPhase;
|
||||
@@ -315,8 +322,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiPhase = 0;
|
||||
uiTimer = 0;
|
||||
Initialize();
|
||||
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
|
||||
@@ -549,8 +555,14 @@ public:
|
||||
{
|
||||
npc_teleportation_portalAI(Creature* creature) : ScriptedAI(creature), listOfMobs(me)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
uiTypeOfMobsPortal = urand(0, 1); // 0 - elite mobs 1 - portal guardian or portal keeper with regular mobs
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiSpawnTimer = 10000;
|
||||
bPortalGuardianOrKeeperOrEliteSpawn = false;
|
||||
}
|
||||
|
||||
@@ -564,8 +576,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiSpawnTimer = 10000;
|
||||
bPortalGuardianOrKeeperOrEliteSpawn = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -672,7 +683,7 @@ struct violet_hold_trashAI : public npc_escortAI
|
||||
instance = creature->GetInstanceScript();
|
||||
bHasGotMovingPoints = false;
|
||||
portalLocationID = instance->GetData(DATA_PORTAL_LOCATION);
|
||||
Reset();
|
||||
secondPortalRouteID = 0;
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -797,9 +808,18 @@ public:
|
||||
{
|
||||
npc_azure_invaderAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiCleaveTimer = 5000;
|
||||
uiImpaleTimer = 4000;
|
||||
uiBrutalStrikeTimer = 5000;
|
||||
uiSunderArmorTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 uiCleaveTimer;
|
||||
uint32 uiImpaleTimer;
|
||||
uint32 uiBrutalStrikeTimer;
|
||||
@@ -807,10 +827,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiCleaveTimer = 5000;
|
||||
uiImpaleTimer = 4000;
|
||||
uiBrutalStrikeTimer = 5000;
|
||||
uiSunderArmorTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -875,9 +892,18 @@ public:
|
||||
{
|
||||
npc_azure_binderAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneExplosionTimer = 5000;
|
||||
uiArcainBarrageTimer = 4000;
|
||||
uiFrostNovaTimer = 5000;
|
||||
uiFrostboltTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneExplosionTimer;
|
||||
uint32 uiArcainBarrageTimer;
|
||||
uint32 uiFrostNovaTimer;
|
||||
@@ -885,10 +911,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneExplosionTimer = 5000;
|
||||
uiArcainBarrageTimer = 4000;
|
||||
uiFrostNovaTimer = 5000;
|
||||
uiFrostboltTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -953,16 +976,22 @@ public:
|
||||
{
|
||||
npc_azure_mage_slayerAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneEmpowermentTimer = 5000;
|
||||
uiSpellLockTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneEmpowermentTimer;
|
||||
uint32 uiSpellLockTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneEmpowermentTimer = 5000;
|
||||
uiSpellLockTimer = 5000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1013,16 +1042,22 @@ public:
|
||||
{
|
||||
npc_azure_raiderAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiConcussionBlowTimer = 5000;
|
||||
uiMagicReflectionTimer = 8000;
|
||||
}
|
||||
|
||||
uint32 uiConcussionBlowTimer;
|
||||
uint32 uiMagicReflectionTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiConcussionBlowTimer = 5000;
|
||||
uiMagicReflectionTimer = 8000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1060,14 +1095,20 @@ public:
|
||||
{
|
||||
npc_azure_stalkerAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_backstabTimer = 1300;
|
||||
_tacticalBlinkTimer = 8000;
|
||||
_tacticalBlinkCast = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_backstabTimer = 1300;
|
||||
_tacticalBlinkTimer = 8000;
|
||||
_tacticalBlinkCast =false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1125,9 +1166,18 @@ public:
|
||||
{
|
||||
npc_azure_spellbreakerAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneBlastTimer = 5000;
|
||||
uiSlowTimer = 4000;
|
||||
uiChainsOfIceTimer = 5000;
|
||||
uiConeOfColdTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneBlastTimer;
|
||||
uint32 uiSlowTimer;
|
||||
uint32 uiChainsOfIceTimer;
|
||||
@@ -1135,10 +1185,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneBlastTimer = 5000;
|
||||
uiSlowTimer = 4000;
|
||||
uiChainsOfIceTimer = 5000;
|
||||
uiConeOfColdTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1209,16 +1256,22 @@ public:
|
||||
{
|
||||
npc_azure_captainAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiMortalStrikeTimer = 5000;
|
||||
uiWhirlwindTimer = 8000;
|
||||
}
|
||||
|
||||
uint32 uiMortalStrikeTimer;
|
||||
uint32 uiWhirlwindTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiMortalStrikeTimer = 5000;
|
||||
uiWhirlwindTimer = 8000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1261,18 +1314,24 @@ public:
|
||||
{
|
||||
npc_azure_sorcerorAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneStreamTimer = 4000;
|
||||
uiArcaneStreamTimerStartingValueHolder = uiArcaneStreamTimer;
|
||||
uiManaDetonationTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneStreamTimer;
|
||||
uint32 uiArcaneStreamTimerStartingValueHolder;
|
||||
uint32 uiManaDetonationTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneStreamTimer = 4000;
|
||||
uiArcaneStreamTimerStartingValueHolder = uiArcaneStreamTimer;
|
||||
uiManaDetonationTimer = 5000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1311,13 +1370,21 @@ public:
|
||||
|
||||
struct npc_violet_hold_arcane_sphereAI : public ScriptedAI
|
||||
{
|
||||
npc_violet_hold_arcane_sphereAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_violet_hold_arcane_sphereAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
DespawnTimer = 3000;
|
||||
}
|
||||
|
||||
uint32 DespawnTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
DespawnTimer = 3000;
|
||||
Initialize();
|
||||
|
||||
me->SetDisableGravity(true);
|
||||
DoCast(me, SPELL_ARCANE_SPHERE_PASSIVE, true);
|
||||
|
||||
@@ -565,7 +565,18 @@ class npc_wyrmrest_defender : public CreatureScript
|
||||
|
||||
struct npc_wyrmrest_defenderAI : public VehicleAI
|
||||
{
|
||||
npc_wyrmrest_defenderAI(Creature* creature) : VehicleAI(creature) { }
|
||||
npc_wyrmrest_defenderAI(Creature* creature) : VehicleAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
hpWarningReady = true;
|
||||
renewRecoveryCanCheck = false;
|
||||
|
||||
RenewRecoveryChecker = 0;
|
||||
}
|
||||
|
||||
bool hpWarningReady;
|
||||
bool renewRecoveryCanCheck;
|
||||
@@ -574,10 +585,7 @@ class npc_wyrmrest_defender : public CreatureScript
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
hpWarningReady = true;
|
||||
renewRecoveryCanCheck = false;
|
||||
|
||||
RenewRecoveryChecker = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -464,7 +464,6 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_despawnTimer = 5000;
|
||||
_playerGUID = 0;
|
||||
}
|
||||
|
||||
void MovementInform(uint32, uint32 id) override
|
||||
@@ -498,7 +497,6 @@ public:
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
private:
|
||||
uint64 _playerGUID;
|
||||
uint32 _despawnTimer;
|
||||
};
|
||||
|
||||
|
||||
@@ -91,17 +91,23 @@ public:
|
||||
{
|
||||
npc_argent_valiantAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
creature->GetMotionMaster()->MovePoint(0, 8599.258f, 963.951f, 547.553f);
|
||||
creature->setFaction(35); //wrong faction in db?
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiChargeTimer = 7000;
|
||||
uiShieldBreakerTimer = 10000;
|
||||
}
|
||||
|
||||
uint32 uiChargeTimer;
|
||||
uint32 uiShieldBreakerTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiChargeTimer = 7000;
|
||||
uiShieldBreakerTimer = 10000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 /*uiId*/) override
|
||||
@@ -285,9 +291,15 @@ class npc_tournament_training_dummy : public CreatureScript
|
||||
{
|
||||
npc_tournament_training_dummyAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
SetCombatMovement(false);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
isVulnerable = false;
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
bool isVulnerable;
|
||||
|
||||
@@ -295,7 +307,7 @@ class npc_tournament_training_dummy : public CreatureScript
|
||||
{
|
||||
me->SetControlled(true, UNIT_STATE_STUNNED);
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
|
||||
isVulnerable = false;
|
||||
Initialize();
|
||||
|
||||
// Cast Defend spells to max stack size
|
||||
switch (me->GetEntry())
|
||||
|
||||
@@ -229,7 +229,15 @@ public:
|
||||
|
||||
struct npc_engineer_heliceAI : public npc_escortAI
|
||||
{
|
||||
npc_engineer_heliceAI(Creature* creature) : npc_escortAI(creature) { }
|
||||
npc_engineer_heliceAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
m_uiChatTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 m_uiChatTimer;
|
||||
|
||||
@@ -274,7 +282,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
m_uiChatTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -366,9 +374,12 @@ public:
|
||||
|
||||
struct npc_jungle_punch_targetAI : public ScriptedAI
|
||||
{
|
||||
npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
sayTimer = 3500;
|
||||
sayStep = 0;
|
||||
@@ -378,6 +389,11 @@ public:
|
||||
orphanGUID.Clear();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
if (!phase && who && who->GetDistance2d(me) < 10.0f)
|
||||
|
||||
@@ -179,13 +179,21 @@ public:
|
||||
|
||||
struct npc_brunnhildar_prisonerAI : public ScriptedAI
|
||||
{
|
||||
npc_brunnhildar_prisonerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_brunnhildar_prisonerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
freed = false;
|
||||
}
|
||||
|
||||
bool freed;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
freed = false;
|
||||
Initialize();
|
||||
me->CastSpell(me, SPELL_ICE_PRISON, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,13 +229,19 @@ class npc_voidtraveler : public CreatureScript
|
||||
{
|
||||
npc_voidtravelerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
_instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_moveTimer = 0;
|
||||
_sacrificed = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_moveTimer = 0;
|
||||
_sacrificed = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 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
|
||||
{
|
||||
WalkCount = 0;
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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,19 +644,12 @@ 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();
|
||||
}
|
||||
|
||||
ObjectGuid AggroTargetGUID;
|
||||
|
||||
uint32 CheckTankTimer;
|
||||
uint32 SoulScreamTimer;
|
||||
uint32 SpiteTimer;
|
||||
|
||||
std::list<uint64> SpiteTargetGUID;
|
||||
|
||||
bool CheckedAggro;
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
AggroTargetGUID.Clear();
|
||||
|
||||
@@ -642,11 +657,22 @@ public:
|
||||
SoulScreamTimer = 10000;
|
||||
SpiteTimer = 30000;
|
||||
|
||||
SpiteTargetGUID.clear();
|
||||
|
||||
CheckedAggro = false;
|
||||
}
|
||||
|
||||
ObjectGuid AggroTargetGUID;
|
||||
|
||||
uint32 CheckTankTimer;
|
||||
uint32 SoulScreamTimer;
|
||||
uint32 SpiteTimer;
|
||||
|
||||
bool CheckedAggro;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(ANGER_SAY_FREED);
|
||||
|
||||
@@ -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 Initialize()
|
||||
{
|
||||
spiritMend = false;
|
||||
chainHeal = false;
|
||||
summonerGuid.Clear();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
spiritMend = false;
|
||||
chainHeal = false;
|
||||
summonerGuid.Clear();
|
||||
Initialize();
|
||||
|
||||
if (Unit* target = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_AKAMA_SHADE)))
|
||||
AttackStart(target);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 { }
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -73,13 +73,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 OgreGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
OgreGUID = 0;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 /*diff*/) override { }
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user