diff --git a/RolemasterUnified_Official/rolemasterunified.html b/RolemasterUnified_Official/rolemasterunified.html index a405133533..f75d563d9c 100644 --- a/RolemasterUnified_Official/rolemasterunified.html +++ b/RolemasterUnified_Official/rolemasterunified.html @@ -3861,6 +3861,9 @@ Lists Selected / 6
Parry + + + Attack Mod DB Mod @@ -6654,7 +6657,7 @@ Sheet Version:
-Revision 5656a2fbc2c74c6603b0e94e6dceb860211ee194 +Revision 9bb8529468cbd998b2665c0f0b28e26555c60215
@@ -10039,7 +10042,8 @@ function spellGenerateMesssage(spelltype, result, casterlevel) { * One for every level for 0-20, then event 5 after that up to 90 (hello treasure law). */ let spellcastevents = []; -["ownbase", "open", "closed", "otherbaseownrealm", "openother"].forEach((listtype) => { +["ownbase", "open", "closed", "otherbaseownrealm", "openother", + "closedother", "otherbaseother", "arcane"].forEach((listtype) => { for (let i = 1 ; i <= 20 ; i ++) { spellcastevents.push(`clicked:repeating_spelllistspell${listtype}:castspell${i}`); } @@ -16119,7 +16123,6 @@ function sizeFromNumeric(value) { // - cdata.statuspenalty = values.statuspenalty || 0; // - cdata.extracrit = (number is relative crit type) - // // Results are: // - attackresult -> "Hit/Miss/Fumble" // - finalroll -> Either the UM if a fumble, else the modified attack roll @@ -16319,6 +16322,7 @@ function sizeFromNumeric(value) { return scale; } + // - cdata.restrictedparry = true || falsey attacks.startAttack = function(cdata) { let attackmoddescription = ''; let attackmod = 0; @@ -16397,7 +16401,12 @@ function sizeFromNumeric(value) { attackmod += cdata.statuseffect; } - if (cdata.parrymod > 0) { + if (cdata.restrictedparry && cdata.parrymod > 0) { + const hparry = Math.floor(parseIntDefault(cdata.parrymod, 0) / 2) + attackmoddescription += ` -${hparry} ` + + `[Parry (Restricted: ${cdata.parrymod} / 2)]`; + attackmod -= hparry; + } else if (cdata.parrymod > 0) { attackmoddescription += ` -${cdata.parrymod} [Parry]`; attackmod -= cdata.parrymod; } @@ -16487,7 +16496,7 @@ function sizeFromNumeric(value) { 'statuspenalty', 'statuseffect', 'target_name', 'target_db', 'target_at', 'target_size', 'target_crit', - 'parrymod', 'othermod', + 'parrymod', 'othermod', 'restrictedparry', // Ranged Penalty from armor 'ranged_penalty', // Used depending on type: So get melee, missile and spell @@ -16532,6 +16541,7 @@ function sizeFromNumeric(value) { cdata.apused = parseIntDefault(values.aptrack, 0); cdata.ranged_penalty = parseIntDefault(values.ranged_penalty, 0); cdata.actionselect = values.actionselect || 'nothing'; + cdata.restrictedparry = values.restrictedparry == 'on' ? true : false; attacks.startAttack(cdata); }); } diff --git a/RolemasterUnified_Official/sheet.json b/RolemasterUnified_Official/sheet.json index c99dcd8ef7..6ebbc17229 100644 --- a/RolemasterUnified_Official/sheet.json +++ b/RolemasterUnified_Official/sheet.json @@ -111,5 +111,5 @@ "description": "Allow overcasting without the round of prep." } ], - "version": "1765350298" + "version": "1765935246" } diff --git a/RolemasterUnified_Official/updates.md b/RolemasterUnified_Official/updates.md index 487871495c..793fe7c1be 100644 --- a/RolemasterUnified_Official/updates.md +++ b/RolemasterUnified_Official/updates.md @@ -1,3 +1,8 @@ +# 2025-12-18 + +- Make spells on Other Realm & Arcane clickable +- Add restricted parry option. + # 2025-12-11 - Add option to allow overcasting anytime. (Sheet version 17)