Core/Misc: Refactor scripts to fix static analysis warnings

This commit is contained in:
jackpoz
2014-09-03 21:44:45 +02:00
parent beaf778a30
commit 53d3becf3c
56 changed files with 1121 additions and 481 deletions

View File

@@ -389,7 +389,16 @@ public:
struct npc_scarlet_courierAI : public ScriptedAI
{
npc_scarlet_courierAI(Creature* creature) : ScriptedAI(creature) { }
npc_scarlet_courierAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
uiStage = 1;
uiStage_timer = 3000;
}
uint32 uiStage;
uint32 uiStage_timer;
@@ -397,8 +406,7 @@ public:
void Reset() override
{
me->Mount(14338); // not sure about this id
uiStage = 1;
uiStage_timer = 3000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -312,6 +312,8 @@ public:
npc_highlord_darion_mograineAI(Creature* creature) : npc_escortAI(creature)
{
uiTirionGUID = 0;
uiAlexandrosGUID = 0;
uiDarionGUID = 0;
uiKorfaxGUID = 0;
uiMaxwellGUID = 0;
uiEligorGUID = 0;

View File

@@ -46,7 +46,19 @@ public:
struct npc_valkyr_battle_maidenAI : public PassiveAI
{
npc_valkyr_battle_maidenAI(Creature* creature) : PassiveAI(creature) { }
npc_valkyr_battle_maidenAI(Creature* creature) : PassiveAI(creature)
{
Initialize();
}
void Initialize()
{
FlyBackTimer = 500;
phase = 0;
x = 0.f;
y = 0.f;
z = 0.f;
}
uint32 FlyBackTimer;
float x, y, z;
@@ -58,8 +70,6 @@ public:
me->SetVisible(false);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetCanFly(true);
FlyBackTimer = 500;
phase = 0;
me->GetPosition(x, y, z);
z += 4.0f;

View File

@@ -232,7 +232,20 @@ public:
struct npc_headAI : public ScriptedAI
{
npc_headAI(Creature* creature) : ScriptedAI(creature) { }
npc_headAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
Phase = 0;
bodyGUID = 0;
die = false;
withbody = true;
wait = 1000;
laugh = urand(15000, 30000);
}
uint64 bodyGUID;
@@ -245,12 +258,7 @@ public:
void Reset() override
{
Phase = 0;
bodyGUID = 0;
die = false;
withbody = true;
wait = 1000;
laugh = urand(15000, 30000);
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -380,10 +388,29 @@ public:
{
boss_headless_horsemanAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
headGUID = 0;
}
void Initialize()
{
Phase = 1;
conflagrate = 15000;
summonadds = 15000;
laugh = urand(16000, 20000);
cleave = 2000;
regen = 1000;
burn = 6000;
count = 0;
say_timer = 3000;
withhead = true;
returned = true;
burned = false;
IsFlying = false;
}
InstanceScript* instance;
uint64 headGUID;
@@ -410,20 +437,7 @@ public:
void Reset() override
{
Phase = 1;
conflagrate = 15000;
summonadds = 15000;
laugh = urand(16000, 20000);
cleave = 2000;
regen = 1000;
burn = 6000;
count = 0;
say_timer = 3000;
withhead = true;
returned = true;
burned = false;
IsFlying = false;
Initialize();
DoCast(me, SPELL_HEAD);
if (headGUID)
{

View File

@@ -51,9 +51,21 @@ public:
{
boss_high_inquisitor_fairbanksAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
CurseOfBlood_Timer = 10000;
DispelMagic_Timer = 30000;
Fear_Timer = 40000;
Heal_Timer = 30000;
Sleep_Timer = 30000;
Dispel_Timer = 20000;
PowerWordShield = false;
}
uint32 CurseOfBlood_Timer;
uint32 DispelMagic_Timer;
uint32 Fear_Timer;
@@ -65,13 +77,7 @@ public:
void Reset() override
{
CurseOfBlood_Timer = 10000;
DispelMagic_Timer = 30000;
Fear_Timer = 40000;
Heal_Timer = 30000;
Sleep_Timer = 30000;
Dispel_Timer = 20000;
PowerWordShield = false;
Initialize();
me->SetStandState(UNIT_STAND_STATE_DEAD);
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 7);
instance->SetBossState(DATA_HIGH_INQUISITOR_FAIRBANKS, NOT_STARTED);

View File

@@ -55,9 +55,17 @@ public:
{
boss_interrogator_vishasAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
ShadowWordPain_Timer = 5000;
Yell60 = false;
Yell30 = false;
}
InstanceScript* instance;
bool Yell30;
@@ -66,9 +74,7 @@ public:
void Reset() override
{
ShadowWordPain_Timer = 5000;
Yell60 = false;
Yell30 = false;
Initialize();
instance->SetBossState(DATA_INTERROGATOR_VISHAS, NOT_STARTED);
}

View File

@@ -72,9 +72,19 @@ public:
{
boss_scarlet_commander_mograineAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
CrusaderStrike_Timer = 10000;
HammerOfJustice_Timer = 10000;
_bHasDied = false;
_bHeal = false;
_bFakeDeath = false;
}
InstanceScript* instance;
uint32 CrusaderStrike_Timer;
@@ -86,8 +96,7 @@ public:
void Reset() override
{
CrusaderStrike_Timer = 10000;
HammerOfJustice_Timer = 10000;
Initialize();
//Incase wipe during phase that mograine fake death
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -96,10 +105,6 @@ public:
if (me->IsAlive())
instance->SetBossState(DATA_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
_bHasDied = false;
_bHeal = false;
_bFakeDeath = false;
}
void JustReachedHome() override
@@ -230,9 +235,21 @@ public:
{
boss_high_inquisitor_whitemaneAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
Wait_Timer = 7000;
Heal_Timer = 10000;
PowerWordShield_Timer = 15000;
HolySmite_Timer = 6000;
_bCanResurrectCheck = false;
_bCanResurrect = false;
}
InstanceScript* instance;
uint32 Heal_Timer;
@@ -245,13 +262,7 @@ public:
void Reset() override
{
Wait_Timer = 7000;
Heal_Timer = 10000;
PowerWordShield_Timer = 15000;
HolySmite_Timer = 6000;
_bCanResurrectCheck = false;
_bCanResurrect = false;
Initialize();
if (me->IsAlive())
instance->SetBossState(DATA_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);

View File

@@ -50,7 +50,16 @@ class boss_instructor_malicia : public CreatureScript
struct boss_instructormaliciaAI : public BossAI
{
boss_instructormaliciaAI(Creature* creature) : BossAI(creature, DATA_INSTRUCTORMALICIA) { }
boss_instructormaliciaAI(Creature* creature) : BossAI(creature, DATA_INSTRUCTORMALICIA)
{
Initialize();
}
void Initialize()
{
FlashCounter = 0;
TouchCounter = 0;
}
uint32 FlashCounter;
uint32 TouchCounter;
@@ -58,8 +67,7 @@ class boss_instructor_malicia : public CreatureScript
void Reset() override
{
_Reset();
FlashCounter = 0;
TouchCounter = 0;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -47,7 +47,18 @@ public:
struct boss_jandicebarovAI : public ScriptedAI
{
boss_jandicebarovAI(Creature* creature) : ScriptedAI(creature) { }
boss_jandicebarovAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
CurseOfBlood_Timer = 15000;
Illusion_Timer = 30000;
Invisible_Timer = 3000; //Too much too low?
Invisible = false;
}
uint32 CurseOfBlood_Timer;
uint32 Illusion_Timer;
@@ -57,10 +68,7 @@ public:
void Reset() override
{
CurseOfBlood_Timer = 15000;
Illusion_Timer = 30000;
Invisible_Timer = 3000; //Too much too low?
Invisible = false;
Initialize();
}
void EnterCombat(Unit* /*who*/) override
@@ -169,13 +177,21 @@ public:
struct npc_illusionofjandicebarovAI : public ScriptedAI
{
npc_illusionofjandicebarovAI(Creature* creature) : ScriptedAI(creature) { }
npc_illusionofjandicebarovAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
Cleave_Timer = urand(2000, 8000);
}
uint32 Cleave_Timer;
void Reset() override
{
Cleave_Timer = urand(2000, 8000);
Initialize();
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
}

View File

@@ -44,7 +44,19 @@ public:
struct boss_kormokAI : public ScriptedAI
{
boss_kormokAI(Creature* creature) : ScriptedAI(creature) { }
boss_kormokAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
ShadowVolley_Timer = 10000;
BoneShield_Timer = 2000;
Minion_Timer = 15000;
Mage_Timer = 0;
Mages = false;
}
uint32 ShadowVolley_Timer;
uint32 BoneShield_Timer;
@@ -54,11 +66,7 @@ public:
void Reset() override
{
ShadowVolley_Timer = 10000;
BoneShield_Timer = 2000;
Minion_Timer = 15000;
Mage_Timer = 0;
Mages = false;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -48,7 +48,20 @@ public:
struct boss_rasfrostAI : public ScriptedAI
{
boss_rasfrostAI(Creature* creature) : ScriptedAI(creature) { }
boss_rasfrostAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
IceArmor_Timer = 2000;
Frostbolt_Timer = 8000;
ChillNova_Timer = 12000;
Freeze_Timer = 18000;
FrostVolley_Timer = 24000;
Fear_Timer = 45000;
}
uint32 IceArmor_Timer;
uint32 Frostbolt_Timer;
@@ -59,12 +72,7 @@ public:
void Reset() override
{
IceArmor_Timer = 2000;
Frostbolt_Timer = 8000;
ChillNova_Timer = 12000;
Freeze_Timer = 18000;
FrostVolley_Timer = 24000;
Fear_Timer = 45000;
Initialize();
DoCast(me, SPELL_ICEARMOR, true);
}

View File

@@ -51,7 +51,17 @@ public:
struct boss_vectusAI : public ScriptedAI
{
boss_vectusAI(Creature* creature) : ScriptedAI(creature) { }
boss_vectusAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
m_uiFireShield_Timer = 2000;
m_uiBlastWave_Timer = 14000;
m_uiFrenzy_Timer = 0;
}
uint32 m_uiFireShield_Timer;
uint32 m_uiBlastWave_Timer;
@@ -59,9 +69,7 @@ public:
void Reset() override
{
m_uiFireShield_Timer = 2000;
m_uiBlastWave_Timer = 14000;
m_uiFrenzy_Timer = 0;
Initialize();
}
void UpdateAI(uint32 uiDiff) override

View File

@@ -164,16 +164,22 @@ public:
{
npc_arugal_voidwalkerAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
uiDarkOffering = urand(200, 1000);
}
InstanceScript* instance;
uint32 uiDarkOffering;
void Reset() override
{
uiDarkOffering = urand(200, 1000);
Initialize();
}
void UpdateAI(uint32 uiDiff) override

View File

@@ -75,9 +75,19 @@ public:
{
boss_baron_rivendareAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
ShadowBolt_Timer = 5000;
Cleave_Timer = 8000;
MortalStrike_Timer = 12000;
// RaiseDead_Timer = 30000;
SummonSkeletons_Timer = 34000;
}
InstanceScript* instance;
uint32 ShadowBolt_Timer;
@@ -88,11 +98,7 @@ public:
void Reset() override
{
ShadowBolt_Timer = 5000;
Cleave_Timer = 8000;
MortalStrike_Timer = 12000;
// RaiseDead_Timer = 30000;
SummonSkeletons_Timer = 34000;
Initialize();
if (instance->GetData(TYPE_RAMSTEIN) == DONE)
instance->SetData(TYPE_BARON, NOT_STARTED);
}

View File

@@ -49,9 +49,18 @@ public:
{
boss_baroness_anastariAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
BansheeWail_Timer = 1000;
BansheeCurse_Timer = 11000;
Silence_Timer = 13000;
//Possess_Timer = 35000;
}
InstanceScript* instance;
uint32 BansheeWail_Timer;
@@ -61,10 +70,7 @@ public:
void Reset() override
{
BansheeWail_Timer = 1000;
BansheeCurse_Timer = 11000;
Silence_Timer = 13000;
//Possess_Timer = 35000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -92,7 +92,18 @@ public:
struct boss_cannon_master_willeyAI : public ScriptedAI
{
boss_cannon_master_willeyAI(Creature* creature) : ScriptedAI(creature) { }
boss_cannon_master_willeyAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
Shoot_Timer = 1000;
Pummel_Timer = 7000;
KnockAway_Timer = 11000;
SummonRifleman_Timer = 15000;
}
uint32 KnockAway_Timer;
uint32 Pummel_Timer;
@@ -101,10 +112,7 @@ public:
void Reset() override
{
Shoot_Timer = 1000;
Pummel_Timer = 7000;
KnockAway_Timer = 11000;
SummonRifleman_Timer = 15000;
Initialize();
}
void JustDied(Unit* /*killer*/) override

View File

@@ -81,7 +81,23 @@ public:
struct boss_dathrohan_balnazzarAI : public ScriptedAI
{
boss_dathrohan_balnazzarAI(Creature* creature) : ScriptedAI(creature) { }
boss_dathrohan_balnazzarAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
m_uiCrusadersHammer_Timer = 8000;
m_uiCrusaderStrike_Timer = 12000;
m_uiMindBlast_Timer = 6000;
m_uiHolyStrike_Timer = 18000;
m_uiShadowShock_Timer = 4000;
m_uiPsychicScream_Timer = 16000;
m_uiDeepSleep_Timer = 20000;
m_uiMindControl_Timer = 10000;
m_bTransformed = false;
}
uint32 m_uiCrusadersHammer_Timer;
uint32 m_uiCrusaderStrike_Timer;
@@ -95,15 +111,7 @@ public:
void Reset() override
{
m_uiCrusadersHammer_Timer = 8000;
m_uiCrusaderStrike_Timer = 12000;
m_uiMindBlast_Timer = 6000;
m_uiHolyStrike_Timer = 18000;
m_uiShadowShock_Timer = 4000;
m_uiPsychicScream_Timer = 16000;
m_uiDeepSleep_Timer = 20000;
m_uiMindControl_Timer = 10000;
m_bTransformed = false;
Initialize();
if (me->GetEntry() == NPC_BALNAZZAR)
me->UpdateEntry(NPC_DATHROHAN);

View File

@@ -53,7 +53,19 @@ public:
struct boss_magistrate_barthilasAI : public ScriptedAI
{
boss_magistrate_barthilasAI(Creature* creature) : ScriptedAI(creature) { }
boss_magistrate_barthilasAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
DrainingBlow_Timer = 20000;
CrowdPummel_Timer = 15000;
MightyBlow_Timer = 10000;
FuriousAnger_Timer = 5000;
AngerCount = 0;
}
uint32 DrainingBlow_Timer;
uint32 CrowdPummel_Timer;
@@ -63,11 +75,7 @@ public:
void Reset() override
{
DrainingBlow_Timer = 20000;
CrowdPummel_Timer = 15000;
MightyBlow_Timer = 10000;
FuriousAnger_Timer = 5000;
AngerCount = 0;
Initialize();
if (me->IsAlive())
me->SetDisplayId(MODEL_NORMAL);

View File

@@ -50,9 +50,17 @@ public:
{
boss_maleki_the_pallidAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
Frostbolt_Timer = 1000;
IceTomb_Timer = 16000;
DrainLife_Timer = 31000;
}
InstanceScript* instance;
uint32 Frostbolt_Timer;
@@ -61,9 +69,7 @@ public:
void Reset() override
{
Frostbolt_Timer = 1000;
IceTomb_Timer = 16000;
DrainLife_Timer = 31000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -49,9 +49,18 @@ public:
{
boss_nerubenkanAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
CryptScarabs_Timer = 3000;
EncasingWebs_Timer = 7000;
PierceArmor_Timer = 19000;
RaiseUndeadScarab_Timer = 3000;
}
InstanceScript* instance;
uint32 EncasingWebs_Timer;
@@ -61,10 +70,7 @@ public:
void Reset() override
{
CryptScarabs_Timer = 3000;
EncasingWebs_Timer = 7000;
PierceArmor_Timer = 19000;
RaiseUndeadScarab_Timer = 3000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -65,9 +65,16 @@ public:
{
boss_silver_hand_bossesAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
HolyLight_Timer = 20000;
DivineShield_Timer = 20000;
}
InstanceScript* instance;
uint32 HolyLight_Timer;
@@ -75,8 +82,7 @@ public:
void Reset() override
{
HolyLight_Timer = 20000;
DivineShield_Timer = 20000;
Initialize();
switch (me->GetEntry())
{

View File

@@ -52,9 +52,16 @@ public:
{
boss_ramstein_the_gorgerAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
Trample_Timer = 3000;
Knockout_Timer = 12000;
}
InstanceScript* instance;
uint32 Trample_Timer;
@@ -62,8 +69,7 @@ public:
void Reset() override
{
Trample_Timer = 3000;
Knockout_Timer = 12000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -48,15 +48,23 @@ public:
struct boss_timmy_the_cruelAI : public ScriptedAI
{
boss_timmy_the_cruelAI(Creature* creature) : ScriptedAI(creature) { }
boss_timmy_the_cruelAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
RavenousClaw_Timer = 10000;
HasYelled = false;
}
uint32 RavenousClaw_Timer;
bool HasYelled;
void Reset() override
{
RavenousClaw_Timer = 10000;
HasYelled = false;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -142,7 +142,17 @@ public:
struct npc_restless_soulAI : public ScriptedAI
{
npc_restless_soulAI(Creature* creature) : ScriptedAI(creature) { }
npc_restless_soulAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
Tagger = 0;
Die_Timer = 5000;
Tagged = false;
}
uint64 Tagger;
uint32 Die_Timer;
@@ -150,9 +160,7 @@ public:
void Reset() override
{
Tagger = 0;
Die_Timer = 5000;
Tagged = false;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -224,15 +232,23 @@ public:
struct npc_spectral_ghostly_citizenAI : public ScriptedAI
{
npc_spectral_ghostly_citizenAI(Creature* creature) : ScriptedAI(creature) { }
npc_spectral_ghostly_citizenAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
Die_Timer = 5000;
Tagged = false;
}
uint32 Die_Timer;
bool Tagged;
void Reset() override
{
Die_Timer = 5000;
Tagged = false;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }

View File

@@ -70,10 +70,26 @@ public:
{
boss_brutallusAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
Intro = true;
}
void Initialize()
{
SlashTimer = 11000;
StompTimer = 30000;
BurnTimer = 60000;
BerserkTimer = 360000;
IntroPhase = 0;
IntroPhaseTimer = 0;
IntroFrostBoltTimer = 0;
IsIntro = false;
Enraged = false;
}
InstanceScript* instance;
uint32 SlashTimer;
@@ -91,17 +107,7 @@ public:
void Reset() override
{
SlashTimer = 11000;
StompTimer = 30000;
BurnTimer = 60000;
BerserkTimer = 360000;
IntroPhase = 0;
IntroPhaseTimer = 0;
IntroFrostBoltTimer = 0;
IsIntro = false;
Enraged = false;
Initialize();
DoCast(me, SPELL_DUAL_WIELD, true);

View File

@@ -82,9 +82,22 @@ public:
{
boss_sacrolashAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
ShadowbladesTimer = 10000;
ShadownovaTimer = 30000;
ConfoundingblowTimer = 25000;
ShadowimageTimer = 20000;
ConflagrationTimer = 30000;
EnrageTimer = 360000;
SisterDeath = false;
Enraged = false;
}
InstanceScript* instance;
bool SisterDeath;
@@ -111,13 +124,7 @@ public:
if (!me->IsInCombat())
{
ShadowbladesTimer = 10000;
ShadownovaTimer = 30000;
ConfoundingblowTimer = 25000;
ShadowimageTimer = 20000;
ConflagrationTimer = 30000;
EnrageTimer = 360000;
SisterDeath = false;
Initialize();
}
instance->SetBossState(DATA_EREDAR_TWINS, NOT_STARTED);
@@ -319,12 +326,27 @@ public:
{
boss_alythessAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
SetCombatMovement(false);
instance = creature->GetInstanceScript();
IntroStepCounter = 10;
}
void Initialize()
{
ConflagrationTimer = 45000;
BlazeTimer = 100;
PyrogenicsTimer = 15000;
ShadownovaTimer = 40000;
EnrageTimer = 360000;
FlamesearTimer = 15000;
IntroYellTimer = 10000;
SisterDeath = false;
Enraged = false;
}
InstanceScript* instance;
bool SisterDeath;
@@ -354,15 +376,7 @@ public:
if (!me->IsInCombat())
{
ConflagrationTimer = 45000;
BlazeTimer = 100;
PyrogenicsTimer = 15000;
ShadownovaTimer = 40000;
EnrageTimer = 360000;
FlamesearTimer = 15000;
IntroYellTimer = 10000;
SisterDeath = false;
Initialize();
}
instance->SetBossState(DATA_EREDAR_TWINS, NOT_STARTED);
@@ -635,7 +649,17 @@ public:
struct npc_shadow_imageAI : public ScriptedAI
{
npc_shadow_imageAI(Creature* creature) : ScriptedAI(creature) { }
npc_shadow_imageAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
ShadowfuryTimer = 5000 + (rand32() % 15000);
DarkstrikeTimer = 3000;
KillTimer = 15000;
}
uint32 ShadowfuryTimer;
uint32 KillTimer;
@@ -644,9 +668,7 @@ public:
void Reset() override
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
ShadowfuryTimer = 5000 + (rand32() % 15000);
DarkstrikeTimer = 3000;
KillTimer = 15000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }

View File

@@ -116,7 +116,17 @@ public:
{
boss_felmystAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
uiBreathCount = 0;
breathX = 0.f;
breathY = 0.f;
}
void Initialize()
{
phase = PHASE_NONE;
uiFlightCount = 0;
}
InstanceScript* instance;
@@ -130,12 +140,10 @@ public:
void Reset() override
{
phase = PHASE_NONE;
Initialize();
events.Reset();
uiFlightCount = 0;
me->SetDisableGravity(true);
me->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10);
me->SetFloatValue(UNIT_FIELD_COMBATREACH, 10);

View File

@@ -107,13 +107,30 @@ public:
{
boss_kalecgosAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
SathGUID = 0;
DoorGUID = 0;
bJustReset = false;
me->setActive(true);
}
void Initialize()
{
SathGUID = 0;
ArcaneBuffetTimer = 8000;
FrostBreathTimer = 15000;
WildMagicTimer = 10000;
TailLashTimer = 25000;
SpectralBlastTimer = urand(20000, 25000);
CheckTimer = 1000;
ResetTimer = 30000;
TalkTimer = 0;
TalkSequence = 0;
isFriendly = false;
isEnraged = false;
isBanished = false;
}
InstanceScript* instance;
uint32 ArcaneBuffetTimer;
@@ -132,7 +149,6 @@ public:
bool bJustReset;
uint64 SathGUID;
uint64 DoorGUID;
void Reset() override
{
@@ -151,19 +167,6 @@ public:
me->SetStandState(UNIT_STAND_STATE_SLEEP);
}
me->SetFullHealth(); //dunno why it does not resets health at evade..
ArcaneBuffetTimer = 8000;
FrostBreathTimer = 15000;
WildMagicTimer = 10000;
TailLashTimer = 25000;
SpectralBlastTimer = urand(20000, 25000);
CheckTimer = 1000;
ResetTimer = 30000;
TalkTimer = 0;
TalkSequence = 0;
isFriendly = false;
isEnraged = false;
isBanished = false;
}
void EnterEvadeMode() override
@@ -459,13 +462,13 @@ public:
boss_kalecAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
SathGUID = 0;
}
void Reset() override
void Initialize()
{
SathGUID = instance->GetData64(DATA_SATHROVARR);
RevitalizeTimer = 5000;
HeroicStrikeTimer = 3000;
YellTimer = 5000;
@@ -474,6 +477,13 @@ public:
isEnraged = false;
}
void Reset() override
{
SathGUID = instance->GetData64(DATA_SATHROVARR);
Initialize();
}
void DamageTaken(Unit* done_by, uint32 &damage) override
{
if (done_by->GetGUID() != SathGUID)
@@ -581,11 +591,23 @@ public:
{
boss_sathrovarrAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
KalecGUID = 0;
KalecgosGUID = 0;
}
void Initialize()
{
ShadowBoltTimer = urand(7, 10) * 1000;
AgonyCurseTimer = 20000;
CorruptionStrikeTimer = 13000;
CheckTimer = 1000;
ResetThreat = 1000;
isEnraged = false;
isBanished = false;
}
InstanceScript* instance;
uint32 CorruptionStrikeTimer;
@@ -613,13 +635,7 @@ public:
KalecGUID = 0;
}
ShadowBoltTimer = urand(7, 10) * 1000;
AgonyCurseTimer = 20000;
CorruptionStrikeTimer = 13000;
CheckTimer = 1000;
ResetThreat = 1000;
isEnraged = false;
isBanished = false;
Initialize();
me->CastSpell(me, AURA_DEMONIC_VISUAL, true);
TeleportAllPlayersBack();

View File

@@ -243,17 +243,23 @@ public:
{
boss_kalecgos_kjAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
OrbsEmpowered = 0;
EmpowerCount = 0;
}
InstanceScript* instance;
uint8 OrbsEmpowered;
uint8 EmpowerCount;
void Reset() override
{
OrbsEmpowered = 0;
EmpowerCount = 0;
Initialize();
me->SetDisableGravity(true);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->setActive(true);
@@ -393,11 +399,21 @@ public:
{
npc_kiljaeden_controllerAI(Creature* creature) : ScriptedAI(creature), summons(me)
{
Initialize();
instance = creature->GetInstanceScript();
SetCombatMovement(false);
}
void Initialize()
{
phase = PHASE_DECEIVERS;
deceiverDeathCount = 0;
bSummonedDeceivers = false;
bKiljaedenDeath = false;
uiRandomSayTimer = 30000;
}
InstanceScript* instance;
SummonList summons;
@@ -419,14 +435,10 @@ public:
void Reset() override
{
phase = PHASE_DECEIVERS;
Initialize();
if (Creature* pKalecKJ = ObjectAccessor::GetCreature((*me), instance->GetData64(DATA_KALECGOS_KJ)))
ENSURE_AI(boss_kalecgos_kj::boss_kalecgos_kjAI, pKalecKJ->AI())->ResetOrbs();
deceiverDeathCount = 0;
bSummonedDeceivers = false;
bKiljaedenDeath = false;
uiRandomSayTimer = 30000;
summons.DespawnAll();
}
@@ -489,11 +501,47 @@ public:
{
boss_kiljaedenAI(Creature* creature) : ScriptedAI(creature), summons(me)
{
Initialize();
instance = creature->GetInstanceScript();
SetCombatMovement(false);
}
void Initialize()
{
TimerIsDeactivated[TIMER_SPEECH] = false;
Timer[TIMER_SPEECH] = 0;
//Phase 2 Timer
Timer[TIMER_SOUL_FLAY] = 11000;
Timer[TIMER_LEGION_LIGHTNING] = 30000;
Timer[TIMER_FIRE_BLOOM] = 20000;
Timer[TIMER_SUMMON_SHILEDORB] = 35000;
//Phase 3 Timer
Timer[TIMER_SHADOW_SPIKE] = 4000;
Timer[TIMER_FLAME_DART] = 3000;
Timer[TIMER_DARKNESS] = 45000;
Timer[TIMER_ORBS_EMPOWER] = 35000;
//Phase 4 Timer
Timer[TIMER_ARMAGEDDON] = 2000;
ActiveTimers = 5;
WaitTimer = 0;
speechCount = 0;
SpeechTimer = 0;
Phase = PHASE_NORMAL;
IsInDarkness = false;
IsWaiting = false;
OrbActivated = false;
SpeechBegins = true;
ChangeTimers(false, 0);
}
InstanceScript* instance;
SummonList summons;
@@ -520,41 +568,12 @@ public:
void Reset() override
{
TimerIsDeactivated[TIMER_SPEECH] = false;
Timer[TIMER_SPEECH] = 0;
//Phase 2 Timer
Timer[TIMER_SOUL_FLAY] = 11000;
Timer[TIMER_LEGION_LIGHTNING] = 30000;
Timer[TIMER_FIRE_BLOOM] = 20000;
Timer[TIMER_SUMMON_SHILEDORB] = 35000;
//Phase 3 Timer
Timer[TIMER_SHADOW_SPIKE] = 4000;
Timer[TIMER_FLAME_DART] = 3000;
Timer[TIMER_DARKNESS] = 45000;
Timer[TIMER_ORBS_EMPOWER] = 35000;
//Phase 4 Timer
Timer[TIMER_ARMAGEDDON] = 2000;
ActiveTimers = 5;
WaitTimer = 0;
speechCount = 0;
SpeechTimer = 0;
Phase = PHASE_NORMAL;
IsInDarkness = false;
IsWaiting = false;
OrbActivated = false;
SpeechBegins = true;
Initialize();
if (Creature* pKalec = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_KALECGOS_KJ)))
pKalec->RemoveDynObject(SPELL_RING_OF_BLUE_FLAMES);
me->SetFloatValue(UNIT_FIELD_COMBATREACH, 12);
ChangeTimers(false, 0);
summons.DespawnAll();
}
@@ -890,9 +909,17 @@ public:
{
npc_hand_of_the_deceiverAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
/// @todo Timers!
ShadowBoltVolleyTimer = urand(8000, 14000); // So they don't all cast it in the same moment.
FelfirePortalTimer = 20000;
}
InstanceScript* instance;
uint32 ShadowBoltVolleyTimer;
@@ -900,9 +927,7 @@ public:
void Reset() override
{
/// @todo Timers!
ShadowBoltVolleyTimer = urand(8000, 14000); // So they don't all cast it in the same moment.
FelfirePortalTimer = 20000;
Initialize();
instance->SetBossState(DATA_KILJAEDEN, NOT_STARTED);
}
@@ -989,14 +1014,20 @@ public:
{
npc_felfire_portalAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
SetCombatMovement(false);
}
void Initialize()
{
uiSpawnFiendTimer = 5000;
}
uint32 uiSpawnFiendTimer;
void Reset() override
{
uiSpawnFiendTimer = 5000;
Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NON_ATTACKABLE);
}
@@ -1034,7 +1065,16 @@ public:
struct npc_volatile_felfire_fiendAI : public ScriptedAI
{
npc_volatile_felfire_fiendAI(Creature* creature) : ScriptedAI(creature) { }
npc_volatile_felfire_fiendAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
uiExplodeTimer = 2000;
bLockedTarget = false;
}
uint32 uiExplodeTimer;
@@ -1042,8 +1082,7 @@ public:
void Reset() override
{
uiExplodeTimer = 2000;
bLockedTarget = false;
Initialize();
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
@@ -1093,16 +1132,22 @@ public:
{
npc_armageddonAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
SetCombatMovement(false);
}
void Initialize()
{
spell = 0;
uiTimer = 0;
}
uint8 spell;
uint32 uiTimer;
void Reset() override
{
spell = 0;
uiTimer = 0;
Initialize();
}
void UpdateAI(uint32 diff) override
@@ -1150,7 +1195,22 @@ public:
{
npc_shield_orbAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
x = 0.f;
y = 0.f;
}
void Initialize()
{
bPointReached = true;
uiTimer = urand(500, 1000);
uiCheckTimer = 1000;
r = 17;
c = 0;
mx = ShieldOrbLocations[0][0];
my = ShieldOrbLocations[0][1];
bClockwise = roll_chance_i(50);
}
InstanceScript* instance;
@@ -1164,14 +1224,7 @@ public:
void Reset() override
{
me->SetDisableGravity(true);
bPointReached = true;
uiTimer = urand(500, 1000);
uiCheckTimer = 1000;
r = 17;
c = 0;
mx = ShieldOrbLocations[0][0];
my = ShieldOrbLocations[0][1];
bClockwise = roll_chance_i(50);
Initialize();
}
void UpdateAI(uint32 diff) override
@@ -1235,17 +1288,25 @@ public:
struct npc_sinster_reflectionAI : public ScriptedAI
{
npc_sinster_reflectionAI(Creature* creature) : ScriptedAI(creature) { }
npc_sinster_reflectionAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
uiTimer[0] = 0;
uiTimer[1] = 0;
uiTimer[2] = 0;
victimClass = 0;
}
uint8 victimClass;
uint32 uiTimer[3];
void Reset() override
{
uiTimer[0] = 0;
uiTimer[1] = 0;
uiTimer[2] = 0;
victimClass = 0;
Initialize();
}
void UpdateAI(uint32 diff) override

View File

@@ -64,9 +64,21 @@ class boss_archaedas : public CreatureScript
{
boss_archaedasAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
uiTremorTimer = 60000;
iAwakenTimer = 0;
uiWallMinionTimer = 10000;
bWakingUp = false;
bGuardiansAwake = false;
bVaultWalkersAwake = false;
}
uint32 uiTremorTimer;
int32 iAwakenTimer;
uint32 uiWallMinionTimer;
@@ -78,13 +90,7 @@ class boss_archaedas : public CreatureScript
void Reset() override
{
uiTremorTimer = 60000;
iAwakenTimer = 0;
uiWallMinionTimer = 10000;
bWakingUp = false;
bGuardiansAwake = false;
bVaultWalkersAwake = false;
Initialize();
instance->SetData(0, 5); // respawn any dead minions
me->setFaction(35);
@@ -224,9 +230,19 @@ class npc_archaedas_minions : public CreatureScript
{
npc_archaedas_minionsAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = me->GetInstanceScript();
}
void Initialize()
{
uiArcing_Timer = 3000;
iAwakenTimer = 0;
bWakingUp = false;
bAmIAwake = false;
}
uint32 uiArcing_Timer;
int32 iAwakenTimer;
bool bWakingUp;
@@ -236,11 +252,7 @@ class npc_archaedas_minions : public CreatureScript
void Reset() override
{
uiArcing_Timer = 3000;
iAwakenTimer = 0;
bWakingUp = false;
bAmIAwake = false;
Initialize();
me->setFaction(35);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);

View File

@@ -45,7 +45,17 @@ class boss_ironaya : public CreatureScript
struct boss_ironayaAI : public ScriptedAI
{
boss_ironayaAI(Creature* creature) : ScriptedAI(creature) { }
boss_ironayaAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
uiArcingTimer = 3000;
bHasCastKnockaway = false;
bHasCastWstomp = false;
}
uint32 uiArcingTimer;
bool bHasCastWstomp;
@@ -53,9 +63,7 @@ class boss_ironaya : public CreatureScript
void Reset() override
{
uiArcingTimer = 3000;
bHasCastKnockaway = false;
bHasCastWstomp = false;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -54,13 +54,21 @@ class npc_jadespine_basilisk : public CreatureScript
struct npc_jadespine_basiliskAI : public ScriptedAI
{
npc_jadespine_basiliskAI(Creature* creature) : ScriptedAI(creature) { }
npc_jadespine_basiliskAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
uiCslumberTimer = 2000;
}
uint32 uiCslumberTimer;
void Reset() override
{
uiCslumberTimer = 2000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -88,19 +88,24 @@ class boss_akilzon : public CreatureScript
{
boss_akilzonAI(Creature* creature) : BossAI(creature, DATA_AKILZONEVENT)
{
memset(BirdGUIDs, 0, sizeof(BirdGUIDs));
Initialize();
}
void Reset() override
void Initialize()
{
_Reset();
TargetGUID = 0;
CloudGUID = 0;
CycloneGUID = 0;
memset(BirdGUIDs, 0, sizeof(BirdGUIDs));
StormCount = 0;
isRaining = false;
}
void Reset() override
{
_Reset();
Initialize();
SetWeather(WEATHER_STATE_FINE, 0.0f);
}
@@ -380,7 +385,17 @@ class npc_akilzon_eagle : public CreatureScript
struct npc_akilzon_eagleAI : public ScriptedAI
{
npc_akilzon_eagleAI(Creature* creature) : ScriptedAI(creature) { }
npc_akilzon_eagleAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
EagleSwoop_Timer = urand(5000, 10000);
arrived = true;
TargetGUID = 0;
}
uint32 EagleSwoop_Timer;
bool arrived;
@@ -388,9 +403,7 @@ class npc_akilzon_eagle : public CreatureScript
void Reset() override
{
EagleSwoop_Timer = urand(5000, 10000);
arrived = true;
TargetGUID = 0;
Initialize();
me->SetDisableGravity(true);
}

View File

@@ -74,7 +74,21 @@ class boss_halazzi : public CreatureScript
{
boss_halazziAI(Creature* creature) : ScriptedAI(creature), summons(me)
{
Initialize();
instance = creature->GetInstanceScript();
Phase = PHASE_NONE;
FrenzyTimer = 0;
SaberlashTimer = 0;
ShockTimer = 0;
TotemTimer = 0;
}
void Initialize()
{
LynxGUID = 0;
TransformCount = 0;
BerserkTimer = 600000;
CheckTimer = 1000;
}
InstanceScript* instance;
@@ -96,10 +110,7 @@ class boss_halazzi : public CreatureScript
instance->SetData(DATA_HALAZZIEVENT, NOT_STARTED);
summons.DespawnAll();
LynxGUID = 0;
TransformCount = 0;
BerserkTimer = 600000;
CheckTimer = 1000;
Initialize();
DoCast(me, SPELL_DUAL_WIELD, true);
@@ -321,15 +332,23 @@ class npc_halazzi_lynx : public CreatureScript
struct npc_halazzi_lynxAI : public ScriptedAI
{
npc_halazzi_lynxAI(Creature* creature) : ScriptedAI(creature) { }
npc_halazzi_lynxAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
FrenzyTimer = urand(30000, 50000); //frenzy every 30-50 seconds
shredder_timer = 4000;
}
uint32 FrenzyTimer;
uint32 shredder_timer;
void Reset() override
{
FrenzyTimer = urand(30000, 50000); //frenzy every 30-50 seconds
shredder_timer = 4000;
Initialize();
}
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override

View File

@@ -254,10 +254,23 @@ class boss_hexlord_malacrass : public CreatureScript
{
boss_hex_lord_malacrassAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
SelectAddEntry();
for (uint8 i = 0; i < 4; ++i)
AddGUID[i] = 0;
PlayerGUID = 0;
PlayerClass = CLASS_NONE;
}
void Initialize()
{
SpiritBolts_Timer = 20000;
DrainPower_Timer = 60000;
SiphonSoul_Timer = 100000;
PlayerAbility_Timer = 99999;
CheckAddState_Timer = 5000;
ResetTimer = 5000;
}
InstanceScript* instance;
@@ -280,12 +293,7 @@ class boss_hexlord_malacrass : public CreatureScript
{
instance->SetData(DATA_HEXLORDEVENT, NOT_STARTED);
SpiritBolts_Timer = 20000;
DrainPower_Timer = 60000;
SiphonSoul_Timer = 100000;
PlayerAbility_Timer = 99999;
CheckAddState_Timer = 5000;
ResetTimer = 5000;
Initialize();
SpawnAdds();
@@ -523,15 +531,23 @@ class boss_thurg : public CreatureScript
struct boss_thurgAI : public boss_hexlord_addAI
{
boss_thurgAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_thurgAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
bloodlust_timer = 15000;
cleave_timer = 10000;
}
uint32 bloodlust_timer;
uint32 cleave_timer;
void Reset() override
{
bloodlust_timer = 15000;
cleave_timer = 10000;
Initialize();
boss_hexlord_addAI::Reset();
}
@@ -580,15 +596,23 @@ class boss_alyson_antille : public CreatureScript
struct boss_alyson_antilleAI : public boss_hexlord_addAI
{
//Holy Priest
boss_alyson_antilleAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_alyson_antilleAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
flashheal_timer = 2500;
dispelmagic_timer = 10000;
}
uint32 flashheal_timer;
uint32 dispelmagic_timer;
void Reset() override
{
flashheal_timer = 2500;
dispelmagic_timer = 10000;
Initialize();
//AcquireGUID();
@@ -667,13 +691,21 @@ class boss_alyson_antille : public CreatureScript
struct boss_gazakrothAI : public boss_hexlord_addAI
{
boss_gazakrothAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_gazakrothAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
firebolt_timer = 2000;
}
uint32 firebolt_timer;
void Reset() override
{
firebolt_timer = 2000;
Initialize();
boss_hexlord_addAI::Reset();
}
@@ -718,15 +750,23 @@ class boss_lord_raadan : public CreatureScript
struct boss_lord_raadanAI : public boss_hexlord_addAI
{
boss_lord_raadanAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_lord_raadanAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
flamebreath_timer = 8000;
thunderclap_timer = 13000;
}
uint32 flamebreath_timer;
uint32 thunderclap_timer;
void Reset() override
{
flamebreath_timer = 8000;
thunderclap_timer = 13000;
Initialize();
boss_hexlord_addAI::Reset();
@@ -769,13 +809,21 @@ class boss_darkheart : public CreatureScript
struct boss_darkheartAI : public boss_hexlord_addAI
{
boss_darkheartAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_darkheartAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
psychicwail_timer = 8000;
}
uint32 psychicwail_timer;
void Reset() override
{
psychicwail_timer = 8000;
Initialize();
boss_hexlord_addAI::Reset();
}
void UpdateAI(uint32 diff) override
@@ -811,13 +859,21 @@ class boss_slither : public CreatureScript
struct boss_slitherAI : public boss_hexlord_addAI
{
boss_slitherAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_slitherAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
venomspit_timer = 5000;
}
uint32 venomspit_timer;
void Reset() override
{
venomspit_timer = 5000;
Initialize();
boss_hexlord_addAI::Reset();
}
@@ -869,13 +925,21 @@ class boss_fenstalker : public CreatureScript
struct boss_fenstalkerAI : public boss_hexlord_addAI
{
boss_fenstalkerAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_fenstalkerAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
volatileinf_timer = 15000;
}
uint32 volatileinf_timer;
void Reset() override
{
volatileinf_timer = 15000;
Initialize();
boss_hexlord_addAI::Reset();
}
@@ -913,15 +977,23 @@ class boss_koragg : public CreatureScript
struct boss_koraggAI : public boss_hexlord_addAI
{
boss_koraggAI(Creature* creature) : boss_hexlord_addAI(creature) { }
boss_koraggAI(Creature* creature) : boss_hexlord_addAI(creature)
{
Initialize();
}
void Initialize()
{
coldstare_timer = 15000;
mightyblow_timer = 10000;
}
uint32 coldstare_timer;
uint32 mightyblow_timer;
void Reset() override
{
coldstare_timer = 15000;
mightyblow_timer = 10000;
Initialize();
boss_hexlord_addAI::Reset();
}

View File

@@ -121,9 +121,29 @@ class boss_janalai : public CreatureScript
{
boss_janalaiAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
FireBreathTimer = 8000;
BombTimer = 30000;
BombSequenceTimer = 1000;
BombCount = 0;
HatcherTimer = 10000;
EnrageTimer = MINUTE * 5 * IN_MILLISECONDS;
noeggs = false;
isBombing = false;
enraged = false;
isFlameBreathing = false;
for (uint8 i = 0; i < 40; ++i)
FireBombGUIDs[i] = 0;
}
InstanceScript* instance;
uint32 FireBreathTimer;
@@ -145,21 +165,7 @@ class boss_janalai : public CreatureScript
{
instance->SetData(DATA_JANALAIEVENT, NOT_STARTED);
FireBreathTimer = 8000;
BombTimer = 30000;
BombSequenceTimer = 1000;
BombCount = 0;
HatcherTimer = 10000;
EnrageTimer = MINUTE*5*IN_MILLISECONDS;
noeggs = false;
isBombing =false;
enraged = false;
isFlameBreathing = false;
for (uint8 i = 0; i < 40; ++i)
FireBombGUIDs[i] = 0;
Initialize();
HatchAllEggs(1);
}
@@ -493,9 +499,20 @@ class npc_janalai_hatcher : public CreatureScript
{
npc_janalai_hatcherAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
waypoint = 0;
isHatching = false;
hasChangedSide = false;
WaitTimer = 1;
HatchNum = 0;
side = false;
}
InstanceScript* instance;
uint32 waypoint;
@@ -509,12 +526,8 @@ class npc_janalai_hatcher : public CreatureScript
void Reset() override
{
me->SetWalk(true);
Initialize();
side =(me->GetPositionY() < 1150);
waypoint = 0;
isHatching = false;
hasChangedSide = false;
WaitTimer = 1;
HatchNum = 0;
}
bool HatchEggs(uint32 num)
@@ -626,15 +639,21 @@ class npc_janalai_hatchling : public CreatureScript
{
npc_janalai_hatchlingAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
BuffetTimer = 7000;
}
InstanceScript* instance;
uint32 BuffetTimer;
void Reset() override
{
BuffetTimer = 7000;
Initialize();
if (me->GetPositionY() > 1150)
me->GetMotionMaster()->MovePoint(0, hatcherway[0][3][0] + rand32() % 4 - 2, 1150.0f + rand32() % 4 - 2, hatcherway[0][3][2]);
else

View File

@@ -109,11 +109,28 @@ class boss_nalorakk : public CreatureScript
{
boss_nalorakkAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
inMove = false;
MoveEvent = true;
MovePhase = 0;
waitTimer = 0;
LaceratingSlash_Timer = 0;
RendFlesh_Timer = 0;
DeafeningRoar_Timer = 0;
instance = creature->GetInstanceScript();
}
void Initialize()
{
Surge_Timer = urand(15000, 20000);
BrutalSwipe_Timer = urand(7000, 12000);
Mangle_Timer = urand(10000, 15000);
ShapeShift_Timer = urand(45000, 50000);
Berserk_Timer = 600000;
inBearForm = false;
}
InstanceScript* instance;
uint32 BrutalSwipe_Timer;
@@ -150,13 +167,7 @@ class boss_nalorakk : public CreatureScript
instance->SetData(DATA_NALORAKKEVENT, NOT_STARTED);
Surge_Timer = urand(15000, 20000);
BrutalSwipe_Timer = urand(7000, 12000);
Mangle_Timer = urand(10000, 15000);
ShapeShift_Timer = urand(45000, 50000);
Berserk_Timer = 600000;
inBearForm = false;
Initialize();
// me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, 5122); /// @todo find the correct equipment id
}

View File

@@ -136,8 +136,38 @@ class boss_zuljin : public CreatureScript
{
boss_zuljinAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{
Initialize();
instance = creature->GetInstanceScript();
memset(SpiritGUID, 0, sizeof(SpiritGUID));
health_20 = 0;
}
void Initialize()
{
Phase = 0;
Intro_Timer = 37000;
Berserk_Timer = 600000;
Whirlwind_Timer = 7000;
Grievous_Throw_Timer = 8000;
Creeping_Paralysis_Timer = 7000;
Overpower_Timer = 0;
Claw_Rage_Timer = 5000;
Lynx_Rush_Timer = 14000;
Claw_Loop_Timer = 0;
Claw_Counter = 0;
Flame_Whirl_Timer = 5000;
Flame_Breath_Timer = 6000;
Pillar_Of_Fire_Timer = 7000;
ClawTargetGUID = 0;
TankGUID = 0;
}
InstanceScript* instance;
uint64 SpiritGUID[4];
@@ -171,30 +201,9 @@ class boss_zuljin : public CreatureScript
{
instance->SetData(DATA_ZULJINEVENT, NOT_STARTED);
Phase = 0;
health_20 = me->CountPctFromMaxHealth(20);
Intro_Timer = 37000;
Berserk_Timer = 600000;
Whirlwind_Timer = 7000;
Grievous_Throw_Timer = 8000;
Creeping_Paralysis_Timer = 7000;
Overpower_Timer = 0;
Claw_Rage_Timer = 5000;
Lynx_Rush_Timer = 14000;
Claw_Loop_Timer = 0;
Claw_Counter = 0;
Flame_Whirl_Timer = 5000;
Flame_Breath_Timer = 6000;
Pillar_Of_Fire_Timer = 7000;
ClawTargetGUID = 0;
TankGUID = 0;
Initialize();
Summons.DespawnAll();

View File

@@ -131,38 +131,6 @@ class npc_zulaman_hostage : public CreatureScript
public:
npc_zulaman_hostage() : CreatureScript("npc_zulaman_hostage") { }
struct npc_zulaman_hostageAI : public ScriptedAI
{
npc_zulaman_hostageAI(Creature* creature) : ScriptedAI(creature)
{
IsLoot = false;
}
bool IsLoot;
uint64 PlayerGUID;
void Reset() override { }
void EnterCombat(Unit* /*who*/) override { }
void JustDied(Unit* /*killer*/) override
{
if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID))
player->SendLoot(me->GetGUID(), LOOT_CORPSE);
}
void UpdateAI(uint32 /*diff*/) override
{
if (IsLoot)
DoCast(me, 7, false);
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_zulaman_hostageAI(creature);
}
bool OnGossipHello(Player* player, Creature* creature) override
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HOSTAGE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
@@ -276,9 +244,17 @@ class npc_harrison_jones : public CreatureScript
{
npc_harrison_jonesAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
_gongEvent = 0;
_gongTimer = 0;
uiTargetGUID = 0;
}
InstanceScript* instance;
uint8 _gongEvent;
@@ -287,9 +263,7 @@ class npc_harrison_jones : public CreatureScript
void Reset() override
{
_gongEvent = 0;
_gongTimer = 0;
uiTargetGUID = 0;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }

View File

@@ -92,15 +92,25 @@ class boss_arlokk : public CreatureScript
struct boss_arlokkAI : public BossAI
{
boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK) { }
boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK)
{
Initialize();
memset(_triggersSideAGUID, 0, sizeof(_triggersSideAGUID));
memset(_triggersSideBGUID, 0, sizeof(_triggersSideBGUID));
}
void Initialize()
{
_summonCountA = 0;
_summonCountB = 0;
}
void Reset() override
{
if (events.IsInPhase(PHASE_TWO))
me->HandleStatModifier(UNIT_MOD_DAMAGE_MAINHAND, TOTAL_PCT, 35.0f, false); // hack
_Reset();
_summonCountA = 0;
_summonCountB = 0;
Initialize();
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_DAGGER));
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, uint32(WEAPON_DAGGER));
me->SetWalk(false);
@@ -332,7 +342,10 @@ class npc_zulian_prowler : public CreatureScript
struct npc_zulian_prowlerAI : public ScriptedAI
{
npc_zulian_prowlerAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
npc_zulian_prowlerAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
{
_sideData = 0;
}
void Reset() override
{

View File

@@ -212,13 +212,21 @@ class npc_batrider : public CreatureScript
struct npc_batriderAI : public ScriptedAI
{
npc_batriderAI(Creature* creature) : ScriptedAI(creature) { }
npc_batriderAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
Bomb_Timer = 2000;
}
uint32 Bomb_Timer;
void Reset() override
{
Bomb_Timer = 2000;
Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}

View File

@@ -175,15 +175,21 @@ class npc_healing_ward : public CreatureScript
{
npc_healing_wardAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
Heal_Timer = 2000;
}
uint32 Heal_Timer;
InstanceScript* instance;
void Reset() override
{
Heal_Timer = 2000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -216,13 +222,21 @@ class npc_shade_of_jindo : public CreatureScript
struct npc_shade_of_jindoAI : public ScriptedAI
{
npc_shade_of_jindoAI(Creature* creature) : ScriptedAI(creature) { }
npc_shade_of_jindoAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
ShadowShock_Timer = 1000;
}
uint32 ShadowShock_Timer;
void Reset() override
{
ShadowShock_Timer = 1000;
Initialize();
DoCast(me, SPELL_INVISIBLE, true);
}

View File

@@ -112,14 +112,23 @@ class boss_mandokir : public CreatureScript
struct boss_mandokirAI : public BossAI
{
boss_mandokirAI(Creature* creature) : BossAI(creature, DATA_MANDOKIR) { }
boss_mandokirAI(Creature* creature) : BossAI(creature, DATA_MANDOKIR)
{
Initialize();
memset(chainedSpirtGUIDs, 0, sizeof(chainedSpirtGUIDs));
}
void Initialize()
{
killCount = 0;
}
void Reset() override
{
if (me->GetPositionZ() > 140.0f)
{
_Reset();
killCount = 0;
Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
events.ScheduleEvent(EVENT_CHECK_START, 1000);
if (Creature* speaker = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_VILEBRANCH_SPEAKER)))
@@ -300,11 +309,19 @@ class npc_ohgan : public CreatureScript
struct npc_ohganAI : public ScriptedAI
{
npc_ohganAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript()) { }
npc_ohganAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
{
Initialize();
}
void Initialize()
{
SunderArmor_Timer = 5000;
}
void Reset() override
{
SunderArmor_Timer = 5000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -353,14 +370,22 @@ class npc_vilebranch_speaker : public CreatureScript
struct npc_vilebranch_speakerAI : public ScriptedAI
{
npc_vilebranch_speakerAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript()) { }
npc_vilebranch_speakerAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
{
Initialize();
}
void Reset() override
void Initialize()
{
demoralizing_Shout_Timer = urand(2000, 4000);
cleave_Timer = urand(5000, 8000);
}
void Reset() override
{
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
void JustDied(Unit* /*killer*/) override

View File

@@ -217,13 +217,21 @@ class npc_spawn_of_marli : public CreatureScript
struct npc_spawn_of_marliAI : public ScriptedAI
{
npc_spawn_of_marliAI(Creature* creature) : ScriptedAI(creature) { }
npc_spawn_of_marliAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
LevelUp_Timer = 3000;
}
uint32 LevelUp_Timer;
void Reset() override
{
LevelUp_Timer = 3000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }

View File

@@ -45,7 +45,22 @@ class boss_renataki : public CreatureScript
struct boss_renatakiAI : public BossAI
{
boss_renatakiAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) { }
boss_renatakiAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS)
{
Initialize();
}
void Initialize()
{
Invisible_Timer = urand(8000, 18000);
Ambush_Timer = 3000;
Visible_Timer = 4000;
Aggro_Timer = urand(15000, 25000);
ThousandBlades_Timer = urand(4000, 8000);
Invisible = false;
Ambushed = false;
}
uint32 Invisible_Timer;
uint32 Ambush_Timer;
@@ -59,14 +74,7 @@ class boss_renataki : public CreatureScript
void Reset() override
{
_Reset();
Invisible_Timer = urand(8000, 18000);
Ambush_Timer = 3000;
Visible_Timer = 4000;
Aggro_Timer = urand(15000, 25000);
ThousandBlades_Timer = urand(4000, 8000);
Invisible = false;
Ambushed = false;
Initialize();
}
void JustDied(Unit* /*killer*/) override

View File

@@ -83,7 +83,16 @@ class boss_thekal : public CreatureScript
struct boss_thekalAI : public BossAI
{
boss_thekalAI(Creature* creature) : BossAI(creature, DATA_THEKAL) { }
boss_thekalAI(Creature* creature) : BossAI(creature, DATA_THEKAL)
{
Initialize();
}
void Initialize()
{
Enraged = false;
WasDead = false;
}
bool Enraged;
bool WasDead;
@@ -93,8 +102,7 @@ class boss_thekal : public CreatureScript
if (events.IsInPhase(PHASE_TWO))
me->HandleStatModifier(UNIT_MOD_DAMAGE_MAINHAND, TOTAL_PCT, 35.0f, false); // hack
_Reset();
Enraged = false;
WasDead = false;
Initialize();
}
void JustDied(Unit* /*killer*/) override
@@ -264,9 +272,21 @@ class npc_zealot_lorkhan : public CreatureScript
{
npc_zealot_lorkhanAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
Shield_Timer = 1000;
BloodLust_Timer = 16000;
GreaterHeal_Timer = 32000;
Disarm_Timer = 6000;
Check_Timer = 10000;
FakeDeath = false;
}
uint32 Shield_Timer;
uint32 BloodLust_Timer;
uint32 GreaterHeal_Timer;
@@ -279,13 +299,7 @@ class npc_zealot_lorkhan : public CreatureScript
void Reset() override
{
Shield_Timer = 1000;
BloodLust_Timer = 16000;
GreaterHeal_Timer = 32000;
Disarm_Timer = 6000;
Check_Timer = 10000;
FakeDeath = false;
Initialize();
instance->SetBossState(DATA_LORKHAN, NOT_STARTED);
@@ -412,9 +426,22 @@ class npc_zealot_zath : public CreatureScript
{
npc_zealot_zathAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
{
SweepingStrikes_Timer = 13000;
SinisterStrike_Timer = 8000;
Gouge_Timer = 25000;
Kick_Timer = 18000;
Blind_Timer = 5000;
Check_Timer = 10000;
FakeDeath = false;
}
uint32 SweepingStrikes_Timer;
uint32 SinisterStrike_Timer;
uint32 Gouge_Timer;
@@ -428,14 +455,7 @@ class npc_zealot_zath : public CreatureScript
void Reset() override
{
SweepingStrikes_Timer = 13000;
SinisterStrike_Timer = 8000;
Gouge_Timer = 25000;
Kick_Timer = 18000;
Blind_Timer = 5000;
Check_Timer = 10000;
FakeDeath = false;
Initialize();
instance->SetBossState(DATA_ZATH, NOT_STARTED);

View File

@@ -90,7 +90,17 @@ class boss_venoxis : public CreatureScript
struct boss_venoxisAI : public BossAI
{
boss_venoxisAI(Creature* creature) : BossAI(creature, DATA_VENOXIS) { }
boss_venoxisAI(Creature* creature) : BossAI(creature, DATA_VENOXIS)
{
Initialize();
}
void Initialize()
{
_inMeleeRange = 0;
_transformed = false;
_frenzied = false;
}
void Reset() override
{
@@ -99,9 +109,7 @@ class boss_venoxis : public CreatureScript
me->RemoveAllAuras();
me->SetReactState(REACT_PASSIVE);
// set some internally used variables to their defaults
_inMeleeRange = 0;
_transformed = false;
_frenzied = false;
Initialize();
events.SetPhase(PHASE_ONE);
}

View File

@@ -55,12 +55,20 @@ public:
struct boss_twilight_corrupterAI : public ScriptedAI
{
boss_twilight_corrupterAI(Creature* creature) : ScriptedAI(creature) { }
boss_twilight_corrupterAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
KillCount = 0;
}
void Reset() override
{
_events.Reset();
KillCount = 0;
Initialize();
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -178,16 +178,22 @@ public:
{
npc_rinjiAI(Creature* creature) : npc_escortAI(creature)
{
Initialize();
_IsByOutrunner = false;
spawnId = 0;
}
void Reset() override
void Initialize()
{
postEventCount = 0;
postEventTimer = 3000;
}
void Reset() override
{
Initialize();
}
void JustRespawned() override
{
_IsByOutrunner = false;

View File

@@ -57,15 +57,23 @@ public:
struct npc_converted_sentryAI : public ScriptedAI
{
npc_converted_sentryAI(Creature* creature) : ScriptedAI(creature) { }
npc_converted_sentryAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
Credit = false;
Timer = 2500;
}
bool Credit;
uint32 Timer;
void Reset() override
{
Credit = false;
Timer = 2500;
Initialize();
}
void MoveInLineOfSight(Unit* /*who*/) override { }

View File

@@ -45,14 +45,22 @@ public:
struct npc_corporal_keeshanAI : public npc_escortAI
{
npc_corporal_keeshanAI(Creature* creature) : npc_escortAI(creature) { }
npc_corporal_keeshanAI(Creature* creature) : npc_escortAI(creature)
{
Initialize();
}
void Reset() override
void Initialize()
{
timer = 0;
phase = 0;
mockingBlowTimer = 5000;
shieldBashTimer = 8000;
shieldBashTimer = 8000;
}
void Reset() override
{
Initialize();
}
void sQuestAccept(Player* player, Quest const* quest)

View File

@@ -188,7 +188,16 @@ public:
{
pyrewood_ambushAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{
QuestInProgress = false;
Initialize();
WaitTimer = WAIT_SECS;
QuestInProgress = false;
}
void Initialize()
{
Phase = 0;
KillCount = 0;
PlayerGUID = 0;
}
uint32 Phase;
@@ -205,9 +214,7 @@ public:
if (!QuestInProgress) //fix reset values (see UpdateVictim)
{
Phase = 0;
KillCount = 0;
PlayerGUID = 0;
Initialize();
Summons.DespawnAll();
}
}

View File

@@ -233,7 +233,18 @@ public:
struct npc_lord_gregor_lescovarAI : public npc_escortAI
{
npc_lord_gregor_lescovarAI(Creature* creature) : npc_escortAI(creature) { }
npc_lord_gregor_lescovarAI(Creature* creature) : npc_escortAI(creature)
{
Initialize();
}
void Initialize()
{
uiTimer = 0;
uiPhase = 0;
MarzonGUID = 0;
}
uint32 uiTimer;
uint32 uiPhase;
@@ -242,10 +253,7 @@ public:
void Reset() override
{
uiTimer = 0;
uiPhase = 0;
MarzonGUID = 0;
Initialize();
}
void EnterEvadeMode() override
@@ -486,15 +494,23 @@ public:
struct npc_tyrion_spybotAI : public npc_escortAI
{
npc_tyrion_spybotAI(Creature* creature) : npc_escortAI(creature) { }
npc_tyrion_spybotAI(Creature* creature) : npc_escortAI(creature)
{
Initialize();
}
void Initialize()
{
uiTimer = 0;
uiPhase = 0;
}
uint32 uiTimer;
uint32 uiPhase;
void Reset() override
{
uiTimer = 0;
uiPhase = 0;
Initialize();
}
void WaypointReached(uint32 waypointId) override

View File

@@ -50,15 +50,21 @@ public:
{
npc_yennikuAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
bReset = false;
}
void Initialize()
{
Reset_Timer = 0;
}
uint32 Reset_Timer;
bool bReset;
void Reset() override
{
Reset_Timer = 0;
Initialize();
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
}

View File

@@ -68,7 +68,17 @@ public:
struct npc_calvin_montagueAI : public ScriptedAI
{
npc_calvin_montagueAI(Creature* creature) : ScriptedAI(creature) { }
npc_calvin_montagueAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
m_uiPhase = 0;
m_uiPhaseTimer = 5000;
m_uiPlayerGUID = 0;
}
uint32 m_uiPhase;
uint32 m_uiPhaseTimer;
@@ -76,9 +86,7 @@ public:
void Reset() override
{
m_uiPhase = 0;
m_uiPhaseTimer = 5000;
m_uiPlayerGUID = 0;
Initialize();
me->RestoreFaction();

View File

@@ -99,7 +99,23 @@ public:
struct npc_lady_sylvanas_windrunnerAI : public ScriptedAI
{
npc_lady_sylvanas_windrunnerAI(Creature* creature) : ScriptedAI(creature) { }
npc_lady_sylvanas_windrunnerAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
LamentEventTimer = 5000;
LamentEvent = false;
targetGUID = 0;
FadeTimer = 30000;
SummonSkeletonTimer = 20000;
BlackArrowTimer = 15000;
ShotTimer = 8000;
MultiShotTimer = 10000;
}
uint32 LamentEventTimer;
bool LamentEvent;
@@ -113,15 +129,7 @@ public:
void Reset() override
{
LamentEventTimer = 5000;
LamentEvent = false;
targetGUID = 0;
FadeTimer = 30000;
SummonSkeletonTimer = 20000;
BlackArrowTimer = 15000;
ShotTimer = 8000;
MultiShotTimer = 10000;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -231,7 +239,18 @@ public:
struct npc_highborne_lamenterAI : public ScriptedAI
{
npc_highborne_lamenterAI(Creature* creature) : ScriptedAI(creature) { }
npc_highborne_lamenterAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
}
void Initialize()
{
EventMoveTimer = 10000;
EventCastTimer = 17500;
EventMove = true;
EventCast = true;
}
uint32 EventMoveTimer;
uint32 EventCastTimer;
@@ -240,10 +259,7 @@ public:
void Reset() override
{
EventMoveTimer = 10000;
EventCastTimer = 17500;
EventMove = true;
EventCast = true;
Initialize();
}
void EnterCombat(Unit* /*who*/) override { }