mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
8541 lines
497 KiB
HTML
8541 lines
497 KiB
HTML
|
||
<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 it’s 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 Bond’s box until the next Home scene ends." data-i18n-title="Check a damaged Bond’s box until the next Home scene ends." style="margin-left: 1rem;">Check a damaged Bond’s 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> |