mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-31 04:02:29 +00:00
456 lines
22 KiB
HTML
456 lines
22 KiB
HTML
<div class="3colrow image-bg">
|
|
<div class="transparent-bg">
|
|
|
|
<div class="col transparent-bg">
|
|
|
|
<div class="section white-bg yellow-border">
|
|
<label class="inline">
|
|
<span data-i18n="name-u" class="unifraktur">Name</span> <input type=text name="attr_char_name" class="mediumwidth" />
|
|
</label>
|
|
</div>
|
|
<div class="section white-bg yellow-border">
|
|
<label>
|
|
<span class="monospace" data-i18n="description-u">Description</span>
|
|
</label>
|
|
<textarea name="attr_description"></textarea>
|
|
</div>
|
|
<div class="section white-bg yellow-border">
|
|
<label class="inline">
|
|
<span class="monospace" data-i18n="class-u">Class<span>
|
|
</label>
|
|
<input type=text name="attr_class" class="mediumwidth" />
|
|
<br />
|
|
<label>
|
|
<span class="note monospace" data-i18n="class-abilities-u">Class Abilities</span>
|
|
</label>
|
|
<textarea name="attr_class_abilities"></textarea>
|
|
</div>
|
|
<div class="section white-bg yellow-border">
|
|
<label>
|
|
<span class="lacquer" data-i18n="powers-u">Powers</span>
|
|
</label>
|
|
<div class="2colrow">
|
|
<div class="col">
|
|
<span class="note lacquer" data-i18n="powers-note-u">Presence+d4 times per day</span>
|
|
</div>
|
|
<div class="col">
|
|
<button type="roll" name="roll_powers" value="/em (@{char_name}) @{labelrolls} @{labeldailypowers}: [[1d4 + @{presence}]]"></button>
|
|
</div>
|
|
</div>
|
|
<label class="inline">
|
|
<span class="note monospace" data-i18n="powers-left-u">Remaining</span>
|
|
</label>
|
|
<input type="number" name="attr_power_total" value="0" />
|
|
<br />
|
|
<br />
|
|
<fieldset class="repeating_powers" name="repeating_powers">
|
|
<input type="text" name="attr_power">
|
|
</fieldset>
|
|
<br />
|
|
<label class="inline">
|
|
<span data-i18n="use-power-u">Use Power</span>
|
|
</label>
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labelpower}: [[1d20 + @{presence}]]"></button>
|
|
<br />
|
|
<span class="note monospace" data-i18n="powers-note2-u">Presence DR12, or -d2 HP and no Powers for 1 hr.</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col col-middle transparent-bg">
|
|
|
|
<div class="transparent-bg centered section">
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Mork%20Borg/images/mork-borg-logo-purple.png" alt="Mörk Borg RPG logo" />
|
|
|
|
<br />
|
|
|
|
<button type="roll" value="https://scvmbirther.makedatanotlore.dev/"><span class="monospace note" data-i18n="scvmbirther-u">SCVMBIRTHER</span></button>
|
|
</div>
|
|
|
|
<div class="transparent-bg">
|
|
<div class="transparent-bg">
|
|
<label class="centered">
|
|
<span class="monospace all-caps" data-i18n="hit-points-u">Hit Points</span>
|
|
</label>
|
|
</div>
|
|
<div class="2colrow-custom transparent-bg">
|
|
<div class="col-custom transparent-bg col-right">
|
|
<label class="aligns-right">
|
|
<span class="monospace note" data-i18n="current-hit-points-u">Current<span>
|
|
</label>
|
|
<br />
|
|
<input name="attr_hp_curr" type="number" class="num" value="0" />
|
|
</div>
|
|
<div class="col-custom transparent-bg">
|
|
<label>
|
|
<span class="monospace note" data-i18n="max-hit-points-u">Max</span>
|
|
</label>
|
|
<br />
|
|
<input name="attr_hp_max" type="number" class="num" value="0" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="2colrow section white-bg">
|
|
<div class="col">
|
|
<label class="transform1">
|
|
<span class="lacquer" data-i18n="strength-u">Strength</span>
|
|
</label>
|
|
</div>
|
|
<div class="col">
|
|
<input type=number name="attr_strength" class="num" value="0" />
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labelstrength}: [[1d20 + @{strength}]]" name="roll_strength"></button>
|
|
</div>
|
|
</div>
|
|
<div class="section white-bg">
|
|
<div class="2colrow">
|
|
<div class="col">
|
|
<label class="transform2">
|
|
<span class="lacquer" data-i18n="agility-u">Agility</span>
|
|
</label>
|
|
</div>
|
|
<div class="col">
|
|
<input type=number name="attr_agility" class="num" value="0" />
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labelagility}: [[1d20 + @{agility}]] (DR+@{agidr})" name="roll_agility"></button>
|
|
</div>
|
|
</div>
|
|
<div class="2colrow">
|
|
<div class="col">
|
|
<label>
|
|
<span class="note" data-i18n="defense-u">Defense</span>
|
|
</label>
|
|
</div>
|
|
<div class="col">
|
|
<button type="roll" value="&{template:default} {{name=@{char_name} @{labelrolls} @{labeldefense}}} {{Defend:=[[1d20 + @{agility}]] (DR +@{defdr})}} {{@{labelifhit}:=[[?{Enemy Damage|1d6} - 1d@{armortier} - @{shield}]] damage}} {{@{labelifcrit}:=@{labelcritmsg}.}} {{@{labeliffumble}:=@{labelfumblemsg} (@{labelcurrently} [[@{armortier}/2]]).}}" name="roll_defense2"></button>
|
|
</div>
|
|
</div>
|
|
<div class="2colrow">
|
|
<div class="col">
|
|
<label>
|
|
<span class="note" data-i18n="initiative-u">Initiative</span>
|
|
</label>
|
|
<br />
|
|
<span class="note" data-i18n="initiative-note-u">Agility + d6</span>
|
|
</div>
|
|
<div class="col">
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labelinitiative}: [[@{agility} + 1d6 &{tracker}]]"></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="2colrow section white-bg">
|
|
<div class="col">
|
|
<label class="transform3">
|
|
<span class="lacquer" data-i18n="presence-u">Presence</span>
|
|
</label>
|
|
</div>
|
|
<div class="col">
|
|
<input type=number name="attr_presence" class="num"/>
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labelpresence}: [[1d20 + @{presence}]]" name="roll_presence"></button>
|
|
</div>
|
|
</div>
|
|
<div class="2colrow section white-bg">
|
|
<div class="col">
|
|
<label class="transform1">
|
|
<span class="lacquer" data-i18n="toughness-u">Toughness</span>
|
|
</label>
|
|
</div>
|
|
<div class="col">
|
|
<input type=number name="attr_toughness" class="num" value="0" />
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labeltoughness}: [[1d20 + @{toughness}]]" name="roll_toughness"></button>
|
|
</div>
|
|
</div>
|
|
<div class="section white-bg">
|
|
<label class="inline">
|
|
<span class="unifraktur" data-i18n="omens-u">Omens</span>
|
|
</label>
|
|
<input name="attr_omens_curr" type="number" class="short" value="0" />
|
|
<select name="attr_omens" class="short">
|
|
<option value="2" selected="selected">d2</option>
|
|
<option value="3">d3</option>
|
|
<option value="4">d4</option>
|
|
<option value="6">d6</option>
|
|
<option value="8">d8</option>
|
|
<option value="10">d10</option>
|
|
</select>
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} [[1d@{omens}]] @{labelomens}"></button>
|
|
<br />
|
|
<span class="note" data-i18n="omens-note-u">Maximum damage, Reroll, -d6 damage, DR-4, No Crit/Fumble</span>
|
|
</div>
|
|
<div class="section transparent-bg">
|
|
<div class="transparent-bg">
|
|
<label class="inline">
|
|
<span class="white-bg" data-i18n="rest-u">Getting Rest</span>
|
|
</label>
|
|
<select name="attr_hp_rest" class="mediumwidth">
|
|
<option value="+ 1d4" selected="selected">Catch your breath, have a drink (d4)</option>
|
|
<option value="+ 1d6">Get a full night's sleep (d6)</option>
|
|
<option value="- 1d4">Starve without food or drink (-d4)</option>
|
|
<option value="- 1d6">Suffer infection (-d6)</option>
|
|
</select>
|
|
<button type="roll" value="/em (@{char_name}) @{labelrests}: [[0 @{hp_rest}]] HP"></button>
|
|
</div>
|
|
<div class="transparent-bg">
|
|
<label class="inline">
|
|
<span class="white-bg" data-i18n="getting-better-u">Getting Better</span>
|
|
</label>
|
|
<button type="roll" value="&{template:default} {{name=@{char_name} @{labelrolls} @{labelgettingbetter}}} {{@{labelhpcheck}:=[[6d10 > @{hp_max}]]}} {{@{labelhpgain}:=[[1d6]]}} {{@{labeldebris}:=[[1d6]]}} {{@{labelstrinc}=[[1d6 > @{strength}]]}} {{@{labelagiinc}=[[1d6 > @{agility}]]}} {{@{labelpreinc}=[[1d6 > @{presence}]]}} {{@{labeltouinc}=[[1d6 > @{toughness}]]}}" name="roll_gettingbetter"></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col transparent-bg">
|
|
<div class="section yellow-border white-bg">
|
|
<div>
|
|
<label>
|
|
<span class="monospace" data-i18n="weapons-u">Weapons</span>
|
|
</label>
|
|
</div>
|
|
<div class="2colrow">
|
|
<div class="col">
|
|
<label>
|
|
<span class="note" data-i18n="weapons-type-u">Type</span>
|
|
</label>
|
|
</div>
|
|
<div class="col">
|
|
<label>
|
|
<span class="note" data-i18n="weapons-damage-u">Dmg Die</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<fieldset class="repeating_weapons" name="repeating_weapons">
|
|
<input type=text name="attr_weaponname" class="short" />
|
|
<select name="attr_attacktype" class="short">
|
|
<option value="@{strength}">Melee</option>
|
|
<option value="@{presence}">Ranged</option>
|
|
</select>
|
|
<select name="attr_weapondamage" class="short">
|
|
<option value="1d2" selected="selected">d2</option>
|
|
<option value="1d4">d4</option>
|
|
<option value="1d6">d6</option>
|
|
<option value="1d8">d8</option>
|
|
<option value="1d10">d10</option>
|
|
<option value="1d12">d12</option>
|
|
<option value="?{Damage die|1d2}">Special</option>
|
|
</select>
|
|
<button type="roll" value="&{template:default} {{name=@{char_name} @{labelattacks} @{labelwith} @{weaponname}}} {{@{labelattack}:=[[1d20 + @{attacktype}]]}} {{@{labeldamage}:=[[@{weapondamage} - ?{Enemy Armor|1d0} - ?{Enemy Shield?|no,0|yes,1}]]}} {{@{labelifcrit}:=@{labelfumblemsg}.}} {{@{labeliffumble}:=@{labelattackfumble}.}}" name="roll_strength2"></button>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="section white-bg yellow-border">
|
|
<label>
|
|
<span data-i18n="armor-u" class="unifraktur">Armor</span>
|
|
</label>
|
|
<input name="attr_armor" class="inline-block" type="text" />
|
|
<label class="inline">
|
|
<span data-i18n="armor-tier-u">Tier</span>
|
|
</label>
|
|
<form class="inline-block" name="armortier">
|
|
<input name="attr_armortier" type="radio" value="0" checked>
|
|
<label for="0">0</label>
|
|
<input name="attr_armortier" type="radio" value="2">
|
|
<label for="2">1<br />-d2</label>
|
|
<input name="attr_armortier" type="radio" value="4">
|
|
<label for="4">2<br />-d4</label>
|
|
<input name="attr_armortier" type="radio" value="6">
|
|
<label for="6">3<br />-d6</label>
|
|
</form>
|
|
<label>
|
|
<span data-i18n="shield-u">Shield</span>
|
|
</label>
|
|
<form name="shield">
|
|
<input name="attr_shield" type="checkbox" value="0" checked>
|
|
<label for="0" data-i18n="no-u">No</label>
|
|
<input name="attr_shield" type="checkbox" value="1">
|
|
<label for="1" data-i18n="yes-u">Yes</label>
|
|
</form>
|
|
</div>
|
|
<div class="section white-bg yellow-border">
|
|
<label class="inline">
|
|
<span class="unifraktur" data-i18n="equipment-u">Equipment</span>
|
|
</label>
|
|
<span class="monospace italic note" data-i18n="equipment-note-u">
|
|
Strength+8 items or DR+2 on Agility/Strength tests
|
|
</span>
|
|
<br />
|
|
<label class="inline">
|
|
<span class="note">Items carried</span>
|
|
</label>
|
|
<input name="attr_items_carried" type="number" value="0" />
|
|
<br />
|
|
<div class="2colrow">
|
|
<div class="col">
|
|
<label>
|
|
<span class="note" data-i18n="equipment-item-u">Item</span>
|
|
</label>
|
|
</div>
|
|
<div class="col">
|
|
<label>
|
|
<span class="note" data-i18n="equipment-item-large-u">Large?</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_equipment" name="repeating_equipment">
|
|
<input type=text name="attr_equipment" class="mediumwidth">
|
|
<input name="attr_equipment_large" type="checkbox" value="large">
|
|
</fieldset>
|
|
</div>
|
|
<div class="section white-bg yellow-border">
|
|
<label><span class="unifraktur" data-i18n="silver-u">Silver</span> <input type="number" name="attr_silver" value="0" /></label>
|
|
</div>
|
|
|
|
<div class="section white-bg">
|
|
<label class="centered">
|
|
<span class="monospace" data-i18n="miseries-u">Miseries</span>
|
|
</label>
|
|
<form>
|
|
<input name="attr_miseries" type="checkbox" value="1">
|
|
<label for="1">1</label>
|
|
<input name="attr_miseries" type="checkbox" value="2">
|
|
<label for="2">2</label>
|
|
<input name="attr_miseries" type="checkbox" value="3">
|
|
<label for="3">3</label>
|
|
<input name="attr_miseries" type="checkbox" value="4">
|
|
<label for="4">4</label>
|
|
<input name="attr_miseries" type="checkbox" value="5">
|
|
<label for="5">5</label>
|
|
<input name="attr_miseries" type="checkbox" value="6">
|
|
<label for="6">6</label>
|
|
<input name="attr_miseries" type="checkbox" value="7">
|
|
<label for="7">7</label>
|
|
</form>
|
|
<div>
|
|
<!-- Disabled by playtester request but retained in case it gets reimplemented in the future
|
|
<div>
|
|
<label class="inline">
|
|
<span class="" data-i18n="dawn-misery-u">Dawn Roll</span>
|
|
</label>
|
|
<select name="attr_daily" class="short">
|
|
<option value="2" selected="selected">t2</option>
|
|
<option value="6">t6</option>
|
|
<option value="10">t10</option>
|
|
<option value="20">t20</option>
|
|
<option value="100">t100</option>
|
|
</select>
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labeldailymisery}: [[1d@{daily}]]" name="roll_dailymisery"></button>
|
|
</div>
|
|
<div>
|
|
<label class="inline">
|
|
<span data-i18n="psalm-u">Psalm Roll</span>
|
|
</label>
|
|
<button type="roll" value="/em (@{char_name}) @{labelrolls} @{labelpsalm}: [[1d6]]:[[1d6]]" name="roll_psalm"></button>
|
|
</div>
|
|
-->
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="no-display">
|
|
<span class="no-display" data-i18n="labeldailypowers">daily powers</span>
|
|
<span class="no-display" data-i18n="labelpower">Power</span>
|
|
|
|
<span class="no-display" data-i18n="labelstrength">Strength</span>
|
|
<span class="no-display" data-i18n="labelagility">Agility</span>
|
|
<span class="no-display" data-i18n="labeldefense">Defense</span>
|
|
<span class="no-display" data-i18n="labelinitiative">Initiative</span>
|
|
<span class="no-display" data-i18n="labelpresence">Presence</span>
|
|
<span class="no-display" data-i18n="labeltoughness">Toughness</span>
|
|
<span class="no-display" data-i18n="labelomens">Omens</span>
|
|
<span class="no-display" data-i18n="labelrests">rests</span>
|
|
<span class="no-display" data-i18n="labelgettingbetter">Getting Better</span>
|
|
<span class="no-display" data-i18n="labelhpcheck">HP check</span>
|
|
<span class="no-display" data-i18n="labelhpgain">HP gain</span>
|
|
<span class="no-display" data-i18n="labeldebris">Debris roll</span>
|
|
<span class="no-display" data-i18n="labelstrinc">Strength increase?</span>
|
|
<span class="no-display" data-i18n="labelagiinc">Agility increase?</span>
|
|
<span class="no-display" data-i18n="labelpreinc">Presence increase?</span>
|
|
<span class="no-display" data-i18n="labeltouinc">Toughness increase?</span>
|
|
|
|
<span class="no-display" data-i18n="labelrolls">rolls</span>
|
|
<span class="no-display" data-i18n="labelattacks">attacks</span>
|
|
<span class="no-display" data-i18n="labelwith">with</span>
|
|
<span class="no-display" data-i18n="labelifhit">If hit</span>
|
|
<span class="no-display" data-i18n="labelifcrit">If crit</span>
|
|
<span class="no-display" data-i18n="labelcritmsg">PC gains a free attack</span>
|
|
<span class="no-display" data-i18n="labeliffumble">If fumble</span>
|
|
<span class="no-display" data-i18n="labelfumblemsg">Double damage, armor/protection reduced one tier</span>
|
|
<span class="no-display" data-i18n="labelattack">Attack</span>
|
|
<span class="no-display" data-i18n="labelattackfumble">Weapon breaks or is lost</span>
|
|
<span class="no-display" data-i18n="labeldamage">Damage</span>
|
|
<span class="no-display" data-i18n="labelcurrently">currently</span>
|
|
|
|
<span class="no-display" data-i18n="labeldailymisery">for the day's potential misery</span>
|
|
<span class="no-display" data-i18n="labelpsalm">a psalm</span>
|
|
|
|
</div>
|
|
|
|
|
|
<script type="text/worker">
|
|
|
|
/* When I can figure out how to successfully automate the below, I will. For the time being, it seems to elude me--which I know is just due to some JS-related mental hiccup on my part.
|
|
*/
|
|
|
|
on("sheet:opened", function (eventInfo) {
|
|
setAttrs({
|
|
["labeldailypowers"]: getTranslationByKey("labeldailypowers"),
|
|
["labelpower"]: getTranslationByKey("labelpower"),
|
|
["labelstrength"]: getTranslationByKey("labelstrength"),
|
|
["labelagility"]: getTranslationByKey("labelagility"),
|
|
["labeldefense"]: getTranslationByKey("labeldefense"),
|
|
["labelinitiative"]: getTranslationByKey("labelinitiative"),
|
|
["labelpresence"]: getTranslationByKey("labelpresence"),
|
|
["labeltoughness"]: getTranslationByKey("labeltoughness"),
|
|
["labelomens"]: getTranslationByKey("labelomens"),
|
|
["labelrests"]: getTranslationByKey("labelrests"),
|
|
["labelgettingbetter"]: getTranslationByKey("labelgettingbetter"),
|
|
["labelhpcheck"]: getTranslationByKey("labelhpcheck"),
|
|
["labelhpgain"]: getTranslationByKey("labelhpgain"),
|
|
["labeldebris"]: getTranslationByKey("labeldebris"),
|
|
["labelstrinc"]: getTranslationByKey("labelstrinc"),
|
|
["labelagiinc"]: getTranslationByKey("labelagiinc"),
|
|
["labelpreinc"]: getTranslationByKey("labelpreinc"),
|
|
["labeltouinc"]: getTranslationByKey("labeltouinc"),
|
|
["labelrolls"]: getTranslationByKey("labelrolls"),
|
|
["labelattacks"]: getTranslationByKey("labelattacks"),
|
|
["labelwith"]: getTranslationByKey("labelwith"),
|
|
["labelifhit"]: getTranslationByKey("labelifhit"),
|
|
["labelifcrit"]: getTranslationByKey("labelifcrit"),
|
|
["labelcritmsg"]: getTranslationByKey("labelcritmsg"),
|
|
["labeliffumble"]: getTranslationByKey("labeliffumble"),
|
|
["labelfumblemsg"]: getTranslationByKey("labelfumblemsg"),
|
|
["labelattack"]: getTranslationByKey("labelattack"),
|
|
["labelattackfumble"]: getTranslationByKey("labelattackfumble"),
|
|
["labeldamage"]: getTranslationByKey("labeldamage"),
|
|
["labelcurrently"]: getTranslationByKey("labelcurrently"),
|
|
["labeldailymisery"]: getTranslationByKey("labeldailymisery"),
|
|
["labelpsalm"]: getTranslationByKey("labelpsalm")
|
|
});
|
|
});
|
|
|
|
|
|
on("change:armortier sheet:opened", function () {
|
|
getAttrs(["armortier"], function (values) {
|
|
const armorstat_score = parseInt(values["armortier"], 10)||0;
|
|
var armor_agi_modifier = 0;
|
|
var armor_def_modifier = 0;
|
|
|
|
if (armorstat_score == 6) {
|
|
armor_agi_modifier = 4;
|
|
armor_def_modifier = 2;
|
|
} else if (armorstat_score == 4) {
|
|
armor_def_modifier = 2;
|
|
armor_agi_modifier = 2;
|
|
} else {
|
|
armor_agi_modifier = 0;
|
|
armor_def_modifier = 0;
|
|
}
|
|
setAttrs({
|
|
["agidr"]: armor_agi_modifier,
|
|
["defdr"]: armor_def_modifier
|
|
});
|
|
});
|
|
});
|
|
</script>
|