aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp44
-rw-r--r--src/server/scripts/Commands/cs_guild.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp13
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp11
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp11
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp15
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h7
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp148
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp9
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp5
14 files changed, 117 insertions, 173 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index 69f6666dff3..e95e135d8ce 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -712,24 +712,6 @@ void Battleground::EndBattleground(uint32 winner)
int32 winmsg_id = 0;
- PreparedStatement* stmt;
- PreparedQueryResult result;
- uint64 battleground_id = 1;
-
- if (isBattleground() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE))
- {
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PVPSTATS_MAXID);
- result = CharacterDatabase.Query(stmt);
-
- if (result)
- {
- Field* fields = result->Fetch();
- battleground_id = fields[0].GetUInt64() + 1;
- }
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PVPSTATS_BATTLEGROUND);
- }
-
if (winner == ALLIANCE)
{
winmsg_id = isBattleground() ? LANG_BG_A_WINS : LANG_ARENA_GOLD_WINS;
@@ -737,9 +719,6 @@ void Battleground::EndBattleground(uint32 winner)
PlaySoundToAll(SOUND_ALLIANCE_WINS); // alliance wins sound
SetWinner(BG_TEAM_ALLIANCE);
-
- if (isBattleground() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE))
- stmt->setUInt8(1, BG_TEAM_ALLIANCE);
}
else if (winner == HORDE)
{
@@ -748,21 +727,28 @@ void Battleground::EndBattleground(uint32 winner)
PlaySoundToAll(SOUND_HORDE_WINS); // horde wins sound
SetWinner(BG_TEAM_HORDE);
-
- if (isBattleground() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE))
- stmt->setUInt8(1, BG_TEAM_HORDE);
}
else
{
SetWinner(BG_TEAM_NEUTRAL);
-
- if (isBattleground() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE))
- stmt->setUInt8(1, BG_TEAM_NEUTRAL);
}
+ PreparedStatement* stmt = nullptr;
+ uint64 battlegroundId = 1;
if (isBattleground() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE))
{
- stmt->setUInt64(0, battleground_id);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PVPSTATS_MAXID);
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
+
+ if (result)
+ {
+ Field* fields = result->Fetch();
+ battlegroundId = fields[0].GetUInt64() + 1;
+ }
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PVPSTATS_BATTLEGROUND);
+ stmt->setUInt64(0, battlegroundId);
+ stmt->setUInt8(1, GetWinner());
stmt->setUInt8(2, m_BracketId + 1);
stmt->setUInt8(3, GetTypeID(true));
CharacterDatabase.Execute(stmt);
@@ -810,7 +796,7 @@ void Battleground::EndBattleground(uint32 winner)
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PVPSTATS_PLAYER);
BattlegroundScoreMap::const_iterator score = PlayerScores.find(player->GetGUIDLow());
- stmt->setUInt32(0, battleground_id);
+ stmt->setUInt32(0, battlegroundId);
stmt->setUInt32(1, player->GetGUIDLow());
stmt->setUInt32(2, score->second->GetKillingBlows());
stmt->setUInt32(3, score->second->GetDeaths());
diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp
index 0359cbbe379..9f65ec46958 100644
--- a/src/server/scripts/Commands/cs_guild.cpp
+++ b/src/server/scripts/Commands/cs_guild.cpp
@@ -247,16 +247,12 @@ public:
static bool HandleGuildInfoCommand(ChatHandler* handler, char const* args)
{
- Player* target;
- uint32 guildId;
- std::string guildName;
- std::string guildMasterName;
- Guild* guild;
+ Guild* guild = nullptr;
if (!*args)
{
// Look for the guild of the selected player or ourselves
- if (target = handler->getSelectedPlayerOrSelf())
+ if (Player* target = handler->getSelectedPlayerOrSelf())
guild = target->GetGuild();
else
// getSelectedPlayerOrSelf will return null if there is no session
@@ -264,7 +260,7 @@ public:
// without specifying args.
return false;
}
- else if (guildId = atoi(args)) // Try searching by Id
+ else if (uint32 guildId = atoi(args)) // Try searching by Id
guild = sGuildMgr->GetGuildById(guildId);
else
{
@@ -277,13 +273,15 @@ public:
if (!guildStr)
return false;
- guildName = guildStr;
+ std::string guildName = guildStr;
guild = sGuildMgr->GetGuildByName(guildName);
}
if (!guild)
return false;
+ std::string guildMasterName;
+
// Display Guild Information
handler->PSendSysMessage(LANG_GUILD_INFO_NAME, guild->GetName().c_str(), guild->GetId()); // Guild Id + Name
if (sObjectMgr->GetPlayerNameByGUID(guild->GetLeaderGUID(), guildMasterName))
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp
index 26937a83e63..cdfcede1c93 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp
@@ -124,7 +124,7 @@ class boss_arcanist_doan : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_arcanist_doanAI>(creature);
+ return GetScarletMonasteryAI<boss_arcanist_doanAI>(creature);
}
};
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp
index 71a5343d160..c3c74e4c83d 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp
@@ -15,13 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_Azshir_the_Sleepless
-SD%Complete: 80
-SDComment:
-SDCategory: Scarlet Monastery
-EndScriptData */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "scarlet_monastery.h"
@@ -70,9 +63,9 @@ class boss_azshir_the_sleepless : public CreatureScript
_JustDied();
}
- void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
- if (HealthBelowPct(50) && !_siphon)
+ if (!_siphon && me->HealthBelowPctDamaged(50, damage))
{
DoCastVictim(SPELL_SOUL_SIPHON);
events.ScheduleEvent(EVENT_SOUL_SIPHON, 20000);
@@ -120,7 +113,7 @@ class boss_azshir_the_sleepless : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_azshir_the_sleeplessAI>(creature);
+ return GetScarletMonasteryAI<boss_azshir_the_sleeplessAI>(creature);
}
};
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp
index 18369c7adfc..14698faaa97 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp
@@ -80,9 +80,9 @@ class boss_bloodmage_thalnos : public CreatureScript
Talk(SAY_KILL);
}
- void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
- if (HealthBelowPct(35) && !_hpYell)
+ if (!_hpYell && me->HealthBelowPctDamaged(35, damage))
{
Talk(SAY_HEALTH);
_hpYell = true;
@@ -114,18 +114,13 @@ class boss_bloodmage_thalnos : public CreatureScript
}
}
- void UpdateAI(uint32 diff) override
- {
- BossAI::UpdateAI(diff);
- }
-
private:
bool _hpYell;
};
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_bloodmage_thalnosAI>(creature);
+ return GetScarletMonasteryAI<boss_bloodmage_thalnosAI>(creature);
}
};
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp
index d1d25dd2ba6..d77334785ef 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp
@@ -100,9 +100,9 @@ class boss_herod : public CreatureScript
me->SummonCreature(NPC_SCARLET_TRAINEE, ScarletTraineePos, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000);
}
- void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
- if (HealthBelowPct(30) && !_enrage)
+ if (!_enrage && me->HealthBelowPctDamaged(30, damage))
{
Talk(EMOTE_ENRAGE);
Talk(SAY_ENRAGE);
@@ -129,18 +129,13 @@ class boss_herod : public CreatureScript
}
}
- void UpdateAI(uint32 diff) override
- {
- BossAI::UpdateAI(diff);
- }
-
private:
bool _enrage;
};
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_herodAI>(creature);
+ return GetScarletMonasteryAI<boss_herodAI>(creature);
}
};
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp
index 40c7667843b..0e1b51f9a83 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp
@@ -73,16 +73,11 @@ class boss_houndmaster_loksey : public CreatureScript
break;
}
}
-
- void UpdateAI(uint32 diff) override
- {
- BossAI::UpdateAI(diff);
- }
};
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_houndmaster_lokseyAI>(creature);
+ return GetScarletMonasteryAI<boss_houndmaster_lokseyAI>(creature);
}
};
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp
index 24efd7017ec..d64e556c011 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,13 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_Scorn
-SD%Complete: 100
-SDComment:
-SDCategory: Scarlet Monastery
-EndScriptData */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "scarlet_monastery.h"
@@ -95,16 +87,11 @@ class boss_scorn : public CreatureScript
break;
}
}
-
- void UpdateAI(uint32 diff) override
- {
- BossAI::UpdateAI(diff);
- }
};
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_scornAI>(creature);
+ return GetScarletMonasteryAI<boss_scornAI>(creature);
}
};
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp
index 78837912688..dc65bd42bf4 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp
@@ -28,7 +28,7 @@ DoorData const doorData[] =
class instance_scarlet_monastery : public InstanceMapScript
{
public:
- instance_scarlet_monastery() : InstanceMapScript("instance_scarlet_monastery", 189) { }
+ instance_scarlet_monastery() : InstanceMapScript(SMScriptName, 189) { }
struct instance_scarlet_monastery_InstanceMapScript : public InstanceScript
{
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h
index d4ce3f1614f..a74efba751f 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h
@@ -18,6 +18,7 @@
#ifndef SCARLET_M_
#define SCARLET_M_
+#define SMScriptName "instance_scarlet_monastery"
uint32 const EncounterCount = 10;
enum DataTypes
@@ -57,4 +58,10 @@ enum GameObjectIds
GO_PUMPKIN_SHRINE = 186267
};
+template<class AI>
+inline AI* GetScarletMonasteryAI(Creature* creature)
+{
+ return GetInstanceAI<AI>(creature, SMScriptName);
+}
+
#endif // SCARLET_M_
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index f1d44e72684..3a137a8658e 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -172,7 +172,7 @@ enum Spells
SPELL_MAGNETIC_CORE = 64436,
SPELL_MAGNETIC_CORE_VISUAL = 64438,
SPELL_HALF_HEAL = 64188,
- SPELL_CLEAR_ALL_DEBUFFS = 34098, // TODO: make use of this spell...
+ SPELL_CLEAR_ALL_DEBUFFS = 34098, /// @todo: make use of this spell...
SPELL_FREEZE_ANIM_STUN = 63354, // used to prevent mkii from doing stuff?..
SPELL_FREEZE_ANIM = 16245 // Idle aura. Freezes animation.
};
@@ -303,17 +303,10 @@ enum Actions
enum Phases
{
- // Leviathan MK II
- PHASE_LEVIATHAN_SOLO = 1,
- PHASE_LEVIATHAN_ASSEMBLED,
-
- // VX-001
- PHASE_VX001_SOLO,
- PHASE_VX001_ASSEMBLED,
-
- // Aerial Command Unit
- PHASE_AERIAL_SOLO,
- PHASE_AERIAL_ASSEMBLED
+ PHASE_LEVIATHAN_MK_II = 1,
+ PHASE_VX_001,
+ PHASE_AERIAL_COMMAND_UNIT,
+ PHASE_VOL7RON
};
enum Waypoints
@@ -434,7 +427,7 @@ class boss_mimiron : public CreatureScript
events.ScheduleEvent(EVENT_SUMMON_FLAMES, 3000);
events.ScheduleEvent(EVENT_INTRO_1, 1500);
}
-
+
void JustDied(Unit* /*who*/) override
{
instance->SetBossState(BOSS_MIMIRON, DONE);
@@ -456,7 +449,9 @@ class boss_mimiron : public CreatureScript
_Reset();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- instance->SetData(DATA_MIMIRON_ELEVATOR, GO_STATE_ACTIVE);
+
+ if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_MIMIRON_ELEVATOR)))
+ elevator->SetGoState(GO_STATE_ACTIVE);
if (_fireFighter)
if (Creature* computer = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_COMPUTER)))
@@ -526,15 +521,17 @@ class boss_mimiron : public CreatureScript
events.ScheduleEvent(EVENT_VX001_ACTIVATION_4, 5000);
break;
case EVENT_VX001_ACTIVATION_4:
- instance->SetData(DATA_MIMIRON_ELEVATOR, GO_STATE_READY);
+ if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_MIMIRON_ELEVATOR)))
+ elevator->SetGoState(GO_STATE_READY);
if (Unit* worldtrigger = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_MIMIRON_WORLD_TRIGGER)))
worldtrigger->CastSpell(worldtrigger, SPELL_ELEVATOR_KNOCKBACK);
events.ScheduleEvent(EVENT_VX001_ACTIVATION_5, 6000);
break;
case EVENT_VX001_ACTIVATION_5:
+ if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_MIMIRON_ELEVATOR)))
+ elevator->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
if (Creature* vx001 = me->SummonCreature(NPC_VX_001, VX001SummonPos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
vx001->CastSpell(vx001, SPELL_FREEZE_ANIM);
- instance->SetData(DATA_MIMIRON_ELEVATOR, GO_STATE_ACTIVE_ALTERNATIVE);
events.ScheduleEvent(EVENT_VX001_ACTIVATION_6, 19000);
break;
case EVENT_VX001_ACTIVATION_6:
@@ -579,7 +576,7 @@ class boss_mimiron : public CreatureScript
break;
case EVENT_AERIAL_ACTIVATION_6:
if (Creature* acu = me->GetVehicleCreatureBase())
- acu->GetAI()->DoAction(_fireFighter? DO_HARDMODE_AERIAL : DO_START_AERIAL);
+ acu->AI()->DoAction(_fireFighter? DO_HARDMODE_AERIAL : DO_START_AERIAL);
break;
case EVENT_VOL7RON_ACTIVATION_1:
if (Creature* mkii = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_LEVIATHAN_MK_II)))
@@ -694,7 +691,7 @@ class boss_leviathan_mk_ii : public CreatureScript
me->SetReactState(REACT_PASSIVE);
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT);
- if (events.IsInPhase(PHASE_LEVIATHAN_SOLO))
+ if (events.IsInPhase(PHASE_LEVIATHAN_MK_II))
{
me->CastStop();
if (Unit* turret = me->GetVehicleKit()->GetPassenger(3))
@@ -703,7 +700,7 @@ class boss_leviathan_mk_ii : public CreatureScript
me->SetSpeed(MOVE_RUN, 1.5f, true);
me->GetMotionMaster()->MovePoint(WP_MKII_P1_IDLE, VehicleRelocation[WP_MKII_P1_IDLE]);
}
- else if (events.IsInPhase(PHASE_LEVIATHAN_ASSEMBLED))
+ else if (events.IsInPhase(PHASE_VOL7RON))
{
me->SetStandState(UNIT_STAND_STATE_DEAD);
@@ -725,14 +722,14 @@ class boss_leviathan_mk_ii : public CreatureScript
_fireFighter = true;
DoCast(me, SPELL_EMERGENCY_MODE);
DoCastAOE(SPELL_EMERGENCY_MODE_TURRET);
- events.ScheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_SOLO);
+ events.ScheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_MK_II);
// Missing break intended.
case DO_START_MKII:
me->SetReactState(REACT_AGGRESSIVE);
- events.SetPhase(PHASE_LEVIATHAN_SOLO);
+ events.SetPhase(PHASE_LEVIATHAN_MK_II);
- events.ScheduleEvent(EVENT_NAPALM_SHELL, 3000, 0, PHASE_LEVIATHAN_SOLO);
- events.ScheduleEvent(EVENT_PLASMA_BLAST, 15000, 0, PHASE_LEVIATHAN_SOLO);
+ events.ScheduleEvent(EVENT_NAPALM_SHELL, 3000, 0, PHASE_LEVIATHAN_MK_II);
+ events.ScheduleEvent(EVENT_PLASMA_BLAST, 15000, 0, PHASE_LEVIATHAN_MK_II);
events.ScheduleEvent(EVENT_PROXIMITY_MINE, 5000);
events.ScheduleEvent(EVENT_SHOCK_BLAST, 18000);
break;
@@ -741,7 +738,7 @@ class boss_leviathan_mk_ii : public CreatureScript
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE);
- events.SetPhase(PHASE_LEVIATHAN_ASSEMBLED);
+ events.SetPhase(PHASE_VOL7RON);
events.ScheduleEvent(EVENT_PROXIMITY_MINE, 15000);
events.ScheduleEvent(EVENT_SHOCK_BLAST, 45000);
break;
@@ -776,14 +773,14 @@ class boss_leviathan_mk_ii : public CreatureScript
{
if (victim->GetTypeId() == TYPEID_PLAYER)
if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON)))
- mimiron->AI()->Talk(events.IsInPhase(PHASE_LEVIATHAN_SOLO) ? SAY_MKII_SLAY : SAY_V07TRON_SLAY);
+ mimiron->AI()->Talk(events.IsInPhase(PHASE_LEVIATHAN_MK_II) ? SAY_MKII_SLAY : SAY_V07TRON_SLAY);
}
void MovementInform(uint32 type, uint32 point) override
{
if (type != POINT_MOTION_TYPE)
return;
-
+
switch (point)
{
case WP_MKII_P1_IDLE:
@@ -845,7 +842,7 @@ class boss_leviathan_mk_ii : public CreatureScript
{
if (!UpdateVictim() || !CheckInRoom())
return;
-
+
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
@@ -861,10 +858,10 @@ class boss_leviathan_mk_ii : public CreatureScript
break;
case EVENT_PLASMA_BLAST:
DoCastVictim(SPELL_SCRIPT_EFFECT_PLASMA_BLAST);
- events.RescheduleEvent(EVENT_PLASMA_BLAST, urand(30000, 45000), 0, PHASE_LEVIATHAN_SOLO);
+ events.RescheduleEvent(EVENT_PLASMA_BLAST, urand(30000, 45000), 0, PHASE_LEVIATHAN_MK_II);
if (events.GetTimeUntilEvent(EVENT_NAPALM_SHELL) < 9000)
- events.RescheduleEvent(EVENT_NAPALM_SHELL, 9000, 0, PHASE_LEVIATHAN_SOLO); // The actual spell is cast by the turret, we should not let it interrupt itself.
+ events.RescheduleEvent(EVENT_NAPALM_SHELL, 9000, 0, PHASE_LEVIATHAN_MK_II); // The actual spell is cast by the turret, we should not let it interrupt itself.
break;
case EVENT_SHOCK_BLAST:
DoCastAOE(SPELL_SHOCK_BLAST);
@@ -872,14 +869,14 @@ class boss_leviathan_mk_ii : public CreatureScript
break;
case EVENT_FLAME_SUPPRESSANT_MK:
DoCastAOE(SPELL_FLAME_SUPPRESSANT_MK);
- events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_SOLO);
+ events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_MK_II);
break;
case EVENT_NAPALM_SHELL:
DoCastAOE(SPELL_FORCE_CAST_NAPALM_SHELL);
- events.RescheduleEvent(EVENT_NAPALM_SHELL, urand(6000, 15000), 0, PHASE_LEVIATHAN_SOLO);
+ events.RescheduleEvent(EVENT_NAPALM_SHELL, urand(6000, 15000), 0, PHASE_LEVIATHAN_MK_II);
if (events.GetTimeUntilEvent(EVENT_PLASMA_BLAST) < 2000)
- events.RescheduleEvent(EVENT_PLASMA_BLAST, 2000, 0, PHASE_LEVIATHAN_SOLO); // The actual spell is cast by the turret, we should not let it interrupt itself.
+ events.RescheduleEvent(EVENT_PLASMA_BLAST, 2000, 0, PHASE_LEVIATHAN_MK_II); // The actual spell is cast by the turret, we should not let it interrupt itself.
break;
case EVENT_MOVE_POINT_2:
me->GetMotionMaster()->MovePoint(WP_MKII_P4_POS_2, VehicleRelocation[WP_MKII_P4_POS_2]);
@@ -893,7 +890,7 @@ class boss_leviathan_mk_ii : public CreatureScript
default:
break;
}
- }
+ }
DoMeleeAttackIfReady();
}
@@ -934,7 +931,7 @@ class boss_vx_001 : public CreatureScript
DoCast(me, SPELL_VEHICLE_DAMAGED, true);
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT);
- if (events.IsInPhase(PHASE_VX001_SOLO))
+ if (events.IsInPhase(PHASE_VX_001))
{
me->CastStop();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); // | UNIT_FLAG_NOT_SELECTABLE);
@@ -942,9 +939,9 @@ class boss_vx_001 : public CreatureScript
DoCast(me, SPELL_TORSO_DISABLED);
if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON)))
mimiron->AI()->DoAction(DO_ACTIVATE_AERIAL);
- }
- else if (events.IsInPhase(PHASE_VX001_ASSEMBLED))
- {
+ }
+ else if (events.IsInPhase(PHASE_VOL7RON))
+ {
me->SetStandState(UNIT_STAND_STATE_DEAD);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -975,19 +972,19 @@ class boss_vx_001 : public CreatureScript
//me->SetUInt32Value(UNIT_FIELD_BYTES_1, 33554432); Blizzard handles hover animation like this it seems.
DoCast(me, SPELL_HEAT_WAVE_AURA);
- events.SetPhase(PHASE_VX001_SOLO);
+ events.SetPhase(PHASE_VX_001);
events.ScheduleEvent(EVENT_ROCKET_STRIKE, 20000);
events.ScheduleEvent(EVENT_SPINNING_UP, urand(30000, 35000));
- events.ScheduleEvent(EVENT_RAPID_BURST, 500, 0, PHASE_VX001_SOLO);
+ events.ScheduleEvent(EVENT_RAPID_BURST, 500, 0, PHASE_VX_001);
break;
case DO_ASSEMBLED_COMBAT:
me->SetStandState(UNIT_STAND_STATE_STAND);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
- events.SetPhase(PHASE_VX001_ASSEMBLED);
+ events.SetPhase(PHASE_VOL7RON);
events.ScheduleEvent(EVENT_ROCKET_STRIKE, 20000);
events.ScheduleEvent(EVENT_SPINNING_UP, urand(30000, 35000));
- events.ScheduleEvent(EVENT_HAND_PULSE, 500, 0, PHASE_VX001_ASSEMBLED);
+ events.ScheduleEvent(EVENT_HAND_PULSE, 500, 0, PHASE_VOL7RON);
if (_fireFighter)
events.ScheduleEvent(EVENT_FROST_BOMB, 1000);
break;
@@ -1012,9 +1009,9 @@ class boss_vx_001 : public CreatureScript
{
if (victim->GetTypeId() == TYPEID_PLAYER)
if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON)))
- mimiron->AI()->Talk(events.IsInPhase(PHASE_VX001_SOLO) ? SAY_VX001_SLAY : SAY_V07TRON_SLAY);
+ mimiron->AI()->Talk(events.IsInPhase(PHASE_VX_001) ? SAY_VX001_SLAY : SAY_V07TRON_SLAY);
}
-
+
void SpellHit(Unit* caster, SpellInfo const* /*spellProto*/) override
{
if (caster->GetEntry() == NPC_BURST_TARGET && !me->HasUnitState(UNIT_STATE_CASTING))
@@ -1043,10 +1040,10 @@ class boss_vx_001 : public CreatureScript
case EVENT_RAPID_BURST:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 120, true))
DoCast(target, SPELL_SUMMON_BURST_TARGET);
- events.RescheduleEvent(EVENT_RAPID_BURST, 3000, 0, PHASE_VX001_SOLO);
+ events.RescheduleEvent(EVENT_RAPID_BURST, 3000, 0, PHASE_VX_001);
break;
case EVENT_ROCKET_STRIKE:
- DoCastAOE(events.IsInPhase(PHASE_VX001_SOLO) ? SPELL_ROCKET_STRIKE_LEFT : SPELL_ROCKET_STRIKE_BOTH);
+ DoCastAOE(events.IsInPhase(PHASE_VX_001) ? SPELL_ROCKET_STRIKE_LEFT : SPELL_ROCKET_STRIKE_BOTH);
events.ScheduleEvent(EVENT_RELOAD, 10000);
events.RescheduleEvent(EVENT_ROCKET_STRIKE, urand(20000, 25000));
break;
@@ -1058,7 +1055,7 @@ class boss_vx_001 : public CreatureScript
case EVENT_HAND_PULSE:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 120, true))
DoCast(target, urand(0, 1) == 0 ? SPELL_HAND_PULSE_LEFT : SPELL_HAND_PULSE_RIGHT);
- events.RescheduleEvent(EVENT_HAND_PULSE, urand(1500, 3000), 0, PHASE_VX001_ASSEMBLED);
+ events.RescheduleEvent(EVENT_HAND_PULSE, urand(1500, 3000), 0, PHASE_VOL7RON);
break;
case EVENT_FROST_BOMB:
DoCastAOE(SPELL_SCRIPT_EFFECT_FROST_BOMB);
@@ -1071,7 +1068,7 @@ class boss_vx_001 : public CreatureScript
break;
case EVENT_FLAME_SUPPRESSANT_VX:
DoCastAOE(SPELL_FLAME_SUPPRESSANT_VX);
- events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_VX, urand(10000, 12000), 0, PHASE_VX001_SOLO);
+ events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_VX, urand(10000, 12000), 0, PHASE_VX_001);
break;
default:
break;
@@ -1113,12 +1110,12 @@ class boss_aerial_command_unit : public CreatureScript
DoCast(me, SPELL_VEHICLE_DAMAGED, true);
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT);
- if (events.IsInPhase(PHASE_AERIAL_SOLO))
+ if (events.IsInPhase(PHASE_AERIAL_COMMAND_UNIT))
{
me->GetMotionMaster()->Clear(true);
me->GetMotionMaster()->MovePoint(WP_AERIAL_P4_POS, VehicleRelocation[WP_AERIAL_P4_POS]);
}
- else if (events.IsInPhase(PHASE_AERIAL_ASSEMBLED))
+ else if (events.IsInPhase(PHASE_VOL7RON))
{
me->SetStandState(UNIT_STAND_STATE_DEAD);
@@ -1139,16 +1136,16 @@ class boss_aerial_command_unit : public CreatureScript
case DO_HARDMODE_AERIAL:
fireFigther = true;
DoCast(me, SPELL_EMERGENCY_MODE);
- events.ScheduleEvent(EVENT_SUMMON_FIRE_BOTS, 1000, 0, PHASE_AERIAL_SOLO);
+ events.ScheduleEvent(EVENT_SUMMON_FIRE_BOTS, 1000, 0, PHASE_AERIAL_COMMAND_UNIT);
// Missing break intended.
case DO_START_AERIAL:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE);
- events.SetPhase(PHASE_AERIAL_SOLO);
- events.ScheduleEvent(EVENT_SUMMON_JUNK_BOT, 5000, 0, PHASE_AERIAL_SOLO);
- events.ScheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 9000, 0, PHASE_AERIAL_SOLO);
- events.ScheduleEvent(EVENT_SUMMON_BOMB_BOT, 9000, 0, PHASE_AERIAL_SOLO);
+ events.SetPhase(PHASE_AERIAL_COMMAND_UNIT);
+ events.ScheduleEvent(EVENT_SUMMON_JUNK_BOT, 5000, 0, PHASE_AERIAL_COMMAND_UNIT);
+ events.ScheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 9000, 0, PHASE_AERIAL_COMMAND_UNIT);
+ events.ScheduleEvent(EVENT_SUMMON_BOMB_BOT, 9000, 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case DO_DISABLE_AERIAL:
me->CastStop();
@@ -1164,7 +1161,7 @@ class boss_aerial_command_unit : public CreatureScript
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE);
me->SetStandState(UNIT_STAND_STATE_STAND);
- events.SetPhase(PHASE_AERIAL_ASSEMBLED);
+ events.SetPhase(PHASE_VOL7RON);
break;
default:
break;
@@ -1187,7 +1184,7 @@ class boss_aerial_command_unit : public CreatureScript
{
if (victim->GetTypeId() == TYPEID_PLAYER)
if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON)))
- mimiron->AI()->Talk(events.IsInPhase(PHASE_AERIAL_SOLO) ? SAY_AERIAL_SLAY : SAY_V07TRON_SLAY);
+ mimiron->AI()->Talk(events.IsInPhase(PHASE_AERIAL_COMMAND_UNIT) ? SAY_AERIAL_SLAY : SAY_V07TRON_SLAY);
}
void MovementInform(uint32 type, uint32 point) override
@@ -1195,47 +1192,47 @@ class boss_aerial_command_unit : public CreatureScript
if (type == POINT_MOTION_TYPE && point == WP_AERIAL_P4_POS)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
-
+
if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON)))
mimiron->AI()->DoAction(DO_ACTIVATE_V0L7R0N_1);
}
}
-
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
-
+
events.Update(diff);
-
+
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
-
+
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_SUMMON_FIRE_BOTS:
me->CastCustomSpell(SPELL_SUMMON_FIRE_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 3, NULL, true);
- events.RescheduleEvent(EVENT_SUMMON_FIRE_BOTS, 45000, 0, PHASE_AERIAL_SOLO);
+ events.RescheduleEvent(EVENT_SUMMON_FIRE_BOTS, 45000, 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_JUNK_BOT:
me->CastCustomSpell(SPELL_SUMMON_JUNK_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, NULL, true);
- events.RescheduleEvent(EVENT_SUMMON_JUNK_BOT, urand(11000, 12000), 0, PHASE_AERIAL_SOLO);
+ events.RescheduleEvent(EVENT_SUMMON_JUNK_BOT, urand(11000, 12000), 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_ASSAULT_BOT:
me->CastCustomSpell(SPELL_SUMMON_ASSAULT_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, NULL, true);
- events.RescheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 30000, 0, PHASE_AERIAL_SOLO);
+ events.RescheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 30000, 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_BOMB_BOT:
DoCast(me, SPELL_SUMMON_BOMB_BOT);
- events.RescheduleEvent(EVENT_SUMMON_BOMB_BOT, urand(15000, 20000), 0, PHASE_AERIAL_SOLO);
+ events.RescheduleEvent(EVENT_SUMMON_BOMB_BOT, urand(15000, 20000), 0, PHASE_AERIAL_COMMAND_UNIT);
break;
default:
break;
}
}
- DoSpellAttackIfReady(events.IsInPhase(PHASE_AERIAL_SOLO) ? SPELL_PLASMA_BALL_P1 : SPELL_PLASMA_BALL_P2);
+ DoSpellAttackIfReady(events.IsInPhase(PHASE_AERIAL_COMMAND_UNIT) ? SPELL_PLASMA_BALL_P1 : SPELL_PLASMA_BALL_P2);
}
private:
@@ -1344,7 +1341,7 @@ class npc_mimiron_emergency_fire_bot : public CreatureScript
isWaterSprayReady = true;
moveNew = true;
}
-
+
void UpdateAI(uint32 diff) override
{
if (!isWaterSprayReady)
@@ -1497,7 +1494,7 @@ class npc_mimiron_flames : public CreatureScript
{
events.ScheduleEvent(EVENT_SPREAD_FLAMES, 4000);
}
-
+
void UpdateAI(uint32 diff) override
{
if (instance->GetBossState(BOSS_MIMIRON) != IN_PROGRESS)
@@ -1544,7 +1541,7 @@ class npc_mimiron_frost_bomb : public CreatureScript
{
events.ScheduleEvent(EVENT_FROST_BOMB_EXPLOSION, 10000);
}
-
+
void UpdateAI(uint32 diff) override
{
events.Update(diff);
@@ -1592,7 +1589,7 @@ class npc_mimiron_proximity_mine : public CreatureScript
{
events.ScheduleEvent(EVENT_PROXIMITY_MINE_ARM, 1500);
}
-
+
void UpdateAI(uint32 diff) override
{
events.Update(diff);
@@ -1630,14 +1627,13 @@ class go_mimiron_hardmode_button : public GameObjectScript
{
public:
go_mimiron_hardmode_button() : GameObjectScript("go_mimiron_hardmode_button") { }
-
+
bool OnGossipHello(Player* /*player*/, GameObject* go)
{
InstanceScript* instance = go->GetInstanceScript();
-
if (!instance)
return false;
-
+
if (Creature* computer = ObjectAccessor::GetCreature(*go, instance->GetData64(DATA_COMPUTER)))
computer->AI()->DoAction(DO_ACTIVATE_COMPUTER);
go->SetGoState(GO_STATE_ACTIVE);
@@ -1646,7 +1642,7 @@ class go_mimiron_hardmode_button : public GameObjectScript
}
};
-// 63801 Bomb Bot
+// 63801 - Bomb Bot
class spell_mimiron_bomb_bot : public SpellScriptLoader
{
public:
@@ -1860,7 +1856,7 @@ class spell_mimiron_magnetic_core : public SpellScriptLoader
{
if (Creature* target = GetTarget()->ToCreature())
{
- target->GetAI()->DoAction(DO_DISABLE_AERIAL);
+ target->AI()->DoAction(DO_DISABLE_AERIAL);
target->CastSpell(target, SPELL_MAGNETIC_CORE_VISUAL, true);
}
}
@@ -1869,7 +1865,7 @@ class spell_mimiron_magnetic_core : public SpellScriptLoader
{
if (Creature* target = GetTarget()->ToCreature())
{
- target->GetAI()->DoAction(DO_ENABLE_AERIAL);
+ target->AI()->DoAction(DO_ENABLE_AERIAL);
target->RemoveAurasDueToSpell(SPELL_MAGNETIC_CORE_VISUAL);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index 1f9bfe4c3f3..a074ce28181 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -15,12 +15,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ulduar.h"
+#include "InstanceScript.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptMgr.h"
#include "SpellScript.h"
#include "WorldPacket.h"
+#include "ulduar.h"
static DoorData const doorData[] =
{
@@ -821,10 +822,6 @@ class instance_ulduar : public InstanceMapScript
case DATA_UNBROKEN:
Unbroken = data != 0;
break;
- case DATA_MIMIRON_ELEVATOR:
- if (GameObject* gameObject = instance->GetGameObject(MimironElevatorGUID))
- gameObject->SetGoState((GOState)data);
- break;
case DATA_ILLUSION:
illusion = data;
break;
@@ -924,6 +921,8 @@ class instance_ulduar : public InstanceMapScript
return MimironComputerGUID;
case DATA_MIMIRON_WORLD_TRIGGER:
return MimironWorldTriggerGUID;
+ case DATA_MIMIRON_ELEVATOR:
+ return MimironElevatorGUID;
case DATA_MIMIRON_BUTTON:
return MimironButtonGUID;
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
index 81cb469318f..5dfc2b54f6e 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
@@ -18,8 +18,6 @@
#ifndef DEF_ULDUAR_H
#define DEF_ULDUAR_H
-#include "InstanceScript.h"
-#include "ObjectMgr.h"
#define UlduarScriptName "instance_ulduar"
extern Position const ObservationRingKeepersPos[4];
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp
index d4fdb262c8e..dfbc49e1e34 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp
@@ -110,11 +110,6 @@ class boss_hydromancer_thespia : public CreatureScript
break;
}
}
-
- void UpdateAI(uint32 diff) override
- {
- BossAI::UpdateAI(diff);
- }
};
CreatureAI* GetAI(Creature* creature) const override