*Ulduar - fix several cases of incorrect targeting and spells.
--HG-- branch : trunk
This commit is contained in:
@@ -20,8 +20,10 @@
|
|||||||
#include "ulduar.h"
|
#include "ulduar.h"
|
||||||
|
|
||||||
//boss_auriaya
|
//boss_auriaya
|
||||||
#define SPELL_TERRIFYING_SCREECH 64386
|
#define SPELL_TERRIFYING_SCREECH 64386
|
||||||
#define SPELL_SONIC_BOOM 38897
|
#define SPELL_SETINEL_BLAST 64679
|
||||||
|
#define SPELL_SONIC_SCREECH 64422
|
||||||
|
#define SPELL_SUMMON_SWARMING_GUARDIAN 64397
|
||||||
//wrong text ids. correct are beetwen -1000000 AND -1999999
|
//wrong text ids. correct are beetwen -1000000 AND -1999999
|
||||||
//beetwen -2000000 and -2999999 are custom texts so wtf?
|
//beetwen -2000000 and -2999999 are custom texts so wtf?
|
||||||
#define SAY_AGGRO -2615016
|
#define SAY_AGGRO -2615016
|
||||||
@@ -37,12 +39,12 @@ struct TRINITY_DLL_DECL boss_auriaya_AI : public BossAI
|
|||||||
ScriptedInstance* m_pInstance;
|
ScriptedInstance* m_pInstance;
|
||||||
|
|
||||||
uint32 TERRIFYING_SCREECH_Timer;
|
uint32 TERRIFYING_SCREECH_Timer;
|
||||||
uint32 SONIC_BOOM_Timer;
|
uint32 SONIC_SCREECH_Timer;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
TERRIFYING_SCREECH_Timer = 0;
|
TERRIFYING_SCREECH_Timer = 180000;
|
||||||
SONIC_BOOM_Timer = 2000;
|
SONIC_SCREECH_Timer = 30000;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* who)
|
void EnterCombat(Unit* who)
|
||||||
@@ -71,16 +73,16 @@ struct TRINITY_DLL_DECL boss_auriaya_AI : public BossAI
|
|||||||
|
|
||||||
if (TERRIFYING_SCREECH_Timer <= diff)
|
if (TERRIFYING_SCREECH_Timer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature,SPELL_TERRIFYING_SCREECH);
|
DoCast(SPELL_TERRIFYING_SCREECH);
|
||||||
DoScriptText(SAY_SLAY_1, m_creature);
|
DoScriptText(SAY_SLAY_1, m_creature);
|
||||||
TERRIFYING_SCREECH_Timer = 360000;
|
TERRIFYING_SCREECH_Timer = 180000;
|
||||||
} else TERRIFYING_SCREECH_Timer -= diff;
|
} else TERRIFYING_SCREECH_Timer -= diff;
|
||||||
|
|
||||||
if (SONIC_BOOM_Timer <= diff)
|
if (SONIC_BOOM_Timer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_SONIC_BOOM);
|
DoCastVictim(SPELL_SONIC_SCREECH);
|
||||||
SONIC_BOOM_Timer = 20000;
|
SONIC_SCREECH_Timer = 30000;
|
||||||
} else SONIC_BOOM_Timer -= diff;
|
} else SONIC_SCREECH_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,9 +67,7 @@ struct TRINITY_DLL_DECL boss_freyaAI : public BossAI
|
|||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
|
|
||||||
EnterEvadeIfOutOfCombatArea(diff);
|
EnterEvadeIfOutOfCombatArea(diff);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI_boss_freya(Creature* pCreature)
|
CreatureAI* GetAI_boss_freya(Creature* pCreature)
|
||||||
@@ -84,5 +82,4 @@ void AddSC_boss_freya()
|
|||||||
newscript->Name = "boss_freya";
|
newscript->Name = "boss_freya";
|
||||||
newscript->GetAI = &GetAI_boss_freya;
|
newscript->GetAI = &GetAI_boss_freya;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ struct TRINITY_DLL_DECL boss_ignis_AI : public BossAI
|
|||||||
|
|
||||||
if (SCORCH_Timer <= diff)
|
if (SCORCH_Timer <= diff)
|
||||||
{
|
{
|
||||||
DoCastVictim(SPELL_SCORCH);
|
DoCast(SPELL_SCORCH);
|
||||||
SCORCH_Timer = 20000;
|
SCORCH_Timer = 20000;
|
||||||
} else SCORCH_Timer -= diff;
|
} else SCORCH_Timer -= diff;
|
||||||
|
|
||||||
|
|||||||
@@ -17,10 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* ScriptData
|
/* ScriptData
|
||||||
Name: razorscale
|
SDName: razorscale
|
||||||
%Complete: 90
|
SD%Complete: 65
|
||||||
Comment: Made by Epsik from WoW Arthas wow.dsl.net.pk
|
|
||||||
Category:
|
|
||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
@@ -41,16 +39,12 @@ EndScriptData */
|
|||||||
#define SPELL_FLAMEBREATH 63317
|
#define SPELL_FLAMEBREATH 63317
|
||||||
#define SPELL_FUSEARMOR 64771
|
#define SPELL_FUSEARMOR 64771
|
||||||
#define SPELL_DEVOURINGFLAME 63014
|
#define SPELL_DEVOURINGFLAME 63014
|
||||||
#define SPELL_KNOCK_AWAY 19633
|
|
||||||
|
|
||||||
#define SPELL_BELLOWINGROAR 18431
|
|
||||||
#define SPELL_HEATED_GROUND 22191
|
|
||||||
|
|
||||||
#define SPELL_SUMMONADDS 17646
|
#define SPELL_SUMMONADDS 17646
|
||||||
|
|
||||||
#define CREATURE_ADDS 33846
|
#define CREATURE_ADDS 33846
|
||||||
|
|
||||||
static float MovementLocations[4][3]=
|
static float MovementLocations[4][3] =
|
||||||
{
|
{
|
||||||
{607.7, -281.9, 408.6},
|
{607.7, -281.9, 408.6},
|
||||||
{602.0, -245.5, 424.7},
|
{602.0, -245.5, 424.7},
|
||||||
@@ -58,7 +52,7 @@ static float MovementLocations[4][3]=
|
|||||||
{624.1, -251.8, 426.1}
|
{624.1, -251.8, 426.1}
|
||||||
};
|
};
|
||||||
|
|
||||||
static float SpawnLocations[4][3]=
|
static float SpawnLocations[4][3] =
|
||||||
{
|
{
|
||||||
{602.0, -248.1, 391.2},
|
{602.0, -248.1, 391.2},
|
||||||
{624.4, -232-4, 391.1},
|
{624.4, -232-4, 391.1},
|
||||||
@@ -77,9 +71,7 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
|
|||||||
uint32 DEVOURINGFLAMETimer;
|
uint32 DEVOURINGFLAMETimer;
|
||||||
uint32 MovementTimer;
|
uint32 MovementTimer;
|
||||||
uint32 SummonAddsTimer;
|
uint32 SummonAddsTimer;
|
||||||
uint32 BellowingRoarTimer;
|
|
||||||
uint32 WingBuffetTimer;
|
uint32 WingBuffetTimer;
|
||||||
uint32 KnockAwayTimer;
|
|
||||||
uint32 FireballTimer;
|
uint32 FireballTimer;
|
||||||
|
|
||||||
bool InitialSpawn;
|
bool InitialSpawn;
|
||||||
@@ -93,9 +85,7 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
|
|||||||
FUSEARMORTimer = 15000;
|
FUSEARMORTimer = 15000;
|
||||||
MovementTimer = 3000;
|
MovementTimer = 3000;
|
||||||
SummonAddsTimer = 45000;
|
SummonAddsTimer = 45000;
|
||||||
BellowingRoarTimer = 30000;
|
|
||||||
WingBuffetTimer = 17000;
|
WingBuffetTimer = 17000;
|
||||||
KnockAwayTimer = 15000;
|
|
||||||
FireballTimer = 18000;
|
FireballTimer = 18000;
|
||||||
|
|
||||||
InitialSpawn = true;
|
InitialSpawn = true;
|
||||||
@@ -158,47 +148,36 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
|
|||||||
{
|
{
|
||||||
if (FlameBreathTimer <= diff)
|
if (FlameBreathTimer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_FLAMEBREATH);
|
DoCastVictim(SPELL_FLAMEBREATH);
|
||||||
FlameBreathTimer = 15000;
|
FlameBreathTimer = 15000;
|
||||||
} else FlameBreathTimer -= diff;
|
} else FlameBreathTimer -= diff;
|
||||||
|
|
||||||
if (DEVOURINGFLAMETimer <= diff)
|
if (DEVOURINGFLAMETimer <= diff)
|
||||||
{
|
{
|
||||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
std::list<Unit*> pTargets;
|
||||||
if (!m_creature->HasInArc(M_PI, pTarget))
|
SelectTargetList(pTargets, 10, SELECT_TARGET_RANDOM, 100, true);
|
||||||
DoCast(pTarget, SPELL_DEVOURINGFLAME);
|
for (std::list<Unit*>::iterator i = pTargets.begin(); i != pTargets.end(); ++i)
|
||||||
|
if (!m_creature->HasInArc(M_PI, *i))
|
||||||
|
{
|
||||||
|
DoCast(*i, SPELL_DEVOURINGFLAME);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
DEVOURINGFLAMETimer = 10000;
|
DEVOURINGFLAMETimer = 10000;
|
||||||
} else DEVOURINGFLAMETimer -= diff;
|
} else DEVOURINGFLAMETimer -= diff;
|
||||||
|
|
||||||
if (FUSEARMORTimer <= diff)
|
if (FUSEARMORTimer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_FUSEARMOR);
|
DoCastVictim(SPELL_FUSEARMOR);
|
||||||
FUSEARMORTimer = 10000;
|
FUSEARMORTimer = 10000;
|
||||||
} else FUSEARMORTimer -= diff;
|
} else FUSEARMORTimer -= diff;
|
||||||
|
|
||||||
if (WingBuffetTimer <= diff)
|
if (WingBuffetTimer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_WINGBUFFET);
|
DoCast(SPELL_WINGBUFFET);
|
||||||
WingBuffetTimer = urand(7000,14000);
|
WingBuffetTimer = urand(7000,14000);
|
||||||
} else WingBuffetTimer -= diff;
|
} else WingBuffetTimer -= diff;
|
||||||
|
|
||||||
if (KnockAwayTimer <= diff)
|
|
||||||
{
|
|
||||||
if (urand(0,99) < 30)
|
|
||||||
DoCast(m_creature->getVictim(), SPELL_KNOCK_AWAY);
|
|
||||||
KnockAwayTimer = 15000;
|
|
||||||
} else KnockAwayTimer -= diff;
|
|
||||||
|
|
||||||
if (Phase == 3)
|
|
||||||
{
|
|
||||||
if (BellowingRoarTimer <= diff)
|
|
||||||
{
|
|
||||||
DoCast(m_creature->getVictim(), SPELL_BELLOWINGROAR);
|
|
||||||
BellowingRoarTimer = 30000;
|
|
||||||
} else BellowingRoarTimer -= diff;
|
|
||||||
}
|
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,7 +190,14 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
|
|||||||
|
|
||||||
if (FireballTimer <= diff)
|
if (FireballTimer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_FIREBALL);
|
std::list<Unit*> pTargets;
|
||||||
|
SelectTargetList(pTargets, 10, SELECT_TARGET_RANDOM, 100, true);
|
||||||
|
for (std::list<Unit*>::iterator i = pTargets.begin(); i != pTargets.end(); ++i)
|
||||||
|
if (!m_creature->HasInArc(M_PI, *i))
|
||||||
|
{
|
||||||
|
DoCast(*i, SPELL_FIREBALL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
FireballTimer = 18000;
|
FireballTimer = 18000;
|
||||||
} else FireballTimer -= diff;
|
} else FireballTimer -= diff;
|
||||||
@@ -221,7 +207,8 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
|
|||||||
if (urand(0,99) < 30)
|
if (urand(0,99) < 30)
|
||||||
{
|
{
|
||||||
DoScriptText(EMOTE_BREATH, m_creature);
|
DoScriptText(EMOTE_BREATH, m_creature);
|
||||||
DoCast(m_creature->getVictim(), SPELL_FLAMEBUFFET);
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||||
|
DoCast(pTarget, SPELL_FLAMEBUFFET);
|
||||||
}
|
}
|
||||||
else ChangePosition();
|
else ChangePosition();
|
||||||
|
|
||||||
@@ -246,8 +233,9 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
|
|||||||
for (uint32 i = 0; i < 4; ++i)
|
for (uint32 i = 0; i < 4; ++i)
|
||||||
{
|
{
|
||||||
uint8 random = urand(0,3);
|
uint8 random = urand(0,3);
|
||||||
if (Creature* Add = m_creature->SummonCreature(CREATURE_ADDS, SpawnLocations[random][0], SpawnLocations[random][1], SpawnLocations[random][2], 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000))
|
if (Creature *pAdd = m_creature->SummonCreature(CREATURE_ADDS, SpawnLocations[random][0], SpawnLocations[random][1], SpawnLocations[random][2], 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000))
|
||||||
Add->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true));
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true))
|
||||||
|
pAdd->AI()->AttackStart(pTarget);
|
||||||
}
|
}
|
||||||
SummonAddsTimer = 45000;
|
SummonAddsTimer = 45000;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user