diff options
| -rw-r--r-- | sql/updates/world/master/2021_03_17_00_world_2017_12_20_00_world.sql | 13 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 14 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 42 |
3 files changed, 69 insertions, 0 deletions
diff --git a/sql/updates/world/master/2021_03_17_00_world_2017_12_20_00_world.sql b/sql/updates/world/master/2021_03_17_00_world_2017_12_20_00_world.sql new file mode 100644 index 00000000000..b12e6abd98d --- /dev/null +++ b/sql/updates/world/master/2021_03_17_00_world_2017_12_20_00_world.sql @@ -0,0 +1,13 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (45092/*, 50871*/); +INSERT INTO `spell_proc` (`SpellId`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `ProcsPerMinute`, `Chance`, `Cooldown`, `Charges`) VALUES +(45092, 0x0, 0, 0x00000000, 0x00000000, 0x00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0); -- Faction, Spar Buddy (SERVERSIDE) - needed to drop charge +-- (50871, 0x0, 9, 0x00000000, 0x40000000, 0x00000000, 0x0, 0x1, 0x2, 0x2, 0x0, 0, 0, 0, 0); -- Savage Rend + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_gen_aura_of_fear'/*,'spell_gen_choking_vines'*/); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(28313, 'spell_gen_aura_of_fear'); +-- (35244, 'spell_gen_choking_vines'); + +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gen_proc_charge_drop_only' AND `spell_id`=45092; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45092, 'spell_gen_proc_charge_drop_only'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 5b7f34d737f..206e5a35cac 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4371,6 +4371,20 @@ void SpellMgr::LoadSpellInfoCorrections() }); // ENDOF ISLE OF CONQUEST SPELLS + // Aura of Fear + ApplySpellFix({ 40453 }, [](SpellInfo* spellInfo) + { + // Bad DBC data? Copying 25820 here due to spell description + // either is a periodic with chance on tick, or a proc + + ApplySpellEffectFix(spellInfo, EFFECT_0, [](SpellEffectInfo* spellEffectInfo) + { + spellEffectInfo->ApplyAuraName = SPELL_AURA_PROC_TRIGGER_SPELL; + spellEffectInfo->ApplyAuraPeriod = 0; + }); + spellInfo->ProcChance = 10; + }); + // // FIRELANDS SPELLS // diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 7ac8911f369..c45451c869a 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -321,6 +321,31 @@ class spell_gen_aura_of_anger : public AuraScript } }; +// 28313 - Aura of Fear +class spell_gen_aura_of_fear : public AuraScript +{ + PrepareAuraScript(spell_gen_aura_of_fear); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_0)->TriggerSpell }); + } + + void PeriodicTick(AuraEffect const* aurEff) + { + PreventDefaultAction(); + if (!roll_chance_i(GetSpellInfo()->ProcChance)) + return; + + GetTarget()->CastSpell(nullptr, GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell, true); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_gen_aura_of_fear::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } +}; + enum ServiceUniform { // Spells @@ -2132,6 +2157,21 @@ class spell_gen_proc_below_pct_damaged : public SpellScriptLoader } }; +class spell_gen_proc_charge_drop_only : public AuraScript +{ + PrepareAuraScript(spell_gen_proc_charge_drop_only); + + void HandleChargeDrop(ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + } + + void Register() override + { + OnProc += AuraProcFn(spell_gen_proc_charge_drop_only::HandleChargeDrop); + } +}; + enum ParachuteSpells { SPELL_PARACHUTE = 45472, @@ -3853,6 +3893,7 @@ void AddSC_generic_spell_scripts() RegisterAuraScript(spell_gen_animal_blood); RegisterAuraScript(spell_gen_arena_drink); RegisterAuraScript(spell_gen_aura_of_anger); + RegisterAuraScript(spell_gen_aura_of_fear); RegisterAuraScript(spell_gen_aura_service_uniform); RegisterAuraScript(spell_gen_av_drekthar_presence); RegisterSpellScript(spell_gen_bandage); @@ -3911,6 +3952,7 @@ void AddSC_generic_spell_scripts() new spell_gen_proc_below_pct_damaged("spell_item_corpse_tongue_coin_heroic"); new spell_gen_proc_below_pct_damaged("spell_item_petrified_twilight_scale"); new spell_gen_proc_below_pct_damaged("spell_item_petrified_twilight_scale_heroic"); + RegisterAuraScript(spell_gen_proc_charge_drop_only); RegisterAuraScript(spell_gen_parachute); RegisterSpellScript(spell_gen_pet_summoned); RegisterSpellScript(spell_gen_profession_research); |
