*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
@@ -21,7 +21,9 @@
//boss_auriaya
#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
//beetwen -2000000 and -2999999 are custom texts so wtf?
#define SAY_AGGRO -2615016
@@ -37,12 +39,12 @@ struct TRINITY_DLL_DECL boss_auriaya_AI : public BossAI
ScriptedInstance* m_pInstance;
uint32 TERRIFYING_SCREECH_Timer;
uint32 SONIC_BOOM_Timer;
uint32 SONIC_SCREECH_Timer;
void Reset()
{
TERRIFYING_SCREECH_Timer = 0;
SONIC_BOOM_Timer = 2000;
TERRIFYING_SCREECH_Timer = 180000;
SONIC_SCREECH_Timer = 30000;
}
void EnterCombat(Unit* who)
@@ -71,16 +73,16 @@ struct TRINITY_DLL_DECL boss_auriaya_AI : public BossAI
if (TERRIFYING_SCREECH_Timer <= diff)
{
DoCast(m_creature,SPELL_TERRIFYING_SCREECH);
DoCast(SPELL_TERRIFYING_SCREECH);
DoScriptText(SAY_SLAY_1, m_creature);
TERRIFYING_SCREECH_Timer = 360000;
TERRIFYING_SCREECH_Timer = 180000;
} else TERRIFYING_SCREECH_Timer -= diff;
if (SONIC_BOOM_Timer <= diff)
{
DoCast(m_creature->getVictim(),SPELL_SONIC_BOOM);
SONIC_BOOM_Timer = 20000;
} else SONIC_BOOM_Timer -= diff;
DoCastVictim(SPELL_SONIC_SCREECH);
SONIC_SCREECH_Timer = 30000;
} else SONIC_SCREECH_Timer -= diff;
DoMeleeAttackIfReady();
}
@@ -67,9 +67,7 @@ struct TRINITY_DLL_DECL boss_freyaAI : public BossAI
DoMeleeAttackIfReady();
EnterEvadeIfOutOfCombatArea(diff);
}
};
CreatureAI* GetAI_boss_freya(Creature* pCreature)
@@ -84,5 +82,4 @@ void AddSC_boss_freya()
newscript->Name = "boss_freya";
newscript->GetAI = &GetAI_boss_freya;
newscript->RegisterSelf();
}
@@ -80,7 +80,7 @@ struct TRINITY_DLL_DECL boss_ignis_AI : public BossAI
if (SCORCH_Timer <= diff)
{
DoCastVictim(SPELL_SCORCH);
DoCast(SPELL_SCORCH);
SCORCH_Timer = 20000;
} else SCORCH_Timer -= diff;
@@ -17,10 +17,8 @@
*/
/* ScriptData
Name: razorscale
%Complete: 90
Comment: Made by Epsik from WoW Arthas wow.dsl.net.pk
Category:
SDName: razorscale
SD%Complete: 65
EndScriptData */
#include "precompiled.h"
@@ -41,10 +39,6 @@ EndScriptData */
#define SPELL_FLAMEBREATH 63317
#define SPELL_FUSEARMOR 64771
#define SPELL_DEVOURINGFLAME 63014
#define SPELL_KNOCK_AWAY 19633
#define SPELL_BELLOWINGROAR 18431
#define SPELL_HEATED_GROUND 22191
#define SPELL_SUMMONADDS 17646
@@ -77,9 +71,7 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
uint32 DEVOURINGFLAMETimer;
uint32 MovementTimer;
uint32 SummonAddsTimer;
uint32 BellowingRoarTimer;
uint32 WingBuffetTimer;
uint32 KnockAwayTimer;
uint32 FireballTimer;
bool InitialSpawn;
@@ -93,9 +85,7 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
FUSEARMORTimer = 15000;
MovementTimer = 3000;
SummonAddsTimer = 45000;
BellowingRoarTimer = 30000;
WingBuffetTimer = 17000;
KnockAwayTimer = 15000;
FireballTimer = 18000;
InitialSpawn = true;
@@ -158,47 +148,36 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
{
if (FlameBreathTimer <= diff)
{
DoCast(m_creature->getVictim(), SPELL_FLAMEBREATH);
DoCastVictim(SPELL_FLAMEBREATH);
FlameBreathTimer = 15000;
} else FlameBreathTimer -= diff;
if (DEVOURINGFLAMETimer <= diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
if (!m_creature->HasInArc(M_PI, pTarget))
DoCast(pTarget, SPELL_DEVOURINGFLAME);
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_DEVOURINGFLAME);
break;
}
DEVOURINGFLAMETimer = 10000;
} else DEVOURINGFLAMETimer -= diff;
if (FUSEARMORTimer <= diff)
{
DoCast(m_creature->getVictim(), SPELL_FUSEARMOR);
DoCastVictim(SPELL_FUSEARMOR);
FUSEARMORTimer = 10000;
} else FUSEARMORTimer -= diff;
if (WingBuffetTimer <= diff)
{
DoCast(m_creature->getVictim(), SPELL_WINGBUFFET);
DoCast(SPELL_WINGBUFFET);
WingBuffetTimer = urand(7000,14000);
} 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();
}
@@ -211,7 +190,14 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
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;
} else FireballTimer -= diff;
@@ -221,7 +207,8 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
if (urand(0,99) < 30)
{
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();
@@ -246,8 +233,9 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
for (uint32 i = 0; i < 4; ++i)
{
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))
Add->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true));
if (Creature *pAdd = m_creature->SummonCreature(CREATURE_ADDS, SpawnLocations[random][0], SpawnLocations[random][1], SpawnLocations[random][2], 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000))
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true))
pAdd->AI()->AttackStart(pTarget);
}
SummonAddsTimer = 45000;
}