[Zafir] Updates from player feedback (#7119)

* [Zafir] Swap between character sheet and GM toolkit

* [Zafir] Fixing up attack blocks, plus splitting gm tools into tabs

* [Zafir] Hooked up attacks, enemy unit selection, and some styling

* [Zafir] More advanced selected enemy box formatting

* [Zafir] Combat attribute calculator

* [Zafir] Changing will attack crit success text

* [Zafir] Added dodge value to GM units. Changed layout of GM units to accomodate.

* [Zafir] Condensed upper sheet option, show focus option

* [Zafir] Added overwatch field for attacks, changed some header verbiage

* [Zafir] Character sheet translation

* [Zafir] Adding translations for GM's Tools and Roll Templates

* [Zafir] Added translation file

* [Zafir] Added grenade attack to GM's tools

* [Zafir] Added Grenade Attack

* [Zafir] Added test for panic roller, placeholders for text inputs, and default values for number inputs

* [Zafir] Changed layout of GM units editor

* [Zafir] Made attacks addable and removeable

* [Zafir] Reflected multiple attacks on the GM combat panel

* [Zafir] Adding an option to change the primary weapon to a special equipment entry

* [Zafir] Adding an option to show a larger textbox for Origin

* [Zafir] Converting Proficiencies and Languages to a textarea

* [Zafir] Improving ability activation by automatically adding roll entries into the combat panel, Will Actions

* [Zafir] Added helper buttons to abilities to set cooldowns and use charges

* [Zafir] Hooking up weapon attack abilities

* [Zafir] Updating abilities if they're on cooldown or out of charges

* [Zafir] Fixing some bugs with cooldown/charge tracking and changing the buttons for them

* [Zafir] Added area of effect ability rolls

* [Zafir] Showing number of charges remaining on the abilities Use Charge button

* [Zafir] Added concealment tracker

* [Zafir] Round start button that decrements cooldowns

* [Zafir] Combat Initializer button

* [Zafir] Renaming Initialize Combat button

* [Zafir] Added a convenient ammo decrement and reload button on the primary weapon attack

* [Zafir] Cleanup around attack buttons and states

* [Zafir] Layout change to Status

* [Zafir] Focus points symbol

* [Zafir] More symbols

* [Zafir] Cleaning up condensed view, plus new icons

* [Zafir] Zmail tooltip

* [Zafir] Moving Usable Items to their own tab. Added usable abilities to the combat panel

* [Zafir] Quick bugfix with the new usable tab in combat

* [Zafir] Adding icons to the Charges and Cooldown tracker

* [Zafir] Added usable items with charges

* [Zafir] Adding Usable grenade/heavy weapon attacks

* [Zafir] Hooking up special ammo

* [Zafir] better styling for special ammo

* [Zafir] Fixing a bug with usable abilities that have both charges and cooldown

* [Zafir] Turning spellcheck off of the proficiencies and language text areas

* [Zafir] Charactermancer WIP

* [Zafir] Charactermancer WIP

* [Zafir] Charactermancer Species/Origin

* [Zafir] WIP Charactermancer Equipment

* [Zafir] Inventory, Random rolls, random insaan names

* [Zafir] Charactermancer is done

* [Zafir] Charmancer when all values are null or bad

* Temporarily disabling charactermancer

* Fixing the Hide Focus Points bug

* Fixing up Attacks for GM Tools

* Add abilities to GM units

* [Zafir] Fixed a bug with enemy attack aim dice

* [Zafir] Setting up initial HP, AP, and SP values

including setting up the proper token bars for them

* [Zafir] Adding max AP and SP values so that players have more control over their token bars

* [Zafir] Adding improved Use Item and Use Ability buttons that output to chat

* [Zafir] Adding selected bool to gm units and showing it in the list

* [Zafir] Separating out the settings into their own tab, and adding notes to the Misc tab

* [Zafir] Fixing a bug with attacks 1 and 2 for GM units

* Adding font hosting

* [Zafir] Actually reference google fonts

* [Zafir] Adding dice pool descriptions and styles to roll templates

* [Zafir] Fix a minor text error with secondary weapon roll
This commit is contained in:
Randy Knapp
2020-08-10 09:56:21 -04:00
committed by GitHub
parent a16a77c0d7
commit 2ff0ad08eb
3 changed files with 256 additions and 113 deletions
+3 -1
View File
@@ -279,5 +279,7 @@
"Use Ability:":"Use Ability:",
"Use Item:":"Use Item:",
"Use Ability":"Use Ability",
"Use Item":"Use Item"
"Use Item":"Use Item",
"Notes":"Notes",
"CRITICAL SUCCESS!":"CRITICAL SUCCESS!"
}
+94 -3
View File
@@ -1,9 +1,49 @@
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: italic;
font-weight: 400;
font-display: swap;
src: local('Montserrat Italic'), local('Montserrat-Italic'), url(https://fonts.gstatic.com/s/montserrat/v14/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: italic;
font-weight: 700;
font-display: swap;
src: local('Montserrat Bold Italic'), local('Montserrat-BoldItalic'), url(https://fonts.gstatic.com/s/montserrat/v14/JTUPjIg1_i6t8kCHKm459WxZcgvz_PZw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
font-display: swap;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v14/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 700;
font-display: swap;
src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_dJE3gnD_g.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Set the min-width and max-width so that when the window is resized the character sheet stays the same */
.charsheet {
background-color: #fff;
min-width: 900px;
max-width: 900px;
font-family: 'Montserrat';
font-family: 'Montserrat', 'Arial';
}
/* Universal styling applied to all elements of these types */
@@ -257,6 +297,11 @@ button.repcontrol_edit {
text-align: center;
}
button.sheet-selected {
background-color: #852419;
color: white;
}
.sheet-attacklabel {
float: right;
/*background-color: #EEE;*/
@@ -343,6 +388,14 @@ button[type=roll]:active {
background-color: #CCC;
}
button.sheet-selected:hover {
background-color: #963126;
}
button.sheet-selected:active {
background-color: #a83e32;
}
button:disabled,
button[disabled] {
color: #999;
@@ -928,6 +981,7 @@ input[type=checkbox] {
.sheet-res,
.sheet-inv,
.sheet-oth,
.sheet-set,
.sheet-epw,
.sheet-esw,
.sheet-eba,
@@ -960,7 +1014,8 @@ input[type=checkbox] {
.sheet-tabstoggle[value="eqp"] ~ div.sheet-eqp,
.sheet-tabstoggle[value="res"] ~ div.sheet-res,
.sheet-tabstoggle[value="inv"] ~ div.sheet-inv,
.sheet-tabstoggle[value="oth"] ~ div.sheet-oth {
.sheet-tabstoggle[value="oth"] ~ div.sheet-oth,
.sheet-tabstoggle[value="set"] ~ div.sheet-set {
display: block;
}
@@ -1044,6 +1099,7 @@ button.sheet-eqpbtn,
button.sheet-resbtn,
button.sheet-invbtn,
button.sheet-othbtn,
button.sheet-setbtn,
button.sheet-gmcombatbtn,
button.sheet-gmunitsbtn {
background-color: #EEE;
@@ -1068,6 +1124,7 @@ button.sheet-eqpbtn:hover,
button.sheet-resbtn:hover,
button.sheet-invbtn:hover,
button.sheet-othbtn:hover,
button.sheet-setbtn:hover,
button.sheet-epwbtn:hover,
button.sheet-eswbtn:hover,
button.sheet-ebabtn:hover,
@@ -1091,6 +1148,7 @@ button.sheet-eqpbtn:active,
button.sheet-resbtn:active,
button.sheet-invbtn:active,
button.sheet-othbtn:active,
button.sheet-setbtn:active,
button.sheet-epwbtn:active,
button.sheet-eswbtn:active,
button.sheet-ebabtn:active,
@@ -1114,6 +1172,7 @@ button.sheet-gmunitsbtn:active {
.sheet-tabstoggle[value="res"] ~ div button.sheet-resbtn,
.sheet-tabstoggle[value="inv"] ~ div button.sheet-invbtn,
.sheet-tabstoggle[value="oth"] ~ div button.sheet-othbtn,
.sheet-tabstoggle[value="set"] ~ div button.sheet-setbtn,
.sheet-tabstoggle[value="gmcombat"] ~ div button.sheet-gmcombatbtn,
.sheet-tabstoggle[value="gmunits"] ~ div button.sheet-gmunitsbtn {
background-color: white;
@@ -1230,7 +1289,7 @@ button[type=roll].sheet-btn::before {
padding-top: 6px;
padding-bottom: 8px;
background-color: white;
font-family: "Montserrat"
font-family: "Montserrat", "Arial"
}
.sheet-rolltemplate-zafir div.sheet-template-nameplate,
@@ -1545,6 +1604,38 @@ button[type=roll].sheet-btn::before {
border: 2px solid #AAA;
}
.sheet-rolltemplate-zafir .sheet-aimroll .inlinerollresult,
.sheet-rolltemplate-zafirwillattack .sheet-aimroll .inlinerollresult,
.sheet-rolltemplate-zafirskillaction .sheet-aimroll .inlinerollresult,
.sheet-rolltemplate-zafirdodge .sheet-aimroll .inlinerollresult,
.sheet-rolltemplate-zafirgrenade .sheet-aimroll .inlinerollresult {
border: 2px solid #a83131;
}
.sheet-rolltemplate-zafir .sheet-critroll .inlinerollresult,
.sheet-rolltemplate-zafirwillattack .sheet-critroll .inlinerollresult,
.sheet-rolltemplate-zafirskillaction .sheet-critroll .inlinerollresult,
.sheet-rolltemplate-zafirdodge .sheet-critroll .inlinerollresult,
.sheet-rolltemplate-zafirgrenade .sheet-critroll .inlinerollresult {
border: 2px solid #d6c44b;
}
.sheet-rolltemplate-zafir .sheet-resistroll .inlinerollresult,
.sheet-rolltemplate-zafirwillattack .sheet-resistroll .inlinerollresult,
.sheet-rolltemplate-zafirskillaction .sheet-resistroll .inlinerollresult,
.sheet-rolltemplate-zafirdodge .sheet-resistroll .inlinerollresult,
.sheet-rolltemplate-zafirgrenade .sheet-resistroll .inlinerollresult {
border: 2px solid #6e2999;
}
.sheet-rolltemplate-zafir .sheet-dodgeroll .inlinerollresult,
.sheet-rolltemplate-zafirwillattack .sheet-dodgeroll .inlinerollresult,
.sheet-rolltemplate-zafirskillaction .sheet-dodgeroll .inlinerollresult,
.sheet-rolltemplate-zafirdodge .sheet-dodgeroll .inlinerollresult,
.sheet-rolltemplate-zafirgrenade .sheet-dodgeroll .inlinerollresult {
border: 2px solid #009eda;
}
/* // Charactermancer /////////////////////////////////////////// */
.sheet-popup-bg {
position: absolute;
+159 -109
View File
@@ -145,6 +145,7 @@
<button type="action" name="act_res" class="resbtn"><span data-i18n="Responsibilities">Responsibilities</span></button>
<button type="action" name="act_inv" class="invbtn"><span data-i18n="Inventory">Inventory</span></button>
<button type="action" name="act_oth" class="othbtn"><span data-i18n="Misc">Misc</span></button>
<button type="action" name="act_set" class="setbtn"><span data-i18n="Settings">Settings</span></button>
</div>
<br />
@@ -194,14 +195,14 @@
<input type="hidden" class="hideifzero" name="attr_wpneedreload" value="0"/>
<button type="action" name="act_reloadprimary" class="btn"><span style="font-family:Pictos">1</span> <span data-i18n="Reload">Reload</span></button>
<input type="hidden" class="hideifone" name="attr_wpneedreload" value="0"/>
<button type="roll" name="roll_attackprimary" class="btn" value="&{template:zafir} {{name=@{wpname}}} {{aim=[[(@{wpattackaimdice})d6>5]]}} {{crit=[[(@{wpattackcritdice})d6>6]]}} {{damage=[[(@{wpattackdamage})]]}} {{critdmg=[[(@{wpattackdamage}) + (@{wpcritdmg})]]}} {{notes=@{wpnotes}}} {{ammo=@{specialammoeffect}}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<button type="roll" name="roll_attackprimary" class="btn" value="&{template:zafir} {{name=@{wpname}}} {{aim=[[ [Aim Dice] (@{wpattackaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{wpattackcritdice})d6>6]]}} {{damage=[[ [Damage] (@{wpattackdamage})]]}} {{critdmg=[[(@{wpattackdamage}) + (@{wpcritdmg})]]}} {{notes=@{wpnotes}}} {{ammo=@{specialammoeffect}}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<label style="width:110px"><span name="attr_wpname"></span></label>
<label>+<span name="attr_wpattackaimdice"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_wpattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><span name="attr_wpattackdamage"></span> (+<span name="attr_wpcritdmg"></span>)<span class="tooltiptext">Damage</span></span></label>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_wsname" value="">
<div class="attack clearfix">
<button type="roll" name="roll_attacksecondary" class="btn" value="&{template:zafir} {{name=@{wsname}}} {{aim=[[(@{wsattackaimdice})d6>5]]}} {{crit=[[(@{wsattackcritdice})d6>6]]}} {{damage=[[(@{wsattackdamage})]]}} {{critdmg=[[(@{wsattackdamage}) + (@{wscritdmg})]]}} {{notes=@{wsnotes}}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<button type="roll" name="roll_attacksecondary" class="btn" value="&{template:zafir} {{name=@{wsname}}} {{aim=[[ [Aim Dice] (@{wsattackaimdice})d6>5]]}} {{crit=[[ [Critical] (@{wsattackcritdice})d6>6]]}} {{damage=[[(@{wsattackdamage})]]}} {{critdmg=[[(@{wsattackdamage}) + (@{wscritdmg})]]}} {{notes=@{wsnotes}}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<label style="width:110px"><span name="attr_wsname"></span></label>
<label>+<span name="attr_wsattackaimdice"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_wsattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><span name="attr_wsattackdamage"></span> (+<span name="attr_wscritdmg"></span>)<span class="tooltiptext">Damage</span></span></label>
</div>
@@ -252,17 +253,17 @@
<span>
<input type="hidden" class="tabstoggle" name="attr_aablatkweap" />
<div class="nothing">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[(@{aablatkrollaimdice})d6>5]]}} {{crit=[[(@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{aableffect}}} {{player=@{char_name}}}">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[ [Aim Dice] (@{aablatkrollaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{aableffect}}} {{player=@{char_name}}}">
<span data-i18n="Attack">Attack</span>
</button>
</div>
<div class="primaryweapon">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[(@{aablatkrollaimdice})d6>5]]}} {{crit=[[(@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{wpnotes}}} {{ammo=@{specialammoeffect}}} {{player=@{char_name}}}">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[ [Aim Dice] (@{aablatkrollaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{wpnotes}}} {{ammo=@{specialammoeffect}}} {{player=@{char_name}}}">
<span data-i18n="Attack">Attack</span>
</button>
</div>
<div class="secondaryweapon">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[(@{aablatkrollaimdice})d6>5]]}} {{crit=[[(@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{wsnotes}}} {{player=@{char_name}}}">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[ [Aim Dice] (@{aablatkrollaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{wsnotes}}} {{player=@{char_name}}}">
<span data-i18n="Attack">Attack</span>
</button>
</div>
@@ -277,7 +278,7 @@
</div>
<div class="customattack attack clearfix">
<button type="roll" name="roll_attackcustom" class="btn" value="&{template:zafir} {{name=@{custattackname}}} {{aim=[[(@{custattackaimdice})d6>5]]}} {{crit=[[(@{custattackcritdice})d6>6]]}} {{damage=[[(@{custattackdamage})]]}} {{critdmg=[[(@{custattackdamage}) + (@{custcritdamage})]]}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<button type="roll" name="roll_attackcustom" class="btn" value="&{template:zafir} {{name=@{custattackname}}} {{aim=[[ [Aim Dice] (@{custattackaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{custattackcritdice})d6>6]]}} {{damage=[[(@{custattackdamage})]]}} {{critdmg=[[(@{custattackdamage}) + (@{custcritdamage})]]}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<input type="text" name="attr_custattackname" spellcheck="false" placeholder="Custom Atk" style="width:110px;margin-right:10px;">
<label>+<span name="attr_custattackaimdice"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_custattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><input type="text" name="attr_custattackdamage" spellcheck="false" value="0"><span class="tooltiptext">Damage</span></span><span class="tooltip">(+<input type="number" name="attr_custcritdamage" value="0">)<span class="tooltiptext" data-i18n="Crit Damage">Crit Damage</span></span></label>
</div>
@@ -309,7 +310,7 @@
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Item Tooltip"><b>Use Charge</b><hr />Expend item charge</span></button>
<button type="roll" name="roll_gatk" class="btn" value="&{template:zafirgrenade} {{name=@{itemname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[(@{itemcritdice})d6>6]]}} {{damage1=[[@{itemdamage}]]}} {{critdmg1=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit2=[[(@{itemcritdice})d6>6]]}} {{damage2=[[@{itemdamage}]]}} {{critdmg2=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit3=[[(@{itemcritdice})d6>6]]}} {{damage3=[[@{itemdamage}]]}} {{critdmg3=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit4=[[(@{itemcritdice})d6>6]]}} {{damage4=[[@{itemdamage}]]}} {{critdmg4=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit5=[[(@{itemcritdice})d6>6]]}} {{damage5=[[@{itemdamage}]]}} {{critdmg5=[[@{itemdamage} + @{itemcritdmg}]]}} {{notes=Breaking: @{itembreaking}, @{itemeffects}}} {{player=@{char_name}}}">
<button type="roll" name="roll_gatk" class="btn" value="&{template:zafirgrenade} {{name=@{itemname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage1=[[ [Damage] @{itemdamage}]]}} {{critdmg1=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit2=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage2=[[ [Damage] @{itemdamage}]]}} {{critdmg2=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit3=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage3=[[ [Damage] @{itemdamage}]]}} {{critdmg3=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit4=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage4=[[ [Damage] @{itemdamage}]]}} {{critdmg4=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit5=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage5=[[ [Damage] @{itemdamage}]]}} {{critdmg5=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{notes=Breaking: @{itembreaking}, @{itemeffects}}} {{player=@{char_name}}}">
<span data-i18n="Throw Grenade">Throw Grenade</span>
</button>
</span>
@@ -327,7 +328,7 @@
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Item Tooltip"><b>Use Charge</b><hr />Expend item charge</span></button>
<button type="roll" name="roll_gatk" class="btn" value="&{template:zafirgrenade} {{name=@{itemname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[(@{itemcritdice})d6>6]]}} {{damage1=[[@{itemdamage}]]}} {{critdmg1=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit2=[[(@{itemcritdice})d6>6]]}} {{damage2=[[@{itemdamage}]]}} {{critdmg2=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit3=[[(@{itemcritdice})d6>6]]}} {{damage3=[[@{itemdamage}]]}} {{critdmg3=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit4=[[(@{itemcritdice})d6>6]]}} {{damage4=[[@{itemdamage}]]}} {{critdmg4=[[@{itemdamage} + @{itemcritdmg}]]}} {{crit5=[[(@{itemcritdice})d6>6]]}} {{damage5=[[@{itemdamage}]]}} {{critdmg5=[[@{itemdamage} + @{itemcritdmg}]]}} {{notes=Breaking: @{itembreaking}, @{itemeffects}}} {{player=@{char_name}}}">
<button type="roll" name="roll_gatk" class="btn" value="&{template:zafirgrenade} {{name=@{itemname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage1=[[ [Damage] @{itemdamage}]]}} {{critdmg1=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit2=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage2=[[ [Damage] @{itemdamage}]]}} {{critdmg2=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit3=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage3=[[ [Damage] @{itemdamage}]]}} {{critdmg3=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit4=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage4=[[ [Damage] @{itemdamage}]]}} {{critdmg4=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit5=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage5=[[ [Damage] @{itemdamage}]]}} {{critdmg5=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{notes=Breaking: @{itembreaking}, @{itemeffects}}} {{player=@{char_name}}}">
<span data-i18n="Use Heavy Weapon">Use Heavy Weapon</span>
</button>
</span>
@@ -339,7 +340,7 @@
<div class="customattack attack clearfix">
<button type="roll" name="roll_gatk" class="btn"
value="&{template:zafirgrenade} {{name=@{gatkname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[(@{gatkcritdice})d6>6]]}} {{damage1=[[@{gatkdamage}]]}} {{critdmg1=[[@{gatkdamage} + @{gatkcritdamage}]]}} {{crit2=[[(@{gatkcritdice})d6>6]]}} {{damage2=[[@{gatkdamage}]]}} {{critdmg2=[[@{gatkdamage} + @{gatkcritdamage}]]}} {{crit3=[[(@{gatkcritdice})d6>6]]}} {{damage3=[[@{gatkdamage}]]}} {{critdmg3=[[@{gatkdamage} + @{gatkcritdamage}]]}} {{crit4=[[(@{gatkcritdice})d6>6]]}} {{damage4=[[@{gatkdamage}]]}} {{critdmg4=[[@{gatkdamage} + @{gatkcritdamage}]]}} {{crit5=[[(@{gatkcritdice})d6>6]]}} {{damage5=[[@{gatkdamage}]]}} {{critdmg5=[[@{gatkdamage} + @{gatkcritdamage}]]}} {{notes=@{geffects}}} {{player=@{char_name}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
value="&{template:zafirgrenade} {{name=@{gatkname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage1=[[ [Damage] @{gatkdamage}]]}} {{critdmg1=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit2=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage2=[[ [Damage] @{gatkdamage}]]}} {{critdmg2=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit3=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage3=[[ [Damage] @{gatkdamage}]]}} {{critdmg3=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit4=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage4=[[ [Damage] @{gatkdamage}]]}} {{critdmg4=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit5=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage5=[[ [Damage] @{gatkdamage}]]}} {{critdmg5=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{notes=@{geffects}}} {{player=@{char_name}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
<input type="text" name="attr_gatkname" spellcheck="false" placeholder="Grenade Type" style="width:110px;margin-right:10px;">
<label>&nbsp;<input type="number" name="attr_gatkcritdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gatkdamage" spellcheck="false" value="0">(+<input type="number" name="attr_gatkcritdamage" value="0">)</label>
</div>
@@ -378,7 +379,7 @@
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Tooltip"><b>Use Charge</b><hr />Expend ability charge</span></button>
<button type="roll" name="roll_gatk" class="btn"
value="&{template:zafirgrenade} {{name=@{aablname}}} {{targets=@{areaabltargets}}} {{targetsroll=[[@{areaabltargets}]]}} {{crit1=[[(@{aablatkrollcritdice})d6>6]]}} {{damage1=[[@{aablatkrolldamage}]]}} {{critdmg1=[[@{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit2=[[(@{aablatkrollcritdice})d6>6]]}} {{damage2=[[@{aablatkrolldamage}]]}} {{critdmg2=[[@{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit3=[[(@{aablatkrollcritdice})d6>6]]}} {{damage3=[[@{aablatkrolldamage}]]}} {{critdmg3=[[@{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit4=[[(@{aablatkrollcritdice})d6>6]]}} {{damage4=[[@{aablatkrolldamage}]]}} {{critdmg4=[[@{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit5=[[(@{aablatkrollcritdice})d6>6]]}} {{damage5=[[@{aablatkrolldamage}]]}} {{critdmg5=[[@{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{notes=@{aablatkeffects}}} {{player=@{char_name}}}"><span data-i18n="Area Attack">Area Attack</span></button>
value="&{template:zafirgrenade} {{name=@{aablname}}} {{targets=@{areaabltargets}}} {{targetsroll=[[@{areaabltargets}]]}} {{crit1=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage1=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg1=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit2=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage2=[ [Damage] @{aablatkrolldamage}]]}} {{critdmg2=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit3=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage3=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg3=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit4=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage4=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg4=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit5=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage5=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg5=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{notes=@{aablatkeffects}}} {{player=@{char_name}}}"><span data-i18n="Area Attack">Area Attack</span></button>
</span>
</span>
<label style="width:140px;"><span name="attr_aablname" ></span></label>
@@ -440,7 +441,7 @@
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Tooltip"><b>Use Charge</b><hr />Expend ability charge</span></button>
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{aablname}}} {{aim=[[(@{aablwillatkaimdice})d6>5 [Will Attack]]]}} {{crit=[[(@{aablwillatkcritdice})d6>6 [Crit Effect]]]}} {{resist=[[(@{aablresist})d6>6 [Resist]]]}} {{player=@{char_name}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{aablname}}} {{aim=[[ [Will Attack Dice] (@{aablwillatkaimdice})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{aablwillatkcritdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{aablresist})d6>6]]}} {{player=@{char_name}}}"><span data-i18n="Will Attack">Will Attack</span></button>
</span>
</span>
<label style="width:110px;"><span name="attr_aablname" ></span></label>
@@ -450,7 +451,7 @@
</div>
<div class="attack clearfix willattack">
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{custwillattackname}}} {{aim=[[(@{willattackaimdice})d6>5 [Will Attack]]]}} {{crit=[[(@{willattackcritdice})d6>6 [Crit Effect]]]}} {{resist=[[(@{willattackresistdice})d6>6 [Resist]]]}} {{player=@{char_name}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{custwillattackname}}} {{aim=[[ [Will Attack Dice] (@{willattackaimdice})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{willattackcritdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{willattackresistdice})d6>6]]}} {{player=@{char_name}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<input type="text" name="attr_custwillattackname" spellcheck="false" placeholder="Ability Name" style="width:110px;margin-right:10px;">
<label>+<span name="attr_willattackaimdice"></span> <span data-i18n="will">will</span>&nbsp;&nbsp;&nbsp;+<span name="attr_willattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;+<span name="attr_willattackresistdice"></span> <span data-i18n="resist">resist</span</label>
</div>
@@ -584,7 +585,7 @@
<div>
<h3 data-i18n="Dodge Roller">Dodge Roller</h3>
<div class="paneltracker dodgeroller clearfix">
<button type="roll" name="roll_dodge" class="btn" value="&{template:zafirdodge} {{dodge=[[(@{dodgedice})d6>6]]}} {{player=@{char_name}}}"><span data-i18n="Dodge">Dodge</span></button>
<button type="roll" name="roll_dodge" class="btn" value="&{template:zafirdodge} {{dodge=[[ [Dodge Dice] (@{dodgedice})d6>6]]}} {{player=@{char_name}}}"><span data-i18n="Dodge">Dodge</span></button>
<label style="width:110px" data-i18n="Dodge Dice:">Dodge Dice:</label><input type="number" name="attr_dodgedice" value="0" />
</div>
</div>
@@ -1000,7 +1001,7 @@
<label data-i18n="Bonus Skill:">Bonus Skill:</label><input style="width:18%;position:relative;right:3px;margin-right:93px;" type="number" value="0" name="attr_bonusskill" />
<label data-i18n="Bonus Crit:">Bonus Crit:</label><input style="width:18%;position:relative;right:3px;" type="number" value="0" name="attr_bonusskillcrit" />
<div class="attack clearfix skillroller">
<button type="roll" name="roll_skillaction" class="btn" value="&{template:zafirskillaction} {{name=@{skillname}}} {{aim=[[(@{skilldice})d6>5]]}} {{crit=[[(@{bonusskillcrit})d6>6]]}} {{responsibility=@{skillresponsibility}}} {{player=@{char_name}}}"><span data-i18n="Skill Roll">Skill Roll</span></button>
<button type="roll" name="roll_skillaction" class="btn" value="&{template:zafirskillaction} {{name=@{skillname}}} {{aim=[[ [Skill Dice] (@{skilldice})d6>5]]}} {{crit=[[ [Skill Crit Dice] (@{bonusskillcrit})d6>6]]}} {{responsibility=@{skillresponsibility}}} {{player=@{char_name}}}"><span data-i18n="Skill Roll">Skill Roll</span></button>
<select name="attr_skillname" style="width:110px;margin-right:10px;">
<option value="Coerce" data-i18n="Coerce Skill Option">Coerce</option>
<option value="Deceive" data-i18n="Deceive Skill Option">Deceive</option>
@@ -1055,32 +1056,39 @@
<textarea name="attr_conversationallanguages" spellcheck="false"></textarea>
</div>
<div class="col">
<h2 data-i18n="Settings">Settings</h2>
<div>
<h3 data-i18n="General Sheet Options">General Sheet Options</h3>
<label style="width:250px;" data-i18n="Condense Upper Sheet:">Condense Upper Sheet:</label><input type="checkbox" name="attr_condensesheet" value="1"/><br />
<label style="width:250px;" data-i18n="Large Origin Textbox:">Large Origin Textbox:</label><input type="checkbox" name="attr_largeorigin" value="1"/><br />
<label style="width:250px;" data-i18n="Show Focus:">Show Focus:</label><input type="checkbox" name="attr_showfocus" value="1" checked /><br />
</div>
<div>
<h3 data-i18n="Combat Tab Options">Combat Tab Options</h3>
<label style="width:250px;" data-i18n="Show Ammo Tracker:">Show Ammo Tracker:</label><input type="checkbox" name="attr_showammotracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Concealment:">Show Concealment:</label><input type="checkbox" name="attr_showconcealment" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Dodge Roller:">Show Dodge Roller:</label><input type="checkbox" name="attr_showdodgeroller" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Condition Tracker:">Show Condition Tracker:</label><input type="checkbox" name="attr_showconditiontracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Cooldown Tracker:">Show Cooldown Tracker:</label><input type="checkbox" name="attr_showcooldowntracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Charges Tracker:">Show Charges Tracker:</label><input type="checkbox" name="attr_showchargestracker" value="1" checked />
</div>
<h2 data-i18n="Notes">Notes</h2>
<textarea name="attr_notes" spellcheck="false" style="height:250px;"></textarea>
</div>
</div>
</div>
<!-- Settings -->
<div class="set">
<h2 data-i18n="Settings">Settings</h2>
<div class="3colrow">
<div class="col">
<h3 data-i18n="General Sheet Options">General Sheet Options</h3>
<label style="width:250px;" data-i18n="Condense Upper Sheet:">Condense Upper Sheet:</label><input type="checkbox" name="attr_condensesheet" value="1"/><br />
<label style="width:250px;" data-i18n="Large Origin Textbox:">Large Origin Textbox:</label><input type="checkbox" name="attr_largeorigin" value="1"/><br />
<label style="width:250px;" data-i18n="Show Focus:">Show Focus:</label><input type="checkbox" name="attr_showfocus" value="1" checked /><br />
</div>
<div class="col">
<h3 data-i18n="Combat Tab Options">Combat Tab Options</h3>
<label style="width:250px;" data-i18n="Show Ammo Tracker:">Show Ammo Tracker:</label><input type="checkbox" name="attr_showammotracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Concealment:">Show Concealment:</label><input type="checkbox" name="attr_showconcealment" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Dodge Roller:">Show Dodge Roller:</label><input type="checkbox" name="attr_showdodgeroller" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Condition Tracker:">Show Condition Tracker:</label><input type="checkbox" name="attr_showconditiontracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Cooldown Tracker:">Show Cooldown Tracker:</label><input type="checkbox" name="attr_showcooldowntracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Charges Tracker:">Show Charges Tracker:</label><input type="checkbox" name="attr_showchargestracker" value="1" checked />
</div>
<div class="col">
<!-- Temporarily turning off Charactermancer
<div>
<h3 data-i18n="Charactermancer">Charactermancer</h3>
<button type="action" name="act_startcharactermancerfromsheet" class="btn" style="float:none;margin-left:0;">Start Charactermancer</button>
</div>
<h3 data-i18n="Charactermancer">Charactermancer</h3>
<button type="action" name="act_startcharactermancerfromsheet" class="btn" style="float:none;margin-left:0;">Start Charactermancer</button>
-->
<div style="margin-top:16px;">
<h3 data-i18n="Game Master Options">Game Master Options</h3>
<button type="action" name="act_switchsheettype" class="btn" style="float:none;margin-left:0;"><span data-i18n="Switch to Game Master's Toolkit">Switch to Game Master's Toolkit</span></button>
</div>
<h3 data-i18n="Game Master Options">Game Master Options</h3>
<button type="action" name="act_switchsheettype" class="btn" style="float:none;margin-left:0;"><span data-i18n="Switch to Game Master's Toolkit">Switch to Game Master's Toolkit</span></button>
</div>
</div>
</div>
@@ -1117,19 +1125,23 @@
</select>
<br />
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmatk" class="btn" value="&{template:zafir} {{name=@{gmatkname}}} {{aim=[[(@{gmatkaimdicetotal})d6>5]]}} {{crit=[[(@{gmatkcritdicetotal})d6>6]]}} {{damage=[[(@{gmatkdamage})]]}} {{critdmg=[[(@{gmatkdamage}) + (@{gmatkcritdamage})]]}} {{notes=@{selectedenemyatknotes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<button type="roll" name="roll_gmatk" class="btn" value="&{template:zafir} {{name=@{gmatkname}}} {{aim=[[ [Aim Dice] (@{gmatkaimdicetotal})d6>5]]}} {{crit=[[ [Crit Dice] (@{gmatkcritdicetotal})d6>6]]}} {{damage=[[(@{gmatkdamage})]]}} {{critdmg=[[(@{gmatkdamage}) + (@{gmatkcritdamage})]]}} {{notes=@{selectedenemyatknotes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<input type="text" name="attr_gmatkname" spellcheck="false" placeholder="Attack Name" style="width:110px;margin-right:10px;">
<label>&nbsp;&nbsp;<input type="number" name="attr_gmatkaimdice" value="0">&nbsp;<span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;<input type="number" name="attr_gmatkcritdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gmatkdamage" spellcheck="false" value="0">(+<input type="number" name="attr_gmatkcritdamage" value="0">)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk1_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmatk1" class="btn" value="&{template:zafir} {{name=@{gmatk1name}}} {{aim=[[(@{gmatk1aimdicetotal})d6>5]]}} {{crit=[[(@{gmatk1critdicetotal})d6>6]]}} {{damage=[[(@{gmatk1damage})]]}} {{critdmg=[[(@{gmatk1damage}) + (@{gmatk1critdamage})]]}} {{notes=@{selectedenemyatk1notes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<input type="hidden" name="attr_gmatk1aimdicetotal" />
<input type="hidden" name="attr_gmatk1critdicetotal" />
<button type="roll" name="roll_gmatk1" class="btn" value="&{template:zafir} {{name=@{gmatk1name}}} {{aim=[[ [Aim Dice] (@{gmatk1aimdicetotal})d6>5]]}} {{crit=[[ [Crit Dice] (@{gmatk1critdicetotal})d6>6]]}} {{damage=[[(@{gmatk1damage})]]}} {{critdmg=[[(@{gmatk1damage}) + (@{gmatk1critdamage})]]}} {{notes=@{selectedenemyatk1notes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<input type="text" name="attr_gmatk1name" spellcheck="false" placeholder="Attack Name" style="width:110px;margin-right:10px;">
<label>&nbsp;&nbsp;<input type="number" name="attr_gmatk1aimdice" value="0">&nbsp;<span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;<input type="number" name="attr_gmatk1critdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gmatk1damage" spellcheck="false" value="0">(+<input type="number" name="attr_gmatk1critdamage" value="0">)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk2_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmatk2" class="btn" value="&{template:zafir} {{name=@{gmatk2name}}} {{aim=[[(@{gmatk2aimdicetotal})d6>5]]}} {{crit=[[(@{gmatk2critdicetotal})d6>6]]}} {{damage=[[(@{gmatk2damage})]]}} {{critdmg=[[(@{gmatk2damage}) + (@{gmatk2critdamage})]]}} {{notes=@{selectedenemyatk2notes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<input type="hidden" name="attr_gmatk2aimdicetotal" />
<input type="hidden" name="attr_gmatk2critdicetotal" />
<button type="roll" name="roll_gmatk2" class="btn" value="&{template:zafir} {{name=@{gmatk2name}}} {{aim=[[ [Aim Dice] (@{gmatk2aimdicetotal})d6>5]]}} {{crit=[[ [Crit Dice] (@{gmatk2critdicetotal})d6>6]]}} {{damage=[[(@{gmatk2damage})]]}} {{critdmg=[[(@{gmatk2damage}) + (@{gmatk2critdamage})]]}} {{notes=@{selectedenemyatk2notes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<input type="text" name="attr_gmatk2name" spellcheck="false" placeholder="Attack Name" style="width:110px;margin-right:10px;">
<label>&nbsp;&nbsp;<input type="number" name="attr_gmatk2aimdice" value="0">&nbsp;<span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;<input type="number" name="attr_gmatk2critdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gmatk2damage" spellcheck="false" value="0">(+<input type="number" name="attr_gmatk2critdamage" value="0">)</label>
</div>
@@ -1140,7 +1152,7 @@
<label style="width:80px;" data-i18n="Effects:">Effects:</label><input style="width:279px;" type="text" name="attr_gmgeffects" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmgatk" class="btn"
value="&{template:zafirgrenade} {{name=@{gmgatkname}}} {{targets=@{gmgtargets}}} {{targetsroll=[[@{gmgtargets}]]}} {{crit1=[[(@{gmgatkcritdice})d6>6]]}} {{damage1=[[@{gmgatkdamage}]]}} {{critdmg1=[[@{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit2=[[(@{gmgatkcritdice})d6>6]]}} {{damage2=[[@{gmgatkdamage}]]}} {{critdmg2=[[@{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit3=[[(@{gmgatkcritdice})d6>6]]}} {{damage3=[[@{gmgatkdamage}]]}} {{critdmg3=[[@{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit4=[[(@{gmgatkcritdice})d6>6]]}} {{damage4=[[@{gmgatkdamage}]]}} {{critdmg4=[[@{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit5=[[(@{gmgatkcritdice})d6>6]]}} {{damage5=[[@{gmgatkdamage}]]}} {{critdmg5=[[@{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{notes=@{gmgeffects}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
value="&{template:zafirgrenade} {{name=@{gmgatkname}}} {{targets=@{gmgtargets}}} {{targetsroll=[[@{gmgtargets}]]}} {{crit1=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage1=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg1=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit2=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage2=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg2=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit3=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage3=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg3=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit4=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage4=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg4=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit5=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage5=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg5=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{notes=@{gmgeffects}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
<input type="text" name="attr_gmgatkname" spellcheck="false" placeholder="Grenade Type" style="width:110px;margin-right:10px;">
<label>&nbsp;<input type="number" name="attr_gmgatkcritdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gmgatkdamage" spellcheck="false" value="0">(+<input type="number" name="attr_gmgatkcritdamage" value="0">)</label>
</div>
@@ -1166,12 +1178,12 @@
<option value="Target" data-i18n="Target Panicked Option">Target is Panicked (+1 will, +2 crit)</option>
</select><br />
<div class="customattack attack clearfix willattack">
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{gmwatkname}}} {{aim=[[(@{gmwatkaimdice})d6>5]]}} {{crit=[[(@{gmwatkcritdice})d6>6]]}} {{resist=[[(@{gmwatkresistdice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{gmwatkname}}} {{aim=[[ [Will Attack Dice] (@{gmwatkaimdice})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{gmwatkcritdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{gmwatkresistdice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<input type="text" name="attr_gmwatkname" spellcheck="false" placeholder="Will Attack" style="width:110px;margin-right:10px;">
<label><input type="number" name="attr_gmwatkwill" value="0"> <span data-i18n="will">will</span>&nbsp;&nbsp;<input type="number" name="attr_gmwatkwillcrit" value="0"> <span data-i18n="crit">crit</span>&nbsp;&nbsp;<input type="number" name="attr_gmenemywill" value="0"> <span data-i18n="resist">resist</span></label>
</div>
<div class="customattack attack clearfix willattack">
<button type="roll" name="roll_panicattack" class="btn" value="&{template:zafirwillattack} {{panic=panic}} {{aim=[[2d6>5]]}} {{crit=[[0]]}} {{resist=[[(@{panicresist})d6>6]]}} {{enemy=@{panicname}}}"><span data-i18n="Test For Panic">Test For Panic</span></button>
<button type="roll" name="roll_panicattack" class="btn" value="&{template:zafirwillattack} {{panic=panic}} {{aim=[[ [Panic Attack Dice] 2d6>5]]}} {{crit=[[0]]}} {{resist=[[ [Panic Resist Dice] (@{panicresist})d6>6]]}} {{enemy=@{panicname}}}"><span data-i18n="Test For Panic">Test For Panic</span></button>
<input type="text" name="attr_panicname" spellcheck="false" placeholder="Character" style="width:110px;margin-right:10px;">
<label>2 <span data-i18n="will">will</span>&nbsp;&nbsp;<input type="number" name="attr_panicresist" value="0"> <span data-i18n="resist">resist</span></label>
</div>
@@ -1181,7 +1193,7 @@
<div>
<h3 data-i18n="Dodge">Dodge</h3>
<div class="attack customattack clearfix dodgeroller">
<button type="roll" name="roll_dodge" class="btn" value="&{template:zafirdodge} {{dodge=[[(@{gmdodgedice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Dodge">Dodge</span></button>
<button type="roll" name="roll_dodge" class="btn" value="&{template:zafirdodge} {{dodge=[[ [Dodge Dice] (@{gmdodgedice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Dodge">Dodge</span></button>
<label style="width:110px" data-i18n="Dodge Dice:">Dodge Dice:</label><input type="number" name="attr_gmdodgedice" value="0" />
</div>
</div>
@@ -1399,10 +1411,13 @@
</div>
</div>
</div>
<!--<button type="action" name="act_clearselectedunit" class="btn" style="float:right;width:auto;padding-top:4px;padding-bottom:4px;">Clear</button>-->
<button type="action" name="act_refreshselectedunit" class="btn" style="float:right;width:auto;padding-top:4px;padding-bottom:4px;">Refresh</button>
<h3 data-i18n="Enemy Unit Selector">Enemy Unit Selector</h3>
<fieldset class="repeating_gmenemyunitlist">
<input type="hidden" class="hideifone" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn"><span name="attr_gmunitname"></span></button>
<input type="hidden" class="hideifzero" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn selected"><span name="attr_gmunitname"></span></button>
</fieldset>
<h3 data-i18n="Unit Display Options">Unit Display Options</h3>
<label data-i18n="Show Attack Info:">Show Attack Info:</label><input type="checkbox" name="attr_gmshowattackinfo" value="1" checked /><br />
@@ -1420,7 +1435,10 @@
<h3 data-i18n="Enemy Units">Enemy Units</h3>
<fieldset class="repeating_gmenemyunitlist">
<input type="hidden" name="attr_gmunitname" value="New Unit" >
<input type="hidden" class="hideifone" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn"><span name="attr_gmunitname"></span></button>
<input type="hidden" class="hideifzero" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn selected"><span name="attr_gmunitname"></span></button>
</fieldset>
<button class="addbtn" type="action" name="act_addgmunit"><span data-i18n="Plus Add">+Add</span></button>
</div>
@@ -1648,16 +1666,16 @@
{{/ammo}}
{{#rollGreater() aim 0}}
{{#rollGreater() crit 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="CRITICAL HIT!">CRITICAL HIT!</span> {{crit}} {{aim}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="CRITICAL HIT!">CRITICAL HIT!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
<div class="sheet-template-row sheet-crit-dmg"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg}}</div>
{{/rollGreater() crit 0}}
{{#rollTotal() crit 0}}
<div class="sheet-template-row sheet-hit"><span data-i18n="HIT!">HIT!</span> {{aim}}</div>
<div class="sheet-template-row sheet-hit"><span data-i18n="HIT!">HIT!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage}}</div>
{{/rollTotal() crit 0}}
{{/rollGreater() aim 0}}
{{#rollTotal() aim 0}}
<div class="sheet-template-row sheet-miss"><span data-i18n="MISS!">MISS!</span> {{aim}}</div>
<div class="sheet-template-row sheet-miss"><span data-i18n="MISS!">MISS!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() aim 0}}
</div>
{{#enemy}}</div>{{/enemy}}
@@ -1689,18 +1707,18 @@
{{#rollGreater() resist 0}}
{{#panic}}<div class="sheet-template-row sheet-hit">{{/panic}}
{{^panic}}<div class="sheet-template-row sheet-miss">{{/panic}}
{{resist}} {{aim}} <span data-i18n="RESISTED!">RESISTED!</span></div>
<span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span><span data-i18n="RESISTED!">RESISTED!</span></div>
{{/rollGreater() resist 0}}
{{#rollTotal() resist 0}}
{{#rollGreater() crit 0}}
<div class="sheet-template-row sheet-crit-hit sheet-critsuccess">{{crit}} {{aim}} <span data-i18n="SUCCESS">SUCCESS</span> + <br /><span data-i18n="CRITICAL EFFECT!">CRITICAL EFFECT!</span></div>
<div class="sheet-template-row sheet-crit-hit sheet-critsuccess"> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span><span data-i18n="SUCCESS">SUCCESS</span> + <br /><span data-i18n="CRITICAL EFFECT!">CRITICAL EFFECT!</span></div>
{{/rollGreater() crit 0}}
{{#rollTotal() crit 0}}
{{#panic}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="PANIC!">PANIC!</span> {{aim}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="PANIC!">PANIC!</span> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/panic}}
{{^panic}}
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> {{aim}}</div>
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/panic}}
{{/rollTotal() crit 0}}
{{/rollTotal() resist 0}}
@@ -1711,7 +1729,7 @@
{{#rollTotal() aim 0}}
{{#panic}}<div class="sheet-template-row sheet-hit">{{/panic}}
{{^panic}}<div class="sheet-template-row sheet-miss">{{/panic}}
<span data-i18n="RESISTED!">RESISTED!</span> {{aim}}</div>
<span data-i18n="RESISTED!">RESISTED!</span> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() aim 0}}
</div>
</div>
@@ -1725,14 +1743,14 @@
<div class="sheet-template-row sheet-responsibility"><span data-i18n="Using">Using</span> {{responsibility}}</div>
{{#rollGreater() aim 0}}
{{#rollGreater() crit 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="CRITICAL SUCCESS!">CRITICAL SUCCESS!</span> {{crit}} {{aim}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="CRITICAL SUCCESS!">CRITICAL SUCCESS!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollGreater() crit 0}}
{{#rollTotal() crit 0}}
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> {{aim}}</div>
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() crit 0}}
{{/rollGreater() aim 0}}
{{#rollTotal() aim 0}}
<div class="sheet-template-row sheet-miss"><span data-i18n="FAILED!">FAILED!</span> {{aim}}</div>
<div class="sheet-template-row sheet-miss"><span data-i18n="FAILED!">FAILED!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() aim 0}}
</div>
</div>
@@ -1746,10 +1764,10 @@
{{#player}}<div class="sheet-template-nameplate">{{player}}</div>{{/player}}
<div class="sheet-template-header"><span data-i18n="Dodge!">Dodge!</span></div>
{{#rollGreater() dodge 0}}
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> {{dodge}}</div>
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> <span class="dodgeroll">{{dodge}}</span></div>
{{/rollGreater() dodge 0}}
{{#rollTotal() dodge 0}}
<div class="sheet-template-row sheet-miss"><span data-i18n="FAILED!">FAILED!</span> {{dodge}}</div>
<div class="sheet-template-row sheet-miss"><span data-i18n="FAILED!">FAILED!</span> <span class="dodgeroll">{{dodge}}</span></div>
{{/rollTotal() dodge 0}}
</div>
{{#enemy}}</div>{{/enemy}}
@@ -1774,46 +1792,46 @@
{{/notes}}
{{#rollGreater() targetsroll 0}}
{{#rollGreater() crit1 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg1}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg1}} <span class="critroll">{{crit1}}</span></div>
{{/rollGreater() crit1 0}}
{{#rollTotal() crit1 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage1}}</div>
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage1}} <span class="critroll">{{crit1}}</span></div>
{{/rollTotal() crit1 0}}
{{/rollGreater() targetsroll 0}}
{{#rollGreater() targetsroll 1}}
{{#rollGreater() crit2 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg2}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg2}} <span class="critroll">{{crit2}}</span></div>
{{/rollGreater() crit2 0}}
{{#rollTotal() crit2 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage2}}</div>
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage2}} <span class="critroll">{{crit2}}</span></div>
{{/rollTotal() crit2 0}}
{{/rollGreater() targetsroll 1}}
{{#rollGreater() targetsroll 2}}
{{#rollGreater() crit3 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg3}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg3}} <span class="critroll">{{crit3}}</span></div>
{{/rollGreater() crit3 0}}
{{#rollTotal() crit3 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage3}}</div>
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage3}} <span class="critroll">{{crit3}}</span></div>
{{/rollTotal() crit3 0}}
{{/rollGreater() targetsroll 2}}
{{#rollGreater() targetsroll 3}}
{{#rollGreater() crit4 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg4}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg4}} <span class="critroll">{{crit4}}</span></div>
{{/rollGreater() crit4 0}}
{{#rollTotal() crit4 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage4}}</div>
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage4}} <span class="critroll">{{crit4}}</span></div>
{{/rollTotal() crit4 0}}
{{/rollGreater() targetsroll 3}}
{{#rollGreater() targetsroll 4}}
{{#rollGreater() crit5 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg5}}</div>
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg5}} <span class="critroll">{{crit5}}</span></div>
{{/rollGreater() crit5 0}}
{{#rollTotal() crit5 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage5}}</div>
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage5}} <span class="critroll">{{crit5}}</span></div>
{{/rollTotal() crit5 0}}
{{/rollGreater() targetsroll 4}}
</div>
@@ -2510,7 +2528,7 @@
<!-- // Sheet Workers //////////////////////////////////////////////////////////////// -->
<script type="text/worker">
// Main tab bar
const buttonlist = ["atk", "aab", "pab", "eqp", "res", "inv", "oth"];
const buttonlist = ["atk", "aab", "pab", "eqp", "res", "inv", "oth", "set"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
@@ -2667,6 +2685,10 @@ const attackDiceInputs = [
"atkothercrit",
"gmatkaimdice",
"gmatkcritdice",
"gmatk1aimdice",
"gmatk1critdice",
"gmatk2aimdice",
"gmatk2critdice",
"atkoverwatch"
];
on(sheetOpenAndAttrChanged(attackDiceInputs) +
@@ -2695,6 +2717,10 @@ on(sheetOpenAndAttrChanged(attackDiceInputs) +
let atkothercrit = parseInt(values.atkothercrit)||0;
let gmatkaimdice = parseInt(values.gmatkaimdice)||0;
let gmatkcritdice = parseInt(values.gmatkcritdice)||0;
let gmatk1aimdice = parseInt(values.gmatk1aimdice)||0;
let gmatk1critdice = parseInt(values.gmatk1critdice)||0;
let gmatk2aimdice = parseInt(values.gmatk2aimdice)||0;
let gmatk2critdice = parseInt(values.gmatk2critdice)||0;
let aimBonus = 0;
let critBonus = 0;
@@ -2733,7 +2759,11 @@ on(sheetOpenAndAttrChanged(attackDiceInputs) +
custattackaimdice: Math.max(aim + atkotheraim + aimBonus, 0),
custattackcritdice: Math.max(atkothercrit + critBonus, 0),
gmatkaimdicetotal: Math.max(gmatkaimdice + aimBonus, 0),
gmatkcritdicetotal: Math.max(gmatkcritdice + critBonus, 0)
gmatkcritdicetotal: Math.max(gmatkcritdice + critBonus, 0),
gmatk1aimdicetotal: Math.max(gmatk1aimdice + aimBonus, 0),
gmatk1critdicetotal: Math.max(gmatk1critdice + critBonus, 0),
gmatk2aimdicetotal: Math.max(gmatk2aimdice + aimBonus, 0),
gmatk2critdicetotal: Math.max(gmatk2critdice + critBonus, 0)
});
const repeatAttrs = [
@@ -3119,49 +3149,62 @@ const selectedEnemyAttrs = [
["_gmunitabl4effect", "selectedenemyabl4effect"],
];
function SelectUnit(unitId) {
let attrs = [
["_gmunitwill", "gmwatkwill"],
["_gmunitdodge", "gmdodgedice"],
function SelectUnit(unitId, force) {
getAttrs(["selectedenemyid"], function(values) {
let selectedenemyid = values.selectedenemyid;
if (!force && selectedenemyid == unitId) {
return;
}
console.log("selectedenemyid: " + selectedenemyid);
let attrs = [
["_gmunitwill", "gmwatkwill"],
["_gmunitdodge", "gmdodgedice"],
["_gmunitatkname", "gmatkname"],
["_gmunitatkcrit", "gmatkcritdice"],
["_gmunitatkdmg", "gmatkdamage"],
["_gmunitatkcritdmg", "gmatkcritdamage"],
["_gmunitatkaim", "gmatkaimdice"],
["_gmunitatknotes", "selectedenemyatknotes"],
["_gmunitatkname", "gmatkname"],
["_gmunitatkcrit", "gmatkcritdice"],
["_gmunitatkdmg", "gmatkdamage"],
["_gmunitatkcritdmg", "gmatkcritdamage"],
["_gmunitatkaim", "gmatkaimdice"],
["_gmunitatknotes", "selectedenemyatknotes"],
["_gmunitatk1name", "gmatk1name"],
["_gmunitatk1crit", "gmatk1critdice"],
["_gmunitatk1dmg", "gmatk1damage"],
["_gmunitatk1critdmg", "gmatk1critdamage"],
["_gmunitatk1aim", "gmatk1aimdice"],
["_gmunitatk1notes", "selectedenemyatk1notes"],
["_gmunitatk1name", "gmatk1name"],
["_gmunitatk1crit", "gmatk1critdice"],
["_gmunitatk1dmg", "gmatk1damage"],
["_gmunitatk1critdmg", "gmatk1critdamage"],
["_gmunitatk1aim", "gmatk1aimdice"],
["_gmunitatk1notes", "selectedenemyatk1notes"],
["_gmunitatk2name", "gmatk2name"],
["_gmunitatk2crit", "gmatk2critdice"],
["_gmunitatk2dmg", "gmatk2damage"],
["_gmunitatk2critdmg", "gmatk2critdamage"],
["_gmunitatk2aim", "gmatk2aimdice"],
["_gmunitatk2notes", "selectedenemyatk2notes"]
];
attrGetters = [];
attrs.forEach(attrPair => {
attrPair[0] = "repeating_gmenemyunitlist_" + unitId + attrPair[0];
attrGetters.push(attrPair[0]);
});
selectedEnemyAttrs.forEach(attrPair => {
let completeAttr = "repeating_gmenemyunitlist_" + unitId + attrPair[0];
attrs.push([completeAttr, attrPair[1]]);
attrGetters.push(completeAttr);
});
let output = { selectedenemyid: unitId };
getAttrs(attrGetters, function(values) {
["_gmunitatk2name", "gmatk2name"],
["_gmunitatk2crit", "gmatk2critdice"],
["_gmunitatk2dmg", "gmatk2damage"],
["_gmunitatk2critdmg", "gmatk2critdamage"],
["_gmunitatk2aim", "gmatk2aimdice"],
["_gmunitatk2notes", "selectedenemyatk2notes"]
];
attrGetters = [];
attrs.forEach(attrPair => {
output[attrPair[1]] = values[attrPair[0]]||"";
attrPair[0] = "repeating_gmenemyunitlist_" + unitId + attrPair[0];
attrGetters.push(attrPair[0]);
});
selectedEnemyAttrs.forEach(attrPair => {
let completeAttr = "repeating_gmenemyunitlist_" + unitId + attrPair[0];
attrs.push([completeAttr, attrPair[1]]);
attrGetters.push(completeAttr);
});
let output = {
selectedenemyid: unitId,
[`repeating_gmenemyunitlist_${unitId}_selected`]: 1
};
if (selectedenemyid && selectedenemyid != unitId) {
output[`repeating_gmenemyunitlist_${selectedenemyid}_selected`] = 0;
}
getAttrs(attrGetters, function(values) {
attrs.forEach(attrPair => {
output[attrPair[1]] = values[attrPair[0]]||"";
});
setAttrs(output);
});
setAttrs(output);
});
}
@@ -3264,6 +3307,13 @@ on("clicked:clearselectedunit", function() {
ClearSelectedUnit();
});
on("clicked:refreshselectedunit", function() {
getAttrs(["selectedenemyid"], function(values) {
let unitId = values.selectedenemyid;
SelectUnit(unitId, true);
});
});
on("remove:repeating_gmenemyunitlist", function(eventInfo) {
getAttrs(["selectedenemyid"], function(values) {
let unitId = values.selectedenemyid;