From e77f503336a420dcb8340dc5f2f6c76fa0b54ad6 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Mon, 22 Sep 2014 20:25:11 +0200 Subject: Scripts/Examples: Remove some more code related to example scripts --- src/server/game/Scripting/ScriptMgr.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'src') diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 51100accf77..48981fde70b 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 ExampleScriptContainer; - ExampleScriptContainer ExampleScripts; -} - // This is the global static registry of scripts. template 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; } -- cgit v1.2.3 From 9c9556d75c9856c42e1340f1f5ef77e6180076ad Mon Sep 17 00:00:00 2001 From: iDenyDeX Date: Mon, 22 Sep 2014 20:52:22 +0200 Subject: Core/Spell - Fix Remove Aura "The Eye of Acherus" Fixed remove aura "The Eye of Acherus" http://www.wowhead.com/spell=51852 after use "Recall Eye of Acherus" http://www.wowhead.com/spell=52694 . Earlier, after using the player remained under the aura. --- src/server/scripts/Spells/spell_quest.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') 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); } } -- cgit v1.2.3 From 44bcfb86f5da0a5a374fc5b07431836b3c0f51c7 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Tue, 23 Sep 2014 21:30:47 +0200 Subject: Core/Spells: Fix Ram Racing mechanic To/Do: Fix Quests and your lazy ass :/ --- sql/updates/world/2014_09_23_03_world.sql | 28 ++++ src/server/scripts/Spells/spell_holiday.cpp | 213 ++++++++++++++++++++++++++++ 2 files changed, 241 insertions(+) create mode 100644 sql/updates/world/2014_09_23_03_world.sql (limited to 'src') diff --git a/sql/updates/world/2014_09_23_03_world.sql b/sql/updates/world/2014_09_23_03_world.sql new file mode 100644 index 00000000000..366b9cd1197 --- /dev/null +++ b/sql/updates/world/2014_09_23_03_world.sql @@ -0,0 +1,28 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +42924, +43310, +42992, +42993, +42994, +43052, +43450 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(42924, 'spell_brewfest_giddyup'), +(43310, 'spell_brewfest_ram'), +(42992, 'spell_brewfest_ram'), +(42993, 'spell_brewfest_ram'), +(42994, 'spell_brewfest_ram'), +(43052, 'spell_brewfest_ram_fatigue'), +(43450, 'spell_brewfest_apple_trap'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=42924; +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=43450; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 42924, 0, 0, 1, 0, 43332, 0, 0, 1, 172, 0, '', 'Cast Gore Bladder only if Cosmetic - Underwater Blood (no sound) aura is active'), +(13, 1, 43450, 0, 0, 1, 0, 43052, 0, 0, 0, 0, 0, '', 'Brewfest - apple trap - friendly DND targets only if does have aura Ram Fatigue'); + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=-43883 AND `spell_effect`=-43052; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=43450 AND `spell_effect`=-43052; +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +(-43883, -43052, 0, 'Rental racing ram removed removes Ram Fatigue'); diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index 85bf85fa2d2..a001360fed9 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -444,6 +444,214 @@ class spell_winter_veil_px_238_winter_wondervolt : public SpellScriptLoader } }; +enum RamBlaBla +{ + 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() == 4) + 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() == 4) + 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->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(); + } +}; + void AddSC_holiday_spell_scripts() { // Love is in the Air @@ -461,4 +669,9 @@ 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(); } -- cgit v1.2.3 From 4c25454b77dcf86a890169232d2719792f817949 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Tue, 23 Sep 2014 21:50:45 +0200 Subject: Core/Spells: Added missing stuff in 44bcfb86f5da0a5a374fc5b07431836b3c0f51c7 --- sql/updates/world/2014_09_23_04_world.sql | 5 +++++ src/server/scripts/Spells/spell_holiday.cpp | 31 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 sql/updates/world/2014_09_23_04_world.sql (limited to 'src') diff --git a/sql/updates/world/2014_09_23_04_world.sql b/sql/updates/world/2014_09_23_04_world.sql new file mode 100644 index 00000000000..26f1bfafdb6 --- /dev/null +++ b/sql/updates/world/2014_09_23_04_world.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +43332 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(43332, 'spell_brewfest_exhausted_ram'); diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index a001360fed9..fdf069dd18d 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -446,6 +446,7 @@ 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, @@ -608,6 +609,7 @@ class spell_brewfest_ram_fatigue : public SpellScriptLoader 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); } @@ -652,6 +654,34 @@ class spell_brewfest_apple_trap : public SpellScriptLoader } }; +// 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(); + } +}; + void AddSC_holiday_spell_scripts() { // Love is in the Air @@ -674,4 +704,5 @@ void AddSC_holiday_spell_scripts() new spell_brewfest_ram(); new spell_brewfest_ram_fatigue(); new spell_brewfest_apple_trap(); + new spell_brewfest_exhausted_ram(); } -- cgit v1.2.3 From c3805aa5123a58c5c5778652d80b119c2cbc630c Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Wed, 24 Sep 2014 22:21:44 +0200 Subject: Misc/Events: - Fix Quest "There and Back Again" (only Horde-side) - Fix Quest "Now This is Ram Racing... Almost." (only Horde-side) - Fix more spell mechanics for racing ram To/Do: Fix gossips and some optimize --- sql/updates/world/2014_09_24_01_world.sql | 43 +++++++++++++++++++++ src/server/scripts/Spells/spell_holiday.cpp | 59 +++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 sql/updates/world/2014_09_24_01_world.sql (limited to 'src') diff --git a/sql/updates/world/2014_09_24_01_world.sql b/sql/updates/world/2014_09_24_01_world.sql new file mode 100644 index 00000000000..e94e17d08df --- /dev/null +++ b/sql/updates/world/2014_09_24_01_world.sql @@ -0,0 +1,43 @@ +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (24497,24527,24510); +UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry`=24527; +UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry`=24510; + + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24497; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24497, 0, 0, 0, 19, 0, 100, 0, 11409, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 1, 0, 20, 0, 100, 0, 11409, 0, 0, 0, 11, 44358, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 2, 0, 19, 0, 100, 0, 11412, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray - On Quest ''There and Back Again'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 3, 0, 20, 0, 100, 0, 11412, 0, 0, 0, 11, 44358, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray - On Quest ''There and Back Again'' Taken - Cast ''Rental Racing Ram'''); + + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24527; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24527, 0, 0, 0, 10, 0, 100, 0, 1, 25, 1000, 1000, 11, 43660, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Bok Dropcertain - Within 0-50 Range - Cast ''Brewfest - Throw Keg - DND'''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=24527; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 24527, 0, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', ''), +(22, 1, 24527, 0, 0, 2, 0, 33797, 1, 0, 1, 0, 0, '', ''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=43662; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 43662, 0, 0, 31, 0, 3, 24510, 0, 0, 0, 0, '', ''); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24510; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24510, 0, 0, 0, 10, 0, 100, 0, 1, 25, 1000, 1000, 11, 43714, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Driz Tumblequick - Within 0-50 Range - Cast ''Brewfest - Throw Keg - DND'''), +(24510, 0, 1, 0, 8, 0, 100, 0, 43662, 0, 0, 0, 85, 44601, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Driz Tumblequick - On SpellHit - Cast ''Brewfest - Relay Race - Intro - Assign Kill Credit'''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=24510; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 24510, 0, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', ''), +(22, 1, 24510, 0, 0, 2, 0, 33797, 1, 0, 0, 0, 0, '', ''); + +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +43714, +43876 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(43714, 'spell_brewfest_relay_race_intro_force_player_to_throw'), +(43876, 'spell_brewfest_dismount_ram'); diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index fdf069dd18d..41ffbaf9cf8 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -682,6 +682,63 @@ class spell_brewfest_exhausted_ram : public SpellScriptLoader } }; +// 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(); + } +}; + void AddSC_holiday_spell_scripts() { // Love is in the Air @@ -705,4 +762,6 @@ void AddSC_holiday_spell_scripts() 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(); } -- cgit v1.2.3 From c9abaf4139b42f21a01f2d33ed7745b0b9321e01 Mon Sep 17 00:00:00 2001 From: mik1893 Date: Thu, 25 Sep 2014 14:06:35 +0200 Subject: Core/Achievements: Fixed wrong packet generation in AchievementMgr::SendCriteriaUpdate --- src/server/game/Achievements/AchievementMgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 594f34e4202..b3483f202f2 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -682,7 +682,7 @@ void AchievementMgr::SendCriteriaUpdate(AchievementCriteriaEntry const* entry, C 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 -- cgit v1.2.3 From 84fdc55db85ac36f6a570d17402572d71412a9d9 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Thu, 25 Sep 2014 12:10:19 -0230 Subject: Scripting/Isle of Queldanas: Moved Converted Sentry to SAI. Closes #13121 --- sql/updates/world/2014_09_25_00_world.sql | 9 ++ .../EasternKingdoms/zone_isle_of_queldanas.cpp | 102 ++++----------------- 2 files changed, 28 insertions(+), 83 deletions(-) create mode 100644 sql/updates/world/2014_09_25_00_world.sql (limited to 'src') diff --git a/sql/updates/world/2014_09_25_00_world.sql b/sql/updates/world/2014_09_25_00_world.sql new file mode 100644 index 00000000000..02dfd0f4fc6 --- /dev/null +++ b/sql/updates/world/2014_09_25_00_world.sql @@ -0,0 +1,9 @@ +-- Converted Sentry SAI +SET @ENTRY := 24981; +UPDATE `creature_template` SET `AIName`="SmartAI", `ScriptName` = '' WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,1,63,0,100,1,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Say Line 0 (No Repeat)"), +(@ENTRY,0,1,2,61,0,100,1,0,0,0,0,11,45009,0,0,0,0,0,7,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Cast Converted Sentry Credit (No Repeat)"), +(@ENTRY,0,2,3,61,0,100,1,0,0,0,0,89,5,0,0,0,0,0,1,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Set random movement (No Repeat)"), +(@ENTRY,0,3,0,61,0,100,1,0,0,0,0,41,7500,0,0,0,0,0,1,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Cast Despawn In 7500 ms (No Repeat)"); diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp index 4ce30bd5834..88b8d1e6af5 100644 --- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp +++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp @@ -19,124 +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); @@ -149,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(); } -- cgit v1.2.3 From ea4dd2c8f45ac30be74c71dbcfebeb5ca5a7e0cc Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 25 Sep 2014 21:15:20 +0200 Subject: Scripts/Icecrown Citadel * Fixed Deathbringer Saurfang faction * Fixed Coldflame faction --- sql/updates/world/2014_09_25_02_world.sql | 1 + .../Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 sql/updates/world/2014_09_25_02_world.sql (limited to 'src') diff --git a/sql/updates/world/2014_09_25_02_world.sql b/sql/updates/world/2014_09_25_02_world.sql new file mode 100644 index 00000000000..057ca76b638 --- /dev/null +++ b/sql/updates/world/2014_09_25_02_world.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `faction`=21 WHERE `entry`=36672; -- Coldflame diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 15cf0d31af9..e1b39e24b47 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)); -- cgit v1.2.3 From 16a884d999d17290955f3c2721b78a13c8795293 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Thu, 25 Sep 2014 21:10:00 +0200 Subject: Core/Misc: Refactor scripts to fix static analysis warnings Eighth batch of fixes targeting 80 issues reported by Coverity --- .../Scholomance/boss_darkmaster_gandling.cpp | 16 +++- .../AzjolNerub/Ahnkahet/boss_elder_nadox.cpp | 14 +-- .../TrialOfTheCrusader/boss_twin_valkyr.cpp | 15 +++ .../PitOfSaron/boss_forgemaster_garfrost.cpp | 5 +- .../PitOfSaron/boss_scourgelord_tyrannus.cpp | 8 ++ .../IcecrownCitadel/boss_deathbringer_saurfang.cpp | 8 +- .../boss_icecrown_gunship_battle.cpp | 22 ++++- .../IcecrownCitadel/boss_lord_marrowgar.cpp | 5 +- .../IcecrownCitadel/boss_professor_putricide.cpp | 8 +- .../Northrend/IcecrownCitadel/boss_rotface.cpp | 7 +- .../Northrend/IcecrownCitadel/boss_sindragosa.cpp | 7 +- .../IcecrownCitadel/boss_the_lich_king.cpp | 45 ++++++--- .../IcecrownCitadel/boss_valithria_dreamwalker.cpp | 14 +++ .../Northrend/IcecrownCitadel/icecrown_citadel.cpp | 5 +- .../Northrend/Nexus/EyeOfEternity/boss_malygos.cpp | 7 ++ .../Ulduar/Ulduar/boss_algalon_the_observer.cpp | 8 +- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 7 +- .../Northrend/Ulduar/Ulduar/boss_mimiron.cpp | 13 +-- .../Northrend/VaultOfArchavon/boss_koralon.cpp | 5 +- src/server/scripts/Northrend/zone_storm_peaks.cpp | 5 +- .../scripts/Outland/zone_shadowmoon_valley.cpp | 104 +++++++++++++++------ src/server/scripts/Outland/zone_shattrath_city.cpp | 22 ++++- .../scripts/Outland/zone_terokkar_forest.cpp | 28 ++++-- src/server/scripts/Spells/spell_dk.cpp | 88 +++++++++++++---- src/server/scripts/Spells/spell_druid.cpp | 21 +++++ src/server/scripts/Spells/spell_generic.cpp | 36 +++++-- src/server/scripts/Spells/spell_holiday.cpp | 5 +- src/server/scripts/Spells/spell_mage.cpp | 13 +-- src/server/scripts/Spells/spell_paladin.cpp | 29 ++++++ src/server/scripts/Spells/spell_pet.cpp | 31 +++++- src/server/scripts/Spells/spell_priest.cpp | 20 ++-- src/server/scripts/Spells/spell_rogue.cpp | 48 +++++++--- src/server/scripts/Spells/spell_shaman.cpp | 12 ++- src/server/scripts/Spells/spell_warlock.cpp | 5 +- src/server/scripts/Spells/spell_warrior.cpp | 26 +++--- 35 files changed, 547 insertions(+), 165 deletions(-) (limited to 'src') 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/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/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/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 e1b39e24b47..f3fae3b14a0 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -1219,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& 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& 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 5addfd672b4..a5978d8f8fa 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -2101,12 +2101,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& targets) { targets.sort(Trinity::ObjectDistanceOrderPred(GetCaster())); @@ -2141,12 +2142,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()) @@ -2518,16 +2520,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; } @@ -2643,6 +2646,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(); @@ -2705,9 +2715,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; } @@ -2894,6 +2910,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 5b3dd67072a..1caed4ed788 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& targets) { diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index eb01dfab141..3127bbe359f 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/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 959cb73a996..a240bc89a5e 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& 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/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& targets) { _chainTargets = targets.size(); 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/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index a96cf3ac254..dc0d9bcb28a 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 36bf8389cc2..929ffe60364 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -85,6 +85,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 @@ -127,6 +134,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 { @@ -184,6 +199,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 @@ -235,6 +257,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)) @@ -244,7 +273,6 @@ class spell_dk_blood_boil : public SpellScriptLoader bool Load() override { - _executed = false; return GetCaster()->GetTypeId() == TYPEID_PLAYER && GetCaster()->getClass() == CLASS_DEATH_KNIGHT; } @@ -281,16 +309,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; } @@ -384,6 +413,13 @@ class spell_dk_corpse_explosion : public SpellScriptLoader { PrepareSpellScript(spell_dk_corpse_explosion_SpellScript); + public: + spell_dk_corpse_explosion_SpellScript() + { + _target = nullptr; + } + + private: bool Validate(SpellInfo const* spellInfo) override { if (!sSpellMgr->GetSpellInfo(SPELL_DK_CORPSE_EXPLOSION_TRIGGERED) @@ -394,12 +430,6 @@ class spell_dk_corpse_explosion : public SpellScriptLoader return true; } - bool Load() override - { - _target = NULL; - return true; - } - void CheckTarget(WorldObject*& target) { if (CorpseExplosionCheck(GetCaster()->GetGUID(), true)(target)) @@ -1204,6 +1234,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()) @@ -1216,8 +1254,6 @@ class spell_dk_raise_dead : public SpellScriptLoader bool Load() override { - _result = SPELL_CAST_OK; - _corpse = false; return GetCaster()->GetTypeId() == TYPEID_PLAYER; } @@ -1399,14 +1435,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)) @@ -1463,6 +1501,13 @@ class spell_dk_spell_deflection : public SpellScriptLoader { PrepareAuraScript(spell_dk_spell_deflection_AuraScript); + public: + spell_dk_spell_deflection_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override @@ -1534,6 +1579,13 @@ class spell_dk_will_of_the_necropolis : public SpellScriptLoader { PrepareAuraScript(spell_dk_will_of_the_necropolis_AuraScript); + public: + spell_dk_will_of_the_necropolis_AuraScript() + { + absorbPct = 0; + } + + private: bool Validate(SpellInfo const* spellInfo) override { SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_DK_WILL_OF_THE_NECROPOLIS_AURA_R1); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index dbcc7716f32..7a49e156971 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -421,6 +421,13 @@ class spell_dru_moonkin_form_passive : public SpellScriptLoader { PrepareAuraScript(spell_dru_moonkin_form_passive_AuraScript); + public: + spell_dru_moonkin_form_passive_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override @@ -521,6 +528,13 @@ class spell_dru_primal_tenacity : public SpellScriptLoader { PrepareAuraScript(spell_dru_primal_tenacity_AuraScript); + public: + spell_dru_primal_tenacity_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override @@ -613,6 +627,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 e5ef3d5b7b7..b2efa1052e8 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 @@ -775,6 +782,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) || @@ -787,12 +801,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(); @@ -1392,9 +1400,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; } @@ -2406,11 +2420,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 41ffbaf9cf8..4e8d47381e7 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*/) diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index a19a24d47e9..24e893ed445 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -278,16 +278,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 2d32341757f..fae6e9a86bf 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -99,6 +99,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 @@ -465,6 +473,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 @@ -508,6 +523,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)) @@ -696,6 +718,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 775f9f505f9..9f2a73174bb 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; } @@ -882,6 +894,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()) @@ -1478,11 +1497,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 ba3d6ce490a..d70d7b09b8b 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -263,6 +263,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 @@ -451,16 +458,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_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 9c9a75d853b..7b0a02b4c96 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -52,16 +52,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; } @@ -107,6 +108,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 @@ -170,9 +178,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(); } @@ -364,6 +378,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 @@ -613,6 +634,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)) @@ -622,12 +650,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 bba1f4e298b..99570ad1b75 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -122,6 +122,13 @@ class spell_sha_astral_shift : public SpellScriptLoader { PrepareAuraScript(spell_sha_astral_shift_AuraScript); + public: + spell_sha_astral_shift_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override @@ -209,13 +216,14 @@ 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; - 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 4571798506e..de72ec8c643 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -71,12 +71,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() { if (Unit* target = GetHitUnit()) diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 9709532f56f..dba4da8bde5 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -681,16 +681,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; } @@ -745,6 +746,13 @@ class spell_warr_vigilance : public SpellScriptLoader { PrepareAuraScript(spell_warr_vigilance_AuraScript); + public: + spell_warr_vigilance_AuraScript() + { + _procTarget = nullptr; + } + + private: bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_GLYPH_OF_VIGILANCE)) @@ -758,12 +766,6 @@ class spell_warr_vigilance : public SpellScriptLoader return true; } - bool Load() override - { - _procTarget = NULL; - return true; - } - void HandleApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); -- cgit v1.2.3 From 79b9ca4a58175bcbfe859446dbb36ba4b30216b9 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Thu, 25 Sep 2014 22:28:20 +0200 Subject: Scripts/Misc: Make InstanceScript::Initialize() obsolete Move all InstanceScript initialization code from Initialize() to the constructor. InstanceScript::Initialize() is now obsolete, please don't use it anymore. The only reason it's still in the sources is for backward compatibility. --- src/server/game/Instances/InstanceScript.h | 2 + .../BlackrockDepths/instance_blackrock_depths.cpp | 22 ++++---- .../BlackwingLair/instance_blackwing_lair.cpp | 7 --- .../Deadmines/instance_deadmines.cpp | 14 +++--- .../Gnomeregan/instance_gnomeregan.cpp | 6 +-- .../EasternKingdoms/Karazhan/instance_karazhan.cpp | 20 ++++---- .../ShadowfangKeep/instance_shadowfang_keep.cpp | 18 +++---- .../Stratholme/instance_stratholme.cpp | 17 ++----- .../SunkenTemple/instance_sunken_temple.cpp | 21 +++----- .../EasternKingdoms/Uldaman/instance_uldaman.cpp | 4 +- .../EasternKingdoms/ZulAman/instance_zulaman.cpp | 32 ++++++------ .../instance_blackfathom_deeps.cpp | 18 +++---- .../BattleForMountHyjal/instance_hyjal.cpp | 14 +++--- .../instance_old_hillsbrad.cpp | 18 +++---- .../TheBlackMorass/instance_the_black_morass.cpp | 12 ++--- .../Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp | 18 +++---- .../RazorfenDowns/instance_razorfen_downs.cpp | 14 ++---- .../RazorfenKraul/instance_razorfen_kraul.cpp | 10 ++-- .../instance_temple_of_ahnqiraj.cpp | 24 ++++----- .../WailingCaverns/instance_wailing_caverns.cpp | 14 +++--- .../Kalimdor/ZulFarrak/instance_zulfarrak.cpp | 20 ++++---- .../ObsidianSanctum/instance_obsidian_sanctum.cpp | 4 +- .../instance_trial_of_the_champion.cpp | 24 ++++----- .../instance_trial_of_the_crusader.cpp | 4 +- .../Northrend/Nexus/Nexus/instance_nexus.cpp | 12 ++--- .../Northrend/Ulduar/Ulduar/instance_ulduar.cpp | 52 +++++++++---------- .../Northrend/VioletHold/instance_violet_hold.cpp | 58 +++++++++++----------- .../SerpentShrine/instance_serpent_shrine.cpp | 5 -- .../instance_hellfire_ramparts.cpp | 4 -- .../instance_magtheridons_lair.cpp | 14 ++---- .../ShatteredHalls/instance_shattered_halls.cpp | 4 +- .../Outland/TempestKeep/Eye/instance_the_eye.cpp | 18 +++---- 32 files changed, 221 insertions(+), 303 deletions(-) (limited to 'src') diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 24df397bf46..4b5a461418d 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -143,6 +143,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/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 bae3f1b9b5c..20e04ed1b91 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/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/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 72bd8446972..122e19f217b 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -66,7 +66,21 @@ class instance_zulaman : public InstanceMapScript struct instance_zulaman_InstanceMapScript : public InstanceScript { - instance_zulaman_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_zulaman_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + + QuestTimer = 0; + QuestMinute = 0; + BossKilled = 0; + ChestLooted = 0; + + for (uint8 i = 0; i < RAND_VENDOR; ++i) + RandVendor[i] = NOT_STARTED; + + m_auiEncounter[DATA_GONGEVENT] = NOT_STARTED; + } ObjectGuid HarkorsSatchelGUID; ObjectGuid TanzarsTrunkGUID; @@ -90,22 +104,6 @@ class instance_zulaman : public InstanceMapScript uint32 m_auiEncounter[MAX_ENCOUNTER]; uint32 RandVendor[RAND_VENDOR]; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - QuestTimer = 0; - QuestMinute = 0; - BossKilled = 0; - ChestLooted = 0; - - for (uint8 i = 0; i < RAND_VENDOR; ++i) - RandVendor[i] = NOT_STARTED; - - m_auiEncounter[DATA_GONGEVENT] = NOT_STARTED; - } - bool IsEncounterInProgress() const override { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) 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 55860d98cc5..1d4a728b08b 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp @@ -54,19 +54,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/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/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/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/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/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/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/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) -- cgit v1.2.3 From ace897e27b36a07bf0e82aa320d28bd9c3624aa8 Mon Sep 17 00:00:00 2001 From: Nyeriah Date: Fri, 26 Sep 2014 03:10:48 -0300 Subject: Scripts/UtigardePinnacle: Prevent Ymiron from triggering a phase transition at death ...caused by the health percent multiplers used to check transitions --- .../scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') 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; -- cgit v1.2.3 From 7b723426581bd6beb565412423bed1c1b195d02f Mon Sep 17 00:00:00 2001 From: MitchesD Date: Fri, 26 Sep 2014 18:43:01 +0200 Subject: Scripts/ManaTombs: Nexus-Prince Shaffar rewritten to BossAI/EventMap --- .../ManaTombs/boss_nexusprince_shaffar.cpp | 465 +++++++++------------ 1 file changed, 203 insertions(+), 262 deletions(-) (limited to 'src') 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 - * Copyright (C) 2006-2009 ScriptDev2 * * 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(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 -- cgit v1.2.3 From 71644043d20425abd254d3fc4caa6042dcd5f7e4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 26 Sep 2014 20:47:48 +0200 Subject: Core/Debugging: Extended ASSERT macro to allow passing additional formatted string --- src/server/shared/Debugging/Errors.cpp | 16 ++++++++++++++++ src/server/shared/Debugging/Errors.h | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src') 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 #include #include +#include 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..f65d06cab01 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 -- cgit v1.2.3 From 07f47a4b9137739ec9d78b9ad7f9957e5fdb03f0 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 26 Sep 2014 20:48:10 +0200 Subject: Scripts: Fixed compiler warning --- src/server/scripts/Outland/zone_shadowmoon_valley.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index dc0d9bcb28a..e6f32a07538 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -169,7 +169,7 @@ public: } } - void UpdateAI(uint32 diff) override + void UpdateAI(uint32 /*diff*/) override { if (!UpdateVictim()) return; -- cgit v1.2.3 From 605d51533c73067f5395a3e522d1d02c6f7f2047 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 26 Sep 2014 22:26:51 +0200 Subject: Core/Spells: Always add threat for spells from spell_threat table, not only if target was hit. Unsuccessful cast results in 0 threat added instead of the full amount and creating threat list entry for caster. This fixes various exploits with taunt spells bugging out scripts due to taunt immunity/passive state (creatures would immediately evade resetting script state if no entries were present on threat list - entry with no threat is not the same as no entry) Closes #11883 --- src/server/game/Spells/Spell.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 31aecbb65a0..2289020ee38 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4559,8 +4559,9 @@ void Spell::HandleThreatSpells() for (std::list::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) @@ -4568,14 +4569,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())); -- cgit v1.2.3 From 0af6d3a16d0272607aecd9729701ff6eccacb1f6 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Fri, 26 Sep 2014 22:58:15 +0200 Subject: Core/Misc: Refactor scripts to fix static analysis warnings Last issue to be fixed, fixes #12960 --- .../Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') 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() -- cgit v1.2.3 From a6a23a73af92f02531aa28256536daeabb439766 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Sat, 27 Sep 2014 01:19:20 +0200 Subject: Misc/Brewfest: Fix Quest "11407 - Bark for Drohn''s Distillery!" / "11408 -Bark for T''chali''s Voodoo Brewery!" --- sql/updates/world/2014_09_27_00_world.sql | 60 ++++++++++++++++++++++++++ src/server/scripts/Spells/spell_holiday.cpp | 65 +++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 sql/updates/world/2014_09_27_00_world.sql (limited to 'src') diff --git a/sql/updates/world/2014_09_27_00_world.sql b/sql/updates/world/2014_09_27_00_world.sql new file mode 100644 index 00000000000..26eb32a1ac6 --- /dev/null +++ b/sql/updates/world/2014_09_27_00_world.sql @@ -0,0 +1,60 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +43259, +43260, +43261, +43262 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(43259, 'spell_brewfest_barker_bunny'), +(43260, 'spell_brewfest_barker_bunny'), +(43261, 'spell_brewfest_barker_bunny'), +(43262, 'spell_brewfest_barker_bunny'); + +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (4801,4802,4803,4804); +INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES +(4801, 'SmartTrigger'), +(4802, 'SmartTrigger'), +(4803, 'SmartTrigger'), +(4804, 'SmartTrigger'); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4801; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4801, 2, 0, 0, 46, 0, 100, 0, 4801, 0, 0, 0, 85, 43259, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 1'''); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4802; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4802, 2, 0, 0, 46, 0, 100, 0, 4802, 0, 0, 0, 85, 43260, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 2'''); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4803; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4803, 2, 0, 0, 46, 0, 100, 0, 4803, 0, 0, 0, 85, 43261, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 3'''); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4804; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4804, 2, 0, 0, 46, 0, 100, 0, 4804, 0, 0, 0, 85, 43262, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 4'''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN (4801,4802,4803,4804); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 4801, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4801, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4801, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4801, 2, 0, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4801, 2, 1, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'), + +(22, 1, 4802, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4802, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4802, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4802, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4802, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'), + +(22, 1, 4803, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4803, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4803, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4803, 2, 0, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4803, 2, 1, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'), + +(22, 1, 4804, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4804, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4804, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4804, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4804, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'); diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index 4e8d47381e7..2d993e771db 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -736,6 +736,70 @@ class spell_brewfest_dismount_ram : public SpellScriptLoader } }; +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 @@ -761,4 +825,5 @@ void AddSC_holiday_spell_scripts() 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(); } -- cgit v1.2.3