aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLopin <davca.hr@seznam.cz>2011-06-25 13:32:43 +0200
committerLopin <davca.hr@seznam.cz>2011-06-25 13:32:43 +0200
commitb6283412c66ec3262538341c6da35efad03d319a (patch)
treec48102ee4f680930d532b0dc43da53f87902a023 /src
parentcec8ea0b4e0a4d6c224b7be4c9bf8990f326ad91 (diff)
Scripts/Forge of Souls: Properly fixed achievement Three Faced
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp38
1 files changed, 31 insertions, 7 deletions
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 38af9ad3a47..bcaf643136e 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
@@ -77,7 +77,6 @@ enum Events
enum eEnum
{
- ACHIEV_THREE_FACED = 4523,
DISPLAY_ANGER = 30148,
DISPLAY_SORROW = 30149,
DISPLAY_DESIRE = 30150,
@@ -115,6 +114,8 @@ struct outroPosition
{ { 0, 0 }, { 0.0f, 0.0f, 0.0f, 0.0f } }
};
+#define DATA_THREE_FACED 1
+
class boss_devourer_of_souls : public CreatureScript
{
public:
@@ -143,7 +144,7 @@ class boss_devourer_of_souls : public CreatureScript
events.Reset();
summons.DespawnAll();
- threeFaceAchievement = true;
+ threeFaced = true;
mirroredSoulTarget = 0;
instance->SetData(DATA_DEVOURER_EVENT, NOT_STARTED);
@@ -214,9 +215,6 @@ class boss_devourer_of_souls : public CreatureScript
instance->SetData(DATA_DEVOURER_EVENT, DONE);
- if (threeFaceAchievement && IsHeroic())
- instance->DoCompleteAchievement(ACHIEV_THREE_FACED);
-
int32 entryIndex;
if (instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
entryIndex = 0;
@@ -239,7 +237,15 @@ class boss_devourer_of_souls : public CreatureScript
void SpellHitTarget(Unit* /*target*/, const SpellEntry *spell)
{
if (spell->Id == H_SPELL_PHANTOM_BLAST)
- threeFaceAchievement = false;
+ threeFaced = false;
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ if (type == DATA_THREE_FACED)
+ return threeFaced;
+
+ return 0;
}
void UpdateAI(const uint32 diff)
@@ -344,7 +350,7 @@ class boss_devourer_of_souls : public CreatureScript
}
private:
- bool threeFaceAchievement;
+ bool threeFaced;
// wailing soul event
float beamAngle;
@@ -360,7 +366,25 @@ class boss_devourer_of_souls : public CreatureScript
}
};
+class achievement_three_faced : public AchievementCriteriaScript
+{
+ public:
+ achievement_three_faced() : AchievementCriteriaScript("achievement_three_faced")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* Devourer = target->ToCreature())
+ if (Devourer->AI()->GetData(DATA_THREE_FACED))
+ return true;
+
+ return false;
+ }
+};
+
void AddSC_boss_devourer_of_souls()
{
new boss_devourer_of_souls();
+ new achievement_three_faced();
}