Files
roll20-character-sheets/Delta Green 2/deltagreen.html
T
uriele 0b8e5538b1 fix: add image size if the image server breaks
feat: repeating sections updated when leveling up
2025-01-10 10:37:41 -05:00

8541 lines
497 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<input name="attr_version" type="hidden" value="1.99"/>
<!-- Link stats to skills-->
<input type="hidden" name="attr_cd_bar1_l" value="sanity_points"/>
<input type="hidden" name="attr_cd_bar2_l" value="willpower_points"/>
<input type="hidden" name="attr_cd_bar3_l" value="hit_points"/>
<input name="attr_initial_san" type="hidden" value="1"/>
<input name="attr_initial_con" type="hidden" value="1"/>
<input name="attr_initial_str" type="hidden" value="1"/>
<input name="attr_initial_hp" type="hidden" value="1"/>
<input name="attr_sanity_points_old" type="hidden" value="0"/>
<input name="attr_breaking_point_old" type="hidden" value="0"/>
<input name="attr_reached_breaking_points" type="hidden" value="0"/>
<input name="attr_ritual_skill" type="hidden" value="0"/>
<input type="hidden" name="attr_character_creation_bonds" value="value"/>
<button class="none" type="action" name="act_nothing"> </button>
<!--TABS & LOGO-->
<!-- =============================-->
<div class="datahide">
<input data-i18n-value="accounting" name="attr_accounting_name" value="accounting"/>
<input data-i18n-value="alertness" name="attr_alertness_name" value="alertness"/>
<input data-i18n-value="anthropology" name="attr_anthropology_name" value="anthropology"/>
<input data-i18n-value="archeology" name="attr_archeology_name" value="archeology"/>
<input data-i18n-value="art 1" name="attr_art_1_name" value="art_1"/>
<input data-i18n-value="art 2" name="attr_art_2_name" value="art_2"/>
<input data-i18n-value="artillery" name="attr_artillery_name" value="artillery"/>
<input data-i18n-value="athletics" name="attr_athletics_name" value="athletics"/>
<input data-i18n-value="bureaucracy" name="attr_bureaucracy_name" value="bureaucracy"/>
<input data-i18n-value="computer science" name="attr_computer_science_name" value="computer science"/>
<input data-i18n-value="craft 1" name="attr_craft_1_name" value="craft_1"/>
<input data-i18n-value="craft 2" name="attr_craft_2_name" value="craft_2"/>
<input data-i18n-value="criminology" name="attr_criminology_name" value="criminology"/>
<input data-i18n-value="demolitions" name="attr_demolitions_name" value="demolitions"/>
<input data-i18n-value="disguise" name="attr_disguise_name" value="disguise"/>
<input data-i18n-value="dodge" name="attr_dodge_name" value="dodge"/>
<input data-i18n-value="drive" name="attr_drive_name" value="drive"/>
<input data-i18n-value="firearms" name="attr_firearms_name" value="firearms"/>
<input data-i18n-value="first aid" name="attr_first_aid_name" value="first aid"/>
<input data-i18n-value="forensics" name="attr_forensics_name" value="forensics"/>
<input data-i18n-value="heavy machinery" name="attr_heavy_machinery_name" value="heavy machinery"/>
<input data-i18n-value="heavy weapons" name="attr_heavy_weapons_name" value="heavy weapons"/>
<input data-i18n-value="history" name="attr_history_name" value="history"/>
<input data-i18n-value="humint" name="attr_humint_name" value="humint"/>
<input data-i18n-value="law" name="attr_law_name" value="law"/>
<input data-i18n-value="medicine" name="attr_medicine_name" value="medicine"/>
<input data-i18n-value="melee weapons" name="attr_melee_weapons_name" value="melee weapons"/>
<input data-i18n-value="military science 1" name="attr_military_science_1_name" value="military science 1"/>
<input data-i18n-value="military science 2" name="attr_military_science_2_name" value="military science 2"/>
<input data-i18n-value="navigate" name="attr_navigate_name" value="navigate"/>
<input data-i18n-value="occult" name="attr_occult_name" value="occult"/>
<input data-i18n-value="persuade" name="attr_persuade_name" value="persuade"/>
<input data-i18n-value="pharmacy" name="attr_pharmacy_name" value="pharmacy"/>
<input data-i18n-value="pilot" name="attr_pilot_name" value="pilot"/>
<input data-i18n-value="pilot" name="attr_pilot_name" value="pilot"/>
<input data-i18n-value="psychotherapy" name="attr_psychotherapy_name" value="psychotherapy"/>
<input data-i18n-value="ride" name="attr_ride_name" value="ride"/>
<input data-i18n-value="science 1" name="attr_science_1_name" value="science 1"/>
<input data-i18n-value="science 2" name="attr_science_2_name" value="science 2"/>
<input data-i18n-value="search" name="attr_search_name" value="search"/>
<input data-i18n-value="sigint" name="attr_sigint_name" value="sigint"/>
<input data-i18n-value="stealth" name="attr_stealth_name" value="stealth"/>
<input data-i18n-value="surgery" name="attr_surgery_name" value="surgery"/>
<input data-i18n-value="survival" name="attr_survival_name" value="survival"/>
<input data-i18n-value="swim" name="attr_swim_name" value="swim"/>
<input data-i18n-value="unarmed combat" name="attr_unarmed_combat_name" value="unarmed combat"/>
</div>
<!--datalist(id="")
each (skill,_) in skills1
+listskills(skill)
-->
<datalist id="weaponskills">
<option value="@{athletics}">athletics</option>
<option value="@{artillery}">artillery</option>
<option value="@{demolitions}">demolitions</option>
<option value="@{firearms}">firearms</option>
<option value="@{heavy_weapons}">heavy weapons</option>
<option value="@{melee_weapons}">melee weapons</option>
<option value="@{unarmed_combat}">unarmed combat</option>
<option value="@{drive}">drive</option>
<option value="@{heavy_machinery}">heavy machinery</option>
<option value="@{strength}">strength</option>
<option value="@{dexterity}">dexterity</option>
<option value="@{constitution}">constitution</option>
<option value="@{intelligence}">intelligence</option>
<option value="@{power}">power</option>
<option value="@{charisma}">charisma</option>
</datalist>
<datalist id="ritualskills">
<option value="@{ritual_skill}">ritual_skill</option>
<option value="@{unnatural}">unnatural</option>
<option value="@{athletics}">athletics</option>
<option value="@{artillery}">artillery</option>
<option value="@{demolitions}">demolitions</option>
<option value="@{firearms}">firearms</option>
<option value="@{heavy_weapons}">heavy weapons</option>
<option value="@{melee_weapons}">melee weapons</option>
<option value="@{unarmed_combat}">unarmed combat</option>
<option value="@{drive}">drive</option>
<option value="@{heavy_machinery}">heavy machinery</option>
<option value="@{strength}">strength</option>
<option value="@{dexterity}">dexterity</option>
<option value="@{constitution}">constitution</option>
<option value="@{intelligence}">intelligence</option>
<option value="@{power}">power</option>
<option value="@{charisma}">charisma</option>
</datalist>
<datalist id="allskills">
<option value="@{accounting}">accounting</option>
<option value="@{alertness}">alertness</option>
<option value="@{anthropology}">anthropology</option>
<option value="@{archeology}">archeology</option>
<option value="@{artillery}">artillery</option>
<option value="@{athletics}">athletics</option>
<option value="@{bureaucracy}">bureaucracy</option>
<option value="@{computer_science}">computer science</option>
<option value="@{criminology}">criminology</option>
<option value="@{demolitions}">demolitions</option>
<option value="@{disguise}">disguise</option>
<option value="@{dodge}">dodge</option>
<option value="@{drive}">drive</option>
<option value="@{firearms}">firearms</option>
<option value="@{first_aid}">first aid</option>
<option value="@{forensics}">forensics</option>
<option value="@{heavy_machinery}">heavy machinery</option>
<option value="@{heavy_weapons}">heavy weapons</option>
<option value="@{history}">history</option>
<option value="@{humint}">HUMINT</option>
<option value="@{law}">law</option>
<option value="@{medicine}">medicine</option>
<option value="@{melee_weapons}">melee weapons</option>
<option value="@{navigate}">navigate</option>
<option value="@{occult}">occult</option>
<option value="@{persuade}">persuade</option>
<option value="@{pharmacy}">pharmacy</option>
<option value="@{psychotherapy}">psychotherapy</option>
<option value="@{ride}">ride</option>
<option value="@{search}">search</option>
<option value="@{sigint}">SIGINT</option>
<option value="@{stealth}">stealth</option>
<option value="@{surgery}">surgery</option>
<option value="@{survival}">survival</option>
<option value="@{swim}">swim</option>
<option value="@{unarmed_combat}">unarmed combat</option>
<option value="@{unnatural}">unnatural</option>
<option value="@{strength}">strength</option>
<option value="@{constitution}">constitution</option>
<option value="@{dexterity}">dexterity</option>
<option value="@{intelligence}">intelligence</option>
<option value="@{power}">power</option>
<option value="@{charisma}">charisma</option>
</datalist>
<!--datalist(id="defensive-qualities")
each val,key in defensiveQualities
+listskills(key)
-->
<div class="compendium-drop-target">
<input name="attr_drop_name" type="hidden" accept="Name"/>
<input name="attr_drop_data" type="hidden" accept="data"/>
<!-- TABS-->
<!-- =============================-->
<div class="picture">
<input class="avatar_checker" type="hidden" name="attr_character_avatar"/>
<div class="dmi_avatar"><img name="attr_character_avatar"/></div>
</div>
<input class="use_global_modifier" type="hidden" name="attr_use_global_modifier"/>
<div class="tabs grid">
<!-- Buttons to toggle on GM whisper-->
<div class="first"><span data-i18n-title="GM Whisper">GM Whisper</span>
<label class="switch" data-i18-titlen="whisper rolls to gm" title="whisper rolls to gm">
<input class="whisper-toggle" name="attr_gm_toggle" type="checkbox" value="/w gm"/><span class="slider"></span>
</label>
</div>
<!-- LOGO--><img class="logo" alt="Delta Green" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Delta%20Green%202/img/deltagreenlogo.svg"/>
<!--img(alt='Delta Green' src='https://raw.githubusercontent.com/uriele/roll20-character-sheets/8cc07dbbf9acafd43b1de49bcaf08dbcee19e3a6/Delta%20Green%202/img/deltagreenlogo.svg')-->
<div class="last">
<input class="settinggear" name="attr_mysettings" type="checkbox" value="settings"/><span></span>
</div>
<input class="setting_gear" type="hidden" name="attr_mysettings"/>
<input class="use_global_modifier" type="hidden" name="attr_use_global_modifier"/>
<div class="grid global-modifier"><span class="capitalize" data-i18n="global modifier">Global Modifier</span>
<input type="text" name="attr_global_modifier_number" placeholder="0"/>
<button data-i18n="reset" type="action" name="act_reset_global_modifier">reset</button><span></span>
</div>
<div class="grid navmenu">
<input class="onsettings" name="attr_mysettings" type="hidden"/>
<input class="type" name="attr_sheet_type" type="hidden"/><a class="pc nosettings" href="#personal-data-pc" data-i18n="personal data">Personal Data </a><a class="pc nosettings" href="#statistical-data-pc" data-i18n="statistical data">Statistical Data</a><a class="pc nosettings" href="#psychological-data-pc" data-i18n="psychological data">Psychological Data</a><a class="pc nosettings" href="#applicable-skills-pc" data-i18n="applicable skill sets">Applicable Skill sets</a><a class="pc nosettings" href="#injuries-pc" data-i18n="injuries">Injuries</a><a class="pc nosettings" href="#equipment-pc" data-i18n="equipment">Equipment</a><a class="pc nosettings" href="#remarks-pc" data-i18n="remarks">Remarks</a><a class="npc nosettings" href="#personal-data-npc" data-i18n="personal data">Personal Data </a><a class="npc nosettings" href="#source-information-npc" data-i18n="source of information">source of information</a><a class="npc nosettings" href="#statistical-data-npc" data-i18n="statistical data">Statistical Data</a><a class="npc nosettings" href="#applicable-skills-npc" data-i18n="applicable skill sets">Applicable Skill sets</a><a class="npc nosettings" href="#equipment-npc" data-i18n="equipment">equipment</a><a class="npc nosettings" href="#abilities-npc" data-i18n="abilities">abilities</a><a class="npc nosettings" href="#remarks-npc" data-i18n="remarks">Remarks</a><a class="navsettings" href="#general-settings" data-i18n="general">general </a><a class="navsettings" href="#modifier-settings" data-i18n="modifier">modifier </a><a class="navsettings" href="#automations-settings" data-i18n="automations">automations </a><a class="navsettings" href="#experimental-settings" data-i18n="experimental">experimental </a>
</div>
<div class="grid empty"></div>
</div>
<!-- COMPENDIUM DATA-->
<!-- SETTINGS-->
<input class="setting_gear" type="hidden" name="attr_mysettings"/>
<div class="settings">
<!-- SETTINGS-->
<!-- =============================-->
<div class="section-main border" id="general-settings">
<div class="section-title" data-i18n-title="general">general</div>
<div class="section-content threecolumns">
<div class="section-item">
<div class="radio">
<label class="settingradio">Sheet Type</label><span>
<input name="attr_sheet_type" type="radio" value="pc" checked="checked"/><span data-i18n-value="agent">agent</span></span><span>
<input name="attr_sheet_type" type="radio" value="npc"/><span data-i18n-value="npc">NPC</span></span><span>
<input name="attr_sheet_type" type="radio" value="handler"/><span data-i18n-value="handler">Handler</span></span><span>
</span>
</div>
</div>
<div class="section-item">
<div class="radio">
<label class="settingradio">Sheet Features</label>
<!--span(style='margin-left: 0;')
input(name='attr_visible_pc_rituals' type='checkbox' value='active' checked)
span(data-i18n-value='Agent rituals' ) Agents rituals
--><span style="margin-left: 0;">
<input name="attr_character_creation_bonds" type="checkbox" value="active"/><span data-i18n-value="character creations bonds">Character creation bonds</span></span>
</div>
</div>
<div class="section-item23">
<div class="column-reset">
<label class="settingradio">Reset Sheet</label><span class="breakingpoints-reset"><span data-i18n="breaking point">breaking point</span>
<input class="settinginput" name="attr_breaking_point_reset" type="text"/></span>
<button data-i18n="reset" type="action" name="act_reset_breaking_point">reset</button><span data-i18n-value="stats">stats </span>
<button data-i18n="reset" type="action" name="act_reset_stats">reset</button><span data-i18n-value="skills">skills</span>
<button data-i18n="reset" type="action" name="act_reset_skills">reset</button><span data-i18n-value="equipment">equipment</span>
<button data-i18n="reset" type="action" name="act_reset_equipment">reset</button><span data-i18n-value="reset all">reset all</span>
<button data-i18n="reset" type="action" name="act_reset_all">reset</button>
</div>
</div>
</div>
<div class="section-title" id="modifier-settings" data-i18n-title="modifier">Modifiers</div>
<div class="section-content threecolumns">
<div class="section-item">
<div class="radio">
<label class="settingradio">WillPower</label><span>
<input name="attr_mod_willpower_check" type="radio" value="none" checked="checked"/><span data-i18n-value="none">none</span></span><span>
<input name="attr_mod_willpower_check" type="radio" value="lowonly"/><span data-i18n-value="low willpower" for="low_willpower">low willpower</span></span><span>
<input name="attr_mod_willpower_check" type="radio" value="all"/><span data-i18n-value="zero_willpower" for="zero_willpower">zero willpower</span></span>
</div>
<input type="hidden" name="attr_zero_willpower" value="0"/>
<input type="hidden" name="attr_low_willpower" value="0"/>
</div>
<div class="section-item">
<div class="radio">
<label class="settingradio">Combat</label><span class="workinprogress">
<input class="styled-checkbox" name="attr_aim_button" type="checkbox" value="active" id="aim_button" disabled="disabled"/><span data-i18n-value="aim" for="aim_button">Aim</span></span>
</div>
</div>
<div class="section-item">
<div class="radio">
<label class="settingradio">General</label>
<_modifierFlag></_modifierFlag><span>
<input name="attr_useKey" type="radio" value="shift" checked="checked"/><span data-i18n-value="shiftKey">Shift Key </span></span><span>
<input name="attr_useKey" type="radio" value="ctrl"/><span data-i18n-value="ctrlKey">Ctrl Key</span></span><span>
<input name="attr_useKey" type="radio" value="alt"/><span data-i18n-value="altKey">Alt Key</span></span><span>
<input name="attr_useKey" type="radio" value="meta"/><span data-i18n-value="metaKey">Meta Key</span></span><span>
<input name="attr_useKey" type="radio" value="none"/><span data-i18n-value="noKey">No Key</span></span><span>
<input name="attr_useKey" type="radio" value="global"/><span data-i18n-value="globalModifier">Global Modifier</span>
<input type="checkbox" name="attr_use_global_modifier" value="active" style="display:none" unchecked="unchecked"/></span>
</div>
</div>
</div>
<div class="section-title" id="automations-settings" data-i18n-title="automations">Automations</div>
<div class="section-content threecolumns">
<div class="section-item workinprogress">
<input class="styled-checkbox" name="attr_allow_reaction" type="checkbox" value="active" id="allow_reaction" disabled="disabled"/><span data-i18n-value="allow reaction" for="allow_reaction">Allow Reaction</span>
</div>
<div class="section-item">
<input class="styled-checkbox" name="attr_track_bullets" type="checkbox" value="active" id="track_bullets"/><span data-i18n-value="track bullets" for="track_bullets">Track Bullets</span>
</div>
<div class="section-item workinprogress">
<input class="styled-checkbox" name="attr_track_disorder_triggers" type="checkbox" value="active" id="track_disorder_triggers" disabled="disabled"/><span data-i18n-value="track disorder triggers" for="track_disorder_triggers">Track Disorder Triggers</span>
</div>
<div class="section-item">
<input class="styled-checkbox" name="attr_track_breaking_points" type="checkbox" value="active" id="track_breaking_points"/><span data-i18n-value="track breaking points" for="track_breaking_points">Track Breaking Points</span>
</div>
</div>
<div class="section-title" id="experimental-settings" data-i18n-title="experimental">Experimental</div>
<div class="section-content threecolumns">
<div class="section-item workinprogress">
<input class="styled-checkbox" name="attr_use_new_motivation" type="checkbox" value="active" id="use_new_motivation" disabled="disabled"/><span data-i18n-value="use new motivation" for="use_new_motivation">Use New Motivation</span>
</div>
<div class="section-item">
<input class="styled-checkbox" name="attr_advanced_weapons" type="checkbox" value="active" id="use_advanced_weapons"/><span data-i18n-value="use advanced weapons" for="use_advanced_weapons">Use Advanced Weapons</span>
</div>
</div>
</div>
</div>
<div class="mainsheet">
<input class="type" name="attr_sheet_type" type="hidden" value="pc"/>
<input class="display_string" name="attr_toggles" type="hidden" value=""/>
<!-- CHARACTER SHEETS-->
<!-- NPC SHEET-->
<!-- =============================-->
<div class="npc">
<input class="use_global_modifier" type="hidden" name="attr_use_global_modifier"/>
<div class="grid_npc name-and-description border" id="personal-data-npc">
<div class="header">
<h1 class="grid__item_last" data-i18n="name and description">name and description</h1>
</div>
<div class="inner-grid inner-main">
<div class="grid__item_last colheader">
<h2 class="npc" data-i18n="name:">name:</h2>
</div>
<div class="grid__item_last">
<input data-i18n-placeholder="character name" name="attr_character_name" placeholder="Character name" title="@{name}" type="text"/>
</div>
<div class="grid__item_last colheader align_top">
<h2 class="npc" data-i18n="description:">description:</h2>
</div>
<div class="grid__item_last align_top">
<textarea name="attr_npc_description" placeholder="description" title="@{npc_description}"></textarea>
</div>
<button class="none two" type="roll" name="roll_sanity_loss_success" value="@{sanity_loss_success_action}"> </button>
<button class="none" type="action" name="act_sanity_loss_success-action"> </button>
<input type="hidden" name="attr_sanity_loss_success_action" value=""/>
<button class="none two" type="roll" name="roll_sanity_loss_failure" value="@{sanity_loss_failure_action}"> </button>
<button class="none" type="action" name="act_sanity_loss_failure-action"> </button>
<input type="hidden" name="attr_sanity_loss_failure_action" value=""/><span class="sanityLine">
<div class="buttonwrapper">
<button class="sanroll inSkills normal_div one" type="action" name="attr_sanity_loss_r" value="@{sanity_loss_action}">
<h3 class="aligned-center" data-i18n-title="sanity loss">sanity loss</h3>
</button>
<button class="none" type="roll" name="roll_sanity_loss" value="@{sanity_loss_action}"> </button>
<button class="none" type="action" name="act_sanity_loss-action"> </button>
<input type="hidden" name="attr_sanity_loss_action" value=""/>
</div><span class="slashpart">
<input data-i18n-placeholder="0" name="attr_sanity_loss_success" placeholder="0" title="@{sanity_loss_success}" type="text" value="0"/><span>/</span>
<input data-i18n-placeholder="0" name="attr_sanity_loss_failure" placeholder="0" title="@{sanity_loss_success}" type="text" value="1"/></span>
<select class="small-select" name="attr_sanity_type">
<optgroup label="Sanity Type">
<option data-i18n="unnatural" value="unnatural">unnatural</option>
<option data-i18n="violence" value="violence">violence</option>
<option data-i18n="helplessness" value="helplessness">helplessness</option>
</optgroup>
</select></span>
</div>
</div>
<div class="grid_npc sources-of-information border" id="source-information-npc">
<div class="header">
<h1 class="grid__item_last" data-i18n="sources of information">sources of information</h1>
</div>
<div class="right-grid">
<textarea class="area" style="height:15rem;" name="attr_npc_sources" data-i18n-placeholder="sources of information" placeholder="sources of information"></textarea>
</div>
</div>
<div class="grid_npc stat-data border" id="statistical-data-npc">
<div class="header stat-grid">
<button class="link roll" type="action" name="attr_strength_r">
<h1 class="grid__item">STR </h1>
</button>
<button class="link roll" type="action" name="attr_constitution_r">
<h1 class="grid__item">CON </h1>
</button>
<button class="link roll" type="action" name="attr_dexterity_r">
<h1 class="grid__item">DEX </h1>
</button>
<button class="link roll" type="action" name="attr_intelligence_r">
<h1 class="grid__item">INT </h1>
</button>
<button class="link roll" type="action" name="attr_power_r">
<h1 class="grid__item">POW </h1>
</button>
<button class="link roll" type="action" name="attr_charisma_r">
<h1 class="grid__item">CHA </h1>
</button>
<h1 class="grid__item">HP </h1>
<h1 class="grid__item_last">WP</h1>
<button class="link roll" type="action" name="attr_sanity_points_r">
<h1 class="grid__item">SAN </h1>
</button>
<h1 class="grid__item">BP </h1>
</div>
<div class="inner-main stat-grid">
<div class="grid__item">
<input data-i18n-placeholder="0" name="attr_strength_score" placeholder="-" title="@{STR}" type="text"/>
</div>
<div class="grid__item">
<input data-i18n-placeholder="0" name="attr_constitution_score" placeholder="-" title="@{CON}" type="text"/>
</div>
<div class="grid__item">
<input data-i18n-placeholder="0" name="attr_dexterity_score" placeholder="-" title="@{DEX}" type="text"/>
</div>
<div class="grid__item">
<input data-i18n-placeholder="0" name="attr_intelligence_score" placeholder="-" title="@{INT}" type="text"/>
</div>
<div class="grid__item">
<input data-i18n-placeholder="0" name="attr_power_score" placeholder="-" title="@{POW}" type="text"/>
</div>
<div class="grid__item">
<input data-i18n-placeholder="0" name="attr_charisma_score" placeholder="-" title="@{CHA}" type="text"/>
</div>
<div class="grid__item">
<input style="width:3em !important;" data-i18n-placeholder="0" name="attr_hit_points" placeholder="-" title="@{HP}" type="text"/><span>/</span><span class="center" style="width:40%" name="attr_hit_points_max"></span>
</div>
<div class="grid__item">
<input style="width:3em !important;" data-i18n-placeholder="0" name="attr_willpower_points" placeholder="-" title="@{WP}" type="text"/><span>/</span><span class="center" style="width:40%" name="attr_willpower_points_max"></span>
</div>
<div class="grid__item">
<input style="width:3em !important;" data-i18n-placeholder="0" name="attr_sanity_points" placeholder="-" title="@{WP}" type="text"/><span>/</span><span class="center" style="width:40%" name="attr_sanity_points_max"></span>
</div>
<div class="grid__item_last">
<input style="width:3em !important;" data-i18n-placeholder="0" name="attr_breaking_point" placeholder="-" title="@{BP}" type="text"/><span>/</span><span class="center" style="width:40%" name="attr_breaking_point_max"></span>
</div>
</div>
</div>
<div class="grid_npc armor-skills-abilities-other border" id="applicable-skills-npc">
<div class="header">
<h1 data-i18n="armor, skills, abilities, and other notes">"armor, skills, abilities, and other notes</h1>
</div>
<div class="header">
<h2 class="npc colon" data-i18n="skills">skills.inner-main</h2>
</div>
<div class="inner-main">
<h2 class="npc formatted" data-i18n="general">general</h2>
<div class="skill-summary-container">
<input class="visible" name="attr_accounting_visible" title="@{accounting_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_accounting_r" value="@{accounting_action}">
<h3 class="aligned-left" data-i18n-title="accounting">accounting</h3><span class="para" name="attr_accounting"></span>
</button>
</div>
<input class="visible" name="attr_alertness_visible" title="@{alertness_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_alertness_r" value="@{alertness_action}">
<h3 class="aligned-left" data-i18n-title="alertness">alertness</h3><span class="para" name="attr_alertness"></span>
</button>
</div>
<input class="visible" name="attr_anthropology_visible" title="@{anthropology_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_anthropology_r" value="@{anthropology_action}">
<h3 class="aligned-left" data-i18n-title="anthropology">anthropology</h3><span class="para" name="attr_anthropology"></span>
</button>
</div>
<input class="visible" name="attr_archeology_visible" title="@{archeology_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_archeology_r" value="@{archeology_action}">
<h3 class="aligned-left" data-i18n-title="archeology">archeology</h3><span class="para" name="attr_archeology"></span>
</button>
</div>
<input class="visible" name="attr_art_1_visible" title="@{art_1_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_art_1_r" value="@{art_1_action}">
<h3 class="aligned-left" data-i18n-title="art 1">art 1</h3><span class="para" name="attr_art_1"></span>
</button>
</div>
<input class="visible" name="attr_art_2_visible" title="@{art_2_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_art_2_r" value="@{art_2_action}">
<h3 class="aligned-left" data-i18n-title="art 2">art 2</h3><span class="para" name="attr_art_2"></span>
</button>
</div>
<input class="visible" name="attr_artillery_visible" title="@{artillery_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_artillery_r" value="@{artillery_action}">
<h3 class="aligned-left" data-i18n-title="artillery">artillery</h3><span class="para" name="attr_artillery"></span>
</button>
</div>
<input class="visible" name="attr_athletics_visible" title="@{athletics_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_athletics_r" value="@{athletics_action}">
<h3 class="aligned-left" data-i18n-title="athletics">athletics</h3><span class="para" name="attr_athletics"></span>
</button>
</div>
<input class="visible" name="attr_bureaucracy_visible" title="@{bureaucracy_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_bureaucracy_r" value="@{bureaucracy_action}">
<h3 class="aligned-left" data-i18n-title="bureaucracy">bureaucracy</h3><span class="para" name="attr_bureaucracy"></span>
</button>
</div>
<input class="visible" name="attr_computer_science_visible" title="@{computer_science_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_computer_science_r" value="@{computer_science_action}">
<h3 class="aligned-left" data-i18n-title="computer science">computer science</h3><span class="para" name="attr_computer_science"></span>
</button>
</div>
<input class="visible" name="attr_craft_1_visible" title="@{craft_1_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_craft_1_r" value="@{craft_1_action}">
<h3 class="aligned-left" data-i18n-title="craft 1">craft 1</h3><span class="para" name="attr_craft_1"></span>
</button>
</div>
<input class="visible" name="attr_craft_2_visible" title="@{craft_2_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_craft_2_r" value="@{craft_2_action}">
<h3 class="aligned-left" data-i18n-title="craft 2">craft 2</h3><span class="para" name="attr_craft_2"></span>
</button>
</div>
<input class="visible" name="attr_criminology_visible" title="@{criminology_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_criminology_r" value="@{criminology_action}">
<h3 class="aligned-left" data-i18n-title="criminology">criminology</h3><span class="para" name="attr_criminology"></span>
</button>
</div>
<input class="visible" name="attr_demolitions_visible" title="@{demolitions_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_demolitions_r" value="@{demolitions_action}">
<h3 class="aligned-left" data-i18n-title="demolitions">demolitions</h3><span class="para" name="attr_demolitions"></span>
</button>
</div>
<input class="visible" name="attr_disguise_visible" title="@{disguise_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_disguise_r" value="@{disguise_action}">
<h3 class="aligned-left" data-i18n-title="disguise">disguise</h3><span class="para" name="attr_disguise"></span>
</button>
</div>
<input class="visible" name="attr_dodge_visible" title="@{dodge_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_dodge_r" value="@{dodge_action}">
<h3 class="aligned-left" data-i18n-title="dodge">dodge</h3><span class="para" name="attr_dodge"></span>
</button>
</div>
<input class="visible" name="attr_drive_visible" title="@{drive_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_drive_r" value="@{drive_action}">
<h3 class="aligned-left" data-i18n-title="drive">drive</h3><span class="para" name="attr_drive"></span>
</button>
</div>
<input class="visible" name="attr_firearms_visible" title="@{firearms_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_firearms_r" value="@{firearms_action}">
<h3 class="aligned-left" data-i18n-title="firearms">firearms</h3><span class="para" name="attr_firearms"></span>
</button>
</div>
<input class="visible" name="attr_first_aid_visible" title="@{first_aid_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_first_aid_r" value="@{first_aid_action}">
<h3 class="aligned-left" data-i18n-title="first aid">first aid</h3><span class="para" name="attr_first_aid"></span>
</button>
</div>
<input class="visible" name="attr_forensics_visible" title="@{forensics_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_forensics_r" value="@{forensics_action}">
<h3 class="aligned-left" data-i18n-title="forensics">forensics</h3><span class="para" name="attr_forensics"></span>
</button>
</div>
<input class="visible" name="attr_heavy_machinery_visible" title="@{heavy_machinery_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_heavy_machinery_r" value="@{heavy_machinery_action}">
<h3 class="aligned-left" data-i18n-title="heavy machinery">heavy machinery</h3><span class="para" name="attr_heavy_machinery"></span>
</button>
</div>
<input class="visible" name="attr_heavy_weapons_visible" title="@{heavy_weapons_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_heavy_weapons_r" value="@{heavy_weapons_action}">
<h3 class="aligned-left" data-i18n-title="heavy weapons">heavy weapons</h3><span class="para" name="attr_heavy_weapons"></span>
</button>
</div>
<input class="visible" name="attr_history_visible" title="@{history_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_history_r" value="@{history_action}">
<h3 class="aligned-left" data-i18n-title="history">history</h3><span class="para" name="attr_history"></span>
</button>
</div>
<input class="visible" name="attr_humint_visible" title="@{humint_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_humint_r" value="@{humint_action}">
<h3 class="aligned-left" data-i18n-title="HUMINT">HUMINT</h3><span class="para" name="attr_humint"></span>
</button>
</div>
<input class="visible" name="attr_law_visible" title="@{law_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_law_r" value="@{law_action}">
<h3 class="aligned-left" data-i18n-title="law">law</h3><span class="para" name="attr_law"></span>
</button>
</div>
<input class="visible" name="attr_medicine_visible" title="@{medicine_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_medicine_r" value="@{medicine_action}">
<h3 class="aligned-left" data-i18n-title="medicine">medicine</h3><span class="para" name="attr_medicine"></span>
</button>
</div>
<input class="visible" name="attr_melee_weapons_visible" title="@{melee_weapons_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_melee_weapons_r" value="@{melee_weapons_action}">
<h3 class="aligned-left" data-i18n-title="melee weapons">melee weapons</h3><span class="para" name="attr_melee_weapons"></span>
</button>
</div>
<input class="visible" name="attr_military_science_1_visible" title="@{military_science_1_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_military_science_1_r" value="@{military_science_1_action}">
<h3 class="aligned-left" data-i18n-title="military science 1">military science 1</h3><span class="para" name="attr_military_science_1"></span>
</button>
</div>
<input class="visible" name="attr_military_science_2_visible" title="@{military_science_2_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_military_science_2_r" value="@{military_science_2_action}">
<h3 class="aligned-left" data-i18n-title="military science 2">military science 2</h3><span class="para" name="attr_military_science_2"></span>
</button>
</div>
<input class="visible" name="attr_navigate_visible" title="@{navigate_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_navigate_r" value="@{navigate_action}">
<h3 class="aligned-left" data-i18n-title="navigate">navigate</h3><span class="para" name="attr_navigate"></span>
</button>
</div>
<input class="visible" name="attr_occult_visible" title="@{occult_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_occult_r" value="@{occult_action}">
<h3 class="aligned-left" data-i18n-title="occult">occult</h3><span class="para" name="attr_occult"></span>
</button>
</div>
<input class="visible" name="attr_persuade_visible" title="@{persuade_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_persuade_r" value="@{persuade_action}">
<h3 class="aligned-left" data-i18n-title="persuade">persuade</h3><span class="para" name="attr_persuade"></span>
</button>
</div>
<input class="visible" name="attr_pharmacy_visible" title="@{pharmacy_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_pharmacy_r" value="@{pharmacy_action}">
<h3 class="aligned-left" data-i18n-title="pharmacy">pharmacy</h3><span class="para" name="attr_pharmacy"></span>
</button>
</div>
<input class="visible" name="attr_pilot_1_visible" title="@{pilot_1_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_pilot_1_r" value="@{pilot_1_action}">
<h3 class="aligned-left" data-i18n-title="pilot 1">pilot 1</h3><span class="para" name="attr_pilot_1"></span>
</button>
</div>
<input class="visible" name="attr_pilot_2_visible" title="@{pilot_2_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_pilot_2_r" value="@{pilot_2_action}">
<h3 class="aligned-left" data-i18n-title="pilot 2">pilot 2</h3><span class="para" name="attr_pilot_2"></span>
</button>
</div>
<input class="visible" name="attr_psychotherapy_visible" title="@{psychotherapy_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_psychotherapy_r" value="@{psychotherapy_action}">
<h3 class="aligned-left" data-i18n-title="psychotherapy">psychotherapy</h3><span class="para" name="attr_psychotherapy"></span>
</button>
</div>
<input class="visible" name="attr_ride_visible" title="@{ride_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_ride_r" value="@{ride_action}">
<h3 class="aligned-left" data-i18n-title="ride">ride</h3><span class="para" name="attr_ride"></span>
</button>
</div>
<input class="visible" name="attr_science_1_visible" title="@{science_1_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_science_1_r" value="@{science_1_action}">
<h3 class="aligned-left" data-i18n-title="science 1">science 1</h3><span class="para" name="attr_science_1"></span>
</button>
</div>
<input class="visible" name="attr_science_2_visible" title="@{science_2_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_science_2_r" value="@{science_2_action}">
<h3 class="aligned-left" data-i18n-title="science 2">science 2</h3><span class="para" name="attr_science_2"></span>
</button>
</div>
<input class="visible" name="attr_search_visible" title="@{search_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_search_r" value="@{search_action}">
<h3 class="aligned-left" data-i18n-title="search">search</h3><span class="para" name="attr_search"></span>
</button>
</div>
<input class="visible" name="attr_sigint_visible" title="@{sigint_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_sigint_r" value="@{sigint_action}">
<h3 class="aligned-left" data-i18n-title="SIGINT">SIGINT</h3><span class="para" name="attr_sigint"></span>
</button>
</div>
<input class="visible" name="attr_stealth_visible" title="@{stealth_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_stealth_r" value="@{stealth_action}">
<h3 class="aligned-left" data-i18n-title="stealth">stealth</h3><span class="para" name="attr_stealth"></span>
</button>
</div>
<input class="visible" name="attr_surgery_visible" title="@{surgery_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_surgery_r" value="@{surgery_action}">
<h3 class="aligned-left" data-i18n-title="surgery">surgery</h3><span class="para" name="attr_surgery"></span>
</button>
</div>
<input class="visible" name="attr_survival_visible" title="@{survival_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_survival_r" value="@{survival_action}">
<h3 class="aligned-left" data-i18n-title="survival">survival</h3><span class="para" name="attr_survival"></span>
</button>
</div>
<input class="visible" name="attr_swim_visible" title="@{swim_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_swim_r" value="@{swim_action}">
<h3 class="aligned-left" data-i18n-title="swim">swim</h3><span class="para" name="attr_swim"></span>
</button>
</div>
<input class="visible" name="attr_unarmed_combat_visible" title="@{unarmed_combat_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_unarmed_combat_r" value="@{unarmed_combat_action}">
<h3 class="aligned-left" data-i18n-title="unarmed combat">unarmed combat</h3><span class="para" name="attr_unarmed_combat"></span>
</button>
</div>
<input class="visible" name="attr_unnatural_visible" title="@{unnatural_visible}" type="hidden"/>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_unnatural_r" value="@{unnatural_action}">
<h3 class="aligned-left" data-i18n-title="unnatural">unnatural</h3><span class="para" name="attr_unnatural"></span>
</button>
</div>
</div>
<h2 class="npc formatted" data-i18n="extra">extra</h2>
<div class="skill-summary-repeat">
<fieldset class="repeating_skills">
<div class="buttonwrapper_rep">
<div class="buttonwrapper">
<button class="repeating_roll two inSkills" type="action" name="attr_skill_r" value="@{skill_action}">
<h3 class="aligned-left"><span name="attr_name"></span></h3><span class="para" name="attr_rank"></span>
</button>
</div>
</div>
</fieldset>
</div>
<details class="arrow">
<summary class="allskills" data-i18n="all skills">all skills </summary>
<div class="skill-container">
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="accounting fail checkbox" title="accounting fail checkbox">
<input class="isvisible" name="attr_accounting_visible" title="@{accounting_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_accounting_r" value="@{accounting_action}">
<h3 class="aligned-left" data-i18n-title="accounting">accounting</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_accounting" value="@{accounting_action}"> </button>
<button class="none" type="action" name="act_accounting-action"> </button>
<input type="hidden" name="attr_accounting_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="accounting rank" title="accounting rank">
<input data-i18n-placeholder="0" name="attr_accounting" title="@{accounting}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="alertness fail checkbox" title="alertness fail checkbox">
<input class="isvisible" name="attr_alertness_visible" title="@{alertness_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_alertness_r" value="@{alertness_action}">
<h3 class="aligned-left" data-i18n-title="alertness">alertness</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_alertness" value="@{alertness_action}"> </button>
<button class="none" type="action" name="act_alertness-action"> </button>
<input type="hidden" name="attr_alertness_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="alertness rank" title="alertness rank">
<input data-i18n-placeholder="0" name="attr_alertness" title="@{alertness}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="anthropology fail checkbox" title="anthropology fail checkbox">
<input class="isvisible" name="attr_anthropology_visible" title="@{anthropology_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_anthropology_r" value="@{anthropology_action}">
<h3 class="aligned-left" data-i18n-title="anthropology">anthropology</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_anthropology" value="@{anthropology_action}"> </button>
<button class="none" type="action" name="act_anthropology-action"> </button>
<input type="hidden" name="attr_anthropology_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="anthropology rank" title="anthropology rank">
<input data-i18n-placeholder="0" name="attr_anthropology" title="@{anthropology}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="archeology fail checkbox" title="archeology fail checkbox">
<input class="isvisible" name="attr_archeology_visible" title="@{archeology_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_archeology_r" value="@{archeology_action}">
<h3 class="aligned-left" data-i18n-title="archeology">archeology</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_archeology" value="@{archeology_action}"> </button>
<button class="none" type="action" name="act_archeology-action"> </button>
<input type="hidden" name="attr_archeology_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="archeology rank" title="archeology rank">
<input data-i18n-placeholder="0" name="attr_archeology" title="@{archeology}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="art fail checkbox" title="art fail checkbox">
<input class="isvisible" name="attr_art_1_visible" title="@{art_1_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_art_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="art" title="art">art</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_art_1_name" title="@{art_1_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_art_1_r" value="@{art_1_action}">
<h3 class="aligned-left"><span title="art">art</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_art_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_art_1" value="@{art_1_action}"> </button>
<button class="none" type="action" name="act_art_1-action"> </button>
<input type="hidden" name="attr_art_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_art_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="art rank" title="art rank">
<input data-i18n-placeholder="0" name="attr_art_1" title="@{art_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="art fail checkbox" title="art fail checkbox">
<input class="isvisible" name="attr_art_2_visible" title="@{art_2_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_art_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="art" title="art">art</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_art_2_name" title="@{art_2_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_art_2_r" value="@{art_2_action}">
<h3 class="aligned-left"><span title="art">art</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_art_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_art_2" value="@{art_2_action}"> </button>
<button class="none" type="action" name="act_art_2-action"> </button>
<input type="hidden" name="attr_art_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_art_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="art rank" title="art rank">
<input data-i18n-placeholder="0" name="attr_art_2" title="@{art_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="artillery fail checkbox" title="artillery fail checkbox">
<input class="isvisible" name="attr_artillery_visible" title="@{artillery_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_artillery_r" value="@{artillery_action}">
<h3 class="aligned-left" data-i18n-title="artillery">artillery</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_artillery" value="@{artillery_action}"> </button>
<button class="none" type="action" name="act_artillery-action"> </button>
<input type="hidden" name="attr_artillery_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="artillery rank" title="artillery rank">
<input data-i18n-placeholder="0" name="attr_artillery" title="@{artillery}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="athletics fail checkbox" title="athletics fail checkbox">
<input class="isvisible" name="attr_athletics_visible" title="@{athletics_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_athletics_r" value="@{athletics_action}">
<h3 class="aligned-left" data-i18n-title="athletics">athletics</h3><span data-i18n="(30%)" title="(30%)">(30%)</span>
</button>
<button class="none" type="roll" name="roll_athletics" value="@{athletics_action}"> </button>
<button class="none" type="action" name="act_athletics-action"> </button>
<input type="hidden" name="attr_athletics_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="athletics rank" title="athletics rank">
<input data-i18n-placeholder="0" name="attr_athletics" title="@{athletics}" placeholder="0" type="text" value="30"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="bureaucracy fail checkbox" title="bureaucracy fail checkbox">
<input class="isvisible" name="attr_bureaucracy_visible" title="@{bureaucracy_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_bureaucracy_r" value="@{bureaucracy_action}">
<h3 class="aligned-left" data-i18n-title="bureaucracy">bureaucracy</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_bureaucracy" value="@{bureaucracy_action}"> </button>
<button class="none" type="action" name="act_bureaucracy-action"> </button>
<input type="hidden" name="attr_bureaucracy_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="bureaucracy rank" title="bureaucracy rank">
<input data-i18n-placeholder="0" name="attr_bureaucracy" title="@{bureaucracy}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="computer science fail checkbox" title="computer science fail checkbox">
<input class="isvisible" name="attr_computer_science_visible" title="@{computer_science_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_computer_science_r" value="@{computer_science_action}">
<h3 class="aligned-left" data-i18n-title="computer science">computer science</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_computer_science" value="@{computer_science_action}"> </button>
<button class="none" type="action" name="act_computer_science-action"> </button>
<input type="hidden" name="attr_computer_science_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="computer science rank" title="computer science rank">
<input data-i18n-placeholder="0" name="attr_computer_science" title="@{computer_science}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="craft fail checkbox" title="craft fail checkbox">
<input class="isvisible" name="attr_craft_1_visible" title="@{craft_1_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_craft_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="craft" title="craft">craft</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_craft_1_name" title="@{craft_1_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_craft_1_r" value="@{craft_1_action}">
<h3 class="aligned-left"><span title="craft">craft</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_craft_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_craft_1" value="@{craft_1_action}"> </button>
<button class="none" type="action" name="act_craft_1-action"> </button>
<input type="hidden" name="attr_craft_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_craft_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="craft rank" title="craft rank">
<input data-i18n-placeholder="0" name="attr_craft_1" title="@{craft_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="craft fail checkbox" title="craft fail checkbox">
<input class="isvisible" name="attr_craft_2_visible" title="@{craft_2_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_craft_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="craft" title="craft">craft</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_craft_2_name" title="@{craft_2_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_craft_2_r" value="@{craft_2_action}">
<h3 class="aligned-left"><span title="craft">craft</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_craft_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_craft_2" value="@{craft_2_action}"> </button>
<button class="none" type="action" name="act_craft_2-action"> </button>
<input type="hidden" name="attr_craft_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_craft_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="craft rank" title="craft rank">
<input data-i18n-placeholder="0" name="attr_craft_2" title="@{craft_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="criminology fail checkbox" title="criminology fail checkbox">
<input class="isvisible" name="attr_criminology_visible" title="@{criminology_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_criminology_r" value="@{criminology_action}">
<h3 class="aligned-left" data-i18n-title="criminology">criminology</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_criminology" value="@{criminology_action}"> </button>
<button class="none" type="action" name="act_criminology-action"> </button>
<input type="hidden" name="attr_criminology_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="criminology rank" title="criminology rank">
<input data-i18n-placeholder="0" name="attr_criminology" title="@{criminology}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="demolitions fail checkbox" title="demolitions fail checkbox">
<input class="isvisible" name="attr_demolitions_visible" title="@{demolitions_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_demolitions_r" value="@{demolitions_action}">
<h3 class="aligned-left" data-i18n-title="demolitions">demolitions</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_demolitions" value="@{demolitions_action}"> </button>
<button class="none" type="action" name="act_demolitions-action"> </button>
<input type="hidden" name="attr_demolitions_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="demolitions rank" title="demolitions rank">
<input data-i18n-placeholder="0" name="attr_demolitions" title="@{demolitions}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="disguise fail checkbox" title="disguise fail checkbox">
<input class="isvisible" name="attr_disguise_visible" title="@{disguise_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_disguise_r" value="@{disguise_action}">
<h3 class="aligned-left" data-i18n-title="disguise">disguise</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_disguise" value="@{disguise_action}"> </button>
<button class="none" type="action" name="act_disguise-action"> </button>
<input type="hidden" name="attr_disguise_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="disguise rank" title="disguise rank">
<input data-i18n-placeholder="0" name="attr_disguise" title="@{disguise}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="dodge fail checkbox" title="dodge fail checkbox">
<input class="isvisible" name="attr_dodge_visible" title="@{dodge_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_dodge_r" value="@{dodge_action}">
<h3 class="aligned-left" data-i18n-title="dodge">dodge</h3><span data-i18n="(30%)" title="(30%)">(30%)</span>
</button>
<button class="none" type="roll" name="roll_dodge" value="@{dodge_action}"> </button>
<button class="none" type="action" name="act_dodge-action"> </button>
<input type="hidden" name="attr_dodge_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="dodge rank" title="dodge rank">
<input data-i18n-placeholder="0" name="attr_dodge" title="@{dodge}" placeholder="0" type="text" value="30"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="drive fail checkbox" title="drive fail checkbox">
<input class="isvisible" name="attr_drive_visible" title="@{drive_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_drive_r" value="@{drive_action}">
<h3 class="aligned-left" data-i18n-title="drive">drive</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_drive" value="@{drive_action}"> </button>
<button class="none" type="action" name="act_drive-action"> </button>
<input type="hidden" name="attr_drive_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="drive rank" title="drive rank">
<input data-i18n-placeholder="0" name="attr_drive" title="@{drive}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="firearms fail checkbox" title="firearms fail checkbox">
<input class="isvisible" name="attr_firearms_visible" title="@{firearms_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_firearms_r" value="@{firearms_action}">
<h3 class="aligned-left" data-i18n-title="firearms">firearms</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_firearms" value="@{firearms_action}"> </button>
<button class="none" type="action" name="act_firearms-action"> </button>
<input type="hidden" name="attr_firearms_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="firearms rank" title="firearms rank">
<input data-i18n-placeholder="0" name="attr_firearms" title="@{firearms}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="first aid fail checkbox" title="first aid fail checkbox">
<input class="isvisible" name="attr_first_aid_visible" title="@{first_aid_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_first_aid_r" value="@{first_aid_action}">
<h3 class="aligned-left" data-i18n-title="first aid">first aid</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_first_aid" value="@{first_aid_action}"> </button>
<button class="none" type="action" name="act_first_aid-action"> </button>
<input type="hidden" name="attr_first_aid_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="first aid rank" title="first aid rank">
<input data-i18n-placeholder="0" name="attr_first_aid" title="@{first_aid}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="forensics fail checkbox" title="forensics fail checkbox">
<input class="isvisible" name="attr_forensics_visible" title="@{forensics_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_forensics_r" value="@{forensics_action}">
<h3 class="aligned-left" data-i18n-title="forensics">forensics</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_forensics" value="@{forensics_action}"> </button>
<button class="none" type="action" name="act_forensics-action"> </button>
<input type="hidden" name="attr_forensics_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="forensics rank" title="forensics rank">
<input data-i18n-placeholder="0" name="attr_forensics" title="@{forensics}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="heavy machinery fail checkbox" title="heavy machinery fail checkbox">
<input class="isvisible" name="attr_heavy_machinery_visible" title="@{heavy_machinery_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_heavy_machinery_r" value="@{heavy_machinery_action}">
<h3 class="aligned-left" data-i18n-title="heavy machinery">heavy machinery</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_heavy_machinery" value="@{heavy_machinery_action}"> </button>
<button class="none" type="action" name="act_heavy_machinery-action"> </button>
<input type="hidden" name="attr_heavy_machinery_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="heavy machinery rank" title="heavy machinery rank">
<input data-i18n-placeholder="0" name="attr_heavy_machinery" title="@{heavy_machinery}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="heavy weapons fail checkbox" title="heavy weapons fail checkbox">
<input class="isvisible" name="attr_heavy_weapons_visible" title="@{heavy_weapons_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_heavy_weapons_r" value="@{heavy_weapons_action}">
<h3 class="aligned-left" data-i18n-title="heavy weapons">heavy weapons</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_heavy_weapons" value="@{heavy_weapons_action}"> </button>
<button class="none" type="action" name="act_heavy_weapons-action"> </button>
<input type="hidden" name="attr_heavy_weapons_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="heavy weapons rank" title="heavy weapons rank">
<input data-i18n-placeholder="0" name="attr_heavy_weapons" title="@{heavy_weapons}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="history fail checkbox" title="history fail checkbox">
<input class="isvisible" name="attr_history_visible" title="@{history_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_history_r" value="@{history_action}">
<h3 class="aligned-left" data-i18n-title="history">history</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_history" value="@{history_action}"> </button>
<button class="none" type="action" name="act_history-action"> </button>
<input type="hidden" name="attr_history_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="history rank" title="history rank">
<input data-i18n-placeholder="0" name="attr_history" title="@{history}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="HUMINT fail checkbox" title="HUMINT fail checkbox">
<input class="isvisible" name="attr_humint_visible" title="@{humint_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_humint_r" value="@{humint_action}">
<h3 class="aligned-left" data-i18n-title="HUMINT">HUMINT</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_humint" value="@{humint_action}"> </button>
<button class="none" type="action" name="act_humint-action"> </button>
<input type="hidden" name="attr_humint_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="HUMINT rank" title="HUMINT rank">
<input data-i18n-placeholder="0" name="attr_humint" title="@{humint}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="law fail checkbox" title="law fail checkbox">
<input class="isvisible" name="attr_law_visible" title="@{law_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_law_r" value="@{law_action}">
<h3 class="aligned-left" data-i18n-title="law">law</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_law" value="@{law_action}"> </button>
<button class="none" type="action" name="act_law-action"> </button>
<input type="hidden" name="attr_law_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="law rank" title="law rank">
<input data-i18n-placeholder="0" name="attr_law" title="@{law}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="medicine fail checkbox" title="medicine fail checkbox">
<input class="isvisible" name="attr_medicine_visible" title="@{medicine_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_medicine_r" value="@{medicine_action}">
<h3 class="aligned-left" data-i18n-title="medicine">medicine</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_medicine" value="@{medicine_action}"> </button>
<button class="none" type="action" name="act_medicine-action"> </button>
<input type="hidden" name="attr_medicine_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="medicine rank" title="medicine rank">
<input data-i18n-placeholder="0" name="attr_medicine" title="@{medicine}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="melee weapons fail checkbox" title="melee weapons fail checkbox">
<input class="isvisible" name="attr_melee_weapons_visible" title="@{melee_weapons_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_melee_weapons_r" value="@{melee_weapons_action}">
<h3 class="aligned-left" data-i18n-title="melee weapons">melee weapons</h3><span data-i18n="(30%)" title="(30%)">(30%)</span>
</button>
<button class="none" type="roll" name="roll_melee_weapons" value="@{melee_weapons_action}"> </button>
<button class="none" type="action" name="act_melee_weapons-action"> </button>
<input type="hidden" name="attr_melee_weapons_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="melee weapons rank" title="melee weapons rank">
<input data-i18n-placeholder="0" name="attr_melee_weapons" title="@{melee_weapons}" placeholder="0" type="text" value="30"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="military science fail checkbox" title="military science fail checkbox">
<input class="isvisible" name="attr_military_science_1_visible" title="@{military_science_1_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_military_science_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="military science" title="military science">military science</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_military_science_1_name" title="@{military_science_1_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_military_science_1_r" value="@{military_science_1_action}">
<h3 class="aligned-left"><span title="military science">military science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_military_science_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_military_science_1" value="@{military_science_1_action}"> </button>
<button class="none" type="action" name="act_military_science_1-action"> </button>
<input type="hidden" name="attr_military_science_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_military_science_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="military science rank" title="military science rank">
<input data-i18n-placeholder="0" name="attr_military_science_1" title="@{military_science_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="military science fail checkbox" title="military science fail checkbox">
<input class="isvisible" name="attr_military_science_2_visible" title="@{military_science_2_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_military_science_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="military science" title="military science">military science</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_military_science_2_name" title="@{military_science_2_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_military_science_2_r" value="@{military_science_2_action}">
<h3 class="aligned-left"><span title="military science">military science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_military_science_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_military_science_2" value="@{military_science_2_action}"> </button>
<button class="none" type="action" name="act_military_science_2-action"> </button>
<input type="hidden" name="attr_military_science_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_military_science_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="military science rank" title="military science rank">
<input data-i18n-placeholder="0" name="attr_military_science_2" title="@{military_science_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="navigate fail checkbox" title="navigate fail checkbox">
<input class="isvisible" name="attr_navigate_visible" title="@{navigate_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_navigate_r" value="@{navigate_action}">
<h3 class="aligned-left" data-i18n-title="navigate">navigate</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_navigate" value="@{navigate_action}"> </button>
<button class="none" type="action" name="act_navigate-action"> </button>
<input type="hidden" name="attr_navigate_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="navigate rank" title="navigate rank">
<input data-i18n-placeholder="0" name="attr_navigate" title="@{navigate}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="occult fail checkbox" title="occult fail checkbox">
<input class="isvisible" name="attr_occult_visible" title="@{occult_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_occult_r" value="@{occult_action}">
<h3 class="aligned-left" data-i18n-title="occult">occult</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_occult" value="@{occult_action}"> </button>
<button class="none" type="action" name="act_occult-action"> </button>
<input type="hidden" name="attr_occult_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="occult rank" title="occult rank">
<input data-i18n-placeholder="0" name="attr_occult" title="@{occult}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="persuade fail checkbox" title="persuade fail checkbox">
<input class="isvisible" name="attr_persuade_visible" title="@{persuade_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_persuade_r" value="@{persuade_action}">
<h3 class="aligned-left" data-i18n-title="persuade">persuade</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_persuade" value="@{persuade_action}"> </button>
<button class="none" type="action" name="act_persuade-action"> </button>
<input type="hidden" name="attr_persuade_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="persuade rank" title="persuade rank">
<input data-i18n-placeholder="0" name="attr_persuade" title="@{persuade}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="pharmacy fail checkbox" title="pharmacy fail checkbox">
<input class="isvisible" name="attr_pharmacy_visible" title="@{pharmacy_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_pharmacy_r" value="@{pharmacy_action}">
<h3 class="aligned-left" data-i18n-title="pharmacy">pharmacy</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_pharmacy" value="@{pharmacy_action}"> </button>
<button class="none" type="action" name="act_pharmacy-action"> </button>
<input type="hidden" name="attr_pharmacy_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="pharmacy rank" title="pharmacy rank">
<input data-i18n-placeholder="0" name="attr_pharmacy" title="@{pharmacy}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="pilot fail checkbox" title="pilot fail checkbox">
<input class="isvisible" name="attr_pilot_1_visible" title="@{pilot_1_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_pilot_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="pilot" title="pilot">pilot</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_pilot_1_name" title="@{pilot_1_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_pilot_1_r" value="@{pilot_1_action}">
<h3 class="aligned-left"><span title="pilot">pilot</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_pilot_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_pilot_1" value="@{pilot_1_action}"> </button>
<button class="none" type="action" name="act_pilot_1-action"> </button>
<input type="hidden" name="attr_pilot_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_pilot_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="pilot rank" title="pilot rank">
<input data-i18n-placeholder="0" name="attr_pilot_1" title="@{pilot_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="pilot fail checkbox" title="pilot fail checkbox">
<input class="isvisible" name="attr_pilot_2_visible" title="@{pilot_2_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_pilot_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="pilot" title="pilot">pilot</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_pilot_2_name" title="@{pilot_2_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_pilot_2_r" value="@{pilot_2_action}">
<h3 class="aligned-left"><span title="pilot">pilot</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_pilot_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_pilot_2" value="@{pilot_2_action}"> </button>
<button class="none" type="action" name="act_pilot_2-action"> </button>
<input type="hidden" name="attr_pilot_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_pilot_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="pilot rank" title="pilot rank">
<input data-i18n-placeholder="0" name="attr_pilot_2" title="@{pilot_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="psychotherapy fail checkbox" title="psychotherapy fail checkbox">
<input class="isvisible" name="attr_psychotherapy_visible" title="@{psychotherapy_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_psychotherapy_r" value="@{psychotherapy_action}">
<h3 class="aligned-left" data-i18n-title="psychotherapy">psychotherapy</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_psychotherapy" value="@{psychotherapy_action}"> </button>
<button class="none" type="action" name="act_psychotherapy-action"> </button>
<input type="hidden" name="attr_psychotherapy_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="psychotherapy rank" title="psychotherapy rank">
<input data-i18n-placeholder="0" name="attr_psychotherapy" title="@{psychotherapy}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="ride fail checkbox" title="ride fail checkbox">
<input class="isvisible" name="attr_ride_visible" title="@{ride_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_ride_r" value="@{ride_action}">
<h3 class="aligned-left" data-i18n-title="ride">ride</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_ride" value="@{ride_action}"> </button>
<button class="none" type="action" name="act_ride-action"> </button>
<input type="hidden" name="attr_ride_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="ride rank" title="ride rank">
<input data-i18n-placeholder="0" name="attr_ride" title="@{ride}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="science fail checkbox" title="science fail checkbox">
<input class="isvisible" name="attr_science_1_visible" title="@{science_1_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_science_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="science" title="science">science</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_science_1_name" title="@{science_1_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_science_1_r" value="@{science_1_action}">
<h3 class="aligned-left"><span title="science">science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_science_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_science_1" value="@{science_1_action}"> </button>
<button class="none" type="action" name="act_science_1-action"> </button>
<input type="hidden" name="attr_science_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_science_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="science rank" title="science rank">
<input data-i18n-placeholder="0" name="attr_science_1" title="@{science_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="science fail checkbox" title="science fail checkbox">
<input class="isvisible" name="attr_science_2_visible" title="@{science_2_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_science_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="science" title="science">science</span><span>:</span></h3>
</div>
<input style="width:100%;" name="attr_science_2_name" title="@{science_2_name}" type="text" data-i18n-placeholder="choose one" placeholder="choose one"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_science_2_r" value="@{science_2_action}">
<h3 class="aligned-left"><span title="science">science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_science_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_science_2" value="@{science_2_action}"> </button>
<button class="none" type="action" name="act_science_2-action"> </button>
<input type="hidden" name="attr_science_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_science_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="science rank" title="science rank">
<input data-i18n-placeholder="0" name="attr_science_2" title="@{science_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="search fail checkbox" title="search fail checkbox">
<input class="isvisible" name="attr_search_visible" title="@{search_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_search_r" value="@{search_action}">
<h3 class="aligned-left" data-i18n-title="search">search</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_search" value="@{search_action}"> </button>
<button class="none" type="action" name="act_search-action"> </button>
<input type="hidden" name="attr_search_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="search rank" title="search rank">
<input data-i18n-placeholder="0" name="attr_search" title="@{search}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="SIGINT fail checkbox" title="SIGINT fail checkbox">
<input class="isvisible" name="attr_sigint_visible" title="@{sigint_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_sigint_r" value="@{sigint_action}">
<h3 class="aligned-left" data-i18n-title="SIGINT">SIGINT</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_sigint" value="@{sigint_action}"> </button>
<button class="none" type="action" name="act_sigint-action"> </button>
<input type="hidden" name="attr_sigint_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="SIGINT rank" title="SIGINT rank">
<input data-i18n-placeholder="0" name="attr_sigint" title="@{sigint}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="stealth fail checkbox" title="stealth fail checkbox">
<input class="isvisible" name="attr_stealth_visible" title="@{stealth_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_stealth_r" value="@{stealth_action}">
<h3 class="aligned-left" data-i18n-title="stealth">stealth</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_stealth" value="@{stealth_action}"> </button>
<button class="none" type="action" name="act_stealth-action"> </button>
<input type="hidden" name="attr_stealth_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="stealth rank" title="stealth rank">
<input data-i18n-placeholder="0" name="attr_stealth" title="@{stealth}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="surgery fail checkbox" title="surgery fail checkbox">
<input class="isvisible" name="attr_surgery_visible" title="@{surgery_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_surgery_r" value="@{surgery_action}">
<h3 class="aligned-left" data-i18n-title="surgery">surgery</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_surgery" value="@{surgery_action}"> </button>
<button class="none" type="action" name="act_surgery-action"> </button>
<input type="hidden" name="attr_surgery_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="surgery rank" title="surgery rank">
<input data-i18n-placeholder="0" name="attr_surgery" title="@{surgery}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="survival fail checkbox" title="survival fail checkbox">
<input class="isvisible" name="attr_survival_visible" title="@{survival_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_survival_r" value="@{survival_action}">
<h3 class="aligned-left" data-i18n-title="survival">survival</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_survival" value="@{survival_action}"> </button>
<button class="none" type="action" name="act_survival-action"> </button>
<input type="hidden" name="attr_survival_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="survival rank" title="survival rank">
<input data-i18n-placeholder="0" name="attr_survival" title="@{survival}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="swim fail checkbox" title="swim fail checkbox">
<input class="isvisible" name="attr_swim_visible" title="@{swim_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_swim_r" value="@{swim_action}">
<h3 class="aligned-left" data-i18n-title="swim">swim</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_swim" value="@{swim_action}"> </button>
<button class="none" type="action" name="act_swim-action"> </button>
<input type="hidden" name="attr_swim_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="swim rank" title="swim rank">
<input data-i18n-placeholder="0" name="attr_swim" title="@{swim}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="unarmed combat fail checkbox" title="unarmed combat fail checkbox">
<input class="isvisible" name="attr_unarmed_combat_visible" title="@{unarmed_combat_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_unarmed_combat_r" value="@{unarmed_combat_action}">
<h3 class="aligned-left" data-i18n-title="unarmed combat">unarmed combat</h3><span data-i18n="(40%)" title="(40%)">(40%)</span>
</button>
<button class="none" type="roll" name="roll_unarmed_combat" value="@{unarmed_combat_action}"> </button>
<button class="none" type="action" name="act_unarmed_combat-action"> </button>
<input type="hidden" name="attr_unarmed_combat_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="unarmed combat rank" title="unarmed combat rank">
<input data-i18n-placeholder="0" name="attr_unarmed_combat" title="@{unarmed_combat}" placeholder="0" type="text" value="40"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="unnatural fail checkbox" title="unnatural fail checkbox">
<input class="isvisible" name="attr_unnatural_visible" title="@{unnatural_visible}" type="checkbox" value="visible"/><span></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_unnatural_r" value="@{unnatural_action}">
<h3 class="aligned-left" data-i18n-title="unnatural">unnatural</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_unnatural" value="@{unnatural_action}"> </button>
<button class="none" type="action" name="act_unnatural-action"> </button>
<input type="hidden" name="attr_unnatural_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="unnatural rank" title="unnatural rank">
<input data-i18n-placeholder="0" name="attr_unnatural" title="@{unnatural}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-repeating-container">
<div class="section-title border-bottom">
<h3 class="margin-left" data-i18n="foriegn languages and other skills:" data-i18n-title="foriegn languages and other skills:">foriegn languages and other skills: </h3>
</div>
<div class="section-body">
<fieldset class="repeating_skills">
<div class="section-skill-col">
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input style="width:100%;" name="attr_name" title="@{repeating_skills_${x}__name}" type="text" value="skill"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="repeating_roll undefined undefined two" type="action" name="attr_skill_r" value="@{skill_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none undefined undefined two" type="roll" name="roll_skill" value="@{skill_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_skill-action"> </button>
<input type="hidden" name="attr_skill_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
<label class="rank" data-i18n-title="skill rank" title="skill rank">
<input data-i18n-placeholder="0" name="attr_rank" title="@{repeating_skills_${x}_rank}" placeholder="0" type="text" value=""/>
</label>
</div>
</fieldset>
</div>
</div>
</div>
</details>
</div>
</div>
<div class="grid_npc armor-skills-abilities-other border" id="equipment-npc">
<div class="header">
<h2 class="npc" data-i18n="equipment">equipment</h2>
</div>
<div class="grid section-body border equipment">
<div class="border-bottom">
<textarea data-i18n-placeholder="armor and gear" name="attr_armor_and_gear" placeholder="armor and gear" title="@{armor_and_gear}"></textarea>
</div>
<div class="section-directions center border-bottom"><span data-i18n="Body armor reduces the damage of all attacks except Called Shots and successful Lethality rolls.">Body armor reduces the damage of all attacks except Called Shots and successful Lethality rolls.</span></div>
<div class="border-bottom"></div>
</div>
</div>
<div class="grid_npc armor-skills-abilities-other border" id="abilities-npc">
<div class="header">
<h2 class="npc" data-i18n="abilities">abilities</h2>
</div>
<div class="grid section-body border equipment">
<div class="grid section-weapons border-bottom">
<h2 data-i18n="weapons" data-i18n-title="weapons" title="weapons">weapons</h2>
<div class="vert-line"></div>
<h2 data-i18n="skill %" data-i18n-title="skill %" title="skill %">skill %</h2>
<div class="vert-line"></div>
<h2 data-i18n="base range" data-i18n-title="base range" title="base range">base range</h2>
<div class="vert-line"></div>
<h2 data-i18n="damage" data-i18n-title="damage" title="damage">damage</h2>
<div class="vert-line"></div>
<h2 data-i18n="armor piercing" data-i18n-title="armor piercing" title="armor piercing">armor piercing</h2>
<div class="vert-line"></div>
<h2 data-i18n="lethality %" data-i18n-title="lethality %" title="lethality %">lethality %</h2>
<div class="vert-line"></div>
<h2 data-i18n="kill radius" data-i18n-title="kill radius" title="kill radius">kill radius</h2>
<div class="vert-line"></div>
<h2 data-i18n="ammo" data-i18n-title="ammo" title="ammo">ammo</h2>
</div>
<div class="repeating-container border-bottom">
<fieldset class="repeating_weapons">
<input type="hidden" name="attr_initialized" value="0"/>
<div class="grid section-weapons border-bottom repeating-section-weapons">
<input type="hidden" name="attr_weapons"/>
<input name="attr_hasLethality" type="hidden" value="0"/>
<input name="attr_hasDamage" type="hidden" value="0"/>
<input name="attr_hasammo" type="hidden" value="0"/>
<button class="none two" type="roll" name="roll_damage" value="@{damage_action}"> </button>
<button class="none" type="action" name="act_damage-action"> </button>
<input type="hidden" name="attr_damage_action" value=""/>
<button class="none two" type="roll" name="roll_damage_critical" value="@{damage_critical_action}"> </button>
<button class="none" type="action" name="act_damage_critical-action"> </button>
<input type="hidden" name="attr_damage_critical_action" value=""/>
<button class="none two" type="roll" name="roll_lethality_percent" value="@{lethality_percent_action}"> </button>
<button class="none" type="action" name="act_lethality_percent-action"> </button>
<input type="hidden" name="attr_lethality_percent_action" value=""/>
<button class="none two" type="roll" name="roll_lethality_percent_critical" value="@{lethality_percent_critical_action}"> </button>
<button class="none" type="action" name="act_lethality_percent_critical-action"> </button>
<input type="hidden" name="attr_lethality_percent_critical_action" value=""/>
<button class="none two" type="roll" name="roll_double_barrel" value="@{double_barrel_action}"> </button>
<button class="none" type="action" name="act_double_barrel-action"> </button>
<input type="hidden" name="attr_double_barrel_action" value=""/>
<button class="none two" type="roll" name="roll_double_barrel_critical" value="@{double_barrel_critical_action}"> </button>
<button class="none" type="action" name="act_double_barrel_critical-action"> </button>
<input type="hidden" name="attr_double_barrel_critical_action" value=""/>
<button class="none two" type="roll" name="roll_selective_fire" value="@{selective_fire_action}"> </button>
<button class="none" type="action" name="act_selective_fire-action"> </button>
<input type="hidden" name="attr_selective_fire_action" value=""/>
<button class="none two" type="roll" name="roll_selective_fire_critical" value="@{selective_fire_critical_action}"> </button>
<button class="none" type="action" name="act_selective_fire_critical-action"> </button>
<input type="hidden" name="attr_selective_fire_critical_action" value=""/>
<div class="form-normal-group">
<label class="weapon_button">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input style="display:none" type="checkbox" name="attr_hasAdvancedWeapons" value="active"/>
<input style="width:100%; padding: 0px 0px; margin: 0px 0;box-sizing: border-box;" type="text" name="attr_name" value="weapon" title="@{repeating_weapons_${x}_weapons}"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="repeating_roll pressable special_div one" type="action" name="attr_weapons_r" value="@{weapons_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none pressable special_div one" type="roll" name="roll_weapons" value="@{weapons_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_weapons-action"> </button>
<input type="hidden" name="attr_weapons_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="skill % input" title="skill % input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="skill %" name="attr_skill_percent" list="weaponskills" placeholder="skill %" title="@{repeating_weapons_${x}_skill_percent}" type="text" value=""/></span><span class="unedit_text"><span name="attr_skill_span"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="base range input" title="base range input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="base range" name="attr_base_range" placeholder="base range" title="@{repeating_weapons_${x}_base_range}" type="text" value=""/></span><span class="unedit_text"><span name="attr_base_range"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="damage input" title="damage input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input class="blast" name="attr_blast_radius" type="hidden"/><span class="wblast"><span>- </span></span><span class="noblast">
<input class="shotgun" name="attr_hasDoubleBarrel" type="hidden"/><span class="noshotgun">
<input data-i18n-placeholder="damage" name="attr_damage" placeholder="damage" title="@{repeating_weapons_${x}_damage}" type="text" value=""/></span><span class="wshotgun">
<div class="slashpart">
<input data-i18n-placeholder="damage" name="attr_damage" placeholder="damage" title="@{repeating_weapons_${x}_damage}" type="text" value=""/><span>/</span>
<input data-i18n-placeholder="damage" name="attr_double_barrel" placeholder="damage" title="@{repeating_weapons_${x}_double_barrel}" type="text" value=""/>
</div></span></span></span><span class="unedit_text">
<input class="blast" name="attr_blast_radius" type="hidden"/><span class="wblast"><span>- </span></span><span class="noblast">
<input class="shotgun" name="attr_hasDoubleBarrel" type="hidden"/><span class="noshotgun"><span data-i18n-placeholder="damage" name="attr_damage"></span></span><span class="wshotgun">
<div class="slashpart"><span data-i18n-placeholder="damage" name="attr_damage"></span><span>/</span><span data-i18n-placeholder="damage" name="attr_double_barrel"></span></div></span></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="armor piercing input" title="armor piercing input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="armor piercing" name="attr_armor_piercing" placeholder="armor piercing" title="@{repeating_weapons_${x}_armor_piercing}" type="text" value=""/></span><span class="unedit_text"><span name="attr_armor_piercing"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="lethality % input" title="lethality % input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input class="shotgun" name="attr_shotgun" type="hidden"/>
<input class="noshotgun" data-i18n-placeholder="lethality %" name="attr_lethality_percent" placeholder="lethality %" title="@{repeating_weapons_${x}_lethality_percent}" type="number" value=""/><span class="wshotgun">-</span></span><span class="unedit_text">
<input class="shotgun" name="attr_shotgun" type="hidden"/><span class="noshotgun" data-i18n-placeholder="lethality %" name="attr_lethality_percent"></span><span class="wshotgun">-</span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="kill radius input" title="kill radius input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="kill radius" name="attr_kill_radius" placeholder="kill radius" title="@{repeating_weapons_${x}_kill_radius}" type="text" value=""/></span><span class="unedit_text"><span name="attr_kill_radius"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="ammo input" title="ammo input" style="display: grid; position:relative;">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text allowpopup">
<input data-i18n-placeholder="ammo" name="attr_ammo_total" placeholder="ammo" title="@{repeating_weapons_${x}_ammo_max}" type="text" value="0"/>
<input type="hidden" name="attr_hasAdvancedWeapons" value=""/>
<div class="othergrid advancedinfo hasAdvancedWeapons">
<input class="advanced" type="checkbox"/><span></span>
<div class="modifiers">
<!--.modifiers-body -->
<h2 class="title" data-i18n="advanced features">advanced features</h2>
<div class="item-shotgun">
<input class="fix-check" name="attr_shotgun" type="checkbox" value="active"/><span><span data-i18n="shotgun">shotgun</span> <span class="para">+20%</span></span><span class="double_damage">
<input class="fix-check" name="attr_hasDoubleBarrel" type="checkbox" value="active"/><span data-i18n="double damage">double damage</span></span>
</div>
<div class="item-check">
<input class="fix-check" name="attr_blast_radius" type="checkbox" value="active"/><span><span data-i18n="blast radius">blast radius</span> <span class="para">+20%</span></span>
</div>
<div class="item-acc">
<input class="fix-check" name="attr_hasAccessories" type="checkbox" value="active"/><span data-i18n="accessories">accessories</span>
<input data-i18n-placeholder="Holographic sight Standard" type="text" name="attr_accessory_name" title="@{repeating_weapons_${x}_accessory_name}" placeholder="Holographic sight" value=""/><span style="display:inline;justify-self:end;"><span data-i18n="modifier">modifier</span>
<input class="number" type="text" list="common_modifiers" name="attr_accessory_modifier" title="@{repeating_weapons_${x}_accessory_modifier}" value="0" maxlength="2" size="3" style="width: 3rem;"/><span class="perc">%</span></span>
</div>
<div class="item-sel">
<input class="fix-check" name="attr_selfire" type="checkbox" value="active"/><span data-i18n-value="selective fire">selective fire</span>
<input type="hidden" name="attr_selfire_type" value="short burst"/>
<select class="small-select" name_="attr_selfireType">
<option value="short burst"><span class="selfire"> <span class="first" data-i18n="short burst">short burst</span> <span>(</span><span data-i18n="3 ammo">3 ammo</span><span>)</span></span></option>
<option value="long burst"><span class="selfire"> <span class="first" data-i18n="long burst"> long burst</span> <span>(</span><span class="para" data-i18n="5 ammo">5 ammo</span><span>)</span></span></option>
<option value="short spray"><span class="selfire"> <span class="first" data-i18n="short spray">short spray</span> <span>(</span><span class="para" data-i18n="10 ammo">10 ammo</span><span>)</span></span></option>
<option value="long spray"> long spray<span class="selfire"> <span class="first" data-i18n="long spray"> long spray</span> <span>(</span><span class="para" data-i18n="20 ammo">20 ammo</span><span>)</span></span></option>
</select><span style="display:inline;justify-self:end;"><span data-i18n="lethality">lethality</span>
<input class="number" type="text" name="attr_selfire_lethality_percent" title="@{repeating_weapons_${x}_selfire_lethality_percent}" value="10" maxlength="2" size="3" style="width: 3rem;"/><span>%</span></span>
</div>
</div>
</div></span><span class="unedit_text">
<input class="hasammo" type="hidden" name="attr_hasammo" value="0"/><span class="wammo">
<div class="slashpart">
<input data-i18n-placeholder="ammo" name="attr_ammo" placeholder="ammo" title="@{repeating_weapons_${x}_ammo}" value="0" style="width: 3rem;"/><span>/</span><span data-i18n-placeholder="ammo" name="attr_ammo_total" placeholder="ammo" title="@{repeating_weapons_${x}_ammo_total}"></span>
</div></span><span class="noammo"><span>-</span></span></span>
</label>
</div>
</fieldset>
</div>
<div class="grid section-rituals border-bottom">
<h2 data-i18n="rituals" data-i18n-title="rituals" title="rituals">rituals</h2>
<div class="vert-line"></div>
<h2 data-i18n="skill %" data-i18n-title="skill %" title="skill %">skill %</h2>
<div class="vert-line"></div>
<h2 data-i18n="sanity cost" data-i18n-title="sanity cost" title="sanity cost">sanity cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="HP cost" data-i18n-title="HP cost" title="HP cost">HP cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="WP cost" data-i18n-title="WP cost" title="WP cost">WP cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="POW cost" data-i18n-title="POW cost" title="POW cost">POW cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="complexity" data-i18n-title="complexity" title="complexity">complexity</h2>
<div class="vert-line"></div>
<h2 data-i18n="activation time" data-i18n-title="activation time" title="activation time">activation time</h2>
<div class="vert-line"></div>
<h2 data-i18n="extra" data-i18n-title="extra" title="extra">extra</h2>
</div>
<div class="repeating-container border-bottom">
<fieldset class="repeating_rituals">
<input type="hidden" name="attr_initialized" value="0"/>
<div class="grid section-rituals border-bottom repeating-section-rituals">
<input type="hidden" name="attr_complexity_text" value=""/>
<input type="hidden" name="attr_activation_time_text" value=""/>
<input type="hidden" name="attr_study_time_text" value=""/>
<input type="hidden" name="attr_study_cost_text" value=""/>
<input type="hidden" name="attr_cost_text" value=""/>
<button class="none two" type="roll" name="roll_pay_cost" value="@{pay_cost_action}"> </button>
<button class="none" type="action" name="act_pay_cost-action"> </button>
<input type="hidden" name="attr_pay_cost_action" value=""/>
<button class="none two" type="roll" name="roll_force_connection" value="@{force_connection_action}"> </button>
<button class="none" type="action" name="act_force_connection-action"> </button>
<input type="hidden" name="attr_force_connection_action" value=""/>
<button class="none two" type="roll" name="roll_accept_failure" value="@{accept_failure_action}"> </button>
<button class="none" type="action" name="act_accept_failure-action"> </button>
<input type="hidden" name="attr_accept_failure_action" value=""/>
<button class="none two" type="roll" name="roll_attack_damage" value="@{attack_damage_action}"> </button>
<button class="none" type="action" name="act_attack_damage-action"> </button>
<input type="hidden" name="attr_attack_damage_action" value=""/>
<button class="none two" type="roll" name="roll_heal_damage" value="@{heal_damage_action}"> </button>
<button class="none" type="action" name="act_heal_damage-action"> </button>
<input type="hidden" name="attr_heal_damage_action" value=""/>
<button class="none two" type="roll" name="roll_attack_lethality_percent" value="@{attack_lethality_percent_action}"> </button>
<button class="none" type="action" name="act_attack_lethality_percent-action"> </button>
<input type="hidden" name="attr_attack_lethality_percent_action" value=""/>
<button class="none two" type="roll" name="roll_heal_lethality_percent" value="@{heal_lethality_percent_action}"> </button>
<button class="none" type="action" name="act_heal_lethality_percent-action"> </button>
<input type="hidden" name="attr_heal_lethality_percent_action" value=""/>
<button class="none two" type="roll" name="roll_power" value="@{power_action}"> </button>
<button class="none" type="action" name="act_power-action"> </button>
<input type="hidden" name="attr_power_action" value=""/>
<div class="form-normal-group">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input style="width:100%; padding: 0px 0px; margin: 0px 0;box-sizing: border-box;" type="text" name="attr_name" value="ritual" title="@{repeating_rituals_${x}_ritual}"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="repeating_roll pressable special_div one" type="action" name="attr_ritual_r" value="@{ritual_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none pressable special_div one" type="roll" name="roll_ritual" value="@{ritual_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_ritual-action"> </button>
<input type="hidden" name="attr_ritual_action" value=""/>
</div></span>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="skill % input" title="skill % input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="skill %" name="attr_skill_percent" list="ritualskills" title="@{repeating_rituals_${x}_skill_percent}" type="text" value="@{ritual_skill}"/></span><span class="unedit_text"><span name="attr_skill_span"></span></span>
</label>
<div class="vert-line"></div>
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text"><span class="ritualsanloss">
<input data-i18n-placeholder="0" name="attr_sanity_loss_success" type="text"/><span>/</span>
<input data-i18n-placeholder="1" name="attr_sanity_loss_failure" type="text"/></span></span><span class="unedit_text"><span class="ritualsanloss"><span name="attr_sanity_loss_success"></span><span>/</span><span name="attr_sanity_loss_failure"></span></span></span>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="hit_points_cost input" title="hit_points_cost input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="hit_points_cost" name="attr_hit_points_cost" title="@{repeating_rituals_${x}_hit_points_cost}" type="text" value=""/></span><span class="unedit_text"><span name="attr_hit_points_cost"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="willpower_points_cost input" title="willpower_points_cost input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="willpower_points_cost" name="attr_willpower_points_cost" title="@{repeating_rituals_${x}_willpower_points_cost}" type="text" value=""/></span><span class="unedit_text"><span name="attr_willpower_points_cost"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="power_score_cost input" title="power_score_cost input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="power_score_cost" name="attr_power_score_cost" title="@{repeating_rituals_${x}_power_score_cost}" type="text" value=""/></span><span class="unedit_text"><span name="attr_power_score_cost"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="complexity input" title="complexity input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<select name="attr_complexity" title="@{repeating_rituals_${x}_complexity}">
<optgroup label="complexity_type">
<option data-i18n-value="simple">simple</option>
<option data-i18n-value="complex">complex</option>
<option data-i18n-value="elaborate">elaborate</option>
</optgroup>
</select></span><span class="unedit_text"><span name="attr_complexity"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="activation time input" title="activation time input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text"><span>
<input type="text" name="attr_activation_time" value="" style="width: 3rem !important;"/>
<select class="small-select" name="attr_activation_time_unit">
<option data-i18n-value="rounds" value="rounds">rounds</option>
<option data-i18n-value="minutes" value="minutes">minutes</option>
<option data-i18n-value="hours" value="hours">hours</option>
<option data-i18n-value="days" value="days">days</option>
<option data-i18n-value="weeks" value="weeks">weeks</option>
<option data-i18n-value="months" value="months">months</option>
<option data-i18n-value="years" value="years">years</option>
<option data-i18n-value="decades" value="decades">decades</option>
<option data-i18n-value="centuries" value="centuries">centuries</option>
<option data-i18n-value="millennia" value="millennia">millennia</option>
<option data-i18n-value="eons" value="eons">eons</option>
</select></span></span><span class="unedit_text"><span class="space-after" name="attr_activation_time"> </span> <span name="attr_activation_time_unit"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="extra input" title="extra input" style="display: grid; position:relative;">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text allowpopup"><span></span>
<div class="othergrid advancedinfo">
<input class="advanced" type="checkbox"/><span></span>
<div class="modifiers_rituals">
<h2 class="title" data-i18n="ritual information">ritual information</h2>
<div class="two-col">
<div class="item-number"><span data-i18n="unnatural gain">unnatural gain</span><span>
<input type="text" name="attr_unnatural_gain" title="@{repeating_rituals_${x}_unnatural_gain}" value="0" style="width: 4rem !important;"/></span></div><span></span>
</div>
<div class="two-col">
<div class="item-text"><span data-i18n="study time">study time</span><span>
<input type="text" name="attr_study_time" value="" style="width: 3rem !important;"/>
<select class="small-select" name="attr_study_time_unit">
<option data-i18n-value="rounds" value="rounds">rounds</option>
<option data-i18n-value="minutes" value="minutes">minutes</option>
<option data-i18n-value="hours" value="hours">hours</option>
<option data-i18n-value="days" value="days">days</option>
<option data-i18n-value="weeks" value="weeks">weeks</option>
<option data-i18n-value="months" value="months">months</option>
<option data-i18n-value="years" value="years">years</option>
<option data-i18n-value="decades" value="decades">decades</option>
<option data-i18n-value="centuries" value="centuries">centuries</option>
<option data-i18n-value="millennia" value="millennia">millennia</option>
<option data-i18n-value="eons" value="eons">eons</option>
</select></span>
</div>
<div class="item-number"><span data-i18n="SAN loss for learning">san loss for learning</span><span>
<input type="text" name="attr_sanity_loss_for_learning" title="@{repeating_rituals_${x}_sanity_loss_for_learning}" value="0" style="width: 4rem !important;"/></span></div>
</div>
<div class="item-textbox"><span data-i18n="ritual description">ritual duration </span>
<textarea data-i18n-placeholder="ritual description" name="attr_description" placeholder="ritual description" title="@{repeating_rituals_${x}_description}"></textarea>
</div>
<h2 class="title" data-i18n="additional costs">additional costs</h2>
<div class="two-col large-row-space">
<div class="item-text"><span data-i18n="strength">strength</span>
<input type="text" name="attr_strength_score_cost" title="@{repeating_rituals_${x}_strength_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="constitution">constitution</span>
<input type="text" name="attr_constitution_score_cost" title="@{repeating_rituals_${x}_constitution_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="dexterity">dexterity</span>
<input type="text" name="attr_dexterity_score_cost" title="@{repeating_rituals_${x}_dexterity_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="intelligence">intelligence</span>
<input type="text" name="attr_intelligence_score_cost" title="@{repeating_rituals_${x}_intelligence_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="charisma">charisma</span>
<input type="text" name="attr_charisma_score_cost" title="@{repeating_rituals_${x}_charisma_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
</div>
<h2 class="title" data-i18n="additional features">additional features</h2>
<div class="two-col">
<div class="item-check">
<input class="fix-check" name="attr_flawed_ritual" type="checkbox" value="active"/><span data-i18n="flawed ritual">flawed ritual</span>
</div>
<div class="item-check">
<input class="fix-check" name="attr_power_reaction" type="checkbox" value="active"/><span data-i18n="power contest">power contest</span>
</div>
</div>
<div class="two-col">
<div class="item"> <span class="capitalize" data-i18n="attack">attack </span></div>
<div class="item"><span class="capitalize" data-i18n="heal">heal</span></div>
</div>
<div class="two-col">
<div class="item-ritual-attack">
<select name="attr_attack_target_stat">
<optgroup data-i18n-title="direct healing">
<option data-i18n="hit points" value="hit_points"></option>
<option data-i18n="willpower points" value="willpower_points"> </option>
</optgroup>
<optgroup data-i18n-title="data-i18n-title" value="target stats">
<option dat="dat" i18n="strength" value="strength_score"></option>
<option data-i18n="constitution" value="constitution_score"></option>
<option data-i18n="dexterity" value="dexterity_score"></option>
<option data-i18n="intelligence" value="intelligence_score"></option>
<option data-i18n="charisma" value="charisma_score"></option>
</optgroup>
<option data-i18n="power" value="power_score"></option>
</select>
<input class="dmg_or_perc" type="hidden" name="attr_attack_isLethal"/>
<input class="amount isdmg" type="text" name="attr_attack_damage_amount" title="@{repeating_rituals_${x}_attack_damage_amount}" value="" data-i18n-placeholder="-"/>
<input class="amount islethal" type="text" name="attr_attack_lethality_percent_amount" title="@{repeating_rituals_${x}_attack_lethality_percent_amount}" value="" data-i18n-placeholder="%"/>
<select class="tiny-select" name="attr_attack_isLethal">
<option value="damage"> </option>
<option value="lethality_percent">%</option>
</select>
</div>
<div class="item-ritual-attack">
<select name="attr_heal_target_stat">
<optgroup data-i18n-title="direct healing">
<option data-i18n="hit points" value="hit_points"></option>
<option data-i18n="willpower points" value="willpower_points"> </option>
</optgroup>
<optgroup data-i18n-title="data-i18n-title" value="target stats">
<option dat="dat" i18n="strength" value="strength_score"></option>
<option data-i18n="constitution" value="constitution_score"></option>
<option data-i18n="dexterity" value="dexterity_score"></option>
<option data-i18n="intelligence" value="intelligence_score"></option>
<option data-i18n="charisma" value="charisma_score"></option>
</optgroup>
<option data-i18n="power" value="power_score"></option>
</select>
<input class="dmg_or_perc" type="hidden" name="attr_heal_isLethal"/>
<input class="amount isdmg" type="text" name="attr_heal_damage_amount" title="@{repeating_rituals_${x}_heal_damage_amount}" value="" data-i18n-placeholder="-"/>
<input class="amount islethal" type="text" name="attr_heal_lethality_percent_amount" title="@{repeating_rituals_${x}_heal_lethality_percent_amount}" value="" data-i18n-placeholder="%"/>
<select class="tiny-select" name="attr_heal_isLethal">
<option value="damage"> </option>
<option value="lethality_percent">%</option>
</select>
</div>
</div>
</div>
</div></span><span class="unedit_text allowpopup"><span></span>
<div class="othergrid updateinfo">
<input type="checkbox"/><span></span>
<div class="summary ritualInfo">
<h2 class="title bigger"><span name="attr_name"></span></h2>
<div class="item sheet-template-inline-block readinformation"><span class="capitalize italic" name="attr_complexity_text"></span><span>.</span><span data-i18n="study time:" style="text-transform:capitalize;">study time:</span> <span class="capitalize italic" name="attr_study_time_text"></span><span>;</span><span data-i18n="activation time:" style="text-transform:capitalize;">activation time: </span><span class="capitalize italic" name="attr_activation_time_text"></span><span>;</span> <span name="attr_study_cost_text"></span><span>.</span><span class="italic" name="attr_cost_text"></span></div><span class="item readrituals" name="attr_description"></span>
</div>
</div></span>
</label>
</div>
</fieldset>
</div>
</div>
</div>
<div class="grid_npc remarks border" id="remarks-npc">
<div class="header">
<h1 data-i18n="remarks">remarks</h1>
</div>
<div class="inner-main">
<textarea name="attr_npc_remarks" data-i18n-placeholder="remarks" placeholder="remarks"></textarea>
</div>
</div>
</div>
<!-- PC SHEET-->
<!-- =============================-->
<div class="pc">
<input class="use_global_modifier" type="hidden" name="attr_use_global_modifier"/>
<!--PERSONAL DATA-->
<div class="grid header-body personal-data border" id="personal-data-pc">
<div class="section-header">
<h1 data-i18n="personal data" data-i18-title="personal data" title="personal data">personal data</h1>
</div>
<div class="section-body">
<div class="grid section border-bottom">
<h2 class="aligned-left" data-i18n="1. last name, first name (and alias or code name if applicable)" data-i18-title="1. last name, first name (and alias or code name if applicable)" title="1. last name, first name (and alias or code name if applicable)">1. last name, first name (and alias or code name if applicable)</h2>
<label data-i18-title="1. last name, first name (and alias or code name if applicable)" title="1. last name, first name (and alias or code name if applicable)">
<input data-i18n-placeholder="1. last name, first name (and alias or code name if applicable)" name="attr_character_name" placeholder="1. last name, first name (and alias or code name if applicable)" title="@{name}" type="text" value=""/>
</label>
<div class="vert-line"></div>
<h2 class="aligned-left" data-i18n="2. profession (rank if applicable)" data-i18-title="2. profession (rank if applicable)" title="2. profession (rank if applicable)">2. profession (rank if applicable)</h2>
<label data-i18-title="2. profession (rank if applicable)" title="2. profession (rank if applicable)">
<input data-i18n-placeholder="2. profession (rank if applicable)" name="attr_profession" placeholder="2. profession (rank if applicable)" title="@{profession}" type="text" value=""/>
</label>
<div class="vert-line"></div>
</div>
<div class="grid section border-bottom">
<h2 class="aligned-left" data-i18n="3. employer" data-i18-title="3. employer" title="3. employer">3. employer</h2>
<label data-i18-title="3. employer" title="3. employer">
<input data-i18n-placeholder="3. employer" name="attr_employer" placeholder="3. employer" title="@{employer}" type="text" value=""/>
</label>
<div class="vert-line"></div>
<h2 class="aligned-left" data-i18n="4. nationality and residence" data-i18-title="4. nationality and residence" title="4. nationality and residence">4. nationality and residence</h2>
<label data-i18-title="4. nationality and residence" title="4. nationality and residence">
<input data-i18n-placeholder="4. nationality and residence" name="attr_nationality and residence" placeholder="4. nationality and residence" title="@{nationality and residence}" type="text" value=""/>
</label>
<div class="vert-line"></div>
</div>
<div class="grid section border-bottom">
<h2 class="aligned-left" data-i18n="5. sex" data-i18-title="5. sex" title="5. sex">5. sex</h2>
<label data-i18-title="5. sex" title="5. sex">
<input data-i18n-placeholder="5. sex" name="attr_sex" placeholder="5. sex" title="@{sex}" type="text" value=""/>
</label>
<div class="vert-line"></div>
<h2 class="aligned-left" data-i18n="6. age and d.o.b." data-i18-title="6. age and d.o.b." title="6. age and d.o.b.">6. age and d.o.b.</h2>
<label data-i18-title="6. age and d.o.b." title="6. age and d.o.b.">
<input data-i18n-placeholder="6. age and d.o.b." name="attr_age" placeholder="6. age and d.o.b." title="@{age}" type="text" value=""/>
</label>
<div class="vert-line"></div>
<h2 class="aligned-left" data-i18n="7. education and occupational history" data-i18-title="7. education and occupational history" title="7. education and occupational history">7. education and occupational history</h2>
<label data-i18-title="7. education and occupational history" title="7. education and occupational history">
<input data-i18n-placeholder="7. education and occupational history" name="attr_education" placeholder="7. education and occupational history" title="@{education}" type="text" value=""/>
</label>
<div class="vert-line"></div>
</div>
</div>
</div>
<!--STATISTICAL DATA-->
<div class="grid header-body statistical-data border" id="statistical-data-pc">
<div class="section-header">
<h1 data-i18n="statistical data" data-i18n-title="statistical data" title="statistical data">statistical data</h1>
</div>
<!--STATISTICS-->
<div class="grid section-body">
<div class="grid section-stats">
<h2 class="aligned-left" data-i18n="8. statistics" data-i18n-title="8. statistics" title="8. statistics">8. statistics</h2>
<h2 class="center" data-i18n="score" data-i18n-title="score">score</h2>
<h2 class="center" data-i18n="×5" data-i18n-title="×5">×5</h2>
<h2 class="aligned-left" data-i18n="distinguishing features" data-i18n-title="">distinguishing features</h2>
</div>
<div class="grid section-stats body">
<div class="buttonwrapper">
<button class="roll inPersonal two" type="action" name="attr_strength_r" value="@{strength_action}">
<h3 class="aligned-left" data-i18n-title="strength">strength</h3>
<div><span class="para" data-i18n="STR" title="STR">STR</span></div>
</button>
<button class="none" type="roll" name="roll_strength" value="@{strength_action}"> </button>
<button class="none" type="action" name="act_strength-action"> </button>
<input type="hidden" name="attr_strength_action" value=""/>
</div>
<label data-i18n-title="strength score" title="strength score">
<input min="0" name="attr_strength_score" placeholder="-" title="@{strength_score}" type="text" value=" "/>
</label><span class="center" name="attr_strength" title="@{strength}"></span>
<label data-i18n-title="strength distinguishing features" title="strength distinguishing features">
<input data-i18n-placeholder="distinguishing features" name="attr_strength_features" placeholder="distinguishing features" title="@{strength_features}" type="text"/>
</label>
<input name="attr_strength" type="hidden" value="0"/>
<input name="attr_strength_hidden" type="hidden" value="0"/>
<div class="buttonwrapper">
<button class="roll inPersonal two" type="action" name="attr_constitution_r" value="@{constitution_action}">
<h3 class="aligned-left" data-i18n-title="constitution">constitution</h3>
<div><span class="para" data-i18n="CON" title="CON">CON</span></div>
</button>
<button class="none" type="roll" name="roll_constitution" value="@{constitution_action}"> </button>
<button class="none" type="action" name="act_constitution-action"> </button>
<input type="hidden" name="attr_constitution_action" value=""/>
</div>
<label data-i18n-title="constitution score" title="constitution score">
<input min="0" name="attr_constitution_score" placeholder="-" title="@{constitution_score}" type="text" value=" "/>
</label><span class="center" name="attr_constitution" title="@{constitution}"></span>
<label data-i18n-title="constitution distinguishing features" title="constitution distinguishing features">
<input data-i18n-placeholder="distinguishing features" name="attr_constitution_features" placeholder="distinguishing features" title="@{constitution_features}" type="text"/>
</label>
<input name="attr_constitution" type="hidden" value="0"/>
<input name="attr_constitution_hidden" type="hidden" value="0"/>
<div class="buttonwrapper">
<button class="roll inPersonal two" type="action" name="attr_dexterity_r" value="@{dexterity_action}">
<h3 class="aligned-left" data-i18n-title="dexterity">dexterity</h3>
<div><span class="para" data-i18n="DEX" title="DEX">DEX</span></div>
</button>
<button class="none" type="roll" name="roll_dexterity" value="@{dexterity_action}"> </button>
<button class="none" type="action" name="act_dexterity-action"> </button>
<input type="hidden" name="attr_dexterity_action" value=""/>
</div>
<label data-i18n-title="dexterity score" title="dexterity score">
<input data-i18n-placeholder="-" min="0" name="attr_dexterity_score" placeholder="-" title="@{dexterity_score}" type="text" value=" "/>
</label><span class="center" name="attr_dexterity" title="@{dexterity}"></span>
<label data-i18n-title="dexterity distinguishing features" title="dexterity distinguishing features">
<input data-i18n-placeholder="distinguishing features" name="attr_dexterity_features" placeholder="distinguishing features" title="@{dexterity_features}" type="text"/>
</label>
<input name="attr_dexterity" type="hidden" value="0"/>
<input name="attr_dexterity_hidden" type="hidden" value="0"/>
<div class="buttonwrapper">
<button class="roll inPersonal two" type="action" name="attr_intelligence_r" value="@{intelligence_action}">
<h3 class="aligned-left" data-i18n-title="intelligence">intelligence</h3>
<div><span class="para" data-i18n="INT" title="INT">INT</span></div>
</button>
<button class="none" type="roll" name="roll_intelligence" value="@{intelligence_action}"> </button>
<button class="none" type="action" name="act_intelligence-action"> </button>
<input type="hidden" name="attr_intelligence_action" value=""/>
</div>
<label data-i18n-title="intelligence score" title="intelligence score">
<input data-i18n-placeholder="-" min="0" name="attr_intelligence_score" placeholder="-" title="@{intelligence_score}" type="text" value=" "/>
</label><span class="center" name="attr_intelligence" title="@{intelligence}"></span>
<label data-i18n-title="intelligence distinguishing features" title="intelligence distinguishing features">
<input data-i18n-placeholder="distinguishing features" name="attr_intelligence_features" placeholder="distinguishing features" title="@{intelligence_features}" type="text"/>
</label>
<input name="attr_intelligence" type="hidden" value="0"/>
<input name="attr_intelligence_hidden" type="hidden" value="0"/>
<div class="buttonwrapper">
<button class="roll inPersonal two" type="action" name="attr_power_r" value="@{power_action}">
<h3 class="aligned-left" data-i18n-title="power">power</h3>
<div><span class="para" data-i18n="POW" title="POW">POW</span></div>
</button>
<button class="none" type="roll" name="roll_power" value="@{power_action}"> </button>
<button class="none" type="action" name="act_power-action"> </button>
<input type="hidden" name="attr_power_action" value=""/>
</div>
<label data-i18n-title="power score" title="power score">
<input min="0" name="attr_power_score" placeholder="-" title="@{power_score}" type="text" value=" "/>
</label><span class="center" name="attr_power" title="@{power}"></span>
<label data-i18n-title="power distinguishing features" title="power distinguishing features">
<input data-i18n-placeholder="distinguishing features" name="attr_power_features" placeholder="distinguishing features" title="@{power_features}" type="text"/>
</label>
<input name="attr_power" type="hidden" value="0"/>
<input name="attr_power_hidden" type="hidden" value="0"/>
<div class="buttonwrapper">
<button class="roll inPersonal two" type="action" name="attr_charisma_r" value="@{charisma_action}">
<h3 class="aligned-left" data-i18n-title="charisma">charisma</h3>
<div><span class="para" data-i18n="CHA" title="CHA">CHA</span></div>
</button>
<button class="none" type="roll" name="roll_charisma" value="@{charisma_action}"> </button>
<button class="none" type="action" name="act_charisma-action"> </button>
<input type="hidden" name="attr_charisma_action" value=""/>
</div>
<label data-i18n-title="charisma score" title="charisma score">
<input data-i18n-placeholder="-" min="0" name="attr_charisma_score" placeholder="-" title="@{charisma_score}" type="text" value=" "/>
</label><span class="center" name="attr_charisma" title="@{charisma}"></span>
<label data-i18n-title="charisma distinguishing features" title="charisma distinguishing features">
<input data-i18n-placeholder="distinguishing features" name="attr_charisma_features" placeholder="distinguishing features" title="@{charisma_features}" type="text"/>
</label>
<input name="attr_charisma" type="hidden" value="0"/>
<input name="attr_charisma_hidden" type="hidden" value="0"/>
</div>
<!--DERIVED ATTRIBUTES-->
<div class="grid section-derived">
<h2 class="aligned-left" data-i18n-title="9. derived attributes">9. derived attributes</h2>
<h2 class="center">maximum</h2>
<h2 class="center">current</h2>
</div>
<div class="grid section-derived body">
<div class="explainer">
<div class="derived-attr nbsp">
<h3 class="aligned-left" data-i18n="hit points" data-i18n-title="hit points">hit points</h3><span class="para" data-i18n="HP">HP</span>
</div>
<div class="tooltip-container"><span class="questionmark">?</span><span class="tooltip-text">
<p> <span class="zero_val">Dead (0HP):</span>An Agent at 0 HP is dead.
Sometimes its possible to resuscitate a dead character.
If the Handler says resuscitation is possible, someone must make a First Aid test.
</p>
<p><span class="low_val"> Unconscious (1HP-2HP):</span>An Agent whose HP hits 1 or 2 falls unconscious. An unconscious Agent is helpless and can be killed with a single attack without having to roll.
At 3 HP or more (or after an hour passes), the Agent regains consciousness.
</p>
<p> Any time your Agent is reduced to 2 or fewer HP, make a CON×5 test. Failure indicates permanent injury.</p>
<p> <span class="normal_val">Normal (3HP-MaxHP)</span></p>
<p><span class="extra_val">Extra Point (> MaxHP):</span>An Agent can more than the maximum HP through unnatural means.</p></span></div>
</div><span class="center" name="attr_hit_points_max" title="@{hit_points_max}"></span>
<label data-i18n-title="hit points" title="hit points">
<input name="attr_hit_modifier" type="hidden" value="0"/>
<input class="normal_color" name="attr_color_hit" type="radio" value="normal" checked="checked"/>
<input class="vitality-colored" name="attr_hit_points" placeholder="-" title="@{hit}" type="text" style="width:100%;" value=" "/>
<input class="low_color" name="attr_color_hit" type="radio" value="low" checked="checked"/>
<input class="vitality-colored" name="attr_hit_points" placeholder="-" title="@{hit}" type="text" style="width:100%;" value=" "/>
<input class="extra_color" name="attr_color_hit" type="radio" value="extra" checked="checked"/>
<input class="vitality-colored" name="attr_hit_points" placeholder="-" title="@{hit}" type="text" style="width:100%;" value=" "/>
<input class="zero_color" name="attr_color_hit" type="radio" value="zero" checked="checked"/>
<input class="vitality-colored" name="attr_hit_points" placeholder="-" title="@{hit}" type="text" style="width:100%;" value=" "/>
</label>
<input name="attr_hit_points_max" type="hidden" value="0"/>
<div class="explainer">
<div class="derived-attr nbsp">
<h3 class="aligned-left" data-i18n="willpower points" data-i18n-title="willpower points">willpower points</h3><span class="para" data-i18n="WP">WP</span>
</div>
<div class="tooltip-container"><span class="questionmark">?</span><span class="tooltip-text">
<p> <span class="zero_val">Lose Control (0 WP):</span>An Agent at 0 WP cannot succeed at any tests, including SAN tests.
Sooner or later the Agent falls asleep, regardless of any
disorders or stimulants, long enough to regain WP.
</p>
<p><span class="low_val"> Emotional Breakdown (1WP-2WP):</span>An Agent whose WP hits 1 or 2 has an emotional breakdown.
The Agent suffers a 20% penalty to all actions until WP rises above 2.
</p>
<p> <span class="normal_val">Normal (3WP-MaxWP) </span></p>
<p><span class="extra_val">Extra Point (> MaxWP):</span>An Agent can get more than the maximum WP through unnatural means.</p></span></div>
</div><span class="center" name="attr_willpower_points_max" title="@{willpower_points_max}"></span>
<label data-i18n-title="willpower points" title="willpower points">
<input name="attr_willpower_modifier" type="hidden" value="0"/>
<input class="normal_color" name="attr_color_willpower" type="radio" value="normal" checked="checked"/>
<input class="vitality-colored" name="attr_willpower_points" placeholder="-" title="@{willpower}" type="text" style="width:100%;" value=" "/>
<input class="low_color" name="attr_color_willpower" type="radio" value="low" checked="checked"/>
<input class="vitality-colored" name="attr_willpower_points" placeholder="-" title="@{willpower}" type="text" style="width:100%;" value=" "/>
<input class="extra_color" name="attr_color_willpower" type="radio" value="extra" checked="checked"/>
<input class="vitality-colored" name="attr_willpower_points" placeholder="-" title="@{willpower}" type="text" style="width:100%;" value=" "/>
<input class="zero_color" name="attr_color_willpower" type="radio" value="zero" checked="checked"/>
<input class="vitality-colored" name="attr_willpower_points" placeholder="-" title="@{willpower}" type="text" style="width:100%;" value=" "/>
</label>
<input name="attr_willpower_points_max" type="hidden" value="0"/>
<input name="attr_past_sanity" type="hidden" value=" "/>
<div class="buttonwrapper">
<button class="roll inPersonal two" type="action" name="attr_sanity_points_r" value="@{sanity_points_action}">
<h3 class="aligned-left" data-i18n-title="sanity points">sanity points</h3>
<div><span class="para" data-i18n="SAN" title="SAN">SAN</span></div>
</button>
<button class="none" type="roll" name="roll_sanity_points" value="@{sanity_points_action}"> </button>
<button class="none" type="action" name="act_sanity_points-action"> </button>
<input type="hidden" name="attr_sanity_points_action" value=""/>
</div><span class="center" name="attr_sanity_points_max" title="@{sanity_points_max}"></span>
<label data-i18n-title="sanity points" title="sanity points">
<input name="attr_sanity_points" placeholder="-" title="@{sanity_points}" type="text" style="width:100%;" value=" "/>
</label>
<input name="attr_sanity_points_max" type="hidden" value="0"/>
<div class="derived-attr nbsp">
<h3 class="aligned-left" data-i18n="breaking point" data-i18n-title="breaking point">breaking point</h3><span class="para" data-i18n="BP">BP</span>
</div><span class="center" name="attr_breaking_point_max" title="@{breaking_point_max}"></span>
<label data-i18n-title="breaking point" title="breaking point">
<input name="attr_breaking_point" placeholder="-" title="@{breaking_point}" type="text" style="width:100%;" value=" "/>
</label>
<input name="attr_breaking_point_max" type="hidden" value="0"/>
<div class="buttonwrapper">
<button class="roll one" type="action" name="attr_luck_r" value="@{luck_action}">
<h3 class="aligned-left" data-i18n-title="luck">luck</h3>
</button>
<button class="none" type="roll" name="roll_luck" value="@{luck_action}"> </button>
<button class="none" type="action" name="act_luck-action"> </button>
<input type="hidden" name="attr_luck_action" value=""/>
</div><span class="center" name="attr_luck_max" title="@{luck_max}"></span><span class="center" name="attr_luck_max" title="@{luck_max}">
<input name="attr_luck" placeholder="10" title="@{luck}" type="hidden" value="50"/><span class="percent">%</span></span>
<input name="attr_luck_max" type="hidden" value="50"/>
</div>
<!--PHYSICAL DESCRIPTION-->
<div class="grid section-physical">
<h2 class="aligned-left" data-i18n-title="10. physical description">10. physical description</h2>
<textarea name="attr_physical_description" placeholder="physical description" title="@{physical_description}"></textarea>
</div>
</div>
</div>
<!--PSYCHOLOGICAL DATA-->
<div class="grid header-body pyschological-data border" id="psychological-data-pc">
<div class="section-header">
<h1 data-i18n="psychological data" data-i18n-title="psychological data ">psychological data </h1>
</div>
<div class="grid section-body">
<div class="grid section-bond-col">
<div class="box1">
<h2 class="aligned-left" data-i18n="11. bonds" data-i18n-title="11. bonds">11. bonds </h2>
</div>
<h2 class="center" data-i18n="score" data-i18n-title="score">score</h2>
</div>
<div class="section-repeating-container border-bottom">
<fieldset class="repeating_bonds">
<input type="hidden" name="attr_initialized" value="0"/>
<div class="grid section-bond-col">
<div class="box">
<label class="styled_checkbox">
<input name="attr_hurt" title="@{attr_hurt}" type="checkbox" value="hurt"/>
</label>
<div class="form-group">
<input name="attr_setScore" title="@{repeating_bonds_${x}_setScore}" type="hidden" value="0"/>
<label class="bond_button">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input class="text-align-left" type="text" name="attr_name" value="bond"/></span><span class="unedit_text">
<input class="usable-color" name="attr_color" type="radio" value="on" checked="checked"/>
<div class="usable-element">
<div class="buttonwrapper">
<button class="repeating_roll pressable special_div one" type="action" name="attr_bond_r" value="@{bond_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none pressable special_div one" type="roll" name="roll_bond" value="@{bond_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_bond-action"> </button>
<input type="hidden" name="attr_bond_action" value=""/>
</div>
</div>
<input class="unusable-color" name="attr_color" type="radio" value="off" checked="checked"/>
<div class="unusable-element">
<div class="buttonwrapper">
<button class="repeating_roll pressable special_div one" type="action" name="attr_bond_r" value="@{bond_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none pressable special_div one" type="roll" name="roll_bond" value="@{bond_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_bond-action"> </button>
<input type="hidden" name="attr_bond_action" value=""/>
</div>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="bond score" title="bond score">
<input style="width: 100%;" data-i18n-placeholder="-" name="attr_score" placeholder="-" title="@{repeating_bonds_${x}_score}" type="number"/>
<input type="hidden" name="attr_score_old" value="0"/>
</label>
</div>
</fieldset>
</div>
<div class="grid section-bond-notes border-bottom">
<div class="aligned-left" data-i18n="Check a damaged Bonds box until the next Home scene ends." data-i18n-title="Check a damaged Bonds box until the next Home scene ends." style="margin-left: 1rem;">Check a damaged Bonds box until the next Home scene ends.</div>
</div>
<div class="grid section-motivations">
<div class="grid section border-bottom">
<h2 class="aligned-left" data-i18n="12. motivations and mental disorders" data-i18n-title="12. motivations and mental disorders">12. motivations and mental disorders</h2>
<textarea data-i18n-placeholder="motivations and mental disorders" name="attr_motivations" placeholder="motivations and mental disorders"></textarea>
</div>
</div>
<div class="grid section-incidents">
<div class="grid section border-bottom">
<h2 class="aligned-left" data-i18n="13. incidents of san loss without going insane" data-i18n-title="13. incidents of san loss without going insane">13. incidents of san loss without going insane</h2>
</div>
<div class="grid section incidents-body">
<h3 class="center" data-i18n="violence" data-i18n-title="violence">violence</h3>
<div class="radiocontainer">
<input class="radiobox reset" type="radio" name="attr_violence" value="-1" checked="checked"/>
<input class="radiobox" type="radio" name="attr_violence" value="0"/>
<input class="radiobox" type="radio" name="attr_violence" value="1"/>
<input class="radiobox" type="radio" name="attr_violence" value="2"/>
</div>
<input type="hidden" name="attr_violence_adapted" value="0"/><span class="italic" data-i18n="adapted">adapted</span>
<h3 class="center" data-i18n="helplessness" data-i18n-title="helplessness">helplessness</h3>
<div class="radiocontainer">
<input class="radiobox reset" type="radio" name="attr_helplessness" value="-1" checked="checked"/>
<input class="radiobox" type="radio" name="attr_helplessness" value="0"/>
<input class="radiobox" type="radio" name="attr_helplessness" value="1"/>
<input class="radiobox" type="radio" name="attr_helplessness" value="2"/>
</div>
<input type="hidden" name="attr_helplessness_adapted" value="0"/><span class="italic" data-i18n="adapted">adapted</span>
</div>
</div>
</div>
</div>
<!--APPLICABLE SKILL SETS-->
<div class="grid header-body applicable-skill-sets border" id="applicable-skills-pc">
<div class="section-header">
<h1 data-i18n="applicable skill sets" data-i18n-title="applicable skill sets">applicable skill sets</h1>
</div>
<div class="grid section-body border">
<div class="skill-container border-bottom">
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="accounting fail checkbox" title="accounting fail checkbox">
<input name="attr_accounting_fail" title="@{accounting_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_accounting_r" value="@{accounting_action}">
<h3 class="aligned-left" data-i18n-title="accounting">accounting</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_accounting" value="@{accounting_action}"> </button>
<button class="none" type="action" name="act_accounting-action"> </button>
<input type="hidden" name="attr_accounting_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="accounting rank" title="accounting rank">
<input data-i18n-placeholder="0" name="attr_accounting" title="@{accounting}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="alertness fail checkbox" title="alertness fail checkbox">
<input name="attr_alertness_fail" title="@{alertness_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_alertness_r" value="@{alertness_action}">
<h3 class="aligned-left" data-i18n-title="alertness">alertness</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_alertness" value="@{alertness_action}"> </button>
<button class="none" type="action" name="act_alertness-action"> </button>
<input type="hidden" name="attr_alertness_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="alertness rank" title="alertness rank">
<input data-i18n-placeholder="0" name="attr_alertness" title="@{alertness}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="anthropology fail checkbox" title="anthropology fail checkbox">
<input name="attr_anthropology_fail" title="@{anthropology_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_anthropology_r" value="@{anthropology_action}">
<h3 class="aligned-left" data-i18n-title="anthropology">anthropology</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_anthropology" value="@{anthropology_action}"> </button>
<button class="none" type="action" name="act_anthropology-action"> </button>
<input type="hidden" name="attr_anthropology_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="anthropology rank" title="anthropology rank">
<input data-i18n-placeholder="0" name="attr_anthropology" title="@{anthropology}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="archeology fail checkbox" title="archeology fail checkbox">
<input name="attr_archeology_fail" title="@{archeology_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_archeology_r" value="@{archeology_action}">
<h3 class="aligned-left" data-i18n-title="archeology">archeology</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_archeology" value="@{archeology_action}"> </button>
<button class="none" type="action" name="act_archeology-action"> </button>
<input type="hidden" name="attr_archeology_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="archeology rank" title="archeology rank">
<input data-i18n-placeholder="0" name="attr_archeology" title="@{archeology}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="art fail checkbox" title="art fail checkbox">
<input name="attr_art_1_fail" title="@{art_1_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_art_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="art" title="art">art</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_art_1_name" title="@{art_1_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_art_1_r" value="@{art_1_action}">
<h3 class="aligned-left"><span title="art">art</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_art_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_art_1" value="@{art_1_action}"> </button>
<button class="none" type="action" name="act_art_1-action"> </button>
<input type="hidden" name="attr_art_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_art_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="art rank" title="art rank">
<input data-i18n-placeholder="0" name="attr_art_1" title="@{art_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="art fail checkbox" title="art fail checkbox">
<input name="attr_art_2_fail" title="@{art_2_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_art_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="art" title="art">art</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_art_2_name" title="@{art_2_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_art_2_r" value="@{art_2_action}">
<h3 class="aligned-left"><span title="art">art</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_art_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_art_2" value="@{art_2_action}"> </button>
<button class="none" type="action" name="act_art_2-action"> </button>
<input type="hidden" name="attr_art_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_art_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="art rank" title="art rank">
<input data-i18n-placeholder="0" name="attr_art_2" title="@{art_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="artillery fail checkbox" title="artillery fail checkbox">
<input name="attr_artillery_fail" title="@{artillery_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_artillery_r" value="@{artillery_action}">
<h3 class="aligned-left" data-i18n-title="artillery">artillery</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_artillery" value="@{artillery_action}"> </button>
<button class="none" type="action" name="act_artillery-action"> </button>
<input type="hidden" name="attr_artillery_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="artillery rank" title="artillery rank">
<input data-i18n-placeholder="0" name="attr_artillery" title="@{artillery}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="athletics fail checkbox" title="athletics fail checkbox">
<input name="attr_athletics_fail" title="@{athletics_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_athletics_r" value="@{athletics_action}">
<h3 class="aligned-left" data-i18n-title="athletics">athletics</h3><span data-i18n="(30%)" title="(30%)">(30%)</span>
</button>
<button class="none" type="roll" name="roll_athletics" value="@{athletics_action}"> </button>
<button class="none" type="action" name="act_athletics-action"> </button>
<input type="hidden" name="attr_athletics_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="athletics rank" title="athletics rank">
<input data-i18n-placeholder="0" name="attr_athletics" title="@{athletics}" placeholder="0" type="text" value="30"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="bureaucracy fail checkbox" title="bureaucracy fail checkbox">
<input name="attr_bureaucracy_fail" title="@{bureaucracy_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_bureaucracy_r" value="@{bureaucracy_action}">
<h3 class="aligned-left" data-i18n-title="bureaucracy">bureaucracy</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_bureaucracy" value="@{bureaucracy_action}"> </button>
<button class="none" type="action" name="act_bureaucracy-action"> </button>
<input type="hidden" name="attr_bureaucracy_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="bureaucracy rank" title="bureaucracy rank">
<input data-i18n-placeholder="0" name="attr_bureaucracy" title="@{bureaucracy}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="computer science fail checkbox" title="computer science fail checkbox">
<input name="attr_computer_science_fail" title="@{computer_science_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_computer_science_r" value="@{computer_science_action}">
<h3 class="aligned-left" data-i18n-title="computer science">computer science</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_computer_science" value="@{computer_science_action}"> </button>
<button class="none" type="action" name="act_computer_science-action"> </button>
<input type="hidden" name="attr_computer_science_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="computer science rank" title="computer science rank">
<input data-i18n-placeholder="0" name="attr_computer_science" title="@{computer_science}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="craft fail checkbox" title="craft fail checkbox">
<input name="attr_craft_1_fail" title="@{craft_1_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_craft_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="craft" title="craft">craft</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_craft_1_name" title="@{craft_1_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_craft_1_r" value="@{craft_1_action}">
<h3 class="aligned-left"><span title="craft">craft</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_craft_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_craft_1" value="@{craft_1_action}"> </button>
<button class="none" type="action" name="act_craft_1-action"> </button>
<input type="hidden" name="attr_craft_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_craft_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="craft rank" title="craft rank">
<input data-i18n-placeholder="0" name="attr_craft_1" title="@{craft_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="craft fail checkbox" title="craft fail checkbox">
<input name="attr_craft_2_fail" title="@{craft_2_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_craft_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="craft" title="craft">craft</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_craft_2_name" title="@{craft_2_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_craft_2_r" value="@{craft_2_action}">
<h3 class="aligned-left"><span title="craft">craft</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_craft_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_craft_2" value="@{craft_2_action}"> </button>
<button class="none" type="action" name="act_craft_2-action"> </button>
<input type="hidden" name="attr_craft_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_craft_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="craft rank" title="craft rank">
<input data-i18n-placeholder="0" name="attr_craft_2" title="@{craft_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="criminology fail checkbox" title="criminology fail checkbox">
<input name="attr_criminology_fail" title="@{criminology_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_criminology_r" value="@{criminology_action}">
<h3 class="aligned-left" data-i18n-title="criminology">criminology</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_criminology" value="@{criminology_action}"> </button>
<button class="none" type="action" name="act_criminology-action"> </button>
<input type="hidden" name="attr_criminology_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="criminology rank" title="criminology rank">
<input data-i18n-placeholder="0" name="attr_criminology" title="@{criminology}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="demolitions fail checkbox" title="demolitions fail checkbox">
<input name="attr_demolitions_fail" title="@{demolitions_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_demolitions_r" value="@{demolitions_action}">
<h3 class="aligned-left" data-i18n-title="demolitions">demolitions</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_demolitions" value="@{demolitions_action}"> </button>
<button class="none" type="action" name="act_demolitions-action"> </button>
<input type="hidden" name="attr_demolitions_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="demolitions rank" title="demolitions rank">
<input data-i18n-placeholder="0" name="attr_demolitions" title="@{demolitions}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="disguise fail checkbox" title="disguise fail checkbox">
<input name="attr_disguise_fail" title="@{disguise_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_disguise_r" value="@{disguise_action}">
<h3 class="aligned-left" data-i18n-title="disguise">disguise</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_disguise" value="@{disguise_action}"> </button>
<button class="none" type="action" name="act_disguise-action"> </button>
<input type="hidden" name="attr_disguise_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="disguise rank" title="disguise rank">
<input data-i18n-placeholder="0" name="attr_disguise" title="@{disguise}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="dodge fail checkbox" title="dodge fail checkbox">
<input name="attr_dodge_fail" title="@{dodge_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_dodge_r" value="@{dodge_action}">
<h3 class="aligned-left" data-i18n-title="dodge">dodge</h3><span data-i18n="(30%)" title="(30%)">(30%)</span>
</button>
<button class="none" type="roll" name="roll_dodge" value="@{dodge_action}"> </button>
<button class="none" type="action" name="act_dodge-action"> </button>
<input type="hidden" name="attr_dodge_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="dodge rank" title="dodge rank">
<input data-i18n-placeholder="0" name="attr_dodge" title="@{dodge}" placeholder="0" type="text" value="30"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="drive fail checkbox" title="drive fail checkbox">
<input name="attr_drive_fail" title="@{drive_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_drive_r" value="@{drive_action}">
<h3 class="aligned-left" data-i18n-title="drive">drive</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_drive" value="@{drive_action}"> </button>
<button class="none" type="action" name="act_drive-action"> </button>
<input type="hidden" name="attr_drive_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="drive rank" title="drive rank">
<input data-i18n-placeholder="0" name="attr_drive" title="@{drive}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="firearms fail checkbox" title="firearms fail checkbox">
<input name="attr_firearms_fail" title="@{firearms_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_firearms_r" value="@{firearms_action}">
<h3 class="aligned-left" data-i18n-title="firearms">firearms</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_firearms" value="@{firearms_action}"> </button>
<button class="none" type="action" name="act_firearms-action"> </button>
<input type="hidden" name="attr_firearms_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="firearms rank" title="firearms rank">
<input data-i18n-placeholder="0" name="attr_firearms" title="@{firearms}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="first aid fail checkbox" title="first aid fail checkbox">
<input name="attr_first_aid_fail" title="@{first_aid_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_first_aid_r" value="@{first_aid_action}">
<h3 class="aligned-left" data-i18n-title="first aid">first aid</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_first_aid" value="@{first_aid_action}"> </button>
<button class="none" type="action" name="act_first_aid-action"> </button>
<input type="hidden" name="attr_first_aid_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="first aid rank" title="first aid rank">
<input data-i18n-placeholder="0" name="attr_first_aid" title="@{first_aid}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="forensics fail checkbox" title="forensics fail checkbox">
<input name="attr_forensics_fail" title="@{forensics_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_forensics_r" value="@{forensics_action}">
<h3 class="aligned-left" data-i18n-title="forensics">forensics</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_forensics" value="@{forensics_action}"> </button>
<button class="none" type="action" name="act_forensics-action"> </button>
<input type="hidden" name="attr_forensics_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="forensics rank" title="forensics rank">
<input data-i18n-placeholder="0" name="attr_forensics" title="@{forensics}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="heavy machinery fail checkbox" title="heavy machinery fail checkbox">
<input name="attr_heavy_machinery_fail" title="@{heavy_machinery_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_heavy_machinery_r" value="@{heavy_machinery_action}">
<h3 class="aligned-left" data-i18n-title="heavy machinery">heavy machinery</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_heavy_machinery" value="@{heavy_machinery_action}"> </button>
<button class="none" type="action" name="act_heavy_machinery-action"> </button>
<input type="hidden" name="attr_heavy_machinery_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="heavy machinery rank" title="heavy machinery rank">
<input data-i18n-placeholder="0" name="attr_heavy_machinery" title="@{heavy_machinery}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="heavy weapons fail checkbox" title="heavy weapons fail checkbox">
<input name="attr_heavy_weapons_fail" title="@{heavy_weapons_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_heavy_weapons_r" value="@{heavy_weapons_action}">
<h3 class="aligned-left" data-i18n-title="heavy weapons">heavy weapons</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_heavy_weapons" value="@{heavy_weapons_action}"> </button>
<button class="none" type="action" name="act_heavy_weapons-action"> </button>
<input type="hidden" name="attr_heavy_weapons_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="heavy weapons rank" title="heavy weapons rank">
<input data-i18n-placeholder="0" name="attr_heavy_weapons" title="@{heavy_weapons}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="history fail checkbox" title="history fail checkbox">
<input name="attr_history_fail" title="@{history_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_history_r" value="@{history_action}">
<h3 class="aligned-left" data-i18n-title="history">history</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_history" value="@{history_action}"> </button>
<button class="none" type="action" name="act_history-action"> </button>
<input type="hidden" name="attr_history_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="history rank" title="history rank">
<input data-i18n-placeholder="0" name="attr_history" title="@{history}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="HUMINT fail checkbox" title="HUMINT fail checkbox">
<input name="attr_humint_fail" title="@{humint_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_humint_r" value="@{humint_action}">
<h3 class="aligned-left" data-i18n-title="HUMINT">HUMINT</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_humint" value="@{humint_action}"> </button>
<button class="none" type="action" name="act_humint-action"> </button>
<input type="hidden" name="attr_humint_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="HUMINT rank" title="HUMINT rank">
<input data-i18n-placeholder="0" name="attr_humint" title="@{humint}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="law fail checkbox" title="law fail checkbox">
<input name="attr_law_fail" title="@{law_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_law_r" value="@{law_action}">
<h3 class="aligned-left" data-i18n-title="law">law</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_law" value="@{law_action}"> </button>
<button class="none" type="action" name="act_law-action"> </button>
<input type="hidden" name="attr_law_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="law rank" title="law rank">
<input data-i18n-placeholder="0" name="attr_law" title="@{law}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="medicine fail checkbox" title="medicine fail checkbox">
<input name="attr_medicine_fail" title="@{medicine_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_medicine_r" value="@{medicine_action}">
<h3 class="aligned-left" data-i18n-title="medicine">medicine</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_medicine" value="@{medicine_action}"> </button>
<button class="none" type="action" name="act_medicine-action"> </button>
<input type="hidden" name="attr_medicine_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="medicine rank" title="medicine rank">
<input data-i18n-placeholder="0" name="attr_medicine" title="@{medicine}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="melee weapons fail checkbox" title="melee weapons fail checkbox">
<input name="attr_melee_weapons_fail" title="@{melee_weapons_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_melee_weapons_r" value="@{melee_weapons_action}">
<h3 class="aligned-left" data-i18n-title="melee weapons">melee weapons</h3><span data-i18n="(30%)" title="(30%)">(30%)</span>
</button>
<button class="none" type="roll" name="roll_melee_weapons" value="@{melee_weapons_action}"> </button>
<button class="none" type="action" name="act_melee_weapons-action"> </button>
<input type="hidden" name="attr_melee_weapons_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="melee weapons rank" title="melee weapons rank">
<input data-i18n-placeholder="0" name="attr_melee_weapons" title="@{melee_weapons}" placeholder="0" type="text" value="30"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="military science fail checkbox" title="military science fail checkbox">
<input name="attr_military_science_1_fail" title="@{military_science_1_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_military_science_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="military science" title="military science">military science</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_military_science_1_name" title="@{military_science_1_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_military_science_1_r" value="@{military_science_1_action}">
<h3 class="aligned-left"><span title="military science">military science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_military_science_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_military_science_1" value="@{military_science_1_action}"> </button>
<button class="none" type="action" name="act_military_science_1-action"> </button>
<input type="hidden" name="attr_military_science_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_military_science_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="military science rank" title="military science rank">
<input data-i18n-placeholder="0" name="attr_military_science_1" title="@{military_science_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="military science fail checkbox" title="military science fail checkbox">
<input name="attr_military_science_2_fail" title="@{military_science_2_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_military_science_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="military science" title="military science">military science</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_military_science_2_name" title="@{military_science_2_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_military_science_2_r" value="@{military_science_2_action}">
<h3 class="aligned-left"><span title="military science">military science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_military_science_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_military_science_2" value="@{military_science_2_action}"> </button>
<button class="none" type="action" name="act_military_science_2-action"> </button>
<input type="hidden" name="attr_military_science_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_military_science_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="military science rank" title="military science rank">
<input data-i18n-placeholder="0" name="attr_military_science_2" title="@{military_science_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="navigate fail checkbox" title="navigate fail checkbox">
<input name="attr_navigate_fail" title="@{navigate_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_navigate_r" value="@{navigate_action}">
<h3 class="aligned-left" data-i18n-title="navigate">navigate</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_navigate" value="@{navigate_action}"> </button>
<button class="none" type="action" name="act_navigate-action"> </button>
<input type="hidden" name="attr_navigate_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="navigate rank" title="navigate rank">
<input data-i18n-placeholder="0" name="attr_navigate" title="@{navigate}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="occult fail checkbox" title="occult fail checkbox">
<input name="attr_occult_fail" title="@{occult_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_occult_r" value="@{occult_action}">
<h3 class="aligned-left" data-i18n-title="occult">occult</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_occult" value="@{occult_action}"> </button>
<button class="none" type="action" name="act_occult-action"> </button>
<input type="hidden" name="attr_occult_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="occult rank" title="occult rank">
<input data-i18n-placeholder="0" name="attr_occult" title="@{occult}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="persuade fail checkbox" title="persuade fail checkbox">
<input name="attr_persuade_fail" title="@{persuade_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_persuade_r" value="@{persuade_action}">
<h3 class="aligned-left" data-i18n-title="persuade">persuade</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_persuade" value="@{persuade_action}"> </button>
<button class="none" type="action" name="act_persuade-action"> </button>
<input type="hidden" name="attr_persuade_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="persuade rank" title="persuade rank">
<input data-i18n-placeholder="0" name="attr_persuade" title="@{persuade}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="pharmacy fail checkbox" title="pharmacy fail checkbox">
<input name="attr_pharmacy_fail" title="@{pharmacy_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_pharmacy_r" value="@{pharmacy_action}">
<h3 class="aligned-left" data-i18n-title="pharmacy">pharmacy</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_pharmacy" value="@{pharmacy_action}"> </button>
<button class="none" type="action" name="act_pharmacy-action"> </button>
<input type="hidden" name="attr_pharmacy_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="pharmacy rank" title="pharmacy rank">
<input data-i18n-placeholder="0" name="attr_pharmacy" title="@{pharmacy}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="pilot fail checkbox" title="pilot fail checkbox">
<input name="attr_pilot_1_fail" title="@{pilot_1_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_pilot_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="pilot" title="pilot">pilot</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_pilot_1_name" title="@{pilot_1_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_pilot_1_r" value="@{pilot_1_action}">
<h3 class="aligned-left"><span title="pilot">pilot</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_pilot_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_pilot_1" value="@{pilot_1_action}"> </button>
<button class="none" type="action" name="act_pilot_1-action"> </button>
<input type="hidden" name="attr_pilot_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_pilot_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="pilot rank" title="pilot rank">
<input data-i18n-placeholder="0" name="attr_pilot_1" title="@{pilot_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="pilot fail checkbox" title="pilot fail checkbox">
<input name="attr_pilot_2_fail" title="@{pilot_2_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_pilot_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="pilot" title="pilot">pilot</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_pilot_2_name" title="@{pilot_2_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_pilot_2_r" value="@{pilot_2_action}">
<h3 class="aligned-left"><span title="pilot">pilot</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_pilot_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_pilot_2" value="@{pilot_2_action}"> </button>
<button class="none" type="action" name="act_pilot_2-action"> </button>
<input type="hidden" name="attr_pilot_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_pilot_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="pilot rank" title="pilot rank">
<input data-i18n-placeholder="0" name="attr_pilot_2" title="@{pilot_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="psychotherapy fail checkbox" title="psychotherapy fail checkbox">
<input name="attr_psychotherapy_fail" title="@{psychotherapy_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_psychotherapy_r" value="@{psychotherapy_action}">
<h3 class="aligned-left" data-i18n-title="psychotherapy">psychotherapy</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_psychotherapy" value="@{psychotherapy_action}"> </button>
<button class="none" type="action" name="act_psychotherapy-action"> </button>
<input type="hidden" name="attr_psychotherapy_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="psychotherapy rank" title="psychotherapy rank">
<input data-i18n-placeholder="0" name="attr_psychotherapy" title="@{psychotherapy}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="ride fail checkbox" title="ride fail checkbox">
<input name="attr_ride_fail" title="@{ride_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_ride_r" value="@{ride_action}">
<h3 class="aligned-left" data-i18n-title="ride">ride</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_ride" value="@{ride_action}"> </button>
<button class="none" type="action" name="act_ride-action"> </button>
<input type="hidden" name="attr_ride_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="ride rank" title="ride rank">
<input data-i18n-placeholder="0" name="attr_ride" title="@{ride}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="science fail checkbox" title="science fail checkbox">
<input name="attr_science_1_fail" title="@{science_1_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_science_1_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="science" title="science">science</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_science_1_name" title="@{science_1_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_science_1_r" value="@{science_1_action}">
<h3 class="aligned-left"><span title="science">science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_science_1_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_science_1" value="@{science_1_action}"> </button>
<button class="none" type="action" name="act_science_1-action"> </button>
<input type="hidden" name="attr_science_1_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_science_1_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="science rank" title="science rank">
<input data-i18n-placeholder="0" name="attr_science_1" title="@{science_1}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="science fail checkbox" title="science fail checkbox">
<input name="attr_science_2_fail" title="@{science_2_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_science_2_test"/><span class="edit_text">
<div class="special_div">
<h3><span data-i18n="science" title="science">science</span><span>: </span></h3>
</div>
<input style="width:100%;" name="attr_science_2_name" title="@{science_2_name}" type="text" data-i18n-placeholder="enter skill type" placeholder="enter skill type"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="roll pressable special_div undefined" type="action" name="attr_science_2_r" value="@{science_2_action}">
<h3 class="aligned-left"><span title="science">science</span><span class="postspace">:</span><span class="postspace"> </span><span name="attr_science_2_name"></span>
</h3>
</button>
<button class="none" type="roll" name="roll_science_2" value="@{science_2_action}"> </button>
<button class="none" type="action" name="act_science_2-action"> </button>
<input type="hidden" name="attr_science_2_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_science_2_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="science rank" title="science rank">
<input data-i18n-placeholder="0" name="attr_science_2" title="@{science_2}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="search fail checkbox" title="search fail checkbox">
<input name="attr_search_fail" title="@{search_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_search_r" value="@{search_action}">
<h3 class="aligned-left" data-i18n-title="search">search</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_search" value="@{search_action}"> </button>
<button class="none" type="action" name="act_search-action"> </button>
<input type="hidden" name="attr_search_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="search rank" title="search rank">
<input data-i18n-placeholder="0" name="attr_search" title="@{search}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="SIGINT fail checkbox" title="SIGINT fail checkbox">
<input name="attr_sigint_fail" title="@{sigint_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_sigint_r" value="@{sigint_action}">
<h3 class="aligned-left" data-i18n-title="SIGINT">SIGINT</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_sigint" value="@{sigint_action}"> </button>
<button class="none" type="action" name="act_sigint-action"> </button>
<input type="hidden" name="attr_sigint_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="SIGINT rank" title="SIGINT rank">
<input data-i18n-placeholder="0" name="attr_sigint" title="@{sigint}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="stealth fail checkbox" title="stealth fail checkbox">
<input name="attr_stealth_fail" title="@{stealth_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_stealth_r" value="@{stealth_action}">
<h3 class="aligned-left" data-i18n-title="stealth">stealth</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_stealth" value="@{stealth_action}"> </button>
<button class="none" type="action" name="act_stealth-action"> </button>
<input type="hidden" name="attr_stealth_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="stealth rank" title="stealth rank">
<input data-i18n-placeholder="0" name="attr_stealth" title="@{stealth}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="surgery fail checkbox" title="surgery fail checkbox">
<input name="attr_surgery_fail" title="@{surgery_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_surgery_r" value="@{surgery_action}">
<h3 class="aligned-left" data-i18n-title="surgery">surgery</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_surgery" value="@{surgery_action}"> </button>
<button class="none" type="action" name="act_surgery-action"> </button>
<input type="hidden" name="attr_surgery_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="surgery rank" title="surgery rank">
<input data-i18n-placeholder="0" name="attr_surgery" title="@{surgery}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="survival fail checkbox" title="survival fail checkbox">
<input name="attr_survival_fail" title="@{survival_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_survival_r" value="@{survival_action}">
<h3 class="aligned-left" data-i18n-title="survival">survival</h3><span data-i18n="(10%)" title="(10%)">(10%)</span>
</button>
<button class="none" type="roll" name="roll_survival" value="@{survival_action}"> </button>
<button class="none" type="action" name="act_survival-action"> </button>
<input type="hidden" name="attr_survival_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="survival rank" title="survival rank">
<input data-i18n-placeholder="0" name="attr_survival" title="@{survival}" placeholder="0" type="text" value="10"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="swim fail checkbox" title="swim fail checkbox">
<input name="attr_swim_fail" title="@{swim_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_swim_r" value="@{swim_action}">
<h3 class="aligned-left" data-i18n-title="swim">swim</h3><span data-i18n="(20%)" title="(20%)">(20%)</span>
</button>
<button class="none" type="roll" name="roll_swim" value="@{swim_action}"> </button>
<button class="none" type="action" name="act_swim-action"> </button>
<input type="hidden" name="attr_swim_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="swim rank" title="swim rank">
<input data-i18n-placeholder="0" name="attr_swim" title="@{swim}" placeholder="0" type="text" value="20"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="unarmed combat fail checkbox" title="unarmed combat fail checkbox">
<input name="attr_unarmed_combat_fail" title="@{unarmed_combat_fail}" type="checkbox"/>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_unarmed_combat_r" value="@{unarmed_combat_action}">
<h3 class="aligned-left" data-i18n-title="unarmed combat">unarmed combat</h3><span data-i18n="(40%)" title="(40%)">(40%)</span>
</button>
<button class="none" type="roll" name="roll_unarmed_combat" value="@{unarmed_combat_action}"> </button>
<button class="none" type="action" name="act_unarmed_combat-action"> </button>
<input type="hidden" name="attr_unarmed_combat_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="unarmed combat rank" title="unarmed combat rank">
<input data-i18n-placeholder="0" name="attr_unarmed_combat" title="@{unarmed_combat}" placeholder="0" type="text" value="40"/>
</label>
</div>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="unnatural fail checkbox" title="unnatural fail checkbox"><span class="nbsp"></span>
</label>
<div class="buttonwrapper">
<button class="roll normal_div inSkills two" type="action" name="attr_unnatural_r" value="@{unnatural_action}">
<h3 class="aligned-left" data-i18n-title="unnatural">unnatural</h3><span data-i18n="(0%)" title="(0%)">(0%)</span>
</button>
<button class="none" type="roll" name="roll_unnatural" value="@{unnatural_action}"> </button>
<button class="none" type="action" name="act_unnatural-action"> </button>
<input type="hidden" name="attr_unnatural_action" value=""/>
</div>
</div>
<label class="rank" data-i18n-title="unnatural rank" title="unnatural rank">
<input data-i18n-placeholder="0" name="attr_unnatural" title="@{unnatural}" placeholder="0" type="text" value="0"/>
</label>
</div>
<div class="section-repeating-container">
<div class="section-title border-bottom">
<h3 class="margin-left" data-i18n="foriegn languages and other skills:" data-i18n-title="foriegn languages and other skills:">foriegn languages and other skills: </h3>
</div>
<div class="section-body">
<fieldset class="repeating_skills">
<input type="hidden" name="attr_initialized" value="0"/>
<div class="section-skill-col">
<div class="box">
<label class="styled-checkbox center-items" data-i18n-title="undefined fail checkbox" title="undefined fail checkbox">
<input name="attr_fail" title="@{undefined_fail}" type="checkbox"/>
</label>
<div class="form-skill-group">
<label class="skill-button">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input style="width:100%;" name="attr_name" title="@{repeating_skills_${x}__name}" type="text" value="skill"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="repeating_roll undefined undefined two" type="action" name="attr_skill_r" value="@{skill_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none undefined undefined two" type="roll" name="roll_skill" value="@{skill_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_skill-action"> </button>
<input type="hidden" name="attr_skill_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
</div>
<label class="rank" data-i18n-title="skill rank" title="skill rank">
<input data-i18n-placeholder="0" name="attr_rank" title="@{repeating_skills_${x}_rank}" placeholder="0" type="text" value=""/>
</label>
</div>
</fieldset>
</div>
</div>
</div>
<div class="section-directions center updateinfo">
<div class="subgrid"><span data-i18n="Check a box when you attempt to use a skill and fail. After the session, add 1d4 to each checked skill and erase all checks.">Check a box when you attempt to use a skill and fail. After the session, add 1d4 to each checked skill and erase all checks.</span>
<button class="lvl" name="act_levelup" type="action">
<h3 class="lvlup">Q</h3>
</button>
</div>
<div class="othergrid">
<input type="checkbox"/><span></span>
<div class="summary">
<fieldset class="repeating_summary">
<div class="section-summary"><span class="item1" name="attr_skillname"></span><span class="item2" style="color:red;" name="attr_oldval"></span><span class="item3 slash"></span><span class="item4" style="color:green;" name="attr_newval"></span></div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<!--INJURIES-->
<div class="grid header-body injuries border" id="injuries-pc">
<div class="section-header">
<h1 data-i18n="injuries" data-i18n-title="injuries">injuries</h1>
</div>
<div class="grid section-body border">
<h2 class="aligned-left" data-i18n="14. wounds and ailments" data-i18n-title="14. wounds and ailments">14. wounds and ailments</h2>
<div class="border-bottom">
<textarea data-i18n-placeholder="injuries" name="attr_injuries" placeholder="injuries" title="@{injuries}"></textarea>
</div>
<div class="section-directions center"><span data-i18n="Has First Aid been attempted since the last injury?">Has First Aid been attempted since the last injury?</span>
<label class="styled-checkbox" data-i18n-title="checkbox for first aid" title="checkbox for first aid">
<input name="attr_injuries_first_aid" type="checkbox"/>
</label><span data-i18n="yes: only Medicine, Surgery, or long-term rest can help further.">yes: only Medicine, Surgery, or long-term rest can help further.</span>
</div>
</div>
</div>
<!--EQUIPMENT-->
<div class="grid header-body equipment border" id="equipment-pc">
<div class="section-header">
<h1 data-i18n="equipment" data-i18n-title="equipment">equipment</h1>
</div>
<div class="grid section-body border">
<h2 class="aligned-left" data-i18n="15. armor and gear" data-i18n-title="15. armor and gear">15. armor and gear</h2>
<div class="border-bottom">
<textarea data-i18n-placeholder="armor and gear" name="attr_armor_and_gear" placeholder="armor and gear" title="@{armor_and_gear}"></textarea>
</div>
<div class="section-directions center border-bottom"><span data-i18n="Body armor reduces the damage of all attacks except Called Shots and successful Lethality rolls.">Body armor reduces the damage of all attacks except Called Shots and successful Lethality rolls.</span></div>
<div class="grid section-weapons border-bottom">
<h2 data-i18n="16. weapons" data-i18n-title="16. weapons" title="16. weapons">16. weapons</h2>
<div class="vert-line"></div>
<h2 data-i18n="skill %" data-i18n-title="skill %" title="skill %">skill %</h2>
<div class="vert-line"></div>
<h2 data-i18n="base range" data-i18n-title="base range" title="base range">base range</h2>
<div class="vert-line"></div>
<h2 data-i18n="damage" data-i18n-title="damage" title="damage">damage</h2>
<div class="vert-line"></div>
<h2 data-i18n="armor piercing" data-i18n-title="armor piercing" title="armor piercing">armor piercing</h2>
<div class="vert-line"></div>
<h2 data-i18n="lethality %" data-i18n-title="lethality %" title="lethality %">lethality %</h2>
<div class="vert-line"></div>
<h2 data-i18n="kill radius" data-i18n-title="kill radius" title="kill radius">kill radius</h2>
<div class="vert-line"></div>
<h2 data-i18n="ammo" data-i18n-title="ammo" title="ammo">ammo</h2>
</div>
<div class="repeating-container border-bottom">
<fieldset class="repeating_weapons">
<input type="hidden" name="attr_initialized" value="0"/>
<div class="grid section-weapons border-bottom repeating-section-weapons">
<input type="hidden" name="attr_weapons"/>
<input name="attr_hasLethality" type="hidden" value="0"/>
<input name="attr_hasDamage" type="hidden" value="0"/>
<input name="attr_hasammo" type="hidden" value="0"/>
<button class="none two" type="roll" name="roll_damage" value="@{damage_action}"> </button>
<button class="none" type="action" name="act_damage-action"> </button>
<input type="hidden" name="attr_damage_action" value=""/>
<button class="none two" type="roll" name="roll_damage_critical" value="@{damage_critical_action}"> </button>
<button class="none" type="action" name="act_damage_critical-action"> </button>
<input type="hidden" name="attr_damage_critical_action" value=""/>
<button class="none two" type="roll" name="roll_lethality_percent" value="@{lethality_percent_action}"> </button>
<button class="none" type="action" name="act_lethality_percent-action"> </button>
<input type="hidden" name="attr_lethality_percent_action" value=""/>
<button class="none two" type="roll" name="roll_lethality_percent_critical" value="@{lethality_percent_critical_action}"> </button>
<button class="none" type="action" name="act_lethality_percent_critical-action"> </button>
<input type="hidden" name="attr_lethality_percent_critical_action" value=""/>
<button class="none two" type="roll" name="roll_double_barrel" value="@{double_barrel_action}"> </button>
<button class="none" type="action" name="act_double_barrel-action"> </button>
<input type="hidden" name="attr_double_barrel_action" value=""/>
<button class="none two" type="roll" name="roll_double_barrel_critical" value="@{double_barrel_critical_action}"> </button>
<button class="none" type="action" name="act_double_barrel_critical-action"> </button>
<input type="hidden" name="attr_double_barrel_critical_action" value=""/>
<button class="none two" type="roll" name="roll_selective_fire" value="@{selective_fire_action}"> </button>
<button class="none" type="action" name="act_selective_fire-action"> </button>
<input type="hidden" name="attr_selective_fire_action" value=""/>
<button class="none two" type="roll" name="roll_selective_fire_critical" value="@{selective_fire_critical_action}"> </button>
<button class="none" type="action" name="act_selective_fire_critical-action"> </button>
<input type="hidden" name="attr_selective_fire_critical_action" value=""/>
<div class="form-normal-group">
<label class="weapon_button">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input style="display:none" type="checkbox" name="attr_hasAdvancedWeapons" value="active"/>
<input style="width:100%; padding: 0px 0px; margin: 0px 0;box-sizing: border-box;" type="text" name="attr_name" value="weapon" title="@{repeating_weapons_${x}_weapons}"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="repeating_roll pressable special_div one" type="action" name="attr_weapons_r" value="@{weapons_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none pressable special_div one" type="roll" name="roll_weapons" value="@{weapons_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_weapons-action"> </button>
<input type="hidden" name="attr_weapons_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="skill % input" title="skill % input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="skill %" name="attr_skill_percent" list="weaponskills" placeholder="skill %" title="@{repeating_weapons_${x}_skill_percent}" type="text" value=""/></span><span class="unedit_text"><span name="attr_skill_span"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="base range input" title="base range input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="base range" name="attr_base_range" placeholder="base range" title="@{repeating_weapons_${x}_base_range}" type="text" value=""/></span><span class="unedit_text"><span name="attr_base_range"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="damage input" title="damage input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input class="blast" name="attr_blast_radius" type="hidden"/><span class="wblast"><span>- </span></span><span class="noblast">
<input class="shotgun" name="attr_hasDoubleBarrel" type="hidden"/><span class="noshotgun">
<input data-i18n-placeholder="damage" name="attr_damage" placeholder="damage" title="@{repeating_weapons_${x}_damage}" type="text" value=""/></span><span class="wshotgun">
<div class="slashpart">
<input data-i18n-placeholder="damage" name="attr_damage" placeholder="damage" title="@{repeating_weapons_${x}_damage}" type="text" value=""/><span>/</span>
<input data-i18n-placeholder="damage" name="attr_double_barrel" placeholder="damage" title="@{repeating_weapons_${x}_double_barrel}" type="text" value=""/>
</div></span></span></span><span class="unedit_text">
<input class="blast" name="attr_blast_radius" type="hidden"/><span class="wblast"><span>- </span></span><span class="noblast">
<input class="shotgun" name="attr_hasDoubleBarrel" type="hidden"/><span class="noshotgun"><span data-i18n-placeholder="damage" name="attr_damage"></span></span><span class="wshotgun">
<div class="slashpart"><span data-i18n-placeholder="damage" name="attr_damage"></span><span>/</span><span data-i18n-placeholder="damage" name="attr_double_barrel"></span></div></span></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="armor piercing input" title="armor piercing input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="armor piercing" name="attr_armor_piercing" placeholder="armor piercing" title="@{repeating_weapons_${x}_armor_piercing}" type="text" value=""/></span><span class="unedit_text"><span name="attr_armor_piercing"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="lethality % input" title="lethality % input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input class="shotgun" name="attr_shotgun" type="hidden"/>
<input class="noshotgun" data-i18n-placeholder="lethality %" name="attr_lethality_percent" placeholder="lethality %" title="@{repeating_weapons_${x}_lethality_percent}" type="number" value=""/><span class="wshotgun">-</span></span><span class="unedit_text">
<input class="shotgun" name="attr_shotgun" type="hidden"/><span class="noshotgun" data-i18n-placeholder="lethality %" name="attr_lethality_percent"></span><span class="wshotgun">-</span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="kill radius input" title="kill radius input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="kill radius" name="attr_kill_radius" placeholder="kill radius" title="@{repeating_weapons_${x}_kill_radius}" type="text" value=""/></span><span class="unedit_text"><span name="attr_kill_radius"></span></span>
</label>
<div class="vert-line"></div>
<label class="weapon_label" data-i18n-title="ammo input" title="ammo input" style="display: grid; position:relative;">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text allowpopup">
<input data-i18n-placeholder="ammo" name="attr_ammo_total" placeholder="ammo" title="@{repeating_weapons_${x}_ammo_max}" type="text" value="0"/>
<input type="hidden" name="attr_hasAdvancedWeapons" value=""/>
<div class="othergrid advancedinfo hasAdvancedWeapons">
<input class="advanced" type="checkbox"/><span></span>
<div class="modifiers">
<!--.modifiers-body -->
<h2 class="title" data-i18n="advanced features">advanced features</h2>
<div class="item-shotgun">
<input class="fix-check" name="attr_shotgun" type="checkbox" value="active"/><span><span data-i18n="shotgun">shotgun</span> <span class="para">+20%</span></span><span class="double_damage">
<input class="fix-check" name="attr_hasDoubleBarrel" type="checkbox" value="active"/><span data-i18n="double damage">double damage</span></span>
</div>
<div class="item-check">
<input class="fix-check" name="attr_blast_radius" type="checkbox" value="active"/><span><span data-i18n="blast radius">blast radius</span> <span class="para">+20%</span></span>
</div>
<div class="item-acc">
<input class="fix-check" name="attr_hasAccessories" type="checkbox" value="active"/><span data-i18n="accessories">accessories</span>
<input data-i18n-placeholder="Holographic sight Standard" type="text" name="attr_accessory_name" title="@{repeating_weapons_${x}_accessory_name}" placeholder="Holographic sight" value=""/><span style="display:inline;justify-self:end;"><span data-i18n="modifier">modifier</span>
<input class="number" type="text" list="common_modifiers" name="attr_accessory_modifier" title="@{repeating_weapons_${x}_accessory_modifier}" value="0" maxlength="2" size="3" style="width: 3rem;"/><span class="perc">%</span></span>
</div>
<div class="item-sel">
<input class="fix-check" name="attr_selfire" type="checkbox" value="active"/><span data-i18n-value="selective fire">selective fire</span>
<input type="hidden" name="attr_selfire_type" value="short burst"/>
<select class="small-select" name_="attr_selfireType">
<option value="short burst"><span class="selfire"> <span class="first" data-i18n="short burst">short burst</span> <span>(</span><span data-i18n="3 ammo">3 ammo</span><span>)</span></span></option>
<option value="long burst"><span class="selfire"> <span class="first" data-i18n="long burst"> long burst</span> <span>(</span><span class="para" data-i18n="5 ammo">5 ammo</span><span>)</span></span></option>
<option value="short spray"><span class="selfire"> <span class="first" data-i18n="short spray">short spray</span> <span>(</span><span class="para" data-i18n="10 ammo">10 ammo</span><span>)</span></span></option>
<option value="long spray"> long spray<span class="selfire"> <span class="first" data-i18n="long spray"> long spray</span> <span>(</span><span class="para" data-i18n="20 ammo">20 ammo</span><span>)</span></span></option>
</select><span style="display:inline;justify-self:end;"><span data-i18n="lethality">lethality</span>
<input class="number" type="text" name="attr_selfire_lethality_percent" title="@{repeating_weapons_${x}_selfire_lethality_percent}" value="10" maxlength="2" size="3" style="width: 3rem;"/><span>%</span></span>
</div>
</div>
</div></span><span class="unedit_text">
<input class="hasammo" type="hidden" name="attr_hasammo" value="0"/><span class="wammo">
<div class="slashpart">
<input data-i18n-placeholder="ammo" name="attr_ammo" placeholder="ammo" title="@{repeating_weapons_${x}_ammo}" value="0" style="width: 3rem;"/><span>/</span><span data-i18n-placeholder="ammo" name="attr_ammo_total" placeholder="ammo" title="@{repeating_weapons_${x}_ammo_total}"></span>
</div></span><span class="noammo"><span>-</span></span></span>
</label>
</div>
</fieldset>
</div>
<input class="visible_rituals" type="hidden" name="attr_visible_pc_rituals"/>
<div class="is_visible_on_pc">
<div class="grid section-rituals border-bottom">
<h2 data-i18n="16b. rituals" data-i18n-title="16b. rituals" title="16b. rituals">16b. rituals</h2>
<div class="vert-line"></div>
<h2 data-i18n="skill %" data-i18n-title="skill %" title="skill %">skill %</h2>
<div class="vert-line"></div>
<h2 data-i18n="sanity cost" data-i18n-title="sanity cost" title="sanity cost">sanity cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="HP cost" data-i18n-title="HP cost" title="HP cost">HP cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="WP cost" data-i18n-title="WP cost" title="WP cost">WP cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="POW cost" data-i18n-title="POW cost" title="POW cost">POW cost</h2>
<div class="vert-line"></div>
<h2 data-i18n="complexity" data-i18n-title="complexity" title="complexity">complexity</h2>
<div class="vert-line"></div>
<h2 data-i18n="activation time" data-i18n-title="activation time" title="activation time">activation time</h2>
<div class="vert-line"></div>
<h2 data-i18n="extra" data-i18n-title="extra" title="extra">extra</h2>
</div>
<div class="repeating-container border-bottom">
<fieldset class="repeating_rituals">
<input type="hidden" name="attr_initialized" value="0"/>
<div class="grid section-rituals border-bottom repeating-section-rituals">
<input type="hidden" name="attr_complexity_text" value=""/>
<input type="hidden" name="attr_activation_time_text" value=""/>
<input type="hidden" name="attr_study_time_text" value=""/>
<input type="hidden" name="attr_study_cost_text" value=""/>
<input type="hidden" name="attr_cost_text" value=""/>
<button class="none two" type="roll" name="roll_pay_cost" value="@{pay_cost_action}"> </button>
<button class="none" type="action" name="act_pay_cost-action"> </button>
<input type="hidden" name="attr_pay_cost_action" value=""/>
<button class="none two" type="roll" name="roll_force_connection" value="@{force_connection_action}"> </button>
<button class="none" type="action" name="act_force_connection-action"> </button>
<input type="hidden" name="attr_force_connection_action" value=""/>
<button class="none two" type="roll" name="roll_accept_failure" value="@{accept_failure_action}"> </button>
<button class="none" type="action" name="act_accept_failure-action"> </button>
<input type="hidden" name="attr_accept_failure_action" value=""/>
<button class="none two" type="roll" name="roll_attack_damage" value="@{attack_damage_action}"> </button>
<button class="none" type="action" name="act_attack_damage-action"> </button>
<input type="hidden" name="attr_attack_damage_action" value=""/>
<button class="none two" type="roll" name="roll_heal_damage" value="@{heal_damage_action}"> </button>
<button class="none" type="action" name="act_heal_damage-action"> </button>
<input type="hidden" name="attr_heal_damage_action" value=""/>
<button class="none two" type="roll" name="roll_attack_lethality_percent" value="@{attack_lethality_percent_action}"> </button>
<button class="none" type="action" name="act_attack_lethality_percent-action"> </button>
<input type="hidden" name="attr_attack_lethality_percent_action" value=""/>
<button class="none two" type="roll" name="roll_heal_lethality_percent" value="@{heal_lethality_percent_action}"> </button>
<button class="none" type="action" name="act_heal_lethality_percent-action"> </button>
<input type="hidden" name="attr_heal_lethality_percent_action" value=""/>
<button class="none two" type="roll" name="roll_power" value="@{power_action}"> </button>
<button class="none" type="action" name="act_power-action"> </button>
<input type="hidden" name="attr_power_action" value=""/>
<div class="form-normal-group">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input style="width:100%; padding: 0px 0px; margin: 0px 0;box-sizing: border-box;" type="text" name="attr_name" value="ritual" title="@{repeating_rituals_${x}_ritual}"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="repeating_roll pressable special_div one" type="action" name="attr_ritual_r" value="@{ritual_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none pressable special_div one" type="roll" name="roll_ritual" value="@{ritual_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_ritual-action"> </button>
<input type="hidden" name="attr_ritual_action" value=""/>
</div></span>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="skill % input" title="skill % input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="skill %" name="attr_skill_percent" list="ritualskills" title="@{repeating_rituals_${x}_skill_percent}" type="text" value="@{ritual_skill}"/></span><span class="unedit_text"><span name="attr_skill_span"></span></span>
</label>
<div class="vert-line"></div>
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text"><span class="ritualsanloss">
<input data-i18n-placeholder="0" name="attr_sanity_loss_success" type="text"/><span>/</span>
<input data-i18n-placeholder="1" name="attr_sanity_loss_failure" type="text"/></span></span><span class="unedit_text"><span class="ritualsanloss"><span name="attr_sanity_loss_success"></span><span>/</span><span name="attr_sanity_loss_failure"></span></span></span>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="hit_points_cost input" title="hit_points_cost input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="hit_points_cost" name="attr_hit_points_cost" title="@{repeating_rituals_${x}_hit_points_cost}" type="text" value=""/></span><span class="unedit_text"><span name="attr_hit_points_cost"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="willpower_points_cost input" title="willpower_points_cost input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="willpower_points_cost" name="attr_willpower_points_cost" title="@{repeating_rituals_${x}_willpower_points_cost}" type="text" value=""/></span><span class="unedit_text"><span name="attr_willpower_points_cost"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="power_score_cost input" title="power_score_cost input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="power_score_cost" name="attr_power_score_cost" title="@{repeating_rituals_${x}_power_score_cost}" type="text" value=""/></span><span class="unedit_text"><span name="attr_power_score_cost"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="complexity input" title="complexity input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<select name="attr_complexity" title="@{repeating_rituals_${x}_complexity}">
<optgroup label="complexity_type">
<option data-i18n-value="simple">simple</option>
<option data-i18n-value="complex">complex</option>
<option data-i18n-value="elaborate">elaborate</option>
</optgroup>
</select></span><span class="unedit_text"><span name="attr_complexity"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="activation time input" title="activation time input">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text"><span>
<input type="text" name="attr_activation_time" value="" style="width: 3rem !important;"/>
<select class="small-select" name="attr_activation_time_unit">
<option data-i18n-value="rounds" value="rounds">rounds</option>
<option data-i18n-value="minutes" value="minutes">minutes</option>
<option data-i18n-value="hours" value="hours">hours</option>
<option data-i18n-value="days" value="days">days</option>
<option data-i18n-value="weeks" value="weeks">weeks</option>
<option data-i18n-value="months" value="months">months</option>
<option data-i18n-value="years" value="years">years</option>
<option data-i18n-value="decades" value="decades">decades</option>
<option data-i18n-value="centuries" value="centuries">centuries</option>
<option data-i18n-value="millennia" value="millennia">millennia</option>
<option data-i18n-value="eons" value="eons">eons</option>
</select></span></span><span class="unedit_text"><span class="space-after" name="attr_activation_time"> </span> <span name="attr_activation_time_unit"></span></span>
</label>
<div class="vert-line"></div>
<label class="ritual_label" data-i18n-title="extra input" title="extra input" style="display: grid; position:relative;">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text allowpopup"><span></span>
<div class="othergrid advancedinfo">
<input class="advanced" type="checkbox"/><span></span>
<div class="modifiers_rituals">
<h2 class="title" data-i18n="ritual information">ritual information</h2>
<div class="two-col">
<div class="item-number"><span data-i18n="unnatural gain">unnatural gain</span><span>
<input type="text" name="attr_unnatural_gain" title="@{repeating_rituals_${x}_unnatural_gain}" value="0" style="width: 4rem !important;"/></span></div><span></span>
</div>
<div class="two-col">
<div class="item-text"><span data-i18n="study time">study time</span><span>
<input type="text" name="attr_study_time" value="" style="width: 3rem !important;"/>
<select class="small-select" name="attr_study_time_unit">
<option data-i18n-value="rounds" value="rounds">rounds</option>
<option data-i18n-value="minutes" value="minutes">minutes</option>
<option data-i18n-value="hours" value="hours">hours</option>
<option data-i18n-value="days" value="days">days</option>
<option data-i18n-value="weeks" value="weeks">weeks</option>
<option data-i18n-value="months" value="months">months</option>
<option data-i18n-value="years" value="years">years</option>
<option data-i18n-value="decades" value="decades">decades</option>
<option data-i18n-value="centuries" value="centuries">centuries</option>
<option data-i18n-value="millennia" value="millennia">millennia</option>
<option data-i18n-value="eons" value="eons">eons</option>
</select></span>
</div>
<div class="item-number"><span data-i18n="SAN loss for learning">san loss for learning</span><span>
<input type="text" name="attr_sanity_loss_for_learning" title="@{repeating_rituals_${x}_sanity_loss_for_learning}" value="0" style="width: 4rem !important;"/></span></div>
</div>
<div class="item-textbox"><span data-i18n="ritual description">ritual duration </span>
<textarea data-i18n-placeholder="ritual description" name="attr_description" placeholder="ritual description" title="@{repeating_rituals_${x}_description}"></textarea>
</div>
<h2 class="title" data-i18n="additional costs">additional costs</h2>
<div class="two-col large-row-space">
<div class="item-text"><span data-i18n="strength">strength</span>
<input type="text" name="attr_strength_score_cost" title="@{repeating_rituals_${x}_strength_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="constitution">constitution</span>
<input type="text" name="attr_constitution_score_cost" title="@{repeating_rituals_${x}_constitution_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="dexterity">dexterity</span>
<input type="text" name="attr_dexterity_score_cost" title="@{repeating_rituals_${x}_dexterity_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="intelligence">intelligence</span>
<input type="text" name="attr_intelligence_score_cost" title="@{repeating_rituals_${x}_intelligence_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
<div class="item-text"><span data-i18n="charisma">charisma</span>
<input type="text" name="attr_charisma_score_cost" title="@{repeating_rituals_${x}_charisma_score_cost}" value="0" style="width: 4rem !important;"/>
</div>
</div>
<h2 class="title" data-i18n="additional features">additional features</h2>
<div class="two-col">
<div class="item-check">
<input class="fix-check" name="attr_flawed_ritual" type="checkbox" value="active"/><span data-i18n="flawed ritual">flawed ritual</span>
</div>
<div class="item-check">
<input class="fix-check" name="attr_power_reaction" type="checkbox" value="active"/><span data-i18n="power contest">power contest</span>
</div>
</div>
<div class="two-col">
<div class="item"> <span class="capitalize" data-i18n="attack">attack </span></div>
<div class="item"><span class="capitalize" data-i18n="heal">heal</span></div>
</div>
<div class="two-col">
<div class="item-ritual-attack">
<select name="attr_attack_target_stat">
<optgroup data-i18n-title="direct healing">
<option data-i18n="hit points" value="hit_points"></option>
<option data-i18n="willpower points" value="willpower_points"> </option>
</optgroup>
<optgroup data-i18n-title="data-i18n-title" value="target stats">
<option dat="dat" i18n="strength" value="strength_score"></option>
<option data-i18n="constitution" value="constitution_score"></option>
<option data-i18n="dexterity" value="dexterity_score"></option>
<option data-i18n="intelligence" value="intelligence_score"></option>
<option data-i18n="charisma" value="charisma_score"></option>
</optgroup>
<option data-i18n="power" value="power_score"></option>
</select>
<input class="dmg_or_perc" type="hidden" name="attr_attack_isLethal"/>
<input class="amount isdmg" type="text" name="attr_attack_damage_amount" title="@{repeating_rituals_${x}_attack_damage_amount}" value="" data-i18n-placeholder="-"/>
<input class="amount islethal" type="text" name="attr_attack_lethality_percent_amount" title="@{repeating_rituals_${x}_attack_lethality_percent_amount}" value="" data-i18n-placeholder="%"/>
<select class="tiny-select" name="attr_attack_isLethal">
<option value="damage"> </option>
<option value="lethality_percent">%</option>
</select>
</div>
<div class="item-ritual-attack">
<select name="attr_heal_target_stat">
<optgroup data-i18n-title="direct healing">
<option data-i18n="hit points" value="hit_points"></option>
<option data-i18n="willpower points" value="willpower_points"> </option>
</optgroup>
<optgroup data-i18n-title="data-i18n-title" value="target stats">
<option dat="dat" i18n="strength" value="strength_score"></option>
<option data-i18n="constitution" value="constitution_score"></option>
<option data-i18n="dexterity" value="dexterity_score"></option>
<option data-i18n="intelligence" value="intelligence_score"></option>
<option data-i18n="charisma" value="charisma_score"></option>
</optgroup>
<option data-i18n="power" value="power_score"></option>
</select>
<input class="dmg_or_perc" type="hidden" name="attr_heal_isLethal"/>
<input class="amount isdmg" type="text" name="attr_heal_damage_amount" title="@{repeating_rituals_${x}_heal_damage_amount}" value="" data-i18n-placeholder="-"/>
<input class="amount islethal" type="text" name="attr_heal_lethality_percent_amount" title="@{repeating_rituals_${x}_heal_lethality_percent_amount}" value="" data-i18n-placeholder="%"/>
<select class="tiny-select" name="attr_heal_isLethal">
<option value="damage"> </option>
<option value="lethality_percent">%</option>
</select>
</div>
</div>
</div>
</div></span><span class="unedit_text allowpopup"><span></span>
<div class="othergrid updateinfo">
<input type="checkbox"/><span></span>
<div class="summary ritualInfo">
<h2 class="title bigger"><span name="attr_name"></span></h2>
<div class="item sheet-template-inline-block readinformation"><span class="capitalize italic" name="attr_complexity_text"></span><span>.</span><span data-i18n="study time:" style="text-transform:capitalize;">study time:</span> <span class="capitalize italic" name="attr_study_time_text"></span><span>;</span><span data-i18n="activation time:" style="text-transform:capitalize;">activation time: </span><span class="capitalize italic" name="attr_activation_time_text"></span><span>;</span> <span name="attr_study_cost_text"></span><span>.</span><span class="italic" name="attr_cost_text"></span></div><span class="item readrituals" name="attr_description"></span>
</div>
</div></span>
</label>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<!--REMARKS-->
<div class="grid header-body remarks border" id="remarks-pc">
<div class="section-header">
<h1 data-i18n="remarks" data-i18n-title="remarks">remarks</h1>
</div>
<div class="grid section-body border">
<div class="section border-bottom">
<h2 class="aligned-left" data-i18n="17. personal details and notes" data-i18n-title="17. personal details and notes">17. personal details and notes</h2>
<textarea name="attr_personal_details_and_notes" placeholder="personal details and notes" title="@{personal_details_and_notes}"></textarea>
</div>
<div class="vert-line"></div>
<div class="section border-bottom">
<div class="section border-bottom">
<h2 class="aligned-left" data-i18n="18. developments which affect home and family" data-i18n-title="18. developments which affect home and family">18. developments which affect home and family</h2>
<textarea class="resizable resizable" data-i18n-placeholder="developments which affect home and family" name="attr_developments_which_affect_home_and_family" placeholder="developments which affect home and family" title="@{developments_which_affect_home_and_family}"></textarea>
</div>
<div class="grid section-special-training border-bottom">
<h2 class="aligned-left" data-i18n="19. special training" data-i18n-title="19. special training">19. special training </h2>
<h2 class="aligned-left" data-i18n="skill or stat used" data-i18n-title="skill or stat used">skill or stat used</h2>
</div>
<div class="repeating-container border-bottom">
<fieldset class="repeating_special">
<div class="grid body section-special-training border-bottom">
<input type="hidden" name="attr_initialized" value="0"/>
<div class="form-group">
<label>
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input style="width:100%;" name="attr_name" title="@{repeating_special_${x}__name}" type="text" value="skill"/></span><span class="unedit_text">
<div class="buttonwrapper">
<button class="repeating_roll undefined undefined two" type="action" name="attr_special_r" value="@{special_action}">
<h3 class="aligned-left"><span name="attr_name"></span>
</h3>
</button>
<button class="none undefined undefined two" type="roll" name="roll_special" value="@{special_action}"> </button>
<!--here to check-->
<button class="none" type="action" name="act_special-action"> </button>
<input type="hidden" name="attr_special_action" value=""/>
</div></span>
</label>
<label class="switch-edit">
<input type="checkbox" name="attr_test" value="editable"/><span class="vslider"></span>
</label>
</div>
<label class="special_label" data-i18n-title="skill or stat used" title="skill or stat used">
<input class="edit_test" type="hidden" name="attr_test"/><span class="edit_text">
<input data-i18n-placeholder="skill or stat used" name="attr_skill_or_stat_used" placeholder="skill or stat used" list="allskills" title="@{repeating_special_${x}_skill_or_stat_used}" type="text" value=""/></span><span class="unedit_text"><span name="attr_skill_span"></span></span>
</label>
</div>
</fieldset>
</div>
</div>
<div class="section-directions center"><span data-i18n="Please indicate why this agent was recruited and why the agent agreed to be recruited.">Please indicate why this agent was recruited and why the agent agreed to be recruited.</span></div>
</div>
</div>
<!--AUTHORIZING OFFICER-->
<div class="grid authorizing-officer border">
<div class="section">
<h2 class="margin-left" data-i18n="20. authorizing officer" data-i18n-title="20. authorizing officer">20. authorizing officer</h2>
<label data-i18n-title="authorizing officer" title="authorizing officer">
<input data-i18n-placeholder="authorizing officer" name="attr_authorizing_officer" placeholder="authorizing officer" title="authorizing officer" type="text" value=""/>
</label>
</div>
<div class="vert-line"></div>
<div class="section">
<h2 class="margin-left" data-i18n="21. agent signature" data-i18n-title="21. agent signature">21. agent signature</h2>
<label data-i18n-title="agent signature" title="agent signature">
<input data-i18n-placeholder="agent signature" name="attr_agent_signature" placeholder="agent signature" title="agent signature" type="text" value=""/>
</label>
</div>
</div>
<!--BOTTOM DECORATION-->
<div class="grid section-bottom-decor"><span class="uppercase" data-i18n="DD">DD</span><span class="uppercase" data-i18n="united states form">united states form</span><span data-i18n="315">315</span><span></span><span class="uppercase" data-i18n="top secret//orcon//special access required delta green agent documenation sheet">top secret//orcon//special access required delta green agent documenation sheet <span name="attr_version"></span></span><span data-i18n="112382">112382</span></div>
</div>
<div class="handler">
<div class="grid_handler agent-data border" id="applicable-skills-handler">
<div class="header">
<!--h1(data-i18n="Agents Summary") Agents Summary-->
<h1>Agents Summary</h1>
</div>
<div class="inner-main agent-grid border-bottom">
<div class="grid__item">
<!--button.update(type='action' name='act_update_agents') 1-->
<h2>Agent</h2>
</div>
<div class="grid__item">
<h2>HP</h2>
</div>
<div class="grid__item">
<h2>WP</h2>
</div>
<div class="grid__item">
<h2>SAN</h2>
</div>
<div class="grid__item">
<h2>STR</h2>
</div>
<div class="grid__item">
<h2>CON</h2>
</div>
<div class="grid__item">
<h2>DEX</h2>
</div>
<div class="grid__item">
<h2>INT</h2>
</div>
<div class="grid__item">
<h2>POW</h2>
</div>
<div class="grid__item">
<h2>CHA</h2>
</div>
<div class="grid__item">
<h2>BP</h2>
</div>
<div class="grid__item">
<h2>Violence</h2>
</div>
<div class="grid__item_last">
<h2>Helplessness</h2>
</div>
</div>
<div class="inner-main border-bottom repeating-container">
<fieldset class="repeating_agents">
<div class="handler_header inner-main agent-grid repeating-agent-grid border-bottom">
<div class="grid__item">
<input type="hidden" name="attr_character_id" value=""/>
<input class="input-agent-name" type="text" name="attr_name" value="name" title="@{repeating_agents_${x}_name}"/>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_hit_points" value=""/><span class="align-center" name="attr_hit_points"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_willpower_points" value=""/><span class="align-center" name="attr_willpower_points"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_sanity_points" value=""/><span class="align-center" name="attr_sanity_points"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_strength_score" value=""/><span class="align-center" name="attr_strength_score"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_constitution_score" value=""/><span class="align-center" name="attr_constitution_score"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_dexterity_score" value=""/><span class="align-center" name="attr_dexterity_score"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_intelligence_score" value=""/><span class="align-center" name="attr_intelligence_score"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_power_score" value=""/><span class="align-center" name="attr_power_score"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_charisma_score" value=""/><span class="align-center" name="attr_charisma_score"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_reached_breaking_point" value=""/><span class="align-center" name="attr_reached_breaking_point"></span>
</div>
<div class="grid__item align-center">
<input class="edit_test" type="hidden" name="attr_violence_adapted" value=""/><span class="align-center" name="attr_violence_adapted"></span>
</div>
<div class="grid__item_last align-center">
<input class="edit_test" type="hidden" name="attr_helplessness_adapted" value=""/><span class="align-center" name="attr_helplessness_adapted"></span>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<!-- ROLL TEMPLATE-->
<!-- =============================-->
<!-- - lethality DAMAGE-->
<div class="rolltemplates">
<rolltemplate class="sheet-rolltemplate-pass-values"></rolltemplate>
<rolltemplate class="sheet-rolltemplate-fancy-bonds">
<div class="sheet-template-container">{{#^rollTotal() local_wp 0}}{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}} </h1>{{#target_unit}}
<h1>{{target_unit}}</h1>{{/target_unit}}
<h2>{{#subheader}}({{subheader}}){{/subheader}}</h2>
</div>{{/header}} {{/^rollTotal() local_wp 0}}
{{#rollTotal() local_wp 0}}{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}}</h1>
</div>{{/header}}{{/rollTotal() local_wp 0}}
<div class="sheet-template-body">{{#^rollTotal() local_wp 0}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-rolltitle" data-i18n="bond score:"></span><span><span class="sheet-rollbefore aligned-left sheet-template-computed">{{score}}</span><span class="sheet-rolltext aligned-left sheet-template-computed"></span><span class="sheet-rollafter aligned-left sheet-template-computed">{{computed::score}}</span></span></div>
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="willpower:">willpower:</span><span><span class="sheet-rollbefore aligned-left sheet-template-computed">{{local_wp}}</span><span class="sheet-rolltext aligned-left sheet-template-computed"></span><span class="sheet-rollafter aligned-left sheet-template-computed">{{computed::local_wp}}</span></span></div>{{#projection}}
<div class="sheet-template-row sheet-template-onerow">
{{#^rollGreater() dice local_wp}}<span class="inlinerollresult">{{dice}} SAN</span>{{/^rollGreater() dice local_wp}}
{{#rollGreater() dice local_wp}}<span class="inlinerollresult">{{local_wp}} SAN</span>{{/rollGreater() dice local_wp}}
</div>{{/projection}}
{{#rollTotal() computed::zerowp 1}}
<div class="sheet-template-row sheet-template-onerows"> <span class="inlinerollresult" data-i18n="repression fails at 0 willpower.">repression automatically fail at 0 willpower. </span></div>{{/rollTotal() computed::zerowp 1}}
{{/^rollTotal() local_wp 0}}
{{#rollTotal() local_wp 0}}
<div class="sheet-template-row sheet-template-onerows"> <span class="inlinerollresult" data-i18n="projection fails at 0 willpower.">projection fails at 0 willpower.</span></div>{{/rollTotal() local_wp 0}}
</div>
</div>{{#^rollTotal() computed::zerowp 1}}
{{#repression}}
<div class="sheet-template-reaction">
<div class="sheet-template-button">{{repress}}</div>
</div>{{/repression}}
{{/^rollTotal() computed::zerowp 1}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-fancy-ritualloss">
<div class="sheet-template-container">{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}} </h1>{{#target_unit}}
<h1>{{target_unit}}</h1>{{/target_unit}}
<h2>{{#subheader}}({{subheader}}){{/subheader}}</h2>
</div>{{/header}}
<div class="sheet-template-body">{{#has_strength_score}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="strength score"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{strength_score_cost}}</span><span>STR </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{strength_score}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::strength_score_cost}} </span></div>{{/has_strength_score}}
{{#has_constitution_score}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="constitution score"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{constitution_score_cost}}</span><span>CON </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{constitution_score}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::constitution_score_cost}} </span></div>{{/has_constitution_score}}
{{#has_dexterity_score}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="dexterity score"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{dexterity_score_cost}}</span><span>DEX </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{dexterity_score}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::dexterity_score_cost}} </span></div>{{/has_dexterity_score}}
{{#has_intelligence_score}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="intelligence score"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{intelligence_score_cost}}</span><span>INT </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{intelligence_score}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::intelligence_score_cost}} </span></div>{{/has_intelligence_score}}
{{#has_charisma_score}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="charisma score"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{charisma_score_cost}}</span><span>CHA </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{charisma_score}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::charisma_score_cost}} </span></div>{{/has_charisma_score}}
{{#has_power_score}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="power score"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{power_score_cost}}</span><span>POW </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{power_score}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::power_score_cost}} </span></div>{{/has_power_score}}
{{#has_hit_points}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="hit points"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{hit_points_cost}}</span><span>HP </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{hit_points}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::hit_points_cost}} </span></div>{{/has_hit_points}}
{{#has_willpower_points}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="willpower points"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{willpower_points_cost}}</span><span>WP </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{willpower_points}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::willpower_points_cost}} </span></div>{{/has_willpower_points}}
{{#has_sanity_points}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="sanity points"></h2>
</div>
<div class="sheet-template-row sheet-template-onerows"> <span><span class="inlinerollresult">{{sanity_points_cost}}</span><span>SAN </span></span>
</div>
<div class="sheet-template-row sheet-template-threerows"> <span class="sheet-rollbefore sheet-template-computed">{{sanity_points}}</span><span class="sheet-rolltext sheet-template-computed"></span><span class="sheet-rollafter sheet-template-computed">{{computed::sanity_points_cost}} </span></div>{{/has_sanity_points}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-fancy-rituals">
<div class="sheet-template-container">{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}} </h1>{{#target_unit}}
<h1>{{target_unit}}</h1>{{/target_unit}}
<h2>{{#subheader}}({{subheader}}%){{/subheader}}</h2>
</div>{{/header}} {{#description}}
<div class="sheet-template-body">
<div class="sheet-template-row sheet-template-description"><span class="sheet-template-inline-block"> {{description}}</span></div>
<div class="grid sheet-template-subheader">
<h2 style="color:black">. </h2>
</div>
</div>{{/description}}
<div class="sheet-template-body">
{{#rollTotal() flawed_ritual 1}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="flawed ritual:"></span><span> <span class="sheet-template-computed">-20%</span></span></div>
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="modifier:">modifier:</span><span> <span class="sheet-template-computed">{{computed::modifier}}%</span></span></div>{{/rollTotal() flawed_ritual 1}}
{{#^rollTotal() flawed_ritual 1}}
{{#^rollTotal() modifier 0}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="modifier:">modifier:</span><span> <span class="sheet-template-computed">{{modifier}}%</span></span></div>{{/^rollTotal() modifier 0}}
{{/^rollTotal() flawed_ritual 1}}
<div class="sheet-template-row sheet-template-onerow"> <span class="inlinerollresult">{{dice}} </span></div>
<div class="grid sheet-template-subheader">
<h2 data-i18n="ritual cost">ritual cost </h2>
</div>{{#willpower_points_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="willpower:"></span><span><span class="sheet-template-computed">{{willpower_points_cost}}</span></span></div>{{/willpower_points_cost}}
{{#hit_points_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="hit points:"></span><span><span class="sheet-template-computed">{{hit_points_cost}}</span></span></div>{{/hit_points_cost}}
{{#strength_score_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="strength:"></span><span><span class="sheet-template-computed">{{strength_score_cost}}</span></span></div>{{/strength_score_cost}}
{{#constitution_score_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="constitution:"></span><span><span class="sheet-template-computed">{{constitution_score_cost}}</span></span></div>{{/constitution_score_cost}}
{{#dexterity_score_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="dexterity:"></span><span><span class="sheet-template-computed">{{dexterity_score_cost}}</span></span></div>{{/dexterity_score_cost}}
{{#intelligence_score_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="intelligence:"></span><span><span class="sheet-template-computed">{{intelligence_score_cost}}</span></span></div>{{/intelligence_score_cost}}
{{#charisma_score_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="charisma:"></span><span><span class="sheet-template-computed">{{charisma_score_cost}}</span></span></div>{{/charisma_score_cost}}
{{#power_score_cost}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="power:"></span><span><span class="sheet-template-computed">{{power_score_cost}}</span></span></div>{{/power_score_cost}}
{{#rollTotal() computed::isSuccess 1}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="sanity cost:">:</span><span class="sheet-template-computed"><span>{{sanity_loss_failure}}</span></span></div>{{/rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isSuccess 0}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="sanity cost:">:</span><span><span class="aligned-left sheet-template-computed">{{sanity_loss_success}}</span><span class="sheet-rolltext aligned-left">/</span><span class="aligned-left sheet-template-computed">{{sanity_loss_failure}}</span></span></div>{{/rollTotal() computed::isSuccess 0}}
<div class="grid sheet-template-subheader">
<h2 style="color:undefined" data-i18n="outcome">outcome</h2>
</div>{{#rollTotal() computed::isSuccess 1}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="success">success</span></div>{{/rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isSuccess 0}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="failure">failure</span></div>{{/rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isSuccess 1}}
<div class="sheet-template-row sheet-template-onerow"><span class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{pay_cost}}</div></span></div>{{/rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isSuccess 0}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{accept_failure}}</div></span><span class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{reject_failure}}</div></span></div>{{/rollTotal() computed::isSuccess 0}}{{#attack_button}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="attack"> </h2>
</div>
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{attack_button}}</div></span></div>{{/attack_button}}{{#heal_button}}
<div class="grid sheet-template-subheader">
<h2 data-i18n="heal"> </h2>
</div>
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-heal-buttons">
<div class="sheet-template-button">{{heal_button}}</div></span></div>{{/heal_button}}
</div>
</div>{{#power_button}}
<div class="sheet-template-reaction">
<div class="sheet-template-button">{{power_button}}</div>
</div>{{/power_button}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-fancy-damages">
<div class="sheet-template-container">
{{#damage}}{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}} </h1>{{#target_unit}}
<h1>{{target_unit}}</h1>{{/target_unit}}
<h2>{{#subheader}}({{subheader}}){{/subheader}}</h2>
</div>{{/header}} {{/damage}}
{{#lethality_percent}}{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}} </h1>{{#target_unit}}
<h1>{{target_unit}}</h1>{{/target_unit}}
<h2>{{#subheader}}({{subheader}}%){{/subheader}}</h2>
</div>{{/header}} {{/lethality_percent}}
<div class="sheet-template-body">{{#damage}}
<div class="sheet-template-row sheet-template-tworows">
<!-- For rituals-->{{#^rollTotal() isHealing 0}}<span class="sheet-after-colons sheet-rolltitle"> <span>{{target_stat}}:</span></span>{{/^rollTotal() isHealing 0}}
<!-- for normal damages-->{{#rollTotal() isHealing 0}}<span class="sheet-after-colons sheet-rolltitle" data-i18n="damage:">damage:</span>{{/rollTotal() isHealing 0}}<span class="inlinerollresult">{{damage}} </span>
</div>{{/damage}} {{#lethality_percent}}
<div class="sheet-template-row sheet-template-onerow"><span class="span inlinerollresult">{{roll}}%</span></div>{{#^rollTotal() isHealing 1}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="outcome:"> </span>{{#^rollGreater() roll lethality_percent}}<span class="sheet-template-computed" data-i18n="kill">kill</span>{{/^rollGreater() roll lethality_percent}}
{{#rollGreater() roll lethality_percent}}<span class="sheet-template-computed" data-i18n="failure">damage </span>{{/rollGreater() roll lethality_percent}}
</div>{{/^rollTotal() isHealing 1}}
{{#rollTotal() isHealing 1}}
{{#^rollGreater() roll lethality_percent}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle"><span>{{target_stat}}:</span></span><span class="sheet-template-computed">{{lethality_percent}}</span>
</div>{{/^rollGreater() roll lethality_percent}}
{{/rollTotal() isHealing 1}}
{{#rollGreater() roll lethality_percent}}
<div class="sheet-template-row sheet-template-tworows"> {{#^rollTotal() isHealing 0}}<span class="sheet-after-colons sheet-rolltitle"> <span>{{target_stat}}:</span></span>{{/^rollTotal() isHealing 0}}
<!-- for normal damages-->{{#rollTotal() isHealing 0}}<span class="sheet-after-colons sheet-rolltitle" data-i18n="damage:">damage:</span>{{/rollTotal() isHealing 0}}<span class="sheet-template-computed">{{computed::roll}}</span>
</div>{{/rollGreater() roll lethality_percent}}{{#rollTotal() isHealing 0}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="huge target:">huge target:</span><span class="sheet-template-computed">{{lethality_percent}}</span>
</div>{{/rollTotal() isHealing 0}}{{/lethality_percent}}{{#rollTotal() trackbullets 1}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="ammunitions:"></span><span><span class="sheet-rollbefore aligned-left sheet-template-computed">{{current_ammo}}</span><span class="sheet-rolltext aligned-left"></span><span class="sheet-rollafter aligned-left sheet-template-computed">{{computed::current_ammo}}</span></span></div>{{/rollTotal() trackbullets 1}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-fancy-sanloss">
<div class="sheet-template-container">{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}} </h1>{{#target_unit}}
<h1>{{target_unit}}</h1>{{/target_unit}}
<h2>{{#subheader}}({{subheader}}){{/subheader}}</h2>
</div>{{/header}}
<div class="sheet-template-body">
{{#description}}
<div class="sheet-template-row sheet-template-description"><span class="sheet-template-inline-block"> {{description}}</span></div>{{/description}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="success:">success:</span><span class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{success_roll}}</div></span></div>
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="failure:">failure:</span>
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{failure_roll}} </div>
</div>
</div>
<div class="grid sheet-template-bottom">
<h2>{{sanity_type}}</h2>
</div>
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-fancy-rolls">
<div class="sheet-template-container">{{#name}}
<div class="sheet-template-superheader">
<h2>{{name}}</h2>
</div>{{/name}}
{{#header}}
<div class="sheet-template-header">
<h1> {{header}} </h1>{{#target_unit}}
<h1>{{target_unit}}</h1>{{/target_unit}}
<h2>{{#subheader}}({{subheader}}%){{/subheader}}</h2>
</div>{{/header}} {{#rollTotal() computed::zero_willpower 1}}
<div class="sheet-template-overlay-zero-wp">
<div class="sheet-template-overlay-zero-wp90">
<div class="sheet-template-body">
<div class="sheet-template-row sheet-template-onerow"> <span class="inlinerollresult" data-i18n="Actions automatically fail at 0 willpower.">Actions automatically fail at 0 willpower.</span></div>
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="failure">failure </span></div>
</div>
</div>
</div>{{/rollTotal() computed::zero_willpower 1}}
{{#rollTotal() computed::low_willpower 1}}
<div class="sheet-template-overlay-low-wp">
<div class="sheet-template-overlay-low-wp90">
<div class="sheet-template-body">{{#^rollTotal() computed::modifier 0}}{{#rollTotal() computed::blast_radius 1}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="blast radius:">blast radius:</span><span class="sheet-template-computed"> <span>+20%</span></span></div>{{/rollTotal() computed::blast_radius 1}}
{{#rollTotal() computed::isShotgun 1}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="shotgun:">shotgun:</span><span class="sheet-template-computed"> <span>+20%</span></span></div>{{/rollTotal() computed::isShotgun 1}}
{{#rollTotal() computed::accessories 1}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle"><span>{{accessory_name}}:</span></span><span class="sheet-template-computed">{{#rollGreater() computed::accessory_modifier 0}} <span class="sheet-template-plus sheet-template-percent">{{accessory_modifier}}</span>{{/rollGreater() computed::accessory_modifier 0}}
{{#rollLess() computed::accessory_modifier 0}}<span class="sheet-template-percent">{{accessory_modifier}}</span>{{/rollLess() computed::accessory_modifier 0}}</span></div>{{/rollTotal() computed::accessories 1}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="modifier:">modifier:</span><span class="sheet-template-computed">{{#rollGreater() computed::modifier 0}}<span class="sheet-template-plus sheet-template-percent">{{computed::modifier}}</span>{{/rollGreater() computed::modifier 0}}
{{#rollLess() computed::modifier 0}}<span class="sheet-template-percent">{{computed::modifier}}</span>{{/rollLess() computed::modifier 0}}</span></div>{{/^rollTotal() computed::modifier 0}}{{#base_range}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" i18n="base range:">base range: </span><span class="sheet-template-computed"><span>{{base_range}}</span></span></div>{{/base_range}}
{{#armor_piercing}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" i18n="armor piercing:">armor piercing:</span><span class="sheet-template-computed"><span>{{armor_piercing}}</span></span></div>{{/armor_piercing}}
{{#kill_radius}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" i18n="armor piercing:">armor piercing:</span><span class="sheet-template-computed"><span>{{kill_radius}}</span></span></div>{{/kill_radius}}
<div class="sheet-template-row sheet-template-onerow"> <span class="inlinerollresult">{{dice}}</span>
<!-- SUCCESS-->
</div>{{#rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="critical">critical</span></div>{{/rollTotal() computed::isCritical 1}}
{{/rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="success">success</span></div>{{/rollTotal() computed::isCritical 0}}
{{/rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="fumble">fumble</span></div>{{/rollTotal() computed::isCritical 1}}
{{/rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="failure">failure</span></div>{{/rollTotal() computed::isCritical 0}}
{{/rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isSuccess 1}}{{#wammo}}{{#damage}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{damage}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{damage_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/damage}}{{#double_barrel}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{double_barrel}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{double_barrel_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/double_barrel}}{{#lethality_percent}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{lethality_percent}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{lethality_percent_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/lethality_percent}}{{/wammo}}
{{#noammo}} {{#damage}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddamage}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddamage_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/damage}}{{#double_barrel}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddouble_barrel}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddouble_barrel_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/double_barrel}}{{#lethality_percent}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidlethality_percent}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidlethality_percent_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/lethality_percent}}{{/noammo}}
{{#selfire_wammo}}{{#selective_fire}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{selective_fire}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{selective_fire_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/selective_fire}}{{/selfire_wammo}}
{{#selfire_noammo}}{{#selective_fire}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidselective_fire}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidselective_fire_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/selective_fire}}{{/selfire_noammo}}{{/rollTotal() computed::isSuccess 1}}
</div>
</div>
</div>{{/rollTotal() computed::low_willpower 1}}
{{#rollTotal() computed::low_willpower 0}}
{{#rollTotal() computed::zero_willpower 0}}
<div class="sheet-template-body">{{#^rollTotal() computed::modifier 0}}{{#rollTotal() computed::blast_radius 1}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="blast radius:">blast radius:</span><span class="sheet-template-computed"> <span>+20%</span></span></div>{{/rollTotal() computed::blast_radius 1}}
{{#rollTotal() computed::isShotgun 1}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle" data-i18n="shotgun:">shotgun:</span><span class="sheet-template-computed"> <span>+20%</span></span></div>{{/rollTotal() computed::isShotgun 1}}
{{#rollTotal() computed::accessories 1}}
<div class="sheet-template-row sheet-template-tworows"><span class="sheet-after-colons sheet-rolltitle"><span>{{accessory_name}}:</span></span><span class="sheet-template-computed">{{#rollGreater() computed::accessory_modifier 0}} <span class="sheet-template-plus sheet-template-percent">{{accessory_modifier}}</span>{{/rollGreater() computed::accessory_modifier 0}}
{{#rollLess() computed::accessory_modifier 0}}<span class="sheet-template-percent">{{accessory_modifier}}</span>{{/rollLess() computed::accessory_modifier 0}}</span></div>{{/rollTotal() computed::accessories 1}}
<div class="sheet-template-row sheet-template-tworows"> <span class="sheet-after-colons sheet-rolltitle" data-i18n="modifier:">modifier:</span><span class="sheet-template-computed">{{#rollGreater() computed::modifier 0}}<span class="sheet-template-plus sheet-template-percent">{{computed::modifier}}</span>{{/rollGreater() computed::modifier 0}}
{{#rollLess() computed::modifier 0}}<span class="sheet-template-percent">{{computed::modifier}}</span>{{/rollLess() computed::modifier 0}}</span></div>{{/^rollTotal() computed::modifier 0}}
<div class="sheet-template-row sheet-template-onerow"> <span class="inlinerollresult">{{dice}}</span>
<!-- SUCCESS-->
</div>{{#rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="critical">critical</span></div>{{/rollTotal() computed::isCritical 1}}
{{/rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="success">success</span></div>{{/rollTotal() computed::isCritical 0}}
{{/rollTotal() computed::isSuccess 1}}
{{#rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="fumble">fumble</span></div>{{/rollTotal() computed::isCritical 1}}
{{/rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-row sheet-template-onerow"> <span class="sheet-template-outcome" data-i18n="failure">failure</span></div>{{/rollTotal() computed::isCritical 0}}
{{/rollTotal() computed::isSuccess 0}}
{{#rollTotal() computed::isSuccess 1}}{{#wammo}}{{#damage}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{damage}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{damage_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/damage}}{{#double_barrel}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{double_barrel}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{double_barrel_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/double_barrel}}{{#lethality_percent}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{lethality_percent}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{lethality_percent_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/lethality_percent}}{{/wammo}}
{{#noammo}} {{#damage}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddamage}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddamage_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/damage}}{{#double_barrel}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddouble_barrel}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voiddouble_barrel_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/double_barrel}}{{#lethality_percent}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidlethality_percent}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidlethality_percent_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/lethality_percent}}{{/noammo}}
{{#selfire_wammo}}{{#selective_fire}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{selective_fire}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons">
<div class="sheet-template-button">{{selective_fire_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/selective_fire}}{{/selfire_wammo}}
{{#selfire_noammo}}{{#selective_fire}}
<div class="sheet-template-row sheet-template-onerow">
{{#rollTotal() computed::isCritical 0}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidselective_fire}}</div>
</div>{{/rollTotal() computed::isCritical 0}}
{{#rollTotal() computed::isCritical 1}}
<div class="sheet-template-attack-buttons-void">
<div class="sheet-template-button">{{voidselective_fire_critical}}</div>
</div>{{/rollTotal() computed::isCritical 1}}
</div>{{/selective_fire}}{{/selfire_noammo}}{{/rollTotal() computed::isSuccess 1}}
</div>{{/rollTotal() computed::zero_willpower 0}}
{{/rollTotal() computed::low_willpower 0}}
</div>{{#ritual}}
{{/ritual}}
</rolltemplate>
</div>
</div>
<!--SHEETWORKERS-->
<!-- =============================-->
<script type="text/worker">
// check initialization so it updates only once per game at most
var _isInitialized = false;
// === ATTRIBUTE ARRAYS
const arrays = {
_stats: ['strength', 'constitution', 'dexterity', 'intelligence', 'power', 'charisma'],
_derived_stats: ['hit_points', 'sanity_points', 'willpower_points', 'breaking_point'],
_derived_stats_max: ['sanity_points_max','hit_points_max', 'willpower_points_max', 'breaking_point_max'],
_hit_points: ['strength_score', 'constitution_score'],
_willpower_points: ['power_score'],
_toggles: ['settings'],
_sanity_loss: ['sanity_loss_success', 'sanity_loss_failure'],
_skills:['accounting', 'alertness', 'anthropology', 'archeology', 'art_1', 'art_2', 'artillery', 'athletics', 'bureaucracy', 'computer_science', 'craft_1', 'craft_2', 'criminology', 'demolitions', 'disguise', 'dodge', 'drive', 'firearms','first_aid', 'forensics', 'heavy_machinery', 'heavy_weapons', 'history', 'humint', 'law', 'medicine', 'melee_weapons', 'military_science_1', 'military_science_2', 'navigate', 'occult', 'persuade', 'pharmacy', 'pilot_1','pilot_2', 'psychotherapy','ride', 'science_1','science_2', 'search' , 'sigint' , 'stealth' , 'surgery' , 'survival', 'swim', 'unarmed_combat'],
_colored_derivative:['willpower','hit'],
_derived_rolls:['sanity_points','luck'],
_disorder_related:['sanity_points','breaking_point'],
_derived_modifiers:['willpower_points','low_willpower','zero_willpower'],
_settings_wp:[`mod_willpower_check`],
_adaptation:['violence','helplessness'],
_editable_skills:['art_1','art_2','craft_1','craft_2','military_science_1','military_science_2','pilot_1','pilot_2','science_1','science_2'],
_weapon :["name", "skill_percent", "base_range", "damage", "armor_piercing", "lethality_percent", "ammo"],
_rituals : ['name','skill_span','unnatural_gain','study_time','sanity_loss_for_learning','activation_time','description','complexity'],
_personal_data : [
'profession',
'employer',
'occupation',
'nationality_and_residence',
'sex',
'age',
'education',
'personal_details_and_notes',
'developments_which_affect_home_and_family',
'description',
'physical_description',
'npc_sources',
'npc_remarks'],
_advanced_weapons_featurs : [`shotgun`,`blast_radius`,`hasDoubleBarrel`,`selfire`,'accessories'],
_weapon_hidden_buttons : ['damage','lethality_percent','double_barrel','selective_fire'],
_ritual_hidden_buttons : ['pay_cost','force_connection','accept_failure','attack','heal','power'],
};
const _skill_percent = [
{section:'skills', field:'rank'},
{section:'special', field:'skill_or_stat_used'},
{section:'weapons' , field:'skill_percent'},
{section:'rituals', field:'skill_percent'}
];
const _initial_skills={'accounting': 10, 'alertness': 20, 'anthropology': 0, 'archeology': 0, 'art_1': 0,
'art_2': '0', 'artillery': 0, 'athletics': 30, 'bureaucracy': 10, 'computer_science': 0,
'craft_1': 0, 'craft_2': 0, 'criminology': 10, 'demolitions': 0, 'disguise': 10, 'dodge': 30,
'drive': 20, 'firearms': 20, 'first_aid': 10, 'forensics': 0, 'heavy_machinery': 10, 'heavy_weapons': 0,
'history': 10, 'humint': 10, 'law': 0, 'medicine': 0, 'melee_weapons': 30, 'military_science_1': 0,
'military_science_2': 0, 'navigate': 10, 'occult': 10, 'persuade': 20, 'pharmacy': 0, 'pilot_1': 0,
'pilot_2': 0, 'psychotherapy': 10, 'ride': 10, 'science_1': 0, 'science_2': 0, 'search': 20, 'sigint': 0,
'stealth': '10', 'surgery': 0, 'survival': 10, 'swim': 20, 'unarmed_combat': 40,'unnatural': 0};
const _repeating_sections={
'skill':'skills',
'bond':'bonds',
'special':'special',
'weapons':'weapons',
'ritual':'rituals'
};
const _score_info = [
`willpower_points_max`,
`charisma_score`,
`character_creation_bonds`,
`repeating_bonds_setScore`,
`repeating_bonds_score`,
`repeating_bonds_score_old`,
`repeating_bonds_color`
];
const _bond_attributes = [
`name`,
`test`,
`score`,
`hurt`,
];
const _repeating_damages = [
'damage',
'damage_critical',
'lethality_percent',
'lethality_percent_critical',
'double_barrel',
'double_barrel_critical',
'selective_fire',
'selective_fire_critical',
]
const _repeating_ammo = [
'hasammo',
'ammo',
'ammo_total'
]
const _rd100 = `[[1d100]]`;
const _rd4 = `[[1d4]]`;
const _rd6 = `[[1d6]]`;
const _rd8 = `[[1d8]]`;
const _rd10 = `[[1d10]]`;
const _rd12 = `[[1d12]]`;
const _rd20 = `[[1d20]]`;
const _INHUMAN_STAT_ = 100;
const _criticals=[1,11,22,33,44,55,66,77,88,99,100];
const _queryModifier = `?{Modifier|0|+20%,20|+40%,40|-20%,-20|-40%,-40|custom (%),?{custom (%)}}`;
const prefix_skill_roll = `@{gm_toggle} &{template:fancy-rolls} {{name=@{character_name}}} {{dice=[[${_rd100}]]}}`;
const prefix_sanity_roll = `@{gm_toggle} &{template:fancy-sanloss} `;
// roll to use in rituals
// isHealing -> -1 for attack, 1 for heal, 0 for normal damages
const prefix_attack_roll = `@{gm_toggle} &{template:fancy-damages} {{name=@{character_name}}} {{isHealing=[[-1]]}} {{trackbullets=[[0]]}} {{header=^{attack}}}`;
const prefix_health_roll = `@{gm_toggle} &{template:fancy-damages} {{name=@{character_name}}} {{isHealing=[[1]]}} {{trackbullets=[[0]]}} {{header=^{heal} }}`;
// roll to use in weapons
const prefix_damage_roll = `@{gm_toggle} &{template:fancy-damages} {{name=@{character_name}}} {{isHealing=[[0]]}} {{usAiming=[[0]]}}`;
const prefix_bond_roll = `@{gm_toggle} &{template:fancy-bonds} {{character_id=@{character_id}}}{{name=@{character_name}}} {{dice=[[${_rd4}]]}}`;
const prefix_ritual_roll = `@{gm_toggle} &{template:fancy-rituals} {{name=@{character_name}}} {{dice=[[${_rd100}]]}}`;
const prefix_ritualloss_roll = `@{gm_toggle} &{template:fancy-ritualloss} {{name=@{character_name}}} {{header=^{ritual cost}}}`;
const _shotgun_or_blast_radius =[`shotgun`,`blast_radius`];
const _alldamages=['damage','damage_critical','double_barrel','double_barrel_critical',
'lethality_percent','lethality_percent_critical','selective_fire','selective_fire_critical'
];
const _ritual_damages=['attack','heal','power'];
const _type_damages=['damage','lethality_percent'];
const _ritual_losses=['pay_cost','force_connection','accept_failure'];
const _allrolls=arrays['_derived_rolls'].concat(arrays[`_stats`],arrays[`_skills`],['unnatural','sanity_loss']);
const RitualCosts = ['sanity_loss_success','sanity_loss_failure',
'willpower_points_cost','power_score_cost','hit_points_cost',
'strength_score_cost','constitution_score_cost',
'dexterity_score_cost','intelligence_score_cost',
'charisma_score_cost'];
const CurrentValues = ['sanity_points',
'willpower_points','power_score','hit_points',
'strength_score','constitution_score',
'dexterity_score','intelligence_score',
'charisma_score'];
const RitualRolls = ['name','skill_span','unnatural_gain',
'study_time','sanity_loss_for_learning','activation_time',
'description','complexity','flawed_ritual','power_reaction'];
const RitualDamages = ['attack_target_stat','attack_damage_amount','attack_lethality_percent_amount','attack_isLethal'];
const RitualHeals = ['heal_target_stat','heal_damage_amount','heal_lethality_percent_amount','heal_isLethal'];
const _ritualInfo=[
'complexity',
'activation_time',
'activation_time_unit',
'study_time',
'study_time_unit',
'unnatural_gain',
'sanity_loss_for_learning',
'willpower_points_cost',
'power_score_cost',
'hit_points_cost',
'strength_score_cost',
'constitution_score_cost',
'dexterity_score_cost',
'intelligence_score_cost',
'charisma_score_cost',
'sanity_loss_success',
'sanity_loss_failure'
]
const selector='button.roll';
const sanity_selector='button.sanroll';
let _globalModifier = 0;
const _number_or_roll= [
{section:'weapons', fields:['damage','double_barrel']},
{section:'rituals',fields:['sanity_loss_low','sanity_loss_high','attr_sanity_loss_for_learning','attr_unnatural_gain','heal_damage_amount','attack_damage_amount','willpower_points_cost','healpoints_cost','strength_score_cost','constitution_score_cost','dexterity_score_cost','intelligence_score_cost','charisma_score_cost','power_score_cost']}
];
const _only_number=[
{section:'weapons', fields:['lethality_percent','selfire_lethality_percent','accessory_modifier']},
{section:'rituals',fields:['attack_lethality_percent_amount','heallethality_percent_amount']}
];
const setWeaponOptions = ({isFlawed=0, isAiming=0 ,modifier=0,wp_mod={low_willpower:0,zero_willpower:0},hasLethality=0,
hasDamage=0,damage='',rating=0,lethality_percent=0,hasAdvancedWeapons=0,isShotgun=0,hasDoubleBarrel=0,hasSelectiveFire=0,
hasAccessories=0,hasBlastRadius=0, trackAmmo=0,current_ammo=0,double_barrel='',selfire_lethality_percent=0,selfire_type='',
accessory_modifier=0,accessory_name='',isSkill=1}) => {
const _hasAdvancedWeapons=hasAdvancedWeapons;
const _hasLethality= hasLethality;
const _hasDamage=hasDamage;
const _trackAmmo=trackAmmo;
const _rating=rating;
const _isSkill=isSkill;
const _modifier=modifier;
const _wp_mod=wp_mod;
const _isFlawed=isFlawed;
const _isAiming=isAiming;
var _isShotgun=0;
var _hasDoubleBarrel=0;
var _hasSelectiveFire=0;
var _hasAccessories=0;
var _hasBlastRadius=0;
var _double_barrel=double_barrel;
var _selfire_lethality_percent=selfire_lethality_percent;
var _selfire_type=selfire_type;
var _selfire_ammo=0;
var _current_ammo=current_ammo;
const _has_ammo=(_current_ammo>0) ? 1 : 0;
var _accessory_modifier=accessory_modifier;
var _accessory_name=(accessory_name==='') ? '^{accessory}' : accessory_name;
var _damage='';
var _lethality_percent=0;
var _low_willpower=0;
var _zero_willpower=0;
if (_wp_mod.hasOwnProperty('low_willpower')) { _low_willpower=_wp_mod.low_willpower; }
if (_wp_mod.hasOwnProperty('zero_willpower')) { _zero_willpower=_wp_mod.zero_willpower; }
if (_hasDamage==1) { _damage=damage; }
if (_hasLethality==1) { _lethality_percent=lethality_percent; }
if (_hasAdvancedWeapons==1) {
_isShotgun=isShotgun;
_hasDoubleBarrel=hasDoubleBarrel;
_hasSelectiveFire=hasSelectiveFire;
_hasAccessories=hasAccessories;
_hasBlastRadius=hasBlastRadius;
}
if (hasDoubleBarrel==1) { _double_barrel=double_barrel; }
if (hasSelectiveFire==1) {
_selfire_lethality_percent=selfire_lethality_percent;
_selfire_type=selfire_type;
_selfire_ammo=getRollDamage(selfire_type);
}
return { hasLethality: _hasLethality,lethality_percent: _lethality_percent, isSkill: _isSkill, rating: _rating,
hasDamage: _hasDamage,damage: _damage,
isShotgun: _isShotgun,hasDoubleBarrel: _hasDoubleBarrel,
hasSelectiveFire: _hasSelectiveFire,hasAccessories: _hasAccessories,hasBlastRadius: _hasBlastRadius,
trackAmmo: _trackAmmo,current_ammo: _current_ammo, double_barrel: _double_barrel,
selfire_lethality_percent: _selfire_lethality_percent, selfire_type: _selfire_type, selfire_ammo: _selfire_ammo,
accessory_modifier: _accessory_modifier,
accessory_name: _accessory_name,hasAdvancedWeapons: _hasAdvancedWeapons,
zero_willpower: _zero_willpower, low_willpower: _low_willpower, modifier: _modifier,
isFlawed: _isFlawed, isAiming: _isAiming};
};
const getInitializationFlags = (statInfo,values) => {
// note: flags are INITIALLY set to 1, it was a mistake but now it's better to keep it that way
const statName=statInfo['name'];
const _stat_used={
strength:'initial_str',
constitution:'initial_con',
};
const InitializationFlags={
'initial_hp':1,
'initial_str':1,
'initial_con':1,
'initial_san':1
};
Object.keys(InitializationFlags).forEach((key)=>{
if (values.hasOwnProperty(key) && values[key] == 0){ InitializationFlags[key]=0;}
});
if (_stat_used.hasOwnProperty(statName)) { InitializationFlags[_stat_used[statName]]=0;}
console.info('InitializationFlags:',InitializationFlags);
return InitializationFlags;
};
const setInitialHp = (update,values,statInfo,InitializationFlags) => {
if (statInfo['name'] !== 'strength' && statInfo['name'] !== 'constitution') { return; } // check if the stat is strength or constitution
if (statInfo['name'] == 'strength') {InitializationFlags[`initial_str`]=0;} // set the initial strength to 0
if (statInfo['name'] == 'constitution') {InitializationFlags[`initial_con`]=0;} // set the initial constitution to 0
if (InitializationFlags['initial_str']==1 || InitializationFlags['initial_con']==1) { return; } // if either flag is set, I cannot set the initial hp
///////// Set Hp regardless of the initial hp
const _strength_score=Math.max(0,parseInt(values['strength_score'],10)||0);
const _constitution_score=Math.max(0,parseInt(values['constitution_score'],10)||0);
const initial_hit_points= Math.ceil((_strength_score+_constitution_score)/2); // update max hp regardless of the initial hp
update['hit_points_max']=initial_hit_points;
//////// If the initial hp is not set yet, set it
if (InitializationFlags['initial_hp']==0) { return; } // check if initial hp is already set
update['hit_points']=initial_hit_points;
update['hit_points_old']=initial_hit_points;
InitializationFlags['initial_hp']=0;
};
const setInitialPower = (update,values,statInfo,InitializationFlags) => {
if (statInfo['name'] !== 'power') { return; } // only power can change the sanity points
const sanmax=setSanMax(values[`unnatural`]);
const InitialWillPower = statInfo.score;
update[`willpower_points_max`]=InitialWillPower;
// only updates if the flag is set
update['sanity_points_max']=sanmax;
if (InitializationFlags['initial_san']==0) { return; }
const InitialSanity = statInfo.stat;
const InitialBreakingPoint = statInfo.score*4;
//update['initial_san']=0;
update['sanity_points']= InitialSanity;
update['sanity_points_old']= InitialSanity;
update['breaking_point']= InitialBreakingPoint;
update['breaking_point_max']= InitialBreakingPoint;
update['willpower_points']=InitialWillPower;
InitializationFlags['initial_san']=0;
};
const setStatScore=(score,statName) =>{
const validNames=['strength','constitution','dexterity','power','intelligence','charisma'];
if (!validNames.includes(statName)) { return false; }
const _score = Math.max(0,parseInt(score));
return {name: statName, stat: _score*5, score: _score};
};
const setSanMax = (unnatural) => {
// Input:
// unnatural is the unnatural value
// Output:
// the maximum value for sanity points
return 99-setMinMax(unnatural,0,99);
};
const setDiceSection = (character_id,repsecid,use_=true) => {
// Input:
// charid is the character id
// repsecid is the repeating section id
// Output:
// ](~<charid>|<repsecid>_
return '](~'+ character_id +'|'+repsecid+ ((use_) ? '_' : '');
}
const setAdvancedWeaponsString = (options,character_id,repsecid) => {
var advancedWeaponsString='';
const dice_section = setDiceSection(character_id,repsecid);
const nothing_section = setDiceSection(character_id,'nothing)}}',false);
const rollEnding='-action)}}';
if (options.hasAdvancedWeapons===1) {
if (options.isShotgun===1) {advancedWeaponsString += '{{shotgun=[[1]]}}';}
if (options.hasDoubleBarrel===1) {
if (options.double_barrel != '') {
advancedWeaponsString += '{{double_barrel=['+options.double_barrel+dice_section+'double_barrel'+rollEnding;
advancedWeaponsString += '{{voiddouble_barrel=['+options.double_barrel+nothing_section;
advancedWeaponsString += '{{double_barrel_critical=[('+options.double_barrel+')×2'+dice_section+'double_barrel_critical'+rollEnding;
advancedWeaponsString += '{{voiddouble_barrel_critical=[('+options.double_barrel+')×2'+nothing_section;
}
}
if (options.hasSelectiveFire===1) {
if (options.selfire_lethality_percent>0) {
const critical_selfire_lethality_percent=options.selfire_lethality_percent*2;
advancedWeaponsString += '{{selective_fire=[' + options.selfire_type;
advancedWeaponsString += '('+options.selfire_lethality_percent + '%)'+dice_section+'selective_fire'+rollEnding;
advancedWeaponsString += '{{voidselective_fire=[' + options.selfire_type;
advancedWeaponsString += '(' + options.selfire_lethality_percent + '%)'+nothing_section;
advancedWeaponsString += '{{selective_fire_critical=[' + options.selfire_type;
advancedWeaponsString += '(' + critical_selfire_lethality_percent + '%)'+dice_section+'selective_fire_critical'+rollEnding;
advancedWeaponsString += '{{voidselective_fire_critical=[' + options.selfire_type;
advancedWeaponsString += '(' + critical_selfire_lethality_percent + '%)'+nothing_section;
}
if (options.selfire_ammo>=options.current_ammo && options.trackAmmo==1) {
advancedWeaponsString += '{{selfire_noammo=1}}';
}else{
advancedWeaponsString += '{{selfire_wammo=0}}';
}
}
if (options.hasAccessories===1) {
advancedWeaponsString += '{{accessories=[[1]]}}';
advancedWeaponsString += '{{accessory_name=' + options.accessory_name + '}}';
advancedWeaponsString += '{{accessory_modifier=[[' + options.accessory_modifier + ']]}}';
}
if (options.hasBlastRadius===1) {
advancedWeaponsString += '{{blast_radius=[[1]]}}';
}
}
if (options.trackAmmo) {
advancedWeaponsString += '{{trackbullets=1}}';
advancedWeaponsString += '{{current_ammo=[[' + options.current_ammo + ']]}}';
if (options.current_ammo==0) {
advancedWeaponsString += '{{noammo=1}}';
}else{
advancedWeaponsString += '{{wammo=0}}';
}
} else {
advancedWeaponsString += '{{wammo=0}}';
}
if (options.hasDamage==1) {
advancedWeaponsString += '{{damage= ['+options.damage+dice_section+'damage'+rollEnding;
advancedWeaponsString += '{{voiddamage= ['+options.damage+nothing_section;
advancedWeaponsString += '{{damage_critical= [('+options.damage+')×2'+dice_section+'damage_critical'+rollEnding;
advancedWeaponsString += '{{voiddamage_critical= [('+options.damage+')×2'+nothing_section;
}
if (options.hasLethality==1) {
const label_lethality = `^{Lethality}`;
advancedWeaponsString += '{{lethality_percent= [';
advancedWeaponsString += label_lethality+' ('+options.lethality_percent+'%)';
advancedWeaponsString += dice_section+'lethality_percent'+rollEnding;
advancedWeaponsString += '{{voidlethality_percent= [';
advancedWeaponsString += label_lethality+' ('+options.lethality_percent+'%)'+nothing_section;
advancedWeaponsString += '{{lethality_percent_critical= [';
advancedWeaponsString += label_lethality+' (2×'+options.lethality_percent+'%)';
advancedWeaponsString += dice_section+'lethality_percent_critical'+rollEnding;
advancedWeaponsString += '{{voidlethality_percent_critical= [';
advancedWeaponsString += label_lethality+' (2×'+options.lethality_percent+'%)'+ nothing_section;
}
return advancedWeaponsString;
}
const check_for_wp_modifiers = (values,roll) => {
const _willpower_points = parseInt(values[`willpower_points`]) || 0;
var flag_for_zero_willpower = values[`zero_willpower`]== 1;
flag_for_zero_willpower = flag_for_zero_willpower && _willpower_points== 0 && roll !== 'luck';
const _zero_willpower = (flag_for_zero_willpower) ? 1 : 0;
var flag_for_low_willpower = values[`low_willpower`]== 1;
flag_for_low_willpower = flag_for_low_willpower && _willpower_points <= 2;
flag_for_low_willpower = flag_for_low_willpower && roll !== 'luck' && roll !== 'sanity_points';
/// important it is either one or the other
flag_for_low_willpower = flag_for_low_willpower && flag_for_zero_willpower==false;
const _low_willpower = (flag_for_low_willpower) ? 1 : 0;
return {zero_willpower: _zero_willpower, low_willpower: _low_willpower};
};
const check_success= (dice,rating,isSkill=1) => {
// Input:
// dice is the result of the roll
// rollName is the name of the skill or stat
// rollFail used only for stats to check for failure
// rating is the rating of the skill or stat
// isSkill is the flag to check if it's a skill or a stat [0,1]
var isSuccess=0;
var isCritical=0;
if (dice==100){ // 100 is always a fumble
isCritical=1;
isSuccess=0;
} else { // check for criticals normally
isSuccess = dice<=rating ? 1 : 0;
isCritical = _criticals.includes(dice) ? 1 : 0;
}
const isInhuman=(isSkill==0 && rating>=_INHUMAN_STAT_);
const isNormalSuccess=(isSuccess==1 && isCritical==0);
if (isInhuman && isNormalSuccess){ // special case for stats to evaluate criticals
const score=Math.round(rating/5);
isCritical = (dice<=score) ? 1 : 0;
}
return {isSuccess:isSuccess,isCritical:isCritical};
};
const check_weapon_modifiers = (options) => {
const advanced_weapons = options.hasAdvancedWeapons;
var modifier = options.modifier;
const low_willpower = options.low_willpower;
if (advanced_weapons==0) { return correct_modifier(modifier,low_willpower) ;}
if (options.isShotgun==1 || options.hasBlastRadius==1){ modifier+=20;}
if (options.hasAccessories==1){modifier+=options.accessory_modifier;}
if (options.isFlawed==1){modifier-=20;}
if (options.isAiming==1){modifier+=20;}
return correct_modifier(modifier,low_willpower);
}
const correct_modifier = (modifier,low_willpower,limit_to_40=1) => {
// Input:
// modifier is the base modifier provided by the used
// low_willpowe is the low willpower flag [0,1]
// limit_to_40 is the flag to limit the upper bound modifier to 40% (not used but for future and debugging) [0,1]
// Output:
// the corrected modifier
var corrected_modifier=modifier - (20*low_willpower);
return limit_to_40==1 ? Math.min(40,corrected_modifier) : corrected_modifier;
}
const correct_rating = (rating,modifier,limit_to_99=1) => {
// Input:
// rating is the base rating of the skill
// modifier is the corrected modifier
// limit_to_99 is the flag to limit the upper bound rating to 99% (0 for inhuman stats) [0,1]
// Output:
// the corrected rating
var corrected_rating=rating+modifier;
return limit_to_99==1 ? Math.min(99,corrected_rating) : corrected_rating;
}
const check_sanloss = (sanloss,attrName) => {
if (attrName==='sanity_loss_success'){
return sanloss=='' ? 0 : sanloss;
} else if(attrName==='sanity_loss_failure'){
return sanloss=='' ? 1 : sanloss;
}
};
const check_track_ammo=(rollString,trackAmmo,currentAmmo,used_ammo=1) => {
if (trackAmmo==1) {
rollString = `${rollString} {{trackbullets=[[1]]}} {{used_ammo=[[${used_ammo}]]}}`;
rollString = `${rollString} {{current_ammo=[[${currentAmmo}]]}}`;
} else {
rollString = `${rollString} {{trackbullets=[[0]]}}`;
}
return rollString;
};
const getUsedAmmo=(selfire_type='') => {
if (selfire_type==='short burst'){return 3} ;
if (selfire_type==='long burst'){return 5} ;
if (selfire_type==='short spray'){return 10} ;
if (selfire_type==='long spray'){return 20} ;
return 1;
}
const need_to_track_ammo = (_values,_names)=>{
const track_bullets=_values[_names['track_bullets']]==='active' ? 1 : 0;
const hasammo=_values[_names['hasammo']]==='active' ? 1 : 0;
return (track_bullets==1 && hasammo==1) ? 1 : 0;
}
const setAttributes = (update, silent) => {
(silent === true) ? setAttrs(update, {silent:true}) : setAttrs(update);
};
// check skill value for weapons and special training
const isSkillNumber = (str) => {
let num=Number(str);
return !isNaN(num) && num>=0 && num<=99
};
const isSkillName= (rollName) => {return arrays[`_skills`].includes(rollName) ? 1 : 0;};
// check if linking skill in in linking form
const isStringInForm=(str)=> {
var regex = /^@\{[\w\s]+\}$/;
return regex.test(str);
};
// used for linking skills
const cleanedSkill= (str) =>{return String(str).toLowerCase().replace(' ','_').replace('@{','').replace('}','')};
// When the trigger comes from another call
const isMinorityReport = (eventInfo) => !(eventInfo.hasOwnProperty('newValue'));
// check if the format is the one of a linking skill
const isValidSkill=(str)=> {
const compar=cleanedSkill(String(str));
return arrays['_skills'].concat(arrays['_stats']).concat(['unnatural','ritual_skill']).includes(compar);
};
const isEmpty = (obj) => Object.keys(obj).length === 0 && obj.constructor === Object;
const getSections = function(sectionDetails,callback){
let queueClone = _.clone(sectionDetails);
const worker = (queue,repeatAttrs=[],sections={})=>{
let detail = queue.shift();
getSectionIDs(detail.section,(IDs)=>{
sections[detail.section] = IDs;
IDs.forEach((id)=>{
detail.fields.forEach((f)=>{
repeatAttrs.push(`${detail.section}_${id}_${f}`);
});
});
repeatAttrs.push(`_reporder_${detail.section}`);
if(queue.length){
worker(queue,repeatAttrs,sections);
}else{
callback(repeatAttrs,sections);
}
});
};
if(!queueClone[0]){
callback([],{});
}else{
worker(queueClone);
}
};
const get_header_skills = (values,property) => {
var _header = ``;
if (values.hasOwnProperty(property['editable_name'])) {
_header = '{{header=^{'+property['editable_type']+'}';
_header = _header +' ('+values[property['editable_name']]+')}}';
}else {
_header = '{{header=^{'+property['name']+'} }}';
}
return _header;
}
const check_for_failed_skill = (rollName,isSuccess=0,isSkill=1) => {
// Input:
// rollName is the name of the skill if it's a skill, if it's a repeating section, it's the name of the section
// outcome is the result of the roll [0,1]
// isSkill is the flag to check if it's a skill [0,1]
var failure={};
if (isSkill==false) {return failure;}; // if it's not a skill, return empty object
if (isSuccess==1) {return failure;}; // if it's a success, return empty object
failure[`${rollName}_fail`]='on';
return failure;
}
const setMinMax = (skill, min=0, max=99) => {
const IntegerSkill=parseInt(skill)||0;
if (min>max) {return IntegerSkill}
return Math.min(Math.max(IntegerSkill,min),max);
};
const isValidLinkInput = (newValue) => {return (isStringInForm(newValue) && isValidSkill(newValue));};
const parseRoll = (roll) => {
const regex_int = /^(\s*[\+\-]?\d{1,100}\s*)$/;
const regex_roll = /^((\s*[\+\-\(\)]\s*){0,4}?\d{0,10}[dD]?\d{1,10}((\s*[\+\-\*\/\(\)]\s*){0,4}?\d{0,10}[dD]?\d{1,10})*(\s*[\)]\s*){0,4}?)+$/
if (regex_int.test(roll)) {return parseInt(roll);}
if (regex_roll.test(roll)) {return roll.replace(/\s/g, '').toUpperCase();}
return 0;
}
const maxRoll = (roll) => {
if (isNaN(Number(roll))==false) {return roll;}
return parseRoll(roll).replace(/[dD]/g, '*')
}
const minRoll = (roll) => {
if (isNaN(Number(roll))==false) {return roll;}
return parseRoll(roll).replace(/[dD]\d{1,100}/g,'')
}
const addTargetStat=(values,names,attrName) => {
var target_stat='';
if (attrName==='attack' || attrName==='heal'){
target_stat+=`{{target_unit=${name_to_shorthand(values[names['target_stat']])}}}`;
target_stat+=`{{target_stat=${values[names['target_stat']].replace(/_/g,' ')}}}`;
}
return target_stat;
};
const updatebondscore = (values,update,manualscore=true) => {
const character_creation_bonds = values[`character_creation_bonds`] === 'active' ? true : false;
const charisma_score = parseInt(values[`charisma_score`]) || 0;
const bond_value = (character_creation_bonds) ? charisma_score : Math.floor(charisma_score/2);
const flag = (manualscore) ? 1 : parseInt(values[`repeating_bonds_setScore`]) || 0;
const bond_score_old = parseInt(values[`repeating_bonds_score_old`]) || 0;
var bond_score = 0;
if (flag === 0) {
bond_score = bond_value;
} else {
bond_score = parseInt(values[`repeating_bonds_score`]) || 0;
if (bond_score > charisma_score) {
if (bond_score_old<= charisma_score) {
bond_score = charisma_score;
}
}
}
update[`repeating_bonds_score`] = bond_score;
update[`repeating_bonds_score_old`] = bond_score;
update[`repeating_bonds_setScore`] = 1;
update[`repeating_bonds_color`] = BondButtonColor(bond_score);
}
const DeltaGreenLethalityFail=(roll) => {
const quotient=Math.floor(roll/10)== 0 ? 10 : Math.floor(roll/10);
const remainder= (roll%10 ==0) ? 10 : Math.floor(roll%10);
return quotient+ remainder;
};
// Update span on change
const updateSkillSpanOnChange=(skill,value,update,isWhat) =>{
const sectionDetails = [{section:'repeating_special', fields:['skill_or_stat_used']},
{section:'repeating_weapons',fields:['skill_percent']},
{section:'repeating_rituals',fields:['skill_percent']}];
getSections(sectionDetails,(attr)=>{
const allskills1=attr.filter(el => el.startsWith(sectionDetails[0][`section`]) && el.endsWith(sectionDetails[0][`fields`][0]));
const allskills2=attr.filter(el => el.startsWith(sectionDetails[1][`section`]) && el.endsWith(sectionDetails[1][`fields`][0]));
const allskills3=attr.filter(el => el.startsWith(sectionDetails[2][`section`]) && el.endsWith(sectionDetails[2][`fields`][0]));
const allids1= allskills1.map(el => el.replace(`_${sectionDetails[0][`fields`][0]}`,''));
const allids2= allskills2.map(el => el.replace(`_${sectionDetails[1][`fields`][0]}`,''));
const allids3= allskills3.map(el => el.replace(`_${sectionDetails[2][`fields`][0]}`,''));
const len1=allids1.length;
const len2=allids2.length;
const len3=allids3.length;
getAttrs(allskills1.concat(allskills2).concat(allskills3),(v)=>{
for (i=0;i<len1; i++){
if (cleanedSkill(v[allskills1[i]])===skill){
update[`${allids1[i]}_skill_span`]=value;
}
}
for (i=0;i<len2; i++){
if (cleanedSkill(v[allskills2[i]])===skill){
update[`${allids2[i]}_skill_span`]=value;
}
}
for (i=0;i<len3; i++){
if (cleanedSkill(v[allskills3[i]])===skill){
update[`${allids3[i]}_skill_span`]=value;
}
}
setAttrs(update,{silent:true},()=>{
console.log(`Skill span updated for ${skill}`);
console.info(update);
});
});
});
}
const saneffects=(snew,sold,smax,bnew,bmax,bold,pow,trackbp) => {
const san = value_current(snew,sold,smax);
const diffsan=san-sold;
const flag_2san = (diffsan>=2) ? 1 : 0;
const flag_temp = (diffsan>=5) ? 1 : 0;
const flag_bp = (san<=bnew && trackbp==1) ? 1 : 0;
return {san2:flag_2san,temp:flag_temp,bp:flag_bp};
};
const definesanroll=(san,sold,bnew,bold,sanflags,character_name,San2_disorder={},Temp_disorder={}) => {
const diffsan=san-sold;
const flag_2san=(sanflags.san2 && !(isEmpty(San2_disorder)));
const flag_temp=sanflags.temp;
const flag_bp=sanflags.bp;
var rollString=`&{template:fancy-rolls} {{name=${character_name}}} {{header=^{sanity_loss}}} `;
rollString= `${rollString} {{sanity_loss=[[${diffsan}]]}} {{sanity_new=[[${san}]]}}`;
rollString= `${rollString} {{sanity_old=[[${sold}]]}} {{bp_old=[[${bold}]]}} {{bp_new=[[${bnew}]]}}`;
if (flag_bp == 1){
rollString= `${rollString} {{flag_bp=1}} `;
}
if (flag_temp==1){
rollString=`${rollString} {{flag_temp=1}}`;
if (!(isEmpty(Temp_disorder))){
Object.entries(Temp_disorder).forEach(([key,val],index)=>{
rollString= `${rollString} {{tdis_name${index}=${key}}} {{tdis_desc${index}=${val}}} `;
});
}
}
if (flag_2san==1){
rollString=`${rollString} {{flag_2san=1}}`;
if (!(isEmpty(Temp_disorder))){
Object.entries(Temp_disorder).forEach(([key,val],index)=>{
rollString= `${rollString} {{tdis_name${index}=${key}}} {{tdis_desc${index}=${val}}} `;
});
}
}
var update={};
update['sanity_points']=san;
update['sanity_points_old']=sold;
if (flag_bp==='on'){
update['breaking_point']=Math.max(0,san-pow);
update['breaking_point_max']=bold;
update['breaking_point_old']==Math.max(0,san-pow);
}
setAttrs(update, {silent:true},()=>{
console.info('update',update)
});
startRoll(`${rollValue} {{isSkill=[[${_isSkill}]]}}`, (results)=> {
const sanity_old=results.results.sanity_old.result;
const sanity_new=results.results.sanity_new.result;
const sanity_loss=results.results.sanity_loss.result;
const bp_old=results.results.bp_old.result;
const bp_new=results.results.bp_new.result;
finishRoll(results.rollId,{});
});
}
const value_current = (current,old,max) => {
if (current>=max) {
return (current<=old) ? current : old;
}
return Math.max(current,0);
}
const setBondsLocalVariables = () => {
getAttrs(["willpower_points","sanity_points"],function(value){
let update={};
getSectionIDs(`bonds`,function(idarray){
idarray.forEach(id=>{
update["repeating_bonds_"+id+"_wp_points"]=value["willpower_points"];
update["repeating_bonds_"+id+"_sanity_points"]=value["sanity_points"];
});
console.log('inside repeating section');
setAttrs(update,{silent:true},()=>{
console.info('update',update);
console.log('Bonds updated on open');
});
});
});
};
// === debug note: need to change repeating_special_training and repeating_weapons for visulization purposes
// === Update stats on change
const skill_in_bounds = (skill) => {
const skill_value = parseInt(skill) || 0;
return Math.min(99, Math.max(0, skill_value));
};
const updateadvancedweapons = () => {
getAttrs(['advanced_weapons'],(v)=>{
const advanced_weapons=v['advanced_weapons'];
getSectionIDs(`weapons`,(ids)=>{
const update={};
const prefix='repeating_weapons_';
ids.forEach((id)=>{
update[prefix+id+'_hasAdvancedWeapons']=advanced_weapons;
arrays['_advanced_weapons_featurs'].forEach((feat)=>{
update[prefix+id+'_'+feat]=0;
});
});
setAttrs(update,{silent:true});
});
});
};
/* visuar option: removes the "advanced weapons" button from the weapons section
*/"use strict";
on('clicked:reset_all', () =>{
const update = {};
resetStats(update,false);
resetBonds(update);
resetAdaptations(update);
resetEquipment(update);
resetSkills(update);
resetHistory(update);
// write all the reset functions here
setAttrs(update, {silent: true}, () => {
console.log('reset all');
console.info(update);
});
});
on('clicked:reset_stats', () =>{
const update = {};
resetStats(update);
setAttrs(update, {silent: true}, () => {
console.log('reset stats');
console.info(update);
});
});
on('clicked:reset_skills', () =>{
const update = {};
resetSkills(update);
setAttrs(update, {silent: true}, () => {
console.log('reset skills');
console.info(update);
});
});
on('clicked:reset_equipment', () =>{
const update = {};
resetEquipment(update);
setAttrs(update, {silent: true}, () => {
console.log('reset equipment');
console.info(update);
});
});
on('clicked:reset_breaking_point', () =>{
const update = {};
resetBreakingPoints(update);
console.info(update);
});
const resetBreakingPoints = (update) => {
getAttrs(['breaking_point_max', 'breaking_point', 'breaking_point_reset'], function (values) {
console.log('breaking_point_reset:',values);
var breaking_point_reset = parseInt(values.breaking_point_reset,10) || 0;
update['breaking_point_max']= breaking_point_reset;
update['breaking_point']= breaking_point_reset;
update['breaking_point_reset']= breaking_point_reset;
setAttrs(update, {silent: true}, () => {
console.log('reset breaking points');
console.info(update);
});
});
};
const resetStats = (update,reset_bonds=true) => {
var array_to_reset = arrays['_stats'];
const stat_score=arrays['_stats'].map(stat => stat+'_score');
array_to_reset=array_to_reset.concat(stat_score);
array_to_reset=array_to_reset.concat(arrays['_derived_stats'])
array_to_reset=array_to_reset.concat(arrays['_derived_stats_max'])
array_to_reset = array_to_reset;
array_to_reset.forEach(stat => {
update[stat] = '';
});
const old_values = [
'sanity_points_old',
'breaking_point_old',
];
old_values.forEach(stat => {
update[stat] = '';
});
const initial_flags=[
'initial_san',
'initial_con',
'initial_str',
'initial_hp',
];
initial_flags.forEach(flag => {
update[flag] = '1';
});
if (reset_bonds){
getSectionIDs(`bonds`,(ids) => {
ids.forEach(id => {
update[`repeating_bonds_${id}_test`] = 'editable';
update[`repeating_bonds_${id}_score`] = '';
});
});
}
};
const resetSkills = (update) => {
Object.entries(_initial_skills).forEach(([skill, value]) => {
update[skill] = value;
update[`${skill}_fail`] = value;
});
arrays['_editable_skills'].forEach(skill => {
update[`${skill}_name`] = '';
update[`${skill}_test`] = 0;
});
resetAllRepeatingSkills(update);
resetAllSpecialAbilities(update);
};
const resetBonds= (update) => {
getSectionIDs(`bonds`,(ids) => {
ids.forEach(id => {
removeRepeatingRow('repeating_bonds_'+id);
console.log('removing repeating_bonds_'+id);
});
});
};
const resetAdaptations= (update) => {
update['motivations'] = '';
console.log(arrays['_adaptation']);
arrays['_adaptation'].forEach(adaptation => {
update[adaptation] = -1;
update[`${adaptation}_adapted`] = 0;
});
};
const resetAllWeapons= (update) => {
getSectionIDs(`weapons`,(ids) => {
ids.forEach(id => {
removeRepeatingRow('repeating_weapons_'+id);
console.log('removing repeating_weapons_'+id);
});
});
}
const resetAllRituals= (update) => {
getSectionIDs(`rituals`,(ids) => {
ids.forEach(id => {
removeRepeatingRow('repeating_rituals_'+id);
console.log('removing repeating_rituals_'+id);
});
});
}
const resetEquipment= (update) => {
resetAllWeapons(update);
resetAllRituals(update);
update['armor_and_gear'] = '';
};
const resetAllRepeatingSkills= (update) => {
getSectionIDs(`skills`,(ids) => {
ids.forEach(id => {
removeRepeatingRow('repeating_skills_'+id);
console.log('removing repeating_skills_'+id);
});
});
}
const resetAllSpecialAbilities= (update) => {
getSectionIDs(`special`,(ids) => {
console.log('special:'+ids);
ids.forEach(id => {
removeRepeatingRow('repeating_special_'+id);
console.log('removing repeating_special_'+id);
});
});
}
const resetHistory = (update) => {
console.log(arrays['_personal_data']);
arrays['_personal_data'].forEach(data => {
update[data] = '';
});
resetInjuries(update);
}
const resetInjuries = (update) => {
update['injuries'] = '';
update['injuries_first_aid'] = 0;
}
const updatesanitypoints = (tmp_sanity_points,sanity_points_old,sanity_points_max,update) => {
const sanity_points = value_current(tmp_sanity_points, sanity_points_old, sanity_points_max);
update['sanity_points_old'] = sanity_points;
update['sanity_points'] = sanity_points;
update['ritual_skill'] = Math.max(99-sanity_points);
return {sanity_points:sanity_points,ritual_skill:Math.max(99-sanity_points)};
};
const updatebreakingpoints = () => {
getAttrs(['power_score','breaking_point','sanity_points','breaking_point_reset','breaking_point_max','sanity_points_max','sanity_points_old','track_breaking_points'], (values)=> {
const update = {};
const flag=values.track_breaking_points==='active' ? true : false;
const power_score = parseInt(values.power_score, 10) || 0;
const breaking_point = parseInt(values.breaking_point, 10) || 0;
const breaking_point_max = parseInt(values.breaking_point_max, 10) || 0;
const sanity_points_old = parseInt(values.sanity_points_old, 10) || 0;
const sanity_points_max = parseInt(values.sanity_points_max, 10) || 0;
const tmp_sanity_points = parseInt(values.sanity_points, 10) || 0;
const reached_breaking_point = breaking_point<breaking_point_max ? 1 : 0;
update['reached_breaking_point'] = reached_breaking_point;
update_bp_san_ritual(tmp_sanity_points,sanity_points_old,sanity_points_max,power_score,breaking_point,update,flag);
});
}
const update_bp_san_ritual = (tmp_sanity_points,sanity_points_old,sanity_points_max,power_score, breaking_point,update,flag) => {
const updated_values=updatesanitypoints(tmp_sanity_points,sanity_points_old,sanity_points_max,update);
var update_breaking_point = breaking_point;
if(flag && (updated_values.sanity_points<breaking_point)){
update_breaking_point = Math.max(0,updated_values.sanity_points-power_score);
}
update['breaking_point_reset'] = update_breaking_point;
update['breaking_point']=update_breaking_point;
updateSkillSpanOnChange('ritual_skill',updated_values.ritual_skill,update,'Rituals');
}
const setResetBreakingPointsOnOpen = () => {
getAttrs(['breaking_point','sanity_points','sanity_points_max','power_score','track_breaking_points'], (values)=> {
const breaking_point = Math.max(0,parseInt(values.breaking_point, 10) || 0);
const flag=values.track_breaking_points==='active' ? true : false;
const power_score = parseInt(values.power_score, 10) || 0;
const update = {};
const open_sanity_points = parseInt(values.sanity_points, 10) || 0;
const sanity_points_max = parseInt(values.sanity_points_max, 10) || 0;
update_bp_san_ritual(open_sanity_points,open_sanity_points,sanity_points_max,power_score,breaking_point,update,flag);
});
};const versioning = (version) => {
console.log(`%c Versioning, ${version}`, 'color: green; font-weight:bold');
if (version < 1.05) {
version_0_105();
}
else if (version <1.5) {
version_105_150();
}
else if (version<1.7) {
version_150_170();
}
else if (version<2.0) {
version_170_200();
}
else if (version<2.01) {
version_200_201();
}
else if (version<2.02) {
version_201_202();
}
else if (version<2.03) {
version_202_203();
}
else if (version<2.04) {
version_203_204();
}
else if (version<2.05) {
version_204_205();
}
else if (version<2.06) {
version_205_206();
}
};
// UPDATE TO VERSION 1.05
const version_0_105= () => {
getAttrs(['version'], function(v) {
let codeversion=1.05;
let update={version: codeversion,
initial_san: 0,
initial_hp: 0,
initial_str: 0,
initial_con: 0
};
setAttrs(update, //Update attributes
{silent:true}, // will not trigger sheet workers
versioning(codeversion)); // call versioning again
});
};
// UPDATE TO VERSION 1.5
const version_105_150 = () => {
let codeversion=1.5;
let update={};
getSectionIDs(`weapons`,function(idarray){
console.log(`%c idarray`, 'color: green; font-weight:bold');
console.info(idarray);
let fieldnames=['sheet_type','version'];
console.log(`%c did I found weapons?`, 'color: green; font-weight:bold');
idarray.forEach(id => {
console.log(`%c ${id}`, 'color: green; font-weight:bold');
fieldnames.push(`repeating_weapons_${id}_damage`,`repeating_weapons_${id}_lethality_percent`,`repeating_weapons_${id}_attack`);
});
getAttrs(fieldnames,function(v) {
console.log(`%c v`, 'color: green; font-weight:bold');
console.info(v);
update['version']=codeversion;
idarray.forEach(id=>{
console.log(`%c ${id}`, 'color: green; font-weight:bold');
if (v[`repeating_weapons_${id}_damage`]===""){
update["repeating_weapons_"+id+"_hasDamage"]="0";
} else{
update["repeating_weapons_"+id+"_hasDamage"]="1";
}
if (v[`repeating_weapons_${id}_lethality_percent`]>0){
update["repeating_weapons_"+id+"_hasLethality"]="1";
} else {
update["repeating_weapons_"+id+"_hasLethality"]="0";
}
if (v['sheet_type']==='npc'){
update["repeating_weapons_"+id+"_weapons"]=v[`repeating_weapons_${id}_attack`];
}
});
console.log(`%c update`, 'color: green; font-weight:bold');
setAttrs(update, //Update attributes
{silent:true}, // will not trigger sheet workers
versioning(codeversion)); // call versioning again
});
});
};
// UPDATE TO VERSION 1.7
const version_150_170 = () => {
let codeversion=1.7;
let update={};
update['version']=codeversion;
update['luck']=50;
update['luck_max']=50;
console.log(`%c update`, 'color: green; font-weight:bold');
setAttrs(update, //Update attributes
{silent:true}, // will not trigger sheet workers
versioning(codeversion)); // call versioning again
};
// UPDATE TO VERSION 2.0
const version_170_200 = () => {
let codeversion=2.0;
const update={};
update['version']=codeversion;
getAttrs(["motivations","character_name","name","sanity_points","violence_3","helplessness_3","violence_2","helplessness_2",
"sanity_points_old","sanity_points","breaking_point_old","breaking_point_old"],function(v){
let motivations=v["motivations"];
if (v["name"]!==""){
_name=v["name"];
}else{
_name=v["character_name"];
}
update["character_name"]=_name;
update["old_motivations"]=motivations.replace(/<br>/g,"\n");
const _violence_adapted = v["violence_2"]==='on';
const _helplessness_adapted = v["helplessness_2"]==='on';
if (v["violence_2"]==='on'){
update["violence_1"]='on';
}
if (v["helplessness_2"]==='on'){
update["helplessness_1"]='on';
}
if (_violence_adapted){
update["violence_adapted"]=1;
update["violence_2"]='on';
update["violence_1"]='on';
}
if (_helplessness_adapted){
update["helplessness_adapted"]=1;
update["helplessness_2"]='on';
update["helplessness_1"]='on';
}
update['sanity_points_old']=v['sanity_points'];
update['breaking_point_old']=v['breaking_point'];
console.log(`%c update`, 'color: green; font-weight:bold');
setAttrs(update, //Update attributes
{silent:true}, // will not trigger sheet workers
versioning(codeversion)); // call versioning again
});
};
// UPDATE TO VERSION 2.0
const version_200_201 = () => {
let codeversion=2.01;
const update={};
console.log('version:',codeversion);
update['version']=codeversion;
// UPDATE NAMES FOR SPECIAL TRAINING AND WEAPONS AND TRIGGER TEST
const _sectionDetails = [
{section:'special', fields: ['name','special_training','skill_or_stat_used','skill_span',]},
{section:'weapons', fields: ['name','weapons','rank','skill_percent','skill_span','ammo','hasammo','ammo_total','lethality_percent']},
{section:'bonds', fields: ['flag','setScore','score','score_old']}];
_sectionDetails.forEach(_group => {
const section = _group.section;
const fields = _group.fields;
getSectionIDs(section, (ids)=>{
console.log('in getSectionIDs section',section);
console.log('in getSectionIDs ids',ids);
const repfields=[];
ids.forEach(id => {
fields.forEach(field => {
repfields.push(`repeating_${section}_${id}_${field}`);
});
});
getAttrs(repfields,(values) => {
console.info('fullarray',values);
ids.forEach(id => {
const repsecid= `repeating_${section}_${id}_`;
/// bond update
if (section==='bonds'){
if (values.hasOwnProperty(`${repsecid}flag`)){
update[`${repsecid}setScore`]=1;
update[`${repsecid}flag`]='';
}
update[`${repsecid}score_old`]=values[`${repsecid}score`];
update[`${repsecid}test`]='editable';
}
if (section === 'weapons'){
if (values[`${repsecid}lethality_percent`]!==''){
const number=setMinMax(values[`${repsecid}lethality_percent`]);
update[`${repsecid}lethality_percent`]=number;
console.log(`%c update name ${repsecid}lethality_percent to empty`, 'color: green; font-weight:bold');
}
}
if (section === 'special'){
if (values.hasOwnProperty(`${repsecid}special_training`)){
update[`${repsecid}name`]=values[`${repsecid}special_training`];
update[`${repsecid}special_training`]='';
console.log(`%c update name ${repsecid}special_training to ${repsecid}name`, 'color: green; font-weight:bold');
}
};
if (section === 'weapons'){
if (values.hasOwnProperty(`${repsecid}weapons`)){
update[`${repsecid}name`]=values[`${repsecid}weapons`];
update[`${repsecid}weapons`]='';
update[`${repsecid}test`]='editable';
}
const number=setMinMax(values[`${repsecid}skill_percent`]);
update[`${repsecid}skill_span`]=number;
update[`${repsecid}skill_percent`]=number;
const value_ammo = Math.max(parseInt(values[`${repsecid}ammo`],10) || 0,0) ;
if (value_ammo>0){
update[`${repsecid}ammo_total`]=value_ammo;
update[`${repsecid}hasammo`]='active';
update[`${repsecid}ammo`]=value_ammo;
} else {
update[`${repsecid}hasammo`]=0;
update[`${repsecid}ammo_total`]='';
update[`${repsecid}ammo`]='';
}
console.log(`%c update name ${repsecid}weapons to ${repsecid}name`, 'color: green; font-weight:bold');
};
if (section ==='special'){
const value_stat=setMinMax(values[`${repsecid}skill_or_stat_used`]) ;
update[`${repsecid}skill_span`]=value_stat;
update[`${repsecid}skill_or_stat_used`]=value_stat;
console.log(`%c update skill_span for ${repsecid}`, 'color: green; font-weight:bold');
};
if (values.hasOwnProperty(`${repsecid}skill_percent`)){
const value_skill = setMinMax(values[`${repsecid}skill_percent`]);
update[`${repsecid}skill_span`]=value_skill;
update[`${repsecid}skill_percent`]=value_skill;
console.log(`%c update skill_span for ${repsecid}`, 'color: green; font-weight:bold');
};
});
console.log(`%c update`, 'color: green; font-weight:bold');
console.info('versioning',update);
setAttrs(update, //Update attributes
{silent:true}, // will not trigger sheet workers
versioning(codeversion)); // call versioning again
});
});
});
};
const version_201_202 = () => {
let codeversion=2.02;
const update={};
console.log('verion:',codeversion);
update['version']=codeversion;
getAttrs(["sheet_type"], values => {
var names=[];
var rank=[];
if (values.sheet_type==='npc'){
update['sheet_type']='npc';
getSectionIDs(`skills`, ids => {
ids.forEach(id => {
names.push(`repeating_skills_${id}_name`);
rank.push(`repeating_skills_${id}_rank`);
});
});
};
// make it into an object with keys = names and values = ran
getAttrs(names.concat(rank), values => {
var ids_to_remove=[]; // for the ids that I copy in the named skills
names.forEach((name,idx) => {
const skillname=values[name].toLowerCase().replace(/ /g, "_");
const rankvalue=values[rank[idx]];
const id_value=name.split('_')[2];
if (arrays['_skills'].includes(skillname)){
update[`${skillname}`]=rankvalue;
update[`${skillname}_visible`]='visible';
ids_to_remove.push(id_value);
}
});
console.info('update npc skills',update);
setAttrs(update, {silent:true}, () => {
console.log('updated skills');
ids_to_remove.forEach(id => {
removeRepeatingRow(`repeating_skills_${id}`);
});
console.log('removed repeating skills');
versioning(codeversion);
});
});
});
};
const version_202_203 = () => {
const codeversion = 2.03
const update ={}
console.log('verion:',codeversion);
update['version'] = codeversion;
const old_named_skills=['art','craft','pilot','military_science','science'];
const old_adaptation = ['violence_1','violence_2','violence_3','helplessness_1','helplessness_2','helplessness_3'];
const old_named_skills_names=old_named_skills.map(x=> `${x}_name`)
getAttrs(old_adaptation.concat(old_named_skills_names).concat(old_named_skills).concat(['willpower_points_max','charisma_score']),(values) =>{
if (values.hasOwnProperty('art_name')){
const art_value=setMinMax(values[`art`]);
const art_name = values[`art_name`];
update[`art_1`]=art_value;
update[`art_1_name`]=art_name;
}
if (values.hasOwnProperty('craft_name')){
const craft_value = setMinMax(values[`craft`]);
const craft_name = values[`craft_name`];
update[`craft_1`]=craft_value;
update[`craft_1_name`]=craft_name;
}
// complete for pilot, military_science, science
if (values.hasOwnProperty('pilot')) {
const pilot_value= setMinMax(values[`pilot`]);
const pilot_name = values[`pilot_name`];
update[`pilot_1`] = pilot_value;
update[`pilot_1_name`] = pilot_name;
}
if (values.hasOwnProperty('military_science')) {
const military_science_value = setMinMax(values[`military_science`]);
const military_science_name = values[`military_science_name`];
update[`military_science_1`] = military_science_value;
update[`military_science_1_name`] = military_science_name;
}
if (values.hasOwnProperty('science')) {
const science_value = setMinMax(values[`science`]);
const science_name = values[`science_name`];
update[`science_1`] = science_value;
update[`science_1_name`] = science_name;
}
if (values.hasOwnProperty('violence_1')) {
const violence_1 = values[`violence_1`];
const violence_2 = values[`violence_2`];
const violence_3 = values[`violence_3`];
var violence = -1;
if (violence_1 ==1) {violence =0}
if (violence_2 ==2) {violence =1}
if (violence_3 ==3) {violence =2}
update[`violence`] = violence;
if (violence ==2) {update[`violence_adapted`]==1}
}
if (values.hasOwnProperty('helplessness_1')) {
const helplessness_1 = values[`helplessness_1`];
const helplessness_2 = values[`helplessness_2`];
const helplessness_3 = values[`helplessness_3`];
var helplessness = -1;
if (helplessness_1 ==1) {helplessness =0}
if (helplessness_2 ==2) {helplessness =1}
if (helplessness_3 ==3) {helplessness =2}
update[`helplessness`] = helplessness;
if (helplessness ==2) {update[`helplessness_adapted`]==1}
}
setAttrs(update, {silent:true}, () => {
console.log('updated named skills and adaptations');
console.info(update);
versioning(codeversion);
});
});
};
const version_203_204= () => {
const codeversion = 2.04;
const update ={};
console.log('verion:',codeversion);
update['version'] = codeversion;
getAttrs(['willpower_points_max','charisma_score'],values => {
getSectionIDs('bonds',ids => {
const repfields=[];
ids.forEach(id => {
repfields.push(`repeating_bonds_${id}_score`);
});
getAttrs(repfields,bond_values => {
const willpower_points_max=values['willpower_points_max'];
const charisma_score = values['charisma_score'];
repfields.forEach(field => {
if ((parseInt(bond_values[field])||0)>=willpower_points_max){
update[field]=charisma_score;
update[`${field}_old`]=charisma_score;
}
});
setAttrs(update, {silent:true}, () => {
console.log('updated named skills and adaptations');
console.info(update);
versioning(codeversion);
});
});
});
});
};
const version_204_205 = () => {
const codeversion = 2.05;
const update ={};
console.log('verion:',codeversion);
update['version'] = codeversion;
getAttrs(['sheet_type','breaking_point','breaking_point_max'], values => {
if (values[`sheet_type`] !== 'handler'){
current_bp=parseInt(values[`breaking_point`])||0;
max_bp=parseInt(values[`breaking_point_max`])||0;
update[`reached_breaking_point`]=current_bp<max_bp ? 1 : 0;
}
setAttrs(update, {silent:true}, () => {
console.log('updated reached breaking point');
console.info(update);
versioning(codeversion);
});
});
};
const version_205_206 = () => {
const codeversion = 2.06;
const update ={};
console.log('verion:',codeversion);
update['version'] = codeversion;
setAttrs(update, {silent:true}, () => {
console.log('now repeating section will update when you level up failed skills');
console.info(update);
versioning(codeversion);
});
};
const BondButtonColor= (bondvalue) => {
const score = parseInt(bondvalue)||0;
const color = (score > 0) ? 'on' : 'off';
return color;
};
const changeBondButtonColorOnOpen = () => {
getSectionIDs(`bonds`, (idarray) => {
const allbonds=idarray.map(id =>`repeating_bonds_${id}_score`);
getAttrs(allbonds, (value) => {
const update={};
Object.entries(value).forEach(([key, value]) => {
const id = key.split('_')[2];
const score = parseInt(value)||0;
update['repeating_bonds_'+id+'_color'] = BondButtonColor(score);
});
setAttrs(update, {silent:true}, () => {
console.info('update',update);
console.log('Bond color updated');
});
});
});
};
// update the rollDamage dice for the hidden buttons in the repeating sections
// it should only be used at creation of the field on in versioning
// since characterID and repeatingSectionID does not change
// if it does, using transmogrifer, I might have to add a reset button to reset the rolls
const updateRepeatingDamageRolls = (update,character_id,attrPrefix,nameRoll,hasCritical=false) => {
const fullAttrPrefix = (attrPrefix==='') ? nameRoll : `${attrPrefix}_${nameRoll}`;
const dicePrefix=`%{${character_id}|${fullAttrPrefix}`;
update[`${fullAttrPrefix}_action`] = `${dicePrefix}-action}`;
if (hasCritical) {
update[`${fullAttrPrefix}_critical_action`] = `${dicePrefix}_critical-action}`;
}
};
const updateRepeatingRolls = (section, attrName, id, character_id) => {
const update = {};
const attrPrefix = `repeating_${section}_${id}`;
const rep_attrName = `${attrPrefix}_${attrName}`;
const dicePrefix = `%{${character_id}|${rep_attrName}`;
update[`${rep_attrName}_action`] = `${dicePrefix}-action}`;
update[`${rep_attrName}_r`] = id;
update[`${rep_attrName}_initialized`] = `1`;
if (section === 'weapons') {
arrays['_weapon_hidden_buttons'].forEach((buttonName) => {
updateRepeatingDamageRolls(update,character_id,attrPrefix,buttonName,true);
});
}
if (section === 'rituals') {
arrays['_ritual_hidden_buttons'].forEach((buttonName) => {
updateRepeatingDamageRolls(update,character_id,attrPrefix,buttonName);
});
}
return update;
};
const updateAllRollsOnOpen = () => {
const update = {};
getAttrs(['character_id'], (values) => {
const character_id = values.character_id;
updateRollsOnOpen(update,character_id);
updateRepeatingRollsonOpen(update,character_id);
});
};
const updateRollsOnOpen= (update, character_id) => {
console.log('===update rolls===');
const fullrolls = _allrolls;
fullrolls.forEach(roll => {
const dicePrefix = `%{${character_id}|${roll}`;
update[`${roll}_action`] = `${dicePrefix}-action}`;
if (roll.includes('sanity_loss')) {
updateRepeatingDamageRolls(update,character_id,'',roll+'_success');
updateRepeatingDamageRolls(update,character_id,'',roll+'_failure');
}
});
};
const updateRepeatingRollsonOpen = (update,character_id) => {
Object.entries(_repeating_sections).forEach(([attrName,section])=> {
getSectionIDs(section, function(idarray) {
idarray.forEach(id => {
Object.assign(update, updateRepeatingRolls(section, attrName, id, character_id));
});
setAttrs(update, {silent:true}, () => {
console.info('update',update);
console.log('Repeating and Normal Rolls updated');
});
});
});
};
const changeRepeatingRolls = (section,attrName,id) => {
getAttrs(['character_id',`repeating_${section}_${id}_initialized`], (values) => {
const character_id = values.character_id;
const isInitialized = parseInt(values[`repeating_${section}_${id}_initialized`],10) || 0;
const update = {};
if (isInitialized===0) {
console.log('===update rolls===');
Object.assign(update, updateRepeatingRolls(section, attrName, id, character_id));
} else {
console.log('===no need to update===');
}
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
};
const rollwithmodifiers = (rollString,rollName,queryModifier,additionalParameters) => {
const attr_to_get=arrays['_derived_modifiers']
if (additionalParameters.hasOwnProperty('editable_name')) {
attr_to_get.push(additionalParameters['editable_name']);
}
getAttrs(attr_to_get, (values) => {
const wp_mod=check_for_wp_modifiers(values,rollName);
rollString += `{{rating=[[@{${rollName}}]]}}`;
rollString += `{{zero_willpower=[[${wp_mod.zero_willpower}]]}}`;
rollString += `{{low_willpower=[[${wp_mod.low_willpower}]]}}} `;
rollString += `{{modifier=[[${queryModifier}]]}}`;
rollString += `{{isCritical=[[0]]}} {{isSuccess=[[0]]}}`;
rollString += get_header_skills(values,additionalParameters);
rollFail=`${rollName}_fail`;
rollSkillAndStats(rollString,rollName,isSkillName(rollName));
});
};
const rollAttacks = (rollValue,options) => {
startRoll(rollValue, (results) => {
const dice=results.results.dice.result;
options.modifier=results.results.modifier.result;
const modifier=check_weapon_modifiers(options);
const rating=correct_rating(options.rating,modifier);
const outcome=check_success(dice,rating,options.isSkill);
newroll={
rating: rating,
modifier: modifier,
isSuccess: outcome.isSuccess,
isCritical: outcome.isCritical,
zero_willpower: options.zero_willpower,
low_willpower: options.low_willpower,
advanced_weapons: options.hasAdvancedWeapons
};
finishRoll(results.rollId,newroll);
});
};
const rollSkillAndStats=(rollValue,rollName,isSkill) => {
// Input:
// rollValue is the string to roll the dice
// rollName is the name of the skill or stat
// rollFail used only for stats to check for failure
// limit_to_99 is the flag to limit the upper bound rating to 99% (0 for inhuman stats) [0,1]
startRoll(rollValue, (results)=> {
// low and zero willpower flags only used if the setting is on
const zero_willpower=results.results.zero_willpower.result;
const low_willpower=results.results.low_willpower.result;
const _modifier= correct_modifier(results.results.modifier.result,low_willpower);
const _rating = correct_rating(results.results.rating.result,_modifier,isSkill);
const dice=results.results.dice.result;
var newroll={};
const outcome=check_success(dice,_rating,isSkill);
newroll={
rating: _rating,
modifier: _modifier,
isSuccess: outcome.isSuccess,
isCritical: outcome.isCritical,
zero_willpower: zero_willpower,
low_willpower: low_willpower
};
finishRoll(results.rollId,newroll);
update=check_for_failed_skill(rollName,outcome.isSuccess,isSkill);
setAttrs(update,{silent:false}, () => {
console.info('update',update);
});
});
};
const rollBonds=(rollValue,_value,_names,_parameters) => {
startRoll(`${rollValue}`, (results)=> {
const dice=results.results.dice.result;
const local_wp=Math.max(0,parseInt(results.results.local_wp.result)-dice);
var score=Math.max(0,parseInt(results.results.score.result)-dice);
const original_wp=parseInt(results.results.local_wp.result) || 0;
const zerowp=local_wp==0 ? 1 : 0;
var update={};
update[_names['local_wp_points']]=local_wp;
update[`willpower_points`]=local_wp;
update[_names[`hurt`]]='hurt';
if (parseInt(results.results.local_wp.result)||0 !=0){
update[_names[`score`]]=score;
}else{
score=parseInt(results.results.score.result) || 0;
}
update[_names[`color`]]=BondButtonColor(score);
newroll={
dice: Math.min(dice,original_wp),
local_wp: local_wp,
score: score,
zerowp: zerowp
};
finishRoll(results.rollId,newroll);
setAttrs(update,{silent:false}, () => {
console.info('update',update);
});
});
};
const clicked_repeating_rituals_cost = (parameters,names) => {
getAttrs(parameters, (values) => {
const ritual_type = names['ritual_type'];
// cost of the ritual
const other_costs={};
getOtherCosts(other_costs,values,names,RitualCosts);
getOtherCosts(other_costs,values,names,CurrentValues);
if(ritual_type==='pay_cost'){
paythecost(other_costs['sanity_loss_failure'],other_costs);
}
if(ritual_type==='force_connection'){
forceconnection(other_costs['sanity_loss_failure'],other_costs);
}
if(ritual_type==='accept_failure'){
acceptfailure(other_costs['sanity_loss_success'],other_costs);
}
});
};
const setDamageParametersAndInputNames=(id,attrName, _parameters, _input_names) => {
_input_names[`name`] = `repeating_weapons_${id}_name`;
_input_names[`repsecid`] = `repeating_weapons_${id}`;
_parameters.push(_input_names[`name`]);
_input_names[`hasammo`] = `repeating_weapons_${id}_hasammo`;
_parameters.push(_input_names[`hasammo`]);
var flagCritical=false;
flagCritical= flagCritical || (attrName==='damage_critical');
flagCritical= flagCritical || (attrName==='double_barrel_critical');
flagCritical= flagCritical || (attrName==='lethality_percent_critical');
flagCritical= flagCritical || (attrName==='selective_fire_critical');
_input_names[`isCritical`] = (flagCritical==true) ? 1 : 0;
const isCritical=_input_names[`isCritical`];
if (attrName==='damage' || attrName==='damage_critical') {
if (isCritical==1){
_input_names[`header`] = `damage (×2)`;
}else{
_input_names[`header`] = `damage`;
}
_input_names[`damage`] = `repeating_weapons_${id}_damage`;
_parameters.push(_input_names[`damage`]);
_input_names[`damage_type`]='damage';
}else if (attrName==='double_barrel' || attrName==='double_barrel_critical') {
_input_names[`damage_type`]='damage';
if (isCritical==1){
_input_names[`header`] = `damage (×2)`;
}else{
_input_names[`header`] = `damage`;
}
_input_names[`damage`] = `repeating_weapons_${id}_double_barrel`;
_parameters.push(_input_names[`damage`]);
}else if (attrName==='lethality_percent' || attrName==='lethality_percent_critical') {
_input_names[`damage_type`]='lethality_percent';
if (isCritical==1){
_input_names[`header`] = `lethality (×2)`;
}else{
_input_names[`header`] = `lethality`;
}
_input_names[`damage`] = `repeating_weapons_${id}_lethality_percent`;
_parameters.push(_input_names[`damage`]);
}else if (attrName==='selective_fire' || attrName==='selective_fire_critical') {
if (isCritical==1){
_input_names[`header`] = `_tmp_header_ (×2)`;
}else{
_input_names[`header`] = `_tmp_header_`;
}
_input_names[`damage_type`]='lethality_percent';
_input_names[`damage`] = `repeating_weapons_${id}_selfire_lethality_percent`;
_parameters.push(_input_names[`damage`]);
_input_names[`selfire_type`] = `repeating_weapons_${id}_selfire_type`;
_parameters.push(_input_names[`selfire_type`]);
}
_input_names[`ammo`] = `repeating_weapons_${id}_ammo`;
_parameters.push(_input_names[`ammo`]);
_input_names[`track_bullets`] = `track_bullets`;
_parameters.push(_input_names[`track_bullets`]);
};
const addAttackHeader=(values,names) => {
if (names.hasOwnProperty('header')){
return `{{header=^{${realDmgHeader(values,names)}}}}`;
}
return '';
};
const realDmgHeader=(values,names) => {
if (names.hasOwnProperty)
var header=names['header'];
if (header.includes('_tmp_header_')){ // I can use it for other things
//if (names['rollName']==='selective_fire'){
return header.replace('_tmp_header_',values[names[`selfire_type`]]);
//}
}
return header;
};
const prefixDamageRoll = (type_prefix) => {
if (type_prefix==='damage'){ return prefix_damage_roll;}
if (type_prefix==='heal'){ return prefix_health_roll;}
if (type_prefix==='attack'){ return prefix_attack_roll;}
};
const clicked_repeating_damages = (parameters,names,type_prefix='damage') => {
getAttrs(parameters, (values) => {
const isCritical=names['isCritical'];
const track_bullets=values[names['track_bullets']]==='active' ? 1 : 0;
const hasammo=values[names['hasammo']]==='active' ? 1 : 0;
const trackAmmo=track_bullets==1 && hasammo==1 ? 1 : 0;
const currentAmmo=Math.max(0,parseInt(values[names['ammo']]) || 0);
const selfire_type=(values[names['selfire_type']]) || '';
const used_ammo=getUsedAmmo(selfire_type);
const damage_type=names['damage_type'];
var damage=values[names['damage']];
var rollString=``;
rollString += prefixDamageRoll(type_prefix);
rollString += addAttackHeader(values,names)
rollString += addTargetStat(values,names,type_prefix);
var damageString='';
if (damage_type === 'damage') {
if (isCritical==1){
damageString=`{{damage=[[2*${damage}]]}}`;
}else{
damageString=`{{damage=[[${damage}]]}}`;
}
rollString = `${rollString} ${damageString}`;
rollString = check_track_ammo(rollString,trackAmmo,currentAmmo,used_ammo)
}else if (damage_type === 'lethality_percent') {
if (isCritical==1){
damage=2*damage;
}
damageString=`{{lethality_percent=[[${damage}]]}}`;
rollString = `${rollString} ${damageString}`;
rollString = `${rollString} {{roll=[[1d100]]}}`;
rollString = check_track_ammo(rollString,trackAmmo,currentAmmo,used_ammo)
}
rollString = `${rollString} {{isCritical=[[${isCritical}]]}}`;
startRoll(rollString, (results) => {
const newroll = getRollDamage(results,trackAmmo,damage_type,isCritical);
newroll['isCritical']=isCritical;
newroll['trackbullets']=trackAmmo;
finishRoll(results.rollId,newroll);
if (trackAmmo==1){
const update={};
update[names['ammo']]=newroll['current_ammo'];
setAttrs(update, () => {
console.info('update',update);
});
}
});
});
};
const setDamageRitualParametersAndInputNames=(id, _parameters, _input_names) => {
_input_names[`name`] = `repeating_rituals_${id}_name`;
_input_names[`isCritical`]=0;
const damage_type=_input_names[`damage_type`];
const attack_or_heal = _input_names[`attack_or_heal`];
const repsecid=_input_names[`repsecid`]; //
_parameters.push(_input_names[`name`]);
var prefix_names=`${repsecid}_${attack_or_heal}`;
_input_names[`repsecid`] = prefix_names;
_input_names[`damage`]=`${prefix_names}_${damage_type}_amount`;
_parameters.push(_input_names[`damage`]);
_input_names[`target_stat`] = `${prefix_names}_target_stat`;
_parameters.push(_input_names[`target_stat`]);
};
const getRollDamage= (results,trackammo,damage_type,critical) =>{
const newroll={};
if (trackammo==1){
const trackbullets=[[1]];
newroll['trackbullets']=trackbullets;
const used_ammo=results.results.used_ammo.result;
const current_ammo=results.results.current_ammo.result;
const expended_ammo= current_ammo - used_ammo;
newroll['current_ammo']= expended_ammo;
}
if (damage_type==='damage'){
const damage=results.results.damage.result;
newroll['damage']=damage;
}
if (damage_type==='lethality_percent'){
const lethality_percent=results.results.lethality_percent.result;
const roll=results.results.roll.result;
var computed_lethality_percent=lethality_percent;
var computed_roll=DeltaGreenLethalityFail(roll);
if (critical==1) {
computed_lethality_percent=lethality_percent*2;
computed_roll= computed_roll*2;
}
newroll['roll']=computed_roll;
newroll['lethality_percent']=computed_lethality_percent;
}
return newroll;
};
const clicked_repeating_weapons= (parameters,names,queryModifier) => {
getAttrs(parameters, (values) => {
// used to set the roll string
const character_id=values['character_id'];
const repsecid= names['repsecid'];
const skillname=values[names['name']];
const skillrank=setMinMax(values[names['rank']]);
const trackAmmo= need_to_track_ammo(values,names);
const current_ammo=Math.max(0,parseInt(values[names['ammo']]) || 0);
const hasAdvancedWeapons=values[names['advanced_weapons']] === 'active' ? 1 : 0;
const isShotgun = values[names['shotgun']] === 'active' ? 1 : 0;
const hasDoubleBarrel = values[names['hasDoubleBarrel']] === 'active' ? 1 : 0;
const hasSelectiveFire = values[names['selfire']] === 'active' ? 1 : 0;
const hasAccessories = values[names['accessories']] === 'active' ? 1 : 0;
const hasBlastRadius = values[names['blast_radius']] === 'active' ? 1 : 0;
const isAiming = values[names['aiming']] === 'active' ? 1 : 0;
const lethality_percent=setMinMax(values[names['lethality_percent']]);
const damage= parseRoll(values[names['damage']]);
const armor_piercing=Math.min(parseInt(values[names['armor_piercing']],10)||0,0);
const base_range=values[names['range']];
const kill_radius=values[names['kill_radius']];
var _options={};
_options['rating']=skillrank;
_options['hasLethality']= lethality_percent>0 ? 1 : 0;
_options['hasDamage']= damage !=0 ? 1 : 0;
_options['isAiming']= isAiming;
if (_options['hasDamage']===1) {_options['damage']=damage;}
if (_options['hasLethality']===1) {_options['lethality_percent']=lethality_percent;}
if (trackAmmo==1) {_options['trackAmmo']=1;_options['current_ammo']=current_ammo;}
if (hasAdvancedWeapons===1) {_options['hasAdvancedWeapons']=1;}
if (isShotgun===1) {_options['isShotgun']=1;}
if (hasDoubleBarrel===1) {_options['hasDoubleBarrel']=1;_options['double_barrel']=parseRoll(values[names['double_barrel']]);}
if (hasSelectiveFire===1) {
_options['hasSelectiveFire']=1;
_options['selfire_lethality_percent']=setMinMax(values[names['selfire_lethality_percent']]);
_options['selfire_type']=values[names['selfire_type']];}
if (hasAccessories===1) {
_options['hasAccessories']=1;
_options['accessory_modifier']=values[names['accessory_modifier']];
_options['accessory_name']=values[names['accessory_name']];
}
if (hasBlastRadius===1) {_options['hasBlastRadius']=1;}
const wp_mod=check_for_wp_modifiers(values);
_options['wp_mod']=wp_mod
const rollString=`${prefix_skill_roll} {{header=${skillname}}} {{subheader=${skillrank}}}`;
var rollValue = `${rollString} {{rating=[[${skillrank}]]}} {{modifier=[[${queryModifier}]]}} `;
rollValue += ` {{low_willpower=[[${wp_mod.low_willpower}]]}} {{zero_willpower=[[${wp_mod.zero_willpower}]]}}`;
rollValue += ` {{isCritical=[[0]]}} {{isSuccess=[[0]]}}`;
rollValue += ` {{advanced_weapons=[[${hasAdvancedWeapons}]]}}`;
if (base_range != "") {rollValue += '{{base_range=' + base_range + '}}';}
if (armor_piercing !=0) {rollValue += '{{armor_piercing=' + armor_piercing + '}}';}
if (kill_radius != "") {rollValue += '{{kill_radius=' + kill_radius + '}}';}
const options = setWeaponOptions(_options)
rollValue += setAdvancedWeaponsString(options,character_id,repsecid);
//********************************************
rollAttacks(rollValue,options);
});
};
const clicked_repeating_actions = (section,parameters,names,queryModifier) => {
initializeRolls(); // Initialize the rolls if flag is not set
if (section==='weapons'){
clicked_repeating_weapons(parameters,names,queryModifier);
}
if (section==='bonds'){
clicked_repeating_bonds(parameters,names,queryModifier);
}
if (section==='special'){
clicked_repeating_skills(parameters,names,queryModifier,0);
}
if (section==='skills'){
clicked_repeating_skills(parameters,names,queryModifier,1);
}
if (section==='rituals'){
clicked_repeating_rituals(parameters,names,queryModifier);
}
}
const clicked_repeating_skills = (parameters,names,queryModifier,isRepSkill) => {
getAttrs(parameters, (values) => {
const skillname=values[names['name']];
const skillrank=parseInt(values[names['rank']]) || 0;
const rollString=`${prefix_skill_roll} {{header=${skillname}}} {{subheader=${skillrank}}} `;
const wp_modifiers=check_for_wp_modifiers(values);
const _zero_willpower = wp_modifiers.zero_willpower;
const _low_willpower = wp_modifiers.low_willpower;
const rating=parseInt(values[parameters[names['rank']]]) || 0;
var rollValue = `${rollString} {{rating=[[${skillrank}]]}} {{zero_willpower=[[${_zero_willpower}]]}} {{low_willpower=[[${_low_willpower}]]}}} {{modifier=[[${queryModifier}]]}} {{isCritical=[[0]]}} {{isSuccess=[[0]]}}`;
if(_zero_willpower!='[[1]]') {
rollValue = `${rollValue}`;
}
attrName=names['repsecid'];
rollSkillAndStats(rollValue,attrName,isRepSkill);
});
};
const clicked_repeating_bonds = (parameters,names) => {
getAttrs(parameters, (values) => {
const bondname=values[names['name']];
const bondscore=parseInt(values[names['score']]) || 0;
const local_wp_points=parseInt(values[names['local_wp_points']]) || 0;
const local_sanity_points=parseInt(values[names['local_sanity_points']]) || 0;
const character_id=values['character_id'];
if (bondscore<=0) {return;} // No need to roll if the bond is already broken
const rollString=`${prefix_bond_roll} {{header=${bondname}}} {{subheader=${bondscore}}} `;
var rollValue = `${rollString} {{zerowp=[[0]]}} {{score=[[${bondscore}]]}} {{local_wp=[[${local_wp_points}]]}} {{local_sanity=[[${local_sanity_points}}]]}} {{repress= [^{repress}](~${character_id}|sanity_points)}}`;
rollValue=`${rollValue} {{projection=1}} {{repression=1}}`;
rollBonds(rollValue,values,names,parameters);
});
};
// Important functions
const setCommonParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`name`] = `${repsecid}_name`;
_input_names[`repsecid`] = `${repsecid}`;
_parameters.push(_input_names[`name`]);
_input_names[`willpower_points`] = `willpower_points`;
_parameters.push(`willpower_points`);
_input_names[`sanity_points`] = `sanity_points`;
_parameters.push(`sanity_points`);
_input_names[`low_willpower`] = `low_willpower`;
_parameters.push(`low_willpower`);
_input_names[`zero_willpower`] = `zero_willpower`;
_parameters.push(`zero_willpower`);
_input_names[`character_id`] = `character_id`;
_parameters.push(`character_id`);
}
const setSkillsParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`rank`] = `${repsecid}_rank`;
_input_names[`fail`] = `${repsecid}_fail`;
_parameters.push(_input_names[`rank`]);
_parameters.push(_input_names[`fail`]);
}
const setBondsParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`local_wp_points`] = `willpower_points`;
_input_names[`local_sanity_points`] = `sanity_points`;
_input_names[`score`] = `${repsecid}_score`;
_input_names[`hurt`] = `${repsecid}_hurt`;
_input_names[`color`] = `${repsecid}_color`;
_parameters.push(_input_names[`local_wp_points`]);
_parameters.push(_input_names[`local_sanity_points`]);
_parameters.push(_input_names[`score`]);
_parameters.push(_input_names[`color`]);
};
const setSpecialParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`rank`] = `${repsecid}_skill_span`;
_parameters.push(_input_names[`rank`]);
};
const setGeneralWeaponParametersAndInputNames=(repsecid, _parameters, _input_names)=>{
_input_names[`rank`] = `${repsecid}_skill_span`;
_parameters.push(_input_names[`rank`]);
_input_names[`range`] = `${repsecid}_base_range`;
_parameters.push(_input_names[`range`]);
_input_names[`damage`] = `${repsecid}_damage`;
// write the push in function of the input name
_parameters.push(_input_names[`damage`]);
_input_names[`armor_piercing`] = `${repsecid}_armor_piercing`;
_parameters.push(_input_names[`armor_piercing`]);
_input_names[`ammo`] = `${repsecid}_ammo`;
_parameters.push(_input_names[`ammo`]);
_input_names[`hasammo`] = `${repsecid}_hasammo`;
_parameters.push(_input_names[`hasammo`]);
_input_names[`lethality_percent`]=`${repsecid}_lethality_percent`;
_parameters.push(_input_names[`lethality_percent`]);
_input_names[`kill_radius`]=`${repsecid}_kill_radius`;
_parameters.push(_input_names[`kill_radius`]);
};
const setShotgunParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`shotgun`] = `${repsecid}_shotgun`;
_parameters.push(_input_names[`shotgun`]);
_input_names[`hasDoubleBarrel`] = `${repsecid}_hasDoubleBarrel`;
_parameters.push(_input_names[`hasDoubleBarrel`]);
_input_names[`double_barrel`] = `${repsecid}_double_barrel`;
_parameters.push(_input_names[`double_barrel`]);
};
const setAccessoriesParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`accessories`]=`${repsecid}_hasAccessories`;
_parameters.push(_input_names[`accessories`]);
_input_names[`accessory_name`]=`${repsecid}_accessory_name`;
_parameters.push(_input_names[`accessory_name`]);
_input_names[`accessory_modifier`]=`${repsecid}_accessory_modifier`;
_parameters.push(_input_names[`accessory_modifier`]);
};
const setBlastRadiusParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`blast_radius`]=`${repsecid}_blast_radius`;
_parameters.push(_input_names[`blast_radius`]);
};
const setSelectiveFireParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`selfire`]=`${repsecid}_selfire`;
_parameters.push(_input_names[`selfire`]);
_input_names[`selfire_lethality_percent`]=`${repsecid}_selfire_lethality_percent`;
_parameters.push(_input_names[`selfire_lethality_percent`]);
_input_names[`selfire_type`]=`${repsecid}_selfire_type`;
_parameters.push(_input_names[`selfire_type`]);
};
const setAdvancedWeaponParametersAndInputNames=(repsecid, _parameters, _input_names) => {
_input_names[`advanced_weapons`]=`advanced_weapons`;
_parameters.push(_input_names[`advanced_weapons`]);
setShotgunParametersAndInputNames(repsecid, _parameters, _input_names);
setAccessoriesParametersAndInputNames(repsecid, _parameters, _input_names);
setBlastRadiusParametersAndInputNames(repsecid, _parameters, _input_names);
setSelectiveFireParametersAndInputNames(repsecid, _parameters, _input_names);
};
const setRepeatingParametersAndInputNames=(section, id, _parameters, _input_names) => {
const repsecid = `repeating_${section}_${id}`;
_input_names[`section`] = section;
_input_names[`id`] = id;
setCommonParametersAndInputNames(repsecid, _parameters, _input_names);
if (section === 'skills') {
setSkillsParametersAndInputNames(repsecid, _parameters, _input_names);
} else if (section === 'bonds') {
setBondsParametersAndInputNames(repsecid, _parameters, _input_names);
} else if (section === 'special') {
setSpecialParametersAndInputNames(repsecid, _parameters, _input_names);
} else if (section==='rituals') {
setRitualParametersAndInputNames(repsecid, _parameters, _input_names);
} else if (section==='weapons') {
setGeneralWeaponParametersAndInputNames(repsecid, _parameters, _input_names);
setAdvancedWeaponParametersAndInputNames(repsecid, _parameters, _input_names);
_input_names[`track_bullets`]=`track_bullets`;
_parameters.push(_input_names[`track_bullets`]);
} else {
console.error(`Section ${section} not found`);
}
};
const initializeRolls = () => {
if (!_isInitialized) {
// Perform the necessary setup for rolls
// Example setup code
updateAllRollsOnOpen();
setResetBreakingPointsOnOpen();
updateRitualInfoOnOpen();
updateadvancedweapons();
// Set the flag to true after initialization
_isInitialized = true;
}
};
const rollSanityDamages = (sanloss) => {
const standard =`{{trackbullets=[[0]]}} {{isCritical=[[0]]}}`;
var rollString= `${prefix_damage_roll} {{header=^{sanity loss}}}`
rollString+=`{{subheader=${sanloss}}} {{damage=[[${sanloss}]]}} ${standard}`;
startRoll(rollString, (results) => {
const newroll = getRollDamage(results,0,'damage',0);
newroll['isCritical']=0;
newroll['trackbullets']=0;
finishRoll(results.rollId,newroll);
});
};
const paythecost=(sanity_loss,other_costs,fraction=1) => {
// lower sanity loss (not half)
rollSan= `${prefix_ritualloss_roll}`;
//used for before the roll
var hasCosts = {};
CurrentValues.forEach((attrName) => {
const current=parseInt(other_costs[attrName]) || 0;
var price= other_costs[attrName+'_cost'];
if (attrName !== 'sanity_points') {
rollSan += ` {{${attrName}_cost=[[floor(${price}/${fraction})]]}}`
rollSan += ` {{${attrName}=${current}}}`
if (price !== 0 && price !== '0') {
rollSan += ` {{has_${attrName}=1}}`
hasCosts[attrName] = 1;
} else {
};
}
});
rollSan += ` {{sanity_points_cost=[[${sanity_loss}]]}}`;
rollSan += ` {{sanity_points=${other_costs.sanity_points}}}`;
rollSan += ` {{has_sanity_points=1}}`;
hasCosts['sanity_points'] = 1;
startRoll(rollSan, (results) => {
const newroll = {};
const update = {};
CurrentValues.forEach((attrName) => {
const attrCost=attrName+'_cost';
const old_value=parseInt(other_costs[attrName]) || 0;
const cost = parseInt(results.results[attrCost].result) || 0;
const new_value = Math.max(0,old_value - cost);
newroll[attrCost] = new_value;
if (hasCosts.hasOwnProperty(attrName)) {
update[attrName] = new_value;
}
});
finishRoll(results.rollId,newroll);
setAttrs(update, {silent:true}, () => {
console.info('update',update);
updatebreakingpoints() // I need to update the breaking points in the callback
});
});
};
const acceptfailure=(sanity_loss_success,other_costs) => {
paythecost(sanity_loss_success,other_costs,2);
};
const forceconnection=(sanity_loss_failure,other_costs) => {
other_costs['power_score'] = other_costs['power_score']+1 ;
paythecost(sanity_loss_failure,other_costs,1);
};
const name_and_param=(repsecid,attrName, _parameters, _input_names) => {
_input_names[attrName] = `${repsecid}_${attrName}`;
_parameters.push(_input_names[attrName]);
};
const setRitualCostParametersAndInputNames = (repsecid, _parameters, _input_names) => {
RitualCosts.forEach((attrName) => {
name_and_param(repsecid,attrName, _parameters, _input_names);
});
};
const setRitualDamageParametersAndInputNames = (repsecid, _parameters, _input_names) => {
RitualDamages.forEach((attrName) => {
name_and_param(repsecid,attrName, _parameters, _input_names);
});
RitualHeals.forEach((attrName) => {
name_and_param(repsecid,attrName, _parameters, _input_names);
});
};
const setRitualParametersAndInputNames = (repsecid, _parameters, _input_names) => {
// general informations
RitualRolls.forEach((attrName) => {
name_and_param(repsecid,attrName, _parameters, _input_names);
});
setRitualCostParametersAndInputNames(repsecid, _parameters, _input_names);
setRitualDamageParametersAndInputNames(repsecid, _parameters, _input_names);
};
const getOtherCosts = (other_costs,values,names,array) => {
array.forEach((attrName) => {
other_costs[attrName]=(values[names[attrName]] != '') ? values[names[attrName]] : 0;;
});
};
const name_to_shorthand = (name) => {
if (name === 'willpower_points') {return 'WP';}
if (name === 'hit_points') {return 'HP';}
if (name === 'strength_score') {return 'STR';}
if (name === 'constitution_score') {return 'CON';}
if (name === 'dexterity_score') {return 'DEX';}
if (name === 'intelligence_score') {return 'INT';}
if (name === 'charisma_score') {return 'CHA';}
if (name === 'power_score') {return 'POW';}
};
const ritual_power_action = (character_id,repsecid,other_costs) => {
const const_button_part = '](~'+character_id+'|';
const prefix_power_reaction='{{power_button=[';
const suffix_power_reaction = const_button_part+'power)}}';
return prefix_power_reaction+'^{power}'+suffix_power_reaction;
}
/*
const ritual_attack_or_heal_action = (character_id,repsecid,other_costs,heal_or_attack='attack') => {
const value_target=heal_or_attack.replace('_damage','').replace('_lethality_percent','');
const value = real_damage(other_costs,value_target);
if (value === '') {return '';}
const const_button_part = '](~'+character_id+'|'+repsecid+'_';
const target_stat=name_to_shorthand(other_costs[`${value_target}_target_stat`]);
const prefix_button = `{{${heal_or_attack}_button=[`;
const suffix_button = target_stat+const_button_part+heal_or_attack+'-action)}}';
return prefix_button+value+suffix_button;
};
const ritual_attack_action = (character_id,repsecid,other_costs) => {
var ritual_rolls='';
ritual_rolls+= ritual_attack_or_heal_action(character_id,repsecid,other_costs,'attack_damage');
ritual_rolls+= ritual_attack_or_heal_action(character_id,repsecid,other_costs,'attack_lethality_percent');
return ritual_rolls;
};
const ritual_heal_action = (character_id,repsecid,other_costs) => {
var ritual_rolls='';
ritual_rolls+= ritual_attack_or_heal_action(character_id,repsecid,other_costs,'heal_damage');
ritual_rolls+= ritual_attack_or_heal_action(character_id,repsecid,other_costs,'heal_lethality_percent');
return ritual_rolls;
};
*/
const real_damage = (other_costs,heal_or_damage,damage_type) => {
if (damage_type === 'lethality_percent') {
return `${setMinMax(other_costs[`${heal_or_damage}_${damage_type}_amount`])}% `;
} else if (damage_type === 'damage') {
return parseRoll(other_costs[`${heal_or_damage}_${damage_type}_amount`]);
}
return '';
};
const ritual_attack_or_heal_action = (character_id,repsecid,other_costs,heal_or_attack,damage_type) => {
const value = real_damage(other_costs,heal_or_attack,damage_type);
if (value === 0) {return '';}
const const_button_part = '](~'+character_id+'|'+repsecid+'_';
const target_stat=name_to_shorthand(other_costs[`${heal_or_attack}_target_stat`]);
const prefix_button = `{{${heal_or_attack}_button=[`;
const suffix_button = ` ${target_stat}${const_button_part}${heal_or_attack}_${damage_type}-action)}}`;
return prefix_button+value+suffix_button;
};
const ritual_attack_action = (character_id,repsecid,other_costs,damage_type) => {
return ritual_attack_or_heal_action(character_id,repsecid,other_costs,'attack',damage_type);
};
const ritual_heal_action = (character_id,repsecid,other_costs,damage_type) => {
return ritual_attack_or_heal_action(character_id,repsecid,other_costs,'heal',damage_type);
};
const prepare_ritual_rolls = (other_costs,values,names) => {
var localString='';
const attack_type = other_costs['attack_isLethal']
const heal_type = other_costs['heal_isLethal']
localString += ritual_attack_action(values[names['character_id']],names['repsecid'],other_costs,attack_type);
localString += ritual_heal_action(values[names['character_id']],names['repsecid'],other_costs,heal_type);
if (values[names['power_reaction']] === 'active') {
localString += ritual_power_action(values[names['character_id']],names['repsecid']);
}
return localString;
};
const clicked_repeating_rituals = (parameters,names,queryModifier) => {
getAttrs(parameters, (values) => {
// cost of the ritual
const other_costs={};
getOtherCosts(other_costs,values,names,RitualCosts);
getOtherCosts(other_costs,values,names,RitualDamages);
getOtherCosts(other_costs,values,names,RitualHeals);
//----------------------------------------------------------------------------------------------
//---------Not used for the roll, they are always zero. Ask Shane if he wants it----------------
//const wp_mod=check_for_wp_modifiers(values,rollName);
const low_willpower = 0 //wp_mod.low_willpower;
const zero_willpower = 0 //wp_mod.zero_willpower;
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
// what is needed to roll
const rating = values[names['skill_span']];
const sanity_loss_success = other_costs['sanity_loss_success'];
const sanity_loss_failure = other_costs['sanity_loss_failure'];
// info ritual
const ritual_name = values[names['name']];
const description = values[names['description']];
var rollString=`${prefix_ritual_roll} {{header=${ritual_name}}}`;
rollString +=` {{subheader=${rating}}}`;
rollString +=` {{rating=[[${rating}]]}}`;
rollString +=` {{queryModifier=${queryModifier}}}`;
if (description !=='') {rollString += `{{description=${description}}}`;}
rollString += `{{sanity_loss_success=${sanity_loss_success}}}`;
rollString += `{{sanity_loss_failure=${sanity_loss_failure}}}`;
rollString += `{{zero_willpower=[[${zero_willpower}]]}}`;
rollString += `{{low_willpower=[[${low_willpower}]]}}`;
var hasOtherCosts = false;
var costString = '';
Object.entries(other_costs).forEach(([key, value]) => {
if (value != '' && value!= '0') {costString += `{{${key}=${value}}}`; hasOtherCosts = true;}
});
rollString += costString;
rollString += `{{hasCost=[[0]]}}`;
rollString += prepare_ritual_rolls(other_costs,values,names);
const flawed_ritual = values[names['flawed_ritual']] === 'active' ? 1 : 0;
if (flawed_ritual === 1) {rollString += `{{flawed_ritual=${flawed_ritual}}}`;}
rollString += `{{modifier=[[${queryModifier}]]}}`;
const character_id=values['character_id'];
const repsecid=names['repsecid']; // ritualid is the repeating section id, not a parameter
rollString += `{{pay_cost=[^{pay the cost}](~${character_id}|${repsecid}_pay_cost)}}`;
rollString += `{{accept_failure=[^{accept}](~${character_id}|${repsecid}_accept_failure)}}`;
rollString += `{{reject_failure=[^{reject}](~${character_id}|${repsecid}_force_connection)}}`;
/// This are the only quantities than I need to manupulate
rollString += `{{isSuccess=[[0]]}}`;
startRoll(rollString, (results) => {
const activation_rating = parseInt(results.results.rating.result) || 0;
const dice = parseInt(results.results.dice.result) || 0;
const _flawed_ritual = (flawed_ritual ===1) ? -20 : 0;
const _modifier = correct_modifier((parseInt(results.results.modifier.result) || 0)+flawed_ritual,low_willpower);
const _rating = correct_rating(activation_rating,_modifier);
const hasCost = hasOtherCosts ? 1 : 0;
const outcome=check_success(dice,_rating);
newroll = {
isSuccess: outcome.isSuccess,
IsCritical: outcome.IsCritical,
dice: dice,
modifier: _modifier,
hasCost: hasCost,
flawed_ritual: _flawed_ritual,
low_willpower: low_willpower,
zero_willpower: zero_willpower,
};
finishRoll(results.rollId,newroll);
});
});
};
const empty_to_zero=(value) => {
return (value !== '' || value !=='0') ? value : 0;
}
const updateRitualInfoOnOpen = () => {
getSectionIDs(`rituals`, (ids) => {
ids.forEach((id) => {
ritual_rolls_info(`repeating_rituals_${id}`);
});
});
};
const ritual_rolls_info = (repsecid) => {
const update = {};
const _names={};
const _parameters=[];
_ritualInfo.forEach((ritual_name) => {
_names[ritual_name] = `${repsecid}_${ritual_name}`;
_parameters.push(_names[ritual_name]);
});
getAttrs(_parameters, (values) => {
const complexity = values[_names['complexity']];
const sanity_loss_success = empty_to_zero(values[_names['sanity_loss_success']]);
const sanity_loss_failure = empty_to_zero(values[_names['sanity_loss_failure']]);
const activation_time = empty_to_zero(values[_names['activation_time']])==0 ? '' : empty_to_zero(values[_names['activation_time']]);
const activation_time_unit = values[_names['activation_time_unit']];
const study_time = empty_to_zero(values[_names['study_time']])==0 ? '' : empty_to_zero(values[_names['study_time']]);
const study_time_unit = values[_names['study_time_unit']];
const unnatural_gain = empty_to_zero(values[_names['unnatural_gain']]);
const sanity_loss_for_learning = empty_to_zero(values[_names['sanity_loss_for_learning']]);
const willpower_points_cost = empty_to_zero(values[_names['willpower_points_cost']]);
const power_score_cost = empty_to_zero(values[_names['power_score_cost']]);
const hit_points_cost = empty_to_zero(values[_names['hit_points_cost']]);
const strength_score_cost = empty_to_zero(values[_names['strength_score_cost']]);
const constitution_score_cost = empty_to_zero(values[_names['constitution_score_cost']]);
const dexterity_score_cost = empty_to_zero(values[_names['dexterity_score_cost']]);
const intelligence_score_cost = empty_to_zero(values[_names['intelligence_score_cost']]);
const charisma_score_cost = empty_to_zero(values[_names['charisma_score_cost']]);
// complexity text
update[`${repsecid}_complexity_text`] = `${complexity} ritual`;
// study time text
var study_time_text = '';
if (study_time != '') {
study_time_text = `${study_time} ${study_time_unit}`;
} else {
study_time_text = study_time_unit;
}
update[`${repsecid}_study_time_text`] = `${study_time_text}`;
// learning text
var learning_cost_text = `${String(sanity_loss_for_learning).toUpperCase()}SAN`;
if (unnatural_gain != 0) {learning_cost_text += `; ${unnatural_gain} Unnatural`;}
update[`${repsecid}_study_cost_text`] = `${learning_cost_text}`;
// activation time text
var activation_time_text = '';
if (activation_time != '') {
activation_time_text = `${activation_time} ${activation_time_unit}`;
} else {
activation_time_text = activation_time_unit;
}
update[`${repsecid}_activation_time_text`] = `${String(activation_time_text).toUpperCase()}`;
// costs text
var costs_text = '';
if (willpower_points_cost != 0) {costs_text += `${willpower_points_cost}WP, `;}
if (hit_points_cost != 0) {costs_text += `${hit_points_cost}HP, `;}
if (power_score_cost != 0) {costs_text += `${power_score_cost}POW, `;}
if (strength_score_cost != 0) {costs_text += `${strength_score_cost}STR, `;}
if (constitution_score_cost != 0) {costs_text += `${constitution_score_cost}CON, `;}
if (dexterity_score_cost != 0) {costs_text += `${dexterity_score_cost}DEX, `;}
if (intelligence_score_cost != 0) {costs_text += `${intelligence_score_cost}INT, `;}
if (charisma_score_cost != 0) {costs_text += `${charisma_score_cost}CHA, `;}
if (sanity_loss_success != 0) {costs_text += `${sanity_loss_success}SAN/`;}
costs_text += `${sanity_loss_failure}SAN`;
update[`${repsecid}_cost_text`] = `${String(costs_text).toUpperCase()}`;
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
};
usedModifier = (e,callback) => {
var queryModifier = 0;
getAttrs(['useKey','global_modifier_number'], (values) => {
const useKey = values['useKey'];
const globalModifier = parseInt(values['global_modifier_number']) || 0;
if (useKey === 'global') {
queryModifier = globalModifier;
}
if (e.altKey && useKey === 'alt') {queryModifier=_queryModifier;}
if (e.ctrlKey && useKey === 'ctrl') {queryModifier=_queryModifier;}
if (e.metaKey && useKey === 'meta') {queryModifier=_queryModifier;}
if (e.shiftKey && useKey === 'shift') {queryModifier=_queryModifier;}
if (useKey === 'none') {queryModifier=_queryModifier;}
console.log(`queryModifier: ${queryModifier}`);
callback(queryModifier);
});
}
on(`clicked:reset_global_modifier`, () => {
const update={'global_modifier_number':''};
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
$20(selector).on(`click`, e => {
const roll = e.htmlAttributes.name.match(/^attr_(.*)_r$/)[1];
const _roll = (roll === 'sanity_points') ? 'sanity' : roll;
usedModifier(e,(queryModifier) =>{
console.log(`queryModifier: ${queryModifier}`);
const additionalParameters={}
if (arrays[`_editable_skills`].includes(_roll)){
const prefix_skill=_roll.slice(0,-2);
additionalParameters['editable_name']=`${_roll}_name`;
additionalParameters['editable_type']=prefix_skill.replace('_',' ');
}else{
const caps = (_roll === 'humint' || _roll === 'sigint') ? _roll.toUpperCase() : _roll.replace('_',' ')
additionalParameters['name']=caps.replace('_',' ');
}
const rollString=`${prefix_skill_roll} {{subheader=@{${roll}}}} `;
rollwithmodifiers(rollString,roll,queryModifier,additionalParameters);
});
});
$20(sanity_selector).on(`click`, e => {
const _input_name={};
var _parameters = [];
_input_name['success'] = 'sanity_loss_success';
_parameters.push(_input_name['success']);
_input_name['failure'] = 'sanity_loss_failure';
_parameters.push(_input_name['failure']);
getAttrs(['character_id','sanity_loss_success','sanity_loss_failure',
'sanity_type','violence_adapted','helplessness_adapted'], (values) => {
const charid=values['character_id'];
const sanity_loss_success=values['sanity_loss_success'] !== '' ? values['sanity_loss_success'] : 0;
const sanity_loss_failure=values['sanity_loss_failure'] !== '' ? values['sanity_loss_failure'] : 1;
const sanity_loss_type=values['sanity_type'];
console.log(sanity_loss_type);
var rollString = `${prefix_sanity_roll} {{header=@{character_name}}}`;
rollString += ` {{sanity_type=^{@{sanity_type}}}}`;
rollString += ` {{description=@{npc_description}}}`;
rollString += ` {{success_roll=[${sanity_loss_success}](~${charid}|sanity_loss_success)}}`;
rollString += ` {{failure_roll=[${sanity_loss_failure}](~${charid}|sanity_loss_failure)}}`;
console.info(sanity_loss_success);
console.info(sanity_loss_failure);
console.info('min roll:',minRoll(sanity_loss_success));
console.info('max roll:',maxRoll(sanity_loss_failure));
startRoll(rollString,results =>{
finishRoll(results.rollId)
});
});
});
$20('button.repeating_roll').on(`click`, e => {
const id = e.htmlAttributes.value;
const section = _repeating_sections[e.htmlAttributes.name.split('_')[1]];
usedModifier(e,(queryModifier) => {
var _input_names = {};
var _parameters = [];
setRepeatingParametersAndInputNames(section, id, _parameters, _input_names)
clicked_repeating_actions(section, _parameters, _input_names, queryModifier);
});
});
arrays['_sanity_loss'].forEach((attrName) => {
on(`clicked:${attrName}-action`, (eventInfo) => {
getAttrs([attrName],(values) => {
const sanloss=check_sanloss(values[attrName],attrName);
rollSanityDamages(sanloss,attrName);
});
});
});
_allrolls.forEach(roll => {
const _roll = (roll === 'sanity_points') ? 'sanity' : roll;
on(`clicked:${roll}-action`, (eventInfo) => {
const additionalParameters={}
if (arrays[`_editable_skills`].includes(_roll)){
const prefix_skill=_roll.slice(0,-2);
additionalParameters['editable_name']=`${_roll}_name`;
additionalParameters['editable_type']=prefix_skill.replace('_',' ');
}else{
const caps = (_roll === 'humint' || _roll === 'sigint') ? _roll.toUpperCase() : _roll.replace('_',' ')
additionalParameters['name']=caps.replace('_',' ');
}
const rollString=`${prefix_skill_roll} {{subheader=@{${roll}}}} `;
rollwithmodifiers(rollString,roll,_queryModifier,additionalParameters);
});
});
Object.entries(_repeating_sections).forEach(([attrName,section]) => {
on(`clicked:repeating_${section}:${attrName}-action`, (eventInfo) => {
const id = eventInfo.sourceAttribute.split('_')[2];
const queryModifier=_queryModifier;
var _input_names = {};
var _parameters =[];
setRepeatingParametersAndInputNames(section, id, _parameters, _input_names)
clicked_repeating_actions(section, _parameters, _input_names, queryModifier);
});
});
_ritual_damages.forEach((attrName) => {
_type_damages.forEach((type) => {
on(`clicked:repeating_rituals:${attrName}_${type}-action`, (eventInfo) => {
const id = eventInfo.sourceAttribute.split('_')[2];
const input_names = {};
var parameters =[];
input_names[`ritual_type`]=attrName;
parameters.push(`repeating_rituals_${id}_ritual_type`);
const repsecid = `repeating_rituals_${id}`;
input_names[`repsecid`]=repsecid;
input_names[`name`]=`${repsecid}_name`;
input_names[`damage_type`]=`${type}`;
input_names[`attack_or_heal`]=`${attrName}`;
parameters.push(input_names[`name`]);
setDamageRitualParametersAndInputNames(id, parameters, input_names);
clicked_repeating_damages(parameters,input_names,attrName);
});
});
});
_ritual_losses.forEach((attrName) => {
on(`clicked:repeating_rituals:${attrName}-action`, (eventInfo) => {
const id = eventInfo.sourceAttribute.split('_')[2];
const input_names = {};
var parameters =[];
input_names[`ritual_type`]=attrName;
parameters.push(`repeating_rituals_${id}_ritual_type`);
const repsecid = `repeating_rituals_${id}`;
input_names[`repsecid`]=repsecid;
input_names[`name`]=`${repsecid}_name`;
parameters.push(input_names[`name`]);
setRitualCostParametersAndInputNames(repsecid, parameters, input_names);
CurrentValues.forEach((attrName) => {
input_names[attrName]=`${attrName}`;
parameters.push(attrName);
});
clicked_repeating_rituals_cost(parameters,input_names);
});
});
_alldamages.forEach((attrName) => {
on(`clicked:repeating_weapons:${attrName}-action`, (eventInfo) => {
const id = eventInfo.sourceAttribute.split('_')[2];
var _input_names = {};
var _parameters =[];
setDamageParametersAndInputNames(id,attrName, _parameters, _input_names)
_input_names['rollName']=attrName;
clicked_repeating_damages(_parameters,_input_names);
});
});
// levelup character
on("clicked:levelup", () =>{
const copyarray=arrays['_skills']; // copy of the array containing all skills ranks
console.dir(copyarray);
getSectionIDs(`summary`, function(idarray) {
for(var i=0; i < idarray.length; i++) {
removeRepeatingRow("repeating_summary_" + idarray[i]);
}
});
const summary={}; // object to store the summary of the changes
const update={}; // object to update the attributes
const newrowattrs={}; // object to create a new row in the repeating_summary section
const named_skills = copyarray.map((sk) => `${sk}_name`);
const failed_skills = copyarray.map((sk) => `${sk}_fail`);
getAttrs(copyarray.concat(named_skills,failed_skills),(val)=>{
var newrowid;
var oldval=0;
var newval=0;
var name;
var var_rnd=0; // random variable of 1d4
copyarray.forEach( (sk) => {
if (val[`${sk}_fail`]=='on'){ //if the checkbox is checked
var_rnd=Math.ceil(Math.random() * 4); // generate a random number for each checked value (less number generated)
oldval=(parseInt(val[`${sk}`])||0);
newval=oldval+var_rnd;
name=val[`${sk}_name`];
summary[`${sk}`]=var_rnd; // how much the skill has changed 0-3
update[`${sk}`]=newval; // new value of the skill
update[`${sk}_fail`]='off'; // uncheck checkbox
newrowid = generateRowID();
newrowattrs['repeating_summary_' + newrowid + '_skillname'] = name;
newrowattrs['repeating_summary_' + newrowid + '_oldval'] = oldval;
newrowattrs['repeating_summary_' + newrowid + '_newval'] = newval;
}
});
});
getSectionIDs(`skills`, function(idarray) {
var rep_array=[];
var rep_rank=[];
var rep_name=[];
var rep_fail=[];
idarray.forEach((id) => {
rep_array.push(`repeating_skills_${id}`);
});
rep_rank=rep_array.map((sk) => `${sk}_rank`);
rep_name=rep_array.map((sk) => `${sk}_name`);
rep_fail=rep_array.map((sk) => `${sk}_fail`);
getAttrs(rep_rank.concat(rep_name,rep_fail),(val)=>{
var newrowid;
var oldval=0;
var newval=0;
var name;
var var_rnd=0; // random variable of 1d4
rep_array.forEach( (sk) => {
if (val[`${sk}_fail`]=='on'){ //if the checkbox is checked
var_rnd=Math.ceil(Math.random() * 4); // generate a random number for each checked value (less number generated)
oldval=(parseInt(val[`${sk}_rank`])||0);
newval=oldval+var_rnd;
name=val[`${sk}_name`];
summary[`${sk}`]=var_rnd; // how much the skill has changed 0-3
update[`${sk}_rank`]=newval; // new value of the skill
update[`${sk}_fail`]='off'; // uncheck checkbox
newrowid = generateRowID();
newrowattrs['repeating_summary_' + newrowid + '_skillname'] = name;
newrowattrs['repeating_summary_' + newrowid + '_oldval'] = oldval;
newrowattrs['repeating_summary_' + newrowid + '_newval'] = newval;
}
});
setAttrs(Object.assign(update,newrowattrs),{silent:false},()=>{
console.log('inside repeating section');
console.info(newrowattrs);
console.info(update);
});
});
});
});
arrays['_colored_derivative'].forEach(vitality => {
on(`change:${vitality}_points`, (eventInfo) => {
var value = parseInt(eventInfo.newValue) || 0;
value = (value < 0) ? 0 : value;
const maxval=`${vitality}_points_max`;
getAttrs([maxval], function(v) {
const max_val = parseInt(v[maxval]) || 0;
const low_val=2;
var update={};
update[`color_${vitality}`]='normal';
update[`${vitality}_modifier`]=0;
if (value > max_val) {
update[`color_${vitality}`]='extra';
}
if (value <= low_val) {
update[`color_${vitality}`]='low';
update[`${vitality}_modifier`]=1;
}
if (value == 0) {
update[`color_${vitality}`]='zero';
update[`${vitality}_modifier`]=2;
}
update[`${vitality}_points`]=value;
setAttrs(update, {silent:false}, ()=>{
console.info('update',update);
});
});
});
});
_skill_percent.forEach(_skill_sec_percent => {
const section=_skill_sec_percent.section;
const field=_skill_sec_percent.field;
const input=`repeating_${section}_${field}`;
const skillspan=`repeating_${section}_skill_span`;
on(`change:repeating_${section}:${field}`, () => {
getAttrs([input], (value) => {
const SkillPercent = value[`repeating_${section}_${field}`];
const isInLinkingForm=isValidLinkInput(SkillPercent);
const isInNumericalForm=isSkillNumber(SkillPercent);
const update={};
var skillname='';
if (isInLinkingForm===false && isInNumericalForm===false) {
update[input]=0;
if (section !=='skills') {update[skillspan]=update[input];}
setAttrs(update,{silent:true},()=>{
console.info('update',update);
});
}
if (isInNumericalForm){
const number= setMinMax(SkillPercent);
update[input]=number;
if (section !=='skills') {update[skillspan]=update[input];}
setAttrs(update,{silent:true},()=>{
console.info('update',update);
});
}
if (isInLinkingForm) {
const skill=cleanedSkill(SkillPercent);
skillname=skill;
getAttrs([`${skillname}`], (values) => {
const number= setMinMax(values[skillname]);
if (section !=='skills') {update[skillspan]=number;}
setAttrs(update,{silent:true},()=>{
console.info('update',update);
});
});
};
});
});
});
_only_number.forEach(_sect_object => {
const section=_sect_object.section;
const fields=_sect_object.fields;
if (Array.isArray(fields)) {
fields.forEach(field => {
const input=`repeating_${section}_${field}`;
on(`change:repeating_${section}:${field}`, () => {
getAttrs([input], (value) => {
const update={};
const number=setMinMax(value[input]);
update[input]=number;
setAttrs(update,{silent:true},()=>{
console.info('update',update);
});
});
});
});
};
});
_number_or_roll.forEach(_sect_object => {
const section=_sect_object.section;
const fields=_sect_object.fields;
if (Array.isArray(fields)) {
fields.forEach(field => {
const input=`repeating_${section}_${field}`;
on(`change:repeating_${section}:${field}`, () => {
getAttrs([input], (value) => {
const update={};
const number=parseRoll(value[input]);
update[input]=number;
setAttrs(update,{silent:true},()=>{
console.info('update',update);
});
});
});
});
};
});
arrays['_sanity_loss'].forEach(sanity => {
on(`change:${sanity}`, () => {
getAttrs([`${sanity}`], (v) => {
const value= parseRoll(v[sanity]);
const update={};
update[sanity]=value;
setAttrs(update, {silent:true}, () => {
console.info('update',update);
console.info(`Sanity points updated`);
});
});
});
});
_shotgun_or_blast_radius.forEach(main => {
other= _shotgun_or_blast_radius.filter(el => el == main);
on(`change:repeating_weapons:${main}`, (eventInfo) => {
id = eventInfo.sourceAttribute.split('_')[2];
const main_name=`repeating_weapons_${id}_${main}`;
const other_name=`repeating_weapons_${id}_${other}`;
const double_barrel_name=`repeating_weapons_${id}_hasDoubleBarrel`;
getAttrs([main_name,other_name], (values) => {
console.info(values);
const main_value=values[main_name]==='active' ? 1 : 0;
const update={};
if (main_value===1 ){
if (main==='shotgun'){
update[`repeating_weapons_${id}_blast_radius`]=0;
update[double_barrel_name]='active';
}else{
update[double_barrel_name]=0;
update[`repeating_weapons_${id}_shotgun`]=0;
}
}
if (main_value===0){
update[double_barrel_name]=0;
}
setAttrs(update,{silent:true},()=>{
console.info('update',update);
console.log('Shotgun or Blast Radius updated');
});
});
});
});
arrays['_settings_wp'].forEach(wp_setting => {
on(`change:${wp_setting}`, (eventInfo) => {
console.log('wp_setting changed:'+eventInfo.triggerName);
getAttrs(arrays['_settings_wp'].concat(arrays['_derived_modifiers']), (values) => {
var update = {};
if (values['mod_willpower_check'] === 'none'){
update[`low_willpower`] = 0;
update[`zero_willpower`] = 0;
}
if (values['mod_willpower_check'] === 'lowonly'){
update[`zero_willpower`] = 0;
update[`low_willpower`] = 1;
}
if (values['mod_willpower_check'] === 'all'){
update[`low_willpower`] = 1;
update[`zero_willpower`] = 1;
}
setAttrs(update, {silent:true}, () => {
console.info('update',update);
console.log('Willpower Settings updated');
});
});
});
});
on(`change:repeating_skills:rank`, (eventInfo) => {
const newValue = setMinMax(parseInt(eventInfo.newValue) || 0, 0, 99);
update={};
update[eventInfo.sourceAttribute]=newValue;
setAttrs(update,{silent:true},()=>{
console.info('update',update);
console.log('Repeating Skills updated on change');
});
});
Object.entries(_repeating_sections).forEach(([attrName,section]) => {
on(`change:repeating_${section}`, (eventInfo) => {
const id = eventInfo.sourceAttribute.split('_')[2];
changeRepeatingRolls(section,attrName,id);
});
});
// new function to compute san point max
on(`change:unnatural`, function(eventInfo) {
const newvalue = setMinMax(parseInt(eventInfo.newValue) || 0,0,99);
update={sanity_points_max: 99-newvalue, unnatural: newvalue};
setAttrs(update,{silent:true},()=>{
console.info('update',update);
console.log('Sanity points updated');
});
});
arrays['_stats'].forEach(stat => {
const stat_score = `${stat}_score`;
const _sanity_array=['sanity_points', 'breaking_point','initial_san'];
const _initial_hp=['initial_str','initial_con','initial_hp'];
on(`change:${stat_score}`, () => {
var update = {};
getAttrs(arrays['_stats'].concat(_sanity_array,_initial_hp,['unnatural'],arrays['_stats'].map(el=> `${el}_score`)), function(values) {
const stat_score_value=parseInt(values[stat_score],10) || 0;
statInfo=setStatScore(stat_score_value,stat);
InitializationFlags=getInitializationFlags(statInfo,values)
setInitialPower(update,values,statInfo,InitializationFlags);
setInitialHp(update,values,statInfo,InitializationFlags)
update[stat]=statInfo[`stat`];
update[stat_score]=statInfo[`score`];
Object.assign(update,InitializationFlags);
updateSkillSpanOnChange(statInfo[`name`],statInfo[`score`],update,'Stats')
});
});
});
on(`change:ritual_skill`, (eventInfo) => {
const value = skill_in_bounds(eventInfo.newValue);
var update = {};
console.log('ritual_skill:',value);
update['ritual_skill'] = value;
updateSkillSpanOnChange('ritual_skill',value,update,'Rituals');
});
// === Update skills on change
arrays['_skills'].forEach(skill => {
on(`change:${skill}`, (eventInfo) => {
const value= skill_in_bounds(eventInfo.newValue);
var update={};
update[skill]=value;
if (value !== _initial_skills[skill]) { update[`${skill}_visible`]=`visible`; }
updateSkillSpanOnChange(skill,value,update,'Skills')
});
});
on(`change:sanity_points`, () => {
updatebreakingpoints();
});
on(`change:breaking_point`, () => {
getAttrs(['breaking_point'], (values)=> {
const breaking_point = Math.max(0,parseInt(values.breaking_point, 10) || 0);
const update = {};
update['breaking_point_reset'] = breaking_point;
update['breaking_point']=breaking_point;
setAttrs(update, {silent:true}, () => {
});
});
});
on(`change:breaking_point_reset`,(eventInfo)=>{
const breaking_point_reset = parseInt(eventInfo.newValue, 10) || 0;
getAttrs(['breaking_point_reset'], (values)=> {
const breaking_point_reset = parseInt(values.breaking_point_reset, 10) || 0;
const update = {};
update['breaking_point_reset'] = Math.min(Math.max(0,breaking_point_reset),99);
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
});
on(`clicked:breaking_point_resets`, () => {
resetBreakingPoints();
});
on(`change:global_modifier_number`, () => {
getAttrs(['global_modifier_number'], (values) => {
const modifier = parseInt(values['global_modifier_number']) || 0;
const update = {global_modifier_number:modifier};
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
});
on(`change:repeating_skills remove:repeating_skills`, () => {
update_additionalskills();
});
on(`change:repeating_weapons:armor_piercing`, () => {
getAttrs(['repeating_weapons_armor_piercing'], (values) => {
const update = {};
update_armor_piercing(values.repeating_weapons_armor_piercing,update);
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
});
on(`change:repeating_weapons:ammo_total remove:repeating_weapons`, (values) => {
const ammo_total = Math.max(0,parseInt(values.newValue)||0);
const update = {};
update[`repeating_weapons_ammo_total`] = ammo_total;
update[`repeating_weapons_ammo`] = ammo_total;
update[`repeating_weapons_hasammo`] = ammo_total > 0 ? 'active' : '0';
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
on(`change:repeating_weapons:ammo`, (values) => {
const ammo = Math.max(0,parseInt(values.newValue)||0);
const update = {};
update[`repeating_weapons_ammo`] = ammo;
setAttrs(update, {silent:true}, () => {
console.info('update',update)
});
});
_bond_attributes.forEach(attrName => {
on(`change:repeating_bonds:${attrName}`, (eventInfo) => {
const update={};
getAttrs(_score_info, (values) => {
updatebondscore(values,update,attrName==='score');
setAttrs(update, {silent:true}, () => {
console.log('Bond color updated');
console.info(update);
});
});
});
});
on(`change:repeating_rituals`, (eventinfo) => {
const id = eventinfo.sourceAttribute.split('_')[2];
ritual_rolls_info(`repeating_rituals_${id}`);
});
arrays['_adaptation'].forEach(adaptation => {
on(`change:${adaptation}`, () => {
getAttrs([adaptation], (values) => {
console.log('values:',values);
const value=parseInt(values[adaptation]) || 0;
console.log('adaptation changed:'+value);
const update={};
update[`${adaptation}_adapted`]= value===2 ? 1 : 0;
setAttrs(update, {silent:true}, () => {
console.info('update',update);
update[`${adaptation}_adapted`] == 1 ? console.log(`${adaptation} adapted`) : console.log(`${adaptation} not adapted`);
});
});
});
});
on(`change:advanced_weapons`,()=>{
updateadvancedweapons()
});
on(`change:useKey`, () => {
getAttrs(['useKey'], (values) => {
const val = values['useKey'];
const update = {use_global_modifier:'inactive'};
if (val === 'global') {update['use_global_modifier']='active'};
console.log(`useKey: ${val}`);
setAttrs(update, {silent:true}, () => {
console.info('update',update);
});
});
});
// === Update repeating skills on change
on(`change:repeating_skills:rank`, function(eventInfo) {
const value = parseInt(eventInfo.newValue) || 0;
if (value < 0) {
setAttributes({[eventInfo.sourceAttribute]: 0}, false);
}
if (value > 99) {
setAttributes({[eventInfo.sourceAttribute]: 99}, false);
}
});
const update_armor_piercing = (value,update) => {
const armor_piercing_text = value;
const armor_piercing_number = parseInt(armor_piercing_text) || 0;
if (armor_piercing_text !== '') { update[`repeating_weapons_armor_piercing`] = armor_piercing_number; }
};
//= force the stats to be positive and the skills to be between 0 and 99
on(`sheet:opened`, () => {
// === Versioning
getAttrs(['version'], values => { versioning(parseFloat(values.version) || 1); });
changeBondButtonColorOnOpen();
initializeRolls();
});
const isJSONString = (string) => {
let json= {};
try {
json = JSON.parse(string);
} catch (e) {
console.info('it is not a JSON');
return false;
}
console.info(`string`,json)
return json;
}
const arrays_drop={
fields : [
"employer","profession",
"accounting","alertness","anthropology","archeology","art_1","art_1_name","art_2","art_2_name","artillery","athletics","bureaucracy",
"computer_science","craft_1","craft_1_name","craft_2","craft_2_name","criminology","demolitions","disguise","dodge","drive","firearms",
"first_aid","forensics","heavy_machinery","heavy_weapons","history","humint","law","medicine","melee_weapons","military_science_1",
"military_science_1_name","military_science_2","military_science_2_name","navigate","occult","persuade","pharmacy","pilot_1","pilot_1_name",
"pilot_2","pilot_2_name","psychotherapy","ride","science_1","science_1_name","science_1","science_2_name","search","sigint", "stealth","surgery",
"survival", "swim","unarmed_combat","unnatural",
"armor_and_gear","personal_details_and_notes","motivations","bond_number"],
visible: ["accounting","alertness","anthropology","archeology","art_1","art_1_name","art_2","art_2_name","artillery","athletics","bureaucracy",
"computer_science","craft_1","craft_2","criminology","demolitions","disguise","dodge","drive","firearms","first_aid","forensics","heavy_machinery",
"heavy_weapons","history","humint","law","medicine","melee_weapons","military_science_1", "military_science_2","navigate","occult","persuade","pharmacy","pilot_1",
"pilot_2","psychotherapy","ride","science_1","science_1","search","sigint","stealth","surgery",
"survival", "swim","unarmed_combat","unnatural"],
bond: ["name","bond_score"],
skill: ["name","rank"],
special_training:["name","skill_or_stat_used"],
weapon :["name", "skill_percent", "base_range", "damage", "armor_piercing", "lethality_percent", "ammo","ammo_total"],
rep: {bond: "repeating_bonds_",special: "repeating_special_",skill:"repeating_skills_",ritual:"repeating_rituals_",weapon:"repeating_weapons_"},
}
const dropAgent = (data) => {
const updateAttrs = {};
updateAttrs[`sheet_type`] = "pc";
// First of all reset skills and repeating sections for skills and abilities
resetBonds(updateAttrs);
resetSkills(updateAttrs);
resetAllRepeatingSkills(updateAttrs);
resetAllSpecialAbilities(updateAttrs);
console.log(`Agent Reset:`,updateAttrs);
// bonds
const special_trainings = isJSONString(data.repeated_special_trainings);
const rituals= isJSONString(data.repeating_rituals);
const weapons= isJSONString(data.repeating_weapons);
const repSkills= isJSONString(data.repeating_skills);
const dropfields= arrays_drop[`fields`];
const visible=arrays_drop['visible'];
console.log(`special_trainings: ${special_trainings}`);
console.log(`rituals: ${rituals}`);
console.log(`weapons: ${weapons}`);
console.log(`repSkills: ${repSkills}`);
if (repSkills){
for (const skill of repSkills){
let dRepSkills=dropRepSkills(skill);
Object.keys(dRepSkills).forEach(key => updateAttrs[key] = dRepSkills[key]);
}
}
if (special_trainings){
for (const special_training of special_trainings){
let dSpecialTraining=dropSpecialTraining(special_training);
Object.keys(dSpecialTraining).forEach(key => updateAttrs[key] = dSpecialTraining[key]);
}
}
/*
if (rituals){
for (const ritual of rituals){
let dRitual=dropRitual(ritual);
Object.keys(dRitual).forEach(key => updateAttrs[key] = dRitual[key]);
}
}
*/
if (weapons){
for (const weapon of weapons){
let dWeapons=dropWeapon(weapon);
Object.keys(dWeapons).forEach(key => updateAttrs[key] = dWeapons[key]);
}
}
console.info('drop fields:',dropfields);
for (const field of dropfields){
console.log(field);
console.log(data[field]);
if (data[field]){
if (field === "bond_number") {
for (i=0; i<data[field]; i++){
let UIDD = generateRowID();
let prefix=`${arrays_drop[`rep`][`bond`]}${UIDD}`;
updateAttrs[`${prefix}_name`] = `bond_${i}`;
updateAttrs[`${prefix}_test`] = `editable`;
}
}else if (data[field]==="name"){
updateAttrs[`profession`] = data[field];
}else{
updateAttrs[field] = data[field];
}
if (visible.includes(field)){
updateAttrs[`${field}_visible`]=`visible`;
}
}
}
console.info(`Agent:`,updateAttrs);
return updateAttrs;
}
const dropRepSkills = (data) => {
const updateAttrs = {};
let UIDD = generateRowID();
let prefix=`${arrays_drop[`rep`][`skill`]}${UIDD}`;
const dropskillfields=arrays_drop[`skill`];
dropskillfields.forEach(field =>{
updateAttrs[`${prefix}_${field}`] = data[field];
});
updateAttrs[`${prefix}_test`] = `editable`;
console.info(`repeating skills:`,updateAttrs);
return updateAttrs;
}
const dropSpecialTraining = (data) => {
const updateAttrs = {};
let UIDD = generateRowID();
var prefix=`${arrays_drop[`rep`][`special`]}${UIDD}`;
const dropspecialtrainingfields=arrays_drop[`special_training`];
dropspecialtrainingfields.forEach(field =>{
if (data[field]){
if (field === "skill_or_stat_used"){
let skillname=data[`skill_or_stat_used`].toLowerCase().replace(/ /g, "_");
updateAttrs[`${prefix}_skill_or_stat_used`] = `@{${skillname}}`;
}else{
updateAttrs[`${prefix}_${field}`] = data[field];
}
}
});
updateAttrs[`${prefix}_test`] = `editable`;
console.info(`special training:`, updateAttrs);
return updateAttrs;
}
/*
const dropRitual = (data) => {
const updateAttrs = {};
const UIDD = generateRowID();
const prefix=`repeating_rituals_${UIDD}`;
// to be updated when the format is decided
console.log(updateAttrs);
return updateAttrs;
}
const dropMonster = (data) => {
const updateAttrs = {};
updateAttrs[`sheet_type`] = "npc";
// to be updated when the format is decided
console.log(updateAttrs);
return updateAttrs;
}
*/
const dropWeapon = (data) => {
const updateAttrs = {};
let UIDD = generateRowID();
var prefix=`${arrays_drop[`rep`][`weapon`]}${UIDD}`;
const weaponfields=arrays_drop[`weapon`];
if (data.hasOwnProperty(weaponfields[2])==false){
console.warn(`weapon uses the repeating field format`);
data=isJSONString(data.repeating_weapons);
console.log(data);
}
updateAttrs[`${prefix}_test`] = 'editable';
for (const field of weaponfields){
if (data[field]){
if (field === "skill_percent"){
let skillname=cleanedSkill(data[field]);
console.info(skillname);
if (isSkillNumber(skillname)){
updateAttrs[`${prefix}_skill_percent`] = skillname;
}else if (isValidSkill(skillname)){
updateAttrs[`${prefix}_skill_percent`] = `@{${skillname}}`;
}else{
console.error(`skill not found: ${skillname}`);
}
}else{
updateAttrs[`${prefix}_${field}`] = data[field];
}
}
}
console.log(`weapon:`, updateAttrs);
return updateAttrs;
}
const getDropType = data => data.Category || false;
const handleDragandDrop = () => {
getAttrs(["drop_name","drop_data"], (v) => {
const {drop_name, drop_data} = v;
if (drop_name==="" || drop_data===""){return;}
const dropDataParsed =JSON.parse(drop_data);
const dropType = getDropType(dropDataParsed);
console.info(`drop type:`, dropType);
console.info('data:',dropDataParsed);
var updateAttrs = false;
if (dropType === "Agents"){
console.log("It's an Agent");
updateAttrs= dropAgent(dropDataParsed);
}
if (dropType === "Bonds"){
console.log("It's a Bond");
updateAttrs= dropBond(dropDataParsed);
}
if (dropType === "SpecialTrainings"){
console.log("It's an Special Training");
updateAttrs= dropSpecialTraining(dropDataParsed);
}
if (dropType === "Weapons"){
console.log("It's a Weapon");
updateAttrs= dropWeapon(dropDataParsed);
}
if (updateAttrs === false) {
updateAttrs = {...{drop_name:"", drop_data:"",drop_category:""}};
setAttrs(updateAttrs);
return console.warn("Drag and drop could not identify the type of drop");
}
if (typeof updateAttrs !== "object") {
updateAttrs = {...{drop_name:"", drop_data:"",drop_category:""}};
setAttrs(updateAttrs);
return console.warn("Drag and drop returned broken value");
}
const updateAttrsTot = {...updateAttrs, ...{drop_name:"", drop_data:"",drop_category:""}};
setAttrs(updateAttrsTot,{silent:false},()=>{
console.info("Dropped Values:",updateAttrsTot);
});
});
}
on("change:drop_data", (eventInfo) => {
const jsonData = JSON.parse(eventInfo.newValue);
console.log(jsonData);
handleDragandDrop();
// do something with data
});
const agent_info_to_get=['character_name','character_id','hit_points', 'willpower_points', 'sanity_points', 'strength_score', 'constitution_score'
, 'dexterity_score', 'intelligence_score', 'power_score', 'charisma_score', 'violence_adapted',
'helplessness_adapted','reached_breaking_point'];
on(`change:repeating_agents:name`, (eventInfo)=> {
const id = eventInfo.sourceAttribute.split(`_`)[2];
const repsecid = `repeating_agents_${id}`;
getAttrs([`${repsecid}_name`],(values)=> {
const update = {};
const character_identification = values[`${repsecid}_name`] !== undefined ? values[`${repsecid}_name`] : ``;
update_repeating_agents(update,repsecid,character_identification);
});
});
const not_numeric_pass= ['character_name','character_id'];
const adaptation_fields = ['violence_adapted','helplessness_adapted'];
const update_repeating_agents = (update,repsecid,character_identification) => {
var string = `&{template:pass-values}`;
//var string = `!`;
const rxGrab = /^0\[(.*)\]\s*$/;
agent_info_to_get.forEach((field)=>{
if (not_numeric_pass.includes(field)){
string += `{{${field}=[[0[@{${character_identification}|${field}}] ]]}}`;
}else{
string += `{{${field}=[[@{${character_identification}|${field}}]]}} `;
}
});
string+=`{{breaking_point=[[@{${character_identification}|breaking_point}]]}}`;
string+=`{{breaking_point_max=[[@{${character_identification}|breaking_point_max}]]}}`;
if (string === ``) {return;}
startRoll(string,(results)=>{
agent_info_to_get.forEach((field)=>{
if (not_numeric_pass.includes(field)){
update[`${repsecid}_${field}`] = results.results[field].expression.match(rxGrab)[1];
}else if (field === `reached_breaking_point`){
update[`${repsecid}_${field}`] = results.results[field].result==1 ? `yes` : `no`;
}else if (adaptation_fields.includes(field)){
update[`${repsecid}_${field}`] = results.results[field].result==1 ? `adapted` : `not adapted`;
}else{
update[`${repsecid}_${field}`] = results.results[field].result
}
});
setAttrs(update,{silent:true},()=>{
console.info('update',update);
console.log(`Updated ${repsecid} with ${character_identification}`);
});
finishRoll(results.rollId);
})
};
on(`sheet:opened clicked:update_agents`,()=>{
getAttrs([`sheet_type`],(values)=>{
if (values.sheet_type === `handler`){
getSectionIDs(`agents`,(ids)=>{
var repsecids=[];
ids.forEach((id)=>{
repsecids.push(`repeating_agents_${id}`);
});
// map repsecids to make it into an array containing for each repsecid <repsecid>_character_id and <repsecid>_name
getAttrs(
repsecids.flatMap(repsecid => [`${repsecid}_name`, `${repsecid}_character_id`]),
(values) => {
repsecids.forEach(repsecid => {
const update = {};
const character_identification = get_character_identification(values, repsecid);
if (character_identification !== ``) {
update_repeating_agents(update, repsecid, character_identification);
}
});
}
);
});
};
});
});
const get_character_identification= (values,repsecid) => {
// FUTURE: Cannot use character_id as a key for an attribute only for abilities in roll20
const char_id=``;// values[`${repsecid}_character_id`];
const char_name=values[`${repsecid}_name`];
return char_id !== `` ? char_id : char_name;
}
</script>