diff options
author | Lopin <davca.hr@seznam.cz> | 2011-06-25 19:13:09 +0200 |
---|---|---|
committer | Lopin <davca.hr@seznam.cz> | 2011-06-25 19:13:09 +0200 |
commit | 0b1fffcc700462d1a6c829ba8e08361c25b5a698 (patch) | |
tree | 5b7b7ed62b623558cd5dace52a16600d9f649e42 /src | |
parent | 0cf40b897c6ed20cfe38bd607f1109ed6e9641c7 (diff) |
Scripts/Ulduar: Properly fixed Orbital Bombardment & Orbital Devastation & Nuked From Orbit & Orbit-uary
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp | 109 |
1 files changed, 80 insertions, 29 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp index 634f03bb033..209e3ce2ece 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp @@ -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(); } |