aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-12-20 02:24:06 -0300
committerfunjoker <funjoker109@gmail.com>2021-04-15 05:53:27 +0200
commit16ec008290861573fac7137af054be6d9642712f (patch)
tree0d89126d2b3dd946d77d2409e0de5f77e81b108d /src
parentf97e4ad1f462597a0702cfd2130fbac9c46a7eab (diff)
Core/Spells: fix some DB errors
Ref #18542 - Implemented Choking Vines transformation at 5 stacks - Implemented periodic Aura of Fear ticks - Fixed Savage Rend passive proccing on anything (raptor pets) (cherry picked from commit de9f9042699e849af38363430cd9aa390c62d1a2) (cherry picked from commit 32e2207ab9863b9d79b994afd929730ca04bbce8) (cherry picked from commit 9934a43e0948b6dfd46bd549e6a1c7028c40e22d)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellMgr.cpp14
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp42
2 files changed, 56 insertions, 0 deletions
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);