Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
pet_shaman.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/*
7 * Ordered alphabetically using scriptname.
8 * Scriptnames of files in this file should be prefixed with "npc_pet_sha_".
9 */
10
11#include "ScriptMgr.h"
12#include "ScriptedCreature.h"
13
21
23{
24 // Earth Elemental
26 // Fire Elemental
30};
31
33{
34 public:
35 npc_pet_shaman_earth_elemental() : CreatureScript("npc_pet_shaman_earth_elemental") { }
36
38 {
40
41
43 {
44 _events.Reset();
45 _events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, 0);
46 me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
47 }
48
50 {
51 if (!UpdateVictim())
52 return;
53
54 _events.Update(diff);
55
56 if (_events.ExecuteEvent() == EVENT_SHAMAN_ANGEREDEARTH)
57 {
59 _events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, std::rand() % 20000 + 5000);
60 }
61
63 }
64
65 private:
67 };
68
70 {
71 return new npc_pet_shaman_earth_elementalAI(creature);
72 }
73};
74
76{
77 public:
78 npc_pet_shaman_fire_elemental() : CreatureScript("npc_pet_shaman_fire_elemental") { }
79
81 {
83
85 {
86 _events.Reset();
87 _events.ScheduleEvent(EVENT_SHAMAN_FIRENOVA, std::rand() % 20000 + 5000);
88 _events.ScheduleEvent(EVENT_SHAMAN_FIREBLAST, std::rand() % 20000 + 5000);
89 _events.ScheduleEvent(EVENT_SHAMAN_FIRESHIELD, 0);
90 me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
91 }
92
94 {
95 if (!UpdateVictim())
96 return;
97
98 if (me->HasUnitState(UNIT_STATE_CASTING))
99 return;
100
101 _events.Update(diff);
102
103 while (uint32 eventId = _events.ExecuteEvent())
104 {
105 switch (eventId)
106 {
109 _events.ScheduleEvent(EVENT_SHAMAN_FIRENOVA, std::rand() % 20000 + 5000);
110 break;
113 _events.ScheduleEvent(EVENT_SHAMAN_FIRESHIELD, 2000);
114 break;
117 _events.ScheduleEvent(EVENT_SHAMAN_FIREBLAST, std::rand() % 20000 + 5000);
118 break;
119 default:
120 break;
121 }
122 }
123
125 }
126
127 private:
129 };
130
132 {
133 return new npc_pet_shaman_fire_elementalAI(creature);
134 }
135};
136
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ IMMUNITY_SCHOOL
@ SPELL_SCHOOL_MASK_NATURE
@ SPELL_SCHOOL_MASK_FIRE
@ UNIT_STATE_CASTING
Definition Unit.h:527
bool UpdateVictim()
CreatureScript(const char *name)
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:28
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition UnitAI.cpp:168
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
ShamanEvents
@ EVENT_SHAMAN_FIRESHIELD
@ EVENT_SHAMAN_ANGEREDEARTH
@ EVENT_SHAMAN_FIRENOVA
@ EVENT_SHAMAN_FIREBLAST
ShamanSpells
@ SPELL_SHAMAN_FIRESHIELD
@ SPELL_SHAMAN_ANGEREDEARTH
@ SPELL_SHAMAN_FIRENOVA
@ SPELL_SHAMAN_FIREBLAST
void AddSC_shaman_pet_scripts()
Creature * me
ScriptedAI(Creature *creature)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================