Scripts/Ulduar: Properly fixed achievements I Love the Smell of Saronite in the Morning & Shadowdodger in General Vezax's encounter
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
DELETE FROM `disables` WHERE `entry` IN (10173,10306,10451,10462) AND sourceType=4;
|
||||||
|
DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10173,10306,10451,10462) AND `type`=11;
|
||||||
|
INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`)
|
||||||
|
VALUES
|
||||||
|
(10173,11,0,0,'achievement_shadowdodger'),
|
||||||
|
(10306,11,0,0,'achievement_shadowdodger'),
|
||||||
|
(10451,11,0,0,'achievement_smell_saronite'),
|
||||||
|
(10462,11,0,0,'achievement_smell_saronite');
|
||||||
@@ -86,8 +86,8 @@ enum VezaxEvents
|
|||||||
EVENT_RANDOM_MOVE = 8,
|
EVENT_RANDOM_MOVE = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ACHIEVEMENT_SMELL_SARONITE RAID_MODE<uint32>(3181, 3188)
|
#define DATA_SMELL_SARONITE 31813188
|
||||||
#define ACHIEVEMENT_SHADOWDODGER RAID_MODE<uint32>(2996, 2997)
|
#define DATA_SHADOWDODGER 29962997
|
||||||
|
|
||||||
class boss_general_vezax : public CreatureScript
|
class boss_general_vezax : public CreatureScript
|
||||||
{
|
{
|
||||||
@@ -203,7 +203,7 @@ class boss_general_vezax : public CreatureScript
|
|||||||
void SpellHitTarget(Unit* who, SpellEntry const* spell)
|
void SpellHitTarget(Unit* who, SpellEntry const* spell)
|
||||||
{
|
{
|
||||||
if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_SHADOW_CRASH_HIT)
|
if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_SHADOW_CRASH_HIT)
|
||||||
shadowDodger = false;
|
SetData(DATA_SHADOWDODGER, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit* /*who*/)
|
void KilledUnit(Unit* /*who*/)
|
||||||
@@ -214,16 +214,8 @@ class boss_general_vezax : public CreatureScript
|
|||||||
void JustDied(Unit* /*who*/)
|
void JustDied(Unit* /*who*/)
|
||||||
{
|
{
|
||||||
_JustDied();
|
_JustDied();
|
||||||
|
|
||||||
DoScriptText(SAY_DEATH, me);
|
DoScriptText(SAY_DEATH, me);
|
||||||
|
|
||||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_AURA_OF_DESPAIR);
|
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_AURA_OF_DESPAIR);
|
||||||
|
|
||||||
if (shadowDodger)
|
|
||||||
instance->DoCompleteAchievement(ACHIEVEMENT_SHADOWDODGER);
|
|
||||||
|
|
||||||
if (smellSaronite && animusDead)
|
|
||||||
instance->DoCompleteAchievement(ACHIEVEMENT_SMELL_SARONITE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckShamanisticRage()
|
void CheckShamanisticRage()
|
||||||
@@ -240,12 +232,38 @@ class boss_general_vezax : public CreatureScript
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32 GetData(uint32 type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case DATA_SHADOWDODGER:
|
||||||
|
return shadowDodger ? 1 : 0;
|
||||||
|
case DATA_SMELL_SARONITE:
|
||||||
|
return smellSaronite ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetData(uint32 id, uint32 data)
|
||||||
|
{
|
||||||
|
switch (id)
|
||||||
|
{
|
||||||
|
case DATA_SHADOWDODGER:
|
||||||
|
shadowDodger = data ? true : false;
|
||||||
|
break;
|
||||||
|
case DATA_SMELL_SARONITE:
|
||||||
|
smellSaronite = data ? true : false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DoAction(int32 const action)
|
void DoAction(int32 const action)
|
||||||
{
|
{
|
||||||
switch (action)
|
switch (action)
|
||||||
{
|
{
|
||||||
case ACTION_VAPORS_DIE:
|
case ACTION_VAPORS_DIE:
|
||||||
smellSaronite = false;
|
SetData(DATA_SMELL_SARONITE, 0);
|
||||||
break;
|
break;
|
||||||
case ACTION_ANIMUS_DIE:
|
case ACTION_ANIMUS_DIE:
|
||||||
me->RemoveAurasDueToSpell(SPELL_SARONITE_BARRIER);
|
me->RemoveAurasDueToSpell(SPELL_SARONITE_BARRIER);
|
||||||
@@ -460,10 +478,46 @@ class spell_mark_of_the_faceless : public SpellScriptLoader
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class achievement_shadowdodger : public AchievementCriteriaScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
achievement_shadowdodger() : AchievementCriteriaScript("achievement_shadowdodger")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnCheck(Player* /*player*/, Unit* target)
|
||||||
|
{
|
||||||
|
if (Creature* Vezax = target->ToCreature())
|
||||||
|
if (Vezax->AI()->GetData(DATA_SHADOWDODGER))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class achievement_smell_saronite : public AchievementCriteriaScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
achievement_smell_saronite() : AchievementCriteriaScript("achievement_smell_saronite")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnCheck(Player* /*player*/, Unit* target)
|
||||||
|
{
|
||||||
|
if (Creature* Vezax = target->ToCreature())
|
||||||
|
if (Vezax->AI()->GetData(DATA_SMELL_SARONITE))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_boss_general_vezax()
|
void AddSC_boss_general_vezax()
|
||||||
{
|
{
|
||||||
new boss_general_vezax();
|
new boss_general_vezax();
|
||||||
new boss_saronite_animus();
|
new boss_saronite_animus();
|
||||||
new npc_saronite_vapors();
|
new npc_saronite_vapors();
|
||||||
new spell_mark_of_the_faceless();
|
new spell_mark_of_the_faceless();
|
||||||
|
new achievement_shadowdodger();
|
||||||
|
new achievement_smell_saronite();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user