aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scripts/northrend/gundrak/boss_gal_darah.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/scripts/northrend/gundrak/boss_gal_darah.cpp b/src/scripts/northrend/gundrak/boss_gal_darah.cpp
index 7dc6172bffa..53a53a6cc72 100644
--- a/src/scripts/northrend/gundrak/boss_gal_darah.cpp
+++ b/src/scripts/northrend/gundrak/boss_gal_darah.cpp
@@ -25,7 +25,8 @@ enum Spells
H_SPELL_PUNCTURE = 59826,
SPELL_STAMPEDE = 55218,
SPELL_WHIRLING_SLASH = 55249,
- H_SPELL_WHIRLING_SLASH = 55825
+ H_SPELL_WHIRLING_SLASH = 55825,
+ SPELL_ECK_RESIDUE = 55817
};
//Yells
@@ -43,6 +44,13 @@ enum Yells
SAY_TRANSFORM_2 = -1604009
};
+enum Achievements
+{
+ ACHIEVEMENT_WHAT_THE_ECK = 1864,
+ ACHIEVEMENT_SHARE_THE_LOVE = 2152
+};
+
+
enum CombatPhase
{
TROLL,
@@ -62,6 +70,7 @@ struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
uint32 uiEnrageTimer;
uint32 uiImpalingChargeTimer;
uint32 uiStompTimer;
+ std::set<uint64> lImpaledPlayers;
CombatPhase Phase;
@@ -77,6 +86,9 @@ struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
uiEnrageTimer = 15000;
uiImpalingChargeTimer = 20000;
uiStompTimer = 25000;
+ uiPhaseCounter = 0;
+
+ lImpaledPlayers.clear();
Phase = TROLL;
@@ -155,8 +167,11 @@ struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
if (uiImpalingChargeTimer <= diff)
{
- if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
+ if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true))
+ {
DoCast(pTarget, DUNGEON_MODE(SPELL_IMPALING_CHARGE, H_SPELL_IMPALING_CHARGE));
+ lImpaledPlayers.insert(pTarget->GetGUID());
+ }
uiImpalingChargeTimer = 30000;
++uiPhaseCounter;
} else uiImpalingChargeTimer -= diff;
@@ -171,6 +186,25 @@ struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
+ if (IsHeroic())
+ {
+ AchievementEntry const *achievWhatTheEck = GetAchievementStore()->LookupEntry(ACHIEVEMENT_WHAT_THE_ECK);
+ if (achievWhatTheEck)
+ {
+ Map* pMap = m_creature->GetMap();
+ if (pMap && pMap->IsDungeon())
+ {
+ Map::PlayerList const &players = pMap->GetPlayers();
+ for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ if (itr->getSource()->HasAura(SPELL_ECK_RESIDUE))
+ itr->getSource()->CompletedAchievement(achievWhatTheEck);
+ }
+ }
+ }
+
+ if (pInstance && IsHeroic() && lImpaledPlayers.size() == 5)
+ pInstance->DoCompleteAchievement(ACHIEVEMENT_SHARE_THE_LOVE);
+
if (pInstance)
pInstance->SetData(DATA_GAL_DARAH_EVENT, DONE);
}