diff --git a/Warhammer 4e Character Sheet/README.md b/Warhammer 4e Character Sheet/README.md index 8839f9061d7..7051da1c1c3 100644 --- a/Warhammer 4e Character Sheet/README.md +++ b/Warhammer 4e Character Sheet/README.md @@ -81,6 +81,17 @@ Note conditions are not intended for out of combat situations, GM simply makes t ///// ============ Change Log ============ ///// +Dec 14th 2024 v1.74b + +- New Custom Race option added to Race dropdown menu, will allow entering owna Custom Race name. See setting's tab for Custom Race Stating Characteristics Modifier, this allows the Char Roll to generate starting Charactistics for the Customer Race.reset to menu by clicking the X. +- Fix issue with Dual Wield trigger checkbox not showing correctly in Declare Actions section. +- Fix issue with impact/damaging not showing on Attack rolls with Size modifier Large Vs Small. +- Fix mixed up Impact/Impale checkboxes on the NPC pages. +- Fix Dangerous Quality fumble sometimes not showing when test Unit or 10s Die is 9. +- Fix Warpstone Quality now only triggered on crit again. +- Resolved some issues with dulpicate crit translations. +- Cleaned up minor CSS file errors. + Dec 14th 2024 v1.74a diff --git a/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.css b/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.css index c0c6c09bec0..f4d8fbdffd7 100644 --- a/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.css +++ b/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.css @@ -13,7 +13,10 @@ @font-face { font-family: 'WH font'; - src: url(https://fonts.googleapis.com/css?family=EB+Garamond); + font-style: normal; + font-weight: 400; + src: url('https://fonts.gstatic.com/s/ebgaramond/v30/SlGDmQSNjdsmc35JDF1K5E55YMjF_7DPuGi-6_RkCY9_S6w.woff2') format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; } .ui-dialog .charactersheet { padding-left: 0px; @@ -592,6 +595,23 @@ button[type=roll].sheet-combat-actions-np { text-align: center; } +button[type=action].sheet-combat-actions-list { + border-radius: 1px; + font-size: 11px; + display: left; + height: 24px; + padding: 1px 2px; + padding-bottom: -1px; + width: 100%; + margin: auto; + background-color: transparent; + font-weight: var(--bgfw); + border: 1px solid; + border-color: #423d32; + color: #63615c; + text-align: center; + text-shadow: none; +} button[type=action].sheet-combat-actions-rep::before, button[type=roll].sheet-combat-actions-rep::before { @@ -1120,12 +1140,10 @@ input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } -input[type="checkbox"] { - -moz-appearance: checkbox !important; -} input[type="number"] { + -webkit-appearance: textfield; -moz-appearance: textfield; - + appearance: textfield; } input[type=number].sheet-no-spin::-webkit-outer-spin-button, input[type=number].sheet-no-spin::-webkit-inner-spin-button, @@ -1136,7 +1154,9 @@ input[disabled]::-webkit-outer-spin-button { } input[disabled], input[type=number].sheet-no-spin { + -webkit-appearance: textfield; -moz-appearance: textfield; + appearance: textfield; } /* === SELECTS === */ select { @@ -1230,13 +1250,13 @@ textarea { } .sheet-xs-textarea { height: 19px; - - vertical-align:middle; + position: relative; + vertical-align: middle; } .sheet-xs-textarea-talents { height: 21px; - vertical-align:middle; + vertical-align: middle; } .sheet-small-textarea { height: 50px; @@ -2384,12 +2404,6 @@ select.sheet-inv-select{ } } -input[type=checkbox] { - -webkit-appearance: radio; /* Chrome, Safari, Opera */ - -moz-appearance: radio; /* Firefox */ - -ms-appearance: radio; /* not currently supported */ -} - input[type=text].sheet-underlined { box-shadow: 0px -2px 0px 0px #000000 inset; } @@ -2580,13 +2594,11 @@ input[disabled], input.sheet-pseudo-disabled { background-color: #F9F5F0; cursor: not-allowed; - -moz-appearance: textfield; } input[disabled].sheet-passive-skill-score { background-color: #F2ECDC; cursor: not-allowed; - -moz-appearance: textfield; } .sheet-important-text { @@ -2663,6 +2675,19 @@ input[disabled].sheet-passive-skill-score { text-align: center; } +.sheet-button { +background-color: #04AA6D; +border: none; +color: white; +padding: 15px 32px; +text-align: center; +text-decoration: none; +display: inline-block; +font-size: 16px; +margin: 4px 2px; +cursor: pointer; +} + .sheet-large-button { padding: 5px; height: 45px; @@ -5491,7 +5516,7 @@ input.sheet-condition[value="1"] ~ *.sheet-condition { .sheet-rolltemplate-whfrp2e{ color: black; - font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-family: "WH font"; } .sheet-rolltemplate-whfrp2e .textchatcontainer .inlinerollresult{ diff --git a/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.html b/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.html index 36689eb244f..9a0c59306d0 100644 --- a/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.html +++ b/Warhammer 4e Character Sheet/Warhammer 4e Character Sheet.html @@ -8,6 +8,78 @@
+ + +
+ + +
+ +
Welcome to the Warhammer Fantasy Roleplay 4e sheet by Djjus & Pote
+ + +
Choose the type of sheet you are creating:
+ +
+
+
+
+
+
+
+ + +
+ +
Character Creator - Step 1
+ +
Choose your Name:
+
+
+ + +
Choose a Race:
+
+
+ +
+
+ + +
+
+ +
+ + +
+ +
Character Creator - Step 2
+ +
+
+ +
+ + +
+ +
+
+ +
+ +
@@ -28,6 +100,7 @@
+
Race
+ +
+ +
+ Race +
+
@@ -72,12 +153,13 @@
- +
Character Name
+
Race
+ +
+ +
+ Race +
+ +
@@ -1460,7 +1552,7 @@
- +
- +
@@ -5305,10 +5397,10 @@
- +
- +
@@ -7398,10 +7490,10 @@
- +
- +
@@ -9526,10 +9618,10 @@
- +
- +
@@ -27634,25 +27726,25 @@
@@ -27665,7 +27757,7 @@
- +
@@ -28018,7 +28110,6 @@ Shoot
-
@@ -28082,7 +28173,7 @@
- +
@@ -30092,7 +30183,7 @@ Lore
- + @@ -32651,6 +32742,77 @@
+
+
+
+ Custom Race Stating Characteristics Modifier +
+
+ WS +
+
+ BS +
+
+ STR +
+
+ TOU +
+
+ INI +
+
+ AGI +
+
+ DEX +
+
+ INT +
+
+ WIL +
+
+ FEL +
+
+
+
+ Assumes 2d10+ added (Human default: 20) +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+

@@ -32665,7 +32827,9 @@ - + / + + Char maker
@@ -33029,9 +33193,9 @@
Critical Hit{{RTcrit}}{{#rollTotal() sptal2 0}} t{{RTminor}} {{RTmajor}}{{/rollTotal() sptal2 0}}
{{#rollGreater() warpstone 0}} -
Warpstone Crit: Target rolls (+0) Cool/Endurance Test, if failed they gain 1 corruption.
+
Warpstone Crit: Target rolls (+0) Cool/Endurance Test, if failed they gain 1 corruption.
{{/rollGreater() warpstone 0}} - + {{#rollGreater() trapblade 0}}
{{RTtrapblade}}
@@ -33165,22 +33329,22 @@ {{#rollTotal() dangerous 1}} {{#rollGreater() test target}} {{^rollWasFumble() test}} - {{#rollTotal() computed::test 9}} + {{#rollTotal() computed::test 9}} {{#rollLess() test 99}}
: = ({{computed::test}}) {{RTfumble}}
- {{/rollTotal() computed::test 9}} - {{#rollBetween() test 90 94}} + {{/rollLess() test 99}} {{/rollTotal() computed::test 9}} + {{#rollBetween() test 90 95}}
-
: = ({{computed::test}}) {{RTfumble}}
+
: 10s Die = (9) {{RTfumble}}
- {{/rollBetween() test 90 94}} + {{/rollBetween() test 90 95}} {{/rollWasFumble() test}} {{/rollGreater() test target}} - {{#rollWasFumble() test}} + {{#rollWasFumble() test}} {{#rollLess() test 99}}
-
: = ({{computed::test}}) {{RTfumble}}
+
: 10s Die = (9) {{RTfumble}}
- {{/rollWasFumble() test}} + {{/rollLess() test 99}} {{/rollWasFumble() test}} {{/rollTotal() dangerous 1}} @@ -33669,6 +33833,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33681,6 +33848,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33693,6 +33863,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33705,6 +33878,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33717,6 +33893,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33729,6 +33908,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33741,6 +33923,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33753,6 +33938,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33765,6 +33953,9 @@
{{RTtrapblade}}
{{/rollGreater() trapblade 0}} + {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}} {{#rollGreater() slash 0}}
{{slash}}
{{/rollGreater() slash 0}} @@ -33777,51 +33968,75 @@ {{#rollTotal() test 10}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 10}} {{#rollTotal() test 20}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 20}} {{#rollTotal() test 30}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 30}} {{#rollTotal() test 40}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 40}} {{#rollTotal() test 50}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 50}} {{#rollTotal() test 60}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 60}} {{#rollTotal() test 70}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 70}} {{#rollTotal() test 80}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 80}} {{#rollTotal() test 90}}
Critical Hit (Impaled) {{RTcrit}}
+ {{#rollGreater() warpstone 0}} +
+ {{/rollGreater() warpstone 0}}
{{/rollTotal() test 90}} - {{#rollGreater() warpstone 0}} -
Warpstone Crit: Target rolls (+0) Cool/Endurance Test, if failed they gain 1 corruption.
- {{/rollGreater() warpstone 0}} {{/^rollGreater() test target}} {{/rollTotal() rolltype 4}} {{/^rollWasCrit() test}} @@ -36567,10 +36782,10 @@
Dirty Fighting
+{{dirtyfighting}}
{{/rollGreater() dirtyfighting 0}} - {{#rollLess() sizemod -1}} {{#rollTotal() impact 0}} + {{#rollLess() sizemod -1}} {{#rollGreater() impact 0}}
Impact
+{{computed::test}}
- {{/rollTotal() impact 0}} {{/rollLess() sizemod -1}} + {{/rollGreater() impact 0}} {{/rollLess() sizemod -1}} {{#rollGreater() impact 0}} {{#rollTotal() tiring 0}}
Impact
+{{computed::test}}
@@ -36640,12 +36855,9 @@ {{#rollGreater() furiousassault 0}} {{#RTfuriousassault}}
{{RTfuriousassault}}
{{/RTfuriousassault}} {{/rollGreater() furiousassault 0}} - {{#rollGreater() warpstone 0}} -
Warpstone: On hit cause exposure to Minor Corruption
- {{/rollGreater() warpstone 0}} - {{#^rollTotal() tiring 0}} -
Tiring
- {{/^rollTotal() tiring 0}} + {{#rollGreater() tiring 0}} +
Tiring
+ {{/rollGreater() tiring 0}} {{#rollGreater() fast 0}}
Fast: Opposed -10 Roll if not Fast
{{/rollGreater() fast 0}} @@ -36685,8 +36897,7 @@ {{/rollGreater() dragonbelcher 0}} {{/rollGreater() blackpowder 0}} {{#rollGreater() undamaging 0}} -
Undamaging:
-
Defender APx2, no min Dmg
+
Undamaging: APx2, no min Dmg
{{/rollGreater() undamaging 0}} {{#rollGreater() sureshot 0}}
{{sureshot}}
@@ -41852,7 +42063,7 @@ setAttrs(output, {silent: true}); setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_RangedTwohanded": 0, "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', @@ -41951,7 +42162,7 @@ "Used_MainRanged_mod3": '', "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -42007,7 +42218,7 @@ setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_RangedTwohanded": 0, "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', @@ -42064,7 +42275,7 @@ if (t.Used_RangedTwoHanded == 1) {output3[`repeating_ranged_${id}_UsedRangedOff`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 0 : 0; setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', }, {silent: true});} output3[`repeating_ranged_${id}_UsedRangedMain`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 1 : 0; @@ -42087,7 +42298,7 @@ setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 1, @@ -42143,7 +42354,7 @@ setAttrs(output8, {silent: true}); setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -42200,7 +42411,7 @@ setAttrs(output8, {silent: true}); setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -42522,7 +42733,7 @@ if (t.repeating_melee_UsedDefense == 1) {output3[`repeating_melee_${id}_UsedDefense`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 0 : 0; setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -42576,7 +42787,7 @@ if (t.Used_MeleeTwoHanded == 0) {output[`repeating_melee_${id}_UsedWeapon`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 0 : 0; setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -42629,7 +42840,7 @@ output2[`repeating_melee_${id}_UsedDefense`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 0 : 0; setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -42678,7 +42889,7 @@ "Used_Melee_def_modtype3": 0, "Used_Melee_def_mod3": '', "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -42873,7 +43084,7 @@ setAttrs(output4, {silent: true}); setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -42928,7 +43139,7 @@ if (t.Used_RangedTwoHanded == 1) { setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "MeleeOffType": 0, }, {silent: true}); @@ -43093,7 +43304,7 @@ setAttrs(output, {silent: true}); setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_RangedTwohanded": 0, "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', @@ -43192,7 +43403,7 @@ "Used_OffRanged_mod3": '', "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -43249,7 +43460,7 @@ setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_RangedTwohanded": 0, "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', @@ -43306,7 +43517,7 @@ if (t.Used_RangedTwoHanded == 1) {output3[`repeating_ranged_${id}_UsedRangedMain`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 0 : 0; setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', }, {silent: true});} output3[`repeating_ranged_${id}_UsedRangedOff`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 1 : 0; @@ -43329,7 +43540,7 @@ setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -43385,7 +43596,7 @@ setAttrs(output8, {silent: true}); setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -43442,7 +43653,7 @@ setAttrs(output8, {silent: true}); setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -43500,6 +43711,7 @@ }); getAttrs(["repeating_ranged_RangedWeaponName","repeating_ranged_RangedBalisticSkill","repeating_ranged_RangedBonus","repeating_ranged_UsedDurable","repeating_ranged_Used_RangedTwoHanded","repeating_ranged_RangedStrengthBonus","repeating_ranged_UsedDmgTaken","repeating_ranged_WeaponRange","repeating_ranged_RangedAmmo","repeating_ranged_RangedAmmoType","repeating_ranged_RangedDamage","repeating_ranged_RangedQualities","repeating_ranged_UsedBlackpowder","repeating_ranged_RangedImpale","repeating_ranged_RangedPrecise","repeating_ranged_UsedImprecise","repeating_ranged_RangedAccurate","repeating_ranged_RangedPractical","repeating_ranged_UsedImpact","repeating_ranged_UsedDangerous","repeating_ranged_UsedHack","repeating_ranged_RangedPenetrating","repeating_ranged_UsedWarpstone","repeating_ranged_UsedZZAP","repeating_ranged_UsedDamaging","repeating_ranged_UsedEntangle","repeating_ranged_RangedPummel","repeating_ranged_RangedBlast","repeating_ranged_RangedBlastRating","repeating_ranged_RangedRepeater","repeating_ranged_RangedRepeaterRating","repeating_ranged_RangedSpread","repeating_ranged_RangedSpreadRating","repeating_ranged_RangedReload","repeating_ranged_RangedReloadRatingInput","repeating_ranged_UsedMagic","repeating_ranged_UsedMagicEffect","repeating_ranged_RangedWeapon_modtype1","repeating_ranged_RangedWeapon_mod1","repeating_ranged_RangedWeapon_modtype2","repeating_ranged_RangedWeapon_mod2","repeating_ranged_RangedWeapon_modtype3","repeating_ranged_RangedWeapon_mod3", "StrengthBonus"], function(v) { + rangth = v.repeating_ranged_Used_RangedTwoHanded; console.log("Offhand change"); @@ -43755,7 +43967,8 @@ } else { - getAttrs(["repeating_melee_UsedWeapon", "repeating_melee_UsedDefense", "repeating_melee_UsedTwoHanded", "Used_MeleeTwoHanded", "Used_RangedTwoHanded", "repeating_ranged_RangedWeaponName", "MeleeMainType", "MeleeOffType"],function(t) { + getAttrs(["repeating_melee_UsedWeapon", "repeating_melee_UsedDefense", "repeating_melee_UsedTwoHanded", "Used_MeleeTwoHanded", "Used_RangedTwoHanded", "repeating_ranged_RangedWeaponName", "MeleeMainType", "MeleeOffType", "repeating_ranged_Used_RangedTwoHanded;"],function(t) { + rangth = t.repeating_ranged_Used_RangedTwoHanded; getSectionIDs("repeating_melee", function (ids) { // create an object to hold all the attributes we are bout to change @@ -43772,7 +43985,7 @@ if (t.repeating_melee_UsedWeapon == 1) {output3[`repeating_melee_${id}_UsedWeapon`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 0 : 0; setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -43826,7 +44039,7 @@ if (t.Used_MeleeTwoHanded == 0) {output[`repeating_melee_${id}_UsedDefense`] = (playerclickedid.toLowerCase() == id.toLowerCase()) ? 0 : 0; setAttrs({ "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -43882,7 +44095,7 @@ setAttrs(output2, {silent: true}); setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -43931,7 +44144,7 @@ "Used_Melee_def_modtype3": 0, "Used_Melee_def_mod3": '', "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -44127,7 +44340,7 @@ setAttrs(output4, {silent: true}); setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -44181,7 +44394,7 @@ if (t.Used_RangedTwoHanded == 1) { setAttrs({ "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "MeleeMainType": 0, }, {silent: true}); } @@ -46997,7 +47210,7 @@ ids.forEach(id => { getAttrs([`repeating_spellbookarcane_${id}_ExtChannellingLore`, `repeating_spellbookarcane_${id}_spellcastingnumber`, `repeating_spellbookarcane_${id}_Spellmem`, "Used_Enchanted_Staff"], function(t) { - if(t[`repeating_spellbookarcane_${id}_ExtChannellingLore`] === "(@{ChannellingFire})") {lore = 1; lorename = "Fire";} else {checklore = 0;} + if(t[`repeating_spellbookarcane_${id}_ExtChannellingLore`] === "(@{ChannellingFire})") {lore = 1; lorename = "Fire";} else {checklore = 0; lorename = ""} if(t[`repeating_spellbookarcane_${id}_ExtChannellingLore`] === "(@{ChannellingHeavens})") {lore = 2; lorename = "Heavens";} if(t[`repeating_spellbookarcane_${id}_ExtChannellingLore`] === "(@{ChannellingMetal})") {lore = 3; lorename = "Metal";} if(t[`repeating_spellbookarcane_${id}_ExtChannellingLore`] === "(@{ChannellingBeasts})]") {lore = 4; lorename = "Beasts";} @@ -47075,7 +47288,7 @@ getAttrs(["repeating_spellbookrituals_ExtChannellingLore"], function(v) { - if (v.repeating_spellbookrituals_ExtChannellingLore == "(@{ChannellingFire})") {lore = 1; lorename = "Fire";} else {lore = 0;} + if (v.repeating_spellbookrituals_ExtChannellingLore == "(@{ChannellingFire})") {lore = 1; lorename = "Fire";} else {lore = 0;; lorename = "";} if (v.repeating_spellbookrituals_ExtChannellingLore == "(@{ChannellingHeavens})") {lore = 2; lorename = "Heavens";} if (v.repeating_spellbookrituals_ExtChannellingLore == "(@{ChannellingMetal})") {lore = 3; lorename = "Metal";} if (v.repeating_spellbookrituals_ExtChannellingLore == "(@{ChannellingBeasts})") {lore = 4; lorename = "Beasts";} @@ -47974,7 +48187,7 @@ setAttrs({ "MeleeOffType": 0, "Used_MeleeWeapon": getTranslationByKey('UNARMED'), - "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_MeleeWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_MeleeBonus": 0, "Used_MeleeStrengthBonus": '@{StrengthBonus}', "Used_MeleeDamageBonus": 0, @@ -48022,7 +48235,7 @@ "Used_Melee_def_mod3": '', "Used_DefenseWeapon": getTranslationByKey('UNARMED'), - "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWL])', + "Used_DefenseWeaponSkill": '(@{MeleeBrawling} [BRAWLING])', "Used_DefenseBonus": 0, "Used_DefenseStrengthBonus": '@{StrengthBonus}', "Used_DefenseDamageBonus": 0, @@ -48237,6 +48450,7 @@ let rollPart2 = roll; ammopre = v.Used_RangedAmmo; console.log(trigger); + console.log(prefix); addsldf = ''; sitfail = ''; @@ -48487,7 +48701,7 @@ if (v.MeleeMode_Aimed == 1) {hitloc = "{{hitlocation=[[?{Choose a Hit Location|Head,1|Right Arm,2|Left Arm,3|Body,4|Right Leg,5|Left Leg,6}]]}}"; rollPart4 += " {{aimed=[[@{MeleeMode_Aimed}]]}}";} else {hitloc = "{{hitlocation=true}}";} } - if (v.MeleeSizeMod < 0) {rollPart4 += " {{sizemod=[[" + v.MeleeSizeMod + "]]}}";} + if (v.MeleeSizeMod < 0) {rollPart4 += " {{sizemod=[[@{MeleeSizeMod}]]}}";} console.log(hitloc); rollPart = rollPart4.replaceAll('>addsldf<', addsldf).replaceAll('>adddmg<', adddmg).replaceAll('>hitloc<', hitloc).replaceAll('>sitfail<', sitfail).replaceAll('>atype<', atype); @@ -48805,7 +49019,7 @@ on('clicked:meleeattackoff clicked:meleechargeoff clicked:furiousassaultoff clicked:dualwieldoff', (eventInfo) => { if (eventInfo.sourceType === 'sheetworker') return; - getAttrs(["Used_DefenseWeaponSkill", "Talent_AmbidextrousLvl","Used_MeleeTwohanded","Advantageinput","LastRollMain","LastCritRoll", "Talent_BattleRageLvl", "Talent_FrenzyLvl", "MeleeMode_Underminer", "MeleeMode_Frenzy", "MeleeMode_VsObject", "MeleeMode_Infight", "MeleeMode_Drilled", "MeleeMode_Charging", "MeleeMode_DualWield", "Used_MeleeBonus", "Used_DefenseBonus", "MeleeMode_STS", "MeleeMode_Aimed", "GroupAdv", "CritTable", "MeleeOffType"], function(values) { + getAttrs(["Used_DefenseWeaponSkill", "Talent_AmbidextrousLvl","Used_MeleeTwohanded","Advantageinput","LastRollMain","LastCritRoll", "Talent_BattleRageLvl", "Talent_FrenzyLvl", "MeleeMode_Underminer", "MeleeMode_Frenzy", "MeleeMode_VsObject", "MeleeMode_Infight", "MeleeMode_Drilled", "MeleeMode_Charging", "MeleeMode_DualWield", "Used_MeleeBonus", "Used_DefenseBonus", "MeleeMode_STS", "MeleeMode_Aimed", "GroupAdv", "CritTable", "MeleeOffType", "MeleeSizeMod"], function(values) { prevcrit = JSON.stringify(values["LastCritRoll"])||0; if (prevcrit >= 1 && prevcrit <= 9) { @@ -49061,11 +49275,12 @@ if (values.MeleeMode_Aimed == 1) {hitloc = "{{hitlocation=[[?{Choose a Hit Location|Head,1|Right Arm,2|Left Arm,3|Body,4|Right Leg,5|Left Leg,6}]]}}"; rollPart4 += " {{aimed=[[@{MeleeMode_Aimed}]]}}";} else {hitloc = "{{hitlocation=true}}";} } + if (values.MeleeSizeMod < 0) {rollPart4 += " {{sizemod=[[@{MeleeSizeMod}]]}}";} + let rollPart = rollPart4.replaceAll('>ambi<', ambipen).replaceAll('>addsldf<', addsldf).replaceAll('>adddmg<', adddmg).replaceAll('>hitloc<', hitloc).replaceAll('>sitfail<', sitfail).replaceAll('>atype<', atype); console.log(rollPart); console.log(rollEnd); - console.log(battlefrenzy); startRoll(rollBegins + rollPart + rollEnd + rollBrawl, (results) => { const target = results.results.target.result @@ -50825,7 +51040,7 @@ } ); - if (trigger === "channellingfire") {lore = 1} + if (trigger === "channellingfire") {lore = 1} else {lore = 0} if (trigger === "channellingheavens") {lore = 2} if (trigger === "channellingmetal") {lore = 3} if (trigger === "channellingbeasts") {lore = 4} @@ -50839,6 +51054,7 @@ if (trigger === "channellinggreatmaw") {lore = 12} if (trigger === "channellingmisc") {lore = 13} + if (lore > 0) { getSectionIDs("repeating_spellbookarcane", function (ids) { // create an object to hold all the attributes we are bout to change const output = {}; @@ -50889,8 +51105,7 @@ }); }); - - + } }); }); }); @@ -51439,10 +51654,10 @@ if (critroll > 9 && critroll < 16) {critname += getTranslationByKey('RINGING-STRIKE'); critdisc += getTranslationByKey('RINGING-STRIKE-DESC-UNARMED'); critdmg += 1 ;} if (critroll > 15 && critroll < 21) {critname += getTranslationByKey('BLACK-EYE'); critdisc += getTranslationByKey('BLACK-EYE-DESC-UNARMED'); critdmg = 1 ;} if (critroll > 20 && critroll < 26) {critname += getTranslationByKey('BRUISED-JAW'); critdisc += getTranslationByKey('BRUISED-JAW-DESC-UNARMED'); critdmg += 2 ;} - if (critroll > 25 && critroll < 31) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED'); critdmg += 2 ;} + if (critroll > 25 && critroll < 31) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED-HEAD'); critdmg += 2 ;} if (critroll > 30 && critroll < 36) {critname += getTranslationByKey('EYE-POKE'); critdisc += getTranslationByKey('EYE-POKE-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 35 && critroll < 41) {critname += getTranslationByKey('FRACTURED-JAW'); critdisc += getTranslationByKey('FRACTURED-JAW-DESC-UNARMED'); critdmg += 2 ;} - if (critroll > 40 && critroll < 46) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED'); critdmg += 3 ;} + if (critroll > 40 && critroll < 46) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED-HEAD'); critdmg += 3 ;} if (critroll > 45 && critroll < 51) {critname += getTranslationByKey('SMASHED-EAR'); critdisc += getTranslationByKey('SMASHED-EAR-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 50 && critroll < 56) {critname += getTranslationByKey('FLASH-KO'); critdisc += getTranslationByKey('FLASH-KO-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 55 && critroll < 61) {critname += getTranslationByKey('CLEANED-CLOCK'); critdisc += getTranslationByKey('CLEANED-CLOCK-DESC-UNARMED'); critdmg += 3 ;} @@ -51461,10 +51676,10 @@ if (critv2 > 9 && critv2 < 16) {critname2 += getTranslationByKey('RINGING-STRIKE'); critdisc2 += getTranslationByKey('RINGING-STRIKE-DESC-UNARMED'); critdmg2 += 1 ;} if (critv2 > 15 && critv2 < 21) {critname2 += getTranslationByKey('BLACK-EYE'); critdisc2 += getTranslationByKey('BLACK-EYE-DESC-UNARMED'); critdmg2 = 1 ;} if (critv2 > 20 && critv2 < 26) {critname2 += getTranslationByKey('BRUISED-JAW'); critdisc2 += getTranslationByKey('BRUISED-JAW-DESC-UNARMED'); critdmg2 += 2 ;} - if (critv2 > 25 && critv2 < 31) {critname2 += getTranslationByKey('HEAVY-BRUISING'); critdisc2 += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED'); critdmg2 += 2 ;} + if (critv2 > 25 && critv2 < 31) {critname2 += getTranslationByKey('HEAVY-BRUISING'); critdisc2 += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED-HEAD'); critdmg2 += 2 ;} if (critv2 > 30 && critv2 < 36) {critname2 += getTranslationByKey('EYE-POKE'); critdisc2 += getTranslationByKey('EYE-POKE-DESC-UNARMED'); critdmg2 += 2 ;} if (critv2 > 35 && critv2 < 41) {critname2 += getTranslationByKey('FRACTURED-JAW'); critdisc2 += getTranslationByKey('FRACTURED-JAW-DESC-UNARMED'); critdmg2 += 2 ;} - if (critv2 > 40 && critv2 < 46) {critname2 += getTranslationByKey('BAD-CUT'); critdisc2 += getTranslationByKey('BAD-CUT-DESC-UNARMED'); critdmg2 += 3 ;} + if (critv2 > 40 && critv2 < 46) {critname2 += getTranslationByKey('BAD-CUT'); critdisc2 += getTranslationByKey('BAD-CUT-DESC-UNARMED-HEAD'); critdmg2 += 3 ;} if (critv2 > 45 && critv2 < 51) {critname2 += getTranslationByKey('SMASHED-EAR'); critdisc2 += getTranslationByKey('SMASHED-EAR-DESC-UNARMED'); critdmg2 += 3 ;} if (critv2 > 50 && critv2 < 56) {critname2 += getTranslationByKey('FLASH-KO'); critdisc2 += getTranslationByKey('FLASH-KO-DESC-UNARMED'); critdmg2 += 3 ;} if (critv2 > 55 && critv2 < 61) {critname2 += getTranslationByKey('CLEANED-CLOCK'); critdisc2 += getTranslationByKey('CLEANED-CLOCK-DESC-UNARMED'); critdmg2 += 3 ;} @@ -51485,14 +51700,14 @@ if (critroll > 6 && critroll < 10) {critname += getTranslationByKey('SPRAIN'); critdisc += getTranslationByKey('SPRAIN-DESC-UNARMED'); critdmg += 1 ;} if (critroll > 9 && critroll < 16) {critname += getTranslationByKey('DEAD-ARM'); critdisc += getTranslationByKey('DEAD-ARM-DESC-UNARMED'); critdmg += 1 ;} if (critroll > 15 && critroll < 21) {critname += getTranslationByKey('STRONG-BLOW'); critdisc += getTranslationByKey('STRONG-BLOW-DESC-UNARMED'); critdmg = 1 ;} - if (critroll > 20 && critroll < 26) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED'); critdmg += 2 ;} + if (critroll > 20 && critroll < 26) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED-ARM'); critdmg += 2 ;} if (critroll > 25 && critroll < 31) {critname += getTranslationByKey('CRUSHED-HAND'); critdisc += getTranslationByKey('CRUSHED-HAND-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 30 && critroll < 36) {critname += getTranslationByKey('TORN-MUSCLES'); critdisc += getTranslationByKey('TORN-MUSCLES-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 35 && critroll < 41) {critname += getTranslationByKey('CRUNCHING-BLOW'); critdisc += getTranslationByKey('CRUNCHING-BLOW-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 40 && critroll < 46) {critname += getTranslationByKey('WRENCHED-ARM'); critdisc += getTranslationByKey('WRENCHED-ARM-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 45 && critroll < 51) {critname += getTranslationByKey('HEAVY-HIT'); critdisc += getTranslationByKey('HEAVY-HIT-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 50 && critroll < 56) {critname += getTranslationByKey('SEVERE-BRUISING'); critdisc += getTranslationByKey('SEVERE-BRUISING-DESC-UNARMED'); critdmg += 3 ;} - if (critroll > 55 && critroll < 61) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED'); critdmg += 3 ;} + if (critroll > 55 && critroll < 61) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED-ARM'); critdmg += 3 ;} if (critroll > 60 && critroll < 66) {critname += getTranslationByKey('THUNDEROUS-BLOW'); critdisc += getTranslationByKey('THUNDEROUS-BLOW-DESC-UNARMED'); critdmg += 4 ;} if (critroll > 65 && critroll < 76) {critname += getTranslationByKey('CLEAN-BREAK'); critdisc += getTranslationByKey('CLEAN-BREAK-DESC-UNARMED'); critdmg += 4 ;} if (critroll > 75 && critroll < 81) {critname += getTranslationByKey('BROKEN-FINGERS'); critdisc += getTranslationByKey('BROKEN-FINGERS-DESC-UNARMED'); critdmg += 4 ;} @@ -51507,14 +51722,14 @@ if (critv2 > 6 && critv2 < 10) {critname2 += getTranslationByKey('SPRAIN'); critdisc2 += getTranslationByKey('SPRAIN-DESC-UNARMED'); critdmg2 += 1 ;} if (critv2 > 9 && critv2 < 16) {critname2 += getTranslationByKey('DEAD-ARM'); critdisc2 += getTranslationByKey('DEAD-ARM-DESC-UNARMED'); critdmg2 += 1 ;} if (critv2 > 15 && critv2 < 21) {critname2 += getTranslationByKey('STRONG-BLOW'); critdisc2 += getTranslationByKey('STRONG-BLOW-DESC-UNARMED'); critdmg2 = 1 ;} - if (critv2 > 20 && critv2 < 26) {critname2 += getTranslationByKey('HEAVY-BRUISING'); critdisc2 += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED'); critdmg2 += 2 ;} + if (critv2 > 20 && critv2 < 26) {critname2 += getTranslationByKey('HEAVY-BRUISING'); critdisc2 += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED-ARM'); critdmg2 += 2 ;} if (critv2 > 25 && critv2 < 31) {critname2 += getTranslationByKey('CRUSHED-HAND'); critdisc2 += getTranslationByKey('CRUSHED-HAND-DESC-UNARMED'); critdmg2 += 2 ;} if (critv2 > 30 && critv2 < 36) {critname2 += getTranslationByKey('TORN-MUSCLES'); critdisc2 += getTranslationByKey('TORN-MUSCLES-DESC-UNARMED'); critdmg2 += 2 ;} if (critv2 > 35 && critv2 < 41) {critname2 += getTranslationByKey('CRUNCHING-BLOW'); critdisc2 += getTranslationByKey('CRUNCHING-BLOW-DESC-UNARMED'); critdmg2 += 2 ;} if (critv2 > 40 && critv2 < 46) {critname2 += getTranslationByKey('WRENCHED-ARM'); critdisc2 += getTranslationByKey('WRENCHED-ARM-DESC-UNARMED'); critdmg2 += 3 ;} if (critv2 > 45 && critv2 < 51) {critname2 += getTranslationByKey('HEAVY-HIT'); critdisc2 += getTranslationByKey('HEAVY-HIT-DESC-UNARMED'); critdmg2 += 3 ;} if (critv2 > 50 && critv2 < 56) {critname2 += getTranslationByKey('SEVERE-BRUISING'); critdisc2 += getTranslationByKey('SEVERE-BRUISING-DESC-UNARMED'); critdmg2 += 3 ;} - if (critv2 > 55 && critv2 < 61) {critname2 += getTranslationByKey('BAD-CUT'); critdisc2 += getTranslationByKey('BAD-CUT-DESC-UNARMED'); critdmg2 += 3 ;} + if (critv2 > 55 && critv2 < 61) {critname2 += getTranslationByKey('BAD-CUT'); critdisc2 += getTranslationByKey('BAD-CUT-DESC-UNARMED-ARM'); critdmg2 += 3 ;} if (critv2 > 60 && critv2 < 66) {critname2 += getTranslationByKey('THUNDEROUS-BLOW'); critdisc2 += getTranslationByKey('THUNDEROUS-BLOW-DESC-UNARMED'); critdmg2 += 4 ;} if (critv2 > 65 && critv2 < 76) {critname2 += getTranslationByKey('CLEAN-BREAK'); critdisc2 += getTranslationByKey('CLEAN-BREAK-DESC-UNARMED'); critdmg2 += 4 ;} if (critv2 > 75 && critv2 < 81) {critname2 += getTranslationByKey('BROKEN-FINGERS'); critdisc2 += getTranslationByKey('BROKEN-FINGERS-DESC-UNARMED'); critdmg2 += 4 ;} @@ -51743,10 +51958,10 @@ if (critroll > 9 && critroll < 16) {critname += getTranslationByKey('RINGING-STRIKE'); critdisc += getTranslationByKey('RINGING-STRIKE-DESC-UNARMED'); critdmg += 1 ;} if (critroll > 15 && critroll < 21) {critname += getTranslationByKey('BLACK-EYE'); critdisc += getTranslationByKey('BLACK-EYE-DESC-UNARMED'); critdmg = 1 ;} if (critroll > 20 && critroll < 26) {critname += getTranslationByKey('BRUISED-JAW'); critdisc += getTranslationByKey('BRUISED-JAW-DESC-UNARMED'); critdmg += 2 ;} - if (critroll > 25 && critroll < 31) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED'); critdmg += 2 ;} + if (critroll > 25 && critroll < 31) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED-HEAD'); critdmg += 2 ;} if (critroll > 30 && critroll < 36) {critname += getTranslationByKey('EYE-POKE'); critdisc += getTranslationByKey('EYE-POKE-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 35 && critroll < 41) {critname += getTranslationByKey('FRACTURED-JAW'); critdisc += getTranslationByKey('FRACTURED-JAW-DESC-UNARMED'); critdmg += 2 ;} - if (critroll > 40 && critroll < 46) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED'); critdmg += 3 ;} + if (critroll > 40 && critroll < 46) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED-HEAD'); critdmg += 3 ;} if (critroll > 45 && critroll < 51) {critname += getTranslationByKey('SMASHED-EAR'); critdisc += getTranslationByKey('SMASHED-EAR-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 50 && critroll < 56) {critname += getTranslationByKey('FLASH-KO'); critdisc += getTranslationByKey('FLASH-KO-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 55 && critroll < 61) {critname += getTranslationByKey('CLEANED-CLOCK'); critdisc += getTranslationByKey('CLEANED-CLOCK-DESC-UNARMED'); critdmg += 3 ;} @@ -51768,14 +51983,14 @@ if (critroll > 6 && critroll < 10) {critname += getTranslationByKey('SPRAIN'); critdisc += getTranslationByKey('SPRAIN-DESC-UNARMED'); critdmg += 1 ;} if (critroll > 9 && critroll < 16) {critname += getTranslationByKey('DEAD-ARM'); critdisc += getTranslationByKey('DEAD-ARM-DESC-UNARMED'); critdmg += 1 ;} if (critroll > 15 && critroll < 21) {critname += getTranslationByKey('STRONG-BLOW'); critdisc += getTranslationByKey('STRONG-BLOW-DESC-UNARMED'); critdmg = 1 ;} - if (critroll > 20 && critroll < 26) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED'); critdmg += 2 ;} + if (critroll > 20 && critroll < 26) {critname += getTranslationByKey('HEAVY-BRUISING'); critdisc += getTranslationByKey('HEAVY-BRUISING-DESC-UNARMED-ARM'); critdmg += 2 ;} if (critroll > 25 && critroll < 31) {critname += getTranslationByKey('CRUSHED-HAND'); critdisc += getTranslationByKey('CRUSHED-HAND-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 30 && critroll < 36) {critname += getTranslationByKey('TORN-MUSCLES'); critdisc += getTranslationByKey('TORN-MUSCLES-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 35 && critroll < 41) {critname += getTranslationByKey('CRUNCHING-BLOW'); critdisc += getTranslationByKey('CRUNCHING-BLOW-DESC-UNARMED'); critdmg += 2 ;} if (critroll > 40 && critroll < 46) {critname += getTranslationByKey('WRENCHED-ARM'); critdisc += getTranslationByKey('WRENCHED-ARM-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 45 && critroll < 51) {critname += getTranslationByKey('HEAVY-HIT'); critdisc += getTranslationByKey('HEAVY-HIT-DESC-UNARMED'); critdmg += 3 ;} if (critroll > 50 && critroll < 56) {critname += getTranslationByKey('SEVERE-BRUISING'); critdisc += getTranslationByKey('SEVERE-BRUISING-DESC-UNARMED'); critdmg += 3 ;} - if (critroll > 55 && critroll < 61) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED'); critdmg += 3 ;} + if (critroll > 55 && critroll < 61) {critname += getTranslationByKey('BAD-CUT'); critdisc += getTranslationByKey('BAD-CUT-DESC-UNARMED-ARM'); critdmg += 3 ;} if (critroll > 60 && critroll < 66) {critname += getTranslationByKey('THUNDEROUS-BLOW'); critdisc += getTranslationByKey('THUNDEROUS-BLOW-DESC-UNARMED'); critdmg += 4 ;} if (critroll > 65 && critroll < 76) {critname += getTranslationByKey('CLEAN-BREAK'); critdisc += getTranslationByKey('CLEAN-BREAK-DESC-UNARMED'); critdmg += 4 ;} if (critroll > 75 && critroll < 81) {critname += getTranslationByKey('BROKEN-FINGERS'); critdisc += getTranslationByKey('BROKEN-FINGERS-DESC-UNARMED'); critdmg += 4 ;} @@ -52461,7 +52676,7 @@ if (mod > 60) {mod = 60} if (mod < -30) {mod = -30} - + setAttrs( { "Used_RangedBonus": mod, @@ -52560,19 +52775,22 @@ } } - if (v.MeleeMode_Size < v.Size) { - melmod += 10; diff = v.Size - v.MeleeMode_Size;} + if (v.MeleeMode_Size < v.Size) {melmod += 10;} + diff = v.Size*1 - v.MeleeMode_Size*1; + console.log("test size"); + console.log(v.Size*1); + console.log(v.MeleeMode_Size); + console.log(diff); + console.log("test size"); + if (melmod > 60) {melmod = 60} if (melmod < -30) {melmod = -30} if (oppmod > 60) {oppmod = 60} if (oppmod < -30) {oppmod = -30} if (oppdefmod > 60) {oppdefmod = 60} if (oppdefmod < -30) {oppdefmod = -30} - - console.log(oppmod); - console.log(oppdefmod); - + setAttrs( { "Used_MeleeBonus": melmod, @@ -52792,7 +53010,7 @@ }); -on('change:Talent_DrilledLvl change:Talent_DualWielderLvl change:Talent_BreakandEnterLvl change:Talent_DisarmLvl change:Talent_InFighterLvl change:Talent_FrenzyLvl change:Talent_FeintLvl change:Talent_FrenzyLvl change:Talent_StriketoStunLvl change:Talent_BeatBladeLvl change:Talent_FastShotLvl change:Talent_UnderminerLvl change:Talent_WhirlwindofDeathLvl', function(event){ +on('sheet:opened change:Talent_DrilledLvl change:Talent_DualWielderLvl change:Talent_BreakandEnterLvl change:Talent_DisarmLvl change:Talent_InFighterLvl change:Talent_FrenzyLvl change:Talent_FeintLvl change:Talent_FrenzyLvl change:Talent_StriketoStunLvl change:Talent_BeatBladeLvl change:Talent_FastShotLvl change:Talent_UnderminerLvl change:Talent_WhirlwindofDeathLvl', function(event){ if (event.sourceType === 'sheetworker') return; console.log("Modifier reset"); getAttrs(["Talent_DrilledLvl", "Talent_DualWielderLvl", "Talent_BreakandEnterLvl", "Talent_DisarmLvl", "Talent_InFighterLvl", "Talent_FeintLvl", "Talent_FastShotLvl", "Talent_FrenzyLvl", "Talent_StriketoStunLvl", "Talent_BeatBladeLvl", "Talent_UnderminerLvl", "Talent_WhirlwindofDeathLvl"], function(v) { @@ -53521,7 +53739,7 @@ on('clicked:CharRoll', function(event){ if (event.sourceType === 'sheetworker') return; console.log("Rolling Charactistics by Race"); - getAttrs(["Race"], function(v) { + getAttrs(["Race", "customracews", "customracebs", "customracestr", "customracetou", "customraceini", "customraceagi", "customracedex", "customraceitel", "customracewil", "customracefel"], function(v) { race = v.Race; console.log(race); @@ -53622,6 +53840,20 @@ wil = getRandomInt(1, 10) + getRandomInt(1, 10) + 20; fel = getRandomInt(1, 10) + getRandomInt(1, 10) + 20; out = ws + fel; + } + + if (race == "Custom") { + ws = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customracews*1; + bs = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customracebs*1; + str = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customracestr*1; + tou = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customracetou*1; + ini = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customraceini*1; + agi = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customraceagi*1; + dex = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customracedex*1; + itel = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customraceitel*1; + wil = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customracewil*1; + fel = getRandomInt(1, 10) + getRandomInt(1, 10) + v.customracefel*1; + out = ws + fel; } setAttrs({ @@ -53641,4 +53873,73 @@ }); }); + +on('change:race change:racereset', function(event) { + // makes sure the sheet worker doesnt trigger itself +if (event.sourceType === 'sheetworker') return; + // get the row id that the player clicked. the id is always between the second and third '_' + + playerclicked = event.triggerName || ''; + +getAttrs(["race"], function(v) { + console.log("Test Race Change"); +console.log(playerclicked); + +if (playerclicked == "race") { + if (v.race == "Custom") {cust = 1; + console.log("Test Race Change 2");} else {cust = 0;} + + console.log(cust); + + setAttrs({ + "customrace": cust, + }, {silent: true}); + } + + if (playerclicked == "racereset") {cust = 0; + console.log("Test Race Change Reset"); + + console.log(cust); + + setAttrs({ + "customrace": cust, + "race": "Human", + }, {silent: true}); + } +}); +}); + +on('clicked:MakePC clicked:MakeEnterprise clicked:MakeVehicle', function(event) { + + console.log("Text CharMaker"); + playerclicked = event.triggerName; + console.log(playerclicked); + + if (playerclicked == "clicked:makepc") { + + console.log("Text CharMaker MakePC"); + setAttrs({ + "CharmakerPage": 1, + }, {silent: true}); + } + + if (playerclicked == "clicked:makevehicle") { + + console.log("Text CharMaker MakeVehicle"); + setAttrs({ + "CharmakerPage": 0, + }, {silent: true}); + } + + + if (playerclicked == "clicked:makeenterprise") { + + console.log("Text CharMaker MakeEnterprise"); + setAttrs({ + "CharmakerPage": 2, + }, {silent: true}); + } +}); + + \ No newline at end of file diff --git a/Warhammer 4e Character Sheet/translation.json b/Warhammer 4e Character Sheet/translation.json index 2ab33929d68..fcf9e33f4b5 100644 --- a/Warhammer 4e Character Sheet/translation.json +++ b/Warhammer 4e Character Sheet/translation.json @@ -369,7 +369,7 @@ "SLASH": "Slash", "XA": "XA", "WARPSTONE": "Warpstone", - "WARPSTONE-EFFECT": "Warpstone: On hit inflicts Minor Corruption", + "WARPSTONE-EFFECT": "Warpstone: On crit inflicts Minor Corruption", "ZZAP": "ZZAP!", "ZZAP-EFFECT": "ZZAP!: -1 AP & Ignore Metal AP", "SLASH-EFFECT": "Slash: +1 Bleeding (Inc. by 1, for", @@ -392,12 +392,11 @@ "BRUISED-JAW": "Bruised Jaw", "BRUISED-JAW-DESC-UNARMED": "The strike cracks your chin. Make an b>Endurance Test (-10) or gain a Stunned condition and lose a tooth amputation – Easy.", "HEAVY-BRUISING": "Heavy Bruising", - "HEAVY-BRUISING-DESC-UNARMED": "That hit bruises your face badly – suffer a -10 to fellowship for 10-TB days as it clears up.", + "HEAVY-BRUISING-DESC-UNARMED-HEAD": "That hit bruises your face badly – suffer a -10 to fellowship for 10-TB days as it clears up.", "EYE-POKE": "Eye Poke", "EYE-POKE-DESC-UNARMED": "Something goes into your eye socket. Gain b>2 Blinded Conditions and make an b>Endurance Test (0) or lose the use of your eye for 10-TB hours, Amputation Easy.", "FRACTURED-JAW-DESC-UNARMED": "The blow fractures your jaw. Gain 1 Stunned Conditions. Suffer a Broken Bone (Minor) injury.", - "BAD-CUT": "Bad Cut", - "BAD-CUT-DESC-UNARMED": "The blow opens a bad cut on your face or head. Gain 1 Bleeding condition and make an endurance test (-10) or gain a stunned condition.", + "BAD-CUT-DESC-UNARMED-HEAD": "The blow opens a bad cut on your face or head. Gain 1 Bleeding condition and make an endurance test (-10) or gain a stunned condition.", "SMASHED-EAR": "Smashed Ear", "SMASHED-EAR-DESC-UNARMED": "A powerful blow hits your ear and severely damages it. Gain 1 bleeding condition and 1 deafened condition that cannot be removed without medical attention", "FLASH-KO": "Flash KO", @@ -420,7 +419,7 @@ "DEAD-ARM-DESC-UNARMED": "Your arm is useless for the next 1d10-TB rounds (minimum 1) – count as amputated", "STRONG-BLOW": "Strong Blow", "STRONG-BLOW-DESC-UNARMED": "You are rocked by the blow, take an endurance test (0) or gain a stunned condition", - "HEAVY-BRUISING-DESC-UNARMED": "Your arm takes a nasty hit, and you are at -10 to any actions using it until you can pass an endurance test )-10. Also, drop anything held in that hand.", + "HEAVY-BRUISING-DESC-UNARMED-ARM": "Your arm takes a nasty hit, and you are at -10 to any actions using it until you can pass an endurance test )-10. Also, drop anything held in that hand.", "CRUSHED-HAND": "Crushed Hand", "CRUSHED-HAND-DESC-UNARMED": "Your hand takes the brunt of the attack. Make an endurance test (+20) and break 5-SLs fingers ", "TORN-MUSCLES-DESC-UNARMED": "The blow slams into your forearm, tearing something inside. Gain a Torn Muscle (Minor) injury.", @@ -433,7 +432,7 @@ "HEAVY-HIT-DESC-UNARMED": "Gain a stunned condition.", "SEVERE-BRUISING": "Severe Bruising", "SEVERE-BRUISING-DESC-UNARMED": "Your am is deeply bruised by the blow, causing you to suffer a -10 to any actions using that arm until medical attention is received.", - "BAD-CUT-DESC-UNARMED": "The strike opens a cut on your arm. Gain a bleeding condition", + "BAD-CUT-DESC-UNARMED-ARM": "The strike opens a cut on your arm. Gain a bleeding condition", "THUNDEROUS-BLOW": "Thunderous blow", "THUNDEROUS-BLOW-DESC-UNARMED": "You take the hit on your arm, sending waves of pain and shock through your body. Gain a stunned condition and take an endurance test (-10) or gain a second stunned condition", "CLEAN-BREAK-DESC-UNARMED": "Drop whatever was held in that hand and gain a Broken Bone (Minor) injury. Pass a Difficult (–10) Endurance Test or gain a Stunned Condition.", @@ -451,17 +450,13 @@ "FIERCE-BLOW-DESC-UNARMED": "You take a strong hit that saps your strength. Suffer a -10 to to strength and agility for 1d10 turns.", "BRUISED": "Bruised", "BRUISED-DESC-UNARMED": "The blows are hard, and leave their marks. Make an endurance test (0) or gain a fatigued condition", - "GUT-BLOW": "Gut Blow", "GUT-BLOW-DESC-UNARMED": "Gain 1 Stunned Condition. Pass an Easy (+40) Endurance Test or vomit, gaining the Prone Condition.", - "WINDED": "Winded", "WINDED-DESC-UNARMED": "Gain a Stunned Condition. Make an Average (+20) Endurance Test, or gain the Prone Condition. Movement is halved for 1d10 Rounds as you get your breath back.", "WRENCHED-MUSCLES": "Wrenched muscles", "WRENCHED-MUSCLES-DESC-UNARMED": "Suffer a torn muscle (minor) injury.", "OFF-BALANCE": "Off balance", "OFF-BALANCE-DESC-UNARMED": "The strike knocks you off balance. Make an athletics test (-10) or gain the prone condition.", - "LOW-BLOW": "Low Blow!", "LOW-BLOW-DESC-UNARMED": "GROINED! Make an endurance test (-20) or gain 2 stunned coniditions", - "BRUISED-RIBS": "Bruised Ribs", "BRUISED-RIBS-DESC-UNARMED": "All Agility-based Tests suffer a –10 penalty for 1d10 days.", "SWEET-SPOT": "Sweet spot", "SWEET-SPOT-DESC-UNARMED": "You get hit right in the solar plexus, gain a stunned condition and make an endurance test (-10) or gain prone condition", @@ -469,7 +464,6 @@ "MY-CHEST-DESC-UNARMED": "A cut is opened, gain 1 bleeding condition.", "WRENCHED-COLLAR-BONE-DESC-UNARMED": "Randomly select one arm. Drop whatever is held in that hand; the arm is useless for 1d10 Rounds (see Amputated Parts).", "CRACKED-RIBS-DESC-UNARMED": "The hit cracks one or more ribs. Gain a Stunned Condition. Gain a Broken Bone (Minor) injury.", - "PULLED-BACK": "Pulled Back", "PULLED-BACK-DESC-UNARMED": "Your back turns to white pain as you pull a muscle. Suffer a Torn Muscle (Major) injury.", "KIDNEY-BLOW": "Kidney Blow", "KIDNEY-BLOW-DESC-UNARMED": "Gain the disease symptom Nausea until you can either rest or get medical attention (heal at -10 to fix or a remedy).", @@ -1495,7 +1489,7 @@ "DANGEROUS": "Dangerous", "IMPRECISE": "Imprecise", "UNDAMAGING": "Undamaging", - "UNDAMAGING-EFFECT": "Defender APx2, no min Dmg", + "UNDAMAGING-EFFECT": "Undamaging: APx2, no min Dmg", "UNBREAKABLE": "Unbreakable", "STRIKE-TO-INJURE": "Strike to Injure", "STRIKE-TO-STUN": "Strike to Stun", @@ -1826,7 +1820,6 @@ "VEHICLE-NAME": "Vehicle Name", "VEHICLE-INVENTORY": "Vehicle Inventory", "VEHICLE-MPH": "Miles per hour", - "ENTERPRISE-INVENTORY": "Enterprise Inventory", "MANUFACTURER": "Manufacturer", "ENTERPRISE": "Enterprise", "ENTERPRISE-NAME": "Enterprise Name", @@ -1893,7 +1886,8 @@ "WHIRLWIND-OF-DEATH-DESC": "Whirlwind of Death: Spend 1 Fortune to make a Melee attack against all creatures Engaged with you. The GM chooses one enemy to Oppose this Test. If your attack succeeds, you inflict the same Damage to the same Hit Location against all Engaged creatures, calculated as normal. Do not apply Criticals on Whirlwind of Death attacks, though Critical Wounds are inflicted on enemies reduced to 0 Wounds as normal.", "WHIRLWIND-OF-DEATH-DESC2": "You cannot activate any other special attack options as part of a Whirlwind of Death. However, if a Character with Dual Wielder (WFRP Core Rulebook) is wielding two weapons as part of a Whirlwind of Death, they may Reverse their Melee attack Test.", "WOD": "W.o.Death", - + "CUSTOM": "Custom", "TALENT-INTEGRATION": "Talents Integration options", + "OVERCAST-TABLE": " --=( Overcast Table )=-- \n SL Targets Damage Range AoE Duration \n 1 +1 +1 x2 N/a N/a \n 2 +1 +2 x2 N/a x2 \n 3 +1 +3 x2 x2 x2 \n 5 +2 +4 x3 x2 x2 \n 8 +2 +5 x3 x2 x3 \n 13 +2 +6 x3 x3 x3 \n 21 +3 +7 x4 x3 x3" } \ No newline at end of file