Drak'Tharon Keep, Novos the Summoner: Cleanup + adjustements. Thanks Joshh

Drak'Tharon Keep, King Dred: Cleanup

--HG--
branch : trunk
This commit is contained in:
tartalo
2009-11-01 00:05:29 +01:00
parent f5696bcca5
commit ea5237bffd
2 changed files with 19 additions and 27 deletions
@@ -65,7 +65,10 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
void Reset() void Reset()
{ {
if (pInstance) if (pInstance)
{
pInstance->SetData(DATA_DRED_EVENT,NOT_STARTED); pInstance->SetData(DATA_DRED_EVENT,NOT_STARTED);
pInstance->SetData(DATA_KING_DRED_ACHIEV, 0);
}
BellowingRoarTimer = 33000; BellowingRoarTimer = 33000;
GrievousBiteTimer = 20000; GrievousBiteTimer = 20000;
@@ -165,7 +168,7 @@ struct TRINITY_DLL_DECL npc_drakkari_gutripperAI : public ScriptedAI
void Reset() void Reset()
{ {
GutRipTimer = urand(10,15)*1000; GutRipTimer = urand(10000,15000);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -177,7 +180,7 @@ struct TRINITY_DLL_DECL npc_drakkari_gutripperAI : public ScriptedAI
if (GutRipTimer < diff) if (GutRipTimer < diff)
{ {
DoCastVictim(SPELL_GUT_RIP,false); DoCastVictim(SPELL_GUT_RIP,false);
GutRipTimer = urand(10,15)*1000; GutRipTimer = urand(10000,15000);
}else GutRipTimer -=diff; }else GutRipTimer -=diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
@@ -213,7 +216,7 @@ struct TRINITY_DLL_DECL npc_drakkari_scytheclawAI : public ScriptedAI
void Reset() void Reset()
{ {
RendTimer = urand(10,15)*1000; RendTimer = urand(10000,15000);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -225,7 +228,7 @@ struct TRINITY_DLL_DECL npc_drakkari_scytheclawAI : public ScriptedAI
if (RendTimer < diff) if (RendTimer < diff)
{ {
DoCastVictim(SPELL_REND,false); DoCastVictim(SPELL_REND,false);
RendTimer = urand(10,15)*1000; RendTimer = urand(10000,15000);
}else RendTimer -=diff; }else RendTimer -=diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
@@ -66,9 +66,9 @@ enum CombatPhase
PHASE_1, PHASE_1,
PHASE_2 PHASE_2
}; };
enum Achievement enum Achievements
{ {
ACHIEVEMENT_OH_NOVOS = 2057 ACHIEV_OH_NOVOS = 2057
}; };
struct Location struct Location
@@ -77,7 +77,8 @@ struct Location
}; };
static Location AddSpawnPoint = { -379.20, -816.76, 59.70}; 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 struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
{ {
@@ -103,6 +104,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
Phase = IDLE; Phase = IDLE;
luiCrystals.clear(); luiCrystals.clear();
bAchiev = true; bAchiev = true;
m_creature->CastStop();
if (pInstance) if (pInstance)
{ {
pInstance->SetData(DATA_NOVOS_EVENT, NOT_STARTED); pInstance->SetData(DATA_NOVOS_EVENT, NOT_STARTED);
@@ -155,7 +157,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
if (uiCrystalHandlerTimer <= diff) if (uiCrystalHandlerTimer <= diff)
{ {
//TODO: say //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); pCrystalHandler->GetMotionMaster()->MovePoint(0, AddDestinyPoint.x, AddDestinyPoint.y, AddDestinyPoint.z);
uiCrystalHandlerTimer = urand(20000,30000); uiCrystalHandlerTimer = urand(20000,30000);
} else uiCrystalHandlerTimer -= diff; } else uiCrystalHandlerTimer -= diff;
@@ -163,12 +165,9 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
case PHASE_2: case PHASE_2:
if (uiTimer <= diff) if (uiTimer <= diff)
{ {
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0); if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
while (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER) DoCast(pTarget, HEROIC(RAND(SPELL_ARCANE_BLAST,SPELL_BLIZZARD,SPELL_FROSTBOLT,SPELL_WRATH_OF_MISERY),
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0); RAND(H_SPELL_ARCANE_BLAST,H_SPELL_BLIZZARD,H_SPELL_FROSTBOLT,H_SPELL_WRATH_OF_MISERY)));
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));
uiTimer = urand(1000,3000); uiTimer = urand(1000,3000);
} else uiTimer -= diff; } else uiTimer -= diff;
break; break;
@@ -177,21 +176,11 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
void JustDied(Unit* killer) void JustDied(Unit* killer)
{ {
if (pInstance) if (pInstance)
{
pInstance->SetData(DATA_NOVOS_EVENT, DONE); pInstance->SetData(DATA_NOVOS_EVENT, DONE);
if (HeroicMode && bAchiev) if (HeroicMode && bAchiev)
{ pInstance->DoCompleteAchievement(ACHIEV_OH_NOVOS);
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);
}
}
} }
} }