diff options
-rw-r--r-- | src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp | 8 | ||||
-rw-r--r-- | src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp | 32 |
2 files changed, 32 insertions, 8 deletions
diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp index ec2c4995dc7..f0a20dea716 100644 --- a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp +++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_bjarngrim.cpp @@ -83,10 +83,9 @@ struct TRINITY_DLL_DECL boss_bjarngrimAI : public ScriptedAI { boss_bjarngrimAI(Creature *pCreature) : ScriptedAI(pCreature) { - m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); - m_bIsHeroic = pCreature->GetMap()->IsHeroic(); + m_pInstance = pCreature->GetInstanceData(); + m_bIsHeroic = pCreature->GetMap()->IsHeroic(); m_uiStance = STANCE_DEFENSIVE; - Reset(); } ScriptedInstance* m_pInstance; @@ -354,9 +353,8 @@ struct TRINITY_DLL_DECL mob_stormforged_lieutenantAI : public ScriptedAI { mob_stormforged_lieutenantAI(Creature *pCreature) : ScriptedAI(pCreature) { - m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData()); + m_pInstance = pCreature->GetInstanceData(); m_bIsHeroic = pCreature->GetMap()->IsHeroic(); - Reset(); } ScriptedInstance* m_pInstance; diff --git a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp index 8316c466d9b..2d63ba37913 100644 --- a/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp +++ b/src/bindings/scripts/scripts/zone/ulduar/halls_of_lightning/boss_loken.cpp @@ -26,6 +26,8 @@ EndScriptData */ enum { + ACHIEVEMENT_TIMELY_DEATH = 1867, + SAY_AGGRO = -1602018, SAY_INTRO_1 = -1602019, SAY_INTRO_2 = -1602020, @@ -58,9 +60,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI { boss_lokenAI(Creature *pCreature) : ScriptedAI(pCreature) { - m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData(); + m_pInstance = pCreature->GetInstanceData(); m_bIsHeroic = pCreature->GetMap()->IsHeroic(); - Reset(); } ScriptedInstance* m_pInstance; @@ -75,6 +76,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI uint32 m_uiHealthAmountModifier; + uint32 EncounterTimer; + void Reset() { m_bIsAura = false; @@ -86,6 +89,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI m_uiHealthAmountModifier = 1; + EncounterTimer = 0; + if (m_pInstance) m_pInstance->SetData(TYPE_LOKEN, NOT_STARTED); } @@ -94,6 +99,8 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI { DoScriptText(SAY_AGGRO, m_creature); + EncounterTimer = 1; + if (m_pInstance) m_pInstance->SetData(TYPE_LOKEN, IN_PROGRESS); } @@ -101,6 +108,22 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI void JustDied(Unit* pKiller) { 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) m_pInstance->SetData(TYPE_LOKEN, DONE); @@ -119,8 +142,11 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI void UpdateAI(const uint32 uiDiff) { //Return since we have no target - if(!UpdateVictim()) + if(!UpdateVictim()) return; + + if(EncounterTimer) + EncounterTimer += uiDiff; if (m_bIsAura) { |