aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
index fc6de6b2faf..a7dae9aba78 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -23,14 +23,13 @@ SDComment: Event should be pretty close minus a few visual flaws
SDCategory: Halls of Lightning
EndScriptData */
-#include "AchievementMgr.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "halls_of_lightning.h"
#include "Player.h"
#include "SpellInfo.h"
-enum eEnums
+enum Enums
{
SAY_AGGRO = 0,
SAY_FORGE = 1,
@@ -63,7 +62,7 @@ enum eEnums
MAX_GOLEM = 2,
- ACHIEVEMENT_SHATTER_RESISTANT = 2042
+ DATA_SHATTER_RESISTANT = 2042
};
/*######
@@ -153,21 +152,6 @@ public:
if (instance)
instance->SetData(TYPE_VOLKHAN, DONE);
-
- if (IsHeroic() && GolemsShattered < 5)
- {
- AchievementEntry const* AchievShatterResistant = sAchievementMgr->GetAchievement(ACHIEVEMENT_SHATTER_RESISTANT);
- if (AchievShatterResistant)
- {
- Map* map = me->GetMap();
- if (map && map->IsDungeon())
- {
- Map::PlayerList const &players = map->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- itr->getSource()->CompletedAchievement(AchievShatterResistant);
- }
- }
- }
}
void KilledUnit(Unit* /*victim*/)
@@ -234,6 +218,14 @@ public:
}
}
+ uint32 GetData(uint32 data) const
+ {
+ if (data == DATA_SHATTER_RESISTANT)
+ return GolemsShattered;
+
+ return 0;
+ }
+
void UpdateAI(const uint32 uiDiff)
{
if (!UpdateVictim())
@@ -462,8 +454,20 @@ public:
};
};
+class achievement_shatter_resistant : public AchievementCriteriaScript
+{
+ public:
+ achievement_shatter_resistant() : AchievementCriteriaScript("achievement_shatter_resistant") { }
+
+ bool OnCheck(Player* /*source*/, Unit* target)
+ {
+ return target && target->GetAI()->GetData(DATA_SHATTER_RESISTANT) < 5;
+ }
+};
+
void AddSC_boss_volkhan()
{
new boss_volkhan();
new mob_molten_golem();
+ new achievement_shatter_resistant();
}