Files
roll20-character-sheets/Red Giant/RedGiant.html
T
2024-06-03 13:15:14 -04:00

1124 lines
38 KiB
HTML

<div class="sheet-main">
<!-- Game Name, roll toggles, and tab switching -->
<div class='sheet-topgrid'>
<a href="https://ibb.co/KqnVCkB"><img src="https://i.ibb.co/yy2gL1K/red-giant-logo.png" alt="red-giant-logo" border="0"></a>
<span> </span>
<input type="hidden" class="sheet-radio-roll-state" name="attr_rollstate" value="flat" />
<button type="action" name="act_roll_state_disadvantage" class="sheet-radio-roll-state sheet-radio-roll-state-disadvantage"> Dis
</button>
<span> </span>
<button type="action" name="act_roll_state_flat" class="sheet-radio-roll-state sheet-radio-roll-state-flat"> -
</button>
<span> </span>
<button type="action" name="act_roll_state_advantage" class="sheet-radio-roll-state sheet-radio-roll-state-advantage"> Adv
</button>
<span> </span>
<label class="sheet-big-label" > Roll Mod </label>
<span> </span>
<input name="attr_roll_mod" class="sheet-stat-inputs" type="number" value="0" />
<span> </span>
<label class="sheet-big-label" > Defense </label>
<span> </span>
<input name="attr_defence" class="sheet-stat-inputs" type="number" value="0" />
<span> </span>
<button type="action" name="act_pc" class="sheet-tabbutton" >PC</button>
<span> </span>
<button type="action" name="act_npc" class="sheet-tabbutton" >NPC</button>
</div>
<!-- Spacing fix -->
<div class="col" style="width: 100%; height: 10px;"></div>
<!-- line 1 of stats -->
<div class='sheet-stat1'>
<span> </span>
<label class="sheet-regular-label" title="STR" > Strength </label>
<select name="attr_strength" class="sheet-die-dropdowns">
<option value="4">D4</option><option value="6">D6</option><option value="8">D8</option><option value="10">D10</option><option value="12">D12</option>
</select>
<label class="sheet-regular-label" title="RFX" > Reflex </label>
<select name="attr_reflex" class="sheet-die-dropdowns">
<option value="4">D4</option><option value="6">D6</option><option value="8">D8</option><option value="10">D10</option><option value="12">D12</option>
</select>
<label class="sheet-big-label-title" > DEFENSE </label>
<!-- repeated here for hiding to work -->
<input type="hidden" class="sheet-radio-roll-state" name="attr_rollstate" value="flat" />
<button type="roll" name="roll_sanity_check" class="sheet-statrollbutton disadvantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Sanity Check}} {{attribute1=Mind}} {{attribute2=Sanity}} {{die1=D@{mind}}} {{die2=@{sanity}}} {{mod=@{roll_mod}}} {{result=[[2D@{mind}kl1+@{sanity} + @{roll_mod}]]}}" >Sanity! </button>
<button type="roll" name="roll_sanity_check" class="sheet-statrollbutton flat" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Sanity Check}} {{attribute1=Mind}} {{attribute2=Sanity}} {{die1=D@{mind}}} {{die2=@{sanity}}} {{mod=@{roll_mod}}} {{result=[[1D@{mind}+@{sanity} + @{roll_mod}]]}}" >Sanity! </button>
<button type="roll" name="roll_sanity_check" class="sheet-statrollbutton advantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Sanity Check}} {{attribute1=Mind}} {{attribute2=Sanity}} {{die1=D@{mind}}} {{die2=@{sanity}}} {{mod=@{roll_mod}}} {{result=[[2D@{mind}k1+@{sanity} + @{roll_mod}]]}}" >Sanity! </button>
<label class="sheet-regular-label" > Sanity </label>
<input name="attr_sanity" class="sheet-stat-inputs" type="number" value="0" />
<label class="sheet-regular-label" > / </label>
<input name="attr_sanity_max" class="sheet-stat-inputs" type="number" value="0" />
</div>
<!-- Spacing fix -->
<div class="col" style="width: 100%; height: 10px;"></div>
<!-- line 2 of stats -->
<div class='sheet-stat2'>
<span> </span>
<label class="sheet-regular-label" title="MND" > Mind </label>
<select name="attr_mind" class="sheet-die-dropdowns">
<option value="4">D4</option><option value="6">D6</option><option value="8">D8</option><option value="10">D10</option><option value="12">D12</option>
</select>
<label class="sheet-regular-label" title="CHA" > Charm </label>
<select name="attr_charm" class="sheet-die-dropdowns">
<option value="4">D4</option><option value="6">D6</option><option value="8">D8</option><option value="10">D10</option><option value="12">D12</option>
</select>
<label class="sheet-regular-label" > Health </label>
<input name="attr_health" class="sheet-stat-inputs" type="number" value="0" />
<label class="sheet-regular-label" > / </label>
<input name="attr_health_max" class="sheet-stat-inputs" type="number" value="0" />
<label class="sheet-regular-label" > Spirit </label>
<input name="attr_spirit" class="sheet-stat-inputs" type="number" value="0" />
<label class="sheet-regular-label" > / </label>
<input name="attr_spirit_max" class="sheet-stat-inputs" type="number" value="0" />
</div>
<!-- Spacing fix -->
<div class="col" style="width: 100%; height: 10px;"></div>
<!-- line 3 of stats -->
<div class='sheet-stat3'>
<label class="sheet-left-label" > Name </label>
<input name="attr_character_name" class="sheet-char-inputs" type="text"/>
<span> </span>
<input type="hidden" name="attr_attribute1die" value="">
<select name="attr_attribute1name" class="sheet-attribute-dropdowns">
<option value="Strength">Strength</option><option value="Reflex">Reflex</option><option value="Mind">Mind</option><option value="Charm">Charm</option>
</select>
<label class="sheet-regular-label" > + </label>
<input type="hidden" name="attr_attribute2die" value="">
<select name="attr_attribute2name" class="sheet-attribute-dropdowns">
<option value="Strength">Strength</option><option value="Reflex">Reflex</option><option value="Mind">Mind</option><option value="Charm">Charm</option>
</select>
<!-- repeated here for hiding to work -->
<input type="hidden" class="sheet-radio-roll-state" name="attr_rollstate" value="flat" />
<button type="roll" name="roll_attribute_check" class="sheet-statrollbuttonshort disadvantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Attribute Check}} {{attribute1=@{attribute1name}}} {{attribute2=@{attribute2name}}} {{die1=D@{attribute1die}}} {{die2=D@{attribute2die}}} {{mod=@{roll_mod}}} {{result=[[2D@{attribute1die}kl1+2D@{attribute2die}kl1 + @{roll_mod}]]}}" >Roll!</button>
<button type="roll" name="roll_attribute_check" class="sheet-statrollbuttonshort flat" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Attribute Check}} {{attribute1=@{attribute1name}}} {{attribute2=@{attribute2name}}} {{die1=D@{attribute1die}}} {{die2=D@{attribute2die}}} {{mod=@{roll_mod}}} {{result=[[1D@{attribute1die}+1D@{attribute2die} + @{roll_mod}]]}}" >Roll!</button>
<button type="roll" name="roll_attribute_check" class="sheet-statrollbuttonshort advantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Attribute Check}} {{attribute1=@{attribute1name}}} {{attribute2=@{attribute2name}}} {{die1=D@{attribute1die}}} {{die2=D@{attribute2die}}} {{mod=@{roll_mod}}} {{result=[[2D@{attribute1die}k1+2D@{attribute2die}k1 + @{roll_mod}]]}}" >Roll!</button>
<label class="sheet-regular-label" > Look </label>
<input name="attr_look" class="sheet-char-inputs-look" type="text"/>
</div>
<!-- Spacing fix -->
<div class="col" style="width: 100%; height: 10px;"></div>
<!-- To switch tabs -->
<input type='hidden' class='sheet-tabstoggle' name='attr_sheetTab' value='pc' />
<!-- Player Character sheet -->
<div class='sheet-main-pc'>
<!-- Player Character sheet - Left Column -->
<div class='sheet-main-pc-left'>
<!--Attributes -->
<div class='sheet-attributes'>
<label class="sheet-left-label-1" > ATTRIBUTES </label>
<label class="sheet-left-label" > Personality </label>
<input name="attr_personality" class="sheet-char-inputs-long" type="text"/>
<label class="sheet-left-label" > Flaw </label>
<input name="attr_flaw" class="sheet-char-inputs-long" type="text"/>
<label class="sheet-left-label" > Past </label>
<input name="attr_past" class="sheet-char-inputs-long" type="text"/>
<label class="sheet-left-label" > Misfortune </label>
<input name="attr_misfortune" class="sheet-char-inputs-long" type="text"/>
</div>
<div class="col" style="width: 100%; height: 10px;"></div>
<!--Useables - Joss, Rations, & Item Slots -->
<div class='sheet-useables'>
<label class="sheet-regular-label-left" > Joss </label>
<input name="attr_joss" class="sheet-useable-inputs-long" type="number" value="0" />
<span> </span>
<label class="sheet-regular-label-left" > Rations </label>
<input name="attr_rations" class="sheet-useable-inputs" type="number" value="2" />
<span> </span>
<label class="sheet-regular-label-left" > Item Slots </label>
<input name="attr_itemslots" class="sheet-useable-inputs" type="number" value="0" />
<label class="sheet-regular-label" > / </label>
<input name="attr_itemslots_max" class="sheet-useable-inputs" type="number" value="0" />
</div>
<div class="col" style="width: 100%; height: 10px;"></div>
<!--Armor -->
<div class='sheet-armor'>
<div class='sheet-armortitle'>
<label class="sheet-left-label-1" > ARMOR </label>
<label class="sheet-big-label-table" > ITEM </label>
<label class="sheet-big-label-table" > DEFENSE </label>
<label class="sheet-big-label-table" > SIZE </label>
</div>
<div class='sheet-armordetails'>
<fieldset class="repeating_armor">
<div class="sheet-armor-row">
<input name="attr_armorname" class="sheet-armor-inputs" type="text"/>
<span> &nbsp; &nbsp; &nbsp; </span>
<input name="attr_armordefense" class="sheet-useable-inputs" type="number" value="0" />
<span> &nbsp; &nbsp; &nbsp; </span>
<input name="attr_armorsize" class="sheet-useable-inputs" type="number" value="1" />
<div class="col" style="width: 100%; height: 4px;"></div>
</div>
</fieldset>
</div>
</div>
<div class="col" style="width: 100%; height: 10px;"></div>
<!--Weapons -->
<div class='sheet-weapons'>
<div class='sheet-weaponstitle'>
<label class="sheet-left-label-1" > WEAPONS </label>
<label class="sheet-big-label-table" > ITEM </label>
<label class="sheet-big-label-table" > ACCURACY </label>
<label class="sheet-big-label-table" > DMG </label>
<label class="sheet-big-label-table" > HANDS </label>
<label class="sheet-big-label-table" > SIZE </label>
</div>
<div class='sheet-weaponsdetails'>
<fieldset class="repeating_weapons">
<div class="sheet-weapons-row">
<input name="attr_weaponsname" class="sheet-weapons-inputs" type="text"/>
<span> &nbsp; </span>
<input name="attr_weaponsaccuracy" class="sheet-weapons-inputs-short" type="text"/>
<span> &nbsp; </span>
<input name="attr_weaponsdamage" class="sheet-weapons-inputs-shortest" type="text"/>
<span> &nbsp; </span>
<input name="attr_weaponshands" class="sheet-useable-inputs" type="number" value="1" />
<span> &nbsp; </span>
<input name="attr_weaponssize" class="sheet-useable-inputs" type="number" value="1" />
<div class="col" style="width: 100%; height: 4px;"></div>
</div>
</fieldset>
</div>
</div>
<div class="col" style="width: 100%; height: 10px;"></div>
<!--Items -->
<div class='sheet-items'>
<div class='sheet-itemstitle'>
<label class="sheet-left-label-1" > ITEMS </label>
<label class="sheet-big-label-table" > ITEM </label>
<label class="sheet-big-label-table" > SIZE </label>
</div>
<div class='sheet-itemsdetails'>
<fieldset class="repeating_items">
<div class="sheet-items-row">
<input name="attr_itemsname" class="sheet-items-inputs" type="text"/>
<span> &nbsp; </span>
<input name="attr_itemssize" class="sheet-useable-inputs" type="number" value="1" />
<div class="col" style="width: 100%; height: 4px;"></div>
</div>
</fieldset>
</div>
</div>
<div class="col" style="width: 100%; height: 10px;"></div>
<!--Speech Magic -->
<div class='sheet-speechmagic'>
<div class='sheet-speechmagictitle'>
<label class="sheet-left-label-1" title="MND + CHA competition check if used on an unwilling creature, otherwise no check needed." > SPEECH MAGIC </label>
<label class="sheet-big-label-table" title="Modum is the spell's effect. Spatium is the size/range of the spell. Vim is the strength of the spell. A spell must use at minimum one Modum and one Spatium." > TYPE </label>
<label class="sheet-big-label-table" > KEYWORD </label>
<label class="sheet-big-label-table" > SPIRIT </label>
</div>
<div class='sheet-speechmagicdetails'>
<fieldset class="repeating_speechmagic">
<div class="sheet-speechmagic-row">
<select name="attr_speechmagictype" class="sheet-speechmagic-dropdowns">
<option value="Modum">Modum</option><option value="Spatium">Spatium</option><option value="Vim">Vim</option>
</select>
<span> &nbsp; </span>
<input name="attr_speechmagickeyword" class="sheet-speechmagic-inputs" type="text"/>
<span> &nbsp; </span>
<input name="attr_speechmagicspiritcost" class="sheet-useable-inputs" type="number" value="1" />
<div class="sheet-auto-expand speechmagic-width" >
<span name="attr_speechmagicdescription"></span>
<textarea spellcheck="false" name="attr_speechmagicdescription" placeholder="keyword description"></textarea>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
</div>
</fieldset>
</div>
</div>
</div>
<!-- Player Character sheet - Right Column -->
<div class='sheet-main-pc-right'>
<!--Archetype -->
<div class='sheet-archetype'>
<div class='sheet-archetypename'>
<label class="sheet-left-label-big" > ARCHETYPE </label>
<input name="attr_archetype" class="sheet-char-inputs-title" type="text"/>
</div>
<label class="sheet-left-label" > Skill 1: </label>
<div class="sheet-auto-expand attribute-width">
<span name="attr_skill1"></span>
<textarea spellcheck="false" name="attr_skill1"></textarea>
</div>
<label class="sheet-left-label" > Skill 2: </label>
<div class="sheet-auto-expand attribute-width">
<span name="attr_skill2"></span>
<textarea spellcheck="false" name="attr_skill2"></textarea>
</div>
<label class="sheet-left-label" > Skill 3: </label>
<div class="sheet-auto-expand attribute-width">
<span name="attr_skill3"></span>
<textarea spellcheck="false" name="attr_skill3"></textarea>
</div>
</div>
<!--Exchanges -->
<div class='sheet-exchanges'>
<label class="sheet-left-label-1" > EXCHANGES </label>
<fieldset class="repeating_exchanges">
<div class="sheet-exchanges-row">
<div class="sheet-auto-expand red-width" >
<span name="attr_exchangename"></span>
<textarea spellcheck="false" name="attr_exchangename"></textarea>
</div>
<span> &nbsp; </span>
<div class="sheet-auto-expand exchange-width" >
<span name="attr_exchangeability"></span>
<textarea spellcheck="false" name="attr_exchangeability"></textarea>
</div>
<div class="col" style="width: 100%; height: 4px;"></div>
<label class="sheet-left-label" > however </label>
<span> &nbsp; </span>
<div class="sheet-auto-expand exchangelong-width">
<span name="attr_exchangedrawback"></span>
<textarea spellcheck="false" name="attr_exchangedrawback"></textarea>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
</div>
</fieldset>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
<!--Curses -->
<div class='sheet-curses'>
<label class="sheet-left-label-1" > CURSES </label>
<fieldset class="repeating_curses">
<div class="sheet-curses-row">
<div class="sheet-auto-expand curse-width" >
<span name="attr_curse"></span>
<textarea spellcheck="false" name="attr_curse"></textarea>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
</div>
</fieldset>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
<!--Healing -->
<div class='sheet-healing'>
<label class="sheet-left-label-1" > HEALING </label>
<button type='action' name='act_treatwound' class="sheet-healingbuttonshort" >Treat Wound</button>
<span> </span>
<button type='action' name='act_mealandrest' class="sheet-healingbutton" >Meal and Full Night's Rest</button>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
<!--Stave Magic -->
<div class='sheet-stavemagic'>
<div class='sheet-stavemagictitle'>
<label class="sheet-left-label-1" > STAVE MAGIC </label>
<label class="sheet-big-label-table" > ITEM </label>
<label class="sheet-big-label-table" > MATERIAL COST WORTH </label>
<label class="sheet-big-label-table" > SIZE </label>
</div>
<div class='sheet-stavemagicdetails'>
<fieldset class="repeating_stavemagic">
<div class="sheet-stavemagic-row">
<input name="attr_stavemagicname" class="sheet-stavemagic-inputs" type="text"/>
<span> &nbsp; </span>
<input name="attr_stavemagicmaterialcostworth" class="sheet-useable-inputs" type="number" value="0" />
<span> &nbsp; </span>
<input name="attr_stavemagicsize" class="sheet-useable-inputs" type="number" value="2" />
<div class="col" style="width: 100%; height: 4px;"></div>
<div class="sheet-auto-expand stavemagic-width" >
<span name="attr_stavemagicdescription"></span>
<textarea spellcheck="false" name="attr_stavemagicdescription" placeholder="stave description"></textarea>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
</div>
</fieldset>
</div>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
<!--Orb Magic -->
<div class='sheet-orbmagic'>
<div class='sheet-orbmagictitle'>
<label class="sheet-left-label-1" > ORB MAGIC </label>
<label class="sheet-big-label-table" > ITEM </label>
<label class="sheet-big-label-table" > SPIRIT COST </label>
<label class="sheet-big-label-table" > SIZE </label>
</div>
<div class='sheet-orbmagicdetails'>
<fieldset class="repeating_orbmagic">
<div class="sheet-orbmagic-row">
<input name="attr_orbmagicname" class="sheet-orbmagic-inputs" type="text"/>
<span> &nbsp; </span>
<input name="attr_orbmagicspiritcost" class="sheet-useable-inputs" type="number" value="2" />
<span> &nbsp; </span>
<input name="attr_orbmagicsize" class="sheet-useable-inputs" type="number" value="1" />
<div class="col" style="width: 100%; height: 4px;"></div>
<div class="sheet-auto-expand orbmagic-width" >
<span name="attr_orbmagicdescription"></span>
<textarea spellcheck="false" name="attr_orbmagicdescription" placeholder="orb description"></textarea>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<!-- Non-Player Character sheet -->
<div class='sheet-main-npc'>
<!-- NPC Rollers - accuracy check, damage check, and defense value -->
<div class='sheet-npcrollers'>
<label class="sheet-left-label" > Accuracy Check </label>
<span> </span>
<input type="hidden" name="attr_accuracy1die" value="">
<select name="attr_accuracy1name" class="sheet-attribute-dropdowns-npc">
<option value="Strength">Strength</option><option value="Reflex">Reflex</option><option value="Mind">Mind</option><option value="Charm">Charm</option>
</select>
<label class="sheet-regular-label" > + </label>
<input type="hidden" name="attr_accuracy2die" value="">
<select name="attr_accuracy2name" class="sheet-attribute-dropdowns-npc">
<option value="Strength">Strength</option><option value="Reflex">Reflex</option><option value="Mind">Mind</option><option value="Charm">Charm</option>
</select>
<!-- repeated here for hiding to work -->
<input type="hidden" class="sheet-radio-roll-state" name="attr_rollstate" value="flat" />
<button type="roll" name="roll_accuracy_check" class="sheet-statrollbuttonshort disadvantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Accuracy Check}} {{attribute1=@{accuracy1name}}} {{attribute2=@{accuracy2name}}} {{die1=D@{accuracy1die}}} {{die2=D@{accuracy2die}}} {{mod=@{roll_mod}}} {{result=[[2D@{accuracy1die}kl1+2D@{accuracy2die}kl1 + @{roll_mod}]]}}" >Roll!</button>
<button type="roll" name="roll_accuracy_check" class="sheet-statrollbuttonshort flat" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Accuracy Check}} {{attribute1=@{accuracy1name}}} {{attribute2=@{accuracy2name}}} {{die1=D@{accuracy1die}}} {{die2=D@{accuracy2die}}} {{mod=@{roll_mod}}} {{result=[[1D@{accuracy1die}+1D@{accuracy2die} + @{roll_mod}]]}}" >Roll!</button>
<button type="roll" name="roll_accuracy_check" class="sheet-statrollbuttonshort advantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Accuracy Check}} {{attribute1=@{accuracy1name}}} {{attribute2=@{accuracy2name}}} {{die1=D@{accuracy1die}}} {{die2=D@{accuracy2die}}} {{mod=@{roll_mod}}} {{result=[[2D@{accuracy1die}k1+2D@{accuracy2die}k1 + @{roll_mod}]]}}" >Roll!</button>
<span> </span>
<label class="sheet-left-label" > Damage Check </label>
<span> </span>
<input type="hidden" name="attr_damage1die" value="">
<select name="attr_damage1name" class="sheet-attribute-dropdowns-npc">
<option value="Strength">Strength</option><option value="Reflex">Reflex</option><option value="Mind">Mind</option><option value="Charm">Charm</option>
</select>
<label class="sheet-regular-label" > + </label>
<input type="hidden" name="attr_damage2die" value="">
<select name="attr_damage2name" class="sheet-attribute-dropdowns-npc">
<option value="Strength">Strength</option><option value="Reflex">Reflex</option><option value="Mind">Mind</option><option value="Charm">Charm</option>
</select>
<!-- repeated here for hiding to work -->
<input type="hidden" class="sheet-radio-roll-state" name="attr_rollstate" value="flat" />
<button type="roll" name="roll_damage_check" class="sheet-statrollbuttonshort disadvantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Damage Check}} {{attribute1=@{damage1name}}} {{attribute2=@{damage2name}}} {{die1=D@{damage1die}}} {{die2=D@{damage2die}}} {{mod=@{roll_mod}}} {{result=[[2D@{damage1die}kl1+2D@{damage2die}kl1 + @{roll_mod}]]}}" >Roll!</button>
<button type="roll" name="roll_damage_check" class="sheet-statrollbuttonshort flat" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Damage Check}} {{attribute1=@{damage1name}}} {{attribute2=@{damage2name}}} {{die1=D@{damage1die}}} {{die2=D@{damage2die}}} {{mod=@{roll_mod}}} {{result=[[1D@{damage1die}+1D@{damage2die} + @{roll_mod}]]}}" >Roll!</button>
<button type="roll" name="roll_damage_check" class="sheet-statrollbuttonshort advantage" value="&{template:attribute} {{charname=@{character_name}}} {{checktype=Damage Check}} {{attribute1=@{damage1name}}} {{attribute2=@{damage2name}}} {{die1=D@{damage1die}}} {{die2=D@{damage2die}}} {{mod=@{roll_mod}}} {{result=[[2D@{damage1die}k1+2D@{damage2die}k1 + @{roll_mod}]]}}" >Roll!</button>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
<!--Specials -->
<div class='sheet-specials'>
<div class='sheet-specialstitle'>
<label class="sheet-left-label-1" > SPECIALS </label>
<label class="sheet-big-label-table" > NAME </label>
<label class="sheet-big-label-table" > SPIRIT COST </label>
<label class="sheet-big-label-table" > DESCRIPTION </label>
</div>
<div class='sheet-specialsdetails'>
<fieldset class="repeating_specials">
<div class="sheet-specials-row">
<input name="attr_specialsname" class="sheet-specials-inputs" type="text"/>
<span> &nbsp; </span>
<input name="attr_specialsspiritcost" class="sheet-useable-inputs" type="number" value="2" />
<span> &nbsp; </span>
<div class="sheet-auto-expand specials-width" >
<span name="attr_specialsdescription"></span>
<textarea spellcheck="false" name="attr_specialsdescription"></textarea>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
</div>
</fieldset>
</div>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
<!--Appearance -->
<div class='sheet-appearance'>
<label class="sheet-left-label-1" > APPEARANCE & BEHAVIOR </label>
<fieldset class="repeating_appearance">
<div class="sheet-appearance-row">
<div class="sheet-auto-expand appearance-width" >
<span name="attr_appearancedescription"></span>
<textarea spellcheck="false" name="attr_appearancedescription"></textarea>
</div>
<div class="col" style="width: 100%; height: 7px;"></div>
</div>
</fieldset>
</div>
</div>
</div>
<rolltemplate class="sheet-rolltemplate-attribute">
<div class="sheet-attribute-container">
<div class="sheet-attribute-roll-header">
<br> {{charname}} &nbsp;
<span class="attribute-roll-result">
&nbsp; {{result}}<BR>
</span>
</div>
{{#checktype}}
<div class="sheet-attribute-checktype">
{{checktype}}
</div>
{{/checktype}}
<div class="sheet-attribute-type">
{{attribute1}} {{die1}} + {{attribute2}} {{die2}} + {{mod}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-treatwounds">
<div class="sheet-treatwounds-container">
<div class="sheet-treatwounds-roll-header">
<br> {{charname}}
</div>
<div class="sheet-treatwounds-type">
Treat Wounds
</div>
<div class="sheet-treatwounds-hp-header">
HP Regained &nbsp;
<span class="treatwounds-hp-result">
&nbsp; &nbsp; &nbsp; &nbsp; {{computed::hpresult}}<BR>
</span>
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-mealandrest">
<div class="sheet-mealandrest-container">
<div class="sheet-mealandrest-roll-header">
<br> {{charname}}
</div>
<div class="sheet-mealandrest-type">
Meal and Full Night's Rest
</div>
<div class="sheet-mealandrest-hp-header">
HP Regained &nbsp;
<span class="mealandrest-hp-result">
&nbsp; &nbsp; &nbsp; &nbsp; {{computed::hpresult}}<BR>
</span>
</div>
<div class="sheet-mealandrest-spirit-header">
Spirit Regained &nbsp;
<span class="mealandrest-spirit-result">
&nbsp; &nbsp; {{computed::spiritresult}}<BR>
</span>
</div>
<div class="sheet-mealandrest-sanity-header">
Sanity Regained &nbsp;
<span class="mealandrest-sanity-result">
&nbsp; {{computed::sanityresult}}<BR>
</span>
</div>
</div>
</rolltemplate>
<script type="text/worker">
//Buttons for Tabs
const buttonlist = ["pc","npc"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button,
});
});
});
const rollStateRadioValues = ["advantage","flat","disadvantage"];
rollStateRadioValues.forEach(function(value) {
on(`clicked:roll_state_${value}`, function() {
setAttrs({
["rollstate"]: value
});
});
});
// trigger when the sheet is opened for the first time in a session or statname changes or the actual stat value changes
on('sheet:opened change:attribute1name change:strength change:reflex change:mind change:charm', () => {
getAttrs(['attribute1name','strength','reflex','mind','charm','attribute1die'], (values) => {
// Based on attribute1name, set the correct variable value for attribute1die
const attribute1name = values.attribute1name.trim();
let attribute1dienew = values.attribute1die || 0;
if (attribute1name === "Strength") {
attribute1dienew = values.strength || 0;;
}
else if (attribute1name === "Reflex") {
attribute1dienew = values.reflex || 0;;
}
else if (attribute1name === "Mind") {
attribute1dienew = values.mind || 0;;
}
else if (attribute1name === "Charm") {
attribute1dienew = values.charm || 0;;
}
setAttrs({
attribute1die: attribute1dienew.toString()
});
});
});
on('sheet:opened change:attribute2name change:strength change:reflex change:mind change:charm', () => {
getAttrs(['attribute2name','strength','reflex','mind','charm','attribute2die'], (values) => {
// Based on attribute2name, set the correct variable value for attribute2die
const attribute2name = values.attribute2name.trim();
let attribute2dienew = values.attribute2die || 0;
if (attribute2name === "Strength") {
attribute2dienew = values.strength || 0;;
}
else if (attribute2name === "Reflex") {
attribute2dienew = values.reflex || 0;;
}
else if (attribute2name === "Mind") {
attribute2dienew = values.mind || 0;;
}
else if (attribute2name === "Charm") {
attribute2dienew = values.charm || 0;;
}
setAttrs({
attribute2die: attribute2dienew.toString()
});
});
});
on('sheet:opened change:accuracy1name change:strength change:reflex change:mind change:charm', () => {
getAttrs(['accuracy1name','strength','reflex','mind','charm','accuracy1die'], (values) => {
// Based on accuracy1name, set the correct variable value for accuracy1die
const accuracy1name = values.accuracy1name.trim();
let accuracy1dienew = values.accuracy1die || 0;
if (accuracy1name === "Strength") {
accuracy1dienew = values.strength || 0;;
}
else if (accuracy1name === "Reflex") {
accuracy1dienew = values.reflex || 0;;
}
else if (accuracy1name === "Mind") {
accuracy1dienew = values.mind || 0;;
}
else if (accuracy1name === "Charm") {
accuracy1dienew = values.charm || 0;;
}
setAttrs({
accuracy1die: accuracy1dienew.toString()
});
});
});
on('sheet:opened change:accuracy2name change:strength change:reflex change:mind change:charm', () => {
getAttrs(['accuracy2name','strength','reflex','mind','charm','accuracy2die'], (values) => {
// Based on accuracy2name, set the correct variable value for accuracy2die
const accuracy2name = values.accuracy2name.trim();
let accuracy2dienew = values.accuracy2die || 0;
if (accuracy2name === "Strength") {
accuracy2dienew = values.strength || 0;;
}
else if (accuracy2name === "Reflex") {
accuracy2dienew = values.reflex || 0;;
}
else if (accuracy2name === "Mind") {
accuracy2dienew = values.mind || 0;;
}
else if (accuracy2name === "Charm") {
accuracy2dienew = values.charm || 0;;
}
setAttrs({
accuracy2die: accuracy2dienew.toString()
});
});
});
on('sheet:opened change:damage1name change:strength change:reflex change:mind change:charm', () => {
getAttrs(['damage1name','strength','reflex','mind','charm','damage1die'], (values) => {
// Based on damage1name, set the correct variable value for damage1die
const damage1name = values.damage1name.trim();
let damage1dienew = values.damage1die || 0;
if (damage1name === "Strength") {
damage1dienew = values.strength || 0;;
}
else if (damage1name === "Reflex") {
damage1dienew = values.reflex || 0;;
}
else if (damage1name === "Mind") {
damage1dienew = values.mind || 0;;
}
else if (damage1name === "Charm") {
damage1dienew = values.charm || 0;;
}
setAttrs({
damage1die: damage1dienew.toString()
});
});
});
on('sheet:opened change:damage2name change:strength change:reflex change:mind change:charm', () => {
getAttrs(['damage2name','strength','reflex','mind','charm','damage2die'], (values) => {
// Based on damage2name, set the correct variable value for damage2die
const damage2name = values.damage2name.trim();
let damage2dienew = values.damage2die || 0;
if (damage2name === "Strength") {
damage2dienew = values.strength || 0;;
}
else if (damage2name === "Reflex") {
damage2dienew = values.reflex || 0;;
}
else if (damage2name === "Mind") {
damage2dienew = values.mind || 0;;
}
else if (damage2name === "Charm") {
damage2dienew = values.charm || 0;;
}
setAttrs({
damage2die: damage2dienew.toString()
});
});
});
// Custom Roll Parsing - for healing, so that the attributes can increase automatically
const parseClickTrigger = function(string){
let match = string.match(/clicked:(?:(repeating_[^_]+)_([^_]+)_)?(.+)/);
match.shift();
return match;
};
//Treat Wounds
const initiateRollTreatWounds = async function(event){
let [section,rowID,button] = parseClickTrigger(event.triggerName);//Returns an array with values of ['repeating_section','rowID','button name']
let message = `&{template:treatwounds} {{charname=@{character_name}}} {{showroll=[[1]]}} {{hpresult=[[0[computed result]]]}} {{roll1=[[1d4]]}} `;
let roll = await startRoll(message);
const computeObj = {};
let rollResults = [1].map((num)=>roll.results[`roll${num}`]);
console.log("Original rolls");
console.log(rollResults);
let result = rollResults.map(a => a.result);
console.log("Original rolls - easier format");
console.log(result);
console.log("HP Increase rolled");
let hpresult = result[0];
console.log(hpresult);
computeObj.hpresult = hpresult;
// Get HP, and adjust it to lower of HP + hpresult, and HP max
getAttrs(["health","health_max"], function(values) {
let hpcurrent = parseInt(values.health)||0;
let hpmax = parseInt(values.health_max)||0;
console.log("HP Max");
console.log(hpmax);
let hpmaxhealing = hpcurrent + hpresult;
console.log("HP Max Healing");
console.log(hpmaxhealing);
let lowerResults = [hpmaxhealing,hpmax];
var hphealed = Math.min.apply(null, lowerResults); // get the min of the array
console.log("Healing result");
console.log(hphealed);
setAttrs({
health: hphealed
});
finishRoll(roll.rollId,computeObj);
});
};
on('clicked:treatwound',initiateRollTreatWounds);
//Meal and Rest
const initiateRollMealAndRest = async function(event){
let [section,rowID,button] = parseClickTrigger(event.triggerName);//Returns an array with values of ['repeating_section','rowID','button name']
let message = `&{template:mealandrest} {{charname=@{character_name}}} {{showroll=[[1]]}} {{hpresult=[[0[computed result]]]}} {{spiritresult=[[0[computed result]]]}} {{sanityresult=[[0[computed result]]]}} {{roll1=[[1d6]]}} {{roll2=[[1d6]]}} `;
let roll = await startRoll(message);
const computeObj = {};
let rollResults = [1,2].map((num)=>roll.results[`roll${num}`]);
console.log("Original rolls");
console.log(rollResults);
let result = rollResults.map(a => a.result);
console.log("Original rolls - easier format");
console.log(result);
console.log("HP Increase rolled");
let hpresult = result[0];
console.log(hpresult);
computeObj.hpresult = hpresult;
console.log("Spirit Increase rolled");
let spiritresult = result[1];
console.log(spiritresult);
computeObj.spiritresult = spiritresult;
console.log("Sanity Increase (default)");
let sanityresult = 1;
console.log(sanityresult);
computeObj.sanityresult = sanityresult;
// Get HP, and adjust it to lower of HP + hpresult, and HP max
getAttrs(["health","health_max","spirit","spirit_max","sanity","sanity_max"], function(values) {
let hpcurrent = parseInt(values.health)||0;
let hpmax = parseInt(values.health_max)||0;
console.log("HP Max");
console.log(hpmax);
let hpmaxhealing = hpcurrent + hpresult;
console.log("HP Max Healing");
console.log(hpmaxhealing);
let lowerResultsHP = [hpmaxhealing,hpmax];
var hphealed = Math.min.apply(null, lowerResultsHP); // get the min of the array
console.log("Healing result");
console.log(hphealed);
let spiritcurrent = parseInt(values.spirit)||0;
let spiritmax = parseInt(values.spirit_max)||0;
console.log("Spirit Max");
console.log(spiritmax);
let spiritmaxhealing = spiritcurrent + spiritresult;
console.log("Spirit Max Healing");
console.log(spiritmaxhealing);
let lowerResultsSpirit = [spiritmaxhealing,spiritmax];
var spirithealed = Math.min.apply(null, lowerResultsSpirit); // get the min of the array
console.log("Spirit result");
console.log(spirithealed);
let sanitycurrent = parseInt(values.sanity)||0;
let sanitymax = parseInt(values.sanity_max)||0;
console.log("Sanity Max");
console.log(sanitymax);
let sanitymaxhealing = sanitycurrent + sanityresult;
console.log("Sanity Max Healing");
console.log(sanitymaxhealing);
let lowerResultsSanity = [sanitymaxhealing,sanitymax];
var sanityhealed = Math.min.apply(null, lowerResultsSanity); // get the min of the array
console.log("Sanity result");
console.log(sanityhealed);
setAttrs({
health: hphealed,
spirit: spirithealed,
sanity: sanityhealed
});
finishRoll(roll.rollId,computeObj);
});
};
on('clicked:mealandrest',initiateRollMealAndRest);
</script>