Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
boss_baron_rivendare.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/* ScriptData
7SDName: Boss_Baron_Rivendare
8SD%Complete: 70
9SDComment: aura applied/defined in database
10SDCategory: Stratholme
11EndScriptData */
12
13#include "ScriptMgr.h"
14#include "ScriptedCreature.h"
15#include "stratholme.h"
16
25
27{
29 SPELL_CLEAVE = 15284,
31
33 SPELL_RAISEDEAD = 15708, //triggers death pact (17471)
34
41};
42
43// Define Add positions
44Position const ADD_POS_1 = {4017.403809f, -3339.703369f, 115.057655f, 5.487860f};
45Position const ADD_POS_2 = {4013.189209f, -3351.808350f, 115.052254f, 0.134280f};
46Position const ADD_POS_3 = {4017.738037f, -3363.478016f, 115.057274f, 0.723313f};
47Position const ADD_POS_4 = {4048.877197f, -3363.223633f, 115.054253f, 3.627735f};
48Position const ADD_POS_5 = {4051.777588f, -3350.893311f, 115.055351f, 3.066176f};
49Position const ADD_POS_6 = {4048.375977f, -3339.966309f, 115.055222f, 2.457497f};
50
52{
53public:
54 boss_baron_rivendare() : CreatureScript("boss_baron_rivendare") { }
55
57 {
58 return new boss_baron_rivendareAI(creature);
59 }
60
62 {
64 {
65 instance = me->GetInstanceScript();
66 }
67
69
73 // uint32 RaiseDead_Timer;
75
77 {
78 ShadowBolt_Timer = 5000;
79 Cleave_Timer = 8000;
80 MortalStrike_Timer = 12000;
81 // RaiseDead_Timer = 30000;
83 if (instance && instance->GetData(TYPE_RAMSTEIN) == DONE)
85 }
86
88 {
89 if (instance)//can't use entercombat(), boss' dmg aura sets near players in combat, before entering the room's door
92 }
93
95 {
96 if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
97 summoned->AI()->AttackStart(target);
98 }
99
100 void JustDied(Unit* /*killer*/) OVERRIDE
101 {
102 if (instance)
103 instance->SetData(TYPE_BARON, DONE);
104 }
105
107 {
108 if (!UpdateVictim())
109 return;
110
111 //ShadowBolt
112 if (ShadowBolt_Timer <= diff)
113 {
116
117 ShadowBolt_Timer = 10000;
118 } else ShadowBolt_Timer -= diff;
119
120 //Cleave
121 if (Cleave_Timer <= diff)
122 {
124 //13 seconds until we should cast this again
125 Cleave_Timer = 7000 + (rand()%10000);
126 } else Cleave_Timer -= diff;
127
128 //MortalStrike
129 if (MortalStrike_Timer <= diff)
130 {
132 MortalStrike_Timer = 10000 + (rand()%15000);
133 } else MortalStrike_Timer -= diff;
134
135 //RaiseDead
136 // if (RaiseDead_Timer <= diff)
137 // {
138 // DoCast(me, SPELL_RAISEDEAD);
139 // RaiseDead_Timer = 45000;
140 // } else RaiseDead_Timer -= diff;
141
142 //SummonSkeletons
143 if (SummonSkeletons_Timer <= diff)
144 {
145 me->SummonCreature(11197, ADD_POS_1, TempSummonType::TEMPSUMMON_TIMED_DESPAWN, 29000);
146 me->SummonCreature(11197, ADD_POS_2, TempSummonType::TEMPSUMMON_TIMED_DESPAWN, 29000);
147 me->SummonCreature(11197, ADD_POS_3, TempSummonType::TEMPSUMMON_TIMED_DESPAWN, 29000);
148 me->SummonCreature(11197, ADD_POS_4, TempSummonType::TEMPSUMMON_TIMED_DESPAWN, 29000);
149 me->SummonCreature(11197, ADD_POS_5, TempSummonType::TEMPSUMMON_TIMED_DESPAWN, 29000);
150 me->SummonCreature(11197, ADD_POS_6, TempSummonType::TEMPSUMMON_TIMED_DESPAWN, 29000);
151
152 //34 seconds until we should cast this again
153 SummonSkeletons_Timer = 40000;
154 } else SummonSkeletons_Timer -= diff;
155
157 }
158 };
159};
160
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ IN_PROGRESS
@ DONE
@ NOT_STARTED
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:70
@ SELECT_TARGET_RANDOM
Definition UnitAI.h:23
@ SPELL_CLEAVE
@ SPELL_SHADOWBOLT
@ SAY_BARON_RUN_FAIL
@ SAY_BARON_RUN_BOSS_KILL
@ SAY_EVENT_RAMSTEIN
@ SAY_BARON_RUN_START
@ SAY_EVENT_BARON
@ SPELL_RAISEDEAD
@ SPELL_RAISE_DEAD3
@ SPELL_MORTALSTRIKE
@ SPELL_RAISE_DEAD1
@ SPELL_RAISE_DEAD5
@ SPELL_SHADOWBOLT
@ SPELL_RAISE_DEAD4
@ SPELL_RAISE_DEAD6
@ SPELL_RAISE_DEAD2
@ SPELL_UNHOLY_AURA
Position const ADD_POS_4
Position const ADD_POS_3
Position const ADD_POS_6
Position const ADD_POS_5
Position const ADD_POS_2
Position const ADD_POS_1
void AddSC_boss_baron_rivendare()
bool UpdateVictim()
CreatureScript(const char *name)
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:28
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
Definition UnitAI.cpp:66
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition UnitAI.cpp:168
Definition Unit.h:1367
CreatureAI * GetAI(Creature *creature) const OVERRIDE
@ TYPE_BARON
Definition stratholme.h:16
@ TYPE_RAMSTEIN
Definition stratholme.h:15
Creature * me
ScriptedAI(Creature *creature)
void AttackStart(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void JustSummoned(Creature *summoned) OVERRIDE