From ae60985a040169dcd387f074697462e46a4c99a6 Mon Sep 17 00:00:00 2001 From: Brett Nash Date: Mon, 18 Nov 2024 20:42:21 -0800 Subject: [PATCH] RolemasterUnified Official: RR and misc fixes. - Stats are now right aligned. - Fix update for specialised skills. - RRs: - now have a box. Make them standout more. - Use the pretty name. not the attribute name. - Number now rolls with modifier. - Fix an issue causing some characters to have problems levelling up. - Fixed specialisations show the skill name when rolling. - Handle knacks for Alchemists. --- .../rolemasterunified.css | 31 +- .../rolemasterunified.html | 308 +++++++++++------- RolemasterUnified_Official/sheet.json | 2 +- RolemasterUnified_Official/updates.md | 12 + 4 files changed, 227 insertions(+), 126 deletions(-) diff --git a/RolemasterUnified_Official/rolemasterunified.css b/RolemasterUnified_Official/rolemasterunified.css index 95eed9ba6b6c..5589718ea429 100644 --- a/RolemasterUnified_Official/rolemasterunified.css +++ b/RolemasterUnified_Official/rolemasterunified.css @@ -50,6 +50,10 @@ h3 { font-family: 'PragRoman', 'myPragRoman', 'IM Fell DW Pica', 'Kaushan Script', 'Chalkduster', 'Trattatello', 'Luminari', fantasy, serif; } +.inline { + display: inline !important; +} + .sheet-hangingindent, .hangingindent { padding-left: 1em; text-indent: -1em; @@ -229,6 +233,8 @@ input:not(:checked).toggle + .toggler { display: none; } } .stat_attr { grid-column: 3; + text-align: right; + margin-right: 0.3em; } @@ -719,7 +725,6 @@ div.repcontrol { } -/* Should style selects at some point */ .fancyselect { width: 10em; padding: 1px; @@ -813,6 +818,30 @@ button.nodie { } +.sheet-rolltemplate-rmurr { + padding: 1rem; + width: 95%; + box-shadow: 0 5px 20px 0 rgba(0,0,0,0.25), 0 5px 10px 0 rgba(0,0,0,0.17); + background-color: #ADF4F5; + border-radius: 0.5rem; + line-height: 1.5em; + border-left: 0 solid #F5ADC4; + transition: border-left 300ms ease-in-out, padding-left 300ms ease-in-out; +} + + +.sheet-rolltemplate-darkmode.sheet-rolltemplate-rmurr { + background-image: linear-gradient(to right bottom, #000000, #923cb5); + box-shadow: 0 2px 5px 0 rgba(241,242,11,0.5), 0 4px 6px 0 rgba(248,161,27,0.17); +} + +.sheet-rolltemplate-rmurr:hover { + box-shadow: 0 4px 7px 0 rgba(241,242,11,0.8), 0 6px 8px 0 rgba(248,161,27,0.5); +} + + + + .sheet-rolltemplate-rmustatroll .sheet-statroll { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; diff --git a/RolemasterUnified_Official/rolemasterunified.html b/RolemasterUnified_Official/rolemasterunified.html index 8534bb49dd1f..773c6e3f5423 100644 --- a/RolemasterUnified_Official/rolemasterunified.html +++ b/RolemasterUnified_Official/rolemasterunified.html @@ -139,7 +139,7 @@ -
+
{{who}} rolled an {{computed::firstroll}} = {{computed::message}} for a {{type}} RR.
@@ -399,7 +399,7 @@

Base Lists

-




















+
Lists Selected / 6 @@ -408,7 +408,7 @@

Base Lists

Your chosen profession has six base lists.
- List Name
List Name
List Name
List Name
List Name
List Name
+ List Name
List Name
List Name
List Name
List Name
List Name
@@ -2625,6 +2625,18 @@

Actions

Round
+
Defense
+
+
+
DB
+ +
@@ -3061,29 +3073,29 @@

RRs

y0 - channelingin -
-
y
+ channelingin +
+
y
y0 - essenceem -
-
y
+ essenceem + +
y
y0 - mentalismpr -
-
y
+ mentalismpr + +
y
y0 - physicalco -
-
y
+ physicalco + +
y
y0 - fearsd -
-
y
+ fearsd + +
y
@@ -5324,8 +5336,8 @@

Custom Spell List


-

Rerun the initial charactermancer. Warning this may add all sorts of weird results to your character. -This is not for usual use.

+

Rerun the initial charactermancer. Warning this will break your character. +This is not for usual use.

@@ -5343,7 +5355,7 @@

Custom Spell List


-Revision 232ac6239a389a9fff6ffa1fcb511c5f307cc398 +Revision 624786d99fedd96187dc1c0bd0628ea8183cb488
@@ -5610,14 +5622,14 @@

Custom Spell List

category: 'combattraining', stat: 'st', specializations: [ - { display: 'Blade', aname: 'blade'}, - { display: 'Chain', aname: 'chain'}, - { display: 'Hafted', aname: 'hafted'}, - { display: 'Greater Blade', aname: 'greaterblade'}, - { display: 'Greater Chain', aname: 'greaterchain'}, - { display: 'Greater Hafted', aname: 'greaterhafter'}, - { display: 'Pole Arm', aname: 'polearm'}, - { display: 'Exotic', aname: 'meleeexotic'}, + { display: 'Blade', aname: 'blade', fulldisplay: 'Melee Weapons: Blade' }, + { display: 'Chain', aname: 'chain', fulldisplay: 'Melee Weapons: Chain' }, + { display: 'Hafted', aname: 'hafted', fulldisplay: 'Melee Weapons: Hafted' }, + { display: 'Greater Blade', aname: 'greaterblade', fulldisplay: 'Melee Weapons: Greater Blade' }, + { display: 'Greater Chain', aname: 'greaterchain', fulldisplay: 'Melee Weapons: Greater Chain' }, + { display: 'Greater Hafted', aname: 'greaterhafter', fulldisplay: 'Melee Weapons: Greater Hafted' }, + { display: 'Pole Arm', aname: 'polearm', fulldisplay: 'Melee Weapons: Pole Arm' }, + { display: 'Exotic', aname: 'meleeexotic', fulldisplay: 'Melee Weapons: Exotic' }, ], }, { display: 'Ranged Weapons', @@ -5625,11 +5637,11 @@

Custom Spell List

category: 'combattraining', stat: 'ag', specializations: [ - { display: 'Bow', aname: 'bow'}, - { display: 'Crossbow', aname: 'crossbow'}, - { display: 'Sling', aname: 'sling'}, - { display: 'Thrown', aname: 'thrown'}, - { display: 'Exotic', aname: 'rangedexotic'}, + { display: 'Bow', aname: 'bow', fulldisplay: 'Ranged Weapons: Bow' }, + { display: 'Crossbow', aname: 'crossbow', fulldisplay: 'Ranged Weapons: Crossbow' }, + { display: 'Sling', aname: 'sling', fulldisplay: 'Ranged Weapons: Sling' }, + { display: 'Thrown', aname: 'thrown', fulldisplay: 'Ranged Weapons: Thrown' }, + { display: 'Exotic', aname: 'rangedexotic', fulldisplay: 'Ranged Weapons: Exotic' }, ], }, { display: 'Shield', @@ -5641,16 +5653,16 @@

Custom Spell List

aname: 'unarmed', category: 'combattraining', specializations: [ - { display: 'Strikes', aname: 'strikes', stat: 'st'}, - { display: 'Sweeps & Throws', aname: 'sweepsthrows', stat: 'ag'}, - { display: 'Wrestling', aname: 'wrestling', stat: 'ag'}, - { display: 'Beak', aname: 'beak', stat: 'st'}, - { display: 'Bite', aname: 'bite', stat: 'st'}, - { display: 'Claw', aname: 'claw', stat: 'st'}, - { display: 'Horn', aname: 'horn', stat: 'st'}, - { display: 'Ram', aname: 'ram', stat: 'st'}, - { display: 'Stinger', aname: 'stinger', stat: 'ag'}, - { display: 'Trample', aname: 'trample', stat: 'st'}, + { display: 'Strikes', aname: 'strikes', stat: 'st', fulldisplay: 'Unarmed: Strikes' }, + { display: 'Sweeps & Throws', aname: 'sweepsthrows', stat: 'ag', fulldisplay: 'Unarmed: Sweeps & Throws' }, + { display: 'Wrestling', aname: 'wrestling', stat: 'ag', fulldisplay: 'Unarmed: Wrestling' }, + { display: 'Beak', aname: 'beak', stat: 'st', fulldisplay: 'Unarmed: Beak' }, + { display: 'Bite', aname: 'bite', stat: 'st', fulldisplay: 'Unarmed: Bite' }, + { display: 'Claw', aname: 'claw', stat: 'st', fulldisplay: 'Unarmed: Claw' }, + { display: 'Horn', aname: 'horn', stat: 'st', fulldisplay: 'Unarmed: Horn' }, + { display: 'Ram', aname: 'ram', stat: 'st', fulldisplay: 'Unarmed: Ram' }, + { display: 'Stinger', aname: 'stinger', stat: 'ag', fulldisplay: 'Unarmed: Stinger' }, + { display: 'Trample', aname: 'trample', stat: 'st', fulldisplay: 'Unarmed: Trample' }, ], }, ] @@ -5757,20 +5769,20 @@

Custom Spell List

category: 'environmental', stat: 're', specializations: [ - { display: 'Alpine (A)', aname: 'survivialalpine'}, - { display: 'Oceans (O)', aname: 'survivialoceans'}, - { display: 'Underground (U)', aname: 'survivialunderground'}, - { display: 'Ice Caps (I)', aname: 'survivialicecaps'}, - { display: 'Tundra (T)', aname: 'survivialtundra'}, - { display: 'Boreal Forest (B)', aname: 'survivialboreal'}, - { display: 'Desert Shrublands (X)', aname: 'survivialshrublands'}, - { display: 'Prairies & Steppes (P)', aname: 'survivialprairies'}, - { display: 'Temperate Forests (F)', aname: 'survivialtemperate'}, - { display: 'Hot Deserts (D)', aname: 'survivialhotdeserts'}, - { display: 'Savannas (S)', aname: 'survivialsavannas'}, - { display: 'Tropical Forest (J)', aname: 'survivialtropical'}, - { display: 'Urban', aname: 'survivialurban'}, - { display: 'Xeno', aname: 'survivialxeno'}, + { display: 'Alpine (A)', aname: 'survivialalpine', fulldisplay: 'Survival: Alpine (A)' }, + { display: 'Oceans (O)', aname: 'survivialoceans', fulldisplay: 'Survival: Oceans (O)' }, + { display: 'Underground (U)', aname: 'survivialunderground', fulldisplay: 'Survival: Underground (U)' }, + { display: 'Ice Caps (I)', aname: 'survivialicecaps', fulldisplay: 'Survival: Ice Caps (I)' }, + { display: 'Tundra (T)', aname: 'survivialtundra', fulldisplay: 'Survival: Tundra (T)' }, + { display: 'Boreal Forest (B)', aname: 'survivialboreal', fulldisplay: 'Survival: Boreal Forest (B)' }, + { display: 'Desert Shrublands (X)', aname: 'survivialshrublands', fulldisplay: 'Survival: Desert Shrublands (X)' }, + { display: 'Prairies & Steppes (P)', aname: 'survivialprairies', fulldisplay: 'Survival: Prairies & Steppes (P)' }, + { display: 'Temperate Forests (F)', aname: 'survivialtemperate', fulldisplay: 'Survival: Temperate Forests (F)' }, + { display: 'Hot Deserts (D)', aname: 'survivialhotdeserts', fulldisplay: 'Survival: Hot Deserts (D)' }, + { display: 'Savannas (S)', aname: 'survivialsavannas', fulldisplay: 'Survival: Savannas (S)' }, + { display: 'Tropical Forest (J)', aname: 'survivialtropical', fulldisplay: 'Survival: Tropical Forest (J)' }, + { display: 'Urban', aname: 'survivialurban', fulldisplay: 'Survival: Urban' }, + { display: 'Xeno', aname: 'survivialxeno', fulldisplay: 'Survival: Xeno' }, ], }, ] @@ -5807,10 +5819,10 @@

Custom Spell List

category: 'lore', stat: 're', specializations: [ - { display: 'Demon', aname: 'creatureloredemon'}, - { display: 'Dragon', aname: 'creatureloredragon'}, - { display: 'Faerie', aname: 'creaturelorefaerie'}, - { display: 'Undead', aname: 'creatureloreundead'}, + { display: 'Demon', aname: 'creatureloredemon', fulldisplay: 'Creature Lore: Demon' }, + { display: 'Dragon', aname: 'creatureloredragon', fulldisplay: 'Creature Lore: Dragon' }, + { display: 'Faerie', aname: 'creaturelorefaerie', fulldisplay: 'Creature Lore: Faerie' }, + { display: 'Undead', aname: 'creatureloreundead', fulldisplay: 'Creature Lore: Undead' }, ], }, { display: 'Historic Lore', @@ -5830,12 +5842,12 @@

Custom Spell List

category: 'lore', stat: 're', specializations: [ - { display: 'Bone/Horn', aname: 'materialslorebone'}, - { display: 'Fabrics', aname: 'materialslorefabric'}, - { display: 'Leather', aname: 'materialsloreleather'}, - { display: 'Metal', aname: 'materialsloremetal'}, - { display: 'Stone', aname: 'materialslorestone'}, - { display: 'Wood', aname: 'materialslorewood'}, + { display: 'Bone/Horn', aname: 'materialslorebone', fulldisplay: 'Materials Lore: Bone/Horn' }, + { display: 'Fabrics', aname: 'materialslorefabric', fulldisplay: 'Materials Lore: Fabrics' }, + { display: 'Leather', aname: 'materialsloreleather', fulldisplay: 'Materials Lore: Leather' }, + { display: 'Metal', aname: 'materialsloremetal', fulldisplay: 'Materials Lore: Metal' }, + { display: 'Stone', aname: 'materialslorestone', fulldisplay: 'Materials Lore: Stone' }, + { display: 'Wood', aname: 'materialslorewood', fulldisplay: 'Materials Lore: Wood' }, ], }, { display: 'Racial Lore', @@ -5995,9 +6007,9 @@

Custom Spell List

category: 'powermanipulation', stat: 'ag', specializations: [ - { display: 'Elemental Bolts', aname: 'elementalbolts'}, - { display: 'Illusionary Attacks', aname: 'illusionaryattacks'}, - { display: 'Hurling', aname: 'hurling'}, + { display: 'Elemental Bolts', aname: 'elementalbolts', fulldisplay: 'Directed Spell: Elemental Bolts' }, + { display: 'Illusionary Attacks', aname: 'illusionaryattacks', fulldisplay: 'Directed Spell: Illusionary Attacks' }, + { display: 'Hurling', aname: 'hurling', fulldisplay: 'Directed Spell: Hurling' }, ], }, { display: 'Power Development', @@ -6049,9 +6061,9 @@

Custom Spell List

category: 'social', stat: 'pr', specializations: [ - { display: 'Charm', aname: 'charm'}, - { display: 'Duping', aname: 'duping'}, - { display: 'Intimidation', aname: 'intimidation'}, + { display: 'Charm', aname: 'charm', fulldisplay: 'Influence: Charm' }, + { display: 'Duping', aname: 'duping', fulldisplay: 'Influence: Duping' }, + { display: 'Intimidation', aname: 'intimidation', fulldisplay: 'Influence: Intimidation' }, ], }, { display: 'Leadership', @@ -6081,14 +6093,14 @@

Custom Spell List

category: 'spellcasting', stat: 'me', specializations: [ - { display: 'Alteration', aname: 'alteration'}, - { display: 'Creation', aname: 'creation'}, - { display: 'Defensive', aname: 'defensive'}, - { display: 'Destruction', aname: 'destruction'}, - { display: 'Elemental', aname: 'elemental'}, - { display: 'Healing', aname: 'healing'}, - { display: 'Informational', aname: 'informational'}, - { display: 'Summoning & Transportation', aname: 'summoningtransportation'}, + { display: 'Alteration', aname: 'alteration', fulldisplay: 'Magical Ritual: Alteration' }, + { display: 'Creation', aname: 'creation', fulldisplay: 'Magical Ritual: Creation' }, + { display: 'Defensive', aname: 'defensive', fulldisplay: 'Magical Ritual: Defensive' }, + { display: 'Destruction', aname: 'destruction', fulldisplay: 'Magical Ritual: Destruction' }, + { display: 'Elemental', aname: 'elemental', fulldisplay: 'Magical Ritual: Elemental' }, + { display: 'Healing', aname: 'healing', fulldisplay: 'Magical Ritual: Healing' }, + { display: 'Informational', aname: 'informational', fulldisplay: 'Magical Ritual: Informational' }, + { display: 'Summoning & Transportation', aname: 'summoningtransportation', fulldisplay: 'Magical Ritual: Summoning & Transportation' }, ], }, { display: 'Open', @@ -6133,11 +6145,11 @@

Custom Spell List

category: 'subterfuge', stat: 'in', specializations: [ - { display: 'Directed Spells ', aname: 'ambushdirectedspells'}, - { display: 'Melee', aname: 'ambushmelee'}, - { display: 'Ranged', aname: 'ambushranged'}, - { display: 'Shield', aname: 'ambushshield'}, - { display: 'Unarmed', aname: 'ambushunarmed'}, + { display: 'Directed Spells ', aname: 'ambushdirectedspells', fulldisplay: 'Ambush: Directed Spells ' }, + { display: 'Melee', aname: 'ambushmelee', fulldisplay: 'Ambush: Melee' }, + { display: 'Ranged', aname: 'ambushranged', fulldisplay: 'Ambush: Ranged' }, + { display: 'Shield', aname: 'ambushshield', fulldisplay: 'Ambush: Shield' }, + { display: 'Unarmed', aname: 'ambushunarmed', fulldisplay: 'Ambush: Unarmed' }, ], }, { display: 'Concealment', @@ -6172,8 +6184,8 @@

Custom Spell List

category: 'technical', stat: 'me', specializations: [ - { display: 'Operation', aname: 'operation'}, - { display: 'Repair & Construction', aname: 'repairconstruction'}, + { display: 'Operation', aname: 'operation', fulldisplay: 'Mechanics: Operation' }, + { display: 'Repair & Construction', aname: 'repairconstruction', fulldisplay: 'Mechanics: Repair & Construction' }, ], }, { display: 'Traps', @@ -7115,7 +7127,6 @@

Custom Spell List

toget.push(basename + "_ranks"); getAttrsPending(toget, (attrs) => { - const aname = skill.aname; let [bonus, ranks, slog] = calculateSpecBonus(skill, attrs[basename + '_ranks_misc'], attrs[basename + '_misc'], false, pbonus, catbonus, log); @@ -7126,9 +7137,9 @@

Custom Spell List

let update = {[basename + "_bonus"]: bonus, [basename + "_info"]: slog}; if (ranks != 0) { - update[aname + "_ranks"] = ranks; - } else if (attrs[aname + "_ranks"] && attrs[name + "_ranks"] != "") { - update[aname + "_ranks"] = " "; // So there is something there; so set space + update[basename + "_ranks"] = ranks; + } else if (attrs[basename + "_ranks"] && attrs[basename + "_ranks"] != "") { + update[basename + "_ranks"] = " "; // So there is something there; so set space } setAttrsPending(update); }); @@ -7273,8 +7284,7 @@

Custom Spell List

// Look it up by anamee -> use the prefix const skill = RMUSkills.getSkillByName(prefix); if (skill) { - console.log(skill); - simplified.name = skill.display; + simplified.name = skill.fulldisplay ? skill.fulldisplay : skill.display; } } if (!simplified.name) { @@ -7626,26 +7636,29 @@

Custom Spell List

function initSpellListsCM(savedlists, profession, realm, costs, listranks) { const cmdata = getCharmancerData(); const lu = cmdata?.levelup; + + // Set the costs cmcategory-spellownbase-cost + setCharmancerText({ + "cmcategory-spellownbase-cost": costs.Base, + "cmcategory-spellopen-cost": costs.Open, + "cmcategory-spellclosed-cost": costs.Closed, + "cmcategory-spellotherbaseownrealm-cost": costs.Restricted + }); + + console.log("prevous / savedlist", lu, savedlists); const previousranks = {}; if (lu && savedlists && savedlists.length > 0) { // So we loop through; get each's visble name and then set the ranks based on that savedlists.forEach(listid => { const listranks = lu.values[listid + '_cmranks']; - if (!listranks.endsWith("0:0")) { + if (listranks && !listranks.endsWith("0:0")) { const listname = lu.values[listid + '_listname']; previousranks[listname] = listranks; } }); } - // Set the costs cmcategory-spellownbase-cost - setCharmancerText({ - "cmcategory-spellownbase-cost": costs.Base, - "cmcategory-spellopen-cost": costs.Open, - "cmcategory-spellclosed-cost": costs.Closed, - "cmcategory-spellotherbaseownrealm-cost": costs.Restricted - }); - + console.log("Pensing for base"); addPendingFunction("Base lists",()=> { _spellDoQuery(previousranks, `ListType:*${profession} Base*`, '', 'ownbase', costs['Base'], listranks); }); @@ -7861,7 +7874,7 @@

Custom Spell List

}, }; -const handNames = { "nohand": "No Hands", onehand: "One Hand", twohands: "Two Hands" }; +const handNames = { nohand: "No Hands", onehand: "One Hand", twohands: "Two Hands" }; const voiceNames = { novoice : "Silent", whisper: "Whisper", normal: "Normal Voice", shout: "Shouting" }; /* @@ -8352,7 +8365,7 @@

Custom Spell List

rrs = (function() { console.log("RRs init\n"); let exports = {} - + let rrs = { /**/ channeling: { display: 'Channeling', aname: 'channeling', stat: 'in' }, channelingessence: { display: 'Channeling/Essence', aname: 'channelingessence', stat: 'in/em' }, @@ -8450,13 +8463,14 @@

Custom Spell List

} exports.testUpdateRR = updateRR - // From our roll template: + // From our roll template: // firstroll is the OEH // secondroll is for OEL // 66 is nothing for RRs function rrRoll(roll) { console.log("RR Roll"); console.log(roll) + let rrroll = parseInt(roll.results.firstroll.result); let log = "("; if (rrroll < 6) { @@ -8467,30 +8481,47 @@

Custom Spell List

} else { log += roll.results.firstroll.dice.join(' + '); } - log += ')' + log += ') [Roll]' + let bonus = parseInt(roll.results.rrbonus.result); - log += ` + ${bonus}`; + log += ` + ${bonus} [Bonus]`; rrroll += bonus; - - console.log("rrroll", rrroll, "message", log); - finishRoll(roll.rollId, { firstroll: rrroll, message: log }); + + if (roll.results.mod) { + let mod = parseInt(roll.results.mod.result); + log += ` + ${mod} [Modifier]`; + rrroll += mod; + } + + finishRoll(roll.rollId, { firstroll: rrroll, message: log }); } - // Time for an RR roll. - onCheck("clicked:rrroll", (ev) => { - // Just d100OE plus the bonus; - console.log(ev); - let type = ev.htmlAttributes['data-rr'] - startRoll("&{template:rmurr} " + - `[[ [[ 1d100!>96 ]] + [[ 1d100!>96 ]] + [[ @{rr_${type}_bonus} ]] ` + + function rrStartRoll(ev, usemod) { + const type = ev.htmlAttributes['data-rr'] + const pretty = ev.htmlAttributes['data-rrpretty'] + const modstr = (usemod) ? "[[ ?{Modifier|0} ]] {\{mod=$[[4]]}} " : ""; + startRoll("&{template:rmurr} " + + `[[ [[ 1d100!>96 ]] + [[ 1d100!>96 ]] + [[ @{rr_${type}_bonus} ]] ]] ` + + modstr + "{\{firstroll=$[[0]]}} " + "{\{secondroll=$[[1]]}} " + "{\{rrbonus=$[[2]]}} " + "{\{message=$[[2]]}} " + "{\{who=@{character_name}}} " + - `{\{type=${type}}} ` + + `{\{type=${pretty}}} ` + `{\{rrbonus=@{rr_${type}_bonus}}}`, rrRoll); - }); + } + + // Time for an RR roll. + onCheck("clicked:rrroll", (ev) => { + rrStartRoll(ev, false); + }); + + // An RR roll with a modifier. + onCheck("clicked:rrrollmod", (ev) => { + rrStartRoll(ev, true); + }); + exports.rrs = rrs; return exports; @@ -10167,7 +10198,7 @@

Custom Spell List

} setCharmancerText(textupdates); showChoices(showupdates); - console.log("hide", hideupdates, "show", showupdates); + console.log("hide", hideupdates, "show", showupdates, "ee", attrupdates); hideChoices(hideupdates); setAttrs(attrupdates); }); @@ -10220,7 +10251,8 @@

Custom Spell List

updates[`repeating_spelllistspellownbase_${rowid}_name`] = values['cmbaselistname' + i]; } } - setAttrs(updates); + console.log(updates); + setAttrsPending(updates); } onCheck("page:stats", () => { @@ -10554,7 +10586,7 @@

Custom Spell List

let pbonus = cmdata.profession.data.profession["data-knacks"]; for (let i = 0 ; i < pbonus.length ; i ++) { - update["pbonus_name_" + i] = getTranslationByKey(pbonus[i].knack); + update["pbonus_name_" + i] = getTranslationByKey(pbonus[i].knack) || pbonus[i].knack; } setCharmancerText(update); @@ -13783,6 +13815,34 @@

Custom Spell List

} +onCheck("change:activedefense change:parrymod", (_) => { + getAttrs(['activedefense', 'parrymod', + 'db_passivedodge', 'db_passivedodgemissile', 'db_passiveblock', + 'db_partialdodge', 'db_partialdodgemissile', 'db_partialblock', + 'db_fulldodge', 'db_fulldodgemissile', 'db_fullblock'], (ev) => { + const update = {}; + let db = parseIntDefault(ev.parrymod, 0); + if (ev.activedefense == 'partialblock') { + update.activedb = db + ev.db_passiveblock; + } else if (ev.activedefense == 'partialdodge') { + let melee = db + ev.db_partialdodge; + let missile = db + ev.db_partialdodgemissile; + update.activedb = `${melee} / ${missile}`; + } else if (ev.activedefense == 'fullblock') { + update.activedb = db + ev.db_fullblock; + } else if (ev.activedefense == 'fulldodge') { + let melee = db + ev.db_fulldodge; + let missile = db + ev.db_fulldodgemissile; + update.activedb = `${melee} / ${missile}`; + } else { // passive + update.activedb = db + Math.max(ev.db_passiveblock, ev.db_passivedodge); + } + console.log("update is", update, ev); + setAttrs(update); + }); +}); + + diff --git a/RolemasterUnified_Official/sheet.json b/RolemasterUnified_Official/sheet.json index 7508c8676523..fcddef547826 100644 --- a/RolemasterUnified_Official/sheet.json +++ b/RolemasterUnified_Official/sheet.json @@ -8,5 +8,5 @@ "legacy": false, "printable": true, "compendium": "RMU", - "version": "1731512507" + "version": "1731991330" } diff --git a/RolemasterUnified_Official/updates.md b/RolemasterUnified_Official/updates.md index 33b53c75f4f7..be31ca26a56b 100644 --- a/RolemasterUnified_Official/updates.md +++ b/RolemasterUnified_Official/updates.md @@ -1,3 +1,15 @@ +# 2024-11-19 + +- Stats are now right aligned. +- Fix update for specialised skills. +- RRs: + - now have a box. Make them standout more. + - Use the pretty name. not the attribute name. + - Number now rolls with modifier. +- Fix an issue causing some characters to have problems levelling up. +- Fixed specialisations show the skill name when rolling. +- Handle knacks for Alchemists. + # 2024-11-14 - Add description to each step of the Charactermancer buttons