aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bindings/scripts/scripts/northrend/naxxramas/boss_patchwerk.cpp23
-rw-r--r--src/bindings/scripts/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp13
2 files changed, 29 insertions, 7 deletions
diff --git a/src/bindings/scripts/scripts/northrend/naxxramas/boss_patchwerk.cpp b/src/bindings/scripts/scripts/northrend/naxxramas/boss_patchwerk.cpp
index d50c72d8fa6..249ebc5f90f 100644
--- a/src/bindings/scripts/scripts/northrend/naxxramas/boss_patchwerk.cpp
+++ b/src/bindings/scripts/scripts/northrend/naxxramas/boss_patchwerk.cpp
@@ -33,12 +33,17 @@
#define EVENT_HATEFUL 2
#define EVENT_SLIME 3
+#define ACHIEVEMENT_MAKE_QUICK_WERK_OF_HIM HEROIC(1856, 1857)
+#define MAX_ENCOUNTER_TIME 3 * 60 * 1000
+
struct TRINITY_DLL_DECL boss_patchwerkAI : public BossAI
{
boss_patchwerkAI(Creature *c) : BossAI(c, BOSS_PATCHWERK) {}
bool Enraged;
+ uint32 EncounterTime;
+
void KilledUnit(Unit* Victim)
{
if (!(rand()%5))
@@ -49,12 +54,28 @@ struct TRINITY_DLL_DECL boss_patchwerkAI : public BossAI
{
_JustDied();
DoScriptText(SAY_DEATH, me);
+
+ if(EncounterTime <= MAX_ENCOUNTER_TIME)
+ {
+ AchievementEntry const *AchievMakeQuickWerkOfHim = GetAchievementStore()->LookupEntry(ACHIEVEMENT_MAKE_QUICK_WERK_OF_HIM);
+ if(AchievMakeQuickWerkOfHim)
+ {
+ 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)
+ itr->getSource()->CompletedAchievement(AchievMakeQuickWerkOfHim);
+ }
+ }
+ }
}
void EnterCombat(Unit *who)
{
_EnterCombat();
Enraged = false;
+ EncounterTime = 0;
DoScriptText(SAY_AGGRO, me);
events.ScheduleEvent(EVENT_HATEFUL, 1200);
events.ScheduleEvent(EVENT_BERSERK, 360000);
@@ -67,6 +88,8 @@ struct TRINITY_DLL_DECL boss_patchwerkAI : public BossAI
events.Update(diff);
+ EncounterTime += diff;
+
while(uint32 eventId = events.ExecuteEvent())
{
switch(eventId)
diff --git a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp
index 2bf0b154bf0..cef302f6317 100644
--- a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp
+++ b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_lightning/boss_loken.cpp
@@ -24,6 +24,8 @@ EndScriptData */
#include "precompiled.h"
#include "def_halls_of_lightning.h"
+#define MAX_ENCOUNTER_TIME 2 * 60 * 1000
+
enum
{
ACHIEVEMENT_TIMELY_DEATH = 1867,
@@ -76,7 +78,7 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
uint32 m_uiHealthAmountModifier;
- uint32 EncounterTimer;
+ uint32 EncounterTime;
void Reset()
{
@@ -89,8 +91,6 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
m_uiHealthAmountModifier = 1;
- EncounterTimer = 0;
-
if (m_pInstance)
m_pInstance->SetData(TYPE_LOKEN, NOT_STARTED);
}
@@ -99,7 +99,7 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
{
DoScriptText(SAY_AGGRO, m_creature);
- EncounterTimer = 1;
+ EncounterTime = 0;
if (m_pInstance)
m_pInstance->SetData(TYPE_LOKEN, IN_PROGRESS);
@@ -109,7 +109,7 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
- if (m_bIsHeroic && EncounterTimer <= 120000)
+ if (m_bIsHeroic && EncounterTime <= MAX_ENCOUNTER_TIME)
{
AchievementEntry const *AchievTimelyDeath = GetAchievementStore()->LookupEntry(ACHIEVEMENT_TIMELY_DEATH);
if (AchievTimelyDeath)
@@ -144,8 +144,7 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
if (!UpdateVictim())
return;
- if (EncounterTimer)
- EncounterTimer += uiDiff;
+ EncounterTime += uiDiff;
if (m_bIsAura)
{