Scripts/Ahn'kahet/Prince Taldaram:
Fix movement after shield drops.(no more LoS issues) Update boss texts and move them to creature_text. Add proper sounds to text. Add condition for a visual spell. Add usage of different Embrace of the Vampyr spell based on difficulty.
This commit is contained in:
@@ -36,7 +36,8 @@ enum Spells
|
||||
SPELL_VANISH = 55964,
|
||||
CREATURE_FLAME_SPHERE = 30106,
|
||||
H_CREATURE_FLAME_SPHERE_1 = 31686,
|
||||
H_CREATURE_FLAME_SPHERE_2 = 31687
|
||||
H_CREATURE_FLAME_SPHERE_2 = 31687,
|
||||
SPELL_HOVER_FALL = 60425
|
||||
};
|
||||
enum Misc
|
||||
{
|
||||
@@ -45,18 +46,17 @@ enum Misc
|
||||
DATA_SPHERE_DISTANCE = 15
|
||||
};
|
||||
#define DATA_SPHERE_ANGLE_OFFSET 0.7f
|
||||
#define DATA_GROUND_POSITION_Z 11.4f
|
||||
#define DATA_GROUND_POSITION_Z 11.30809f
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = -1619021,
|
||||
SAY_SLAY_1 = -1619022,
|
||||
SAY_SLAY_2 = -1619023,
|
||||
SAY_DEATH = -1619024,
|
||||
SAY_FEED_1 = -1619025,
|
||||
SAY_FEED_2 = -1619026,
|
||||
SAY_VANISH_1 = -1619027,
|
||||
SAY_VANISH_2 = -1619028
|
||||
SAY_1 = 0,
|
||||
SAY_WARNING = 1,
|
||||
SAY_AGGRO = 2,
|
||||
SAY_SLAY = 3,
|
||||
SAY_DEATH = 4,
|
||||
SAY_FEED = 5,
|
||||
SAY_VANISH = 6,
|
||||
};
|
||||
enum CombatPhase
|
||||
{
|
||||
@@ -82,8 +82,7 @@ public:
|
||||
boss_taldaramAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = creature->GetInstanceScript();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetDisableGravity(true);
|
||||
}
|
||||
|
||||
uint32 uiBloodthirstTimer;
|
||||
@@ -118,7 +117,7 @@ public:
|
||||
{
|
||||
if (instance)
|
||||
instance->SetData(DATA_PRINCE_TALDARAM_EVENT, IN_PROGRESS);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -180,7 +179,8 @@ public:
|
||||
break;
|
||||
case VANISHED:
|
||||
if (Unit* pEmbraceTarget = GetEmbraceTarget())
|
||||
DoCast(pEmbraceTarget, SPELL_EMBRACE_OF_THE_VAMPYR);
|
||||
DoCast(pEmbraceTarget, DUNGEON_MODE(SPELL_EMBRACE_OF_THE_VAMPYR, H_SPELL_EMBRACE_OF_THE_VAMPYR));
|
||||
Talk(SAY_FEED);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->SetSpeed(MOVE_WALK, 1.0f, true);
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
@@ -202,7 +202,7 @@ public:
|
||||
if (uiFlamesphereTimer <= diff)
|
||||
{
|
||||
// because TARGET_UNIT_TARGET_ENEMY we need a target selected to cast
|
||||
DoCast(me->getVictim(), SPELL_CONJURE_FLAME_SPHERE);
|
||||
DoCastVictim(SPELL_CONJURE_FLAME_SPHERE);
|
||||
Phase = CASTING_FLAME_SPHERES;
|
||||
uiPhaseTimer = 3*IN_MILLISECONDS + diff;
|
||||
uiFlamesphereTimer = 15*IN_MILLISECONDS;
|
||||
@@ -225,7 +225,7 @@ public:
|
||||
//He only vanishes if there are 3 or more alive players
|
||||
if (target_list.size() > 2)
|
||||
{
|
||||
DoScriptText(RAND(SAY_VANISH_1, SAY_VANISH_2), me);
|
||||
Talk(SAY_VANISH);
|
||||
DoCast(me, SPELL_VANISH);
|
||||
Phase = JUST_VANISHED;
|
||||
uiPhaseTimer = 500;
|
||||
@@ -261,7 +261,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
if (instance)
|
||||
instance->SetData(DATA_PRINCE_TALDARAM_EVENT, DONE);
|
||||
@@ -279,7 +279,7 @@ public:
|
||||
uiPhaseTimer = 0;
|
||||
uiEmbraceTarget = 0;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
bool CheckSpheres()
|
||||
@@ -315,12 +315,13 @@ public:
|
||||
{
|
||||
if (!instance)
|
||||
return;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), DATA_GROUND_POSITION_Z, me->GetOrientation());
|
||||
DoCast(SPELL_HOVER_FALL);
|
||||
me->SetDisableGravity(false);
|
||||
me->GetMotionMaster()->MovePoint(0, me->GetHomePosition());
|
||||
Talk(SAY_WARNING);
|
||||
uint64 prison_GUID = instance->GetData64(DATA_PRINCE_TALDARAM_PLATFORM);
|
||||
instance->HandleGameObject(prison_GUID, true);
|
||||
}
|
||||
@@ -405,10 +406,12 @@ public:
|
||||
{
|
||||
case GO_SPHERE1:
|
||||
instance->SetData(DATA_SPHERE1_EVENT, IN_PROGRESS);
|
||||
pPrinceTaldaram->AI()->Talk(SAY_1);
|
||||
break;
|
||||
|
||||
case GO_SPHERE2:
|
||||
instance->SetData(DATA_SPHERE2_EVENT, IN_PROGRESS);
|
||||
pPrinceTaldaram->AI()->Talk(SAY_1);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user