*Implement achievement Timely Death.
--HG-- branch : trunk
This commit is contained in:
@@ -83,10 +83,9 @@ struct TRINITY_DLL_DECL boss_bjarngrimAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
boss_bjarngrimAI(Creature *pCreature) : ScriptedAI(pCreature)
|
boss_bjarngrimAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
{
|
{
|
||||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
m_pInstance = pCreature->GetInstanceData();
|
||||||
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
|
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
|
||||||
m_uiStance = STANCE_DEFENSIVE;
|
m_uiStance = STANCE_DEFENSIVE;
|
||||||
Reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptedInstance* m_pInstance;
|
ScriptedInstance* m_pInstance;
|
||||||
@@ -354,9 +353,8 @@ struct TRINITY_DLL_DECL mob_stormforged_lieutenantAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
mob_stormforged_lieutenantAI(Creature *pCreature) : ScriptedAI(pCreature)
|
mob_stormforged_lieutenantAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
{
|
{
|
||||||
m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData());
|
m_pInstance = pCreature->GetInstanceData();
|
||||||
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
|
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
|
||||||
Reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptedInstance* m_pInstance;
|
ScriptedInstance* m_pInstance;
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ EndScriptData */
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
ACHIEVEMENT_TIMELY_DEATH = 1867,
|
||||||
|
|
||||||
SAY_AGGRO = -1602018,
|
SAY_AGGRO = -1602018,
|
||||||
SAY_INTRO_1 = -1602019,
|
SAY_INTRO_1 = -1602019,
|
||||||
SAY_INTRO_2 = -1602020,
|
SAY_INTRO_2 = -1602020,
|
||||||
@@ -58,9 +60,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
boss_lokenAI(Creature *pCreature) : ScriptedAI(pCreature)
|
boss_lokenAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
{
|
{
|
||||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
m_pInstance = pCreature->GetInstanceData();
|
||||||
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
|
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
|
||||||
Reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptedInstance* m_pInstance;
|
ScriptedInstance* m_pInstance;
|
||||||
@@ -75,6 +76,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
|
|||||||
|
|
||||||
uint32 m_uiHealthAmountModifier;
|
uint32 m_uiHealthAmountModifier;
|
||||||
|
|
||||||
|
uint32 EncounterTimer;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
m_bIsAura = false;
|
m_bIsAura = false;
|
||||||
@@ -86,6 +89,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
|
|||||||
|
|
||||||
m_uiHealthAmountModifier = 1;
|
m_uiHealthAmountModifier = 1;
|
||||||
|
|
||||||
|
EncounterTimer = 0;
|
||||||
|
|
||||||
if (m_pInstance)
|
if (m_pInstance)
|
||||||
m_pInstance->SetData(TYPE_LOKEN, NOT_STARTED);
|
m_pInstance->SetData(TYPE_LOKEN, NOT_STARTED);
|
||||||
}
|
}
|
||||||
@@ -94,6 +99,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoScriptText(SAY_AGGRO, m_creature);
|
DoScriptText(SAY_AGGRO, m_creature);
|
||||||
|
|
||||||
|
EncounterTimer = 1;
|
||||||
|
|
||||||
if (m_pInstance)
|
if (m_pInstance)
|
||||||
m_pInstance->SetData(TYPE_LOKEN, IN_PROGRESS);
|
m_pInstance->SetData(TYPE_LOKEN, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
@@ -101,6 +108,22 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
|
|||||||
void JustDied(Unit* pKiller)
|
void JustDied(Unit* pKiller)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
|
error_log("%u", EncounterTimer);
|
||||||
|
|
||||||
|
if(m_bIsHeroic && EncounterTimer <= 120000)
|
||||||
|
{
|
||||||
|
AchievementEntry const *AchievTimelyDeath = GetAchievementStore()->LookupEntry(ACHIEVEMENT_TIMELY_DEATH);
|
||||||
|
if(AchievTimelyDeath)
|
||||||
|
{
|
||||||
|
Map *map = m_creature->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(AchievTimelyDeath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m_pInstance)
|
if (m_pInstance)
|
||||||
m_pInstance->SetData(TYPE_LOKEN, DONE);
|
m_pInstance->SetData(TYPE_LOKEN, DONE);
|
||||||
@@ -119,8 +142,11 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
|
|||||||
void UpdateAI(const uint32 uiDiff)
|
void UpdateAI(const uint32 uiDiff)
|
||||||
{
|
{
|
||||||
//Return since we have no target
|
//Return since we have no target
|
||||||
if(!UpdateVictim())
|
if(!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if(EncounterTimer)
|
||||||
|
EncounterTimer += uiDiff;
|
||||||
|
|
||||||
if (m_bIsAura)
|
if (m_bIsAura)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user