AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
boss_mandokir.cpp File Reference
#include "CreatureScript.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "Spell.h"
#include "SpellAuras.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "TaskScheduler.h"
#include "zulgurub.h"

Go to the source code of this file.

Classes

class  boss_mandokir
 
struct  boss_mandokir::boss_mandokirAI
 
class  npc_ohgan
 
struct  npc_ohgan::npc_ohganAI
 
struct  npc_chained_spirit
 
struct  npc_vilebranch_speaker
 
class  spell_threatening_gaze_aura
 
class  spell_mandokir_charge
 
class  spell_threatening_gaze_charge
 

Enumerations

enum  Says {
  SAY_AGGRO = 0 ,
  SAY_DING_KILL = 1 ,
  SAY_WATCH = 2 ,
  SAY_WATCH_WHISPER = 3 ,
  SAY_OHGAN_DEAD = 4 ,
  SAY_GRATS_JINDO = 0
}
 
enum  Spells {
  SPELL_CHARGE = 24408 ,
  SPELL_OVERPOWER = 24407 ,
  SPELL_FRIGHTENING_SHOUT = 19134 ,
  SPELL_WHIRLWIND = 13736 ,
  SPELL_MORTAL_STRIKE = 16856 ,
  SPELL_FRENZY = 24318 ,
  SPELL_WATCH = 24314 ,
  SPELL_WATCH_CHARGE = 24315 ,
  SPELL_LEVEL_UP = 24312 ,
  SPELL_EXECUTE = 7160 ,
  SPELL_MANDOKIR_CLEAVE = 20691 ,
  SPELL_SUMMON_PLAYER = 25104 ,
  SPELL_REVIVE = 24341
}
 
enum  Events {
  EVENT_CHECK_SPEAKER = 1 ,
  EVENT_CHECK_START = 2 ,
  EVENT_STARTED = 3 ,
  EVENT_OVERPOWER = 4 ,
  EVENT_MORTAL_STRIKE = 5 ,
  EVENT_WHIRLWIND = 6 ,
  EVENT_CHECK_OHGAN = 7 ,
  EVENT_WATCH_PLAYER = 8 ,
  EVENT_CHARGE_PLAYER = 9 ,
  EVENT_EXECUTE = 10 ,
  EVENT_CLEAVE = 11
}
 
enum  Action {
  ACTION_START_REVIVE = 1 ,
  ACTION_REVIVE = 2
}
 
enum  Misc {
  POINT_START_REVIVE = 1 ,
  MODEL_OHGAN_MOUNT = 15271 ,
  PATH_MANDOKIR = 492861 ,
  POINT_MANDOKIR_END = 24 ,
  CHAINED_SPIRIT_COUNT = 20 ,
  ACTION_CHARGE = 1
}
 
enum  OhganSpells {
  SPELL_SUNDERARMOR = 24317 ,
  SPELL_THRASH = 3391
}
 
enum  VilebranchSpells {
  SPELL_DEMORALIZING_SHOUT = 13730 ,
  SPELL_CLEAVE = 15284
}
 

Functions

void RevivePlayer (Unit *victim, ObjectGuid &reviveGUID)
 
void AddSC_boss_mandokir ()
 

Variables

Position const PosSummonChainedSpirits [CHAINED_SPIRIT_COUNT]
 
Position const PosMandokir [2]
 

Enumeration Type Documentation

◆ Action

enum Action
Enumerator
ACTION_START_REVIVE 
ACTION_REVIVE 
72{
73 ACTION_START_REVIVE = 1, // broodlord mandokir
74 ACTION_REVIVE = 2 // chained spirit
75};
@ ACTION_START_REVIVE
Definition boss_mandokir.cpp:73
@ ACTION_REVIVE
Definition boss_mandokir.cpp:74

◆ Events

enum Events
Enumerator
EVENT_CHECK_SPEAKER 
EVENT_CHECK_START 
EVENT_STARTED 
EVENT_OVERPOWER 
EVENT_MORTAL_STRIKE 
EVENT_WHIRLWIND 
EVENT_CHECK_OHGAN 
EVENT_WATCH_PLAYER 
EVENT_CHARGE_PLAYER 
EVENT_EXECUTE 
EVENT_CLEAVE 
57{
60 EVENT_STARTED = 3,
67 EVENT_EXECUTE = 10,
68 EVENT_CLEAVE = 11
69};
@ EVENT_OVERPOWER
Definition boss_mandokir.cpp:61
@ EVENT_WHIRLWIND
Definition boss_mandokir.cpp:63
@ EVENT_WATCH_PLAYER
Definition boss_mandokir.cpp:65
@ EVENT_CHECK_START
Definition boss_mandokir.cpp:59
@ EVENT_EXECUTE
Definition boss_mandokir.cpp:67
@ EVENT_CHARGE_PLAYER
Definition boss_mandokir.cpp:66
@ EVENT_STARTED
Definition boss_mandokir.cpp:60
@ EVENT_CHECK_SPEAKER
Definition boss_mandokir.cpp:58
@ EVENT_CLEAVE
Definition boss_mandokir.cpp:68
@ EVENT_MORTAL_STRIKE
Definition boss_mandokir.cpp:62
@ EVENT_CHECK_OHGAN
Definition boss_mandokir.cpp:64

◆ Misc

enum Misc
Enumerator
POINT_START_REVIVE 
MODEL_OHGAN_MOUNT 
PATH_MANDOKIR 
POINT_MANDOKIR_END 
CHAINED_SPIRIT_COUNT 
ACTION_CHARGE 
78{
79 POINT_START_REVIVE = 1, // chained spirit
80
81 MODEL_OHGAN_MOUNT = 15271,
82 PATH_MANDOKIR = 492861,
86};
@ PATH_MANDOKIR
Definition boss_mandokir.cpp:82
@ ACTION_CHARGE
Definition boss_mandokir.cpp:85
@ MODEL_OHGAN_MOUNT
Definition boss_mandokir.cpp:81
@ POINT_MANDOKIR_END
Definition boss_mandokir.cpp:83
@ POINT_START_REVIVE
Definition boss_mandokir.cpp:79
@ CHAINED_SPIRIT_COUNT
Definition boss_mandokir.cpp:84

◆ OhganSpells

Enumerator
SPELL_SUNDERARMOR 
SPELL_THRASH 
516{
517 SPELL_SUNDERARMOR = 24317,
518 SPELL_THRASH = 3391
519};
@ SPELL_THRASH
Definition boss_mandokir.cpp:518
@ SPELL_SUNDERARMOR
Definition boss_mandokir.cpp:517

◆ Says

enum Says
Enumerator
SAY_AGGRO 
SAY_DING_KILL 
SAY_WATCH 
SAY_WATCH_WHISPER 
SAY_OHGAN_DEAD 
SAY_GRATS_JINDO 
29{
30 SAY_AGGRO = 0,
31 SAY_DING_KILL = 1,
32 SAY_WATCH = 2,
36};
@ SAY_GRATS_JINDO
Definition boss_mandokir.cpp:35
@ SAY_WATCH_WHISPER
Definition boss_mandokir.cpp:33
@ SAY_DING_KILL
Definition boss_mandokir.cpp:31
@ SAY_AGGRO
Definition boss_mandokir.cpp:30
@ SAY_WATCH
Definition boss_mandokir.cpp:32
@ SAY_OHGAN_DEAD
Definition boss_mandokir.cpp:34

◆ Spells

enum Spells
Enumerator
SPELL_CHARGE 
SPELL_OVERPOWER 
SPELL_FRIGHTENING_SHOUT 
SPELL_WHIRLWIND 
SPELL_MORTAL_STRIKE 
SPELL_FRENZY 
SPELL_WATCH 
SPELL_WATCH_CHARGE 
SPELL_LEVEL_UP 
SPELL_EXECUTE 
SPELL_MANDOKIR_CLEAVE 
SPELL_SUMMON_PLAYER 
SPELL_REVIVE 
39{
40 SPELL_CHARGE = 24408,
41 SPELL_OVERPOWER = 24407,
43 SPELL_WHIRLWIND = 13736, // triggers 15589
44 SPELL_MORTAL_STRIKE = 16856,
45 SPELL_FRENZY = 24318,
46 SPELL_WATCH = 24314, // triggers 24315 and 24316
47 SPELL_WATCH_CHARGE = 24315, // triggers 24316
48 SPELL_LEVEL_UP = 24312,
49 SPELL_EXECUTE = 7160,
51 SPELL_SUMMON_PLAYER = 25104,
52
53 SPELL_REVIVE = 24341 // chained spirit
54};
@ SPELL_EXECUTE
Definition boss_mandokir.cpp:49
@ SPELL_CHARGE
Definition boss_mandokir.cpp:40
@ SPELL_SUMMON_PLAYER
Definition boss_mandokir.cpp:51
@ SPELL_REVIVE
Definition boss_mandokir.cpp:53
@ SPELL_MORTAL_STRIKE
Definition boss_mandokir.cpp:44
@ SPELL_OVERPOWER
Definition boss_mandokir.cpp:41
@ SPELL_FRIGHTENING_SHOUT
Definition boss_mandokir.cpp:42
@ SPELL_MANDOKIR_CLEAVE
Definition boss_mandokir.cpp:50
@ SPELL_FRENZY
Definition boss_mandokir.cpp:45
@ SPELL_WATCH
Definition boss_mandokir.cpp:46
@ SPELL_WATCH_CHARGE
Definition boss_mandokir.cpp:47
@ SPELL_WHIRLWIND
Definition boss_mandokir.cpp:43
@ SPELL_LEVEL_UP
Definition boss_mandokir.cpp:48

◆ VilebranchSpells

Enumerator
SPELL_DEMORALIZING_SHOUT 
SPELL_CLEAVE 
662{
664 SPELL_CLEAVE = 15284
665};
@ SPELL_CLEAVE
Definition boss_mandokir.cpp:664
@ SPELL_DEMORALIZING_SHOUT
Definition boss_mandokir.cpp:663

Function Documentation

◆ AddSC_boss_mandokir()

void AddSC_boss_mandokir ( )
785{
786 new boss_mandokir();
787 new npc_ohgan();
793}
#define RegisterSpellScript(spell_script)
Definition SpellScriptLoader.h:88
Definition boss_mandokir.cpp:145
Definition boss_mandokir.cpp:522
Definition boss_mandokir.cpp:744
Definition boss_mandokir.cpp:714
Definition boss_mandokir.cpp:762
Definition boss_mandokir.cpp:602
Definition boss_mandokir.cpp:668
#define RegisterZulGurubCreatureAI(ai_name)
Definition zulgurub.h:94

References RegisterSpellScript, and RegisterZulGurubCreatureAI.

Referenced by AddEasternKingdomsScripts().

◆ RevivePlayer()

void RevivePlayer ( Unit victim,
ObjectGuid reviveGUID 
)
119{
120 std::list<Creature*> chainedSpirits;
121 GetCreatureListWithEntryInGrid(chainedSpirits, victim, NPC_CHAINED_SPIRIT, 200.f);
122 if (chainedSpirits.empty())
123 return;
124
125 // Sort the list by distance to the victim.
126 chainedSpirits.sort([victim](Creature const* c1, Creature const* c2)
127 {
128 return c1->GetDistance2d(victim) < c2->GetDistance2d(victim);
129 });
130
131 // Now we have to check if the spirit is already reviving someone...
132 for (Creature* spirit : chainedSpirits)
133 {
134 if (!spirit->isMoving() && !spirit->HasUnitState(UNIT_STATE_CASTING))
135 {
136 spirit->AI()->SetGUID(reviveGUID);
137 spirit->AI()->DoAction(ACTION_REVIVE);
138 reviveGUID.Clear();
139 break;
140 }
141 }
142}
void GetCreatureListWithEntryInGrid(std::list< Creature * > &list, WorldObject *source, uint32 entry, float maxSearchRange)
Definition ScriptedCreature.cpp:875
@ UNIT_STATE_CASTING
Definition UnitDefines.h:185
Definition Creature.h:43
void Clear()
Definition ObjectGuid.h:138
float GetDistance2d(WorldObject const *obj) const
Definition Object.cpp:1274
@ NPC_CHAINED_SPIRIT
Definition zulgurub.h:65

References ACTION_REVIVE, ObjectGuid::Clear(), GetCreatureListWithEntryInGrid(), WorldObject::GetDistance2d(), NPC_CHAINED_SPIRIT, and UNIT_STATE_CASTING.

Referenced by boss_mandokir::boss_mandokirAI::KilledUnit(), and npc_ohgan::npc_ohganAI::KilledUnit().

Variable Documentation

◆ PosMandokir

Position const PosMandokir[2]
Initial value:
=
{
{ -12167.8f, -1927.25f, 153.73f, 3.76991f },
{ -12197.86f, -1949.392f, 130.2745f, 0.0f }
}
113{
114 { -12167.8f, -1927.25f, 153.73f, 3.76991f },
115 { -12197.86f, -1949.392f, 130.2745f, 0.0f }
116};

Referenced by boss_mandokir::boss_mandokirAI::MovementInform(), and boss_mandokir::boss_mandokirAI::UpdateAI().

◆ PosSummonChainedSpirits

Position const PosSummonChainedSpirits[CHAINED_SPIRIT_COUNT]
Initial value:
=
{
{ -12167.17f, -1979.330f, 133.0992f, 2.268928f },
{ -12262.74f, -1953.394f, 133.5496f, 0.593412f },
{ -12176.89f, -1983.068f, 133.7841f, 2.129302f },
{ -12226.45f, -1977.933f, 132.7982f, 1.466077f },
{ -12204.74f, -1890.431f, 135.7569f, 4.415683f },
{ -12216.70f, -1891.806f, 136.3496f, 4.677482f },
{ -12236.19f, -1892.034f, 134.1041f, 5.044002f },
{ -12248.24f, -1893.424f, 134.1182f, 5.270895f },
{ -12257.36f, -1897.663f, 133.1484f, 5.462881f },
{ -12265.84f, -1903.077f, 133.1649f, 5.654867f },
{ -12158.69f, -1972.707f, 133.8751f, 2.408554f },
{ -12178.82f, -1891.974f, 134.1786f, 3.944444f },
{ -12193.36f, -1890.039f, 135.1441f, 4.188790f },
{ -12275.59f, -1932.845f, 134.9017f, 0.174533f },
{ -12273.51f, -1941.539f, 136.1262f, 0.314159f },
{ -12247.02f, -1963.497f, 133.9476f, 0.872665f },
{ -12238.68f, -1969.574f, 133.6273f, 1.134464f },
{ -12192.78f, -1982.116f, 132.6966f, 1.919862f },
{ -12210.81f, -1979.316f, 133.8700f, 1.797689f },
{ -12283.51f, -1924.839f, 133.5170f, 0.069813f }
}
89{
90 { -12167.17f, -1979.330f, 133.0992f, 2.268928f },
91 { -12262.74f, -1953.394f, 133.5496f, 0.593412f },
92 { -12176.89f, -1983.068f, 133.7841f, 2.129302f },
93 { -12226.45f, -1977.933f, 132.7982f, 1.466077f },
94 { -12204.74f, -1890.431f, 135.7569f, 4.415683f },
95 { -12216.70f, -1891.806f, 136.3496f, 4.677482f },
96 { -12236.19f, -1892.034f, 134.1041f, 5.044002f },
97 { -12248.24f, -1893.424f, 134.1182f, 5.270895f },
98 { -12257.36f, -1897.663f, 133.1484f, 5.462881f },
99 { -12265.84f, -1903.077f, 133.1649f, 5.654867f },
100 { -12158.69f, -1972.707f, 133.8751f, 2.408554f },
101 { -12178.82f, -1891.974f, 134.1786f, 3.944444f },
102 { -12193.36f, -1890.039f, 135.1441f, 4.188790f },
103 { -12275.59f, -1932.845f, 134.9017f, 0.174533f },
104 { -12273.51f, -1941.539f, 136.1262f, 0.314159f },
105 { -12247.02f, -1963.497f, 133.9476f, 0.872665f },
106 { -12238.68f, -1969.574f, 133.6273f, 1.134464f },
107 { -12192.78f, -1982.116f, 132.6966f, 1.919862f },
108 { -12210.81f, -1979.316f, 133.8700f, 1.797689f },
109 { -12283.51f, -1924.839f, 133.5170f, 0.069813f }
110};

Referenced by boss_mandokir::boss_mandokirAI::JustEngagedWith().