Drak'Tharon Keep: Cleanup

--HG--
branch : trunk
This commit is contained in:
Tartalo
2010-03-24 12:31:00 +01:00
parent 90b19607a1
commit 80cb722bba
5 changed files with 172 additions and 220 deletions
@@ -16,13 +16,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
/* Script Data Start /*
SDName: Boss dred * Comment: MAYBE need more improve the "Raptor Call".
SDAuthor: Manuel */
SD%Complete: 100 %
SDComment: MAYBE need more improve the "Raptor Call".
SDCategory:
Script Data End */
#include "ScriptedPch.h" #include "ScriptedPch.h"
#include "drak_tharon_keep.h" #include "drak_tharon_keep.h"
@@ -58,12 +54,12 @@ struct boss_dredAI : public ScriptedAI
pInstance = c->GetInstanceData(); pInstance = c->GetInstanceData();
} }
uint32 BellowingRoarTimer; uint32 uiBellowingRoarTimer;
uint32 GrievousBiteTimer; uint32 uiGrievousBiteTimer;
uint32 ManglingSlashTimer; uint32 uiManglingSlashTimer;
uint32 FearsomeRoarTimer; uint32 uiFearsomeRoarTimer;
uint32 PiercingSlashTimer; uint32 uiPiercingSlashTimer;
uint32 RaptorCallTimer; uint32 uiRaptorCallTimer;
ScriptedInstance* pInstance; ScriptedInstance* pInstance;
@@ -75,12 +71,12 @@ struct boss_dredAI : public ScriptedAI
pInstance->SetData(DATA_KING_DRED_ACHIEV, 0); pInstance->SetData(DATA_KING_DRED_ACHIEV, 0);
} }
BellowingRoarTimer = 33000; uiBellowingRoarTimer = 33*IN_MILISECONDS;
GrievousBiteTimer = 20000; uiGrievousBiteTimer = 20*IN_MILISECONDS;
ManglingSlashTimer = 18500; uiManglingSlashTimer = 18.5*IN_MILISECONDS;
FearsomeRoarTimer = urand(10000,20000); uiFearsomeRoarTimer = urand(10*IN_MILISECONDS,20*IN_MILISECONDS);
PiercingSlashTimer = 17000; uiPiercingSlashTimer = 17*IN_MILISECONDS;
RaptorCallTimer = urand(20000,25000); uiRaptorCallTimer = urand(20*IN_MILISECONDS,25*IN_MILISECONDS);
} }
void EnterCombat(Unit* who) void EnterCombat(Unit* who)
@@ -95,47 +91,47 @@ struct boss_dredAI : public ScriptedAI
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
if (BellowingRoarTimer < diff) if (uiBellowingRoarTimer < diff)
{ {
DoCastAOE(SPELL_BELLOWING_ROAR, false); DoCastAOE(SPELL_BELLOWING_ROAR, false);
BellowingRoarTimer = 40000; uiBellowingRoarTimer = 40*IN_MILISECONDS;
} else BellowingRoarTimer -=diff; } else uiBellowingRoarTimer -=diff;
if (GrievousBiteTimer < diff) if (uiGrievousBiteTimer < diff)
{ {
DoCastVictim(SPELL_GRIEVOUS_BITE ,false); DoCastVictim(SPELL_GRIEVOUS_BITE ,false);
GrievousBiteTimer = 20000; uiGrievousBiteTimer = 20*IN_MILISECONDS;
} else GrievousBiteTimer -=diff; } else uiGrievousBiteTimer -=diff;
if (ManglingSlashTimer < diff) if (uiManglingSlashTimer < diff)
{ {
DoCastVictim(SPELL_MANGLING_SLASH,false); DoCastVictim(SPELL_MANGLING_SLASH,false);
ManglingSlashTimer = 20000; uiManglingSlashTimer = 20*IN_MILISECONDS;
} else ManglingSlashTimer -=diff; } else uiManglingSlashTimer -=diff;
if (FearsomeRoarTimer < diff) if (uiFearsomeRoarTimer < diff)
{ {
DoCastAOE(DUNGEON_MODE(SPELL_FEARSOME_ROAR, H_SPELL_FEARSOME_ROAR),false); DoCastAOE(DUNGEON_MODE(SPELL_FEARSOME_ROAR, H_SPELL_FEARSOME_ROAR),false);
FearsomeRoarTimer = urand(16,18)*1000; uiFearsomeRoarTimer = urand(16*IN_MILISECONDS,18*IN_MILISECONDS);
} else FearsomeRoarTimer -=diff; } else uiFearsomeRoarTimer -=diff;
if (PiercingSlashTimer < diff) if (uiPiercingSlashTimer < diff)
{ {
DoCastVictim(SPELL_PIERCING_SLASH,false); DoCastVictim(SPELL_PIERCING_SLASH,false);
PiercingSlashTimer = 20000; uiPiercingSlashTimer = 20*IN_MILISECONDS;
} else PiercingSlashTimer -=diff; } else uiPiercingSlashTimer -=diff;
if (RaptorCallTimer < diff) if (uiRaptorCallTimer < diff)
{ {
DoCastVictim(SPELL_RAPTOR_CALL,false); DoCastVictim(SPELL_RAPTOR_CALL,false);
float x,y,z; float x,y,z;
m_creature->GetClosePoint(x,y,z,m_creature->GetObjectSize()/3,10.0f); m_creature->GetClosePoint(x,y,z,m_creature->GetObjectSize()/3,10.0f);
m_creature->SummonCreature(RAND(NPC_RAPTOR_1,NPC_RAPTOR_2),x,y,z,0,TEMPSUMMON_DEAD_DESPAWN,1000); m_creature->SummonCreature(RAND(NPC_RAPTOR_1,NPC_RAPTOR_2),x,y,z,0,TEMPSUMMON_DEAD_DESPAWN,1*IN_MILISECONDS);
RaptorCallTimer = urand(20000,25000); uiRaptorCallTimer = urand(20*IN_MILISECONDS,25*IN_MILISECONDS);
} else RaptorCallTimer -=diff; } else uiRaptorCallTimer -=diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
@@ -214,11 +210,11 @@ struct npc_drakkari_scytheclawAI : public ScriptedAI
ScriptedInstance* pInstance; ScriptedInstance* pInstance;
uint32 RendTimer; uint32 uiRendTimer;
void Reset() void Reset()
{ {
RendTimer = urand(10000,15000); uiRendTimer = urand(10*IN_MILISECONDS,15*IN_MILISECONDS);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -227,11 +223,11 @@ struct npc_drakkari_scytheclawAI : public ScriptedAI
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
if (RendTimer < diff) if (uiRendTimer < diff)
{ {
DoCastVictim(SPELL_REND,false); DoCastVictim(SPELL_REND,false);
RendTimer = urand(10000,15000); uiRendTimer = urand(10*IN_MILISECONDS,15*IN_MILISECONDS);
}else RendTimer -=diff; }else uiRendTimer -=diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
@@ -16,17 +16,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
/* Script Data Start
SDName: Boss novos
SDAuthor: Tartalo
SD%Complete: 100
SDComment:
SDCategory:
Script Data End */
/*** SQL START ***
update creature_template set scriptname = 'boss_novos' where entry = '';
*** SQL END ***/
#include "ScriptedPch.h" #include "ScriptedPch.h"
#include "drak_tharon_keep.h" #include "drak_tharon_keep.h"
@@ -71,21 +60,15 @@ enum Achievements
ACHIEV_OH_NOVOS = 2057 ACHIEV_OH_NOVOS = 2057
}; };
struct Location static Position AddSpawnPoint = { -379.20, -816.76, 59.70 };
{ static Position CrystalHandlerSpawnPoint = { -326.626343, -709.956604, 27.813314 };
float x,y,z; static Position AddDestinyPoint = { -379.314545, -772.577637, 28.58837 };
};
static Location AddSpawnPoint = { -379.20, -816.76, 59.70};
static Location CrystalHandlerSpawnPoint = { -326.626343, -709.956604, 27.813314 };
static Location AddDestinyPoint = { -379.314545, -772.577637, 28.58837 };
struct boss_novosAI : public Scripted_NoMovementAI struct boss_novosAI : public Scripted_NoMovementAI
{ {
boss_novosAI(Creature *c) : Scripted_NoMovementAI(c), lSummons(me) boss_novosAI(Creature *c) : Scripted_NoMovementAI(c), lSummons(me)
{ {
pInstance = c->GetInstanceData(); pInstance = c->GetInstanceData();
Reset();
} }
uint32 uiTimer; uint32 uiTimer;
@@ -127,8 +110,8 @@ struct boss_novosAI : public Scripted_NoMovementAI
{ {
DoScriptText(SAY_AGGRO, m_creature); DoScriptText(SAY_AGGRO, m_creature);
Phase = PHASE_1; Phase = PHASE_1;
uiCrystalHandlerTimer = 30000; uiCrystalHandlerTimer = 30*IN_MILISECONDS;
uiTimer = 1000; uiTimer = 1*IN_MILISECONDS;
DoCast(m_creature, SPELL_ARCANE_FIELD); DoCast(m_creature, SPELL_ARCANE_FIELD);
if (pInstance) if (pInstance)
{ {
@@ -151,18 +134,18 @@ struct boss_novosAI : public Scripted_NoMovementAI
case PHASE_1: case PHASE_1:
if (uiTimer <= diff) if (uiTimer <= diff)
{ {
Creature *pSummon = m_creature->SummonCreature(RAND(CREATURE_FETID_TROLL_CORPSE,CREATURE_HULKING_CORPSE,CREATURE_RISEN_SHADOWCASTER), AddSpawnPoint.x, AddSpawnPoint.y , AddSpawnPoint.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000); Creature *pSummon = m_creature->SummonCreature(RAND(CREATURE_FETID_TROLL_CORPSE,CREATURE_HULKING_CORPSE,CREATURE_RISEN_SHADOWCASTER), AddSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
pSummon->GetMotionMaster()->MovePoint(0, AddDestinyPoint.x, AddDestinyPoint.y, AddDestinyPoint.z); pSummon->GetMotionMaster()->MovePoint(0, AddDestinyPoint);
//If spell is casted stops casting arcane field so no spell casting //If spell is casted stops casting arcane field so no spell casting
//DoCast(m_creature, SPELL_SUMMON_MINIONS); //DoCast(m_creature, SPELL_SUMMON_MINIONS);
uiTimer = 3000; uiTimer = 3*IN_MILISECONDS;
} else uiTimer -= diff; } else uiTimer -= diff;
if (uiCrystalHandlerTimer <= diff) if (uiCrystalHandlerTimer <= diff)
{ {
DoScriptText(SAY_NECRO_ADD, m_creature); DoScriptText(SAY_NECRO_ADD, m_creature);
Creature *pCrystalHandler = m_creature->SummonCreature(CREATURE_CRYSTAL_HANDLER, CrystalHandlerSpawnPoint.x, CrystalHandlerSpawnPoint.y , CrystalHandlerSpawnPoint.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000); Creature *pCrystalHandler = m_creature->SummonCreature(CREATURE_CRYSTAL_HANDLER, CrystalHandlerSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
pCrystalHandler->GetMotionMaster()->MovePoint(0, AddDestinyPoint.x, AddDestinyPoint.y, AddDestinyPoint.z); pCrystalHandler->GetMotionMaster()->MovePoint(0, AddDestinyPoint);
uiCrystalHandlerTimer = urand(20000,30000); uiCrystalHandlerTimer = urand(20*IN_MILISECONDS,30*IN_MILISECONDS);
} else uiCrystalHandlerTimer -= diff; } else uiCrystalHandlerTimer -= diff;
break; break;
case PHASE_2: case PHASE_2:
@@ -171,7 +154,7 @@ struct boss_novosAI : public Scripted_NoMovementAI
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, DUNGEON_MODE(RAND(SPELL_ARCANE_BLAST,SPELL_BLIZZARD,SPELL_FROSTBOLT,SPELL_WRATH_OF_MISERY), DoCast(pTarget, DUNGEON_MODE(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))); RAND(H_SPELL_ARCANE_BLAST,H_SPELL_BLIZZARD,H_SPELL_FROSTBOLT,H_SPELL_WRATH_OF_MISERY)));
uiTimer = urand(1000,3000); uiTimer = urand(1*IN_MILISECONDS,3*IN_MILISECONDS);
} else uiTimer -= diff; } else uiTimer -= diff;
break; break;
} }
@@ -217,7 +200,7 @@ struct boss_novosAI : public Scripted_NoMovementAI
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Phase = PHASE_2; Phase = PHASE_2;
uiTimer = 1000; uiTimer = 1*IN_MILISECONDS;
} }
} }
}; };
@@ -16,17 +16,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
/* Script Data Start
SDName: Boss Tharon'ja
SDAuthor: Tartalo
SD%Complete: 100
SDComment:
SDCategory:
Script Data End */
/*** SQL START ***
update creature_template set scriptname = 'boss_tharon_ja' where entry = '';
*** SQL END ***/
#include "ScriptedPch.h" #include "ScriptedPch.h"
#include "drak_tharon_keep.h" #include "drak_tharon_keep.h"
@@ -51,16 +40,7 @@ enum Spells
SPELL_RETURN_FLESH = 53463, //Channeled spell ending phase two and returning to phase 1. This ability will stun the party for 6 seconds. SPELL_RETURN_FLESH = 53463, //Channeled spell ending phase two and returning to phase 1. This ability will stun the party for 6 seconds.
SPELL_ACHIEVEMENT_CHECK = 61863, SPELL_ACHIEVEMENT_CHECK = 61863,
}; };
/* not needed
enum PlayerSkills
{
//Players' skills during Phase2
SPELL_PLAYER_PHASE2_SLAYING_STRIKE = 50799,
SPELL_PLAYER_PHASE2_TAUNT = 49613,
SPELL_PLAYER_PHASE2_BONE_ARMOR = 49609,
SPELL_PLAYER_PHASE2_TOUCH_OF_LIFE = 49617
};
*/
enum Yells enum Yells
{ {
SAY_AGGRO = -1600011, SAY_AGGRO = -1600011,
@@ -106,10 +86,10 @@ struct boss_tharon_jaAI : public ScriptedAI
void Reset() void Reset()
{ {
uiPhaseTimer = 20000; uiPhaseTimer = 20*IN_MILISECONDS;
uiCurseOfLifeTimer = 1000; uiCurseOfLifeTimer = 1*IN_MILISECONDS;
uiRainOfFireTimer = urand(14000,18000); uiRainOfFireTimer = urand(14*IN_MILISECONDS,18*IN_MILISECONDS);
uiShadowVolleyTimer = urand(8000,10000); uiShadowVolleyTimer = urand(8*IN_MILISECONDS,10*IN_MILISECONDS);
Phase = SKELETAL; Phase = SKELETAL;
m_creature->SetDisplayId(m_creature->GetNativeDisplayId()); m_creature->SetDisplayId(m_creature->GetNativeDisplayId());
if (pInstance) if (pInstance)
@@ -137,26 +117,26 @@ struct boss_tharon_jaAI : public ScriptedAI
{ {
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, DUNGEON_MODE(SPELL_CURSE_OF_LIFE, H_SPELL_CURSE_OF_LIFE)); DoCast(pTarget, DUNGEON_MODE(SPELL_CURSE_OF_LIFE, H_SPELL_CURSE_OF_LIFE));
uiCurseOfLifeTimer = urand(10000,15000); uiCurseOfLifeTimer = urand(10*IN_MILISECONDS,15*IN_MILISECONDS);
} else uiCurseOfLifeTimer -= diff; } else uiCurseOfLifeTimer -= diff;
if (uiShadowVolleyTimer < diff) if (uiShadowVolleyTimer < diff)
{ {
DoCastVictim(DUNGEON_MODE(SPELL_SHADOW_VOLLEY,H_SPELL_SHADOW_VOLLEY)); DoCastVictim(DUNGEON_MODE(SPELL_SHADOW_VOLLEY,H_SPELL_SHADOW_VOLLEY));
uiShadowVolleyTimer = urand(8000,10000); uiShadowVolleyTimer = urand(8*IN_MILISECONDS,10*IN_MILISECONDS);
} else uiShadowVolleyTimer -= diff; } else uiShadowVolleyTimer -= diff;
if (uiRainOfFireTimer < diff) if (uiRainOfFireTimer < diff)
{ {
DoCastAOE(DUNGEON_MODE(SPELL_RAIN_OF_FIRE,H_SPELL_RAIN_OF_FIRE)); DoCastAOE(DUNGEON_MODE(SPELL_RAIN_OF_FIRE,H_SPELL_RAIN_OF_FIRE));
uiRainOfFireTimer = urand(14000,18000); uiRainOfFireTimer = urand(14*IN_MILISECONDS,18*IN_MILISECONDS);
} else uiRainOfFireTimer -= diff; } else uiRainOfFireTimer -= diff;
if (uiPhaseTimer < diff) if (uiPhaseTimer < diff)
{ {
DoCast(SPELL_DECAY_FLESH); DoCast(SPELL_DECAY_FLESH);
Phase = GOING_FLESH; Phase = GOING_FLESH;
uiPhaseTimer = 6000; uiPhaseTimer = 6*IN_MILISECONDS;
} else uiPhaseTimer -= diff; } else uiPhaseTimer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
@@ -176,10 +156,10 @@ struct boss_tharon_jaAI : public ScriptedAI
pTemp->SetDisplayId(MODEL_SKELETON); pTemp->SetDisplayId(MODEL_SKELETON);
} }
} }
uiPhaseTimer = 20000; uiPhaseTimer = 20*IN_MILISECONDS;
uiLightningBreathTimer = urand(3000,4000); uiLightningBreathTimer = urand(3*IN_MILISECONDS,4*IN_MILISECONDS);
uiEyeBeamTimer = urand(4000,8000); uiEyeBeamTimer = urand(4*IN_MILISECONDS,8*IN_MILISECONDS);
uiPoisonCloudTimer = urand(6000,7000); uiPoisonCloudTimer = urand(6*IN_MILISECONDS,7*IN_MILISECONDS);
Phase = FLESH; Phase = FLESH;
} else uiPhaseTimer -= diff; } else uiPhaseTimer -= diff;
break; break;
@@ -188,27 +168,27 @@ struct boss_tharon_jaAI : public ScriptedAI
{ {
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BREATH, H_SPELL_LIGHTNING_BREATH)); DoCast(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BREATH, H_SPELL_LIGHTNING_BREATH));
uiLightningBreathTimer = urand(6000,7000); uiLightningBreathTimer = urand(6*IN_MILISECONDS,7*IN_MILISECONDS);
} else uiLightningBreathTimer -= diff; } else uiLightningBreathTimer -= diff;
if (uiEyeBeamTimer < diff) if (uiEyeBeamTimer < diff)
{ {
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, DUNGEON_MODE(SPELL_EYE_BEAM, H_SPELL_EYE_BEAM)); DoCast(pTarget, DUNGEON_MODE(SPELL_EYE_BEAM, H_SPELL_EYE_BEAM));
uiEyeBeamTimer = urand(4000,6000); uiEyeBeamTimer = urand(4*IN_MILISECONDS,6*IN_MILISECONDS);
} else uiEyeBeamTimer -= diff; } else uiEyeBeamTimer -= diff;
if (uiPoisonCloudTimer < diff) if (uiPoisonCloudTimer < diff)
{ {
DoCastAOE(DUNGEON_MODE(SPELL_POISON_CLOUD, H_SPELL_POISON_CLOUD)); DoCastAOE(DUNGEON_MODE(SPELL_POISON_CLOUD, H_SPELL_POISON_CLOUD));
uiPoisonCloudTimer = urand(10000,12000); uiPoisonCloudTimer = urand(10*IN_MILISECONDS,12*IN_MILISECONDS);
} else uiPoisonCloudTimer -= diff; } else uiPoisonCloudTimer -= diff;
if (uiPhaseTimer < diff) if (uiPhaseTimer < diff)
{ {
DoCast(SPELL_RETURN_FLESH); DoCast(SPELL_RETURN_FLESH);
Phase = GOING_SKELETAL; Phase = GOING_SKELETAL;
uiPhaseTimer = 6000; uiPhaseTimer = 6*IN_MILISECONDS;
} else uiPhaseTimer -= diff; } else uiPhaseTimer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
break; break;
@@ -218,10 +198,10 @@ struct boss_tharon_jaAI : public ScriptedAI
DoScriptText(RAND(SAY_SKELETON_1,SAY_SKELETON_2), m_creature); DoScriptText(RAND(SAY_SKELETON_1,SAY_SKELETON_2), m_creature);
m_creature->DeMorph(); m_creature->DeMorph();
Phase = SKELETAL; Phase = SKELETAL;
uiPhaseTimer = 20000; uiPhaseTimer = 20*IN_MILISECONDS;
uiCurseOfLifeTimer = 1000; uiCurseOfLifeTimer = 1*IN_MILISECONDS;
uiRainOfFireTimer = urand(14000,18000); uiRainOfFireTimer = urand(14*IN_MILISECONDS,18*IN_MILISECONDS);
uiShadowVolleyTimer = urand(8000,10000); uiShadowVolleyTimer = urand(8*IN_MILISECONDS,10*IN_MILISECONDS);
std::list<HostileReference*>& threatlist = m_creature->getThreatManager().getThreatList(); std::list<HostileReference*>& threatlist = m_creature->getThreatManager().getThreatList();
for (std::list<HostileReference*>::iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) for (std::list<HostileReference*>::iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
{ {
@@ -16,17 +16,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
/* Script Data Start /*
SDName: Boss trollgore * Comment: TODO: spawn troll waves
SDAuthor: Tartalo */
SD%Complete:
SDComment: TODO: spawn troll waves
SDCategory:
Script Data End */
/*** SQL START ***
update creature_template set scriptname = 'boss_trollgore' where entry = '';
*** SQL END ***/
#include "ScriptedPch.h" #include "ScriptedPch.h"
#include "drak_tharon_keep.h" #include "drak_tharon_keep.h"
@@ -84,12 +77,12 @@ struct boss_trollgoreAI : public ScriptedAI
void Reset() void Reset()
{ {
uiConsumeTimer = 15000; uiConsumeTimer = 15*IN_MILISECONDS;
uiAuraCountTimer = 15500; uiAuraCountTimer = 15.5*IN_MILISECONDS;
uiCrushTimer = urand(1000,5000); uiCrushTimer = urand(1*IN_MILISECONDS,5*IN_MILISECONDS);
uiInfectedWoundTimer = urand(6000,10000); uiInfectedWoundTimer = urand(60*IN_MILISECONDS,10*IN_MILISECONDS);
uiExplodeCorpseTimer = 3000; uiExplodeCorpseTimer = 3*IN_MILISECONDS;
uiSpawnTimer = urand(30000,40000); uiSpawnTimer = urand(30*IN_MILISECONDS,40*IN_MILISECONDS);
bAchiev = IsHeroic(); bAchiev = IsHeroic();
@@ -120,14 +113,14 @@ struct boss_trollgoreAI : public ScriptedAI
uint32 spawnNumber = urand(2,DUNGEON_MODE(3,5)); uint32 spawnNumber = urand(2,DUNGEON_MODE(3,5));
for (uint8 i = 0; i < spawnNumber; ++i) for (uint8 i = 0; i < spawnNumber; ++i)
DoSummon(RAND(NPC_DRAKKARI_INVADER_1,NPC_DRAKKARI_INVADER_2), AddSpawnPoint, 0, TEMPSUMMON_DEAD_DESPAWN); DoSummon(RAND(NPC_DRAKKARI_INVADER_1,NPC_DRAKKARI_INVADER_2), AddSpawnPoint, 0, TEMPSUMMON_DEAD_DESPAWN);
uiSpawnTimer = urand(30000,40000); uiSpawnTimer = urand(30*IN_MILISECONDS,40*IN_MILISECONDS);
} else uiSpawnTimer -= diff; } else uiSpawnTimer -= diff;
if (uiConsumeTimer <= diff) if (uiConsumeTimer <= diff)
{ {
DoScriptText(SAY_CONSUME, m_creature); DoScriptText(SAY_CONSUME, m_creature);
DoCast(DUNGEON_MODE(SPELL_CONSUME, H_SPELL_CONSUME)); DoCast(DUNGEON_MODE(SPELL_CONSUME, H_SPELL_CONSUME));
uiConsumeTimer = 15000; uiConsumeTimer = 15*IN_MILISECONDS;
} else uiConsumeTimer -= diff; } else uiConsumeTimer -= diff;
if (bAchiev) if (bAchiev)
@@ -140,20 +133,20 @@ struct boss_trollgoreAI : public ScriptedAI
if (uiCrushTimer <= diff) if (uiCrushTimer <= diff)
{ {
DoCastVictim(SPELL_CRUSH); DoCastVictim(SPELL_CRUSH);
uiCrushTimer = urand(10000,15000); uiCrushTimer = urand(10*IN_MILISECONDS,15*IN_MILISECONDS);
} else uiCrushTimer -= diff; } else uiCrushTimer -= diff;
if (uiInfectedWoundTimer <= diff) if (uiInfectedWoundTimer <= diff)
{ {
DoCastVictim(SPELL_INFECTED_WOUND); DoCastVictim(SPELL_INFECTED_WOUND);
uiInfectedWoundTimer = urand(25000,35000); uiInfectedWoundTimer = urand(25*IN_MILISECONDS,35*IN_MILISECONDS);
} else uiInfectedWoundTimer -= diff; } else uiInfectedWoundTimer -= diff;
if (uiExplodeCorpseTimer <= diff) if (uiExplodeCorpseTimer <= diff)
{ {
DoCast(DUNGEON_MODE(SPELL_CORPSE_EXPLODE, H_SPELL_CORPSE_EXPLODE)); DoCast(DUNGEON_MODE(SPELL_CORPSE_EXPLODE, H_SPELL_CORPSE_EXPLODE));
DoScriptText(SAY_EXPLODE, m_creature); DoScriptText(SAY_EXPLODE, m_creature);
uiExplodeCorpseTimer = urand(15000,19000); uiExplodeCorpseTimer = urand(15*IN_MILISECONDS,19*IN_MILISECONDS);
} else uiExplodeCorpseTimer -= diff; } else uiExplodeCorpseTimer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();