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:
@@ -29,21 +29,26 @@ Script Data End */
|
|||||||
|
|
||||||
enum eSpells
|
enum eSpells
|
||||||
{
|
{
|
||||||
SPELL_BELLOWING_ROAR = 44863, // fears the group, can be resisted/dispelled
|
SPELL_BELLOWING_ROAR = 44863, // fears the group, can be resisted/dispelled
|
||||||
SPELL_GRIEVOUS_BITE = 48920,
|
SPELL_GRIEVOUS_BITE = 48920,
|
||||||
SPELL_MANGLING_SLASH = 48873, //casted on the current tank, adds debuf
|
SPELL_MANGLING_SLASH = 48873, //casted on the current tank, adds debuf
|
||||||
SPELL_FEARSOME_ROAR = 48849,
|
SPELL_FEARSOME_ROAR = 48849,
|
||||||
H_SPELL_FEARSOME_ROAR = 48849, //Not stacking, debuff
|
H_SPELL_FEARSOME_ROAR = 48849, //Not stacking, debuff
|
||||||
SPELL_PIERCING_SLASH = 48878, //debuff -->Armor reduced by 75%
|
SPELL_PIERCING_SLASH = 48878, //debuff -->Armor reduced by 75%
|
||||||
SPELL_RAPTOR_CALL = 59416, //dummy
|
SPELL_RAPTOR_CALL = 59416, //dummy
|
||||||
|
SPELL_GUT_RIP = 49710,
|
||||||
SPELL_GUT_RIP = 49710,
|
SPELL_REND = 13738
|
||||||
SPELL_REND = 13738
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eArchivements
|
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
|
struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
|
||||||
@@ -75,7 +80,7 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
|
|||||||
ManglingSlashTimer = 18500;
|
ManglingSlashTimer = 18500;
|
||||||
FearsomeRoarTimer = urand(10000,20000);
|
FearsomeRoarTimer = urand(10000,20000);
|
||||||
PiercingSlashTimer = 17000;
|
PiercingSlashTimer = 17000;
|
||||||
RaptorCallTimer = 12000;
|
RaptorCallTimer = urand(20000,25000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* who)
|
void EnterCombat(Unit* who)
|
||||||
@@ -127,12 +132,9 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
|
|||||||
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(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);
|
RaptorCallTimer = urand(20000,25000);
|
||||||
m_creature->SummonCreature(26641,x,y,z,0,TEMPSUMMON_DEAD_DESPAWN,1000);
|
|
||||||
|
|
||||||
RaptorCallTimer = 20000;
|
|
||||||
} else RaptorCallTimer -=diff;
|
} else RaptorCallTimer -=diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ struct Location
|
|||||||
|
|
||||||
static Location AddSpawnPoint = { -379.20, -816.76, 59.70};
|
static Location AddSpawnPoint = { -379.20, -816.76, 59.70};
|
||||||
static Location CrystalHandlerSpawnPoint = { -326.626343, -709.956604, 27.813314 };
|
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
|
struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ enum Spells
|
|||||||
H_SPELL_POISON_CLOUD = 59969,
|
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.
|
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
|
enum PlayerSkills
|
||||||
{
|
{
|
||||||
//Players' skills during Phase2
|
//Players' skills during Phase2
|
||||||
@@ -58,7 +59,7 @@ enum PlayerSkills
|
|||||||
SPELL_PLAYER_PHASE2_BONE_ARMOR = 49609,
|
SPELL_PLAYER_PHASE2_BONE_ARMOR = 49609,
|
||||||
SPELL_PLAYER_PHASE2_TOUCH_OF_LIFE = 49617
|
SPELL_PLAYER_PHASE2_TOUCH_OF_LIFE = 49617
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
//not in db
|
//not in db
|
||||||
enum Yells
|
enum Yells
|
||||||
{
|
{
|
||||||
@@ -73,7 +74,7 @@ enum Yells
|
|||||||
};
|
};
|
||||||
enum Models
|
enum Models
|
||||||
{
|
{
|
||||||
MODEL_FLESH = 27696,
|
MODEL_FLESH = 27073,
|
||||||
MODEL_SKELETON = 27511
|
MODEL_SKELETON = 27511
|
||||||
};
|
};
|
||||||
enum CombatPhase
|
enum CombatPhase
|
||||||
@@ -215,7 +216,7 @@ struct TRINITY_DLL_DECL boss_tharon_jaAI : public ScriptedAI
|
|||||||
if (uiPhaseTimer < diff)
|
if (uiPhaseTimer < diff)
|
||||||
{
|
{
|
||||||
DoScriptText(RAND(SAY_SKELETON_1,SAY_SKELETON_2), m_creature);
|
DoScriptText(RAND(SAY_SKELETON_1,SAY_SKELETON_2), m_creature);
|
||||||
m_creature->SetDisplayId(m_creature->GetNativeDisplayId());
|
m_creature->DeMorph();
|
||||||
Phase = SKELETAL;
|
Phase = SKELETAL;
|
||||||
uiPhaseTimer = 20000;
|
uiPhaseTimer = 20000;
|
||||||
uiCurseOfLifeTimer = 1000;
|
uiCurseOfLifeTimer = 1000;
|
||||||
|
|||||||
@@ -55,12 +55,15 @@ enum Achievements
|
|||||||
};
|
};
|
||||||
enum Creatures
|
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
|
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();
|
pInstance = c->GetInstanceData();
|
||||||
}
|
}
|
||||||
@@ -70,9 +73,12 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
|
|||||||
uint32 uiCrushTimer;
|
uint32 uiCrushTimer;
|
||||||
uint32 uiInfectedWoundTimer;
|
uint32 uiInfectedWoundTimer;
|
||||||
uint32 uiExplodeCorpseTimer;
|
uint32 uiExplodeCorpseTimer;
|
||||||
|
uint32 uiSpawnTimer;
|
||||||
|
|
||||||
bool bAchiev;
|
bool bAchiev;
|
||||||
|
|
||||||
|
SummonList lSummons;
|
||||||
|
|
||||||
ScriptedInstance* pInstance;
|
ScriptedInstance* pInstance;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
@@ -82,9 +88,12 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
|
|||||||
uiCrushTimer = urand(1000,5000);
|
uiCrushTimer = urand(1000,5000);
|
||||||
uiInfectedWoundTimer = urand(6000,10000);
|
uiInfectedWoundTimer = urand(6000,10000);
|
||||||
uiExplodeCorpseTimer = 3000;
|
uiExplodeCorpseTimer = 3000;
|
||||||
|
uiSpawnTimer = urand(30000,40000);
|
||||||
|
|
||||||
bAchiev = HeroicMode;
|
bAchiev = HeroicMode;
|
||||||
|
|
||||||
|
lSummons.DespawnAll();
|
||||||
|
|
||||||
if (m_creature->HasAura(HEROIC(SPELL_CONSUME,H_SPELL_CONSUME)))
|
if (m_creature->HasAura(HEROIC(SPELL_CONSUME,H_SPELL_CONSUME)))
|
||||||
m_creature->RemoveAura(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)
|
if (pInstance)
|
||||||
pInstance->SetData(DATA_TROLLGORE_EVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_TROLLGORE_EVENT, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
void AttackStart(Unit* who) {}
|
|
||||||
void MoveInLineOfSight(Unit* who) {}
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
//Return since we have no target
|
//Return since we have no target
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
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)
|
if (uiConsumeTimer < diff)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_CONSUME, m_creature);
|
DoScriptText(SAY_CONSUME, m_creature);
|
||||||
@@ -149,10 +164,13 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
|
|||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* killer)
|
void JustDied(Unit* killer)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
|
|
||||||
|
lSummons.DespawnAll();
|
||||||
|
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
{
|
{
|
||||||
if (bAchiev)
|
if (bAchiev)
|
||||||
@@ -160,12 +178,18 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
|
|||||||
pInstance->SetData(DATA_TROLLGORE_EVENT, DONE);
|
pInstance->SetData(DATA_TROLLGORE_EVENT, DONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
void KilledUnit(Unit *victim)
|
||||||
{
|
{
|
||||||
if (victim == m_creature)
|
if (victim == m_creature)
|
||||||
return;
|
return;
|
||||||
DoScriptText(SAY_KILL, m_creature);
|
DoScriptText(SAY_KILL, m_creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustSummoned(Creature* summon)
|
||||||
|
{
|
||||||
|
summon->AI()->AttackStart(m_creature);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI_boss_trollgore(Creature* pCreature)
|
CreatureAI* GetAI_boss_trollgore(Creature* pCreature)
|
||||||
|
|||||||
Reference in New Issue
Block a user