*Add a simple script of razorscale

--HG--
branch : trunk
This commit is contained in:
megamage
2009-06-13 13:29:08 -05:00
parent 4aa530e48f
commit e3080b3306

View File

@@ -18,3 +18,97 @@
#include "precompiled.h"
#include "def_ulduar.h"
#define SPELL_FLAME_BUFFET HEROIC(64016,64023)
#define SPELL_WING_BUFFET 62666
#define SPELL_FUSE_ARMOR 64821
#define SPELL_FLAME_BREATH HEROIC(63317,64021)
#define SPELL_DEVOURING_FLAME HEROIC(63014,63816)
#define SPELL_BERSERK 47008
enum Events
{
EVENT_BUFFET = 1,
EVENT_WING,
EVENT_FUSE,
EVENT_BREATH,
EVENT_DEVOUR,
EVENT_BERSERK,
};
struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
{
boss_razorscaleAI(Creature *c) : BossAI(c, BOSS_RAZORSCALE) {}
void EnterCombat(Unit *who)
{
_EnterCombat();
events.ScheduleEvent(EVENT_BERSERK, 7*60000);
events.ScheduleEvent(EVENT_BUFFET, 10000+rand()%5000);
events.ScheduleEvent(EVENT_WING, 30000+rand()%30000);
events.ScheduleEvent(EVENT_FUSE, 10000);
events.ScheduleEvent(EVENT_BREATH, 15000);
events.ScheduleEvent(EVENT_DEVOUR, 10000);
}
void UpdateAI(const uint32 diff)
{
if(!UpdateVictim())
return;
events.Update(diff);
if(me->hasUnitState(UNIT_STAT_CASTING))
return;
if(uint32 eventId = events.GetEvent())
{
switch(eventId)
{
case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK);
return;
case EVENT_BUFFET:
DoCastAOE(SPELL_FLAME_BUFFET);
events.RepeatEvent(10000+rand()%5000);
return;
case EVENT_WING:
DoCastAOE(SPELL_WING_BUFFET);
events.RepeatEvent(30000+rand()%30000);
return;
case EVENT_BREATH:
DoCastAOE(SPELL_FLAME_BREATH);
events.RepeatEvent(15000);
return;
case EVENT_FUSE:
DoCast(me->getVictim(), SPELL_FUSE_ARMOR);
events.RepeatEvent(10000);
return;
case EVENT_DEVOUR:
if(Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
DoCast(target, SPELL_DEVOURING_FLAME);
events.RepeatEvent(10000);
return;
default:
events.PopEvent();
break;
}
}
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_boss_razorscale(Creature *_Creature)
{
return new boss_razorscaleAI (_Creature);
}
void AddSC_boss_razorscale()
{
Script *newscript;
newscript = new Script;
newscript->Name="boss_razorscale";
newscript->GetAI = &GetAI_boss_razorscale;
newscript->RegisterSelf();
}