mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-09-01 04:32:28 +00:00
Fixed bug/typos in skill rolls to use correct stats and critical range on tag. Added option for additional tag skills on the Skills tab under SPECIAL. Fixed delete button on the perks list. Added modifier for HP on the Derived Stats tab under SPECIAL. Added modifier for SPECIAL points on the Attributes tab under SPECIAL. Added modifier for skill points on the Skills tab under SPECIAL. Disabled Confirm/copy button after first use.
3108 lines
152 KiB
HTML
3108 lines
152 KiB
HTML
<input type="hidden" class="setting-npc" name="attr_setting_npc" value="0" />
|
|
<input type="hidden" class="style-vault-girl" name="attr_style_vault_girl" value="0" />
|
|
<input type="hidden" class="style-outline" name="attr_style_outline" value="0" />
|
|
<input type="hidden" class="style-pip-boy" name="attr_style_pip_boy" value="0" />
|
|
|
|
<!-- start interface -->
|
|
<div class="interface">
|
|
|
|
<div class="tabs">
|
|
<input type="hidden" class="tabstoggle" name="attr_tab" value="creation" />
|
|
<div class="tab-creation"><button type="action"
|
|
name="act_creation">S.P.E.C.I.A.L.</button></div>
|
|
<div class="tab-character"><button type="action"
|
|
name="act_character">Character</button></div>
|
|
<div class="tab-perks"><button type="action"
|
|
name="act_perks">Perks</button></div>
|
|
<div class="tab-items"><button type="action"
|
|
name="act_items">Items</button></div>
|
|
<div class="tab-npc"><button type="action"
|
|
name="act_npc">NPC</button></div>
|
|
<div class="tab-settings"><button type="action"
|
|
name="act_settings">Settings</button></div>
|
|
</div>
|
|
|
|
<input type="hidden" class="tabstoggle" name="attr_tab" value="creation" />
|
|
|
|
<!-- start creation page -->
|
|
<div class="grid col1 creation">
|
|
<div class="subtabs">
|
|
<input type="hidden" class="subtabstoggle" name="attr_subtab" value="origin" />
|
|
<div class="tab-origin"><button type="action" name="act_origin">Origin</button></div>
|
|
<div class="tab-attributes"><button type="action" name="act_attributes">Attributes</button></div>
|
|
<div class="tab-skills"><button type="action" name="act_skills">Skills</button></div>
|
|
<div class="tab-perk"><button type="action" name="act_perk">Perk</button></div>
|
|
<div class="tab-derived"><button type="action" name="act_derived">Derived</button></div>
|
|
<div class="tab-equipment"><button type="action" name="act_equipment">Equipment</button></div>
|
|
<div class="tab-finalize"><button type="action" name="act_finalize">Confirm</button></div>
|
|
</div>
|
|
|
|
<input type="hidden" class="subtabstoggle" name="attr_subtab" value="origin" />
|
|
|
|
<h1>S.P.E.C.I.A.L. Profile</h1>
|
|
|
|
<p class="vb-tip">Please answer a few questions to create your
|
|
S.P.E.C.I.A.L. profile.</p>
|
|
|
|
<div class="origin grid col1">
|
|
<h2>1. Describe your Origin
|
|
<button class="next" type="action" name="act_next">Next</button></h2>
|
|
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Origin</label>
|
|
<select id="origin" name="attr_origin">
|
|
<option value="">Choose</option>
|
|
<option value="brotherhood">Brotherhood of Steel</option>
|
|
<option value="ghoul">Ghoul</option>
|
|
<option value="mutant">Super Mutant</option>
|
|
<option value="robot">Mister Handy</option>
|
|
<option value="survivor">Survivor</option>
|
|
<option value="vault">Vault Dweller</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<input type="hidden" name="attr_origin_choice"
|
|
class="origin-choice" value="" />
|
|
|
|
<!-- start origin panels -->
|
|
<div class="origin-brotherhood grid col1">
|
|
<h3>The Chain that Binds</h3>
|
|
<p>You gain one additional Tag skill, which must be one of Energy
|
|
Weapons, Science, or Repair.</p>
|
|
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Tag skill</label>
|
|
<select id="brotherhood-tag" name="attr_brotherhood_tag">
|
|
<option value="">Choose</option>
|
|
<option value="energy_weapons">Energy Weapons</option>
|
|
<option value="science">Science</option>
|
|
<option value="repair">Repair</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="origin-ghoul grid col1">
|
|
<h3>Necrotic Post-Human</h3>
|
|
</div>
|
|
<div class="origin-mutant grid col1">
|
|
<h3>Forced Evolution</h3>
|
|
</div>
|
|
<div class="origin-robot grid col1">
|
|
<h3>Mister Handy Robot</h3>
|
|
</div>
|
|
<div class="origin-survivor grid col1">
|
|
<p>You may choose two of the following traits, or one trait
|
|
and one additional perk. Each trait has a benefit and
|
|
may have an accompanying penalty.</p>
|
|
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Choice</label>
|
|
<select id="survivor-choice" name="attr_survivor_choice">
|
|
<option value="">Choose</option>
|
|
<option value="trait">Two traits</option>
|
|
<option value="perk">One trait / one perk</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid col2 gap">
|
|
<input type="hidden" name="attr_survivor_choice"
|
|
class="survivor-choice" value="" />
|
|
<div class="grid col2 survivor-trait1">
|
|
<label>Trait</label>
|
|
<select id="survivor-trait1" name="attr_survivor_trait1">
|
|
<option value="">Choose</option>
|
|
<option value="educated">Educated</option>
|
|
<option value="fast_shot">Fast Shot</option>
|
|
<option value="gifted">Gifted</option>
|
|
<option value="heavy_handed">Heavy Handed</option>
|
|
<option value="small_frame">Small Frame</option>
|
|
</select>
|
|
</div>
|
|
<div class="grid col2 survivor-trait2">
|
|
<label>Trait</label>
|
|
<select id="survivor-trait2" name="attr_survivor_trait2">
|
|
<option value="">Choose</option>
|
|
<option value="educated">Educated</option>
|
|
<option value="fast_shot">Fast Shot</option>
|
|
<option value="gifted">Gifted</option>
|
|
<option value="heavy_handed">Heavy Handed</option>
|
|
<option value="small_frame">Small Frame</option>
|
|
</select>
|
|
</div>
|
|
<div class="grid col2 survivor-perk">
|
|
<label>Perk</label>
|
|
<select id="survivor-perk" name="attr_survivor_perk">
|
|
<option value="">Choose</option>
|
|
<option value="action_boy_girl">Action Boy/Girl</option>
|
|
<option value="adamantine_skeleton">Adamantine Skeleton</option>
|
|
<option value="adrenalin_rush">Adrenalin Rush</option>
|
|
<option value="animal_friend">Animal Friend</option>
|
|
<option value="aquaboy_aquagirl">Aquaboy/Aquagirl</option>
|
|
<option value="armorer">Armorer</option>
|
|
<option value="awareness">Awareness</option>
|
|
<option value="barbarian">Barbarian</option>
|
|
<option value="basher">Basher</option>
|
|
<option value="better_criticals">Better Criticals</option>
|
|
<option value="big_leagues">Big Leagues</option>
|
|
<option value="black_widow_lady_killer">Black Widow/Lady Killer</option>
|
|
<option value="blacksmith">Blacksmith</option>
|
|
<option value="blitz">Blitz</option>
|
|
<option value="bloody_mess">Bloody Mess</option>
|
|
<option value="can_do">Can Do!</option>
|
|
<option value="cap_collector">Cap Collector</option>
|
|
<option value="cautious_nature">Cautious Nature</option>
|
|
<option value="center_mass">Center Mass</option>
|
|
<option value="chem_resistant">Chem Resistant</option>
|
|
<option value="chemist">Chemist</option>
|
|
<option value="commando">Commando</option>
|
|
<option value="comprehension">Comprehension</option>
|
|
<option value="concentrated_fire">Concentrated Fire</option>
|
|
<option value="daring_nature">Daring Nature</option>
|
|
<option value="demolition_expert">Demolition Expert</option>
|
|
<option value="dodger">Dodger</option>
|
|
<option value="dogmeat">Dogmeat</option>
|
|
<option value="entomologist">Entomologist</option>
|
|
<option value="fast_metabolism">Fast Metabolism</option>
|
|
<option value="faster_healing">Faster Healing</option>
|
|
<option value="finesse">Finesse</option>
|
|
<option value="fortune_finder">Fortune Finder</option>
|
|
<option value="ghost">Ghost</option>
|
|
<option value="grim_reapers_sprint">Grim Reaper's Sprint</option>
|
|
<option value="gun_fu">Gun Fu</option>
|
|
<option value="gun_nut">Gun Nut</option>
|
|
<option value="gunslinger">Gunslinger</option>
|
|
<option value="hacker">Hacker</option>
|
|
<option value="healer">Healer</option>
|
|
<option value="heave_ho">Heave Ho!</option>
|
|
<option value="hunter">Hunter</option>
|
|
<option value="infiltrator">Infiltrator</option>
|
|
<option value="inspirational">Inspirational</option>
|
|
<option value="intense_training">Intense Training</option>
|
|
<option value="iron_fist">Iron Fist</option>
|
|
<option value="junktown_jerky_vendor">Junktown Jerky Vendor</option>
|
|
<option value="jury_rigging">Jury Rigging</option>
|
|
<option value="laser_commander">Laser Commander</option>
|
|
<option value="lead_belly">Lead Belly</option>
|
|
<option value="life_giver">Life Giver</option>
|
|
<option value="light_step">Light Step</option>
|
|
<option value="master_thief">Master Thief</option>
|
|
<option value="medic">Medic</option>
|
|
<option value="meltdown">Meltdown</option>
|
|
<option value="mister_sandman">Mister Sandman</option>
|
|
<option value="moving_target">Moving Target</option>
|
|
<option value="mysterious_stranger">Mysterious Stranger</option>
|
|
<option value="nerd_rage">Nerd Rage</option>
|
|
<option value="night_person">Night Person</option>
|
|
<option value="ninja">Ninja</option>
|
|
<option value="nuclear_physicist">Nuclear Physicist</option>
|
|
<option value="pain_train">Pain Train</option>
|
|
<option value="paralyzing_palm">Paralyzing Palm</option>
|
|
<option value="party_boy_party_girl">Party Boy/Party Girl</option>
|
|
<option value="pathfinder">Pathfinder</option>
|
|
<option value="pharma_farma">Pharma Farma</option>
|
|
<option value="pickpocket">Pickpocket</option>
|
|
<option value="piercing_strike">Piercing Strike</option>
|
|
<option value="pyromaniac">Pyromaniac</option>
|
|
<option value="quick_draw">Quick Draw</option>
|
|
<option value="quick_hands">Quick Hands</option>
|
|
<option value="rad_resistance">Rad Resistance</option>
|
|
<option value="refractor">Refractor</option>
|
|
<option value="ricochet">Ricochet</option>
|
|
<option value="rifleman">Rifleman</option>
|
|
<option value="robotics_expert">Robotics Expert</option>
|
|
<option value="science">Science!</option>
|
|
<option value="scoundrel">Scoundrel</option>
|
|
<option value="scrapper">Scrapper</option>
|
|
<option value="scrounger">Scrounger</option>
|
|
<option value="shotgun_surgeon">Shotgun Surgeon</option>
|
|
<option value="skilled">Skilled</option>
|
|
<option value="size_matters">Size Matters</option>
|
|
<option value="slayer">Slayer</option>
|
|
<option value="smooth_talker">Smooth Talker</option>
|
|
<option value="snakeater">Snakeater</option>
|
|
<option value="sniper">Sniper</option>
|
|
<option value="solar_powered">Solar Powered</option>
|
|
<option value="steady_aim">Steady Aim</option>
|
|
<option value="strong_back">Strong Back</option>
|
|
<option value="tag">Tag!</option>
|
|
<option value="terrifying_presence">Terrifying Presence</option>
|
|
<option value="toughness">Toughness</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" name="attr_survivor_choice"
|
|
class="survivor-choice" value="" />
|
|
<input class="survivor-trait1" type="hidden"
|
|
name="attr_survivor_trait1" value="" />
|
|
<input class="survivor-trait2" type="hidden"
|
|
name="attr_survivor_trait2" value="" />
|
|
<div class="survivor-educated grid col1">
|
|
<h3>Educated</h3>
|
|
<p>You have one additional tag skill.</p>
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Tag skill</label>
|
|
<select id="survivor-tag" name="attr_survivor_tag">
|
|
<option value="">Choose</option>
|
|
<option value="athletics">Athletics</option>
|
|
<option value="barter">Barter</option>
|
|
<option value="big_guns">Big Guns</option>
|
|
<option value="energy_weapons">Energy Weapons</option>
|
|
<option value="explosives">Explosives</option>
|
|
<option value="lockpick">Lockpick</option>
|
|
<option value="medicine">Medicine</option>
|
|
<option value="melee_weapons">Melee Weapons</option>
|
|
<option value="pilot">Pilot</option>
|
|
<option value="repair">Repair</option>
|
|
<option value="science">Science</option>
|
|
<option value="small_guns">Small Guns</option>
|
|
<option value="sneak">Sneak</option>
|
|
<option value="speech">Speech</option>
|
|
<option value="survival">Survival</option>
|
|
<option value="throwing">Throwing</option>
|
|
<option value="unarmed">Unarmed</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="survivor-fastshot grid col1">
|
|
<h3>Fast shot</h3>
|
|
</div>
|
|
<div class="survivor-gifted grid col1">
|
|
<h3>Gifted</h3>
|
|
<p>Choose two S.P.E.C.I.A.L.
|
|
attributes and increase them by +1 each.</p>
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Attribute</label>
|
|
<select id="survivor-attr1" name="attr_survivor_attr1">
|
|
<option value="">Choose</option>
|
|
<option value="strength">Strength</option>
|
|
<option value="perception">Perception</option>
|
|
<option value="endurance">Endurance</option>
|
|
<option value="charisma">Charisma</option>
|
|
<option value="intelligence">Intelligence</option>
|
|
<option value="agility">Agility</option>
|
|
<option value="luck">Luck</option>
|
|
</select>
|
|
</div>
|
|
<div class="grid col2">
|
|
<label>Attribute</label>
|
|
<select id="survivor-attr2" name="attr_survivor_attr2">
|
|
<option value="">Choose</option>
|
|
<option value="strength">Strength</option>
|
|
<option value="perception">Perception</option>
|
|
<option value="endurance">Endurance</option>
|
|
<option value="charisma">Charisma</option>
|
|
<option value="intelligence">Intelligence</option>
|
|
<option value="agility">Agility</option>
|
|
<option value="luck">Luck</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="survivor-heavy grid col1">
|
|
<h3>Heavy Handed</h3>
|
|
</div>
|
|
<div class="survivor-small grid col1">
|
|
<h3>Small Frame</h3>
|
|
</div>
|
|
</div>
|
|
<div class="origin-vault grid col1">
|
|
<h3>Vault Kid</h3>
|
|
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Tag skill</label>
|
|
<select id="vault-tag" name="attr_vault_tag">
|
|
<option value="">Choose</option>
|
|
<option value="athletics">Athletics</option>
|
|
<option value="barter">Barter</option>
|
|
<option value="big_guns">Big Guns</option>
|
|
<option value="energy_weapons">Energy Weapons</option>
|
|
<option value="explosives">Explosives</option>
|
|
<option value="lockpick">Lockpick</option>
|
|
<option value="medicine">Medicine</option>
|
|
<option value="melee_weapons">Melee Weapons</option>
|
|
<option value="pilot">Pilot</option>
|
|
<option value="repair">Repair</option>
|
|
<option value="science">Science</option>
|
|
<option value="small_guns">Small Guns</option>
|
|
<option value="sneak">Sneak</option>
|
|
<option value="speech">Speech</option>
|
|
<option value="survival">Survival</option>
|
|
<option value="throwing">Throwing</option>
|
|
<option value="unarmed">Unarmed</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- end origin panels -->
|
|
|
|
</div>
|
|
|
|
<div class="attributes grid col1">
|
|
<h2>2. Describe your S.P.E.C.I.A.L. attributes
|
|
<button class="prev" type="action" name="act_prev">Previous</button>
|
|
<button class="next" type="action" name="act_next">Next</button></h2>
|
|
|
|
<div class="grid col1">
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Attribute Points</label>
|
|
<div class="grid col5-derived">
|
|
<input type="hidden" name="attr_attribute_points"
|
|
value="5" />
|
|
<span class="input" name="attr_attribute_points"></span>
|
|
<span>+</span>
|
|
<input type="number" name="attr_attribute_points_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_attribute_points_total" value="5" />
|
|
<span name="attr_attribute_points_total" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="grid col2 strength">
|
|
<label>Strength</label>
|
|
<span class="input">
|
|
<input type="hidden" class="attribute-value"
|
|
name="attr_strength" value="5" />
|
|
<button type="action" name="act_strength4"
|
|
class="value-4">4</button>
|
|
<button type="action" name="act_strength5"
|
|
class="value-5">5</button>
|
|
<button type="action" name="act_strength6"
|
|
class="value-6">6</button>
|
|
<button type="action" name="act_strength7"
|
|
class="value-7">7</button>
|
|
<button type="action" name="act_strength8"
|
|
class="value-8">8</button>
|
|
<button type="action" name="act_strength9"
|
|
class="value-9">9</button>
|
|
<button type="action" name="act_strength10"
|
|
class="value-10">10</button>
|
|
<input type="hidden" name="attr_strength_mod"
|
|
value="0" />
|
|
(+<span name="attr_strength_mod"></span>)
|
|
<input type="hidden" name="attr_strength_total"
|
|
value="5" />
|
|
<span class="total" name="attr_strength_total"></span>
|
|
</span>
|
|
</div>
|
|
<div class="grid col2 perception">
|
|
<label>Perception</label>
|
|
<span class="input">
|
|
<input type="hidden" class="attribute-value"
|
|
name="attr_perception" value="5" />
|
|
<button type="action" name="act_perception4"
|
|
class="value-4">4</button>
|
|
<button type="action" name="act_perception5"
|
|
class="value-5">5</button>
|
|
<button type="action" name="act_perception6"
|
|
class="value-6">6</button>
|
|
<button type="action" name="act_perception7"
|
|
class="value-7">7</button>
|
|
<button type="action" name="act_perception8"
|
|
class="value-8">8</button>
|
|
<button type="action" name="act_perception9"
|
|
class="value-9">9</button>
|
|
<button type="action" name="act_perception10"
|
|
class="value-10">10</button>
|
|
<input type="hidden" name="attr_perception_mod"
|
|
value="0" />
|
|
(+<span name="attr_perception_mod"></span>)
|
|
<input type="hidden" name="attr_perception_total"
|
|
value="5" />
|
|
<span class="total" name="attr_perception_total"></span>
|
|
</span>
|
|
</div>
|
|
<div class="grid col2 endurance">
|
|
<label>Endurance</label>
|
|
<span class="input">
|
|
<input type="hidden" class="attribute-value"
|
|
name="attr_endurance" value="5" />
|
|
<button type="action" name="act_endurance4"
|
|
class="value-4">4</button>
|
|
<button type="action" name="act_endurance5"
|
|
class="value-5">5</button>
|
|
<button type="action" name="act_endurance6"
|
|
class="value-6">6</button>
|
|
<button type="action" name="act_endurance7"
|
|
class="value-7">7</button>
|
|
<button type="action" name="act_endurance8"
|
|
class="value-8">8</button>
|
|
<button type="action" name="act_endurance9"
|
|
class="value-9">9</button>
|
|
<button type="action" name="act_endurance10"
|
|
class="value-10">10</button>
|
|
<input type="hidden" name="attr_endurance_mod"
|
|
value="0" />
|
|
(+<span name="attr_endurance_mod"></span>)
|
|
<input type="hidden" name="attr_endurance_total"
|
|
value="5" />
|
|
<span class="total" name="attr_endurance_total"></span>
|
|
</span>
|
|
</div>
|
|
<div class="grid col2 charisma">
|
|
<label>Charisma</label>
|
|
<span class="input">
|
|
<input type="hidden" name="attr_origin_choice"
|
|
class="origin-choice" value="" />
|
|
<input type="hidden" class="attribute-value"
|
|
name="attr_charisma" value="5" />
|
|
<button type="action" name="act_charisma4"
|
|
class="value-4">4</button>
|
|
<button type="action" name="act_charisma5"
|
|
class="value-5">5</button>
|
|
<button type="action" name="act_charisma6"
|
|
class="value-6">6</button>
|
|
<button type="action" name="act_charisma7"
|
|
class="value-7">7</button>
|
|
<button type="action" name="act_charisma8"
|
|
class="value-8">8</button>
|
|
<button type="action" name="act_charisma9"
|
|
class="value-9">9</button>
|
|
<button type="action" name="act_charisma10"
|
|
class="value-10">10</button>
|
|
<input type="hidden" name="attr_charisma_mod"
|
|
value="0" />
|
|
(+<span name="attr_charisma_mod"></span>)
|
|
<input type="hidden" name="attr_charisma_total"
|
|
value="5" />
|
|
<span class="total" name="attr_charisma_total"></span>
|
|
</span>
|
|
</div>
|
|
<div class="grid col2 intelligence">
|
|
<label>Intelligence</label>
|
|
<span class="input">
|
|
<input type="hidden" name="attr_origin_choice"
|
|
class="origin-choice" value="" />
|
|
<input type="hidden" class="attribute-value"
|
|
name="attr_intelligence" value="5" />
|
|
<button type="action" name="act_intelligence4"
|
|
class="value-4">4</button>
|
|
<button type="action" name="act_intelligence5"
|
|
class="value-5">5</button>
|
|
<button type="action" name="act_intelligence6"
|
|
class="value-6">6</button>
|
|
<button type="action" name="act_intelligence7"
|
|
class="value-7">7</button>
|
|
<button type="action" name="act_intelligence8"
|
|
class="value-8">8</button>
|
|
<button type="action" name="act_intelligence9"
|
|
class="value-9">9</button>
|
|
<button type="action" name="act_intelligence10"
|
|
class="value-10">10</button>
|
|
<input type="hidden" name="attr_intelligence_mod"
|
|
value="0" />
|
|
(+<span name="attr_intelligence_mod"></span>)
|
|
<input type="hidden" name="attr_intelligence_total"
|
|
value="5" />
|
|
<span class="total" name="attr_intelligence_total"></span>
|
|
</span>
|
|
</div>
|
|
<div class="grid col2 agility">
|
|
<label>Agility</label>
|
|
<span class="input">
|
|
<input type="hidden" class="attribute-value"
|
|
name="attr_agility" value="5" />
|
|
<button type="action" name="act_agility4"
|
|
class="value-4">4</button>
|
|
<button type="action" name="act_agility5"
|
|
class="value-5">5</button>
|
|
<button type="action" name="act_agility6"
|
|
class="value-6">6</button>
|
|
<button type="action" name="act_agility7"
|
|
class="value-7">7</button>
|
|
<button type="action" name="act_agility8"
|
|
class="value-8">8</button>
|
|
<button type="action" name="act_agility9"
|
|
class="value-9">9</button>
|
|
<button type="action" name="act_agility10"
|
|
class="value-10">10</button>
|
|
<input type="hidden" name="attr_agility_mod"
|
|
value="0" />
|
|
(+<span name="attr_agility_mod"></span>)
|
|
<input type="hidden" name="attr_agility_total"
|
|
value="5" />
|
|
<span class="total" name="attr_agility_total"></span>
|
|
</span>
|
|
</div>
|
|
<div class="grid col2 luck">
|
|
<label>Luck</label>
|
|
<span class="input">
|
|
<input type="hidden" class="attribute-value"
|
|
name="attr_luck" value="5" />
|
|
<button type="action" name="act_luck4"
|
|
class="value-4">4</button>
|
|
<button type="action" name="act_luck5"
|
|
class="value-5">5</button>
|
|
<button type="action" name="act_luck6"
|
|
class="value-6">6</button>
|
|
<button type="action" name="act_luck7"
|
|
class="value-7">7</button>
|
|
<button type="action" name="act_luck8"
|
|
class="value-8">8</button>
|
|
<button type="action" name="act_luck9"
|
|
class="value-9">9</button>
|
|
<button type="action" name="act_luck10"
|
|
class="value-10">10</button>
|
|
<input type="hidden" name="attr_luck_mod"
|
|
value="0" />
|
|
(+<span name="attr_luck_mod"></span>)
|
|
<input type="hidden" name="attr_luck_total"
|
|
value="5" />
|
|
<input type="hidden" name="attr_luck_total_max"
|
|
value="5" />
|
|
<span class="total" name="attr_luck_total_max"></span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="skills grid col1">
|
|
<h2>3. Indicate which skills you possess
|
|
<button class="prev" type="action" name="act_prev">Previous</button>
|
|
<button class="next" type="action" name="act_next">Next</button></h2>
|
|
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Tag skill</label>
|
|
<select id="skills-tag1" name="attr_skills_tag1">
|
|
<option value="">Choose</option>
|
|
<option value="athletics">Athletics</option>
|
|
<option value="barter">Barter</option>
|
|
<option value="big_guns">Big Guns</option>
|
|
<option value="energy_weapons">Energy Weapons</option>
|
|
<option value="explosives">Explosives</option>
|
|
<option value="lockpick">Lockpick</option>
|
|
<option value="medicine">Medicine</option>
|
|
<option value="melee_weapons">Melee Weapons</option>
|
|
<option value="pilot">Pilot</option>
|
|
<option value="repair">Repair</option>
|
|
<option value="science">Science</option>
|
|
<option value="small_guns">Small Guns</option>
|
|
<option value="sneak">Sneak</option>
|
|
<option value="speech">Speech</option>
|
|
<option value="survival">Survival</option>
|
|
<option value="throwing">Throwing</option>
|
|
<option value="unarmed">Unarmed</option>
|
|
</select>
|
|
</div>
|
|
<div class="grid col2">
|
|
<label>Tag skill</label>
|
|
<select id="skills-tag2" name="attr_skills_tag2">
|
|
<option value="">Choose</option>
|
|
<option value="athletics">Athletics</option>
|
|
<option value="barter">Barter</option>
|
|
<option value="big_guns">Big Guns</option>
|
|
<option value="energy_weapons">Energy Weapons</option>
|
|
<option value="explosives">Explosives</option>
|
|
<option value="lockpick">Lockpick</option>
|
|
<option value="medicine">Medicine</option>
|
|
<option value="melee_weapons">Melee Weapons</option>
|
|
<option value="pilot">Pilot</option>
|
|
<option value="repair">Repair</option>
|
|
<option value="science">Science</option>
|
|
<option value="small_guns">Small Guns</option>
|
|
<option value="sneak">Sneak</option>
|
|
<option value="speech">Speech</option>
|
|
<option value="survival">Survival</option>
|
|
<option value="throwing">Throwing</option>
|
|
<option value="unarmed">Unarmed</option>
|
|
</select>
|
|
</div>
|
|
<div class="grid col2">
|
|
<label>Tag skill</label>
|
|
<select id="skills-tag3" name="attr_skills_tag3">
|
|
<option value="">Choose</option>
|
|
<option value="athletics">Athletics</option>
|
|
<option value="barter">Barter</option>
|
|
<option value="big_guns">Big Guns</option>
|
|
<option value="energy_weapons">Energy Weapons</option>
|
|
<option value="explosives">Explosives</option>
|
|
<option value="lockpick">Lockpick</option>
|
|
<option value="medicine">Medicine</option>
|
|
<option value="melee_weapons">Melee Weapons</option>
|
|
<option value="pilot">Pilot</option>
|
|
<option value="repair">Repair</option>
|
|
<option value="science">Science</option>
|
|
<option value="small_guns">Small Guns</option>
|
|
<option value="sneak">Sneak</option>
|
|
<option value="speech">Speech</option>
|
|
<option value="survival">Survival</option>
|
|
<option value="throwing">Throwing</option>
|
|
<option value="unarmed">Unarmed</option>
|
|
</select>
|
|
</div>
|
|
<div class="grid col2">
|
|
<label>Skill Points</label>
|
|
<div class="grid col5-derived">
|
|
<input type="hidden" name="attr_skill_points"
|
|
value="5" />
|
|
<span class="input" name="attr_skill_points"></span>
|
|
<span>+</span>
|
|
<input type="number" name="attr_skill_points_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_skill_points_total" value="5" />
|
|
<span name="attr_skill_points_total" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="skills-grid">
|
|
<div class="header">Name</div>
|
|
<div class="header">Tag</div>
|
|
<div class="header">Points</div>
|
|
<div class="header">Rank</div>
|
|
|
|
<div><label>Athletics</label> [STR]</div>
|
|
<div><input type="hidden"
|
|
name="attr_athletics_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_athletics_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="athletics"
|
|
name="attr_athletics" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_athletics_total" value="" />
|
|
<span name="attr_athletics_total"></span></div>
|
|
|
|
<div><label>Barter</label> [CHA]</div>
|
|
<div><input type="hidden"
|
|
name="attr_barter_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_barter_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="barter"
|
|
name="attr_barter" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_barter_total" value="" />
|
|
<span name="attr_barter_total"></span></div>
|
|
|
|
<div><label>Big Guns</label> [END]</div>
|
|
<div><input type="hidden"
|
|
name="attr_big_guns_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_big_guns_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="big_guns"
|
|
name="attr_big_guns" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_big_guns_total" value="" />
|
|
<span name="attr_big_guns_total"></span></div>
|
|
|
|
<div><label>Energy Weapons</label> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_energy_weapons_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_energy_weapons_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="energy_weapons"
|
|
name="attr_energy_weapons" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_energy_weapons_total" value="" />
|
|
<span name="attr_energy_weapons_total"></span></div>
|
|
|
|
<div><label>Explosives</label> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_explosives_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_explosives_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="explosives"
|
|
name="attr_explosives" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_explosives_total" value="" />
|
|
<span name="attr_explosives_total"></span></div>
|
|
|
|
<div><label>Lockpick</label> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_lockpick_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_lockpick_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="lockpick"
|
|
name="attr_lockpick" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_lockpick_total" value="" />
|
|
<span name="attr_lockpick_total"></span></div>
|
|
|
|
<div><label>Medicine</label> [INT]</div>
|
|
<div><input type="hidden"
|
|
name="attr_medicine_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_medicine_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="medicine"
|
|
name="attr_medicine" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_medicine_total" value="" />
|
|
<span name="attr_medicine_total"></span></div>
|
|
|
|
<div><label>Melee Weapons</label> [STR]</div>
|
|
<div><input type="hidden"
|
|
name="attr_melee_weapons_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_melee_weapons_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="melee_weapons"
|
|
name="attr_melee_weapons" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_melee_weapons_total" value="" />
|
|
<span name="attr_melee_weapons_total"></span></div>
|
|
|
|
<div><label>Pilot</label> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_pilot_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_pilot_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="pilot"
|
|
name="attr_pilot" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_pilot_total" value="" />
|
|
<span name="attr_pilot_total"></span></div>
|
|
</div>
|
|
<div class="skills-grid">
|
|
<div class="header">Name</div>
|
|
<div class="header">Tag</div>
|
|
<div class="header">Points</div>
|
|
<div class="header">Rank</div>
|
|
|
|
<div><label>Repair</label> [INT]</div>
|
|
<div><input type="hidden"
|
|
name="attr_repair_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_repair_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="repair"
|
|
name="attr_repair" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_repair_total" value="" />
|
|
<span name="attr_repair_total"></span></div>
|
|
|
|
<div><label>Science</label> [INT]</div>
|
|
<div><input type="hidden"
|
|
name="attr_science_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_science_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="science"
|
|
name="attr_science" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_science_total" value="" />
|
|
<span name="attr_science_total"></span></div>
|
|
|
|
<div><label>Small Guns</label> [AGI]</div>
|
|
<div><input type="hidden"
|
|
name="attr_small_guns_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_small_guns_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="small_guns"
|
|
name="attr_small_guns" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_small_guns_total" value="" />
|
|
<span name="attr_small_guns_total"></span></div>
|
|
|
|
<div><label>Sneak</label> [AGI]</div>
|
|
<div><input type="hidden"
|
|
name="attr_sneak_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_sneak_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="sneak"
|
|
name="attr_sneak" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_sneak_total" value="" />
|
|
<span name="attr_sneak_total"></span></div>
|
|
|
|
<div><label>Speech</label> [CHA]</div>
|
|
<div><input type="hidden"
|
|
name="attr_speech_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_speech_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="speech"
|
|
name="attr_speech" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_speech_total" value="" />
|
|
<span name="attr_speech_total"></span></div>
|
|
|
|
<div><label>Survival</label> [END]</div>
|
|
<div><input type="hidden"
|
|
name="attr_survival_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_survival_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="survival"
|
|
name="attr_survival" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_survival_total" value="" />
|
|
<span name="attr_survival_total"></span></div>
|
|
|
|
<div><label>Throwing</label> [AGI]</div>
|
|
<div><input type="hidden"
|
|
name="attr_throwing_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_throwing_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="throwing"
|
|
name="attr_throwing" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_throwing_total" value="" />
|
|
<span name="attr_throwing_total"></span></div>
|
|
|
|
<div><label>Unarmed</label> [STR]</div>
|
|
<div><input type="hidden"
|
|
name="attr_unarmed_tag" value=""
|
|
class="tag-skill" />
|
|
<span class="tag">yes</span>
|
|
<input type="checkbox" name="attr_unarmed_tag_mod" value="1" /></div>
|
|
<div><input type="number" id="unarmed"
|
|
name="attr_unarmed" value="" min="0"
|
|
max="6" /></div>
|
|
<div><input type="hidden"
|
|
name="attr_unarmed_total" value="" />
|
|
<span name="attr_unarmed_total"></span></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="perk grid col1">
|
|
<h2>4. Indicate your first perk
|
|
<button class="prev" type="action" name="act_prev">Previous</button>
|
|
<button class="next" type="action" name="act_next">Next</button></h2>
|
|
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Perk</label>
|
|
<select id="perks-starting" name="attr_perks_starting">
|
|
<option value="">Choose</option>
|
|
<option value="action_boy_girl">Action Boy/Girl</option>
|
|
<option value="adamantine_skeleton">Adamantine Skeleton</option>
|
|
<option value="adrenalin_rush">Adrenalin Rush</option>
|
|
<option value="animal_friend">Animal Friend</option>
|
|
<option value="aquaboy_aquagirl">Aquaboy/Aquagirl</option>
|
|
<option value="armorer">Armorer</option>
|
|
<option value="awareness">Awareness</option>
|
|
<option value="barbarian">Barbarian</option>
|
|
<option value="basher">Basher</option>
|
|
<option value="better_criticals">Better Criticals</option>
|
|
<option value="big_leagues">Big Leagues</option>
|
|
<option value="black_widow_lady_killer">Black Widow/Lady Killer</option>
|
|
<option value="blacksmith">Blacksmith</option>
|
|
<option value="blitz">Blitz</option>
|
|
<option value="bloody_mess">Bloody Mess</option>
|
|
<option value="can_do">Can Do!</option>
|
|
<option value="cap_collector">Cap Collector</option>
|
|
<option value="cautious_nature">Cautious Nature</option>
|
|
<option value="center_mass">Center Mass</option>
|
|
<option value="chem_resistant">Chem Resistant</option>
|
|
<option value="chemist">Chemist</option>
|
|
<option value="commando">Commando</option>
|
|
<option value="comprehension">Comprehension</option>
|
|
<option value="concentrated_fire">Concentrated Fire</option>
|
|
<option value="daring_nature">Daring Nature</option>
|
|
<option value="demolition_expert">Demolition Expert</option>
|
|
<option value="dodger">Dodger</option>
|
|
<option value="dogmeat">Dogmeat</option>
|
|
<option value="entomologist">Entomologist</option>
|
|
<option value="fast_metabolism">Fast Metabolism</option>
|
|
<option value="faster_healing">Faster Healing</option>
|
|
<option value="finesse">Finesse</option>
|
|
<option value="fortune_finder">Fortune Finder</option>
|
|
<option value="ghost">Ghost</option>
|
|
<option value="grim_reapers_sprint">Grim Reaper's Sprint</option>
|
|
<option value="gun_fu">Gun Fu</option>
|
|
<option value="gun_nut">Gun Nut</option>
|
|
<option value="gunslinger">Gunslinger</option>
|
|
<option value="hacker">Hacker</option>
|
|
<option value="healer">Healer</option>
|
|
<option value="heave_ho">Heave Ho!</option>
|
|
<option value="hunter">Hunter</option>
|
|
<option value="infiltrator">Infiltrator</option>
|
|
<option value="inspirational">Inspirational</option>
|
|
<option value="intense_training">Intense Training</option>
|
|
<option value="iron_fist">Iron Fist</option>
|
|
<option value="junktown_jerky_vendor">Junktown Jerky Vendor</option>
|
|
<option value="jury_rigging">Jury Rigging</option>
|
|
<option value="laser_commander">Laser Commander</option>
|
|
<option value="lead_belly">Lead Belly</option>
|
|
<option value="life_giver">Life Giver</option>
|
|
<option value="light_step">Light Step</option>
|
|
<option value="master_thief">Master Thief</option>
|
|
<option value="medic">Medic</option>
|
|
<option value="meltdown">Meltdown</option>
|
|
<option value="mister_sandman">Mister Sandman</option>
|
|
<option value="moving_target">Moving Target</option>
|
|
<option value="mysterious_stranger">Mysterious Stranger</option>
|
|
<option value="nerd_rage">Nerd Rage</option>
|
|
<option value="night_person">Night Person</option>
|
|
<option value="ninja">Ninja</option>
|
|
<option value="nuclear_physicist">Nuclear Physicist</option>
|
|
<option value="pain_train">Pain Train</option>
|
|
<option value="paralyzing_palm">Paralyzing Palm</option>
|
|
<option value="party_boy_party_girl">Party Boy/Party Girl</option>
|
|
<option value="pathfinder">Pathfinder</option>
|
|
<option value="pharma_farma">Pharma Farma</option>
|
|
<option value="pickpocket">Pickpocket</option>
|
|
<option value="piercing_strike">Piercing Strike</option>
|
|
<option value="pyromaniac">Pyromaniac</option>
|
|
<option value="quick_draw">Quick Draw</option>
|
|
<option value="quick_hands">Quick Hands</option>
|
|
<option value="rad_resistance">Rad Resistance</option>
|
|
<option value="refractor">Refractor</option>
|
|
<option value="ricochet">Ricochet</option>
|
|
<option value="rifleman">Rifleman</option>
|
|
<option value="robotics_expert">Robotics Expert</option>
|
|
<option value="science">Science!</option>
|
|
<option value="scoundrel">Scoundrel</option>
|
|
<option value="scrapper">Scrapper</option>
|
|
<option value="scrounger">Scrounger</option>
|
|
<option value="shotgun_surgeon">Shotgun Surgeon</option>
|
|
<option value="skilled">Skilled</option>
|
|
<option value="size_matters">Size Matters</option>
|
|
<option value="slayer">Slayer</option>
|
|
<option value="smooth_talker">Smooth Talker</option>
|
|
<option value="snakeater">Snakeater</option>
|
|
<option value="sniper">Sniper</option>
|
|
<option value="solar_powered">Solar Powered</option>
|
|
<option value="steady_aim">Steady Aim</option>
|
|
<option value="strong_back">Strong Back</option>
|
|
<option value="tag">Tag!</option>
|
|
<option value="terrifying_presence">Terrifying Presence</option>
|
|
<option value="toughness">Toughness</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="derived grid col1">
|
|
<h2>5. We have calculated the following statistics
|
|
<button class="prev" type="action" name="act_prev">Previous</button>
|
|
<button class="next" type="action" name="act_next">Next</button></h2>
|
|
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<label>Carry Weight (lbs.)</label>
|
|
<input type="hidden" name="attr_carry_weight_max"
|
|
value="200" />
|
|
<span class="input" name="attr_carry_weight_max"></span>
|
|
<label>Base Physical Damage Resistance</label>
|
|
<input type="hidden" name="attr_base_physical_dr"
|
|
value="0" />
|
|
<span class="input" name="attr_base_physical_dr"></span>
|
|
<label>Base Energy Damage Resistance</label>
|
|
<input type="hidden" name="attr_base_energy_dr"
|
|
value="0" />
|
|
<span class="input" name="attr_base_energy_dr"></span>
|
|
<label>Radiation Damage Resistance</label>
|
|
<input type="hidden" name="attr_base_rad_dr"
|
|
value="0" />
|
|
<span class="input" name="attr_base_rad_dr"></span>
|
|
<label>Poison Damage Resistance</label>
|
|
<input type="hidden" name="attr_base_poison_dr"
|
|
value="0" />
|
|
<span class="input" name="attr_base_poison_dr"></span>
|
|
</div>
|
|
<div class="grid col2">
|
|
<label>Defense</label>
|
|
<input type="hidden" name="attr_defense"
|
|
value="1" />
|
|
<span class="input" name="attr_defense"></span>
|
|
<label>Initiative</label>
|
|
<input type="hidden" name="attr_initiative"
|
|
value="10" />
|
|
<span class="input" name="attr_initiative"></span>
|
|
<label>Health Points</label>
|
|
<div class="grid col5-derived">
|
|
<input type="hidden" name="attr_hp_derived"
|
|
value="10" />
|
|
<span class="input" name="attr_hp_derived"></span>
|
|
<span>+</span>
|
|
<input type="number" name="attr_hp_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_hp_max" value="10" />
|
|
<span name="attr_hp_max" />
|
|
</div>
|
|
<label>Melee Damage</label>
|
|
<span class="input">
|
|
<input type="hidden" name="attr_melee_damage"
|
|
value="0" class="melee-damage" />
|
|
<span>+</span>
|
|
<span name="attr_melee_damage" />
|
|
<span class="die" />
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="equipment grid col1">
|
|
<h2>6. Select a starting equipment package
|
|
<button class="prev" type="action" name="act_prev">Previous</button>
|
|
<button class="next" type="action" name="act_next">Next</button></h2>
|
|
<div class="grid col2 gap">
|
|
<div class="grid col2">
|
|
<input type="hidden" name="attr_origin_choice"
|
|
class="origin-choice" value="" />
|
|
<label>Origin package</label>
|
|
|
|
<select id="brotherhood-package" class="origin-brotherhood"
|
|
name="attr_brotherhood_package">
|
|
<option value="">Choose</option>
|
|
<option value="steel_initiate">Brotherhood of Steel Initiate</option>
|
|
<option value="steel_scribe">Brotherhood of Steel Scribe</option>
|
|
</select>
|
|
|
|
<select id="mutant-package" class="origin-mutant"
|
|
name="attr_mutant_package">
|
|
<option value="">Choose</option>
|
|
<option value="brute">Brute</option>
|
|
<option value="skirmisher">Skirmisher</option>
|
|
</select>
|
|
|
|
<select id="robot-package" class="origin-robot"
|
|
name="attr_robot_package">
|
|
<option value="">Choose</option>
|
|
<option value="nanny">Miss Nanny</option>
|
|
<option value="farmhand">Mister Farmhand</option>
|
|
<option value="gutsy">Mister Gutsy</option>
|
|
<option value="handy">Mister Handy</option>
|
|
<option value="nurse">Nurse Handy</option>
|
|
</select>
|
|
|
|
<select id="wastelander-package" class="origin-survivor origin-ghoul"
|
|
name="attr_wastelander_package">
|
|
<option value="">Choose</option>
|
|
<option value="mercenary">Mercenary</option>
|
|
<option value="raider">Raider</option>
|
|
<option value="settler">Settler</option>
|
|
<option value="trader">Trader</option>
|
|
<option value="wanderer">Wanderer</option>
|
|
</select>
|
|
|
|
<select id="vault-package" class="origin-vault"
|
|
name="attr_vault_package">
|
|
<option value="">Choose</option>
|
|
<option value="resident">Vault-Tec Resident</option>
|
|
<option value="security">Vault-Tec Security</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="grid col2">
|
|
<label>Personal Trinket
|
|
<button type="action" name="act_rolltrinket">🎲</button></label>
|
|
<select id="personal-trinket"
|
|
name="attr_personal_trinket">
|
|
<option value="">Choose</option>
|
|
<option value="1">A gold pocket watch</option>
|
|
<option value="2">A garbled holodisk</option>
|
|
<option value="3">A brightly colored bandanna</option>
|
|
<option value="4">A silver locket</option>
|
|
<option value="5">Medal</option>
|
|
<option value="6">Potted plant</option>
|
|
<option value="7">Tickets to a pre-war event</option>
|
|
<option value="8">Wedding ring</option>
|
|
<option value="9">Pre-war party invitation</option>
|
|
<option value="10">An engraved flip lighter</option>
|
|
<option value="11">Loaded casino dice</option>
|
|
<option value="12">Id card</option>
|
|
<option value="13">Cosmetics case</option>
|
|
<option value="14">Musical Instrument</option>
|
|
<option value="15">Broken eyeglasses</option>
|
|
<option value="16">Necklace made of junk</option>
|
|
<option value="17">Pages of an unfinished story</option>
|
|
<option value="18">Overdue library book</option>
|
|
<option value="19">A postcard with an address</option>
|
|
<option value="20">A pre-war neck-tie</option>
|
|
</select>
|
|
</div>
|
|
<div class="grid col2">
|
|
<input type="hidden" name="attr_skills_tag1_name"
|
|
value="" />
|
|
<label><span name="attr_skills_tag1_name"></span></label>
|
|
<input type="hidden" name="attr_skills_tag1_package"
|
|
value="" />
|
|
<span class="input" name="attr_skills_tag1_package"></span>
|
|
</div>
|
|
<div class="grid col2">
|
|
<input type="hidden" name="attr_skills_tag2_name"
|
|
value="" />
|
|
<label><span name="attr_skills_tag2_name"></span></label>
|
|
<input type="hidden" name="attr_skills_tag2_package"
|
|
value="" />
|
|
<span class="input" name="attr_skills_tag2_package"></span>
|
|
</div>
|
|
<div class="grid col2">
|
|
<input type="hidden" name="attr_skills_tag3_name"
|
|
value="" />
|
|
<label><span name="attr_skills_tag3_name"></span></label>
|
|
<input type="hidden" name="attr_skills_tag3_package"
|
|
value="" />
|
|
<span class="input" name="attr_skills_tag3_package"></span>
|
|
</div>
|
|
<div class="grid col2">
|
|
<input type="hidden" name="attr_origin_tag_name"
|
|
class="origin-tag-name" value="" />
|
|
<label><span name="attr_origin_tag_name"></span></label>
|
|
<input type="hidden" name="attr_origin_tag_package"
|
|
value="" />
|
|
<span class="input" name="attr_origin_tag_package"></span>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="finalize grid col1">
|
|
<input type="hidden" name="attr_finalized"
|
|
class="special-finalized" value="" />
|
|
<h2>You are all done!
|
|
<button class="prev" type="action" name="act_prev">Previous</button></h2>
|
|
<p>Thank you for completing your S.P.E.C.I.A.L. profile. Feel free
|
|
to go back and edit your profile at any time. <span class="confirm-note">Click
|
|
below to confirm once you are satisfied.</span></p>
|
|
<div class="grid col2 gap confirm-button">
|
|
<button type="action" name="act_copyspecial" class="btn">👍
|
|
Confirm your profile</button>
|
|
<em>This will copy your selected perks and items to the character
|
|
sheet.</em>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<!-- end creation page -->
|
|
|
|
|
|
<!-- start character page -->
|
|
<div class="grid col1 character">
|
|
|
|
<div class="grid col4-csheet gap">
|
|
<div class="grid col1 logo">
|
|
<h1>Fallout</h1>
|
|
<div role="doc-subtitle">The Roleplaying Game</div>
|
|
</div>
|
|
<div class="grid col1 nogap">
|
|
<label class="character-name">Character name</label>
|
|
<input type="text" id="character-name" name="attr_character_name"
|
|
value="" class="character-name" />
|
|
</div>
|
|
<div class="grid col2">
|
|
<label>XP earned</label>
|
|
<input type="number" id="xp" name="attr_xp" value="" />
|
|
|
|
<label>XP next level</label>
|
|
<span class="input" name="attr_xp_next_level" />
|
|
|
|
<label>Origin</label>
|
|
<input type="hidden" name="attr_origin_name" value="" />
|
|
<span class="input" name="attr_origin_name" />
|
|
</div>
|
|
<div class="grid col1 level">
|
|
<span class="header">Level</span>
|
|
<input type="hidden" name="attr_level" value="1" />
|
|
<span class="value" name="attr_level" value="1" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid col7 special">
|
|
<div class="grid col1 nogap strength">
|
|
<span class="header">Strength</span>
|
|
<span class="value" name="attr_strength_total" />
|
|
</div>
|
|
<div class="grid col1 nogap perception">
|
|
<span class="header">Perception</span>
|
|
<span class="value" name="attr_perception_total" />
|
|
</div>
|
|
<div class="grid col1 nogap endurance">
|
|
<span class="header">Endurance</span>
|
|
<span class="value" name="attr_endurance_total" />
|
|
</div>
|
|
<div class="grid col1 nogap charisma">
|
|
<span class="header">Charisma</span>
|
|
<span class="value" name="attr_charisma_total" />
|
|
</div>
|
|
<div class="grid col1 nogap intelligence">
|
|
<span class="header">Intelligence</span>
|
|
<span class="value" name="attr_intelligence_total" />
|
|
</div>
|
|
<div class="grid col1 nogap agility">
|
|
<span class="header">Agility</span>
|
|
<span class="value" name="attr_agility_total" />
|
|
</div>
|
|
<div class="grid col1 nogap luck">
|
|
<span class="header">Luck</span>
|
|
<span class="value" name="attr_luck_total_max" />
|
|
</div>
|
|
</div>
|
|
<div class="grid col5">
|
|
<div class="grid col2 luckpts">
|
|
<label>Luck points</label>
|
|
<input type="number" id="luck-points" name="attr_luck_total"
|
|
value="5" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid col2-csheet gap">
|
|
<div class="grid col1">
|
|
<h2>Skills</h2>
|
|
|
|
<div class="skills-grid-mini">
|
|
<div class="header">Name</div>
|
|
<div class="header">Tag</div>
|
|
<div class="header">Rank</div>
|
|
|
|
<div><button type="roll" name="roll_athletics_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Athletics}} {{skill_num=@{athletics_total}}} {{target=[[@{strength_total}+@{athletics_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{strength_total}+@{athletics_total}]]sacs<@{athletics_cs}cf>20 ]]}}">
|
|
Athletics</button> [STR]</div>
|
|
<div><input type="hidden"
|
|
name="attr_athletics_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_athletics_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_athletics_total" value="" />
|
|
<span name="attr_athletics_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_barter_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Charisma}} {{attr_num=@{charisma_total}}} {{skill=Barter}} {{skill_num=@{barter_total}}} {{target=[[@{charisma_total}+@{barter_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{barter_total}]]sacs<@{barter_cs}cf>20 ]]}}">
|
|
Barter</button> [CHA]</div>
|
|
<div><input type="hidden"
|
|
name="attr_barter_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_barter_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_barter_total" value="" />
|
|
<span name="attr_barter_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_big_guns_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Endurance}} {{attr_num=@{endurance_total}}} {{skill=Big Guns}} {{skill_num=@{big_guns_total}}} {{target=[[@{endurance_total}+@{big_guns_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{endurance_total}+@{big_guns_total}]]sacs<@{big_guns_cs}cf>20 ]]}}">
|
|
Big Guns</button> [END]</div>
|
|
<div><input type="hidden"
|
|
name="attr_big_guns_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_big_guns_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_big_guns_total" value="" />
|
|
<span name="attr_big_guns_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_energy_weapons_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Energy Weapons}} {{skill_num=@{energy_weapons_total}}} {{target=[[@{perception_total}+@{energy_weapons_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{energy_weapons_total}]]sacs<@{energy_weapons_cs}cf>20 ]]}}">
|
|
Energy Weapons</button> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_energy_weapons_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_energy_weapons_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_energy_weapons_total" value="" />
|
|
<span name="attr_energy_weapons_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_explosives_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Explosives}} {{skill_num=@{explosives_total}}} {{target=[[@{perception_total}+@{explosives_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{explosives_total}]]sacs<@{explosives_cs}cf>20 ]]}}">
|
|
Explosives</button> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_explosives_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_explosives_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_explosives_total" value="" />
|
|
<span name="attr_explosives_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_lockpick_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Lockpick}} {{skill_num=@{lockpick_total}}} {{target=[[@{perception_total}+@{lockpick_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{lockpick_total}]]sacs<@{lockpick_cs}cf>20 ]]}}">
|
|
Lockpick</button> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_lockpick_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_lockpick_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_lockpick_total" value="" />
|
|
<span name="attr_lockpick_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_medicine_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Medicine}} {{skill_num=@{medicine_total}}} {{target=[[@{intelligence_total}+@{medicine_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{intelligence_total}+@{medicine_total}]]sacs<@{medicine_cs}cf>20 ]]}}">
|
|
Medicine</button> [INT]</div>
|
|
<div><input type="hidden"
|
|
name="attr_medicine_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_medicine_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_medicine_total" value="" />
|
|
<span name="attr_medicine_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_melee_weapons_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Melee Weapons}} {{skill_num=@{melee_weapons_total}}} {{target=[[@{strength_total}+@{melee_weapons_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{strength_total}+@{melee_weapons_total}]]sacs<@{melee_weapons_cs}cf>20 ]]}}">
|
|
Melee Weapons</button> [STR]</div>
|
|
<div><input type="hidden"
|
|
name="attr_melee_weapons_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_melee_weapons_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_melee_weapons_total" value="" />
|
|
<span name="attr_melee_weapons_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_pilot_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Pilot}} {{skill_num=@{pilot_total}}} {{target=[[@{perception_total}+@{pilot_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{pilot_total}]]sacs<@{pilot_cs}cf>20 ]]}}">
|
|
Pilot</button> [PER]</div>
|
|
<div><input type="hidden"
|
|
name="attr_pilot_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_pilot_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_pilot_total" value="" />
|
|
<span name="attr_pilot_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_repair_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Repair}} {{skill_num=@{repair_total}}} {{target=[[@{intelligence_total}+@{repair_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{intelligence_total}+@{repair_total}]]sacs<@{repair_cs}cf>20 ]]}}">
|
|
Repair</button> [INT]</div>
|
|
<div><input type="hidden"
|
|
name="attr_repair_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_repair_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_repair_total" value="" />
|
|
<span name="attr_repair_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_science_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Science}} {{skill_num=@{science_total}}} {{target=[[@{intelligence_total}+@{science_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{intelligence_total}+@{science_total}]]sacs<@{science_cs}cf>20 ]]}}">
|
|
Science</button> [INT]</div>
|
|
<div><input type="hidden"
|
|
name="attr_science_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_science_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_science_total" value="" />
|
|
<span name="attr_science_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_small_guns_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Small Guns}} {{skill_num=@{small_guns_total}}} {{target=[[@{agility_total}+@{small_guns_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{agility_total}+@{small_guns_total}]]sacs<@{small_guns_cs}cf>20 ]]}}">
|
|
Small Guns</button> [AGI]</div>
|
|
<div><input type="hidden"
|
|
name="attr_small_guns_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_small_guns_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_small_guns_total" value="" />
|
|
<span name="attr_small_guns_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_sneak_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Sneak}} {{skill_num=@{sneak_total}}} {{target=[[@{agility_total}+@{sneak_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{agility_total}+@{sneak_total}]]sacs<@{sneak_cs}cf>20 ]]}}">
|
|
Sneak</button> [AGI]</div>
|
|
<div><input type="hidden"
|
|
name="attr_sneak_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_sneak_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_sneak_total" value="" />
|
|
<span name="attr_sneak_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_speech_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Charisma}} {{attr_num=@{charisma_total}}} {{skill=Speech}} {{skill_num=@{speech_total}}} {{target=[[@{charisma_total}+@{speech_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{speech_total}]]sacs<@{speech_cs}cf>20 ]]}}">
|
|
Speech</button> [CHA]</div>
|
|
<div><input type="hidden"
|
|
name="attr_speech_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_speech_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_speech_total" value="" />
|
|
<span name="attr_speech_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_survival_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Endurance}} {{attr_num=@{endurance_total}}} {{skill=Survival}} {{skill_num=@{survival_total}}} {{target=[[@{endurance_total}+@{survival_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{endurance_total}+@{survival_total}]]sacs<@{survival_cs}cf>20 ]]}}">
|
|
Survival</button> [END]</div>
|
|
<div><input type="hidden"
|
|
name="attr_survival_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_survival_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_survival_total" value="" />
|
|
<span name="attr_survival_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_throwing_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Throwing}} {{skill_num=@{throwing_total}}} {{target=[[@{agility_total}+@{throwing_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{agility_total}+@{throwing_total}]]sacs<@{throwing_cs}cf>20 ]]}}">
|
|
Throwing</button> [AGI]</div>
|
|
<div><input type="hidden"
|
|
name="attr_throwing_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_throwing_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_throwing_total" value="" />
|
|
<span name="attr_throwing_total"></span></div>
|
|
|
|
<div><button type="roll" name="roll_unarmed_total"
|
|
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Unarmed}} {{skill_num=@{unarmed_total}}} {{target=[[@{strength_total}+@{unarmed_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{strength_total}+@{unarmed_total}]]sacs<@{unarmed_cs}cf>20 ]]}}">
|
|
Unarmed</button> [STR]</div>
|
|
<div><input type="hidden"
|
|
name="attr_unarmed_tag" value=""
|
|
class="tag-skill" />
|
|
<input type="hidden" name="attr_unarmed_cs"
|
|
value="1" />
|
|
<span class="tag">yes</span></div>
|
|
<div><input type="hidden"
|
|
name="attr_unarmed_total" value="" />
|
|
<span name="attr_unarmed_total"></span></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid col1 combat">
|
|
<h2>Combat</h2>
|
|
|
|
<div class="grid col3 gap">
|
|
<div class="grid col7-meleedmg">
|
|
<label>Melee damage</label>
|
|
<span name="attr_melee_damage" />
|
|
<span>+</span>
|
|
<input type="number" name="attr_melee_damage_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_melee_damage_total"
|
|
value="0" />
|
|
<span name="attr_melee_damage_total" />
|
|
<button type="roll" name="roll_meleedmg"
|
|
value="&{template:focd} {{name=@{character_name}}} {{dice_num=[[@{melee_damage_total}]]}} {{roll=[[1d6]]}} {{continue=[Roll another die](~meleedmg)}}" />
|
|
</div>
|
|
<div class="grid col7-defense">
|
|
<label>Defense</label>
|
|
<span name="attr_defense" />
|
|
<span>+</span>
|
|
<input type="number" name="attr_defense_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_defense_total"
|
|
value="1" />
|
|
<span name="attr_defense_total" />
|
|
<button type="roll" name="roll_defense"
|
|
value="&{template:foattribute} {{name=@{character_name}}} {{attr=Defense}} {{attr_num=@{defense_total}}}" />
|
|
</div>
|
|
<div class="grid col7-initiative">
|
|
<label>Initiative</label>
|
|
<span name="attr_initiative" />
|
|
<span>+</span>
|
|
<input type="number" name="attr_initiative_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_initiative_total"
|
|
value="10" />
|
|
<span name="attr_initiative_total" />
|
|
<button type="roll" name="roll_initiative"
|
|
value="&{template:foattribute} {{name=@{character_name}}} {{attr=Initiative}} {{attr_num=[[@{initiative_total} &{tracker}]]}}" />
|
|
</div>
|
|
</div>
|
|
|
|
<input type="hidden" name="attr_origin_choice"
|
|
class="origin-choice" value="" />
|
|
<div class="grid col3 locations gap">
|
|
<div class="grid col6-dr gap">
|
|
<div class="header">Base Damage Resistance</div>
|
|
|
|
<label class="physical-dr">Physical Damage Resistance</label>
|
|
<span name="attr_base_physical_dr" />
|
|
<span>+</span>
|
|
<input type="number" name="attr_base_physical_dr_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_base_physical_dr_total"
|
|
value="0" />
|
|
<span name="attr_base_physical_dr_total" />
|
|
|
|
<label class="energy-dr">Energy Damage Resistance</label>
|
|
<span name="attr_base_energy_dr" />
|
|
<span>+</span>
|
|
<input type="number" name="attr_base_energy_dr_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_base_energy_dr_total"
|
|
value="0" />
|
|
<span name="attr_base_energy_dr_total" />
|
|
|
|
<label class="rad-dr">Radiation Damage Resistance</label>
|
|
<input type="hidden" class="base-dr" name="attr_base_rad_dr" />
|
|
<span name="attr_base_rad_dr" />
|
|
<span>+</span>
|
|
<input type="number" name="attr_base_rad_dr_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_base_rad_dr_total"
|
|
value="0" />
|
|
<span name="attr_base_rad_dr_total" />
|
|
|
|
<label class="poison-dr">Poison Damage Resistance</label>
|
|
<input type="hidden" class="base-dr" name="attr_base_poison_dr" />
|
|
<span name="attr_base_poison_dr" />
|
|
<span>+</span>
|
|
<input type="number" name="attr_base_poison_dr_mod" value="" />
|
|
<span>=</span>
|
|
<input type="hidden" name="attr_base_poison_dr_total"
|
|
value="0" />
|
|
<span name="attr_base_poison_dr_total" />
|
|
</div>
|
|
<div class="grid col4 location gap">
|
|
<div class="header">Head (1-2)</div>
|
|
<div class="header robot">Optics (1-2)</div>
|
|
<label class="physical-dr">Physical Damage Resistance</label>
|
|
<input type="text" name="attr_head_pdr"
|
|
value="" />
|
|
<label class="energy-dr">Energy Damage Resistance</label>
|
|
<input type="text" name="attr_head_edr"
|
|
value="" />
|
|
<label class="rad-dr">Radiation Damage Resistance</label>
|
|
<input type="text" name="attr_head_rdr"
|
|
value="" />
|
|
<label>HP</label>
|
|
<input type="text" name="attr_head_hp"
|
|
value="" />
|
|
</div>
|
|
<div class="grid col2 gap">
|
|
<input type="hidden" name="attr_hp_ratio" value="100"
|
|
class="hp-ratio" />
|
|
<div class="header">Health Points</div>
|
|
<label>Maximum</label>
|
|
<span class="input" name="attr_hp_max" />
|
|
<label>Current</label>
|
|
<input type="number" name="attr_hp" value="10" />
|
|
<label>Radiation</label>
|
|
<input type="number" name="attr_rad_damage" value="0" />
|
|
</div>
|
|
<div class="grid col4 location gap slot1">
|
|
<div class="header">Right Arm (12-14)</div>
|
|
<div class="header robot">Arm 1 (9-11)</div>
|
|
<label class="physical-dr">Physical Damage Resistance</label>
|
|
<input type="text" name="attr_rarm_pdr"
|
|
value="" />
|
|
<label class="energy-dr">Energy Damage Resistance</label>
|
|
<input type="text" name="attr_rarm_edr"
|
|
value="" />
|
|
<label class="rad-dr">Radiation Damage Resistance</label>
|
|
<input type="text" name="attr_rarm_rdr"
|
|
value="" />
|
|
<label>HP</label>
|
|
<input type="text" name="attr_rarm_hp"
|
|
value="" />
|
|
</div>
|
|
<div class="grid col4 location gap slot3">
|
|
<div class="header">Left Arm (9-11)</div>
|
|
<div class="header robot">Arm 2 (12-14)</div>
|
|
<label class="physical-dr">Physical Damage Resistance</label>
|
|
<input type="text" name="attr_larm_pdr"
|
|
value="" />
|
|
<label class="energy-dr">Energy Damage Resistance</label>
|
|
<input type="text" name="attr_larm_edr"
|
|
value="" />
|
|
<label class="rad-dr">Radiation Damage Resistance</label>
|
|
<input type="text" name="attr_larm_rdr"
|
|
value="" />
|
|
<label>HP</label>
|
|
<input type="text" name="attr_larm_hp"
|
|
value="" />
|
|
</div>
|
|
<div class="grid col4 location gap slot2">
|
|
<div class="header">Torso (3-8)</div>
|
|
<div class="header robot">Main Body (3-8)</div>
|
|
<label class="physical-dr">Physical Damage Resistance</label>
|
|
<input type="text" name="attr_torso_pdr"
|
|
value="" />
|
|
<label class="energy-dr">Energy Damage Resistance</label>
|
|
<input type="text" name="attr_torso_edr"
|
|
value="" />
|
|
<label class="rad-dr">Radiation Damage Resistance</label>
|
|
<input type="text" name="attr_torso_rdr"
|
|
value="" />
|
|
<label>HP</label>
|
|
<input type="text" name="attr_torso_hp"
|
|
value="" />
|
|
</div>
|
|
<div class="grid col4 location gap slot1">
|
|
<div class="header">Right Leg (18-20)</div>
|
|
<div class="header robot">Arm 3 (15-17)</div>
|
|
<label class="physical-dr">Physical Damage Resistance</label>
|
|
<input type="text" name="attr_rleg_pdr"
|
|
value="" />
|
|
<label class="energy-dr">Energy Damage Resistance</label>
|
|
<input type="text" name="attr_rleg_edr"
|
|
value="" />
|
|
<label class="rad-dr">Radiation Damage Resistance</label>
|
|
<input type="text" name="attr_rleg_rdr"
|
|
value="" />
|
|
<label>HP</label>
|
|
<input type="text" name="attr_rleg_hp"
|
|
value="" />
|
|
</div>
|
|
<div class="grid col4 location gap slot3">
|
|
<div class="header">Left Leg (15-17)</div>
|
|
<div class="header robot">Thruster (18-20)</div>
|
|
<label class="physical-dr">Physical Damage Resistance</label>
|
|
<input type="text" name="attr_lleg_pdr"
|
|
value="" />
|
|
<label class="energy-dr">Energy Damage Resistance</label>
|
|
<input type="text" name="attr_lleg_edr"
|
|
value="" />
|
|
<label class="rad-dr">Radiation Damage Resistance</label>
|
|
<input type="text" name="attr_lleg_rdr"
|
|
value="" />
|
|
<label>HP</label>
|
|
<input type="text" name="attr_lleg_hp"
|
|
value="" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid col1 weapons">
|
|
<h2>Weapons</h2>
|
|
|
|
<div class="grid col1 nogap weapons-grid">
|
|
<div class="rep-grid-header">
|
|
<div>Name</div>
|
|
<div>Skill</div>
|
|
<div>Damage</div>
|
|
<div>Effects</div>
|
|
<div>Type</div>
|
|
<div>Rate</div>
|
|
<div>Range</div>
|
|
<div>Qualities</div>
|
|
<div>Ammo</div>
|
|
<div>Lbs.</div>
|
|
</div>
|
|
|
|
<fieldset class="repeating_weapons rep-grid">
|
|
<input type="hidden" name="attr_weaponskill" value="" />
|
|
<div><input type="text" name="attr_weaponname" value="" /></div>
|
|
<div>
|
|
<select name="attr_weaponskill">
|
|
<option value="">Choose</option>
|
|
<option value="big_guns">Big Guns</option>
|
|
<option value="energy_weapons">Energy Weapons</option>
|
|
<option value="explosives">Explosives</option>
|
|
<option value="melee_weapons">Melee Weapons</option>
|
|
<option value="small_guns">Small Guns</option>
|
|
<option value="throwing">Throwing</option>
|
|
<option value="unarmed">Unarmed</option>
|
|
</select>
|
|
</div>
|
|
<div><input type="number" name="attr_weapondamage" value=""
|
|
class="melee-damage" />
|
|
<button type="roll" name="roll_weapondamage"
|
|
value="&{template:focd} {{name=@{character_name}}} {{dice_num=[[@{weapondamage}]]}} {{roll=[[1d6]]}}" /></div>
|
|
<div><input type="text" name="attr_weaponeffects" value="" /></div>
|
|
<div>
|
|
<select name="attr_weapontype">
|
|
<option value="">Choose</option>
|
|
<option value="physical">Physical</option>
|
|
<option value="energy">Energy</option>
|
|
<option value="radiation">Radiation</option>
|
|
<option value="Poison">Poison</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<input type="number" name="attr_weaponrate" value=""
|
|
min="0" max="6" />
|
|
</div>
|
|
<div>
|
|
<select name="attr_weaponrange">
|
|
<option value=""></option>
|
|
<option value="close">C</option>
|
|
<option value="medium">M</option>
|
|
<option value="long">L</option>
|
|
<option value="extreme">X</option>
|
|
</select>
|
|
</div>
|
|
<div><input type="text" name="attr_weaponqualities" value="" /></div>
|
|
<div><input type="number" name="attr_weaponammo" value="" /></div>
|
|
<div><input type="number" name="attr_weaponweight" value="" /></div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<!-- end character page -->
|
|
|
|
|
|
<!-- start perks page -->
|
|
<div class="grid col1 perks">
|
|
<h1>Perks & Traits</h1>
|
|
|
|
<div class="grid col1 nogap perks-grid">
|
|
<div class="rep-grid-header">
|
|
<div>Name</div>
|
|
<div>Rank</div>
|
|
<div>Effect</div>
|
|
</div>
|
|
|
|
<fieldset class="repeating_perks rep-grid">
|
|
<div class="header"><span name="attr_perkname" /></div>
|
|
<div><input type="hidden" class="perkrank" name="attr_perkrank" />
|
|
<span name="attr_perkrank" /></div>
|
|
<div class="editable">
|
|
<span name="attr_perkeffect" />
|
|
<details>
|
|
<summary>Edit</summary>
|
|
<div class="grid col2 nogap">
|
|
<label>Name</label>
|
|
<input type="text" name="attr_perkname"
|
|
value="" />
|
|
<label>Rank</label>
|
|
<input type="number" name="attr_perkrank"
|
|
value="" />
|
|
<label>Effect</label>
|
|
<textarea name="attr_perkeffect"></textarea>
|
|
</div>
|
|
</details>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<!-- end perks page -->
|
|
|
|
|
|
<!-- start items page -->
|
|
<div class="grid col1 items">
|
|
<h1>Inventory</h1>
|
|
|
|
<div class="grid col2-csheet gap">
|
|
<div class="grid col1">
|
|
<h2 class="grid col2 caps">
|
|
<label>Caps</label>
|
|
<input type="number" id="caps" name="attr_caps" value="0" />
|
|
</h2>
|
|
|
|
<h2>Ammo</h2>
|
|
<div class="grid col1 nogap ammo-grid">
|
|
<div class="rep-grid-header">
|
|
<div>Caliber</div>
|
|
<div>Quantity</div>
|
|
</div>
|
|
|
|
<fieldset class="repeating_ammo rep-grid">
|
|
<div><input type="text" name="attr_ammoname"
|
|
value="" /></div>
|
|
<div><input type="text" name="attr_ammoqty"
|
|
value="" /></div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<h2>Carry Weight</h2>
|
|
<div class="grid col2">
|
|
<input type="hidden" name="attr_carry_weight_weapons" value="0" />
|
|
<label>Weapons Weight</label>
|
|
<span class="input" name="attr_carry_weight_weapons" />
|
|
|
|
<input type="hidden" name="attr_carry_weight_gear" value="0" />
|
|
<label>Gear Weight</label>
|
|
<span class="input" name="attr_carry_weight_gear" />
|
|
|
|
<input type="hidden" name="attr_carry_weight" value="0" />
|
|
<label>Current Carry Weight</label>
|
|
<span class="input" name="attr_carry_weight" />
|
|
|
|
<input type="hidden" name="attr_carry_weight_max" value="0" />
|
|
<label>Maximum Carry Weight</label>
|
|
<span class="input" name="attr_carry_weight_max" />
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
<h2>Gear</h2>
|
|
<div class="grid col1 nogap items-grid">
|
|
<div class="rep-grid-header">
|
|
<div>Name</div>
|
|
<div>Lbs.</div>
|
|
</div>
|
|
|
|
<fieldset class="repeating_items rep-grid">
|
|
<div><input type="text" name="attr_itemname"
|
|
value="" /></div>
|
|
<div><input type="number" name="attr_itemweight"
|
|
value="" /></div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- end items page -->
|
|
|
|
|
|
<!-- start npc page -->
|
|
<div class="grid col1 npc">
|
|
<h1>NPC</h1>
|
|
|
|
<div class="grid col2 gap npc-grid">
|
|
<div class="grid col1 npc-bio">
|
|
<h2><span name="attr_character_name" /></h2>
|
|
<div class="grid col3 gap">
|
|
<label>Level</label>
|
|
<input type="number" name="attr_npc_level" value="1" />
|
|
<input type="text" name="attr_npc_keywords" placeholder="keywords" />
|
|
</div>
|
|
<div class="grid col6 gap">
|
|
<select name="attr_npc_type">
|
|
<option value="normal">Normal</option>
|
|
<option value="mighty">Mighty</option>
|
|
<option value="legendary">Legendary</option>
|
|
<option value="notable">Notable</option>
|
|
<option value="major">Major</option>
|
|
</select>
|
|
<select name="attr_npc_category">
|
|
<option value="creature">Creature</option>
|
|
<option value="character">Character</option>
|
|
</select>
|
|
<span>(</span>
|
|
<input type="number" name="attr_npc_xp" value="10" />
|
|
<label>XP</label>
|
|
<span>)</span>
|
|
</div>
|
|
<textarea name="attr_npc_description"></textarea>
|
|
</div>
|
|
|
|
<div class="grid col1">
|
|
x
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- end npc page -->
|
|
|
|
|
|
<!-- start settings page -->
|
|
<div class="grid col1 settings">
|
|
<h1>Character Sheet Settings</h1>
|
|
|
|
<div class="grid col2">
|
|
<div class="grid col1">
|
|
<h2>Release Notes</h2>
|
|
<h3>Alpha 0.13</h3>
|
|
<ul>
|
|
<li>Fixed bug/typos in skill rolls to use correct stats and critical range on tag.</li>
|
|
<li>Added option for additional tag skills on the Skills tab under
|
|
SPECIAL.</li>
|
|
<li>Fixed delete button on the perks list.</li>
|
|
<li>Added modifier for HP on the Derived Stats tab under SPECIAL.</li>
|
|
<li>Added modifier for SPECIAL points on the Attributes tab under
|
|
SPECIAL.</li>
|
|
<li>Added modifier for skill points on the Skills tab under
|
|
SPECIAL.</li>
|
|
<li>Disabled Confirm/copy button after first use.</li>
|
|
</ul>
|
|
<h3>Alpha 0.12</h3>
|
|
<ul>
|
|
<li>Combat Dice use the <span class="die" /> symbol where possible.
|
|
Elsewhere they are abbreviated as <em>CD</em>.</li>
|
|
<li>2d20 rolls and Combat Dice are implemented in a simple fashion that
|
|
uses the built in dice roller in chat. Click on any skill on the
|
|
character sheet to roll a number of d20s. Critical successes and
|
|
complications must be counted manually from the chat results.</li>
|
|
<li>Clicking on combat dice under melee damage or weapons will roll
|
|
a single combat die and display the results.</li>
|
|
<li>I am exploring other options for a future release.</li>
|
|
</ul>
|
|
</div>
|
|
<div class="grid col1">
|
|
<!--
|
|
<h2>Character</h2>
|
|
<div class="grid col2">
|
|
<span>NPC</span>
|
|
<label class="switch">
|
|
<input type="checkbox" name="attr_setting_npc" value="1" />
|
|
<span class="slider"></span>
|
|
</label>
|
|
</div>
|
|
-->
|
|
<h2>Style</h2>
|
|
<div class="grid col2">
|
|
<span>Vault Girl</span>
|
|
<label class="switch">
|
|
<input type="checkbox" name="attr_style_vault_girl" value="1" />
|
|
<span class="slider"></span>
|
|
</label>
|
|
|
|
<span>Outline only (for hit locations)</span>
|
|
<label class="switch">
|
|
<input type="checkbox" name="attr_style_outline" value="1" />
|
|
<span class="slider"></span>
|
|
</label>
|
|
<!--
|
|
<span>Pip-Boy R20</span>
|
|
<label class="switch">
|
|
<input type="checkbox" name="attr_style_pip_boy" value="1" />
|
|
<span class="slider"></span>
|
|
</label>
|
|
-->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- end settings page -->
|
|
|
|
</div>
|
|
<!-- end interface -->
|
|
|
|
|
|
<script type="text/worker">
|
|
|
|
const tablist = ["creation","character","perks","items","npc","settings"];
|
|
const subtablist = ["origin","attributes","skills","perk","derived",
|
|
"equipment","finalize"];
|
|
const attributelist = ["STRENGTH","PERCEPTION","ENDURANCE","CHARISMA",
|
|
"INTELLIGENCE","AGILITY","LUCK"];
|
|
const totalAttributelist = ["STRENGTH_TOTAL","PERCEPTION_TOTAL",
|
|
"ENDURANCE_TOTAL","CHARISMA_TOTAL","INTELLIGENCE_TOTAL","AGILITY_TOTAL",
|
|
"LUCK_TOTAL"];
|
|
const skillList = ["ATHLETICS","BARTER","BIG_GUNS",
|
|
"ENERGY_WEAPONS","EXPLOSIVES","LOCKPICK","MEDICINE","MELEE_WEAPONS",
|
|
"PILOT","REPAIR","SCIENCE","SMALL_GUNS","SNEAK","SPEECH","SURVIVAL",
|
|
"THROWING","UNARMED"];
|
|
const skillTagModList = skillList.map(i => i + "_TAG_MOD");
|
|
const originTagList = ["ORIGIN","BROTHERHOOD_TAG","SURVIVOR_CHOICE",
|
|
"SURVIVOR_TRAIT1","SURVIVOR_TRAIT2","SURVIVOR_PERK","SURVIVOR_TAG",
|
|
"VAULT_TAG"];
|
|
const survivorAttrList = ["SURVIVOR_ATTR1","SURVIVOR_ATTR2"];
|
|
const tagSkillList = ["SKILLS_TAG1","SKILLS_TAG2","SKILLS_TAG3"];
|
|
const addList = ["LEVEL"];
|
|
const confirmList = ["ORIGIN","BROTHERHOOD_PACKAGE","MUTANT_PACKAGE",
|
|
"ROBOT_PACKAGE","WASTELANDER_PACKAGE","VAULT_PACKAGE","PERSONAL_TRINKET",
|
|
"SKILLS_TAG1_PACKAGE","SKILLS_TAG2_PACKAGE","SKILLS_TAG3_PACKAGE",
|
|
"ORIGIN_TAG_PACKAGE","PERKS_STARTING","SURVIVOR_CHOICE","SURVIVOR_TRAIT1",
|
|
"SURVIVOR_TRAIT2","SURVIVOR_PERK"];
|
|
const triggerList =
|
|
addList.concat(attributelist).concat(skillList).concat(originTagList)
|
|
.concat(survivorAttrList).concat(tagSkillList).concat(skillTagModList);
|
|
const valueList =
|
|
addList.concat(attributelist).concat(totalAttributelist).concat(skillList)
|
|
.concat(originTagList).concat(survivorAttrList).concat(tagSkillList)
|
|
.concat(skillTagModList);
|
|
const originsDictionary = {
|
|
"brotherhood": {"name": "Brotherhood of Steel"},
|
|
"ghoul": {"name": "Ghoul"},
|
|
"mutant": {"name": "Super Mutant"},
|
|
"robot": {"name": "Mister Handy"},
|
|
"survivor": {"name": "Survivor"},
|
|
"vault": {"name": "Vault Dweller"}
|
|
};
|
|
const originPackagesDictionary = {
|
|
"brotherhood": {
|
|
"steel_initiate": [
|
|
{"item": "Brotherhood fatigues", "weight": 4},
|
|
{"item": "Brotherhood hood", "weight": 0},
|
|
{"item": "Combat knife", "weight": 1},
|
|
{"item": "Laser pistol and a fusion cell containing 10 +5 CD shots or a "
|
|
+"10mm pistol with 10+5 CD rounds of 10mm pistol ammunition", "weight": 4},
|
|
{"item": "Brotherhood holotags containing identifying information", "weight": 0}
|
|
],
|
|
"steel_scribe": [
|
|
{"item": "Brotherhood Field Scribe's armor", "weight": 4},
|
|
{"item": "Brotherhood Scribe's hat", "weight": 0},
|
|
{"item": "Combat knife", "weight": 1},
|
|
{"item": "Laser pistol and a fusion cell containing 6 +3 CD shots or "
|
|
+"a 10mm pistol with 6+3 CD rounds of 10mm pistol ammunition.", "weight": 4},
|
|
{"item": "Brotherhood holotags containing identifying information", "weight": 0}
|
|
]
|
|
},
|
|
"mutant": {
|
|
"brute": [
|
|
{"item": "Raider armor torso", "weight": 7},
|
|
{"item": "Raider armor for one leg, or one arm", "weight": 3},
|
|
{"item": "A pipe rifle, and 6 +3 CD rounds of .38 ammunition", "weight": 2},
|
|
{"item": "A baseball bat or machete", "weight": 3},
|
|
{"trinket": 1},
|
|
{"caps": 5}
|
|
],
|
|
"skirmisher": [
|
|
{"item": "Raider armor torso", "weight": 7},
|
|
{"item": "Raider armor for one leg, or one arm", "weight": 3},
|
|
{"item": "Heavy bolt-action pipe rifle, and 8 +4 CD rounds of .308 ammunition", "weight": 3},
|
|
{"item": "A board", "weight": 3},
|
|
{"trinket": 1},
|
|
{"caps": 5}
|
|
]
|
|
},
|
|
"robot": {
|
|
"nanny": [
|
|
{"item": "Pincer arm attachment", "weight": 0},
|
|
{"item": "Flamer arm attachment", "weight": 0},
|
|
{"item": "Arm attachment of your choice", "weight": 0},
|
|
{"item": "Standard plating", "weight": 0},
|
|
{"item": "Behavioral analysis mod", "weight": 0},
|
|
{"item": "Hazard detection mod", "weight": 0},
|
|
{"caps": 10}
|
|
],
|
|
"farmhand": [
|
|
{"item": "Pincer arm attachment", "weight": 0},
|
|
{"item": "Buzz-saw arm attachment", "weight": 0},
|
|
{"item": "Laser emitter arm attachment", "weight": 0},
|
|
{"item": "Standard plating", "weight": 0},
|
|
{"item": "One bag of fertilizer", "weight": 1},
|
|
{"item": "2 mutfruits", "weight": 0},
|
|
{"caps": 25}
|
|
],
|
|
"gutsy": [
|
|
{"item": "10mm auto pistol arm", "weight": 0},
|
|
{"item": "Buzz-saw arm attachment", "weight": 0},
|
|
{"item": "Laser emitter arm attachment", "weight": 0},
|
|
{"item": "Mister Gutsy plating", "weight": 0},
|
|
{"item": "Recon sensors mod", "weight": 0},
|
|
{"caps": 10}
|
|
],
|
|
"handy": [
|
|
{"item": "Pincer arm attachment", "weight": 0},
|
|
{"item": "Flamer arm attachment", "weight": 0},
|
|
{"item": "Buzz-saw arm attachment", "weight": 0},
|
|
{"item": "Standard plating", "weight": 0},
|
|
{"item": "Robot repair kit", "weight": 0},
|
|
{"item": "Integral boiler mod", "weight": -10},
|
|
{"caps": 10}
|
|
],
|
|
"nurse": [
|
|
{"item": "Pincer arm or buzz-saw arm attachment", "weight": 0},
|
|
{"item": "Buzz saw arm attachment", "weight": 0},
|
|
{"item": "Attachment of your choice", "weight": 0},
|
|
{"item": "Standard plating", "weight": 0},
|
|
{"item": "Stimpak", "weight": 0},
|
|
{"item": "Diagnosis mod", "weight": 0},
|
|
{"caps": 10}
|
|
]
|
|
},
|
|
"wastelander": {
|
|
"mercenary": [
|
|
{"item": "Tough clothing", "weight": 3},
|
|
{"item": "A leather armor chest piece, or a leather armor arm "
|
|
+"and a leather armor leg (your choice as to which arm and leg)", "weight": 5},
|
|
{"item": "One melee weapon from the following: machete, "
|
|
+"baseball bat, tire iron", "weight": 3},
|
|
{"item": "One ranged weapon from the following: 10mm automatic pistol, "
|
|
+".44 pistol, hunting rifle, bolt-action pipe gun", "weight": 10},
|
|
{"item": "10 +5 CD rounds of ammunition for the chosen ranged weapon", "weight": 0},
|
|
{"item": "A note advertising a job in a nearby settlement that "
|
|
+"offers to pay 50 caps", "weight": 0},
|
|
{"caps": 15}
|
|
],
|
|
"raider": [
|
|
{"item": "Harness", "weight": 1},
|
|
{"item": "Raider armor chest piece", "weight": 7},
|
|
{"item": "Raider armor for one of your arms (your choice)", "weight": 3},
|
|
{"item": "One melee weapon from the following list: lead pipe, pool cue, "
|
|
+"tire iron", "weight": 3},
|
|
{"item": "A pipe gun, with 10 +5 CD rounds of .38 caliber ammunition", "weight": 2},
|
|
{"item": "1 dose of Jet or RadAway", "weight": 0},
|
|
{"item": "One Molotov cocktail or one stimpak", "weight": 1},
|
|
{"caps": 15}
|
|
],
|
|
"settler": [
|
|
{"item": "Tough clothing", "weight": 3},
|
|
{"item": "One melee weapon from the following: switch-blade, pipe wrench, "
|
|
+"rolling pin, knuckles", "weight": 2},
|
|
{"item": "A pipe gun, with 6 +3 CD rounds of .38 caliber ammunition", "weight": 2},
|
|
{"food": 2},
|
|
{"trinket": 1},
|
|
{"caps": 45}
|
|
],
|
|
"trader": [
|
|
{"item": "Tough clothing", "weight": 3},
|
|
{"item": "A leather armor chest piece, or a leather armor arm and "
|
|
+"a leather armor leg (your choice as to which arm and leg)", "weight": 5},
|
|
{"item": "A pipe gun, with 8 +4 CD rounds of .38 caliber ammunition", "weight": 2},
|
|
{"trinket": 1},
|
|
{"ammo": 3},
|
|
{"aid": 3},
|
|
{"junk": 3},
|
|
{"item": "A pack brahmin (see Brahmin, p.341)", "weight": 0},
|
|
{"caps": 50}
|
|
],
|
|
"wanderer": [
|
|
{"item": "Drifter outfit", "weight": 10},
|
|
{"item": "One melee weapon from the following: switchblade, pipe wrench, "
|
|
+"rolling pin, knuckles", "weight": 2},
|
|
{"item": "A pipe gun, with 8 +4 CD rounds of .38 caliber ammunition", "weight": 2},
|
|
{"item": "1 dose of Jet or RadAway", "weight": 0},
|
|
{"trinket": 1},
|
|
{"caps": 30}
|
|
]
|
|
},
|
|
"vault": {
|
|
"resident": [
|
|
{"item": "Vault jumpsuit", "weight": 1},
|
|
{"item": "Vault-Tec branded canteen containing 1 purified water", "weight": 0},
|
|
{"item": "Pip-Boy", "weight": 0},
|
|
{"item": "Switchblade", "weight": 1},
|
|
{"item": "10mm pistol with 6 +3 CD rounds of 10mm pistol ammunition", "weight": 4},
|
|
{"item": "2 stimpaks", "weight": 0},
|
|
{"caps": 10}
|
|
],
|
|
"security": [
|
|
{"item": "Vault jumpsuit", "weight": 1},
|
|
{"item": "Vault-Tec security armor, and Vault-Tec security helmet", "weight": 10},
|
|
{"item": "Vault-Tec branded canteen containing 1 purified water", "weight": 0},
|
|
{"item": "Pip-Boy", "weight": 0},
|
|
{"item": "Baton", "weight": 2},
|
|
{"item": "10mm pistol with 8 +4 CD rounds of 10mm pistol ammunition", "weight": 4},
|
|
{"item": "1 stimpaks", "weight": 0}
|
|
]
|
|
}
|
|
};
|
|
const traitDictionary = {
|
|
"brotherhood": {
|
|
"name": "The Chain that Binds",
|
|
"description": ""
|
|
},
|
|
"ghoul": {
|
|
"name": "Necrotic Post-Human",
|
|
"description": ""
|
|
},
|
|
"mutant": {
|
|
"name": "Forced Evolution",
|
|
"description": ""
|
|
},
|
|
"robot": {
|
|
"name": "Mister Handy Robot",
|
|
"description": ""
|
|
},
|
|
"educated": {
|
|
"name": "Educated",
|
|
"description": ""
|
|
},
|
|
"fast_shot": {
|
|
"name": "Fast Shot",
|
|
"description": ""
|
|
},
|
|
"gifted": {
|
|
"name": "Gifted",
|
|
"description": ""
|
|
},
|
|
"heavy_handed": {
|
|
"name": "Heavy Handed",
|
|
"description": ""
|
|
},
|
|
"small_frame": {
|
|
"name": "Small Frame",
|
|
"description": ""
|
|
},
|
|
"vault": {
|
|
"name": "Vault Kid",
|
|
"description": ""
|
|
},
|
|
};
|
|
const perksDictionary = {
|
|
"ACTION_BOY_GIRL": {"name": "Action Boy/Girl"},
|
|
"ADAMANTINE_SKELETON": {"name": "Adamantine Skeleton"},
|
|
"ADRENALIN_RUSH": {"name": "Adrenalin Rush"},
|
|
"ANIMAL_FRIEND": {"name": "Animal Friend"},
|
|
"AQUABOY_AQUAGIRL": {"name": "Aquaboy/Aquagirl"},
|
|
"ARMORER": {"name": "Armorer"},
|
|
"AWARENESS": {"name": "Awareness"},
|
|
"BARBARIAN": {"name": "Barbarian"},
|
|
"BASHER": {"name": "Basher"},
|
|
"BETTER_CRITICALS": {"name": "Better Criticals"},
|
|
"BIG_LEAGUES": {"name": "Big Leagues"},
|
|
"BLACK_WIDOW_LADY_KILLER": {"name": "Black Widow/Lady Killer"},
|
|
"BLACKSMITH": {"name": "Blacksmith"},
|
|
"BLITZ": {"name": "Blitz"},
|
|
"BLOODY_MESS": {"name": "Bloody Mess"},
|
|
"CAN_DO": {"name": "Can Do!"},
|
|
"CAP_COLLECTOR": {"name": "Cap Collector"},
|
|
"CAUTIOUS_NATURE": {"name": "Cautious Nature"},
|
|
"CENTER_MASS": {"name": "Center Mass"},
|
|
"CHEM_RESISTANT": {"name": "Chem Resistant"},
|
|
"CHEMIST": {"name": "Chemist"},
|
|
"COMMANDO": {"name": "Commando"},
|
|
"COMPREHENSION": {"name": "Comprehension"},
|
|
"CONCENTRATED_FIRE": {"name": "Concentrated Fire"},
|
|
"DARING_NATURE": {"name": "Daring Nature"},
|
|
"DEMOLITION_EXPERT": {"name": "Demolition Expert"},
|
|
"DODGER": {"name": "Dodger"},
|
|
"DOGMEAT": {"name": "Dogmeat"},
|
|
"ENTOMOLOGIST": {"name": "Entomologist"},
|
|
"FAST_METABOLISM": {"name": "Fast Metabolism"},
|
|
"FASTER_HEALING": {"name": "Faster Healing"},
|
|
"FINESSE": {"name": "Finesse"},
|
|
"FORTUNE_FINDER": {"name": "Fortune Finder"},
|
|
"GHOST": {"name": "Ghost"},
|
|
"GRIM_REAPER_S_SPRINT": {"name": "Grim Reaper's Sprint"},
|
|
"GUN_FU": {"name": "Gun Fu"},
|
|
"GUN_NUT": {"name": "Gun Nut"},
|
|
"GUNSLINGER": {"name": "Gunslinger"},
|
|
"HACKER": {"name": "Hacker"},
|
|
"HEALER": {"name": "Healer"},
|
|
"HEAVE_HO": {"name": "Heave Ho!"},
|
|
"HUNTER": {"name": "Hunter"},
|
|
"INFILTRATOR": {"name": "Infiltrator"},
|
|
"INSPIRATIONAL": {"name": "Inspirational"},
|
|
"INTENSE_TRAINING": {"name": "Intense Training"},
|
|
"IRON_FIST": {"name": "Iron Fist"},
|
|
"JUNKTOWN_JERKY_VENDOR": {"name": "Junktown Jerky Vendor"},
|
|
"JURY_RIGGING": {"name": "Jury Rigging"},
|
|
"LASER_COMMANDER": {"name": "Laser Commander"},
|
|
"LEAD_BELLY": {"name": "Lead Belly"},
|
|
"LIFE_GIVER": {"name": "Life Giver"},
|
|
"LIGHT_STEP": {"name": "Light Step"},
|
|
"MASTER_THIEF": {"name": "Master Thief"},
|
|
"MEDIC": {"name": "Medic"},
|
|
"MELTDOWN": {"name": "Meltdown"},
|
|
"MISTER_SANDMAN": {"name": "Mister Sandman"},
|
|
"MOVING_TARGET": {"name": "Moving Target"},
|
|
"MYSTERIOUS_STRANGER": {"name": "Mysterious Stranger"},
|
|
"NERD_RAGE": {"name": "Nerd Rage"},
|
|
"NIGHT_PERSON": {"name": "Night Person"},
|
|
"NINJA": {"name": "Ninja"},
|
|
"NUCLEAR_PHYSICIST": {"name": "Nuclear Physicist"},
|
|
"PAIN_TRAIN": {"name": "Pain Train"},
|
|
"PARALYZING_PALM": {"name": "Paralyzing Palm"},
|
|
"PARTY_BOY_PARTY_GIRL": {"name": "Party Boy/Party Girl"},
|
|
"PATHFINDER": {"name": "Pathfinder"},
|
|
"PHARMA_FARMA": {"name": "Pharma Farma"},
|
|
"PICKPOCKET": {"name": "Pickpocket"},
|
|
"PIERCING_STRIKE": {"name": "Piercing Strike"},
|
|
"PYROMANIAC": {"name": "Pyromaniac"},
|
|
"QUICK_DRAW": {"name": "Quick Draw"},
|
|
"QUICK_HANDS": {"name": "Quick Hands"},
|
|
"RAD_RESISTANCE": {"name": "Rad Resistance"},
|
|
"REFRACTOR": {"name": "Refractor"},
|
|
"RICOCHET": {"name": "Ricochet"},
|
|
"RIFLEMAN": {"name": "Rifleman"},
|
|
"ROBOTICS_EXPERT": {"name": "Robotics Expert"},
|
|
"SCIENCE": {"name": "Science!"},
|
|
"SCOUNDREL": {"name": "Scoundrel"},
|
|
"SCRAPPER": {"name": "Scrapper"},
|
|
"SCROUNGER": {"name": "Scrounger"},
|
|
"SHOTGUN_SURGEON": {"name": "Shotgun Surgeon"},
|
|
"SKILLED": {"name": "Skilled"},
|
|
"SIZE_MATTERS": {"name": "Size Matters"},
|
|
"SLAYER": {"name": "Slayer"},
|
|
"SMOOTH_TALKER": {"name": "Smooth Talker"},
|
|
"SNAKEATER": {"name": "Snakeater"},
|
|
"SNIPER": {"name": "Sniper"},
|
|
"SOLAR_POWERED": {"name": "Solar Powered"},
|
|
"STEADY_AIM": {"name": "Steady Aim"},
|
|
"STRONG_BACK": {"name": "Strong Back"},
|
|
"TAG": {"name": "Tag!"},
|
|
"TERRIFYING_PRESENCE": {"name": "Terrifying Presence"},
|
|
"TOUGHNESS": {"name": "Toughness"}
|
|
}
|
|
const skillsDictionary = {
|
|
"ATHLETICS": {
|
|
"name": "Athletics",
|
|
"package": ["Casual clothing, 1 Buffout"]
|
|
},
|
|
"BARTER": {
|
|
"name": "Barter",
|
|
"package": ["2d20 additional caps"]
|
|
},
|
|
"BIG_GUNS": {
|
|
"name": "Big Guns",
|
|
"package": ["4 +2 CD shots of flamer fuel"]
|
|
},
|
|
"ENERGY_WEAPONS": {
|
|
"name": "Energy Weapons",
|
|
"package": ["Fusion cell containing 6 +3 CD shots"]
|
|
},
|
|
"EXPLOSIVES": {
|
|
"name": "Explosives",
|
|
"package": ["2 Molotov cocktails","2 baseball grenades"]
|
|
},
|
|
"LOCKPICK": {
|
|
"name": "Lockpick",
|
|
"package": ["4 +2 CD bobby pins"]
|
|
},
|
|
"MEDICINE": {
|
|
"name": "Medicine",
|
|
"package": ["1 first aid kit, 1 Stimpak"]
|
|
},
|
|
"MELEE_WEAPONS": {
|
|
"name": "Melee Weapons",
|
|
"package": ["Machete","baseball bat"]
|
|
},
|
|
"PILOT": {
|
|
"name": "Pilot",
|
|
"package": ["Broken car parts (equivalent to 5 common scrap)"]
|
|
},
|
|
"REPAIR": {
|
|
"name": "Repair",
|
|
"package": ["Multi-Tool"]
|
|
},
|
|
"SCIENCE": {
|
|
"name": "Science",
|
|
"package": ["Lab coat, 1 dose of Mentats"]
|
|
},
|
|
"SMALL_GUNS": {
|
|
"name": "Small Guns",
|
|
"package": ["6 +3 CD additional shots of ammunition of a type you already possess"]
|
|
},
|
|
"SNEAK": {
|
|
"name": "Sneak",
|
|
"package": ["One dose of Calmex"]
|
|
},
|
|
"SPEECH": {
|
|
"name": "Speech",
|
|
"package": ["Formal hat, formal clothing"]
|
|
},
|
|
"SURVIVAL": {
|
|
"name": "Survival",
|
|
"package": ["2 purified water, 1 iguana on a stick"]
|
|
},
|
|
"THROWING": {
|
|
"name": "Throwing",
|
|
"package": ["4 +2d throwing knives","2 +1d tomahawks"]
|
|
},
|
|
"UNARMED": {
|
|
"name": "Unarmed",
|
|
"package": ["Knuckles"]
|
|
}
|
|
};
|
|
const trinketList = {
|
|
1: "A gold pocket watch",
|
|
2: "A garbled holodisk",
|
|
3: "A brightly colored bandanna",
|
|
4: "A silver locket",
|
|
5: "Medal",
|
|
6: "Potted plant",
|
|
7: "Tickets to a pre-war event",
|
|
8: "Wedding ring",
|
|
9: "Pre-war party invitation",
|
|
10: "An engraved flip lighter",
|
|
11: "Loaded casino dice",
|
|
12: "Id card",
|
|
13: "Cosmetics case",
|
|
14: "Musical Instrument",
|
|
15: "Broken eyeglasses",
|
|
16: "Necklace made of junk",
|
|
17: "Pages of an unfinished story",
|
|
18: "Overdue library book",
|
|
19: "A postcard with an address",
|
|
20: "A pre-war neck-tie",
|
|
};
|
|
const foodList = {
|
|
2: "Tarberry",
|
|
3: "Perfectly Preserved Pie",
|
|
4: "Melon (non-irradiated)",
|
|
5: "Carrot (non-irradiated)",
|
|
6: "Institute Food Packet",
|
|
7: "Sugar Bombs (preserved)",
|
|
8: "Mutfruit (non-irradiated)",
|
|
9: "Fancy Lads Snack Cakes (preserved)",
|
|
10: "Sweet Roll",
|
|
11: "Razorgrain",
|
|
12: "Iguana Bits",
|
|
13: "Cram",
|
|
14: "Carrot",
|
|
15: "BlamCo Brand Mac and Cheese",
|
|
16: "Sugar Bombs",
|
|
17: "Potted Meat",
|
|
18: "Pork 'n' Beans",
|
|
19: "InstaMash",
|
|
20: "Dandy Boy Apples",
|
|
21: "Canned Dog Food",
|
|
22: "Fancy Lads Snack Cakes",
|
|
23: "Gum Drops",
|
|
24: "Mutfruit",
|
|
25: "Potato Crisps",
|
|
26: "Salisbury Steak",
|
|
27: "Yum-Yum Deviled Eggs",
|
|
28: "Brain Fungus",
|
|
29: "Corn",
|
|
30: "Gourd",
|
|
31: "Melon",
|
|
32: "Silt Bean",
|
|
33: "Tato",
|
|
34: "InstaMash (preserved)",
|
|
35: "Salisbury Steak (preserved)",
|
|
36: "Food Paste",
|
|
37: "Noodle Cup",
|
|
38: "Corn (non-irradiated)",
|
|
39: "BlamCo Brand Mac and Cheese (preserved)",
|
|
40: "Tarberry"
|
|
}
|
|
const ammoList = {
|
|
2: "2mm EC (6+3 CD)",
|
|
3: "2mm EC (6+3 CD)",
|
|
4: "2mm EC (6+3 CD)",
|
|
5: "Plasma Cartridge (10+5 CD)",
|
|
6: "Missile (2+1 CD)*",
|
|
7: "Fusion Core (1)**",
|
|
8: "5mm (12+6 CD 10)",
|
|
9: "5mm (12+6 CD 10)",
|
|
10: ".50 ammo (4+2 CD)",
|
|
11: ".50 ammo (4+2 CD)",
|
|
12: "Syringer Ammo (4+2 CD)",
|
|
13: "Syringer Ammo (4+2 CD)",
|
|
14: "Gamma Round (4+2 CD)",
|
|
15: "Flamer Fuel (12+6 CD)",
|
|
16: "Flamer Fuel (12+6 CD)",
|
|
17: ".45 Rounds (9+4 CD)",
|
|
18: ".45 Rounds (9+4 CD)",
|
|
19: "10mm (8+4CD)",
|
|
20: "10mm (8+4CD)",
|
|
21: ".38 Ammo (10+5 CD)",
|
|
22: ".38 Ammo (10+5 CD)",
|
|
23: "Flare (2+1 CD)",
|
|
24: ".308 ammo (6+3 CD)",
|
|
25: "Shotgun Shells (6+3 CD)",
|
|
26: "Shotgun Shells (6+3 CD)",
|
|
27: "Fusion Cell (14+7 CD)",
|
|
28: "Fusion Cell (14+7 CD)",
|
|
29: "Railway Spike (6+3 CD)",
|
|
30: "Railway Spike (6+3 CD)",
|
|
31: ".44 Magnum (4+2 CD)",
|
|
32: ".44 Magnum (4+2 CD)",
|
|
33: "5.56mm (8+4 CD)",
|
|
34: "5.56mm (8+4 CD)",
|
|
35: "Missile (2+1 CD)*",
|
|
36: "Fusion Core (1)**",
|
|
37: "Plasma Cartridge (10+5 CD)",
|
|
38: "Mini-Nuke (1+1 CD)**",
|
|
39: "Mini-Nuke (1+1 CD)**",
|
|
40: "Mini-Nuke (1+1 CD)**"
|
|
}
|
|
const aidList = {
|
|
2: "Super Stimpak",
|
|
3: "Calmex",
|
|
4: "Day Tripper",
|
|
5: "Addictol",
|
|
6: "Stimpak",
|
|
7: "Stimpak",
|
|
8: "RadAway",
|
|
9: "RadAway",
|
|
10: "Psycho",
|
|
11: "Psycho",
|
|
12: "Med-X",
|
|
13: "Med-X",
|
|
14: "Daddy-O",
|
|
15: "Daddy-O",
|
|
16: "Rad-X (diluted)",
|
|
17: "Rad-X (diluted)",
|
|
18: "Healing Salve",
|
|
19: "Healing Salve",
|
|
20: "Dirty Water",
|
|
21: "Dirty Water",
|
|
22: "Dirty Water",
|
|
23: "Stimpak (diluted)",
|
|
24: "Stimpak (diluted)",
|
|
25: "RadAway (diluted)",
|
|
26: "RadAway (diluted)",
|
|
27: "Buffout",
|
|
28: "Buffout",
|
|
29: "Jet",
|
|
30: "Jet",
|
|
31: "Mentats",
|
|
32: "Mentats",
|
|
33: "Rad-X",
|
|
34: "Rad-X",
|
|
35: "Stimpak",
|
|
36: "Stimpak",
|
|
37: "Antibiotics",
|
|
38: "Overdrive",
|
|
39: "Fury",
|
|
40: "X-Cell"
|
|
}
|
|
|
|
function updateTagSkillPackage(update, tagSkill, skill) {
|
|
update[`${tagSkill}_name`] =
|
|
skillsDictionary[skill.toUpperCase()]["name"];
|
|
let package_options =
|
|
skillsDictionary[skill.toUpperCase()]["package"];
|
|
if (package_options.length == 2) {
|
|
update[`${tagSkill}_package`] =
|
|
skillsDictionary[skill.toUpperCase()]["package"][0] +
|
|
" or " +
|
|
skillsDictionary[skill.toUpperCase()]["package"][1];
|
|
} else {
|
|
update[`${tagSkill}_package`] =
|
|
skillsDictionary[skill.toUpperCase()]["package"][0];
|
|
}
|
|
|
|
return update;
|
|
}
|
|
|
|
function updateOriginPackage(update, origin, package) {
|
|
let items = originPackagesDictionary[origin][package];
|
|
for (var i = 0; i < items.length; i++) {
|
|
if (items[i]["item"]) {
|
|
update = updateRepeatingLine(update, "items",
|
|
["itemname", "itemweight"], [items[i]["item"], items[i]["weight"]]);
|
|
} else if (items[i]["trinket"]) {
|
|
let choice = Math.floor(Math.random() * 20) + 1;
|
|
update = updateRepeatingLine(update, "items",
|
|
["itemname", "itemweight"], [trinketList[choice], 0]);
|
|
} else if (items[i]["food"]) {
|
|
let food = parseInt(items[i]["food"])||0;
|
|
update = rollLootTable(update, foodList, food);
|
|
} else if (items[i]["ammo"]) {
|
|
let ammo = parseInt(items[i]["ammo"])||0;
|
|
update = rollLootTable(update, ammoList, ammo);
|
|
} else if (items[i]["aid"]) {
|
|
let aid = parseInt(items[i]["aid"])||0;
|
|
update = rollLootTable(update, aidList, aid);
|
|
} else if (items[i]["junk"]) {
|
|
let junk = parseInt(items[i]["junk"])||0;
|
|
for (var i2 = 0; i2 < junk; i2++) {
|
|
let junk_items = Math.floor(Math.random() * 20) +
|
|
Math.floor(Math.random() * 20) + 2;
|
|
update = updateRepeatingLine(update, "items",
|
|
["itemname", "itemweight"], [junk_items + " junk items", junk_items * 2]);
|
|
}
|
|
} else if (items[i]["caps"]) {
|
|
update["caps"] = parseInt(items[i]["caps"])||0;
|
|
}
|
|
}
|
|
return update;
|
|
}
|
|
|
|
function rollLootTable(update, table, count) {
|
|
for (var i2 = 0; i2 < count; i2++) {
|
|
let choice = Math.floor(Math.random() * 20) +
|
|
Math.floor(Math.random() * 20) + 2;
|
|
update = updateRepeatingLine(update, "items",
|
|
["itemname", "itemweight"], [table[choice], 0]);
|
|
}
|
|
return update;
|
|
}
|
|
|
|
function updateRepeatingLine(update, section, fields, values) {
|
|
let newrowid = generateRowID();
|
|
for (var i = 0; i < fields.length; i++) {
|
|
let field = fields[i];
|
|
let value = values[i];
|
|
update["repeating_" + section + "_" + newrowid + "_" + field] = value;
|
|
}
|
|
return update;
|
|
}
|
|
|
|
tablist.forEach(button => {
|
|
on(`clicked:${button}`, function() {
|
|
setAttrs({"tab": button});
|
|
});
|
|
});
|
|
|
|
subtablist.forEach(button => {
|
|
on(`clicked:${button}`, function() {
|
|
setAttrs({"subtab": button});
|
|
});
|
|
});
|
|
|
|
on("clicked:prev", function() {
|
|
getAttrs(["SUBTAB"], function(values) {
|
|
let subtab = subtablist.indexOf(values.SUBTAB) - 1;
|
|
setAttrs({"subtab": subtablist[subtab]});
|
|
});
|
|
});
|
|
|
|
on("clicked:next", function() {
|
|
getAttrs(["SUBTAB"], function(values) {
|
|
let subtab = subtablist.indexOf(values.SUBTAB) + 1;
|
|
setAttrs({"subtab": subtablist[subtab]});
|
|
});
|
|
});
|
|
|
|
on("clicked:rolltrinket", function() {
|
|
let choice = Math.floor(Math.random() * 20) + 1;
|
|
setAttrs({"personal_trinket": choice});
|
|
});
|
|
|
|
function rollCombatDice(count) {
|
|
let results = {
|
|
"damage": 0,
|
|
"effects": 0
|
|
}
|
|
for (var i = 0; i < count; i++) {
|
|
let roll = Math.floor(Math.random() * 6) + 1;
|
|
switch (roll) {
|
|
case 1:
|
|
results["damage"] += 1;
|
|
break;
|
|
case 2:
|
|
results["damage"] += 2;
|
|
break;
|
|
case 5:
|
|
case 6:
|
|
results["damage"] += 1;
|
|
results["effects"] += 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
on("clicked:combatdice", function() {
|
|
let results = rollCombatDice(6);
|
|
console.log(results);
|
|
});
|
|
|
|
on("clicked:copyspecial", function() {
|
|
getAttrs(confirmList, function(values) {
|
|
let update = {};
|
|
let survivor = values.SURVIVOR_CHOICE;
|
|
let survivor_trait1 = values.SURVIVOR_TRAIT1;
|
|
let survivor_trait2 = values.SURVIVOR_TRAIT2;
|
|
let survivor_perk = values.SURVIVOR_PERK;
|
|
let perks_starting = values.PERKS_STARTING;
|
|
let origin = values.ORIGIN;
|
|
let trinket = parseInt(values.PERSONAL_TRINKET)||0;
|
|
|
|
// origin trait
|
|
if (origin == "survivor") {
|
|
let name = traitDictionary[survivor_trait1]["name"];
|
|
let effect = traitDictionary[survivor_trait1]["description"];
|
|
update = updateRepeatingLine(update, "perks",
|
|
["perkname", "perkeffect"], [name, effect]);
|
|
|
|
if (survivor == "trait") {
|
|
name = traitDictionary[survivor_trait2]["name"];
|
|
effect = traitDictionary[survivor_trait2]["description"];
|
|
update = updateRepeatingLine(update, "perks",
|
|
["perkname", "perkeffect"], [name, effect]);
|
|
}
|
|
} else if (origin) {
|
|
let name = traitDictionary[origin]["name"];
|
|
let effect = traitDictionary[origin]["description"];
|
|
update = updateRepeatingLine(update, "perks",
|
|
["perkname", "perkeffect"], [name, effect]);
|
|
}
|
|
|
|
// perks
|
|
if (perks_starting) {
|
|
let name = perksDictionary[perks_starting.toUpperCase()]["name"];
|
|
update = updateRepeatingLine(update, "perks",
|
|
["perkname", "perkrank"], [name, 1]);
|
|
}
|
|
if (survivor_perk && survivor == "perk") {
|
|
let name = perksDictionary[survivor_perk.toUpperCase()]["name"];
|
|
update = updateRepeatingLine(update, "perks",
|
|
["perkname", "perkrank"], [name, 1]);
|
|
}
|
|
|
|
// origin package
|
|
let origin_type = origin;
|
|
let package = "";
|
|
if (origin == "ghoul" || origin == "survivor") {
|
|
origin_type = "wastelander";
|
|
package = values.WASTELANDER_PACKAGE;
|
|
} else if (origin) {
|
|
let originUpper = origin.toUpperCase();
|
|
package = values[`${originUpper}_PACKAGE`];
|
|
}
|
|
|
|
if (package) {
|
|
update = updateOriginPackage(update, origin_type, package);
|
|
}
|
|
|
|
// trinket
|
|
update = updateRepeatingLine(update, "items",
|
|
["itemname", "itemweight"], [trinketList[trinket], 0]);
|
|
|
|
// tag skill packages
|
|
tagSkillList.forEach(tag => {
|
|
update = updateRepeatingLine(update, "items",
|
|
["itemname"], [values[`${tag}_PACKAGE`]]);
|
|
});
|
|
|
|
// origin tag package, if exists
|
|
let origin_tag_package = values.ORIGIN_TAG_PACKAGE;
|
|
if (origin_tag_package) {
|
|
update = updateRepeatingLine(update, "items",
|
|
["itemname"], [origin_tag_package]);
|
|
}
|
|
|
|
update["finalized"] = 1;
|
|
update["tab"] = "character";
|
|
|
|
setAttrs(update);
|
|
});
|
|
});
|
|
|
|
attributelist.forEach(attribute => {
|
|
for (let i = 4; i < 11; i++) {
|
|
let attribute_name = attribute.toLowerCase();
|
|
on(`clicked:${attribute_name}${i}`, function() {
|
|
let update = {};
|
|
update[attribute_name] = i;
|
|
setAttrs(update);
|
|
});
|
|
}
|
|
});
|
|
|
|
/* used in the creation panel */
|
|
triggerList.forEach(trigger => {
|
|
on(`change:${trigger}`, function(eventInfo) {
|
|
getAttrs(valueList, function(values) {
|
|
console.log(values);
|
|
let update = {};
|
|
|
|
let attributes = {};
|
|
|
|
let origin = values.ORIGIN;
|
|
let brotherhood_tag = values.BROTHERHOOD_TAG;
|
|
let survivor = values.SURVIVOR_CHOICE;
|
|
let survivor_trait1 = values.SURVIVOR_TRAIT1;
|
|
let survivor_trait2 = values.SURVIVOR_TRAIT2;
|
|
let survivor_perk = values.SURVIVOR_PERK;
|
|
let survivor_tag = values.SURVIVOR_TAG;
|
|
let vault = values.VAULT_TAG;
|
|
let level = parseInt(values.LEVEL)||1;
|
|
|
|
let attribute_buy = 0;
|
|
attributelist.forEach(attribute => {
|
|
let name = attribute.toLowerCase();
|
|
let points = parseInt(values[attribute])||0;
|
|
attributes[name] = points;
|
|
if (origin == "mutant" && points > 6 &&
|
|
(attribute == "CHARISMA" || attribute == "INTELLIGENCE")) {
|
|
points = Math.min(points, 6);
|
|
update[`${name}`] = points;
|
|
}
|
|
update[`${name}_max`] = points;
|
|
update[`${name}_mod`] = 0;
|
|
update[`${name}_total`] = points;
|
|
update[`${name}_total_max`] = points;
|
|
attribute_buy += points;
|
|
});
|
|
let attribute_points = 40 - attribute_buy;
|
|
|
|
let skill_buy = 0;
|
|
skillList.forEach(skill => {
|
|
let cost = parseInt(values[skill])||0;
|
|
let name = skill.toLowerCase();
|
|
let points = parseInt(values[skill])||0;
|
|
let tag_mod = parseInt(values[`${skill}_TAG_MOD`])||0;
|
|
update[`${name}_tag`] = tag_mod ? 1 : 0;
|
|
update[`${name}_cs`] = tag_mod ? Math.min(points + 2, 6) : 1;
|
|
update[`${name}_total`] = tag_mod ?
|
|
Math.min(points + 2, 6) :
|
|
Math.min(points, 6);
|
|
skill_buy += cost;
|
|
});
|
|
update["origin_tag_name"] = "";
|
|
update["origin_tag_package"] = "";
|
|
let skill_points = 9 + attributes["intelligence"] - skill_buy
|
|
+ (level - 1);
|
|
|
|
update["attribute_points"] = attribute_points;
|
|
update["skill_points"] = skill_points;
|
|
|
|
update["origin_choice"] = origin;
|
|
update["origin_name"] = origin ?
|
|
originsDictionary[origin]["name"] :
|
|
"";
|
|
switch(origin) {
|
|
case "brotherhood":
|
|
if (brotherhood_tag) {
|
|
let points =
|
|
parseInt(values[brotherhood_tag.toUpperCase()])||0;
|
|
update[`${brotherhood_tag}_tag`] = 1;
|
|
update[`${brotherhood_tag}_cs`] = Math.min(points + 2, 6);
|
|
update[`${brotherhood_tag}_total`] = Math.min(points + 2, 6);
|
|
update = updateTagSkillPackage(update, "origin_tag",
|
|
brotherhood_tag);
|
|
}
|
|
break;
|
|
case "ghoul":
|
|
update["survival_tag"] = 1;
|
|
update["survival_cs"] = Math.min(values.SURVIVAL + 2, 6);
|
|
update["survival_total"] = Math.min(values.SURVIVAL + 2, 6);
|
|
break;
|
|
case "mutant":
|
|
attributes["strength"] += 2;
|
|
attributes["endurance"] += 2;
|
|
update["strength_mod"] = 2;
|
|
update["endurance_mod"] = 2;
|
|
update["strength_total"] = values.STRENGTH + 2;
|
|
update["endurance_total"] = values.ENDURANCE + 2;
|
|
update["strength_total_max"] = values.STRENGTH + 2;
|
|
update["endurance_total_max"] = values.ENDURANCE + 2;
|
|
break;
|
|
case "survivor":
|
|
update["survivor_choice"] = survivor;
|
|
update["survivor_trait1"] = survivor_trait1;
|
|
update["survivor_trait2"] = survivor_trait2;
|
|
update["survivor_perk"] = survivor_perk;
|
|
if ((survivor_trait1 == "educated"
|
|
|| (survivor == "trait" && survivor_trait2 == "educated"))
|
|
&& survivor_tag) {
|
|
let points =
|
|
parseInt(values[survivor_tag.toUpperCase()])||0;
|
|
update[`${survivor_tag}_tag`] = 1;
|
|
update[`${survivor_tag}_cs`] = Math.min(points + 2, 6);
|
|
update[`${survivor_tag}_total`] = Math.min(points + 2, 6);
|
|
update = updateTagSkillPackage(update, "origin_tag",
|
|
survivor_tag);
|
|
}
|
|
if (survivor_trait1 == "gifted"
|
|
|| (survivor == "trait" && survivor_trait2 == "gifted")) {
|
|
survivorAttrList.forEach(attribute => {
|
|
let name = values[attribute];
|
|
if (name) {
|
|
let points =
|
|
parseInt(values[name.toUpperCase()])||0;
|
|
attributes[name] += 1;
|
|
update[`${name}_mod`] = 1;
|
|
update[`${name}_total`] = points + 1;
|
|
update[`${name}_total_max`] = points + 1;
|
|
}
|
|
});
|
|
update["luck_total"] = update["luck_total_max"] - 1;
|
|
}
|
|
break;
|
|
case "vault":
|
|
if (vault) {
|
|
let points =
|
|
parseInt(values[vault.toUpperCase()])||0;
|
|
update[`${vault}_tag`] = 1;
|
|
update[`${vault}_cs`] = Math.min(points + 2, 6);
|
|
update[`${vault}_total`] = Math.min(points + 2, 6);
|
|
update = updateTagSkillPackage(update, "origin_tag",
|
|
vault);
|
|
}
|
|
break;
|
|
}
|
|
tagSkillList.forEach(tagSkill => {
|
|
let skill = values[tagSkill];
|
|
if (skill) {
|
|
let points = parseInt(values[skill.toUpperCase()])||0;
|
|
let max = origin == "mutant" ? 4 : 6;
|
|
update[`${skill}_tag`] = 1;
|
|
update[`${skill}_cs`] = Math.min(points + 2, max);
|
|
update[`${skill}_total`] = Math.min(points + 2, max);
|
|
update = updateTagSkillPackage(update, tagSkill, skill);
|
|
}
|
|
});
|
|
|
|
update["carry_weight_max"] = origin == "robot" ? 150 :
|
|
150 + attributes["strength"] * 10;
|
|
update["base_rad_dr"] = origin == "mutant" || origin == "ghoul" || origin == "robot" ?
|
|
"immune" : 0;
|
|
update["base_poison_dr"] = origin == "mutant" || origin == "robot" ? "immune" : 0;
|
|
update["defense"] = attributes["agility"] > 8 ? 2 : 1;
|
|
update["initiative"] = attributes["perception"] +
|
|
attributes["agility"];
|
|
update["hp_derived"] = attributes["endurance"] + attributes["luck"]
|
|
+ (level - 1);
|
|
update["hp_ratio"] = 100;
|
|
update["melee_damage"] =
|
|
attributes["strength"] > 10 ? 3 :
|
|
attributes["strength"] > 8 ? 2 :
|
|
attributes["strength"] > 6 ? 1 :
|
|
0;
|
|
if (survivor_trait1 == "heavy_handed"
|
|
|| (survivor == "trait" && survivor_trait2 == "heavy_handed")) {
|
|
update["melee_damage"] += 1;
|
|
}
|
|
|
|
setAttrs(update);
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:hp change:hp_max sheet:opened", function() {
|
|
getAttrs(["HP","HP_max"], function(values) {
|
|
let hp = parseInt(values.HP)||0;
|
|
let hp_max = parseInt(values.HP_max)||0;
|
|
let hp_ratio = Math.round(hp / hp_max * 10) * 10;
|
|
setAttrs({
|
|
"hp_ratio": hp_ratio
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:xp sheet:opened", function() {
|
|
getAttrs(["XP","XP_NEXT_LEVEL"], function(values) {
|
|
let xp = parseInt(values.XP)||0;
|
|
let level = 2;
|
|
while ( xp >= ((level * (level-1) / 2) * 100) ) {
|
|
level++;
|
|
}
|
|
let xp_next_level = (level * (level-1) / 2) * 100;
|
|
setAttrs({
|
|
"level": level - 1,
|
|
"xp_next_level": xp_next_level
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:repeating_weapons:weaponweight", function() {
|
|
repeatingSum("carry_weight_weapons", "weapons", "weaponweight");
|
|
});
|
|
|
|
on("change:repeating_items:itemweight", function() {
|
|
repeatingSum("carry_weight_gear", "items", "itemweight");
|
|
});
|
|
|
|
on("change:carry_weight_weapons change:carry_weight_gear", function() {
|
|
getAttrs(["CARRY_WEIGHT_WEAPONS", "CARRY_WEIGHT_GEAR"], function(values) {
|
|
let carry_weight_weapons = parseInt(values.CARRY_WEIGHT_WEAPONS)||0;
|
|
let carry_weight_gear = parseInt(values.CARRY_WEIGHT_GEAR)||0;
|
|
let carry_weight = carry_weight_weapons + carry_weight_gear;
|
|
setAttrs({
|
|
"carry_weight": carry_weight
|
|
});
|
|
});
|
|
});
|
|
|
|
const combatList = ["ATTRIBUTE_POINTS","SKILL_POINTS","MELEE_DAMAGE",
|
|
"DEFENSE","INITIATIVE"];
|
|
combatList.forEach(stat => {
|
|
let statLower = stat.toLowerCase();
|
|
on(`change:${statLower} change:${statLower}_mod`, function(eventInfo) {
|
|
getAttrs([`${stat}`, `${stat}_MOD`], function(values) {
|
|
let update = {};
|
|
let base = parseInt(values[`${stat}`])||0;
|
|
let mod = parseInt(values[`${stat}_MOD`])||0;
|
|
let total = base + mod;
|
|
update[`${statLower}_total`] = total;
|
|
setAttrs(update);
|
|
});
|
|
});
|
|
});
|
|
|
|
on(`change:hp_derived change:hp_mod`, function(eventInfo) {
|
|
getAttrs(['HP_DERIVED', 'HP_MOD'], function(values) {
|
|
let update = {};
|
|
let base = parseInt(values.HP_DERIVED)||0;
|
|
let mod = parseInt(values.HP_MOD)||0;
|
|
let total = base + mod;
|
|
update['hp'] = total;
|
|
update['hp_max'] = total;
|
|
setAttrs(update);
|
|
});
|
|
});
|
|
|
|
const typeList = ["PHYSICAL","ENERGY","RAD","POISON"];
|
|
typeList.forEach(type => {
|
|
let typeLower = type.toLowerCase();
|
|
on(`change:base_${typeLower}_dr change:base_${typeLower}_dr_mod`, function(eventInfo) {
|
|
getAttrs([`BASE_${type}_DR`, `BASE_${type}_DR_MOD`], function(values) {
|
|
let update = {};
|
|
let base_dr = parseInt(values[`BASE_${type}_DR`])||0;
|
|
let base_dr_mod = parseInt(values[`BASE_${type}_DR_MOD`])||0;
|
|
let base_dr_total = base_dr + base_dr_mod;
|
|
update[`base_${typeLower}_dr_total`] = base_dr_total;
|
|
setAttrs(update);
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
/* ===== PARAMETERS ==========
|
|
destinations = the name of the attribute that stores the total quantity
|
|
can be a single attribute, or an array: ['total_cost', 'total_weight']
|
|
If more than one, the matching fields must be in the same order.
|
|
section = name of repeating fieldset, without the repeating_
|
|
fields = the name of the attribute field to be summed
|
|
destination and fields both can be a single attribute: 'weight'
|
|
or an array of attributes: ['weight','number','equipped']
|
|
*/
|
|
const repeatingSum = (destinations, section, fields) => {
|
|
if (!Array.isArray(destinations)) destinations = [destinations.replace(/\s/g, '').split(',')];
|
|
if (!Array.isArray(fields)) fields = [fields.replace(/\s/g, '').split(',')];
|
|
getSectionIDs(`repeating_${section}`, idArray => {
|
|
const attrArray = idArray.reduce((m, id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))], []);
|
|
getAttrs([...attrArray], v => {
|
|
const getValue = (section, id, field) => v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : parseFloat(v[`repeating_${section}_${id}_${field}`]) || 0;
|
|
const commonMultipliers = (fields.length <= destinations.length) ? [] : fields.splice(destinations.length, fields.length - destinations.length);
|
|
const output = {};
|
|
destinations.forEach((destination, index) => {
|
|
output[destination] = idArray.reduce((total, id) => total + getValue(section, id, fields[index]) * commonMultipliers.reduce((subtotal, mult) => subtotal * getValue(section, id, mult), 1), 0);
|
|
});
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
};
|
|
|
|
</script>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-foskill">
|
|
<div class="container">
|
|
<h1>{{name}} tests {{skill}}</h1>
|
|
<p>{{dice_num}}d20 vs. {{target}}<br />
|
|
{{attr}} ({{attr_num}}) + {{skill}} ({{skill_num}})</p>
|
|
<p><strong>
|
|
{{result}}
|
|
{{#rollTotal() result 1}}success{{/rollTotal() result 1}}
|
|
{{#^rollTotal() result 1}}successes{{/^rollTotal() result 1}}
|
|
</strong>
|
|
{{#rollWasCrit() result}}<br />+ Crtical success(es){{/rollWasCrit() result}}
|
|
{{#rollWasFumble() result}}<br />+ Complication(s){{/rollWasFumble() result}}
|
|
</p>
|
|
<p>Difficulty {{difficulty}}</p>
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-foattribute">
|
|
<div class="container">
|
|
<h1>{{name}}: {{attr}}</h1>
|
|
<p>{{attr_num}}</p>
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-focd">
|
|
{{#rollBetween() roll 1 1}}
|
|
<div class="container diehit">
|
|
<h1>{{name}} rolls a combat die</h1>
|
|
<p><strong>1 damage</strong></p>
|
|
{{continue}}
|
|
</div>
|
|
{{/rollBetween() roll 1 1}}
|
|
{{#rollBetween() roll 2 2}}
|
|
<div class="container diehitx2">
|
|
<h1>{{name}} rolls a combat die</h1>
|
|
<p><strong>2 damage</strong></p>
|
|
{{continue}}
|
|
</div>
|
|
{{/rollBetween() roll 2 2}}
|
|
{{#rollBetween() roll 3 4}}
|
|
<div class="container die">
|
|
<h1>{{name}} rolls a combat die</h1>
|
|
<p><strong>Nothing</strong></p>
|
|
{{continue}}
|
|
</div>
|
|
{{/rollBetween() roll 3 4}}
|
|
{{#rollBetween() roll 5 6}}
|
|
<div class="container dievb">
|
|
<h1>{{name}} rolls a combat die</h1>
|
|
<p><strong>1 damage + damage effects trigger</strong></p>
|
|
{{continue}}
|
|
</div>
|
|
{{/rollBetween() roll 5 6}}
|
|
</rolltemplate>
|