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
};
#define DATA_VOID_DANCE 2153
class boss_zuramat : public CreatureScript
{
public:
@@ -69,6 +71,7 @@ public:
uint32 SpellVoidShiftTimer;
uint32 SpellSummonVoidTimer;
uint32 SpellShroudOfDarknessTimer;
bool voidDance;
void Reset()
{
@@ -83,6 +86,7 @@ public:
SpellShroudOfDarknessTimer = 22000;
SpellVoidShiftTimer = 15000;
SpellSummonVoidTimer = 12000;
voidDance = true;
}
void AttackStart(Unit* pWho)
@@ -147,6 +151,26 @@ public:
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*/)
{
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()
{
new boss_zuramat();
new achievement_void_dance();
}