Drak'Tharon Keep: Cleanup
--HG-- branch : trunk
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
|
* Copyright (C) 2008 - 2010 Trinity <http://www.trinitycore.org/>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user