aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp2
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp1
-rw-r--r--src/server/game/Instances/InstanceScript.h2
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp15
-rw-r--r--src/server/game/Spells/Spell.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp22
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp20
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp18
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp17
-rw-r--r--src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp21
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp101
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp18
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp14
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp18
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp12
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp18
-rw-r--r--src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp14
-rw-r--r--src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp10
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp24
-rw-r--r--src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp14
-rw-r--r--src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp20
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp14
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp4
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp24
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp15
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp5
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp16
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp22
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp5
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp7
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp7
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp45
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp14
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp5
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp7
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp12
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp7
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp13
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp52
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp2
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp5
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp58
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp5
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp465
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp5
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp1
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp14
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp4
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp18
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp104
-rw-r--r--src/server/scripts/Outland/zone_shattrath_city.cpp22
-rw-r--r--src/server/scripts/Outland/zone_terokkar_forest.cpp28
-rw-r--r--src/server/scripts/Spells/spell_dk.cpp75
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp7
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp36
-rw-r--r--src/server/scripts/Spells/spell_holiday.cpp373
-rw-r--r--src/server/scripts/Spells/spell_mage.cpp13
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp29
-rw-r--r--src/server/scripts/Spells/spell_pet.cpp31
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp20
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp6
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp48
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp5
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp5
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp14
-rw-r--r--src/server/shared/Debugging/Errors.cpp16
-rw-r--r--src/server/shared/Debugging/Errors.h4
-rw-r--r--src/server/shared/Packets/ByteBuffer.h6
78 files changed, 1350 insertions, 810 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 555b48da03b..d2835797235 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -937,7 +937,7 @@ void AchievementMgr<Player>::SendCriteriaUpdate(AchievementCriteriaEntry const*
if (!entry->timeLimit)
data << uint32(0);
else
- data << uint32(timedCompleted ? 0 : 1); // this are some flags, 1 is for keeping the counter at 0 in client
+ data << uint32(timedCompleted ? 1 : 0); // this are some flags, 1 is for keeping the counter at 0 in client
data.AppendPackedTime(progress->date);
data << uint32(timeElapsed); // time elapsed in seconds
data << uint32(0); // unk
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 28ff634a15c..53d97e8ee55 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -308,6 +308,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
data << uint32(summonSpellId);
data << uint32(256); // CAST_FLAG_UNKNOWN3
data << uint32(0);
+ data << uint32(getMSTime());
owner->SendMessageToSet(&data, true);
}
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index 1f190355b15..24a0296491c 100644
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -146,6 +146,8 @@ class InstanceScript : public ZoneScript
Map* instance;
// On creation, NOT load.
+ // PLEASE INITIALIZE FIELDS IN THE CONSTRUCTOR INSTEAD !!!
+ // KEEPING THIS METHOD ONLY FOR BACKWARD COMPATIBILITY !!!
virtual void Initialize() { }
// On load
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 448911aa82d..a65299140fa 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -34,12 +34,6 @@
#include "WorldPacket.h"
#include "WorldSession.h"
-namespace
-{
- typedef std::set<ScriptObject*> ExampleScriptContainer;
- ExampleScriptContainer ExampleScripts;
-}
-
// This is the global static registry of scripts.
template<class TScript>
class ScriptRegistry
@@ -108,12 +102,9 @@ class ScriptRegistry
else
{
// The script uses a script name from database, but isn't assigned to anything.
- if (script->GetName().find("example") == std::string::npos && script->GetName().find("Smart") == std::string::npos)
+ if (script->GetName().find("Smart") == std::string::npos)
TC_LOG_ERROR("sql.sql", "Script named '%s' does not have a script name assigned in database.",
script->GetName().c_str());
-
- // These scripts don't get stored anywhere so throw them into this to avoid leaking memory
- ExampleScripts.insert(script);
}
}
else
@@ -234,10 +225,6 @@ void ScriptMgr::Unload()
#undef SCR_CLEAR
- for (ExampleScriptContainer::iterator itr = ExampleScripts.begin(); itr != ExampleScripts.end(); ++itr)
- delete *itr;
- ExampleScripts.clear();
-
delete[] SpellSummary;
delete[] UnitAI::AISpellInfo;
}
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 01eeac8066a..108f23bcc6a 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4589,8 +4589,9 @@ void Spell::HandleThreatSpells()
for (std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
{
+ float threatToAdd = threat;
if (ihit->missCondition != SPELL_MISS_NONE)
- continue;
+ threatToAdd = 0.0f;
Unit* target = ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID);
if (!target)
@@ -4598,14 +4599,14 @@ void Spell::HandleThreatSpells()
// positive spells distribute threat among all units that are in combat with target, like healing
if (m_spellInfo->_IsPositiveSpell())
- target->getHostileRefManager().threatAssist(m_caster, threat, m_spellInfo);
+ target->getHostileRefManager().threatAssist(m_caster, threatToAdd, m_spellInfo);
// for negative spells threat gets distributed among affected targets
else
{
if (!target->CanHaveThreatList())
continue;
- target->AddThreat(m_caster, threat, m_spellInfo->GetSchoolMask(), m_spellInfo);
+ target->AddThreat(m_caster, threatToAdd, m_spellInfo->GetSchoolMask(), m_spellInfo);
}
}
TC_LOG_DEBUG("spells", "Spell %u, added an additional %f threat for %s %u target(s)", m_spellInfo->Id, threat, m_spellInfo->_IsPositiveSpell() ? "assisting" : "harming", uint32(m_UniqueTargetInfo.size()));
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
index 22999c221dd..46cdd5edc7d 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
@@ -76,7 +76,16 @@ public:
struct instance_blackrock_depths_InstanceMapScript : public InstanceScript
{
- instance_blackrock_depths_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_blackrock_depths_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ memset(&encounter, 0, sizeof(encounter));
+
+ BarAleCount = 0;
+ GhostKillCount = 0;
+ TombTimer = TIMER_TOMBOFTHESEVEN;
+ TombEventCounter = 0;
+ }
uint32 encounter[MAX_ENCOUNTER];
std::string str_data;
@@ -115,17 +124,6 @@ public:
uint32 TombTimer;
uint32 TombEventCounter;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&encounter, 0, sizeof(encounter));
-
- BarAleCount = 0;
- GhostKillCount = 0;
- TombTimer = TIMER_TOMBOFTHESEVEN;
- TombEventCounter = 0;
- }
-
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
index ad395ebe497..6d29170c5ff 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
@@ -63,13 +63,6 @@ public:
SetBossNumber(EncounterCount);
}
- void Initialize() override
- {
- // Razorgore
- EggCount = 0;
- EggEvent = 0;
- }
-
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
diff --git a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
index d7667b37e87..d4e32d8e908 100644
--- a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
+++ b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
@@ -56,7 +56,12 @@ class instance_deadmines : public InstanceMapScript
struct instance_deadmines_InstanceMapScript : public InstanceScript
{
- instance_deadmines_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_deadmines_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+
+ State = CANNON_NOT_USED;
+ }
ObjectGuid FactoryDoorGUID;
ObjectGuid IronCladDoorGUID;
@@ -71,13 +76,6 @@ class instance_deadmines : public InstanceMapScript
uint32 PiratesDelay_Timer;
ObjectGuid uiSmiteChestGUID;
- void Initialize() override
- {
- SetHeaders(DataHeader);
-
- State = CANNON_NOT_USED;
- }
-
virtual void Update(uint32 diff) override
{
if (!IronCladDoorGUID || !DefiasCannonGUID || !DoorLeverGUID)
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
index 9cd6afaca78..958126610f9 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
@@ -37,6 +37,7 @@ public:
instance_gnomeregan_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
}
uint32 m_auiEncounter[MAX_ENCOUNTER];
@@ -46,11 +47,6 @@ public:
ObjectGuid uiBastmasterEmiShortfuseGUID;
- void Initialize() override
- {
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
- }
-
void Load(const char* in) override
{
if (!in)
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp
index 0d639df731a..a294611babf 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp
@@ -56,7 +56,15 @@ public:
struct instance_karazhan_InstanceMapScript : public InstanceScript
{
- instance_karazhan_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_karazhan_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+
+ // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
+ m_uiOperaEvent = urand(1, 3);
+ m_uiOzDeathCount = 0;
+ }
uint32 m_auiEncounter[MAX_ENCOUNTER];
std::string strSaveData;
@@ -80,16 +88,6 @@ public:
ObjectGuid ImageGUID;
ObjectGuid DustCoveredChest;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
-
- // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
- m_uiOperaEvent = urand(1, 3);
- m_uiOzDeathCount = 0;
- }
-
bool IsEncounterInProgress() const override
{
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
index 24f7d90817d..69c188a61dc 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
@@ -162,6 +162,13 @@ class spell_shadow_portal : public SpellScriptLoader
{
PrepareSpellScript(spell_shadow_portal_SpellScript);
+ public:
+ spell_shadow_portal_SpellScript()
+ {
+ _instance = nullptr;
+ }
+
+ private:
bool Load() override
{
_instance = GetCaster()->GetInstanceScript();
@@ -222,7 +229,6 @@ class spell_shadow_portal : public SpellScriptLoader
OnEffectHitTarget += SpellEffectFn(spell_shadow_portal_SpellScript::HandleCast, EFFECT_0, SPELL_EFFECT_DUMMY);
}
- private:
InstanceScript* _instance;
};
@@ -285,6 +291,13 @@ class spell_shadow_portal_rooms : public SpellScriptLoader
{
PrepareSpellScript(spell_shadow_portal_rooms_SpellScript);
+ public:
+ spell_shadow_portal_rooms_SpellScript()
+ {
+ _instance = nullptr;
+ }
+
+ private:
bool Load() override
{
_instance = GetCaster()->GetInstanceScript();
@@ -358,7 +371,6 @@ class spell_shadow_portal_rooms : public SpellScriptLoader
OnEffectHit += SpellEffectFn(spell_shadow_portal_rooms_SpellScript::HandleSendEvent, EFFECT_1, SPELL_EFFECT_SEND_EVENT);
}
- private:
InstanceScript* _instance;
};
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
index ae8cb74ea49..3379882ce28 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
@@ -78,7 +78,14 @@ public:
struct instance_shadowfang_keep_InstanceMapScript : public InstanceScript
{
- instance_shadowfang_keep_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_shadowfang_keep_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+
+ uiPhase = 0;
+ uiTimer = 0;
+ }
uint32 m_auiEncounter[MAX_ENCOUNTER];
std::string str_data;
@@ -94,15 +101,6 @@ public:
uint8 uiPhase;
uint16 uiTimer;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
-
- uiPhase = 0;
- uiTimer = 0;
- }
-
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
index 927ca0b19ac..699b61ed216 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
+++ b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
@@ -50,6 +50,11 @@ class instance_stratholme : public InstanceMapScript
instance_stratholme_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
+ for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
+ EncounterState[i] = NOT_STARTED;
+
+ for (uint8 i = 0; i < 5; ++i)
+ IsSilverHandDead[i] = false;
}
uint32 EncounterState[MAX_ENCOUNTER];
@@ -73,18 +78,6 @@ class instance_stratholme : public InstanceMapScript
GuidSet abomnationGUID;
EventMap events;
- void Initialize() override
- {
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- EncounterState[i] = NOT_STARTED;
-
- for (uint8 i = 0; i < 5; ++i)
- IsSilverHandDead[i] = false;
-
- crystalsGUID.clear();
- abomnationGUID.clear();
- }
-
bool StartSlaugtherSquare()
{
//change to DONE when crystals implemented
diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
index 194f5790f44..bc3980d6420 100644
--- a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
+++ b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
@@ -61,6 +61,14 @@ public:
instance_sunken_temple_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
+ State = 0;
+
+ s1 = false;
+ s2 = false;
+ s3 = false;
+ s4 = false;
+ s5 = false;
+ s6 = false;
}
ObjectGuid GOAtalaiStatue1;
@@ -80,19 +88,6 @@ public:
bool s5;
bool s6;
- void Initialize() override
- {
-
- State = 0;
-
- s1 = false;
- s2 = false;
- s3 = false;
- s4 = false;
- s5 = false;
- s6 = false;
- }
-
void OnGameObjectCreate(GameObject* go) override
{
switch (go->GetEntry())
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
index 956f7099596..c6c190dd962 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
@@ -45,9 +45,7 @@ class instance_uldaman : public InstanceMapScript
struct instance_uldaman_InstanceMapScript : public InstanceScript
{
- instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- void Initialize() override
+ instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp
index 24d370155a6..88b8d1e6af5 100644
--- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp
@@ -19,123 +19,56 @@
/* ScriptData
SDName: Isle_of_Queldanas
SD%Complete: 100
-SDComment: Quest support: 11524, 11525, 11532, 11533, 11542, 11543, 11541
+SDComment: Quest support: 11541
SDCategory: Isle Of Quel'Danas
EndScriptData */
/* ContentData
-npc_converted_sentry
npc_greengill_slave
EndContentData */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "Player.h"
-#include "Pet.h"
#include "SpellInfo.h"
/*######
-## npc_converted_sentry
+## npc_greengill_slave
######*/
-enum ConvertedSentry
-{
- SAY_CONVERTED = 0,
-
- SPELL_CONVERT_CREDIT = 45009
-};
-class npc_converted_sentry : public CreatureScript
+enum GreengillSlave
{
-public:
- npc_converted_sentry() : CreatureScript("npc_converted_sentry") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_converted_sentryAI(creature);
- }
-
- struct npc_converted_sentryAI : public ScriptedAI
- {
- npc_converted_sentryAI(Creature* creature) : ScriptedAI(creature)
- {
- Initialize();
- }
-
- void Initialize()
- {
- Credit = false;
- Timer = 2500;
- }
-
- bool Credit;
- uint32 Timer;
-
- void Reset() override
- {
- Initialize();
- }
-
- void MoveInLineOfSight(Unit* /*who*/) override { }
-
- void EnterCombat(Unit* /*who*/) override { }
-
- void UpdateAI(uint32 diff) override
- {
- if (!Credit)
- {
- if (Timer <= diff)
- {
- Talk(SAY_CONVERTED);
-
- DoCast(me, SPELL_CONVERT_CREDIT);
- if (me->IsPet())
- me->ToPet()->SetDuration(7500);
- Credit = true;
- } else Timer -= diff;
- }
- }
- };
+ NPC_DARKSPINE_MYRIDON = 25060,
+ QUEST_GREENGILL_COAST = 11541,
+ SPELL_ENRAGE = 45111,
+ SPELL_ORB_MURLOC_CONTROL = 45109,
+ SPELL_GREENGILL_SLAVE_FREED = 45110
};
-/*######
-## npc_greengill_slave
-######*/
-
-#define ENRAGE 45111
-#define ORB 45109
-#define QUESTG 11541
-#define DM 25060
-
class npc_greengill_slave : public CreatureScript
{
public:
npc_greengill_slave() : CreatureScript("npc_greengill_slave") { }
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_greengill_slaveAI(creature);
- }
-
struct npc_greengill_slaveAI : public ScriptedAI
{
npc_greengill_slaveAI(Creature* creature) : ScriptedAI(creature) { }
- void EnterCombat(Unit* /*who*/) override { }
-
void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
{
Player* player = caster->ToPlayer();
+
if (!player)
return;
- if (spellInfo->Id == ORB && !me->HasAura(ENRAGE))
+ if (spellInfo->Id == SPELL_ORB_MURLOC_CONTROL && !me->HasAura(SPELL_ENRAGE))
{
- if (player->GetQuestStatus(QUESTG) == QUEST_STATUS_INCOMPLETE)
- DoCast(player, 45110, true);
+ if (player->GetQuestStatus(QUEST_GREENGILL_COAST) == QUEST_STATUS_INCOMPLETE)
+ DoCast(player, SPELL_GREENGILL_SLAVE_FREED, true);
- DoCast(me, ENRAGE);
+ DoCast(me, SPELL_ENRAGE);
- if (Creature* Myrmidon = me->FindNearestCreature(DM, 70))
+ if (Creature* Myrmidon = me->FindNearestCreature(NPC_DARKSPINE_MYRIDON, 70))
{
me->AddThreat(Myrmidon, 100000.0f);
AttackStart(Myrmidon);
@@ -148,10 +81,14 @@ public:
DoMeleeAttackIfReady();
}
};
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return new npc_greengill_slaveAI(creature);
+ }
};
void AddSC_isle_of_queldanas()
{
- new npc_converted_sentry();
new npc_greengill_slave();
}
diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp
index b23d0cdaa3c..6c5f4ff3b53 100644
--- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp
+++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp
@@ -64,7 +64,14 @@ public:
struct instance_blackfathom_deeps_InstanceMapScript : public InstanceScript
{
- instance_blackfathom_deeps_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_blackfathom_deeps_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ memset(&encounter, 0, sizeof(encounter));
+
+ countFires = 0;
+ deathTimes = 0;
+ }
ObjectGuid twilightLordKelrisGUID;
ObjectGuid shrine1GUID;
@@ -79,15 +86,6 @@ public:
uint8 countFires;
uint8 deathTimes;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&encounter, 0, sizeof(encounter));
-
- countFires = 0;
- deathTimes = 0;
- }
-
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
index 71835c3db94..176c24f6707 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
@@ -55,19 +55,17 @@ public:
struct instance_mount_hyjal_InstanceMapScript : public InstanceScript
{
- instance_mount_hyjal_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- void Initialize() override
+ instance_mount_hyjal_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
- RaidDamage = 0;
- Trash = 0;
- hordeRetreat = 0;
- allianceRetreat = 0;
+ RaidDamage = 0;
+ Trash = 0;
+ hordeRetreat = 0;
+ allianceRetreat = 0;
- ArchiYell = false;
+ ArchiYell = false;
}
bool IsEncounterInProgress() const override
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
index 0220ff98750..317ab7e5ad5 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
@@ -52,7 +52,14 @@ public:
struct instance_old_hillsbrad_InstanceMapScript : public InstanceScript
{
- instance_old_hillsbrad_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_old_hillsbrad_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+
+ mBarrelCount = 0;
+ mThrallEventCount = 0;
+ }
uint32 m_auiEncounter[MAX_ENCOUNTER];
uint32 mBarrelCount;
@@ -62,15 +69,6 @@ public:
ObjectGuid TarethaGUID;
ObjectGuid EpochGUID;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
-
- mBarrelCount = 0;
- mThrallEventCount = 0;
- }
-
Player* GetPlayerInMap()
{
Map::PlayerList const& players = instance->GetPlayers();
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
index ed49cc41c39..d46f0b5e9e1 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
@@ -80,7 +80,11 @@ public:
struct instance_the_black_morass_InstanceMapScript : public InstanceScript
{
- instance_the_black_morass_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_the_black_morass_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ Clear();
+ }
uint32 m_auiEncounter[EncounterCount];
@@ -92,12 +96,6 @@ public:
ObjectGuid _medivhGUID;
uint8 _currentRiftId;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- Clear();
- }
-
void Clear()
{
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
index 4bbbf26b84e..4af520907e7 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
@@ -43,24 +43,22 @@ public:
struct instance_onyxias_lair_InstanceMapScript : public InstanceScript
{
- instance_onyxias_lair_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- //Eruption is a BFS graph problem
- //One map to remember all floor, one map to keep floor that still need to erupt and one queue to know what needs to be removed
-
- void Initialize() override
+ instance_onyxias_lair_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
- onyxiaLiftoffTimer = 0;
- manyWhelpsCounter = 0;
- eruptTimer = 0;
+ onyxiaLiftoffTimer = 0;
+ manyWhelpsCounter = 0;
+ eruptTimer = 0;
achievManyWhelpsHandleIt = false;
- achievSheDeepBreathMore = true;
+ achievSheDeepBreathMore = true;
}
+ //Eruption is a BFS graph problem
+ //One map to remember all floor, one map to keep floor that still need to erupt and one queue to know what needs to be removed
+
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp
index 8a82f782918..9f2f5edf798 100644
--- a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp
+++ b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp
@@ -55,16 +55,12 @@ public:
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
- }
-
- void Initialize() override
- {
- gongWave = 0;
- fiendsKilled = 0;
- reaversKilled = 0;
- summonLowRange = 0;
+ gongWave = 0;
+ fiendsKilled = 0;
+ reaversKilled = 0;
+ summonLowRange = 0;
summonHighRange = 0;
- summonCreature = 0;
+ summonCreature = 0;
}
void OnGameObjectCreate(GameObject* gameObject) override
diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp
index 07cb6e65ee9..6c63dd97406 100644
--- a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp
+++ b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp
@@ -42,17 +42,15 @@ public:
struct instance_razorfen_kraul_InstanceMapScript : public InstanceScript
{
- instance_razorfen_kraul_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- ObjectGuid DoorWardGUID;
- int WardKeeperDeath;
-
- void Initialize() override
+ instance_razorfen_kraul_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
WardKeeperDeath = 0;
}
+ ObjectGuid DoorWardGUID;
+ int WardKeeperDeath;
+
Player* GetPlayerInMap()
{
Map::PlayerList const& players = instance->GetPlayers();
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
index 456ff749e84..bf37c3d04ff 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
@@ -39,7 +39,17 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
struct instance_temple_of_ahnqiraj_InstanceMapScript : public InstanceScript
{
- instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ IsBossDied[0] = false;
+ IsBossDied[1] = false;
+ IsBossDied[2] = false;
+
+ BugTrioDeathCount = 0;
+
+ CthunPhase = 0;
+ }
//If Vem is dead...
bool IsBossDied[3];
@@ -56,18 +66,6 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
uint32 CthunPhase;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- IsBossDied[0] = false;
- IsBossDied[1] = false;
- IsBossDied[2] = false;
-
- BugTrioDeathCount = 0;
-
- CthunPhase = 0;
- }
-
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
diff --git a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp
index 5d7202588a9..6ca4b7c9f5d 100644
--- a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp
+++ b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp
@@ -41,14 +41,7 @@ public:
struct instance_wailing_caverns_InstanceMapScript : public InstanceScript
{
- instance_wailing_caverns_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- uint32 m_auiEncounter[MAX_ENCOUNTER];
-
- bool yelled;
- ObjectGuid NaralexGUID;
-
- void Initialize() override
+ instance_wailing_caverns_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
@@ -56,6 +49,11 @@ public:
yelled = false;
}
+ uint32 m_auiEncounter[MAX_ENCOUNTER];
+
+ bool yelled;
+ ObjectGuid NaralexGUID;
+
void OnCreatureCreate(Creature* creature) override
{
if (creature->GetEntry() == DATA_NARALEX)
diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
index 393028e0446..7b31850caac 100644
--- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
+++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
@@ -108,7 +108,15 @@ public:
struct instance_zulfarrak_InstanceMapScript : public InstanceScript
{
- instance_zulfarrak_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_zulfarrak_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ PyramidPhase = 0;
+ major_wave_Timer = 0;
+ minor_wave_Timer = 0;
+ addGroupSize = 0;
+ waypoint = 0;
+ }
uint32 GahzRillaEncounter;
ObjectGuid ZumrahGUID;
@@ -124,16 +132,6 @@ public:
uint32 addGroupSize;
uint32 waypoint;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- PyramidPhase = 0;
- major_wave_Timer = 0;
- minor_wave_Timer = 0;
- addGroupSize = 0;
- waypoint = 0;
- }
-
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
index 79449723a16..fdb5a3a5fe7 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
@@ -238,16 +238,17 @@ class spell_ahn_kahet_swarm : public SpellScriptLoader
{
PrepareSpellScript(spell_ahn_kahet_swarm_SpellScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
+ public:
+ spell_ahn_kahet_swarm_SpellScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SWARM_BUFF))
- return false;
- return true;
+ _targetCount = 0;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- _targetCount = 0;
+ if (!sSpellMgr->GetSpellInfo(SPELL_SWARM_BUFF))
+ return false;
return true;
}
@@ -278,7 +279,6 @@ class spell_ahn_kahet_swarm : public SpellScriptLoader
OnEffectHit += SpellEffectFn(spell_ahn_kahet_swarm_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
- private:
uint32 _targetCount;
};
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
index 9f55ca8dc17..aa60e5c486d 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
@@ -30,9 +30,7 @@ public:
struct instance_obsidian_sanctum_InstanceMapScript : public InstanceScript
{
- instance_obsidian_sanctum_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- void Initialize() override
+ instance_obsidian_sanctum_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
index 94bf20bc41f..7d3092be115 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
@@ -41,7 +41,17 @@ public:
struct instance_trial_of_the_champion_InstanceMapScript : public InstanceScript
{
- instance_trial_of_the_champion_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_trial_of_the_champion_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ uiMovementDone = 0;
+ uiGrandChampionsDeaths = 0;
+ uiArgentSoldierDeaths = 0;
+
+ bDone = false;
+
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+ }
uint32 m_auiEncounter[MAX_ENCOUNTER];
@@ -66,18 +76,6 @@ public:
bool bDone;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- uiMovementDone = 0;
- uiGrandChampionsDeaths = 0;
- uiArgentSoldierDeaths = 0;
-
- bDone = false;
-
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
- }
-
bool IsEncounterInProgress() const override
{
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
index a645f3ca666..63b47da0807 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
@@ -703,6 +703,14 @@ class spell_powering_up : public SpellScriptLoader
{
PrepareSpellScript(spell_powering_up_SpellScript);
+ public:
+ spell_powering_up_SpellScript()
+ {
+ spellId = 0;
+ poweringUp = 0;
+ }
+
+ private:
uint32 spellId;
uint32 poweringUp;
@@ -760,6 +768,13 @@ class spell_valkyr_essences : public SpellScriptLoader
{
PrepareAuraScript(spell_valkyr_essences_AuraScript);
+ public:
+ spell_valkyr_essences_AuraScript()
+ {
+ spellId = 0;
+ }
+
+ private:
uint32 spellId;
bool Load() override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
index 30d831da30c..79fb154d6e3 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
@@ -29,9 +29,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
struct instance_trial_of_the_crusader_InstanceMapScript : public InstanceScript
{
- instance_trial_of_the_crusader_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- void Initialize() override
+ instance_trial_of_the_crusader_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTERS);
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
index 3ac5ec3070a..3ee7c9ce650 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
@@ -256,12 +256,13 @@ class spell_garfrost_permafrost : public SpellScriptLoader
{
PrepareSpellScript(spell_garfrost_permafrost_SpellScript);
- bool Load() override
+ public:
+ spell_garfrost_permafrost_SpellScript()
{
prevented = false;
- return true;
}
+ private:
void PreventHitByLoS()
{
if (Unit* target = GetHitUnit())
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index c2b1b91a200..c8894179ca3 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -421,6 +421,14 @@ class spell_tyrannus_overlord_brand : public SpellScriptLoader
{
PrepareAuraScript(spell_tyrannus_overlord_brand_AuraScript);
+ public:
+ spell_tyrannus_overlord_brand_AuraScript()
+ {
+ oldAI = nullptr;
+ oldAIState = false;
+ }
+
+ private:
bool Load() override
{
return GetCaster() && GetCaster()->GetEntry() == NPC_TYRANNUS;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 15cf0d31af9..f3fae3b14a0 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -201,7 +201,8 @@ enum Actions
enum Misc
{
- DATA_MADE_A_MESS = 45374613 // 4537, 4613 are achievement IDs
+ DATA_MADE_A_MESS = 45374613, // 4537, 4613 are achievement IDs
+ FACTION_SCOURGE = 974,
};
enum MovePoints
@@ -460,6 +461,8 @@ class boss_deathbringer_saurfang : public CreatureScript
switch (eventId)
{
case EVENT_INTRO_ALLIANCE_2:
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ me->setFaction(FACTION_SCOURGE);
Talk(SAY_INTRO_ALLIANCE_2);
break;
case EVENT_INTRO_ALLIANCE_3:
@@ -471,6 +474,8 @@ class boss_deathbringer_saurfang : public CreatureScript
DoCast(me, SPELL_GRIP_OF_AGONY);
break;
case EVENT_INTRO_HORDE_2:
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ me->setFaction(FACTION_SCOURGE);
Talk(SAY_INTRO_HORDE_2);
break;
case EVENT_INTRO_HORDE_4:
@@ -544,7 +549,6 @@ class boss_deathbringer_saurfang : public CreatureScript
case PHASE_INTRO_A:
case PHASE_INTRO_H:
{
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
// controls what events will execute
events.SetPhase(uint32(action));
@@ -1215,13 +1219,13 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
{
PrepareSpellScript(spell_deathbringer_blood_nova_targeting_SpellScript);
- bool Load() override
+ public:
+ spell_deathbringer_blood_nova_targeting_SpellScript()
{
- // initialize variable
- target = NULL;
- return true;
+ target = nullptr;
}
+ private:
void FilterTargetsInitial(std::list<WorldObject*>& targets)
{
if (targets.empty())
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
index 74a09887dd2..43490de493c 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
@@ -1922,6 +1922,13 @@ class spell_igb_on_gunship_deck : public SpellScriptLoader
{
PrepareAuraScript(spell_igb_on_gunship_deck_AuraScript);
+ public:
+ spell_igb_on_gunship_deck_AuraScript()
+ {
+ _teamInInstance = 0;
+ }
+
+ private:
bool Load() override
{
if (InstanceScript* instance = GetOwner()->GetInstanceScript())
@@ -2031,6 +2038,13 @@ class spell_igb_incinerating_blast : public SpellScriptLoader
{
PrepareSpellScript(spell_igb_incinerating_blast_SpellScript);
+ public:
+ spell_igb_incinerating_blast_SpellScript()
+ {
+ _energyLeft = 0;
+ }
+
+ private:
void StoreEnergy()
{
_energyLeft = GetCaster()->GetPower(POWER_ENERGY) - 10;
@@ -2370,9 +2384,15 @@ class spell_igb_check_for_players : public SpellScriptLoader
{
PrepareSpellScript(spell_igb_check_for_players_SpellScript);
- bool Load() override
+ public:
+ spell_igb_check_for_players_SpellScript()
{
_playerCount = 0;
+ }
+
+ private:
+ bool Load() override
+ {
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index 7ab8c956757..2e360e19b75 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -698,12 +698,13 @@ class spell_marrowgar_bone_slice : public SpellScriptLoader
{
PrepareSpellScript(spell_marrowgar_bone_slice_SpellScript);
- bool Load() override
+ public:
+ spell_marrowgar_bone_slice_SpellScript()
{
_targetCount = 0;
- return true;
}
+ private:
void ClearSpikeImmunities()
{
GetCaster()->GetAI()->DoAction(ACTION_CLEAR_SPIKE_IMMUNITIES);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 2e353e5f9dc..8f5ca0b4322 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -858,6 +858,13 @@ class spell_putricide_ooze_channel : public SpellScriptLoader
{
PrepareSpellScript(spell_putricide_ooze_channel_SpellScript);
+ public:
+ spell_putricide_ooze_channel_SpellScript()
+ {
+ _target = nullptr;
+ }
+
+ private:
bool Validate(SpellInfo const* spell) override
{
if (!spell->ExcludeTargetAuraSpell)
@@ -871,7 +878,6 @@ class spell_putricide_ooze_channel : public SpellScriptLoader
// this will let use safely use ToCreature() casts in entire script
bool Load() override
{
- _target = NULL;
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index 205b90fa159..5e55256ae59 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -507,12 +507,13 @@ class spell_rotface_mutated_infection : public SpellScriptLoader
{
PrepareSpellScript(spell_rotface_mutated_infection_SpellScript);
- bool Load() override
+ public:
+ spell_rotface_mutated_infection_SpellScript()
{
- _target = NULL;
- return true;
+ _target = nullptr;
}
+ private:
void FilterTargets(std::list<WorldObject*>& targets)
{
// remove targets with this aura already
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index 551ec9ad0a2..9324379e9d6 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -1044,10 +1044,15 @@ class spell_sindragosa_s_fury : public SpellScriptLoader
{
PrepareSpellScript(spell_sindragosa_s_fury_SpellScript);
- bool Load() override
+ public:
+ spell_sindragosa_s_fury_SpellScript()
{
_targetCount = 0;
+ }
+ private:
+ bool Load() override
+ {
// This script should execute only in Icecrown Citadel
if (InstanceMap* instance = GetCaster()->GetMap()->ToInstanceMap())
if (instance->GetInstanceScript())
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
index e67edc473f4..03c26ba2e09 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -2080,12 +2080,13 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader
{
PrepareSpellScript(spell_the_lich_king_necrotic_plague_SpellScript);
- bool Load() override
+ public:
+ spell_the_lich_king_necrotic_plague_SpellScript()
{
_hadAura = false;
- return true;
}
+ private:
void SelectTarget(std::list<Unit*>& targets)
{
targets.sort(Trinity::ObjectDistanceOrderPred(GetCaster()));
@@ -2120,12 +2121,13 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader
{
PrepareAuraScript(spell_the_lich_king_necrotic_plague_AuraScript);
- bool Load() override
+ public:
+ spell_the_lich_king_necrotic_plague_AuraScript()
{
_lastAmount = 0;
- return true;
}
+ private:
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
@@ -2497,16 +2499,17 @@ class spell_the_lich_king_valkyr_target_search : public SpellScriptLoader
{
PrepareSpellScript(spell_the_lich_king_valkyr_target_search_SpellScript);
- bool Validate(SpellInfo const* /*spell*/) override
+ public:
+ spell_the_lich_king_valkyr_target_search_SpellScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ICE_BURST))
- return false;
- return true;
+ _target = nullptr;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spell*/) override
{
- _target = NULL;
+ if (!sSpellMgr->GetSpellInfo(SPELL_ICE_BURST))
+ return false;
return true;
}
@@ -2622,6 +2625,13 @@ class spell_the_lich_king_vile_spirits : public SpellScriptLoader
{
PrepareAuraScript(spell_the_lich_king_vile_spirits_AuraScript);
+ public:
+ spell_the_lich_king_vile_spirits_AuraScript()
+ {
+ _is25Man = false;
+ }
+
+ private:
bool Load() override
{
_is25Man = GetUnitOwner()->GetMap()->Is25ManRaid();
@@ -2684,9 +2694,15 @@ class spell_the_lich_king_vile_spirit_move_target_search : public SpellScriptLoa
{
PrepareSpellScript(spell_the_lich_king_vile_spirit_move_target_search_SpellScript);
+ public:
+ spell_the_lich_king_vile_spirit_move_target_search_SpellScript()
+ {
+ _target = nullptr;
+ }
+
+ private:
bool Load() override
{
- _target = NULL;
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
@@ -2873,6 +2889,13 @@ class spell_the_lich_king_restore_soul : public SpellScriptLoader
{
PrepareSpellScript(spell_the_lich_king_restore_soul_SpellScript);
+ public:
+ spell_the_lich_king_restore_soul_SpellScript()
+ {
+ _instance = nullptr;
+ }
+
+ private:
bool Load() override
{
_instance = GetCaster()->GetInstanceScript();
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index ec7a937e725..49e24f54b02 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -1158,6 +1158,13 @@ class spell_dreamwalker_decay_periodic_timer : public SpellScriptLoader
{
PrepareAuraScript(spell_dreamwalker_decay_periodic_timer_AuraScript);
+ public:
+ spell_dreamwalker_decay_periodic_timer_AuraScript()
+ {
+ _decayRate = 0;
+ }
+
+ private:
bool Load() override
{
_decayRate = GetId() != SPELL_TIMER_BLAZING_SKELETON ? 1000 : 5000;
@@ -1385,6 +1392,13 @@ class spell_dreamwalker_nightmare_cloud : public SpellScriptLoader
{
PrepareAuraScript(spell_dreamwalker_nightmare_cloud_AuraScript);
+ public:
+ spell_dreamwalker_nightmare_cloud_AuraScript()
+ {
+ _instance = nullptr;
+ }
+
+ private:
bool Load() override
{
_instance = GetOwner()->GetInstanceScript();
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index c2007730cdc..22fa44541a1 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -1880,12 +1880,13 @@ class spell_frost_giant_death_plague : public SpellScriptLoader
{
PrepareSpellScript(spell_frost_giant_death_plague_SpellScript);
- bool Load() override
+ public:
+ spell_frost_giant_death_plague_SpellScript()
{
_failed = false;
- return true;
}
+ private:
// First effect
void CountTargets(std::list<WorldObject*>& targets)
{
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 4c45be9d24d..b9fa6617855 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -2459,6 +2459,13 @@ class spell_alexstrasza_gift_beam_visual : public SpellScriptLoader
{
PrepareAuraScript(spell_alexstrasza_gift_beam_visual_AuraScript);
+ public:
+ spell_alexstrasza_gift_beam_visual_AuraScript()
+ {
+ _alexstraszaGift = nullptr;
+ }
+
+ private:
bool Load() override
{
return GetCaster()->GetTypeId() == TYPEID_UNIT;
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
index 91a40d43f12..b7f2e23616b 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
@@ -40,7 +40,11 @@ public:
struct instance_nexus_InstanceMapScript : public InstanceScript
{
- instance_nexus_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_nexus_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+ }
uint32 m_auiEncounter[NUMBER_OF_ENCOUNTERS];
@@ -53,12 +57,6 @@ public:
std::string strInstData;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
- }
-
void OnCreatureCreate(Creature* creature) override
{
Map::PlayerList const &players = instance->GetPlayers();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index bd5b61e227f..261a6c96f77 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -1206,9 +1206,15 @@ class spell_algalon_big_bang : public SpellScriptLoader
{
PrepareSpellScript(spell_algalon_big_bang_SpellScript);
- bool Load() override
+ public:
+ spell_algalon_big_bang_SpellScript()
{
_targetCount = 0;
+ }
+
+ private:
+ bool Load() override
+ {
return GetCaster()->GetTypeId() == TYPEID_UNIT && GetCaster()->IsAIEnabled;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index ec42ba82f36..40c189a8da2 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -1688,12 +1688,13 @@ class spell_pursue : public SpellScriptLoader
{
PrepareSpellScript(spell_pursue_SpellScript);
- bool Load() override
+ public:
+ spell_pursue_SpellScript()
{
- _target = NULL;
- return true;
+ _target = nullptr;
}
+ private:
void FilterTargets(std::list<WorldObject*>& targets)
{
targets.remove_if(FlameLeviathanPursuedTargetSelector(GetCaster()));
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 880eeba206b..6156d423b89 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -1748,16 +1748,17 @@ class spell_mimiron_fire_search : public SpellScriptLoader
{
PrepareSpellScript(spell_mimiron_fire_search_SpellScript);
- bool Validate(SpellInfo const* /*spell*/) override
+ public:
+ spell_mimiron_fire_search_SpellScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_WATER_SPRAY))
- return false;
- return true;
+ _noTarget = false;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spell*/) override
{
- _noTarget = false;
+ if (!sSpellMgr->GetSpellInfo(SPELL_WATER_SPRAY))
+ return false;
return true;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index 016c0bff1e5..4f40abde5b6 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -60,7 +60,32 @@ class instance_ulduar : public InstanceMapScript
struct instance_ulduar_InstanceMapScript : public InstanceScript
{
- instance_ulduar_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { }
+ instance_ulduar_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ SetBossNumber(MAX_ENCOUNTER);
+
+ LoadDoorData(doorData);
+ LoadMinionData(minionData);
+
+ _algalonTimer = 61;
+ _maxArmorItemLevel = 0;
+ _maxWeaponItemLevel = 0;
+ TeamInInstance = 0;
+ HodirRareCacheData = 0;
+ ColossusData = 0;
+ elderCount = 0;
+ illusion = 0;
+ keepersCount = 0;
+ conSpeedAtory = false;
+ Unbroken = true;
+ IsDriveMeCrazyEligible = true;
+ _algalonSummoned = false;
+ _summonAlgalon = false;
+
+ memset(_summonObservationRingKeeper, 0, sizeof(_summonObservationRingKeeper));
+ memset(_summonYSKeeper, 0, sizeof(_summonYSKeeper));
+ }
// Creatures
ObjectGuid LeviathanGUID;
@@ -119,31 +144,6 @@ class instance_ulduar : public InstanceMapScript
bool Unbroken;
bool IsDriveMeCrazyEligible;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- SetBossNumber(MAX_ENCOUNTER);
- LoadDoorData(doorData);
- LoadMinionData(minionData);
- _algalonTimer = 61;
- _maxArmorItemLevel = 0;
- _maxWeaponItemLevel = 0;
- TeamInInstance = 0;
- HodirRareCacheData = 0;
- ColossusData = 0;
- elderCount = 0;
- illusion = 0;
- keepersCount = 0;
- conSpeedAtory = false;
- Unbroken = true;
- IsDriveMeCrazyEligible = true;
- _algalonSummoned = false;
- _summonAlgalon = false;
-
- memset(_summonObservationRingKeeper, 0, sizeof(_summonObservationRingKeeper));
- memset(_summonYSKeeper, 0, sizeof(_summonYSKeeper));
- }
-
void FillInitialWorldStates(WorldPacket& packet) override
{
packet << uint32(WORLD_STATE_ALGALON_TIMER_ENABLED) << uint32(_algalonTimer && _algalonTimer <= 60);
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
index c4312e08704..5b0e1f31bd7 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
@@ -204,7 +204,7 @@ public:
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
- if (me->HealthBelowPctDamaged(100 - HealthAmountMultipler * HealthAmountModifier, damage))
+ if (me->HealthBelowPctDamaged(100 - HealthAmountMultipler * HealthAmountModifier, damage) && !(damage >= me->GetHealth()))
{
uint8 Order = HealthAmountModifier - 1;
++HealthAmountModifier;
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
index b6c836eb0cd..151e199b749 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
@@ -225,12 +225,13 @@ class spell_koralon_meteor_fists_damage : public SpellScriptLoader
{
PrepareSpellScript(spell_koralon_meteor_fists_damage_SpellScript);
- bool Load() override
+ public:
+ spell_koralon_meteor_fists_damage_SpellScript()
{
_chainTargets = 0;
- return true;
}
+ private:
void FilterTargets(std::list<WorldObject*>& targets)
{
_chainTargets = targets.size();
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index cddf6ce3c25..1fdc98cd765 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -112,7 +112,34 @@ public:
struct instance_violet_hold_InstanceMapScript : public InstanceScript
{
- instance_violet_hold_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_violet_hold_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+
+ uiRemoveNpc = 0;
+
+ uiDoorIntegrity = 100;
+
+ uiWaveCount = 0;
+ uiLocation = urand(0, 5);
+ uiFirstBoss = 0;
+ uiSecondBoss = 0;
+ uiCountErekemGuards = 0;
+ uiCountActivationCrystals = 0;
+ uiCyanigosaEventPhase = 1;
+
+ uiActivationTimer = 5000;
+ uiDoorSpellTimer = 2000;
+ uiCyanigosaEventTimer = 3 * IN_MILLISECONDS;
+
+ bActive = false;
+ bIsDoorSpellCast = false;
+ bCrystalActivated = false;
+ defenseless = true;
+ uiMainEventPhase = NOT_STARTED;
+
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+ }
ObjectGuid uiMoragg;
ObjectGuid uiErekem;
@@ -168,35 +195,6 @@ public:
std::string str_data;
- void Initialize() override
- {
- SetHeaders(DataHeader);
-
- uiRemoveNpc = 0;
-
- uiDoorIntegrity = 100;
-
- uiWaveCount = 0;
- uiLocation = urand(0, 5);
- uiFirstBoss = 0;
- uiSecondBoss = 0;
- uiCountErekemGuards = 0;
- uiCountActivationCrystals = 0;
- uiCyanigosaEventPhase = 1;
-
- uiActivationTimer = 5000;
- uiDoorSpellTimer = 2000;
- uiCyanigosaEventTimer = 3*IN_MILLISECONDS;
-
- bActive = false;
- bIsDoorSpellCast = false;
- bCrystalActivated = false;
- defenseless = true;
- uiMainEventPhase = NOT_STARTED;
-
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
- }
-
bool IsEncounterInProgress() const override
{
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index e4cff7323b1..ec65aa26f17 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -812,12 +812,13 @@ class spell_close_rift : public SpellScriptLoader
{
PrepareAuraScript(spell_close_rift_AuraScript);
- bool Load() override
+ public:
+ spell_close_rift_AuraScript()
{
_counter = 0;
- return true;
}
+ private:
bool Validate(SpellInfo const* /*spell*/) override
{
return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT) != nullptr;
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
index 5f6fde8ad98..272e3042887 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.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
@@ -23,13 +22,9 @@ SDComment: Need more tuning of spell timers, it should not be as linear fight as
SDCategory: Auchindoun, Mana Tombs
EndScriptData */
-/* ContentData
-boss_nexusprince_shaffar
-npc_ethereal_beacon
-EndContentData */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
+#include "mana_tombs.h"
enum Yells
{
@@ -37,7 +32,7 @@ enum Yells
SAY_AGGRO = 1,
SAY_SLAY = 2,
SAY_SUMMON = 3,
- SAY_DEAD = 4,
+ SAY_DEAD = 4
};
enum Spells
@@ -66,326 +61,271 @@ enum Misc
NR_INITIAL_BEACONS = 3
};
-class boss_nexusprince_shaffar : public CreatureScript
+enum Events
{
-public:
- boss_nexusprince_shaffar() : CreatureScript("boss_nexusprince_shaffar") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new boss_nexusprince_shaffarAI(creature);
- }
-
- struct boss_nexusprince_shaffarAI : public ScriptedAI
- {
- boss_nexusprince_shaffarAI(Creature* creature) : ScriptedAI(creature), summons(me)
- {
- Initialize();
- HasTaunted = false;
- }
-
- void Initialize()
- {
- Blink_Timer = 1500;
- Beacon_Timer = 10000;
- FireBall_Timer = 8000;
- Frostbolt_Timer = 4000;
- FrostNova_Timer = 15000;
-
- CanBlink = false;
- }
-
- uint32 Blink_Timer;
- uint32 Beacon_Timer;
- uint32 FireBall_Timer;
- uint32 Frostbolt_Timer;
- uint32 FrostNova_Timer;
-
- SummonList summons;
+ EVENT_BLINK = 1,
+ EVENT_BEACON,
+ EVENT_FIREBALL,
+ EVENT_FROSTBOLT,
+ EVENT_FROST_NOVA
+};
- bool HasTaunted;
- bool CanBlink;
+class boss_nexusprince_shaffar : public CreatureScript
+{
+ public:
+ boss_nexusprince_shaffar() : CreatureScript("boss_nexusprince_shaffar") { }
- void Reset() override
+ struct boss_nexusprince_shaffarAI : public BossAI
{
- Initialize();
-
- float dist = 8.0f;
- float posX, posY, posZ, angle;
- me->GetHomePosition(posX, posY, posZ, angle);
+ boss_nexusprince_shaffarAI(Creature* creature) : BossAI(creature, DATA_NEXUSPRINCE_SHAFFAR)
+ {
+ _hasTaunted = false;
+ }
- me->SummonCreature(NPC_BEACON, posX - dist, posY - dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000);
- me->SummonCreature(NPC_BEACON, posX - dist, posY + dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000);
- me->SummonCreature(NPC_BEACON, posX + dist, posY, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000);
- }
+ void Reset() override
+ {
+ _Reset();
- void EnterEvadeMode() override
- {
- summons.DespawnAll();
- ScriptedAI::EnterEvadeMode();
- }
+ float dist = 8.0f;
+ float posX, posY, posZ, angle;
+ me->GetHomePosition(posX, posY, posZ, angle);
- void MoveInLineOfSight(Unit* who) override
+ me->SummonCreature(NPC_BEACON, posX - dist, posY - dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000);
+ me->SummonCreature(NPC_BEACON, posX - dist, posY + dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000);
+ me->SummonCreature(NPC_BEACON, posX + dist, posY, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000);
+ }
- {
- if (!HasTaunted && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f))
+ void MoveInLineOfSight(Unit* who) override
{
- Talk(SAY_INTRO);
- HasTaunted = true;
+ if (!_hasTaunted && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f))
+ {
+ Talk(SAY_INTRO);
+ _hasTaunted = true;
+ }
}
- }
- void EnterCombat(Unit* /*who*/) override
- {
- Talk(SAY_AGGRO);
-
- DoZoneInCombat();
- summons.DoZoneInCombat();
- }
-
- void JustSummoned(Creature* summoned) override
- {
- if (summoned->GetEntry() == NPC_BEACON)
+ void EnterCombat(Unit* /*who*/) override
{
- summoned->CastSpell(summoned, SPELL_ETHEREAL_BEACON_VISUAL, false);
+ Talk(SAY_AGGRO);
+ _EnterCombat();
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- summoned->AI()->AttackStart(target);
+ events.ScheduleEvent(EVENT_BEACON, 10000);
+ events.ScheduleEvent(EVENT_FIREBALL, 8000);
+ events.ScheduleEvent(EVENT_FROSTBOLT, 4000);
+ events.ScheduleEvent(EVENT_FROST_NOVA, 15000);
}
- summons.Summon(summoned);
- }
-
- void SummonedCreatureDespawn(Creature* summon) override
- {
- summons.Despawn(summon);
- }
-
- void KilledUnit(Unit* /*victim*/) override
- {
- Talk(SAY_SLAY);
- }
-
- void JustDied(Unit* /*killer*/) override
- {
- Talk(SAY_DEAD);
- summons.DespawnAll();
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- if (FrostNova_Timer <= diff)
+ void JustSummoned(Creature* summoned) override
{
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(true);
+ if (summoned->GetEntry() == NPC_BEACON)
+ {
+ summoned->CastSpell(summoned, SPELL_ETHEREAL_BEACON_VISUAL, false);
- DoCast(me, SPELL_FROSTNOVA);
- FrostNova_Timer = urand(17500, 25000);
- CanBlink = true;
- } else FrostNova_Timer -= diff;
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
+ summoned->AI()->AttackStart(target);
+ }
- if (Frostbolt_Timer <= diff)
- {
- DoCastVictim(SPELL_FROSTBOLT);
- Frostbolt_Timer = urand(4500, 6000);
- } else Frostbolt_Timer -= diff;
+ summons.Summon(summoned);
+ }
- if (FireBall_Timer <= diff)
+ void KilledUnit(Unit* victim) override
{
- DoCastVictim(SPELL_FIREBALL);
- FireBall_Timer = urand(4500, 6000);
- } else FireBall_Timer -= diff;
+ if (victim->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
+ }
- if (CanBlink)
+ void JustDied(Unit* /*killer*/) override
{
- if (Blink_Timer <= diff)
- {
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(true);
-
- //expire movement, will prevent from running right back to victim after cast
- //(but should MoveChase be used again at a certain time or should he not move?)
- if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
- me->GetMotionMaster()->MovementExpired();
-
- DoCast(me, SPELL_BLINK);
- Blink_Timer = urand(1000, 2500);
- CanBlink = false;
- } else Blink_Timer -= diff;
+ Talk(SAY_DEAD);
+ _JustDied();
}
- if (Beacon_Timer <= diff)
+ void ExecuteEvent(uint32 eventId) override
{
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(true);
+ switch (eventId)
+ {
+ case EVENT_BLINK:
+ if (me->IsNonMeleeSpellCast(false))
+ me->InterruptNonMeleeSpells(true);
- if (!urand(0, 3))
- Talk(SAY_SUMMON);
+ // expire movement, will prevent from running right back to victim after cast
+ // (but should MoveChase be used again at a certain time or should he not move?)
+ if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE)
+ me->GetMotionMaster()->MovementExpired();
- DoCast(me, SPELL_ETHEREAL_BEACON, true);
+ DoCast(me, SPELL_BLINK);
+ break;
+ case EVENT_BEACON:
+ if (!urand(0, 3))
+ Talk(SAY_SUMMON);
- Beacon_Timer = 10000;
- } else Beacon_Timer -= diff;
+ DoCast(me, SPELL_ETHEREAL_BEACON, true);
+ events.ScheduleEvent(EVENT_BEACON, 10000);
+ break;
+ case EVENT_FIREBALL:
+ DoCastVictim(SPELL_FROSTBOLT);
+ events.ScheduleEvent(EVENT_FIREBALL, urand(4500, 6000));
+ break;
+ case EVENT_FROSTBOLT:
+ DoCastVictim(SPELL_FROSTBOLT);
+ events.ScheduleEvent(EVENT_FROSTBOLT, urand(4500, 6000));
+ break;
+ case EVENT_FROST_NOVA:
+ DoCast(me, SPELL_FROSTNOVA);
+ events.ScheduleEvent(EVENT_FROST_NOVA, urand(17500, 25000));
+ events.ScheduleEvent(EVENT_BLINK, 1500);
+ break;
+ default:
+ break;
+ }
+ }
- DoMeleeAttackIfReady();
+ private:
+ bool _hasTaunted;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetManaTombsAI<boss_nexusprince_shaffarAI>(creature);
}
- };
+};
+enum EtherealBeacon
+{
+ EVENT_APPRENTICE = 1,
+ EVENT_ARCANE_BOLT
};
class npc_ethereal_beacon : public CreatureScript
{
-public:
- npc_ethereal_beacon() : CreatureScript("npc_ethereal_beacon") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_ethereal_beaconAI(creature);
- }
+ public:
+ npc_ethereal_beacon() : CreatureScript("npc_ethereal_beacon") { }
- struct npc_ethereal_beaconAI : public ScriptedAI
- {
- npc_ethereal_beaconAI(Creature* creature) : ScriptedAI(creature)
+ struct npc_ethereal_beaconAI : public ScriptedAI
{
- Initialize();
- }
+ npc_ethereal_beaconAI(Creature* creature) : ScriptedAI(creature) { }
- void Initialize()
- {
- Apprentice_Timer = DUNGEON_MODE(20000, 10000);
- ArcaneBolt_Timer = 1000;
- Check_Timer = 1000;
- }
-
- uint32 Apprentice_Timer;
- uint32 ArcaneBolt_Timer;
- uint32 Check_Timer;
+ void Reset() override
+ {
+ _events.Reset();
+ }
- void KillSelf()
- {
- me->Kill(me);
- }
+ void EnterCombat(Unit* who) override
+ {
+ if (Creature* shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100.0f))
+ if (!shaffar->IsInCombat())
+ shaffar->AI()->AttackStart(who);
- void Reset() override
- {
- Initialize();
- }
+ _events.ScheduleEvent(EVENT_APPRENTICE, DUNGEON_MODE(20000, 10000));
+ _events.ScheduleEvent(EVENT_ARCANE_BOLT, 1000);
+ }
- void EnterCombat(Unit* who) override
- {
- // Send Shaffar to fight
- Creature* Shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100);
- if (!Shaffar || Shaffar->isDead())
+ void JustSummoned(Creature* summoned) override
{
- KillSelf();
- return;
+ summoned->AI()->AttackStart(me->GetVictim());
}
- if (!Shaffar->IsInCombat())
- Shaffar->AI()->AttackStart(who);
- }
- void JustSummoned(Creature* summoned) override
- {
- summoned->AI()->AttackStart(me->GetVictim());
- }
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ _events.Update(diff);
- if (Check_Timer <= diff)
- {
- Creature* Shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100);
- if (!Shaffar || Shaffar->isDead() || !Shaffar->IsInCombat())
- {
- KillSelf();
+ if (me->HasUnitState(UNIT_STATE_CASTING))
return;
- }
- Check_Timer = 1000;
- } else Check_Timer -= diff;
- if (ArcaneBolt_Timer <= diff)
- {
- DoCastVictim(SPELL_ARCANE_BOLT);
- ArcaneBolt_Timer = urand(2000, 4500);
- } else ArcaneBolt_Timer -= diff;
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_APPRENTICE:
+ DoCast(me, SPELL_ETHEREAL_APPRENTICE, true);
+ me->DespawnOrUnsummon();
+ break;
+ case EVENT_ARCANE_BOLT:
+ DoCastVictim(SPELL_ARCANE_BOLT);
+ _events.ScheduleEvent(EVENT_ARCANE_BOLT, urand(2000, 4500));
+ break;
+ default:
+ break;
+ }
+ }
+ }
- if (Apprentice_Timer <= diff)
- {
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(true);
+ private:
+ EventMap _events;
+ };
- DoCast(me, SPELL_ETHEREAL_APPRENTICE, true);
- me->DespawnOrUnsummon();
- return;
- } else Apprentice_Timer -= diff;
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return new npc_ethereal_beaconAI(creature);
}
- };
-
};
-enum Ethereal
+enum EtherealApprentice
{
SPELL_ETHEREAL_APPRENTICE_FIREBOLT = 32369,
- SPELL_ETHEREAL_APPRENTICE_FROSTBOLT = 32370
+ SPELL_ETHEREAL_APPRENTICE_FROSTBOLT = 32370,
+ EVENT_ETHEREAL_APPRENTICE_FIREBOLT = 1,
+ EVENT_ETHEREAL_APPRENTICE_FROSTBOLT
};
class npc_ethereal_apprentice : public CreatureScript
{
-public:
- npc_ethereal_apprentice() : CreatureScript("npc_ethereal_apprentice") { }
+ public:
+ npc_ethereal_apprentice() : CreatureScript("npc_ethereal_apprentice") { }
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_ethereal_apprenticeAI(creature);
- }
-
- struct npc_ethereal_apprenticeAI : public ScriptedAI
- {
- npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature)
+ struct npc_ethereal_apprenticeAI : public ScriptedAI
{
- Initialize();
- }
+ npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature) { }
- void Initialize()
- {
- Cast_Timer = 3000;
- isFireboltTurn = true;
- }
+ void Reset() override
+ {
+ _events.Reset();
+ }
- uint32 Cast_Timer;
+ void EnterCombat(Unit* /*who*/) override
+ {
+ _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3000);
+ }
- bool isFireboltTurn;
+ void UpdateAI(uint32 diff) override
+ {
+ if (!UpdateVictim())
+ return;
- void Reset() override
- {
- Initialize();
- }
+ _events.Update(diff);
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- if (Cast_Timer <= diff)
- {
- if (isFireboltTurn)
+ while (uint32 eventId = _events.ExecuteEvent())
{
- DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true);
- isFireboltTurn = false;
- }else{
- DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true);
- isFireboltTurn = true;
+ switch (eventId)
+ {
+ case EVENT_ETHEREAL_APPRENTICE_FIREBOLT:
+ DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true);
+ _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FROSTBOLT, 3000);
+ break;
+ case EVENT_ETHEREAL_APPRENTICE_FROSTBOLT:
+ DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true);
+ _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3000);
+ break;
+ default:
+ break;
+ }
}
- Cast_Timer = 3000;
- } else Cast_Timer -= diff;
- }
- };
+ }
+ private:
+ EventMap _events;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return new npc_ethereal_apprenticeAI(creature);
+ }
};
enum Yor
@@ -407,7 +347,7 @@ public:
void EnterCombat(Unit* /*who*/) override
{
- events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000));
+ _events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000));
}
void UpdateAI(uint32 diff) override
@@ -415,26 +355,27 @@ public:
if (!UpdateVictim())
return;
- events.Update(diff);
+ _events.Update(diff);
- while (uint32 eventId = events.ExecuteEvent())
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DOUBLE_BREATH:
if (me->IsWithinDist(me->GetVictim(), ATTACK_DISTANCE))
DoCastVictim(SPELL_DOUBLE_BREATH);
- events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000));
+ _events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000));
break;
default:
break;
}
}
+
DoMeleeAttackIfReady();
}
private:
- EventMap events;
+ EventMap _events;
};
CreatureAI* GetAI(Creature* creature) const override
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
index 3fb090ab94c..ed353b359c9 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
@@ -88,10 +88,6 @@ class instance_serpent_shrine : public InstanceMapScript
instance_serpentshrine_cavern_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
- }
-
- void Initialize() override
- {
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
StrangePool = 0;
@@ -106,7 +102,6 @@ class instance_serpent_shrine : public InstanceMapScript
FrenzySpawnTimer = 2000;
DoSpawnFrenzy = false;
TrashCount = 0;
-
}
bool IsEncounterInProgress() const override
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
index 1d9eb81b1e7..e632b2aff3d 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
@@ -66,6 +66,7 @@ class boss_kelidan_the_breaker : public CreatureScript
boss_kelidan_the_breakerAI(Creature* creature) : BossAI(creature, DATA_KELIDAN_THE_BREAKER)
{
Initialize();
+ Firenova_Timer = 0;
}
void Initialize()
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
index 7b8eeb8834d..d2ef0857b23 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
@@ -37,10 +37,6 @@ class instance_ramparts : public InstanceMapScript
instance_ramparts_InstanceMapScript(Map* map) : InstanceScript(map)
{
spawned = false;
- }
-
- void Initialize() override
- {
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
index db0159d1a2d..a8d840b778a 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
@@ -54,6 +54,11 @@ class instance_magtheridons_lair : public InstanceMapScript
{
instance_magtheridons_lair_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+
+ CageTimer = 0;
+ RespawnTimer = 0;
}
uint32 m_auiEncounter[MAX_ENCOUNTER];
@@ -66,15 +71,6 @@ class instance_magtheridons_lair : public InstanceMapScript
uint32 CageTimer;
uint32 RespawnTimer;
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
-
- CageTimer = 0;
- RespawnTimer = 0;
- }
-
bool IsEncounterInProgress() const override
{
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
index 838297aa21f..208b7c36a5f 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
@@ -39,9 +39,7 @@ class instance_shattered_halls : public InstanceMapScript
struct instance_shattered_halls_InstanceMapScript : public InstanceScript
{
- instance_shattered_halls_InstanceMapScript(Map* map) : InstanceScript(map) { }
-
- void Initialize() override
+ instance_shattered_halls_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
index 2234547c76a..ebe9ac9865a 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
@@ -46,7 +46,14 @@ class instance_the_eye : public InstanceMapScript
struct instance_the_eye_InstanceMapScript : public InstanceScript
{
- instance_the_eye_InstanceMapScript(Map* map) : InstanceScript(map) { }
+ instance_the_eye_InstanceMapScript(Map* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+
+ KaelthasEventPhase = 0;
+ AlarEventPhase = 0;
+ }
ObjectGuid ThaladredTheDarkener;
ObjectGuid LordSanguinar;
@@ -60,15 +67,6 @@ class instance_the_eye : public InstanceMapScript
uint32 m_auiEncounter[MAX_ENCOUNTER];
- void Initialize() override
- {
- SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
-
- KaelthasEventPhase = 0;
- AlarEventPhase = 0;
- }
-
bool IsEncounterInProgress() const override
{
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index 10a03b76fc9..e6f32a07538 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -218,7 +218,21 @@ public:
struct npc_mature_netherwing_drakeAI : public ScriptedAI
{
- npc_mature_netherwing_drakeAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_mature_netherwing_drakeAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ uiPlayerGUID.Clear();
+
+ bCanEat = false;
+ bIsEating = false;
+
+ EatTimer = 5000;
+ CastTimer = 5000;
+ }
ObjectGuid uiPlayerGUID;
@@ -230,13 +244,7 @@ public:
void Reset() override
{
- uiPlayerGUID.Clear();
-
- bCanEat = false;
- bIsEating = false;
-
- EatTimer = 5000;
- CastTimer = 5000;
+ Initialize();
}
void SpellHit(Unit* pCaster, SpellInfo const* spell) override
@@ -486,7 +494,17 @@ public:
struct npc_dragonmaw_peonAI : public ScriptedAI
{
- npc_dragonmaw_peonAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_dragonmaw_peonAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ PlayerGUID.Clear();
+ Tapped = false;
+ PoisonTimer = 0;
+ }
ObjectGuid PlayerGUID;
bool Tapped;
@@ -494,9 +512,7 @@ public:
void Reset() override
{
- PlayerGUID.Clear();
- Tapped = false;
- PoisonTimer = 0;
+ Initialize();
}
void SpellHit(Unit* caster, const SpellInfo* spell) override
@@ -720,7 +736,21 @@ public:
struct npc_overlord_morghorAI : public ScriptedAI
{
- npc_overlord_morghorAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_overlord_morghorAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ PlayerGUID.Clear();
+ IllidanGUID.Clear();
+
+ ConversationTimer = 0;
+ Step = 0;
+
+ Event = false;
+ }
ObjectGuid PlayerGUID;
ObjectGuid IllidanGUID;
@@ -732,13 +762,7 @@ public:
void Reset() override
{
- PlayerGUID.Clear();
- IllidanGUID.Clear();
-
- ConversationTimer = 0;
- Step = 0;
-
- Event = false;
+ Initialize();
me->SetUInt32Value(UNIT_NPC_FLAGS, 2);
}
@@ -1264,7 +1288,22 @@ public:
struct npc_torloth_the_magnificentAI : public ScriptedAI
{
- npc_torloth_the_magnificentAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_torloth_the_magnificentAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ SpellTimer1 = 0;
+ SpellTimer2 = 0;
+ SpellTimer3 = 0;
+ }
+
+ void Initialize()
+ {
+ AnimationTimer = 4000;
+ AnimationCount = 0;
+ LordIllidanGUID.Clear();
+ AggroTargetGUID.Clear();
+ Timers = false;
+ }
uint32 AnimationTimer, SpellTimer1, SpellTimer2, SpellTimer3;
@@ -1277,11 +1316,7 @@ public:
void Reset() override
{
- AnimationTimer = 4000;
- AnimationCount = 0;
- LordIllidanGUID.Clear();
- AggroTargetGUID.Clear();
- Timers = false;
+ Initialize();
me->AddUnitState(UNIT_STATE_ROOT);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -1569,7 +1604,19 @@ public:
struct npc_illidari_spawnAI : public ScriptedAI
{
- npc_illidari_spawnAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_illidari_spawnAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ SpellTimer1 = 0;
+ SpellTimer2 = 0;
+ SpellTimer3 = 0;
+ }
+
+ void Initialize()
+ {
+ LordIllidanGUID.Clear();
+ Timers = false;
+ }
ObjectGuid LordIllidanGUID;
uint32 SpellTimer1, SpellTimer2, SpellTimer3;
@@ -1577,8 +1624,7 @@ public:
void Reset() override
{
- LordIllidanGUID.Clear();
- Timers = false;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
diff --git a/src/server/scripts/Outland/zone_shattrath_city.cpp b/src/server/scripts/Outland/zone_shattrath_city.cpp
index c2e7df19ca1..a1ae917cbba 100644
--- a/src/server/scripts/Outland/zone_shattrath_city.cpp
+++ b/src/server/scripts/Outland/zone_shattrath_city.cpp
@@ -87,15 +87,19 @@ public:
{
npc_raliq_the_drunkAI(Creature* creature) : ScriptedAI(creature)
{
- m_uiNormFaction = creature->getFaction();
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Uppercut_Timer = 5000;
}
- uint32 m_uiNormFaction;
uint32 Uppercut_Timer;
void Reset() override
{
- Uppercut_Timer = 5000;
+ Initialize();
me->RestoreFaction();
}
@@ -161,13 +165,21 @@ public:
struct npc_salsalabimAI : public ScriptedAI
{
- npc_salsalabimAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_salsalabimAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ MagneticPull_Timer = 15000;
+ }
uint32 MagneticPull_Timer;
void Reset() override
{
- MagneticPull_Timer = 15000;
+ Initialize();
me->RestoreFaction();
}
diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp
index 223a144e33b..a019555d3c9 100644
--- a/src/server/scripts/Outland/zone_terokkar_forest.cpp
+++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp
@@ -68,7 +68,17 @@ public:
struct npc_unkor_the_ruthlessAI : public ScriptedAI
{
- npc_unkor_the_ruthlessAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_unkor_the_ruthlessAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ CanDoQuest = false;
+ UnkorUnfriendly_Timer = 0;
+ Pulverize_Timer = 3000;
+ }
bool CanDoQuest;
uint32 UnkorUnfriendly_Timer;
@@ -76,9 +86,7 @@ public:
void Reset() override
{
- CanDoQuest = false;
- UnkorUnfriendly_Timer = 0;
- Pulverize_Timer = 3000;
+ Initialize();
me->SetStandState(UNIT_STAND_STATE_STAND);
me->setFaction(FACTION_HOSTILE);
}
@@ -397,9 +405,17 @@ public:
{
npc_floonAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
m_uiNormFaction = creature->getFaction();
}
+ void Initialize()
+ {
+ Silence_Timer = 2000;
+ Frostbolt_Timer = 4000;
+ FrostNova_Timer = 9000;
+ }
+
uint32 m_uiNormFaction;
uint32 Silence_Timer;
uint32 Frostbolt_Timer;
@@ -407,9 +423,7 @@ public:
void Reset() override
{
- Silence_Timer = 2000;
- Frostbolt_Timer = 4000;
- FrostNova_Timer = 9000;
+ Initialize();
if (me->getFaction() != m_uiNormFaction)
me->setFaction(m_uiNormFaction);
}
diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp
index 1aa01d7ac7c..638538872e8 100644
--- a/src/server/scripts/Spells/spell_dk.cpp
+++ b/src/server/scripts/Spells/spell_dk.cpp
@@ -78,6 +78,13 @@ class spell_dk_anti_magic_shell_raid : public SpellScriptLoader
{
PrepareAuraScript(spell_dk_anti_magic_shell_raid_AuraScript);
+ public:
+ spell_dk_anti_magic_shell_raid_AuraScript()
+ {
+ absorbPct = 0;
+ }
+
+ private:
uint32 absorbPct;
bool Load() override
@@ -120,6 +127,14 @@ class spell_dk_anti_magic_shell_self : public SpellScriptLoader
{
PrepareAuraScript(spell_dk_anti_magic_shell_self_AuraScript);
+ public:
+ spell_dk_anti_magic_shell_self_AuraScript()
+ {
+ absorbPct = 0;
+ hpPct = 0;
+ }
+
+ private:
uint32 absorbPct, hpPct;
bool Load() override
{
@@ -177,6 +192,13 @@ class spell_dk_anti_magic_zone : public SpellScriptLoader
{
PrepareAuraScript(spell_dk_anti_magic_zone_AuraScript);
+ public:
+ spell_dk_anti_magic_zone_AuraScript()
+ {
+ absorbPct = 0;
+ }
+
+ private:
uint32 absorbPct;
bool Load() override
@@ -228,6 +250,13 @@ class spell_dk_blood_boil : public SpellScriptLoader
{
PrepareSpellScript(spell_dk_blood_boil_SpellScript);
+ public:
+ spell_dk_blood_boil_SpellScript()
+ {
+ _executed = false;
+ }
+
+ private:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_DK_BLOOD_BOIL_TRIGGERED))
@@ -237,7 +266,6 @@ class spell_dk_blood_boil : public SpellScriptLoader
bool Load() override
{
- _executed = false;
return GetCaster()->GetTypeId() == TYPEID_PLAYER && GetCaster()->getClass() == CLASS_DEATH_KNIGHT;
}
@@ -274,16 +302,17 @@ class spell_dk_blood_gorged : public SpellScriptLoader
{
PrepareAuraScript(spell_dk_blood_gorged_AuraScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
+ public:
+ spell_dk_blood_gorged_AuraScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DK_BLOOD_GORGED_HEAL))
- return false;
- return true;
+ _procTarget = nullptr;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- _procTarget = NULL;
+ if (!sSpellMgr->GetSpellInfo(SPELL_DK_BLOOD_GORGED_HEAL))
+ return false;
return true;
}
@@ -873,7 +902,12 @@ class spell_dk_improved_frost_presence : public SpellScriptLoader
{
Unit* target = GetTarget();
if ((target->HasAura(SPELL_DK_BLOOD_PRESENCE) || target->HasAura(SPELL_DK_UNHOLY_PRESENCE)) && !target->HasAura(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), target, true, NULL, aurEff);
+ {
+ CustomSpellValues val;
+ val.AddSpellMod(SPELLVALUE_BASE_POINT0, aurEff->GetAmount());
+ val.AddSpellMod(SPELLVALUE_BASE_POINT1, aurEff->GetAmount());
+ target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, val, target, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ }
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1111,7 +1145,12 @@ class spell_dk_presence : public SpellScriptLoader
Unit* target = GetTarget();
if (AuraEffect const* impAurEff = target->GetAuraEffectOfRankedSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_R1, EFFECT_0))
if (!target->HasAura(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, impAurEff->GetAmount(), target, true, NULL, aurEff);
+ {
+ CustomSpellValues val;
+ val.AddSpellMod(SPELLVALUE_BASE_POINT0, impAurEff->GetAmount());
+ val.AddSpellMod(SPELLVALUE_BASE_POINT1, impAurEff->GetAmount());
+ target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, val, target, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ }
}
void HandleImprovedUnholyPresence(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -1182,6 +1221,14 @@ class spell_dk_raise_dead : public SpellScriptLoader
{
PrepareSpellScript(spell_dk_raise_dead_SpellScript);
+ public:
+ spell_dk_raise_dead_SpellScript()
+ {
+ _result = SPELL_CAST_OK;
+ _corpse = false;
+ }
+
+ private:
bool Validate(SpellInfo const* spellInfo) override
{
if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_1].CalcValue())
@@ -1194,8 +1241,6 @@ class spell_dk_raise_dead : public SpellScriptLoader
bool Load() override
{
- _result = SPELL_CAST_OK;
- _corpse = false;
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
@@ -1377,14 +1422,16 @@ class spell_dk_scourge_strike : public SpellScriptLoader
class spell_dk_scourge_strike_SpellScript : public SpellScript
{
PrepareSpellScript(spell_dk_scourge_strike_SpellScript);
- float multiplier;
- bool Load() override
+ public:
+ spell_dk_scourge_strike_SpellScript()
{
multiplier = 1.0f;
- return true;
}
+ private:
+ float multiplier;
+
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_DK_SCOURGE_STRIKE_TRIGGERED))
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index 9c04aaa7578..7049ad90a27 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -746,6 +746,13 @@ class spell_dru_savage_defense : public SpellScriptLoader
{
PrepareAuraScript(spell_dru_savage_defense_AuraScript);
+ public:
+ spell_dru_savage_defense_AuraScript()
+ {
+ absorbPct = 0;
+ }
+
+ private:
uint32 absorbPct;
bool Load() override
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index db8a9a5ace2..225920aa2dc 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -47,6 +47,13 @@ class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader
{
PrepareAuraScript(spell_gen_absorb0_hitlimit1_AuraScript);
+ public:
+ spell_gen_absorb0_hitlimit1_AuraScript()
+ {
+ limit = 0;
+ }
+
+ private:
uint32 limit;
bool Load() override
@@ -849,6 +856,13 @@ class spell_gen_clone_weapon_aura : public SpellScriptLoader
{
PrepareAuraScript(spell_gen_clone_weapon_auraScript);
+ public:
+ spell_gen_clone_weapon_auraScript()
+ {
+ prevItem = 0;
+ }
+
+ private:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_COPY_WEAPON_AURA) ||
@@ -861,12 +875,6 @@ class spell_gen_clone_weapon_aura : public SpellScriptLoader
return true;
}
- bool Load() override
- {
- prevItem = 0;
- return true;
- }
-
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* caster = GetCaster();
@@ -1409,9 +1417,15 @@ class spell_gen_dungeon_credit : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_dungeon_credit_SpellScript);
- bool Load() override
+ public:
+ spell_gen_dungeon_credit_SpellScript()
{
_handled = false;
+ }
+
+ private:
+ bool Load() override
+ {
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
@@ -2240,11 +2254,17 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader
{
PrepareAuraScript(spell_gen_on_tournament_mount_AuraScript);
+ public:
+ spell_gen_on_tournament_mount_AuraScript()
+ {
+ _pennantSpellId = 0;
+ }
+
+ private:
uint32 _pennantSpellId;
bool Load() override
{
- _pennantSpellId = 0;
return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp
index 85bf85fa2d2..e43249ff8aa 100644
--- a/src/server/scripts/Spells/spell_holiday.cpp
+++ b/src/server/scripts/Spells/spell_holiday.cpp
@@ -301,12 +301,9 @@ class spell_pilgrims_bounty_buff_food : public SpellScriptLoader
uint32 const _triggeredSpellId;
public:
- spell_pilgrims_bounty_buff_food_AuraScript(uint32 triggeredSpellId) : AuraScript(), _triggeredSpellId(triggeredSpellId) { }
-
- bool Load() override
+ spell_pilgrims_bounty_buff_food_AuraScript(uint32 triggeredSpellId) : AuraScript(), _triggeredSpellId(triggeredSpellId)
{
_handled = false;
- return true;
}
void HandleTriggerSpell(AuraEffect const* /*aurEff*/)
@@ -444,6 +441,365 @@ class spell_winter_veil_px_238_winter_wondervolt : public SpellScriptLoader
}
};
+enum RamBlaBla
+{
+ SPELL_GIDDYUP = 42924,
+ SPELL_RENTAL_RACING_RAM = 43883,
+ SPELL_RENTAL_RACING_RAM_AURA = 42146,
+ SPELL_RAM_LEVEL_NEUTRAL = 43310,
+ SPELL_RAM_TROT = 42992,
+ SPELL_RAM_CANTER = 42993,
+ SPELL_RAM_GALLOP = 42994,
+ SPELL_RAM_FATIGUE = 43052,
+ SPELL_EXHAUSTED_RAM = 43332,
+
+ // Quest
+ SPELL_BREWFEST_QUEST_SPEED_BUNNY_GREEN = 43345,
+ SPELL_BREWFEST_QUEST_SPEED_BUNNY_YELLOW = 43346,
+ SPELL_BREWFEST_QUEST_SPEED_BUNNY_RED = 43347
+};
+
+// 42924 - Giddyup!
+class spell_brewfest_giddyup : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_giddyup() : SpellScriptLoader("spell_brewfest_giddyup") { }
+
+ class spell_brewfest_giddyup_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_brewfest_giddyup_AuraScript);
+
+ void OnChange(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ if (!target->HasAura(SPELL_RENTAL_RACING_RAM))
+ {
+ target->RemoveAura(GetId());
+ return;
+ }
+
+ if (target->HasAura(SPELL_EXHAUSTED_RAM))
+ return;
+
+ switch (GetStackAmount())
+ {
+ case 1: // green
+ target->RemoveAura(SPELL_RAM_LEVEL_NEUTRAL);
+ target->RemoveAura(SPELL_RAM_CANTER);
+ target->CastSpell(target, SPELL_RAM_TROT, true);
+ break;
+ case 6: // yellow
+ target->RemoveAura(SPELL_RAM_TROT);
+ target->RemoveAura(SPELL_RAM_GALLOP);
+ target->CastSpell(target, SPELL_RAM_CANTER, true);
+ break;
+ case 11: // red
+ target->RemoveAura(SPELL_RAM_CANTER);
+ target->CastSpell(target, SPELL_RAM_GALLOP, true);
+ break;
+ default:
+ break;
+ }
+
+ if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEFAULT)
+ {
+ target->RemoveAura(SPELL_RAM_TROT);
+ target->CastSpell(target, SPELL_RAM_LEVEL_NEUTRAL, true);
+ }
+ }
+
+ void OnPeriodic(AuraEffect const* /*aurEff*/)
+ {
+ GetTarget()->RemoveAuraFromStack(GetId());
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_brewfest_giddyup_AuraScript::OnChange, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
+ OnEffectRemove += AuraEffectRemoveFn(spell_brewfest_giddyup_AuraScript::OnChange, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_brewfest_giddyup_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_brewfest_giddyup_AuraScript();
+ }
+};
+
+// 43310 - Ram Level - Neutral
+// 42992 - Ram - Trot
+// 42993 - Ram - Canter
+// 42994 - Ram - Gallop
+class spell_brewfest_ram : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_ram() : SpellScriptLoader("spell_brewfest_ram") { }
+
+ class spell_brewfest_ram_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_brewfest_ram_AuraScript);
+
+ void OnPeriodic(AuraEffect const* aurEff)
+ {
+ Unit* target = GetTarget();
+ if (target->HasAura(SPELL_EXHAUSTED_RAM))
+ return;
+
+ switch (GetId())
+ {
+ case SPELL_RAM_LEVEL_NEUTRAL:
+ if (Aura* aura = target->GetAura(SPELL_RAM_FATIGUE))
+ aura->ModStackAmount(-4);
+ break;
+ case SPELL_RAM_TROT: // green
+ if (Aura* aura = target->GetAura(SPELL_RAM_FATIGUE))
+ aura->ModStackAmount(-2);
+ if (aurEff->GetTickNumber() == 4)
+ target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_GREEN, true);
+ break;
+ case SPELL_RAM_CANTER:
+ target->CastCustomSpell(SPELL_RAM_FATIGUE, SPELLVALUE_AURA_STACK, 1, target, TRIGGERED_FULL_MASK);
+ if (aurEff->GetTickNumber() == 8)
+ target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_YELLOW, true);
+ break;
+ case SPELL_RAM_GALLOP:
+ target->CastCustomSpell(SPELL_RAM_FATIGUE, SPELLVALUE_AURA_STACK, target->HasAura(SPELL_RAM_FATIGUE) ? 4 : 5 /*Hack*/, target, TRIGGERED_FULL_MASK);
+ if (aurEff->GetTickNumber() == 8)
+ target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_RED, true);
+ break;
+ default:
+ break;
+ }
+
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_brewfest_ram_AuraScript::OnPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_brewfest_ram_AuraScript();
+ }
+};
+
+// 43052 - Ram Fatigue
+class spell_brewfest_ram_fatigue : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_ram_fatigue() : SpellScriptLoader("spell_brewfest_ram_fatigue") { }
+
+ class spell_brewfest_ram_fatigue_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_brewfest_ram_fatigue_AuraScript);
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+
+ if (GetStackAmount() == 101)
+ {
+ target->RemoveAura(SPELL_RAM_LEVEL_NEUTRAL);
+ target->RemoveAura(SPELL_RAM_TROT);
+ target->RemoveAura(SPELL_RAM_CANTER);
+ target->RemoveAura(SPELL_RAM_GALLOP);
+ target->RemoveAura(SPELL_GIDDYUP);
+
+ target->CastSpell(target, SPELL_EXHAUSTED_RAM, true);
+ }
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_brewfest_ram_fatigue_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_brewfest_ram_fatigue_AuraScript();
+ }
+};
+
+// 43450 - Brewfest - apple trap - friendly DND
+class spell_brewfest_apple_trap : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_apple_trap() : SpellScriptLoader("spell_brewfest_apple_trap") { }
+
+ class spell_brewfest_apple_trap_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_brewfest_apple_trap_AuraScript);
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAura(SPELL_RAM_FATIGUE);
+ }
+
+ void Register() override
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_brewfest_apple_trap_AuraScript::OnApply, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_brewfest_apple_trap_AuraScript();
+ }
+};
+
+// 43332 - Exhausted Ram
+class spell_brewfest_exhausted_ram : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_exhausted_ram() : SpellScriptLoader("spell_brewfest_exhausted_ram") { }
+
+ class spell_brewfest_exhausted_ram_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_brewfest_exhausted_ram_AuraScript);
+
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_RAM_LEVEL_NEUTRAL, true);
+ }
+
+ void Register() override
+ {
+ OnEffectRemove += AuraEffectApplyFn(spell_brewfest_exhausted_ram_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_MOD_DECREASE_SPEED, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_brewfest_exhausted_ram_AuraScript();
+ }
+};
+
+// 43714 - Brewfest - Relay Race - Intro - Force - Player to throw- DND
+class spell_brewfest_relay_race_intro_force_player_to_throw : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_relay_race_intro_force_player_to_throw() : SpellScriptLoader("spell_brewfest_relay_race_intro_force_player_to_throw") { }
+
+ class spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript);
+
+ void HandleForceCast(SpellEffIndex effIndex)
+ {
+ PreventHitDefaultEffect(effIndex);
+ // All this spells trigger a spell that requires reagents; if the
+ // triggered spell is cast as "triggered", reagents are not consumed
+ GetHitUnit()->CastSpell((Unit*)NULL, GetSpellInfo()->Effects[effIndex].TriggerSpell, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST));
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript::HandleForceCast, EFFECT_0, SPELL_EFFECT_FORCE_CAST);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript();
+ }
+};
+
+// 43876 - Dismount Ram
+class spell_brewfest_dismount_ram : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_dismount_ram() : SpellScriptLoader("spell_brewfest_dismount_ram") { }
+
+ class spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->RemoveAura(SPELL_RENTAL_RACING_RAM);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript();
+ }
+};
+
+enum RamBlub
+{
+ QUEST_BARK_FOR_DROHNS_DISTILLERY = 11407,
+ QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY = 11408,
+
+ SAY_DROHN_DISTILLERY_1 = 23520,
+ SAY_DROHN_DISTILLERY_2 = 23521,
+ SAY_DROHN_DISTILLERY_3 = 23522,
+ SAY_DROHN_DISTILLERY_4 = 23523,
+
+ SAY_TCHALIS_VOODOO_1 = 23524,
+ SAY_TCHALIS_VOODOO_2 = 23525,
+ SAY_TCHALIS_VOODOO_3 = 23526,
+ SAY_TCHALIS_VOODOO_4 = 23527
+};
+
+// 43259 Brewfest - Barker Bunny 1
+// 43260 Brewfest - Barker Bunny 2
+// 43261 Brewfest - Barker Bunny 3
+// 43262 Brewfest - Barker Bunny 4
+class spell_brewfest_barker_bunny : public SpellScriptLoader
+{
+ public:
+ spell_brewfest_barker_bunny() : SpellScriptLoader("spell_brewfest_barker_bunny") { }
+
+ class spell_brewfest_barker_bunny_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_brewfest_barker_bunny_AuraScript);
+
+ bool Load() override
+ {
+ return GetUnitOwner()->GetTypeId() == TYPEID_PLAYER;
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Player* target = GetTarget()->ToPlayer();
+
+ uint32 BroadcastTextId = 0;
+
+ if (target->GetQuestStatus(QUEST_BARK_FOR_DROHNS_DISTILLERY) == QUEST_STATUS_INCOMPLETE ||
+ target->GetQuestStatus(QUEST_BARK_FOR_DROHNS_DISTILLERY) == QUEST_STATUS_COMPLETE)
+ BroadcastTextId = RAND(SAY_DROHN_DISTILLERY_1, SAY_DROHN_DISTILLERY_2, SAY_DROHN_DISTILLERY_3, SAY_DROHN_DISTILLERY_4);
+
+ if (target->GetQuestStatus(QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY) == QUEST_STATUS_INCOMPLETE ||
+ target->GetQuestStatus(QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY) == QUEST_STATUS_COMPLETE)
+ BroadcastTextId = RAND(SAY_TCHALIS_VOODOO_1, SAY_TCHALIS_VOODOO_2, SAY_TCHALIS_VOODOO_3, SAY_TCHALIS_VOODOO_4);
+
+ if (BroadcastTextId)
+ target->Talk(BroadcastTextId, CHAT_MSG_SAY, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), target);
+ }
+
+ void Register() override
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_brewfest_barker_bunny_AuraScript::OnApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_brewfest_barker_bunny_AuraScript();
+ }
+};
+
void AddSC_holiday_spell_scripts()
{
// Love is in the Air
@@ -461,4 +817,13 @@ void AddSC_holiday_spell_scripts()
// Winter Veil
new spell_winter_veil_mistletoe();
new spell_winter_veil_px_238_winter_wondervolt();
+ // Brewfest
+ new spell_brewfest_giddyup();
+ new spell_brewfest_ram();
+ new spell_brewfest_ram_fatigue();
+ new spell_brewfest_apple_trap();
+ new spell_brewfest_exhausted_ram();
+ new spell_brewfest_relay_race_intro_force_player_to_throw();
+ new spell_brewfest_dismount_ram();
+ new spell_brewfest_barker_bunny();
}
diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp
index d72c6d5c775..17c72ba5561 100644
--- a/src/server/scripts/Spells/spell_mage.cpp
+++ b/src/server/scripts/Spells/spell_mage.cpp
@@ -537,16 +537,17 @@ class spell_mage_focus_magic : public SpellScriptLoader
{
PrepareAuraScript(spell_mage_focus_magic_AuraScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
+ public:
+ spell_mage_focus_magic_AuraScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_FOCUS_MAGIC_PROC))
- return false;
- return true;
+ _procTarget = nullptr;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- _procTarget = NULL;
+ if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_FOCUS_MAGIC_PROC))
+ return false;
return true;
}
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index e6ad3e83477..1dab620a9c7 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -88,6 +88,14 @@ class spell_pal_ardent_defender : public SpellScriptLoader
{
PrepareAuraScript(spell_pal_ardent_defender_AuraScript);
+ public:
+ spell_pal_ardent_defender_AuraScript()
+ {
+ absorbPct = 0;
+ healPct = 0;
+ }
+
+ private:
uint32 absorbPct, healPct;
enum Spell
@@ -459,6 +467,13 @@ class spell_pal_divine_storm : public SpellScriptLoader
{
PrepareSpellScript(spell_pal_divine_storm_SpellScript);
+ public:
+ spell_pal_divine_storm_SpellScript()
+ {
+ healPct = 0;
+ }
+
+ private:
uint32 healPct;
bool Validate(SpellInfo const* /*spellInfo*/) override
@@ -502,6 +517,13 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader
{
PrepareSpellScript(spell_pal_divine_storm_dummy_SpellScript);
+ public:
+ spell_pal_divine_storm_dummy_SpellScript()
+ {
+ _targetCount = 0;
+ }
+
+ private:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_HEAL))
@@ -693,6 +715,13 @@ class spell_pal_hand_of_sacrifice : public SpellScriptLoader
{
PrepareAuraScript(spell_pal_hand_of_sacrifice_AuraScript);
+ public:
+ spell_pal_hand_of_sacrifice_AuraScript()
+ {
+ remainingAmount = 0;
+ }
+
+ private:
int32 remainingAmount;
bool Load() override
diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp
index f8466eb1f74..9fd55ae057e 100644
--- a/src/server/scripts/Spells/spell_pet.cpp
+++ b/src/server/scripts/Spells/spell_pet.cpp
@@ -229,11 +229,17 @@ public:
{
PrepareAuraScript(spell_warl_pet_scaling_01_AuraScript);
+ public:
+ spell_warl_pet_scaling_01_AuraScript()
+ {
+ _tempBonus = 0;
+ }
+
+ private:
bool Load() override
{
if (!GetCaster() || !GetCaster()->GetOwner() || GetCaster()->GetOwner()->GetTypeId() != TYPEID_PLAYER)
return false;
- _tempBonus = 0;
return true;
}
@@ -366,11 +372,17 @@ public:
{
PrepareAuraScript(spell_warl_pet_scaling_02_AuraScript);
+ public:
+ spell_warl_pet_scaling_02_AuraScript()
+ {
+ _tempBonus = 0;
+ }
+
+ private:
bool Load() override
{
if (!GetCaster() || !GetCaster()->GetOwner() || GetCaster()->GetOwner()->GetTypeId() != TYPEID_PLAYER)
return false;
- _tempBonus = 0;
return true;
}
@@ -880,6 +892,13 @@ public:
{
PrepareAuraScript(spell_hun_pet_scaling_01_AuraScript);
+ public:
+ spell_hun_pet_scaling_01_AuraScript()
+ {
+ _tempHealth = 0;
+ }
+
+ private:
void CalculateStaminaAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/)
{
if (Unit* pet = GetUnitOwner())
@@ -1457,11 +1476,17 @@ public:
{
PrepareAuraScript(spell_dk_pet_scaling_01_AuraScript);
+ public:
+ spell_dk_pet_scaling_01_AuraScript()
+ {
+ _tempHealth = 0;
+ }
+
+ private:
bool Load() override
{
if (!GetCaster() || !GetCaster()->GetOwner() || GetCaster()->GetOwner()->GetTypeId() != TYPEID_PLAYER)
return false;
- _tempHealth = 0;
return true;
}
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 0f78790bcee..8ec5450072f 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -465,6 +465,13 @@ class spell_pri_guardian_spirit : public SpellScriptLoader
{
PrepareAuraScript(spell_pri_guardian_spirit_AuraScript);
+ public:
+ spell_pri_guardian_spirit_AuraScript()
+ {
+ healPct = 0;
+ }
+
+ private:
uint32 healPct;
bool Validate(SpellInfo const* /*spellInfo*/) override
@@ -657,16 +664,17 @@ class spell_pri_mana_leech : public SpellScriptLoader
{
PrepareAuraScript(spell_pri_mana_leech_AuraScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
+ public:
+ spell_pri_mana_leech_AuraScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_MANA_LEECH_PROC))
- return false;
- return true;
+ _procTarget = nullptr;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- _procTarget = NULL;
+ if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_MANA_LEECH_PROC))
+ return false;
return true;
}
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index 9c65567fe7f..a59594935b5 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -2101,6 +2101,11 @@ class spell_q12641_death_comes_from_on_high : public SpellScriptLoader
};
// 52694 - Recall Eye of Acherus
+enum Recall_Eye_of_Acherus
+{
+ THE_EYE_OF_ACHERUS = 51852
+};
+
class spell_q12641_recall_eye_of_acherus : public SpellScriptLoader
{
public:
@@ -2116,6 +2121,7 @@ class spell_q12641_recall_eye_of_acherus : public SpellScriptLoader
{
player->StopCastingCharm();
player->StopCastingBindSight();
+ player->RemoveAura(THE_EYE_OF_ACHERUS);
}
}
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp
index 175a3c4f361..56010e275dc 100644
--- a/src/server/scripts/Spells/spell_rogue.cpp
+++ b/src/server/scripts/Spells/spell_rogue.cpp
@@ -68,16 +68,17 @@ class spell_rog_blade_flurry : public SpellScriptLoader
{
PrepareAuraScript(spell_rog_blade_flurry_AuraScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
+ public:
+ spell_rog_blade_flurry_AuraScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK))
- return false;
- return true;
+ _procTarget = nullptr;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- _procTarget = NULL;
+ if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK))
+ return false;
return true;
}
@@ -126,6 +127,13 @@ class spell_rog_cheat_death : public SpellScriptLoader
{
PrepareAuraScript(spell_rog_cheat_death_AuraScript);
+ public:
+ spell_rog_cheat_death_AuraScript()
+ {
+ absorbChance = 0;
+ }
+
+ private:
uint32 absorbChance;
bool Validate(SpellInfo const* /*spellInfo*/) override
@@ -253,9 +261,15 @@ class spell_rog_deadly_poison : public SpellScriptLoader
{
PrepareSpellScript(spell_rog_deadly_poison_SpellScript);
- bool Load() override
+ public:
+ spell_rog_deadly_poison_SpellScript()
{
_stackAmount = 0;
+ }
+
+ private:
+ bool Load() override
+ {
// at this point CastItem must already be initialized
return GetCaster()->GetTypeId() == TYPEID_PLAYER && GetCastItem();
}
@@ -487,6 +501,13 @@ class spell_rog_nerves_of_steel : public SpellScriptLoader
{
PrepareAuraScript(spell_rog_nerves_of_steel_AuraScript);
+ public:
+ spell_rog_nerves_of_steel_AuraScript()
+ {
+ absorbPct = 0;
+ }
+
+ private:
uint32 absorbPct;
bool Load() override
@@ -882,6 +903,13 @@ class spell_rog_tricks_of_the_trade : public SpellScriptLoader
{
PrepareAuraScript(spell_rog_tricks_of_the_trade_AuraScript);
+ public:
+ spell_rog_tricks_of_the_trade_AuraScript()
+ {
+ _redirectTarget = nullptr;
+ }
+
+ private:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_TRICKS_OF_THE_TRADE_DMG_BOOST))
@@ -891,12 +919,6 @@ class spell_rog_tricks_of_the_trade : public SpellScriptLoader
return true;
}
- bool Load() override
- {
- _redirectTarget = NULL;
- return true;
- }
-
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_DEFAULT)
diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp
index b9f34bafedf..5e8e3a1070f 100644
--- a/src/server/scripts/Spells/spell_shaman.cpp
+++ b/src/server/scripts/Spells/spell_shaman.cpp
@@ -219,14 +219,15 @@ class spell_sha_chain_heal : public SpellScriptLoader
{
PrepareSpellScript(spell_sha_chain_heal_SpellScript);
- bool Load() override
+ public:
+ spell_sha_chain_heal_SpellScript()
{
firstHeal = true;
riptide = false;
amount = 0;
- return true;
}
+ private:
void HandleHeal(SpellEffIndex /*effIndex*/)
{
if (firstHeal)
diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp
index 42acb474169..24fa9ee31ae 100644
--- a/src/server/scripts/Spells/spell_warlock.cpp
+++ b/src/server/scripts/Spells/spell_warlock.cpp
@@ -139,12 +139,13 @@ class spell_warl_banish : public SpellScriptLoader
{
PrepareSpellScript(spell_warl_banish_SpellScript);
- bool Load() override
+ public:
+ spell_warl_banish_SpellScript()
{
_removed = false;
- return true;
}
+ private:
void HandleBanish()
{
/// Casting Banish on a banished target will cancel the effect
diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp
index 4bf57d116fe..5e976b12071 100644
--- a/src/server/scripts/Spells/spell_warrior.cpp
+++ b/src/server/scripts/Spells/spell_warrior.cpp
@@ -839,16 +839,17 @@ class spell_warr_sweeping_strikes : public SpellScriptLoader
{
PrepareAuraScript(spell_warr_sweeping_strikes_AuraScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
+ public:
+ spell_warr_sweeping_strikes_AuraScript()
{
- if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2))
- return false;
- return true;
+ _procTarget = nullptr;
}
- bool Load() override
+ private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- _procTarget = NULL;
+ if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2))
+ return false;
return true;
}
@@ -903,6 +904,7 @@ class spell_warr_sword_and_board : public SpellScriptLoader
{
PrepareAuraScript(spell_warr_sword_and_board_AuraScript);
+ private:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SHIELD_SLAM))
diff --git a/src/server/shared/Debugging/Errors.cpp b/src/server/shared/Debugging/Errors.cpp
index 0621cfa5b6d..8b1b9454850 100644
--- a/src/server/shared/Debugging/Errors.cpp
+++ b/src/server/shared/Debugging/Errors.cpp
@@ -21,6 +21,7 @@
#include <cstdio>
#include <cstdlib>
#include <thread>
+#include <cstdarg>
namespace Trinity {
@@ -32,6 +33,21 @@ void Assert(char const* file, int line, char const* function, char const* messag
exit(1);
}
+void Assert(char const* file, int line, char const* function, char const* message, char const* format, ...)
+{
+ va_list args;
+ va_start(args, format);
+
+ fprintf(stderr, "\n%s:%i in %s ASSERTION FAILED:\n %s ", file, line, function, message);
+ vfprintf(stderr, format, args);
+ fprintf(stderr, "\n");
+ fflush(stderr);
+
+ va_end(args);
+ *((volatile int*)NULL) = 0;
+ exit(1);
+}
+
void Fatal(char const* file, int line, char const* function, char const* message)
{
fprintf(stderr, "\n%s:%i in %s FATAL ERROR:\n %s\n",
diff --git a/src/server/shared/Debugging/Errors.h b/src/server/shared/Debugging/Errors.h
index 218acfa453e..e6da19eb00d 100644
--- a/src/server/shared/Debugging/Errors.h
+++ b/src/server/shared/Debugging/Errors.h
@@ -23,8 +23,8 @@
namespace Trinity
{
-
DECLSPEC_NORETURN void Assert(char const* file, int line, char const* function, char const* message) ATTR_NORETURN;
+ DECLSPEC_NORETURN void Assert(char const* file, int line, char const* function, char const* message, char const* format, ...) ATTR_NORETURN ATTR_PRINTF(5, 6);
DECLSPEC_NORETURN void Fatal(char const* file, int line, char const* function, char const* message) ATTR_NORETURN;
@@ -42,7 +42,7 @@ namespace Trinity
#define ASSERT_END
#endif
-#define WPAssert(cond) ASSERT_BEGIN do { if (!(cond)) Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond); } while(0) ASSERT_END
+#define WPAssert(cond, ...) ASSERT_BEGIN do { if (!(cond)) Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond, ##__VA_ARGS__); } while(0) ASSERT_END
#define WPFatal(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Fatal(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END
#define WPError(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Error(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END
#define WPWarning(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index f7d27697f24..d65b6c58a51 100644
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -118,7 +118,6 @@ class ByteBuffer
template <typename T> void append(T value)
{
static_assert(std::is_fundamental<T>::value, "append(compound)");
- FlushBits();
EndianConvert(value);
append((uint8 *)&value, sizeof(value));
}
@@ -128,9 +127,10 @@ class ByteBuffer
if (_bitpos == 8)
return;
+ _bitpos = 8;
+
append((uint8 *)&_curbitval, sizeof(uint8));
_curbitval = 0;
- _bitpos = 8;
}
bool WriteBit(uint32 bit)
@@ -583,6 +583,8 @@ class ByteBuffer
ASSERT(size() < 10000000);
+ FlushBits();
+
if (_storage.size() < _wpos + cnt)
_storage.resize(_wpos + cnt);
std::memcpy(&_storage[_wpos], src, cnt);