From 6d706dfb92227168e4469666bfb65f04b3dcb5f0 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 22 Jul 2018 16:53:01 +0200 Subject: [PATCH] Core/Spells: fixed Savage Defender aura script and fixed mastery bonus * fixed some startup errors --- .../custom/custom_2018_07_22_00_world.sql | 9 +++ .../HallsOfOrigination/boss_anraphet.cpp | 42 ++---------- src/server/scripts/Spells/spell_druid.cpp | 65 ++++++------------- 3 files changed, 33 insertions(+), 83 deletions(-) create mode 100644 sql/updates/world/custom/custom_2018_07_22_00_world.sql diff --git a/sql/updates/world/custom/custom_2018_07_22_00_world.sql b/sql/updates/world/custom/custom_2018_07_22_00_world.sql new file mode 100644 index 00000000000..5fd0d77de5f --- /dev/null +++ b/sql/updates/world/custom/custom_2018_07_22_00_world.sql @@ -0,0 +1,9 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN +('spell_flame_warden_lava_eruption', +'spell_omega_stance_spider_effect'); + +DELETE FROM `achievement_criteria_data` WHERE `ScriptName`= 'achievement_hate_that_song'; + +DELETE FROM `spell_proc` WHERE `SpellId` IN (62600); +INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `Cooldown`, `Charges`, `Chance`) VALUES +(62600, 0, 0, 0, 0, 0, 1, 2, 2, 32, 0, 0, 50); diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp index 08f0e1c6d9a..a4b9c8539de 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp @@ -90,9 +90,6 @@ enum Events enum Spells { - // Flame Warden - SPELL_LAVA_ERUPTION_VISUAL = 97317, - // Anraphet SPELL_DESTRUCTION_PROTOCOL = 77437, SPELL_ALPHA_BEAMS = 76184, @@ -103,7 +100,10 @@ enum Spells // Omega Stance SPELL_OMEGA_STANCE_SUMMON = 77106, SPELL_OMEGA_STANCE = 75622, - SPELL_OMEGA_STANCE_SPIDER_TRIGGER = 77121 + SPELL_OMEGA_STANCE_SPIDER_TRIGGER = 77121, + + // Flame Warden + SPELL_LAVA_ERUPTION_VISUAL = 97317 }; enum Actions @@ -592,39 +592,6 @@ public: } }; -// 77273 Lava Eruption -class spell_flame_warden_lava_eruption : public SpellScriptLoader -{ -public: - spell_flame_warden_lava_eruption() : SpellScriptLoader("spell_flame_warden_lava_eruption") { } - - class spell_flame_warden_lava_eruption_SpellScript : public SpellScript - { - PrepareSpellScript(spell_flame_warden_lava_eruption_SpellScript); - - void HandleScript(SpellEffIndex /*effIndex*/) - { - GetHitUnit()->RemoveAurasDueToSpell(GetEffectValue()); - } - - void OnTargetSelect(WorldObject*& target) - { - if (Unit* unit = target->ToUnit()) - unit->CastSpell(nullptr, SPELL_LAVA_ERUPTION_VISUAL); - } - - void Register() override - { - OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_flame_warden_lava_eruption_SpellScript::OnTargetSelect, EFFECT_0, TARGET_DEST_TARGET_ENEMY); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_flame_warden_lava_eruption_SpellScript(); - } -}; - // 77333 Whirling Winds: This script handles Whirling Wind's movement. class spell_whirling_winds_movement : public SpellScriptLoader { @@ -897,7 +864,6 @@ void AddSC_boss_anraphet() new npc_brann_bronzebeard_anraphet(); new npc_alpha_beam(); new npc_omega_stance(); - new spell_flame_warden_lava_eruption(); new spell_whirling_winds_movement(); new spell_anraphet_destruction_protocol(); new spell_anraphet_alpha_beams(); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index e0c22ae16d2..2993e9a6483 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -103,7 +103,8 @@ enum DruidSpellIconIds SPELL_ICON_ID_NATURES_BOUNTY = 197, SPELL_ICON_ID_DREAMSTATE = 2255, SPELL_ICON_ID_GLYPH_OF_INNERVATE = 62, - SPELL_ICON_ID_EUPHORIA = 4431 + SPELL_ICON_ID_EUPHORIA = 4431, + SPELL_ICON_ID_SAVAGE_DEFENDER = 146, }; enum MiscSpells @@ -128,7 +129,7 @@ class spell_dru_berserk : public AuraScript void Register() override { - AfterEffectApply += AuraEffectApplyFn(spell_dru_berserk::HandleEffectApply, EFFECT_1, SPELL_AURA_ADD_FLAT_MODIFIER, AURA_EFFECT_HANDLE_REAL); + AfterEffectApply += AuraEffectApplyFn(spell_dru_berserk::HandleEffectApply, EFFECT_1, SPELL_AURA_ADD_PCT_MODIFIER, AURA_EFFECT_HANDLE_REAL); } }; @@ -892,53 +893,27 @@ class spell_dru_rip : public SpellScriptLoader }; // 62606 - Savage Defense -class spell_dru_savage_defense : public SpellScriptLoader +class spell_dru_savage_defense : public AuraScript { - public: - spell_dru_savage_defense() : SpellScriptLoader("spell_dru_savage_defense") { } + PrepareAuraScript(spell_dru_savage_defense); - class spell_dru_savage_defense_AuraScript : public AuraScript - { - PrepareAuraScript(spell_dru_savage_defense_AuraScript); + void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + Unit* target = GetTarget(); - public: - spell_dru_savage_defense_AuraScript() - { - absorbPct = 0; - } + uint32 absorbPct = GetSpellInfo()->Effects[EFFECT_0].CalcValue(target); + if (AuraEffect* masteryAurEff = target->GetDummyAuraEffect(SPELLFAMILY_HUNTER, SPELL_ICON_ID_SAVAGE_DEFENDER, EFFECT_0)) // no idea why hunter... + absorbPct += masteryAurEff->GetAmount(); - private: - uint32 absorbPct; + int32 amount = uint32(CalculatePct(GetTarget()->GetTotalAttackPowerValue(BASE_ATTACK), absorbPct)); + target->CastCustomSpell(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, SPELLVALUE_BASE_POINT0, amount, target, true); + } - bool Load() override - { - absorbPct = GetSpellInfo()->Effects[EFFECT_0].CalcValue(GetCaster()); - return true; - } - - void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/) - { - // Set absorbtion amount to unlimited - amount = -1; - } - - void Absorb(AuraEffect* aurEff, DamageInfo & /*dmgInfo*/, uint32 & absorbAmount) - { - absorbAmount = uint32(CalculatePct(GetTarget()->GetTotalAttackPowerValue(BASE_ATTACK), absorbPct)); - aurEff->SetAmount(0); - } - - void Register() override - { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_savage_defense_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB); - OnEffectAbsorb += AuraEffectAbsorbFn(spell_dru_savage_defense_AuraScript::Absorb, EFFECT_0); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_dru_savage_defense_AuraScript(); - } + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_dru_savage_defense::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } }; // 52610 - Savage Roar @@ -1906,7 +1881,7 @@ void AddSC_druid_spell_scripts() new spell_dru_predatory_strikes(); new spell_dru_rejuvenation(); new spell_dru_rip(); - new spell_dru_savage_defense(); + RegisterAuraScript(spell_dru_savage_defense); new spell_dru_savage_roar(); new spell_dru_starfall_dummy(); new spell_dru_stampede();