aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2021_03_17_00_world_2017_12_20_00_world.sql13
-rw-r--r--src/server/game/Spells/SpellMgr.cpp14
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp42
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);