diff --git a/common/ruletypes.h b/common/ruletypes.h index 78269a598..314cdb0a9 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -200,6 +200,7 @@ RULE_INT(Character, ExperiencePercentCapPerKill, -1, "Caps the percentage of exp RULE_BOOL(Character, EnableGroupEXPModifier, true, "Enable or disable the group experience modifier based on number of players in group, default is true") RULE_REAL(Character, GroupMemberEXPModifier, 0.2, "Sets the group experience modifier per members between 2 and 5, default is 0.2") RULE_REAL(Character, FullGroupEXPModifier, 2.16, "Sets the group experience modifier for a full group, default is 2.16") +RULE_BOOL(Character, IgnoreLevelBasedHasteCaps, false, "Ignores hard coded level based haste caps.") RULE_CATEGORY_END() RULE_CATEGORY(Mercs) diff --git a/zone/client_mods.cpp b/zone/client_mods.cpp index c6eb3f31c..6fff0c2a4 100644 --- a/zone/client_mods.cpp +++ b/zone/client_mods.cpp @@ -1031,14 +1031,14 @@ int Client::CalcHaste() h += spellbonuses.hastetype2 > 10 ? 10 : spellbonuses.hastetype2; } // 26+ no cap, 1-25 10 - if (level > 25) { // 26+ + if (level > 25 || RuleB(Character, IgnoreLevelBasedHasteCaps)) { // 26+ h += itembonuses.haste; } else { // 1-25 h += itembonuses.haste > 10 ? 10 : itembonuses.haste; } // 60+ 100, 51-59 85, 1-50 level+25 - if (level > 59) { // 60+ + if (level > 59 || RuleB(Character, IgnoreLevelBasedHasteCaps)) { // 60+ cap = RuleI(Character, HasteCap); } else if (level > 50) { // 51-59 @@ -1052,7 +1052,7 @@ int Client::CalcHaste() h = cap; } // 51+ 25 (despite there being higher spells...), 1-50 10 - if (level > 50) { // 51+ + if (level > 50 || RuleB(Character, IgnoreLevelBasedHasteCaps)) { // 51+ cap = RuleI(Character, Hastev3Cap); if (spellbonuses.hastetype3 > cap) { h += cap;