From 8204a3e93d5563d881c5f9ceceb6007637a0b8cf Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 18 Jan 2021 19:01:48 +0100 Subject: [PATCH] Core/Spells: Bandit's Guile will now require a certain amount of successful procs before gaining the Insight buffs closes #221 --- src/server/scripts/Spells/spell_rogue.cpp | 36 +++++++++++++++-------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 1a0cff05b9..ada3a63041 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -1405,9 +1405,6 @@ class spell_rog_bandits_guile : public AuraScript bool CheckProc(ProcEventInfo& eventInfo) { - if (GetTarget()->HasAura(SPELL_ROGUE_DEEP_INSIGHT, GetTarget()->GetGUID())) - return false; - return eventInfo.GetProcTarget(); } @@ -1419,6 +1416,9 @@ class spell_rog_bandits_guile : public AuraScript uint32 spellId = SPELL_ROGUE_SHALLOW_INSIGHT; int32 basepoints = 10; + // Todo: validate this for lower ranks. 3/3 requires 4 hits. + uint8 neededProcs = uint8(7 - GetSpellInfo()->GetRank()); + // We are striking a new opponent, reset progress if (_recentTargetGUID != procTarget->GetGUID()) { @@ -1426,24 +1426,33 @@ class spell_rog_bandits_guile : public AuraScript target->RemoveAurasDueToSpell(SPELL_ROGUE_MODERATE_INSIGHT, target->GetGUID()); target->RemoveAurasDueToSpell(SPELL_ROGUE_DEEP_INSIGHT, target->GetGUID()); _recentTargetGUID = procTarget->GetGUID(); + _procStrikes = 0; } + _procStrikes = std::min(_procStrikes + 1, neededProcs * 3); + + if (_procStrikes < neededProcs) + return; + // We are increasing our insight on the opponent - if (target->HasAura(SPELL_ROGUE_SHALLOW_INSIGHT, target->GetGUID())) + if (_procStrikes >= neededProcs * 3) { - target->RemoveAurasDueToSpell(SPELL_ROGUE_SHALLOW_INSIGHT, target->GetGUID()); - spellId = SPELL_ROGUE_MODERATE_INSIGHT; - basepoints = 20; - } - else if (target->HasAura(SPELL_ROGUE_MODERATE_INSIGHT, target->GetGUID())) - { - target->RemoveAurasDueToSpell(SPELL_ROGUE_MODERATE_INSIGHT, target->GetGUID()); spellId = SPELL_ROGUE_DEEP_INSIGHT; basepoints = 30; } + else if (_procStrikes >= neededProcs * 2) + { + spellId = SPELL_ROGUE_MODERATE_INSIGHT; + basepoints = 20; + } - target->CastSpell(target, spellId, true); - target->CastSpell(procTarget, SPELL_ROGUE_BANDITS_GUILE, CastSpellExtraArgs(true).AddSpellBP0(basepoints).AddSpellMod(SPELLVALUE_BASE_POINT1, basepoints)); + if (_procStrikes >= neededProcs * 3 && target->HasAura(SPELL_ROGUE_MODERATE_INSIGHT, target->GetGUID())) + target->RemoveAurasDueToSpell(SPELL_ROGUE_MODERATE_INSIGHT, target->GetGUID()); + else if (_procStrikes >= neededProcs * 2 && target->HasAura(SPELL_ROGUE_SHALLOW_INSIGHT, target->GetGUID())) + target->RemoveAurasDueToSpell(SPELL_ROGUE_SHALLOW_INSIGHT, target->GetGUID()); + + target->CastSpell(target, spellId); + target->CastSpell(procTarget, SPELL_ROGUE_BANDITS_GUILE, CastSpellExtraArgs().AddSpellBP0(basepoints).AddSpellMod(SPELLVALUE_BASE_POINT1, basepoints)); } void Register() override @@ -1453,6 +1462,7 @@ class spell_rog_bandits_guile : public AuraScript } private: ObjectGuid _recentTargetGUID; + uint8 _procStrikes = 0; }; // 14181 - Relentless Strikes