From 898b1ea4d1b2656d4d7180f0eabc8a39397db2bc Mon Sep 17 00:00:00 2001 From: KayenEQ Date: Thu, 16 Dec 2021 07:23:11 -0500 Subject: [PATCH] Update attack.cpp (#1892) --- zone/attack.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/zone/attack.cpp b/zone/attack.cpp index 633383d17..30b61f4a2 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -5286,28 +5286,31 @@ bool Mob::TryRootFadeByDamage(int buffslot, Mob* attacker) { - Root break chance values obtained from live parses. */ - if (!attacker || !spellbonuses.Root[SBIndex::ROOT_EXISTS] || spellbonuses.Root[SBIndex::ROOT_BUFFSLOT] < 0) + if (!attacker || !spellbonuses.Root[SBIndex::ROOT_EXISTS] || spellbonuses.Root[SBIndex::ROOT_BUFFSLOT] < 0) { return false; + } + + if (IsDetrimentalSpell(buffs[spellbonuses.Root[SBIndex::ROOT_BUFFSLOT]].spellid) && spellbonuses.Root[SBIndex::ROOT_BUFFSLOT] != buffslot) { - if (IsDetrimentalSpell(spellbonuses.Root[SBIndex::ROOT_BUFFSLOT]) && spellbonuses.Root[SBIndex::ROOT_BUFFSLOT] != buffslot) { int BreakChance = RuleI(Spells, RootBreakFromSpells); - BreakChance -= BreakChance * buffs[spellbonuses.Root[SBIndex::ROOT_BUFFSLOT]].RootBreakChance / 100; int level_diff = attacker->GetLevel() - GetLevel(); //Use baseline if level difference <= 1 (ie. If target is (1) level less than you, or equal or greater level) - if (level_diff == 2) + if (level_diff == 2) { BreakChance = (BreakChance * 80) / 100; //Decrease by 20%; - - else if (level_diff >= 3 && level_diff <= 20) + } + else if (level_diff >= 3 && level_diff <= 20) { BreakChance = (BreakChance * 60) / 100; //Decrease by 40%; - - else if (level_diff > 21) + } + else if (level_diff > 21) { BreakChance = (BreakChance * 20) / 100; //Decrease by 80%; + } - if (BreakChance < 1) + if (BreakChance < 1) { BreakChance = 1; + } if (zone->random.Roll(BreakChance)) {