[TheWitcher] add defense bases

This commit is contained in:
Stexinator
2022-08-26 11:53:34 +02:00
parent 17afeec5a3
commit 3abb20282a
3 changed files with 429 additions and 213 deletions
+6 -1
View File
@@ -296,6 +296,11 @@
"show-jointattacks-u": "Show joint attacks",
"character-u": "CHARACTER",
"show-magic-and-spells": "Show magic and spell tab",
"use-pc-defense-bases": "Show defense bases",
"background-u": "BACKGROUND",
"show-multiple-reputations": "Show multiple reputations"
"show-multiple-reputations": "Show multiple reputations",
"defense-bases": "DEFENSE BASES",
"dodge-base": "DODGE BASE",
"reposition-base": "REPOSITION BASE",
"block-base": "BLOCK BASE"
}
+107 -5
View File
@@ -368,6 +368,35 @@ input.repeating_npcskill_score {
box-shadow: inset 0px 0px 4px 0px #262626;
}
/* Left Side */
.special-stack-grid {
margin-left: -10px;
}
.npc-defenses {
width: 520px;
}
.npc-defense-container {
display: flex;
justify-content: space-evenly;
}
.npc-defenses .defense-title {
padding-right: 0px;
}
.npc-defenses .defense-name {
padding-left: 0px;
}
.npc-defense {
width: min-content;
display: block;
text-align: center;
}
/* ----------- */
.charsheet {
@@ -4994,6 +5023,11 @@ textarea.armor-text {
color: #ebebeb;
}
/* -- PC Defense Bases */
.pc-defense-base:not(:checked) ~ .pc-defense-base {
display: none;
}
/* Spells & Signs*/
span.repeating_spell_gradient {
@@ -6622,6 +6656,66 @@ button[type=roll].repeating_npc_weapon_roll:active {
vertical-align: middle;
}
/* DEFENSE BASES */
label.defense-title {
display: inline-block;
margin-top: 10px;
margin-bottom: 10px;
padding-left: 12px;
padding-top: 4px;
padding-bottom: 4px;
font-weight: 1;
font-size: 12px;
color: #FFF;
margin-bottom: 2px;
border-radius: 15px;
background: #444444;
}
span.defense-name {
display: inline-block;
line-height: 0.65;
padding-left: 15px;
width: 130px;
font-size: 14px;
}
.charsheet button[type=action].defense_skill_roll::before {
font-family: "dicefontd10";
content: "0";
font-size: 17px;
}
button[type=action].defense_skill_roll {
color: #000;
display: inline-block;
background-color: #e8e8e8;
text-align: center;
font-weight: bold;
margin-top: 5px;
width:18px;
height:18px;
border-radius: 100px;
border-color: #000;
border: 1px solid;
box-shadow: inset 1px 1px 1px 1px rgba(0,0,0,0.30);
}
button[type=action].defense_skill_roll:hover {
color: #878787;
border-color: #878787;
border: 1px solid;
}
button[type=action].defense_skill_roll:active {
color: #d6d6d6;
border-color: #d6d6d6;
border: 1px solid;
box-shadow: inset 2px 1px 1px 1px #878787;
}
/* ROLL TEMPLATES */
.sheet-rolltemplate-npcweapon table,
@@ -6642,7 +6736,8 @@ button[type=roll].repeating_npc_weapon_roll:active {
.sheet-rolltemplate-target table,
.sheet-rolltemplate-fumble table,
.sheet-rolltemplate-save table,
.sheet-rolltemplate-initiative table {
.sheet-rolltemplate-initiative table,
.sheet-rolltemplate-npcdefense table {
width: 95%;
border: 1px solid;
color: black;
@@ -6668,7 +6763,8 @@ button[type=roll].repeating_npc_weapon_roll:active {
.sheet-rolltemplate-target th,
.sheet-rolltemplate-fumble th,
.sheet-rolltemplate-save th,
.sheet-rolltemplate-initiative th {
.sheet-rolltemplate-initiative th,
.sheet-rolltemplate-npcdefense th {
color: #ffffff;
padding: 2px;
text-align: center;
@@ -6695,6 +6791,7 @@ button[type=roll].repeating_npc_weapon_roll:active {
.sheet-rolltemplate-target .userscript-template-title,
.sheet-rolltemplate-fumble .userscript-template-title,
.sheet-rolltemplate-save .userscript-template-title,
.sheet-rolltemplate-npcdefense .userscript-template-title,
.sheet-rolltemplate-initiative .userscript-template-title {
font-weight: bold;
}
@@ -6717,6 +6814,7 @@ button[type=roll].repeating_npc_weapon_roll:active {
.sheet-rolltemplate-target td,
.sheet-rolltemplate-fumble td,
.sheet-rolltemplate-save td,
.sheet-rolltemplate-npcdefense td,
.sheet-rolltemplate-initiative td {
padding: 8px;
border-bottom: 1px solid black;
@@ -6740,6 +6838,7 @@ button[type=roll].repeating_npc_weapon_roll:active {
.sheet-rolltemplate-target .inlinerollresult,
.sheet-rolltemplate-fumble .inlinerollresult,
.sheet-rolltemplate-save .inlinerollresult,
.sheet-rolltemplate-npcdefense .inlinerollresult,
.sheet-rolltemplate-initiative .inlinerollresult {
display: inline-block;
min-width: 1.5em;
@@ -6821,15 +6920,18 @@ button[type=roll].repeating_npc_weapon_roll:active {
/* singleroll */
.sheet-rolltemplate-singleroll th {
.sheet-rolltemplate-singleroll th,
.sheet-rolltemplate-npcdefense th {
background-color: #595959;
}
.sheet-rolltemplate-singleroll tr:nth-child(odd) {
.sheet-rolltemplate-singleroll tr:nth-child(odd),
.sheet-rolltemplate-npcdefense tr:nth-child(odd) {
background-color: #b7b7b7;
}
.sheet-rolltemplate-singleroll tr:nth-child(even) {
.sheet-rolltemplate-singleroll tr:nth-child(even),
.sheet-rolltemplate-npcdefense tr:nth-child(even) {
background-color: #e0e0e0;
}
+316 -207
View File
@@ -2362,207 +2362,227 @@
<span class='total-weight-divider'>|</span>
<input type="text" class='display-weight' name="attr_total_enc" value=@{enc} disabled='true'>
</div>
<div class='armor-container'>
<!-- CURRENT SP INPUTS -->
<input name='attr_headcur' class='head-armor' type='number' placeholder='SP'>
<input name='attr_torsocur' class='torso-armor' type='number' placeholder='SP'>
<input name='attr_larmcur' class='larm-armor' type='number' placeholder='SP'>
<input name='attr_rarmcur' class='rarm-armor' type='number' placeholder='SP'>
<input name='attr_llegcur' class='lleg-armor' type='number' placeholder='SP'>
<input name='attr_rlegcur' class='rleg-armor' type='number' placeholder='SP'>
<!-- WOUND STATUS ICONS -->
<input class='head-icon' name='attr_head_icon' value='@{headwound}' disabled='true'>
<input class='torso-icon' name='attr_torso_icon' value='@{torsowound}' disabled='true'>
<input class='larm-icon' name='attr_larm_icon' value='@{larmwound}' disabled='true'>
<input class='rarm-icon' name='attr_rarm_icon' value='@{rarmwound}' disabled='true'>
<input class='lleg-icon' name='attr_lleg_icon' value='@{llegwound}' disabled='true'>
<input class='rleg-icon' name='attr_rleg_icon' value='@{rlegwound}' disabled='true'>
<!-- STYLED RADIO BUTTONS -->
<input type="hidden" class="spradio" name="attr_splocation" value="1" />
<button type="action" name="act_splocation_1" class="spradio spradio-1"><span class="checked"></span></button>
<button type="action" name="act_splocation_2" class="spradio spradio-2"><span class="checked"></span></button>
<button type="action" name="act_splocation_3" class="spradio spradio-3"><span class="checked"></span></button>
<button type="action" name="act_splocation_4" class="spradio spradio-4"><span class="checked"></span></button>
<button type="action" name="act_splocation_5" class="spradio spradio-5"><span class="checked"></span></button>
<button type="action" name="act_splocation_6" class="spradio spradio-6"><span class="checked"></span></button>
<!-- ARMOR GRAPHICS -->
<input type='hidden' value='0' name="attr_sphead" class="hidden sphead" readonly>
<div class='sphead'></div>
<input type='hidden' value='0' name="attr_sptorso" class="hidden sptorso" readonly>
<div class='sptorso'></div>
<input type='hidden' value='0' name="attr_splarm" class="hidden splarm" readonly>
<div class='splarm'></div>
<input type='hidden' value='0' name="attr_sprarm" class="hidden sprarm" readonly>
<div class='sprarm'></div>
<input type='hidden' value='0' name="attr_splleg" class="hidden splleg" readonly>
<div class='splleg'></div>
<input type='hidden' value='0' name="attr_sprleg" class="hidden sprleg" readonly>
<div class='sprleg'></div>
<!-- STAT SECTION INPUTS -->
<input type='hidden' class='armortoggle' name='attr_splocation' value='character' />
<div class='head'>
<label class='equipped-armor-maintitle' data-i18n="head-u" >HEAD</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_headmax' class='maxspbox' placeholder='SP'>
<select name='attr_headwound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_headev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_headweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_headnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='torso'>
<label class='equipped-armor-maintitle' data-i18n="torso-u">TORSO</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_torsomax' class='maxspbox' placeholder='SP'>
<select name='attr_torsowound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_torsoev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_torsoweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_torsonotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='larm'>
<label class='equipped-armor-maintitle' data-i18n="left-arm-u">LEFT ARM</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_larmmax' class='maxspbox' placeholder='SP'>
<select name='attr_larmwound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_torsoev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_torsoweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_larmnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='rarm'>
<label class='equipped-armor-maintitle' data-i18n="right-arm-u">RIGHT ARM</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_rarmmax' class='maxspbox' placeholder='SP'>
<select name='attr_rarmwound' class='armor-wounds'>
<option class='armor-wounds-option'data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option'data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option'data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option'data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_torsoev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_torsoweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_rarmnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='lleg'>
<label class='equipped-armor-maintitle' data-i18n="left-leg-u">LEFT LEG</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_llegmax' class='maxspbox' placeholder='SP'>
<select name='attr_llegwound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_legev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_legweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_llegnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='rleg'>
<label class='equipped-armor-maintitle' data-i18n="right-leg-u">RIGHT LEG</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_rlegmax' class='maxspbox' placeholder='SP'>
<select name='attr_rlegwound' class='armor-wounds'>
<option class='armor-wounds-option'data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option'data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option'data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_legev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_legweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_rlegnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
</div>
<div class='armor-container'>
<!-- CURRENT SP INPUTS -->
<input name='attr_headcur' class='head-armor' type='number' placeholder='SP'>
<input name='attr_torsocur' class='torso-armor' type='number' placeholder='SP'>
<input name='attr_larmcur' class='larm-armor' type='number' placeholder='SP'>
<input name='attr_rarmcur' class='rarm-armor' type='number' placeholder='SP'>
<input name='attr_llegcur' class='lleg-armor' type='number' placeholder='SP'>
<input name='attr_rlegcur' class='rleg-armor' type='number' placeholder='SP'>
<!-- WOUND STATUS ICONS -->
<input class='head-icon' name='attr_head_icon' value='@{headwound}' disabled='true'>
<input class='torso-icon' name='attr_torso_icon' value='@{torsowound}' disabled='true'>
<input class='larm-icon' name='attr_larm_icon' value='@{larmwound}' disabled='true'>
<input class='rarm-icon' name='attr_rarm_icon' value='@{rarmwound}' disabled='true'>
<input class='lleg-icon' name='attr_lleg_icon' value='@{llegwound}' disabled='true'>
<input class='rleg-icon' name='attr_rleg_icon' value='@{rlegwound}' disabled='true'>
<!-- STYLED RADIO BUTTONS -->
<input type="hidden" class="spradio" name="attr_splocation" value="1" />
<button type="action" name="act_splocation_1" class="spradio spradio-1"><span class="checked"></span></button>
<button type="action" name="act_splocation_2" class="spradio spradio-2"><span class="checked"></span></button>
<button type="action" name="act_splocation_3" class="spradio spradio-3"><span class="checked"></span></button>
<button type="action" name="act_splocation_4" class="spradio spradio-4"><span class="checked"></span></button>
<button type="action" name="act_splocation_5" class="spradio spradio-5"><span class="checked"></span></button>
<button type="action" name="act_splocation_6" class="spradio spradio-6"><span class="checked"></span></button>
<!-- ARMOR GRAPHICS -->
<input type='hidden' value='0' name="attr_sphead" class="hidden sphead" readonly>
<div class='sphead'></div>
<input type='hidden' value='0' name="attr_sptorso" class="hidden sptorso" readonly>
<div class='sptorso'></div>
<input type='hidden' value='0' name="attr_splarm" class="hidden splarm" readonly>
<div class='splarm'></div>
<input type='hidden' value='0' name="attr_sprarm" class="hidden sprarm" readonly>
<div class='sprarm'></div>
<input type='hidden' value='0' name="attr_splleg" class="hidden splleg" readonly>
<div class='splleg'></div>
<input type='hidden' value='0' name="attr_sprleg" class="hidden sprleg" readonly>
<div class='sprleg'></div>
<!-- STAT SECTION INPUTS -->
<input type='hidden' class='armortoggle' name='attr_splocation' value='character' />
<div class='head'>
<label class='equipped-armor-maintitle' data-i18n="head-u" >HEAD</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_headmax' class='maxspbox' placeholder='SP'>
<select name='attr_headwound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_headev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_headweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_headnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='torso'>
<label class='equipped-armor-maintitle' data-i18n="torso-u">TORSO</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_torsomax' class='maxspbox' placeholder='SP'>
<select name='attr_torsowound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_torsoev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_torsoweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_torsonotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='larm'>
<label class='equipped-armor-maintitle' data-i18n="left-arm-u">LEFT ARM</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_larmmax' class='maxspbox' placeholder='SP'>
<select name='attr_larmwound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_torsoev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_torsoweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_larmnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='rarm'>
<label class='equipped-armor-maintitle' data-i18n="right-arm-u">RIGHT ARM</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_rarmmax' class='maxspbox' placeholder='SP'>
<select name='attr_rarmwound' class='armor-wounds'>
<option class='armor-wounds-option'data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option'data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option'data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option'data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_torsoev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_torsoweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_rarmnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='lleg'>
<label class='equipped-armor-maintitle' data-i18n="left-leg-u">LEFT LEG</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_llegmax' class='maxspbox' placeholder='SP'>
<select name='attr_llegwound' class='armor-wounds'>
<option class='armor-wounds-option' data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option' data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option' data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_legev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_legweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_llegnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
<div class='rleg'>
<label class='equipped-armor-maintitle' data-i18n="right-leg-u">RIGHT LEG</label><br />
<hr style='margin-bottom: 5px; margin-top: -20px; margin-left: 10px; margin-right: 10px;'>
<label class='maximum-sp' data-i18n="maximum-sp-u">MAXIMUM SP</label>
<input type='number' name='attr_rlegmax' class='maxspbox' placeholder='SP'>
<select name='attr_rlegwound' class='armor-wounds'>
<option class='armor-wounds-option'data-i18n="healthy-u" value="">HEALTHY</option>
<option class='armor-wounds-option'data-i18n="wounded-u" value="e">WOUNDED</option>
<option class='armor-wounds-option'data-i18n="stabilized-u" value="Y">STABILIZED</option>
<option class='armor-wounds-option' data-i18n="treated-u" value="&">TREATED</option>
</select>
<label class='armor-ev' data-i18n="enc-value-u">ENC. VALUE</label><select name='attr_legev' class='evbox'>
<option class='evbox-option' value='-0'>0</option>
<option class='evbox-option' value='-1'>1</option>
<option class='evbox-option' value='-2'>2</option>
<option class='evbox-option' value='-3'>3</option>
<option class='evbox-option' value='-4'>4</option>
<option class='evbox-option' value='-5'>5</option>
<option class='evbox-option' value='-6'>6</option>
<option class='evbox-option' value='-7'>7</option>
<option class='evbox-option' value='-8'>8</option>
<option class='evbox-option' value='-9'>9</option>
<option class='evbox-option' value='-10'>10</option>
</select>
<label class='armor-weight' data-i18n="weight-u">WEIGHT</label><input type='text' name='attr_legweight' class='wtbox' value='0'>
<textarea class='armor-text' name='attr_rlegnotes' data-i18n="armor-notes-u">Armor notes, equipped enhancements and/or wound details...</textarea>
</div>
</div>
<input class="pc-defense-base" name="attr_pcDefenseBases" type="checkbox" hidden/>
<div class="pc-defense-base">
<label class="defense-title" data-i18n="defense-bases">Defense Bases</label>
<br>
<div>
<span class="defense-name" data-i18n="dodge-base">Dodge Base</span>
<input type="number" name="attr_dodge_base" value="0"/>
<button type="action" name="act_dodge_base" class="defense_skill_roll" value='@{whisper}&{template:singleroll} {{title=DODGE}} {{name=@{character_name}}} {{roll=[[1d10!+@{dodge_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
<div>
<span class="defense-name" data-i18n="reposition-base">Reposition Base</span>
<input type="number" name="attr_reposition_base" value="0"/>
<button type="action" name="act_reposition_base" class="defense_skill_roll" value='@{whisper}&{template:singleroll} {{title=REPOSITION}} {{name=@{character_name}}} {{roll=[[1d10!+@{reposition_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
<div>
<span class="defense-name" data-i18n="block-base">Block Base</span>
<input type="number" name="attr_block_base" value="0"/>
<button type="action" name="act_block_base" class="defense_skill_roll" value='@{whisper}&{template:singleroll} {{title=BLOCK}} {{name=@{character_name}}} {{roll=[[1d10!+@{block_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
</div>
</div>
</div>
<div class='middle-alc-grid' style='margin-top: 15px;'>
@@ -3351,6 +3371,10 @@
<span data-i18n="show-magic-and-spells">Show Magic & Spells tab</span>
<input id="magic-and-spells" name="attr_isSpellcaster" type="checkbox" checked/>
</label>
<label for="pc-defense-bases" class="settings-checkbox" title='Show magic and spell tab'>
<span data-i18n="use-pc-defense-bases">Use defense bases for this character</span>
<input id="pc-defense-bases" name="attr_pcDefenseBases" type="checkbox"/>
</label>
</div>
</details>
<br>
@@ -3440,6 +3464,26 @@
<div class='middle-grid' style='margin-top: 20px; margin-left: 45px;'>
<img class='top-title-image' src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/TheWitcher/images/npc_stats_and_skills.png" ><br />
<div class='special-stack-grid'>
<div class="npc-defenses">
<label class="defense-title" data-i18n="defense-bases">Defense Bases</label>
<div class="npc-defense-container">
<div class="npc-defense">
<span class="defense-name" data-i18n="dodge-base">Dodge Base</span>
<input type="number" name="attr_dodge_base" value="0"/>
<button type="action" name="act_dodge_base" class="defense_skill_roll" value='@{whisper}&{template:npcdefense} {{title=DODGE}} {{name=@{character_name}}} {{roll=[[1d10!+@{dodge_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
<div class="npc-defense">
<span class="defense-name" data-i18n="reposition-base">Reposition Base</span>
<input type="number" name="attr_reposition_base" value="0"/>
<button type="action" name="act_reposition_base" class="defense_skill_roll" value='@{whisper}&{template:npcdefense} {{title=REPOSITION}} {{name=@{character_name}}} {{roll=[[1d10!+@{reposition_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
<div class="npc-defense">
<span class="defense-name" data-i18n="block-base">Block Base</span>
<input type="number" name="attr_block_base" value="0"/>
<button type="action" name="act_block_base" class="defense_skill_roll" value='@{whisper}&{template:npcdefense} {{title=BLOCK}} {{name=@{character_name}}} {{roll=[[1d10!+@{block_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
</div>
</div>
<div class='middle2-grid' style='margin-left: -10px;'>
<div class='grid-item' style='margin-top: 10px; margin-right: 20px;'>
<span class='npcskill-span' style='margin-bottom: 10px;'>
@@ -3582,7 +3626,27 @@
<div class='middle-grid' style='margin-top: 20px; margin-left: 45px;'>
<img class='top-title-image' src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/TheWitcher/images/npc_stats_and_skills.png" ><br />
<div class='special-stack-grid'>
<div class='middle2-grid' style='margin-left: -10px;'>
<div class="npc-defenses">
<label class="defense-title" data-i18n="defense-bases">Defense Bases</label>
<div class="npc-defense-container">
<div class="npc-defense">
<span class="defense-name" data-i18n="dodge-base">Dodge Base</span>
<input type="number" name="attr_dodge_base" value="0"/>
<button type="action" name="act_dodge_base" class="defense_skill_roll" value='@{whisper}&{template:npcdefense} {{title=DODGE}} {{name=@{character_name}}} {{roll=[[1d10!+@{dodge_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
<div class="npc-defense">
<span class="defense-name" data-i18n="reposition-base">Reposition Base</span>
<input type="number" name="attr_reposition_base" value="0"/>
<button type="action" name="act_reposition_base" class="defense_skill_roll" value='@{whisper}&{template:npcdefense} {{title=REPOSITION}} {{name=@{character_name}}} {{roll=[[1d10!+@{reposition_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
<div class="npc-defense">
<span class="defense-name" data-i18n="block-base">Block Base</span>
<input type="number" name="attr_block_base" value="0"/>
<button type="action" name="act_block_base" class="defense_skill_roll" value='@{whisper}&{template:npcdefense} {{title=BLOCK}} {{name=@{character_name}}} {{roll=[[1d10!+@{block_base}[SKILL BASE]+?{ADDITIONAL MODS? (Bright Light, No Vision, Terrain etc)|0}[MOD]]]}}'></button>
</div>
</div>
</div>
<div class='middle2-grid' style=''>
<div class='grid-item' style='margin-top: 10px; margin-right: 20px;'>
<span class='npcskill-span' style='margin-bottom: 10px;'>
<label class='npcskilltitle' data-i18n="skills-u" >SKILLS</label>
@@ -3606,7 +3670,7 @@
</fieldset>
</div>
</div>
<div class='grid-item' style='margin-left: -10px; margin-top: 10px; margin-right: 30px;'>
<div class='grid-item' style='; margin-top: 10px; margin-right: 30px;'>
<span class='weapon-span' style='margin-bottom: 10px;'>
<label class='weapontitle' data-i18n="weapons-u" >WEAPONS</label>
</span>
@@ -3620,7 +3684,7 @@
</span>
</fieldset>
</div>
<div class='middle2-grid' style='margin-left: -20px;'>
<div class='middle2-grid' style='margin-left: -10px;'>
<div class='grid-item' style='margin-left: 10px; margin-right: 30px; margin-top: 10px;'>
<span class='vuln-span' style='margin-bottom: 10px;'>
<label class='abilitytitle' data-i18n="vulnerabilitie-u" >VULNERABILITIES</label>
@@ -3642,7 +3706,7 @@
</div>
<!-- -Modifiers Table- -->
<div class='grid-item' style='margin-top: -68px; margin-left: -20px; margin-right: 60px;'>
<div class='grid-item' style='margin-top: -68px; margin-left: -20px; '>
<div class='npc-armor-box'>
<label class='npcarmortitle' data-i18n="armor-u" >ARMOR</label>
<input class='npc-armor' name='attr_npc_armor' type='number' value='0'>
@@ -4381,8 +4445,6 @@ on('clicked:roll', async (event) => {
let rollBase = event.htmlAttributes.value + "{{fumble=[[1d10!]]}}{{fumble2=[[1d10!]]}}{{rolllocation=[[0]]}}";
let rollResult = await startRoll(rollBase);
console.log(rollResult);
let computedValues = await resolveChecks(
checkFumble(rollResult),
checkLocation(rollResult)
@@ -4447,6 +4509,24 @@ on('clicked:roll_spellcasting_detailed', async (event) => {
);
});
/////////////////////////
// Defense Base Rolls //
/////////////////////////
on('clicked:dodge_base clicked:reposition_base clicked:block_base', async (event) => {
let rollBase = event.htmlAttributes.value + "{{fumble=[[1d10!]]}}";
let rollResult = await startRoll(rollBase);
let computedValues = await resolveChecks(
checkFumble(rollResult),
);
finishRoll(
rollResult.rollId,
computedValues
);
});
//////////////////////////////
// Weapon Template Attacks //
//////////////////////////////
@@ -5015,6 +5095,35 @@ const asw = (() => {
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npcdefense">
<table>
<tr><th style='text-transform: uppercase;'>{{title}}</th></tr>
<tr><td><strong class="template-title">NAME: </strong> {{name}}</td></tr>
<tr><td><strong class="template-title">SKILL ROLL: </strong> {{computed::roll}}</td></tr>
{{#rollWasFumble() roll}}
{{#^rollWasCrit() roll}}
<tr style='text-align: justify; font-size: 12px;'>
<td>
<strong class="template-title">FUMBLED BY:</strong> {{fumble}}
</td>
</tr>
{{/^rollWasCrit() roll}}
{{/rollWasFumble() roll}}
</table>
<div class="sheet-rolltemplate-button-row">
{{#^rollTotal() computed::rolllocation 0}}
<div class="sheet-rolltemplate-button">
[Location](~{{attacker}}|location)
</div>
{{/^rollTotal() computed::rolllocation 0}}
{{#rollTotal() computed::rolllocation 0}}
<div class="sheet-rolltemplate-button">
[Damage](~{{attacker}}|location)
</div>
{{/rollTotal() computed::rolllocation 0}}
</div>
</rolltemplate>
<!-- ---- Casting Templates ---- -->
<rolltemplate class="sheet-rolltemplate-spell">