diff --git a/WarlockOSR/src/characterSheet.html b/WarlockOSR/src/characterSheet.html index a0bef1435c..1ba9ac384d 100644 --- a/WarlockOSR/src/characterSheet.html +++ b/WarlockOSR/src/characterSheet.html @@ -1,7 +1,3 @@ -
diff --git a/WarlockOSR/src/rollTemplates.html b/WarlockOSR/src/rollTemplates.html index eeac179b0c..f2ecd8ab28 100644 --- a/WarlockOSR/src/rollTemplates.html +++ b/WarlockOSR/src/rollTemplates.html @@ -1,6 +1,6 @@ -
+
{{^react}}
@@ -174,7 +174,7 @@ -
+
{{title}} @@ -315,7 +315,7 @@ {{#title}}
{{/title}} -
+
{{#title}}
@@ -375,12 +375,12 @@
{{/description}}
- {{#allprops() optionroll subheader title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}} + {{#allprops() optionroll subheader class title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}}
{{key}}
{{value}}
- {{/allprops() optionroll subheader title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}} + {{/allprops() optionroll subheader class title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}}
{{#charname}} diff --git a/WarlockOSR/src/sheetWorkers.js b/WarlockOSR/src/sheetWorkers.js index 1486fb61fd..220ec044d0 100644 --- a/WarlockOSR/src/sheetWorkers.js +++ b/WarlockOSR/src/sheetWorkers.js @@ -21,8 +21,8 @@ **/ const version = { M: 0, - m: 3, - p: 0, + m: 4, + p: 2, current() {return `${this.M}.${this.m}.${this.p}`}, integer() {return parseInt(`${this.M}${this.m}${this.p}`)} }; @@ -239,10 +239,7 @@ const versionControl = async (gotVersion) => { if (latestVersion === gotVersion) return h.log(`Sheet is up to date`, 'info', `versionControl`); let currentVersion = /\d+\.\d+\.\d+/.test(gotVersion) ? parseInt(gotVersion.replace(/\D/g, '')) : 0; - if (currentVersion < 20) { - // NO ATTR CHANGES - } - if (currentVersion < 30) { + if (currentVersion < 42) { //NO ATTR CHANGES } @@ -504,10 +501,12 @@ const warSheet = (() => { h.log(`${sk}: ${attrs[sk]}, parse ${parseInt(attrs[sk])}`) let nonBoostedMax = Math.min(parseInt(attrs[sk])??0, 6), careerMax = parseInt(careerSkills[sk])||0, + current = parseInt(attrs[sk]), currentMax = parseInt(attrs[`${sk}_max`])||0, isProf = (careerSkillNames.includes(sk)) ? true : false; - output[`${sk}_max`] = (attrs[`${sk}_boosted`] == 1) ? Math.max(currentMax, careerMax) : (isProf) ? careerMax : nonBoostedMax; + output[`${sk}_max`] = isProf ? careerMax : (attrs[`${sk}_boosted`] == 1) ? Math.min(currentMax, current) : nonBoostedMax; output[`${sk}_prof`] = (isProf) ? 1 : 0; + if (output[`${sk}_max`] < current) output[`${sk}_overmax`] = 1; h.log(`${sk} max set to: ${output[`${sk}_max`]}, nbm: ${nonBoostedMax}`); }); h.log(output, 'info', `Career switch completed`); @@ -1177,8 +1176,8 @@ const roll = (() => { // Standard Defence roll const defendRoll = async (rowId) => { let wp = await prop.getWeaponAttrs(rowId), - rollExpression = h.combineRollParts(wp.damage, null, wp.globalDamage); - let rollBase = `${t.roll}${prop.name}${color.defend}{{title=Defend Roll}}{{subheader=${h.emproper(wp.name)}}} {{roll1name=+${rollExpression}}} {{roll1=[[${rollExpression}]]}}`; + rollExpression = h.combineRollParts(wp.skill, wp.skillBonus, null, {base: h.emproper(wp.skillName)||'Skill'}); + let rollBase = `${t.roll}${prop.name}${color.defend}{{title=Defend Roll}}{{subheader=${h.emproper(wp.name)}}} {{roll1name=+${rollExpression}}} {{roll1=[[${prop.coreDie} + ${rollExpression}]]}}`; let defendRoll = await startRoll(rollBase); finishRoll(defendRoll.rollId); } @@ -1204,7 +1203,7 @@ const roll = (() => { let critRollTop = await startRoll(critTop); let critResult = Math.min(10, Math.max(critRollTop.results.subtitle.result, 2)); let critString = warlockData.critTables[damageType][critResult]; - let critBottom = `${t.desc}${prop.name}{{description=${critString}}}`; + let critBottom = `${t.desc}${prop.name}{{class=bottom}}{{description=${critString}}}`; let critRollBottom = await startRoll(critBottom); await finishRoll(critRollTop.rollId); finishRoll(critRollBottom.rollId); diff --git a/WarlockOSR/warlockOSR.css b/WarlockOSR/warlockOSR.css index 0599ccd075..d2e13fa044 100644 --- a/WarlockOSR/warlockOSR.css +++ b/WarlockOSR/warlockOSR.css @@ -1359,7 +1359,7 @@ input[name*="options-flag"][value="1"] ~ .foldable { } /* ROLL TEMPLATES */ -/* WART-ROLL */ +/* WART-ROLL && COMMON */ .sheet-rolltemplate-wart-roll .sheet-wart-outer, .sheet-rolltemplate-wart-damage .sheet-wart-outer, .sheet-rolltemplate-wart-description .sheet-wart-outer { @@ -1736,6 +1736,15 @@ input[name*="options-flag"][value="1"] ~ .foldable { } /* DESCRIPTION TEMPLATE */ + +/* Trick to stop the double-template getting cut by the avatar on 6th/7th post */ +.sheet-rolltemplate-wart-description:not(:first-child) { + position: relative; +} +.sheet-rolltemplate-wart-description:not(:first-child) .sheet-wart-outer.sheet-sheet-bottom { + position: relative; + margin-top: -28px; +} .sheet-rolltemplate-wart-description { text-align: center; margin: -2px 5% -7px -10%; diff --git a/WarlockOSR/warlockOSR.html b/WarlockOSR/warlockOSR.html index 5fde24680c..1b776583b0 100644 --- a/WarlockOSR/warlockOSR.html +++ b/WarlockOSR/warlockOSR.html @@ -1,8 +1,9 @@ - + +
@@ -620,9 +621,10 @@ V 0.3.0 +
@@ -766,9 +768,10 @@ V 0.3.0 +
@@ -1259,7 +1262,7 @@ V 0.3.0 -
+
{{^react}}
@@ -1433,7 +1436,7 @@ V 0.3.0 -
+
{{title}} @@ -1463,7 +1466,7 @@ V 0.3.0
{{damageroll1name}}
-
{{#mighty}}3x{{/mighty}}{{damageroll1}}{{damagetype}}
+
{{#mighty}}2x{{/mighty}}{{damageroll1}}{{damagetype}}
{{defencename}}
@@ -1574,7 +1577,7 @@ V 0.3.0 {{#title}}
{{/title}} -
+
{{#title}}
@@ -1634,12 +1637,12 @@ V 0.3.0
{{/description}}
- {{#allprops() optionroll subheader title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}} + {{#allprops() optionroll subheader class title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}}
{{key}}
{{value}}
- {{/allprops() optionroll subheader title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}} + {{/allprops() optionroll subheader class title reactbutton1name reactbutton1label reactdata optionsubtitle classdesc description reactdescription subtitle charname color option1 option2 option3 option4 option5 option6 option7 option8 option9 option10 option11 option12 option13 option14 option15 option16 option17 option18 option19 option20}}
{{#charname}} @@ -1711,8 +1714,8 @@ V 0.3.0 **/ const version = { M: 0, - m: 3, - p: 0, + m: 4, + p: 2, current() {return `${this.M}.${this.m}.${this.p}`}, integer() {return parseInt(`${this.M}${this.m}${this.p}`)} }; @@ -1929,10 +1932,7 @@ V 0.3.0 if (latestVersion === gotVersion) return h.log(`Sheet is up to date`, 'info', `versionControl`); let currentVersion = /\d+\.\d+\.\d+/.test(gotVersion) ? parseInt(gotVersion.replace(/\D/g, '')) : 0; - if (currentVersion < 20) { - // NO ATTR CHANGES - } - if (currentVersion < 30) { + if (currentVersion < 42) { //NO ATTR CHANGES } @@ -2194,10 +2194,12 @@ V 0.3.0 h.log(`${sk}: ${attrs[sk]}, parse ${parseInt(attrs[sk])}`) let nonBoostedMax = Math.min(parseInt(attrs[sk])??0, 6), careerMax = parseInt(careerSkills[sk])||0, + current = parseInt(attrs[sk]), currentMax = parseInt(attrs[`${sk}_max`])||0, isProf = (careerSkillNames.includes(sk)) ? true : false; - output[`${sk}_max`] = (attrs[`${sk}_boosted`] == 1) ? Math.max(currentMax, careerMax) : (isProf) ? careerMax : nonBoostedMax; + output[`${sk}_max`] = isProf ? careerMax : (attrs[`${sk}_boosted`] == 1) ? Math.min(currentMax, current) : nonBoostedMax; output[`${sk}_prof`] = (isProf) ? 1 : 0; + if (output[`${sk}_max`] < current) output[`${sk}_overmax`] = 1; h.log(`${sk} max set to: ${output[`${sk}_max`]}, nbm: ${nonBoostedMax}`); }); h.log(output, 'info', `Career switch completed`); @@ -2867,8 +2869,8 @@ V 0.3.0 // Standard Defence roll const defendRoll = async (rowId) => { let wp = await prop.getWeaponAttrs(rowId), - rollExpression = h.combineRollParts(wp.damage, null, wp.globalDamage); - let rollBase = `${t.roll}${prop.name}${color.defend}{{title=Defend Roll}}{{subheader=${h.emproper(wp.name)}}} {{roll1name=+${rollExpression}}} {{roll1=[[${rollExpression}]]}}`; + rollExpression = h.combineRollParts(wp.skill, wp.skillBonus, null, {base: h.emproper(wp.skillName)||'Skill'}); + let rollBase = `${t.roll}${prop.name}${color.defend}{{title=Defend Roll}}{{subheader=${h.emproper(wp.name)}}} {{roll1name=+${rollExpression}}} {{roll1=[[${prop.coreDie} + ${rollExpression}]]}}`; let defendRoll = await startRoll(rollBase); finishRoll(defendRoll.rollId); } @@ -2894,7 +2896,7 @@ V 0.3.0 let critRollTop = await startRoll(critTop); let critResult = Math.min(10, Math.max(critRollTop.results.subtitle.result, 2)); let critString = warlockData.critTables[damageType][critResult]; - let critBottom = `${t.desc}${prop.name}{{description=${critString}}}`; + let critBottom = `${t.desc}${prop.name}{{class=bottom}}{{description=${critString}}}`; let critRollBottom = await startRoll(critBottom); await finishRoll(critRollTop.rollId); finishRoll(critRollBottom.rollId); @@ -3178,11 +3180,8 @@ V 0.3.0 loser = attackResult[attackResult.result.loser]; if (!winner || !loser) return h.log(attackResult, 'error', `react-damage: Couldn't determine winner from attack`); if (!await checkSheetPermission(winner.charname)) return h.log(`Failed action button permission check`, 'error', `react-apply-damage`); - let rowId = winner.weaponId; let mightyBlow = attackResult.result.mighty ? `{{mighty=1}}` : ''; - let spellAttack = (winner.spellAttack) ? true : false; as.setActiveCharacterId(winner.id); - let att = spellAttack ? await prop.getSpellAttrs(rowId) : await prop.getWeaponAttrs(rowId); as.setActiveCharacterId(loser.id); let def = await as.getAttrs(['armour_value', 'armour_items', 'stamina']); //h.log(d, 'info', `loser defence`);