mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
328 lines
14 KiB
HTML
328 lines
14 KiB
HTML
<!--LEFT HAND SIDE - ATTRIBUTES ROWS + AWARENESS & SPEED-->
|
|
<div class="2column">
|
|
<div class="attributes">
|
|
<div class="top-labels">
|
|
<label>BASE</label>
|
|
<label>CURRENT</label>
|
|
</div>
|
|
<div>
|
|
<h2>AWARENESS</h2>
|
|
<input type="number" name='attr_awareness' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Awareness}} {{roll=[[1d10+@{awareness}]]}}' name='roll_Awareness'>k</button>
|
|
<input type="number" name='attr_awareness_current' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Awareness (Current)}} {{roll=[[1d10+@{awareness_current}]]}}' name='roll_awareness_current'>k</button>
|
|
</div>
|
|
<div>
|
|
<h2>COMBAT</h2>
|
|
<input type="number" name='attr_combat' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Combat}} {{roll=[[1d10+@{combat}]]}}' name='roll_Awareness'>k</button>
|
|
<input type="number" name='attr_combat_current' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Combat (Current)}} {{roll=[[1d10+@{combat_current}]]}}' name='roll_combat_current'>k</button>
|
|
</div>
|
|
<div>
|
|
<h2>TOUGHNESS</h2>
|
|
<input type="number" name='attr_toughness' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Toughness}} {{roll=[[1d10+@{toughness}]]}}' name='roll_Awareness'>k</button>
|
|
<input type="number" name='attr_toughness_current' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Toughness (Current)}} {{roll=[[1d10+@{toughness_current}]]}}' name='roll_toughness_current'>k</button>
|
|
</div>
|
|
<div>
|
|
<h2>INFLUENCE</h2>
|
|
<input type="number" name='attr_influence' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Influence}} {{roll=[[1d10+@{influence}]]}}' name='roll_Awareness'>k</button>
|
|
<input type="number" name='attr_influence_current' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Influence (Current)}} {{roll=[[1d10+@{influence_current}]]}}' name='roll_influence_current'>k</button>
|
|
</div>
|
|
<div>
|
|
<h2>OPERATION</h2>
|
|
<input type="number" name='attr_operation' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Operation}} {{roll=[[1d10+@{operation}]]}}' name='roll_Awareness'>k</button>
|
|
<input type="number" name='attr_operation_current' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Operation (Current)}} {{roll=[[1d10+@{operation_current}]]}}' name='roll_operation_current'>k</button>
|
|
</div>
|
|
<div>
|
|
<h2>NERVE</h2>
|
|
<input type="number" name='attr_nerve' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Nerve}} {{roll=[[1d10+@{nerve}]]}}' name='roll_Awareness'>k</button>
|
|
<input type="number" name='attr_nerve_current' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Nerve (Current)}} {{roll=[[1d10+@{nerve_current}]]}}' name='roll_nerve_current'>k</button>
|
|
</div>
|
|
<div>
|
|
<h2>SPEED</h2>
|
|
<input type="number" name='attr_speed' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Speed}} {{roll=[[1d10+@{speed}]]}}' name='roll_Awareness'>k</button>
|
|
<input type="number" name='attr_speed_current' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Speed (Current)}} {{roll=[[1d10+@{speed_current}]]}}' name='roll_speed_current'>k</button>
|
|
</div>
|
|
</div>
|
|
<div class="speed">
|
|
<div>
|
|
<label class="half-speed">1/2 SPEED</label>
|
|
<label>OTHER</label>
|
|
<label>ACTION POINTS</label>
|
|
<br />
|
|
<div class="small-box"><span name="attr_speed_half"></span></div>
|
|
<span>+3+</span>
|
|
<input type="number" name='attr_action_points_other' value="0" />
|
|
<span>=</span>
|
|
<div class="small-box"><span name="attr_action_points"></span></div>
|
|
</div>
|
|
<div>
|
|
<label>AWARENESS</label>
|
|
<label>SPEED</label>
|
|
<label>OTHER</label>
|
|
<label>BATTLE REFLEX</label>
|
|
<br />
|
|
<div class="small-box"><span name="attr_awareness"></span></div>
|
|
<span>+</span>
|
|
<div class="small-box"><span name="attr_speed"></span></div>
|
|
<span>+</span>
|
|
<input type="number" name='attr_battle_reflex_other' value="0" />
|
|
<span>=</span>
|
|
<input type="number" name='attr_battle_reflex' value="0" />
|
|
<button type='roll' value='&{template:default} {{name=Battle Reflex}} {{roll=[[1d10+@{battle_reflex}]]}}' name='roll_BattleReflex'>k</button>
|
|
<button type='roll' value='&{template:default} {{name=Battle Reflex (Current)}} {{roll=[[1d10+@{speed_current}+@{awareness_current}+@{battle_reflex_other}]]}}' name='roll_BattleReflex_current'>k</button>
|
|
</div>
|
|
</div>
|
|
<div class="hp">
|
|
<div>
|
|
<label>CURRENT HP</label>
|
|
<label>MAX HP</label>
|
|
<label>HP/LVL</label>
|
|
<label>UNSPENT TRAIT POINTS</label>
|
|
<br />
|
|
<input type="number" name='attr_hp' value="0" />
|
|
<input type="number" name='attr_hp_max' value="0" />
|
|
<input type="number" name='attr_hp_lvl' value="0" />
|
|
<input type="number" name='attr_trait_points' value="0" />
|
|
</div>
|
|
</div>
|
|
<div class="levelUp">
|
|
<h2>LEVEL UP TRACKER (TP GAINED)</h2>
|
|
<fieldset class="repeating_level">
|
|
<h3>Level</h3><input type="number" name="attr_lvl" title="@{lvl}"/>
|
|
<input type="checkbox" name="attr_lvl_1" title="@{lvl_1}" /><span></span>
|
|
<input type="checkbox" name="attr_lvl_2" title="@{lvl_2}" /><span></span>
|
|
<input type="checkbox" name="attr_lvl_3" title="@{lvl_3}" /><span></span>
|
|
<input type="checkbox" name="attr_lvl_4" title="@{lvl_4}" /><span></span>
|
|
<span>(+1 Attribute)</span>
|
|
<hr />
|
|
</fieldset>
|
|
</div>
|
|
<div class="aliases">
|
|
<label>ALIASES</label>
|
|
<textarea name="attr_aliases"></textarea>
|
|
</div>
|
|
<div class="psychic">
|
|
<label>PSYCHIC POWERS</label>
|
|
<label>OVERCHARGE</label>
|
|
<label>USES</label>
|
|
<fieldset class="repeating_powers">
|
|
<input type="text" name="attr_power" />
|
|
<input type="text" name="attr_overcharge" />
|
|
<input type="text" name="attr_uses" />
|
|
</fieldset>
|
|
</div>
|
|
<div class="backstory">
|
|
<label>CHARACTER BACKSTORY</label>
|
|
<textarea name="attr_character_backstory"></textarea>
|
|
</div>
|
|
</div>
|
|
<!--RIGHT HAND SIDE - CHARACTER INFO & TOUGHNESS-->
|
|
<div class="2column">
|
|
<div class="character">
|
|
<label>CHARACTER NAME</label><input type="text" name='attr_character_name' />
|
|
<label>LEVEL</label><input type="number" name='attr_level' />
|
|
<br />
|
|
<label>BIOCLASS</label>
|
|
<input type="text" name='attr_bioclass' />
|
|
<br />
|
|
<label>MIND TYPE</label>
|
|
<label>BODY TYPE</label>
|
|
<input type="text" name='attr_mind_type' />
|
|
<input type="text" name='attr_body_type' />
|
|
</div>
|
|
<div class="motivation">
|
|
<label>MOTIVATION</label>
|
|
<label>CYNICISM</label>
|
|
<label>RESOLVE</label>
|
|
<br />
|
|
<input type="text" name='attr_motivation' />
|
|
<input type="text" name='attr_cynicism' />
|
|
<input type="text" name='attr_resolve' />
|
|
</div>
|
|
<div class="toughness">
|
|
<div>
|
|
<label>TOUGHNESS</label>
|
|
<label>OTHER</label>
|
|
<label>TOUGHNESS DEFENSE</label>
|
|
<br />
|
|
<div class="small-box"><span name="attr_toughness"></span></div>
|
|
<span>+ 5 +</span>
|
|
<input type="number" name='attr_toughness_other' />
|
|
<span>=</span>
|
|
<div class="small-box"><span name="attr_toughness_defense"></span></div>
|
|
</div>
|
|
<div>
|
|
<label>TOUGHNESS</label>
|
|
<label>OTHER</label>
|
|
<label>ARMOR</label>
|
|
<label>ARMOR DEFENSE</label>
|
|
<div class="small-box"><span name="attr_toughness"></span></div>
|
|
<span>+</span>
|
|
<input type="number" name='attr_armor_defense_other' value="0" />
|
|
<span>+ 5 +</span>
|
|
<input type="number" name='attr_armor' value="0" />
|
|
<span>=</span>
|
|
<div class="small-box"><span name="attr_armor_defense"></span></div>
|
|
</div>
|
|
</div>
|
|
<div class="nerve">
|
|
<label>NERVE</label>
|
|
<label>OTHER</label>
|
|
<label>NERVE DEFENSE</label>
|
|
<br />
|
|
<input type="number" name='attr_nerve' />
|
|
<span>+ 5 +</span>
|
|
<input type="number" name='attr_nerve_other' />
|
|
<span>=</span>
|
|
<div class="small-box"><span name="attr_nerve_defense"></span></div>
|
|
</div>
|
|
<div class="weapons">
|
|
<label>WEAPON</label>
|
|
<fieldset class="repeating_weapons">
|
|
<label>NAME</label>
|
|
<label>ATT</label>
|
|
<label>DMG</label>
|
|
<label>ATTACK SPD</label>
|
|
<label>RANGE</label>
|
|
<br />
|
|
<input type="text" name="attr_weapon" />
|
|
<input type="number" name="attr_att" />
|
|
<input type="number" name="attr_dmg" />
|
|
<input type="text" name="attr_attack_spd" />
|
|
<input type="number" name="attr_range" />
|
|
<button type="roll" name="roll_weapon" value="&{template:default} {{name=@{weapon}}} {{roll=[[1d10+@{att}]]}} {{roll=[[1d10]]}} {{attack bonus=+@{att}}} {{damage bonus=+@{dmg}}}">k</button>
|
|
<br/>
|
|
<label>OTHER NOTES</label>
|
|
<input type="text" name="attr_other_notes" />
|
|
</fieldset>
|
|
</div>
|
|
<div class="weapon-classes">
|
|
<label>STRIKING</label>
|
|
<label>PISTOLS</label>
|
|
<label>RIFLES</label>
|
|
<label>SHOTGUNS</label>
|
|
<br />
|
|
<label>WEAPON CLASSES</label>
|
|
<input type="checkbox" name="attr_striking" title="@{striking}" /><span></span>
|
|
<input type="checkbox" name="attr_pistols" title="@{pistols}" /><span></span>
|
|
<input type="checkbox" name="attr_rifles" title="@{rifle}" /><span></span>
|
|
<input type="checkbox" name="attr_shotguns" title="@{shotguns}" /><span></span>
|
|
</div>
|
|
<div class="contact">
|
|
<label>CONTACT/FRIENDS</label>
|
|
<textarea name="attr_contact_friends"></textarea>
|
|
</div>
|
|
<div class="possession">
|
|
<label>POSESSIONS</label>
|
|
<textarea name="attr_posessions"></textarea>
|
|
<br />
|
|
<label>DAYS OF FOOD</label>
|
|
<input type="text" name='attr_food' />
|
|
<label>DAYS WITHOUT EATING</label>
|
|
<input type="text" name='attr_without_eating' />
|
|
<br/>
|
|
<span>EAT AT LEAST 1 MEAL A DAY OR SUFFER -2 TO ALL ROLLS, INCLUDING DMG. GOING MORE THAN 6 + TOUGHNESS DAYS WITHOUT FOOD MEANS YOU DIE. THE DAY COUNT DOES NOT RESET UNTIL YOU EAT FOOD 2 DAYS IN A ROW.</span>
|
|
<label>LURANS</label>
|
|
<input type="text" name='attr_lurans' />
|
|
</div>
|
|
<div class="notes">
|
|
<label>NOTES</label>
|
|
<textarea name="attr_notes"></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- HIDDEN ATTRIBUTES -->
|
|
<input type="hidden" name="attr_toughness_defense" value="5" />
|
|
<input type="hidden" name="attr_nerve_defense" value="5" />
|
|
<input type="hidden" name="attr_armor_defense" value="5" />
|
|
<input type="hidden" name="attr_action_points" value="3" />
|
|
<input type="hidden" name="attr_speed_half" value="0" />
|
|
<input type="hidden" name="attr_battle_reflex" value="0" />
|
|
|
|
<!--Sheet Worker-->
|
|
<script type="text/worker">
|
|
|
|
//Action Points
|
|
on("change:speed change:action_points_other", (eventinfo) => {
|
|
const value1 = parseInt(eventinfo.newValue) || 0;
|
|
let attr2 = (eventinfo.sourceAttribute === "speed") ? "action_points_other" : "speed";
|
|
|
|
//Get the second attribute for the calculation
|
|
getAttrs([`${attr2}`], (v) => {
|
|
let value2 = parseInt(v.attr2) || 0;
|
|
let update = {};
|
|
|
|
//Update Action Points
|
|
update["action_points"] = value1 + value2 + 3
|
|
|
|
//Update half speed on speed change
|
|
if (eventinfo.sourceAttribute === "speed") {
|
|
update["speed_half"] = (eventinfo.sourceAttribute === "speed") ? Math.floor(attr/2) : Math.floor(attr2/2)
|
|
};
|
|
|
|
setAttrs(update);
|
|
});
|
|
});
|
|
|
|
|
|
//Calculate Battle Reflex
|
|
on("change:speed change:awareness change:battle_reflex_other", (eventinfo) => {
|
|
getAttrs(["speed", "awareness", "battle_reflex_other"], (v) => {
|
|
const speed = parseInt(v.speed) || 0;
|
|
const awareness = parseInt(v.awareness) || 0;
|
|
const other = parseInt(v.battle_reflex_other) || 0;
|
|
setAttrs({
|
|
battle_reflex: speed + awareness + other
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
//This will set the toughness & nerve defense
|
|
[`toughness`, `nerve`].forEach(attribute => {
|
|
on(`change:${attribute} change:${attribute}_other`, (eventinfo) => {
|
|
const value1 = parseInt(eventinfo.newValue) || 0;
|
|
let attr2 = (eventinfo.sourceAttribute === `${attribute}`) ? `${attribute}_other` : `${attribute}`;
|
|
|
|
//Get the second attribute for the calculation
|
|
getAttrs([`${attr2}`], (v) => {
|
|
let value2 = parseInt(v[`${attr2}`]) || 0;
|
|
setAttrs({
|
|
[`${attribute}_defense`]: value1 + value2 + 5
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
//Armor Defense
|
|
on("change:toughness change:armor_defense_other change:armor", (eventinfo) => {
|
|
//Get the second attribute for the calculation
|
|
getAttrs(["toughness", "armor_defense_other", "armor"], (v) => {
|
|
const toughness = parseInt(v.toughness) || 0;
|
|
const defense = parseInt(v.armor_defense_other) || 0;
|
|
const armor = parseInt(v.armor) || 0;
|
|
setAttrs({
|
|
armor_defense: toughness + defense + armor + 5
|
|
});
|
|
});
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|