aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLopin <davca.hr@seznam.cz>2011-06-24 14:43:03 +0200
committerLopin <davca.hr@seznam.cz>2011-06-24 14:43:03 +0200
commit5af6bf41b312a94892c223d949dd39a58db1a532 (patch)
treed22f18410027cd162319853a0bc3acceeafa8403 /src
parent2e1542d738b793d5148557c96922a96428e8e842 (diff)
Scripts/Violet Hold: Properly fixed achievement Dehydration
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp43
1 files changed, 31 insertions, 12 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
index 3f2ea65958d..db85422942f 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
@@ -50,11 +50,6 @@ enum Yells
SAY_BUBBLE = -1608026
};
-enum Achievements
-{
- ACHIEVEMENT_DEHYDRATION = 2041,
-};
-
enum Actions
{
ACTION_WATER_ELEMENT_HIT = 1,
@@ -72,6 +67,8 @@ static Position SpawnLoc[MAX_SPAWN_LOC]=
{1935.50f, 796.224f, 52.492f, 4.224f},
};
+#define DATA_DEHYDRATION 1
+
class boss_ichoron : public CreatureScript
{
public:
@@ -91,7 +88,7 @@ public:
bool bIsExploded;
bool bIsFrenzy;
- bool bAchievement;
+ bool dehydration;
uint32 uiBubbleCheckerTimer;
uint32 uiWaterBoltVolleyTimer;
@@ -104,7 +101,7 @@ public:
{
bIsExploded = false;
bIsFrenzy = false;
- bAchievement = true;
+ dehydration = true;
uiBubbleCheckerTimer = 1000;
uiWaterBoltVolleyTimer = urand(10000, 15000);
@@ -168,7 +165,7 @@ public:
if (bIsExploded)
DoExplodeCompleted();
- bAchievement = false;
+ dehydration = false;
break;
case ACTION_WATER_ELEMENT_KILLED:
uint32 damage = me->CountPctFromMaxHealth(3);
@@ -199,11 +196,18 @@ public:
me->GetMotionMaster()->MoveChase(me->getVictim());
}
+ uint32 GetData(uint32 type)
+ {
+ if (type == DATA_DEHYDRATION)
+ return dehydration ? 1 : 0;
+
+ return 0;
+ }
+
void MoveInLineOfSight(Unit* /*pWho*/) {}
void UpdateAI(const uint32 uiDiff)
{
- //Return since we have no target
if (!UpdateVictim())
return;
@@ -284,9 +288,6 @@ public:
if (pInstance)
{
- if (IsHeroic() && bAchievement)
- pInstance->DoCompleteAchievement(ACHIEVEMENT_DEHYDRATION);
-
if (pInstance->GetData(DATA_WAVE_COUNT) == 6)
{
pInstance->SetData(DATA_1ST_BOSS_EVENT, DONE);
@@ -394,8 +395,26 @@ public:
};
+class achievement_dehydration : public AchievementCriteriaScript
+{
+ public:
+ achievement_dehydration() : AchievementCriteriaScript("achievement_dehydration")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* Ichoron = target->ToCreature())
+ if (Ichoron->AI()->GetData(DATA_DEHYDRATION))
+ return true;
+
+ return false;
+ }
+};
+
void AddSC_boss_ichoron()
{
new boss_ichoron();
new mob_ichor_globule();
+ new achievement_dehydration();
}