mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-09-03 21:52:28 +00:00
570 lines
26 KiB
HTML
570 lines
26 KiB
HTML
<div class="wrapper">
|
|
<input type="hidden" class="tabstoggle" name="attr_sheetTab" value="pilot"/>
|
|
<div>
|
|
<button type="action" name="act_pilot" class="tabs">Character</button>
|
|
<button type="action" name="act_info" class="tabs">Info</button>
|
|
<button type="action" name="act_inv" class="tabs">Gear</button>
|
|
</div>
|
|
<div class="info">
|
|
<h2>Information</h2>
|
|
<div class="grid">
|
|
<div class="col">
|
|
<label>Name </label>
|
|
<input class="colInput" type="text" name="attr_character_name">
|
|
</div>
|
|
<div class="col">
|
|
<label>Race </label>
|
|
<input class="colInput" type="text" name="attr_race">
|
|
</div>
|
|
<div class="col">
|
|
<label>Class </label>
|
|
<input class="colInput" type="text" name="attr_class">
|
|
</div>
|
|
<div class="col">
|
|
<label>City of Origin </label>
|
|
<input class="colInput" type="text" name="attr_coo">
|
|
</div>
|
|
<div class="col">
|
|
<label>Age </label>
|
|
<input class="colInput" type="text" name="attr_age">
|
|
</div>
|
|
<div class="col">
|
|
<label>Height </label>
|
|
<input class="colInput" type="text" name="attr_height">
|
|
</div>
|
|
<div class="col">
|
|
<label>Weight </label>
|
|
<input class="colInput" type="text" name="attr_weight">
|
|
</div>
|
|
<div class="col">
|
|
<label>Language </label>
|
|
<input class="colInput" type="text" name="attr_lang">
|
|
</div>
|
|
<div class="col">
|
|
<label>Notes </label>
|
|
<textarea class="colInput" name="attr_notes">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="pilot">
|
|
<div class="tabstoggle">
|
|
<h2></button> D20 <button type="roll" value="[[1d20]]"></button>High <button type="roll" value="&{template:rollhigh}{{name=@{character_name}}}{{roll=[[1d20]]}}"></button> or Low <button type="roll" value="&{template:rolllow}{{name=@{character_name}}}{{roll=[[1d20]]}}"></h2>
|
|
</div>
|
|
<div class="twocolumns">
|
|
<div>
|
|
<h2 title="All stats cost 5 points. No need to roll if the difficulty is lower than the stat.">Stats</h2>
|
|
<div class="twocolumns">
|
|
<div class="labels">
|
|
<label title="Tuf 5 CP. Rolled for life saving throws (poison, drowning, etc.), strength throws, defense against Persuade, and Inventory slots (if used). +1 HP">Toughness </label>
|
|
<label title="Dex 5 CP. Rolled for physical feats (attack, climbing/falling, picking locks, etc.)">Dexterity </label>
|
|
<label title="IQ 5 CP. Rolled for magic and mental feats (perception, puzzles, knowledge, etc.)">Intelligence </label>
|
|
</div>
|
|
<div class="valuecolumn">
|
|
<input type="number" min="0" max="40" name="attr_tuf" value="5">
|
|
<input type="number" min="0" max="40" name="attr_dx" value="5">
|
|
<input type="number" min="0" max="40" name="attr_iq" value="5">
|
|
</div>
|
|
<div class="valuecolumn">
|
|
<button style="height: 18px;" type="roll" title="Roll stat." value="&{template:roll}{{name=@{character_name}}}{{total=[[ [[1d20]] + @{tuf}[Tuf] ]]}}{{roll=$[[0]]}}{{target=[[@{targetr}]]}}{{stat='Toughness'}}"></button>
|
|
<button style="height: 18px;" type="roll" title="Roll stat." value="&{template:roll}{{name=@{character_name}}}{{total=[[ [[1d20]] + @{dx}[Dex] ]]}}{{roll=$[[0]]}}{{target=[[@{targetr}]]}}{{stat='Dexterity'}}"></button>
|
|
<button style="height: 18px;" type="roll" title="Roll stat." value="&{template:roll}{{name=@{character_name}}}{{total=[[ [[1d20]] + @{iq}[IQ] ]]}}{{roll=$[[0]]}}{{target=[[@{targetr}]]}}{{stat='Intelligence'}}"></button>
|
|
</div>
|
|
<div class="valuecolumn">
|
|
<button style="height: 18px; color: orange;" type="roll" title="Roll stat with mods." value="&{template:roll}{{name=@{character_name}}}{{total=[[ [[1d20]] + ?{Modifier?|0}[Mod] + @{tuf}[Tuf] ]]}}{{roll=$[[0]]}}{{target=[[@{targetr}]]}}{{stat='Toughness'}}"></button>
|
|
<button style="height: 18px; color: orange;" type="roll" title="Roll stat with mods." value="&{template:roll}{{name=@{character_name}}}{{total=[[ [[1d20]] + ?{Modifier?|0}[Mod] + @{dx}[Dex] ]]}}{{roll=$[[0]]}}{{target=[[@{targetr}]]}}{{stat='Dexterity'}}"></button>
|
|
<button style="height: 18px; color: orange;" type="roll" title="Roll stat with mods." value="&{template:roll}{{name=@{character_name}}}{{total=[[ [[1d20]] + ?{Modifier?|0}[Mod] + @{iq}[IQ] ]]}}{{roll=$[[0]]}}{{target=[[@{targetr}]]}}{{stat='Intelligence'}}"></button>
|
|
</div>
|
|
</div>
|
|
<div class="twocolumns">
|
|
<div class="valuecolumn">
|
|
<input type="number" min="-60" max="60" name="attr_targetr" value="10">
|
|
</div>
|
|
<div class="labels">
|
|
<label style="float: left;" title="Target is used against stat checks">Target </label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div style="margin-left: 50px;">
|
|
<h2>Utility</h2>
|
|
<div class="twocolumns">
|
|
<div class="labels">
|
|
<label title="HP. The hit points you have left.">Hit Points </label>
|
|
<label title="Tuf gives +1 HP, and you can buy Bonus HP">HP Max </label>
|
|
<label title="2 CP. Adds to Max HP">HP Bonus </label>
|
|
<label title="E. The Energy you have left.">Energy </label>
|
|
<label title="Used for Attacks. IQ & Dex give +1 E. You can buy Bonus E">E Max </label>
|
|
<label title="1 CP. Adds to Max E">E Bonus </label>
|
|
<br>
|
|
<label>Silver </label>
|
|
</div>
|
|
<div class="valuecolumn">
|
|
<input type="number" name="attr_hp" value="5">
|
|
<input type="number" disabled name="attr_hp_max" title="Tuf gives +1 HP, and you can buy Bonus HP" value="((@{tuf}) + (@{hpmax}))">
|
|
<input type="number" min="0" name="attr_hpmax" value="0">
|
|
<input type="number" min="0" name="attr_e" value="0">
|
|
<input type="number" disabled name="attr_e_max" title="Used for Attacks. IQ & Dex give +1 E. You can buy Bonus E" value="((@{emax}) + (@{dx}) + (@{iq}))">
|
|
<input type="number" min="0" name="attr_emax" value="0">
|
|
<br>
|
|
<input type="number" style="width: 80px;" step=".01" name="attr_gold" value="100">
|
|
</div>
|
|
<div>
|
|
<button title="Restore HP to Max HP" type="action" name="act_restore_hp">Restore HP</button>
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<br>
|
|
<button title="Restore E to Max E" type="action" name="act_restore_e">Restore E</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div style="margin-left: 50px;">
|
|
<h2>Points</h2>
|
|
<div class="twocolumns">
|
|
<div class="labels">
|
|
<label title="The points awarded to you by the gm">Total Worth </label>
|
|
<label title="The total points you have spent">Spent </label>
|
|
<label title="The remaining points" style="color: chartreuse;">Available </label>
|
|
<label title="The points you have spent on Stats & Utility">Stats </label>
|
|
<label title="Total number of Powers. All Powers cost 1 CP">Powers </label>
|
|
<label title="Total points spent on Armor. 2 CP each">Armor </label>
|
|
<label title="The points you have spent on Passives">Passives </label>
|
|
</div>
|
|
<div class="valuecolumn">
|
|
<input type="number" name="attr_tw" value="200" style="width: 100px;">
|
|
<input type="number" disabled name="attr_totalspent" value="((@{stats}) + (@{armor}) + (@{passives}) + (@{powers}))" class="x">
|
|
<input type="number" disabled name="attr_avail" value="((@{tw})-(@{totalspent}))" class="x">
|
|
<input type="number" disabled name="attr_stats" title="5 CP for each stat. 1 CP for each utility" value="(((@{tuf})-5)*5 + ((@{dx})-5)*5 + ((@{iq})-5)*5 + (@{emax}) + (@{hpmax})*2)" >
|
|
<input type="hidden" name="attr_foo_armor" value="0">
|
|
<input type="hidden" name="attr_foo_passives" value="0">
|
|
<input type="hidden" name="attr_foo_powers" value="0">
|
|
<input type="number" disabled name="attr_powers" value="@{foo_powers}">
|
|
<input type="number" disabled name="attr_armor" value="@{foo_armor}">
|
|
<input type="number" disabled name="attr_passives" value="@{foo_passives}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
|
|
<h3>Attacks</h3>
|
|
<div class="weapon">
|
|
<label style="width: 170px">Name</label>
|
|
<label style="width: 190px" title="The 1 power for this Attack. Leave blank if the Attack only does Damage. Include Duration unit.">Power</label>
|
|
<label style="width: 50px" title="Additional DC for the Power. If this is > 0, the Attack costs 1 CP.">Power DC</label>
|
|
<label style="width: 20px" title="E cost to cast the Power, derived from Power DC (0-4 = 1, 5-9 = 2, 10-14 = 3, etc.)">E</label>
|
|
<label style="width: 45px" title="The Dmg this Power deals. Each Dmg increases Total DC by 2">Dmg</label>
|
|
<label style="width: 36px" title="Use Attack with or without Mods. If Dmg is > Power DC, This rolls Dex, otherwise rolls IQ.">Roll</label>
|
|
<label style="width: 63px" title="Power DC + Dmgx2">Total DC</label>
|
|
</div>
|
|
<div>
|
|
<fieldset class="repeating_attacks">
|
|
<div class="weapon">
|
|
<input type="text" name="attr_atkname">
|
|
<textarea type="text" name="attr_power"></textarea>
|
|
<input type="number" min="0" max="60" name="attr_pdc" value="0">
|
|
<input type="hidden" name="attr_foo_e" value="0">
|
|
<input type="number" disabled name="attr_e" title="Energy Cost" value="@{foo_e}">
|
|
<input type="number" min="0" max="30" name="attr_dmg" value="0">
|
|
<input type="hidden" name="attr_type" value="@{dx}">
|
|
<button style="height: 24px;" type="roll" title="Use the Attack" value="&{template:weapon}{{name=@{character_name}}}{{atkname=@{atkname}}}{{cost=@{e}}}{{total=[[ [[1d20]]+ @{type}[stat] ]]}}{{roll=$[[0]]}}{{diff=[[@{dc}]]}}{{power=@{power}}}{{dmg=[[@{dmg}]]}}{{pdc=[[@{pdc}]]}}"></button>
|
|
<button style="height: 24px; color: orange;" type="roll" title="Use the Attack with Mods" value="&{template:weapon}{{name=@{character_name}}}{{atkname=@{atkname}}}{{cost=@{e}}}{{total=[[ [[1d20]] + ?{Hit Mod?|0}[Mod] + @{type}[stat] ]]}}{{roll=$[[0]]}}{{diff=[[@{dc}]]}}{{power=@{power}}}{{dmg=[[@{dmg}[Dmg] + ?{Dmg Mod?|0}[Mod] ]]}}{{pdc=[[@{pdc}]]}}"></button>
|
|
<input type="number" max="60" disabled name="attr_dc" title="Total DC" value="((@{pdc}) + 2*(@{dmg}))">
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<br>
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
|
|
<h3>Armor</h3>
|
|
<div class="weapon">
|
|
<label>Name</label>
|
|
<label title="The place on the body the armor resides. The most important spot is the body, since that's the default hit location.">Location</label>
|
|
<label title="Armor (2 points)" style="width: 38px;">Armor</label>
|
|
<label>Cost</label>
|
|
</div>
|
|
<div>
|
|
<fieldset class="repeating_armors">
|
|
<div class="weapon">
|
|
<input type="text" name="attr_armorname" title="Name of the Armor">
|
|
<input type="text" name="attr_armorloc" title="location of the Armor">
|
|
<input type="number" min="0" name="attr_armor" value="0">
|
|
<input type="number" disabled name="attr_armorcp" title="cost of this Armor" value="((@{armor})*2)" >
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
|
|
<h3>Passives</h3>
|
|
<div class="weapon">
|
|
<label style="width: 170px;">Name</label>
|
|
<label style="width: 190px;" title="Makes sure to put all details in this box (length, bonus, rolls, all of it)">power</label>
|
|
<label>CP</label>
|
|
</div>
|
|
<fieldset class="repeating_passives">
|
|
<div class="weapon">
|
|
<input type="text" name="attr_abilname" title="Name of the ability"><textarea name="attr_ability"></textarea> <input type="number" name="attr_pass_cp" title="+ for advantage, - for disadvantage">
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<div class="inv">
|
|
<h2>Gear</h2>
|
|
<div class="weapon">
|
|
<label>Name</label>
|
|
<label>Description</label>
|
|
<label style="width: 35px;">#</label>
|
|
<label style="width: 35px;">Slots</label>
|
|
<label>Cost</label>
|
|
</div>
|
|
<div>
|
|
<fieldset class="repeating_items">
|
|
<div class="weapon">
|
|
<input type="text" name="attr_itemname" title="Name of the Item">
|
|
<input type="text" name="attr_itempower" title="power of the item">
|
|
<input type="number" name="attr_quantity" title="Number of this item you have. Most items can't have more than 10, and some can have fewer">
|
|
<input type="number" name="attr_slots" title="items don't have a weight, just a slot count. Most items take 1 slot">
|
|
<input type="number" name="attr_itemcost" title="The amount in silver the item costs">
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div>
|
|
<input type="hidden" name="attr_foo_slotsused" value="0">
|
|
Slots used: <input name="attr_slotsused" type="number" disabled value="@{foo_slotsused}"> Slots available: <input type="number" name="attr_slotsavail" disabled value="((@{tuf})*2-(@{foo_slotsused})+10)">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<script type="text/worker">
|
|
["pilot","info","grim","inv"].forEach(button => {
|
|
on(`clicked:${button}`, function() {
|
|
setAttrs({
|
|
"sheetTab": button
|
|
});
|
|
});
|
|
});
|
|
|
|
on('clicked:restore_e', function() {
|
|
getAttrs( ["emax", "dx", "iq"]
|
|
, function(values) {
|
|
setAttrs({"e": (parseInt(values.emax) + parseInt(values.dx) + parseInt(values.iq))}
|
|
, {silent:true}
|
|
);
|
|
});
|
|
});
|
|
|
|
on('clicked:restore_hp', function() {
|
|
getAttrs( ["hpmax", "tuf"]
|
|
, function(values) {
|
|
setAttrs({"hp":(parseInt(values.hpmax) + parseInt(values.tuf))}
|
|
, {silent:true}
|
|
);
|
|
});
|
|
});
|
|
|
|
function sumFieldValues(fieldValues){
|
|
let sum = 0;
|
|
Object.values(fieldValues).forEach(element => sum += parseInt(element)||0);
|
|
return sum;
|
|
}
|
|
|
|
function getRepeatingFields(sectionName, fieldNames, callback) {
|
|
getSectionIDs(sectionName, function (ids) {
|
|
if (ids.length === 0) {
|
|
callback(0);
|
|
return;
|
|
}
|
|
let fieldArray = [];
|
|
for (let j = 0; j < fieldNames.length; j++) {
|
|
for (let i = 0; i < ids.length; i++) {
|
|
fieldArray.push(sectionName + '_' + ids[i] + '_' + fieldNames[j]);
|
|
}
|
|
}
|
|
getAttrs(fieldArray, function (fieldValues) {
|
|
callback(fieldValues);
|
|
});
|
|
});
|
|
}
|
|
|
|
function getCostOfPower(dc){
|
|
return Math.max(0,Math.ceil((parseInt(dc))/5));
|
|
}
|
|
|
|
on('change:iq change:dx change:emax' , function(eventInfo) {
|
|
getAttrs( ["e"]
|
|
, function(values) {
|
|
setAttrs({"e": (parseInt(values.e) + (parseInt(eventInfo.newValue) - (parseInt(eventInfo.previousValue)||0)))}, {silent:true});
|
|
});
|
|
});
|
|
|
|
on("change:tuf change:hpmax", function(eventInfo) {
|
|
getAttrs([
|
|
"hp",
|
|
]
|
|
, function(values) {
|
|
setAttrs({
|
|
"hp": (parseInt(values.hp) + parseInt(eventInfo.newValue) - (parseInt(eventInfo.previousValue)||0))
|
|
}
|
|
, {silent:true}
|
|
);
|
|
});
|
|
});
|
|
|
|
on("change:repeating_attacks:pdc", function(eventInfo) {
|
|
getRepeatingFields("repeating_attacks", ["pdc"], function(fieldValues){
|
|
let sendValues = {"foo_powers":0};
|
|
let idName;
|
|
let propName;
|
|
let last_Ind;
|
|
for (const property in fieldValues) {
|
|
last_Ind = property.lastIndexOf("_");
|
|
idName = property.substring(0, last_Ind);
|
|
propName = property.substring(last_Ind+1, property.length);
|
|
sendValues[idName + "_foo_e"] = getCostOfPower(fieldValues[property]);
|
|
if(parseInt(fieldValues[property])> 0){
|
|
sendValues["foo_powers"] += 1;
|
|
}
|
|
}
|
|
setAttrs( sendValues , {silent:true} );
|
|
});
|
|
});
|
|
|
|
on("change:repeating_attacks:pdc change:repeating_attacks:dmg", function(eventInfo) {
|
|
let sendValues = {};
|
|
const last_Ind = eventInfo.sourceAttribute.lastIndexOf("_");
|
|
const incomingAtk = eventInfo.sourceAttribute.substring(0, last_Ind);
|
|
getAttrs([
|
|
incomingAtk + "_pdc", incomingAtk + "_dmg"
|
|
]
|
|
, function(values) {
|
|
// making sure we didnt go over 60
|
|
if(parseInt(values[incomingAtk + "_pdc"]) + parseInt(values[incomingAtk + "_dmg"])*2 > 60){
|
|
sendValues[eventInfo.sourceAttribute] = eventInfo.previousValue;
|
|
values[incomingAtk + eventInfo.sourceAttribute.substring(last_Ind, eventInfo.sourceAttribute.length)] = eventInfo.previousValue;
|
|
}
|
|
// set buttons
|
|
if(parseInt(values[incomingAtk + "_pdc"]) >= parseInt(values[incomingAtk + "_dmg"])){
|
|
sendValues[incomingAtk + "_type"] = "@{iq}"
|
|
}else{
|
|
sendValues[incomingAtk + "_type"] = "@{dx}"
|
|
}
|
|
setAttrs( sendValues , {silent:true} );
|
|
});
|
|
});
|
|
|
|
on("change:repeating_items:slots", function(eventInfo) {
|
|
getRepeatingFields("repeating_items", ["slots"], function(fieldValues){
|
|
setAttrs({
|
|
"foo_slotsused": sumFieldValues(fieldValues)
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:repeating_armors:armor", function(eventInfo) {
|
|
getRepeatingFields("repeating_armors", ["armor"], function(fieldValues){
|
|
let arSum = 0;
|
|
for (const property in fieldValues) {
|
|
arSum += parseInt(fieldValues[property])*2;
|
|
}
|
|
setAttrs({
|
|
"foo_armor": arSum
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:repeating_passives:pass_cp", function(eventInfo) {
|
|
getRepeatingFields("repeating_passives", ["pass_cp"], function(fieldValues){
|
|
setAttrs({
|
|
"foo_passives": sumFieldValues(fieldValues)
|
|
});
|
|
});
|
|
});
|
|
|
|
on("sheet:opened", function(eventInfo){
|
|
getAttrs([
|
|
"first"
|
|
]
|
|
, function(values) {
|
|
if(values.first == undefined){
|
|
setAttrs({
|
|
"tuf": 5
|
|
,"iq":5
|
|
,"dx":5
|
|
,"hpmax":0
|
|
,"hp":5
|
|
,"first":1
|
|
,"e":10
|
|
,"emax":0
|
|
,"gold":100
|
|
,"foo_armor":0
|
|
,"foo_dmg":0
|
|
,"foo_passives":0
|
|
,"foo_powers":0
|
|
}
|
|
, {silent:true}
|
|
);
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-roll">
|
|
<table>
|
|
<tr>
|
|
<th>
|
|
{{name}} rolls {{stat}}:
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
{{#rollTotal() roll 20}}
|
|
<strong style="color: green;">CRIT SUCCESS!</strong> ({{roll}}) <br>
|
|
You succeed, and get really lucky! Optionally you can gamble with a high or low. Success means you double the power. Fail means you just succeed.
|
|
{{/rollTotal() roll 20}}
|
|
|
|
{{#rollBetween() roll 2 19}}
|
|
{{#rollGreater() total target}}
|
|
{{total}} is a <strong style="color: green;">Success</strong> against {{target}}
|
|
{{/rollGreater() total target}}
|
|
{{#rollTotal() total target}}
|
|
{{total}} is a <strong style="color: green;">Success</strong> against {{target}}
|
|
{{/rollTotal() total target}}
|
|
{{#rollLess() total target}}
|
|
{{total}} is a <strong style="color: red;">Fail</strong> against {{target}}
|
|
{{/rollLess() total target}}
|
|
{{/rollBetween() roll 2 19}}
|
|
|
|
{{#rollTotal() roll 1}}
|
|
<strong style="color: red;">CRIT FAIL!</strong> ({{roll}}) <br>
|
|
You auto fail. Succeed a "high or low" or something bad might happen to you
|
|
{{/rollTotal() roll 1}}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-weapon">
|
|
<table>
|
|
<tr>
|
|
<th>
|
|
{{name}} attacks with {{atkname}} Difficulty: {{diff}}
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
{{#rollWasCrit() roll}}
|
|
<strong style="color: green;">CRIT SUCCESS!</strong> ({{roll}}) <br>
|
|
Your attack auto hits. Double Power or Dmg. No E cost.
|
|
{{#^rollTotal() dmg 0}}
|
|
<br>
|
|
Dmg: {{dmg}}
|
|
{{/^rollTotal() dmg 0}}
|
|
{{#^rollTotal() pdc 0}}
|
|
<br>
|
|
Power: Subtract <strong >{{cost}}</strong> E.
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
{{power}}
|
|
{{/^rollTotal() pdc 0}}
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
Optionally, gamble with a High-or-Low for even more Powers. A Fail loses all Crits.
|
|
{{/rollWasCrit() roll}}
|
|
|
|
{{#rollWasFumble() roll}}
|
|
<strong style="color: red;">CRIT FAIL!</strong> ({{roll}}) <br>
|
|
Your attack auto fails. Succeed a "high or low" or drop your weapon or fall prone.<br>Subtract {{cost}} E.
|
|
{{/rollWasFumble() roll}}
|
|
|
|
{{#rollBetween() roll 2 19}}
|
|
|
|
{{#rollLess() total diff}}
|
|
{{total}} <strong style="color: red;">Fails...</strong>. Action wasted. Do NOT subtract E.
|
|
{{/rollLess() total diff}}
|
|
|
|
{{#^rollLess() total diff}}
|
|
{{total}} <strong style="color: green;">Success</strong>.
|
|
{{#^rollTotal() dmg 0}}
|
|
<br>
|
|
Dmg: {{dmg}}
|
|
{{/^rollTotal() dmg 0}}
|
|
{{#^rollTotal() pdc 0}}
|
|
<br>
|
|
Power: Subtract <strong >{{cost}}</strong> E.
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
{{power}}
|
|
{{/^rollTotal() pdc 0}}
|
|
{{/^rollLess() total diff}}
|
|
|
|
{{/rollBetween() roll 2 19}}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-rollhigh">
|
|
<table>
|
|
<tr>
|
|
<th>
|
|
{{name}} rolls for high!
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
{{#rollBetween() roll 11 20}}
|
|
<strong style="color: green;">Nailed It!</strong> ({{roll}})
|
|
{{/rollBetween() roll 11 20}}
|
|
|
|
{{#rollBetween() roll 1 10}}
|
|
<strong style="color: red;">fail...</strong> ({{roll}})
|
|
{{/rollBetween() roll 1 10}}
|
|
<br>
|
|
p.s. high/lows cannot crit
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-rolllow">
|
|
<table>
|
|
<tr>
|
|
<th>
|
|
{{name}} rolls for low!
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="sheet-rolltemplate-spacer"></div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
{{#rollBetween() roll 11 20}}
|
|
<strong style="color: red;">fail...</strong> ({{roll}})
|
|
{{/rollBetween() roll 11 20}}
|
|
|
|
{{#rollBetween() roll 1 10}}
|
|
<strong style="color: green;">Nailed It!</strong> ({{roll}})
|
|
{{/rollBetween() roll 1 10}}
|
|
<br>
|
|
p.s. high/lows cannot crit
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</rolltemplate> |