aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <none@none>2010-11-20 21:27:10 +0100
committerShauren <none@none>2010-11-20 21:27:10 +0100
commit6d244e8f136179b9896aa1fb605acf451fa145f0 (patch)
tree88b718ed9c5af9777efbf8e06cfc8fa103239f9c
parent417b29af24849ab75f140b484ef3187ebb87176e (diff)
Scripts/Forge of Souls: Cleaned up code style
Scripts/Forge of Souls: Fixed a possible crash Closes issue #4660. --HG-- branch : trunk
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp75
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp391
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp140
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h14
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp39
5 files changed, 338 insertions, 321 deletions
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index 512db1273cc..52fd32b2498 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -65,11 +65,16 @@ class boss_bronjahm : public CreatureScript
struct boss_bronjahmAI : public BossAI
{
- boss_bronjahmAI(Creature* pCreature) : BossAI(pCreature, DATA_BRONJAHM)
+ boss_bronjahmAI(Creature* creature) : BossAI(creature, DATA_BRONJAHM)
{
- // disable AI outside of instance
- if (!instance)
+ }
+
+ void InitializeAI()
+ {
+ if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(FoSScriptName))
me->IsAIEnabled = false;
+ else if (!me->isDead())
+ Reset();
}
void Reset()
@@ -176,55 +181,55 @@ class boss_bronjahm : public CreatureScript
}
};
- CreatureAI *GetAI(Creature* pCreature) const
+ CreatureAI *GetAI(Creature* creature) const
{
- return new boss_bronjahmAI(pCreature);
+ return new boss_bronjahmAI(creature);
}
};
class mob_corrupted_soul_fragment : public CreatureScript
{
-public:
- mob_corrupted_soul_fragment() : CreatureScript("mob_corrupted_soul_fragment") { }
-
- struct mob_corrupted_soul_fragmentAI : public ScriptedAI
- {
- mob_corrupted_soul_fragmentAI(Creature* pCreature) : ScriptedAI(pCreature)
- {
- instance = me->GetInstanceScript();
- }
+ public:
+ mob_corrupted_soul_fragment() : CreatureScript("mob_corrupted_soul_fragment") { }
- void MovementInform(uint32 type, uint32 id)
+ struct mob_corrupted_soul_fragmentAI : public ScriptedAI
{
- if (type != TARGETED_MOTION_TYPE)
- return;
+ mob_corrupted_soul_fragmentAI(Creature* creature) : ScriptedAI(creature)
+ {
+ instance = me->GetInstanceScript();
+ }
- uint64 BronjahmGUID = 0;
- if (instance)
+ void MovementInform(uint32 type, uint32 id)
{
- if (TempSummon* summ = me->ToTempSummon())
+ if (type != TARGETED_MOTION_TYPE)
+ return;
+
+ uint64 BronjahmGUID = 0;
+ if (instance)
{
- BronjahmGUID = instance->GetData64(DATA_BRONJAHM);
- if (GUID_LOPART(BronjahmGUID) != id)
- return;
+ if (TempSummon* summ = me->ToTempSummon())
+ {
+ BronjahmGUID = instance->GetData64(DATA_BRONJAHM);
+ if (GUID_LOPART(BronjahmGUID) != id)
+ return;
- if (Creature* bronjahm = ObjectAccessor::GetCreature(*me, BronjahmGUID))
- me->CastSpell(bronjahm, SPELL_CONSUME_SOUL, true);
+ if (Creature* bronjahm = ObjectAccessor::GetCreature(*me, BronjahmGUID))
+ me->CastSpell(bronjahm, SPELL_CONSUME_SOUL, true);
- summ->GetMotionMaster()->MoveIdle();
- summ->UnSummon();
+ summ->GetMotionMaster()->MoveIdle();
+ summ->UnSummon();
+ }
}
}
- }
- private:
- InstanceScript* instance;
- };
+ private:
+ InstanceScript* instance;
+ };
- CreatureAI *GetAI(Creature* pCreature) const
- {
- return new mob_corrupted_soul_fragmentAI(pCreature);
- }
+ CreatureAI *GetAI(Creature* creature) const
+ {
+ return new mob_corrupted_soul_fragmentAI(creature);
+ }
};
class spell_bronjahm_magic_bane : public SpellScriptLoader
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
index 656efc35640..b1d5f3478b8 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
@@ -67,22 +67,21 @@ enum Spells
enum Events
{
- EVENT_NONE,
- EVENT_PHANTOM_BLAST,
- EVENT_MIRRORED_SOUL,
- EVENT_WELL_OF_SOULS,
- EVENT_UNLEASHED_SOULS,
- EVENT_WAILING_SOULS,
- EVENT_WAILING_SOULS_TICK,
- EVENT_FACE_ANGER,
+ EVENT_PHANTOM_BLAST = 1,
+ EVENT_MIRRORED_SOUL = 2,
+ EVENT_WELL_OF_SOULS = 3,
+ EVENT_UNLEASHED_SOULS = 4,
+ EVENT_WAILING_SOULS = 5,
+ EVENT_WAILING_SOULS_TICK = 6,
+ EVENT_FACE_ANGER = 7,
};
enum eEnum
{
- ACHIEV_THREE_FACED = 4523,
- DISPLAY_ANGER = 30148,
- DISPLAY_SORROW = 30149,
- DISPLAY_DESIRE = 30150,
+ ACHIEV_THREE_FACED = 4523,
+ DISPLAY_ANGER = 30148,
+ DISPLAY_SORROW = 30149,
+ DISPLAY_DESIRE = 30150,
};
struct outroPosition
@@ -119,231 +118,247 @@ struct outroPosition
class boss_devourer_of_souls : public CreatureScript
{
-public:
- boss_devourer_of_souls() : CreatureScript("boss_devourer_of_souls") { }
+ public:
+ boss_devourer_of_souls() : CreatureScript("boss_devourer_of_souls") { }
- struct boss_devourer_of_soulsAI : public BossAI
- {
- boss_devourer_of_soulsAI(Creature *c) : BossAI(c, DATA_DEVOURER_EVENT)
+ struct boss_devourer_of_soulsAI : public BossAI
{
- pInstance = c->GetInstanceScript();
- }
-
- bool bThreeFaceAchievement;
-
- InstanceScript* pInstance;
-
- // wailing soul event
- float beamAngle;
- float beamAngleDiff;
- int8 wailingSoulTick;
+ boss_devourer_of_soulsAI(Creature *creature) : BossAI(creature, DATA_DEVOURER_EVENT)
+ {
+ }
- uint64 uiMirroredSoulTarget;
+ void InitializeAI()
+ {
+ if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(FoSScriptName))
+ me->IsAIEnabled = false;
+ else if (!me->isDead())
+ Reset();
+ }
- void Reset()
- {
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
- me->SetDisplayId(DISPLAY_ANGER);
- me->SetReactState(REACT_AGGRESSIVE);
+ void Reset()
+ {
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
+ me->SetDisplayId(DISPLAY_ANGER);
+ me->SetReactState(REACT_AGGRESSIVE);
- events.Reset();
+ events.Reset();
- bThreeFaceAchievement = true;
- uiMirroredSoulTarget = 0;
+ threeFaceAchievement = true;
+ mirroredSoulTarget = 0;
- if (pInstance)
- pInstance->SetData(DATA_DEVOURER_EVENT, NOT_STARTED);
- }
+ instance->SetData(DATA_DEVOURER_EVENT, NOT_STARTED);
+ }
- void EnterCombat(Unit* /*who*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_DEVOURER_EVENT, IN_PROGRESS);
+ void EnterCombat(Unit* /*who*/)
+ {
+ DoScriptText(RAND(SAY_FACE_ANGER_AGGRO, SAY_FACE_DESIRE_AGGRO), me);
- DoScriptText(RAND(SAY_FACE_ANGER_AGGRO,SAY_FACE_DESIRE_AGGRO), me);
+ events.ScheduleEvent(EVENT_PHANTOM_BLAST, 5000);
+ events.ScheduleEvent(EVENT_MIRRORED_SOUL, 8000);
+ events.ScheduleEvent(EVENT_WELL_OF_SOULS, 30000);
+ events.ScheduleEvent(EVENT_UNLEASHED_SOULS, 20000);
+ events.ScheduleEvent(EVENT_WAILING_SOULS, urand(60000, 70000));
- events.ScheduleEvent(EVENT_PHANTOM_BLAST, 5000);
- events.ScheduleEvent(EVENT_MIRRORED_SOUL, 8000);
- events.ScheduleEvent(EVENT_WELL_OF_SOULS, 30000);
- events.ScheduleEvent(EVENT_UNLEASHED_SOULS, 20000);
- events.ScheduleEvent(EVENT_WAILING_SOULS, urand(60000,70000));
- }
+ instance->SetData(DATA_DEVOURER_EVENT, IN_PROGRESS);
+ }
- void DamageTaken(Unit * /*pDoneBy*/, uint32 &uiDamage)
- {
- if (uiMirroredSoulTarget && me->HasAura(SPELL_MIRRORED_SOUL))
+ void DamageTaken(Unit * /*pDoneBy*/, uint32 &uiDamage)
{
- if (Player *pPlayer = Unit::GetPlayer(*me, uiMirroredSoulTarget))
+ if (mirroredSoulTarget && me->HasAura(SPELL_MIRRORED_SOUL))
{
- if (pPlayer->GetAura(SPELL_MIRRORED_SOUL))
+ if (Player *player = Unit::GetPlayer(*me, mirroredSoulTarget))
{
- int32 mirrorDamage = (uiDamage * 45)/100;
- me->CastCustomSpell(pPlayer, 69034, &mirrorDamage, 0, 0, true);
- // me->DealDamage(pPlayer, (uiDamage * 45)/100, 0, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_SHADOW);
+ if (player->GetAura(SPELL_MIRRORED_SOUL))
+ {
+ int32 mirrorDamage = (uiDamage * 45)/100;
+ me->CastCustomSpell(player, 69034, &mirrorDamage, 0, 0, true);
+ }
+ else
+ mirroredSoulTarget = 0;
}
- else
- uiMirroredSoulTarget = 0;
}
}
- }
- void KilledUnit(Unit * /*victim*/)
- {
- DoScriptText(RAND(SAY_FACE_ANGER_SLAY_1,SAY_FACE_SORROW_SLAY_1,SAY_FACE_DESIRE_SLAY_1,
- SAY_FACE_ANGER_SLAY_2,SAY_FACE_SORROW_SLAY_2,SAY_FACE_DESIRE_SLAY_2), me);
- }
+ void KilledUnit(Unit* victim)
+ {
+ if (victim->GetTypeId() != TYPEID_PLAYER)
+ return;
- void JustDied(Unit* /*killer*/)
- {
- Position spawnPoint = { 5618.139f, 2451.873f, 705.854f, 0 };
+ int32 textId = 0;
+ switch (me->GetDisplayId())
+ {
+ case DISPLAY_ANGER:
+ textId = RAND(SAY_FACE_ANGER_SLAY_1, SAY_FACE_ANGER_SLAY_2);
+ break;
+ case DISPLAY_SORROW:
+ textId = RAND(SAY_FACE_SORROW_SLAY_1, SAY_FACE_SORROW_SLAY_2);
+ break;
+ case DISPLAY_DESIRE:
+ textId = RAND(SAY_FACE_DESIRE_SLAY_1, SAY_FACE_DESIRE_SLAY_2);
+ break;
+ default:
+ break;
+ }
- DoScriptText(RAND(SAY_FACE_SORROW_DEATH,SAY_FACE_DESIRE_DEATH), me);
+ if (textId)
+ DoScriptText(textId, me);
+ }
- if (pInstance)
+ void JustDied(Unit* /*killer*/)
{
- pInstance->SetData(DATA_DEVOURER_EVENT, DONE);
+ Position spawnPoint = {5618.139f, 2451.873f, 705.854f, 0};
+
+ DoScriptText(RAND(SAY_FACE_SORROW_DEATH, SAY_FACE_DESIRE_DEATH), me);
- if (bThreeFaceAchievement && IsHeroic())
- pInstance->DoCompleteAchievement(ACHIEV_THREE_FACED);
+ instance->SetData(DATA_DEVOURER_EVENT, DONE);
+
+ if (threeFaceAchievement && IsHeroic())
+ instance->DoCompleteAchievement(ACHIEV_THREE_FACED);
int32 entryIndex;
- if (pInstance->GetData(DATA_TEAM_IN_INSTANCE) == TEAM_ALLIANCE)
+ if (instance->GetData(DATA_TEAM_IN_INSTANCE) == TEAM_ALLIANCE)
entryIndex = 0;
else
entryIndex = 1;
for (int8 i = 0; outroPositions[i].entry[entryIndex] != 0; ++i)
{
- if (Creature *pSummon = me->SummonCreature(outroPositions[i].entry[entryIndex], spawnPoint, TEMPSUMMON_DEAD_DESPAWN))
+ if (Creature *summon = me->SummonCreature(outroPositions[i].entry[entryIndex], spawnPoint, TEMPSUMMON_DEAD_DESPAWN))
{
- pSummon->GetMotionMaster()->MovePoint(0, outroPositions[i].movePosition);
-
- if (pSummon->GetEntry() == NPC_JAINA_PART2)
- DoScriptText(SAY_JAINA_OUTRO, pSummon);
- else if (pSummon->GetEntry() == NPC_SYLVANAS_PART2)
- DoScriptText(SAY_SYLVANAS_OUTRO, pSummon);
+ summon->GetMotionMaster()->MovePoint(0, outroPositions[i].movePosition);
+ if (summon->GetEntry() == NPC_JAINA_PART2)
+ DoScriptText(SAY_JAINA_OUTRO, summon);
+ else if (summon->GetEntry() == NPC_SYLVANAS_PART2)
+ DoScriptText(SAY_SYLVANAS_OUTRO, summon);
}
}
}
- }
-
- void SpellHitTarget(Unit* /*pTarget*/, const SpellEntry *pSpell)
- {
- if (pSpell->Id == H_SPELL_PHANTOM_BLAST)
- bThreeFaceAchievement = false;
- }
-
- void UpdateAI(const uint32 diff)
- {
- // Return since we have no target
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
- if (me->hasUnitState(UNIT_STAT_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
+ void SpellHitTarget(Unit* /*target*/, const SpellEntry *spell)
{
- switch(eventId)
- {
- case EVENT_PHANTOM_BLAST:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0))
- DoCast(pTarget, SPELL_PHANTOM_BLAST);
- events.ScheduleEvent(EVENT_PHANTOM_BLAST, 5000);
- break;
- case EVENT_MIRRORED_SOUL:
- if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
- {
- uiMirroredSoulTarget = pTarget->GetGUID();
- DoCast(pTarget, SPELL_MIRRORED_SOUL);
- DoScriptText(EMOTE_MIRRORED_SOUL, me);
- }
- events.ScheduleEvent(EVENT_MIRRORED_SOUL, urand(15000,30000));
- break;
- case EVENT_WELL_OF_SOULS:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_WELL_OF_SOULS);
- events.ScheduleEvent(EVENT_WELL_OF_SOULS, 20000);
- break;
- case EVENT_UNLEASHED_SOULS:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_UNLEASHED_SOULS);
- me->SetDisplayId(DISPLAY_SORROW);
- DoScriptText(RAND(SAY_FACE_ANGER_UNLEASH_SOUL,SAY_FACE_SORROW_UNLEASH_SOUL,SAY_FACE_DESIRE_UNLEASH_SOUL), me);
- DoScriptText(EMOTE_UNLEASH_SOUL, me);
- events.ScheduleEvent(EVENT_UNLEASHED_SOULS, 30000);
- events.ScheduleEvent(EVENT_FACE_ANGER, 5000);
- break;
- case EVENT_FACE_ANGER:
- me->SetDisplayId(DISPLAY_ANGER);
- break;
-
- case EVENT_WAILING_SOULS:
- me->SetDisplayId(DISPLAY_DESIRE);
- DoScriptText(RAND(SAY_FACE_ANGER_WAILING_SOUL,SAY_FACE_DESIRE_WAILING_SOUL), me);
- DoScriptText(EMOTE_WAILING_SOUL, me);
- DoCast(me, SPELL_WAILING_SOULS_STARTING);
-
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- {
- me->SetOrientation(me->GetAngle(pTarget));
- DoCast(me, SPELL_WAILING_SOULS_BEAM);
- }
-
- beamAngle = me->GetOrientation();
+ if (spell->Id == H_SPELL_PHANTOM_BLAST)
+ threeFaceAchievement = false;
+ }
- beamAngleDiff = M_PI/30.0f; // PI/2 in 15 sec = PI/30 per tick
- if (RAND(true,false))
- beamAngleDiff = -beamAngleDiff;
+ void UpdateAI(const uint32 diff)
+ {
+ // Return since we have no target
+ if (!UpdateVictim())
+ return;
- me->InterruptNonMeleeSpells(false);
- me->SetReactState(REACT_PASSIVE);
+ events.Update(diff);
- //Remove any target
- me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
+ if (me->hasUnitState(UNIT_STAT_CASTING))
+ return;
- me->GetMotionMaster()->Clear();
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch(eventId)
+ {
+ case EVENT_PHANTOM_BLAST:
+ DoCastVictim(SPELL_PHANTOM_BLAST);
+ events.ScheduleEvent(EVENT_PHANTOM_BLAST, 5000);
+ break;
+ case EVENT_MIRRORED_SOUL:
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
+ {
+ mirroredSoulTarget = target->GetGUID();
+ DoCast(target, SPELL_MIRRORED_SOUL);
+ DoScriptText(EMOTE_MIRRORED_SOUL, me);
+ }
+ events.ScheduleEvent(EVENT_MIRRORED_SOUL, urand(15000, 30000));
+ break;
+ case EVENT_WELL_OF_SOULS:
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_WELL_OF_SOULS);
+ events.ScheduleEvent(EVENT_WELL_OF_SOULS, 20000);
+ break;
+ case EVENT_UNLEASHED_SOULS:
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_UNLEASHED_SOULS);
+ me->SetDisplayId(DISPLAY_SORROW);
+ DoScriptText(RAND(SAY_FACE_ANGER_UNLEASH_SOUL, SAY_FACE_SORROW_UNLEASH_SOUL, SAY_FACE_DESIRE_UNLEASH_SOUL), me);
+ DoScriptText(EMOTE_UNLEASH_SOUL, me);
+ events.ScheduleEvent(EVENT_UNLEASHED_SOULS, 30000);
+ events.ScheduleEvent(EVENT_FACE_ANGER, 5000);
+ break;
+ case EVENT_FACE_ANGER:
+ me->SetDisplayId(DISPLAY_ANGER);
+ break;
+
+ case EVENT_WAILING_SOULS:
+ me->SetDisplayId(DISPLAY_DESIRE);
+ DoScriptText(RAND(SAY_FACE_ANGER_WAILING_SOUL,SAY_FACE_DESIRE_WAILING_SOUL), me);
+ DoScriptText(EMOTE_WAILING_SOUL, me);
+ DoCast(me, SPELL_WAILING_SOULS_STARTING);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ {
+ me->SetOrientation(me->GetAngle(target));
+ DoCast(me, SPELL_WAILING_SOULS_BEAM);
+ }
+
+ beamAngle = me->GetOrientation();
+
+ beamAngleDiff = M_PI/30.0f; // PI/2 in 15 sec = PI/30 per tick
+ if (RAND(true, false))
+ beamAngleDiff = -beamAngleDiff;
+
+ me->InterruptNonMeleeSpells(false);
+ me->SetReactState(REACT_PASSIVE);
+
+ //Remove any target
+ me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
+
+ me->GetMotionMaster()->Clear();
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
+
+ wailingSoulTick = 15;
+ events.DelayEvents(18000); // no other events during wailing souls
+ events.ScheduleEvent(EVENT_WAILING_SOULS_TICK, 3000); // first one after 3 secs.
+ break;
+
+ case EVENT_WAILING_SOULS_TICK:
+ beamAngle += beamAngleDiff;
+ me->SetOrientation(beamAngle);
+ me->StopMoving();
+
+ DoCast(me, SPELL_WAILING_SOULS);
+
+ if (--wailingSoulTick)
+ events.ScheduleEvent(EVENT_WAILING_SOULS_TICK, 1000);
+ else
+ {
+ me->SetReactState(REACT_AGGRESSIVE);
+ me->SetDisplayId(DISPLAY_ANGER);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
+ me->GetMotionMaster()->MoveChase(me->getVictim());
+ events.ScheduleEvent(EVENT_WAILING_SOULS, urand(60000,70000));
+ }
+ break;
+ }
+ }
- wailingSoulTick = 15;
- events.DelayEvents(18000); // no other events during wailing souls
- events.ScheduleEvent(EVENT_WAILING_SOULS_TICK, 3000); // first one after 3 secs.
- break;
+ DoMeleeAttackIfReady();
+ }
- case EVENT_WAILING_SOULS_TICK:
- beamAngle += beamAngleDiff;
- me->SetOrientation(beamAngle);
- me->StopMoving();
+ private:
+ bool threeFaceAchievement;
- DoCast(me, SPELL_WAILING_SOULS);
+ // wailing soul event
+ float beamAngle;
+ float beamAngleDiff;
+ int8 wailingSoulTick;
- if (--wailingSoulTick)
- events.ScheduleEvent(EVENT_WAILING_SOULS_TICK, 1000);
- else
- {
- me->SetReactState(REACT_AGGRESSIVE);
- me->SetDisplayId(DISPLAY_ANGER);
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
- me->GetMotionMaster()->MoveChase(me->getVictim());
- events.ScheduleEvent(EVENT_WAILING_SOULS, urand(60000,70000));
- }
- break;
- }
- }
+ uint64 mirroredSoulTarget;
+ };
- DoMeleeAttackIfReady();
+ CreatureAI *GetAI(Creature* creature) const
+ {
+ return new boss_devourer_of_soulsAI(creature);
}
- };
-
- CreatureAI *GetAI(Creature *creature) const
- {
- return new boss_devourer_of_soulsAI(creature);
- }
};
void AddSC_boss_devourer_of_souls()
{
- new boss_devourer_of_souls;
+ new boss_devourer_of_souls();
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
index 729145e157b..8a178407a86 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
@@ -154,7 +154,7 @@ public:
struct npc_sylvanas_fosAI : public ScriptedAI
{
- npc_sylvanas_fosAI(Creature *c) : ScriptedAI(c)
+ npc_sylvanas_fosAI(Creature* creature) : ScriptedAI(creature)
{
pInstance = me->GetInstanceScript();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
@@ -237,37 +237,37 @@ public:
}
};
- bool OnGossipHello(Player* pPlayer, Creature* pCreature)
+ bool OnGossipHello(Player* player, Creature* creature)
{
- if (pCreature->isQuestGiver())
- pPlayer->PrepareQuestMenu(pCreature->GetGUID());
+ if (creature->isQuestGiver())
+ player->PrepareQuestMenu(creature->GetGUID());
- if (pCreature->GetEntry() == NPC_JAINA_PART1)
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_JAINA_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
+ if (creature->GetEntry() == NPC_JAINA_PART1)
+ player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_JAINA_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
else
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SYLVANAS_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
+ player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SYLVANAS_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
- pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
+ player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
}
- bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
+ bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
{
- pPlayer->PlayerTalkClass->ClearMenus();
+ player->PlayerTalkClass->ClearMenus();
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF+1:
- pPlayer->CLOSE_GOSSIP_MENU();
+ player->CLOSE_GOSSIP_MENU();
- if (pCreature->AI())
- pCreature->AI()->DoAction(ACTION_INTRO);
+ if (creature->AI())
+ creature->AI()->DoAction(ACTION_INTRO);
break;
}
return true;
}
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new npc_sylvanas_fosAI(creature);
}
@@ -280,7 +280,7 @@ public:
struct npc_jaina_fosAI: public ScriptedAI
{
- npc_jaina_fosAI(Creature *c) : ScriptedAI(c)
+ npc_jaina_fosAI(Creature* creature) : ScriptedAI(creature)
{
pInstance = me->GetInstanceScript();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
@@ -374,37 +374,37 @@ public:
}
};
- bool OnGossipHello(Player* pPlayer, Creature* pCreature)
+ bool OnGossipHello(Player* player, Creature* creature)
{
- if (pCreature->isQuestGiver())
- pPlayer->PrepareQuestMenu(pCreature->GetGUID());
+ if (creature->isQuestGiver())
+ player->PrepareQuestMenu(creature->GetGUID());
- if (pCreature->GetEntry() == NPC_JAINA_PART1)
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_JAINA_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
+ if (creature->GetEntry() == NPC_JAINA_PART1)
+ player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_JAINA_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
else
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SYLVANAS_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
+ player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SYLVANAS_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
- pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
+ player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
}
- bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
+ bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
{
- pPlayer->PlayerTalkClass->ClearMenus();
+ player->PlayerTalkClass->ClearMenus();
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF+1:
- pPlayer->CLOSE_GOSSIP_MENU();
+ player->CLOSE_GOSSIP_MENU();
- if (pCreature->AI())
- pCreature->AI()->DoAction(ACTION_INTRO);
+ if (creature->AI())
+ creature->AI()->DoAction(ACTION_INTRO);
break;
}
return true;
}
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new npc_jaina_fosAI(creature);
}
@@ -417,7 +417,7 @@ public:
struct mob_spiteful_apparitionAI: public ScriptedAI
{
- mob_spiteful_apparitionAI(Creature *c) : ScriptedAI(c)
+ mob_spiteful_apparitionAI(Creature* creature) : ScriptedAI(creature)
{
}
@@ -449,7 +449,7 @@ public:
switch(eventId)
{
case EVENT_SPITE:
- DoCast(me->getVictim(), SPELL_SPITE);
+ DoCastVictim(SPELL_SPITE);
events.RescheduleEvent(EVENT_SPITE, 8000);
return;
}
@@ -459,7 +459,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_spiteful_apparitionAI(creature);
}
@@ -472,7 +472,7 @@ public:
struct mob_spectral_wardenAI: public ScriptedAI
{
- mob_spectral_wardenAI(Creature *c) : ScriptedAI(c)
+ mob_spectral_wardenAI(Creature* creature) : ScriptedAI(creature)
{
}
@@ -505,12 +505,12 @@ public:
switch(eventId)
{
case EVENT_VEIL_OF_SHADOWS:
- DoCast(me->getVictim(), SPELL_VEIL_OF_SHADOWS);
+ DoCastVictim(SPELL_VEIL_OF_SHADOWS);
events.RescheduleEvent(EVENT_VEIL_OF_SHADOWS, 10000);
return;
case EVENT_WAIL_OF_SOULS:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_WAIL_OF_SOULS);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_WAIL_OF_SOULS);
events.RescheduleEvent(EVENT_WAIL_OF_SOULS, 5000);
return;
}
@@ -519,7 +519,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_spectral_wardenAI(creature);
}
@@ -532,7 +532,7 @@ public:
struct mob_soulguard_watchmanAI: public ScriptedAI
{
- mob_soulguard_watchmanAI(Creature *c) : ScriptedAI(c) { }
+ mob_soulguard_watchmanAI(Creature* creature) : ScriptedAI(creature) { }
EventMap events;
@@ -576,7 +576,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_soulguard_watchmanAI(creature);
}
@@ -589,7 +589,7 @@ public:
struct mob_soulguard_reaperAI: public ScriptedAI
{
- mob_soulguard_reaperAI(Creature *c) : ScriptedAI(c) { }
+ mob_soulguard_reaperAI(Creature* creature) : ScriptedAI(creature) { }
EventMap events;
@@ -624,8 +624,8 @@ public:
events.RescheduleEvent(EVENT_FROST_NOVA, 9600);
return;
case EVENT_SHADOW_LANCE:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_SHADOW_LANCE);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_SHADOW_LANCE);
events.RescheduleEvent(EVENT_SHADOW_LANCE, 8000);
return;
}
@@ -635,7 +635,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_soulguard_reaperAI(creature);
}
@@ -648,7 +648,7 @@ public:
struct mob_soulguard_bonecasterAI: public ScriptedAI
{
- mob_soulguard_bonecasterAI(Creature *c) : ScriptedAI(c) { }
+ mob_soulguard_bonecasterAI(Creature* creature) : ScriptedAI(creature) { }
EventMap events;
@@ -698,7 +698,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_soulguard_bonecasterAI(creature);
}
@@ -711,7 +711,7 @@ public:
struct mob_soulguard_animatorAI : public ScriptedAI
{
- mob_soulguard_animatorAI(Creature *c) : ScriptedAI(c)
+ mob_soulguard_animatorAI(Creature* creature) : ScriptedAI(creature)
{
}
@@ -750,18 +750,18 @@ public:
events.RescheduleEvent(EVENT_RAISE_DEAD, 25000);
return;
case EVENT_SHADOW_BOLT:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_SHADOW_BOLT);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_SHADOW_BOLT);
events.RescheduleEvent(EVENT_SHADOW_BOLT, 5000);
return;
case EVENT_SOUL_SICKNESS:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_SOUL_SICKNESS);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_SOUL_SICKNESS);
events.RescheduleEvent(EVENT_SOUL_SICKNESS, 10000);
return;
case EVENT_SOUL_SIPHON:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_SOUL_SIPHON);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_SOUL_SIPHON);
events.RescheduleEvent(EVENT_SOUL_SIPHON, 8000);
return;
}
@@ -771,7 +771,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_soulguard_animatorAI(creature);
}
@@ -784,7 +784,7 @@ public:
struct mob_soulguard_adeptAI: public ScriptedAI
{
- mob_soulguard_adeptAI(Creature *c) : ScriptedAI(c)
+ mob_soulguard_adeptAI(Creature* creature) : ScriptedAI(creature)
{
}
@@ -823,13 +823,13 @@ public:
events.RescheduleEvent(EVENT_RAISE_DEAD, 25000);
return;
case EVENT_SHADOW_BOLT:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_SHADOW_BOLT);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_SHADOW_BOLT);
events.RescheduleEvent(EVENT_SHADOW_BOLT, 4000);
return;
case EVENT_DRAIN_LIFE:
- if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, SPELL_DRAIN_LIFE);
+ if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
+ DoCast(target, SPELL_DRAIN_LIFE);
events.RescheduleEvent(EVENT_DRAIN_LIFE, 9000);
return;
case EVENT_SHADOW_MEND:
@@ -843,7 +843,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_soulguard_adeptAI(creature);
}
@@ -856,7 +856,7 @@ public:
struct mob_soul_horrorAI : public ScriptedAI
{
- mob_soul_horrorAI(Creature *c) : ScriptedAI(c) { }
+ mob_soul_horrorAI(Creature* creature) : ScriptedAI(creature) { }
EventMap events;
@@ -896,7 +896,7 @@ public:
}
};
- CreatureAI *GetAI(Creature *creature) const
+ CreatureAI *GetAI(Creature* creature) const
{
return new mob_soul_horrorAI(creature);
}
@@ -904,14 +904,14 @@ public:
void AddSC_forge_of_souls()
{
- new npc_sylvanas_fos;
- new npc_jaina_fos;
- new mob_spiteful_apparition;
- new mob_spectral_warden;
- new mob_soulguard_watchman;
- new mob_soulguard_reaper;
- new mob_soulguard_bonecaster;
- new mob_soulguard_animator;
- new mob_soulguard_adept;
- new mob_soul_horror;
+ new npc_sylvanas_fos();
+ new npc_jaina_fos();
+ new mob_spiteful_apparition();
+ new mob_spectral_warden();
+ new mob_soulguard_watchman();
+ new mob_soulguard_reaper();
+ new mob_soulguard_bonecaster();
+ new mob_soulguard_animator();
+ new mob_soulguard_adept();
+ new mob_soul_horror();
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
index c0b9fcaceba..5590f46b6ff 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
@@ -18,16 +18,14 @@
#ifndef DEF_FORGE_OF_SOULS_H
#define DEF_FORGE_OF_SOULS_H
-enum Data
-{
- DATA_DEVOURER_EVENT = 1,
- DATA_TEAM_IN_INSTANCE = 2,
-};
+#define FoSScriptName "instance_forge_of_souls"
-enum Data64
+enum Data
{
- DATA_BRONJAHM,
- DATA_DEVOURER,
+ DATA_BRONJAHM = 0,
+ DATA_DEVOURER = 1,
+ DATA_DEVOURER_EVENT = 2,
+ DATA_TEAM_IN_INSTANCE = 3,
};
enum Creatures
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
index cae72b36c8e..1a48b1f4cc6 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
@@ -28,34 +28,33 @@
class instance_forge_of_souls : public InstanceMapScript
{
public:
- instance_forge_of_souls() : InstanceMapScript("instance_forge_of_souls", 632) { }
+ instance_forge_of_souls() : InstanceMapScript(FoSScriptName, 632) { }
struct instance_forge_of_souls_InstanceScript : public InstanceScript
{
- instance_forge_of_souls_InstanceScript(Map* pMap) : InstanceScript(pMap)
+ instance_forge_of_souls_InstanceScript(Map* map) : InstanceScript(map)
{
SetBossNumber(MAX_ENCOUNTER);
- uiBronjahm = 0;
- uiDevourer = 0;
+ bronjahm = 0;
+ devourerOfSouls = 0;
- uiTeamInInstance = 0;
+ teamInInstance = 0;
}
- void OnCreatureCreate(Creature* pCreature, bool /*add*/)
+ void OnCreatureCreate(Creature* creature, bool /*add*/)
{
Map::PlayerList const &players = instance->GetPlayers();
-
if (!players.isEmpty())
- if (Player* pPlayer = players.begin()->getSource())
- uiTeamInInstance = pPlayer->GetTeamId();
+ if (Player* player = players.begin()->getSource())
+ teamInInstance = player->GetTeamId();
- switch (pCreature->GetEntry())
+ switch (creature->GetEntry())
{
case CREATURE_BRONJAHM:
- uiBronjahm = pCreature->GetGUID();
+ bronjahm = creature->GetGUID();
break;
case CREATURE_DEVOURER:
- uiDevourer = pCreature->GetGUID();
+ devourerOfSouls = creature->GetGUID();
break;
}
}
@@ -65,7 +64,7 @@ class instance_forge_of_souls : public InstanceMapScript
switch (type)
{
case DATA_TEAM_IN_INSTANCE:
- return uiTeamInInstance;
+ return teamInInstance;
default:
break;
}
@@ -73,14 +72,14 @@ class instance_forge_of_souls : public InstanceMapScript
return 0;
}
- uint64 GetData64(uint32 identifier)
+ uint64 GetData64(uint32 type)
{
- switch (identifier)
+ switch (type)
{
case DATA_BRONJAHM:
- return uiBronjahm;
+ return bronjahm;
case DATA_DEVOURER:
- return uiDevourer;
+ return devourerOfSouls;
default:
break;
}
@@ -130,10 +129,10 @@ class instance_forge_of_souls : public InstanceMapScript
}
private:
- uint64 uiBronjahm;
- uint64 uiDevourer;
+ uint64 bronjahm;
+ uint64 devourerOfSouls;
- uint32 uiTeamInInstance;
+ uint32 teamInInstance;
};
InstanceScript* GetInstanceScript(InstanceMap *map) const