diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-05-06 22:10:22 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-05-06 22:10:22 +0200 |
commit | 3690ce35b730863ca36e0264e19b68dd918383af (patch) | |
tree | 89c7ef6354ae4205649a6bb0513ec1b5167bb1c7 /src | |
parent | 3f7926e0d213154b34d7bfdc38fb2e40dcfe6cb1 (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')
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 |