Drak'Tharon Keep, Trollgore: Fix AI, Implement add spawning

Drak'Tharon Keep, Novos the Summoner: Fix typo
Drak'Tharon Keep, King Dred: Adjust timer + cleanup
Drak'Tharon Keep, Tharon'Ja: Fix morphing model

--HG--
branch : trunk
This commit is contained in:
tartalo
2009-11-05 18:50:30 +01:00
parent 52fba363e3
commit c5c6013ced
4 changed files with 52 additions and 25 deletions

View File

@@ -29,21 +29,26 @@ Script Data End */
enum eSpells
{
SPELL_BELLOWING_ROAR = 44863, // fears the group, can be resisted/dispelled
SPELL_GRIEVOUS_BITE = 48920,
SPELL_MANGLING_SLASH = 48873, //casted on the current tank, adds debuf
SPELL_FEARSOME_ROAR = 48849,
H_SPELL_FEARSOME_ROAR = 48849, //Not stacking, debuff
SPELL_PIERCING_SLASH = 48878, //debuff -->Armor reduced by 75%
SPELL_RAPTOR_CALL = 59416, //dummy
SPELL_GUT_RIP = 49710,
SPELL_REND = 13738
SPELL_BELLOWING_ROAR = 44863, // fears the group, can be resisted/dispelled
SPELL_GRIEVOUS_BITE = 48920,
SPELL_MANGLING_SLASH = 48873, //casted on the current tank, adds debuf
SPELL_FEARSOME_ROAR = 48849,
H_SPELL_FEARSOME_ROAR = 48849, //Not stacking, debuff
SPELL_PIERCING_SLASH = 48878, //debuff -->Armor reduced by 75%
SPELL_RAPTOR_CALL = 59416, //dummy
SPELL_GUT_RIP = 49710,
SPELL_REND = 13738
};
enum eArchivements
{
ACHIEV_BETTER_OFF_DRED = 2039
ACHIEV_BETTER_OFF_DRED = 2039
};
enum Creatures
{
NPC_RAPTOR_1 = 26641,
NPC_RAPTOR_2 = 26628
};
struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
@@ -75,7 +80,7 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
ManglingSlashTimer = 18500;
FearsomeRoarTimer = urand(10000,20000);
PiercingSlashTimer = 17000;
RaptorCallTimer = 12000;
RaptorCallTimer = urand(20000,25000);
}
void EnterCombat(Unit* who)
@@ -127,12 +132,9 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
float x,y,z;
m_creature->GetClosePoint(x,y,z,m_creature->GetObjectSize()/3,10.0f);
m_creature->SummonCreature(26628,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,1000);
m_creature->GetClosePoint(x,y,z,m_creature->GetObjectSize()/3,10.0f);
m_creature->SummonCreature(26641,x,y,z,0,TEMPSUMMON_DEAD_DESPAWN,1000);
RaptorCallTimer = 20000;
RaptorCallTimer = urand(20000,25000);
} else RaptorCallTimer -=diff;
DoMeleeAttackIfReady();

View File

@@ -78,7 +78,7 @@ struct Location
static Location AddSpawnPoint = { -379.20, -816.76, 59.70};
static Location CrystalHandlerSpawnPoint = { -326.626343, -709.956604, 27.813314 };
static Location AddDestinyPoint = { -382.169, -711.369, 27.375};
static Location AddDestinyPoint = { -379.314545, -772.577637, 28.58837 };
struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
{

View File

@@ -50,6 +50,7 @@ enum Spells
H_SPELL_POISON_CLOUD = 59969,
SPELL_RETURN_FLESH = 53463 //Channeled spell ending phase two and returning to phase 1. This ability will stun the party for 6 seconds.
};
/* not needed
enum PlayerSkills
{
//Players' skills during Phase2
@@ -58,7 +59,7 @@ enum PlayerSkills
SPELL_PLAYER_PHASE2_BONE_ARMOR = 49609,
SPELL_PLAYER_PHASE2_TOUCH_OF_LIFE = 49617
};
*/
//not in db
enum Yells
{
@@ -73,7 +74,7 @@ enum Yells
};
enum Models
{
MODEL_FLESH = 27696,
MODEL_FLESH = 27073,
MODEL_SKELETON = 27511
};
enum CombatPhase
@@ -215,7 +216,7 @@ struct TRINITY_DLL_DECL boss_tharon_jaAI : public ScriptedAI
if (uiPhaseTimer < diff)
{
DoScriptText(RAND(SAY_SKELETON_1,SAY_SKELETON_2), m_creature);
m_creature->SetDisplayId(m_creature->GetNativeDisplayId());
m_creature->DeMorph();
Phase = SKELETAL;
uiPhaseTimer = 20000;
uiCurseOfLifeTimer = 1000;

View File

@@ -55,12 +55,15 @@ enum Achievements
};
enum Creatures
{
NPC_DRAKKARI_INVADERS = 22222
NPC_DRAKKARI_INVADER_1 = 27753,
NPC_DRAKKARI_INVADER_2 = 27709
};
Position SpawnPoint = { -260.493011, -622.968018, 26.605301, 3.036870 };
struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
{
boss_trollgoreAI(Creature *c) : ScriptedAI(c)
boss_trollgoreAI(Creature *c) : ScriptedAI(c), lSummons(me)
{
pInstance = c->GetInstanceData();
}
@@ -70,9 +73,12 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
uint32 uiCrushTimer;
uint32 uiInfectedWoundTimer;
uint32 uiExplodeCorpseTimer;
uint32 uiSpawnTimer;
bool bAchiev;
SummonList lSummons;
ScriptedInstance* pInstance;
void Reset()
@@ -82,9 +88,12 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
uiCrushTimer = urand(1000,5000);
uiInfectedWoundTimer = urand(6000,10000);
uiExplodeCorpseTimer = 3000;
uiSpawnTimer = urand(30000,40000);
bAchiev = HeroicMode;
lSummons.DespawnAll();
if (m_creature->HasAura(HEROIC(SPELL_CONSUME,H_SPELL_CONSUME)))
m_creature->RemoveAura(HEROIC(SPELL_CONSUME,H_SPELL_CONSUME));
@@ -99,14 +108,20 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
if (pInstance)
pInstance->SetData(DATA_TROLLGORE_EVENT, IN_PROGRESS);
}
void AttackStart(Unit* who) {}
void MoveInLineOfSight(Unit* who) {}
void UpdateAI(const uint32 diff)
{
//Return since we have no target
if (!UpdateVictim())
return;
if (uiSpawnTimer < diff)
{
for (uint8 i = 0; i < urand(2,HEROIC(3,5)); ++i)
DoSpawnCreature(RAND(NPC_DRAKKARI_INVADER_1,NPC_DRAKKARI_INVADER_2), SpawnPoint.GetPositionX(), SpawnPoint.GetPositionY(), SpawnPoint.GetPositionZ(), SpawnPoint.GetOrientation(), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000);
uiSpawnTimer = urand(30000,40000);
} else uiSpawnTimer -= diff;
if (uiConsumeTimer < diff)
{
DoScriptText(SAY_CONSUME, m_creature);
@@ -149,10 +164,13 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
DoMeleeAttackIfReady();
}
void JustDied(Unit* killer)
{
DoScriptText(SAY_DEATH, m_creature);
lSummons.DespawnAll();
if (pInstance)
{
if (bAchiev)
@@ -160,12 +178,18 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
pInstance->SetData(DATA_TROLLGORE_EVENT, DONE);
}
}
void KilledUnit(Unit *victim)
{
if (victim == m_creature)
return;
DoScriptText(SAY_KILL, m_creature);
}
void JustSummoned(Creature* summon)
{
summon->AI()->AttackStart(m_creature);
}
};
CreatureAI* GetAI_boss_trollgore(Creature* pCreature)