diff --git a/sql/updates/world/4.3.4/2021_06_12_00_world.sql b/sql/updates/world/4.3.4/2021_06_12_00_world.sql new file mode 100644 index 0000000000..ebac399cee --- /dev/null +++ b/sql/updates/world/4.3.4/2021_06_12_00_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_proc` WHERE `SpellId`= 1776; +INSERT INTO `spell_proc` (`SpellId`, `SpellTypeMask`, `Charges`) VALUES +(1776, 1, 1); + +DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_rog_gouge'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(1776, 'spell_rog_gouge'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 796a11e76f..4a6c4ae82c 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -5916,6 +5916,15 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_1].MiscValue = 3; }); + // Sanguinary Vein + ApplySpellFix({ + 79146, + 79147, + },[](SpellInfo* spellInfo) + { + spellInfo->SpellFamilyName = SPELLFAMILY_ROGUE; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index a65f77321f..5e07d4deeb 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -82,7 +82,8 @@ enum RogueSpells enum RogueSpellIcons { ICON_ROGUE_IMPROVED_RECUPERATE = 4819, - ROGUE_ICON_ID_SERRATED_BLADES = 2004 + ROGUE_ICON_ID_SERRATED_BLADES = 2004, + ROGUE_ICON_ID_SANGUINARY_VEIN = 4821 }; // 13877, 33735, (check 51211, 65956) - Blade Flurry @@ -1489,6 +1490,28 @@ class spell_rog_relentless_strikes : public SpellScript } }; +// 1776 - Gouge +class spell_rog_gouge : public AuraScript +{ + bool CheckProc(ProcEventInfo& eventInfo) + { + // Only the caster's bleed effects may cancel the effect + if (Unit* actor = eventInfo.GetActor()) + if (actor == GetCaster() && eventInfo.GetSpellInfo()) + if (eventInfo.GetSpellInfo()->SpellFamilyName == SPELLFAMILY_ROGUE && eventInfo.GetSpellInfo()->Mechanic == MECHANIC_BLEED) + if (AuraEffect const* aurEff = actor->GetDummyAuraEffect(SPELLFAMILY_ROGUE, ROGUE_ICON_ID_SANGUINARY_VEIN, EFFECT_1)) + if (roll_chance_i(aurEff->GetAmount())) + return false; + + return true; + } + + void Register() override + { + DoCheckProc.Register(&spell_rog_gouge::CheckProc); + } +}; + void AddSC_rogue_spell_scripts() { RegisterSpellScript(spell_rog_bandits_guile); @@ -1502,6 +1525,7 @@ void AddSC_rogue_spell_scripts() RegisterSpellScript(spell_rog_envenom); RegisterSpellScript(spell_rog_eviscerate); RegisterSpellScript(spell_rog_glyph_of_hemorrhage); + RegisterSpellScript(spell_rog_gouge); RegisterSpellScript(spell_rog_improved_expose_armor); new spell_rog_killing_spree(); RegisterSpellScript(spell_rog_main_gauche);