Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
boss_commander_sarannis.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 "the_botanica.h"
9#include "SpellScript.h"
10
21
28
34
36{
37 public:
38 boss_commander_sarannis() : CreatureScript("boss_commander_sarannis") { }
39
41 {
43
45 {
46 _Reset();
47 _phase = true;
48 }
49
50 void EnterCombat(Unit* /*who*/) OVERRIDE
51 {
54 events.ScheduleEvent(EVENT_ARCANE_RESONANCE, 42700);
55 events.ScheduleEvent(EVENT_ARCANE_DEVASTATION, 15200);
56 }
57
58 void KilledUnit(Unit* /*victim*/) OVERRIDE
59 {
61 }
62
63 void JustDied(Unit* /*killer*/) OVERRIDE
64 {
65 _JustDied();
67 }
68
69 void DamageTaken(Unit* /*killer*/, uint32 &damage) OVERRIDE
70 {
71 if (me->HealthBelowPctDamaged(50, damage) && _phase)
72 {
73 _phase = false;
77 }
78 }
79
81 {
83 }
84
86 {
87 if (!UpdateVictim())
88 return;
89
90 events.Update(diff);
91
92 if (me->HasUnitState(UNIT_STATE_CASTING))
93 return;
94
95 while (uint32 eventId = events.ExecuteEvent())
96 {
97 switch (eventId)
98 {
102 events.ScheduleEvent(EVENT_ARCANE_RESONANCE, 42700);
103 break;
107 events.ScheduleEvent(EVENT_ARCANE_DEVASTATION, std::rand() % 19200 + 11000);
108 break;
109 default:
110 break;
111 }
112 }
113
115 }
116
117 private:
118 bool _phase;
119 };
120
122 {
123 return new boss_commander_sarannisAI(creature);
124 }
125};
126
128{
129 { 160.4483f, 287.6435f, -3.887904f, 2.3841f },
130 { 153.4406f, 289.9929f, -4.736916f, 2.3841f },
131 { 154.4137f, 292.8956f, -4.683603f, 2.3841f },
132 { 157.1544f, 294.2599f, -4.726504f, 2.3841f }
133};
134
140
170
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ TEMPSUMMON_CORPSE_DESPAWN
Definition Object.h:72
SpellEffIndex
@ EFFECT_0
@ SPELL_EFFECT_DUMMY
#define SpellEffectFn(F, I, N)
@ UNIT_STATE_CASTING
Definition Unit.h:527
Creatures
#define SAY_DEATH
#define SAY_AGGRO
#define SAY_KILL
@ SAY_ARCANE_DEVASTATION
@ NPC_SUMMONED_BLOODWARDER_RESERVIST
@ NPC_SUMMONED_BLOODWARDER_MENDER
@ SPELL_SUMMON_REINFORCEMENTS
@ SPELL_ARCANE_DEVASTATION
@ SPELL_ARCANE_RESONANCE
Position const PosSummonReinforcements[4]
void AddSC_boss_commander_sarannis()
@ EVENT_ARCANE_RESONANCE
@ EVENT_ARCANE_DEVASTATION
@ EMOTE_SUMMON
void JustSummoned(Creature *summon) OVERRIDE
EventMap events
BossAI(Creature *creature, uint32 bossId)
void _EnterCombat()
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
bool UpdateVictim()
CreatureScript(const char *name)
HookList< EffectHandler > OnEffectHitTarget
Unit * GetCaster()
SpellScriptLoader(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
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TempSummonType::TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
Definition Object.cpp:2703
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Creature * me
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
@ DATA_COMMANDER_SARANNIS