Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
alterac_valley.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
26
38
48
54
67
69{
70 public:
71 npc_av_marshal_or_warmaster() : CreatureScript("npc_av_marshal_or_warmaster") { }
72
74 {
76
78 {
79 events.Reset();
80 events.ScheduleEvent(EVENT_CHARGE_TARGET, std::rand() % (12 * IN_MILLISECONDS) + (2 * IN_MILLISECONDS));
81 events.ScheduleEvent(EVENT_CLEAVE, std::rand() % (11 * IN_MILLISECONDS) + (1 * IN_MILLISECONDS));
82 events.ScheduleEvent(EVENT_DEMORALIZING_SHOUT, 2000);
83 events.ScheduleEvent(EVENT_WHIRLWIND, std::rand() % (20 * IN_MILLISECONDS) + (5 * IN_MILLISECONDS));
84 events.ScheduleEvent(EVENT_ENRAGE, std::rand() % (20 * IN_MILLISECONDS) + (5 * IN_MILLISECONDS));
85 events.ScheduleEvent(EVENT_CHECK_RESET, 5000);
86
87 _hasAura = false;
88 }
89
91 {
92 Reset();
93 }
94
96 {
97 // I have a feeling this isn't blizzlike, but owell, I'm only passing by and cleaning up.
98 if (!_hasAura)
99 {
100 for (uint8 i = 0; i < MAX_SPELL_PAIRS; ++i)
101 if (_auraPairs[i].npcEntry == me->GetEntry())
102 DoCast(me, _auraPairs[i].spellId);
103
104 _hasAura = true;
105 }
106
107 if (!UpdateVictim())
108 return;
109
110 events.Update(diff);
111
112 if (me->HasUnitState(UNIT_STATE_CASTING))
113 return;
114
115 while (uint32 eventId = events.ExecuteEvent())
116 {
117 switch (eventId)
118 {
121 events.ScheduleEvent(EVENT_CHARGE, std::rand() % (25 * IN_MILLISECONDS) + (10 * IN_MILLISECONDS));
122 break;
123 case EVENT_CLEAVE:
125 events.ScheduleEvent(EVENT_CLEAVE, std::rand() % (16 * IN_MILLISECONDS) + (10 * IN_MILLISECONDS));
126 break;
129 events.ScheduleEvent(EVENT_DEMORALIZING_SHOUT, std::rand() % (15 * IN_MILLISECONDS) + (10 * IN_MILLISECONDS));
130 break;
131 case EVENT_WHIRLWIND:
133 events.ScheduleEvent(EVENT_WHIRLWIND, std::rand() % (25 * IN_MILLISECONDS) + (10 * IN_MILLISECONDS));
134 break;
135 case EVENT_ENRAGE:
137 events.ScheduleEvent(EVENT_ENRAGE, std::rand() % (30 * IN_MILLISECONDS) + (10 * IN_MILLISECONDS));
138 break;
140 {
141 Position const& _homePosition = me->GetHomePosition();
142 if (me->GetDistance2d(_homePosition.GetPositionX(), _homePosition.GetPositionY()) > 50.0f)
143 {
145 return;
146 }
147 events.ScheduleEvent(EVENT_CHECK_RESET, 5000);
148 break;
149 }
150 }
151 }
152
154 }
155
156 private:
159 };
160
162 {
163 return new npc_av_marshal_or_warmasterAI(creature);
164 }
165};
166
@ IN_MILLISECONDS
Definition Common.h:125
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ EVENT_CHARGE
@ UNIT_STATE_CASTING
Definition Unit.h:527
Creatures
@ NPC_EAST_FROSTWOLF_WARMASTER
@ NPC_TOWER_POINT_WARMASTER
@ NPC_ICEWING_MARSHAL
@ NPC_ICEBLOOD_WARMASTER
@ NPC_SOUTH_MARSHAL
@ NPC_NORTH_MARSHAL
@ NPC_WEST_FROSTWOLF_WARMASTER
@ NPC_STONEHEARTH_MARSHAL
void AddSC_alterac_valley()
@ SPELL_CLEAVE
@ SPELL_WEST_FROSTWOLF_WARMASTER
@ SPELL_ENRAGE
@ SPELL_CHARGE
@ SPELL_TOWER_POINT_WARMASTER
@ SPELL_ICEWING_MARSHAL
@ SPELL_STONEHEARTH_MARSHAL
@ SPELL_NORTH_MARSHAL
@ SPELL_DEMORALIZING_SHOUT
@ SPELL_SOUTH_MARSHAL
@ SPELL_ICEBLOOD_WARMASTER
@ SPELL_EAST_FROSTWOLF_WARMASTER
@ SPELL_WHIRLWIND
SpellPair const _auraPairs[MAX_SPELL_PAIRS]
uint8 const MAX_SPELL_PAIRS
@ EVENT_ENRAGE
@ EVENT_WHIRLWIND
@ EVENT_CHECK_RESET
@ EVENT_DEMORALIZING_SHOUT
@ EVENT_CLEAVE
@ EVENT_CHARGE_TARGET
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
CreatureAI * GetAI(Creature *creature) const OVERRIDE
float GetPositionX() const
Definition Object.h:328
float GetPositionY() const
Definition Object.h:329
Creature * me
ScriptedAI(Creature *creature)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================