Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
boss_flamegor.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "ScriptMgr.h"
7#include "ScriptedCreature.h"
8#include "blackwing_lair.h"
9
11{
13};
14
16{
19 SPELL_FRENZY = 23342 //This spell periodically triggers fire nova
20};
21
28
30{
31public:
32 boss_flamegor() : CreatureScript("boss_flamegor") { }
33
34 struct boss_flamegorAI : public BossAI
35 {
36 boss_flamegorAI(Creature* creature) : BossAI(creature, BOSS_FLAMEGOR) { }
37
38 void EnterCombat(Unit* /*who*/) OVERRIDE
39 {
40 if (instance && instance->GetBossState(BOSS_BROODLORD) != DONE)
41 {
43 return;
44 }
46
47 events.ScheduleEvent(EVENT_SHADOWFLAME, std::rand() % 20000 + 10000);
48 events.ScheduleEvent(EVENT_WINGBUFFET, 30000);
49 events.ScheduleEvent(EVENT_FRENZY, 10000);
50 }
51
53 {
54 if (!UpdateVictim())
55 return;
56
57 events.Update(diff);
58
59 if (me->HasUnitState(UNIT_STATE_CASTING))
60 return;
61
62 while (uint32 eventId = events.ExecuteEvent())
63 {
64 switch (eventId)
65 {
68 events.ScheduleEvent(EVENT_SHADOWFLAME, std::rand() % 20000 + 10000);
69 break;
72 if (DoGetThreat(me->GetVictim()))
73 DoModifyThreatPercent(me->GetVictim(), -75);
74 events.ScheduleEvent(EVENT_WINGBUFFET, 30000);
75 break;
76 case EVENT_FRENZY:
79 events.ScheduleEvent(EVENT_FRENZY, std::rand() % 10000 + 8000);
80 break;
81 }
82 }
83
85 }
86 };
87
89 {
90 return new boss_flamegorAI(creature);
91 }
92};
93
95{
96 new boss_flamegor();
97}
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ DONE
@ UNIT_STATE_CASTING
Definition Unit.h:527
@ BOSS_FLAMEGOR
@ BOSS_BROODLORD
@ SPELL_FRENZY
@ SPELL_SHADOWFLAME
@ SPELL_WINGBUFFET
@ EVENT_WINGBUFFET
@ EVENT_SHADOWFLAME
@ EMOTE_FRENZY
@ SPELL_FRENZY
@ SPELL_SHADOWFLAME
@ SPELL_WINGBUFFET
void AddSC_boss_flamegor()
@ EVENT_WINGBUFFET
@ EVENT_FRENZY
@ EVENT_SHADOWFLAME
InstanceScript *const instance
EventMap events
BossAI(Creature *creature, uint32 bossId)
void _EnterCombat()
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
bool UpdateVictim()
virtual void EnterEvadeMode()
CreatureScript(const char *name)
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:28
void DoCast(uint32 spellId)
Definition UnitAI.cpp:110
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition UnitAI.cpp:168
Definition Unit.h:1367
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Creature * me
float DoGetThreat(Unit *unit)
void DoModifyThreatPercent(Unit *unit, int32 pct)
boss_flamegorAI(Creature *creature)
void EnterCombat(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================