aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-06-13 13:29:08 -0500
committermegamage <none@none>2009-06-13 13:29:08 -0500
commite3080b3306dfd6da6a932eeded7dc59b0a7a49fc (patch)
treea406aa129772f3cf933ded7f6c16ea33adf69cc7 /src
parent4aa530e48f5d999a6b78483e7edbc4b8d89658b8 (diff)
*Add a simple script of razorscale
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/zone/ulduar/ulduar/boss_razorscale.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/bindings/scripts/scripts/zone/ulduar/ulduar/boss_razorscale.cpp b/src/bindings/scripts/scripts/zone/ulduar/ulduar/boss_razorscale.cpp
index a736b2db12a..8f257d9a37c 100644
--- a/src/bindings/scripts/scripts/zone/ulduar/ulduar/boss_razorscale.cpp
+++ b/src/bindings/scripts/scripts/zone/ulduar/ulduar/boss_razorscale.cpp
@@ -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();
+}