Core/Achievements: Fixed achievement A Void Dance in Zuramat the Obliterator's encounter

This commit is contained in:
Lopin
2011-06-20 10:25:29 +02:00
parent dbabcd0e20
commit 93a15bc528
2 changed files with 47 additions and 0 deletions
@@ -0,0 +1,5 @@
DELETE FROM `disables` WHERE `entry`=7587;
DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7587 AND `type`=11;
INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`)
VALUES
(7587,11,0,0,'achievement_void_dance');
@@ -47,6 +47,8 @@ enum Yells
SAY_WHISPER = -1608044 SAY_WHISPER = -1608044
}; };
#define DATA_VOID_DANCE 2153
class boss_zuramat : public CreatureScript class boss_zuramat : public CreatureScript
{ {
public: public:
@@ -69,6 +71,7 @@ public:
uint32 SpellVoidShiftTimer; uint32 SpellVoidShiftTimer;
uint32 SpellSummonVoidTimer; uint32 SpellSummonVoidTimer;
uint32 SpellShroudOfDarknessTimer; uint32 SpellShroudOfDarknessTimer;
bool voidDance;
void Reset() void Reset()
{ {
@@ -83,6 +86,7 @@ public:
SpellShroudOfDarknessTimer = 22000; SpellShroudOfDarknessTimer = 22000;
SpellVoidShiftTimer = 15000; SpellVoidShiftTimer = 15000;
SpellSummonVoidTimer = 12000; SpellSummonVoidTimer = 12000;
voidDance = true;
} }
void AttackStart(Unit* pWho) void AttackStart(Unit* pWho)
@@ -147,6 +151,26 @@ public:
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
void SummonedCreatureDies(Creature* summoned, Unit* /*who*/)
{
if (summoned->GetEntry() == CREATURE_VOID_SENTRY)
SetData(DATA_VOID_DANCE, 0);
}
void SetData(uint32 id, uint32 data)
{
if (id == DATA_VOID_DANCE)
voidDance = data ? true : false;
}
uint32 GetData(uint32 type)
{
if (type == DATA_VOID_DANCE)
return voidDance ? 1 : 0;
return 0;
}
void JustDied(Unit* /*killer*/) void JustDied(Unit* /*killer*/)
{ {
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
@@ -184,7 +208,25 @@ public:
}; };
class achievement_void_dance : public AchievementCriteriaScript
{
public:
achievement_void_dance() : AchievementCriteriaScript("achievement_void_dance")
{
}
bool OnCheck(Player* /*player*/, Unit* target)
{
if (Creature* Zuramat = target->ToCreature())
if (Zuramat->AI()->GetData(DATA_VOID_DANCE))
return true;
return false;
}
};
void AddSC_boss_zuramat() void AddSC_boss_zuramat()
{ {
new boss_zuramat(); new boss_zuramat();
new achievement_void_dance();
} }