From ea5237bffdcaf09bc2c7a2fd391fab0ca25f5460 Mon Sep 17 00:00:00 2001 From: tartalo Date: Sun, 1 Nov 2009 00:05:29 +0100 Subject: Drak'Tharon Keep, Novos the Summoner: Cleanup + adjustements. Thanks Joshh Drak'Tharon Keep, King Dred: Cleanup --HG-- branch : trunk --- .../northrend/draktharon_keep/boss_dred.cpp | 11 ++++--- .../northrend/draktharon_keep/boss_novos.cpp | 35 ++++++++-------------- 2 files changed, 19 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_dred.cpp b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_dred.cpp index cdfc09f1434..9d05fd44a6c 100644 --- a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_dred.cpp +++ b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_dred.cpp @@ -65,7 +65,10 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI void Reset() { if (pInstance) + { pInstance->SetData(DATA_DRED_EVENT,NOT_STARTED); + pInstance->SetData(DATA_KING_DRED_ACHIEV, 0); + } BellowingRoarTimer = 33000; GrievousBiteTimer = 20000; @@ -165,7 +168,7 @@ struct TRINITY_DLL_DECL npc_drakkari_gutripperAI : public ScriptedAI void Reset() { - GutRipTimer = urand(10,15)*1000; + GutRipTimer = urand(10000,15000); } void UpdateAI(const uint32 diff) @@ -177,7 +180,7 @@ struct TRINITY_DLL_DECL npc_drakkari_gutripperAI : public ScriptedAI if (GutRipTimer < diff) { DoCastVictim(SPELL_GUT_RIP,false); - GutRipTimer = urand(10,15)*1000; + GutRipTimer = urand(10000,15000); }else GutRipTimer -=diff; DoMeleeAttackIfReady(); @@ -213,7 +216,7 @@ struct TRINITY_DLL_DECL npc_drakkari_scytheclawAI : public ScriptedAI void Reset() { - RendTimer = urand(10,15)*1000; + RendTimer = urand(10000,15000); } void UpdateAI(const uint32 diff) @@ -225,7 +228,7 @@ struct TRINITY_DLL_DECL npc_drakkari_scytheclawAI : public ScriptedAI if (RendTimer < diff) { DoCastVictim(SPELL_REND,false); - RendTimer = urand(10,15)*1000; + RendTimer = urand(10000,15000); }else RendTimer -=diff; DoMeleeAttackIfReady(); diff --git a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp index 4226988c732..2b155793949 100644 --- a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp +++ b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp @@ -66,9 +66,9 @@ enum CombatPhase PHASE_1, PHASE_2 }; -enum Achievement +enum Achievements { - ACHIEVEMENT_OH_NOVOS = 2057 + ACHIEV_OH_NOVOS = 2057 }; struct Location @@ -77,7 +77,8 @@ struct Location }; static Location AddSpawnPoint = { -379.20, -816.76, 59.70}; -static Location AddDestinyPoint = { -282.169, -711.369, 27.375}; +static Location CrystalHandlerSpawnPoint = { -326.626343, -709.956604, 27.813314 }; +static Location AddDestinyPoint = { -382.169, -711.369, 27.375}; struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI { @@ -103,6 +104,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI Phase = IDLE; luiCrystals.clear(); bAchiev = true; + m_creature->CastStop(); if (pInstance) { pInstance->SetData(DATA_NOVOS_EVENT, NOT_STARTED); @@ -155,7 +157,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI if (uiCrystalHandlerTimer <= diff) { //TODO: say - Creature *pCrystalHandler = m_creature->SummonCreature(CREATURE_CRYSTAL_HANDLER, AddSpawnPoint.x, AddSpawnPoint.y , AddSpawnPoint.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000); + Creature *pCrystalHandler = m_creature->SummonCreature(CREATURE_CRYSTAL_HANDLER, CrystalHandlerSpawnPoint.x, CrystalHandlerSpawnPoint.y , CrystalHandlerSpawnPoint.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000); pCrystalHandler->GetMotionMaster()->MovePoint(0, AddDestinyPoint.x, AddDestinyPoint.y, AddDestinyPoint.z); uiCrystalHandlerTimer = urand(20000,30000); } else uiCrystalHandlerTimer -= diff; @@ -163,12 +165,9 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI case PHASE_2: if (uiTimer <= diff) { - Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0); - while (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER) - pTarget = SelectUnit(SELECT_TARGET_RANDOM,0); - if (pTarget) - DoCast(pTarget, HeroicMode ? RAND(H_SPELL_ARCANE_BLAST,H_SPELL_BLIZZARD,H_SPELL_FROSTBOLT,H_SPELL_WRATH_OF_MISERY) : - RAND(SPELL_ARCANE_BLAST,SPELL_BLIZZARD,SPELL_FROSTBOLT,SPELL_WRATH_OF_MISERY)); + if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) + DoCast(pTarget, HEROIC(RAND(SPELL_ARCANE_BLAST,SPELL_BLIZZARD,SPELL_FROSTBOLT,SPELL_WRATH_OF_MISERY), + RAND(H_SPELL_ARCANE_BLAST,H_SPELL_BLIZZARD,H_SPELL_FROSTBOLT,H_SPELL_WRATH_OF_MISERY))); uiTimer = urand(1000,3000); } else uiTimer -= diff; break; @@ -177,21 +176,11 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI void JustDied(Unit* killer) { if (pInstance) + { pInstance->SetData(DATA_NOVOS_EVENT, DONE); - if (HeroicMode && bAchiev) - { - AchievementEntry const *AchievOhNovos = GetAchievementStore()->LookupEntry(ACHIEVEMENT_OH_NOVOS); - if (AchievOhNovos) - { - 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(AchievOhNovos); - } - } + if (HeroicMode && bAchiev) + pInstance->DoCompleteAchievement(ACHIEV_OH_NOVOS); } } -- cgit v1.2.3 From ea652e2c37b3b44061ef5067d01cd86dc580e282 Mon Sep 17 00:00:00 2001 From: tartalo Date: Sun, 1 Nov 2009 00:40:05 +0100 Subject: Drak'Tharon Keep, Novos the Summoner: Despawn adds on reset/die --HG-- branch : trunk --- .../scripts/scripts/northrend/draktharon_keep/boss_novos.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp index 2b155793949..9b4c6155cc8 100644 --- a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp +++ b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_novos.cpp @@ -82,7 +82,7 @@ static Location AddDestinyPoint = { -382.169, -711.369, 27.375}; struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI { - boss_novosAI(Creature *c) : Scripted_NoMovementAI(c) + boss_novosAI(Creature *c) : Scripted_NoMovementAI(c), lSummons(me) { pInstance = c->GetInstanceData(); Reset(); @@ -93,6 +93,8 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI bool bAchiev; + SummonList lSummons; + std::list luiCrystals; CombatPhase Phase; @@ -105,6 +107,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI luiCrystals.clear(); bAchiev = true; m_creature->CastStop(); + lSummons.DespawnAll(); if (pInstance) { pInstance->SetData(DATA_NOVOS_EVENT, NOT_STARTED); @@ -182,6 +185,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI if (HeroicMode && bAchiev) pInstance->DoCompleteAchievement(ACHIEV_OH_NOVOS); } + lSummons.DespawnAll(); } void KilledUnit(Unit *victim) @@ -191,6 +195,11 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI DoScriptText(SAY_KILL, m_creature); } + void JustSummoned(Creature *summon) + { + lSummons.Summon(summon); + } + void RemoveCrystal() { if (!luiCrystals.empty()) -- cgit v1.2.3