Files
roll20-character-sheets/Synthicide/synthicide.html
T
2024-06-03 13:15:14 -04:00

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>