Core/Misc: Refactor scripts to fix static analysis warnings
Seventh batch of fixes targeting 100 issues reported by Coverity
This commit is contained in:
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()
|
||||
|
||||
+1
@@ -356,6 +356,7 @@ public:
|
||||
step = 0;
|
||||
gossipStep = 0;
|
||||
bossEvent = 0;
|
||||
WavesCounter = 0;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
|
||||
-1
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
+48
-21
@@ -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
|
||||
|
||||
+30
-17
@@ -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);
|
||||
|
||||
+20
-8
@@ -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
|
||||
|
||||
+10
-4
@@ -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);
|
||||
}
|
||||
|
||||
+10
-2
@@ -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);
|
||||
|
||||
+14
-7
@@ -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);
|
||||
}
|
||||
|
||||
+24
-10
@@ -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);
|
||||
}
|
||||
|
||||
+9
-3
@@ -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();
|
||||
}
|
||||
|
||||
+36
-6
@@ -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 { }
|
||||
|
||||
+12
-4
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
+4
-1
@@ -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);
|
||||
|
||||
+21
-12
@@ -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.
|
||||
}
|
||||
|
||||
+16
-7
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user