diff --git a/common/ruletypes.h b/common/ruletypes.h index 7102c59c1..f3c22ce5d 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -226,6 +226,8 @@ RULE_INT(Character, ClearXTargetDelay, 10, "Seconds between uses of the #clearxt RULE_BOOL(Character, PreventMountsFromZoning, false, "Enable to prevent mounts from zoning - Prior to December 15, 2004 this is enabled.") RULE_BOOL(Character, GroupInvitesRequireTarget, false, "Enable to require players to have invitee on target (Disables /invite name) - Classic Style") RULE_BOOL(Character, PlayerTradingLoreFeedback, true, "If enabled, during a player to player trade, if lore items exist, it will output which items.") +RULE_INT(Character, MendAlwaysSucceedValue, 199, "Value at which mend will always succeed its skill check. Default: 199") +RULE_BOOL(Character, SneakAlwaysSucceedOver100, false, "When sneak skill is over 100, always succeed sneak/hide. Default: false") RULE_CATEGORY_END() RULE_CATEGORY(Mercs) diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 32e918988..846259b53 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -10434,7 +10434,7 @@ void Client::Handle_OP_Mend(const EQApplicationPacket *app) int mendhp = GetMaxHP() / 4; int currenthp = GetHP(); - if (zone->random.Int(0, 199) < (int)GetSkill(EQ::skills::SkillMend)) { + if (zone->random.Int(0, RuleI(Character, MendAlwaysSucceedValue)) < (int)GetSkill(EQ::skills::SkillMend)) { int criticalchance = spellbonuses.CriticalMend + itembonuses.CriticalMend + aabonuses.CriticalMend; @@ -14644,12 +14644,18 @@ void Client::Handle_OP_Sneak(const EQApplicationPacket *app) sa_out->parameter = 0; entity_list.QueueClients(this, outapp, true); safe_delete(outapp); - } - else { + } else { CheckIncreaseSkill(EQ::skills::SkillSneak, nullptr, 5); } + float hidechance = ((GetSkill(EQ::skills::SkillSneak) / 300.0f) + .25) * 100; + + if (RuleB(Character, SneakAlwaysSucceedOver100)) { + hidechance = std::max(10, (int)GetSkill(EQ::skills::SkillSneak)); + } + float random = zone->random.Real(0, 99); + if (!was && random < hidechance) { sneaking = true; }