Merge pull request #11127 from jaculpiii/ShadowrunSixthWorld-v.62

Shadowrun Sixth World v.62 - 3 New Features (Extended Tests)
This commit is contained in:
Miguel Peres
2022-10-17 20:57:07 -03:00
committed by GitHub
4 changed files with 262 additions and 161 deletions
+5
View File
@@ -1,5 +1,10 @@
Change Log
==============================================
**2022-10-24 ** v.62 Chuz (James Culp)
New Feature - PC->Matrix->ASDF Roll buttons now include more options to combine them with. None, Custom, mind attributes and ASDF.
New Feature - NPCs now have updated ASDF roll buttons as well!
New Feature - NPCs now have the newer version of the d6's roll button and the new Extended Tests capability.
New Feature - Added Extended Tests capabilities.
**2022-09-20 ** v.61 Chuz (James Culp)
Bugfix - NPC->Spells were missing the Limited duration, added it.
Bugfix - Charactersheet Tab - removed the underline.
+21 -7
View File
@@ -276,7 +276,7 @@ input:checked + .slider:before {
/* MIXIN
============================= */
/***** TABS FOR SHEETS *****/
.tabs button[type='action']:not([name='act_d6']) {
.tabs button[type='action']:not(.icon) {
background-color: #333 !important;
border-radius: 2px !important;
border: 1px solid #000 !important;
@@ -300,6 +300,15 @@ input:checked + .slider:before {
font-family: 'dicefontd6' !important;
font-size: 2.5em !important;
vertical-align: middle; }
.tabs button[name='act_extended_start'] {
width: auto !important;
background: none !important;
text-shadow: 1px 1px 2px black, 0 0 25px #460141, 0 0 5px #460141 !important;
border: none !important;
color: #fff !important;
font-family: 'Pictos' !important;
font-size: 2.5em !important;
vertical-align: middle; }
.tabs button[type='roll']:hover,
.tabs button[type='action']:hover {
text-shadow: 1px 1px 2px black, 0 0 25px #460141, 0 0 5px #460141 !important; }
@@ -377,13 +386,13 @@ select.limit-select option:nth-of-type(1n+5) {
color: #460141 !important; }
/*:+:+:+: MATRIX DEVICE :+:+:+:*/
div.matrix-device button[name*='Attack']:hover {
div.matrix-device button[name*='ttack']:hover {
color: #cc0701 !important; }
div.matrix-device button[name*='Sleaze']:hover {
div.matrix-device button[name*='leaze']:hover {
color: #007bfc !important; }
div.matrix-device button[name*='Data']:hover {
div.matrix-device button[name*='ata']:hover {
color: #88dd04 !important; }
div.matrix-device button[name*='Firewall']:hover {
div.matrix-device button[name*='irewall']:hover {
color: #f88703 !important; }
div.matrix-device input[type='radio'] {
position: relative !important;
@@ -582,7 +591,7 @@ div.matrix-device .matrixFirewall {
#SR6WE .pc .tabs .header-navtabs {
display: grid !important;
grid-template-columns: 1fr 2.5em 2.5em repeat(10, 5em) !important;
grid-template-columns: 1fr 2.5em 2.5em 2.5em repeat(10, 5em) !important;
vertical-align: middle;
width: 100% !important;
right: 0px !important; }
@@ -4813,6 +4822,9 @@ div.footer img {
/******************************************* Roll template **********************************************/
/********************************************************************************************************/
.goat,
.sheet-rolltemplate-rolls-computed .sheet-nott .inlinerollresult {
pointer-events: none;
}
.sheet-rolltemplate-rolls-computed span.sheet-left {
float: left;
text-align: left; }
@@ -4980,7 +4992,9 @@ div.footer img {
.sheet-rolltemplate-quality span.sheet-template-desc .inlinerollresult,
.sheet-rolltemplate-rolls span.sheet-template-desc .inlinerollresult,
.sheet-rolltemplate-rolls-computed span.sheet-template-desc .inlinerollresult,
.sheet-rolltemplate-contact span.sheet-template-desc .inlinerollresult {
.sheet-rolltemplate-contact span.sheet-template-desc .inlinerollresult,
.sheet-rolltemplate-rolls-computed .sheet-intervals-hitstotal .inlinerollresult,
.sheet-rolltemplate-rolls-computed .sheet-intervals-hitstotal {
font-size: 14px !important; }
.sheet-rolltemplate-rolls-computed .sheet-template-body {
+235 -154
View File
@@ -48,66 +48,9 @@
<div class="header-navtabs">
<input name="attr_tab" type="hidden" value="core"/>
<h1>&nbsp;</h1>
<button name="act_bump_fours1" type="action" style="display: none;"></button>
<button name="act_bump_fours2" type="action" style="display: none;"></button>
<button name="act_bump_fours3" type="action" style="display: none;"></button>
<button name="act_bump_fours4" type="action" style="display: none;"></button>
<button name="act_bump_fours5" type="action" style="display: none;"></button>
<button name="act_bump_fours6" type="action" style="display: none;"></button>
<button name="act_bump_fours7" type="action" style="display: none;"></button>
<button name="act_reroll1" type="action" style="display: none;"></button>
<button name="act_reroll2" type="action" style="display: none;"></button>
<button name="act_reroll3" type="action" style="display: none;"></button>
<button name="act_reroll4" type="action" style="display: none;"></button>
<button name="act_reroll5" type="action" style="display: none;"></button>
<button name="act_reroll6" type="action" style="display: none;"></button>
<button name="act_reroll7" type="action" style="display: none;"></button>
<button name="act_reroll8" type="action" style="display: none;"></button>
<button name="act_reroll9" type="action" style="display: none;"></button>
<button name="act_reroll10" type="action" style="display: none;"></button>
<button name="act_reroll11" type="action" style="display: none;"></button>
<button name="act_reroll12" type="action" style="display: none;"></button>
<button name="act_reroll13" type="action" style="display: none;"></button>
<button name="act_reroll14" type="action" style="display: none;"></button>
<button name="act_reroll15" type="action" style="display: none;"></button>
<button name="act_reroll16" type="action" style="display: none;"></button>
<button name="act_reroll17" type="action" style="display: none;"></button>
<button name="act_reroll18" type="action" style="display: none;"></button>
<button name="act_reroll19" type="action" style="display: none;"></button>
<button name="act_reroll20" type="action" style="display: none;"></button>
<button name="act_reroll21" type="action" style="display: none;"></button>
<button name="act_reroll22" type="action" style="display: none;"></button>
<button name="act_reroll23" type="action" style="display: none;"></button>
<button name="act_reroll24" type="action" style="display: none;"></button>
<button name="act_reroll25" type="action" style="display: none;"></button>
<button name="act_reroll26" type="action" style="display: none;"></button>
<button name="act_reroll27" type="action" style="display: none;"></button>
<button name="act_reroll28" type="action" style="display: none;"></button>
<button name="act_reroll29" type="action" style="display: none;"></button>
<button name="act_reroll30" type="action" style="display: none;"></button>
<button name="act_reroll31" type="action" style="display: none;"></button>
<button name="act_reroll32" type="action" style="display: none;"></button>
<button name="act_reroll33" type="action" style="display: none;"></button>
<button name="act_reroll34" type="action" style="display: none;"></button>
<button name="act_reroll35" type="action" style="display: none;"></button>
<button name="act_reroll36" type="action" style="display: none;"></button>
<button name="act_reroll37" type="action" style="display: none;"></button>
<button name="act_reroll38" type="action" style="display: none;"></button>
<button name="act_reroll39" type="action" style="display: none;"></button>
<button name="act_reroll40" type="action" style="display: none;"></button>
<button name="act_reroll41" type="action" style="display: none;"></button>
<button name="act_reroll42" type="action" style="display: none;"></button>
<button name="act_reroll43" type="action" style="display: none;"></button>
<button name="act_reroll44" type="action" style="display: none;"></button>
<button name="act_reroll45" type="action" style="display: none;"></button>
<button name="act_reroll46" type="action" style="display: none;"></button>
<button name="act_reroll47" type="action" style="display: none;"></button>
<button name="act_reroll48" type="action" style="display: none;"></button>
<button name="act_reroll49" type="action" style="display: none;"></button>
<button name="act_reroll50" type="action" style="display: none;"></button>
<button name="act_d6" title="Roll D6s" type="action" value="@{gm_toggle} &{template:rolls}{{header=@{character_name}}}{{base=^{d6}}}{{dice=[[(?{d6s|0}d6>5?{Exploding 6's?|N, |Y,!})]]}}{{wilddie=[[?{Wild Die?|N,0|Y,1}d6]]}}">L</button>
<button class="pictos" name="act_tab_options" title="@{tab}" type="action">y</button>
<button name="act_extended_start" class="icon pictos" title="Start Extended Test" type="action" value="">r</button>
<button name="act_d6" class="icon d6" title="Roll D6s" type="action" value="">L</button>
<button class="pictos" name="act_tab_options" title="@{tab}" type="action"><span style="font-family: pictos;">y</span></button>
<button data-i18n="core" name="act_tab_core" type="action" title="@{tab}">core</button>
<button data-i18n="arms" name="act_tab_arms" type="action" title="@{tab}">arms</button>
<button data-i18n="augs" name="act_tab_augs" type="action" title="@{tab}">augs</button>
@@ -2400,7 +2343,7 @@
<h3 data-i18n="base">Base</h3>
<h3 data-i18n="baseslider">Base slider</h3>
<br />
<label><button name="act_matrix_attack" type="action" value="&{template:rolls}{{header=@{character_name}}}{{base=^{matrix} ^{attack}}}{{dice=[[(@{attack}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" title="Roll attack" data-i18n="attack">Attack</button></label>
<label><button name="act_matrix_attack" type="action" value="" title="Roll attack" data-i18n="attack">Attack</button></label>
<div class="matrix-tot" title="@{attack}" ><span name="attr_attack"></span></div><span> = </span>
<input type="number" name="attr_attack_temp" min="0" value="0" placeholder="0" title="@{attack_temp}" /> +
<input type="number" name="attr_attack_modifier" min="0" value="0" placeholder="0" title="@{attack_modifier}" /> +
@@ -2422,7 +2365,7 @@
</div>
</div>
<div class="row-long">
<label><button name="act_matrix_sleaze" type="action" value="&{template:rolls}{{header=@{character_name}}}{{base=^{matrix} ^{sleaze}}}{{dice=[[(@{sleaze}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" title="Roll sleaze" data-i18n="sleaze">Sleaze</button></label>
<label><button name="act_matrix_sleaze" type="action" value="" title="Roll sleaze" data-i18n="sleaze">Sleaze</button></label>
<div class="matrix-tot" title="@{sleaze}" ><span name="attr_sleaze"></span></div><span> = </span>
<input type="number" name="attr_sleaze_temp" min="0" value="0" placeholder="0" title="@{sleaze_temp}" /> +
<input type="number" name="attr_sleaze_modifier" min="0" value="0" placeholder="0" title="@{sleaze_modifier}" /> +
@@ -2444,7 +2387,7 @@
</div>
</div>
<div class="row-long">
<label><button name="act_matrix_data_processing" type="action" value="&{template:rolls}{{header=@{character_name}}}{{base=^{matrix} ^{data_processing}}}{{dice=[[(@{data_processing}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" title="Roll data processing" data-i18n="dataproc">Data Proc.</button></label>
<label><button name="act_matrix_data_processing" type="action" value="" title="Roll data processing" data-i18n="dataproc">Data Proc.</button></label>
<div class="matrix-tot" title="@{data_processing}" ><span name="attr_data_processing"></span></div><span> = </span>
<input type="number" name="attr_data_processing_temp" min="0" value="0" placeholder="0" title="@{data_processing_temp}" /> +
<input type="number" name="attr_data_processing_modifier" min="0" value="0" placeholder="0" title="@{data_processing_modifier}" /> +
@@ -2466,7 +2409,7 @@
</div>
</div>
<div class="row-long">
<label><button name="act_matrix_firewall" type="action" value="&{template:rolls}{{header=@{character_name}}}{{base=^{matrix} ^{firewall}}}{{dice=[[(@{firewall}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" title="Roll firewall" data-i18n="firewall">Firewall</button></label>
<label><button name="act_matrix_firewall" type="action" value="" title="Roll firewall" data-i18n="firewall">Firewall</button></label>
<div class="matrix-tot" title="@{firewall}" ><span name="attr_firewall"></span></div><span> = </span>
<input type="number" name="attr_firewall_temp" min="0" value="0" placeholder="0" title="@{firewall_temp}" /> +
<input type="number" name="attr_firewall_modifier" min="0" value="0" placeholder="0" title="@{firewall_modifier}" /> +
@@ -3401,6 +3344,19 @@
<div class="notes-changelog">
<div name="changelog" class="changelog">
<h1 class="changelog-header">Most Recent Updates</h1>
<span class="changelog-entry">**2022-10-24 ** v.62 Chuz (James Culp)</span>
<ul>
<li><span class="bullet">F</span><b>New Feature</b> - PC->Matrix->ASDF Roll buttons now include more options to combine them with. None, Custom, mind attributes and ASDF.
<li><span class="bullet">F</span><b>New Feature</b> - NPCs now have updated ASDF roll buttons as well!
<li><span class="bullet">F</span><b>New Feature</b> - NPCs now have the newer version of the d6's roll button and the new Extended Tests capability.
<li><span class="bullet">F</span><b>New Feature</b> - Added Extended Tests capabilities.
</ul>
<span class="changelog-entry">**2022-09-20 ** v.61 Chuz (James Culp)</span>
<ul>
<li><span class="bullet">A</span><b>Bugfix</b> - NPC->Spells were missing the Limited duration, added it.
<li><span class="bullet">A</span><b>Bugfix</b> - Charactersheet Tab - removed the underline.
<li><span class="bullet">A</span><b>Bugfix</b> - Updated Matrix Rolls trained prompt to say "Trained" instead of "No" (which made no sense)
</ul>
<span class="changelog-entry">**2022-09-13 ** v.60 Chuz (James Culp)</span>
<ul>
<li><span class="bullet">A</span><b>Bugfix</b> - PC->Rolls->Matrix actions including cracking were not using the Cracking skill rating but whatever the rating of the last updated skill was. Fixed the bug causing this and loading the sheet the first time should update the attr_cracking value to be correct again.
@@ -3488,6 +3444,69 @@
<div class="right-tri"></div>
</div>
</div>
<!-- Hidden Buttons -->
<div style="display: none;">
<button name="act_extended_next" type="action" style="display: none;" value=""></button>
<button name="act_bump_fours1" type="action" style="display: none;"></button>
<button name="act_bump_fours2" type="action" style="display: none;"></button>
<button name="act_bump_fours3" type="action" style="display: none;"></button>
<button name="act_bump_fours4" type="action" style="display: none;"></button>
<button name="act_bump_fours5" type="action" style="display: none;"></button>
<button name="act_bump_fours6" type="action" style="display: none;"></button>
<button name="act_bump_fours7" type="action" style="display: none;"></button>
<button name="act_reroll1" type="action" style="display: none;"></button>
<button name="act_reroll2" type="action" style="display: none;"></button>
<button name="act_reroll3" type="action" style="display: none;"></button>
<button name="act_reroll4" type="action" style="display: none;"></button>
<button name="act_reroll5" type="action" style="display: none;"></button>
<button name="act_reroll6" type="action" style="display: none;"></button>
<button name="act_reroll7" type="action" style="display: none;"></button>
<button name="act_reroll8" type="action" style="display: none;"></button>
<button name="act_reroll9" type="action" style="display: none;"></button>
<button name="act_reroll10" type="action" style="display: none;"></button>
<button name="act_reroll11" type="action" style="display: none;"></button>
<button name="act_reroll12" type="action" style="display: none;"></button>
<button name="act_reroll13" type="action" style="display: none;"></button>
<button name="act_reroll14" type="action" style="display: none;"></button>
<button name="act_reroll15" type="action" style="display: none;"></button>
<button name="act_reroll16" type="action" style="display: none;"></button>
<button name="act_reroll17" type="action" style="display: none;"></button>
<button name="act_reroll18" type="action" style="display: none;"></button>
<button name="act_reroll19" type="action" style="display: none;"></button>
<button name="act_reroll20" type="action" style="display: none;"></button>
<button name="act_reroll21" type="action" style="display: none;"></button>
<button name="act_reroll22" type="action" style="display: none;"></button>
<button name="act_reroll23" type="action" style="display: none;"></button>
<button name="act_reroll24" type="action" style="display: none;"></button>
<button name="act_reroll25" type="action" style="display: none;"></button>
<button name="act_reroll26" type="action" style="display: none;"></button>
<button name="act_reroll27" type="action" style="display: none;"></button>
<button name="act_reroll28" type="action" style="display: none;"></button>
<button name="act_reroll29" type="action" style="display: none;"></button>
<button name="act_reroll30" type="action" style="display: none;"></button>
<button name="act_reroll31" type="action" style="display: none;"></button>
<button name="act_reroll32" type="action" style="display: none;"></button>
<button name="act_reroll33" type="action" style="display: none;"></button>
<button name="act_reroll34" type="action" style="display: none;"></button>
<button name="act_reroll35" type="action" style="display: none;"></button>
<button name="act_reroll36" type="action" style="display: none;"></button>
<button name="act_reroll37" type="action" style="display: none;"></button>
<button name="act_reroll38" type="action" style="display: none;"></button>
<button name="act_reroll39" type="action" style="display: none;"></button>
<button name="act_reroll40" type="action" style="display: none;"></button>
<button name="act_reroll41" type="action" style="display: none;"></button>
<button name="act_reroll42" type="action" style="display: none;"></button>
<button name="act_reroll43" type="action" style="display: none;"></button>
<button name="act_reroll44" type="action" style="display: none;"></button>
<button name="act_reroll45" type="action" style="display: none;"></button>
<button name="act_reroll46" type="action" style="display: none;"></button>
<button name="act_reroll47" type="action" style="display: none;"></button>
<button name="act_reroll48" type="action" style="display: none;"></button>
<button name="act_reroll49" type="action" style="display: none;"></button>
<button name="act_reroll50" type="action" style="display: none;"></button>
</div>
<div style="display: none;">
<button class="btn ui-draggable" name="act_matrixresist_int_f" type="action" style="display: none;" value=""></button>
@@ -3559,35 +3578,6 @@
</div>
</div>
</div>
<!-- extended test roll buttons -->
<div style="display: none;">
<button title="Extended Test 25 Dice" class="" name="act_extended_25" type="action" value=""><span data-i18n="extended_test_25"></span></button>
<button title="Extended Test 24 Dice" class="" name="act_extended_24" type="action" value=""><span data-i18n="extended_test_24"></span></button>
<button title="Extended Test 23 Dice" class="" name="act_extended_23" type="action" value=""><span data-i18n="extended_test_23"></span></button>
<button title="Extended Test 22 Dice" class="" name="act_extended_22" type="action" value=""><span data-i18n="extended_test_22"></span></button>
<button title="Extended Test 21 Dice" class="" name="act_extended_21" type="action" value=""><span data-i18n="extended_test_21"></span></button>
<button title="Extended Test 20 Dice" class="" name="act_extended_20" type="action" value=""><span data-i18n="extended_test_20"></span></button>
<button title="Extended Test 19 Dice" class="" name="act_extended_19" type="action" value=""><span data-i18n="extended_test_19"></span></button>
<button title="Extended Test 18 Dice" class="" name="act_extended_18" type="action" value=""><span data-i18n="extended_test_18"></span></button>
<button title="Extended Test 17 Dice" class="" name="act_extended_17" type="action" value=""><span data-i18n="extended_test_17"></span></button>
<button title="Extended Test 16 Dice" class="" name="act_extended_16" type="action" value=""><span data-i18n="extended_test_16"></span></button>
<button title="Extended Test 15 Dice" class="" name="act_extended_15" type="action" value=""><span data-i18n="extended_test_15"></span></button>
<button title="Extended Test 14 Dice" class="" name="act_extended_14" type="action" value=""><span data-i18n="extended_test_14"></span></button>
<button title="Extended Test 13 Dice" class="" name="act_extended_13" type="action" value=""><span data-i18n="extended_test_13"></span></button>
<button title="Extended Test 12 Dice" class="" name="act_extended_12" type="action" value=""><span data-i18n="extended_test_12"></span></button>
<button title="Extended Test 11 Dice" class="" name="act_extended_11" type="action" value=""><span data-i18n="extended_test_11"></span></button>
<button title="Extended Test 10 Dice" class="" name="act_extended_10" type="action" value=""><span data-i18n="extended_test_10"></span></button>
<button title="Extended Test 9 Dice" class="" name="act_extended_9" type="action" value=""><span data-i18n="extended_test_9"></span></button>
<button title="Extended Test 8 Dice" class="" name="act_extended_8" type="action" value=""><span data-i18n="extended_test_8"></span></button>
<button title="Extended Test 7 Dice" class="" name="act_extended_7" type="action" value=""><span data-i18n="extended_test_7"></span></button>
<button title="Extended Test 6 Dice" class="" name="act_extended_6" type="action" value=""><span data-i18n="extended_test_6"></span></button>
<button title="Extended Test 5 Dice" class="" name="act_extended_5" type="action" value=""><span data-i18n="extended_test_5"></span></button>
<button title="Extended Test 4 Dice" class="" name="act_extended_4" type="action" value=""><span data-i18n="extended_test_4"></span></button>
<button title="Extended Test 3 Dice" class="" name="act_extended_3" type="action" value=""><span data-i18n="extended_test_3"></span></button>
<button title="Extended Test 2 Dice" class="" name="act_extended_2" type="action" value=""><span data-i18n="extended_test_2"></span></button>
<button title="Extended Test 1 Dice" class="" name="act_extended_1" type="action" value=""><span data-i18n="extended_test_1"></span></button>
</div>
</div>
@@ -3653,7 +3643,8 @@
</div>
<div class="header-toggles pc-box">
<span>&nbsp;</span>
<button name="d6" title="Roll D6s" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=^{d6}}}{{base=^{d6}}}{{dice=[[(?{d6s|0}d6&gt;5)]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}">L</button>
<button name="act_extended_start" class="icon pictos" title="Start Extended Test" type="action" value="">r</button>
<button name="act_d6" class="icon d6" title="Roll D6s" type="action" value="">L</button>
<h2 data-i18n-title="whispergm">/w GM</h2>
<label class="switch" data-i18n-title="whispergm" title="Whisper rolls to GM">
<input class="whisper-toggle" name="attr_gm_toggle" type="checkbox" value="/w gm"/><span class="slider"></span>
@@ -5072,7 +5063,7 @@
</label>
</div>
<div class="rows">
<button data-i18n="attack" name="Attack" value="&{template:rolls}{{header=@{character_name}}}{{base=^{attack}}}{{dice=[[(@{attack}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" type="roll">Attack</button>
<button name="act_matrix_attack" type="action" value="" title="Roll attack" data-i18n="attack">Attack</button>
<div class="matrix-bubble matrixAttack">
<input name="attr_attack" value="0" type="radio"/><span></span>
<input name="attr_attack" value="1" type="radio"/><span></span>
@@ -5101,7 +5092,7 @@
</label>
</div>
<div class="rows">
<button data-i18n="sleaze" name="Sleaze" value="&{template:rolls}{{header=@{character_name}}}{{base=^{sleaze}}}{{dice=[[(@{sleaze}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" type="roll">Sleaze</button>
<button name="act_matrix_sleaze" type="action" value="" title="Roll Sleaze" data-i18n="sleaze" >Sleaze</button>
<div class="matrix-bubble matrixSleaze">
<input name="attr_sleaze" value="0" type="radio"/><span></span>
<input name="attr_sleaze" value="1" type="radio"/><span></span>
@@ -5130,7 +5121,7 @@
</label>
</div>
<div class="rows">
<button data-i18n="data_processing" name="Data Processing" value="&{template:rolls}{{header=@{character_name}}}{{base=^{data_processing}}}{{dice=[[(@{data_processing}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" type="roll">Data Processing</button>
<button name="act_matrix_data_processing" type="action" value="" title="Roll Data Processing" data-i18n="data_processing">Data Processing</button>
<div class="matrix-bubble matrixData">
<input name="attr_data_processing" value="0" type="radio"/><span></span>
<input name="attr_data_processing" value="1" type="radio"/><span></span>
@@ -5159,7 +5150,7 @@
</label>
</div>
<div class="rows">
<button data-i18n="firewall" name="Firewall" value="&{template:rolls}{{header=@{character_name}}}{{base=^{firewall}}}{{dice=[[(@{firewall}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}" type="roll">Firewall</button>
<button name="act_matrix_firewall" type="action" value="" title="Roll Firewall" data-i18n="firewall">Firewall</button>
<div class="matrix-bubble matrixFirewall">
<input name="attr_firewall" value="0" type="radio"/><span></span>
<input name="attr_firewall" value="1" type="radio"/><span></span>
@@ -5625,9 +5616,10 @@
<!--Roll Template New Computed Stuff-->
<rolltemplate class="sheet-rolltemplate-rolls-computed">
<div class="sheet-template-body">
<div class="sheet-template-header">
<div class="sheet-template-header nott">
{{#header}}{{header}}{{/header}}{{#spec}}<span> ({{spec}})</span>{{/spec}}<br />
{{#arm}}<span>{{arm}}</span>{{/arm}}
{{#reason}}<span>{{reason}}</span><br>{{/reason}}
{{#base}}<span>{{base}}</span><br>{{/base}}
{{#effecttype}}<span>{{effecttype}}</span><br>{{/effecttype}}
{{#computed::dicepool}}<span class="dicepool">Dicepool: {{computed::dicepool}}</span><br>{{/computed::dicepool}}
@@ -5667,24 +5659,18 @@
{{/rollGreater() computed::glitch2 0}}
</span>
<span style="width: 95%">
<span class="split_pool_dicepool">Dicepool {{computed::split_pool_dicepool_1}}</span><br>
<span class="split_pool_dicepool nott">Dicepool {{computed::split_pool_dicepool_1}}</span><br>
<span class="split_pool_results">Atk 1: {{computed::roll1}}</span>
{{#rollGreater() wilddie1 0}}
<div class="sheet-template-row wilddice">{{wilddie1}} Wild Dice!<br>[{{computed::wilddie1_dice}}]</div>
<div class="sheet-template-row wilddice nott">{{wilddie1}} Wild Dice!<br>[{{computed::wilddie1_dice}}]</div>
{{/rollGreater() wilddie1 0}}
</span>
<span style="width: 95%">
<span class="split_pool_dicepool">Dicepool {{computed::split_pool_dicepool_2}}</span><br>
<span class="split_pool_dicepool nott">Dicepool {{computed::split_pool_dicepool_2}}</span><br>
<span class="split_pool_results">Atk 1: {{computed::roll2}}</span>
{{#rollGreater() wilddie2 0}}
<div class="sheet-template-row wilddice">{{wilddie2}} Wild Dice!<br>[{{computed::wilddie2_dice}}]</div>
<div class="sheet-template-row wilddice nott">{{wilddie2}} Wild Dice!<br>[{{computed::wilddie2_dice}}]</div>
{{/rollGreater() wilddie2 0}}
</span>
</div>
{{/split_pool}}
@@ -5700,44 +5686,70 @@
</div>
{{/rollGreater() rerolls 0}}
{{#extendedtest}}
<div class="sheet-template-row intervals-hitstotal">
<span style="padding-right: 5% !important" class="dicepool nott">Intervals: {{computed::intervals}}</span>
<span style="padding-left: 5% !important" class="nott">Total Hits: {{computed::hitstotal}}</span>
</div>
{{/extendedtest}}
{{#sprint}}<div class="sheet-template-row">Sprint: {{dice}} meters</div>{{/sprint}}
{{#initiative}}<div class="sheet-template-row">Initiative: <!-- {{initiative}} => --> {{computed::initiative}}</div>{{/initiative}}
{{#rollGreater() wilddie 0}}
<div class="sheet-template-row wilddice">{{wilddie}} Wild Dice!<br>[{{computed::wilddie_dice}}]</div>
<div class="sheet-template-row wilddice nott">{{wilddie}} Wild Dice!<br>[{{computed::wilddie_dice}}]</div>
{{/rollGreater() wilddie 0}}
{{#rating}}<div class="sheet-template-row">{{rating}}</div>{{/rating}}
{{#ampup}}{{#rollGreater() ampup 0}}
<div class="sheet-template-row">
<span class="sheet-template-desc">Amp Up: {{ampup}}</span>
<span class="sheet-template-desc nott">Amp Up: {{ampup}}</span>
</div>
{{/rollGreater() ampup 0}}{{/ampup}}
{{#drain}}{{#rollGreater() drain 0}}
<div class="sheet-template-row">
<span class="sheet-template-desc">Drain: {{drain}}</span>
<span class="sheet-template-desc nott">Drain: {{drain}}</span>
</div>
{{/rollGreater() drain 0}}{{/drain}}
{{#increasearea}}{{#rollGreater() increasearea 0}}
<div class="sheet-template-row">
<span class="sheet-template-desc">Increase Area: {{increasearea}}m</span>
<span class="sheet-template-desc nott">Increase Area: {{increasearea}}m</span>
</div>
{{/rollGreater() increasearea 0}}{{/increasearea}}
{{#damagetype}}
<div class="sheet-template-row">
<span class="sheet-template-desc">Damage Type: {{damagetype}}</span>
</div>
{{/damagetype}}
{{#fade}}{{#rollGreater() fade 0}}
<div class="sheet-template-row">
<span class="sheet-template-desc">Fade: {{fade}}</span>
<span class="sheet-template-desc nott">Fade: {{fade}}</span>
</div>
{{/rollGreater() fade 0}}{{/fade}}
{{#desc}}
<div class="sheet-template-row">
<span class="sheet-template-desc">{{desc}}</span>
</div>
{{/desc}}
{{#extendedtest}}
<div class="sheet-template-row">
{{#rollGreater() computed::dicepool 1}}
<span class="sheet-template-desc nott">[Next Roll](~{{header}}|extended_next||{{computed::passthrough}},{{reason}}) {{newdicepool}} dice</span>
{{/rollGreater() computed::dicepool 1}}
{{#rollLess() computed::dicepool 2}}
<span class="sheet-template-desc">**Dicepool Exhausted**</span>
{{/rollLess() computed::dicepool 2}}
</div>
{{/extendedtest}}
{{#opp}}<div class="sheet-template-row">{{opp}}</div>{{/opp}}
</div>
</rolltemplate>
@@ -5895,11 +5907,9 @@
<input type="hidden" name="attr_wild_die1" value="0" />
<input type="hidden" name="attr_wild_die2" value="0" />
<input type="hidden" name="attr_sheet_version" value="0.61">
<input type="hidden" name="attr_sheet_version" value="0.62">
<input type="hidden" name="attr_data_version" value="0">
<script type="text/worker">
// Sheet workers
// Data conversion for changes between sheet versions
@@ -5959,6 +5969,8 @@ on("sheet:opened", function() {
case (v.data_version < 0.60):
_v60_update();
console.log("Data now fits v.60");
case (v.data_version < 0.61):
console.log("Data now fits v.61");
default:
setAttrs({
'data_version': v.sheet_version
@@ -6393,7 +6405,7 @@ console.log(eventInfo);
*************************************************************/
// Roll Button Definitions
const rollButtons = {
d6: "@{gm_toggle} &{template:rolls-computed}{{header=@{character_name}}}{{base=?{Roll Reason?|d6}}}{{dice=[[(?{d6s|0}d6>5cs>5cf<[[(1+@{bad_luck})]]?{Exploding 6's?|N, |Y,!})]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=@{rerolls}}}{{header=@{character_name}}}",
d6: "@{gm_toggle} &{template:rolls-computed}{{header=@{character_name}}}{{base=?{Roll Reason?|d6}}}{{dice=[[(?{d6s|0}d6>5cs>5cf<[[(1+@{bad_luck})]]?{Exploding 6s?|N, |Y,!})]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=@{rerolls}}}{{header=@{character_name}}}",
bump_fours: "@{gm_toggle} &{template:rolls-computed}{{header=@{character_name}}}{{base=^{bump4s}}}{{desc=Bumping ?{How many?|-#-} fours to fives.\n+?{How many?} hits,\n-[[?{How many?} * 2]] Edge}}",
reroll: "@{gm_toggle} &{template:rolls-computed}{{dice=[[(?{Reroll how many?|-#-}d6>5cs>5cf<[[(1+@{bad_luck})]])]]}}{{dicepool=[[0]]}}{{header=@{character_name}}}{{base=^{rerolling} ?{Reroll how many?|-#-} ^{dice}}}",
@@ -6444,10 +6456,10 @@ const rollButtons = {
grenadeweapon: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=@{name}}}{{dice=[[(@{type}+@{spec}+@{expert}+@{dicepool_modifier}+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=DV @{ground_zero}/@{close}/@{near}, Blast Area: @{blast}, Notes: @{notes} [GM Roll Scatter](~@{character_name}|GrenadeScatterAndDistance)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
GrenadeScatterAndDistance: "/w GM &{template:multirow}{{header=Grenade}}{{base=Bounce & Scatter}}{{desc=Scatter Direction [[2d6]]}}{{desc2=Bounce Distance [[{[[2d6]]-(?{Hits?|0}?{Range?|Close,+4|Near,+2|Medium,+0|Far,-2|Extreme,-4}),0}kh1]]m}}",
spell: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{ampup=[[?{Amp Up|0|1|2|3|4|5|6|7|8|9|10}]]}}{{drain=[[?{Amp Up}*2+(@{drain})]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
spellaoe: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{ampup=[[?{Amp Up|0|1|2|3|4|5|6|7|8|9|10}]]}}{{increasearea=[[?{Increase Area|0m,0|2m,1|4m,2|6m,3|8m,4|10m,5|12m,5|14m,6|16m,8|18m,9|20m,10}*2]]}}{{drain=[[?{Amp Up}*2+?{Increase Area}+(@{drain})]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
noncombatspell: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{drain=[[@{drain}]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
noncombatspellaoe: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{increasearea=[[?{Increase Area|0m,0|2m,1|4m,2|6m,3|8m,4|10m,5|12m,5|14m,6|16m,8|18m,9|20m,10}*2]]}}{{drain=[[?{Increase Area}+(@{drain})]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
spell: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{ampup=[[?{Amp Up|0|1|2|3|4|5|6|7|8|9|10}]]}}{{drain=[[?{Amp Up}*2+(@{drain})]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
spellaoe: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{ampup=[[?{Amp Up|0|1|2|3|4|5|6|7|8|9|10}]]}}{{increasearea=[[?{Increase Area|0m,0|2m,1|4m,2|6m,3|8m,4|10m,5|12m,5|14m,6|16m,8|18m,9|20m,10}*2]]}}{{drain=[[?{Amp Up}*2+?{Increase Area}+(@{drain})]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
noncombatspell: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{drain=[[@{drain}]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
noncombatspellaoe: "@{gm_toggle} &{template:rolls-computed}{{dice=[[((@{skill}+@{magic}+@{dicepool_modifier}+@{specialization}+@{expertise})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{increasearea=[[?{Increase Area|0m,0|2m,1|4m,2|6m,3|8m,4|10m,5|12m,5|14m,6|16m,8|18m,9|20m,10}*2]]}}{{drain=[[?{Increase Area}+(@{drain})]]}}{{header=@{character_name}}}{{base=@{name} (@{category} ^{magic})}}{{effecttype=@{effect_type}}}{{damagetype=@{damage}}}{{desc=@{notes}}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
preparation: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=@{name}}}{{dice=[[((@{magic}+@{potency}+@{expert}+@{spec})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=@{notes}}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
ritual: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=@{name} (Sorcery + Magic + Teamwork Hits)}}{{dice=[[((@{skill}+@{magic}+@{spec}+@{expert}+@{dicepool_modifier}+?{Teamwork test hits?|0})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc= Threshold:@{threshold}\nTeamwork Test Hits: ?{Teamwork test hits?|}\nNotes:@{notes}}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
@@ -6472,10 +6484,12 @@ const rollButtons = {
matrix_device_rating: "&{template:rolls-computed}{{header=@{character_name}}}{{base=Matrix Device Rating}}{{rating=@{matrix_device_rating}}}",
matrix_attack_rating: "&{template:rolls-computed}{{header=@{character_name}}}{{base=Matrix Attack Rating}}{{rating=[[(@{attack}+@{sleaze})]]}}{{desc=Attack + Sleaze}}",
matrix_defense_rating: "&{template:rolls-computed}{{header=@{character_name}}}{{base=Matrix Defense Rating}}{{rating=[[@{matrix_defense_rating}]]}}{{desc=Data Processing + Firewall}}",
matrix_attack: "&{template:rolls-computed}{{header=@{character_name}}}{{base=^{matrix} ^{attack}}}{{dice=[[(@{attack}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
matrix_sleaze: "&{template:rolls-computed}{{header=@{character_name}}}{{base=^{matrix} ^{sleaze}}}{{dice=[[(@{sleaze}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
matrix_data_processing: "&{template:rolls-computed}{{header=@{character_name}}}{{base=^{matrix} ^{data_processing}}}{{dice=[[(@{data_processing}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
matrix_firewall: "&{template:rolls-computed}{{header=@{character_name}}}{{base=^{matrix} ^{firewall}}}{{dice=[[(@{firewall}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
matrix_attack: "&{template:rolls-computed}{{header=@{character_name}}}{{dice=[[(@{attack}+[[?{Attribute|None,0 [None]|Custom,?{Dice?&#124;0&#125; [Custom]|Willpower,@{willpower} [Willpower]|Logic,@{logic} [Logic]|Intuition,@{intuition} [Intuition]|Charisma,@{charisma} [Charisma]|Attack,@{attack} [Attack]|Sleaze,@{sleaze} [Sleaze]|Data Processing,@{data_processing} [Data Processing]|Firewall,@{firewall} [Firewall]}]]+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{base=^{matrix} ^{attack} + ?{Attribute}}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
matrix_sleaze: "&{template:rolls-computed}{{header=@{character_name}}}{{dice=[[(@{sleaze}+[[?{Attribute|None,0 [None]|Custom,?{Dice?&#124;0&#125; [Custom]|Willpower,@{willpower} [Willpower]|Logic,@{logic} [Logic]|Intuition,@{intuition} [Intuition]|Charisma,@{charisma} [Charisma]|Attack,@{attack} [Attack]|Sleaze,@{sleaze} [Sleaze]|Data Processing,@{data_processing} [Data Processing]|Firewall,@{firewall} [Firewall]}]]+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{base=^{matrix} ^{sleaze} + ?{Attribute}}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
matrix_data_processing: "&{template:rolls-computed}{{header=@{character_name}}}{{dice=[[(@{data_processing}+[[?{Attribute|None,0 [None]|Custom,?{Dice?&#124;0&#125; [Custom]|Willpower,@{willpower} [Willpower]|Logic,@{logic} [Logic]|Intuition,@{intuition} [Intuition]|Charisma,@{charisma} [Charisma]|Attack,@{attack} [Attack]|Sleaze,@{sleaze} [Sleaze]|Data Processing,@{data_processing} [Data Processing]|Firewall,@{firewall} [Firewall]}]]+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{base=^{matrix} ^{data_processing} + ?{Attribute}}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
matrix_firewall: "&{template:rolls-computed}{{header=@{character_name}}}{{dice=[[(@{firewall}+[[?{Attribute|None,0 [None]|Custom,?{Dice?&#124;0&#125; [Custom]|Willpower,@{willpower} [Willpower]|Logic,@{logic} [Logic]|Intuition,@{intuition} [Intuition]|Charisma,@{charisma} [Charisma]|Attack,@{attack} [Attack]|Sleaze,@{sleaze} [Sleaze]|Data Processing,@{data_processing} [Data Processing]|Firewall,@{firewall} [Firewall]}]]+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{base=^{matrix} ^{firewall} + ?{Attribute}}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
fade: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=^{resistfade}}}{{dice=[[(@{willpower}+@{logic}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{desc=Willpower + Logic}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
fade_compiling: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=^{resistfade} ^{compiling}}}{{dice=[[(@{willpower}+@{charisma}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{desc=Willpower + Charisma}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
compiling: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Compiling ?{sprite Type?|Courier|Crack|Data|Fault|Machine|Other} Sprite, Level ?{Level?|1|2|3|4|5|6|7|8|9|10}}}{{dice=[[((@{tasking}+@{resonance}+?{Skill Level?|Skilled (+0),0|Specialization (+2),2|Expertise (+3),3})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=[Sprite Resist](~@{character_name}|spriteresistlevel?{Level?})}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
@@ -6553,31 +6567,8 @@ const rollButtons = {
matrix_tarpit: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Matrix Tar Pit}}{{?{Training Level?|Untrained,-1|Trained,0|Specialized,2|Expertise,3}}}{{dice=[[(@{cracking}+@{logic}+?{Training Level?|0}+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle}+(@{matrix_overclock}*2)-@{matrix_noise})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=(Illegal), vs. Data Processing + Firewall}}{{wilddie=[[@{wild_die}+@{matrix_overclock}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{overclock=[[@{matrix_overclock}]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}{{matrix_noise=[[@{matrix_noise}]]}}",
matrix_trace_icon: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Matrix Trace Icon}}{{?{Training Level?|Untrained,-1|Trained,0|Specialized,2|Expertise,3}}}{{dice=[[(@{electronics}+@{intuition}+?{Training Level?|0}+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle}+(@{matrix_overclock}*2)-@{matrix_noise})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=(Illegal), vs. Willpower + Sleaze |or| Firewall + Sleaze}}{{wilddie=[[@{wild_die}+@{matrix_overclock}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}{{overclock=[[@{matrix_overclock}]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}{{matrix_noise=[[@{matrix_noise}]]}}",
extended_1: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(1+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n**Dicepool Exhausted**}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_2: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(2+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_1)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_3: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(3+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_2)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_4: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(4+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_3)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_5: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(5+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_4)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_6: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(6+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_5)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_7: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(7+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_6)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_8: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(8+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_7)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_9: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(9+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_8)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_10: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(10+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_9)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_11: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(11+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_10)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_12: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(12+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_11)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_13: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(13+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_12)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_14: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(14+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_13)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_15: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(15+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_14)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_16: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(16+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_15)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_17: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(17+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_16)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_18: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(18+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_17)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_19: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(19+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_18)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_20: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(20+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_19)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_21: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(21+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_20)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_22: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(22+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_21)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_23: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(23+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_22)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_24: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(24+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_23)}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_25: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Extended Test}}{{dice=[[(25+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test: ?{Reason?}\n[Next Roll](~@{character_name}|extended_24||?{Reason?})}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{dicepool=[[0]]}}",
extended_start: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Begin Extended Test}}{{reason=?{Extended Test Reason?}}}{{dice=[[(?{Dicepool?|1}+@{modifiers_toggle}+@{wounds_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test Beginning}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{extendedtest=[[1]]}}{{newdicepool=[[(?{Dicepool?|1}-1)]]}}{{dicepool=[[?{Dicepool?|1}]]}}{{hitstotal=[[0]]}}{{intervals=[[1]]}}{{passthrough=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
extended_next: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=Continue Extended Test}}{{dice=[[(%DICEPOOL%+@{modifiers_toggle}+@{wounds_toggle})d6>5cs>5cf<[[(1+@{bad_luck})]]]]}}{{desc=Extended Test Continuing}}{{wilddie=[[@{wild_die}]]}}{{glitch=[[0]]}}{{wilddie_dice=[[0]]}}{{extendedtest=[[2]]}}{{newdicepool=[[%NEWDICEPOOL%]]}}{{dicepool=[[%DICEPOOL%]]}}{{hitstotal=[[0]]}}{{intervals=[[%INTERVALS%]]}}{{reason=%REASON%}}{{passthrough=[[0]]}}{{misses=[[0]]}}{{hits=[[0]]}}{{fours=[[0]]}}{{rerolls=[[@{rerolls}]]}}",
ar: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=^{attackrating} = ^{attack} + ^{sleaze}}}{{rating=[[@{attack}+@{sleaze}]]}}",
attack: "@{gm_toggle} &{template:rolls-computed}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{character_name}}}{{base=^{attack}}}{{dice=[[(@{attack}+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}cs>5cf<[[(1+@{bad_luck})]]]]}}{{wilddie=[[@{wild_die}]]}}{{wilddie_dice=[[0]]}}",
@@ -6681,8 +6672,7 @@ Object.keys(initiatives).forEach((ini) => {
'connections1', 'connections2', 'connections3', 'connections4', 'connections5', 'connections6', 'connections7', 'connections8', 'connections9', 'connections10',
'loyalty1', 'loyalty2', 'loyalty3', 'loyalty4', 'loyalty5', 'loyalty6', 'loyalty7', 'loyalty8', 'loyalty9', 'loyalty10',
'matrix_backdoor_entry', 'matrix_brute_force', 'matrix_check_os', 'matrix_control_device', 'matrix_crack_file', 'matrix_crash_program', 'matrix_data_spike', 'matrix_disarm_data_bomb', 'matrix_edit_file', 'matrix_encrypt_file', 'matrix_erase_matrix_signature', 'matrix_format_device', 'matrix_hash_check', 'matrix_hide', 'matrix_jackout', 'matrix_jam_signals', 'matrix_jump_into_rigged_device', 'matrix_matrix_perception', 'matrix_matrix_search', 'matrix_probe', 'matrix_reboot_device', 'matrix_set_data_bomb', 'matrix_snoop', 'matrix_spoof_command', 'matrix_tarpit', 'matrix_trace_icon',
'matrixresist_int_f', 'matrixresist_f_s',
'extended_1', 'extended_2', 'extended_3', 'extended_4', 'extended_5', 'extended_6', 'extended_7', 'extended_8', 'extended_9', 'extended_10', 'extended_11', 'extended_12', 'extended_13', 'extended_14', 'extended_15', 'extended_16', 'extended_17', 'extended_18', 'extended_19', 'extended_20', 'extended_21', 'extended_22', 'extended_23', 'extended_24', 'extended_25'
'matrixresist_int_f', 'matrixresist_f_s'
].forEach((button) => {
on(`clicked:${button}`, (eventInfo) => {
console.log(eventInfo);
@@ -6812,13 +6802,95 @@ console.log(rollButton);
});
// Generic Extended Test Rolls
['extended_start', 'extended_next'].forEach((button) => {
on(`clicked:${button}`, async (eventInfo) => {
//console.log(eventInfo);
//console.log("Extended Test!");
var buttonName = eventInfo.triggerName.slice(17);
rollButton = rollButtons[eventInfo.triggerName.slice(8)];
let passthrough = {};
if(eventInfo.originalRollId) {
let parts = eventInfo.originalRollId.split(',');
//console.log(parts);
passthrough = rollEscape.unescape(parts[0]);
//console.log("Passthrough unescaped.");
//console.log(passthrough);
// update the dicepool and new dicepool (-1 each) and update intervals (+1)
passthrough.dicepool -= 1;
passthrough.newdicepool -= 1;
passthrough.intervals++;
passthrough.reason = parts[1];
// replace placeholders in the rollButton string with the passthrough values
rollButton = rollButton.replace(/%BASE%/g, passthrough.base);
rollButton = rollButton.replace(/%DICEPOOL%/g, passthrough.dicepool);
rollButton = rollButton.replace(/%REASON%/g, passthrough.reason);
rollButton = rollButton.replace(/%DESC%/g, passthrough.desc);
rollButton = rollButton.replace(/%NEWDICEPOOL%/g, passthrough.newdicepool);
rollButton = rollButton.replace(/%INTERVALS%/g, passthrough.intervals);
}
//console.log("Passthrough parsed.");
//console.log("rollButton updated.");
//console.log(rollButton);
await rollProcessor(rollButton, eventInfo, passthrough);
});
});
/* Thanks to Oosh on the Roll20 forums for this bit of code
Helper - the data passed through in an action button needs these characters escaped
I have used a mongrel escape sequence to avoid triggering anything internal in Roll20
This may not be a complete list of characters that need escaping! If you have heavily
punctuated text, it might break the passthrough!
*/
const rollEscape = {
chars: {
'"': '%quot;',
',': '%comma;',
':': '%colon;',
'}': '%rcub;',
'{': '%lcub;',
},
escape(str) {
str = (typeof(str) === 'object') ? JSON.stringify(str) : (typeof(str) === 'string') ? str : null;
return (str) ? `${str}`.replace(new RegExp(`[${Object.keys(this.chars)}]`, 'g'), (r) => this.chars[r]) : null;
},
unescape(str) {
str = `${str}`.replace(new RegExp(`(${Object.values(this.chars).join('|')})`, 'g'), (r) => Object.entries(this.chars).find(e=>e[1]===r)[0]);
return JSON.parse(str);
}
};
/************************************
* Roll Processor
* - This does the heavy lifting
************************************/
var rollProcessor = (rollButton) => {
var rollProcessor = async (rollButton, ev = {}, passthrough = {}) => {
console.info(ev);
console.info(passthrough);
console.info(rollButton);
getAttrs(["bad_luck"], (v) => {
startRoll(rollButton, (results) => {
console.log(results.results);
// setup our passthrough values
if(results.results.extendedtest && results.results.extendedtest.result == 1) {
console.info("Setting up passthrough for start");
passthrough.dicepool = parseInt(results.results.dicepool.result);
passthrough.newdicepool = parseInt(results.results.dicepool.result - 1);
passthrough.hitstotal = parseInt(0);
passthrough.intervals = parseInt(1);
// passthrough.reason = results.results.reason.expression;
console.log(passthrough);
}
console.log(results.results);
if(! results.results.dice) {
results.results.dice = {dice: []}
@@ -6898,6 +6970,12 @@ console.log(results.results);
var misses = results.results.dice.dice.length - hits;
// handle last second total hits tally for extended tests
if(results.results.extendedtest && results.results.extendedtest.result) {
passthrough.hitstotal = parseInt(passthrough.hitstotal + total_hits);
//console.log(passthrough);
}
finishRoll(
results.rollId, {
dice: total_hits,
@@ -6920,12 +6998,15 @@ console.log(results.results);
hits1: hits1,
hits2: hits2,
fours: fours,
passthrough: rollEscape.escape(passthrough),
hitstotal: passthrough.hitstotal,
}
);
});
});
};
var process_wild_dice = (wd_result, rolled) => {
var wild_die_results = [];
var wilddie_dice = [];
+1
View File
@@ -277,6 +277,7 @@
"initiativedice": "Initiative Dice",
"instant": "Instant",
"interval": "Interval",
"intervals": "Intervals",
"intrusioncountermeasures": "Intrusion Countermeasures",
"intuition": "Intuition",
"item": "Item",