aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-05-06 22:10:22 +0200
committerShauren <shauren.trinity@gmail.com>2011-05-06 22:10:22 +0200
commit3690ce35b730863ca36e0264e19b68dd918383af (patch)
tree89c7ef6354ae4205649a6bb0513ec1b5167bb1c7 /src
parent3f7926e0d213154b34d7bfdc38fb2e40dcfe6cb1 (diff)
Scripts/Icecrown Citadel
* Increased damage done by Lord Marrowgar's Bone storm * Fixed Decimate targeting for Stinky and Precious * Fixed Plague Stench targeting for Stinky * Added missing zombie summoning for Precious * Fixed Eat Ooze spell targeting of Mutated Abominations * Fixed Prince Keleseth summons spawning in walls * Applied TrinityCore code standards
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp7
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp318
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp66
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp214
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp110
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp261
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp111
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp128
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp45
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp202
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp174
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp472
12 files changed, 1079 insertions, 1029 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 0d7490fc588..39314f30443 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -4011,7 +4011,7 @@ void SpellMgr::LoadSpellCustomAttr()
break;
case 69055: // Saber Lash (Lord Marrowgar)
case 70814: // Saber Lash (Lord Marrowgar)
- spellInfo->EffectRadiusIndex[0] = 8;
+ spellInfo->EffectRadiusIndex[0] = 8; // 5yd
++count;
break;
case 69075: // Bone Storm (Lord Marrowgar)
@@ -4021,7 +4021,10 @@ void SpellMgr::LoadSpellCustomAttr()
case 72864: // Death Plague (Rotting Frost Giant)
case 72378: // Blood Nova (Deathbringer Saurfang)
case 73058: // Blood Nova (Deathbringer Saurfang)
- spellInfo->EffectRadiusIndex[0] = 12;
+ case 71160: // Plague Stench (Stinky)
+ case 71161: // Plague Stench (Stinky)
+ case 71123: // Decimate (Stinky & Precious)
+ spellInfo->EffectRadiusIndex[0] = 12; // 100yd
++count;
break;
case 72385: // Boiling Blood (Deathbringer Saurfang)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index 3a5b289acb0..c0d2aee9233 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -19,6 +19,7 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellAuraEffects.h"
+#include "VMapFactory.h"
#include "icecrown_citadel.h"
enum Texts
@@ -155,20 +156,21 @@ enum Displays
class StandUpEvent : public BasicEvent
{
public:
- StandUpEvent(Creature& owner) : BasicEvent(), m_owner(owner) { }
+ StandUpEvent(Creature& owner) : BasicEvent(), _owner(owner) { }
+
bool Execute(uint64 /*eventTime*/, uint32 /*diff*/)
{
- m_owner.HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
+ _owner.HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
return true;
}
private:
- Creature& m_owner;
+ Creature& _owner;
};
-static const Position introFinalPos = {4660.490f, 2769.200f, 430.0000f, 0.000000f};
-static const Position triggerPos = {4680.231f, 2769.134f, 379.9256f, 3.121708f};
-static const Position triggerEndPos = {4680.180f, 2769.150f, 365.5000f, 3.121708f};
+Position const introFinalPos = {4660.490f, 2769.200f, 430.0000f, 0.000000f};
+Position const triggerPos = {4680.231f, 2769.134f, 379.9256f, 3.121708f};
+Position const triggerEndPos = {4680.180f, 2769.150f, 365.5000f, 3.121708f};
class boss_blood_council_controller : public CreatureScript
{
@@ -185,8 +187,8 @@ class boss_blood_council_controller : public CreatureScript
{
events.Reset();
me->SetReactState(REACT_PASSIVE);
- invocationStage = 0;
- resetCounter = 0;
+ _invocationStage = 0;
+ _resetCounter = 0;
instance->SetBossState(DATA_BLOOD_PRINCE_COUNCIL, NOT_STARTED);
}
@@ -227,16 +229,16 @@ class boss_blood_council_controller : public CreatureScript
events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 46500);
- invocationOrder[0] = InvocationData(instance->GetData64(DATA_PRINCE_VALANAR_GUID), SPELL_INVOCATION_OF_BLOOD_VALANAR, EMOTE_VALANAR_INVOCATION, 71070);
+ _invocationOrder[0] = InvocationData(instance->GetData64(DATA_PRINCE_VALANAR_GUID), SPELL_INVOCATION_OF_BLOOD_VALANAR, EMOTE_VALANAR_INVOCATION, 71070);
if (urand(0, 1))
{
- invocationOrder[1] = InvocationData(instance->GetData64(DATA_PRINCE_TALDARAM_GUID), SPELL_INVOCATION_OF_BLOOD_TALDARAM, EMOTE_TALDARAM_INVOCATION, 71081);
- invocationOrder[2] = InvocationData(instance->GetData64(DATA_PRINCE_KELESETH_GUID), SPELL_INVOCATION_OF_BLOOD_KELESETH, EMOTE_KELESETH_INVOCATION, 71080);
+ _invocationOrder[1] = InvocationData(instance->GetData64(DATA_PRINCE_TALDARAM_GUID), SPELL_INVOCATION_OF_BLOOD_TALDARAM, EMOTE_TALDARAM_INVOCATION, 71081);
+ _invocationOrder[2] = InvocationData(instance->GetData64(DATA_PRINCE_KELESETH_GUID), SPELL_INVOCATION_OF_BLOOD_KELESETH, EMOTE_KELESETH_INVOCATION, 71080);
}
else
{
- invocationOrder[1] = InvocationData(instance->GetData64(DATA_PRINCE_KELESETH_GUID), SPELL_INVOCATION_OF_BLOOD_KELESETH, EMOTE_KELESETH_INVOCATION, 71080);
- invocationOrder[2] = InvocationData(instance->GetData64(DATA_PRINCE_TALDARAM_GUID), SPELL_INVOCATION_OF_BLOOD_TALDARAM, EMOTE_TALDARAM_INVOCATION, 71081);
+ _invocationOrder[1] = InvocationData(instance->GetData64(DATA_PRINCE_KELESETH_GUID), SPELL_INVOCATION_OF_BLOOD_KELESETH, EMOTE_KELESETH_INVOCATION, 71080);
+ _invocationOrder[2] = InvocationData(instance->GetData64(DATA_PRINCE_TALDARAM_GUID), SPELL_INVOCATION_OF_BLOOD_TALDARAM, EMOTE_TALDARAM_INVOCATION, 71081);
}
if (IsHeroic())
@@ -261,14 +263,14 @@ class boss_blood_council_controller : public CreatureScript
void SetData(uint32 /*type*/, uint32 data)
{
- resetCounter += uint8(data);
- if (resetCounter == 3)
+ _resetCounter += uint8(data);
+ if (_resetCounter == 3)
EnterEvadeMode();
}
void JustReachedHome()
{
- resetCounter = 0;
+ _resetCounter = 0;
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
keleseth->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -282,13 +284,13 @@ class boss_blood_council_controller : public CreatureScript
void JustDied(Unit* killer)
{
_JustDied();
- // kill the other 2 princes too
+ // kill all prices
for (uint8 i = 0; i < 3; ++i)
{
- if (++invocationStage == 3)
- invocationStage = 0;
+ if (++_invocationStage == 3)
+ _invocationStage = 0;
- if (Creature* prince = ObjectAccessor::GetCreature(*me, invocationOrder[invocationStage].guid))
+ if (Creature* prince = ObjectAccessor::GetCreature(*me, _invocationOrder[_invocationStage].guid))
{
// make sure looting is allowed
if (me->IsDamageEnoughForLootingAndReward())
@@ -296,10 +298,11 @@ class boss_blood_council_controller : public CreatureScript
killer->Kill(prince);
}
}
+
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_SHADOW_PRISON_DUMMY);
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
@@ -315,25 +318,25 @@ class boss_blood_council_controller : public CreatureScript
{
case EVENT_INVOCATION_OF_BLOOD:
{
- Creature* oldPrince = ObjectAccessor::GetCreature(*me, invocationOrder[invocationStage].guid);
- if (++invocationStage == 3)
- invocationStage = 0;
+ Creature* oldPrince = ObjectAccessor::GetCreature(*me, _invocationOrder[_invocationStage].guid);
+ if (++_invocationStage == 3)
+ _invocationStage = 0;
- Creature* newPrince = ObjectAccessor::GetCreature(*me, invocationOrder[invocationStage].guid);
+ Creature* newPrince = ObjectAccessor::GetCreature(*me, _invocationOrder[_invocationStage].guid);
if (oldPrince)
{
oldPrince->AI()->DoAction(ACTION_REMOVE_INVOCATION);
if (newPrince)
- oldPrince->CastSpell(newPrince, invocationOrder[invocationStage].visualSpell, true);
+ oldPrince->CastSpell(newPrince, _invocationOrder[_invocationStage].visualSpell, true);
}
if (newPrince)
{
newPrince->SetHealth(me->GetHealth());
- newPrince->AI()->Talk(uint8(invocationOrder[invocationStage].textId));
+ newPrince->AI()->Talk(uint8(_invocationOrder[_invocationStage].textId));
}
- DoCast(me, invocationOrder[invocationStage].spellId);
+ DoCast(me, _invocationOrder[_invocationStage].spellId);
events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 46500);
break;
}
@@ -360,9 +363,10 @@ class boss_blood_council_controller : public CreatureScript
}
InvocationData() : guid(0), spellId(0), textId(0), visualSpell(0) { }
- } invocationOrder[3];
- uint32 invocationStage;
- uint32 resetCounter;
+ } _invocationOrder[3];
+
+ uint32 _invocationStage;
+ uint32 _resetCounter;
};
CreatureAI* GetAI(Creature* creature) const
@@ -380,15 +384,15 @@ class boss_prince_keleseth_icc : public CreatureScript
{
boss_prince_kelesethAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL)
{
- isEmpowered = false;
- spawnHealth = creature->GetMaxHealth();
+ _isEmpowered = false;
+ _spawnHealth = creature->GetMaxHealth();
}
void InitializeAI()
{
if (CreatureData const* data = sObjectMgr->GetCreatureData(me->GetDBTableGUIDLow()))
if (data->curhealth)
- spawnHealth = data->curhealth;
+ _spawnHealth = data->curhealth;
if (!me->isDead())
JustRespawned();
@@ -402,18 +406,14 @@ class boss_prince_keleseth_icc : public CreatureScript
summons.DespawnAll();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
- isEmpowered = false;
- me->SetHealth(spawnHealth);
+ _isEmpowered = false;
+ me->SetHealth(_spawnHealth);
instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(true));
me->SetReactState(REACT_DEFENSIVE);
if (IsHeroic())
DoCast(me, SPELL_SHADOW_PRISON);
}
- void MoveInLineOfSight(Unit* /*who*/)
- {
- }
-
void EnterCombat(Unit* /*who*/)
{
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL)))
@@ -433,8 +433,8 @@ class boss_prince_keleseth_icc : public CreatureScript
void JustReachedHome()
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
- me->SetHealth(spawnHealth);
- isEmpowered = false;
+ me->SetHealth(_spawnHealth);
+ _isEmpowered = false;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL)))
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -445,7 +445,7 @@ class boss_prince_keleseth_icc : public CreatureScript
void JustRespawned()
{
DoCast(me, SPELL_FEIGN_DEATH);
- me->SetHealth(spawnHealth);
+ me->SetHealth(_spawnHealth);
}
void SpellHit(Unit* /*caster*/, SpellEntry const* spell)
@@ -457,13 +457,18 @@ class boss_prince_keleseth_icc : public CreatureScript
void JustSummoned(Creature* summon)
{
summons.Summon(summon);
+ Position pos;
+ pos.Relocate(RoomCenter);
+ float maxRange = 50.0f;
+ summon->MovePosition(pos, float(rand_norm()) * maxRange, summon->GetAngle(&RoomCenter));
// prevent spawning outside of room
- if (summon->GetExactDist2d(&roomCenter) > 50.0f)
+ while (!VMAP::VMapFactory::createOrGetVMapManager()->isInLineOfSight(me->GetMapId(), me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ()))
{
- Position pos;
- pos.Relocate(roomCenter);
- summon->MovePosition(pos, float(rand_norm()) * 50.0f, summon->GetAngle(&roomCenter));
+ maxRange -= 5.0f;
+ summon->MovePosition(pos, float(rand_norm()) * maxRange, summon->GetAngle(&RoomCenter));
}
+
+ summon->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation());
}
void DamageDealt(Unit* /*target*/, uint32& damage, DamageEffectType damageType)
@@ -477,7 +482,7 @@ class boss_prince_keleseth_icc : public CreatureScript
void DamageTaken(Unit* attacker, uint32& damage)
{
- if (!isEmpowered)
+ if (!_isEmpowered)
{
me->AddThreat(attacker, float(damage));
damage = 0;
@@ -490,7 +495,7 @@ class boss_prince_keleseth_icc : public CreatureScript
Talk(SAY_KELESETH_KILL);
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
switch (action)
{
@@ -505,20 +510,20 @@ class boss_prince_keleseth_icc : public CreatureScript
case ACTION_CAST_INVOCATION:
Talk(SAY_KELESETH_INVOCATION);
DoCast(me, SPELL_INVOCATION_VISUAL_ACTIVE, true);
- isEmpowered = true;
+ _isEmpowered = true;
break;
case ACTION_REMOVE_INVOCATION:
- me->SetHealth(spawnHealth);
+ me->SetHealth(_spawnHealth);
me->RemoveAurasDueToSpell(SPELL_INVOCATION_VISUAL_ACTIVE);
me->RemoveAurasDueToSpell(SPELL_INVOCATION_OF_BLOOD_KELESETH);
- isEmpowered = false;
+ _isEmpowered = false;
break;
default:
break;
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim() || !CheckInRoom())
return;
@@ -542,7 +547,7 @@ class boss_prince_keleseth_icc : public CreatureScript
events.ScheduleEvent(EVENT_SHADOW_RESONANCE, urand(10000, 15000));
break;
case EVENT_SHADOW_LANCE:
- if (isEmpowered)
+ if (_isEmpowered)
DoCastVictim(SPELL_EMPOWERED_SHADOW_LANCE);
else
DoCastVictim(SPELL_SHADOW_LANCE);
@@ -556,10 +561,11 @@ class boss_prince_keleseth_icc : public CreatureScript
// does not melee
}
+ static Position const RoomCenter;
+
private:
- static const Position roomCenter;
- uint32 spawnHealth;
- bool isEmpowered; // bool check faster than map lookup
+ uint32 _spawnHealth;
+ bool _isEmpowered;
};
CreatureAI* GetAI(Creature* creature) const
@@ -568,7 +574,7 @@ class boss_prince_keleseth_icc : public CreatureScript
}
};
-const Position boss_prince_keleseth_icc::boss_prince_kelesethAI::roomCenter = {4658.0f, 2769.26f, 361.2f, 0.0f};
+const Position boss_prince_keleseth_icc::boss_prince_kelesethAI::RoomCenter = {4658.0f, 2769.26f, 361.2f, 0.0f};
class boss_prince_taldaram_icc : public CreatureScript
{
@@ -579,15 +585,15 @@ class boss_prince_taldaram_icc : public CreatureScript
{
boss_prince_taldaramAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL)
{
- isEmpowered = false;
- spawnHealth = creature->GetMaxHealth();
+ _isEmpowered = false;
+ _spawnHealth = creature->GetMaxHealth();
}
void InitializeAI()
{
if (CreatureData const* data = sObjectMgr->GetCreatureData(me->GetDBTableGUIDLow()))
if (data->curhealth)
- spawnHealth = data->curhealth;
+ _spawnHealth = data->curhealth;
if (!me->isDead())
JustRespawned();
@@ -601,8 +607,8 @@ class boss_prince_taldaram_icc : public CreatureScript
summons.DespawnAll();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
- isEmpowered = false;
- me->SetHealth(spawnHealth);
+ _isEmpowered = false;
+ me->SetHealth(_spawnHealth);
instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(true));
me->SetReactState(REACT_DEFENSIVE);
if (IsHeroic())
@@ -632,8 +638,8 @@ class boss_prince_taldaram_icc : public CreatureScript
void JustReachedHome()
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
- me->SetHealth(spawnHealth);
- isEmpowered = false;
+ me->SetHealth(_spawnHealth);
+ _isEmpowered = false;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL)))
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -644,7 +650,7 @@ class boss_prince_taldaram_icc : public CreatureScript
void JustRespawned()
{
DoCast(me, SPELL_FEIGN_DEATH);
- me->SetHealth(spawnHealth);
+ me->SetHealth(_spawnHealth);
}
void SpellHit(Unit* /*caster*/, SpellEntry const* spell)
@@ -678,7 +684,7 @@ class boss_prince_taldaram_icc : public CreatureScript
void DamageTaken(Unit* attacker, uint32& damage)
{
- if (!isEmpowered)
+ if (!_isEmpowered)
{
me->AddThreat(attacker, float(damage));
damage = 0;
@@ -691,7 +697,7 @@ class boss_prince_taldaram_icc : public CreatureScript
Talk(SAY_TALDARAM_KILL);
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
switch (action)
{
@@ -706,20 +712,20 @@ class boss_prince_taldaram_icc : public CreatureScript
case ACTION_CAST_INVOCATION:
Talk(SAY_TALDARAM_INVOCATION);
DoCast(me, SPELL_INVOCATION_VISUAL_ACTIVE, true);
- isEmpowered = true;
+ _isEmpowered = true;
break;
case ACTION_REMOVE_INVOCATION:
- me->SetHealth(spawnHealth);
+ me->SetHealth(_spawnHealth);
me->RemoveAurasDueToSpell(SPELL_INVOCATION_VISUAL_ACTIVE);
me->RemoveAurasDueToSpell(SPELL_INVOCATION_OF_BLOOD_TALDARAM);
- isEmpowered = false;
+ _isEmpowered = false;
break;
default:
break;
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim() || !CheckInRoom())
return;
@@ -742,7 +748,7 @@ class boss_prince_taldaram_icc : public CreatureScript
events.ScheduleEvent(EVENT_GLITTERING_SPARKS, urand(15000, 50000));
break;
case EVENT_CONJURE_FLAME:
- if (isEmpowered)
+ if (_isEmpowered)
{
DoCast(me, SPELL_CONJURE_EMPOWERED_FLAME);
events.ScheduleEvent(EVENT_CONJURE_FLAME, urand(15000, 25000));
@@ -763,8 +769,8 @@ class boss_prince_taldaram_icc : public CreatureScript
}
private:
- uint32 spawnHealth;
- bool isEmpowered; // bool check faster than map lookup
+ uint32 _spawnHealth;
+ bool _isEmpowered;
};
CreatureAI* GetAI(Creature* creature) const
@@ -782,15 +788,15 @@ class boss_prince_valanar_icc : public CreatureScript
{
boss_prince_valanarAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL)
{
- isEmpowered = false;
- spawnHealth = creature->GetMaxHealth();
+ _isEmpowered = false;
+ _spawnHealth = creature->GetMaxHealth();
}
void InitializeAI()
{
if (CreatureData const* data = sObjectMgr->GetCreatureData(me->GetDBTableGUIDLow()))
if (data->curhealth)
- spawnHealth = data->curhealth;
+ _spawnHealth = data->curhealth;
if (!me->isDead())
JustRespawned();
@@ -804,7 +810,7 @@ class boss_prince_valanar_icc : public CreatureScript
summons.DespawnAll();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
- isEmpowered = false;
+ _isEmpowered = false;
me->SetHealth(me->GetMaxHealth());
instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(true));
me->SetReactState(REACT_DEFENSIVE);
@@ -836,7 +842,7 @@ class boss_prince_valanar_icc : public CreatureScript
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
me->SetHealth(me->GetMaxHealth());
- isEmpowered = false;
+ _isEmpowered = false;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL)))
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -847,7 +853,7 @@ class boss_prince_valanar_icc : public CreatureScript
void JustRespawned()
{
DoCast(me, SPELL_FEIGN_DEATH);
- me->SetHealth(spawnHealth);
+ me->SetHealth(_spawnHealth);
}
void JustSummoned(Creature* summon)
@@ -895,7 +901,7 @@ class boss_prince_valanar_icc : public CreatureScript
void DamageTaken(Unit* attacker, uint32& damage)
{
- if (!isEmpowered)
+ if (!_isEmpowered)
{
me->AddThreat(attacker, float(damage));
damage = 0;
@@ -908,7 +914,7 @@ class boss_prince_valanar_icc : public CreatureScript
Talk(SAY_VALANAR_KILL);
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
switch (action)
{
@@ -923,20 +929,20 @@ class boss_prince_valanar_icc : public CreatureScript
case ACTION_CAST_INVOCATION:
Talk(SAY_VALANAR_INVOCATION);
DoCast(me, SPELL_INVOCATION_VISUAL_ACTIVE, true);
- isEmpowered = true;
+ _isEmpowered = true;
break;
case ACTION_REMOVE_INVOCATION:
- me->SetHealth(spawnHealth);
+ me->SetHealth(_spawnHealth);
me->RemoveAurasDueToSpell(SPELL_INVOCATION_VISUAL_ACTIVE);
me->RemoveAurasDueToSpell(SPELL_INVOCATION_OF_BLOOD_VALANAR);
- isEmpowered = false;
+ _isEmpowered = false;
break;
default:
break;
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim() || !CheckInRoom())
return;
@@ -963,7 +969,7 @@ class boss_prince_valanar_icc : public CreatureScript
events.ScheduleEvent(EVENT_KINETIC_BOMB, urand(18000, 24000));
break;
case EVENT_SHOCK_VORTEX:
- if (isEmpowered)
+ if (_isEmpowered)
{
DoCast(me, SPELL_EMPOWERED_SHOCK_VORTEX);
Talk(EMOTE_VALANAR_SHOCK_VORTEX);
@@ -985,8 +991,8 @@ class boss_prince_valanar_icc : public CreatureScript
}
private:
- uint32 spawnHealth;
- bool isEmpowered; // bool check faster than map lookup
+ uint32 _spawnHealth;
+ bool _isEmpowered;
};
CreatureAI* GetAI(Creature* creature) const
@@ -1004,18 +1010,18 @@ class npc_blood_queen_lana_thel : public CreatureScript
{
npc_blood_queen_lana_thelAI(Creature* creature) : ScriptedAI(creature)
{
- introDone = false;
- instance = creature->GetInstanceScript();
+ _introDone = false;
+ _instance = creature->GetInstanceScript();
}
void Reset()
{
- events.Reset();
+ _events.Reset();
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
- if (instance->GetBossState(DATA_BLOOD_PRINCE_COUNCIL) == DONE)
+ if (_instance->GetBossState(DATA_BLOOD_PRINCE_COUNCIL) == DONE)
{
me->SetVisible(false);
- introDone = true;
+ _introDone = true;
}
else
me->SetVisible(true);
@@ -1023,16 +1029,16 @@ class npc_blood_queen_lana_thel : public CreatureScript
void MoveInLineOfSight(Unit* who)
{
- if (introDone)
+ if (_introDone)
return;
if (!me->IsWithinDistInMap(who, 35.0f))
return;
- introDone = true;
+ _introDone = true;
Talk(SAY_INTRO_1);
- events.SetPhase(1);
- events.ScheduleEvent(EVENT_INTRO_1, 14000);
+ _events.SetPhase(1);
+ _events.ScheduleEvent(EVENT_INTRO_1, 14000);
// summon a visual trigger
if (Creature* summon = DoSummon(NPC_FLOATING_TRIGGER, triggerPos, 15000, TEMPSUMMON_TIMED_DESPAWN))
{
@@ -1048,27 +1054,27 @@ class npc_blood_queen_lana_thel : public CreatureScript
me->SetVisible(false);
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- if (!events.GetPhaseMask())
+ if (!_events.GetPhaseMask())
return;
- events.Update(diff);
+ _events.Update(diff);
- if (events.ExecuteEvent() == EVENT_INTRO_1)
+ if (_events.ExecuteEvent() == EVENT_INTRO_1)
{
Talk(SAY_INTRO_2);
me->GetMotionMaster()->MovePoint(POINT_INTRO_DESPAWN, introFinalPos);
- events.Reset();
+ _events.Reset();
// remove Feign Death from princes
- if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
+ if (Creature* keleseth = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
keleseth->AI()->DoAction(ACTION_STAND_UP);
- if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
+ if (Creature* taldaram = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
taldaram->AI()->DoAction(ACTION_STAND_UP);
- if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
+ if (Creature* valanar = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
{
valanar->AI()->DoAction(ACTION_STAND_UP);
valanar->SetHealth(valanar->GetMaxHealth());
@@ -1077,9 +1083,9 @@ class npc_blood_queen_lana_thel : public CreatureScript
}
private:
- EventMap events;
- InstanceScript* instance;
- bool introDone;
+ EventMap _events;
+ InstanceScript* _instance;
+ bool _introDone;
};
CreatureAI* GetAI(Creature* creature) const
@@ -1095,9 +1101,9 @@ class npc_ball_of_flame : public CreatureScript
struct npc_ball_of_flameAI : public ScriptedAI
{
- npc_ball_of_flameAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
+ npc_ball_of_flameAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
{
- despawnTimer = 0;
+ _despawnTimer = 0;
}
void Reset()
@@ -1112,24 +1118,24 @@ class npc_ball_of_flame : public CreatureScript
void MovementInform(uint32 type, uint32 id)
{
- if (type == TARGETED_MOTION_TYPE && id == GUID_LOPART(chaseGUID) && chaseGUID)
+ if (type == TARGETED_MOTION_TYPE && id == GUID_LOPART(_chaseGUID) && _chaseGUID)
{
me->RemoveAurasDueToSpell(SPELL_BALL_OF_FLAMES_PERIODIC);
DoCast(me, SPELL_FLAMES);
- despawnTimer = 1000;
- chaseGUID = 0;
+ _despawnTimer = 1000;
+ _chaseGUID = 0;
}
}
- void SetGUID(const uint64& guid, int32 /*type*/)
+ void SetGUID(uint64 const& guid, int32 /*type*/)
{
- chaseGUID = guid;
+ _chaseGUID = guid;
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
if (action == ACTION_FLAME_BALL_CHASE)
- if (Player* target = ObjectAccessor::GetPlayer(*me, chaseGUID))
+ if (Player* target = ObjectAccessor::GetPlayer(*me, _chaseGUID))
{
// need to clear states now because this call is before AuraEffect is fully removed
me->ClearUnitState(UNIT_STAT_CASTING | UNIT_STAT_STUNNED);
@@ -1144,27 +1150,27 @@ class npc_ball_of_flame : public CreatureScript
return;
if (damage > RAID_MODE<uint32>(23000, 25000, 23000, 25000))
- instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(false));
+ _instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(false));
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- if (!despawnTimer)
+ if (!_despawnTimer)
return;
- if (despawnTimer <= diff)
+ if (_despawnTimer <= diff)
{
- despawnTimer = 0;
+ _despawnTimer = 0;
DoCast(me, SPELL_FLAME_SPHERE_DEATH_EFFECT);
}
else
- despawnTimer -= diff;
+ _despawnTimer -= diff;
}
private:
- uint64 chaseGUID;
- InstanceScript* instance;
- uint32 despawnTimer;
+ uint64 _chaseGUID;
+ InstanceScript* _instance;
+ uint32 _despawnTimer;
};
CreatureAI* GetAI(Creature* creature) const
@@ -1184,33 +1190,33 @@ class npc_kinetic_bomb : public CreatureScript
void Reset()
{
- events.Reset();
+ _events.Reset();
me->SetDisplayId(DISPLAY_KINETIC_BOMB);
me->CastSpell(me, SPELL_UNSTABLE, true);
me->CastSpell(me, SPELL_KINETIC_BOMB_VISUAL, true);
me->SetReactState(REACT_PASSIVE);
me->SetSpeed(MOVE_FLIGHT, IsHeroic() ? 0.3f : 0.15f, true);
- me->GetPosition(x, y, groundZ);
- groundZ = me->GetMap()->GetHeight(x, y, groundZ, true, 500.0f);
+ me->GetPosition(_x, _y, _groundZ);
+ _groundZ = me->GetMap()->GetHeight(_x, _y, _groundZ, true, 500.0f);
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
if (action == SPELL_KINETIC_BOMB_EXPLOSION)
- events.ScheduleEvent(EVENT_BOMB_DESPAWN, 1000);
+ _events.ScheduleEvent(EVENT_BOMB_DESPAWN, 1000);
else if (action == ACTION_KINETIC_BOMB_JUMP)
{
me->GetMotionMaster()->Clear();
- me->GetMotionMaster()->MoveJump(x, y, me->GetPositionZ() + 7.0f, 1.0f, 7.0f);
- events.ScheduleEvent(EVENT_CONTINUE_FALLING, 700);
+ me->GetMotionMaster()->MoveJump(_x, _y, me->GetPositionZ() + 7.0f, 1.0f, 7.0f);
+ _events.ScheduleEvent(EVENT_CONTINUE_FALLING, 700);
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- events.Update(diff);
+ _events.Update(diff);
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
@@ -1219,7 +1225,7 @@ class npc_kinetic_bomb : public CreatureScript
break;
case EVENT_CONTINUE_FALLING:
me->GetMotionMaster()->Clear();
- me->GetMotionMaster()->MovePoint(POINT_KINETIC_BOMB_IMPACT, x, y, groundZ);
+ me->GetMotionMaster()->MovePoint(POINT_KINETIC_BOMB_IMPACT, _x, _y, _groundZ);
break;
default:
break;
@@ -1228,10 +1234,10 @@ class npc_kinetic_bomb : public CreatureScript
}
private:
- EventMap events;
- float x;
- float y;
- float groundZ;
+ EventMap _events;
+ float _x;
+ float _y;
+ float _groundZ;
};
CreatureAI* GetAI(Creature* creature) const
@@ -1249,8 +1255,8 @@ class npc_dark_nucleus : public CreatureScript
{
npc_dark_nucleusAI(Creature* creature) : ScriptedAI(creature)
{
- lockedTarget = false;
- targetAuraCheck = 0;
+ _lockedTarget = false;
+ _targetAuraCheck = 0;
}
void Reset()
@@ -1261,7 +1267,7 @@ class npc_dark_nucleus : public CreatureScript
void EnterCombat(Unit* who)
{
- targetAuraCheck = 1000;
+ _targetAuraCheck = 1000;
if (me->GetDistance(who) >= 15.0f)
{
DoStartMovement(who);
@@ -1285,9 +1291,9 @@ class npc_dark_nucleus : public CreatureScript
if (attacker == me)
return;
- if (!lockedTarget)
+ if (!_lockedTarget)
if (me->getVictim() == attacker)
- lockedTarget = true;
+ _lockedTarget = true;
}
void UpdateAI(const uint32 diff)
@@ -1295,9 +1301,9 @@ class npc_dark_nucleus : public CreatureScript
if (!me->isInCombat())
return;
- if (targetAuraCheck <= diff)
+ if (_targetAuraCheck <= diff)
{
- targetAuraCheck = 1000;
+ _targetAuraCheck = 1000;
if (Unit* victim = me->getVictim())
if (me->GetDistance(victim) < 15.0f &&
!victim->HasAura(SPELL_SHADOW_RESONANCE_RESIST, me->GetGUID()))
@@ -1307,19 +1313,19 @@ class npc_dark_nucleus : public CreatureScript
}
}
else
- targetAuraCheck -= diff;
+ _targetAuraCheck -= diff;
- if (!lockedTarget)
+ if (!_lockedTarget)
{
if (Unit* victim = me->SelectVictim())
{
if (me->getVictim() && me->getVictim() != victim)
{
me->getVictim()->RemoveAurasDueToSpell(SPELL_SHADOW_RESONANCE_RESIST, me->GetGUID());
- lockedTarget = true;
+ _lockedTarget = true;
}
- lockedTarget = true;
+ _lockedTarget = true;
AttackStart(victim);
DoCast(victim, SPELL_SHADOW_RESONANCE_RESIST);
me->ClearUnitState(UNIT_STAT_CASTING);
@@ -1328,8 +1334,8 @@ class npc_dark_nucleus : public CreatureScript
}
private:
- uint32 targetAuraCheck; // no point for EventMap with only one timer
- bool lockedTarget;
+ uint32 _targetAuraCheck;
+ bool _lockedTarget;
};
CreatureAI* GetAI(Creature* creature) const
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index 05f620db168..89657c1036b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -71,7 +71,7 @@ enum Shadowmourne
SPELL_THIRST_QUENCHED = 72154,
};
-static const uint32 vampireAuras[3][MAX_DIFFICULTY] =
+uint32 const vampireAuras[3][MAX_DIFFICULTY] =
{
{70867, 71473, 71532, 71533},
{70879, 71525, 71530, 71531},
@@ -109,9 +109,9 @@ enum Points
POINT_MINCHAR = 4,
};
-static const Position centerPos = {4595.7090f, 2769.4190f, 400.6368f, 0.000000f};
-static const Position airPos = {4595.7090f, 2769.4190f, 422.3893f, 0.000000f};
-static const Position mincharPos = {4629.3711f, 2782.6089f, 424.6390f, 0.000000f};
+Position const centerPos = {4595.7090f, 2769.4190f, 400.6368f, 0.000000f};
+Position const airPos = {4595.7090f, 2769.4190f, 422.3893f, 0.000000f};
+Position const mincharPos = {4629.3711f, 2782.6089f, 424.6390f, 0.000000f};
bool IsVampire(Unit const* unit)
{
@@ -144,9 +144,9 @@ class boss_blood_queen_lana_thel : public CreatureScript
events.ScheduleEvent(EVENT_TWILIGHT_BLOODBOLT, urand(20000, 25000), EVENT_GROUP_NORMAL);
events.ScheduleEvent(EVENT_AIR_PHASE, 124000 + uint32(Is25ManRaid() ? 3000 : 0));
me->SetSpeed(MOVE_FLIGHT, 0.642857f, true);
- offtank = NULL;
- vampires.clear();
- creditBloodQuickening = false;
+ _offtank = NULL;
+ _vampires.clear();
+ _creditBloodQuickening = false;
}
void EnterCombat(Unit* who)
@@ -165,7 +165,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
DoCast(me, SPELL_SHROUD_OF_SORROW, true);
DoCast(me, SPELL_FRENZIED_BLOODTHIRST_VISUAL, true);
- creditBloodQuickening = instance->GetData(DATA_BLOOD_QUICKENING_STATE) == IN_PROGRESS;
+ _creditBloodQuickening = instance->GetData(DATA_BLOOD_QUICKENING_STATE) == IN_PROGRESS;
}
void JustDied(Unit* killer)
@@ -182,7 +182,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DELIRIOUS_SLASH);
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PACT_OF_THE_DARKFALLEN);
// Blah, credit the quest
- if (creditBloodQuickening)
+ if (_creditBloodQuickening)
{
instance->SetData(DATA_BLOOD_QUICKENING_STATE, DONE);
if (Player* plr = killer->ToPlayer())
@@ -199,13 +199,13 @@ class boss_blood_queen_lana_thel : public CreatureScript
}
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
if (action != ACTION_KILL_MINCHAR)
return;
if (instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == IN_PROGRESS)
- killMinchar = true;
+ _killMinchar = true;
else
{
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
@@ -219,7 +219,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
void EnterEvadeMode()
{
_EnterEvadeMode();
- if (killMinchar)
+ if (_killMinchar)
{
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, 0x01);
@@ -250,10 +250,10 @@ class boss_blood_queen_lana_thel : public CreatureScript
Talk(SAY_KILL);
}
- void SetGUID(const uint64& guid, int32 type = 0)
+ void SetGUID(uint64 const& guid, int32 type = 0)
{
if (type == GUID_VAMPIRE)
- vampires.insert(guid);
+ _vampires.insert(guid);
}
void MovementInform(uint32 type, uint32 id)
@@ -295,7 +295,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim() || !CheckInRoom())
return;
@@ -319,7 +319,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
{
DoCast(target, SPELL_VAMPIRIC_BITE);
Talk(SAY_VAMPIRIC_BITE);
- vampires.insert(target->GetGUID());
+ _vampires.insert(target->GetGUID());
}
break;
case EVENT_BLOOD_MIRROR:
@@ -328,17 +328,17 @@ class boss_blood_queen_lana_thel : public CreatureScript
if (me->getVictim())
{
Player* newOfftank = SelectRandomTarget(true);
- if (offtank != newOfftank)
+ if (_offtank != newOfftank)
{
- offtank = newOfftank;
- if (offtank)
+ _offtank = newOfftank;
+ if (_offtank)
{
- offtank->CastSpell(me->getVictim(), SPELL_BLOOD_MIRROR_DAMAGE, true);
- me->getVictim()->CastSpell(offtank, SPELL_BLOOD_MIRROR_DUMMY, true);
+ _offtank->CastSpell(me->getVictim(), SPELL_BLOOD_MIRROR_DAMAGE, true);
+ me->getVictim()->CastSpell(_offtank, SPELL_BLOOD_MIRROR_DUMMY, true);
DoCastVictim(SPELL_BLOOD_MIRROR_VISUAL);
- if (Item* shadowsEdge = offtank->GetWeaponForAttack(BASE_ATTACK, true))
- if (!offtank->HasAura(SPELL_THIRST_QUENCHED) && shadowsEdge->GetEntry() == ITEM_SHADOW_S_EDGE && !offtank->HasAura(SPELL_GUSHING_WOUND))
- offtank->CastSpell(offtank, SPELL_GUSHING_WOUND, true);
+ if (Item* shadowsEdge = _offtank->GetWeaponForAttack(BASE_ATTACK, true))
+ if (!_offtank->HasAura(SPELL_THIRST_QUENCHED) && shadowsEdge->GetEntry() == ITEM_SHADOW_S_EDGE && !_offtank->HasAura(SPELL_GUSHING_WOUND))
+ _offtank->CastSpell(_offtank, SPELL_GUSHING_WOUND, true);
}
}
@@ -347,8 +347,8 @@ class boss_blood_queen_lana_thel : public CreatureScript
break;
}
case EVENT_DELIRIOUS_SLASH:
- if (offtank && !me->HasByteFlag(UNIT_FIELD_BYTES_1, 3, 0x03))
- DoCast(offtank, SPELL_DELIRIOUS_SLASH);
+ if (_offtank && !me->HasByteFlag(UNIT_FIELD_BYTES_1, 3, 0x03))
+ DoCast(_offtank, SPELL_DELIRIOUS_SLASH);
events.ScheduleEvent(EVENT_DELIRIOUS_SLASH, urand(20000, 24000), EVENT_GROUP_NORMAL);
break;
case EVENT_PACT_OF_THE_DARKFALLEN:
@@ -418,14 +418,14 @@ class boss_blood_queen_lana_thel : public CreatureScript
bool WasVampire(uint64 guid)
{
- return vampires.count(guid) != 0;
+ return _vampires.count(guid) != 0;
}
private:
// offtank for this encounter is the player standing closest to main tank
Player* SelectRandomTarget(bool includeOfftank, std::list<Player*>* targetList = NULL)
{
- const std::list<HostileReference*> &threatlist = me->getThreatManager().getThreatList();
+ std::list<HostileReference*> const& threatlist = me->getThreatManager().getThreatList();
std::list<Player*> tempTargets;
if (threatlist.empty())
@@ -433,7 +433,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
if (Unit* refTarget = (*itr)->getTarget())
- if (refTarget != me->getVictim() && refTarget->GetTypeId() == TYPEID_PLAYER && (includeOfftank ? true : (refTarget != offtank)))
+ if (refTarget != me->getVictim() && refTarget->GetTypeId() == TYPEID_PLAYER && (includeOfftank ? true : (refTarget != _offtank)))
tempTargets.push_back(refTarget->ToPlayer());
if (tempTargets.empty())
@@ -456,10 +456,10 @@ class boss_blood_queen_lana_thel : public CreatureScript
return *itr;
}
- Player* offtank;
- std::set<uint64> vampires;
- bool creditBloodQuickening;
- bool killMinchar;
+ std::set<uint64> _vampires;
+ Player* _offtank;
+ bool _creditBloodQuickening;
+ bool _killMinchar;
};
CreatureAI* GetAI(Creature* creature) const
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 3f73184248a..3b803121296 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -116,7 +116,7 @@ enum Spells
// Helper to get id of the aura on different modes (HasAura(baseId) wont work)
#define BOILING_BLOOD_HELPER RAID_MODE<int32>(72385, 72441, 72442, 72443)
-enum Events
+enum EventTypes
{
EVENT_INTRO_ALLIANCE_1 = 1,
EVENT_INTRO_ALLIANCE_2 = 2,
@@ -209,10 +209,10 @@ enum MovePoints
POINT_EXIT = 5, // waypoint id
};
-static const Position deathbringerPos = {-496.3542f, 2211.33f, 541.1138f, 0.0f};
-static const Position firstStepPos = {-541.3177f, 2211.365f, 539.2921f, 0.0f};
+Position const deathbringerPos = {-496.3542f, 2211.33f, 541.1138f, 0.0f};
+Position const firstStepPos = {-541.3177f, 2211.365f, 539.2921f, 0.0f};
-static const Position chargePos[6] =
+Position const chargePos[6] =
{
{-509.6505f, 2211.377f, 539.2872f, 0.0f}, // High Overlord Saurfang/Muradin Bronzebeard
{-508.7480f, 2211.897f, 539.2870f, 0.0f}, // front left
@@ -222,7 +222,7 @@ static const Position chargePos[6] =
{-509.0040f, 2211.743f, 539.2870f, 0.0f} // back right
};
-static const Position chokePos[6] =
+Position const chokePos[6] =
{
{-514.4834f, 2211.334f, 549.2887f, 0.0f}, // High Overlord Saurfang/Muradin Bronzebeard
{-510.1081f, 2211.592f, 546.3773f, 0.0f}, // front left
@@ -232,7 +232,7 @@ static const Position chokePos[6] =
{-510.7041f, 2211.069f, 546.5298f, 0.0f} // back right
};
-static const Position finalPos = {-563.7552f, 2211.328f, 538.7848f, 0.0f};
+Position const finalPos = {-563.7552f, 2211.328f, 538.7848f, 0.0f};
class boss_deathbringer_saurfang : public CreatureScript
{
@@ -244,8 +244,8 @@ class boss_deathbringer_saurfang : public CreatureScript
boss_deathbringer_saurfangAI(Creature* creature) : BossAI(creature, DATA_DEATHBRINGER_SAURFANG)
{
ASSERT(creature->GetVehicleKit()); // we dont actually use it, just check if exists
- introDone = false;
- fallenChampionCount = 0;
+ _introDone = false;
+ _fallenChampionCastCount = 0;
}
void Reset()
@@ -253,7 +253,7 @@ class boss_deathbringer_saurfang : public CreatureScript
_Reset();
me->SetReactState(REACT_DEFENSIVE);
events.SetPhase(PHASE_COMBAT);
- frenzy = false;
+ _frenzied = false;
me->SetPower(POWER_ENERGY, 0);
DoCast(me, SPELL_ZERO_POWER, true);
DoCast(me, SPELL_BLOOD_LINK, true);
@@ -280,13 +280,14 @@ class boss_deathbringer_saurfang : public CreatureScript
events.Reset();
events.SetPhase(PHASE_COMBAT);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
- if (!introDone)
+ if (!_introDone)
{
DoCast(me, SPELL_GRIP_OF_AGONY);
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SAURFANG_EVENT_NPC)))
creature->AI()->DoAction(ACTION_INTERRUPT_INTRO);
}
- introDone = true;
+
+ _introDone = true;
Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 30000, 0, PHASE_COMBAT);
@@ -295,7 +296,7 @@ class boss_deathbringer_saurfang : public CreatureScript
events.ScheduleEvent(EVENT_BLOOD_NOVA, 17000, 0, PHASE_COMBAT);
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, 20000, 0, PHASE_COMBAT);
- fallenChampionCount = 0;
+ _fallenChampionCastCount = 0;
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
instance->SetBossState(DATA_DEATHBRINGER_SAURFANG, IN_PROGRESS);
}
@@ -303,7 +304,7 @@ class boss_deathbringer_saurfang : public CreatureScript
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoCastAOE(SPELL_ACHIEVEMENT, true);
+ DoCast(me, SPELL_ACHIEVEMENT, true);
Talk(SAY_DEATH);
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
@@ -322,7 +323,7 @@ class boss_deathbringer_saurfang : public CreatureScript
void EnterEvadeMode()
{
ScriptedAI::EnterEvadeMode();
- if (introDone)
+ if (_introDone)
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
}
@@ -341,9 +342,9 @@ class boss_deathbringer_saurfang : public CreatureScript
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/)
{
- if (!frenzy && HealthBelowPct(31)) // AT 30%, not below
+ if (!_frenzied && HealthBelowPct(31)) // AT 30%, not below
{
- frenzy = true;
+ _frenzied = true;
DoCast(me, SPELL_FRENZY);
Talk(SAY_FRENZY);
}
@@ -360,6 +361,7 @@ class boss_deathbringer_saurfang : public CreatureScript
summon->AI()->DoCast(summon, SPELL_BLOOD_LINK_BEAST, true);
summon->AI()->DoCast(summon, SPELL_RESISTANT_SKIN, true);
summons.Summon(summon);
+ DoZoneInCombat(summon);
}
void SummonedCreatureDespawn(Creature* summon)
@@ -394,7 +396,7 @@ class boss_deathbringer_saurfang : public CreatureScript
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim() && !(events.GetPhaseMask() & PHASE_INTRO_MASK))
return;
@@ -431,7 +433,7 @@ class boss_deathbringer_saurfang : public CreatureScript
break;
case EVENT_INTRO_FINISH:
events.SetPhase(PHASE_COMBAT);
- introDone = true;
+ _introDone = true;
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
break;
case EVENT_SUMMON_BLOOD_BEAST:
@@ -478,19 +480,20 @@ class boss_deathbringer_saurfang : public CreatureScript
uint32 GetData(uint32 type)
{
if (type == DATA_MADE_A_MESS)
- if (fallenChampionCount < RAID_MODE<uint32>(3, 5, 3, 5))
+ if (_fallenChampionCastCount < RAID_MODE<uint32>(3, 5, 3, 5))
return 1;
return 0;
}
// intro setup
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
switch (action)
{
case PHASE_INTRO_A:
case PHASE_INTRO_H:
+ {
if (GameObject* teleporter = GameObject::GetGameObject(*me, instance->GetData64(GO_SCOURGE_TRANSPORTER_SAURFANG)))
{
instance->HandleGameObject(0, false, teleporter);
@@ -509,9 +512,12 @@ class boss_deathbringer_saurfang : public CreatureScript
events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H);
break;
+ }
case ACTION_CONTINUE_INTRO:
- if (introDone)
+ {
+ if (_introDone)
return;
+
events.ScheduleEvent(EVENT_INTRO_ALLIANCE_6, 6500+500, 0, PHASE_INTRO_A);
events.ScheduleEvent(EVENT_INTRO_FINISH, 8000, 0, PHASE_INTRO_A);
@@ -519,25 +525,28 @@ class boss_deathbringer_saurfang : public CreatureScript
events.ScheduleEvent(EVENT_INTRO_HORDE_9, 46700+1000+500, 0, PHASE_INTRO_H);
events.ScheduleEvent(EVENT_INTRO_FINISH, 46700+1000+8000, 0, PHASE_INTRO_H);
break;
+ }
case ACTION_MARK_OF_THE_FALLEN_CHAMPION:
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, -SPELL_MARK_OF_THE_FALLEN_CHAMPION))
+ {
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_MARK_OF_THE_FALLEN_CHAMPION))
{
- ++fallenChampionCount;
+ ++_fallenChampionCastCount;
DoCast(target, SPELL_MARK_OF_THE_FALLEN_CHAMPION);
me->SetPower(POWER_ENERGY, 0);
if (Aura* bloodPower = me->GetAura(SPELL_BLOOD_POWER))
bloodPower->RecalculateAmountOfEffects();
}
break;
+ }
default:
break;
}
}
private:
- uint32 fallenChampionCount;
- bool introDone;
- bool frenzy; // faster than iterating all auras to find Frenzy
+ uint32 _fallenChampionCastCount;
+ bool _introDone;
+ bool _frenzied; // faster than iterating all auras to find Frenzy
};
CreatureAI* GetAI(Creature* creature) const
@@ -553,40 +562,39 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
struct npc_high_overlord_saurfangAI : public ScriptedAI
{
- npc_high_overlord_saurfangAI(Creature* creature) : ScriptedAI(creature), vehicle(creature->GetVehicleKit())
+ npc_high_overlord_saurfangAI(Creature* creature) : ScriptedAI(creature)
{
- ASSERT(vehicle);
- instance = me->GetInstanceScript();
+ ASSERT(creature->GetVehicleKit());
+ _instance = me->GetInstanceScript();
}
void Reset()
{
- events.Reset();
+ _events.Reset();
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
switch (action)
{
case ACTION_START_EVENT:
{
// Prevent crashes
- if (events.GetPhaseMask() & PHASE_INTRO_MASK)
+ if (_events.GetPhaseMask() & PHASE_INTRO_MASK)
return;
- GetCreatureListWithEntryInGrid(guardList, me, NPC_SE_KOR_KRON_REAVER, 20.0f);
- guardList.sort(Trinity::ObjectDistanceOrderPred(me));
+ GetCreatureListWithEntryInGrid(_guardList, me, NPC_SE_KOR_KRON_REAVER, 20.0f);
+ _guardList.sort(Trinity::ObjectDistanceOrderPred(me));
uint32 x = 1;
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++x, ++itr)
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++x, ++itr)
(*itr)->AI()->SetData(0, x);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_INTRO_HORDE_1);
- events.SetPhase(PHASE_INTRO_H);
- events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H);
- deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG);
- instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true);
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ _events.SetPhase(PHASE_INTRO_H);
+ _events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H);
+ _instance->HandleGameObject(_instance->GetData64(GO_SAURFANG_S_DOOR), true);
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
deathbringer->AI()->DoAction(PHASE_INTRO_H);
break;
}
@@ -594,23 +602,25 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
{
me->RemoveAurasDueToSpell(SPELL_GRIP_OF_AGONY);
Talk(SAY_OUTRO_HORDE_1);
- events.ScheduleEvent(EVENT_OUTRO_HORDE_2, 10000); // say
- events.ScheduleEvent(EVENT_OUTRO_HORDE_3, 18000); // say
- events.ScheduleEvent(EVENT_OUTRO_HORDE_4, 24000); // cast
- events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 30000); // move
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_2, 10000); // say
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_3, 18000); // say
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_4, 24000); // cast
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 30000); // move
me->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
me->SendMovementFlagUpdate();
me->Relocate(me->GetPositionX(), me->GetPositionY(), 539.2917f);
me->SendMonsterMove(me->GetPositionX(), me->GetPositionY(), 539.2917f, SPLINEFLAG_FALLING, 0, 0.0f);
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr)
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_DESPAWN);
break;
}
case ACTION_INTERRUPT_INTRO:
- events.Reset();
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr)
+ {
+ _events.Reset();
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_DESPAWN);
break;
+ }
default:
break;
}
@@ -634,25 +644,25 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
case POINT_FIRST_STEP:
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
Talk(SAY_INTRO_HORDE_3);
- events.ScheduleEvent(EVENT_INTRO_HORDE_5, 15500, 0, PHASE_INTRO_H);
- events.ScheduleEvent(EVENT_INTRO_HORDE_6, 29500, 0, PHASE_INTRO_H);
- events.ScheduleEvent(EVENT_INTRO_HORDE_7, 43800, 0, PHASE_INTRO_H);
- events.ScheduleEvent(EVENT_INTRO_HORDE_8, 47000, 0, PHASE_INTRO_H);
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ _events.ScheduleEvent(EVENT_INTRO_HORDE_5, 15500, 0, PHASE_INTRO_H);
+ _events.ScheduleEvent(EVENT_INTRO_HORDE_6, 29500, 0, PHASE_INTRO_H);
+ _events.ScheduleEvent(EVENT_INTRO_HORDE_7, 43800, 0, PHASE_INTRO_H);
+ _events.ScheduleEvent(EVENT_INTRO_HORDE_8, 47000, 0, PHASE_INTRO_H);
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
deathbringer->AI()->DoAction(ACTION_CONTINUE_INTRO);
break;
case POINT_CORPSE:
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
{
deathbringer->CastSpell(me, SPELL_RIDE_VEHICLE, true); // for the packet logs.
deathbringer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
deathbringer->setDeathState(ALIVE);
}
- events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 1000); // move
- events.ScheduleEvent(EVENT_OUTRO_HORDE_6, 4000); // say
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 1000); // move
+ _events.ScheduleEvent(EVENT_OUTRO_HORDE_6, 4000); // say
break;
case POINT_FINAL:
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
deathbringer->DespawnOrUnsummon();
me->DespawnOrUnsummon();
break;
@@ -670,10 +680,10 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- events.Update(diff);
- while (uint32 eventId = events.ExecuteEvent())
+ _events.Update(diff);
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
@@ -692,12 +702,12 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
break;
case EVENT_INTRO_HORDE_8:
Talk(SAY_INTRO_HORDE_8);
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr)
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_CHARGE);
me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE);
break;
case EVENT_OUTRO_HORDE_2: // say
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
me->SetFacingToObject(deathbringer);
Talk(SAY_OUTRO_HORDE_2);
break;
@@ -705,7 +715,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
Talk(SAY_OUTRO_HORDE_3);
break;
case EVENT_OUTRO_HORDE_4: // move
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
{
float x, y, z;
deathbringer->GetClosePoint(x, y, z, deathbringer->GetObjectSize());
@@ -724,18 +734,13 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
}
private:
- EventMap events;
- InstanceScript* instance;
- Vehicle* vehicle;
- uint64 deathbringerSaurfangGUID;
- std::list<Creature*> guardList;
+ EventMap _events;
+ InstanceScript* _instance;
+ std::list<Creature*> _guardList;
};
bool OnGossipHello(Player* player, Creature* creature)
{
- if (creature->GetPositionZ() < 530.0f)
- return false;
-
InstanceScript* instance = creature->GetInstanceScript();
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
{
@@ -771,37 +776,36 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
{
npc_muradin_bronzebeard_iccAI(Creature* creature) : ScriptedAI(creature)
{
- instance = me->GetInstanceScript();
+ _instance = me->GetInstanceScript();
}
void Reset()
{
- events.Reset();
+ _events.Reset();
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
switch (action)
{
case ACTION_START_EVENT:
{
// Prevent crashes
- if (events.GetPhaseMask() & PHASE_INTRO_MASK)
+ if (_events.GetPhaseMask() & PHASE_INTRO_MASK)
return;
- events.SetPhase(PHASE_INTRO_A);
- GetCreatureListWithEntryInGrid(guardList, me, NPC_SE_SKYBREAKER_MARINE, 20.0f);
- guardList.sort(Trinity::ObjectDistanceOrderPred(me));
+ _events.SetPhase(PHASE_INTRO_A);
+ GetCreatureListWithEntryInGrid(_guardList, me, NPC_SE_SKYBREAKER_MARINE, 20.0f);
+ _guardList.sort(Trinity::ObjectDistanceOrderPred(me));
uint32 x = 1;
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++x, ++itr)
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++x, ++itr)
(*itr)->AI()->SetData(0, x);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_INTRO_ALLIANCE_1);
- events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 2500+17500+9500, 0, PHASE_INTRO_A);
- deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG);
- instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true);
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ _events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 2500+17500+9500, 0, PHASE_INTRO_A);
+ _instance->HandleGameObject(_instance->GetData64(GO_SAURFANG_S_DOOR), true);
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
deathbringer->AI()->DoAction(PHASE_INTRO_A);
break;
}
@@ -813,13 +817,13 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
me->SendMovementFlagUpdate();
me->Relocate(me->GetPositionX(), me->GetPositionY(), 539.2917f);
me->SendMonsterMove(me->GetPositionX(), me->GetPositionY(), 539.2917f, SPLINEFLAG_FALLING, 0, 0.0f);
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr)
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_DESPAWN);
break;
}
case ACTION_INTERRUPT_INTRO:
- events.Reset();
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr)
+ _events.Reset();
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_DESPAWN);
break;
}
@@ -840,8 +844,8 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
{
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
Talk(SAY_INTRO_ALLIANCE_4);
- events.ScheduleEvent(EVENT_INTRO_ALLIANCE_5, 5000, 0, PHASE_INTRO_A);
- if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID))
+ _events.ScheduleEvent(EVENT_INTRO_ALLIANCE_5, 5000, 0, PHASE_INTRO_A);
+ if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
deathbringer->AI()->DoAction(ACTION_CONTINUE_INTRO);
}
else if (type == WAYPOINT_MOTION_TYPE && id == POINT_EXIT)
@@ -854,10 +858,10 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- events.Update(diff);
- while (uint32 eventId = events.ExecuteEvent())
+ _events.Update(diff);
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
@@ -867,7 +871,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
break;
case EVENT_INTRO_ALLIANCE_5:
Talk(SAY_INTRO_ALLIANCE_5);
- for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr)
+ for (std::list<Creature*>::iterator itr = _guardList.begin(); itr != _guardList.end(); ++itr)
(*itr)->AI()->DoAction(ACTION_CHARGE);
me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE);
break;
@@ -876,21 +880,17 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
}
private:
- EventMap events;
- InstanceScript* instance;
- uint64 deathbringerSaurfangGUID;
- std::list<Creature*> guardList;
+ EventMap _events;
+ InstanceScript* _instance;
+ std::list<Creature*> _guardList;
};
bool OnGossipHello(Player* player, Creature* creature)
{
- if (creature->GetPositionZ() < 530.0f)
- return false;
-
InstanceScript* instance = creature->GetInstanceScript();
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
{
- player->ADD_GOSSIP_ITEM(0, "Let it begin...", 631, -ACTION_START_EVENT+1);
+ player->ADD_GOSSIP_ITEM(0, "Let it begin...", 631, -ACTION_START_EVENT + 1);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
}
@@ -901,7 +901,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
{
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
- if (action == -ACTION_START_EVENT+1)
+ if (action == -ACTION_START_EVENT + 1)
creature->AI()->DoAction(ACTION_START_EVENT);
return true;
@@ -922,13 +922,13 @@ class npc_saurfang_event : public CreatureScript
{
npc_saurfang_eventAI(Creature* creature) : ScriptedAI(creature)
{
- npcIndex = 0;
+ _index = 0;
}
void SetData(uint32 type, uint32 data)
{
ASSERT(!type && data && data < 6);
- npcIndex = data;
+ _index = data;
}
void SpellHit(Unit* /*caster*/, SpellEntry const* spell)
@@ -936,20 +936,20 @@ class npc_saurfang_event : public CreatureScript
if (spell->Id == SPELL_GRIP_OF_AGONY)
{
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
- me->GetMotionMaster()->MovePoint(POINT_CHOKE, chokePos[npcIndex]);
+ me->GetMotionMaster()->MovePoint(POINT_CHOKE, chokePos[_index]);
}
}
- void DoAction(const int32 action)
+ void DoAction(int32 const action)
{
- if (action == ACTION_CHARGE && npcIndex)
- me->GetMotionMaster()->MoveCharge(chargePos[npcIndex].GetPositionX(), chargePos[npcIndex].GetPositionY(), chargePos[npcIndex].GetPositionZ(), 13.0f, POINT_CHARGE);
+ if (action == ACTION_CHARGE && _index)
+ me->GetMotionMaster()->MoveCharge(chargePos[_index].GetPositionX(), chargePos[_index].GetPositionY(), chargePos[_index].GetPositionZ(), 13.0f, POINT_CHARGE);
else if (action == ACTION_DESPAWN)
me->DespawnOrUnsummon();
}
private:
- uint32 npcIndex;
+ uint32 _index;
};
CreatureAI* GetAI(Creature* creature) const
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index e7dfe62184e..4cbbe46956b 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -56,8 +56,8 @@ enum Spells
#define PUNGENT_BLIGHT_HELPER RAID_MODE<uint32>(69195, 71219, 73031, 73032)
#define INOCULATED_HELPER RAID_MODE<uint32>(69291, 72101, 72102, 72103)
-static const uint32 gaseousBlight[3] = {69157, 69162, 69164};
-static const uint32 gaseousBlightVisual[3] = {69126, 69152, 69154};
+uint32 const gaseousBlight[3] = {69157, 69162, 69164};
+uint32 const gaseousBlightVisual[3] = {69126, 69152, 69154};
enum Events
{
@@ -82,24 +82,25 @@ class boss_festergut : public CreatureScript
{
boss_festergutAI(Creature* creature) : BossAI(creature, DATA_FESTERGUT)
{
- maxInoculatedStack = 0;
- inhaleCounter = 0;
- gasDummyGUID = 0;
+ _maxInoculatedStack = 0;
+ _inhaleCounter = 0;
+ _gasDummyGUID = 0;
}
void Reset()
{
_Reset();
+ me->SetReactState(REACT_DEFENSIVE);
events.ScheduleEvent(EVENT_BERSERK, 300000);
events.ScheduleEvent(EVENT_INHALE_BLIGHT, urand(25000, 30000));
events.ScheduleEvent(EVENT_GAS_SPORE, urand(20000, 25000));
events.ScheduleEvent(EVENT_GASTRIC_BLOAT, urand(12500, 15000));
- maxInoculatedStack = 0;
- inhaleCounter = 0;
+ _maxInoculatedStack = 0;
+ _inhaleCounter = 0;
me->RemoveAurasDueToSpell(SPELL_BERSERK2);
if (Creature* gasDummy = me->FindNearestCreature(NPC_GAS_DUMMY, 100.0f, true))
{
- gasDummyGUID = gasDummy->GetGUID();
+ _gasDummyGUID = gasDummy->GetGUID();
for (uint8 i = 0; i < 3; ++i)
{
me->RemoveAurasDueToSpell(gaseousBlight[i]);
@@ -120,7 +121,7 @@ class boss_festergut : public CreatureScript
me->setActive(true);
Talk(SAY_AGGRO);
if (Creature* gasDummy = me->FindNearestCreature(NPC_GAS_DUMMY, 100.0f, true))
- gasDummyGUID = gasDummy->GetGUID();
+ _gasDummyGUID = gasDummy->GetGUID();
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
professor->AI()->DoAction(ACTION_FESTERGUT_COMBAT);
DoZoneInCombat();
@@ -133,7 +134,7 @@ class boss_festergut : public CreatureScript
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
professor->AI()->DoAction(ACTION_FESTERGUT_DEATH);
- _RemoveBlight();
+ RemoveBlight();
}
void JustReachedHome()
@@ -155,18 +156,13 @@ class boss_festergut : public CreatureScript
Talk(SAY_KILL);
}
- void MoveInLineOfSight(Unit* /*who*/)
- {
- // don't enter combat
- }
-
void SpellHitTarget(Unit* target, SpellEntry const* spell)
{
if (spell->Id == PUNGENT_BLIGHT_HELPER)
target->RemoveAurasDueToSpell(INOCULATED_HELPER);
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim() || !CheckInRoom())
return;
@@ -182,13 +178,13 @@ class boss_festergut : public CreatureScript
{
case EVENT_INHALE_BLIGHT:
{
- _RemoveBlight();
- if (inhaleCounter == 3)
+ RemoveBlight();
+ if (_inhaleCounter == 3)
{
Talk(EMOTE_WARN_PUNGENT_BLIGHT);
Talk(SAY_PUNGENT_BLIGHT);
DoCast(me, SPELL_PUNGENT_BLIGHT);
- inhaleCounter = 0;
+ _inhaleCounter = 0;
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
professor->AI()->DoAction(ACTION_FESTERGUT_GAS);
events.RescheduleEvent(EVENT_GAS_SPORE, urand(20000, 25000));
@@ -197,10 +193,11 @@ class boss_festergut : public CreatureScript
{
DoCast(me, SPELL_INHALE_BLIGHT);
// just cast and dont bother with target, conditions will handle it
- ++inhaleCounter;
- if (inhaleCounter < 3)
- me->CastSpell(me, gaseousBlight[inhaleCounter], true, NULL, NULL, me->GetGUID());
+ ++_inhaleCounter;
+ if (_inhaleCounter < 3)
+ me->CastSpell(me, gaseousBlight[_inhaleCounter], true, NULL, NULL, me->GetGUID());
}
+
events.ScheduleEvent(EVENT_INHALE_BLIGHT, urand(33500, 35000));
break;
}
@@ -243,21 +240,21 @@ class boss_festergut : public CreatureScript
void SetData(uint32 type, uint32 data)
{
- if (type == DATA_INOCULATED_STACK && data > maxInoculatedStack)
- maxInoculatedStack = data;
+ if (type == DATA_INOCULATED_STACK && data > _maxInoculatedStack)
+ _maxInoculatedStack = data;
}
uint32 GetData(uint32 type)
{
if (type == DATA_INOCULATED_STACK)
- return uint32(maxInoculatedStack);
+ return uint32(_maxInoculatedStack);
return 0;
}
- void _RemoveBlight()
+ void RemoveBlight()
{
- if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, gasDummyGUID))
+ if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, _gasDummyGUID))
for (uint8 i = 0; i < 3; ++i)
{
me->RemoveAurasDueToSpell(gaseousBlight[i]);
@@ -266,9 +263,9 @@ class boss_festergut : public CreatureScript
}
private:
- uint64 gasDummyGUID;
- uint32 maxInoculatedStack;
- uint32 inhaleCounter;
+ uint64 _gasDummyGUID;
+ uint32 _maxInoculatedStack;
+ uint32 _inhaleCounter;
};
CreatureAI* GetAI(Creature* creature) const
@@ -286,38 +283,38 @@ class npc_stinky_icc : public CreatureScript
{
npc_stinky_iccAI(Creature* creature) : ScriptedAI(creature)
{
- instance = creature->GetInstanceScript();
+ _instance = creature->GetInstanceScript();
}
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
- events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(3000, 7000));
+ _events.Reset();
+ _events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
+ _events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(3000, 7000));
DoCast(me, SPELL_PLAGUE_STENCH);
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DECIMATE:
DoCastVictim(SPELL_DECIMATE);
- events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
+ _events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
break;
case EVENT_MORTAL_WOUND:
DoCastVictim(SPELL_MORTAL_WOUND);
- events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(10000, 12500));
+ _events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(10000, 12500));
break;
default:
break;
@@ -329,14 +326,14 @@ class npc_stinky_icc : public CreatureScript
void JustDied(Unit* /*who*/)
{
- if (Creature* festergut = me->GetCreature(*me, instance->GetData64(DATA_FESTERGUT)))
+ if (Creature* festergut = me->GetCreature(*me, _instance->GetData64(DATA_FESTERGUT)))
if (festergut->isAlive())
festergut->AI()->Talk(SAY_STINKY_DEAD);
}
private:
- EventMap events;
- InstanceScript* instance;
+ EventMap _events;
+ InstanceScript* _instance;
};
CreatureAI* GetAI(Creature* creature) const
@@ -389,20 +386,21 @@ class spell_festergut_gastric_bloat : public SpellScriptLoader
{
PrepareSpellScript(spell_festergut_gastric_bloat_SpellScript);
+ bool Validate(SpellEntry const* spell)
+ {
+ if (!sSpellStore.LookupEntry(SPELL_GASTRIC_EXPLOSION))
+ return false;
+ return true;
+ }
+
void HandleScript(SpellEffIndex /*effIndex*/)
{
Aura const* aura = GetHitUnit()->GetAura(GetSpellInfo()->Id);
if (!(aura && aura->GetStackAmount() == 10))
return;
- SpellEntry const* spellInfo = sSpellStore.LookupEntry(SPELL_GASTRIC_EXPLOSION);
- if (!spellInfo)
- return;
-
- // Get Gastric Explosion id for our difficulty
- spellInfo = sSpellMgr->GetSpellForDifficultyFromSpell(spellInfo, GetCaster());
GetHitUnit()->RemoveAurasDueToSpell(GetSpellInfo()->Id);
- GetHitUnit()->CastSpell(GetHitUnit(), spellInfo, true);
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_GASTRIC_EXPLOSION, true);
}
void Register()
@@ -426,14 +424,22 @@ class spell_festergut_blighted_spores : public SpellScriptLoader
{
PrepareAuraScript(spell_festergut_blighted_spores_AuraScript);
+ bool Validate(SpellEntry const* /*spell*/)
+ {
+ if (!sSpellStore.LookupEntry(SPELL_INOCULATED))
+ return false;
+ return true;
+ }
+
void ExtraEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- if (!GetCaster()->IsAIEnabled || GetCaster()->GetTypeId() != TYPEID_UNIT)
+ if (GetCaster()->GetTypeId() != TYPEID_UNIT)
return;
- uint32 inoculateId = CAST_AI(ScriptedAI, GetCaster()->ToCreature()->AI())->INOCULATED_HELPER;
+ SpellEntry const* inoculated = sSpellStore.LookupEntry(SPELL_INOCULATED);
+ inoculated = sSpellMgr->GetSpellForDifficultyFromSpell(inoculated, GetCaster());
uint32 currStack = 0;
- if (Aura const* inoculate = GetTarget()->GetAura(inoculateId))
+ if (Aura const* inoculate = GetTarget()->GetAura(inoculated->Id))
currStack = inoculate->GetStackAmount();
GetTarget()->CastSpell(GetTarget(), SPELL_INOCULATED, true);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index f7b9fdf350e..048cabdccfc 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -104,7 +104,7 @@ enum Spells
SPELL_SUNDER_ARMOR = 65936,
};
-enum Events
+enum EventTypes
{
// Lady Deathwhisper
EVENT_INTRO_2 = 1,
@@ -176,13 +176,14 @@ enum DeprogrammingData
POINT_DESPAWN = 384721,
};
-#define NPC_DARNAVAN RAID_MODE<uint32>(NPC_DARNAVAN_10, NPC_DARNAVAN_25, NPC_DARNAVAN_10, NPC_DARNAVAN_25)
+#define NPC_DARNAVAN RAID_MODE<uint32>(NPC_DARNAVAN_10, NPC_DARNAVAN_25, NPC_DARNAVAN_10, NPC_DARNAVAN_25)
#define NPC_DARNAVAN_CREDIT RAID_MODE<uint32>(NPC_DARNAVAN_CREDIT_10, NPC_DARNAVAN_CREDIT_25, NPC_DARNAVAN_CREDIT_10, NPC_DARNAVAN_CREDIT_25)
#define QUEST_DEPROGRAMMING RAID_MODE<uint32>(QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25, QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25)
-static const uint32 addEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT};
+uint32 const SummonEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT};
+#define GUID_CULTIST 1
-static const Position addSpawnPos[7] =
+Position const SummonPositions[7] =
{
{-578.7066f, 2154.167f, 51.01529f, 1.692969f}, // 1 Left Door 1 (Cult Fanatic)
{-598.9028f, 2155.005f, 51.01530f, 1.692969f}, // 2 Left Door 2 (Cult Adherent)
@@ -196,15 +197,16 @@ static const Position addSpawnPos[7] =
class DaranavanMoveEvent : public BasicEvent
{
public:
- DaranavanMoveEvent(Creature& _darnavan) : darnavan(_darnavan) { }
+ DaranavanMoveEvent(Creature& darnavan) : _darnavan(darnavan) { }
- bool Execute(uint64 , uint32 )
+ bool Execute(uint64 /*time*/, uint32 /*diff*/)
{
- darnavan.GetMotionMaster()->MovePoint(POINT_DESPAWN, addSpawnPos[6]);
+ _darnavan.GetMotionMaster()->MovePoint(POINT_DESPAWN, SummonPositions[6]);
return true;
}
- Creature& darnavan;
+ private:
+ Creature& _darnavan;
};
class boss_lady_deathwhisper : public CreatureScript
@@ -214,10 +216,9 @@ class boss_lady_deathwhisper : public CreatureScript
struct boss_lady_deathwhisperAI : public BossAI
{
- boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER)
+ boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER),
+ _dominateMindCount(RAID_MODE<uint8>(0, 1, 1, 3)), _introDone(false)
{
- introDone = false;
- dominateMindCount = RAID_MODE<uint8>(0, 1, 1, 3);
}
void Reset()
@@ -226,9 +227,9 @@ class boss_lady_deathwhisper : public CreatureScript
me->SetPower(POWER_MANA, me->GetMaxPower(POWER_MANA));
me->SetLastManaUse(0xFFFFFFFF); // hacky, but no other way atm to prevent mana regen
events.SetPhase(PHASE_ONE);
- addWaveCounter = 0;
- nextVengefulShadeTarget = 0;
- darnavanGUID = 0;
+ _waveCounter = 0;
+ _nextVengefulShadeTargetGUID = 0;
+ _darnavanGUID = 0;
DoCast(me, SPELL_SHADOW_CHANNELING);
me->RemoveAurasDueToSpell(SPELL_BERSERK);
me->RemoveAurasDueToSpell(SPELL_MANA_BARRIER);
@@ -238,10 +239,10 @@ class boss_lady_deathwhisper : public CreatureScript
void MoveInLineOfSight(Unit* who)
{
- if (!introDone && me->IsWithinDistInMap(who, 100.0f))
+ if (!_introDone && me->IsWithinDistInMap(who, 100.0f))
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- introDone = true;
+ _introDone = true;
Talk(SAY_INTRO_1);
events.SetPhase(PHASE_INTRO);
events.ScheduleEvent(EVENT_INTRO_2, 11000, 0, PHASE_INTRO);
@@ -309,7 +310,7 @@ class boss_lady_deathwhisper : public CreatureScript
if (livingAddEntries.size() >= 5)
instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_FULL_HOUSE, 0, me);
- if (Creature* darnavan = ObjectAccessor::GetCreature(*me, darnavanGUID))
+ if (Creature* darnavan = ObjectAccessor::GetCreature(*me, _darnavanGUID))
{
if (darnavan->isAlive())
{
@@ -342,10 +343,10 @@ class boss_lady_deathwhisper : public CreatureScript
instance->SetBossState(DATA_LADY_DEATHWHISPER, FAIL);
summons.DespawnAll();
- if (Creature* darnavan = ObjectAccessor::GetCreature(*me, darnavanGUID))
+ if (Creature* darnavan = ObjectAccessor::GetCreature(*me, _darnavanGUID))
{
darnavan->DespawnOrUnsummon();
- darnavanGUID = 0;
+ _darnavanGUID = 0;
}
}
@@ -355,15 +356,15 @@ class boss_lady_deathwhisper : public CreatureScript
Talk(SAY_KILL);
}
- void DamageTaken(Unit* /*damageDealer*/, uint32& uiDamage)
+ void DamageTaken(Unit* /*damageDealer*/, uint32& damage)
{
// phase transition
- if (events.GetPhaseMask() & PHASE_ONE_MASK && uiDamage > me->GetPower(POWER_MANA))
+ if (events.GetPhaseMask() & PHASE_ONE_MASK && damage > me->GetPower(POWER_MANA))
{
Talk(SAY_PHASE_2);
Talk(EMOTE_PHASE_2);
DoStartMovement(me->getVictim());
- uiDamage -= me->GetPower(POWER_MANA);
+ damage -= me->GetPower(POWER_MANA);
me->SetPower(POWER_MANA, 0);
me->RemoveAurasDueToSpell(SPELL_MANA_BARRIER);
events.SetPhase(PHASE_TWO);
@@ -384,27 +385,27 @@ class boss_lady_deathwhisper : public CreatureScript
void JustSummoned(Creature* summon)
{
if (summon->GetEntry() == NPC_DARNAVAN)
- darnavanGUID = summon->GetGUID();
+ _darnavanGUID = summon->GetGUID();
else
- summons.push_back(summon->GetGUID());
+ summons.Summon(summon);
Unit* target = NULL;
if (summon->GetEntry() == NPC_VENGEFUL_SHADE)
{
- target = ObjectAccessor::GetUnit(*me, nextVengefulShadeTarget); // Vengeful Shade
- nextVengefulShadeTarget = 0;
+ target = ObjectAccessor::GetUnit(*me, _nextVengefulShadeTargetGUID); // Vengeful Shade
+ _nextVengefulShadeTargetGUID = 0;
}
else
target = SelectTarget(SELECT_TARGET_RANDOM); // Wave adds
summon->AI()->AttackStart(target); // CAN be NULL
if (summon->GetEntry() == NPC_REANIMATED_FANATIC)
- summon->AI()->DoCast(summon, SPELL_FANATIC_S_DETERMINATION);
+ summon->CastSpell(summon, SPELL_FANATIC_S_DETERMINATION, true);
else if (summon->GetEntry() == NPC_REANIMATED_ADHERENT)
- summon->AI()->DoCast(summon, SPELL_ADHERENT_S_DETERMINATION);
+ summon->CastSpell(summon, SPELL_ADHERENT_S_DETERMINATION, true);
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if ((!UpdateVictim() && !(events.GetPhaseMask() & PHASE_INTRO_MASK)) || !CheckInRoom())
return;
@@ -446,7 +447,7 @@ class boss_lady_deathwhisper : public CreatureScript
break;
case EVENT_DOMINATE_MIND_H:
Talk(SAY_DOMINATE_MIND);
- for (uint8 i = 0; i < dominateMindCount; i++)
+ for (uint8 i = 0; i < _dominateMindCount; i++)
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_DOMINATE_MIND_H))
DoCast(target, SPELL_DOMINATE_MIND_H);
events.ScheduleEvent(EVENT_DOMINATE_MIND_H, urand(40000, 45000));
@@ -482,7 +483,7 @@ class boss_lady_deathwhisper : public CreatureScript
case EVENT_P2_SUMMON_SHADE:
if (Unit* shadeTarget = SelectTarget(SELECT_TARGET_RANDOM, 1))
{
- nextVengefulShadeTarget = shadeTarget->GetGUID();
+ _nextVengefulShadeTargetGUID = shadeTarget->GetGUID();
DoCast(shadeTarget, SPELL_SUMMON_SHADE);
}
events.ScheduleEvent(EVENT_P2_SUMMON_SHADE, urand(18000, 23000), 0, PHASE_TWO);
@@ -508,22 +509,26 @@ class boss_lady_deathwhisper : public CreatureScript
// summoning function for first phase
void SummonWaveP1()
{
- uint8 addIndex = addWaveCounter & 1;
+ uint8 addIndex = _waveCounter & 1;
uint8 addIndexOther = uint8(addIndex ^ 1);
- if (addWaveCounter || !sPoolMgr->IsSpawnedObject<Quest>(QUEST_DEPROGRAMMING))
- _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3]);
+
+ // Summon first add, replace it with Darnavan if weekly quest is active
+ if (_waveCounter || !sPoolMgr->IsSpawnedObject<Quest>(QUEST_DEPROGRAMMING))
+ Summon(SummonEntries[addIndex], SummonPositions[addIndex * 3]);
else
- _SummonAdd(NPC_DARNAVAN, addSpawnPos[addIndex*3]);
- _SummonAdd(addEntries[addIndexOther], addSpawnPos[addIndex*3+1]);
- _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3+2]);
+ Summon(NPC_DARNAVAN, SummonPositions[addIndex * 3]);
+
+ Summon(SummonEntries[addIndexOther], SummonPositions[addIndex * 3 + 1]);
+ Summon(SummonEntries[addIndex], SummonPositions[addIndex * 3 + 2]);
if (Is25ManRaid())
{
- _SummonAdd(addEntries[addIndexOther], addSpawnPos[addIndexOther*3]);
- _SummonAdd(addEntries[addIndex], addSpawnPos[addIndexOther*3+1]);
- _SummonAdd(addEntries[addIndexOther], addSpawnPos[addIndexOther*3+2]);
- _SummonAdd(addEntries[urand(0, 1)], addSpawnPos[6]);
+ Summon(SummonEntries[addIndexOther], SummonPositions[addIndexOther * 3]);
+ Summon(SummonEntries[addIndex], SummonPositions[addIndexOther * 3 + 1]);
+ Summon(SummonEntries[addIndexOther], SummonPositions[addIndexOther * 3 + 2]);
+ Summon(SummonEntries[urand(0, 1)], SummonPositions[6]);
}
- ++addWaveCounter;
+
+ ++_waveCounter;
}
// summoning function for second phase
@@ -531,37 +536,41 @@ class boss_lady_deathwhisper : public CreatureScript
{
if (Is25ManRaid())
{
- uint8 addIndex = addWaveCounter & 1;
- _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3]);
- _SummonAdd(addEntries[addIndex ^ 1], addSpawnPos[addIndex*3+1]);
- _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3+2]);
+ uint8 addIndex = _waveCounter & 1;
+ Summon(SummonEntries[addIndex], SummonPositions[addIndex * 3]);
+ Summon(SummonEntries[addIndex ^ 1], SummonPositions[addIndex * 3 + 1]);
+ Summon(SummonEntries[addIndex], SummonPositions[addIndex * 3+ 2]);
}
else
- _SummonAdd(addEntries[urand(0, 1)], addSpawnPos[6]);
- ++addWaveCounter;
+ Summon(SummonEntries[urand(0, 1)], SummonPositions[6]);
+
+ ++_waveCounter;
}
// helper for summoning wave mobs
- void _SummonAdd(uint32 entry, const Position& pos)
+ void Summon(uint32 entry, const Position& pos)
{
if (TempSummon* summon = me->SummonCreature(entry, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000))
summon->AI()->DoCast(summon, SPELL_TELEPORT_VISUAL);
}
- void AddToReanimationQueue(Unit* summon)
+ void SetGUID(uint64 const& guid, int32 id/* = 0*/)
{
- reanimationQueue.push_back(summon->GetGUID());
+ if (id != GUID_CULTIST)
+ return;
+
+ _reanimationQueue.push_back(guid);
events.ScheduleEvent(EVENT_P1_REANIMATE_CULTIST, 3000, 0, PHASE_ONE);
}
void ReanimateCultist()
{
- if (reanimationQueue.empty())
+ if (_reanimationQueue.empty())
return;
- uint64 cultistGUID = reanimationQueue.front();
+ uint64 cultistGUID = _reanimationQueue.front();
Creature* cultist = ObjectAccessor::GetCreature(*me, cultistGUID);
- reanimationQueue.pop_front();
+ _reanimationQueue.pop_front();
if (!cultist)
return;
@@ -590,19 +599,19 @@ class boss_lady_deathwhisper : public CreatureScript
if (summons.empty())
return;
- std::list<Creature*> tmpList;
+ std::list<Creature*> temp;
for (SummonList::iterator itr = summons.begin(); itr != summons.end(); ++itr)
if (Creature* cre = ObjectAccessor::GetCreature(*me, *itr))
if (cre->isAlive() && (cre->GetEntry() == NPC_CULT_FANATIC || cre->GetEntry() == NPC_CULT_ADHERENT))
- tmpList.push_back(cre);
+ temp.push_back(cre);
// noone to empower
- if (tmpList.empty())
+ if (temp.empty())
return;
// select random cultist
- std::list<Creature*>::iterator cultistItr = tmpList.begin();
- std::advance(cultistItr, urand(0, tmpList.size()-1));
+ std::list<Creature*>::iterator cultistItr = temp.begin();
+ std::advance(cultistItr, urand(0, temp.size()-1));
Creature* cultist = *cultistItr;
DoCast(cultist, cultist->GetEntry() == NPC_CULT_FANATIC ? SPELL_DARK_TRANSFORMATION_T : SPELL_DARK_EMPOWERMENT_T, true);
@@ -610,12 +619,12 @@ class boss_lady_deathwhisper : public CreatureScript
}
private:
- uint64 nextVengefulShadeTarget;
- uint64 darnavanGUID;
- std::deque<uint64> reanimationQueue;
- uint32 addWaveCounter;
- uint8 dominateMindCount;
- bool introDone;
+ uint64 _nextVengefulShadeTargetGUID;
+ uint64 _darnavanGUID;
+ std::deque<uint64> _reanimationQueue;
+ uint32 _waveCounter;
+ uint8 const _dominateMindCount;
+ bool _introDone;
};
CreatureAI* GetAI(Creature* creature) const
@@ -637,12 +646,12 @@ class npc_cult_fanatic : public CreatureScript
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_FANATIC_NECROTIC_STRIKE, urand(10000, 12000));
- events.ScheduleEvent(EVENT_FANATIC_SHADOW_CLEAVE, urand(14000, 16000));
- events.ScheduleEvent(EVENT_FANATIC_VAMPIRIC_MIGHT, urand(20000, 27000));
+ Events.Reset();
+ Events.ScheduleEvent(EVENT_FANATIC_NECROTIC_STRIKE, urand(10000, 12000));
+ Events.ScheduleEvent(EVENT_FANATIC_SHADOW_CLEAVE, urand(14000, 16000));
+ Events.ScheduleEvent(EVENT_FANATIC_VAMPIRIC_MIGHT, urand(20000, 27000));
if (me->GetEntry() == NPC_CULT_FANATIC)
- events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(18000, 32000));
+ Events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(18000, 32000));
}
void SpellHit(Unit* /*caster*/, SpellEntry const* spell)
@@ -651,41 +660,41 @@ class npc_cult_fanatic : public CreatureScript
me->UpdateEntry(NPC_DEFORMED_FANATIC);
else if (spell->Id == SPELL_DARK_TRANSFORMATION_T)
{
- events.CancelEvent(EVENT_CULTIST_DARK_MARTYRDOM);
+ Events.CancelEvent(EVENT_CULTIST_DARK_MARTYRDOM);
me->InterruptNonMeleeSpells(true);
DoCast(me, SPELL_DARK_TRANSFORMATION);
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
- events.Update(diff);
+ Events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = Events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_FANATIC_NECROTIC_STRIKE:
DoCastVictim(SPELL_NECROTIC_STRIKE);
- events.ScheduleEvent(SPELL_NECROTIC_STRIKE, urand(11000, 13000));
+ Events.ScheduleEvent(SPELL_NECROTIC_STRIKE, urand(11000, 13000));
break;
case EVENT_FANATIC_SHADOW_CLEAVE:
DoCastVictim(SPELL_SHADOW_CLEAVE);
- events.ScheduleEvent(EVENT_FANATIC_SHADOW_CLEAVE, urand(9500, 11000));
+ Events.ScheduleEvent(EVENT_FANATIC_SHADOW_CLEAVE, urand(9500, 11000));
break;
case EVENT_FANATIC_VAMPIRIC_MIGHT:
DoCast(me, SPELL_VAMPIRIC_MIGHT);
- events.ScheduleEvent(EVENT_FANATIC_VAMPIRIC_MIGHT, urand(20000, 27000));
+ Events.ScheduleEvent(EVENT_FANATIC_VAMPIRIC_MIGHT, urand(20000, 27000));
break;
case EVENT_CULTIST_DARK_MARTYRDOM:
DoCast(me, SPELL_DARK_MARTYRDOM_FANATIC);
- events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(16000, 21000));
+ Events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(16000, 21000));
break;
}
}
@@ -693,8 +702,8 @@ class npc_cult_fanatic : public CreatureScript
DoMeleeAttackIfReady();
}
- private:
- EventMap events;
+ protected:
+ EventMap Events;
};
CreatureAI* GetAI(Creature* creature) const
@@ -714,13 +723,13 @@ class npc_cult_adherent : public CreatureScript
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_ADHERENT_FROST_FEVER, urand(10000, 12000));
- events.ScheduleEvent(EVENT_ADHERENT_DEATHCHILL, urand(14000, 16000));
- events.ScheduleEvent(EVENT_ADHERENT_CURSE_OF_TORPOR, urand(14000, 16000));
- events.ScheduleEvent(EVENT_ADHERENT_SHORUD_OF_THE_OCCULT, urand(32000, 39000));
+ Events.Reset();
+ Events.ScheduleEvent(EVENT_ADHERENT_FROST_FEVER, urand(10000, 12000));
+ Events.ScheduleEvent(EVENT_ADHERENT_DEATHCHILL, urand(14000, 16000));
+ Events.ScheduleEvent(EVENT_ADHERENT_CURSE_OF_TORPOR, urand(14000, 16000));
+ Events.ScheduleEvent(EVENT_ADHERENT_SHORUD_OF_THE_OCCULT, urand(32000, 39000));
if (me->GetEntry() == NPC_CULT_ADHERENT)
- events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(18000, 32000));
+ Events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(18000, 32000));
}
void SpellHit(Unit* /*caster*/, SpellEntry const* spell)
@@ -729,49 +738,49 @@ class npc_cult_adherent : public CreatureScript
me->UpdateEntry(NPC_EMPOWERED_ADHERENT);
else if (spell->Id == SPELL_DARK_EMPOWERMENT_T)
{
- events.CancelEvent(EVENT_CULTIST_DARK_MARTYRDOM);
+ Events.CancelEvent(EVENT_CULTIST_DARK_MARTYRDOM);
me->InterruptNonMeleeSpells(true);
DoCast(me, SPELL_DARK_EMPOWERMENT);
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
- events.Update(diff);
+ Events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = Events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_ADHERENT_FROST_FEVER:
DoCastVictim(SPELL_FROST_FEVER);
- events.ScheduleEvent(EVENT_ADHERENT_FROST_FEVER, urand(9000, 13000));
+ Events.ScheduleEvent(EVENT_ADHERENT_FROST_FEVER, urand(9000, 13000));
break;
case EVENT_ADHERENT_DEATHCHILL:
if (me->GetEntry() == NPC_EMPOWERED_ADHERENT)
DoCastVictim(SPELL_DEATHCHILL_BLAST);
else
DoCastVictim(SPELL_DEATHCHILL_BOLT);
- events.ScheduleEvent(EVENT_ADHERENT_DEATHCHILL, urand(9000, 13000));
+ Events.ScheduleEvent(EVENT_ADHERENT_DEATHCHILL, urand(9000, 13000));
break;
case EVENT_ADHERENT_CURSE_OF_TORPOR:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
DoCast(target, SPELL_CURSE_OF_TORPOR);
- events.ScheduleEvent(EVENT_ADHERENT_CURSE_OF_TORPOR, urand(9000, 13000));
+ Events.ScheduleEvent(EVENT_ADHERENT_CURSE_OF_TORPOR, urand(9000, 13000));
break;
case EVENT_ADHERENT_SHORUD_OF_THE_OCCULT:
DoCast(me, SPELL_SHORUD_OF_THE_OCCULT);
- events.ScheduleEvent(EVENT_ADHERENT_SHORUD_OF_THE_OCCULT, urand(27000, 32000));
+ Events.ScheduleEvent(EVENT_ADHERENT_SHORUD_OF_THE_OCCULT, urand(27000, 32000));
break;
case EVENT_CULTIST_DARK_MARTYRDOM:
DoCast(me, SPELL_DARK_MARTYRDOM_ADHERENT);
- events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(16000, 21000));
+ Events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(16000, 21000));
break;
}
}
@@ -779,13 +788,13 @@ class npc_cult_adherent : public CreatureScript
DoMeleeAttackIfReady();
}
- private:
- EventMap events;
+ protected:
+ EventMap Events;
};
- CreatureAI* GetAI(Creature* pCreature) const
+ CreatureAI* GetAI(Creature* creature) const
{
- return GetIcecrownCitadelAI<npc_cult_adherentAI>(pCreature);
+ return GetIcecrownCitadelAI<npc_cult_adherentAI>(creature);
}
};
@@ -842,18 +851,18 @@ class npc_darnavan : public CreatureScript
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, 10000);
- events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, urand(20000, 25000));
- events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, urand(25000, 30000));
- events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, urand(5000, 8000));
- canCharge = true;
- canShatter = true;
+ _events.Reset();
+ _events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, 10000);
+ _events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, urand(20000, 25000));
+ _events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, urand(25000, 30000));
+ _events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, urand(5000, 8000));
+ _canCharge = true;
+ _canShatter = true;
}
void JustDied(Unit* killer)
{
- events.Reset();
+ _events.Reset();
if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself())
{
if (Group* group = owner->GetGroup())
@@ -871,6 +880,7 @@ class npc_darnavan : public CreatureScript
{
if (type != POINT_MOTION_TYPE || id != POINT_DESPAWN)
return;
+
me->DespawnOrUnsummon();
}
@@ -884,52 +894,52 @@ class npc_darnavan : public CreatureScript
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- if (canShatter && me->getVictim()->IsImmunedToDamage(SPELL_SCHOOL_MASK_NORMAL))
+ if (_canShatter && me->getVictim()->IsImmunedToDamage(SPELL_SCHOOL_MASK_NORMAL))
{
DoCastVictim(SPELL_SHATTERING_THROW);
- canShatter = false;
- events.ScheduleEvent(EVENT_DARNAVAN_SHATTERING_THROW, 30000);
+ _canShatter = false;
+ _events.ScheduleEvent(EVENT_DARNAVAN_SHATTERING_THROW, 30000);
return;
}
- if (canCharge && !me->IsWithinMeleeRange(me->getVictim()))
+ if (_canCharge && !me->IsWithinMeleeRange(me->getVictim()))
{
DoCastVictim(SPELL_CHARGE);
- canCharge = false;
- events.ScheduleEvent(EVENT_DARNAVAN_CHARGE, 20000);
+ _canCharge = false;
+ _events.ScheduleEvent(EVENT_DARNAVAN_CHARGE, 20000);
return;
}
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DARNAVAN_BLADESTORM:
DoCast(SPELL_BLADESTORM);
- events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, urand(90000, 100000));
+ _events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, urand(90000, 100000));
break;
case EVENT_DARNAVAN_CHARGE:
- canCharge = true;
+ _canCharge = true;
break;
case EVENT_DARNAVAN_INTIMIDATING_SHOUT:
DoCast(SPELL_INTIMIDATING_SHOUT);
- events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, urand(90000, 120000));
+ _events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, urand(90000, 120000));
break;
case EVENT_DARNAVAN_MORTAL_STRIKE:
DoCastVictim(SPELL_MORTAL_STRIKE);
- events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, urand(15000, 30000));
+ _events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, urand(15000, 30000));
break;
case EVENT_DARNAVAN_SHATTERING_THROW:
- canShatter = true;
+ _canShatter = true;
break;
case EVENT_DARNAVAN_SUNDER_ARMOR:
DoCastVictim(SPELL_SUNDER_ARMOR);
- events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, urand(3000, 7000));
+ _events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, urand(3000, 7000));
break;
}
}
@@ -938,9 +948,9 @@ class npc_darnavan : public CreatureScript
}
private:
- EventMap events;
- bool canCharge;
- bool canShatter;
+ EventMap _events;
+ bool _canCharge;
+ bool _canShatter;
};
CreatureAI* GetAI(Creature* creature) const
@@ -992,8 +1002,7 @@ class spell_cultist_dark_martyrdom : public SpellScriptLoader
{
if (GetCaster()->isSummon())
if (Unit* owner = GetCaster()->ToTempSummon()->GetSummoner())
- if (owner->GetEntry() == NPC_LADY_DEATHWHISPER)
- CAST_AI(DeathwisperAI, owner->ToCreature()->AI())->AddToReanimationQueue(GetCaster());
+ owner->GetAI()->SetGUID(GetCaster()->GetGUID(), GUID_CULTIST);
GetCaster()->Kill(GetCaster());
GetCaster()->SetDisplayId(uint32(GetCaster()->GetEntry() == NPC_CULT_FANATIC ? 38009 : 38010));
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index e709b3a53e7..be7375b2bd8 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -52,7 +52,7 @@ enum Spells
SPELL_COLDFLAME_SUMMON = 69147,
};
-static const uint32 boneSpikeSummonId[3] = {69062, 72669, 72670};
+uint32 const boneSpikeSummonId[3] = {69062, 72669, 72670};
enum Events
{
@@ -86,17 +86,17 @@ class boss_lord_marrowgar : public CreatureScript
{
boss_lord_marrowgarAI(Creature* creature) : BossAI(creature, DATA_LORD_MARROWGAR)
{
- boneStormDuration = RAID_MODE<uint32>(20000, 30000, 20000, 30000);
- baseSpeed = creature->GetSpeedRate(MOVE_RUN);
- coldflameLastPos.Relocate(creature);
- introDone = false;
- boneSlice = false;
+ _boneStormDuration = RAID_MODE<uint32>(20000, 30000, 20000, 30000);
+ _baseSpeed = creature->GetSpeedRate(MOVE_RUN);
+ _coldflameLastPos.Relocate(creature);
+ _introDone = false;
+ _boneSlice = false;
}
void Reset()
{
_Reset();
- me->SetSpeed(MOVE_RUN, baseSpeed, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed, true);
me->RemoveAurasDueToSpell(SPELL_BONE_STORM);
me->RemoveAurasDueToSpell(SPELL_BERSERK);
events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000);
@@ -137,14 +137,14 @@ class boss_lord_marrowgar : public CreatureScript
void MoveInLineOfSight(Unit* who)
{
- if (!introDone && me->IsWithinDistInMap(who, 70.0f))
+ if (!_introDone && me->IsWithinDistInMap(who, 70.0f))
{
Talk(SAY_ENTER_ZONE);
- introDone = true;
+ _introDone = true;
}
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim() || !CheckInRoom())
return;
@@ -164,7 +164,7 @@ class boss_lord_marrowgar : public CreatureScript
events.ScheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(15000, 20000), EVENT_GROUP_SPECIAL);
break;
case EVENT_COLDFLAME:
- coldflameLastPos.Relocate(me);
+ _coldflameLastPos.Relocate(me);
if (!me->HasAura(SPELL_BONE_STORM))
me->CastCustomSpell(SPELL_COLDFLAME_NORMAL, SPELLVALUE_MAX_TARGETS, 1, me);
else
@@ -172,7 +172,7 @@ class boss_lord_marrowgar : public CreatureScript
events.ScheduleEvent(EVENT_COLDFLAME, 5000, EVENT_GROUP_SPECIAL);
break;
case EVENT_WARN_BONE_STORM:
- boneSlice = false;
+ _boneSlice = false;
Talk(EMOTE_BONE_STORM);
me->FinishSpell(CURRENT_MELEE_SPELL, false);
DoCast(me, SPELL_BONE_STORM);
@@ -182,14 +182,14 @@ class boss_lord_marrowgar : public CreatureScript
break;
case EVENT_BONE_STORM_BEGIN:
if (Aura* pStorm = me->GetAura(SPELL_BONE_STORM))
- pStorm->SetDuration(int32(boneStormDuration));
- me->SetSpeed(MOVE_RUN, baseSpeed*3.0f, true);
+ pStorm->SetDuration(int32(_boneStormDuration));
+ me->SetSpeed(MOVE_RUN, _baseSpeed*3.0f, true);
Talk(SAY_BONE_STORM);
- events.ScheduleEvent(EVENT_BONE_STORM_END, boneStormDuration+1);
+ events.ScheduleEvent(EVENT_BONE_STORM_END, _boneStormDuration+1);
// no break here
case EVENT_BONE_STORM_MOVE:
{
- events.ScheduleEvent(EVENT_BONE_STORM_MOVE, boneStormDuration/3);
+ events.ScheduleEvent(EVENT_BONE_STORM_MOVE, _boneStormDuration/3);
Unit* unit = SelectTarget(SELECT_TARGET_RANDOM, 1);
if (!unit)
unit = SelectTarget(SELECT_TARGET_RANDOM, 0);
@@ -201,14 +201,14 @@ class boss_lord_marrowgar : public CreatureScript
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE)
me->GetMotionMaster()->MovementExpired();
DoStartMovement(me->getVictim());
- me->SetSpeed(MOVE_RUN, baseSpeed, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed, true);
events.CancelEvent(EVENT_BONE_STORM_MOVE);
events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000);
if (!IsHeroic())
events.RescheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(15000, 20000), EVENT_GROUP_SPECIAL);
break;
case EVENT_ENABLE_BONE_SLICE:
- boneSlice = true;
+ _boneSlice = true;
break;
case EVENT_ENRAGE:
DoCast(me, SPELL_BERSERK, true);
@@ -222,7 +222,7 @@ class boss_lord_marrowgar : public CreatureScript
return;
// After 10 seconds since encounter start Bone Slice replaces melee attacks
- if (boneSlice && !me->GetCurrentSpell(CURRENT_MELEE_SPELL))
+ if (_boneSlice && !me->GetCurrentSpell(CURRENT_MELEE_SPELL))
DoCastVictim(SPELL_BONE_SLICE);
DoMeleeAttackIfReady();
@@ -237,17 +237,17 @@ class boss_lord_marrowgar : public CreatureScript
DoStartNoMovement(me->getVictim());
}
- const Position* GetLastColdflamePosition() const
+ Position const* GetLastColdflamePosition() const
{
- return &coldflameLastPos;
+ return &_coldflameLastPos;
}
private:
- Position coldflameLastPos;
- uint32 boneStormDuration;
- float baseSpeed;
- bool introDone;
- bool boneSlice;
+ Position _coldflameLastPos;
+ uint32 _boneStormDuration;
+ float _baseSpeed;
+ bool _introDone;
+ bool _boneSlice;
};
CreatureAI* GetAI(Creature* creature) const
@@ -294,34 +294,36 @@ class npc_coldflame : public CreatureScript
}
else
{
- MarrowgarAI* marrowgarAI = CAST_AI(MarrowgarAI, creOwner->AI());
- Position const* ownerPos = marrowgarAI->GetLastColdflamePosition();
- float ang = me->GetAngle(ownerPos) - static_cast<float>(M_PI);
- MapManager::NormalizeOrientation(ang);
- me->SetOrientation(ang);
- owner->GetNearPosition(pos, 2.5f, 0.0f);
+ if (MarrowgarAI* marrowgarAI = CAST_AI(MarrowgarAI, creOwner->AI()))
+ {
+ Position const* ownerPos = marrowgarAI->GetLastColdflamePosition();
+ float ang = me->GetAngle(ownerPos) - static_cast<float>(M_PI);
+ MapManager::NormalizeOrientation(ang);
+ me->SetOrientation(ang);
+ owner->GetNearPosition(pos, 2.5f, 0.0f);
+ }
}
me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), me->GetPositionZ(), me->GetOrientation());
- events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 200);
+ _events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 200);
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- events.Update(diff);
+ _events.Update(diff);
- if (events.ExecuteEvent() == EVENT_COLDFLAME_TRIGGER)
+ if (_events.ExecuteEvent() == EVENT_COLDFLAME_TRIGGER)
{
Position newPos;
me->GetNearPosition(newPos, 5.5f, 0.0f);
me->NearTeleportTo(newPos.GetPositionX(), newPos.GetPositionY(), me->GetPositionZ(), me->GetOrientation());
DoCast(SPELL_COLDFLAME_SUMMON);
- events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 200);
+ _events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 200);
}
}
private:
- EventMap events;
+ EventMap _events;
};
CreatureAI* GetAI(Creature* creature) const
@@ -337,7 +339,7 @@ class npc_bone_spike : public CreatureScript
struct npc_bone_spikeAI : public Scripted_NoMovementAI
{
- npc_bone_spikeAI(Creature* creature) : Scripted_NoMovementAI(creature), hasTrappedUnit(false)
+ npc_bone_spikeAI(Creature* creature) : Scripted_NoMovementAI(creature), _hasTrappedUnit(false)
{
ASSERT(creature->GetVehicleKit());
}
@@ -361,25 +363,25 @@ class npc_bone_spike : public CreatureScript
{
DoCast(summoner, SPELL_IMPALED);
summoner->CastSpell(me, SPELL_RIDE_VEHICLE, true);
- events.ScheduleEvent(EVENT_FAIL_BONED, 8000);
- hasTrappedUnit = true;
+ _events.ScheduleEvent(EVENT_FAIL_BONED, 8000);
+ _hasTrappedUnit = true;
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- if (!hasTrappedUnit)
+ if (!_hasTrappedUnit)
return;
- events.Update(diff);
+ _events.Update(diff);
- if (events.ExecuteEvent() == EVENT_FAIL_BONED)
+ if (_events.ExecuteEvent() == EVENT_FAIL_BONED)
if (InstanceScript* instance = me->GetInstanceScript())
instance->SetData(DATA_BONED_ACHIEVEMENT, uint32(false));
}
private:
- EventMap events;
- bool hasTrappedUnit;
+ EventMap _events;
+ bool _hasTrappedUnit;
};
CreatureAI* GetAI(Creature* creature) const
@@ -406,7 +408,7 @@ class spell_marrowgar_coldflame : public SpellScriptLoader
count = 4;
for (uint8 i = 0; i < count; ++i)
- caster->CastSpell(caster, uint32(GetEffectValue()+i), true);
+ caster->CastSpell(caster, uint32(GetEffectValue() + i), true);
}
void Register()
@@ -468,12 +470,14 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader
for (uint8 i = 0; i < boneSpikeCount; ++i)
{
// select any unit but not the tank
- Unit* target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true, -SPELL_IMPALED);
+ Unit* target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 1, 150.0f, true, -SPELL_IMPALED);
// try the tank only in first iteration
if (!target && !i)
- target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_IMPALED);
+ target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 0, 150.0f, true, -SPELL_IMPALED);
+
if (!target)
return;
+
target->CastCustomSpell(boneSpikeSummonId[i], SPELLVALUE_BASE_POINT0, 0, target, true);
}
@@ -504,12 +508,7 @@ class spell_marrowgar_bone_storm : public SpellScriptLoader
void RecalculateDamage(SpellEffIndex /*effIndex*/)
{
- float distance = GetHitUnit()->GetExactDist2d(GetCaster());
- if (distance < 5.0f)
- return;
-
- float distVar = distance >= 40.0f ? 4 : (10.0f/3.0f);
- SetHitDamage(int32(GetHitDamage() * distVar / distance));
+ SetHitDamage(int32(GetHitDamage() / sqrtf(logf(GetHitUnit()->GetExactDist2d(GetCaster())))));
}
void Register()
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 7ef59bb9565..e39eb7d775d 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -147,11 +147,12 @@ enum Points
POINT_TABLE = 366780,
};
-static const Position festergutWatchPos = {4324.820f, 3166.03f, 389.3831f, 3.316126f}; //emote 432 (release gas)
-static const Position rotfaceWatchPos = {4390.371f, 3164.50f, 389.3890f, 5.497787f}; //emote 432 (release ooze)
-static const Position tablePos = {4356.190f, 3262.90f, 389.4820f, 1.483530f};
+Position const festergutWatchPos = {4324.820f, 3166.03f, 389.3831f, 3.316126f}; //emote 432 (release gas)
+Position const rotfaceWatchPos = {4390.371f, 3164.50f, 389.3890f, 5.497787f}; //emote 432 (release ooze)
+Position const tablePos = {4356.190f, 3262.90f, 389.4820f, 1.483530f};
-static const uint32 oozeFloodSpells[4] = {69782, 69796, 69798, 69801};
+// used in Rotface encounter
+uint32 const oozeFloodSpells[4] = {69782, 69796, 69798, 69801};
enum PutricideData
{
@@ -171,9 +172,9 @@ class boss_professor_putricide : public CreatureScript
struct boss_professor_putricideAI : public BossAI
{
boss_professor_putricideAI(Creature* creature) : BossAI(creature, DATA_PROFESSOR_PUTRICIDE),
- baseSpeed(creature->GetSpeedRate(MOVE_RUN)), experimentState(EXPERIMENT_STATE_OOZE)
+ _baseSpeed(creature->GetSpeedRate(MOVE_RUN)), _experimentState(EXPERIMENT_STATE_OOZE)
{
- phase = PHASE_NONE;
+ _phase = PHASE_NONE;
}
void Reset()
@@ -185,7 +186,7 @@ class boss_professor_putricide : public CreatureScript
events.Reset();
summons.DespawnAll();
SetPhase(PHASE_COMBAT_1);
- experimentState = EXPERIMENT_STATE_OOZE;
+ _experimentState = EXPERIMENT_STATE_OOZE;
me->SetReactState(REACT_DEFENSIVE);
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE)
@@ -283,7 +284,7 @@ class boss_professor_putricide : public CreatureScript
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/)
{
- switch (phase)
+ switch (_phase)
{
case PHASE_COMBAT_1:
if (HealthAbovePct(80))
@@ -310,25 +311,25 @@ class boss_professor_putricide : public CreatureScript
{
case POINT_FESTERGUT:
instance->SetBossState(DATA_FESTERGUT, IN_PROGRESS); // needed here for delayed gate close
- me->SetSpeed(MOVE_RUN, baseSpeed, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed, true);
DoAction(ACTION_FESTERGUT_GAS);
if (Creature* festergut = Unit::GetCreature(*me, instance->GetData64(DATA_FESTERGUT)))
festergut->CastSpell(festergut, SPELL_GASEOUS_BLIGHT_LARGE, false, NULL, NULL, festergut->GetGUID());
break;
case POINT_ROTFACE:
instance->SetBossState(DATA_ROTFACE, IN_PROGRESS); // needed here for delayed gate close
- me->SetSpeed(MOVE_RUN, baseSpeed, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed, true);
DoAction(ACTION_ROTFACE_OOZE);
events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 25000, 0, PHASE_ROTFACE);
break;
case POINT_TABLE:
// stop attack
me->GetMotionMaster()->MoveIdle();
- me->SetSpeed(MOVE_RUN, baseSpeed, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed, true);
if (GameObject* table = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_PUTRICIDE_TABLE)))
me->SetFacingToObject(table);
// operating on new phase already
- switch (phase)
+ switch (_phase)
{
case PHASE_COMBAT_2:
{
@@ -361,7 +362,7 @@ class boss_professor_putricide : public CreatureScript
{
case ACTION_FESTERGUT_COMBAT:
SetPhase(PHASE_FESTERGUT);
- me->SetSpeed(MOVE_RUN, baseSpeed*2.0f, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed*2.0f, true);
me->GetMotionMaster()->MovePoint(POINT_FESTERGUT, festergutWatchPos);
me->SetReactState(REACT_PASSIVE);
DoZoneInCombat(me);
@@ -378,10 +379,10 @@ class boss_professor_putricide : public CreatureScript
case ACTION_ROTFACE_COMBAT:
{
SetPhase(PHASE_ROTFACE);
- me->SetSpeed(MOVE_RUN, baseSpeed*2.0f, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed*2.0f, true);
me->GetMotionMaster()->MovePoint(POINT_ROTFACE, rotfaceWatchPos);
me->SetReactState(REACT_PASSIVE);
- oozeFloodStage = 0;
+ _oozeFloodStage = 0;
DoZoneInCombat(me);
if (IsHeroic())
events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, urand(15000, 20000), 0, PHASE_ROTFACE);
@@ -404,7 +405,7 @@ class boss_professor_putricide : public CreatureScript
{
std::list<Creature*>::iterator itr = list.begin();
std::advance(itr, urand(0, list.size()-1));
- oozeFloodDummy[i++] = (*itr)->GetGUID();
+ _oozeFloodDummyGUIDs[i++] = (*itr)->GetGUID();
list.erase(itr);
}
}
@@ -412,16 +413,16 @@ class boss_professor_putricide : public CreatureScript
}
case ACTION_ROTFACE_OOZE:
Talk(SAY_ROTFACE_OOZE_FLOOD);
- if (Creature* dummy = Unit::GetCreature(*me, oozeFloodDummy[oozeFloodStage]))
- dummy->CastSpell(dummy, oozeFloodSpells[oozeFloodStage], true, NULL, NULL, me->GetGUID()); // cast from self for LoS (with prof's GUID for logs)
- if (++oozeFloodStage == 4)
- oozeFloodStage = 0;
+ if (Creature* dummy = Unit::GetCreature(*me, _oozeFloodDummyGUIDs[_oozeFloodStage]))
+ dummy->CastSpell(dummy, oozeFloodSpells[_oozeFloodStage], true, NULL, NULL, me->GetGUID()); // cast from self for LoS (with prof's GUID for logs)
+ if (++_oozeFloodStage == 4)
+ _oozeFloodStage = 0;
break;
case ACTION_ROTFACE_DEATH:
events.ScheduleEvent(EVENT_ROTFACE_DIES, 4500, 0, PHASE_ROTFACE);
break;
case ACTION_CHANGE_PHASE:
- me->SetSpeed(MOVE_RUN, baseSpeed*2.0f, true);
+ me->SetSpeed(MOVE_RUN, _baseSpeed*2.0f, true);
events.DelayEvents(30000);
me->AttackStop();
if (!IsHeroic())
@@ -460,7 +461,7 @@ class boss_professor_putricide : public CreatureScript
}
me->GetMotionMaster()->MovePoint(POINT_TABLE, tablePos);
}
- switch (phase)
+ switch (_phase)
{
case PHASE_COMBAT_1:
SetPhase(PHASE_COMBAT_2);
@@ -490,12 +491,12 @@ class boss_professor_putricide : public CreatureScript
case DATA_EXPERIMENT_STAGE:
{
// ALSO MODIFIES!
- uint32 ret = uint32(experimentState);
- experimentState ^= true;
+ uint32 ret = uint32(_experimentState);
+ _experimentState ^= true;
return ret;
}
case DATA_PHASE:
- return phase;
+ return _phase;
case DATA_ABOMINATION:
summons.RemoveNotExisting();
return summons.HasEntry(NPC_MUTATED_ABOMINATION_10) || summons.HasEntry(NPC_MUTATED_ABOMINATION_25);
@@ -612,7 +613,7 @@ class boss_professor_putricide : public CreatureScript
break;
case EVENT_PHASE_TRANSITION:
{
- switch (phase)
+ switch (_phase)
{
case PHASE_COMBAT_2:
if (Creature* face = me->FindNearestCreature(NPC_TEAR_GAS_TARGET_STALKER, 50.0f))
@@ -643,15 +644,15 @@ class boss_professor_putricide : public CreatureScript
private:
void SetPhase(Phases newPhase)
{
- phase = newPhase;
+ _phase = newPhase;
events.SetPhase(newPhase);
}
- uint64 oozeFloodDummy[4];
- Phases phase; // external of EventMap because event phase gets reset on evade
- float const baseSpeed;
- uint8 oozeFloodStage;
- bool experimentState;
+ uint64 _oozeFloodDummyGUIDs[4];
+ Phases _phase; // external of EventMap because event phase gets reset on evade
+ float const _baseSpeed;
+ uint8 _oozeFloodStage;
+ bool _experimentState;
};
CreatureAI* GetAI(Creature* creature) const
@@ -669,13 +670,13 @@ class npc_volatile_ooze : public CreatureScript
{
npc_volatile_oozeAI(Creature* creature) : ScriptedAI(creature)
{
- newTargetSelectTimer = 0;
+ _newTargetSelectTimer = 0;
}
void SpellHitTarget(Unit* /*target*/, SpellEntry const* spell)
{
- if (!newTargetSelectTimer && sSpellMgr->GetSpellDifficultyId(spell->Id) == sSpellMgr->GetSpellDifficultyId(SPELL_OOZE_ERUPTION))
- newTargetSelectTimer = 1000;
+ if (!_newTargetSelectTimer && sSpellMgr->GetSpellDifficultyId(spell->Id) == sSpellMgr->GetSpellDifficultyId(SPELL_OOZE_ERUPTION))
+ _newTargetSelectTimer = 1000;
}
void UpdateAI(uint32 const diff)
@@ -683,21 +684,21 @@ class npc_volatile_ooze : public CreatureScript
if (!UpdateVictim())
return;
- if (!newTargetSelectTimer)
+ if (!_newTargetSelectTimer)
return;
- if (newTargetSelectTimer <= diff)
+ if (_newTargetSelectTimer <= diff)
{
- newTargetSelectTimer = 0;
+ _newTargetSelectTimer = 0;
me->CastSpell(me, SPELL_VOLATILE_OOZE_ADHESIVE, false);
}
else
- newTargetSelectTimer -= diff;
+ _newTargetSelectTimer -= diff;
}
private:
// no need to use EventMap for just one event
- uint32 newTargetSelectTimer;
+ uint32 _newTargetSelectTimer;
};
CreatureAI* GetAI(Creature* creature) const
@@ -757,10 +758,10 @@ class spell_putricide_gaseous_bloat : public SpellScriptLoader
}
};
-class BeamProtectionPred
+class BeamProtectionCheck
{
public:
- explicit BeamProtectionPred(uint32 excludeAura) : _excludeAura(excludeAura) { }
+ explicit BeamProtectionCheck(uint32 excludeAura) : _excludeAura(excludeAura) { }
bool operator()(Unit* unit)
{
@@ -799,7 +800,7 @@ class spell_putricide_ooze_channel : public SpellScriptLoader
void SelectTarget(std::list<Unit*>& targetList)
{
- targetList.remove_if(BeamProtectionPred(GetSpellInfo()->excludeTargetAuraSpell));
+ targetList.remove_if(BeamProtectionCheck(GetSpellInfo()->excludeTargetAuraSpell));
if (targetList.empty())
{
FinishCast(SPELL_FAILED_NO_VALID_TARGETS);
@@ -856,15 +857,13 @@ class spell_putricide_expunged_gas : public SpellScriptLoader
bool Load()
{
- return GetCaster()->GetTypeId() == TYPEID_UNIT;
+ return GetCaster()->GetTypeId() == TYPEID_UNIT && GetCaster()->GetInstanceScript();
}
void CalcDamage(SpellEffIndex /*effIndex*/)
{
+ // checked in script loading, cant be NULL here
InstanceScript* instance = GetCaster()->GetInstanceScript();
- if (!instance)
- return;
-
Creature* professor = Unit::GetCreature(*GetCaster(), instance->GetData64(DATA_PROFESSOR_PUTRICIDE));
if (!professor)
return;
@@ -920,7 +919,7 @@ class spell_putricide_slime_puddle : public SpellScriptLoader
radiusMod += size->GetStackAmount();
uint32 triggerSpellId = GetSpellProto()->EffectTriggerSpell[aurEff->GetEffIndex()];
- caster->CastCustomSpell(triggerSpellId, SPELLVALUE_RADIUS_MOD, radiusMod*100, caster, true);
+ caster->CastCustomSpell(triggerSpellId, SPELLVALUE_RADIUS_MOD, radiusMod * 100, caster, true);
}
}
@@ -1154,27 +1153,40 @@ class spell_putricide_eat_ooze : public SpellScriptLoader
{
PrepareSpellScript(spell_putricide_eat_ooze_SpellScript);
+ void SelectTarget(std::list<Unit*>& targets)
+ {
+ if (targets.empty())
+ return;
+
+ targets.sort(Trinity::ObjectDistanceOrderPred(GetCaster()));
+ Unit* target = targets.front();
+ targets.clear();
+ targets.push_back(target);
+ }
+
void HandleScript(SpellEffIndex /*effIndex*/)
{
- if (Creature* target = GetCaster()->FindNearestCreature(NPC_GROWING_OOZE_PUDDLE, 15.0f))
+ Creature* target = GetHitCreature();
+ if (!target)
+ return;
+
+ if (Aura* grow = target->GetAura(uint32(GetEffectValue())))
{
- if (Aura* grow = target->GetAura(uint32(GetEffectValue())))
+ if (grow->GetStackAmount() < 4)
{
- if (grow->GetStackAmount() < 4)
- {
- target->RemoveAurasDueToSpell(SPELL_GROW_STACKER);
- target->RemoveAura(grow);
- target->DespawnOrUnsummon();
- }
- else
- grow->ModStackAmount(-4);
+ target->RemoveAurasDueToSpell(SPELL_GROW_STACKER);
+ target->RemoveAura(grow);
+ target->DespawnOrUnsummon();
}
+ else
+ grow->ModStackAmount(-4);
}
}
void Register()
{
OnEffect += SpellEffectFn(spell_putricide_eat_ooze_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ OnUnitTargetSelect += SpellUnitTargetFn(spell_putricide_eat_ooze_SpellScript::SelectTarget, EFFECT_0, TARGET_UNIT_AREA_ENTRY_DST);
}
};
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index e506e5300fc..2db5bf37f06 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -35,6 +35,8 @@ enum Texts
SAY_KILL = 6,
SAY_BERSERK = 7,
SAY_DEATH = 8,
+
+ EMOTE_PRECIOUS_ZOMBIES = 0,
};
enum Spells
@@ -59,20 +61,24 @@ enum Spells
// Precious
SPELL_MORTAL_WOUND = 71127,
SPELL_DECIMATE = 71123,
+ SPELL_AWAKEN_PLAGUED_ZOMBIES = 71159,
};
#define MUTATED_INFECTION RAID_MODE<int32>(69674, 71224, 73022, 73023)
enum Events
{
+ // Rotface
EVENT_SLIME_SPRAY = 1,
EVENT_HASTEN_INFECTIONS = 2,
EVENT_MUTATED_INFECTION = 3,
+ // Precious
EVENT_DECIMATE = 4,
EVENT_MORTAL_WOUND = 5,
+ EVENT_SUMMON_ZOMBIES = 6,
- EVENT_STICKY_OOZE = 6,
+ EVENT_STICKY_OOZE = 7,
};
class boss_rotface : public CreatureScript
@@ -363,14 +369,15 @@ class npc_precious_icc : public CreatureScript
{
npc_precious_iccAI(Creature* creature) : ScriptedAI(creature)
{
- instance = creature->GetInstanceScript();
+ _instance = creature->GetInstanceScript();
}
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
- events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(3000, 7000));
+ _events.Reset();
+ _events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
+ _events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(3000, 7000));
+ _events.ScheduleEvent(EVENT_SUMMON_ZOMBIES, urand(20000, 22000));
}
void UpdateAI(const uint32 diff)
@@ -378,22 +385,28 @@ class npc_precious_icc : public CreatureScript
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DECIMATE:
DoCastVictim(SPELL_DECIMATE);
- events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
+ _events.ScheduleEvent(EVENT_DECIMATE, urand(20000, 25000));
break;
case EVENT_MORTAL_WOUND:
DoCastVictim(SPELL_MORTAL_WOUND);
- events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(10000, 12500));
+ _events.ScheduleEvent(EVENT_MORTAL_WOUND, urand(10000, 12500));
+ break;
+ case EVENT_SUMMON_ZOMBIES:
+ Talk(EMOTE_PRECIOUS_ZOMBIES);
+ for (uint32 i = 0; i < 11; ++i)
+ DoCast(me, SPELL_AWAKEN_PLAGUED_ZOMBIES, false);
+ _events.ScheduleEvent(EVENT_SUMMON_ZOMBIES, urand(20000, 22000));
break;
default:
break;
@@ -405,14 +418,14 @@ class npc_precious_icc : public CreatureScript
void JustDied(Unit* /*who*/)
{
- if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
+ if (Creature* rotface = Unit::GetCreature(*me, _instance->GetData64(DATA_ROTFACE)))
if (rotface->isAlive())
rotface->AI()->Talk(SAY_PRECIOUS_DIES);
}
private:
- EventMap events;
- InstanceScript* instance;
+ EventMap _events;
+ InstanceScript* _instance;
};
CreatureAI* GetAI(Creature* creature) const
@@ -435,10 +448,10 @@ class spell_rotface_ooze_flood : public SpellScriptLoader
if (!GetHitUnit())
return;
- std::list<Creature*> list;
- GetHitUnit()->GetCreatureListWithEntryInGrid(list, GetHitUnit()->GetEntry(), 12.5f);
- list.sort(Trinity::ObjectDistanceOrderPred(GetHitUnit()));
- GetHitUnit()->CastSpell(list.back(), uint32(GetEffectValue()), false, NULL, NULL, GetOriginalCaster() ? GetOriginalCaster()->GetGUID() : 0);
+ std::list<Creature*> triggers;
+ GetHitUnit()->GetCreatureListWithEntryInGrid(triggers, GetHitUnit()->GetEntry(), 12.5f);
+ triggers.sort(Trinity::ObjectDistanceOrderPred(GetHitUnit()));
+ GetHitUnit()->CastSpell(triggers.back(), uint32(GetEffectValue()), false, NULL, NULL, GetOriginalCaster() ? GetOriginalCaster()->GetGUID() : 0);
}
void FilterTargets(std::list<Unit*>& targetList)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index 5708771d83c..a369f6947a7 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -153,16 +153,17 @@ Position const SindragosaAirPos = {4475.990f, 2484.430f, 247.9340f, 3.141593f
class FrostwyrmLandEvent : public BasicEvent
{
public:
- FrostwyrmLandEvent(Creature& _owner, Position const& _dest) : owner(_owner), dest(_dest) { }
+ FrostwyrmLandEvent(Creature& owner, Position const& dest) : _owner(owner), _dest(dest) { }
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/)
{
- owner.GetMotionMaster()->MovePoint(POINT_FROSTWYRM_LAND, dest);
+ _owner.GetMotionMaster()->MovePoint(POINT_FROSTWYRM_LAND, _dest);
return true;
}
- Creature& owner;
- Position const& dest;
+ private:
+ Creature& _owner;
+ Position const& _dest;
};
class boss_sindragosa : public CreatureScript
@@ -188,8 +189,8 @@ class boss_sindragosa : public CreatureScript
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, urand(9000, 14000), EVENT_GROUP_LAND_PHASE);
events.ScheduleEvent(EVENT_ICY_GRIP, 33500, EVENT_GROUP_LAND_PHASE);
events.ScheduleEvent(EVENT_AIR_PHASE, 50000);
- mysticBuffetStack = 0;
- isThirdPhase = false;
+ _mysticBuffetStack = 0;
+ _isThirdPhase = false;
if (instance->GetData(DATA_SINDRAGOSA_FROSTWYRMS) != 255)
{
@@ -254,7 +255,7 @@ class boss_sindragosa : public CreatureScript
uint32 GetData(uint32 type)
{
if (type == DATA_MYSTIC_BUFFET_STACK)
- return mysticBuffetStack;
+ return _mysticBuffetStack;
return 0xFFFFFFFF;
}
@@ -297,14 +298,14 @@ class boss_sindragosa : public CreatureScript
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/)
{
- if (!isThirdPhase && !HealthAbovePct(35))
+ if (!_isThirdPhase && !HealthAbovePct(35))
{
Talk(SAY_PHASE_2);
events.CancelEvent(EVENT_AIR_PHASE);
events.ScheduleEvent(EVENT_ICE_TOMB, urand(7000, 10000));
events.RescheduleEvent(EVENT_ICY_GRIP, urand(35000, 40000));
DoCast(me, SPELL_MYSTIC_BUFFET, true);
- isThirdPhase = true;
+ _isThirdPhase = true;
}
}
@@ -325,12 +326,12 @@ class boss_sindragosa : public CreatureScript
if (SpellEntry const* buffet = sSpellMgr->GetSpellForDifficultyFromSpell(sSpellStore.LookupEntry(70127), me))
if (buffet->Id == spell->Id)
if (Aura const* mysticBuffet = target->GetAura(spell->Id))
- mysticBuffetStack = std::max<uint8>(mysticBuffetStack, mysticBuffet->GetStackAmount());
+ _mysticBuffetStack = std::max<uint8>(_mysticBuffetStack, mysticBuffet->GetStackAmount());
// Frost Infusion
if (Player* player = target->ToPlayer())
{
- if (SpellEntry const* breath = sSpellMgr->GetSpellForDifficultyFromSpell(sSpellStore.LookupEntry(isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1), me))
+ if (SpellEntry const* breath = sSpellMgr->GetSpellForDifficultyFromSpell(sSpellStore.LookupEntry(_isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1), me))
{
if (player->GetQuestStatus(QUEST_FROST_INFUSION) != QUEST_STATUS_REWARDED && breath->Id == spell->Id)
{
@@ -391,7 +392,7 @@ class boss_sindragosa : public CreatureScript
events.ScheduleEvent(EVENT_TAIL_SMASH, urand(27000, 32000), EVENT_GROUP_LAND_PHASE);
break;
case EVENT_FROST_BREATH:
- DoCastVictim(isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1);
+ DoCastVictim(_isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1);
events.ScheduleEvent(EVENT_FROST_BREATH, urand(20000, 25000), EVENT_GROUP_LAND_PHASE);
break;
case EVENT_UNCHAINED_MAGIC:
@@ -467,8 +468,8 @@ class boss_sindragosa : public CreatureScript
}
private:
- uint8 mysticBuffetStack;
- bool isThirdPhase;
+ uint8 _mysticBuffetStack;
+ bool _isThirdPhase;
};
CreatureAI* GetAI(Creature* creature) const
@@ -486,7 +487,7 @@ class npc_ice_tomb : public CreatureScript
{
npc_ice_tombAI(Creature* creature) : Scripted_NoMovementAI(creature)
{
- trappedPlayer = 0;
+ _trappedPlayerGUID = 0;
}
void Reset()
@@ -498,15 +499,15 @@ class npc_ice_tomb : public CreatureScript
{
if (type == DATA_TRAPPED_PLAYER)
{
- trappedPlayer = guid;
- existenceCheckTimer = 1000;
+ _trappedPlayerGUID = guid;
+ _existenceCheckTimer = 1000;
}
}
void DoAction(int32 const action)
{
if (action == ACTION_TRIGGER_ASPHYXIATION)
- if (Player* player = ObjectAccessor::GetPlayer(*me, trappedPlayer))
+ if (Player* player = ObjectAccessor::GetPlayer(*me, _trappedPlayerGUID))
player->CastSpell(player, SPELL_ASPHYXIATION, true);
}
@@ -514,9 +515,9 @@ class npc_ice_tomb : public CreatureScript
{
me->RemoveAllGameObjects();
- if (Player* player = ObjectAccessor::GetPlayer(*me, trappedPlayer))
+ if (Player* player = ObjectAccessor::GetPlayer(*me, _trappedPlayerGUID))
{
- trappedPlayer = 0;
+ _trappedPlayerGUID = 0;
player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_DAMAGE);
player->RemoveAurasDueToSpell(SPELL_ASPHYXIATION);
}
@@ -524,12 +525,12 @@ class npc_ice_tomb : public CreatureScript
void UpdateAI(uint32 const diff)
{
- if (!trappedPlayer)
+ if (!_trappedPlayerGUID)
return;
- if (existenceCheckTimer <= diff)
+ if (_existenceCheckTimer <= diff)
{
- Player* player = ObjectAccessor::GetPlayer(*me, trappedPlayer);
+ Player* player = ObjectAccessor::GetPlayer(*me, _trappedPlayerGUID);
if (!player || player->isDead() || !player->HasAura(SPELL_ICE_TOMB_DAMAGE))
{
// Remove object
@@ -537,20 +538,20 @@ class npc_ice_tomb : public CreatureScript
me->DespawnOrUnsummon();
return;
}
- existenceCheckTimer = 1000;
+ _existenceCheckTimer = 1000;
}
else
- existenceCheckTimer -= diff;
+ _existenceCheckTimer -= diff;
}
private:
- uint64 trappedPlayer;
- uint32 existenceCheckTimer;
+ uint64 _trappedPlayerGUID;
+ uint32 _existenceCheckTimer;
};
CreatureAI* GetAI(Creature* creature) const
{
- return new npc_ice_tombAI(creature);
+ return GetIcecrownCitadelAI<npc_ice_tombAI>(creature);
}
};
@@ -561,19 +562,19 @@ class npc_spinestalker : public CreatureScript
struct npc_spinestalkerAI : public ScriptedAI
{
- npc_spinestalkerAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
+ npc_spinestalkerAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
{
}
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_BELLOWING_ROAR, urand(20000, 25000));
- events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, urand(10000, 15000));
- events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(8000, 12000));
+ _events.Reset();
+ _events.ScheduleEvent(EVENT_BELLOWING_ROAR, urand(20000, 25000));
+ _events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, urand(10000, 15000));
+ _events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(8000, 12000));
me->SetReactState(REACT_DEFENSIVE);
- if (instance->GetData(DATA_SPINESTALKER) != 255)
+ if (_instance->GetData(DATA_SPINESTALKER) != 255)
{
me->SetFlying(true);
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
@@ -583,20 +584,20 @@ class npc_spinestalker : public CreatureScript
void JustRespawned()
{
ScriptedAI::JustRespawned();
- instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 1); // this cannot be in Reset because reset also happens on evade
+ _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 1); // this cannot be in Reset because reset also happens on evade
}
void JustDied(Unit* /*killer*/)
{
- events.Reset();
- instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 0);
+ _events.Reset();
+ _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 0);
}
void DoAction(int32 const action)
{
if (action == ACTION_START_FROSTWYRM)
{
- instance->SetData(DATA_SPINESTALKER, 255);
+ _instance->SetData(DATA_SPINESTALKER, 255);
if (me->isDead())
return;
@@ -629,26 +630,26 @@ class npc_spinestalker : public CreatureScript
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_BELLOWING_ROAR:
DoCast(me, SPELL_BELLOWING_ROAR);
- events.ScheduleEvent(EVENT_BELLOWING_ROAR, urand(25000, 30000));
+ _events.ScheduleEvent(EVENT_BELLOWING_ROAR, urand(25000, 30000));
break;
case EVENT_CLEAVE_SPINESTALKER:
DoCastVictim(SPELL_CLEAVE_SPINESTALKER);
- events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, urand(10000, 15000));
+ _events.ScheduleEvent(EVENT_CLEAVE_SPINESTALKER, urand(10000, 15000));
break;
case EVENT_TAIL_SWEEP:
DoCast(me, SPELL_TAIL_SWEEP);
- events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(22000, 25000));
+ _events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(22000, 25000));
break;
default:
break;
@@ -659,8 +660,8 @@ class npc_spinestalker : public CreatureScript
}
private:
- EventMap events;
- InstanceScript* instance;
+ EventMap _events;
+ InstanceScript* _instance;
};
CreatureAI* GetAI(Creature* creature) const
@@ -676,19 +677,19 @@ class npc_rimefang : public CreatureScript
struct npc_rimefangAI : public ScriptedAI
{
- npc_rimefangAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
+ npc_rimefangAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
{
}
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, urand(12000, 15000));
- events.ScheduleEvent(EVENT_ICY_BLAST, urand(30000, 35000));
+ _events.Reset();
+ _events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, urand(12000, 15000));
+ _events.ScheduleEvent(EVENT_ICY_BLAST, urand(30000, 35000));
me->SetReactState(REACT_DEFENSIVE);
- icyBlastCounter = 0;
+ _icyBlastCounter = 0;
- if (instance->GetData(DATA_RIMEFANG) != 255)
+ if (_instance->GetData(DATA_RIMEFANG) != 255)
{
me->SetFlying(true);
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
@@ -698,20 +699,20 @@ class npc_rimefang : public CreatureScript
void JustRespawned()
{
ScriptedAI::JustRespawned();
- instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 1); // this cannot be in Reset because reset also happens on evade
+ _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 1); // this cannot be in Reset because reset also happens on evade
}
void JustDied(Unit* /*killer*/)
{
- events.Reset();
- instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 0);
+ _events.Reset();
+ _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, 0);
}
void DoAction(int32 const action)
{
if (action == ACTION_START_FROSTWYRM)
{
- instance->SetData(DATA_RIMEFANG, 255);
+ _instance->SetData(DATA_RIMEFANG, 255);
if (me->isDead())
return;
@@ -749,40 +750,40 @@ class npc_rimefang : public CreatureScript
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_FROST_BREATH_RIMEFANG:
DoCast(me, SPELL_FROST_BREATH);
- events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, urand(35000, 40000));
+ _events.ScheduleEvent(EVENT_FROST_BREATH_RIMEFANG, urand(35000, 40000));
break;
case EVENT_ICY_BLAST:
{
- icyBlastCounter = RAID_MODE<uint8>(5, 7, 6, 8);
+ _icyBlastCounter = RAID_MODE<uint8>(5, 7, 6, 8);
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
me->SetFlying(true);
me->GetMotionMaster()->MovePoint(POINT_FROSTWYRM_FLY_IN, RimefangFlyPos);
float moveTime = me->GetExactDist(&RimefangFlyPos)/(me->GetSpeed(MOVE_FLIGHT)*0.001f);
- events.ScheduleEvent(EVENT_ICY_BLAST, uint64(moveTime) + urand(60000, 70000));
- events.ScheduleEvent(EVENT_ICY_BLAST_CAST, uint64(moveTime) + 250);
+ _events.ScheduleEvent(EVENT_ICY_BLAST, uint64(moveTime) + urand(60000, 70000));
+ _events.ScheduleEvent(EVENT_ICY_BLAST_CAST, uint64(moveTime) + 250);
break;
}
case EVENT_ICY_BLAST_CAST:
- if (--icyBlastCounter)
+ if (--_icyBlastCounter)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true))
{
me->SetFacingToObject(target);
DoCast(target, SPELL_ICY_BLAST);
}
- events.ScheduleEvent(EVENT_ICY_BLAST_CAST, 3000);
+ _events.ScheduleEvent(EVENT_ICY_BLAST_CAST, 3000);
}
else if (Unit *victim = me->SelectVictim())
{
@@ -800,9 +801,9 @@ class npc_rimefang : public CreatureScript
}
private:
- EventMap events;
- InstanceScript* instance;
- uint8 icyBlastCounter;
+ EventMap _events;
+ InstanceScript* _instance;
+ uint8 _icyBlastCounter;
};
CreatureAI* GetAI(Creature* creature) const
@@ -820,15 +821,15 @@ class npc_sindragosa_trash : public CreatureScript
{
npc_sindragosa_trashAI(Creature* creature) : ScriptedAI(creature)
{
- frostwyrmId = (creature->GetHomePosition().GetPositionY() < 2484.35f) ? DATA_RIMEFANG : DATA_SPINESTALKER;
- instance = creature->GetInstanceScript();
+ _frostwyrmId = (creature->GetHomePosition().GetPositionY() < 2484.35f) ? DATA_RIMEFANG : DATA_SPINESTALKER;
+ _instance = creature->GetInstanceScript();
}
void InitializeAI()
{
// Increase add count
- if (!me->isDead() && instance)
- instance->SetData(frostwyrmId, 1); // this cannot be in Reset because reset also happens on evade
+ if (!me->isDead())
+ _instance->SetData(_frostwyrmId, 1); // this cannot be in Reset because reset also happens on evade
}
void Reset()
@@ -836,11 +837,11 @@ class npc_sindragosa_trash : public CreatureScript
// This is shared AI for handler and whelps
if (me->GetEntry() == NPC_FROSTWARDEN_HANDLER)
{
- events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3000);
- events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, urand(8000, 10000));
+ _events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3000);
+ _events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, urand(8000, 10000));
}
- isTaunted = false;
+ _isTaunted = false;
}
void JustRespawned()
@@ -848,29 +849,27 @@ class npc_sindragosa_trash : public CreatureScript
ScriptedAI::JustRespawned();
// Increase add count
- if (instance)
- instance->SetData(frostwyrmId, 1); // this cannot be in Reset because reset also happens on evade
+ _instance->SetData(_frostwyrmId, 1); // this cannot be in Reset because reset also happens on evade
}
void JustDied(Unit* /*killer*/)
{
// Decrease add count
- if (instance)
- instance->SetData(frostwyrmId, 0);
+ _instance->SetData(_frostwyrmId, 0);
}
void SetData(uint32 type, uint32 data)
{
if (type == DATA_WHELP_MARKER)
- isTaunted = data != 0;
+ _isTaunted = data != 0;
}
uint32 GetData(uint32 type)
{
if (type == DATA_FROSTWYRM_OWNER)
- return frostwyrmId;
+ return _frostwyrmId;
else if (type == DATA_WHELP_MARKER)
- return uint32(isTaunted);
+ return uint32(_isTaunted);
return 0;
}
@@ -879,22 +878,22 @@ class npc_sindragosa_trash : public CreatureScript
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_FROSTWARDEN_ORDER_WHELP:
DoCast(me, SPELL_ORDER_WHELP);
- events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3000);
+ _events.ScheduleEvent(EVENT_FROSTWARDEN_ORDER_WHELP, 3000);
break;
case EVENT_CONCUSSIVE_SHOCK:
DoCast(me, SPELL_CONCUSSIVE_SHOCK);
- events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, urand(10000, 13000));
+ _events.ScheduleEvent(EVENT_CONCUSSIVE_SHOCK, urand(10000, 13000));
break;
default:
break;
@@ -905,15 +904,15 @@ class npc_sindragosa_trash : public CreatureScript
}
private:
- EventMap events;
- InstanceScript* instance;
- uint32 frostwyrmId;
- bool isTaunted; // Frostwing Whelp only
+ EventMap _events;
+ InstanceScript* _instance;
+ uint32 _frostwyrmId;
+ bool _isTaunted; // Frostwing Whelp only
};
CreatureAI* GetAI(Creature* creature) const
{
- return new npc_sindragosa_trashAI(creature);
+ return GetIcecrownCitadelAI<npc_sindragosa_trashAI>(creature);
}
};
@@ -928,13 +927,13 @@ class spell_sindragosa_s_fury : public SpellScriptLoader
bool Load()
{
- targetCount = 0;
+ _targetCount = 0;
return true;
}
void CountTargets(std::list<Unit*>& unitList)
{
- targetCount = unitList.size();
+ _targetCount = unitList.size();
}
void HandleDummy(SpellEffIndex effIndex)
@@ -948,7 +947,7 @@ class spell_sindragosa_s_fury : public SpellScriptLoader
uint32 minResistFactor = uint32((resistance / (resistance + 510.0f))* 10.0f) * 2;
uint32 randomResist = urand(0, (9 - minResistFactor) * 100)/100 + minResistFactor;
- uint32 damage = (uint32(GetEffectValue()/targetCount) * randomResist) / 10;
+ uint32 damage = (uint32(GetEffectValue()/_targetCount) * randomResist) / 10;
SpellNonMeleeDamage damageInfo(GetCaster(), GetHitUnit(), GetSpellInfo()->Id, GetSpellInfo()->SchoolMask);
damageInfo.damage = damage;
@@ -962,7 +961,7 @@ class spell_sindragosa_s_fury : public SpellScriptLoader
OnUnitTargetSelect += SpellUnitTargetFn(spell_sindragosa_s_fury_SpellScript::CountTargets, EFFECT_1, TARGET_UNIT_AREA_ENTRY_DST);
}
- uint32 targetCount;
+ uint32 _targetCount;
};
SpellScript* GetSpellScript() const
@@ -1149,22 +1148,23 @@ class spell_sindragosa_ice_tomb : public SpellScriptLoader
class FrostBombTargetSelector
{
public:
- FrostBombTargetSelector(Unit* _caster, std::list<Creature*> const& _collisionList) : caster(_caster), collisionList(_collisionList) { }
+ FrostBombTargetSelector(Unit* caster, std::list<Creature*> const& collisionList) : _caster(caster), _collisionList(collisionList) { }
bool operator()(Unit* unit)
{
if (unit->HasAura(SPELL_ICE_TOMB_DAMAGE))
return true;
- for (std::list<Creature*>::const_iterator itr = collisionList.begin(); itr != collisionList.end(); ++itr)
- if ((*itr)->IsInBetween(caster, unit))
+ for (std::list<Creature*>::const_iterator itr = _collisionList.begin(); itr != _collisionList.end(); ++itr)
+ if ((*itr)->IsInBetween(_caster, unit))
return true;
return false;
}
- Unit* caster;
- std::list<Creature*> const& collisionList;
+ private:
+ Unit* _caster;
+ std::list<Creature*> const& _collisionList;
};
class spell_sindragosa_collision_filter : public SpellScriptLoader
@@ -1275,17 +1275,17 @@ class spell_rimefang_icy_blast : public SpellScriptLoader
class OrderWhelpTargetSelector
{
public:
- explicit OrderWhelpTargetSelector(Creature* _owner) : owner(_owner) { }
+ explicit OrderWhelpTargetSelector(Creature* owner) : _owner(owner) { }
bool operator()(Creature* creature)
{
- if (!creature->AI()->GetData(DATA_WHELP_MARKER) && creature->AI()->GetData(DATA_FROSTWYRM_OWNER) == owner->AI()->GetData(DATA_FROSTWYRM_OWNER))
+ if (!creature->AI()->GetData(DATA_WHELP_MARKER) && creature->AI()->GetData(DATA_FROSTWYRM_OWNER) == _owner->AI()->GetData(DATA_FROSTWYRM_OWNER))
return false;
return true;
}
private:
- Creature* owner;
+ Creature* _owner;
};
class spell_frostwarden_handler_order_whelp : public SpellScriptLoader
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 32420c9261d..0ae0515a35b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -81,45 +81,46 @@ enum Spells
SPELL_HARVEST_BLIGHT_SPECIMEN25 = 72162,
};
-enum Events
+enum EventTypes
{
// Highlord Tirion Fordring (at Light's Hammer)
// The Lich King (at Light's Hammer)
// Highlord Bolvar Fordragon (at Light's Hammer)
// High Overlord Saurfang (at Light's Hammer)
// Muradin Bronzebeard (at Light's Hammer)
- EVENT_TIRION_INTRO_2 = 1,
- EVENT_TIRION_INTRO_3 = 2,
- EVENT_TIRION_INTRO_4 = 3,
- EVENT_TIRION_INTRO_5 = 4,
- EVENT_LK_INTRO_1 = 5,
- EVENT_TIRION_INTRO_6 = 6,
- EVENT_LK_INTRO_2 = 7,
- EVENT_LK_INTRO_3 = 8,
- EVENT_LK_INTRO_4 = 9,
- EVENT_BOLVAR_INTRO_1 = 10,
- EVENT_LK_INTRO_5 = 11,
- EVENT_SAURFANG_INTRO_1 = 12,
- EVENT_TIRION_INTRO_H_7 = 13,
- EVENT_SAURFANG_INTRO_2 = 14,
- EVENT_SAURFANG_INTRO_3 = 15,
- EVENT_SAURFANG_INTRO_4 = 16,
- EVENT_SAURFANG_RUN = 17,
- EVENT_MURADIN_INTRO_1 = 18,
- EVENT_MURADIN_INTRO_2 = 19,
- EVENT_MURADIN_INTRO_3 = 20,
- EVENT_TIRION_INTRO_A_7 = 21,
- EVENT_MURADIN_INTRO_4 = 22,
- EVENT_MURADIN_INTRO_5 = 23,
- EVENT_MURADIN_RUN = 24,
+ EVENT_TIRION_INTRO_2 = 1,
+ EVENT_TIRION_INTRO_3 = 2,
+ EVENT_TIRION_INTRO_4 = 3,
+ EVENT_TIRION_INTRO_5 = 4,
+ EVENT_LK_INTRO_1 = 5,
+ EVENT_TIRION_INTRO_6 = 6,
+ EVENT_LK_INTRO_2 = 7,
+ EVENT_LK_INTRO_3 = 8,
+ EVENT_LK_INTRO_4 = 9,
+ EVENT_BOLVAR_INTRO_1 = 10,
+ EVENT_LK_INTRO_5 = 11,
+ EVENT_SAURFANG_INTRO_1 = 12,
+ EVENT_TIRION_INTRO_H_7 = 13,
+ EVENT_SAURFANG_INTRO_2 = 14,
+ EVENT_SAURFANG_INTRO_3 = 15,
+ EVENT_SAURFANG_INTRO_4 = 16,
+ EVENT_SAURFANG_RUN = 17,
+ EVENT_MURADIN_INTRO_1 = 18,
+ EVENT_MURADIN_INTRO_2 = 19,
+ EVENT_MURADIN_INTRO_3 = 20,
+ EVENT_TIRION_INTRO_A_7 = 21,
+ EVENT_MURADIN_INTRO_4 = 22,
+ EVENT_MURADIN_INTRO_5 = 23,
+ EVENT_MURADIN_RUN = 24,
// Rotting Frost Giant
- EVENT_DEATH_PLAGUE = 25,
- EVENT_STOMP = 26,
- EVENT_ARCTIC_BREATH = 27,
+ EVENT_DEATH_PLAGUE = 25,
+ EVENT_STOMP = 26,
+ EVENT_ARCTIC_BREATH = 27,
// Frost Freeze Trap
- EVENT_ACTIVATE_TRAP = 28,
+ EVENT_ACTIVATE_TRAP = 28,
+
};
enum DataTypesICC
@@ -135,13 +136,13 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
struct npc_highlord_tirion_fordringAI : public ScriptedAI
{
- npc_highlord_tirion_fordringAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
+ npc_highlord_tirion_fordringAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
{
}
void Reset()
{
- events.Reset();
+ _events.Reset();
_theLichKing = 0;
_bolvarFordragon = 0;
_factionNPC = 0;
@@ -160,7 +161,7 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
{
if (Creature* bolvarFordragon = me->FindNearestCreature(NPC_HIGHLORD_BOLVAR_FORDRAGON_LH, 150.0f))
{
- if (Creature* factionNPC = me->FindNearestCreature(instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? NPC_SE_HIGH_OVERLORD_SAURFANG : NPC_SE_MURADIN_BRONZEBEARD, 50.0f))
+ if (Creature* factionNPC = me->FindNearestCreature(_instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? NPC_SE_HIGH_OVERLORD_SAURFANG : NPC_SE_MURADIN_BRONZEBEARD, 50.0f))
{
me->setActive(true);
_theLichKing = theLichKing->GetGUID();
@@ -177,36 +178,36 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
return;
Talk(SAY_TIRION_INTRO_1);
- events.ScheduleEvent(EVENT_TIRION_INTRO_2, 4000);
- events.ScheduleEvent(EVENT_TIRION_INTRO_3, 14000);
- events.ScheduleEvent(EVENT_TIRION_INTRO_4, 18000);
- events.ScheduleEvent(EVENT_TIRION_INTRO_5, 31000);
- events.ScheduleEvent(EVENT_LK_INTRO_1, 35000);
- events.ScheduleEvent(EVENT_TIRION_INTRO_6, 51000);
- events.ScheduleEvent(EVENT_LK_INTRO_2, 58000);
- events.ScheduleEvent(EVENT_LK_INTRO_3, 74000);
- events.ScheduleEvent(EVENT_LK_INTRO_4, 86000);
- events.ScheduleEvent(EVENT_BOLVAR_INTRO_1, 100000);
- events.ScheduleEvent(EVENT_LK_INTRO_5, 108000);
-
- if (instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE)
+ _events.ScheduleEvent(EVENT_TIRION_INTRO_2, 4000);
+ _events.ScheduleEvent(EVENT_TIRION_INTRO_3, 14000);
+ _events.ScheduleEvent(EVENT_TIRION_INTRO_4, 18000);
+ _events.ScheduleEvent(EVENT_TIRION_INTRO_5, 31000);
+ _events.ScheduleEvent(EVENT_LK_INTRO_1, 35000);
+ _events.ScheduleEvent(EVENT_TIRION_INTRO_6, 51000);
+ _events.ScheduleEvent(EVENT_LK_INTRO_2, 58000);
+ _events.ScheduleEvent(EVENT_LK_INTRO_3, 74000);
+ _events.ScheduleEvent(EVENT_LK_INTRO_4, 86000);
+ _events.ScheduleEvent(EVENT_BOLVAR_INTRO_1, 100000);
+ _events.ScheduleEvent(EVENT_LK_INTRO_5, 108000);
+
+ if (_instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE)
{
- events.ScheduleEvent(EVENT_SAURFANG_INTRO_1, 120000);
- events.ScheduleEvent(EVENT_TIRION_INTRO_H_7, 129000);
- events.ScheduleEvent(EVENT_SAURFANG_INTRO_2, 139000);
- events.ScheduleEvent(EVENT_SAURFANG_INTRO_3, 150000);
- events.ScheduleEvent(EVENT_SAURFANG_INTRO_4, 162000);
- events.ScheduleEvent(EVENT_SAURFANG_RUN, 170000);
+ _events.ScheduleEvent(EVENT_SAURFANG_INTRO_1, 120000);
+ _events.ScheduleEvent(EVENT_TIRION_INTRO_H_7, 129000);
+ _events.ScheduleEvent(EVENT_SAURFANG_INTRO_2, 139000);
+ _events.ScheduleEvent(EVENT_SAURFANG_INTRO_3, 150000);
+ _events.ScheduleEvent(EVENT_SAURFANG_INTRO_4, 162000);
+ _events.ScheduleEvent(EVENT_SAURFANG_RUN, 170000);
}
else
{
- events.ScheduleEvent(EVENT_MURADIN_INTRO_1, 120000);
- events.ScheduleEvent(EVENT_MURADIN_INTRO_2, 124000);
- events.ScheduleEvent(EVENT_MURADIN_INTRO_3, 127000);
- events.ScheduleEvent(EVENT_TIRION_INTRO_A_7, 136000);
- events.ScheduleEvent(EVENT_MURADIN_INTRO_4, 144000);
- events.ScheduleEvent(EVENT_MURADIN_INTRO_5, 151000);
- events.ScheduleEvent(EVENT_MURADIN_RUN, 157000);
+ _events.ScheduleEvent(EVENT_MURADIN_INTRO_1, 120000);
+ _events.ScheduleEvent(EVENT_MURADIN_INTRO_2, 124000);
+ _events.ScheduleEvent(EVENT_MURADIN_INTRO_3, 127000);
+ _events.ScheduleEvent(EVENT_TIRION_INTRO_A_7, 136000);
+ _events.ScheduleEvent(EVENT_MURADIN_INTRO_4, 144000);
+ _events.ScheduleEvent(EVENT_MURADIN_INTRO_5, 151000);
+ _events.ScheduleEvent(EVENT_MURADIN_RUN, 157000);
}
}
}
@@ -217,9 +218,9 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
if (_damnedKills != 2)
return;
- events.Update(diff);
+ _events.Update(diff);
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
@@ -325,8 +326,8 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
}
private:
- EventMap events;
- InstanceScript* const instance;
+ EventMap _events;
+ InstanceScript* const _instance;
uint64 _theLichKing;
uint64 _bolvarFordragon;
uint64 _factionNPC;
@@ -352,15 +353,15 @@ class npc_rotting_frost_giant : public CreatureScript
void Reset()
{
- events.Reset();
- events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000);
- events.ScheduleEvent(EVENT_STOMP, urand(5000, 8000));
- events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(10000, 15000));
+ _events.Reset();
+ _events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000);
+ _events.ScheduleEvent(EVENT_STOMP, urand(5000, 8000));
+ _events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(10000, 15000));
}
void JustDied(Unit* /*killer*/)
{
- events.Reset();
+ _events.Reset();
}
void UpdateAI(uint32 const diff)
@@ -368,12 +369,12 @@ class npc_rotting_frost_giant : public CreatureScript
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
@@ -383,15 +384,15 @@ class npc_rotting_frost_giant : public CreatureScript
Talk(EMOTE_DEATH_PLAGUE_WARNING, target->GetGUID());
DoCast(target, SPELL_DEATH_PLAGUE);
}
- events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000);
+ _events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000);
break;
case EVENT_STOMP:
DoCastVictim(SPELL_STOMP);
- events.ScheduleEvent(EVENT_STOMP, urand(15000, 18000));
+ _events.ScheduleEvent(EVENT_STOMP, urand(15000, 18000));
break;
case EVENT_ARCTIC_BREATH:
DoCastVictim(SPELL_ARCTIC_BREATH);
- events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(26000, 33000));
+ _events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(26000, 33000));
break;
default:
break;
@@ -402,7 +403,7 @@ class npc_rotting_frost_giant : public CreatureScript
}
private:
- EventMap events;
+ EventMap _events;
};
CreatureAI* GetAI(Creature* creature) const
@@ -428,11 +429,11 @@ class npc_frost_freeze_trap : public CreatureScript
{
case 1000:
case 11000:
- events.ScheduleEvent(EVENT_ACTIVATE_TRAP, uint32(action));
+ _events.ScheduleEvent(EVENT_ACTIVATE_TRAP, uint32(action));
break;
case ACTION_STOP_TRAPS:
me->RemoveAurasDueToSpell(SPELL_COLDFLAME_JETS);
- events.CancelEvent(EVENT_ACTIVATE_TRAP);
+ _events.CancelEvent(EVENT_ACTIVATE_TRAP);
break;
default:
break;
@@ -441,17 +442,17 @@ class npc_frost_freeze_trap : public CreatureScript
void UpdateAI(uint32 const diff)
{
- events.Update(diff);
+ _events.Update(diff);
- if (events.ExecuteEvent() == EVENT_ACTIVATE_TRAP)
+ if (_events.ExecuteEvent() == EVENT_ACTIVATE_TRAP)
{
DoCast(me, SPELL_COLDFLAME_JETS);
- events.ScheduleEvent(EVENT_ACTIVATE_TRAP, 22000);
+ _events.ScheduleEvent(EVENT_ACTIVATE_TRAP, 22000);
}
}
private:
- EventMap events;
+ EventMap _events;
};
CreatureAI* GetAI(Creature* creature) const
@@ -477,11 +478,11 @@ class npc_alchemist_adrianna : public CreatureScript
class DeathPlagueTargetSelector
{
public:
- DeathPlagueTargetSelector(Unit* _caster) : caster(_caster) {}
+ explicit DeathPlagueTargetSelector(Unit* caster) : _caster(caster) {}
bool operator()(Unit* unit)
{
- if (unit == caster)
+ if (unit == _caster)
return true;
if (unit->GetTypeId() != TYPEID_PLAYER)
@@ -493,7 +494,8 @@ class DeathPlagueTargetSelector
return false;
}
- Unit* caster;
+ private:
+ Unit* _caster;
};
class spell_frost_giant_death_plague : public SpellScriptLoader
@@ -507,7 +509,7 @@ class spell_frost_giant_death_plague : public SpellScriptLoader
bool Load()
{
- failed = false;
+ _failed = false;
return true;
}
@@ -515,7 +517,7 @@ class spell_frost_giant_death_plague : public SpellScriptLoader
void CountTargets(std::list<Unit*>& unitList)
{
unitList.remove(GetCaster());
- failed = unitList.empty();
+ _failed = unitList.empty();
}
// Second effect
@@ -540,7 +542,7 @@ class spell_frost_giant_death_plague : public SpellScriptLoader
PreventHitDefaultEffect(effIndex);
if (GetHitUnit() != GetCaster())
GetCaster()->CastSpell(GetHitUnit(), SPELL_DEATH_PLAGUE_AURA, true);
- else if (failed)
+ else if (_failed)
GetCaster()->CastSpell(GetCaster(), SPELL_DEATH_PLAGUE_KILL, true);
}
@@ -551,7 +553,7 @@ class spell_frost_giant_death_plague : public SpellScriptLoader
OnEffect += SpellEffectFn(spell_frost_giant_death_plague_SpellScript::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
}
- bool failed;
+ bool _failed;
};
SpellScript* GetSpellScript() const
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 8add43dfd62..7f00fa08ad7 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -80,159 +80,159 @@ class instance_icecrown_citadel : public InstanceMapScript
{
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
- teamInInstance = 0;
- heroicAttempts = MaxHeroicAttempts;
- ladyDeathwisperElevator = 0;
- deathbringerSaurfang = 0;
- saurfangDoor = 0;
- saurfangEventNPC = 0;
- deathbringersCache = 0;
- saurfangTeleport = 0;
- plagueSigil = 0;
- bloodwingSigil = 0;
- frostwingSigil = 0;
- memset(putricidePipes, 0, 2*sizeof(uint64));
- memset(putricideGates, 0, 2*sizeof(uint64));
- putricideCollision = 0;
- festergut = 0;
- rotface = 0;
- professorPutricide = 0;
- putricideTable = 0;
- memset(bloodCouncil, 0, 3*sizeof(uint64));
- bloodCouncilController = 0;
- bloodQueenLanaThel = 0;
- sindragosa = 0;
- spinestalker = 0;
- rimefang = 0;
- frostwyrms = 0;
- spinestalkerTrash = 0;
- rimefangTrash = 0;
- isBonedEligible = true;
- isOozeDanceEligible = true;
- isNauseaEligible = true;
- isOrbWhispererEligible = true;
- coldflameJetsState = NOT_STARTED;
- bloodQuickeningState = NOT_STARTED;
- bloodQuickeningTimer = 0;
- bloodQuickeningMinutes = 0;
+ TeamInInstance = 0;
+ HeroicAttempts = MaxHeroicAttempts;
+ LadyDeathwisperElevatorGUID = 0;
+ DeathbringerSaurfangGUID = 0;
+ DeathbringerSaurfangDoorGUID = 0;
+ DeathbringerSaurfangEventGUID = 0;
+ DeathbringersCacheGUID = 0;
+ SaurfangTeleportGUID = 0;
+ PlagueSigilGUID = 0;
+ BloodwingSigilGUID = 0;
+ FrostwingSigilGUID = 0;
+ memset(PutricidePipeGUIDs, 0, 2*sizeof(uint64));
+ memset(PutricideGateGUIDs, 0, 2*sizeof(uint64));
+ PutricideCollisionGUID = 0;
+ FestergutGUID = 0;
+ RotfaceGUID = 0;
+ ProfessorPutricideGUID = 0;
+ PutricideTableGUID = 0;
+ memset(BloodCouncilGUIDs, 0, 3*sizeof(uint64));
+ BloodCouncilControllerGUID = 0;
+ BloodQueenLanaThelGUID = 0;
+ SindragosaGUID = 0;
+ SpinestalkerGUID = 0;
+ RimefangGUID = 0;
+ FrostwyrmCount = 0;
+ SpinestalkerTrashCount = 0;
+ RimefangTrashCount = 0;
+ IsBonedEligible = true;
+ IsOozeDanceEligible = true;
+ IsNauseaEligible = true;
+ IsOrbWhispererEligible = true;
+ ColdflameJetsState = NOT_STARTED;
+ BloodQuickeningState = NOT_STARTED;
+ BloodQuickeningTimer = 0;
+ BloodQuickeningMinutes = 0;
}
void FillInitialWorldStates(WorldPacket& data)
{
- data << uint32(WORLDSTATE_SHOW_TIMER) << uint32(bloodQuickeningState == IN_PROGRESS);
- data << uint32(WORLDSTATE_EXECUTION_TIME) << uint32(bloodQuickeningMinutes);
+ data << uint32(WORLDSTATE_SHOW_TIMER) << uint32(BloodQuickeningState == IN_PROGRESS);
+ data << uint32(WORLDSTATE_EXECUTION_TIME) << uint32(BloodQuickeningMinutes);
data << uint32(WORLDSTATE_SHOW_ATTEMPTS) << uint32(instance->IsHeroic());
- data << uint32(WORLDSTATE_ATTEMPTS_REMAINING) << uint32(heroicAttempts);
+ data << uint32(WORLDSTATE_ATTEMPTS_REMAINING) << uint32(HeroicAttempts);
data << uint32(WORLDSTATE_ATTEMPTS_MAX) << uint32(MaxHeroicAttempts);
}
void OnPlayerEnter(Player* player)
{
- if (!teamInInstance)
- teamInInstance = player->GetTeam();
+ if (!TeamInInstance)
+ TeamInInstance = player->GetTeam();
}
void OnCreatureCreate(Creature* creature)
{
- if (!teamInInstance)
+ if (!TeamInInstance)
{
Map::PlayerList const &players = instance->GetPlayers();
if (!players.isEmpty())
if (Player* player = players.begin()->getSource())
- teamInInstance = player->GetTeam();
+ TeamInInstance = player->GetTeam();
}
switch (creature->GetEntry())
{
case NPC_KOR_KRON_GENERAL:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_ALLIANCE_COMMANDER, ALLIANCE);
break;
case NPC_KOR_KRON_LIEUTENANT:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_SKYBREAKER_LIEUTENANT, ALLIANCE);
break;
case NPC_TORTUNOK:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_ALANA_MOONSTRIKE, ALLIANCE);
break;
case NPC_GERARDO_THE_SUAVE:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_TALAN_MOONSTRIKE, ALLIANCE);
break;
case NPC_UVLUS_BANEFIRE:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_MALFUS_GRIMFROST, ALLIANCE);
break;
case NPC_IKFIRUS_THE_VILE:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_YILI, ALLIANCE);
break;
case NPC_VOL_GUK:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_JEDEBIA, ALLIANCE);
break;
case NPC_HARAGG_THE_UNSEEN:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_NIBY_THE_ALMIGHTY, ALLIANCE);
break;
case NPC_GARROSH_HELLSCREAM:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_KING_VARIAN_WRYNN, ALLIANCE);
break;
case NPC_DEATHBRINGER_SAURFANG:
- deathbringerSaurfang = creature->GetGUID();
+ DeathbringerSaurfangGUID = creature->GetGUID();
break;
case NPC_SE_HIGH_OVERLORD_SAURFANG:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_SE_MURADIN_BRONZEBEARD, ALLIANCE, creature->GetCreatureData());
case NPC_SE_MURADIN_BRONZEBEARD:
- saurfangEventNPC = creature->GetGUID();
+ DeathbringerSaurfangEventGUID = creature->GetGUID();
creature->LastUsedScriptID = creature->GetScriptId();
break;
case NPC_SE_KOR_KRON_REAVER:
- if (teamInInstance == ALLIANCE)
+ if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_SE_SKYBREAKER_MARINE, ALLIANCE);
break;
case NPC_FROST_FREEZE_TRAP:
- coldflameJets.insert(creature->GetGUID());
+ ColdflameJetGUIDs.insert(creature->GetGUID());
break;
case NPC_FESTERGUT:
- festergut = creature->GetGUID();
+ FestergutGUID = creature->GetGUID();
break;
case NPC_ROTFACE:
- rotface = creature->GetGUID();
+ RotfaceGUID = creature->GetGUID();
break;
case NPC_PROFESSOR_PUTRICIDE:
- professorPutricide = creature->GetGUID();
+ ProfessorPutricideGUID = creature->GetGUID();
break;
case NPC_PRINCE_KELESETH:
- bloodCouncil[0] = creature->GetGUID();
+ BloodCouncilGUIDs[0] = creature->GetGUID();
break;
case NPC_PRINCE_TALDARAM:
- bloodCouncil[1] = creature->GetGUID();
+ BloodCouncilGUIDs[1] = creature->GetGUID();
break;
case NPC_PRINCE_VALANAR:
- bloodCouncil[2] = creature->GetGUID();
+ BloodCouncilGUIDs[2] = creature->GetGUID();
break;
case NPC_BLOOD_ORB_CONTROLLER:
- bloodCouncilController = creature->GetGUID();
+ BloodCouncilControllerGUID = creature->GetGUID();
break;
case NPC_BLOOD_QUEEN_LANA_THEL:
- bloodQueenLanaThel = creature->GetGUID();
+ BloodQueenLanaThelGUID = creature->GetGUID();
break;
case NPC_SINDRAGOSA:
- sindragosa = creature->GetGUID();
+ SindragosaGUID = creature->GetGUID();
break;
case NPC_SPINESTALKER:
- spinestalker = creature->GetGUID();
+ SpinestalkerGUID = creature->GetGUID();
if (!creature->isDead())
- ++frostwyrms;
+ ++FrostwyrmCount;
break;
case NPC_RIMEFANG:
- rimefang = creature->GetGUID();
+ RimefangGUID = creature->GetGUID();
if (!creature->isDead())
- ++frostwyrms;
+ ++FrostwyrmCount;
break;
default:
break;
@@ -275,7 +275,7 @@ class instance_icecrown_citadel : public InstanceMapScript
void OnCreatureRemove(Creature* creature)
{
if (creature->GetEntry() == NPC_FROST_FREEZE_TRAP)
- coldflameJets.erase(creature->GetGUID());
+ ColdflameJetGUIDs.erase(creature->GetGUID());
}
void OnGameObjectCreate(GameObject* go)
@@ -303,7 +303,7 @@ class instance_icecrown_citadel : public InstanceMapScript
AddDoor(go, true);
break;
case GO_LADY_DEATHWHISPER_ELEVATOR:
- ladyDeathwisperElevator = go->GetGUID();
+ LadyDeathwisperElevatorGUID = go->GetGUID();
if (GetBossState(DATA_LADY_DEATHWHISPER) == DONE)
{
go->SetUInt32Value(GAMEOBJECT_LEVEL, 0);
@@ -311,64 +311,64 @@ class instance_icecrown_citadel : public InstanceMapScript
}
break;
case GO_SAURFANG_S_DOOR:
- saurfangDoor = go->GetGUID();
+ DeathbringerSaurfangDoorGUID = go->GetGUID();
AddDoor(go, true);
break;
case GO_DEATHBRINGER_S_CACHE_10N:
case GO_DEATHBRINGER_S_CACHE_25N:
case GO_DEATHBRINGER_S_CACHE_10H:
case GO_DEATHBRINGER_S_CACHE_25H:
- deathbringersCache = go->GetGUID();
+ DeathbringersCacheGUID = go->GetGUID();
break;
case GO_SCOURGE_TRANSPORTER_SAURFANG:
- saurfangTeleport = go->GetGUID();
+ SaurfangTeleportGUID = go->GetGUID();
break;
case GO_PLAGUE_SIGIL:
- plagueSigil = go->GetGUID();
+ PlagueSigilGUID = go->GetGUID();
if (GetBossState(DATA_PROFESSOR_PUTRICIDE) == DONE)
- HandleGameObject(plagueSigil, false, go);
+ HandleGameObject(PlagueSigilGUID, false, go);
break;
case GO_BLOODWING_SIGIL:
- bloodwingSigil = go->GetGUID();
+ BloodwingSigilGUID = go->GetGUID();
if (GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == DONE)
- HandleGameObject(bloodwingSigil, false, go);
+ HandleGameObject(BloodwingSigilGUID, false, go);
break;
case GO_SIGIL_OF_THE_FROSTWING:
- frostwingSigil = go->GetGUID();
+ FrostwingSigilGUID = go->GetGUID();
if (GetBossState(DATA_SINDRAGOSA) == DONE)
- HandleGameObject(frostwingSigil, false, go);
+ HandleGameObject(FrostwingSigilGUID, false, go);
break;
case GO_SCIENTIST_AIRLOCK_DOOR_COLLISION:
- putricideCollision = go->GetGUID();
+ PutricideCollisionGUID = go->GetGUID();
if (GetBossState(DATA_FESTERGUT) == DONE && GetBossState(DATA_ROTFACE) == DONE)
- HandleGameObject(putricideCollision, true, go);
+ HandleGameObject(PutricideCollisionGUID, true, go);
break;
case GO_SCIENTIST_AIRLOCK_DOOR_ORANGE:
- putricideGates[0] = go->GetGUID();
+ PutricideGateGUIDs[0] = go->GetGUID();
if (GetBossState(DATA_FESTERGUT) == DONE && GetBossState(DATA_ROTFACE) == DONE)
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
else if (GetBossState(DATA_FESTERGUT) == DONE)
- HandleGameObject(putricideGates[1], false, go);
+ HandleGameObject(PutricideGateGUIDs[1], false, go);
break;
case GO_SCIENTIST_AIRLOCK_DOOR_GREEN:
- putricideGates[1] = go->GetGUID();
+ PutricideGateGUIDs[1] = go->GetGUID();
if (GetBossState(DATA_ROTFACE) == DONE && GetBossState(DATA_FESTERGUT) == DONE)
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
else if (GetBossState(DATA_ROTFACE) == DONE)
- HandleGameObject(putricideGates[1], false, go);
+ HandleGameObject(PutricideGateGUIDs[1], false, go);
break;
case GO_DOODAD_ICECROWN_ORANGETUBES02:
- putricidePipes[0] = go->GetGUID();
+ PutricidePipeGUIDs[0] = go->GetGUID();
if (GetBossState(DATA_FESTERGUT) == DONE)
- HandleGameObject(putricidePipes[0], true, go);
+ HandleGameObject(PutricidePipeGUIDs[0], true, go);
break;
case GO_DOODAD_ICECROWN_GREENTUBES02:
- putricidePipes[1] = go->GetGUID();
+ PutricidePipeGUIDs[1] = go->GetGUID();
if (GetBossState(DATA_ROTFACE) == DONE)
- HandleGameObject(putricidePipes[1], true, go);
+ HandleGameObject(PutricidePipeGUIDs[1], true, go);
break;
case GO_DRINK_ME:
- putricideTable = go->GetGUID();
+ PutricideTableGUID = go->GetGUID();
break;
default:
break;
@@ -410,19 +410,19 @@ class instance_icecrown_citadel : public InstanceMapScript
switch (type)
{
case DATA_SINDRAGOSA_FROSTWYRMS:
- return frostwyrms;
+ return FrostwyrmCount;
case DATA_SPINESTALKER:
- return spinestalkerTrash;
+ return SpinestalkerTrashCount;
case DATA_RIMEFANG:
- return rimefangTrash;
+ return RimefangTrashCount;
case DATA_COLDFLAME_JETS:
- return coldflameJetsState;
+ return ColdflameJetsState;
case DATA_TEAM_IN_INSTANCE:
- return teamInInstance;
+ return TeamInInstance;
case DATA_BLOOD_QUICKENING_STATE:
- return bloodQuickeningState;
+ return BloodQuickeningState;
case DATA_HEROIC_ATTEMPTS:
- return heroicAttempts;
+ return HeroicAttempts;
default:
break;
}
@@ -435,37 +435,37 @@ class instance_icecrown_citadel : public InstanceMapScript
switch (type)
{
case DATA_DEATHBRINGER_SAURFANG:
- return deathbringerSaurfang;
+ return DeathbringerSaurfangGUID;
case DATA_SAURFANG_EVENT_NPC:
- return saurfangEventNPC;
+ return DeathbringerSaurfangEventGUID;
case GO_SAURFANG_S_DOOR:
- return saurfangDoor;
+ return DeathbringerSaurfangDoorGUID;
case GO_SCOURGE_TRANSPORTER_SAURFANG:
- return saurfangTeleport;
+ return SaurfangTeleportGUID;
case DATA_FESTERGUT:
- return festergut;
+ return FestergutGUID;
case DATA_ROTFACE:
- return rotface;
+ return RotfaceGUID;
case DATA_PROFESSOR_PUTRICIDE:
- return professorPutricide;
+ return ProfessorPutricideGUID;
case DATA_PUTRICIDE_TABLE:
- return putricideTable;
+ return PutricideTableGUID;
case DATA_PRINCE_KELESETH_GUID:
- return bloodCouncil[0];
+ return BloodCouncilGUIDs[0];
case DATA_PRINCE_TALDARAM_GUID:
- return bloodCouncil[1];
+ return BloodCouncilGUIDs[1];
case DATA_PRINCE_VALANAR_GUID:
- return bloodCouncil[2];
+ return BloodCouncilGUIDs[2];
case DATA_BLOOD_PRINCES_CONTROL:
- return bloodCouncilController;
+ return BloodCouncilControllerGUID;
case DATA_BLOOD_QUEEN_LANA_THEL:
- return bloodQueenLanaThel;
+ return BloodQueenLanaThelGUID;
case DATA_SINDRAGOSA:
- return sindragosa;
+ return SindragosaGUID;
case DATA_SPINESTALKER:
- return spinestalker;
+ return SpinestalkerGUID;
case DATA_RIMEFANG:
- return rimefang;
+ return RimefangGUID;
default:
break;
}
@@ -484,7 +484,7 @@ class instance_icecrown_citadel : public InstanceMapScript
SetBossState(DATA_GUNSHIP_EVENT, state); // TEMP HACK UNTIL GUNSHIP SCRIPTED
if (state == DONE)
{
- if (GameObject* elevator = instance->GetGameObject(ladyDeathwisperElevator))
+ if (GameObject* elevator = instance->GetGameObject(LadyDeathwisperElevatorGUID))
{
elevator->SetUInt32Value(GAMEOBJECT_LEVEL, 0);
elevator->SetGoState(GO_STATE_READY);
@@ -495,11 +495,11 @@ class instance_icecrown_citadel : public InstanceMapScript
switch (state)
{
case DONE:
- DoRespawnGameObject(deathbringersCache, 7*DAY);
+ DoRespawnGameObject(DeathbringersCacheGUID, 7*DAY);
case NOT_STARTED:
- if (GameObject* teleporter = instance->GetGameObject(saurfangTeleport))
+ if (GameObject* teleporter = instance->GetGameObject(SaurfangTeleportGUID))
{
- HandleGameObject(saurfangTeleport, true, teleporter);
+ HandleGameObject(SaurfangTeleportGUID, true, teleporter);
teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
}
break;
@@ -512,15 +512,15 @@ class instance_icecrown_citadel : public InstanceMapScript
{
if (GetBossState(DATA_ROTFACE) == DONE)
{
- HandleGameObject(putricideCollision, true);
- if (GameObject* go = instance->GetGameObject(putricideGates[0]))
+ HandleGameObject(PutricideCollisionGUID, true);
+ if (GameObject* go = instance->GetGameObject(PutricideGateGUIDs[0]))
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
- if (GameObject* go = instance->GetGameObject(putricideGates[1]))
+ if (GameObject* go = instance->GetGameObject(PutricideGateGUIDs[1]))
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
}
else
- HandleGameObject(putricideGates[0], false);
- HandleGameObject(putricidePipes[0], true);
+ HandleGameObject(PutricideGateGUIDs[0], false);
+ HandleGameObject(PutricidePipeGUIDs[0], true);
}
break;
case DATA_ROTFACE:
@@ -528,41 +528,41 @@ class instance_icecrown_citadel : public InstanceMapScript
{
if (GetBossState(DATA_FESTERGUT) == DONE)
{
- HandleGameObject(putricideCollision, true);
- if (GameObject* go = instance->GetGameObject(putricideGates[0]))
+ HandleGameObject(PutricideCollisionGUID, true);
+ if (GameObject* go = instance->GetGameObject(PutricideGateGUIDs[0]))
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
- if (GameObject* go = instance->GetGameObject(putricideGates[1]))
+ if (GameObject* go = instance->GetGameObject(PutricideGateGUIDs[1]))
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
}
else
- HandleGameObject(putricideGates[1], false);
- HandleGameObject(putricidePipes[1], true);
+ HandleGameObject(PutricideGateGUIDs[1], false);
+ HandleGameObject(PutricidePipeGUIDs[1], true);
}
break;
case DATA_PROFESSOR_PUTRICIDE:
- HandleGameObject(plagueSigil, state != DONE);
+ HandleGameObject(PlagueSigilGUID, state != DONE);
if (instance->IsHeroic())
{
- if (state == FAIL && heroicAttempts)
+ if (state == FAIL && HeroicAttempts)
{
- --heroicAttempts;
- DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, heroicAttempts);
- if (!heroicAttempts)
- if (Creature* putricide = instance->GetCreature(professorPutricide))
+ --HeroicAttempts;
+ DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
+ if (!HeroicAttempts)
+ if (Creature* putricide = instance->GetCreature(ProfessorPutricideGUID))
putricide->DespawnOrUnsummon();
}
}
break;
case DATA_BLOOD_QUEEN_LANA_THEL:
- HandleGameObject(bloodwingSigil, state != DONE);
+ HandleGameObject(BloodwingSigilGUID, state != DONE);
if (instance->IsHeroic())
{
- if (state == FAIL && heroicAttempts)
+ if (state == FAIL && HeroicAttempts)
{
- --heroicAttempts;
- DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, heroicAttempts);
- if (!heroicAttempts)
- if (Creature* bq = instance->GetCreature(bloodQueenLanaThel))
+ --HeroicAttempts;
+ DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
+ if (!HeroicAttempts)
+ if (Creature* bq = instance->GetCreature(BloodQueenLanaThelGUID))
bq->DespawnOrUnsummon();
}
}
@@ -570,15 +570,15 @@ class instance_icecrown_citadel : public InstanceMapScript
case DATA_VALITHRIA_DREAMWALKER:
break;
case DATA_SINDRAGOSA:
- HandleGameObject(frostwingSigil, state != DONE);
+ HandleGameObject(FrostwingSigilGUID, state != DONE);
if (instance->IsHeroic())
{
- if (state == FAIL && heroicAttempts)
+ if (state == FAIL && HeroicAttempts)
{
- --heroicAttempts;
- DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, heroicAttempts);
- if (!heroicAttempts)
- if (Creature* sindra = instance->GetCreature(sindragosa))
+ --HeroicAttempts;
+ DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
+ if (!HeroicAttempts)
+ if (Creature* sindra = instance->GetCreature(SindragosaGUID))
sindra->DespawnOrUnsummon();
}
}
@@ -597,23 +597,23 @@ class instance_icecrown_citadel : public InstanceMapScript
switch (type)
{
case DATA_BONED_ACHIEVEMENT:
- isBonedEligible = data ? true : false;
+ IsBonedEligible = data ? true : false;
break;
case DATA_OOZE_DANCE_ACHIEVEMENT:
- isOozeDanceEligible = data ? true : false;
+ IsOozeDanceEligible = data ? true : false;
break;
case DATA_NAUSEA_ACHIEVEMENT:
- isNauseaEligible = data ? true : false;
+ IsNauseaEligible = data ? true : false;
break;
case DATA_ORB_WHISPERER_ACHIEVEMENT:
- isOrbWhispererEligible = data ? true : false;
+ IsOrbWhispererEligible = data ? true : false;
break;
case DATA_SINDRAGOSA_FROSTWYRMS:
{
- if (frostwyrms == 255)
+ if (FrostwyrmCount == 255)
return;
- if (instance->IsHeroic() && !heroicAttempts)
+ if (instance->IsHeroic() && !HeroicAttempts)
return;
if (GetBossState(DATA_SINDRAGOSA) != DONE)
@@ -622,10 +622,10 @@ class instance_icecrown_citadel : public InstanceMapScript
switch (data)
{
case 0:
- if (frostwyrms)
+ if (FrostwyrmCount)
{
- --frostwyrms;
- if (!frostwyrms)
+ --FrostwyrmCount;
+ if (!FrostwyrmCount)
{
instance->LoadGrid(SindragosaSpawnPos.GetPositionX(), SindragosaSpawnPos.GetPositionY());
if (Creature* boss = instance->SummonCreature(NPC_SINDRAGOSA, SindragosaSpawnPos))
@@ -634,70 +634,70 @@ class instance_icecrown_citadel : public InstanceMapScript
}
break;
case 1:
- ++frostwyrms;
+ ++FrostwyrmCount;
break;
default:
- frostwyrms = data;
+ FrostwyrmCount = data;
break;
}
break;
}
case DATA_SPINESTALKER:
{
- if (spinestalkerTrash == 255)
+ if (SpinestalkerTrashCount == 255)
return;
switch (data)
{
case 0:
- if (spinestalkerTrash)
+ if (SpinestalkerTrashCount)
{
- --spinestalkerTrash;
- if (!spinestalkerTrash)
- if (Creature* spinestalk = instance->GetCreature(spinestalker))
+ --SpinestalkerTrashCount;
+ if (!SpinestalkerTrashCount)
+ if (Creature* spinestalk = instance->GetCreature(SpinestalkerGUID))
spinestalk->AI()->DoAction(ACTION_START_FROSTWYRM);
}
break;
case 1:
- ++spinestalkerTrash;
+ ++SpinestalkerTrashCount;
break;
default:
- spinestalkerTrash = data;
+ SpinestalkerTrashCount = data;
break;
}
break;
}
case DATA_RIMEFANG:
{
- if (rimefangTrash == 255)
+ if (RimefangTrashCount == 255)
return;
switch (data)
{
case 0:
- if (rimefangTrash)
+ if (RimefangTrashCount)
{
- --rimefangTrash;
- if (!rimefangTrash)
- if (Creature* rime = instance->GetCreature(rimefang))
+ --RimefangTrashCount;
+ if (!RimefangTrashCount)
+ if (Creature* rime = instance->GetCreature(RimefangGUID))
rime->AI()->DoAction(ACTION_START_FROSTWYRM);
}
break;
case 1:
- ++rimefangTrash;
+ ++RimefangTrashCount;
break;
default:
- rimefangTrash = data;
+ RimefangTrashCount = data;
break;
}
break;
}
case DATA_COLDFLAME_JETS:
- coldflameJetsState = data;
- if (coldflameJetsState == DONE)
+ ColdflameJetsState = data;
+ if (ColdflameJetsState == DONE)
{
SaveToDB();
- for (std::set<uint64>::iterator itr = coldflameJets.begin(); itr != coldflameJets.end(); ++itr)
+ for (std::set<uint64>::iterator itr = ColdflameJetGUIDs.begin(); itr != ColdflameJetGUIDs.end(); ++itr)
if (Creature* trap = instance->GetCreature(*itr))
trap->AI()->DoAction(ACTION_STOP_TRAPS);
}
@@ -705,7 +705,7 @@ class instance_icecrown_citadel : public InstanceMapScript
case DATA_BLOOD_QUICKENING_STATE:
{
// skip if nothing changes
- if (bloodQuickeningState == data)
+ if (BloodQuickeningState == data)
break;
// 5 is the index of Blood Quickening
@@ -715,21 +715,21 @@ class instance_icecrown_citadel : public InstanceMapScript
switch (data)
{
case IN_PROGRESS:
- bloodQuickeningTimer = 60000;
- bloodQuickeningMinutes = 30;
+ BloodQuickeningTimer = 60000;
+ BloodQuickeningMinutes = 30;
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
- DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, bloodQuickeningMinutes);
+ DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
break;
case DONE:
- bloodQuickeningTimer = 0;
- bloodQuickeningMinutes = 0;
+ BloodQuickeningTimer = 0;
+ BloodQuickeningMinutes = 0;
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0);
break;
default:
break;
}
- bloodQuickeningState = data;
+ BloodQuickeningState = data;
SaveToDB();
break;
}
@@ -746,22 +746,22 @@ class instance_icecrown_citadel : public InstanceMapScript
case CRITERIA_BONED_25N:
case CRITERIA_BONED_10H:
case CRITERIA_BONED_25H:
- return isBonedEligible;
+ return IsBonedEligible;
case CRITERIA_DANCES_WITH_OOZES_10N:
case CRITERIA_DANCES_WITH_OOZES_25N:
case CRITERIA_DANCES_WITH_OOZES_10H:
case CRITERIA_DANCES_WITH_OOZES_25H:
- return isOozeDanceEligible;
+ return IsOozeDanceEligible;
case CRITERIA_NAUSEA_10N:
case CRITERIA_NAUSEA_25N:
case CRITERIA_NAUSEA_10H:
case CRITERIA_NAUSEA_25H:
- return isNauseaEligible;
+ return IsNauseaEligible;
case CRITERIA_ORB_WHISPERER_10N:
case CRITERIA_ORB_WHISPERER_25N:
case CRITERIA_ORB_WHISPERER_10H:
case CRITERIA_ORB_WHISPERER_25H:
- return isOrbWhispererEligible;
+ return IsOrbWhispererEligible;
// Only one criteria for both modes, need to do it like this
case CRITERIA_KILL_LANA_THEL_10M:
case CRITERIA_ONCE_BITTEN_TWICE_SHY_10N:
@@ -916,8 +916,8 @@ class instance_icecrown_citadel : public InstanceMapScript
OUT_SAVE_INST_DATA;
std::ostringstream saveStream;
- saveStream << "I C " << GetBossSaveData() << coldflameJetsState
- << " " << bloodQuickeningState << " " << bloodQuickeningMinutes;
+ saveStream << "I C " << GetBossSaveData() << ColdflameJetsState
+ << " " << BloodQuickeningState << " " << BloodQuickeningMinutes;
OUT_SAVE_INST_DATA_COMPLETE;
return saveStream.str();
@@ -951,11 +951,11 @@ class instance_icecrown_citadel : public InstanceMapScript
uint32 temp = 0;
loadStream >> temp;
- coldflameJetsState = temp ? DONE : NOT_STARTED;
+ ColdflameJetsState = temp ? DONE : NOT_STARTED;
temp = 0;
loadStream >> temp;
- bloodQuickeningState = temp ? DONE : NOT_STARTED; // DONE means finished (not success/fail)
- loadStream >> bloodQuickeningMinutes;
+ BloodQuickeningState = temp ? DONE : NOT_STARTED; // DONE means finished (not success/fail)
+ loadStream >> BloodQuickeningMinutes;
}
else
OUT_LOAD_INST_DATA_FAIL;
@@ -965,68 +965,68 @@ class instance_icecrown_citadel : public InstanceMapScript
void Update(uint32 diff)
{
- if (bloodQuickeningState == IN_PROGRESS)
+ if (BloodQuickeningState == IN_PROGRESS)
{
- if (bloodQuickeningTimer <= diff)
+ if (BloodQuickeningTimer <= diff)
{
- --bloodQuickeningMinutes;
- bloodQuickeningTimer = 60000;
- if (bloodQuickeningMinutes)
+ --BloodQuickeningMinutes;
+ BloodQuickeningTimer = 60000;
+ if (BloodQuickeningMinutes)
{
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
- DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, bloodQuickeningMinutes);
+ DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
}
else
{
- bloodQuickeningState = DONE;
+ BloodQuickeningState = DONE;
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0);
- if (Creature* bq = instance->GetCreature(bloodQueenLanaThel))
+ if (Creature* bq = instance->GetCreature(BloodQueenLanaThelGUID))
bq->AI()->DoAction(ACTION_KILL_MINCHAR);
}
SaveToDB();
}
else
- bloodQuickeningTimer -= diff;
+ BloodQuickeningTimer -= diff;
}
}
- private:
- std::set<uint64> coldflameJets;
- uint64 ladyDeathwisperElevator;
- uint64 deathbringerSaurfang;
- uint64 saurfangDoor;
- uint64 saurfangEventNPC; // Muradin Bronzebeard or High Overlord Saurfang
- uint64 deathbringersCache;
- uint64 saurfangTeleport;
- uint64 plagueSigil;
- uint64 bloodwingSigil;
- uint64 frostwingSigil;
- uint64 putricidePipes[2];
- uint64 putricideGates[2];
- uint64 putricideCollision;
- uint64 festergut;
- uint64 rotface;
- uint64 professorPutricide;
- uint64 putricideTable;
- uint64 bloodCouncil[3];
- uint64 bloodCouncilController;
- uint64 bloodQueenLanaThel;
- uint64 sindragosa;
- uint64 spinestalker;
- uint64 rimefang;
- uint32 teamInInstance;
- uint32 bloodQuickeningTimer;
- uint32 coldflameJetsState;
- uint32 frostwyrms;
- uint32 spinestalkerTrash;
- uint32 rimefangTrash;
- uint32 bloodQuickeningState;
- uint16 heroicAttempts;
- uint16 bloodQuickeningMinutes;
- bool isBonedEligible;
- bool isOozeDanceEligible;
- bool isNauseaEligible;
- bool isOrbWhispererEligible;
+ protected:
+ std::set<uint64> ColdflameJetGUIDs;
+ uint64 LadyDeathwisperElevatorGUID;
+ uint64 DeathbringerSaurfangGUID;
+ uint64 DeathbringerSaurfangDoorGUID;
+ uint64 DeathbringerSaurfangEventGUID; // Muradin Bronzebeard or High Overlord Saurfang
+ uint64 DeathbringersCacheGUID;
+ uint64 SaurfangTeleportGUID;
+ uint64 PlagueSigilGUID;
+ uint64 BloodwingSigilGUID;
+ uint64 FrostwingSigilGUID;
+ uint64 PutricidePipeGUIDs[2];
+ uint64 PutricideGateGUIDs[2];
+ uint64 PutricideCollisionGUID;
+ uint64 FestergutGUID;
+ uint64 RotfaceGUID;
+ uint64 ProfessorPutricideGUID;
+ uint64 PutricideTableGUID;
+ uint64 BloodCouncilGUIDs[3];
+ uint64 BloodCouncilControllerGUID;
+ uint64 BloodQueenLanaThelGUID;
+ uint64 SindragosaGUID;
+ uint64 SpinestalkerGUID;
+ uint64 RimefangGUID;
+ uint32 TeamInInstance;
+ uint32 BloodQuickeningTimer;
+ uint32 ColdflameJetsState;
+ uint32 FrostwyrmCount;
+ uint32 SpinestalkerTrashCount;
+ uint32 RimefangTrashCount;
+ uint32 BloodQuickeningState;
+ uint16 HeroicAttempts;
+ uint16 BloodQuickeningMinutes;
+ bool IsBonedEligible;
+ bool IsOozeDanceEligible;
+ bool IsNauseaEligible;
+ bool IsOrbWhispererEligible;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const