Scripts/Ulduar: Properly fixed Orbital Bombardment & Orbital Devastation & Nuked From Orbit & Orbit-uary
This commit is contained in:
@@ -158,20 +158,6 @@ enum Yells
|
||||
SAY_OVERLOAD_3 = -1603075,
|
||||
};
|
||||
|
||||
enum AchievementData
|
||||
{
|
||||
ACHIEV_10_NUKED_FROM_ORBIT = 2915,
|
||||
ACHIEV_25_NUKED_FROM_ORBIT = 2917,
|
||||
ACHIEV_10_ORBITAL_BOMBARDMENT = 2913,
|
||||
ACHIEV_25_ORBITAL_BOMBARDMENT = 2918,
|
||||
ACHIEV_10_ORBITAL_DEVASTATION = 2914,
|
||||
ACHIEV_25_ORBITAL_DEVASTATION = 2916,
|
||||
ACHIEV_10_ORBIT_UARY = 3056,
|
||||
ACHIEV_25_ORBIT_UARY = 3057,
|
||||
ACHIEV_10_SIEGE_OF_ULDUAR = 2886,
|
||||
ACHIEV_25_SIEGE_OF_ULDUAR = 2887,
|
||||
};
|
||||
|
||||
enum actions
|
||||
{
|
||||
ACTION_TOWER_OF_STORM_DESTROYED = 1,
|
||||
@@ -212,6 +198,8 @@ Position const PosDemolisher[5] =
|
||||
{-798.01f, -227.24f, 429.84f, 1.446f},
|
||||
};
|
||||
|
||||
#define DATA_ORBIT_ACHIEVEMENTS 1
|
||||
|
||||
class boss_flame_leviathan : public CreatureScript
|
||||
{
|
||||
public:
|
||||
@@ -321,21 +309,6 @@ class boss_flame_leviathan : public CreatureScript
|
||||
{
|
||||
_JustDied();
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (ActiveTowers)
|
||||
{
|
||||
switch (ActiveTowersCount)
|
||||
{
|
||||
case 4:
|
||||
instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_ORBIT_UARY, ACHIEV_25_ORBIT_UARY));
|
||||
case 3:
|
||||
instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_NUKED_FROM_ORBIT, ACHIEV_25_NUKED_FROM_ORBIT));
|
||||
case 2:
|
||||
instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_ORBITAL_DEVASTATION, ACHIEV_25_ORBITAL_DEVASTATION));
|
||||
case 1:
|
||||
instance->DoCompleteAchievement(RAID_MODE(ACHIEV_10_ORBITAL_BOMBARDMENT, ACHIEV_25_ORBITAL_BOMBARDMENT));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellEntry const* spell)
|
||||
@@ -358,6 +331,8 @@ class boss_flame_leviathan : public CreatureScript
|
||||
return Shutout ? 1 : 0;
|
||||
case DATA_UNBROKEN:
|
||||
return Unbroken ? 1 : 0;
|
||||
case DATA_ORBIT_ACHIEVEMENTS:
|
||||
return ActiveTowersCount;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1411,6 +1386,78 @@ class achievement_unbroken : public AchievementCriteriaScript
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_orbital_bombardment : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
achievement_orbital_bombardment() : AchievementCriteriaScript("achievement_orbital_bombardment") { }
|
||||
|
||||
bool OnCheck(Player* /*source*/, Unit* target)
|
||||
{
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (Creature* Leviathan = target->ToCreature())
|
||||
if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) >= 1)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_orbital_devastation : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
achievement_orbital_devastation() : AchievementCriteriaScript("achievement_orbital_devastation") { }
|
||||
|
||||
bool OnCheck(Player* /*source*/, Unit* target)
|
||||
{
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (Creature* Leviathan = target->ToCreature())
|
||||
if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) >= 2)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_nuked_from_orbit : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
achievement_nuked_from_orbit() : AchievementCriteriaScript("achievement_nuked_from_orbit") { }
|
||||
|
||||
bool OnCheck(Player* /*source*/, Unit* target)
|
||||
{
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (Creature* Leviathan = target->ToCreature())
|
||||
if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) >= 3)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_orbit_uary : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
achievement_orbit_uary() : AchievementCriteriaScript("achievement_orbit_uary") { }
|
||||
|
||||
bool OnCheck(Player* /*source*/, Unit* target)
|
||||
{
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (Creature* Leviathan = target->ToCreature())
|
||||
if (Leviathan->AI()->GetData(DATA_ORBIT_ACHIEVEMENTS) == 4)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_flame_leviathan()
|
||||
{
|
||||
new boss_flame_leviathan();
|
||||
@@ -1436,4 +1483,8 @@ void AddSC_boss_flame_leviathan()
|
||||
new achievement_three_car_garage_siege();
|
||||
new achievement_shutout();
|
||||
new achievement_unbroken();
|
||||
new achievement_orbital_bombardment();
|
||||
new achievement_orbital_devastation();
|
||||
new achievement_nuked_from_orbit();
|
||||
new achievement_orbit_uary();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user