mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Misc: Refactor scripts to fix static analysis warnings
First batch of fixes targeting 100 issues reported by Coverity
This commit is contained in:
@@ -74,6 +74,7 @@ Object::Object() : m_PackGUID(sizeof(uint64)+1)
|
||||
{
|
||||
m_objectTypeId = TYPEID_OBJECT;
|
||||
m_objectType = TYPEMASK_OBJECT;
|
||||
m_updateFlag = UPDATEFLAG_NONE;
|
||||
|
||||
m_uint32Values = NULL;
|
||||
m_valuesCount = 0;
|
||||
|
||||
@@ -853,6 +853,7 @@ SpellInfo::SpellInfo(SpellEntry const* spellEntry)
|
||||
Effects[i] = SpellEffectInfo(spellEntry, this, i);
|
||||
|
||||
ChainEntry = NULL;
|
||||
ExplicitTargetMask = 0;
|
||||
}
|
||||
|
||||
SpellInfo::~SpellInfo()
|
||||
|
||||
@@ -84,10 +84,20 @@ class npc_av_marshal_or_warmaster : public CreatureScript
|
||||
|
||||
struct npc_av_marshal_or_warmasterAI : public ScriptedAI
|
||||
{
|
||||
npc_av_marshal_or_warmasterAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_av_marshal_or_warmasterAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_hasAura = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_CHARGE_TARGET, urand(2 * IN_MILLISECONDS, 12 * IN_MILLISECONDS));
|
||||
events.ScheduleEvent(EVENT_CLEAVE, urand(1 * IN_MILLISECONDS, 11 * IN_MILLISECONDS));
|
||||
@@ -95,8 +105,6 @@ class npc_av_marshal_or_warmaster : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_WHIRLWIND, urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS));
|
||||
events.ScheduleEvent(EVENT_ENRAGE, urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS));
|
||||
events.ScheduleEvent(EVENT_CHECK_RESET, 5000);
|
||||
|
||||
_hasAura = false;
|
||||
}
|
||||
|
||||
void JustRespawned() override
|
||||
|
||||
@@ -110,7 +110,20 @@ public:
|
||||
|
||||
struct boss_balindaAI : public ScriptedAI
|
||||
{
|
||||
boss_balindaAI(Creature* creature) : ScriptedAI(creature), summons(me) { }
|
||||
boss_balindaAI(Creature* creature) : ScriptedAI(creature), summons(me)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
arcaneExplosionTimer = urand(5 * IN_MILLISECONDS, 15 * IN_MILLISECONDS);
|
||||
coneOfColdTimer = 8 * IN_MILLISECONDS;
|
||||
fireBoltTimer = 1 * IN_MILLISECONDS;
|
||||
frostboltTimer = 4 * IN_MILLISECONDS;
|
||||
resetTimer = 5 * IN_MILLISECONDS;
|
||||
waterElementalTimer = 0;
|
||||
}
|
||||
|
||||
uint32 arcaneExplosionTimer;
|
||||
uint32 coneOfColdTimer;
|
||||
@@ -123,12 +136,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
arcaneExplosionTimer = urand(5 * IN_MILLISECONDS, 15 * IN_MILLISECONDS);
|
||||
coneOfColdTimer = 8 * IN_MILLISECONDS;
|
||||
fireBoltTimer = 1 * IN_MILLISECONDS;
|
||||
frostboltTimer = 4 * IN_MILLISECONDS;
|
||||
resetTimer = 5 * IN_MILLISECONDS;
|
||||
waterElementalTimer = 0;
|
||||
Initialize();
|
||||
|
||||
summons.DespawnAll();
|
||||
}
|
||||
|
||||
@@ -45,7 +45,20 @@ public:
|
||||
|
||||
struct boss_drektharAI : public ScriptedAI
|
||||
{
|
||||
boss_drektharAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_drektharAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
WhirlwindTimer = urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
Whirlwind2Timer = urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
KnockdownTimer = 12 * IN_MILLISECONDS;
|
||||
FrenzyTimer = 6 * IN_MILLISECONDS;
|
||||
ResetTimer = 5 * IN_MILLISECONDS;
|
||||
YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds
|
||||
}
|
||||
|
||||
uint32 WhirlwindTimer;
|
||||
uint32 Whirlwind2Timer;
|
||||
@@ -56,12 +69,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
WhirlwindTimer = urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
Whirlwind2Timer = urand(1 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
KnockdownTimer = 12 * IN_MILLISECONDS;
|
||||
FrenzyTimer = 6 * IN_MILLISECONDS;
|
||||
ResetTimer = 5 * IN_MILLISECONDS;
|
||||
YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -46,7 +46,20 @@ public:
|
||||
|
||||
struct boss_galvangarAI : public ScriptedAI
|
||||
{
|
||||
boss_galvangarAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_galvangarAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CleaveTimer = urand(1 * IN_MILLISECONDS, 9 * IN_MILLISECONDS);
|
||||
FrighteningShoutTimer = urand(2 * IN_MILLISECONDS, 19 * IN_MILLISECONDS);
|
||||
Whirlwind1Timer = urand(1 * IN_MILLISECONDS, 13 * IN_MILLISECONDS);
|
||||
Whirlwind2Timer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
MortalStrikeTimer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
ResetTimer = 5 * IN_MILLISECONDS;
|
||||
}
|
||||
|
||||
uint32 CleaveTimer;
|
||||
uint32 FrighteningShoutTimer;
|
||||
@@ -57,12 +70,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
CleaveTimer = urand(1 * IN_MILLISECONDS, 9 * IN_MILLISECONDS);
|
||||
FrighteningShoutTimer = urand(2 * IN_MILLISECONDS, 19 * IN_MILLISECONDS);
|
||||
Whirlwind1Timer = urand(1 * IN_MILLISECONDS, 13 * IN_MILLISECONDS);
|
||||
Whirlwind2Timer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
MortalStrikeTimer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
|
||||
ResetTimer = 5 * IN_MILLISECONDS;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -42,7 +42,19 @@ public:
|
||||
|
||||
struct boss_vanndarAI : public ScriptedAI
|
||||
{
|
||||
boss_vanndarAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_vanndarAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AvatarTimer = 3 * IN_MILLISECONDS;
|
||||
ThunderclapTimer = 4 * IN_MILLISECONDS;
|
||||
StormboltTimer = 6 * IN_MILLISECONDS;
|
||||
ResetTimer = 5 * IN_MILLISECONDS;
|
||||
YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS);
|
||||
}
|
||||
|
||||
uint32 AvatarTimer;
|
||||
uint32 ThunderclapTimer;
|
||||
@@ -52,11 +64,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AvatarTimer = 3 * IN_MILLISECONDS;
|
||||
ThunderclapTimer = 4 * IN_MILLISECONDS;
|
||||
StormboltTimer = 6 * IN_MILLISECONDS;
|
||||
ResetTimer = 5 * IN_MILLISECONDS;
|
||||
YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS);
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -124,10 +124,27 @@ public:
|
||||
{
|
||||
npc_grimstoneAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
MobSpawnId = rand32() % 6;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
EventPhase = 0;
|
||||
Event_Timer = 1000;
|
||||
|
||||
MobCount = 0;
|
||||
MobDeath_Timer = 0;
|
||||
|
||||
for (uint8 i = 0; i < MAX_NPC_AMOUNT; ++i)
|
||||
RingMobGUID[i] = 0;
|
||||
|
||||
RingBossGUID = 0;
|
||||
|
||||
CanWalk = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint8 EventPhase;
|
||||
@@ -144,20 +161,9 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
EventPhase = 0;
|
||||
Event_Timer = 1000;
|
||||
|
||||
MobCount = 0;
|
||||
MobDeath_Timer = 0;
|
||||
|
||||
for (uint8 i = 0; i < MAX_NPC_AMOUNT; ++i)
|
||||
RingMobGUID[i] = 0;
|
||||
|
||||
RingBossGUID = 0;
|
||||
|
||||
CanWalk = false;
|
||||
}
|
||||
|
||||
/// @todo move them to center
|
||||
@@ -353,7 +359,17 @@ public:
|
||||
|
||||
struct npc_phalanxAI : public ScriptedAI
|
||||
{
|
||||
npc_phalanxAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_phalanxAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ThunderClap_Timer = 12000;
|
||||
FireballVolley_Timer = 0;
|
||||
MightyBlow_Timer = 15000;
|
||||
}
|
||||
|
||||
uint32 ThunderClap_Timer;
|
||||
uint32 FireballVolley_Timer;
|
||||
@@ -361,9 +377,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ThunderClap_Timer = 12000;
|
||||
FireballVolley_Timer = 0;
|
||||
MightyBlow_Timer = 15000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1238,9 +1252,16 @@ public:
|
||||
{
|
||||
npc_rocknotAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
BreakKeg_Timer = 0;
|
||||
BreakDoor_Timer = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 BreakKeg_Timer;
|
||||
@@ -1251,8 +1272,7 @@ public:
|
||||
if (HasEscortState(STATE_ESCORT_ESCORTING))
|
||||
return;
|
||||
|
||||
BreakKeg_Timer = 0;
|
||||
BreakDoor_Timer = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void DoGo(uint32 id, uint32 state)
|
||||
|
||||
@@ -157,12 +157,18 @@ class boss_doomrel : public CreatureScript
|
||||
{
|
||||
boss_doomrelAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
_instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_voidwalkers = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_voidwalkers = false;
|
||||
Initialize();
|
||||
|
||||
me->setFaction(FACTION_FRIEND);
|
||||
|
||||
|
||||
@@ -53,13 +53,21 @@ public:
|
||||
|
||||
struct boss_gythAI : public BossAI
|
||||
{
|
||||
boss_gythAI(Creature* creature) : BossAI(creature, DATA_GYTH) { }
|
||||
boss_gythAI(Creature* creature) : BossAI(creature, DATA_GYTH)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
SummonedRend = false;
|
||||
}
|
||||
|
||||
bool SummonedRend;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
SummonedRend = false;
|
||||
Initialize();
|
||||
if (instance->GetBossState(DATA_GYTH) == IN_PROGRESS)
|
||||
{
|
||||
instance->SetBossState(DATA_GYTH, DONE);
|
||||
|
||||
@@ -45,12 +45,20 @@ public:
|
||||
|
||||
struct boss_halyconAI : public BossAI
|
||||
{
|
||||
boss_halyconAI(Creature* creature) : BossAI(creature, DATA_HALYCON) { }
|
||||
boss_halyconAI(Creature* creature) : BossAI(creature, DATA_HALYCON)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Summoned = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
Summoned = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -46,13 +46,21 @@ public:
|
||||
|
||||
struct boss_lord_valthalakAI : public BossAI
|
||||
{
|
||||
boss_lord_valthalakAI(Creature* creature) : BossAI(creature, DATA_LORD_VALTHALAK) { }
|
||||
boss_lord_valthalakAI(Creature* creature) : BossAI(creature, DATA_LORD_VALTHALAK)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
frenzy40 = false;
|
||||
frenzy15 = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
frenzy40 = false;
|
||||
frenzy15 = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -57,14 +57,22 @@ public:
|
||||
|
||||
struct boss_overlordwyrmthalakAI : public BossAI
|
||||
{
|
||||
boss_overlordwyrmthalakAI(Creature* creature) : BossAI(creature, DATA_OVERLORD_WYRMTHALAK) { }
|
||||
boss_overlordwyrmthalakAI(Creature* creature) : BossAI(creature, DATA_OVERLORD_WYRMTHALAK)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Summoned = false;
|
||||
}
|
||||
|
||||
bool Summoned;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
Summoned = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -73,6 +73,8 @@ public:
|
||||
{
|
||||
boss_chromaggusAI(Creature* creature) : BossAI(creature, BOSS_CHROMAGGUS)
|
||||
{
|
||||
Initialize();
|
||||
|
||||
// Select the 2 breaths that we are going to use until despawned
|
||||
// 5 possiblities for the first breath, 4 for the second, 20 total possiblites
|
||||
// This way we don't end up casting 2 of the same breath
|
||||
@@ -173,12 +175,17 @@ public:
|
||||
EnterEvadeMode();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CurrentVurln_Spell = 0; // We use this to store our last vulnerabilty spell so we can remove it later
|
||||
Enraged = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
|
||||
CurrentVurln_Spell = 0; // We use this to store our last vulnerabilty spell so we can remove it later
|
||||
Enraged = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -166,11 +166,19 @@ public:
|
||||
|
||||
struct boss_victor_nefariusAI : public BossAI
|
||||
{
|
||||
boss_victor_nefariusAI(Creature* creature) : BossAI(creature, BOSS_NEFARIAN) { }
|
||||
boss_victor_nefariusAI(Creature* creature) : BossAI(creature, BOSS_NEFARIAN)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
SpawnedAdds = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
SpawnedAdds = 0;
|
||||
Initialize();
|
||||
|
||||
if (me->GetMapId() == 469)
|
||||
{
|
||||
@@ -386,15 +394,23 @@ public:
|
||||
|
||||
struct boss_nefarianAI : public BossAI
|
||||
{
|
||||
boss_nefarianAI(Creature* creature) : BossAI(creature, BOSS_NEFARIAN) { }
|
||||
boss_nefarianAI(Creature* creature) : BossAI(creature, BOSS_NEFARIAN)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
Phase3 = false;
|
||||
canDespawn = false;
|
||||
DespawnTimer = 30000;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
{
|
||||
canDespawn = true;
|
||||
|
||||
@@ -68,13 +68,21 @@ public:
|
||||
|
||||
struct boss_razorgoreAI : public BossAI
|
||||
{
|
||||
boss_razorgoreAI(Creature* creature) : BossAI(creature, BOSS_RAZORGORE) { }
|
||||
boss_razorgoreAI(Creature* creature) : BossAI(creature, BOSS_RAZORGORE)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
secondPhase = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
|
||||
secondPhase = false;
|
||||
Initialize();
|
||||
instance->SetData(DATA_EGG_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
|
||||
@@ -70,19 +70,24 @@ public:
|
||||
{
|
||||
boss_vaelAI(Creature* creature) : BossAI(creature, BOSS_VAELASTRAZ)
|
||||
{
|
||||
Initialize();
|
||||
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
creature->setFaction(35);
|
||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PlayerGUID = 0;
|
||||
HasYelled = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
PlayerGUID = 0;
|
||||
|
||||
HasYelled = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -108,13 +108,21 @@ class npc_firesworn : public CreatureScript
|
||||
|
||||
struct npc_fireswornAI : public ScriptedAI
|
||||
{
|
||||
npc_fireswornAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_fireswornAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
immolateTimer = 4000; //These times are probably wrong
|
||||
}
|
||||
|
||||
uint32 immolateTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
immolateTimer = 4000; //These times are probably wrong
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
|
||||
|
||||
@@ -131,12 +131,18 @@ class npc_core_rager : public CreatureScript
|
||||
{
|
||||
npc_core_ragerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
mangleTimer = 7 * IN_MILLISECONDS; // These times are probably wrong
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
mangleTimer = 7*IN_MILLISECONDS; // These times are probably wrong
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) override
|
||||
|
||||
@@ -82,18 +82,24 @@ class boss_ragnaros : public CreatureScript
|
||||
{
|
||||
boss_ragnarosAI(Creature* creature) : BossAI(creature, BOSS_RAGNAROS)
|
||||
{
|
||||
Initialize();
|
||||
_introState = 0;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
BossAI::Reset();
|
||||
_emergeTimer = 90000;
|
||||
_hasYelledMagmaBurst = false;
|
||||
_hasSubmergedOnce = false;
|
||||
_isBanished = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
BossAI::Reset();
|
||||
Initialize();
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -52,9 +52,22 @@ public:
|
||||
{
|
||||
boss_mr_smiteAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiTrashTimer = urand(5000, 9000);
|
||||
uiSlamTimer = 9000;
|
||||
uiNimbleReflexesTimer = urand(15500, 31600);
|
||||
|
||||
uiHealth = 0;
|
||||
|
||||
uiPhase = 0;
|
||||
uiTimer = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 uiTrashTimer;
|
||||
@@ -68,14 +81,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiTrashTimer = urand(5000, 9000);
|
||||
uiSlamTimer = 9000;
|
||||
uiNimbleReflexesTimer = urand(15500, 31600);
|
||||
|
||||
uiHealth = 0;
|
||||
|
||||
uiPhase = 0;
|
||||
uiTimer = 0;
|
||||
Initialize();
|
||||
|
||||
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,19 @@ public:
|
||||
|
||||
struct boss_curatorAI : public ScriptedAI
|
||||
{
|
||||
boss_curatorAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_curatorAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AddTimer = 10000;
|
||||
HatefulBoltTimer = 15000; //This time may be wrong
|
||||
BerserkTimer = 720000; //12 minutes
|
||||
Enraged = false;
|
||||
Evocating = false;
|
||||
}
|
||||
|
||||
uint32 AddTimer;
|
||||
uint32 HatefulBoltTimer;
|
||||
@@ -71,11 +83,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AddTimer = 10000;
|
||||
HatefulBoltTimer = 15000; //This time may be wrong
|
||||
BerserkTimer = 720000; //12 minutes
|
||||
Enraged = false;
|
||||
Evocating = false;
|
||||
Initialize();
|
||||
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_ARCANE, true);
|
||||
}
|
||||
|
||||
@@ -62,13 +62,20 @@ public:
|
||||
{
|
||||
boss_attumenAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
|
||||
Phase = 1;
|
||||
|
||||
CleaveTimer = urand(10000, 15000);
|
||||
CurseTimer = 30000;
|
||||
RandomYellTimer = urand(30000, 60000); //Occasionally yell
|
||||
ChargeTimer = 20000;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ResetTimer = 0;
|
||||
Midnight = 0;
|
||||
}
|
||||
|
||||
uint64 Midnight;
|
||||
@@ -81,8 +88,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ResetTimer = 0;
|
||||
Midnight = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterEvadeMode() override
|
||||
@@ -127,7 +133,17 @@ public:
|
||||
|
||||
struct boss_midnightAI : public ScriptedAI
|
||||
{
|
||||
boss_midnightAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_midnightAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Phase = 1;
|
||||
Attumen = 0;
|
||||
Mount_Timer = 0;
|
||||
}
|
||||
|
||||
uint64 Attumen;
|
||||
uint8 Phase;
|
||||
@@ -135,9 +151,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Phase = 1;
|
||||
Attumen = 0;
|
||||
Mount_Timer = 0;
|
||||
Initialize();
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetVisible(true);
|
||||
|
||||
@@ -105,12 +105,25 @@ public:
|
||||
{
|
||||
boss_moroesAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
memset(AddId, 0, sizeof(AddId));
|
||||
memset(AddGUID, 0, sizeof(AddGUID));
|
||||
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Vanish_Timer = 30000;
|
||||
Blind_Timer = 35000;
|
||||
Gouge_Timer = 23000;
|
||||
Wait_Timer = 0;
|
||||
CheckAdds_Timer = 5000;
|
||||
|
||||
Enrage = false;
|
||||
InVanish = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint64 AddGUID[4];
|
||||
@@ -127,14 +140,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Vanish_Timer = 30000;
|
||||
Blind_Timer = 35000;
|
||||
Gouge_Timer = 23000;
|
||||
Wait_Timer = 0;
|
||||
CheckAdds_Timer = 5000;
|
||||
|
||||
Enrage = false;
|
||||
InVanish = false;
|
||||
Initialize();
|
||||
if (me->IsAlive())
|
||||
SpawnAdds();
|
||||
|
||||
@@ -391,7 +397,17 @@ public:
|
||||
struct boss_baroness_dorothea_millstipeAI : public boss_moroes_guestAI
|
||||
{
|
||||
//Shadow Priest
|
||||
boss_baroness_dorothea_millstipeAI(Creature* creature) : boss_moroes_guestAI(creature) { }
|
||||
boss_baroness_dorothea_millstipeAI(Creature* creature) : boss_moroes_guestAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ManaBurn_Timer = 7000;
|
||||
MindFlay_Timer = 1000;
|
||||
ShadowWordPain_Timer = 6000;
|
||||
}
|
||||
|
||||
uint32 ManaBurn_Timer;
|
||||
uint32 MindFlay_Timer;
|
||||
@@ -399,9 +415,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ManaBurn_Timer = 7000;
|
||||
MindFlay_Timer = 1000;
|
||||
ShadowWordPain_Timer = 6000;
|
||||
Initialize();
|
||||
|
||||
DoCast(me, SPELL_SHADOWFORM, true);
|
||||
|
||||
@@ -454,7 +468,17 @@ public:
|
||||
struct boss_baron_rafe_dreugerAI : public boss_moroes_guestAI
|
||||
{
|
||||
//Retr Pally
|
||||
boss_baron_rafe_dreugerAI(Creature* creature) : boss_moroes_guestAI(creature){ }
|
||||
boss_baron_rafe_dreugerAI(Creature* creature) : boss_moroes_guestAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
HammerOfJustice_Timer = 1000;
|
||||
SealOfCommand_Timer = 7000;
|
||||
JudgementOfCommand_Timer = SealOfCommand_Timer + 29000;
|
||||
}
|
||||
|
||||
uint32 HammerOfJustice_Timer;
|
||||
uint32 SealOfCommand_Timer;
|
||||
@@ -462,9 +486,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
HammerOfJustice_Timer = 1000;
|
||||
SealOfCommand_Timer = 7000;
|
||||
JudgementOfCommand_Timer = SealOfCommand_Timer + 29000;
|
||||
Initialize();
|
||||
|
||||
boss_moroes_guestAI::Reset();
|
||||
}
|
||||
@@ -511,7 +533,18 @@ public:
|
||||
struct boss_lady_catriona_von_indiAI : public boss_moroes_guestAI
|
||||
{
|
||||
//Holy Priest
|
||||
boss_lady_catriona_von_indiAI(Creature* creature) : boss_moroes_guestAI(creature) { }
|
||||
boss_lady_catriona_von_indiAI(Creature* creature) : boss_moroes_guestAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
DispelMagic_Timer = 11000;
|
||||
GreaterHeal_Timer = 1500;
|
||||
HolyFire_Timer = 5000;
|
||||
PowerWordShield_Timer = 1000;
|
||||
}
|
||||
|
||||
uint32 DispelMagic_Timer;
|
||||
uint32 GreaterHeal_Timer;
|
||||
@@ -520,10 +553,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
DispelMagic_Timer = 11000;
|
||||
GreaterHeal_Timer = 1500;
|
||||
HolyFire_Timer = 5000;
|
||||
PowerWordShield_Timer = 1000;
|
||||
Initialize();
|
||||
|
||||
AcquireGUID();
|
||||
|
||||
@@ -581,7 +611,18 @@ public:
|
||||
struct boss_lady_keira_berrybuckAI : public boss_moroes_guestAI
|
||||
{
|
||||
//Holy Pally
|
||||
boss_lady_keira_berrybuckAI(Creature* creature) : boss_moroes_guestAI(creature) { }
|
||||
boss_lady_keira_berrybuckAI(Creature* creature) : boss_moroes_guestAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Cleanse_Timer = 13000;
|
||||
GreaterBless_Timer = 1000;
|
||||
HolyLight_Timer = 7000;
|
||||
DivineShield_Timer = 31000;
|
||||
}
|
||||
|
||||
uint32 Cleanse_Timer;
|
||||
uint32 GreaterBless_Timer;
|
||||
@@ -590,10 +631,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Cleanse_Timer = 13000;
|
||||
GreaterBless_Timer = 1000;
|
||||
HolyLight_Timer = 7000;
|
||||
DivineShield_Timer = 31000;
|
||||
Initialize();
|
||||
|
||||
AcquireGUID();
|
||||
|
||||
@@ -655,7 +693,17 @@ public:
|
||||
struct boss_lord_robin_darisAI : public boss_moroes_guestAI
|
||||
{
|
||||
//Arms Warr
|
||||
boss_lord_robin_darisAI(Creature* creature) : boss_moroes_guestAI(creature) { }
|
||||
boss_lord_robin_darisAI(Creature* creature) : boss_moroes_guestAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Hamstring_Timer = 7000;
|
||||
MortalStrike_Timer = 10000;
|
||||
WhirlWind_Timer = 21000;
|
||||
}
|
||||
|
||||
uint32 Hamstring_Timer;
|
||||
uint32 MortalStrike_Timer;
|
||||
@@ -663,9 +711,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Hamstring_Timer = 7000;
|
||||
MortalStrike_Timer = 10000;
|
||||
WhirlWind_Timer = 21000;
|
||||
Initialize();
|
||||
|
||||
boss_moroes_guestAI::Reset();
|
||||
}
|
||||
@@ -711,7 +757,18 @@ public:
|
||||
struct boss_lord_crispin_ferenceAI : public boss_moroes_guestAI
|
||||
{
|
||||
//Arms Warr
|
||||
boss_lord_crispin_ferenceAI(Creature* creature) : boss_moroes_guestAI(creature) { }
|
||||
boss_lord_crispin_ferenceAI(Creature* creature) : boss_moroes_guestAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Disarm_Timer = 6000;
|
||||
HeroicStrike_Timer = 10000;
|
||||
ShieldBash_Timer = 8000;
|
||||
ShieldWall_Timer = 4000;
|
||||
}
|
||||
|
||||
uint32 Disarm_Timer;
|
||||
uint32 HeroicStrike_Timer;
|
||||
@@ -720,10 +777,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Disarm_Timer = 6000;
|
||||
HeroicStrike_Timer = 10000;
|
||||
ShieldBash_Timer = 8000;
|
||||
ShieldWall_Timer = 4000;
|
||||
Initialize();
|
||||
|
||||
boss_moroes_guestAI::Reset();
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ public:
|
||||
{
|
||||
boss_netherspiteAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
|
||||
for (int i=0; i<3; ++i)
|
||||
@@ -86,6 +87,19 @@ public:
|
||||
BeamTarget[i] = 0;
|
||||
BeamerGUID[i] = 0;
|
||||
}
|
||||
|
||||
PortalPhase = false;
|
||||
PhaseTimer = 0;
|
||||
EmpowermentTimer = 0;
|
||||
PortalTimer = 0;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Berserk = false;
|
||||
NetherInfusionTimer = 540000;
|
||||
VoidZoneTimer = 15000;
|
||||
NetherbreathTimer = 3000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
@@ -129,10 +143,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Berserk = false;
|
||||
NetherInfusionTimer = 540000;
|
||||
VoidZoneTimer = 15000;
|
||||
NetherbreathTimer = 3000;
|
||||
Initialize();
|
||||
|
||||
HandleDoors(true);
|
||||
DestroyPortals();
|
||||
|
||||
@@ -78,10 +78,32 @@ public:
|
||||
{
|
||||
boss_nightbaneAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
Intro = true;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
BellowingRoarTimer = 30000;
|
||||
CharredEarthTimer = 15000;
|
||||
DistractingAshTimer = 20000;
|
||||
SmolderingBreathTimer = 10000;
|
||||
TailSweepTimer = 12000;
|
||||
RainofBonesTimer = 10000;
|
||||
SmokingBlastTimer = 20000;
|
||||
FireballBarrageTimer = 13000;
|
||||
SearingCindersTimer = 14000;
|
||||
WaitTimer = 1000;
|
||||
|
||||
Phase = 1;
|
||||
FlyCount = 0;
|
||||
MovePhase = 0;
|
||||
|
||||
Flying = false;
|
||||
Movement = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 Phase;
|
||||
@@ -111,20 +133,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
BellowingRoarTimer = 30000;
|
||||
CharredEarthTimer = 15000;
|
||||
DistractingAshTimer = 20000;
|
||||
SmolderingBreathTimer = 10000;
|
||||
TailSweepTimer = 12000;
|
||||
RainofBonesTimer = 10000;
|
||||
SmokingBlastTimer = 20000;
|
||||
FireballBarrageTimer = 13000;
|
||||
SearingCindersTimer = 14000;
|
||||
WaitTimer = 1000;
|
||||
|
||||
Phase =1;
|
||||
FlyCount = 0;
|
||||
MovePhase = 0;
|
||||
Initialize();
|
||||
|
||||
me->SetSpeed(MOVE_RUN, 2.0f);
|
||||
me->SetDisableGravity(true);
|
||||
@@ -138,9 +147,6 @@ public:
|
||||
|
||||
HandleTerraceDoors(true);
|
||||
|
||||
Flying = false;
|
||||
Movement = false;
|
||||
|
||||
if (!Intro)
|
||||
{
|
||||
me->SetHomePosition(IntroWay[7][0], IntroWay[7][1], IntroWay[7][2], 0);
|
||||
|
||||
@@ -186,10 +186,33 @@ public:
|
||||
{
|
||||
boss_malchezaarAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
|
||||
instance = creature->GetInstanceScript();
|
||||
memset(axes, 0, sizeof(axes));
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
EnfeebleTimer = 30000;
|
||||
EnfeebleResetTimer = 38000;
|
||||
ShadowNovaTimer = 35500;
|
||||
SWPainTimer = 20000;
|
||||
AmplifyDamageTimer = 5000;
|
||||
Cleave_Timer = 8000;
|
||||
InfernalTimer = 40000;
|
||||
InfernalCleanupTimer = 47000;
|
||||
AxesTargetSwitchTimer = urand(7500, 20000);
|
||||
SunderArmorTimer = urand(5000, 10000);
|
||||
phase = 1;
|
||||
|
||||
for (uint8 i = 0; i < 5; ++i)
|
||||
{
|
||||
enfeeble_targets[i] = 0;
|
||||
enfeeble_health[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
uint32 EnfeebleTimer;
|
||||
uint32 EnfeebleResetTimer;
|
||||
@@ -218,27 +241,11 @@ public:
|
||||
InfernalCleanup();
|
||||
positions.clear();
|
||||
|
||||
for (uint8 i = 0; i < 5; ++i)
|
||||
{
|
||||
enfeeble_targets[i] = 0;
|
||||
enfeeble_health[i] = 0;
|
||||
}
|
||||
Initialize();
|
||||
|
||||
for (uint8 i = 0; i < TOTAL_INFERNAL_POINTS; ++i)
|
||||
positions.push_back(&InfernalPoints[i]);
|
||||
|
||||
EnfeebleTimer = 30000;
|
||||
EnfeebleResetTimer = 38000;
|
||||
ShadowNovaTimer = 35500;
|
||||
SWPainTimer = 20000;
|
||||
AmplifyDamageTimer = 5000;
|
||||
Cleave_Timer = 8000;
|
||||
InfernalTimer = 40000;
|
||||
InfernalCleanupTimer = 47000;
|
||||
AxesTargetSwitchTimer = urand(7500, 20000);
|
||||
SunderArmorTimer = urand(5000, 10000);
|
||||
phase = 1;
|
||||
|
||||
instance->HandleGameObject(instance->GetData64(DATA_GO_NETHER_DOOR), true);
|
||||
}
|
||||
|
||||
|
||||
@@ -93,9 +93,35 @@ public:
|
||||
{
|
||||
boss_aranAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
SecondarySpellTimer = 5000;
|
||||
NormalCastTimer = 0;
|
||||
SuperCastTimer = 35000;
|
||||
BerserkTimer = 720000;
|
||||
CloseDoorTimer = 15000;
|
||||
|
||||
LastSuperSpell = rand32() % 3;
|
||||
|
||||
FlameWreathTimer = 0;
|
||||
FlameWreathCheckTime = 0;
|
||||
|
||||
CurrentNormalSpell = 0;
|
||||
ArcaneCooldown = 0;
|
||||
FireCooldown = 0;
|
||||
FrostCooldown = 0;
|
||||
|
||||
DrinkInterruptTimer = 10000;
|
||||
|
||||
ElementalsSpawned = false;
|
||||
Drinking = false;
|
||||
DrinkInturrupted = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 SecondarySpellTimer;
|
||||
@@ -125,27 +151,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
SecondarySpellTimer = 5000;
|
||||
NormalCastTimer = 0;
|
||||
SuperCastTimer = 35000;
|
||||
BerserkTimer = 720000;
|
||||
CloseDoorTimer = 15000;
|
||||
|
||||
LastSuperSpell = rand32() % 3;
|
||||
|
||||
FlameWreathTimer = 0;
|
||||
FlameWreathCheckTime = 0;
|
||||
|
||||
CurrentNormalSpell = 0;
|
||||
ArcaneCooldown = 0;
|
||||
FireCooldown = 0;
|
||||
FrostCooldown = 0;
|
||||
|
||||
DrinkInterruptTimer = 10000;
|
||||
|
||||
ElementalsSpawned = false;
|
||||
Drinking = false;
|
||||
DrinkInturrupted = false;
|
||||
Initialize();
|
||||
|
||||
// Not in progress
|
||||
instance->SetData(TYPE_ARAN, NOT_STARTED);
|
||||
@@ -362,6 +368,10 @@ public:
|
||||
Available[0] = SUPER_FLAME;
|
||||
Available[1] = SUPER_AE;
|
||||
break;
|
||||
default:
|
||||
Available[0] = 0;
|
||||
Available[1] = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
LastSuperSpell = Available[urand(0, 1)];
|
||||
@@ -508,13 +518,21 @@ public:
|
||||
|
||||
struct water_elementalAI : public ScriptedAI
|
||||
{
|
||||
water_elementalAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
water_elementalAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CastTimer = 2000 + (rand32() % 3000);
|
||||
}
|
||||
|
||||
uint32 CastTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
CastTimer = 2000 + (rand32() % 3000);
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
|
||||
@@ -79,16 +79,22 @@ public:
|
||||
{
|
||||
npc_kilrekAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AmplifyTimer = 2000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 AmplifyTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AmplifyTimer = 2000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -131,13 +137,21 @@ public:
|
||||
|
||||
struct npc_demon_chainAI : public ScriptedAI
|
||||
{
|
||||
npc_demon_chainAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_demon_chainAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
SacrificeGUID = 0;
|
||||
}
|
||||
|
||||
uint64 SacrificeGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
SacrificeGUID = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -203,13 +217,21 @@ public:
|
||||
|
||||
struct npc_fiendish_impAI : public ScriptedAI
|
||||
{
|
||||
npc_fiendish_impAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_fiendish_impAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
FireboltTimer = 2000;
|
||||
}
|
||||
|
||||
uint32 FireboltTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
FireboltTimer = 2000;
|
||||
Initialize();
|
||||
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
|
||||
}
|
||||
@@ -247,11 +269,24 @@ public:
|
||||
{
|
||||
boss_terestianAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
PortalGUID[i] = 0;
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PortalsCount = 0;
|
||||
SacrificeTimer = 30000;
|
||||
ShadowboltTimer = 5000;
|
||||
SummonTimer = 10000;
|
||||
BerserkTimer = 600000;
|
||||
|
||||
SummonedPortals = false;
|
||||
Berserk = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint64 PortalGUID[2];
|
||||
@@ -281,14 +316,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
PortalsCount = 0;
|
||||
SacrificeTimer = 30000;
|
||||
ShadowboltTimer = 5000;
|
||||
SummonTimer = 10000;
|
||||
BerserkTimer = 600000;
|
||||
|
||||
SummonedPortals = false;
|
||||
Berserk = false;
|
||||
Initialize();
|
||||
|
||||
instance->SetData(TYPE_TERESTIAN, NOT_STARTED);
|
||||
|
||||
|
||||
@@ -125,9 +125,22 @@ public:
|
||||
{
|
||||
boss_dorotheeAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AggroTimer = 500;
|
||||
|
||||
WaterBoltTimer = 5000;
|
||||
FearTimer = 15000;
|
||||
SummonTitoTimer = 47500;
|
||||
|
||||
SummonedTito = false;
|
||||
TitoDied = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 AggroTimer;
|
||||
@@ -141,14 +154,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AggroTimer = 500;
|
||||
|
||||
WaterBoltTimer = 5000;
|
||||
FearTimer = 15000;
|
||||
SummonTitoTimer = 47500;
|
||||
|
||||
SummonedTito = false;
|
||||
TitoDied = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -237,15 +243,23 @@ public:
|
||||
|
||||
struct npc_titoAI : public ScriptedAI
|
||||
{
|
||||
npc_titoAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_titoAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
DorotheeGUID = 0;
|
||||
YipTimer = 10000;
|
||||
}
|
||||
|
||||
uint64 DorotheeGUID;
|
||||
uint32 YipTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
DorotheeGUID = 0;
|
||||
YipTimer = 10000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -305,9 +319,17 @@ public:
|
||||
{
|
||||
boss_strawmanAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AggroTimer = 13000;
|
||||
BrainBashTimer = 5000;
|
||||
BrainWipeTimer = 7000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 AggroTimer;
|
||||
@@ -316,9 +338,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AggroTimer = 13000;
|
||||
BrainBashTimer = 5000;
|
||||
BrainWipeTimer = 7000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who) override
|
||||
@@ -419,9 +439,19 @@ public:
|
||||
{
|
||||
boss_tinheadAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AggroTimer = 15000;
|
||||
CleaveTimer = 5000;
|
||||
RustTimer = 30000;
|
||||
|
||||
RustCount = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 AggroTimer;
|
||||
@@ -432,11 +462,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AggroTimer = 15000;
|
||||
CleaveTimer = 5000;
|
||||
RustTimer = 30000;
|
||||
|
||||
RustCount = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -528,9 +554,18 @@ public:
|
||||
{
|
||||
boss_roarAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AggroTimer = 20000;
|
||||
MangleTimer = 5000;
|
||||
ShredTimer = 10000;
|
||||
ScreamTimer = 15000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 AggroTimer;
|
||||
@@ -540,10 +575,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AggroTimer = 20000;
|
||||
MangleTimer = 5000;
|
||||
ShredTimer = 10000;
|
||||
ScreamTimer = 15000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
@@ -636,9 +668,16 @@ public:
|
||||
{
|
||||
boss_croneAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CycloneTimer = 30000;
|
||||
ChainLightningTimer = 10000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 CycloneTimer;
|
||||
@@ -646,8 +685,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
CycloneTimer = 30000;
|
||||
ChainLightningTimer = 10000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
@@ -717,13 +755,21 @@ public:
|
||||
|
||||
struct npc_cycloneAI : public ScriptedAI
|
||||
{
|
||||
npc_cycloneAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_cycloneAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
MoveTimer = 1000;
|
||||
}
|
||||
|
||||
uint32 MoveTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
MoveTimer = 1000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -812,9 +858,22 @@ public:
|
||||
{
|
||||
boss_bigbadwolfAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ChaseTimer = 30000;
|
||||
FearTimer = urand(25000, 35000);
|
||||
SwipeTimer = 5000;
|
||||
|
||||
HoodGUID = 0;
|
||||
TempThreat = 0;
|
||||
|
||||
IsChasing = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 ChaseTimer;
|
||||
@@ -828,14 +887,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ChaseTimer = 30000;
|
||||
FearTimer = urand(25000, 35000);
|
||||
SwipeTimer = 5000;
|
||||
|
||||
HoodGUID = 0;
|
||||
TempThreat = 0;
|
||||
|
||||
IsChasing = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -1011,12 +1063,30 @@ public:
|
||||
{
|
||||
boss_julianneAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
EntryYellTimer = 1000;
|
||||
AggroYellTimer = 10000;
|
||||
IsFakingDeath = false;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
RomuloGUID = 0;
|
||||
Phase = PHASE_JULIANNE;
|
||||
|
||||
BlindingPassionTimer = 30000;
|
||||
DevotionTimer = 15000;
|
||||
EternalAffectionTimer = 25000;
|
||||
PowerfulAttractionTimer = 5000;
|
||||
SummonRomuloTimer = 10000;
|
||||
DrinkPoisonTimer = 0;
|
||||
ResurrectSelfTimer = 0;
|
||||
|
||||
SummonedRomulo = false;
|
||||
RomuloDead = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 EntryYellTimer;
|
||||
@@ -1041,25 +1111,12 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
RomuloGUID = 0;
|
||||
Phase = PHASE_JULIANNE;
|
||||
|
||||
BlindingPassionTimer = 30000;
|
||||
DevotionTimer = 15000;
|
||||
EternalAffectionTimer = 25000;
|
||||
PowerfulAttractionTimer = 5000;
|
||||
SummonRomuloTimer = 10000;
|
||||
DrinkPoisonTimer = 0;
|
||||
ResurrectSelfTimer = 0;
|
||||
|
||||
Initialize();
|
||||
if (IsFakingDeath)
|
||||
{
|
||||
Resurrect(me);
|
||||
IsFakingDeath = false;
|
||||
}
|
||||
|
||||
SummonedRomulo = false;
|
||||
RomuloDead = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -1131,11 +1188,27 @@ public:
|
||||
{
|
||||
boss_romuloAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
EntryYellTimer = 8000;
|
||||
AggroYellTimer = 15000;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
JulianneGUID = 0;
|
||||
Phase = PHASE_ROMULO;
|
||||
|
||||
BackwardLungeTimer = 15000;
|
||||
DaringTimer = 20000;
|
||||
DeadlySwatheTimer = 25000;
|
||||
PoisonThrustTimer = 10000;
|
||||
ResurrectTimer = 10000;
|
||||
|
||||
IsFakingDeath = false;
|
||||
JulianneDead = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint64 JulianneGUID;
|
||||
@@ -1154,17 +1227,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
JulianneGUID = 0;
|
||||
Phase = PHASE_ROMULO;
|
||||
|
||||
BackwardLungeTimer = 15000;
|
||||
DaringTimer = 20000;
|
||||
DeadlySwatheTimer = 25000;
|
||||
PoisonThrustTimer = 10000;
|
||||
ResurrectTimer = 10000;
|
||||
|
||||
IsFakingDeath = false;
|
||||
JulianneDead = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
|
||||
@@ -131,11 +131,23 @@ public:
|
||||
{
|
||||
npc_barnesAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
RaidWiped = false;
|
||||
m_uiEventId = 0;
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
m_uiSpotlightGUID = 0;
|
||||
|
||||
TalkCount = 0;
|
||||
TalkTimer = 2000;
|
||||
WipeTimer = 5000;
|
||||
|
||||
PerformanceReady = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint64 m_uiSpotlightGUID;
|
||||
@@ -150,13 +162,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
m_uiSpotlightGUID = 0;
|
||||
|
||||
TalkCount = 0;
|
||||
TalkTimer = 2000;
|
||||
WipeTimer = 5000;
|
||||
|
||||
PerformanceReady = false;
|
||||
Initialize();
|
||||
|
||||
m_uiEventId = instance->GetData(DATA_OPERA_PERFORMANCE);
|
||||
}
|
||||
@@ -476,9 +482,20 @@ public:
|
||||
{
|
||||
npc_image_of_medivhAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
Step = 0;
|
||||
FireArcanagosTimer = 0;
|
||||
FireMedivhTimer = 0;
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ArcanagosGUID = 0;
|
||||
EventStarted = false;
|
||||
YellTimer = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint64 ArcanagosGUID;
|
||||
@@ -492,9 +509,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ArcanagosGUID = 0;
|
||||
EventStarted = false;
|
||||
YellTimer = 0;
|
||||
Initialize();
|
||||
|
||||
if (instance->GetData64(DATA_IMAGE_OF_MEDIVH) == 0)
|
||||
{
|
||||
|
||||
@@ -103,9 +103,29 @@ public:
|
||||
{
|
||||
boss_felblood_kaelthasAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
/// @todo Timers
|
||||
FireballTimer = 0;
|
||||
PhoenixTimer = 10000;
|
||||
FlameStrikeTimer = 25000;
|
||||
CombatPulseTimer = 0;
|
||||
|
||||
PyroblastTimer = 60000;
|
||||
|
||||
GravityLapseTimer = 0;
|
||||
GravityLapsePhase = 0;
|
||||
|
||||
FirstGravityLapse = true;
|
||||
HasTaunted = false;
|
||||
|
||||
Phase = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 FireballTimer;
|
||||
@@ -134,21 +154,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
/// @todo Timers
|
||||
FireballTimer = 0;
|
||||
PhoenixTimer = 10000;
|
||||
FlameStrikeTimer = 25000;
|
||||
CombatPulseTimer = 0;
|
||||
|
||||
PyroblastTimer = 60000;
|
||||
|
||||
GravityLapseTimer = 0;
|
||||
GravityLapsePhase = 0;
|
||||
|
||||
FirstGravityLapse = true;
|
||||
HasTaunted = false;
|
||||
|
||||
Phase = 0;
|
||||
Initialize();
|
||||
|
||||
instance->SetBossState(DATA_KAELTHAS, NOT_STARTED);
|
||||
}
|
||||
@@ -439,13 +445,19 @@ public:
|
||||
{
|
||||
npc_felkael_flamestrikeAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
FlameStrikeTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 FlameStrikeTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
FlameStrikeTimer = 5000;
|
||||
Initialize();
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->setFaction(14);
|
||||
@@ -481,9 +493,18 @@ public:
|
||||
{
|
||||
npc_felkael_phoenixAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
BurnTimer = 2000;
|
||||
Death_Timer = 3000;
|
||||
Rebirth = false;
|
||||
FakeDeath = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
uint32 BurnTimer;
|
||||
uint32 Death_Timer;
|
||||
@@ -495,10 +516,7 @@ public:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetDisableGravity(true);
|
||||
DoCast(me, SPELL_PHOENIX_BURN, true);
|
||||
BurnTimer = 2000;
|
||||
Death_Timer = 3000;
|
||||
Rebirth = false;
|
||||
FakeDeath = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -592,13 +610,21 @@ public:
|
||||
|
||||
struct npc_felkael_phoenix_eggAI : public ScriptedAI
|
||||
{
|
||||
npc_felkael_phoenix_eggAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_felkael_phoenix_eggAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
HatchTimer = 10000;
|
||||
}
|
||||
|
||||
uint32 HatchTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
HatchTimer = 10000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
|
||||
@@ -117,11 +117,24 @@ public:
|
||||
{
|
||||
boss_priestess_delrissaAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
memset(&m_auiLackeyGUID, 0, sizeof(m_auiLackeyGUID));
|
||||
LackeyEntryList.clear();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PlayersKilled = 0;
|
||||
|
||||
HealTimer = 15000;
|
||||
RenewTimer = 10000;
|
||||
ShieldTimer = 2000;
|
||||
SWPainTimer = 5000;
|
||||
DispelTimer = 7500;
|
||||
ResetTimer = 5000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
std::vector<uint32> LackeyEntryList;
|
||||
@@ -138,14 +151,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
PlayersKilled = 0;
|
||||
|
||||
HealTimer = 15000;
|
||||
RenewTimer = 10000;
|
||||
ShieldTimer = 2000;
|
||||
SWPainTimer = 5000;
|
||||
DispelTimer = 7500;
|
||||
ResetTimer = 5000;
|
||||
Initialize();
|
||||
|
||||
InitializeLackeys();
|
||||
}
|
||||
@@ -353,11 +359,23 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
|
||||
{
|
||||
boss_priestess_lackey_commonAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
memset(&m_auiLackeyGUIDs, 0, sizeof(m_auiLackeyGUIDs));
|
||||
AcquireGUIDs();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
UsedPotion = false;
|
||||
|
||||
// These guys does not follow normal threat system rules
|
||||
// For later development, some alternative threat system should be made
|
||||
// We do not know what this system is based upon, but one theory is class (healers=high threat, dps=medium, etc)
|
||||
// We reset their threat frequently as an alternative until such a system exist
|
||||
ResetThreatTimer = urand(5000, 20000);
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint64 m_auiLackeyGUIDs[MAX_ACTIVE_LACKEY];
|
||||
@@ -367,13 +385,7 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
UsedPotion = false;
|
||||
|
||||
// These guys does not follow normal threat system rules
|
||||
// For later development, some alternative threat system should be made
|
||||
// We do not know what this system is based upon, but one theory is class (healers=high threat, dps=medium, etc)
|
||||
// We reset their threat frequently as an alternative until such a system exist
|
||||
ResetThreatTimer = urand(5000, 20000);
|
||||
Initialize();
|
||||
|
||||
// in case she is not alive and Reset was for some reason called, respawn her (most likely party wipe after killing her)
|
||||
if (Creature* pDelrissa = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DELRISSA)))
|
||||
@@ -493,7 +505,20 @@ public:
|
||||
struct boss_kagani_nightstrikeAI : public boss_priestess_lackey_commonAI
|
||||
{
|
||||
//Rogue
|
||||
boss_kagani_nightstrikeAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) { }
|
||||
boss_kagani_nightstrikeAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Gouge_Timer = 5500;
|
||||
Kick_Timer = 7000;
|
||||
Vanish_Timer = 2000;
|
||||
Eviscerate_Timer = 6000;
|
||||
Wait_Timer = 5000;
|
||||
InVanish = false;
|
||||
}
|
||||
|
||||
uint32 Gouge_Timer;
|
||||
uint32 Kick_Timer;
|
||||
@@ -504,12 +529,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Gouge_Timer = 5500;
|
||||
Kick_Timer = 7000;
|
||||
Vanish_Timer = 2000;
|
||||
Eviscerate_Timer = 6000;
|
||||
Wait_Timer = 5000;
|
||||
InVanish = false;
|
||||
Initialize();
|
||||
me->SetVisible(true);
|
||||
|
||||
boss_priestess_lackey_commonAI::Reset();
|
||||
@@ -597,7 +617,19 @@ public:
|
||||
struct boss_ellris_duskhallowAI : public boss_priestess_lackey_commonAI
|
||||
{
|
||||
//Warlock
|
||||
boss_ellris_duskhallowAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) { }
|
||||
boss_ellris_duskhallowAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Immolate_Timer = 6000;
|
||||
Shadow_Bolt_Timer = 3000;
|
||||
Seed_of_Corruption_Timer = 2000;
|
||||
Curse_of_Agony_Timer = 1000;
|
||||
Fear_Timer = 10000;
|
||||
}
|
||||
|
||||
uint32 Immolate_Timer;
|
||||
uint32 Shadow_Bolt_Timer;
|
||||
@@ -607,11 +639,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Immolate_Timer = 6000;
|
||||
Shadow_Bolt_Timer = 3000;
|
||||
Seed_of_Corruption_Timer = 2000;
|
||||
Curse_of_Agony_Timer = 1000;
|
||||
Fear_Timer = 10000;
|
||||
Initialize();
|
||||
|
||||
boss_priestess_lackey_commonAI::Reset();
|
||||
}
|
||||
@@ -688,15 +716,23 @@ public:
|
||||
struct boss_eramas_brightblazeAI : public boss_priestess_lackey_commonAI
|
||||
{
|
||||
//Monk
|
||||
boss_eramas_brightblazeAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) { }
|
||||
boss_eramas_brightblazeAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Knockdown_Timer = 6000;
|
||||
Snap_Kick_Timer = 4500;
|
||||
}
|
||||
|
||||
uint32 Knockdown_Timer;
|
||||
uint32 Snap_Kick_Timer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Knockdown_Timer = 6000;
|
||||
Snap_Kick_Timer = 4500;
|
||||
Initialize();
|
||||
|
||||
boss_priestess_lackey_commonAI::Reset();
|
||||
}
|
||||
@@ -749,7 +785,24 @@ public:
|
||||
struct boss_yazzaiAI : public boss_priestess_lackey_commonAI
|
||||
{
|
||||
//Mage
|
||||
boss_yazzaiAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) { }
|
||||
boss_yazzaiAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
HasIceBlocked = false;
|
||||
|
||||
Polymorph_Timer = 1000;
|
||||
Ice_Block_Timer = 20000;
|
||||
Wait_Timer = 10000;
|
||||
Blizzard_Timer = 8000;
|
||||
Ice_Lance_Timer = 12000;
|
||||
Cone_of_Cold_Timer = 10000;
|
||||
Frostbolt_Timer = 3000;
|
||||
Blink_Timer = 8000;
|
||||
}
|
||||
|
||||
bool HasIceBlocked;
|
||||
|
||||
@@ -764,16 +817,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
HasIceBlocked = false;
|
||||
|
||||
Polymorph_Timer = 1000;
|
||||
Ice_Block_Timer = 20000;
|
||||
Wait_Timer = 10000;
|
||||
Blizzard_Timer = 8000;
|
||||
Ice_Lance_Timer = 12000;
|
||||
Cone_of_Cold_Timer = 10000;
|
||||
Frostbolt_Timer = 3000;
|
||||
Blink_Timer = 8000;
|
||||
Initialize();
|
||||
|
||||
boss_priestess_lackey_commonAI::Reset();
|
||||
}
|
||||
@@ -879,7 +923,20 @@ public:
|
||||
struct boss_warlord_salarisAI : public boss_priestess_lackey_commonAI
|
||||
{
|
||||
//Warrior
|
||||
boss_warlord_salarisAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) { }
|
||||
boss_warlord_salarisAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Intercept_Stun_Timer = 500;
|
||||
Disarm_Timer = 6000;
|
||||
Piercing_Howl_Timer = 10000;
|
||||
Frightening_Shout_Timer = 18000;
|
||||
Hamstring_Timer = 4500;
|
||||
Mortal_Strike_Timer = 8000;
|
||||
}
|
||||
|
||||
uint32 Intercept_Stun_Timer;
|
||||
uint32 Disarm_Timer;
|
||||
@@ -890,12 +947,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Intercept_Stun_Timer = 500;
|
||||
Disarm_Timer = 6000;
|
||||
Piercing_Howl_Timer = 10000;
|
||||
Frightening_Shout_Timer = 18000;
|
||||
Hamstring_Timer = 4500;
|
||||
Mortal_Strike_Timer = 8000;
|
||||
Initialize();
|
||||
|
||||
boss_priestess_lackey_commonAI::Reset();
|
||||
}
|
||||
@@ -1001,9 +1053,20 @@ public:
|
||||
//Hunter
|
||||
boss_garaxxasAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
m_uiPetGUID = 0;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Aimed_Shot_Timer = 6000;
|
||||
Shoot_Timer = 2500;
|
||||
Concussive_Shot_Timer = 8000;
|
||||
Multi_Shot_Timer = 10000;
|
||||
Wing_Clip_Timer = 4000;
|
||||
Freezing_Trap_Timer = 15000;
|
||||
}
|
||||
|
||||
uint64 m_uiPetGUID;
|
||||
|
||||
uint32 Aimed_Shot_Timer;
|
||||
@@ -1015,12 +1078,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Aimed_Shot_Timer = 6000;
|
||||
Shoot_Timer = 2500;
|
||||
Concussive_Shot_Timer = 8000;
|
||||
Multi_Shot_Timer = 10000;
|
||||
Wing_Clip_Timer = 4000;
|
||||
Freezing_Trap_Timer = 15000;
|
||||
Initialize();
|
||||
|
||||
Unit* pPet = ObjectAccessor::GetUnit(*me, m_uiPetGUID);
|
||||
if (!pPet)
|
||||
@@ -1110,7 +1168,20 @@ public:
|
||||
struct boss_apokoAI : public boss_priestess_lackey_commonAI
|
||||
{
|
||||
//Shaman
|
||||
boss_apokoAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) { }
|
||||
boss_apokoAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Totem_Timer = 2000;
|
||||
Totem_Amount = 1;
|
||||
War_Stomp_Timer = 10000;
|
||||
Purge_Timer = 8000;
|
||||
Healing_Wave_Timer = 5000;
|
||||
Frost_Shock_Timer = 7000;
|
||||
}
|
||||
|
||||
uint32 Totem_Timer;
|
||||
uint8 Totem_Amount;
|
||||
@@ -1121,12 +1192,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Totem_Timer = 2000;
|
||||
Totem_Amount = 1;
|
||||
War_Stomp_Timer = 10000;
|
||||
Purge_Timer = 8000;
|
||||
Healing_Wave_Timer = 5000;
|
||||
Frost_Shock_Timer = 7000;
|
||||
Initialize();
|
||||
|
||||
boss_priestess_lackey_commonAI::Reset();
|
||||
}
|
||||
@@ -1199,7 +1265,19 @@ public:
|
||||
struct boss_zelfanAI : public boss_priestess_lackey_commonAI
|
||||
{
|
||||
//Engineer
|
||||
boss_zelfanAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) { }
|
||||
boss_zelfanAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Goblin_Dragon_Gun_Timer = 20000;
|
||||
Rocket_Launch_Timer = 7000;
|
||||
Recombobulate_Timer = 4000;
|
||||
High_Explosive_Sheep_Timer = 10000;
|
||||
Fel_Iron_Bomb_Timer = 15000;
|
||||
}
|
||||
|
||||
uint32 Goblin_Dragon_Gun_Timer;
|
||||
uint32 Rocket_Launch_Timer;
|
||||
@@ -1209,11 +1287,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Goblin_Dragon_Gun_Timer = 20000;
|
||||
Rocket_Launch_Timer = 7000;
|
||||
Recombobulate_Timer = 4000;
|
||||
High_Explosive_Sheep_Timer = 10000;
|
||||
Fel_Iron_Bomb_Timer = 15000;
|
||||
Initialize();
|
||||
|
||||
boss_priestess_lackey_commonAI::Reset();
|
||||
}
|
||||
|
||||
@@ -115,13 +115,21 @@ public:
|
||||
|
||||
struct npc_kalecgosAI : public ScriptedAI
|
||||
{
|
||||
npc_kalecgosAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_kalecgosAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
m_uiTransformTimer = 0;
|
||||
}
|
||||
|
||||
uint32 m_uiTransformTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
m_uiTransformTimer = 0;
|
||||
Initialize();
|
||||
|
||||
// we must assume he appear as dragon somewhere outside the platform of orb, and then move directly to here
|
||||
if (me->GetEntry() != NPC_KAEL)
|
||||
|
||||
@@ -102,9 +102,21 @@ public:
|
||||
{
|
||||
npc_unworthy_initiateAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if (!me->GetCurrentEquipmentId())
|
||||
me->SetCurrentEquipmentId(me->GetOriginalEquipmentId());
|
||||
|
||||
playerGUID = 0;
|
||||
wait_timer = 0;
|
||||
anchorX = 0.f;
|
||||
anchorY = 0.f;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
anchorGUID = 0;
|
||||
phase = PHASE_CHAINED;
|
||||
}
|
||||
|
||||
uint64 playerGUID;
|
||||
@@ -117,8 +129,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
anchorGUID = 0;
|
||||
phase = PHASE_CHAINED;
|
||||
Initialize();
|
||||
events.Reset();
|
||||
me->setFaction(7);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -516,7 +527,15 @@ public:
|
||||
{
|
||||
npc_death_knight_initiateAI(Creature* creature) : CombatAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
m_uiDuelerGUID = 0;
|
||||
m_uiDuelTimer = 5000;
|
||||
m_bIsDuelInProgress = false;
|
||||
lose = false;
|
||||
}
|
||||
|
||||
bool lose;
|
||||
@@ -526,15 +545,11 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
lose = false;
|
||||
Initialize();
|
||||
|
||||
me->RestoreFaction();
|
||||
CombatAI::Reset();
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15);
|
||||
|
||||
m_uiDuelerGUID = 0;
|
||||
m_uiDuelTimer = 5000;
|
||||
m_bIsDuelInProgress = false;
|
||||
}
|
||||
|
||||
void SpellHit(Unit* pCaster, const SpellInfo* pSpell) override
|
||||
@@ -630,9 +645,12 @@ class npc_dark_rider_of_acherus : public CreatureScript
|
||||
|
||||
struct npc_dark_rider_of_acherusAI : public ScriptedAI
|
||||
{
|
||||
npc_dark_rider_of_acherusAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_dark_rider_of_acherusAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
PhaseTimer = 4000;
|
||||
Phase = 0;
|
||||
@@ -640,6 +658,11 @@ class npc_dark_rider_of_acherus : public CreatureScript
|
||||
TargetGUID = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!Intro || !TargetGUID)
|
||||
@@ -1067,18 +1090,24 @@ class npc_scarlet_miner : public CreatureScript
|
||||
{
|
||||
npc_scarlet_minerAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
carGUID = 0;
|
||||
IntroTimer = 0;
|
||||
IntroPhase = 0;
|
||||
}
|
||||
|
||||
uint32 IntroTimer;
|
||||
uint32 IntroPhase;
|
||||
uint64 carGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
carGUID = 0;
|
||||
IntroTimer = 0;
|
||||
IntroPhase = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void IsSummonedBy(Unit* summoner) override
|
||||
|
||||
@@ -51,7 +51,17 @@ public:
|
||||
|
||||
struct npc_crusade_persuadedAI : public ScriptedAI
|
||||
{
|
||||
npc_crusade_persuadedAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_crusade_persuadedAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
speechTimer = 0;
|
||||
speechCounter = 0;
|
||||
playerGUID = 0;
|
||||
}
|
||||
|
||||
uint32 speechTimer;
|
||||
uint32 speechCounter;
|
||||
@@ -59,9 +69,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
speechTimer = 0;
|
||||
speechCounter = 0;
|
||||
playerGUID = 0;
|
||||
Initialize();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RestoreFaction();
|
||||
}
|
||||
@@ -207,16 +215,22 @@ public:
|
||||
{
|
||||
npc_koltira_deathweaverAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
wave = 0;
|
||||
waveTimer = 3000;
|
||||
valrothGUID = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
if (!HasEscortState(STATE_ESCORT_ESCORTING))
|
||||
{
|
||||
wave = 0;
|
||||
waveTimer = 3000;
|
||||
valrothGUID = 0;
|
||||
Initialize();
|
||||
me->LoadEquipment(0, true);
|
||||
me->RemoveAurasDueToSpell(SPELL_ANTI_MAGIC_ZONE);
|
||||
me->RemoveAurasDueToSpell(SPELL_KOLTIRA_TRANSFORM);
|
||||
@@ -467,7 +481,17 @@ public:
|
||||
|
||||
struct npc_high_inquisitor_valrothAI : public ScriptedAI
|
||||
{
|
||||
npc_high_inquisitor_valrothAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_high_inquisitor_valrothAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiRenew_timer = 1000;
|
||||
uiInquisitor_Penance_timer = 2000;
|
||||
uiValroth_Smite_timer = 1000;
|
||||
}
|
||||
|
||||
uint32 uiRenew_timer;
|
||||
uint32 uiInquisitor_Penance_timer;
|
||||
@@ -475,9 +499,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiRenew_timer = 1000;
|
||||
uiInquisitor_Penance_timer = 2000;
|
||||
uiValroth_Smite_timer = 1000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) override
|
||||
@@ -603,7 +625,17 @@ public:
|
||||
|
||||
struct npc_a_special_surpriseAI : public ScriptedAI
|
||||
{
|
||||
npc_a_special_surpriseAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_a_special_surpriseAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ExecuteSpeech_Timer = 0;
|
||||
ExecuteSpeech_Counter = 0;
|
||||
PlayerGUID = 0;
|
||||
}
|
||||
|
||||
uint32 ExecuteSpeech_Timer;
|
||||
uint32 ExecuteSpeech_Counter;
|
||||
@@ -611,9 +643,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ExecuteSpeech_Timer = 0;
|
||||
ExecuteSpeech_Counter = 0;
|
||||
PlayerGUID = 0;
|
||||
Initialize();
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
}
|
||||
|
||||
@@ -178,6 +178,12 @@ public:
|
||||
npc_cooshcooshAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
m_uiNormFaction = creature->getFaction();
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
LightningBolt_Timer = 2000;
|
||||
}
|
||||
|
||||
uint32 m_uiNormFaction;
|
||||
@@ -185,7 +191,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
LightningBolt_Timer = 2000;
|
||||
Initialize();
|
||||
if (me->getFaction() != m_uiNormFaction)
|
||||
me->setFaction(m_uiNormFaction);
|
||||
}
|
||||
|
||||
@@ -43,12 +43,20 @@ class npc_pet_dk_ebon_gargoyle : public CreatureScript
|
||||
|
||||
struct npc_pet_dk_ebon_gargoyleAI : CasterAI
|
||||
{
|
||||
npc_pet_dk_ebon_gargoyleAI(Creature* creature) : CasterAI(creature) { }
|
||||
npc_pet_dk_ebon_gargoyleAI(Creature* creature) : CasterAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void InitializeAI() override
|
||||
void Initialize()
|
||||
{
|
||||
// Not needed to be despawned now
|
||||
_despawnTimer = 0;
|
||||
}
|
||||
|
||||
void InitializeAI() override
|
||||
{
|
||||
Initialize();
|
||||
|
||||
CasterAI::InitializeAI();
|
||||
uint64 ownerGuid = me->GetOwnerGUID();
|
||||
|
||||
@@ -39,11 +39,19 @@ class npc_pet_gen_mojo : public CreatureScript
|
||||
|
||||
struct npc_pet_gen_mojoAI : public ScriptedAI
|
||||
{
|
||||
npc_pet_gen_mojoAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_pet_gen_mojoAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_victimGUID = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_victimGUID = 0;
|
||||
Initialize();
|
||||
|
||||
if (Unit* owner = me->GetOwner())
|
||||
me->GetMotionMaster()->MoveFollow(owner, 0.0f, 0.0f);
|
||||
|
||||
@@ -42,13 +42,22 @@ class npc_pet_hunter_snake_trap : public CreatureScript
|
||||
|
||||
struct npc_pet_hunter_snake_trapAI : public ScriptedAI
|
||||
{
|
||||
npc_pet_hunter_snake_trapAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_pet_hunter_snake_trapAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_spellTimer = 0;
|
||||
_isViper = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_spellTimer = 0;
|
||||
Initialize();
|
||||
|
||||
CreatureTemplate const* Info = me->GetCreatureTemplate();
|
||||
|
||||
|
||||
@@ -170,11 +170,17 @@ class npc_dream_fog : public CreatureScript
|
||||
{
|
||||
npc_dream_fogAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_roamTimer = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_roamTimer = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -247,11 +253,17 @@ class boss_ysondre : public CreatureScript
|
||||
{
|
||||
boss_ysondreAI(Creature* creature) : emerald_dragonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_stage = 1;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_stage = 1;
|
||||
Initialize();
|
||||
emerald_dragonAI::Reset();
|
||||
events.ScheduleEvent(EVENT_LIGHTNING_WAVE, 12000);
|
||||
}
|
||||
@@ -335,11 +347,17 @@ class boss_lethon : public CreatureScript
|
||||
{
|
||||
boss_lethonAI(Creature* creature) : emerald_dragonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_stage = 1;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_stage = 1;
|
||||
Initialize();
|
||||
emerald_dragonAI::Reset();
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT_WHIRL, 10000);
|
||||
}
|
||||
@@ -457,11 +475,17 @@ class boss_emeriss : public CreatureScript
|
||||
{
|
||||
boss_emerissAI(Creature* creature) : emerald_dragonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_stage = 1;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_stage = 1;
|
||||
Initialize();
|
||||
emerald_dragonAI::Reset();
|
||||
events.ScheduleEvent(EVENT_VOLATILE_INFECTION, 12000);
|
||||
}
|
||||
@@ -549,16 +573,22 @@ class boss_taerar : public CreatureScript
|
||||
{
|
||||
boss_taerarAI(Creature* creature) : emerald_dragonAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_stage = 1;
|
||||
_shades = 0;
|
||||
_banished = false;
|
||||
_banishedTimer = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->RemoveAurasDueToSpell(SPELL_SHADE);
|
||||
_stage = 1;
|
||||
|
||||
_shades = 0;
|
||||
_banished = false;
|
||||
_banishedTimer = 0;
|
||||
|
||||
Initialize();
|
||||
|
||||
emerald_dragonAI::Reset();
|
||||
events.ScheduleEvent(EVENT_ARCANE_BLAST, 12000);
|
||||
|
||||
@@ -54,14 +54,22 @@ public:
|
||||
|
||||
struct guard_genericAI : public GuardAI
|
||||
{
|
||||
guard_genericAI(Creature* creature) : GuardAI(creature) { }
|
||||
guard_genericAI(Creature* creature) : GuardAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
globalCooldown = 0;
|
||||
buffTimer = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
if (me->GetEntry() == NPC_CENARION_HOLD_INFANTRY)
|
||||
@@ -263,9 +271,12 @@ public:
|
||||
|
||||
struct guard_shattrath_scryerAI : public GuardAI
|
||||
{
|
||||
guard_shattrath_scryerAI(Creature* creature) : GuardAI(creature) { }
|
||||
guard_shattrath_scryerAI(Creature* creature) : GuardAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
banishTimer = 5000;
|
||||
exileTimer = 8500;
|
||||
@@ -273,6 +284,11 @@ public:
|
||||
canTeleport = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
@@ -328,9 +344,12 @@ public:
|
||||
|
||||
struct guard_shattrath_aldorAI : public GuardAI
|
||||
{
|
||||
guard_shattrath_aldorAI(Creature* creature) : GuardAI(creature) { }
|
||||
guard_shattrath_aldorAI(Creature* creature) : GuardAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
banishTimer = 5000;
|
||||
exileTimer = 8500;
|
||||
@@ -338,6 +357,11 @@ public:
|
||||
canTeleport = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
|
||||
@@ -36,7 +36,17 @@ public:
|
||||
|
||||
struct generic_creatureAI : public ScriptedAI
|
||||
{
|
||||
generic_creatureAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
generic_creatureAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
GlobalCooldown = 0;
|
||||
BuffTimer = 0; //Rebuff as soon as we can
|
||||
IsSelfRooted = false;
|
||||
}
|
||||
|
||||
uint32 GlobalCooldown; //This variable acts like the global cooldown that players have (1.5 seconds)
|
||||
uint32 BuffTimer; //This variable keeps track of buffs
|
||||
@@ -44,9 +54,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
GlobalCooldown = 0;
|
||||
BuffTimer = 0; //Rebuff as soon as we can
|
||||
IsSelfRooted = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) override
|
||||
|
||||
@@ -329,13 +329,21 @@ public:
|
||||
|
||||
struct npc_chicken_cluckAI : public ScriptedAI
|
||||
{
|
||||
npc_chicken_cluckAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_chicken_cluckAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ResetFlagTimer = 120000;
|
||||
}
|
||||
|
||||
uint32 ResetFlagTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ResetFlagTimer = 120000;
|
||||
Initialize();
|
||||
me->setFaction(FACTION_CHICKEN);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
}
|
||||
@@ -424,15 +432,23 @@ public:
|
||||
|
||||
struct npc_dancing_flamesAI : public ScriptedAI
|
||||
{
|
||||
npc_dancing_flamesAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_dancing_flamesAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Active = true;
|
||||
CanIteract = 3500;
|
||||
}
|
||||
|
||||
bool Active;
|
||||
uint32 CanIteract;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Active = true;
|
||||
CanIteract = 3500;
|
||||
Initialize();
|
||||
DoCast(me, SPELL_BRAZIER, true);
|
||||
DoCast(me, SPELL_FIERY_AURA, false);
|
||||
float x, y, z;
|
||||
@@ -575,7 +591,25 @@ public:
|
||||
|
||||
struct npc_doctorAI : public ScriptedAI
|
||||
{
|
||||
npc_doctorAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_doctorAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PlayerGUID = 0;
|
||||
|
||||
SummonPatientTimer = 10000;
|
||||
SummonPatientCount = 0;
|
||||
PatientDiedCount = 0;
|
||||
PatientSavedCount = 0;
|
||||
|
||||
Patients.clear();
|
||||
Coordinates.clear();
|
||||
|
||||
Event = false;
|
||||
}
|
||||
|
||||
uint64 PlayerGUID;
|
||||
|
||||
@@ -591,18 +625,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
PlayerGUID = 0;
|
||||
|
||||
SummonPatientTimer = 10000;
|
||||
SummonPatientCount = 0;
|
||||
PatientDiedCount = 0;
|
||||
PatientSavedCount = 0;
|
||||
|
||||
Patients.clear();
|
||||
Coordinates.clear();
|
||||
|
||||
Event = false;
|
||||
|
||||
Initialize();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
@@ -720,15 +743,23 @@ public:
|
||||
|
||||
struct npc_injured_patientAI : public ScriptedAI
|
||||
{
|
||||
npc_injured_patientAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_injured_patientAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
DoctorGUID = 0;
|
||||
Coord = NULL;
|
||||
}
|
||||
|
||||
uint64 DoctorGUID;
|
||||
Location* Coord;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
DoctorGUID = 0;
|
||||
Coord = NULL;
|
||||
Initialize();
|
||||
|
||||
//no select
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -1449,14 +1480,20 @@ public:
|
||||
{
|
||||
npc_tonk_mineAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ExplosionTimer = 3000;
|
||||
}
|
||||
|
||||
uint32 ExplosionTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ExplosionTimer = 3000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -1651,11 +1688,19 @@ class npc_wormhole : public CreatureScript
|
||||
|
||||
struct npc_wormholeAI : public PassiveAI
|
||||
{
|
||||
npc_wormholeAI(Creature* creature) : PassiveAI(creature) { }
|
||||
npc_wormholeAI(Creature* creature) : PassiveAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_showUnderground = urand(0, 100) == 0; // Guessed value, it is really rare though
|
||||
}
|
||||
|
||||
void InitializeAI() override
|
||||
{
|
||||
_showUnderground = urand(0, 100) == 0; // Guessed value, it is really rare though
|
||||
Initialize();
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type) const override
|
||||
@@ -2305,7 +2350,19 @@ public:
|
||||
|
||||
struct npc_spring_rabbitAI : public ScriptedAI
|
||||
{
|
||||
npc_spring_rabbitAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_spring_rabbitAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
inLove = false;
|
||||
rabbitGUID = 0;
|
||||
jumpTimer = urand(5000, 10000);
|
||||
bunnyTimer = urand(10000, 20000);
|
||||
searchTimer = urand(5000, 10000);
|
||||
}
|
||||
|
||||
bool inLove;
|
||||
uint32 jumpTimer;
|
||||
@@ -2315,11 +2372,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
inLove = false;
|
||||
rabbitGUID = 0;
|
||||
jumpTimer = urand(5000, 10000);
|
||||
bunnyTimer = urand(10000, 20000);
|
||||
searchTimer = urand(5000, 10000);
|
||||
Initialize();
|
||||
if (Unit* owner = me->GetOwner())
|
||||
me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
|
||||
}
|
||||
|
||||
@@ -143,6 +143,7 @@ Vec3D fixCoordSystem2(Vec3D v)
|
||||
}
|
||||
|
||||
ModelInstance::ModelInstance(MPQFile& f, char const* ModelInstName, uint32 mapID, uint32 tileX, uint32 tileY, FILE *pDirfile)
|
||||
: scale(0), flags(0)
|
||||
{
|
||||
float ff[3];
|
||||
f.read(&id, 4);
|
||||
|
||||
Reference in New Issue
Block a user