*Ulduar - fix several cases of incorrect targeting and spells.

--HG--
branch : trunk
This commit is contained in:
maximius
2009-10-31 00:05:50 -07:00
parent 08f99a7794
commit ad12344d6a
4 changed files with 41 additions and 54 deletions
@@ -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;
} }