mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
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
|
||||
{
|
||||
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();
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user