*Implement achievement Make Quick Werk Of Him and minor clean in achievement Timely Death.

--HG--
branch : trunk
This commit is contained in:
Anubisss
2009-08-30 02:51:43 +02:00
parent 0bf74d2384
commit b79e4e3983
2 changed files with 29 additions and 7 deletions

View File

@@ -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)

View File

@@ -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)
{