mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
6613 lines
534 KiB
HTML
6613 lines
534 KiB
HTML
|
||
<button name="act_k-network-call" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_whisper" value="" type="hidden" title="@{whisper}"/>
|
||
<input name="attr_sheet_version" value="0" type="hidden" title="@{sheet_version}"/>
|
||
<input name="attr_sheet_state" value="settings" type="hidden" title="@{sheet_state}"/>
|
||
<input name="attr_collapsed" value="" type="hidden" title="@{collapsed}"/>
|
||
<div class="compendium-drop-target npcs">
|
||
<input name="attr_drop_name" accept="Name" value="" type="hidden" title="@{drop_name}"/>
|
||
<input name="attr_drop_data" accept="data" value="" type="hidden" title="@{drop_data}"/>
|
||
<main id="main"><!-- sectionName:blackbirds -->
|
||
<input name="attr_blackbirds_tab" value="nav-tabs-blackbirds--settings" type="hidden" title="@{blackbirds_tab}"/>
|
||
<div class="tabs tabs--blackbirds">
|
||
<nav class="tabs__header tabs--blackbirds__header">
|
||
<label class="input-label flip-select-container"><span class="input-label__text" data-i18n="flip to"></span>
|
||
<select class="input-label__input" name="attr_flip_to" title="@{flip_to}">
|
||
<option value="succeed" data-i18n="succeed">
|
||
</option>
|
||
<option value="normal" data-i18n="normal" selected="">
|
||
</option>
|
||
<option value="fail" data-i18n="fail">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<ul class="tabs__nav-list">
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--settings material-icons" name="act_nav-tabs-blackbirds--settings" data-container-button="blackbirds" data-button="settings" type="action" data-container-tab="blackbirds" data-tab="settings">settings
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--flock" name="act_nav-tabs-blackbirds--flock" data-container-button="blackbirds" data-button="flock" data-i18n="tabs-blackbirds-flock" type="action" data-container-tab="blackbirds" data-tab="flock">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--core" name="act_nav-tabs-blackbirds--core" data-container-button="blackbirds" data-button="core" data-i18n="tabs-blackbirds-core" type="action" data-container-tab="blackbirds" data-tab="core">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--combat" name="act_nav-tabs-blackbirds--combat" data-container-button="blackbirds" data-button="combat" data-i18n="tabs-blackbirds-combat" type="action" data-container-tab="blackbirds" data-tab="combat">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--patrons" name="act_nav-tabs-blackbirds--patrons" data-container-button="blackbirds" data-button="patrons" data-i18n="tabs-blackbirds-patrons" type="action" data-container-tab="blackbirds" data-tab="patrons">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--theurgy" name="act_nav-tabs-blackbirds--theurgy" data-container-button="blackbirds" data-button="theurgy" data-i18n="tabs-blackbirds-theurgy" type="action" data-container-tab="blackbirds" data-tab="theurgy">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--npc" name="act_nav-tabs-blackbirds--npc" data-container-button="blackbirds" data-button="npc" data-i18n="tabs-blackbirds-npc" type="action" data-container-tab="blackbirds" data-tab="npc">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--blackbirds__button tabs--blackbirds__button--advances" name="act_nav-tabs-blackbirds--advances" data-container-button="blackbirds" data-button="advances" data-i18n="tabs-blackbirds-advances" type="action" data-container-tab="blackbirds" data-tab="advances">
|
||
</button>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
<div class="tabs__body tabs--blackbirds__body">
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--settings flex-box flex-wrap half-gap" data-container-tab="blackbirds" data-tab="settings">
|
||
<label class="input-label"><span class="input-label__text" data-i18n="sheet type" role="heading" aria-level="5"></span>
|
||
<select class="input-label__input" name="attr_sheet_type" title="@{sheet_type}">
|
||
<option data-i18n="pc" value="pc" selected="">
|
||
</option>
|
||
<option data-i18n="npc" value="npc">
|
||
</option>
|
||
<option data-i18n="flock" value="flock">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label"><span class="input-label__text" data-i18n="has theurgy" role="heading" aria-level="5"></span>
|
||
<input class="blackbird-radio radio-diamond input-label__input" name="attr_has_theurgy" type="checkbox" value="1" title="@{has_theurgy}"/>
|
||
</label>
|
||
<label class="input-label"><span class="input-label__text" data-i18n="whisper rolls" role="heading" aria-level="5"></span>
|
||
<select class="input-label__input" name="attr_whisper" title="@{whisper}">
|
||
<option data-i18n="no" selected="" value="">
|
||
</option>
|
||
<option data-i18n="yes" value="/w gm ">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label"><span class="input-label__text" data-i18n="flock sheet" role="heading" aria-level="5"></span>
|
||
<input class="underlined input-label__input" name="attr_flock_sheet" type="text" title="@{flock_sheet}"/>
|
||
</label>
|
||
<div class="qualities-container">
|
||
<h3 class="grid-span-all" data-i18n="quality descriptions"></h3>
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-qualities" type="action">
|
||
</button>
|
||
<fieldset class="repeating_qualities">
|
||
<input class="underlined" name="attr_name" value="" type="text" title="@{repeating_qualities_$X_name}"/>
|
||
<div class="adaptive adaptive--text underlined"><span class="adaptive--text__span" name="attr_description" title="@{repeating_qualities_$X_description}"></span>
|
||
<textarea class="adaptive--text__textarea" name="attr_description" title="@{repeating_qualities_$X_description}"></textarea>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<button class="link-output grid-span-all" name="roll_marketplace" value="&{template:blackbirds} {{title=^{links}}} {{description=[DriveThruRPG](test)[Report Bugs](https://support.metamorphic-digital.com/)}}" data-i18n="buy blackbirds or report errors" type="roll">
|
||
</button>
|
||
</article>
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--flock" data-container-tab="blackbirds" data-tab="flock">
|
||
<input class="grid-span-all underlined" name="attr_character_name" type="text" title="@{character_name}"/>
|
||
<div class="headed-section fortune fortune-display">
|
||
<div class="headed-section__header">
|
||
<h3 data-i18n="fortune"></h3>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<label class="headed-section__content flex-box justify-center">
|
||
<input name="attr_fortune" type="number" title="@{fortune}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--odic-dice">
|
||
<div class="headed-section__header flex-box justify-center">
|
||
<button class="d-6 roller" name="roll_odic_dice" role="heading" aria-level="2" data-i18n="odic dice" value="@{odic_dice_action}" type="roll">
|
||
</button>
|
||
<button name="act_odic-dice-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_odic_dice_action" type="hidden" title="@{odic_dice_action}"/>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader flex-box justify-center"><span data-i18n="increased automatically when vitiation enacted."></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<label class="headed-section__content flex-box justify-center">
|
||
<input name="attr_odic_dice" value="" type="number" title="@{odic_dice}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section misfortune fortune-display">
|
||
<div class="headed-section__header">
|
||
<h3 data-i18n="misfortune"></h3>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<label class="headed-section__content flex-box justify-center">
|
||
<input name="attr_misfortune" type="number" title="@{misfortune}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="flock-members">
|
||
<h3 class="grid-span-all" data-i18n="flock members"></h3>
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-flock" type="action">
|
||
</button>
|
||
<fieldset class="repeating_flock">
|
||
<input class="underlined" name="attr_name" value="" type="text" title="@{repeating_flock_$X_name}"/>
|
||
</fieldset>
|
||
</div>
|
||
</article>
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--core" data-container-tab="blackbirds" data-tab="core">
|
||
<header class="character_info">
|
||
<div class="fate-fortune-container">
|
||
<div class="headed-section fortune fortune-display">
|
||
<div class="headed-section__header">
|
||
<h3 data-i18n="fortune"></h3>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<label class="headed-section__content flex-box justify-center">
|
||
<input name="attr_fortune" type="number" title="@{fortune}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<section class="headed-section section--fate">
|
||
<div class="headed-section__header section--fate__header">
|
||
<label class="input-label"><span class="input-label__text" data-i18n="accessible?"></span>
|
||
<input class="blackbird-radio radio-diamond input-label__input" name="attr_fate_accessible" type="checkbox" value="1" title="@{fate_accessible}"/>
|
||
</label>
|
||
<h2 data-i18n="fate"></h2>
|
||
<label class="input-label sizing-gutter"><span class="input-label__text" data-i18n="accessible?"></span>
|
||
<input class="blackbird-radio radio-diamond input-label__input" name="attr_fate_accessible" type="checkbox" value="1" title="@{fate_accessible}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content fate__content">
|
||
<div class="fate__flip-box flip-box">
|
||
<input class="collapse flip-control" name="attr_fate_spent" value="1" type="checkbox" title="@{fate_spent}" hidden="hidden" checked="checked"/>
|
||
<div class="fate__inner-flip content-grid flip-box__inner">
|
||
<div class="fate__tails content-grid flip-box__content flip-box__front">
|
||
<label class="pointer" data-i18n-title="Spend your Fate">
|
||
<input name="attr_fate_spent" checked="" hidden="" data-i18n-title="Spend your fate" value="1" type="checkbox" title="@{fate_spent}"/><img class="fate__coin" src="https://files.d20.io/images/351457541/e5ZwxeY0ADRi2Q8whkY8ug/original.png" data-i18n-alt="spendable fate icon"/>
|
||
</label>
|
||
</div>
|
||
<div class="fate__heads flip-box__content flip-box__back content-grid">
|
||
<label class="pointer" data-i18n-title="Reset your Fate">
|
||
<input name="attr_fate_spent" checked="" hidden="" data-i18n-title="Reset your Fate" value="1" type="checkbox" title="@{fate_spent}"/><img class="fate__coin" src="https://files.d20.io/images/351457542/qlfwb1C7oQrUeLOnkQy_Jw/original.png" data-i18n-alt="spent fate icon"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3 data-i18n="spendable"></h3>
|
||
</div>
|
||
<div class="headed-section__content fate__content">
|
||
<!-- Placeholder for flipping-->
|
||
<h3 data-i18n="spent"></h3>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<div class="character_info__details">
|
||
<div class="detail__inputs">
|
||
<label class="input-label character-name flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="character name"></span>
|
||
<input class="underlined input-label__input" name="attr_character_name" type="text" title="@{character_name}"/>
|
||
</label>
|
||
<label class="input-label ancestry flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="ancestry"></span>
|
||
<input class="underlined input-label__input" name="attr_ancestry" type="text" title="@{ancestry}"/>
|
||
</label>
|
||
<label class="input-label languages flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="languages"></span>
|
||
<input class="underlined input-label__input" name="attr_languages" type="text" title="@{languages}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section character-concept">
|
||
<div class="headed-section__header">
|
||
<h3 data-i18n="character concept"></h3>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content">
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_character_concept" title="@{character_concept}"></span>
|
||
<textarea class="adaptive--text__textarea" name="attr_character_concept" title="@{character_concept}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="headed-section allAttributes">
|
||
<div class="headed-section__header attributeHeader">
|
||
<h3 data-i18n="Primary Attributes"></h3>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--column">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--column">
|
||
<div class="headed-section__content cardHolder">
|
||
<div class="headed-section attCard">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader attCard_title">
|
||
<button class="d100 roller" name="roll_combat" data-i18n="combat" role="heading" aria-level="3" value="@{combat_action}" type="roll">
|
||
</button>
|
||
<button name="act_combat-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_combat_action" type="hidden" title="@{combat_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--row">
|
||
<div class="headed-section__content attCard_egg_col">
|
||
<label class="egg egg-base">
|
||
<input name="attr_combat" value="35" type="number" title="@{combat}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content attCard_radio attCard_info">
|
||
<div class="bonus_radios">
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_combat_bonus_1" type="checkbox" value="1" title="@{combat_bonus_1}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_combat_bonus_2" type="checkbox" value="1" title="@{combat_bonus_2}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_combat_bonus_3" type="checkbox" value="1" title="@{combat_bonus_3}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_combat_bonus_4" type="checkbox" value="1" title="@{combat_bonus_4}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_combat_bonus_5" type="checkbox" value="1" title="@{combat_bonus_5}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_combat_bonus_6" type="checkbox" value="1" title="@{combat_bonus_6}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content attCard_mod attCard_info">
|
||
<div class="att_abil_mod"><span class="info" data-i18n="Unlocked?"></span>
|
||
<div class="att_ability_inputs">
|
||
<input class="unlocked blackbird-radio radio-diamond" name="attr_combat_unlocked" type="checkbox" value="1" title="@{combat_unlocked}"/>
|
||
<input class="ability_mod" name="attr_combat_mod" value="3" type="number" title="@{combat_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section attCard">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader attCard_title">
|
||
<button class="d100 roller" name="roll_brawn" data-i18n="brawn" role="heading" aria-level="3" value="@{brawn_action}" type="roll">
|
||
</button>
|
||
<button name="act_brawn-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_brawn_action" type="hidden" title="@{brawn_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--row">
|
||
<div class="headed-section__content attCard_egg_col">
|
||
<label class="egg egg-base">
|
||
<input name="attr_brawn" value="35" type="number" title="@{brawn}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content attCard_radio attCard_info">
|
||
<div class="bonus_radios">
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_brawn_bonus_1" type="checkbox" value="1" title="@{brawn_bonus_1}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_brawn_bonus_2" type="checkbox" value="1" title="@{brawn_bonus_2}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_brawn_bonus_3" type="checkbox" value="1" title="@{brawn_bonus_3}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_brawn_bonus_4" type="checkbox" value="1" title="@{brawn_bonus_4}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_brawn_bonus_5" type="checkbox" value="1" title="@{brawn_bonus_5}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_brawn_bonus_6" type="checkbox" value="1" title="@{brawn_bonus_6}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content attCard_mod attCard_info">
|
||
<div class="att_abil_mod"><span class="info" data-i18n="Unlocked?"></span>
|
||
<div class="att_ability_inputs">
|
||
<input class="unlocked blackbird-radio radio-diamond" name="attr_brawn_unlocked" type="checkbox" value="1" title="@{brawn_unlocked}"/>
|
||
<input class="ability_mod" name="attr_brawn_mod" value="3" type="number" title="@{brawn_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section attCard">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader attCard_title">
|
||
<button class="d100 roller" name="roll_agility" data-i18n="agility" role="heading" aria-level="3" value="@{agility_action}" type="roll">
|
||
</button>
|
||
<button name="act_agility-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_agility_action" type="hidden" title="@{agility_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--row">
|
||
<div class="headed-section__content attCard_egg_col">
|
||
<label class="egg egg-base">
|
||
<input name="attr_agility" value="35" type="number" title="@{agility}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content attCard_radio attCard_info">
|
||
<div class="bonus_radios">
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_agility_bonus_1" type="checkbox" value="1" title="@{agility_bonus_1}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_agility_bonus_2" type="checkbox" value="1" title="@{agility_bonus_2}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_agility_bonus_3" type="checkbox" value="1" title="@{agility_bonus_3}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_agility_bonus_4" type="checkbox" value="1" title="@{agility_bonus_4}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_agility_bonus_5" type="checkbox" value="1" title="@{agility_bonus_5}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_agility_bonus_6" type="checkbox" value="1" title="@{agility_bonus_6}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content attCard_mod attCard_info">
|
||
<div class="att_abil_mod"><span class="info" data-i18n="Unlocked?"></span>
|
||
<div class="att_ability_inputs">
|
||
<input class="unlocked blackbird-radio radio-diamond" name="attr_agility_unlocked" type="checkbox" value="1" title="@{agility_unlocked}"/>
|
||
<input class="ability_mod" name="attr_agility_mod" value="3" type="number" title="@{agility_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section attCard">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader attCard_title">
|
||
<button class="d100 roller" name="roll_perception" data-i18n="perception" role="heading" aria-level="3" value="@{perception_action}" type="roll">
|
||
</button>
|
||
<button name="act_perception-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_perception_action" type="hidden" title="@{perception_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--row">
|
||
<div class="headed-section__content attCard_egg_col">
|
||
<label class="egg egg-base">
|
||
<input name="attr_perception" value="35" type="number" title="@{perception}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content attCard_radio attCard_info">
|
||
<div class="bonus_radios">
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_perception_bonus_1" type="checkbox" value="1" title="@{perception_bonus_1}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_perception_bonus_2" type="checkbox" value="1" title="@{perception_bonus_2}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_perception_bonus_3" type="checkbox" value="1" title="@{perception_bonus_3}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_perception_bonus_4" type="checkbox" value="1" title="@{perception_bonus_4}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_perception_bonus_5" type="checkbox" value="1" title="@{perception_bonus_5}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_perception_bonus_6" type="checkbox" value="1" title="@{perception_bonus_6}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content attCard_mod attCard_info">
|
||
<div class="att_abil_mod"><span class="info" data-i18n="Unlocked?"></span>
|
||
<div class="att_ability_inputs">
|
||
<input class="unlocked blackbird-radio radio-diamond" name="attr_perception_unlocked" type="checkbox" value="1" title="@{perception_unlocked}"/>
|
||
<input class="ability_mod" name="attr_perception_mod" value="3" type="number" title="@{perception_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section attCard">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader attCard_title">
|
||
<button class="d100 roller" name="roll_intelligence" data-i18n="intelligence" role="heading" aria-level="3" value="@{intelligence_action}" type="roll">
|
||
</button>
|
||
<button name="act_intelligence-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_intelligence_action" type="hidden" title="@{intelligence_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--row">
|
||
<div class="headed-section__content attCard_egg_col">
|
||
<label class="egg egg-base">
|
||
<input name="attr_intelligence" value="35" type="number" title="@{intelligence}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content attCard_radio attCard_info">
|
||
<div class="bonus_radios">
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_intelligence_bonus_1" type="checkbox" value="1" title="@{intelligence_bonus_1}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_intelligence_bonus_2" type="checkbox" value="1" title="@{intelligence_bonus_2}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_intelligence_bonus_3" type="checkbox" value="1" title="@{intelligence_bonus_3}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_intelligence_bonus_4" type="checkbox" value="1" title="@{intelligence_bonus_4}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_intelligence_bonus_5" type="checkbox" value="1" title="@{intelligence_bonus_5}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_intelligence_bonus_6" type="checkbox" value="1" title="@{intelligence_bonus_6}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content attCard_mod attCard_info">
|
||
<div class="att_abil_mod"><span class="info" data-i18n="Unlocked?"></span>
|
||
<div class="att_ability_inputs">
|
||
<input class="unlocked blackbird-radio radio-diamond" name="attr_intelligence_unlocked" type="checkbox" value="1" title="@{intelligence_unlocked}"/>
|
||
<input class="ability_mod" name="attr_intelligence_mod" value="3" type="number" title="@{intelligence_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section attCard">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader attCard_title">
|
||
<button class="d100 roller" name="roll_willpower" data-i18n="willpower" role="heading" aria-level="3" value="@{willpower_action}" type="roll">
|
||
</button>
|
||
<button name="act_willpower-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_willpower_action" type="hidden" title="@{willpower_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--row">
|
||
<div class="headed-section__content attCard_egg_col">
|
||
<label class="egg egg-base">
|
||
<input name="attr_willpower" value="35" type="number" title="@{willpower}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content attCard_radio attCard_info">
|
||
<div class="bonus_radios">
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_willpower_bonus_1" type="checkbox" value="1" title="@{willpower_bonus_1}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_willpower_bonus_2" type="checkbox" value="1" title="@{willpower_bonus_2}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_willpower_bonus_3" type="checkbox" value="1" title="@{willpower_bonus_3}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_willpower_bonus_4" type="checkbox" value="1" title="@{willpower_bonus_4}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_willpower_bonus_5" type="checkbox" value="1" title="@{willpower_bonus_5}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_willpower_bonus_6" type="checkbox" value="1" title="@{willpower_bonus_6}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content attCard_mod attCard_info">
|
||
<div class="att_abil_mod"><span class="info" data-i18n="Unlocked?"></span>
|
||
<div class="att_ability_inputs">
|
||
<input class="unlocked blackbird-radio radio-diamond" name="attr_willpower_unlocked" type="checkbox" value="1" title="@{willpower_unlocked}"/>
|
||
<input class="ability_mod" name="attr_willpower_mod" value="3" type="number" title="@{willpower_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section attCard">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--none headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader attCard_title">
|
||
<button class="d100 roller" name="roll_fellowship" data-i18n="fellowship" role="heading" aria-level="3" value="@{fellowship_action}" type="roll">
|
||
</button>
|
||
<button name="act_fellowship-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_fellowship_action" type="hidden" title="@{fellowship_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--none headed-section__content-area--row">
|
||
<div class="headed-section__content attCard_egg_col">
|
||
<label class="egg egg-base">
|
||
<input name="attr_fellowship" value="35" type="number" title="@{fellowship}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content attCard_radio attCard_info">
|
||
<div class="bonus_radios">
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_fellowship_bonus_1" type="checkbox" value="1" title="@{fellowship_bonus_1}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_fellowship_bonus_2" type="checkbox" value="1" title="@{fellowship_bonus_2}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_fellowship_bonus_3" type="checkbox" value="1" title="@{fellowship_bonus_3}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_fellowship_bonus_4" type="checkbox" value="1" title="@{fellowship_bonus_4}"/>
|
||
</div>
|
||
<div class="row_div">
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_fellowship_bonus_5" type="checkbox" value="1" title="@{fellowship_bonus_5}"/>
|
||
<input class="bonus blackbird-radio radio-egg" name="attr_fellowship_bonus_6" type="checkbox" value="1" title="@{fellowship_bonus_6}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content attCard_mod attCard_info">
|
||
<div class="att_abil_mod"><span class="info" data-i18n="Unlocked?"></span>
|
||
<div class="att_ability_inputs">
|
||
<input class="unlocked blackbird-radio radio-diamond" name="attr_fellowship_unlocked" type="checkbox" value="1" title="@{fellowship_unlocked}"/>
|
||
<input class="ability_mod" name="attr_fellowship_mod" value="3" type="number" title="@{fellowship_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<section class="headed-section section--skills">
|
||
<div class="headed-section__header skills--header">
|
||
<h2 data-i18n="skills"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader section--skills__normal">
|
||
<div class="gutter"></div><span>+10%</span><span>+20%</span><span>+30%</span>
|
||
</div>
|
||
<div class="headed-section__subheader section--skills__unlocked"><span data-i18n="unlocked"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content combat section--skills__group">
|
||
<h3 class="section--skills__attribute-header" data-i18n="combat"></h3>
|
||
<div class="headed-section skill--block">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--skills__normal">
|
||
<button class="d100 capitalize roller" name="roll_melee" data-i18n="melee" value="@{melee_action}" type="roll">
|
||
</button>
|
||
<button name="act_melee-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_melee_action" type="hidden" title="@{melee_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_melee_percentage" type="checkbox" value="10" affects='["parry"]' title="@{melee_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_melee_percentage" type="checkbox" value="20" affects='["parry"]' title="@{melee_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_melee_percentage" type="checkbox" value="30" affects='["parry"]' title="@{melee_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_ranged" data-i18n="ranged" value="@{ranged_action}" type="roll">
|
||
</button>
|
||
<button name="act_ranged-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_ranged_action" type="hidden" title="@{ranged_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_ranged_percentage" type="checkbox" value="10" title="@{ranged_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_ranged_percentage" type="checkbox" value="20" title="@{ranged_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_ranged_percentage" type="checkbox" value="30" title="@{ranged_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_warfare" data-i18n="warfare" value="@{warfare_action}" type="roll">
|
||
</button>
|
||
<button name="act_warfare-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_warfare_action" type="hidden" title="@{warfare_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_warfare_percentage" type="checkbox" value="10" title="@{warfare_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_warfare_percentage" type="checkbox" value="20" title="@{warfare_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_warfare_percentage" type="checkbox" value="30" title="@{warfare_percentage}"/>
|
||
</div>
|
||
<div class="headed-section__content section--skills__unlocked">
|
||
<input class="blackbird-radio radio-diamond" name="attr_melee_unlocked" type="checkbox" value="1" title="@{melee_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_ranged_unlocked" type="checkbox" value="1" title="@{ranged_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_warfare_unlocked" type="checkbox" value="1" title="@{warfare_unlocked}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content brawn section--skills__group">
|
||
<h3 class="section--skills__attribute-header" data-i18n="brawn"></h3>
|
||
<div class="headed-section skill--block">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--skills__normal">
|
||
<button class="d100 capitalize roller" name="roll_athletics" data-i18n="athletics" value="@{athletics_action}" type="roll">
|
||
</button>
|
||
<button name="act_athletics-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_athletics_action" type="hidden" title="@{athletics_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_athletics_percentage" type="checkbox" value="10" title="@{athletics_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_athletics_percentage" type="checkbox" value="20" title="@{athletics_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_athletics_percentage" type="checkbox" value="30" title="@{athletics_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_intimidate" data-i18n="intimidate" value="@{intimidate_action}" type="roll">
|
||
</button>
|
||
<button name="act_intimidate-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_intimidate_action" type="hidden" title="@{intimidate_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_intimidate_percentage" type="checkbox" value="10" title="@{intimidate_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_intimidate_percentage" type="checkbox" value="20" title="@{intimidate_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_intimidate_percentage" type="checkbox" value="30" title="@{intimidate_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_toughness" data-i18n="toughness" value="@{toughness_action}" type="roll">
|
||
</button>
|
||
<button name="act_toughness-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_toughness_action" type="hidden" title="@{toughness_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_toughness_percentage" type="checkbox" value="10" title="@{toughness_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_toughness_percentage" type="checkbox" value="20" title="@{toughness_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_toughness_percentage" type="checkbox" value="30" title="@{toughness_percentage}"/>
|
||
</div>
|
||
<div class="headed-section__content section--skills__unlocked">
|
||
<input class="blackbird-radio radio-diamond" name="attr_athletics_unlocked" type="checkbox" value="1" title="@{athletics_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_intimidate_unlocked" type="checkbox" value="1" title="@{intimidate_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_toughness_unlocked" type="checkbox" value="1" title="@{toughness_unlocked}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content agility section--skills__group">
|
||
<h3 class="section--skills__attribute-header" data-i18n="agility"></h3>
|
||
<div class="headed-section skill--block">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--skills__normal">
|
||
<button class="d100 capitalize roller" name="roll_coordination" data-i18n="coordination" value="@{coordination_action}" type="roll">
|
||
</button>
|
||
<button name="act_coordination-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_coordination_action" type="hidden" title="@{coordination_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_coordination_percentage" type="checkbox" value="10" affects='["dodge"]' title="@{coordination_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_coordination_percentage" type="checkbox" value="20" affects='["dodge"]' title="@{coordination_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_coordination_percentage" type="checkbox" value="30" affects='["dodge"]' title="@{coordination_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_handle_vehicle" data-i18n="handle vehicle" value="@{handle_vehicle_action}" type="roll">
|
||
</button>
|
||
<button name="act_handle-vehicle-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_handle_vehicle_action" type="hidden" title="@{handle_vehicle_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_handle_vehicle_percentage" type="checkbox" value="10" title="@{handle_vehicle_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_handle_vehicle_percentage" type="checkbox" value="20" title="@{handle_vehicle_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_handle_vehicle_percentage" type="checkbox" value="30" title="@{handle_vehicle_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_skuldiggery" data-i18n="skuldiggery" value="@{skuldiggery_action}" type="roll">
|
||
</button>
|
||
<button name="act_skuldiggery-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_skuldiggery_action" type="hidden" title="@{skuldiggery_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_skuldiggery_percentage" type="checkbox" value="10" title="@{skuldiggery_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_skuldiggery_percentage" type="checkbox" value="20" title="@{skuldiggery_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_skuldiggery_percentage" type="checkbox" value="30" title="@{skuldiggery_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_stealth" data-i18n="stealth" value="@{stealth_action}" type="roll">
|
||
</button>
|
||
<button name="act_stealth-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_stealth_action" type="hidden" title="@{stealth_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_stealth_percentage" type="checkbox" value="10" title="@{stealth_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_stealth_percentage" type="checkbox" value="20" title="@{stealth_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_stealth_percentage" type="checkbox" value="30" title="@{stealth_percentage}"/>
|
||
</div>
|
||
<div class="headed-section__content section--skills__unlocked">
|
||
<input class="blackbird-radio radio-diamond" name="attr_coordination_unlocked" type="checkbox" value="1" title="@{coordination_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_handle_vehicle_unlocked" type="checkbox" value="1" title="@{handle_vehicle_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_skuldiggery_unlocked" type="checkbox" value="1" title="@{skuldiggery_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_stealth_unlocked" type="checkbox" value="1" title="@{stealth_unlocked}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content perception section--skills__group">
|
||
<h3 class="section--skills__attribute-header" data-i18n="perception"></h3>
|
||
<div class="headed-section skill--block">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--skills__normal">
|
||
<button class="d100 capitalize roller" name="roll_awareness" data-i18n="awareness" value="@{awareness_action}" type="roll">
|
||
</button>
|
||
<button name="act_awareness-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_awareness_action" type="hidden" title="@{awareness_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_awareness_percentage" type="checkbox" value="10" title="@{awareness_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_awareness_percentage" type="checkbox" value="20" title="@{awareness_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_awareness_percentage" type="checkbox" value="30" title="@{awareness_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_eavesdrop" data-i18n="eavesdrop" value="@{eavesdrop_action}" type="roll">
|
||
</button>
|
||
<button name="act_eavesdrop-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_eavesdrop_action" type="hidden" title="@{eavesdrop_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_eavesdrop_percentage" type="checkbox" value="10" title="@{eavesdrop_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_eavesdrop_percentage" type="checkbox" value="20" title="@{eavesdrop_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_eavesdrop_percentage" type="checkbox" value="30" title="@{eavesdrop_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_scrutinize" data-i18n="scrutinize" value="@{scrutinize_action}" type="roll">
|
||
</button>
|
||
<button name="act_scrutinize-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_scrutinize_action" type="hidden" title="@{scrutinize_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_scrutinize_percentage" type="checkbox" value="10" title="@{scrutinize_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_scrutinize_percentage" type="checkbox" value="20" title="@{scrutinize_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_scrutinize_percentage" type="checkbox" value="30" title="@{scrutinize_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_survival" data-i18n="survival" value="@{survival_action}" type="roll">
|
||
</button>
|
||
<button name="act_survival-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_survival_action" type="hidden" title="@{survival_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_survival_percentage" type="checkbox" value="10" title="@{survival_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_survival_percentage" type="checkbox" value="20" title="@{survival_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_survival_percentage" type="checkbox" value="30" title="@{survival_percentage}"/>
|
||
</div>
|
||
<div class="headed-section__content section--skills__unlocked">
|
||
<input class="blackbird-radio radio-diamond" name="attr_awareness_unlocked" type="checkbox" value="1" title="@{awareness_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_eavesdrop_unlocked" type="checkbox" value="1" title="@{eavesdrop_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_scrutinize_unlocked" type="checkbox" value="1" title="@{scrutinize_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_survival_unlocked" type="checkbox" value="1" title="@{survival_unlocked}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content intelligence section--skills__group">
|
||
<h3 class="section--skills__attribute-header" data-i18n="intelligence"></h3>
|
||
<div class="headed-section skill--block">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--skills__normal">
|
||
<button class="d100 capitalize roller" name="roll_education" data-i18n="education" value="@{education_action}" type="roll">
|
||
</button>
|
||
<button name="act_education-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_education_action" type="hidden" title="@{education_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_education_percentage" type="checkbox" value="10" title="@{education_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_education_percentage" type="checkbox" value="20" title="@{education_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_education_percentage" type="checkbox" value="30" title="@{education_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_folklore" data-i18n="folklore" value="@{folklore_action}" type="roll">
|
||
</button>
|
||
<button name="act_folklore-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_folklore_action" type="hidden" title="@{folklore_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_folklore_percentage" type="checkbox" value="10" title="@{folklore_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_folklore_percentage" type="checkbox" value="20" title="@{folklore_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_folklore_percentage" type="checkbox" value="30" title="@{folklore_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_gamble" data-i18n="gamble" value="@{gamble_action}" type="roll">
|
||
</button>
|
||
<button name="act_gamble-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_gamble_action" type="hidden" title="@{gamble_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_gamble_percentage" type="checkbox" value="10" title="@{gamble_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_gamble_percentage" type="checkbox" value="20" title="@{gamble_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_gamble_percentage" type="checkbox" value="30" title="@{gamble_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_heal" data-i18n="heal" value="@{heal_action}" type="roll">
|
||
</button>
|
||
<button name="act_heal-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_heal_action" type="hidden" title="@{heal_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_heal_percentage" type="checkbox" value="10" title="@{heal_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_heal_percentage" type="checkbox" value="20" title="@{heal_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_heal_percentage" type="checkbox" value="30" title="@{heal_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_navigation" data-i18n="navigation" value="@{navigation_action}" type="roll">
|
||
</button>
|
||
<button name="act_navigation-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_navigation_action" type="hidden" title="@{navigation_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_navigation_percentage" type="checkbox" value="10" title="@{navigation_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_navigation_percentage" type="checkbox" value="20" title="@{navigation_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_navigation_percentage" type="checkbox" value="30" title="@{navigation_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_strategy" data-i18n="strategy" value="@{strategy_action}" type="roll">
|
||
</button>
|
||
<button name="act_strategy-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_strategy_action" type="hidden" title="@{strategy_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_strategy_percentage" type="checkbox" value="10" title="@{strategy_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_strategy_percentage" type="checkbox" value="20" title="@{strategy_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_strategy_percentage" type="checkbox" value="30" title="@{strategy_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_wortcunning" data-i18n="wortcunning" value="@{wortcunning_action}" type="roll">
|
||
</button>
|
||
<button name="act_wortcunning-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_wortcunning_action" type="hidden" title="@{wortcunning_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_wortcunning_percentage" type="checkbox" value="10" title="@{wortcunning_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_wortcunning_percentage" type="checkbox" value="20" title="@{wortcunning_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_wortcunning_percentage" type="checkbox" value="30" title="@{wortcunning_percentage}"/>
|
||
</div>
|
||
<div class="headed-section__content section--skills__unlocked">
|
||
<input class="blackbird-radio radio-diamond" name="attr_education_unlocked" type="checkbox" value="1" title="@{education_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_folklore_unlocked" type="checkbox" value="1" title="@{folklore_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_gamble_unlocked" type="checkbox" value="1" title="@{gamble_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_heal_unlocked" type="checkbox" value="1" title="@{heal_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_navigation_unlocked" type="checkbox" value="1" title="@{navigation_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_strategy_unlocked" type="checkbox" value="1" title="@{strategy_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_wortcunning_unlocked" type="checkbox" value="1" title="@{wortcunning_unlocked}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content willpower section--skills__group">
|
||
<h3 class="section--skills__attribute-header" data-i18n="willpower"></h3>
|
||
<div class="headed-section skill--block">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--skills__normal">
|
||
<button class="d100 capitalize roller" name="roll_odweft" data-i18n="odweft" value="@{odweft_action}" type="roll">
|
||
</button>
|
||
<button name="act_odweft-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_odweft_action" type="hidden" title="@{odweft_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_odweft_percentage" type="checkbox" value="10" title="@{odweft_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_odweft_percentage" type="checkbox" value="20" title="@{odweft_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_odweft_percentage" type="checkbox" value="30" title="@{odweft_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_resolve" data-i18n="resolve" value="@{resolve_action}" type="roll">
|
||
</button>
|
||
<button name="act_resolve-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_resolve_action" type="hidden" title="@{resolve_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_resolve_percentage" type="checkbox" value="10" title="@{resolve_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_resolve_percentage" type="checkbox" value="20" title="@{resolve_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_resolve_percentage" type="checkbox" value="30" title="@{resolve_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_tradecraft" data-i18n="tradecraft" value="@{tradecraft_action}" type="roll">
|
||
</button>
|
||
<button name="act_tradecraft-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_tradecraft_action" type="hidden" title="@{tradecraft_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_tradecraft_percentage" type="checkbox" value="10" title="@{tradecraft_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_tradecraft_percentage" type="checkbox" value="20" title="@{tradecraft_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_tradecraft_percentage" type="checkbox" value="30" title="@{tradecraft_percentage}"/>
|
||
</div>
|
||
<div class="headed-section__content section--skills__unlocked">
|
||
<input class="blackbird-radio radio-diamond" name="attr_odweft_unlocked" type="checkbox" value="1" title="@{odweft_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_resolve_unlocked" type="checkbox" value="1" title="@{resolve_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_tradecraft_unlocked" type="checkbox" value="1" title="@{tradecraft_unlocked}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content fellowship section--skills__group">
|
||
<h3 class="section--skills__attribute-header" data-i18n="fellowship"></h3>
|
||
<div class="headed-section skill--block">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--skills__normal">
|
||
<button class="d100 capitalize roller" name="roll_bargain" data-i18n="bargain" value="@{bargain_action}" type="roll">
|
||
</button>
|
||
<button name="act_bargain-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_bargain_action" type="hidden" title="@{bargain_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_bargain_percentage" type="checkbox" value="10" title="@{bargain_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_bargain_percentage" type="checkbox" value="20" title="@{bargain_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_bargain_percentage" type="checkbox" value="30" title="@{bargain_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_charm" data-i18n="charm" value="@{charm_action}" type="roll">
|
||
</button>
|
||
<button name="act_charm-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_charm_action" type="hidden" title="@{charm_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_charm_percentage" type="checkbox" value="10" title="@{charm_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_charm_percentage" type="checkbox" value="20" title="@{charm_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_charm_percentage" type="checkbox" value="30" title="@{charm_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_disguise" data-i18n="disguise" value="@{disguise_action}" type="roll">
|
||
</button>
|
||
<button name="act_disguise-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_disguise_action" type="hidden" title="@{disguise_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_disguise_percentage" type="checkbox" value="10" title="@{disguise_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_disguise_percentage" type="checkbox" value="20" title="@{disguise_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_disguise_percentage" type="checkbox" value="30" title="@{disguise_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_guile" data-i18n="guile" value="@{guile_action}" type="roll">
|
||
</button>
|
||
<button name="act_guile-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_guile_action" type="hidden" title="@{guile_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_guile_percentage" type="checkbox" value="10" title="@{guile_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_guile_percentage" type="checkbox" value="20" title="@{guile_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_guile_percentage" type="checkbox" value="30" title="@{guile_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_handle_animal" data-i18n="handle animal" value="@{handle_animal_action}" type="roll">
|
||
</button>
|
||
<button name="act_handle-animal-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_handle_animal_action" type="hidden" title="@{handle_animal_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_handle_animal_percentage" type="checkbox" value="10" title="@{handle_animal_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_handle_animal_percentage" type="checkbox" value="20" title="@{handle_animal_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_handle_animal_percentage" type="checkbox" value="30" title="@{handle_animal_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_leadership" data-i18n="leadership" value="@{leadership_action}" type="roll">
|
||
</button>
|
||
<button name="act_leadership-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_leadership_action" type="hidden" title="@{leadership_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_leadership_percentage" type="checkbox" value="10" title="@{leadership_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_leadership_percentage" type="checkbox" value="20" title="@{leadership_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_leadership_percentage" type="checkbox" value="30" title="@{leadership_percentage}"/>
|
||
<button class="d100 capitalize roller" name="roll_rumor" data-i18n="rumor" value="@{rumor_action}" type="roll">
|
||
</button>
|
||
<button name="act_rumor-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_rumor_action" type="hidden" title="@{rumor_action}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_rumor_percentage" type="checkbox" value="10" title="@{rumor_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_rumor_percentage" type="checkbox" value="20" title="@{rumor_percentage}"/>
|
||
<input class="blackbird-radio radio-circle" name="attr_rumor_percentage" type="checkbox" value="30" title="@{rumor_percentage}"/>
|
||
</div>
|
||
<div class="headed-section__content section--skills__unlocked">
|
||
<input class="blackbird-radio radio-diamond" name="attr_bargain_unlocked" type="checkbox" value="1" title="@{bargain_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_charm_unlocked" type="checkbox" value="1" title="@{charm_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_disguise_unlocked" type="checkbox" value="1" title="@{disguise_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_guile_unlocked" type="checkbox" value="1" title="@{guile_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_handle_animal_unlocked" type="checkbox" value="1" title="@{handle_animal_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_leadership_unlocked" type="checkbox" value="1" title="@{leadership_unlocked}"/>
|
||
<input class="blackbird-radio radio-diamond" name="attr_rumor_unlocked" type="checkbox" value="1" title="@{rumor_unlocked}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<div class="headed-section section--boon-bane">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="boons/banes"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-boons-banes" type="action">
|
||
</button>
|
||
<fieldset class="repeating_boons-banes">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_boons-banes_$X_collapse}"/>
|
||
<div class="collapsed"><span name="attr_name" title="@{repeating_boons-banes_$X_name}"></span>
|
||
</div>
|
||
<div class="expanded">
|
||
<input class="underlined" name="attr_name" value="" data-i18n-placeholder="boon/bane name" type="text" title="@{repeating_boons-banes_$X_name}"/>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_effect" title="@{repeating_boons-banes_$X_effect}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_effect" data-i18n-placeholder="effect" title="@{repeating_boons-banes_$X_effect}"></textarea>
|
||
</div>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_description" title="@{repeating_boons-banes_$X_description}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description" data-i18n-placeholder="description" title="@{repeating_boons-banes_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<section class="headed-section section--alignment">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="alignment"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader"><span data-i18n="harmonic resonance"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span data-i18n="discordant resonance"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content resonance flex-box justify-space-around">
|
||
<input class="underlined" name="attr_harmonic_resonance" type="number" title="@{harmonic_resonance}"/>
|
||
<input class="underlined" name="attr_discordant_resonance" type="number" title="@{discordant_resonance}"/>
|
||
</div>
|
||
<div class="headed-section__content alignment-content justify-center flex-box align-center flex-column tiny-gap">
|
||
<input class="underlined" name="attr_alignment" value="" style="text-align:center;" data-i18n-placeholder="your alignment" type="text" title="@{alignment}"/>
|
||
<div class="section--alignment__grid">
|
||
<div class="section--alignment__line-connect"></div>
|
||
<input class="alignment--radio alignment--0 blackbird-radio radio-square" name="attr_alignment" value="0" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--1 harmony--1 blackbird-radio radio-circle" name="attr_alignment" data-value="1" value="1" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--discord alignment--1 discord--1 blackbird-radio radio-circle" name="attr_alignment" data-value="1" value="-1" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--2 harmony--2 blackbird-radio radio-circle" name="attr_alignment" data-value="2" value="2" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--discord alignment--2 discord--2 blackbird-radio radio-circle" name="attr_alignment" data-value="2" value="-2" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--3 harmony--3 blackbird-radio radio-triangle" name="attr_alignment" data-value="3" value="3" type="radio" title="@{alignment}"/>
|
||
<div class="revelation--3 revelation"></div><span class="revelation--3 revelation" data-i18n="revelation"></span>
|
||
<input class="alignment--radio alignment--discord alignment--3 discord--3 blackbird-radio radio-triangle" name="attr_alignment" data-value="3" value="-3" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--4 harmony--4 blackbird-radio radio-circle" name="attr_alignment" data-value="4" value="4" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--discord alignment--4 discord--4 blackbird-radio radio-circle" name="attr_alignment" data-value="4" value="-4" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--5 harmony--5 blackbird-radio radio-triangle" name="attr_alignment" data-value="5" value="5" type="radio" title="@{alignment}"/>
|
||
<div class="revelation--5 revelation"></div><span class="revelation--5 revelation" data-i18n="revelation"></span>
|
||
<input class="alignment--radio alignment--discord alignment--5 discord--5 blackbird-radio radio-triangle" name="attr_alignment" data-value="5" value="-5" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--6 harmony--6 blackbird-radio radio-circle" name="attr_alignment" data-value="6" value="6" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--discord alignment--6 discord--6 blackbird-radio radio-circle" name="attr_alignment" data-value="6" value="-6" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--7 harmony--7 blackbird-radio radio-triangle" name="attr_alignment" data-value="7" value="7" type="radio" title="@{alignment}"/>
|
||
<div class="revelation--7 revelation"></div><span class="revelation--7 revelation" data-i18n="revelation"></span>
|
||
<input class="alignment--radio alignment--discord alignment--7 discord--7 blackbird-radio radio-triangle" name="attr_alignment" data-value="7" value="-7" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--8 harmony--8 blackbird-radio radio-circle" name="attr_alignment" data-value="8" value="8" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--discord alignment--8 discord--8 blackbird-radio radio-circle" name="attr_alignment" data-value="8" value="-8" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--9 harmony--9 blackbird-radio radio-triangle" name="attr_alignment" data-value="9" value="9" type="radio" title="@{alignment}"/>
|
||
<div class="revelation--9 revelation"></div><span class="revelation--9 revelation" data-i18n="revelation"></span>
|
||
<input class="alignment--radio alignment--discord alignment--9 discord--9 blackbird-radio radio-triangle" name="attr_alignment" data-value="9" value="-9" type="radio" title="@{alignment}"/>
|
||
<input class="alignment--radio alignment--harmony alignment--10 harmony--10 blackbird-radio radio-triangle" name="attr_alignment" data-value="10" value="10" type="radio" title="@{alignment}"/>
|
||
<div class="revelation--10 revelation"></div><span class="revelation--10 revelation" data-i18n="revelation"></span>
|
||
<input class="alignment--radio alignment--discord alignment--10 discord--10 blackbird-radio radio-triangle" name="attr_alignment" data-value="10" value="-10" type="radio" title="@{alignment}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</article>
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--combat" data-container-tab="blackbirds" data-tab="combat">
|
||
<div class="interior-container">
|
||
<section class="section--peril">
|
||
<div class="headed-section threshold">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="peril threshold"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader">
|
||
<h4 data-i18n="base"></h4>
|
||
</div>
|
||
<div class="headed-section__subheader">
|
||
<div class="flex-box half-gap justify-space-around">
|
||
<h4 data-i18n="base + 6"></h4>
|
||
<h4 data-i18n="base + 12"></h4>
|
||
<h4 data-i18n="base + 18"></h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content">
|
||
<input name="attr_peril_base_threshold" aria-level="5" value="0" type="number" title="@{peril_base_threshold}"/>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<div class="flex-box half-gap justify-space-around">
|
||
<input name="attr_peril_threshold_6" aria-level="5" value="6" type="number" title="@{peril_threshold_6}"/>
|
||
<input name="attr_peril_threshold_12" aria-level="5" value="12" type="number" title="@{peril_threshold_12}"/>
|
||
<input name="attr_peril_threshold_18" aria-level="5" value="18" type="number" title="@{peril_threshold_18}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section track my-class">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 1"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_peril_track" type="checkbox" value="1" title="@{peril_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 2"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_peril_track" type="checkbox" value="2" title="@{peril_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 3"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_peril_track" type="checkbox" value="3" title="@{peril_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 4"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_peril_track" type="checkbox" value="4" title="@{peril_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 5"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_peril_track" type="checkbox" value="5" title="@{peril_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content dark-content">
|
||
<label class="input-label flex-row-reverse flex-wrap justify-center pointer"><span class="input-label__text" data-i18n="incapacitated"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_peril_track" type="checkbox" value="6" title="@{peril_track}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="section--damage">
|
||
<div class="headed-section threshold">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="damage threshold"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader">
|
||
<h4 data-i18n="base"></h4>
|
||
</div>
|
||
<div class="headed-section__subheader">
|
||
<div class="flex-box half-gap justify-space-around">
|
||
<h4 data-i18n="base + 6"></h4>
|
||
<h4 data-i18n="base + 12"></h4>
|
||
<h4 data-i18n="base + 18"></h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content">
|
||
<input name="attr_damage_base_threshold" aria-level="5" value="0" type="number" title="@{damage_base_threshold}"/>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<div class="flex-box half-gap justify-space-around">
|
||
<input name="attr_damage_threshold_6" aria-level="5" value="6" type="number" title="@{damage_threshold_6}"/>
|
||
<input name="attr_damage_threshold_12" aria-level="5" value="12" type="number" title="@{damage_threshold_12}"/>
|
||
<input name="attr_damage_threshold_18" aria-level="5" value="18" type="number" title="@{damage_threshold_18}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section track my-class">
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 1"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_damage_track" type="checkbox" value="1" title="@{damage_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 2"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_damage_track" type="checkbox" value="2" title="@{damage_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 3"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_damage_track" type="checkbox" value="3" title="@{damage_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 4"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_damage_track" type="checkbox" value="4" title="@{damage_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="level 5"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_damage_track" type="checkbox" value="5" title="@{damage_track}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content dark-content">
|
||
<label class="input-label flex-row-reverse flex-wrap justify-center pointer"><span class="input-label__text" data-i18n="slain!"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_damage_track" type="checkbox" value="6" title="@{damage_track}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<div class="section--combat-general">
|
||
<section>
|
||
<div class="headed-section initiative split-mod-section">
|
||
<div class="headed-section__header">
|
||
<button class="d-10" name="roll_initiative" data-i18n="initiative" role="heading" aria-level="2" value="@{template_start} {{title=^{initiative}}} {{roll=[[1d10+@{initiative}&{tracker}]]}}" type="roll">
|
||
</button>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="base"></span>
|
||
<input class="input-label__input" name="attr_initiative" type="number" value="6" readonly="" title="@{initiative}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="modifier abbreviation"></span>
|
||
<input class="input-label__input" name="attr_initiative_mod" type="number" title="@{initiative_mod}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section injuries">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="injuries"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader">
|
||
<h3 data-i18n="name"></h3>
|
||
</div>
|
||
<div class="headed-section__subheader">
|
||
<h3 data-i18n="severity"></h3>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-injuries" type="action">
|
||
</button>
|
||
<fieldset class="repeating_injuries">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_injuries_$X_collapse}"/>
|
||
<div class="collapsed"><span name="attr_name" title="@{repeating_injuries_$X_name}"></span><span name="attr_severity" data-i18n-dynamic="" title="@{repeating_injuries_$X_severity}"></span>
|
||
</div>
|
||
<div class="expanded">
|
||
<input class="underlined" name="attr_name" value="" type="text" title="@{repeating_injuries_$X_name}"/>
|
||
<select class="underlined" name="attr_severity" title="@{repeating_injuries_$X_severity}">
|
||
<option data-i18n="moderate" value="moderate" selected="">
|
||
</option>
|
||
<option data-i18n="serious" value="serious">
|
||
</option>
|
||
<option data-i18n="grievous" value="grievous">
|
||
</option>
|
||
</select>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description" title="@{repeating_injuries_$X_description}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description" title="@{repeating_injuries_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section movement split-mod-section">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="movement"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="base"></span>
|
||
<input class="input-label__input" name="attr_movement" type="number" value="6" readonly="" title="@{movement}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="modifier abbreviation"></span>
|
||
<input class="input-label__input" name="attr_movement_mod" type="number" title="@{movement_mod}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section skill-head parry">
|
||
<div class="headed-section__header">
|
||
<button class="d100 roller" name="roll_parry" role="heading" aria-level="2" data-i18n="parry" value="@{parry_action}" type="roll">
|
||
</button>
|
||
<button name="act_parry-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_parry_action" type="hidden" title="@{parry_action}"/>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content skill-head__content">
|
||
<div class="egg">
|
||
<input name="attr_parry" type="number" value="35" readonly="" role="heading" aria-level="5" title="@{parry}"/>
|
||
<input class="underlined" name="attr_parry_mod" type="number" data-i18n-placeholder="mod" title="@{parry_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section skill-head dodge">
|
||
<div class="headed-section__header">
|
||
<button class="d100 roller" name="roll_dodge" role="heading" aria-level="2" data-i18n="dodge" value="@{dodge_action}" type="roll">
|
||
</button>
|
||
<button name="act_dodge-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_dodge_action" type="hidden" title="@{dodge_action}"/>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content skill-head__content">
|
||
<div class="egg">
|
||
<input name="attr_dodge" type="number" value="35" readonly="" role="heading" aria-level="5" title="@{dodge}"/>
|
||
<input class="underlined" name="attr_dodge_mod" type="number" data-i18n-placeholder="mod" title="@{dodge_mod}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<div class="headed-section section--weapons">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="weapons"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader"><span class="capitalize" data-i18n="name"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span class="capitalize" data-i18n="qualities"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span class="capitalize" data-i18n="damage"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span class="capitalize" data-i18n="degradation"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-weapons" type="action">
|
||
</button>
|
||
<fieldset class="repeating_weapons">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_weapons_$X_collapse}"/>
|
||
<div class="collapsed">
|
||
<button class="d100 roller" name="roll_roll" value="@{action}" type="roll"><span name="attr_name" title="@{repeating_weapons_$X_name}"></span>
|
||
</button>
|
||
<button name="act_action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_action" type="hidden" title="@{repeating_weapons_$X_action}"/><span class="quality-display" name="attr_qualities" title="@{repeating_weapons_$X_qualities}"></span><span name="attr_damage" data-i18n-dynamic="" title="@{repeating_weapons_$X_damage}"></span>
|
||
<select name="attr_degradation" title="@{repeating_weapons_$X_degradation}">
|
||
<option value="0" data-i18n="whole" selected="">
|
||
</option>
|
||
<option value="-1" data-i18n="worn">
|
||
</option>
|
||
<option value="-2" data-i18n="frail">
|
||
</option>
|
||
<option value="-3" data-i18n="ruined">
|
||
</option>
|
||
</select>
|
||
</div>
|
||
<div class="expanded flex-box flex-wrap half-gap justify-space-around align-items-start">
|
||
<button class="roller" name="roll_roll" value="@{action}" type="roll">
|
||
</button>
|
||
<button name="act_action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_action" type="hidden" title="@{repeating_weapons_$X_action}"/>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="name"></span>
|
||
<input class="underlined input-label__input" name="attr_name" type="text" title="@{repeating_weapons_$X_name}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="qualities"></span>
|
||
<input class="underlined input-label__input" name="attr_qualities" type="text" title="@{repeating_weapons_$X_qualities}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="skill"></span>
|
||
<select class="underlined input-label__input" name="attr_skill" title="@{repeating_weapons_$X_skill}">
|
||
<option data-i18n="melee" value="melee" selected="">
|
||
</option>
|
||
<option data-i18n="ranged" value="ranged">
|
||
</option>
|
||
<option data-i18n="warfare" value="warfare">
|
||
</option>
|
||
<option data-i18n="athletics" value="athletics">
|
||
</option>
|
||
<option data-i18n="intimidate" value="intimidate">
|
||
</option>
|
||
<option data-i18n="toughness" value="toughness">
|
||
</option>
|
||
<option data-i18n="coordination" value="coordination">
|
||
</option>
|
||
<option data-i18n="handle vehicle" value="handle vehicle">
|
||
</option>
|
||
<option data-i18n="skuldiggery" value="skuldiggery">
|
||
</option>
|
||
<option data-i18n="stealth" value="stealth">
|
||
</option>
|
||
<option data-i18n="awareness" value="awareness">
|
||
</option>
|
||
<option data-i18n="eavesdrop" value="eavesdrop">
|
||
</option>
|
||
<option data-i18n="scrutinize" value="scrutinize">
|
||
</option>
|
||
<option data-i18n="survival" value="survival">
|
||
</option>
|
||
<option data-i18n="education" value="education">
|
||
</option>
|
||
<option data-i18n="folklore" value="folklore">
|
||
</option>
|
||
<option data-i18n="gamble" value="gamble">
|
||
</option>
|
||
<option data-i18n="heal" value="heal">
|
||
</option>
|
||
<option data-i18n="navigation" value="navigation">
|
||
</option>
|
||
<option data-i18n="strategy" value="strategy">
|
||
</option>
|
||
<option data-i18n="wortcunning" value="wortcunning">
|
||
</option>
|
||
<option data-i18n="odweft" value="odweft">
|
||
</option>
|
||
<option data-i18n="resolve" value="resolve">
|
||
</option>
|
||
<option data-i18n="tradecraft" value="tradecraft">
|
||
</option>
|
||
<option data-i18n="bargain" value="bargain">
|
||
</option>
|
||
<option data-i18n="charm" value="charm">
|
||
</option>
|
||
<option data-i18n="disguise" value="disguise">
|
||
</option>
|
||
<option data-i18n="guile" value="guile">
|
||
</option>
|
||
<option data-i18n="handle animal" value="handle animal">
|
||
</option>
|
||
<option data-i18n="leadership" value="leadership">
|
||
</option>
|
||
<option data-i18n="rumor" value="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="damage"></span>
|
||
<div class="underlined flex-box tiny-gap">
|
||
<select name="attr_damage_dice" title="@{repeating_weapons_$X_damage_dice}">
|
||
<option value="d6!" selected="">1d6
|
||
</option>
|
||
<option value="d10!">1d10
|
||
</option>
|
||
</select><span>+</span>
|
||
<div class="custom-select">
|
||
<input class="select-control" name="attr_damage" value="@{damage_custom}" type="checkbox" title="@{repeating_weapons_$X_damage}" hidden="hidden"/>
|
||
<input class="uppercase" name="attr_damage_custom" type="text" title="@{repeating_weapons_$X_damage_custom}"/>
|
||
<select class="uppercase" name="attr_damage" title="@{repeating_weapons_$X_damage}">
|
||
<option data-i18n="[cb]" value="@{combat_mod}[cb]" selected="">
|
||
</option>
|
||
<option data-i18n="[bb]" value="@{brawn_mod}[bb]">
|
||
</option>
|
||
<option data-i18n="[ab]" value="@{agility_mod}[ab]">
|
||
</option>
|
||
<option data-i18n="[pb]" value="@{perception_mod}[pb]">
|
||
</option>
|
||
<option data-i18n="[ib]" value="@{intelligence_mod}[ib]">
|
||
</option>
|
||
<option data-i18n="[wb]" value="@{willpower_mod}[wb]">
|
||
</option>
|
||
<option data-i18n="[fb]" value="@{fellowship_mod}[fb]">
|
||
</option>
|
||
<option class="capitalize" data-i18n="custom" value="@{damage_custom}">
|
||
</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 1d6+[CB] Total Damage, then modified by specific techniques, talents, boons, weapon qualities, etc.-->
|
||
<!-- the attribute for [CB] is {@combat_mod}, should be the default value for damage modifier-->
|
||
<!-- some weapons can allow other mods to be used, so ultimately the user should input the data bc we dont have a compendium to pull qualities, etc.-->
|
||
<select class="underlined" name="attr_degradation" title="@{repeating_weapons_$X_degradation}">
|
||
<option value="0" data-i18n="whole" selected="">
|
||
</option>
|
||
<option value="-1" data-i18n="worn">
|
||
</option>
|
||
<option value="-2" data-i18n="frail">
|
||
</option>
|
||
<option value="-3" data-i18n="ruined">
|
||
</option>
|
||
</select>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="ammo"></span>
|
||
<input class="underlined input-label__input" name="attr_ammo" type="text" title="@{repeating_weapons_$X_ammo}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="range"></span>
|
||
<input class="underlined input-label__input" name="attr_range" type="text" title="@{repeating_weapons_$X_range}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="reload"></span>
|
||
<input class="underlined input-label__input" name="attr_reload" type="text" title="@{repeating_weapons_$X_reload}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="hands"></span>
|
||
<input class="underlined input-label__input" name="attr_hands" type="text" title="@{repeating_weapons_$X_hands}"/>
|
||
</label>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_description" title="@{repeating_weapons_$X_description}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description" title="@{repeating_weapons_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--wortcunnings">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="wortcunning"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader"><span class="capitalize" data-i18n="spell name"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span class="capitalize" data-i18n="spell details"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span class="capitalize" data-i18n="page number"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--column">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-wortcunning" type="action">
|
||
</button>
|
||
<fieldset class="repeating_wortcunning">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_wortcunning_$X_collapse}"/>
|
||
<div class="collapsed">
|
||
<!--add trigger-->
|
||
<button class="d100 roller" name="roll_roll" value="@{action}" type="roll"><span name="attr_spellname" title="@{repeating_wortcunning_$X_spellname}"></span>
|
||
</button>
|
||
<button name="act_action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_action" type="hidden" title="@{repeating_wortcunning_$X_action}"/><span class="description" name="attr_description" title="@{repeating_wortcunning_$X_description}"></span><span name="attr_reference" title="@{repeating_wortcunning_$X_reference}"></span>
|
||
</div>
|
||
<div class="expanded flex-box flex-wrap half-gap justify-space-around align-items-start">
|
||
<!--add trigger-->
|
||
<button class="d100 roller" name="roll_roll" value="@{action}" type="roll">
|
||
<input name="attr_spellname" type="text" title="@{repeating_wortcunning_$X_spellname}"/>
|
||
</button>
|
||
<button name="act_action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_action" type="hidden" title="@{repeating_wortcunning_$X_action}"/>
|
||
<textarea name="attr_description" title="@{repeating_wortcunning_$X_description}"></textarea>
|
||
<input name="attr_reference" type="number" title="@{repeating_wortcunning_$X_reference}"/>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</article>
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--patrons" data-container-tab="blackbirds" data-tab="patrons">
|
||
<div class="patronage">
|
||
<div class="row1">
|
||
<section class="headed-section undertaking">
|
||
<div class="headed-section__header undertaking__title">
|
||
<h2 data-i18n="Undertakings"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader undertaking_base"><span class="section--undertaking__rules" data-i18n="Base Chance = (Patronage Score + Obligation Total) × 5"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content section--undertakings repeating-section-container"><span class="undertaking--label__desc" data-i18n="Description"></span><span class="undertaking--label__time" data-i18n="Time limit?"></span>
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-undertakings" type="action">
|
||
</button>
|
||
<fieldset class="repeating_undertakings">
|
||
<input class="section--undertaking__description" name="attr_description" data-i18n-placeholder="Description" type="text" title="@{repeating_undertakings_$X_description}"/>
|
||
<div class="input-label input-label--button">
|
||
<button name="roll_print" data-i18n-title="print" value="@{template_start} {{title=^{spoils}}} {{time-limit=@{time-limit}}} {{description=@{description}}}" type="roll">
|
||
</button>
|
||
<input class="section--undertaking__time-limit input-label__input" name="attr_time-limit" type="text" data-i18n-placeholder="Time Limit?" title="@{repeating_undertakings_$X_time-limit}"/>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="headed-section obligation">
|
||
<div class="headed-section__header obligation__title">
|
||
<h2 data-i18n="Obligation"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content obligation--amount repeating-section-container">
|
||
<input class="section--obligation__number" name="attr_obligation_total" value="0" type="number" title="@{obligation_total}"/><span class="obligation--total" data-i18n="Total"></span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="headed-section spoils">
|
||
<div class="headed-section__header spoils__title">
|
||
<h2 data-i18n="spoils"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader spoils_labels"><span class="section--label__desc" data-i18n="Description"></span><span class="section--label__value" data-i18n="Value"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content spoils_labels repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-spoils" type="action">
|
||
</button>
|
||
<fieldset class="repeating_spoils">
|
||
<input class="section--spoils__description" name="attr_description" placeholder="Description" type="text" title="@{repeating_spoils_$X_description}"/>
|
||
<input class="section--spoils__value" name="attr_value" type="number" value="0" title="@{repeating_spoils_$X_value}"/>
|
||
<button class="roller" name="roll_print_spoils" data-i18n-title="print" value="@{template_start} {{title=^{spoils}}} {{value=@{value}}} {{description=@{description}}}" type="roll">
|
||
</button>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<section class="headed-section trappings">
|
||
<div class="headed-section__header trappings__title">
|
||
<h2 data-i18n="Trappings"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader trappings_label"><span class="trapping_label" data-i18n="Lodgings"></span><span class="trapping_label" data-i18n="Materials for Crafting"></span><span class="trapping_label" data-i18n="Support or Assistance"></span><span class="trapping_label" data-i18n="Travel"></span><span class="trapping_label" data-i18n="Arms and Equipment"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content trappings__input repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-lodging" type="action">
|
||
</button>
|
||
<fieldset class="repeating_lodging">
|
||
<input class="section--trappings__lodging" name="attr_name" data-i18n-placeholder="lodging..." type="text" title="@{repeating_lodging_$X_name}"/>
|
||
</fieldset>
|
||
</div>
|
||
<div class="headed-section__content trappings__input repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-material" type="action">
|
||
</button>
|
||
<fieldset class="repeating_material">
|
||
<input class="section--trappings__material" name="attr_name" data-i18n-placeholder="material..." type="text" title="@{repeating_material_$X_name}"/>
|
||
</fieldset>
|
||
</div>
|
||
<div class="headed-section__content trappings__input repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-support" type="action">
|
||
</button>
|
||
<fieldset class="repeating_support">
|
||
<input class="section--trappings__support" name="attr_name" data-i18n-placeholder="support..." type="text" title="@{repeating_support_$X_name}"/>
|
||
</fieldset>
|
||
</div>
|
||
<div class="headed-section__content trappings__input repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-travel" type="action">
|
||
</button>
|
||
<fieldset class="repeating_travel">
|
||
<input class="section--trappings__travel" name="attr_name" data-i18n-placeholder="travel..." type="text" title="@{repeating_travel_$X_name}"/>
|
||
</fieldset>
|
||
</div>
|
||
<div class="headed-section__content trappings__input repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-equipment" type="action">
|
||
</button>
|
||
<fieldset class="repeating_equipment">
|
||
<input class="section--trappings__equipment" name="attr_name" data-i18n-placeholder="equipment..." type="text" title="@{repeating_equipment_$X_name}"/>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="headed-section patrons">
|
||
<div class="headed-section__header patron__title">
|
||
<h2 data-i18n="Patrons"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader patron__rules"><span data-i18n="You can only have Stewardship with one Patron at a time."></span><span data-i18n="*Adjusted Patronage Score in territory allied to the patron you are steward to "></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-patrons" type="action">
|
||
</button>
|
||
<fieldset class="repeating_patrons">
|
||
<input class="section--patron__name underlined" name="attr_name" placeholder="Name" type="text" title="@{repeating_patrons_$X_name}"/>
|
||
<input class="section--patron__traits underlined" name="attr_traits" placeholder="Traits" type="text" title="@{repeating_patrons_$X_traits}"/>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_notes" title="@{repeating_patrons_$X_notes}"></span>
|
||
<textarea class="section--patron__notes underlined adaptive--text__textarea" name="attr_notes" placeholder="Notes" title="@{repeating_patrons_$X_notes}"></textarea>
|
||
</div>
|
||
<div class="flex-box tiny-gap grid-span-all">
|
||
<h4 class="section--patron__label" data-i18n="patronage score"></h4>
|
||
<div class="patron--score__numbers"><span data-i18n="1"></span><span data-i18n="2"></span><span data-i18n="3"></span><span data-i18n="4"> </span><span data-i18n="5"></span><span data-i18n="6"></span><span data-i18n="7"></span><span data-i18n="8"></span><span data-i18n="9"></span><span data-i18n="10"></span>
|
||
<div class="fill-left section--patron__score section--patron__score--basic radio-circle">
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_patronage_score" value="0" type="hidden" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_patronage_score" value="1" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_patronage_score" value="2" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_patronage_score" value="3" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_patronage_score" value="4" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_patronage_score" value="5" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
</div>
|
||
<div class="fill-left section--patron__score section--patron__score--stew radio-circle">
|
||
<input class="blackbird-radio radio-shield fill-left__radio" name="attr_patronage_score" value="0" type="hidden" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-shield fill-left__radio" name="attr_patronage_score" value="6" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-shield fill-left__radio" name="attr_patronage_score" value="7" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-shield fill-left__radio" name="attr_patronage_score" value="8" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-shield fill-left__radio" name="attr_patronage_score" value="9" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
<input class="blackbird-radio radio-shield fill-left__radio" name="attr_patronage_score" value="10" type="checkbox" title="@{repeating_patrons_$X_patronage_score}"/>
|
||
</div>
|
||
<div class="patron--score__alt"><span data-i18n="*4"></span><span data-i18n="*5"></span><span data-i18n="*6"></span><span data-i18n="*7"></span><span data-i18n="*8"></span></div>
|
||
</div>
|
||
</div>
|
||
<div class="input-label"><span class="section--patron__stewardship" data-i18n="Stewardship?"></span>
|
||
<input class="radio-shield blackbird-radio radio-undefined" name="attr_stewardship" type="checkbox" title="@{repeating_patrons_$X_stewardship}"/>
|
||
</div>
|
||
<button class="roller" name="roll_print_patron" data-i18n="Send to Chat" value="@{print_patron_action}" type="roll">
|
||
</button>
|
||
<button name="act_print-patron-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_print_patron_action" type="hidden" title="@{repeating_patrons_$X_print_patron_action}"/>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</article>
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--theurgy" data-container-tab="blackbirds" data-tab="theurgy">
|
||
<div class="headed-section section--manifestations">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="odic manifestations"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-manifestation" type="action">
|
||
</button>
|
||
<fieldset class="repeating_manifestation">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_manifestation_$X_collapse}"/>
|
||
<div class="collapsed">
|
||
<button name="roll_roll" value="@{template_start} {{title=@{name}}} {{range=@{range}}} {{duration=@{duration}}} {{description=@{description}}}" type="roll"><span name="attr_name" title="@{repeating_manifestation_$X_name}"></span>
|
||
</button>
|
||
</div>
|
||
<div class="expanded half-gap">
|
||
<button name="roll_roll" value="@{template_start} {{title=@{name}}} {{range=@{range}}} {{duration=@{duration}}} {{description=@{description}}}" type="roll">
|
||
</button>
|
||
<input class="underlined grid-span-2" name="attr_name" value="" data-i18n-placeholder="manifestation name" type="text" title="@{repeating_manifestation_$X_name}"/>
|
||
<label class="input-label grid-span-2 flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="range"></span>
|
||
<input class="underlined input-label__input" name="attr_range" type="text" value="99 strides" title="@{repeating_manifestation_$X_range}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="duration"></span>
|
||
<input class="underlined input-label__input" name="attr_duration" type="text" data-i18n-placeholder="1d10 minutes" title="@{repeating_manifestation_$X_duration}"/>
|
||
</label>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description" title="@{repeating_manifestation_$X_description}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description" title="@{repeating_manifestation_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--tithe">
|
||
<div class="headed-section__header">
|
||
<h2 class="tithe-symbol" data-i18n="tithe"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<label class="headed-section__content flex-box justify-center">
|
||
<input name="attr_tithe" type="number" title="@{tithe}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--focus">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="focus level"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader flex-box justify-center"><span class="capitalize" data-i18n="resets after each enactment"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content input-label flex-column-reverse stacked blackbird-label center"><span role="heading" aria-level="3">1</span>
|
||
<input class="blackbird-radio radio-square" name="attr_focus" type="checkbox" value="1" title="@{focus}"/>
|
||
</div>
|
||
<div class="headed-section__content input-label flex-column-reverse stacked blackbird-label center"><span role="heading" aria-level="3">2</span>
|
||
<input class="blackbird-radio radio-square" name="attr_focus" type="checkbox" value="2" title="@{focus}"/>
|
||
</div>
|
||
<div class="headed-section__content input-label flex-column-reverse stacked blackbird-label center"><span role="heading" aria-level="3">3</span>
|
||
<input class="blackbird-radio radio-square" name="attr_focus" type="checkbox" value="3" title="@{focus}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--odic-dice">
|
||
<div class="headed-section__header flex-box justify-center">
|
||
<button class="d-6 roller" name="roll_odic_dice" role="heading" aria-level="2" data-i18n="odic dice" value="@{odic_dice_action}" type="roll">
|
||
</button>
|
||
<button name="act_odic-dice-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_odic_dice_action" type="hidden" title="@{odic_dice_action}"/>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader flex-box justify-center"><span data-i18n="increased automatically when vitiation enacted."></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<label class="headed-section__content flex-box justify-center">
|
||
<input name="attr_odic_dice" value="" type="number" title="@{odic_dice}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--outsiders">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="outsiders"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader"><span data-i18n="name"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span data-i18n="station"></span>
|
||
</div>
|
||
<div class="headed-section__subheader"><span data-i18n="agreement"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-outsiders" type="action">
|
||
</button>
|
||
<fieldset class="repeating_outsiders">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_outsiders_$X_collapse}"/>
|
||
<div class="collapsed">
|
||
<div class="flex-box">
|
||
<button name="roll_roll" value="@{template_start} {{title=@{name}}} {{station=@{station}}} {{agreement=@{agreement}}} {{description=@{description}}}" type="roll"><span name="attr_name" value="" title="@{repeating_outsiders_$X_name}"></span>
|
||
</button><span class="capitalize" name="attr_station" data-i18n-dynamic="" title="@{repeating_outsiders_$X_station}"></span><span class="capitalize" name="attr_agreement" data-i18n-dynamic="" title="@{repeating_outsiders_$X_agreement}"></span>
|
||
</div>
|
||
</div>
|
||
<div class="expanded half-gap">
|
||
<button name="roll_roll" value="@{template_start} {{title=@{name}}} {{station=@{station}}} {{agreement=@{agreement}}} {{description=@{description}}}" type="roll">
|
||
</button>
|
||
<input class="underlined" name="attr_name" value="" type="text" title="@{repeating_outsiders_$X_name}"/>
|
||
<select class="underlined" name="attr_station" title="@{repeating_outsiders_$X_station}">
|
||
<option value="select one" data-i18n="select one">
|
||
</option>
|
||
<option value="imp" data-i18n="imp">
|
||
</option>
|
||
<option value="villein" data-i18n="villein">
|
||
</option>
|
||
<option value="lord" data-i18n="lord">
|
||
</option>
|
||
</select>
|
||
<select class="underlined" name="attr_agreement" title="@{repeating_outsiders_$X_agreement}">
|
||
<option value="select one" data-i18n="select one">
|
||
</option>
|
||
<option value="rapport" data-i18n="rapport">
|
||
</option>
|
||
<option value="communion" data-i18n="communion">
|
||
</option>
|
||
<option value="pact" data-i18n="pact">
|
||
</option>
|
||
</select>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description" title="@{repeating_outsiders_$X_description}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description" title="@{repeating_outsiders_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--vitiations">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="vitiations"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader flex-box justify-center"><span data-i18n="title"></span>
|
||
</div>
|
||
<div class="headed-section__subheader flex-box justify-center"><span data-i18n="power level"></span>
|
||
</div>
|
||
<div class="headed-section__subheader flex-box justify-center"><span data-i18n="tithe"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--row">
|
||
<div class="headed-section__content repeating-section-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-vitiations" type="action">
|
||
</button>
|
||
<fieldset class="repeating_vitiations">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_vitiations_$X_collapse}"/>
|
||
<div class="collapsed flex-box repeating-headers">
|
||
<button class="d100 roller" name="roll_roll" value="@{action}" type="roll"><span name="attr_name" title="@{repeating_vitiations_$X_name}"></span>
|
||
</button>
|
||
<button name="act_action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_action" type="hidden" title="@{repeating_vitiations_$X_action}"/><span name="attr_power_level" title="@{repeating_vitiations_$X_power_level}"></span><span name="attr_tithe_cost" data-i18n-dynamic="" title="@{repeating_vitiations_$X_tithe_cost}"></span>
|
||
</div>
|
||
<div class="expanded">
|
||
<div class="flex-box name">
|
||
<button class="d100 roller" name="roll_roll" value="@{action}" type="roll">
|
||
</button>
|
||
<button name="act_action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_action" type="hidden" title="@{repeating_vitiations_$X_action}"/>
|
||
<input class="underlined" name="attr_name" value="" type="text" title="@{repeating_vitiations_$X_name}"/>
|
||
</div>
|
||
<input class="underlined" name="attr_power_level" value="" type="text" title="@{repeating_vitiations_$X_power_level}"/>
|
||
<label class="input-label"><span class="input-label__text" data-i18n="outsider source"></span>
|
||
<select class="outsider-select underlined input-label__input" name="attr_outsider_id" title="@{repeating_vitiations_$X_outsider_id}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="flex-box grid-span-all"><span data-i18n="duration"></span>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="base"></span>
|
||
<input class="underlined input-label__input" name="attr_duration_base" value="" type="number" title="@{repeating_vitiations_$X_duration_base}"/>
|
||
</label><span>+</span>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="ability"></span>
|
||
<select class="underlined input-label__input" name="attr_duration_ability" value="" title="@{repeating_vitiations_$X_duration_ability}">
|
||
<option value="" selected="">??
|
||
</option>
|
||
</select>
|
||
</label><span>+</span>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="bonus"></span>
|
||
<input class="underlined input-label__input" name="attr_duration_bonus" value="" type="text" title="@{repeating_vitiations_$X_duration_bonus}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="unit"></span>
|
||
<input class="underlined input-label__input" name="attr_duration_unit" value="" type="text" title="@{repeating_vitiations_$X_duration_unit}"/>
|
||
</label>
|
||
</div>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="range"></span>
|
||
<input class="underlined input-label__input" name="attr_range" value="" type="text" title="@{repeating_vitiations_$X_range}"/>
|
||
</label>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description" title="@{repeating_vitiations_$X_description}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description" title="@{repeating_vitiations_$X_description}"></textarea>
|
||
</div>
|
||
<div class="headed-textarea grid-span-all">
|
||
<h3 class="headed-textarea__header" data-i18n="sublime success"></h3>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_sublime_success" title="@{repeating_vitiations_$X_sublime_success}"></span>
|
||
<textarea class="underlined headed-textarea__textarea adaptive--text__textarea" name="attr_sublime_success" title="@{repeating_vitiations_$X_sublime_success}"></textarea>
|
||
</div>
|
||
</div>
|
||
<div class="headed-textarea grid-span-all">
|
||
<h3 class="headed-textarea__header" data-i18n="critical success"></h3>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_critical_success" title="@{repeating_vitiations_$X_critical_success}"></span>
|
||
<textarea class="underlined headed-textarea__textarea adaptive--text__textarea" name="attr_critical_success" title="@{repeating_vitiations_$X_critical_success}"></textarea>
|
||
</div>
|
||
</div>
|
||
<div class="headed-textarea grid-span-all">
|
||
<h3 class="headed-textarea__header" data-i18n="critical failure"></h3>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_critical_failure" title="@{repeating_vitiations_$X_critical_failure}"></span>
|
||
<textarea class="underlined headed-textarea__textarea adaptive--text__textarea" name="attr_critical_failure" title="@{repeating_vitiations_$X_critical_failure}"></textarea>
|
||
</div>
|
||
</div>
|
||
<div class="headed-textarea grid-span-all">
|
||
<h3 class="headed-textarea__header" data-i18n="sublime failure"></h3>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_sublime_failure" title="@{repeating_vitiations_$X_sublime_failure}"></span>
|
||
<textarea class="underlined headed-textarea__textarea adaptive--text__textarea" name="attr_sublime_failure" title="@{repeating_vitiations_$X_sublime_failure}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</article>
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--npc" data-container-tab="blackbirds" data-tab="npc">
|
||
<section class="headed-section section--npc collapse-container" data-i18n-aria-label="npc">
|
||
<input class="collapse--nested-control collapse" name="attr_npc_view" value="1" type="checkbox" title="@{npc_view}"/>
|
||
<div class="headed-section__header NPC__title">
|
||
<h2 data-i18n="NPC"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader npc_attributes">
|
||
<h3 class="section--label__combat section--label" data-i18n="combat"></h3>
|
||
<h3 class="section--label__brawn section--label" data-i18n="brawn"></h3>
|
||
<h3 class="section--label__agility section--label" data-i18n="agility"></h3>
|
||
<h3 class="section--label__perception section--label" data-i18n="perception"></h3>
|
||
<h3 class="section--label__intelligence section--label" data-i18n="intelligence"></h3>
|
||
<h3 class="section--label__willpower section--label" data-i18n="willpower"></h3>
|
||
<h3 class="section--label__fellowship section--label" data-i18n="fellowship"></h3>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content expanded npc_attributes attribute-display">
|
||
<div class="flex-box half-gap flex-wrap justify-center">
|
||
<input class="underlined" name="attr_combat" type="number" title="@{combat}"/>
|
||
<div class="flex-box tiny-gap"><span>[</span>
|
||
<input class="underlined" name="attr_combat_mod" type="number" title="@{combat_mod}"/><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center">
|
||
<input class="underlined" name="attr_brawn" type="number" title="@{brawn}"/>
|
||
<div class="flex-box tiny-gap"><span>[</span>
|
||
<input class="underlined" name="attr_brawn_mod" type="number" title="@{brawn_mod}"/><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center">
|
||
<input class="underlined" name="attr_agility" type="number" title="@{agility}"/>
|
||
<div class="flex-box tiny-gap"><span>[</span>
|
||
<input class="underlined" name="attr_agility_mod" type="number" title="@{agility_mod}"/><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center">
|
||
<input class="underlined" name="attr_perception" type="number" title="@{perception}"/>
|
||
<div class="flex-box tiny-gap"><span>[</span>
|
||
<input class="underlined" name="attr_perception_mod" type="number" title="@{perception_mod}"/><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center">
|
||
<input class="underlined" name="attr_intelligence" type="number" title="@{intelligence}"/>
|
||
<div class="flex-box tiny-gap"><span>[</span>
|
||
<input class="underlined" name="attr_intelligence_mod" type="number" title="@{intelligence_mod}"/><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center">
|
||
<input class="underlined" name="attr_willpower" type="number" title="@{willpower}"/>
|
||
<div class="flex-box tiny-gap"><span>[</span>
|
||
<input class="underlined" name="attr_willpower_mod" type="number" title="@{willpower_mod}"/><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center">
|
||
<input class="underlined" name="attr_fellowship" type="number" title="@{fellowship}"/>
|
||
<div class="flex-box tiny-gap"><span>[</span>
|
||
<input class="underlined" name="attr_fellowship_mod" type="number" title="@{fellowship_mod}"/><span>]</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content collapsed npc_attributes attribute-display">
|
||
<div class="flex-box half-gap flex-wrap justify-center"><span name="attr_combat" readonly="" title="@{combat}"></span>
|
||
<div class="flex-box tiny-gap"><span>[</span><span name="attr_combat_mod" readonly="" title="@{combat_mod}"></span><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center"><span name="attr_brawn" readonly="" title="@{brawn}"></span>
|
||
<div class="flex-box tiny-gap"><span>[</span><span name="attr_brawn_mod" readonly="" title="@{brawn_mod}"></span><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center"><span name="attr_agility" readonly="" title="@{agility}"></span>
|
||
<div class="flex-box tiny-gap"><span>[</span><span name="attr_agility_mod" readonly="" title="@{agility_mod}"></span><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center"><span name="attr_perception" readonly="" title="@{perception}"></span>
|
||
<div class="flex-box tiny-gap"><span>[</span><span name="attr_perception_mod" readonly="" title="@{perception_mod}"></span><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center"><span name="attr_intelligence" readonly="" title="@{intelligence}"></span>
|
||
<div class="flex-box tiny-gap"><span>[</span><span name="attr_intelligence_mod" readonly="" title="@{intelligence_mod}"></span><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center"><span name="attr_willpower" readonly="" title="@{willpower}"></span>
|
||
<div class="flex-box tiny-gap"><span>[</span><span name="attr_willpower_mod" readonly="" title="@{willpower_mod}"></span><span>]</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center"><span name="attr_fellowship" readonly="" title="@{fellowship}"></span>
|
||
<div class="flex-box tiny-gap"><span>[</span><span name="attr_fellowship_mod" readonly="" title="@{fellowship_mod}"></span><span>]</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content expanded npc_attributes skill-display">
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="melee" name="roll_melee" value="@{melee_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_melee" type="number" title="@{melee}"/>
|
||
</div>
|
||
<button name="act_melee-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_melee_action" type="hidden" title="@{melee_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="ranged" name="roll_ranged" value="@{ranged_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_ranged" type="number" title="@{ranged}"/>
|
||
</div>
|
||
<button name="act_ranged-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_ranged_action" type="hidden" title="@{ranged_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="warfare" name="roll_warfare" value="@{warfare_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_warfare" type="number" title="@{warfare}"/>
|
||
</div>
|
||
<button name="act_warfare-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_warfare_action" type="hidden" title="@{warfare_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="athletics" name="roll_athletics" value="@{athletics_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_athletics" type="number" title="@{athletics}"/>
|
||
</div>
|
||
<button name="act_athletics-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_athletics_action" type="hidden" title="@{athletics_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="intimidate" name="roll_intimidate" value="@{intimidate_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_intimidate" type="number" title="@{intimidate}"/>
|
||
</div>
|
||
<button name="act_intimidate-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_intimidate_action" type="hidden" title="@{intimidate_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="toughness" name="roll_toughness" value="@{toughness_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_toughness" type="number" title="@{toughness}"/>
|
||
</div>
|
||
<button name="act_toughness-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_toughness_action" type="hidden" title="@{toughness_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="coordination" name="roll_coordination" value="@{coordination_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_coordination" type="number" title="@{coordination}"/>
|
||
</div>
|
||
<button name="act_coordination-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_coordination_action" type="hidden" title="@{coordination_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="handle vehicle" name="roll_handle_vehicle" value="@{handle_vehicle_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_handle_vehicle" type="number" title="@{handle_vehicle}"/>
|
||
</div>
|
||
<button name="act_handle-vehicle-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_handle_vehicle_action" type="hidden" title="@{handle_vehicle_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="skuldiggery" name="roll_skuldiggery" value="@{skuldiggery_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_skuldiggery" type="number" title="@{skuldiggery}"/>
|
||
</div>
|
||
<button name="act_skuldiggery-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_skuldiggery_action" type="hidden" title="@{skuldiggery_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="stealth" name="roll_stealth" value="@{stealth_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_stealth" type="number" title="@{stealth}"/>
|
||
</div>
|
||
<button name="act_stealth-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_stealth_action" type="hidden" title="@{stealth_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="awareness" name="roll_awareness" value="@{awareness_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_awareness" type="number" title="@{awareness}"/>
|
||
</div>
|
||
<button name="act_awareness-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_awareness_action" type="hidden" title="@{awareness_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="eavesdrop" name="roll_eavesdrop" value="@{eavesdrop_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_eavesdrop" type="number" title="@{eavesdrop}"/>
|
||
</div>
|
||
<button name="act_eavesdrop-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_eavesdrop_action" type="hidden" title="@{eavesdrop_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="scrutinize" name="roll_scrutinize" value="@{scrutinize_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_scrutinize" type="number" title="@{scrutinize}"/>
|
||
</div>
|
||
<button name="act_scrutinize-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_scrutinize_action" type="hidden" title="@{scrutinize_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="survival" name="roll_survival" value="@{survival_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_survival" type="number" title="@{survival}"/>
|
||
</div>
|
||
<button name="act_survival-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_survival_action" type="hidden" title="@{survival_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="education" name="roll_education" value="@{education_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_education" type="number" title="@{education}"/>
|
||
</div>
|
||
<button name="act_education-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_education_action" type="hidden" title="@{education_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="folklore" name="roll_folklore" value="@{folklore_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_folklore" type="number" title="@{folklore}"/>
|
||
</div>
|
||
<button name="act_folklore-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_folklore_action" type="hidden" title="@{folklore_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="gamble" name="roll_gamble" value="@{gamble_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_gamble" type="number" title="@{gamble}"/>
|
||
</div>
|
||
<button name="act_gamble-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_gamble_action" type="hidden" title="@{gamble_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="heal" name="roll_heal" value="@{heal_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_heal" type="number" title="@{heal}"/>
|
||
</div>
|
||
<button name="act_heal-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_heal_action" type="hidden" title="@{heal_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="navigation" name="roll_navigation" value="@{navigation_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_navigation" type="number" title="@{navigation}"/>
|
||
</div>
|
||
<button name="act_navigation-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_navigation_action" type="hidden" title="@{navigation_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="strategy" name="roll_strategy" value="@{strategy_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_strategy" type="number" title="@{strategy}"/>
|
||
</div>
|
||
<button name="act_strategy-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_strategy_action" type="hidden" title="@{strategy_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="wortcunning" name="roll_wortcunning" value="@{wortcunning_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_wortcunning" type="number" title="@{wortcunning}"/>
|
||
</div>
|
||
<button name="act_wortcunning-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_wortcunning_action" type="hidden" title="@{wortcunning_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="odweft" name="roll_odweft" value="@{odweft_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_odweft" type="number" title="@{odweft}"/>
|
||
</div>
|
||
<button name="act_odweft-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_odweft_action" type="hidden" title="@{odweft_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="resolve" name="roll_resolve" value="@{resolve_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_resolve" type="number" title="@{resolve}"/>
|
||
</div>
|
||
<button name="act_resolve-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_resolve_action" type="hidden" title="@{resolve_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="tradecraft" name="roll_tradecraft" value="@{tradecraft_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_tradecraft" type="number" title="@{tradecraft}"/>
|
||
</div>
|
||
<button name="act_tradecraft-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_tradecraft_action" type="hidden" title="@{tradecraft_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="bargain" name="roll_bargain" value="@{bargain_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_bargain" type="number" title="@{bargain}"/>
|
||
</div>
|
||
<button name="act_bargain-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_bargain_action" type="hidden" title="@{bargain_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="charm" name="roll_charm" value="@{charm_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_charm" type="number" title="@{charm}"/>
|
||
</div>
|
||
<button name="act_charm-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_charm_action" type="hidden" title="@{charm_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="disguise" name="roll_disguise" value="@{disguise_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_disguise" type="number" title="@{disguise}"/>
|
||
</div>
|
||
<button name="act_disguise-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_disguise_action" type="hidden" title="@{disguise_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="guile" name="roll_guile" value="@{guile_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_guile" type="number" title="@{guile}"/>
|
||
</div>
|
||
<button name="act_guile-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_guile_action" type="hidden" title="@{guile_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="handle animal" name="roll_handle_animal" value="@{handle_animal_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_handle_animal" type="number" title="@{handle_animal}"/>
|
||
</div>
|
||
<button name="act_handle-animal-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_handle_animal_action" type="hidden" title="@{handle_animal_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="leadership" name="roll_leadership" value="@{leadership_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_leadership" type="number" title="@{leadership}"/>
|
||
</div>
|
||
<button name="act_leadership-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_leadership_action" type="hidden" title="@{leadership_action}"/>
|
||
<div class="input-label input-label--button center flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="rumor" name="roll_rumor" value="@{rumor_action}" type="roll">
|
||
</button>
|
||
<input class="underlined input-label__input" name="attr_rumor" type="number" title="@{rumor}"/>
|
||
</div>
|
||
<button name="act_rumor-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_rumor_action" type="hidden" title="@{rumor_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content collapsed npc_attributes skill-display">
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_melee" type="hidden" title="@{melee}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="melee" name="roll_melee" value="@{melee_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_melee" type="number" readonly="" title="@{melee}"/>
|
||
</div>
|
||
<button name="act_melee-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_melee_action" type="hidden" title="@{melee_action}"/>
|
||
<input class="non-zero-only" name="attr_ranged" type="hidden" title="@{ranged}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="ranged" name="roll_ranged" value="@{ranged_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_ranged" type="number" readonly="" title="@{ranged}"/>
|
||
</div>
|
||
<button name="act_ranged-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_ranged_action" type="hidden" title="@{ranged_action}"/>
|
||
<input class="non-zero-only" name="attr_warfare" type="hidden" title="@{warfare}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="warfare" name="roll_warfare" value="@{warfare_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_warfare" type="number" readonly="" title="@{warfare}"/>
|
||
</div>
|
||
<button name="act_warfare-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_warfare_action" type="hidden" title="@{warfare_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_athletics" type="hidden" title="@{athletics}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="athletics" name="roll_athletics" value="@{athletics_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_athletics" type="number" readonly="" title="@{athletics}"/>
|
||
</div>
|
||
<button name="act_athletics-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_athletics_action" type="hidden" title="@{athletics_action}"/>
|
||
<input class="non-zero-only" name="attr_intimidate" type="hidden" title="@{intimidate}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="intimidate" name="roll_intimidate" value="@{intimidate_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_intimidate" type="number" readonly="" title="@{intimidate}"/>
|
||
</div>
|
||
<button name="act_intimidate-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_intimidate_action" type="hidden" title="@{intimidate_action}"/>
|
||
<input class="non-zero-only" name="attr_toughness" type="hidden" title="@{toughness}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="toughness" name="roll_toughness" value="@{toughness_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_toughness" type="number" readonly="" title="@{toughness}"/>
|
||
</div>
|
||
<button name="act_toughness-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_toughness_action" type="hidden" title="@{toughness_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_coordination" type="hidden" title="@{coordination}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="coordination" name="roll_coordination" value="@{coordination_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_coordination" type="number" readonly="" title="@{coordination}"/>
|
||
</div>
|
||
<button name="act_coordination-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_coordination_action" type="hidden" title="@{coordination_action}"/>
|
||
<input class="non-zero-only" name="attr_handle_vehicle" type="hidden" title="@{handle_vehicle}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="handle vehicle" name="roll_handle_vehicle" value="@{handle_vehicle_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_handle_vehicle" type="number" readonly="" title="@{handle_vehicle}"/>
|
||
</div>
|
||
<button name="act_handle-vehicle-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_handle_vehicle_action" type="hidden" title="@{handle_vehicle_action}"/>
|
||
<input class="non-zero-only" name="attr_skuldiggery" type="hidden" title="@{skuldiggery}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="skuldiggery" name="roll_skuldiggery" value="@{skuldiggery_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_skuldiggery" type="number" readonly="" title="@{skuldiggery}"/>
|
||
</div>
|
||
<button name="act_skuldiggery-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_skuldiggery_action" type="hidden" title="@{skuldiggery_action}"/>
|
||
<input class="non-zero-only" name="attr_stealth" type="hidden" title="@{stealth}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="stealth" name="roll_stealth" value="@{stealth_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_stealth" type="number" readonly="" title="@{stealth}"/>
|
||
</div>
|
||
<button name="act_stealth-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_stealth_action" type="hidden" title="@{stealth_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_awareness" type="hidden" title="@{awareness}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="awareness" name="roll_awareness" value="@{awareness_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_awareness" type="number" readonly="" title="@{awareness}"/>
|
||
</div>
|
||
<button name="act_awareness-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_awareness_action" type="hidden" title="@{awareness_action}"/>
|
||
<input class="non-zero-only" name="attr_eavesdrop" type="hidden" title="@{eavesdrop}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="eavesdrop" name="roll_eavesdrop" value="@{eavesdrop_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_eavesdrop" type="number" readonly="" title="@{eavesdrop}"/>
|
||
</div>
|
||
<button name="act_eavesdrop-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_eavesdrop_action" type="hidden" title="@{eavesdrop_action}"/>
|
||
<input class="non-zero-only" name="attr_scrutinize" type="hidden" title="@{scrutinize}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="scrutinize" name="roll_scrutinize" value="@{scrutinize_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_scrutinize" type="number" readonly="" title="@{scrutinize}"/>
|
||
</div>
|
||
<button name="act_scrutinize-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_scrutinize_action" type="hidden" title="@{scrutinize_action}"/>
|
||
<input class="non-zero-only" name="attr_survival" type="hidden" title="@{survival}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="survival" name="roll_survival" value="@{survival_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_survival" type="number" readonly="" title="@{survival}"/>
|
||
</div>
|
||
<button name="act_survival-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_survival_action" type="hidden" title="@{survival_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_education" type="hidden" title="@{education}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="education" name="roll_education" value="@{education_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_education" type="number" readonly="" title="@{education}"/>
|
||
</div>
|
||
<button name="act_education-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_education_action" type="hidden" title="@{education_action}"/>
|
||
<input class="non-zero-only" name="attr_folklore" type="hidden" title="@{folklore}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="folklore" name="roll_folklore" value="@{folklore_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_folklore" type="number" readonly="" title="@{folklore}"/>
|
||
</div>
|
||
<button name="act_folklore-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_folklore_action" type="hidden" title="@{folklore_action}"/>
|
||
<input class="non-zero-only" name="attr_gamble" type="hidden" title="@{gamble}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="gamble" name="roll_gamble" value="@{gamble_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_gamble" type="number" readonly="" title="@{gamble}"/>
|
||
</div>
|
||
<button name="act_gamble-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_gamble_action" type="hidden" title="@{gamble_action}"/>
|
||
<input class="non-zero-only" name="attr_heal" type="hidden" title="@{heal}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="heal" name="roll_heal" value="@{heal_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_heal" type="number" readonly="" title="@{heal}"/>
|
||
</div>
|
||
<button name="act_heal-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_heal_action" type="hidden" title="@{heal_action}"/>
|
||
<input class="non-zero-only" name="attr_navigation" type="hidden" title="@{navigation}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="navigation" name="roll_navigation" value="@{navigation_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_navigation" type="number" readonly="" title="@{navigation}"/>
|
||
</div>
|
||
<button name="act_navigation-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_navigation_action" type="hidden" title="@{navigation_action}"/>
|
||
<input class="non-zero-only" name="attr_strategy" type="hidden" title="@{strategy}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="strategy" name="roll_strategy" value="@{strategy_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_strategy" type="number" readonly="" title="@{strategy}"/>
|
||
</div>
|
||
<button name="act_strategy-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_strategy_action" type="hidden" title="@{strategy_action}"/>
|
||
<input class="non-zero-only" name="attr_wortcunning" type="hidden" title="@{wortcunning}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="wortcunning" name="roll_wortcunning" value="@{wortcunning_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_wortcunning" type="number" readonly="" title="@{wortcunning}"/>
|
||
</div>
|
||
<button name="act_wortcunning-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_wortcunning_action" type="hidden" title="@{wortcunning_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_odweft" type="hidden" title="@{odweft}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="odweft" name="roll_odweft" value="@{odweft_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_odweft" type="number" readonly="" title="@{odweft}"/>
|
||
</div>
|
||
<button name="act_odweft-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_odweft_action" type="hidden" title="@{odweft_action}"/>
|
||
<input class="non-zero-only" name="attr_resolve" type="hidden" title="@{resolve}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="resolve" name="roll_resolve" value="@{resolve_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_resolve" type="number" readonly="" title="@{resolve}"/>
|
||
</div>
|
||
<button name="act_resolve-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_resolve_action" type="hidden" title="@{resolve_action}"/>
|
||
<input class="non-zero-only" name="attr_tradecraft" type="hidden" title="@{tradecraft}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="tradecraft" name="roll_tradecraft" value="@{tradecraft_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_tradecraft" type="number" readonly="" title="@{tradecraft}"/>
|
||
</div>
|
||
<button name="act_tradecraft-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_tradecraft_action" type="hidden" title="@{tradecraft_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_bargain" type="hidden" title="@{bargain}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="bargain" name="roll_bargain" value="@{bargain_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_bargain" type="number" readonly="" title="@{bargain}"/>
|
||
</div>
|
||
<button name="act_bargain-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_bargain_action" type="hidden" title="@{bargain_action}"/>
|
||
<input class="non-zero-only" name="attr_charm" type="hidden" title="@{charm}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="charm" name="roll_charm" value="@{charm_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_charm" type="number" readonly="" title="@{charm}"/>
|
||
</div>
|
||
<button name="act_charm-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_charm_action" type="hidden" title="@{charm_action}"/>
|
||
<input class="non-zero-only" name="attr_disguise" type="hidden" title="@{disguise}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="disguise" name="roll_disguise" value="@{disguise_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_disguise" type="number" readonly="" title="@{disguise}"/>
|
||
</div>
|
||
<button name="act_disguise-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_disguise_action" type="hidden" title="@{disguise_action}"/>
|
||
<input class="non-zero-only" name="attr_guile" type="hidden" title="@{guile}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="guile" name="roll_guile" value="@{guile_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_guile" type="number" readonly="" title="@{guile}"/>
|
||
</div>
|
||
<button name="act_guile-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_guile_action" type="hidden" title="@{guile_action}"/>
|
||
<input class="non-zero-only" name="attr_handle_animal" type="hidden" title="@{handle_animal}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="handle animal" name="roll_handle_animal" value="@{handle_animal_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_handle_animal" type="number" readonly="" title="@{handle_animal}"/>
|
||
</div>
|
||
<button name="act_handle-animal-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_handle_animal_action" type="hidden" title="@{handle_animal_action}"/>
|
||
<input class="non-zero-only" name="attr_leadership" type="hidden" title="@{leadership}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="leadership" name="roll_leadership" value="@{leadership_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_leadership" type="number" readonly="" title="@{leadership}"/>
|
||
</div>
|
||
<button name="act_leadership-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_leadership_action" type="hidden" title="@{leadership_action}"/>
|
||
<input class="non-zero-only" name="attr_rumor" type="hidden" title="@{rumor}"/>
|
||
<div class="input-label input-label--button center controlled-display flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" data-i18n="rumor" name="roll_rumor" value="@{rumor_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_rumor" type="number" readonly="" title="@{rumor}"/>
|
||
</div>
|
||
<button name="act_rumor-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_rumor_action" type="hidden" title="@{rumor_action}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content expanded npc_attributes special-display">
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<label class="input-label center flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="dodge"></span>
|
||
<input class="underlined input-label__input" name="attr_dodge" type="number" title="@{dodge}"/>
|
||
</label>
|
||
<label class="input-label center flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="parry"></span>
|
||
<input class="underlined input-label__input" name="attr_parry" type="number" title="@{parry}"/>
|
||
</label>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<label class="input-label center flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="damage threshold"></span>
|
||
<input class="underlined input-label__input" name="attr_damage_base_threshold" type="number" value="0" title="@{damage_base_threshold}"/>
|
||
</label>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<label class="input-label center flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="movement"></span>
|
||
<input class="underlined input-label__input" name="attr_movement" type="number" title="@{movement}"/>
|
||
</label>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input name="attr_initiative" type="hidden" title="@{initiative}"/>
|
||
<input class="underlined" name="attr_initiative" type="number" title="@{initiative}"/>
|
||
<button class="capitalize d100 roller" name="roll_initiative" data-i18n="initiative" value="@{initiative_action}" type="roll">
|
||
</button>
|
||
<button name="act_initiative-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_initiative_action" type="hidden" title="@{initiative_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<label class="input-label"><span class="capitalize input-label__text" data-i18n="size"></span>
|
||
<select class="underlined input-label__input" name="attr_size" title="@{size}">
|
||
<option size="short" data-i18n="short">
|
||
</option>
|
||
<option size="normal" data-i18n="normal">
|
||
</option>
|
||
<option size="large" data-i18n="large">
|
||
</option>
|
||
<option size="huge" data-i18n="huge">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<label class="input-label center controlled-display flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="peril threshold"></span>
|
||
<input class="underlined input-label__input" name="attr_peril_base_threshold" type="number" title="@{peril_base_threshold}"/>
|
||
</label>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<label class="input-label center flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="risk factor"></span>
|
||
<input class="underlined input-label__input" name="attr_risk_factor" type="number" title="@{risk_factor}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content collapsed npc_attributes special-display">
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_dodge" type="hidden" title="@{dodge}"/>
|
||
<label class="input-label center controlled-display flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="dodge"></span>
|
||
<input class="input-label__input" name="attr_dodge" type="number" readonly="" title="@{dodge}"/>
|
||
</label>
|
||
<input class="non-zero-only" name="attr_parry" type="hidden" title="@{parry}"/>
|
||
<label class="input-label center controlled-display flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="parry"></span>
|
||
<input class="input-label__input" name="attr_parry" type="number" readonly="" title="@{parry}"/>
|
||
</label>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label"><span class="capitalize" data-i18n="damage threshold"></span>
|
||
<div class="flex-box tiny-gap"><span name="attr_damage_base_threshold" readonly="" title="@{damage_base_threshold}"></span><span>(</span><span name="attr_damage_threshold_6" readonly="" title="@{damage_threshold_6}"></span><span>/</span><span name="attr_damage_threshold_12" readonly="" title="@{damage_threshold_12}"></span><span>/</span><span name="attr_damage_threshold_18" readonly="" title="@{damage_threshold_18}"></span><span>)</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_movement" type="hidden" title="@{movement}"/>
|
||
<label class="input-label center controlled-display capitalize flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="movement"></span>
|
||
<input class="input-label__input" name="attr_movement" type="number" readonly="" title="@{movement}"/>
|
||
</label>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<div class="input-label input-label--button capitalize flex-column-reverse stacked blackbird-label">
|
||
<button class="capitalize d100 roller" name="roll_initiative" data-i18n="initiative" value="@{initiative_action}" type="roll">
|
||
</button>
|
||
<input class="input-label__input" name="attr_initiative" readonly="" type="number" title="@{initiative}"/>
|
||
</div>
|
||
<button name="act_initiative-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_initiative_action" type="hidden" title="@{initiative_action}"/>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label"></div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label"><span class="capitalize" data-i18n="peril threshold"></span>
|
||
<div class="flex-box tiny-gap"><span name="attr_peril_base_threshold" readonly="" title="@{peril_base_threshold}"></span><span>(</span><span name="attr_peril_threshold_6" readonly="" title="@{peril_threshold_6}"></span><span>/</span><span name="attr_peril_threshold_12" readonly="" title="@{peril_threshold_12}"></span><span>/</span><span name="attr_peril_threshold_18" readonly="" title="@{peril_threshold_18}"></span><span>)</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex-box half-gap flex-wrap justify-center blackbird-label">
|
||
<input class="non-zero-only" name="attr_risk_factor" type="hidden" title="@{risk_factor}"/>
|
||
<label class="input-label center controlled-display capitalize flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="risk factor"></span>
|
||
<input class="input-label__input" name="attr_risk_factor" type="number" readonly="" title="@{risk_factor}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content weapon-display flex-box half-gap">
|
||
<h3 class="capitalize" data-i18n="attacks"></h3>
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-npc-attacks" type="action">
|
||
</button>
|
||
<fieldset class="repeating_npc-attacks">
|
||
<div class="expanded weapon-content flex-box">
|
||
<input class="underlined" name="attr_attack_name" value="" data-i18n-placeholder="attack name" type="text" title="@{repeating_npc-attacks_$X_attack_name}"/>
|
||
<label class="input-label capitalize flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="hit chance"></span>
|
||
<input class="underlined input-label__input" name="attr_hit_chance" type="number" title="@{repeating_npc-attacks_$X_hit_chance}"/>
|
||
</label>
|
||
<label class="input-label capitalize flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="range"></span>
|
||
<input class="underlined input-label__input" name="attr_range" type="text" title="@{repeating_npc-attacks_$X_range}"/>
|
||
</label>
|
||
<label class="input-label capitalize flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="damage"></span>
|
||
<input class="underlined input-label__input" name="attr_damage" type="text" title="@{repeating_npc-attacks_$X_damage}"/>
|
||
</label>
|
||
<label class="input-label capitalize flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="qualities"></span>
|
||
<input class="underlined input-label__input" name="attr_qualities" type="text" title="@{repeating_npc-attacks_$X_qualities}"/>
|
||
</label>
|
||
</div>
|
||
<button class="collapsed weapon-content--collapse tiny-gap d100 roller" name="roll_roll" value="@{action}" type="roll"><span class="bold tiny-gap" name="attr_attack_name" title="@{repeating_npc-attacks_$X_attack_name}"></span><span>: </span><span name="attr_hit_chance" title="@{repeating_npc-attacks_$X_hit_chance}"></span><span>% - Distance(</span><span name="attr_range" title="@{repeating_npc-attacks_$X_range}"></span><span>) - Damage[</span><span name="attr_damage" title="@{repeating_npc-attacks_$X_damage}"></span><span>] - </span><span name="attr_qualities" title="@{repeating_npc-attacks_$X_qualities}"></span>
|
||
</button>
|
||
<button name="act_action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_action" type="hidden" title="@{repeating_npc-attacks_$X_action}"/>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<div class="npc-traits-container">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-traits" type="action">
|
||
</button>
|
||
<fieldset class="repeating_traits">
|
||
<input class="collapse" name="attr_collapse" value="1" type="checkbox" title="@{repeating_traits_$X_collapse}"/>
|
||
<div class="collapsed flex-box tiny-gap flex-wrap">
|
||
<button class="no-icon" name="roll_roll" value="@{template_start} {{title=@{name}}} {{description=@{description}}} {{misfortune=@{misfortune}}} {{ap=@{ap_cost}}} {{action=@{action_type}}}" type="roll"><span name="attr_name" title="@{repeating_traits_$X_name}"></span>
|
||
</button>
|
||
<input name="attr_misfortune" type="hidden" classor="non-zero-only-misfortune" title="@{repeating_traits_$X_misfortune}"/>
|
||
<input class="non-zero-only-ap cost" name="attr_ap_cost" type="hidden" title="@{repeating_traits_$X_ap_cost}"/>
|
||
<input class="non-zero-only-format-action type" name="attr_action_type" type="hidden" title="@{repeating_traits_$X_action_type}"/>
|
||
<div class="flex-box"><span class="controlled-display-format">(</span>
|
||
<div class="flex-box tiny-gap">
|
||
<input class="non-zero-only" name="attr_misfortune" type="hidden" title="@{repeating_traits_$X_misfortune}"/>
|
||
<div class="controlled-display flex-box tiny-gap"><span name="attr_misfortune" title="@{repeating_traits_$X_misfortune}"></span><span class="comma" data-i18n="misfortune"></span>
|
||
</div>
|
||
<input class="non-zero-only" name="attr_ap_cost" type="hidden" title="@{repeating_traits_$X_ap_cost}"/>
|
||
<div class="controlled-display flex-box tiny-gap"><span data-i18n="ap cost"></span><span class="comma" name="attr_ap_cost" title="@{repeating_traits_$X_ap_cost}"></span>
|
||
</div>
|
||
<input class="non-zero-only" name="attr_action_type" type="hidden" title="@{repeating_traits_$X_action_type}"/><span class="controlled-display" name="attr_action_type" title="@{repeating_traits_$X_action_type}"></span>
|
||
</div><span class="controlled-display-format">)</span><span>: </span>
|
||
</div><span name="attr_description" title="@{repeating_traits_$X_description}"></span>
|
||
</div>
|
||
<div class="npc-traits expanded">
|
||
<div class="npx-traits-grid flex-box flex-wrap tiny-gap">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="name"></span>
|
||
<input class="underlined input-label__input" name="attr_name" type="text" title="@{repeating_traits_$X_name}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="misfortune"></span>
|
||
<input class="underlined input-label__input" name="attr_misfortune" type="text" title="@{repeating_traits_$X_misfortune}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="ap cost"></span>
|
||
<input class="underlined input-label__input" name="attr_ap_cost" type="text" title="@{repeating_traits_$X_ap_cost}"/>
|
||
</label>
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action type"></span>
|
||
<input class="underlined input-label__input" name="attr_action_type" type="text" title="@{repeating_traits_$X_action_type}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text"><span class="adaptive--text__span" name="attr_description" title="@{repeating_traits_$X_description}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description" title="@{repeating_traits_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</article>
|
||
<article class="tabs__container tabs--blackbirds__container tabs--blackbirds__container--advances" data-container-tab="blackbirds" data-tab="advances">
|
||
<div class="headed-section track section--tier">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="current tier"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="basic"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_tier" type="checkbox" value="1" checked="" title="@{tier}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="intermediate"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_tier" type="checkbox" value="2" title="@{tier}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content">
|
||
<label class="input-label flex-row-reverse justify-center flex-wrap half-gap pointer"><span class="input-label__text" data-i18n="advanced"></span>
|
||
<input class="blackbird-radio radio-square input-label__input" name="attr_tier" type="checkbox" value="3" title="@{tier}"/>
|
||
</label>
|
||
</div>
|
||
<div class="headed-section__content dark-content flex-box justify-center">
|
||
<label class="input-label center capitalize flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="reward points"></span>
|
||
<input class="input-label__input" name="attr_reward_points" type="number" title="@{reward_points}"/>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section section--paths">
|
||
<div class="headed-section__header">
|
||
<h2 data-i18n="path ranks"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--row">
|
||
<div class="headed-section__subheader"><span data-i18n="path reminder text"></span>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--row">
|
||
<div class="headed-section__content section--paths__content">
|
||
<h4 data-i18n="bow and blade"></h4><img src="https://files.d20.io/images/351456366/wn801fwKA72_mvnVOPsgog/original.webp" data-i18n-alt="bow and blade icon"/>
|
||
<div class="fill-left path-radios">
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_bow_and_blade" value="0" type="hidden" title="@{bow_and_blade}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_bow_and_blade" value="1" type="checkbox" title="@{bow_and_blade}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_bow_and_blade" value="2" type="checkbox" title="@{bow_and_blade}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_bow_and_blade" value="3" type="checkbox" title="@{bow_and_blade}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content section--paths__content">
|
||
<h4 data-i18n="od and ritual"></h4><img src="https://files.d20.io/images/351456358/_nlv6e6S0JmQOWTLo7y3Gw/original.webp" data-i18n-alt="od and ritual icon"/>
|
||
<div class="fill-left path-radios">
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_od_and_ritual" value="0" type="hidden" title="@{od_and_ritual}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_od_and_ritual" value="1" type="checkbox" title="@{od_and_ritual}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_od_and_ritual" value="2" type="checkbox" title="@{od_and_ritual}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_od_and_ritual" value="3" type="checkbox" title="@{od_and_ritual}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content section--paths__content">
|
||
<h4 data-i18n="shadow and subterfuge"></h4><img src="https://files.d20.io/images/351456361/K6kkjAvQ3t_2ICdZ0N0pHw/original.webp" data-i18n-alt="shadow and subterfuge icon"/>
|
||
<div class="fill-left path-radios">
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_shadow_and_subterfuge" value="0" type="hidden" title="@{shadow_and_subterfuge}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_shadow_and_subterfuge" value="1" type="checkbox" title="@{shadow_and_subterfuge}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_shadow_and_subterfuge" value="2" type="checkbox" title="@{shadow_and_subterfuge}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_shadow_and_subterfuge" value="3" type="checkbox" title="@{shadow_and_subterfuge}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content section--paths__content">
|
||
<h4 data-i18n="craft and expertise"></h4><img src="https://files.d20.io/images/351456354/EmiCSYPhzTqv5r_DZ3PrKQ/original.webp" data-i18n-alt="craft and expertise icon"/>
|
||
<div class="fill-left path-radios">
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_craft_and_expertise" value="0" type="hidden" title="@{craft_and_expertise}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_craft_and_expertise" value="1" type="checkbox" title="@{craft_and_expertise}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_craft_and_expertise" value="2" type="checkbox" title="@{craft_and_expertise}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_craft_and_expertise" value="3" type="checkbox" title="@{craft_and_expertise}"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content section--paths__content">
|
||
<h4 data-i18n="charm and manipulation"></h4><img src="https://files.d20.io/images/351456370/EgGgiuTwTmjvuQyv2F_26g/original.webp" data-i18n-alt="charm and manipulation icon"/>
|
||
<div class="fill-left path-radios">
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_charm_and_manipulation" value="0" type="hidden" title="@{charm_and_manipulation}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_charm_and_manipulation" value="1" type="checkbox" title="@{charm_and_manipulation}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_charm_and_manipulation" value="2" type="checkbox" title="@{charm_and_manipulation}"/>
|
||
<input class="blackbird-radio radio-circle fill-left__radio" name="attr_charm_and_manipulation" value="3" type="checkbox" title="@{charm_and_manipulation}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><!-- sectionName:talents-and-techniques -->
|
||
<input name="attr_talents_and_techniques_tab" value="nav-tabs-talents-and-techniques--deck" type="hidden" title="@{talents_and_techniques_tab}"/>
|
||
<div class="tabs tabs--talents-and-techniques">
|
||
<nav class="tabs__header tabs--talents-and-techniques__header">
|
||
<ul class="tabs__nav-list">
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--talents-and-techniques__button tabs--talents-and-techniques__button--talents" name="act_nav-tabs-talents-and-techniques--talents" data-container-button="talents-and-techniques" data-button="talents" data-i18n="tabs-talents-and-techniques-talents" type="action" data-container-tab="talents-and-techniques" data-tab="talents">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--talents-and-techniques__button tabs--talents-and-techniques__button--techniques" name="act_nav-tabs-talents-and-techniques--techniques" data-container-button="talents-and-techniques" data-button="techniques" data-i18n="tabs-talents-and-techniques-techniques" type="action" data-container-tab="talents-and-techniques" data-tab="techniques">
|
||
</button>
|
||
</li>
|
||
<li class="tabs__nav-item">
|
||
<button class="tabs__button tabs--talents-and-techniques__button tabs--talents-and-techniques__button--deck" name="act_nav-tabs-talents-and-techniques--deck" data-container-button="talents-and-techniques" data-button="deck" data-i18n="tabs-talents-and-techniques-deck" type="action" data-container-tab="talents-and-techniques" data-tab="deck">
|
||
</button>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
<div class="tabs__body tabs--talents-and-techniques__body">
|
||
<section class="tabs__container tabs--talents-and-techniques__container tabs--talents-and-techniques__container--talents" data-container-tab="talents-and-techniques" data-tab="talents">
|
||
<div class="headed-section slot-talent card-slot">
|
||
<div class="headed-section__header card-slot__header">
|
||
<input class="collapse" name="attr_basic_talent_show_details" value="1" type="checkbox" title="@{basic_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
<h2 data-i18n="basic"></h2>
|
||
<button class="material-icons unslot-button expanded-disable" name="act_basic-talent-unslot" type="action">eject
|
||
</button>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader card-slot__subheader collapse-container">
|
||
<input class="collapse" name="attr_basic_talent_show_details" value="1" type="checkbox" title="@{basic_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content card-slot__content collapse-container">
|
||
<input class="collapse" name="attr_basic_talent_show_details" value="1" type="checkbox" title="@{basic_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
<div class="card collapse-container collapsed card-slot__selection">
|
||
<div class="card__flip-box">
|
||
<label class="slot-select"><span class="card-slot__plus" aria-level="1">+</span>
|
||
<select class="basic-talent-options" name="attr_basic_talent_id" data-i18n-title="Slot a basic talent" title="@{basic_talent_id}">
|
||
<option value="">
|
||
</option>
|
||
<option value="new">new
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="card__content card__view">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card collapse-container expanded card--talent-technique">
|
||
<input class="collapse card__flip" name="attr_basic_talent_extinguished" value="1" type="checkbox" title="@{basic_talent_extinguished}" hidden="hidden"/>
|
||
<div class="card__flip-box">
|
||
<input class="collapse material-symbols material-symbols--sharp" name="attr_basic_talent_extinguished" value="1" type="checkbox" title="@{basic_talent_extinguished}" hidden=""/><!-- attributes: {} -->
|
||
<div class="card__content card__view"><img class="card-icon" name="attr_basic_talent_icon" data-i18n-alt="path icon" title="@{basic_talent_icon}"/><img class="card-image" name="attr_basic_talent_image" data-i18n-alt="path image" title="@{basic_talent_image}"/>
|
||
<h3 class="card-label"><span name="attr_basic_talent_type" title="@{basic_talent_type}"></span>
|
||
</h3>
|
||
</div>
|
||
<div class="card__content card__edit card--talent">
|
||
<input class="underlined name grid-span-all" name="attr_basic_talent_name" data-i18n-placeholder="basic talent name" type="text" title="@{basic_talent_name}"/>
|
||
<select class="underlined type" name="attr_basic_talent_type" title="@{basic_talent_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_basic_talent_tier" title="@{basic_talent_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_basic_talent_prerequisites" type="text" title="@{basic_talent_prerequisites}"/>
|
||
</label>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_basic_talent_description" title="@{basic_talent_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_basic_talent_description" data-i18n-placeholder="description" title="@{basic_talent_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section slot-talent card-slot">
|
||
<div class="headed-section__header card-slot__header">
|
||
<input class="collapse" name="attr_intermediate_talent_show_details" value="1" type="checkbox" title="@{intermediate_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
<h2 data-i18n="intermediate"></h2>
|
||
<button class="material-icons unslot-button expanded-disable" name="act_intermediate-talent-unslot" type="action">eject
|
||
</button>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader card-slot__subheader collapse-container">
|
||
<input class="collapse" name="attr_intermediate_talent_show_details" value="1" type="checkbox" title="@{intermediate_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content card-slot__content collapse-container">
|
||
<input class="collapse" name="attr_intermediate_talent_show_details" value="1" type="checkbox" title="@{intermediate_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
<div class="card collapse-container collapsed card-slot__selection">
|
||
<div class="card__flip-box">
|
||
<label class="slot-select"><span class="card-slot__plus" aria-level="1">+</span>
|
||
<select class="intermediate-talent-options" name="attr_intermediate_talent_id" data-i18n-title="Slot a intermediate talent" title="@{intermediate_talent_id}">
|
||
<option value="">
|
||
</option>
|
||
<option value="new">new
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="card__content card__view">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card collapse-container expanded card--talent-technique">
|
||
<input class="collapse card__flip" name="attr_intermediate_talent_extinguished" value="1" type="checkbox" title="@{intermediate_talent_extinguished}" hidden="hidden"/>
|
||
<div class="card__flip-box">
|
||
<input class="collapse material-symbols material-symbols--sharp" name="attr_intermediate_talent_extinguished" value="1" type="checkbox" title="@{intermediate_talent_extinguished}" hidden=""/><!-- attributes: {} -->
|
||
<div class="card__content card__view"><img class="card-icon" name="attr_intermediate_talent_icon" data-i18n-alt="path icon" title="@{intermediate_talent_icon}"/><img class="card-image" name="attr_intermediate_talent_image" data-i18n-alt="path image" title="@{intermediate_talent_image}"/>
|
||
<h3 class="card-label"><span name="attr_intermediate_talent_type" title="@{intermediate_talent_type}"></span>
|
||
</h3>
|
||
</div>
|
||
<div class="card__content card__edit card--talent">
|
||
<input class="underlined name grid-span-all" name="attr_intermediate_talent_name" data-i18n-placeholder="intermediate talent name" type="text" title="@{intermediate_talent_name}"/>
|
||
<select class="underlined type" name="attr_intermediate_talent_type" title="@{intermediate_talent_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_intermediate_talent_tier" title="@{intermediate_talent_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_intermediate_talent_prerequisites" type="text" title="@{intermediate_talent_prerequisites}"/>
|
||
</label>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_intermediate_talent_description" title="@{intermediate_talent_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_intermediate_talent_description" data-i18n-placeholder="description" title="@{intermediate_talent_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section slot-talent card-slot">
|
||
<div class="headed-section__header card-slot__header">
|
||
<input class="collapse" name="attr_advanced_talent_show_details" value="1" type="checkbox" title="@{advanced_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
<h2 data-i18n="advanced"></h2>
|
||
<button class="material-icons unslot-button expanded-disable" name="act_advanced-talent-unslot" type="action">eject
|
||
</button>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader card-slot__subheader collapse-container">
|
||
<input class="collapse" name="attr_advanced_talent_show_details" value="1" type="checkbox" title="@{advanced_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content card-slot__content collapse-container">
|
||
<input class="collapse" name="attr_advanced_talent_show_details" value="1" type="checkbox" title="@{advanced_talent_show_details}" checked="checked" hidden="hidden"/>
|
||
<div class="card collapse-container collapsed card-slot__selection">
|
||
<div class="card__flip-box">
|
||
<label class="slot-select"><span class="card-slot__plus" aria-level="1">+</span>
|
||
<select class="advanced-talent-options" name="attr_advanced_talent_id" data-i18n-title="Slot a advanced talent" title="@{advanced_talent_id}">
|
||
<option value="">
|
||
</option>
|
||
<option value="new">new
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="card__content card__view">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card collapse-container expanded card--talent-technique">
|
||
<input class="collapse card__flip" name="attr_advanced_talent_extinguished" value="1" type="checkbox" title="@{advanced_talent_extinguished}" hidden="hidden"/>
|
||
<div class="card__flip-box">
|
||
<input class="collapse material-symbols material-symbols--sharp" name="attr_advanced_talent_extinguished" value="1" type="checkbox" title="@{advanced_talent_extinguished}" hidden=""/><!-- attributes: {} -->
|
||
<div class="card__content card__view"><img class="card-icon" name="attr_advanced_talent_icon" data-i18n-alt="path icon" title="@{advanced_talent_icon}"/><img class="card-image" name="attr_advanced_talent_image" data-i18n-alt="path image" title="@{advanced_talent_image}"/>
|
||
<h3 class="card-label"><span name="attr_advanced_talent_type" title="@{advanced_talent_type}"></span>
|
||
</h3>
|
||
</div>
|
||
<div class="card__content card__edit card--talent">
|
||
<input class="underlined name grid-span-all" name="attr_advanced_talent_name" data-i18n-placeholder="advanced talent name" type="text" title="@{advanced_talent_name}"/>
|
||
<select class="underlined type" name="attr_advanced_talent_type" title="@{advanced_talent_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_advanced_talent_tier" title="@{advanced_talent_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_advanced_talent_prerequisites" type="text" title="@{advanced_talent_prerequisites}"/>
|
||
</label>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_advanced_talent_description" title="@{advanced_talent_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_advanced_talent_description" data-i18n-placeholder="description" title="@{advanced_talent_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="tabs__container tabs--talents-and-techniques__container tabs--talents-and-techniques__container--techniques" data-container-tab="talents-and-techniques" data-tab="techniques">
|
||
<div class="headed-section slot-technique card-slot">
|
||
<div class="headed-section__header card-slot__header">
|
||
<input class="collapse" name="attr_basic_technique_show_details" value="1" type="checkbox" title="@{basic_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<h2 data-i18n="basic"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader card-slot__subheader collapse-container">
|
||
<input class="collapse" name="attr_basic_technique_show_details" value="1" type="checkbox" title="@{basic_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<label class="expanded collapse-container">
|
||
<input class="collapse" name="attr_basic_technique_extinguished" hidden="" value="1" type="checkbox" title="@{basic_technique_extinguished}"/>
|
||
<h4 class="expanded" data-i18n="extinguish"></h4>
|
||
<h4 class="collapsed" data-i18n="rekindle"></h4>
|
||
</label>
|
||
<button class="material-icons unslot-button expanded-disable" name="act_basic-technique-unslot" type="action">eject
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content card-slot__content collapse-container">
|
||
<input class="collapse" name="attr_basic_technique_show_details" value="1" type="checkbox" title="@{basic_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<div class="card collapse-container collapsed card-slot__selection">
|
||
<div class="card__flip-box">
|
||
<label class="slot-select"><span class="card-slot__plus" aria-level="1">+</span>
|
||
<select class="basic-technique-options" name="attr_basic_technique_id" data-i18n-title="Slot a basic technique" title="@{basic_technique_id}">
|
||
<option value="">
|
||
</option>
|
||
<option value="new">new
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="card__content card__view">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card collapse-container expanded card--talent-technique">
|
||
<input class="collapse card__flip" name="attr_basic_technique_extinguished" value="1" type="checkbox" title="@{basic_technique_extinguished}" hidden="hidden"/>
|
||
<div class="card__flip-box">
|
||
<input class="collapse material-symbols material-symbols--sharp" name="attr_basic_technique_extinguished" value="1" type="checkbox" title="@{basic_technique_extinguished}" hidden=""/><!-- attributes: {} -->
|
||
<div class="card__content card__view"><img class="card-icon" name="attr_basic_technique_icon" data-i18n-alt="path icon" title="@{basic_technique_icon}"/><img class="card-image" name="attr_basic_technique_image" data-i18n-alt="path image" title="@{basic_technique_image}"/>
|
||
<h3 class="card-label"><span name="attr_basic_technique_type" title="@{basic_technique_type}"></span>
|
||
</h3>
|
||
</div>
|
||
<div class="card__content card__edit card--technique">
|
||
<input class="underlined name grid-span-all" name="attr_basic_technique_name" data-i18n-placeholder="basic technique name" type="text" title="@{basic_technique_name}"/>
|
||
<select class="underlined type" name="attr_basic_technique_type" title="@{basic_technique_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_basic_technique_tier" title="@{basic_technique_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_basic_technique_prerequisites" type="text" title="@{basic_technique_prerequisites}"/>
|
||
</label>
|
||
<ul class="grid-span-all">
|
||
<li>
|
||
<input class="collapse" name="attr_basic_technique_type_1" value="passive" type="checkbox" title="@{basic_technique_type_1}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_basic_technique_roll_1" value="@{basic_technique_roll_1_action}" type="roll">
|
||
</button>
|
||
<button name="act_basic-technique-basic-technique-roll-1-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_basic_technique_basic_technique_roll_1_action" type="hidden" title="@{basic_technique_basic_technique_roll_1_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_basic_technique_name_1" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{basic_technique_name_1}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_basic_technique_type_1" title="@{basic_technique_type_1}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_basic_technique_test_1" title="@{basic_technique_test_1}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_basic_technique_cost_1" type="text" title="@{basic_technique_cost_1}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_basic_technique_description_1" title="@{basic_technique_description_1}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_basic_technique_description_1" data-i18n-placeholder="ability description" title="@{basic_technique_description_1}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_basic_technique_type_2" value="passive" type="checkbox" title="@{basic_technique_type_2}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_basic_technique_roll_2" value="@{basic_technique_roll_2_action}" type="roll">
|
||
</button>
|
||
<button name="act_basic-technique-basic-technique-roll-2-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_basic_technique_basic_technique_roll_2_action" type="hidden" title="@{basic_technique_basic_technique_roll_2_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_basic_technique_name_2" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{basic_technique_name_2}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_basic_technique_type_2" title="@{basic_technique_type_2}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_basic_technique_test_2" title="@{basic_technique_test_2}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_basic_technique_cost_2" type="text" title="@{basic_technique_cost_2}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_basic_technique_description_2" title="@{basic_technique_description_2}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_basic_technique_description_2" data-i18n-placeholder="ability description" title="@{basic_technique_description_2}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_basic_technique_type_3" value="passive" type="checkbox" title="@{basic_technique_type_3}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_basic_technique_roll_3" value="@{basic_technique_roll_3_action}" type="roll">
|
||
</button>
|
||
<button name="act_basic-technique-basic-technique-roll-3-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_basic_technique_basic_technique_roll_3_action" type="hidden" title="@{basic_technique_basic_technique_roll_3_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_basic_technique_name_3" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{basic_technique_name_3}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_basic_technique_type_3" title="@{basic_technique_type_3}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_basic_technique_test_3" title="@{basic_technique_test_3}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_basic_technique_cost_3" type="text" title="@{basic_technique_cost_3}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_basic_technique_description_3" title="@{basic_technique_description_3}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_basic_technique_description_3" data-i18n-placeholder="ability description" title="@{basic_technique_description_3}"></textarea>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_basic_technique_description" title="@{basic_technique_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_basic_technique_description" data-i18n-placeholder="description" title="@{basic_technique_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section slot-technique card-slot">
|
||
<div class="headed-section__header card-slot__header">
|
||
<input class="collapse" name="attr_intermediate_technique_show_details" value="1" type="checkbox" title="@{intermediate_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<h2 data-i18n="intermediate"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader card-slot__subheader collapse-container">
|
||
<input class="collapse" name="attr_intermediate_technique_show_details" value="1" type="checkbox" title="@{intermediate_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<label class="expanded collapse-container">
|
||
<input class="collapse" name="attr_intermediate_technique_extinguished" hidden="" value="1" type="checkbox" title="@{intermediate_technique_extinguished}"/>
|
||
<h4 class="expanded" data-i18n="extinguish"></h4>
|
||
<h4 class="collapsed" data-i18n="rekindle"></h4>
|
||
</label>
|
||
<button class="material-icons unslot-button expanded-disable" name="act_intermediate-technique-unslot" type="action">eject
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content card-slot__content collapse-container">
|
||
<input class="collapse" name="attr_intermediate_technique_show_details" value="1" type="checkbox" title="@{intermediate_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<div class="card collapse-container collapsed card-slot__selection">
|
||
<div class="card__flip-box">
|
||
<label class="slot-select"><span class="card-slot__plus" aria-level="1">+</span>
|
||
<select class="intermediate-technique-options" name="attr_intermediate_technique_id" data-i18n-title="Slot a intermediate technique" title="@{intermediate_technique_id}">
|
||
<option value="">
|
||
</option>
|
||
<option value="new">new
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="card__content card__view">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card collapse-container expanded card--talent-technique">
|
||
<input class="collapse card__flip" name="attr_intermediate_technique_extinguished" value="1" type="checkbox" title="@{intermediate_technique_extinguished}" hidden="hidden"/>
|
||
<div class="card__flip-box">
|
||
<input class="collapse material-symbols material-symbols--sharp" name="attr_intermediate_technique_extinguished" value="1" type="checkbox" title="@{intermediate_technique_extinguished}" hidden=""/><!-- attributes: {} -->
|
||
<div class="card__content card__view"><img class="card-icon" name="attr_intermediate_technique_icon" data-i18n-alt="path icon" title="@{intermediate_technique_icon}"/><img class="card-image" name="attr_intermediate_technique_image" data-i18n-alt="path image" title="@{intermediate_technique_image}"/>
|
||
<h3 class="card-label"><span name="attr_intermediate_technique_type" title="@{intermediate_technique_type}"></span>
|
||
</h3>
|
||
</div>
|
||
<div class="card__content card__edit card--technique">
|
||
<input class="underlined name grid-span-all" name="attr_intermediate_technique_name" data-i18n-placeholder="intermediate technique name" type="text" title="@{intermediate_technique_name}"/>
|
||
<select class="underlined type" name="attr_intermediate_technique_type" title="@{intermediate_technique_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_intermediate_technique_tier" title="@{intermediate_technique_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_intermediate_technique_prerequisites" type="text" title="@{intermediate_technique_prerequisites}"/>
|
||
</label>
|
||
<ul class="grid-span-all">
|
||
<li>
|
||
<input class="collapse" name="attr_intermediate_technique_type_1" value="passive" type="checkbox" title="@{intermediate_technique_type_1}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_intermediate_technique_roll_1" value="@{intermediate_technique_roll_1_action}" type="roll">
|
||
</button>
|
||
<button name="act_intermediate-technique-intermediate-technique-roll-1-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_intermediate_technique_intermediate_technique_roll_1_action" type="hidden" title="@{intermediate_technique_intermediate_technique_roll_1_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_intermediate_technique_name_1" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{intermediate_technique_name_1}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_intermediate_technique_type_1" title="@{intermediate_technique_type_1}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_intermediate_technique_test_1" title="@{intermediate_technique_test_1}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_intermediate_technique_cost_1" type="text" title="@{intermediate_technique_cost_1}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_intermediate_technique_description_1" title="@{intermediate_technique_description_1}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_intermediate_technique_description_1" data-i18n-placeholder="ability description" title="@{intermediate_technique_description_1}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_intermediate_technique_type_2" value="passive" type="checkbox" title="@{intermediate_technique_type_2}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_intermediate_technique_roll_2" value="@{intermediate_technique_roll_2_action}" type="roll">
|
||
</button>
|
||
<button name="act_intermediate-technique-intermediate-technique-roll-2-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_intermediate_technique_intermediate_technique_roll_2_action" type="hidden" title="@{intermediate_technique_intermediate_technique_roll_2_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_intermediate_technique_name_2" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{intermediate_technique_name_2}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_intermediate_technique_type_2" title="@{intermediate_technique_type_2}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_intermediate_technique_test_2" title="@{intermediate_technique_test_2}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_intermediate_technique_cost_2" type="text" title="@{intermediate_technique_cost_2}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_intermediate_technique_description_2" title="@{intermediate_technique_description_2}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_intermediate_technique_description_2" data-i18n-placeholder="ability description" title="@{intermediate_technique_description_2}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_intermediate_technique_type_3" value="passive" type="checkbox" title="@{intermediate_technique_type_3}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_intermediate_technique_roll_3" value="@{intermediate_technique_roll_3_action}" type="roll">
|
||
</button>
|
||
<button name="act_intermediate-technique-intermediate-technique-roll-3-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_intermediate_technique_intermediate_technique_roll_3_action" type="hidden" title="@{intermediate_technique_intermediate_technique_roll_3_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_intermediate_technique_name_3" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{intermediate_technique_name_3}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_intermediate_technique_type_3" title="@{intermediate_technique_type_3}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_intermediate_technique_test_3" title="@{intermediate_technique_test_3}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_intermediate_technique_cost_3" type="text" title="@{intermediate_technique_cost_3}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_intermediate_technique_description_3" title="@{intermediate_technique_description_3}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_intermediate_technique_description_3" data-i18n-placeholder="ability description" title="@{intermediate_technique_description_3}"></textarea>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_intermediate_technique_description" title="@{intermediate_technique_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_intermediate_technique_description" data-i18n-placeholder="description" title="@{intermediate_technique_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section slot-technique card-slot">
|
||
<div class="headed-section__header card-slot__header">
|
||
<input class="collapse" name="attr_advanced_technique_show_details" value="1" type="checkbox" title="@{advanced_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<h2 data-i18n="advanced"></h2>
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--full headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader card-slot__subheader collapse-container">
|
||
<input class="collapse" name="attr_advanced_technique_show_details" value="1" type="checkbox" title="@{advanced_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<label class="expanded collapse-container">
|
||
<input class="collapse" name="attr_advanced_technique_extinguished" hidden="" value="1" type="checkbox" title="@{advanced_technique_extinguished}"/>
|
||
<h4 class="expanded" data-i18n="extinguish"></h4>
|
||
<h4 class="collapsed" data-i18n="rekindle"></h4>
|
||
</label>
|
||
<button class="material-icons unslot-button expanded-disable" name="act_advanced-technique-unslot" type="action">eject
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--full headed-section__content-area--column">
|
||
<div class="headed-section__content card-slot__content collapse-container">
|
||
<input class="collapse" name="attr_advanced_technique_show_details" value="1" type="checkbox" title="@{advanced_technique_show_details}" checked="checked" hidden="hidden"/>
|
||
<div class="card collapse-container collapsed card-slot__selection">
|
||
<div class="card__flip-box">
|
||
<label class="slot-select"><span class="card-slot__plus" aria-level="1">+</span>
|
||
<select class="advanced-technique-options" name="attr_advanced_technique_id" data-i18n-title="Slot a advanced technique" title="@{advanced_technique_id}">
|
||
<option value="">
|
||
</option>
|
||
<option value="new">new
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<div class="card__content card__view">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card collapse-container expanded card--talent-technique">
|
||
<input class="collapse card__flip" name="attr_advanced_technique_extinguished" value="1" type="checkbox" title="@{advanced_technique_extinguished}" hidden="hidden"/>
|
||
<div class="card__flip-box">
|
||
<input class="collapse material-symbols material-symbols--sharp" name="attr_advanced_technique_extinguished" value="1" type="checkbox" title="@{advanced_technique_extinguished}" hidden=""/><!-- attributes: {} -->
|
||
<div class="card__content card__view"><img class="card-icon" name="attr_advanced_technique_icon" data-i18n-alt="path icon" title="@{advanced_technique_icon}"/><img class="card-image" name="attr_advanced_technique_image" data-i18n-alt="path image" title="@{advanced_technique_image}"/>
|
||
<h3 class="card-label"><span name="attr_advanced_technique_type" title="@{advanced_technique_type}"></span>
|
||
</h3>
|
||
</div>
|
||
<div class="card__content card__edit card--technique">
|
||
<input class="underlined name grid-span-all" name="attr_advanced_technique_name" data-i18n-placeholder="advanced technique name" type="text" title="@{advanced_technique_name}"/>
|
||
<select class="underlined type" name="attr_advanced_technique_type" title="@{advanced_technique_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_advanced_technique_tier" title="@{advanced_technique_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_advanced_technique_prerequisites" type="text" title="@{advanced_technique_prerequisites}"/>
|
||
</label>
|
||
<ul class="grid-span-all">
|
||
<li>
|
||
<input class="collapse" name="attr_advanced_technique_type_1" value="passive" type="checkbox" title="@{advanced_technique_type_1}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_advanced_technique_roll_1" value="@{advanced_technique_roll_1_action}" type="roll">
|
||
</button>
|
||
<button name="act_advanced-technique-advanced-technique-roll-1-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_advanced_technique_advanced_technique_roll_1_action" type="hidden" title="@{advanced_technique_advanced_technique_roll_1_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_advanced_technique_name_1" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{advanced_technique_name_1}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_advanced_technique_type_1" title="@{advanced_technique_type_1}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_advanced_technique_test_1" title="@{advanced_technique_test_1}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_advanced_technique_cost_1" type="text" title="@{advanced_technique_cost_1}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_advanced_technique_description_1" title="@{advanced_technique_description_1}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_advanced_technique_description_1" data-i18n-placeholder="ability description" title="@{advanced_technique_description_1}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_advanced_technique_type_2" value="passive" type="checkbox" title="@{advanced_technique_type_2}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_advanced_technique_roll_2" value="@{advanced_technique_roll_2_action}" type="roll">
|
||
</button>
|
||
<button name="act_advanced-technique-advanced-technique-roll-2-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_advanced_technique_advanced_technique_roll_2_action" type="hidden" title="@{advanced_technique_advanced_technique_roll_2_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_advanced_technique_name_2" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{advanced_technique_name_2}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_advanced_technique_type_2" title="@{advanced_technique_type_2}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_advanced_technique_test_2" title="@{advanced_technique_test_2}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_advanced_technique_cost_2" type="text" title="@{advanced_technique_cost_2}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_advanced_technique_description_2" title="@{advanced_technique_description_2}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_advanced_technique_description_2" data-i18n-placeholder="ability description" title="@{advanced_technique_description_2}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_advanced_technique_type_3" value="passive" type="checkbox" title="@{advanced_technique_type_3}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_advanced_technique_roll_3" value="@{advanced_technique_roll_3_action}" type="roll">
|
||
</button>
|
||
<button name="act_advanced-technique-advanced-technique-roll-3-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_advanced_technique_advanced_technique_roll_3_action" type="hidden" title="@{advanced_technique_advanced_technique_roll_3_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_advanced_technique_name_3" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{advanced_technique_name_3}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_advanced_technique_type_3" title="@{advanced_technique_type_3}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_advanced_technique_test_3" title="@{advanced_technique_test_3}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_advanced_technique_cost_3" type="text" title="@{advanced_technique_cost_3}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_advanced_technique_description_3" title="@{advanced_technique_description_3}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_advanced_technique_description_3" data-i18n-placeholder="ability description" title="@{advanced_technique_description_3}"></textarea>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_advanced_technique_description" title="@{advanced_technique_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_advanced_technique_description" data-i18n-placeholder="description" title="@{advanced_technique_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="tabs__container tabs--talents-and-techniques__container tabs--talents-and-techniques__container--deck" data-container-tab="talents-and-techniques" data-tab="deck">
|
||
<div class="deck-container ability-deck">
|
||
<button class="repcontrol-button repcontrol-button--add" name="act_add-deck" type="action">
|
||
</button>
|
||
<fieldset class="repeating_deck">
|
||
<div class="card collapse-container">
|
||
<input class="collapse card__flip" name="attr_slot_flip" value="1" type="checkbox" title="@{repeating_deck_$X_slot_flip}" hidden="hidden"/>
|
||
<div class="card__flip-box">
|
||
<input class="collapse material-symbols material-symbols--sharp" name="attr_slot_flip" value="1" type="checkbox" title="@{repeating_deck_$X_slot_flip}" hidden=""/><!-- attributes: {"class":"techniques card--technique"} -->
|
||
<div class="card__content card__view techniques card--technique">
|
||
<input class="underlined name grid-span-all" name="attr_name" data-i18n-placeholder=" name" type="text" title="@{repeating_deck_$X_name}"/>
|
||
<select class="underlined type" name="attr_type" title="@{repeating_deck_$X_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_tier" title="@{repeating_deck_$X_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_prerequisites" type="text" title="@{repeating_deck_$X_prerequisites}"/>
|
||
</label>
|
||
<select class="underlined" name="attr_slot" title="@{repeating_deck_$X_slot}">
|
||
<option value="talent" data-i18n="talent" selected="">
|
||
</option>
|
||
<option value="technique" data-i18n="technique">
|
||
</option>
|
||
</select>
|
||
<ul class="grid-span-all">
|
||
<li>
|
||
<input class="collapse" name="attr_type_1" value="passive" type="checkbox" title="@{repeating_deck_$X_type_1}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_roll_1" value="@{roll_1_action}" type="roll">
|
||
</button>
|
||
<button name="act_roll-1-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_roll_1_action" type="hidden" title="@{repeating_deck_$X_roll_1_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_name_1" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{repeating_deck_$X_name_1}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_type_1" title="@{repeating_deck_$X_type_1}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_test_1" title="@{repeating_deck_$X_test_1}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_cost_1" type="text" title="@{repeating_deck_$X_cost_1}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description_1" title="@{repeating_deck_$X_description_1}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description_1" data-i18n-placeholder="ability description" title="@{repeating_deck_$X_description_1}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_type_2" value="passive" type="checkbox" title="@{repeating_deck_$X_type_2}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_roll_2" value="@{roll_2_action}" type="roll">
|
||
</button>
|
||
<button name="act_roll-2-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_roll_2_action" type="hidden" title="@{repeating_deck_$X_roll_2_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_name_2" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{repeating_deck_$X_name_2}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_type_2" title="@{repeating_deck_$X_type_2}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_test_2" title="@{repeating_deck_$X_test_2}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_cost_2" type="text" title="@{repeating_deck_$X_cost_2}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description_2" title="@{repeating_deck_$X_description_2}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description_2" data-i18n-placeholder="ability description" title="@{repeating_deck_$X_description_2}"></textarea>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<input class="collapse" name="attr_type_3" value="passive" type="checkbox" title="@{repeating_deck_$X_type_3}" hidden="hidden"/>
|
||
<button class="expanded roller" name="roll_roll_3" value="@{roll_3_action}" type="roll">
|
||
</button>
|
||
<button name="act_roll-3-action" hidden="" type="action">
|
||
</button>
|
||
<input name="attr_roll_3_action" type="hidden" title="@{repeating_deck_$X_roll_3_action}"/>
|
||
<input class="underlined ability-name conditional-span-all" name="attr_name_3" value="" role="heading" aria-level="4" data-i18n-placeholder="ability name" type="text" title="@{repeating_deck_$X_name_3}"/>
|
||
<div class="grid-span-all collapse-container action-line">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="action"></span>
|
||
<select class="underlined input-label__input" name="attr_type_3" title="@{repeating_deck_$X_type_3}">
|
||
<option value="">??
|
||
</option>
|
||
<option value="passive" data-i18n="passive">
|
||
</option>
|
||
<option value="reaction" data-i18n="reaction">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="non-combat" data-i18n="non-combat">
|
||
</option>
|
||
<option value="combat" data-i18n="combat">
|
||
</option>
|
||
<option value="special" data-i18n="special">
|
||
</option>
|
||
<option value="extinguish" data-i18n="extinguish">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
<label class="input-label expanded flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="test"></span>
|
||
<select class="underlined input-label__input" name="attr_test_3" title="@{repeating_deck_$X_test_3}">
|
||
<option value="" data-i18n="none" selected="">
|
||
</option>
|
||
<option value="melee" data-i18n="melee">
|
||
</option>
|
||
<option value="ranged" data-i18n="ranged">
|
||
</option>
|
||
<option value="warfare" data-i18n="warfare">
|
||
</option>
|
||
<option value="athletics" data-i18n="athletics">
|
||
</option>
|
||
<option value="intimidate" data-i18n="intimidate">
|
||
</option>
|
||
<option value="toughness" data-i18n="toughness">
|
||
</option>
|
||
<option value="coordination" data-i18n="coordination">
|
||
</option>
|
||
<option value="handle_vehicle" data-i18n="handle vehicle">
|
||
</option>
|
||
<option value="skuldiggery" data-i18n="skuldiggery">
|
||
</option>
|
||
<option value="stealth" data-i18n="stealth">
|
||
</option>
|
||
<option value="awareness" data-i18n="awareness">
|
||
</option>
|
||
<option value="eavesdrop" data-i18n="eavesdrop">
|
||
</option>
|
||
<option value="scrutinize" data-i18n="scrutinize">
|
||
</option>
|
||
<option value="survival" data-i18n="survival">
|
||
</option>
|
||
<option value="education" data-i18n="education">
|
||
</option>
|
||
<option value="folklore" data-i18n="folklore">
|
||
</option>
|
||
<option value="gamble" data-i18n="gamble">
|
||
</option>
|
||
<option value="heal" data-i18n="heal">
|
||
</option>
|
||
<option value="navigation" data-i18n="navigation">
|
||
</option>
|
||
<option value="strategy" data-i18n="strategy">
|
||
</option>
|
||
<option value="wortcunning" data-i18n="wortcunning">
|
||
</option>
|
||
<option value="odweft" data-i18n="odweft">
|
||
</option>
|
||
<option value="resolve" data-i18n="resolve">
|
||
</option>
|
||
<option value="tradecraft" data-i18n="tradecraft">
|
||
</option>
|
||
<option value="bargain" data-i18n="bargain">
|
||
</option>
|
||
<option value="charm" data-i18n="charm">
|
||
</option>
|
||
<option value="disguise" data-i18n="disguise">
|
||
</option>
|
||
<option value="guile" data-i18n="guile">
|
||
</option>
|
||
<option value="handle_animal" data-i18n="handle animal">
|
||
</option>
|
||
<option value="leadership" data-i18n="leadership">
|
||
</option>
|
||
<option value="rumor" data-i18n="rumor">
|
||
</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div class="expanded grid-span-all flex-box">
|
||
<label class="input-label flex-column-reverse stacked blackbird-label"><span class="input-label__text" data-i18n="cost"></span>
|
||
<input class="underlined input-label__input" name="attr_cost_3" type="text" title="@{repeating_deck_$X_cost_3}"/>
|
||
</label>
|
||
</div>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description_3" title="@{repeating_deck_$X_description_3}"></span>
|
||
<textarea class="underlined adaptive--text__textarea" name="attr_description_3" data-i18n-placeholder="ability description" title="@{repeating_deck_$X_description_3}"></textarea>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description" title="@{repeating_deck_$X_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_description" data-i18n-placeholder="description" title="@{repeating_deck_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
<div class="card__content card__edit talents card--talent">
|
||
<input class="underlined name grid-span-all" name="attr_name" data-i18n-placeholder=" name" type="text" title="@{repeating_deck_$X_name}"/>
|
||
<select class="underlined type" name="attr_type" title="@{repeating_deck_$X_type}">
|
||
<option value="" data-i18n="select one">
|
||
</option>
|
||
<option value="bow and blade" data-i18n="bow and blade">
|
||
</option>
|
||
<option value="od and ritual" data-i18n="od and ritual">
|
||
</option>
|
||
<option value="shadow and subterfuge" data-i18n="shadow and subterfuge">
|
||
</option>
|
||
<option value="craft and expertise" data-i18n="craft and expertise">
|
||
</option>
|
||
<option value="charm and manipulation" data-i18n="charm and manipulation">
|
||
</option>
|
||
</select>
|
||
<select class="underlined tier" name="attr_tier" title="@{repeating_deck_$X_tier}">
|
||
<option value="basic" selected="">1
|
||
</option>
|
||
<option value="intermediate">2
|
||
</option>
|
||
<option value="advanced">3
|
||
</option>
|
||
</select>
|
||
<label class="input-label prereqs grid-span-all flex-column-reverse stacked blackbird-label"><span class="capitalize input-label__text" data-i18n="prerequisite abbreviation"></span>
|
||
<input class="underlined input-label__input" name="attr_prerequisites" type="text" title="@{repeating_deck_$X_prerequisites}"/>
|
||
</label>
|
||
<select class="underlined" name="attr_slot" title="@{repeating_deck_$X_slot}">
|
||
<option value="talent" data-i18n="talent" selected="">
|
||
</option>
|
||
<option value="technique" data-i18n="technique">
|
||
</option>
|
||
</select>
|
||
<div class="adaptive adaptive--text grid-span-all"><span class="adaptive--text__span" name="attr_description" title="@{repeating_deck_$X_description}"></span>
|
||
<textarea class="description underlined adaptive--text__textarea" name="attr_description" data-i18n-placeholder="description" title="@{repeating_deck_$X_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</div>
|
||
<input name="attr_template_start" value="@{whisper}&{template:blackbirds} {{character_name=@{character_name}}} {{character_id=@{character_id}}}" type="hidden" title="@{template_start}"/>
|
||
<rolltemplate class="sheet-rolltemplate-blackbirds">
|
||
<div class="headed-section template-container">
|
||
<div class="headed-section__header">{{#title}}
|
||
<h2>{{title}}</h2>{{/title}}
|
||
</div>
|
||
<div class="headed-section__subheader-area flex-box headed-section__subheader-area--partial headed-section__subheader-area--column">
|
||
<div class="headed-section__subheader">{{#character_name}}{{#character_id}}
|
||
<h4 class="character_name">[{{character_name}}](http://journal.roll20.net/character/{{character_id}})</h4>{{/character_id}}{{^character_id}}
|
||
<h4 class="character_name">{{character_name}}</h4>{{/character_id}}{{/character_name}}
|
||
</div>
|
||
</div>
|
||
<div class="headed-section__content-area flex-box headed-section__content-area--partial headed-section__content-area--column">{{#roll}}
|
||
<div class="headed-section__content template-row has-egg">
|
||
<div class="flex-box">{{#roll_name}}
|
||
<h5>{{roll_name}}</h5>{{/roll_name}}{{^roll_name}}
|
||
<h5 data-i18n="roll"></h5>{{/roll_name}}{{#rollTotal() computed::result 1}}<span class="result-text">- <span data-i18n="sublime success"></span></span>{{/rollTotal() computed::result 1}}{{#rollTotal() computed::result 2}}<span class="result-text">- <span data-i18n="critical success"></span></span>{{/rollTotal() computed::result 2}}{{#rollTotal() computed::result 3}}<span class="result-text">- <span data-i18n="success"></span></span>{{/rollTotal() computed::result 3}}{{#rollTotal() computed::result 4}}<span class="result-text">- <span data-i18n="failure"></span></span>{{/rollTotal() computed::result 4}}{{#rollTotal() computed::result 5}}<span class="result-text">- <span data-i18n="critical failure"></span></span>{{/rollTotal() computed::result 5}}{{#rollTotal() computed::result 6}}<span class="result-text">- <span data-i18n="sublime failure"></span></span>{{/rollTotal() computed::result 6}}
|
||
</div>
|
||
<div class="egg"><span>{{computed::roll}}</span>{{#target}}<span class="egg__target">{{target}}%</span>{{/target}}
|
||
</div>
|
||
</div>{{/roll}}{{#damage}}
|
||
<div class="headed-section__content template-row has-egg">{{#damage_type}}
|
||
<h5>{{damage_type}}</h5>{{/damage_type}}{{^damage_type}}
|
||
<h5 data-i18n="damage"></h5>{{/damage_type}}{{#critical_damage}}{{#rollTotal() computed::wasCrit 0}}
|
||
<div class="egg">{{damage}}
|
||
</div>{{/rollTotal() computed::wasCrit 0}}{{#^rollTotal() computed::wasCrit 0}}
|
||
<div class="egg">{{critical_damage}}
|
||
</div>{{/^rollTotal() computed::wasCrit 0}}{{/critical_damage}}{{^critical_damage}}
|
||
<div class="egg">{{damage}}
|
||
</div>{{/critical_damage}}
|
||
</div>{{/damage}}{{#odic_dice}}
|
||
<div class="headed-section__content template-row has-egg">
|
||
<h5 data-i18n="odic dice"></h5>
|
||
<div class="egg">{{computed::odic_dice}}
|
||
</div>
|
||
</div>{{/odic_dice}}{{#misfortune}}
|
||
<div class="headed-section__content template-row">
|
||
<div class="misfortune flex-box justify-space-between half-gap flex-wrap">
|
||
<h5 class="row-head" data-i18n="misfortune"></h5><span>{{misfortune}}</span>
|
||
</div>
|
||
</div>{{/misfortune}}{{#ap}}
|
||
<div class="headed-section__content template-row">
|
||
<div class="ap flex-box justify-space-between half-gap flex-wrap">
|
||
<h5 class="row-head" data-i18n="ap cost"></h5><span>{{ap}}</span>
|
||
</div>
|
||
</div>{{/ap}}{{#action}}
|
||
<div class="headed-section__content template-row">
|
||
<div class="action flex-box justify-space-between half-gap flex-wrap">
|
||
<h5 class="row-head" data-i18n="action cost"></h5><span>{{action}}</span>
|
||
</div>
|
||
</div>{{/action}}{{#range}}
|
||
<div class="headed-section__content template-row">
|
||
<div class="range flex-box justify-space-between half-gap flex-wrap">
|
||
<h5 class="row-head" data-i18n="range"></h5><span>{{range}}</span>
|
||
</div>
|
||
</div>{{/range}}{{#allProps() description damage roll ones assist tens roll_name character_name character_id ap action misfortune time-limit range target}}
|
||
<div class="headed-section__content template-row">
|
||
<div class="flex-box justify-space-between half-gap flex-wrap">
|
||
<h5 class="row-head">{{key}}</h5><span>{{value}}</span>
|
||
</div>
|
||
</div>{{/allProps() description damage roll ones assist tens roll_name character_name character_id ap action misfortune time-limit range target}}{{#qualities}}
|
||
<div class="headed-section__content template-row">
|
||
<div class="qualities flex-box justify-space-between half-gap flex-wrap">
|
||
<h5 class="row-head" data-i18n="qualities"></h5><span>{{qualities}}</span>
|
||
</div>
|
||
</div>{{/qualities}}{{#description}}
|
||
<div class="headed-section__content template-row description">{{description}}
|
||
</div>{{/description}}
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
<script type="text/worker">//# sourceURL=blackbirds.js
|
||
|
||
const k = (function(){
|
||
const kFuncs = {};
|
||
|
||
const cascades = {"attr_character_name":{"name":"character_name","type":"text","defaultValue":"","affects":[],"triggeredFuncs":["setActionCalls"],"listenerFunc":"accessSheet","listener":"change:character_name"},"act_k-network-call":{"name":"k-network-call","type":"action","triggeredFuncs":["kReceive"],"affects":[],"addFuncs":[],"listener":"clicked:k-network-call","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_whisper":{"name":"whisper","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:whisper","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_sheet_version":{"name":"sheet_version","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:sheet_version","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_sheet_state":{"name":"sheet_state","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:sheet_state","listenerFunc":"accessSheet","defaultValue":"settings","calculation":"","initialFunc":"","formula":""},"attr_collapsed":{"name":"collapsed","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:collapsed","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_drop_name":{"name":"drop_name","type":"hidden","triggeredFuncs":["handleCompendiumDrop"],"affects":[],"addFuncs":[],"listener":"change:drop_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_drop_data":{"name":"drop_data","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:drop_data","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_blackbirds_tab":{"name":"blackbirds_tab","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:blackbirds_tab","listenerFunc":"accessSheet","defaultValue":"nav-tabs-blackbirds--settings","calculation":"","initialFunc":"","formula":""},"attr_flip_to":{"name":"flip_to","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:flip_to","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--settings":{"name":"nav-tabs-blackbirds--settings","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--settings","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--flock":{"name":"nav-tabs-blackbirds--flock","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--flock","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--core":{"name":"nav-tabs-blackbirds--core","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--core","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--combat":{"name":"nav-tabs-blackbirds--combat","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--combat","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--patrons":{"name":"nav-tabs-blackbirds--patrons","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--patrons","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--theurgy":{"name":"nav-tabs-blackbirds--theurgy","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--theurgy","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--npc":{"name":"nav-tabs-blackbirds--npc","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--npc","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-blackbirds--advances":{"name":"nav-tabs-blackbirds--advances","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-blackbirds--advances","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_sheet_type":{"name":"sheet_type","type":"select","triggeredFuncs":["sheetTypeTabs"],"affects":[],"addFuncs":[],"listener":"change:sheet_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_has_theurgy":{"name":"has_theurgy","type":"checkbox","triggeredFuncs":["sheetTypeTabs"],"affects":[],"addFuncs":[],"listener":"change:has_theurgy","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_flock_sheet":{"name":"flock_sheet","type":"text","triggeredFuncs":["syncPools"],"affects":[],"addFuncs":[],"listener":"change:flock_sheet","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-qualities":{"name":"add-qualities","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-qualities","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_qualities_$x_name":{"name":"repeating_qualities_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_qualities:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_qualities_$x_description":{"name":"repeating_qualities_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_qualities:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_fortune":{"name":"fortune","type":"number","triggeredFuncs":["syncPools"],"affects":[],"addFuncs":[],"listener":"change:fortune","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"poolCircle","formula":""},"act_odic-dice-action":{"name":"odic-dice-action","type":"action","triggeredFuncs":["rollOdicDice"],"affects":[],"addFuncs":[],"listener":"clicked:odic-dice-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_odic_dice_action":{"name":"odic_dice_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:odic_dice_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_odic_dice":{"name":"odic_dice","type":"number","triggeredFuncs":["syncPools"],"affects":[],"addFuncs":[],"listener":"change:odic_dice","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_misfortune":{"name":"misfortune","type":"number","triggeredFuncs":[],"affects":["fortune"],"addFuncs":[],"listener":"change:misfortune","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"poolCircle","formula":""},"act_add-flock":{"name":"add-flock","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-flock","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_flock_$x_name":{"name":"repeating_flock_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_flock:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_fate_accessible":{"name":"fate_accessible","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:fate_accessible","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fate_spent":{"name":"fate_spent","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:fate_spent","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_ancestry":{"name":"ancestry","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:ancestry","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_languages":{"name":"languages","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:languages","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_character_concept":{"name":"character_concept","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:character_concept","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_combat-action":{"name":"combat-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:combat-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_combat_action":{"name":"combat_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:combat_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_combat":{"name":"combat","type":"number","triggeredFuncs":[],"affects":["combat_mod","parry"],"addFuncs":[],"listener":"change:combat","listenerFunc":"accessSheet","defaultValue":35,"calculation":"","initialFunc":"","formula":""},"attr_combat_bonus_1":{"name":"combat_bonus_1","type":"checkbox","triggeredFuncs":[],"affects":["combat_mod"],"addFuncs":[],"listener":"change:combat_bonus_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_combat_bonus_2":{"name":"combat_bonus_2","type":"checkbox","triggeredFuncs":[],"affects":["combat_mod"],"addFuncs":[],"listener":"change:combat_bonus_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_combat_bonus_3":{"name":"combat_bonus_3","type":"checkbox","triggeredFuncs":[],"affects":["combat_mod"],"addFuncs":[],"listener":"change:combat_bonus_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_combat_bonus_4":{"name":"combat_bonus_4","type":"checkbox","triggeredFuncs":[],"affects":["combat_mod"],"addFuncs":[],"listener":"change:combat_bonus_4","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_combat_bonus_5":{"name":"combat_bonus_5","type":"checkbox","triggeredFuncs":[],"affects":["combat_mod"],"addFuncs":[],"listener":"change:combat_bonus_5","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_combat_bonus_6":{"name":"combat_bonus_6","type":"checkbox","triggeredFuncs":[],"affects":["combat_mod"],"addFuncs":[],"listener":"change:combat_bonus_6","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_combat_unlocked":{"name":"combat_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:combat_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_combat_mod":{"name":"combat_mod","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:combat_mod","listenerFunc":"accessSheet","defaultValue":3,"calculation":"calcAttribute","initialFunc":"","formula":""},"act_brawn-action":{"name":"brawn-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:brawn-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_brawn_action":{"name":"brawn_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:brawn_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_brawn":{"name":"brawn","type":"number","triggeredFuncs":[],"affects":["brawn_mod"],"addFuncs":[],"listener":"change:brawn","listenerFunc":"accessSheet","defaultValue":35,"calculation":"","initialFunc":"","formula":""},"attr_brawn_bonus_1":{"name":"brawn_bonus_1","type":"checkbox","triggeredFuncs":[],"affects":["brawn_mod"],"addFuncs":[],"listener":"change:brawn_bonus_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_brawn_bonus_2":{"name":"brawn_bonus_2","type":"checkbox","triggeredFuncs":[],"affects":["brawn_mod"],"addFuncs":[],"listener":"change:brawn_bonus_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_brawn_bonus_3":{"name":"brawn_bonus_3","type":"checkbox","triggeredFuncs":[],"affects":["brawn_mod"],"addFuncs":[],"listener":"change:brawn_bonus_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_brawn_bonus_4":{"name":"brawn_bonus_4","type":"checkbox","triggeredFuncs":[],"affects":["brawn_mod"],"addFuncs":[],"listener":"change:brawn_bonus_4","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_brawn_bonus_5":{"name":"brawn_bonus_5","type":"checkbox","triggeredFuncs":[],"affects":["brawn_mod"],"addFuncs":[],"listener":"change:brawn_bonus_5","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_brawn_bonus_6":{"name":"brawn_bonus_6","type":"checkbox","triggeredFuncs":[],"affects":["brawn_mod"],"addFuncs":[],"listener":"change:brawn_bonus_6","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_brawn_unlocked":{"name":"brawn_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:brawn_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_brawn_mod":{"name":"brawn_mod","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:brawn_mod","listenerFunc":"accessSheet","defaultValue":3,"calculation":"calcAttribute","initialFunc":"","formula":""},"act_agility-action":{"name":"agility-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:agility-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_agility_action":{"name":"agility_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:agility_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_agility":{"name":"agility","type":"number","triggeredFuncs":[],"affects":["agility_mod","dodge"],"addFuncs":[],"listener":"change:agility","listenerFunc":"accessSheet","defaultValue":35,"calculation":"","initialFunc":"","formula":""},"attr_agility_bonus_1":{"name":"agility_bonus_1","type":"checkbox","triggeredFuncs":[],"affects":["agility_mod"],"addFuncs":[],"listener":"change:agility_bonus_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_agility_bonus_2":{"name":"agility_bonus_2","type":"checkbox","triggeredFuncs":[],"affects":["agility_mod"],"addFuncs":[],"listener":"change:agility_bonus_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_agility_bonus_3":{"name":"agility_bonus_3","type":"checkbox","triggeredFuncs":[],"affects":["agility_mod"],"addFuncs":[],"listener":"change:agility_bonus_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_agility_bonus_4":{"name":"agility_bonus_4","type":"checkbox","triggeredFuncs":[],"affects":["agility_mod"],"addFuncs":[],"listener":"change:agility_bonus_4","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_agility_bonus_5":{"name":"agility_bonus_5","type":"checkbox","triggeredFuncs":[],"affects":["agility_mod"],"addFuncs":[],"listener":"change:agility_bonus_5","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_agility_bonus_6":{"name":"agility_bonus_6","type":"checkbox","triggeredFuncs":[],"affects":["agility_mod"],"addFuncs":[],"listener":"change:agility_bonus_6","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_agility_unlocked":{"name":"agility_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:agility_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_agility_mod":{"name":"agility_mod","type":"number","triggeredFuncs":[],"affects":["movement"],"addFuncs":[],"listener":"change:agility_mod","listenerFunc":"accessSheet","defaultValue":3,"calculation":"calcAttribute","initialFunc":"","formula":""},"act_perception-action":{"name":"perception-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:perception-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_perception_action":{"name":"perception_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:perception_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_perception":{"name":"perception","type":"number","triggeredFuncs":[],"affects":["perception_mod"],"addFuncs":[],"listener":"change:perception","listenerFunc":"accessSheet","defaultValue":35,"calculation":"","initialFunc":"","formula":""},"attr_perception_bonus_1":{"name":"perception_bonus_1","type":"checkbox","triggeredFuncs":[],"affects":["perception_mod"],"addFuncs":[],"listener":"change:perception_bonus_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_perception_bonus_2":{"name":"perception_bonus_2","type":"checkbox","triggeredFuncs":[],"affects":["perception_mod"],"addFuncs":[],"listener":"change:perception_bonus_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_perception_bonus_3":{"name":"perception_bonus_3","type":"checkbox","triggeredFuncs":[],"affects":["perception_mod"],"addFuncs":[],"listener":"change:perception_bonus_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_perception_bonus_4":{"name":"perception_bonus_4","type":"checkbox","triggeredFuncs":[],"affects":["perception_mod"],"addFuncs":[],"listener":"change:perception_bonus_4","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_perception_bonus_5":{"name":"perception_bonus_5","type":"checkbox","triggeredFuncs":[],"affects":["perception_mod"],"addFuncs":[],"listener":"change:perception_bonus_5","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_perception_bonus_6":{"name":"perception_bonus_6","type":"checkbox","triggeredFuncs":[],"affects":["perception_mod"],"addFuncs":[],"listener":"change:perception_bonus_6","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_perception_unlocked":{"name":"perception_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:perception_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_perception_mod":{"name":"perception_mod","type":"number","triggeredFuncs":[],"affects":["initiative"],"addFuncs":[],"listener":"change:perception_mod","listenerFunc":"accessSheet","defaultValue":3,"calculation":"calcAttribute","initialFunc":"","formula":""},"act_intelligence-action":{"name":"intelligence-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:intelligence-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intelligence_action":{"name":"intelligence_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intelligence_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intelligence":{"name":"intelligence","type":"number","triggeredFuncs":[],"affects":["intelligence_mod"],"addFuncs":[],"listener":"change:intelligence","listenerFunc":"accessSheet","defaultValue":35,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_bonus_1":{"name":"intelligence_bonus_1","type":"checkbox","triggeredFuncs":[],"affects":["intelligence_mod"],"addFuncs":[],"listener":"change:intelligence_bonus_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_bonus_2":{"name":"intelligence_bonus_2","type":"checkbox","triggeredFuncs":[],"affects":["intelligence_mod"],"addFuncs":[],"listener":"change:intelligence_bonus_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_bonus_3":{"name":"intelligence_bonus_3","type":"checkbox","triggeredFuncs":[],"affects":["intelligence_mod"],"addFuncs":[],"listener":"change:intelligence_bonus_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_bonus_4":{"name":"intelligence_bonus_4","type":"checkbox","triggeredFuncs":[],"affects":["intelligence_mod"],"addFuncs":[],"listener":"change:intelligence_bonus_4","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_bonus_5":{"name":"intelligence_bonus_5","type":"checkbox","triggeredFuncs":[],"affects":["intelligence_mod"],"addFuncs":[],"listener":"change:intelligence_bonus_5","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_bonus_6":{"name":"intelligence_bonus_6","type":"checkbox","triggeredFuncs":[],"affects":["intelligence_mod"],"addFuncs":[],"listener":"change:intelligence_bonus_6","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_unlocked":{"name":"intelligence_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intelligence_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intelligence_mod":{"name":"intelligence_mod","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intelligence_mod","listenerFunc":"accessSheet","defaultValue":3,"calculation":"calcAttribute","initialFunc":"","formula":""},"act_willpower-action":{"name":"willpower-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:willpower-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_willpower_action":{"name":"willpower_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:willpower_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_willpower":{"name":"willpower","type":"number","triggeredFuncs":[],"affects":["willpower_mod"],"addFuncs":[],"listener":"change:willpower","listenerFunc":"accessSheet","defaultValue":35,"calculation":"","initialFunc":"","formula":""},"attr_willpower_bonus_1":{"name":"willpower_bonus_1","type":"checkbox","triggeredFuncs":[],"affects":["willpower_mod"],"addFuncs":[],"listener":"change:willpower_bonus_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_willpower_bonus_2":{"name":"willpower_bonus_2","type":"checkbox","triggeredFuncs":[],"affects":["willpower_mod"],"addFuncs":[],"listener":"change:willpower_bonus_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_willpower_bonus_3":{"name":"willpower_bonus_3","type":"checkbox","triggeredFuncs":[],"affects":["willpower_mod"],"addFuncs":[],"listener":"change:willpower_bonus_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_willpower_bonus_4":{"name":"willpower_bonus_4","type":"checkbox","triggeredFuncs":[],"affects":["willpower_mod"],"addFuncs":[],"listener":"change:willpower_bonus_4","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_willpower_bonus_5":{"name":"willpower_bonus_5","type":"checkbox","triggeredFuncs":[],"affects":["willpower_mod"],"addFuncs":[],"listener":"change:willpower_bonus_5","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_willpower_bonus_6":{"name":"willpower_bonus_6","type":"checkbox","triggeredFuncs":[],"affects":["willpower_mod"],"addFuncs":[],"listener":"change:willpower_bonus_6","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_willpower_unlocked":{"name":"willpower_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:willpower_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_willpower_mod":{"name":"willpower_mod","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:willpower_mod","listenerFunc":"accessSheet","defaultValue":3,"calculation":"calcAttribute","initialFunc":"","formula":""},"act_fellowship-action":{"name":"fellowship-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:fellowship-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_fellowship_action":{"name":"fellowship_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:fellowship_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_fellowship":{"name":"fellowship","type":"number","triggeredFuncs":[],"affects":["fellowship_mod"],"addFuncs":[],"listener":"change:fellowship","listenerFunc":"accessSheet","defaultValue":35,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_bonus_1":{"name":"fellowship_bonus_1","type":"checkbox","triggeredFuncs":[],"affects":["fellowship_mod"],"addFuncs":[],"listener":"change:fellowship_bonus_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_bonus_2":{"name":"fellowship_bonus_2","type":"checkbox","triggeredFuncs":[],"affects":["fellowship_mod"],"addFuncs":[],"listener":"change:fellowship_bonus_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_bonus_3":{"name":"fellowship_bonus_3","type":"checkbox","triggeredFuncs":[],"affects":["fellowship_mod"],"addFuncs":[],"listener":"change:fellowship_bonus_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_bonus_4":{"name":"fellowship_bonus_4","type":"checkbox","triggeredFuncs":[],"affects":["fellowship_mod"],"addFuncs":[],"listener":"change:fellowship_bonus_4","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_bonus_5":{"name":"fellowship_bonus_5","type":"checkbox","triggeredFuncs":[],"affects":["fellowship_mod"],"addFuncs":[],"listener":"change:fellowship_bonus_5","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_bonus_6":{"name":"fellowship_bonus_6","type":"checkbox","triggeredFuncs":[],"affects":["fellowship_mod"],"addFuncs":[],"listener":"change:fellowship_bonus_6","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_unlocked":{"name":"fellowship_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:fellowship_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_fellowship_mod":{"name":"fellowship_mod","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:fellowship_mod","listenerFunc":"accessSheet","defaultValue":3,"calculation":"calcAttribute","initialFunc":"","formula":""},"act_melee-action":{"name":"melee-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:melee-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_melee_action":{"name":"melee_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:melee_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_melee_percentage":{"name":"melee_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:melee_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_ranged-action":{"name":"ranged-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:ranged-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_ranged_action":{"name":"ranged_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:ranged_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_ranged_percentage":{"name":"ranged_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:ranged_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_warfare-action":{"name":"warfare-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:warfare-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_warfare_action":{"name":"warfare_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:warfare_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_warfare_percentage":{"name":"warfare_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:warfare_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_melee_unlocked":{"name":"melee_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:melee_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_ranged_unlocked":{"name":"ranged_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:ranged_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_warfare_unlocked":{"name":"warfare_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:warfare_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_athletics-action":{"name":"athletics-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:athletics-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_athletics_action":{"name":"athletics_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:athletics_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_athletics_percentage":{"name":"athletics_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:athletics_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_intimidate-action":{"name":"intimidate-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:intimidate-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intimidate_action":{"name":"intimidate_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intimidate_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intimidate_percentage":{"name":"intimidate_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intimidate_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_toughness-action":{"name":"toughness-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:toughness-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_toughness_action":{"name":"toughness_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:toughness_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_toughness_percentage":{"name":"toughness_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:toughness_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_athletics_unlocked":{"name":"athletics_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:athletics_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intimidate_unlocked":{"name":"intimidate_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intimidate_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_toughness_unlocked":{"name":"toughness_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:toughness_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_coordination-action":{"name":"coordination-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:coordination-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_coordination_action":{"name":"coordination_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:coordination_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_coordination_percentage":{"name":"coordination_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:coordination_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_handle-vehicle-action":{"name":"handle-vehicle-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:handle-vehicle-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_handle_vehicle_action":{"name":"handle_vehicle_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_vehicle_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_handle_vehicle_percentage":{"name":"handle_vehicle_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_vehicle_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_skuldiggery-action":{"name":"skuldiggery-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:skuldiggery-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_skuldiggery_action":{"name":"skuldiggery_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:skuldiggery_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_skuldiggery_percentage":{"name":"skuldiggery_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:skuldiggery_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_stealth-action":{"name":"stealth-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:stealth-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_stealth_action":{"name":"stealth_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:stealth_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_stealth_percentage":{"name":"stealth_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:stealth_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_coordination_unlocked":{"name":"coordination_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:coordination_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_handle_vehicle_unlocked":{"name":"handle_vehicle_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_vehicle_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_skuldiggery_unlocked":{"name":"skuldiggery_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:skuldiggery_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_stealth_unlocked":{"name":"stealth_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:stealth_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_awareness-action":{"name":"awareness-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:awareness-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_awareness_action":{"name":"awareness_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:awareness_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_awareness_percentage":{"name":"awareness_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:awareness_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_eavesdrop-action":{"name":"eavesdrop-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:eavesdrop-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_eavesdrop_action":{"name":"eavesdrop_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:eavesdrop_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_eavesdrop_percentage":{"name":"eavesdrop_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:eavesdrop_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_scrutinize-action":{"name":"scrutinize-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:scrutinize-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_scrutinize_action":{"name":"scrutinize_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:scrutinize_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_scrutinize_percentage":{"name":"scrutinize_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:scrutinize_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_survival-action":{"name":"survival-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:survival-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_survival_action":{"name":"survival_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:survival_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_survival_percentage":{"name":"survival_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:survival_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_awareness_unlocked":{"name":"awareness_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:awareness_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_eavesdrop_unlocked":{"name":"eavesdrop_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:eavesdrop_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_scrutinize_unlocked":{"name":"scrutinize_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:scrutinize_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_survival_unlocked":{"name":"survival_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:survival_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_education-action":{"name":"education-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:education-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_education_action":{"name":"education_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:education_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_education_percentage":{"name":"education_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:education_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_folklore-action":{"name":"folklore-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:folklore-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_folklore_action":{"name":"folklore_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:folklore_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_folklore_percentage":{"name":"folklore_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:folklore_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_gamble-action":{"name":"gamble-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:gamble-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_gamble_action":{"name":"gamble_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:gamble_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_gamble_percentage":{"name":"gamble_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:gamble_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_heal-action":{"name":"heal-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:heal-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_heal_action":{"name":"heal_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:heal_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_heal_percentage":{"name":"heal_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:heal_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_navigation-action":{"name":"navigation-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:navigation-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_navigation_action":{"name":"navigation_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:navigation_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_navigation_percentage":{"name":"navigation_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:navigation_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_strategy-action":{"name":"strategy-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:strategy-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_strategy_action":{"name":"strategy_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:strategy_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_strategy_percentage":{"name":"strategy_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:strategy_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_wortcunning-action":{"name":"wortcunning-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:wortcunning-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_wortcunning_action":{"name":"wortcunning_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:wortcunning_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_wortcunning_percentage":{"name":"wortcunning_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:wortcunning_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_education_unlocked":{"name":"education_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:education_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_folklore_unlocked":{"name":"folklore_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:folklore_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_gamble_unlocked":{"name":"gamble_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:gamble_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_heal_unlocked":{"name":"heal_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:heal_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_navigation_unlocked":{"name":"navigation_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:navigation_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_strategy_unlocked":{"name":"strategy_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:strategy_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_wortcunning_unlocked":{"name":"wortcunning_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:wortcunning_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_odweft-action":{"name":"odweft-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:odweft-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_odweft_action":{"name":"odweft_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:odweft_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_odweft_percentage":{"name":"odweft_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:odweft_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_resolve-action":{"name":"resolve-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:resolve-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_resolve_action":{"name":"resolve_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:resolve_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_resolve_percentage":{"name":"resolve_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:resolve_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_tradecraft-action":{"name":"tradecraft-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:tradecraft-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_tradecraft_action":{"name":"tradecraft_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:tradecraft_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_tradecraft_percentage":{"name":"tradecraft_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:tradecraft_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_odweft_unlocked":{"name":"odweft_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:odweft_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_resolve_unlocked":{"name":"resolve_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:resolve_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_tradecraft_unlocked":{"name":"tradecraft_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:tradecraft_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_bargain-action":{"name":"bargain-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:bargain-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_bargain_action":{"name":"bargain_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:bargain_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_bargain_percentage":{"name":"bargain_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:bargain_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_charm-action":{"name":"charm-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:charm-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_charm_action":{"name":"charm_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:charm_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_charm_percentage":{"name":"charm_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:charm_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_disguise-action":{"name":"disguise-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:disguise-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_disguise_action":{"name":"disguise_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:disguise_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_disguise_percentage":{"name":"disguise_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:disguise_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_guile-action":{"name":"guile-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:guile-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_guile_action":{"name":"guile_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:guile_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_guile_percentage":{"name":"guile_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:guile_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_handle-animal-action":{"name":"handle-animal-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:handle-animal-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_handle_animal_action":{"name":"handle_animal_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_animal_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_handle_animal_percentage":{"name":"handle_animal_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_animal_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_leadership-action":{"name":"leadership-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:leadership-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_leadership_action":{"name":"leadership_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:leadership_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_leadership_percentage":{"name":"leadership_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:leadership_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_rumor-action":{"name":"rumor-action","type":"action","triggeredFuncs":["rollSkill"],"affects":[],"addFuncs":[],"listener":"clicked:rumor-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_rumor_action":{"name":"rumor_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:rumor_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_rumor_percentage":{"name":"rumor_percentage","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:rumor_percentage","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_bargain_unlocked":{"name":"bargain_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:bargain_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_charm_unlocked":{"name":"charm_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:charm_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_disguise_unlocked":{"name":"disguise_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:disguise_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_guile_unlocked":{"name":"guile_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:guile_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_handle_animal_unlocked":{"name":"handle_animal_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_animal_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_leadership_unlocked":{"name":"leadership_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:leadership_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_rumor_unlocked":{"name":"rumor_unlocked","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:rumor_unlocked","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_add-boons-banes":{"name":"add-boons-banes","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-boons-banes","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_boons-banes_$x_collapse":{"name":"repeating_boons-banes_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_boons-banes:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_boons-banes_$x_name":{"name":"repeating_boons-banes_$x_name","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_boons-banes:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_boons-banes_$x_effect":{"name":"repeating_boons-banes_$x_effect","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_boons-banes:effect","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_boons-banes_$x_description":{"name":"repeating_boons-banes_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_boons-banes:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_harmonic_resonance":{"name":"harmonic_resonance","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:harmonic_resonance","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_discordant_resonance":{"name":"discordant_resonance","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:discordant_resonance","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_alignment":{"name":"alignment","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:alignment","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_peril_base_threshold":{"name":"peril_base_threshold","type":"number","triggeredFuncs":[],"affects":["peril_threshold_6","peril_threshold_12","peril_threshold_18"],"addFuncs":[],"listener":"change:peril_base_threshold","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_peril_threshold_6":{"name":"peril_threshold_6","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:peril_threshold_6","listenerFunc":"accessSheet","defaultValue":6,"calculation":"calcThresholdUnits","initialFunc":"","formula":""},"attr_peril_threshold_12":{"name":"peril_threshold_12","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:peril_threshold_12","listenerFunc":"accessSheet","defaultValue":12,"calculation":"calcThresholdUnits","initialFunc":"","formula":""},"attr_peril_threshold_18":{"name":"peril_threshold_18","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:peril_threshold_18","listenerFunc":"accessSheet","defaultValue":18,"calculation":"calcThresholdUnits","initialFunc":"","formula":""},"attr_peril_track":{"name":"peril_track","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:peril_track","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_damage_base_threshold":{"name":"damage_base_threshold","type":"number","triggeredFuncs":[],"affects":["damage_threshold_6","damage_threshold_12","damage_threshold_18"],"addFuncs":[],"listener":"change:damage_base_threshold","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_damage_threshold_6":{"name":"damage_threshold_6","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:damage_threshold_6","listenerFunc":"accessSheet","defaultValue":6,"calculation":"calcThresholdUnits","initialFunc":"","formula":""},"attr_damage_threshold_12":{"name":"damage_threshold_12","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:damage_threshold_12","listenerFunc":"accessSheet","defaultValue":12,"calculation":"calcThresholdUnits","initialFunc":"","formula":""},"attr_damage_threshold_18":{"name":"damage_threshold_18","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:damage_threshold_18","listenerFunc":"accessSheet","defaultValue":18,"calculation":"calcThresholdUnits","initialFunc":"","formula":""},"attr_damage_track":{"name":"damage_track","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:damage_track","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_initiative":{"name":"initiative","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:initiative","listenerFunc":"accessSheet","defaultValue":6,"calculation":"calcInitiative","initialFunc":"","formula":""},"attr_initiative_mod":{"name":"initiative_mod","type":"number","triggeredFuncs":[],"affects":["initiative"],"addFuncs":[],"listener":"change:initiative_mod","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_add-injuries":{"name":"add-injuries","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-injuries","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"fieldset_repeating_injuries":{"name":"repeating_injuries","type":"fieldset","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"remove:repeating_injuries","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_injuries_$x_collapse":{"name":"repeating_injuries_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_injuries:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_injuries_$x_name":{"name":"repeating_injuries_$x_name","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_injuries:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_injuries_$x_severity":{"name":"repeating_injuries_$x_severity","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_injuries:severity","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_injuries_$x_description":{"name":"repeating_injuries_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_injuries:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_movement":{"name":"movement","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:movement","listenerFunc":"accessSheet","defaultValue":6,"calculation":"calcMovement","initialFunc":"","formula":""},"attr_movement_mod":{"name":"movement_mod","type":"number","triggeredFuncs":[],"affects":["movement"],"addFuncs":[],"listener":"change:movement_mod","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_parry-action":{"name":"parry-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:parry-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_parry_action":{"name":"parry_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:parry_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_parry":{"name":"parry","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:parry","listenerFunc":"accessSheet","defaultValue":35,"calculation":"calcDefense","initialFunc":"","formula":""},"attr_parry_mod":{"name":"parry_mod","type":"number","triggeredFuncs":[],"affects":["parry"],"addFuncs":[],"listener":"change:parry_mod","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_dodge-action":{"name":"dodge-action","type":"action","triggeredFuncs":["rollAttribute"],"affects":[],"addFuncs":[],"listener":"clicked:dodge-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_dodge_action":{"name":"dodge_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:dodge_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_dodge":{"name":"dodge","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:dodge","listenerFunc":"accessSheet","defaultValue":35,"calculation":"calcDefense","initialFunc":"","formula":""},"attr_dodge_mod":{"name":"dodge_mod","type":"number","triggeredFuncs":[],"affects":["dodge"],"addFuncs":[],"listener":"change:dodge_mod","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_add-weapons":{"name":"add-weapons","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-weapons","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_collapse":{"name":"repeating_weapons_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_name":{"name":"repeating_weapons_$x_name","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_repeating_weapons_$x_action":{"name":"repeating_weapons_$x_action","type":"action","triggeredFuncs":["rollWeapon"],"affects":[],"addFuncs":[],"listener":"clicked:repeating_weapons:action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_action":{"name":"repeating_weapons_$x_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_qualities":{"name":"repeating_weapons_$x_qualities","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:qualities","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_damage":{"name":"repeating_weapons_$x_damage","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:damage","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_degradation":{"name":"repeating_weapons_$x_degradation","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:degradation","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_skill":{"name":"repeating_weapons_$x_skill","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:skill","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_damage_dice":{"name":"repeating_weapons_$x_damage_dice","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:damage_dice","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_damage_custom":{"name":"repeating_weapons_$x_damage_custom","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:damage_custom","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_ammo":{"name":"repeating_weapons_$x_ammo","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:ammo","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_range":{"name":"repeating_weapons_$x_range","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:range","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_reload":{"name":"repeating_weapons_$x_reload","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:reload","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_hands":{"name":"repeating_weapons_$x_hands","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:hands","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_weapons_$x_description":{"name":"repeating_weapons_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_weapons:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-wortcunning":{"name":"add-wortcunning","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-wortcunning","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_wortcunning_$x_collapse":{"name":"repeating_wortcunning_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_wortcunning:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_wortcunning_$x_spellname":{"name":"repeating_wortcunning_$x_spellname","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_wortcunning:spellname","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_repeating_wortcunning_$x_action":{"name":"repeating_wortcunning_$x_action","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:repeating_wortcunning:action","listenerFunc":"initiateRoll","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_wortcunning_$x_action":{"name":"repeating_wortcunning_$x_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_wortcunning:action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_wortcunning_$x_description":{"name":"repeating_wortcunning_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_wortcunning:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_wortcunning_$x_reference":{"name":"repeating_wortcunning_$x_reference","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_wortcunning:reference","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-undertakings":{"name":"add-undertakings","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-undertakings","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_undertakings_$x_description":{"name":"repeating_undertakings_$x_description","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_undertakings:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_undertakings_$x_time-limit":{"name":"repeating_undertakings_$x_time-limit","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_undertakings:time-limit","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_obligation_total":{"name":"obligation_total","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:obligation_total","listenerFunc":"accessSheet","defaultValue":"0","calculation":"","initialFunc":"","formula":""},"act_add-spoils":{"name":"add-spoils","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-spoils","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_spoils_$x_description":{"name":"repeating_spoils_$x_description","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_spoils:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_spoils_$x_value":{"name":"repeating_spoils_$x_value","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_spoils:value","listenerFunc":"accessSheet","defaultValue":"0","calculation":"","initialFunc":"","formula":""},"act_add-lodging":{"name":"add-lodging","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-lodging","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_lodging_$x_name":{"name":"repeating_lodging_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_lodging:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-material":{"name":"add-material","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-material","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_material_$x_name":{"name":"repeating_material_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_material:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-support":{"name":"add-support","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-support","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_support_$x_name":{"name":"repeating_support_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_support:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-travel":{"name":"add-travel","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-travel","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_travel_$x_name":{"name":"repeating_travel_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_travel:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-equipment":{"name":"add-equipment","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-equipment","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_equipment_$x_name":{"name":"repeating_equipment_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_equipment:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-patrons":{"name":"add-patrons","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-patrons","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_patrons_$x_name":{"name":"repeating_patrons_$x_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_patrons:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_patrons_$x_traits":{"name":"repeating_patrons_$x_traits","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_patrons:traits","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_patrons_$x_notes":{"name":"repeating_patrons_$x_notes","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_patrons:notes","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_patrons_$x_patronage_score":{"name":"repeating_patrons_$x_patronage_score","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_patrons:patronage_score","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_patrons_$x_stewardship":{"name":"repeating_patrons_$x_stewardship","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_patrons:stewardship","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_repeating_patrons_$x_print-patron-action":{"name":"repeating_patrons_$x_print-patron-action","type":"action","triggeredFuncs":["printPatron"],"affects":[],"addFuncs":[],"listener":"clicked:repeating_patrons:print-patron-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_patrons_$x_print_patron_action":{"name":"repeating_patrons_$x_print_patron_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_patrons:print_patron_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-manifestation":{"name":"add-manifestation","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-manifestation","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_manifestation_$x_collapse":{"name":"repeating_manifestation_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_manifestation:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_manifestation_$x_name":{"name":"repeating_manifestation_$x_name","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_manifestation:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_manifestation_$x_range":{"name":"repeating_manifestation_$x_range","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_manifestation:range","listenerFunc":"accessSheet","defaultValue":"99 strides","calculation":"","initialFunc":"","formula":""},"attr_repeating_manifestation_$x_duration":{"name":"repeating_manifestation_$x_duration","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_manifestation:duration","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_manifestation_$x_description":{"name":"repeating_manifestation_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_manifestation:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_tithe":{"name":"tithe","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:tithe","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_focus":{"name":"focus","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:focus","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_add-outsiders":{"name":"add-outsiders","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-outsiders","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"fieldset_repeating_outsiders":{"name":"repeating_outsiders","type":"fieldset","triggeredFuncs":["setOutsiderSelects"],"affects":[],"addFuncs":["setOutsiderSelects"],"listener":"remove:repeating_outsiders","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_outsiders_$x_collapse":{"name":"repeating_outsiders_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_outsiders:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_outsiders_$x_name":{"name":"repeating_outsiders_$x_name","type":"span","triggeredFuncs":["setOutsiderSelects"],"affects":[],"addFuncs":[],"listener":"change:repeating_outsiders:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_outsiders_$x_station":{"name":"repeating_outsiders_$x_station","type":"span","triggeredFuncs":["affectVitiationTithe"],"affects":[],"addFuncs":[],"listener":"change:repeating_outsiders:station","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_outsiders_$x_agreement":{"name":"repeating_outsiders_$x_agreement","type":"span","triggeredFuncs":["affectVitiationTithe"],"affects":[],"addFuncs":[],"listener":"change:repeating_outsiders:agreement","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_outsiders_$x_description":{"name":"repeating_outsiders_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_outsiders:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-vitiations":{"name":"add-vitiations","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-vitiations","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_collapse":{"name":"repeating_vitiations_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_name":{"name":"repeating_vitiations_$x_name","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_repeating_vitiations_$x_action":{"name":"repeating_vitiations_$x_action","type":"action","triggeredFuncs":["rollVitiation"],"affects":[],"addFuncs":[],"listener":"clicked:repeating_vitiations:action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_action":{"name":"repeating_vitiations_$x_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_power_level":{"name":"repeating_vitiations_$x_power_level","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:power_level","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_tithe_cost":{"name":"repeating_vitiations_$x_tithe_cost","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:tithe_cost","listenerFunc":"accessSheet","defaultValue":"","calculation":"calcTithe","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_outsider_id":{"name":"repeating_vitiations_$x_outsider_id","type":"select","triggeredFuncs":[],"affects":["repeating_vitiations_$x_tithe_cost","repeating_vitiations_$X_tithe_cost"],"addFuncs":[],"listener":"change:repeating_vitiations:outsider_id","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_duration_base":{"name":"repeating_vitiations_$x_duration_base","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:duration_base","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_duration_ability":{"name":"repeating_vitiations_$x_duration_ability","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:duration_ability","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_duration_bonus":{"name":"repeating_vitiations_$x_duration_bonus","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:duration_bonus","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_duration_unit":{"name":"repeating_vitiations_$x_duration_unit","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:duration_unit","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_range":{"name":"repeating_vitiations_$x_range","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:range","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_description":{"name":"repeating_vitiations_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_sublime_success":{"name":"repeating_vitiations_$x_sublime_success","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:sublime_success","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_critical_success":{"name":"repeating_vitiations_$x_critical_success","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:critical_success","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_critical_failure":{"name":"repeating_vitiations_$x_critical_failure","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:critical_failure","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_vitiations_$x_sublime_failure":{"name":"repeating_vitiations_$x_sublime_failure","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_vitiations:sublime_failure","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_npc_view":{"name":"npc_view","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:npc_view","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_melee":{"name":"melee","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:melee","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_ranged":{"name":"ranged","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:ranged","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_warfare":{"name":"warfare","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:warfare","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_athletics":{"name":"athletics","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:athletics","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intimidate":{"name":"intimidate","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intimidate","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_toughness":{"name":"toughness","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:toughness","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_coordination":{"name":"coordination","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:coordination","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_handle_vehicle":{"name":"handle_vehicle","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_vehicle","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_skuldiggery":{"name":"skuldiggery","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:skuldiggery","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_stealth":{"name":"stealth","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:stealth","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_awareness":{"name":"awareness","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:awareness","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_eavesdrop":{"name":"eavesdrop","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:eavesdrop","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_scrutinize":{"name":"scrutinize","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:scrutinize","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_survival":{"name":"survival","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:survival","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_education":{"name":"education","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:education","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_folklore":{"name":"folklore","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:folklore","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_gamble":{"name":"gamble","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:gamble","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_heal":{"name":"heal","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:heal","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_navigation":{"name":"navigation","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:navigation","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_strategy":{"name":"strategy","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:strategy","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_wortcunning":{"name":"wortcunning","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:wortcunning","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_odweft":{"name":"odweft","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:odweft","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_resolve":{"name":"resolve","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:resolve","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_tradecraft":{"name":"tradecraft","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:tradecraft","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_bargain":{"name":"bargain","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:bargain","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_charm":{"name":"charm","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:charm","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_disguise":{"name":"disguise","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:disguise","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_guile":{"name":"guile","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:guile","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_handle_animal":{"name":"handle_animal","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:handle_animal","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_leadership":{"name":"leadership","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:leadership","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_rumor":{"name":"rumor","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:rumor","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_initiative-action":{"name":"initiative-action","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:initiative-action","listenerFunc":"initiateRoll","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_initiative_action":{"name":"initiative_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:initiative_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_size":{"name":"size","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:size","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_risk_factor":{"name":"risk_factor","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:risk_factor","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_add-npc-attacks":{"name":"add-npc-attacks","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-npc-attacks","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_npc-attacks_$x_attack_name":{"name":"repeating_npc-attacks_$x_attack_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_npc-attacks:attack_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_npc-attacks_$x_hit_chance":{"name":"repeating_npc-attacks_$x_hit_chance","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_npc-attacks:hit_chance","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_npc-attacks_$x_range":{"name":"repeating_npc-attacks_$x_range","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_npc-attacks:range","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_npc-attacks_$x_damage":{"name":"repeating_npc-attacks_$x_damage","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_npc-attacks:damage","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_npc-attacks_$x_qualities":{"name":"repeating_npc-attacks_$x_qualities","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_npc-attacks:qualities","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_repeating_npc-attacks_$x_action":{"name":"repeating_npc-attacks_$x_action","type":"action","triggeredFuncs":["rollWeapon"],"affects":[],"addFuncs":[],"listener":"clicked:repeating_npc-attacks:action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_npc-attacks_$x_action":{"name":"repeating_npc-attacks_$x_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_npc-attacks:action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-traits":{"name":"add-traits","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-traits","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_traits_$x_collapse":{"name":"repeating_traits_$x_collapse","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_traits:collapse","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_traits_$x_name":{"name":"repeating_traits_$x_name","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_traits:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_traits_$x_misfortune":{"name":"repeating_traits_$x_misfortune","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_traits:misfortune","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_traits_$x_ap_cost":{"name":"repeating_traits_$x_ap_cost","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_traits:ap_cost","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_traits_$x_action_type":{"name":"repeating_traits_$x_action_type","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_traits:action_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_traits_$x_description":{"name":"repeating_traits_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_traits:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_tier":{"name":"tier","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:tier","listenerFunc":"accessSheet","defaultValue":1,"calculation":"","initialFunc":"","formula":""},"attr_reward_points":{"name":"reward_points","type":"number","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:reward_points","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_bow_and_blade":{"name":"bow_and_blade","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:bow_and_blade","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_od_and_ritual":{"name":"od_and_ritual","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:od_and_ritual","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_shadow_and_subterfuge":{"name":"shadow_and_subterfuge","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:shadow_and_subterfuge","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_craft_and_expertise":{"name":"craft_and_expertise","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:craft_and_expertise","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_charm_and_manipulation":{"name":"charm_and_manipulation","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:charm_and_manipulation","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_talents_and_techniques_tab":{"name":"talents_and_techniques_tab","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:talents_and_techniques_tab","listenerFunc":"accessSheet","defaultValue":"nav-tabs-talents-and-techniques--deck","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-talents-and-techniques--talents":{"name":"nav-tabs-talents-and-techniques--talents","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-talents-and-techniques--talents","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-talents-and-techniques--techniques":{"name":"nav-tabs-talents-and-techniques--techniques","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-talents-and-techniques--techniques","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_nav-tabs-talents-and-techniques--deck":{"name":"nav-tabs-talents-and-techniques--deck","type":"action","triggeredFuncs":["kSwitchTab"],"affects":[],"addFuncs":[],"listener":"clicked:nav-tabs-talents-and-techniques--deck","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_talent_show_details":{"name":"basic_talent_show_details","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_show_details","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_basic-talent-unslot":{"name":"basic-talent-unslot","type":"action","triggeredFuncs":["unslotCard"],"affects":[],"addFuncs":[],"listener":"clicked:basic-talent-unslot","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_talent_id":{"name":"basic_talent_id","type":"select","triggeredFuncs":["slotCard"],"affects":[],"addFuncs":[],"listener":"change:basic_talent_id","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_talent_extinguished":{"name":"basic_talent_extinguished","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_extinguished","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_basic_talent_icon":{"name":"basic_talent_icon","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_icon","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_basic_talent_image":{"name":"basic_talent_image","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_image","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_basic_talent_type":{"name":"basic_talent_type","type":"span","triggeredFuncs":[],"affects":["basic_talent_image","basic_talent_icon"],"addFuncs":[],"listener":"change:basic_talent_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_talent_name":{"name":"basic_talent_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_talent_tier":{"name":"basic_talent_tier","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_tier","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_talent_prerequisites":{"name":"basic_talent_prerequisites","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_prerequisites","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_talent_description":{"name":"basic_talent_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_talent_description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_show_details":{"name":"intermediate_talent_show_details","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_show_details","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_intermediate-talent-unslot":{"name":"intermediate-talent-unslot","type":"action","triggeredFuncs":["unslotCard"],"affects":[],"addFuncs":[],"listener":"clicked:intermediate-talent-unslot","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_id":{"name":"intermediate_talent_id","type":"select","triggeredFuncs":["slotCard"],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_id","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_extinguished":{"name":"intermediate_talent_extinguished","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_extinguished","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_icon":{"name":"intermediate_talent_icon","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_icon","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_intermediate_talent_image":{"name":"intermediate_talent_image","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_image","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_intermediate_talent_type":{"name":"intermediate_talent_type","type":"span","triggeredFuncs":[],"affects":["intermediate_talent_image","intermediate_talent_icon"],"addFuncs":[],"listener":"change:intermediate_talent_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_name":{"name":"intermediate_talent_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_tier":{"name":"intermediate_talent_tier","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_tier","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_prerequisites":{"name":"intermediate_talent_prerequisites","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_prerequisites","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_talent_description":{"name":"intermediate_talent_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_talent_description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_show_details":{"name":"advanced_talent_show_details","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_show_details","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_advanced-talent-unslot":{"name":"advanced-talent-unslot","type":"action","triggeredFuncs":["unslotCard"],"affects":[],"addFuncs":[],"listener":"clicked:advanced-talent-unslot","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_id":{"name":"advanced_talent_id","type":"select","triggeredFuncs":["slotCard"],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_id","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_extinguished":{"name":"advanced_talent_extinguished","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_extinguished","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_icon":{"name":"advanced_talent_icon","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_icon","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_advanced_talent_image":{"name":"advanced_talent_image","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_image","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_advanced_talent_type":{"name":"advanced_talent_type","type":"span","triggeredFuncs":[],"affects":["advanced_talent_image","advanced_talent_icon"],"addFuncs":[],"listener":"change:advanced_talent_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_name":{"name":"advanced_talent_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_tier":{"name":"advanced_talent_tier","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_tier","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_prerequisites":{"name":"advanced_talent_prerequisites","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_prerequisites","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_talent_description":{"name":"advanced_talent_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_talent_description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_show_details":{"name":"basic_technique_show_details","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_show_details","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_basic_technique_extinguished":{"name":"basic_technique_extinguished","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_extinguished","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_basic-technique-unslot":{"name":"basic-technique-unslot","type":"action","triggeredFuncs":["unslotCard"],"affects":[],"addFuncs":[],"listener":"clicked:basic-technique-unslot","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_id":{"name":"basic_technique_id","type":"select","triggeredFuncs":["slotCard"],"affects":[],"addFuncs":[],"listener":"change:basic_technique_id","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_icon":{"name":"basic_technique_icon","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_icon","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_basic_technique_image":{"name":"basic_technique_image","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_image","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_basic_technique_type":{"name":"basic_technique_type","type":"span","triggeredFuncs":[],"affects":["basic_technique_image","basic_technique_icon"],"addFuncs":[],"listener":"change:basic_technique_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_name":{"name":"basic_technique_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_tier":{"name":"basic_technique_tier","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_tier","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_prerequisites":{"name":"basic_technique_prerequisites","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_prerequisites","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_type_1":{"name":"basic_technique_type_1","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_type_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_basic-technique-basic-technique-roll-1-action":{"name":"basic-technique-basic-technique-roll-1-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:basic-technique-basic-technique-roll-1-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_basic_technique_roll_1_action":{"name":"basic_technique_basic_technique_roll_1_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_basic_technique_roll_1_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_name_1":{"name":"basic_technique_name_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_name_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_test_1":{"name":"basic_technique_test_1","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_test_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_cost_1":{"name":"basic_technique_cost_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_cost_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_description_1":{"name":"basic_technique_description_1","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_description_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_type_2":{"name":"basic_technique_type_2","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_type_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_basic-technique-basic-technique-roll-2-action":{"name":"basic-technique-basic-technique-roll-2-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:basic-technique-basic-technique-roll-2-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_basic_technique_roll_2_action":{"name":"basic_technique_basic_technique_roll_2_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_basic_technique_roll_2_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_name_2":{"name":"basic_technique_name_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_name_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_test_2":{"name":"basic_technique_test_2","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_test_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_cost_2":{"name":"basic_technique_cost_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_cost_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_description_2":{"name":"basic_technique_description_2","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_description_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_type_3":{"name":"basic_technique_type_3","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_type_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_basic-technique-basic-technique-roll-3-action":{"name":"basic-technique-basic-technique-roll-3-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:basic-technique-basic-technique-roll-3-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_basic_technique_roll_3_action":{"name":"basic_technique_basic_technique_roll_3_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_basic_technique_roll_3_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_name_3":{"name":"basic_technique_name_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_name_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_test_3":{"name":"basic_technique_test_3","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_test_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_cost_3":{"name":"basic_technique_cost_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_cost_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_description_3":{"name":"basic_technique_description_3","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_description_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_basic_technique_description":{"name":"basic_technique_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:basic_technique_description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_show_details":{"name":"intermediate_technique_show_details","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_show_details","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_extinguished":{"name":"intermediate_technique_extinguished","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_extinguished","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_intermediate-technique-unslot":{"name":"intermediate-technique-unslot","type":"action","triggeredFuncs":["unslotCard"],"affects":[],"addFuncs":[],"listener":"clicked:intermediate-technique-unslot","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_id":{"name":"intermediate_technique_id","type":"select","triggeredFuncs":["slotCard"],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_id","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_icon":{"name":"intermediate_technique_icon","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_icon","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_intermediate_technique_image":{"name":"intermediate_technique_image","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_image","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_intermediate_technique_type":{"name":"intermediate_technique_type","type":"span","triggeredFuncs":[],"affects":["intermediate_technique_image","intermediate_technique_icon"],"addFuncs":[],"listener":"change:intermediate_technique_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_name":{"name":"intermediate_technique_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_tier":{"name":"intermediate_technique_tier","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_tier","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_prerequisites":{"name":"intermediate_technique_prerequisites","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_prerequisites","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_type_1":{"name":"intermediate_technique_type_1","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_type_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_intermediate-technique-intermediate-technique-roll-1-action":{"name":"intermediate-technique-intermediate-technique-roll-1-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:intermediate-technique-intermediate-technique-roll-1-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_intermediate_technique_roll_1_action":{"name":"intermediate_technique_intermediate_technique_roll_1_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_intermediate_technique_roll_1_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_name_1":{"name":"intermediate_technique_name_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_name_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_test_1":{"name":"intermediate_technique_test_1","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_test_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_cost_1":{"name":"intermediate_technique_cost_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_cost_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_description_1":{"name":"intermediate_technique_description_1","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_description_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_type_2":{"name":"intermediate_technique_type_2","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_type_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_intermediate-technique-intermediate-technique-roll-2-action":{"name":"intermediate-technique-intermediate-technique-roll-2-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:intermediate-technique-intermediate-technique-roll-2-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_intermediate_technique_roll_2_action":{"name":"intermediate_technique_intermediate_technique_roll_2_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_intermediate_technique_roll_2_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_name_2":{"name":"intermediate_technique_name_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_name_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_test_2":{"name":"intermediate_technique_test_2","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_test_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_cost_2":{"name":"intermediate_technique_cost_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_cost_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_description_2":{"name":"intermediate_technique_description_2","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_description_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_type_3":{"name":"intermediate_technique_type_3","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_type_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_intermediate-technique-intermediate-technique-roll-3-action":{"name":"intermediate-technique-intermediate-technique-roll-3-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:intermediate-technique-intermediate-technique-roll-3-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_intermediate_technique_roll_3_action":{"name":"intermediate_technique_intermediate_technique_roll_3_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_intermediate_technique_roll_3_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_name_3":{"name":"intermediate_technique_name_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_name_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_test_3":{"name":"intermediate_technique_test_3","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_test_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_cost_3":{"name":"intermediate_technique_cost_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_cost_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_description_3":{"name":"intermediate_technique_description_3","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_description_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_intermediate_technique_description":{"name":"intermediate_technique_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:intermediate_technique_description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_show_details":{"name":"advanced_technique_show_details","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_show_details","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_extinguished":{"name":"advanced_technique_extinguished","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_extinguished","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_advanced-technique-unslot":{"name":"advanced-technique-unslot","type":"action","triggeredFuncs":["unslotCard"],"affects":[],"addFuncs":[],"listener":"clicked:advanced-technique-unslot","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_id":{"name":"advanced_technique_id","type":"select","triggeredFuncs":["slotCard"],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_id","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_icon":{"name":"advanced_technique_icon","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_icon","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_advanced_technique_image":{"name":"advanced_technique_image","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_image","listenerFunc":"accessSheet","defaultValue":"","calculation":"setCardBack","initialFunc":"","formula":""},"attr_advanced_technique_type":{"name":"advanced_technique_type","type":"span","triggeredFuncs":[],"affects":["advanced_technique_image","advanced_technique_icon"],"addFuncs":[],"listener":"change:advanced_technique_type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_name":{"name":"advanced_technique_name","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_tier":{"name":"advanced_technique_tier","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_tier","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_prerequisites":{"name":"advanced_technique_prerequisites","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_prerequisites","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_type_1":{"name":"advanced_technique_type_1","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_type_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_advanced-technique-advanced-technique-roll-1-action":{"name":"advanced-technique-advanced-technique-roll-1-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:advanced-technique-advanced-technique-roll-1-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_advanced_technique_roll_1_action":{"name":"advanced_technique_advanced_technique_roll_1_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_advanced_technique_roll_1_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_name_1":{"name":"advanced_technique_name_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_name_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_test_1":{"name":"advanced_technique_test_1","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_test_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_cost_1":{"name":"advanced_technique_cost_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_cost_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_description_1":{"name":"advanced_technique_description_1","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_description_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_type_2":{"name":"advanced_technique_type_2","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_type_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_advanced-technique-advanced-technique-roll-2-action":{"name":"advanced-technique-advanced-technique-roll-2-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:advanced-technique-advanced-technique-roll-2-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_advanced_technique_roll_2_action":{"name":"advanced_technique_advanced_technique_roll_2_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_advanced_technique_roll_2_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_name_2":{"name":"advanced_technique_name_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_name_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_test_2":{"name":"advanced_technique_test_2","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_test_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_cost_2":{"name":"advanced_technique_cost_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_cost_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_description_2":{"name":"advanced_technique_description_2","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_description_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_type_3":{"name":"advanced_technique_type_3","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_type_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_advanced-technique-advanced-technique-roll-3-action":{"name":"advanced-technique-advanced-technique-roll-3-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:advanced-technique-advanced-technique-roll-3-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_advanced_technique_roll_3_action":{"name":"advanced_technique_advanced_technique_roll_3_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_advanced_technique_roll_3_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_name_3":{"name":"advanced_technique_name_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_name_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_test_3":{"name":"advanced_technique_test_3","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_test_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_cost_3":{"name":"advanced_technique_cost_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_cost_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_description_3":{"name":"advanced_technique_description_3","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_description_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_advanced_technique_description":{"name":"advanced_technique_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:advanced_technique_description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"act_add-deck":{"name":"add-deck","type":"action","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"clicked:add-deck","listenerFunc":"addItem","defaultValue":"","calculation":"","initialFunc":"","formula":""},"fieldset_repeating_deck":{"name":"repeating_deck","type":"fieldset","triggeredFuncs":[],"affects":[],"addFuncs":["initializeDeck","setCardSelects"],"listener":"remove:repeating_deck","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_slot_flip":{"name":"repeating_deck_$x_slot_flip","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:slot_flip","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_name":{"name":"repeating_deck_$x_name","type":"text","triggeredFuncs":["setCardSelects"],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:name","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_type":{"name":"repeating_deck_$x_type","type":"select","triggeredFuncs":[],"affects":["image","icon"],"addFuncs":[],"listener":"change:repeating_deck:type","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_tier":{"name":"repeating_deck_$x_tier","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:tier","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_prerequisites":{"name":"repeating_deck_$x_prerequisites","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:prerequisites","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_slot":{"name":"repeating_deck_$x_slot","type":"select","triggeredFuncs":["setCardSelects","flipDeckCard"],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:slot","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_type_1":{"name":"repeating_deck_$x_type_1","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:type_1","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_repeating_deck_$x_roll-1-action":{"name":"repeating_deck_$x_roll-1-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:repeating_deck:roll-1-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_roll_1_action":{"name":"repeating_deck_$x_roll_1_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:roll_1_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_name_1":{"name":"repeating_deck_$x_name_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:name_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_test_1":{"name":"repeating_deck_$x_test_1","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:test_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_cost_1":{"name":"repeating_deck_$x_cost_1","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:cost_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_description_1":{"name":"repeating_deck_$x_description_1","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:description_1","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_type_2":{"name":"repeating_deck_$x_type_2","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:type_2","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_repeating_deck_$x_roll-2-action":{"name":"repeating_deck_$x_roll-2-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:repeating_deck:roll-2-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_roll_2_action":{"name":"repeating_deck_$x_roll_2_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:roll_2_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_name_2":{"name":"repeating_deck_$x_name_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:name_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_test_2":{"name":"repeating_deck_$x_test_2","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:test_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_cost_2":{"name":"repeating_deck_$x_cost_2","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:cost_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_description_2":{"name":"repeating_deck_$x_description_2","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:description_2","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_type_3":{"name":"repeating_deck_$x_type_3","type":"checkbox","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:type_3","listenerFunc":"accessSheet","defaultValue":0,"calculation":"","initialFunc":"","formula":""},"act_repeating_deck_$x_roll-3-action":{"name":"repeating_deck_$x_roll-3-action","type":"action","triggeredFuncs":["rollTechnique"],"affects":[],"addFuncs":[],"listener":"clicked:repeating_deck:roll-3-action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_roll_3_action":{"name":"repeating_deck_$x_roll_3_action","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:roll_3_action","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_name_3":{"name":"repeating_deck_$x_name_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:name_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_test_3":{"name":"repeating_deck_$x_test_3","type":"select","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:test_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_cost_3":{"name":"repeating_deck_$x_cost_3","type":"text","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:cost_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_description_3":{"name":"repeating_deck_$x_description_3","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:description_3","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_repeating_deck_$x_description":{"name":"repeating_deck_$x_description","type":"span","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:repeating_deck:description","listenerFunc":"accessSheet","defaultValue":"","calculation":"","initialFunc":"","formula":""},"attr_template_start":{"name":"template_start","type":"hidden","triggeredFuncs":[],"affects":[],"addFuncs":[],"listener":"change:template_start","listenerFunc":"accessSheet","defaultValue":"@{whisper}&{template:blackbirds} {{character_name=@{character_name}}} {{character_id=@{character_id}}}","calculation":"","initialFunc":"","formula":""}};
|
||
|
||
kFuncs.cascades = cascades;
|
||
|
||
const repeatingSectionDetails = [{"section":"repeating_qualities","fields":["name","description"]},{"section":"repeating_flock","fields":["name"]},{"section":"repeating_boons-banes","fields":["collapse","name","effect","description"]},{"section":"repeating_injuries","fields":["collapse","name","severity","description"]},{"section":"repeating_weapons","fields":["collapse","name","action","qualities","damage","degradation","skill","damage_dice","damage_custom","ammo","range","reload","hands","description"]},{"section":"repeating_wortcunning","fields":["collapse","spellname","action","description","reference"]},{"section":"repeating_undertakings","fields":["description","time-limit"]},{"section":"repeating_spoils","fields":["description","value"]},{"section":"repeating_lodging","fields":["name"]},{"section":"repeating_material","fields":["name"]},{"section":"repeating_support","fields":["name"]},{"section":"repeating_travel","fields":["name"]},{"section":"repeating_equipment","fields":["name"]},{"section":"repeating_patrons","fields":["name","traits","notes","patronage_score","stewardship","print_patron_action"]},{"section":"repeating_manifestation","fields":["collapse","name","range","duration","description"]},{"section":"repeating_outsiders","fields":["collapse","name","station","agreement","description"]},{"section":"repeating_vitiations","fields":["collapse","name","action","power_level","tithe_cost","outsider_id","duration_base","duration_ability","duration_bonus","duration_unit","range","description","sublime_success","critical_success","critical_failure","sublime_failure"]},{"section":"repeating_npc-attacks","fields":["attack_name","hit_chance","range","damage","qualities","action"]},{"section":"repeating_traits","fields":["collapse","name","misfortune","ap_cost","action_type","description"]},{"section":"repeating_deck","fields":["slot_flip","name","type","tier","prerequisites","slot","type_1","roll_1_action","name_1","test_1","cost_1","description_1","type_2","roll_2_action","name_2","test_2","cost_2","description_2","type_3","roll_3_action","name_3","test_3","cost_3","description_3","description"]}];
|
||
|
||
kFuncs.repeatingSectionDetails = repeatingSectionDetails;
|
||
|
||
const persistentTabs = ["blackbirds_tab","talents_and_techniques_tab"];
|
||
|
||
kFuncs.persistentTabs = persistentTabs;
|
||
/**
|
||
* The K-scaffold provides several variables to allow your scripts to tap into its information flow.
|
||
* @namespace Sheetworkers.Variables
|
||
*/
|
||
/**
|
||
* This stores the name of your sheet for use in the logging functions {@link log} and {@link debug}. Accessible by `k.sheetName`
|
||
* @memberof Variables
|
||
* @var
|
||
* @type {string}
|
||
*/
|
||
let sheetName = 'kScaffold Powered Sheet';
|
||
kFuncs.sheetName = sheetName;
|
||
/**
|
||
* This stores the version of your sheet for use in the logging functions{@link log} and {@link debug}. It is also stored in the sheet_version attribute on your character sheet. Accessible via `k.version`
|
||
* @memberof Variables
|
||
* @var
|
||
* @type {number}
|
||
*/
|
||
let version = 0;
|
||
kFuncs.version = version;
|
||
/**
|
||
* A boolean flag that tells the script whether to enable or disable {@link debug} calls. If the version of the sheet is `0`, or an attribute named `debug_mode` is found on opening this is set to true for your entire session. Otherwise, it remains false.
|
||
* @memberof Variables
|
||
* @var
|
||
* @type {boolean}
|
||
*/
|
||
let debugMode = false;
|
||
kFuncs.debugMode = debugMode;
|
||
const funcs = {};
|
||
kFuncs.funcs = funcs;
|
||
const updateHandlers = {};
|
||
const openHandlers = {};
|
||
const initialSetups = {};
|
||
const allHandlers = {};
|
||
const addFuncs = {};
|
||
|
||
const kscaffoldJSVersion = '1.0.0';
|
||
const kscaffoldPUGVersion = '1.0.0';
|
||
/**
|
||
* Defines the rollstring that rolls made using k.startRoll begin with. Defaults to "&{template:default}".
|
||
* @memberof Variables
|
||
* @var
|
||
* @type {string}
|
||
*/
|
||
let defaultRollStart = '&{template:default}';
|
||
kFuncs.defaultRollStart = defaultRollStart;/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
|
||
/*jshint -W014,-W084,-W030,-W033*/
|
||
/**
|
||
* These are utility functions that are not directly related to Roll20 systems. They provide easy methods for everything from processing text and numbers to querying the user for input.
|
||
* @namespace Sheetworkers.Utilities
|
||
* @alias Utilities
|
||
*/
|
||
/**
|
||
* Replaces problem characters to use a string as a regex
|
||
* @memberof Utilities
|
||
* @param {string} text - The text to replace characters in
|
||
* @returns {string}
|
||
* @example
|
||
* const textForRegex = k.sanitizeForRegex('.some thing[with characters]');
|
||
* console.log(textForRegex);// => "\.some thing\[with characters\]"
|
||
*/
|
||
const sanitizeForRegex = function(text){
|
||
return text.replace(/\.|\||\(|\)|\[|\]|\-|\+|\?|\/|\{|\}|\^|\$|\*/g,'\\$&');
|
||
};
|
||
kFuncs.sanitizeForRegex = sanitizeForRegex;
|
||
|
||
/**
|
||
* Converts a value to a number, it\'s default value, or `0` if no default value passed.
|
||
* @memberof Utilities
|
||
* @param {string|number} val - Value to convert to a number
|
||
* @param {number} def - The default value, uses 0 if not passed
|
||
* @returns {number|undefined}
|
||
* @example
|
||
* const num = k.value('100');
|
||
* console.log(num);// => 100
|
||
*/
|
||
const value = function(val,def){
|
||
const convertVal = +val;
|
||
if(def !== undefined && isNaN(def)){
|
||
throw(`K-scaffold Error: invalid default for value(). Default: ${def}`);
|
||
}
|
||
return convertVal === 0 ?
|
||
convertVal :
|
||
(+val||def||0);
|
||
};
|
||
kFuncs.value = value;
|
||
|
||
/**
|
||
* Extracts the section (e.g. `repeating_equipment`), rowID (e.g `-;lkj098J:LKj`), and field name (e.g. `bulk`) from a repeating attribute name.
|
||
* @memberof Utilities
|
||
* @param {string} string - The string to parse
|
||
* @returns {array} - Array of matches. Index 0: the section name, e.g. repeating_equipment | Index 1:the row ID | index 2: The name of the attribute
|
||
* @returns {string[]}
|
||
* @example
|
||
* //Extract info from a full repeating name
|
||
* const [section,rowID,attrName] = k.parseRepeatName('repeating_equipment_-8908asdflkjZlkj23_name');
|
||
* console.log(section);// => "repeating_equipment"
|
||
* console.log(rowID);// => "-8908asdflkjZlkj23"
|
||
* console.log(attrName);// => "name"
|
||
*
|
||
* //Extract info from just a row name
|
||
* const [section,rowID,attrName] = k.parseRepeatName('repeating_equipment_-8908asdflkjZlkj23');
|
||
* console.log(section);// => "repeating_equipment"
|
||
* console.log(rowID);// => "-8908asdflkjZlkj23"
|
||
* console.log(attrName);// => undefined
|
||
*/
|
||
const parseRepeatName = function(string){
|
||
let match = string.match(/(repeating_[^_]+)_([^_]+)(?:_(.+))?/);
|
||
match.shift();
|
||
return match;
|
||
};
|
||
kFuncs.parseRepeatName = parseRepeatName;
|
||
|
||
/**
|
||
* Parses out the components of a trigger name similar to [parseRepeatName](#parserepeatname). Aliases: parseClickTrigger.
|
||
*
|
||
* Aliases: `k.parseClickTrigger`
|
||
* @memberof Utilities
|
||
* @param {string} string The triggerName property of the
|
||
* @returns {array} - For a repeating button named `repeating_equipment_-LKJhpoi98;lj_roll`, the array will be `['repeating_equipment','-LKJhpoi98;lj','roll']`. For a non repeating button named `roll`, the array will be `[undefined,undefined,'roll']`
|
||
* @returns {string[]}
|
||
* @example
|
||
* //Parse a non repeating trigger
|
||
* const [section,rowID,attrName] = k.parseTriggerName('clicked:some-button');
|
||
* console.log(section);// => undefined
|
||
* console.log(rowID);// => undefined
|
||
* console.log(attrName);// => "some-button"
|
||
*
|
||
* //Parse a repeating trigger
|
||
* const [section,rowID,attrName] = k.parseTriggerName('clicked:repeating_attack_-234lkjpd8fu8usadf_some-button');
|
||
* console.log(section);// => "repeating_attack"
|
||
* console.log(rowID);// => "-234lkjpd8fu8usadf"
|
||
* console.log(attrName);// => "some-button"
|
||
*
|
||
* //Parse a repeating name
|
||
* const [section,rowID,attrName] = k.parseTriggerName('repeating_attack_-234lkjpd8fu8usadf_some-button');
|
||
* console.log(section);// => "repeating_attack"
|
||
* console.log(rowID);// => "-234lkjpd8fu8usadf"
|
||
* console.log(attrName);// => "some-button"
|
||
*/
|
||
const parseTriggerName = function(string){
|
||
let match = string.replace(/^clicked:/,'').match(/(?:(repeating_[^_]+)_([^_]+)_)?(.+)/);
|
||
match.shift();
|
||
return match;
|
||
};
|
||
kFuncs.parseTriggerName = parseTriggerName;
|
||
const parseClickTrigger = parseTriggerName;
|
||
kFuncs.parseClickTrigger = parseClickTrigger;
|
||
|
||
/**
|
||
* Parses out the attribute name from the htmlattribute name.
|
||
* @memberof Utilities
|
||
* @param {string} string - The triggerName property of the [event](https://wiki.roll20.net/Sheet_Worker_Scripts#eventInfo_Object).
|
||
* @returns {string}
|
||
* @example
|
||
* //Parse a name
|
||
* const attrName = k.parseHtmlName('attr_attribute_1');
|
||
* console.log(attrName);// => "attribute_1"
|
||
*/
|
||
const parseHTMLName = function(string){
|
||
let match = string.match(/(?:attr|act|roll)_(.+)/);
|
||
match.shift();
|
||
return match[0];
|
||
};
|
||
kFuncs.parseHTMLName = parseHTMLName;
|
||
|
||
/**
|
||
* Capitalize each word in a string
|
||
* @memberof Utilities
|
||
* @param {string} string - The string to capitalize
|
||
* @returns {string}
|
||
* @example
|
||
* const capitalized = k.capitalize('a word');
|
||
* console.log(capitalized);// => "A Word"
|
||
*/
|
||
const capitalize = function(string){
|
||
return string.replace(/(?:^|\s+|\/)[a-z]/ig,(letter)=>letter.toUpperCase());
|
||
};
|
||
kFuncs.capitalize = capitalize;
|
||
|
||
/**
|
||
* Extracts a roll query result for use in later functions. Must be awaited as per [startRoll documentation](https://wiki.roll20.net/Sheet_Worker_Scripts#Roll_Parsing.28NEW.29). Stolen from [Oosh\'s Adventures with Startroll thread](https://app.roll20.net/forum/post/10346883/adventures-with-startroll).
|
||
* @memberof Utilities
|
||
* @param {string} query - The query should be just the text as the `?{` and `}` at the start/end of the query are added by the function.
|
||
* @returns {Promise} - Resolves to the selected value from the roll query
|
||
* @example
|
||
* const rollFunction = async function(){
|
||
* //Get the result of a choose from list query
|
||
* const queryResult = await extractQueryResult('Prompt Text Here|Option 1|Option 2');
|
||
* console.log(queryResult);//=> "Option 1" or "Option 2" depending on what the user selects
|
||
*
|
||
* //Get free form input from the user
|
||
* const freeResult = await extractQueryResult('Prompt Text Here');
|
||
* consoel.log(freeResult);// => Whatever the user entered
|
||
* }
|
||
*/
|
||
const extractQueryResult = async function(query){
|
||
debug('entering extractQueryResult');
|
||
const rollObj = {
|
||
query:`[[0[response=?{${query}}]]]`
|
||
};
|
||
let {roll} = await _startRoll(rollObj,'!');
|
||
roll.finish();
|
||
return roll.results.query.expression.replace(/^.+?response=|\]$/g,'');
|
||
};
|
||
kFuncs.extractQueryResult = extractQueryResult;
|
||
|
||
/**
|
||
* Simulates a query for ensuring that async/await works correctly in the sheetworker environment when doing conditional startRolls. E.g. if you have an if/else and only one of the conditions results in `startRoll` being called (and thus an `await`), the sheetworker environment would normally crash. Awaiting this in the condition that does not actually need to call `startRoll` will keep the environment in sync.
|
||
* @memberof Utilities
|
||
* @param {string|number} [value] - The value to return. Optional.
|
||
* @returns {Promise} - Resolves to the value passed to the function
|
||
* @example
|
||
* const rollFunction = async function(){
|
||
* //Get the result of a choose from list query
|
||
* const queryResult = await pseudoQuery('a value');
|
||
* console.log(queryResult);//=> "a value"
|
||
* }
|
||
*/
|
||
const pseudoQuery = async function(value){
|
||
const rollObj = {
|
||
query:`[[0[response=${value}]]]`
|
||
};
|
||
let {roll} = await _startRoll(rollObj,'!');
|
||
roll.finish();
|
||
return roll.results.query.expression.replace(/^.+?response=|\]$/g,'');
|
||
};
|
||
kFuncs.pseudoQuery = pseudoQuery;
|
||
|
||
/**
|
||
* An alias for console.log.
|
||
* @memberof Utilities
|
||
* @param {any} msg - The message can be a straight string, an object, or an array. If it is an object or array, the object will be broken down so that each key is used as a label to output followed by the value of that key. If the value of the key is an object or array, it will be output via `console.table`.
|
||
*/
|
||
const log = function(msg){
|
||
if(typeof msg === 'string'){
|
||
console.log(`%c${kFuncs.sheetName} log| ${msg}`,"background-color:#159ccf");
|
||
}else if(typeof msg === 'object'){
|
||
Object.keys(msg).forEach((m)=>{
|
||
if(typeof msg[m] === 'string'){
|
||
console.log(`%c${kFuncs.sheetName} log| ${m}: ${msg[m]}`,"background-color:#159ccf");
|
||
}else{
|
||
console.log(`%c${kFuncs.sheetName} log| ${typeof msg[m]} ${m}`,"background-color:#159ccf");
|
||
console.table(msg[m]);
|
||
}
|
||
});
|
||
}
|
||
};
|
||
kFuncs.log = log;
|
||
|
||
/**
|
||
* Alias for console.log that only triggers when debug mode is enabled or when the sheet\'s version is `0`. Useful for entering test logs that will not pollute the console on the live sheet.
|
||
* @memberof Utilities
|
||
* @param {any} msg - 'See {@link k.log}
|
||
* @param {boolean} force - Pass as a truthy value to force the debug output to be output to the console regardless of debug mode.
|
||
* @returns {void}
|
||
*/
|
||
const debug = function(msg,force){
|
||
if(!kFuncs.debugMode && !force && kFuncs.version > 0) return;
|
||
if(typeof msg === 'string'){
|
||
console.warn(`%c${kFuncs.sheetName} DEBUG| ${msg}`,"background-color:tan;color:red;");
|
||
}else if(typeof msg === 'object'){
|
||
Object.keys(msg).forEach((m)=>{
|
||
if(typeof msg[m] === 'string'){
|
||
console.warn(`%c${kFuncs.sheetName} DEBUG| ${m}: ${msg[m]}`,"background-color:tan;color:red;");
|
||
}else{
|
||
console.warn(`%c${kFuncs.sheetName} DEBUG| ${typeof msg[m]} ${m}`,"background-color:tan;color:red;font-weight:bold;");
|
||
console.table(msg[m]);
|
||
}
|
||
});
|
||
}
|
||
};
|
||
kFuncs.debug = debug;
|
||
|
||
/**
|
||
* Orders the section id arrays for all sections in the `sections` object to match the repOrder attribute.
|
||
* @memberof Utilities
|
||
* @param {attributesProxy} attributes - The attributes object that must have a value for the reporder for each section.
|
||
* @param {object[]} sections - Object containing the IDs for the repeating sections, indexed by repeating section name.
|
||
*/
|
||
const orderSections = function(attributes,sections){
|
||
Object.keys(sections).forEach((section)=>{
|
||
attributes.attributes[`_reporder_${section}`] = commaArray(attributes[`_reporder_${section}`]);
|
||
sections[section] = orderSection(attributes.attributes[`_reporder_${section}`],sections[section]);
|
||
});
|
||
};
|
||
kFuncs.orderSections = orderSections;
|
||
|
||
/**
|
||
* Orders a single ID array.
|
||
* @memberof Utilities
|
||
* @param {string[]} repOrder - Array of IDs in the order they are in on the sheet.
|
||
* @param {string[]} IDs - Array of IDs to be ordered. Aka the default ID Array passed to the getSectionIDs callback
|
||
* @returns {string[]} - The ordered id array
|
||
*/
|
||
const orderSection = function(repOrder,IDs=[]){
|
||
const idArr = [...repOrder.filter(v => v),...IDs.filter(id => !repOrder.includes(id.toLowerCase()))];
|
||
return idArr;
|
||
};
|
||
kFuncs.orderSection = orderSection;
|
||
|
||
/**
|
||
* Splits a comma delimited string into an array
|
||
* @memberof Utilities
|
||
* @param {string} string - The string to split.
|
||
* @returns {array} - The string segments of the comma delimited list.
|
||
*/
|
||
const commaArray = function(string=''){
|
||
return string.toLowerCase().split(/\s*,\s*/);
|
||
};
|
||
kFuncs.commaArray = commaArray;
|
||
|
||
// Roll escape functions for passing data in action button calls. Base64 encodes/decodes the data.
|
||
const RE = {
|
||
chars: {
|
||
'"': '%quot;',
|
||
',': '%comma;',
|
||
':': '%colon;',
|
||
'}': '%rcub;',
|
||
'{': '%lcub;',
|
||
},
|
||
escape(data) {
|
||
return typeof data === 'object' ?
|
||
`KDATA${btoa(JSON.stringify(data))}` :
|
||
`KSTRING${btoa(data)}`;
|
||
},
|
||
unescape(string) {
|
||
const isData = typeof string === 'string' &&
|
||
(
|
||
string.startsWith('KDATA') ||
|
||
string.startsWith('KSTRING')
|
||
);
|
||
return isData ?
|
||
(
|
||
string.startsWith('KDATA') ?
|
||
JSON.parse(atob(string.replace(/^KDATA/,''))) :
|
||
atob(string.replace(/^KSTRING/,''))
|
||
) :
|
||
string;
|
||
}
|
||
};
|
||
|
||
|
||
/**
|
||
* Encodes data in Base64. This is useful for passing roll information to action buttons called from roll buttons.
|
||
* @function
|
||
* @param {string|object|any[]} data - The data that you want to Base64 encode
|
||
* @returns {string} - The encoded data
|
||
* @memberof! Utilities
|
||
*/
|
||
const escape = RE.escape;
|
||
/**
|
||
* Decodes Base64 encoded strings that were created by the K-scaffold
|
||
* @function
|
||
* @param {string|object|any[]} string - The string of encoded data to decode. If this is not a string, or is not a string that was encoded by the K-scaffold, it will be returned as is.
|
||
* @returns {string|object|any[]}
|
||
* @memberof! Utilities
|
||
*/
|
||
const unescape = RE.unescape;
|
||
|
||
Object.assign(kFuncs,{escape,unescape});
|
||
|
||
/**
|
||
* Parses a macro so that it is reduced to the final values of all attributes contained in the macro. Will drill down up to 99 levels deep. If the string was not parseable, string will be returned with as much parsed as possible.
|
||
* @memberof Utilities
|
||
* @param {string} mutStr - The string macro to parse
|
||
* @param {AttributesProxy} attributes - The K-scaffold Attributes Proxy
|
||
* @param {Object} sections - The K-scaffold sections object
|
||
* @returns {string} - The string with all attributes replaced by their values (if possible).
|
||
*/
|
||
const parseMacro = (str,attributes,sections) => {
|
||
let iter = 0;
|
||
let mutStr = str;
|
||
while(mutStr.match(/@{.+?}/) && iter < 99){
|
||
mutStr = mutStr.replace(/@{(.+?)}/g,(match,name) => {
|
||
name = name.replace(/\|/,'_');
|
||
return attributes[name] !== null && attributes[name] !== undefined ?
|
||
attributes[name] :
|
||
`@(${name})`;
|
||
})
|
||
iter++;
|
||
}
|
||
mutStr = mutStr.replace(/@\((.+?)\)/g,'@{$1}');
|
||
return mutStr;
|
||
}
|
||
kFuncs.parseMacro = parseMacro;
|
||
|
||
/**
|
||
* Sends data to another character sheet to cause a change on that sheet. WARNING, this function should not be used in response to an attribute change to avoid spamming the chat with api messages.
|
||
*
|
||
* 
|
||
* @memberof Utilities
|
||
* @param {string} characterName - The character to connect to
|
||
* @param {string} funcName - Name of the function to call similar to function name used in {@link callFunc}.
|
||
* @param {...any} args - The arguments to pass to the function call no the other sheet. These are passed after the normal destructure object for a K-scaffold function call.
|
||
* @example
|
||
* //Function that is called by the source sheet
|
||
* const dispatchPartner = async function({trigger,attributes,sections,casc}){
|
||
* const partnerName = await (
|
||
* attributes.partner_name ?
|
||
* k.pseudoQuery(attributes.partner_name) :
|
||
* k.extractQueryResult('Partner name')
|
||
* );
|
||
* attributes.partner_name = partnerName;
|
||
* //passing the attributes of the source sheet
|
||
* k.send(partnerName,'receivePartner',attributes);
|
||
* attributes.set();
|
||
* };
|
||
* k.registerFuncs({dispatchPartner});
|
||
*
|
||
* //Function called on target sheet. Partner is the attributes from the source sheet
|
||
* const receivePartner = function({trigger,attributes,sections,casc},partner){
|
||
* attributes.from_partner = partner.for_partner;
|
||
* attributes.partner_name = partner.character_name;
|
||
* };
|
||
* k.registerFuncs({receivePartner });
|
||
*/
|
||
const send = async function(characterName,funcName,...args){
|
||
const data = RE.escape({
|
||
funcName,
|
||
args
|
||
});
|
||
const roll = await startRoll(`!@{${characterName}|character_name}%{${characterName}|k-network-call||${data}}&{noerror}`);
|
||
finishRoll(roll.rollId);
|
||
};
|
||
kFuncs.send = send;
|
||
|
||
const kReceive = function({trigger,attributes,sections,casc}) {
|
||
const data = trigger.rollData;
|
||
callFunc(data.funcName,{attributes,sections,casc},...data.args);
|
||
};
|
||
funcs.kReceive = kReceive;/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
|
||
/*jshint -W014,-W084,-W030,-W033*/
|
||
|
||
//# Attribute Obj Proxy handler
|
||
const createAttrProxy = function(attrs,sections,casc){
|
||
//creates a proxy for the attributes object so that values can be worked with more easily.
|
||
const getCascObj = function(event){
|
||
const eventName = event.triggerName || event.sourceAttribute;
|
||
let typePrefix = eventName.startsWith('clicked:') ?
|
||
'act_' :
|
||
event.removedInfo ?
|
||
'fieldset_' :
|
||
'attr_';
|
||
let cascName = `${typePrefix}${eventName.replace(/(?:removed?|clicked):/,'')}`;
|
||
let cascObj = casc[cascName];
|
||
k.debug({[cascName]:cascObj});
|
||
if(event && cascObj){
|
||
Object.assign(cascObj,event);
|
||
if(event.originalRollId){
|
||
cascObj.rollData = RE.unescape(event.originalRollId);
|
||
}
|
||
}
|
||
return cascObj || {};
|
||
};
|
||
|
||
const triggerFunctions = function(obj){
|
||
if(obj.triggeredFuncs && obj.triggeredFuncs.length){
|
||
debug(`triggering functions for ${obj.name}`);
|
||
obj.triggeredFuncs && obj.triggeredFuncs.forEach(func=>funcs[func] ?
|
||
funcs[func]({trigger:obj,attributes,sections,casc}) :
|
||
debug(`!!!Warning!!! no function named ${func} found. Triggered function not called for ${obj.name}`,true));
|
||
}
|
||
};
|
||
|
||
const initialFunction = function(obj){
|
||
if(obj.initialFunc){
|
||
debug(`initial functions for ${obj.name}`);
|
||
funcs[obj.initialFunc] ?
|
||
funcs[obj.initialFunc]({trigger:obj,attributes,sections}) :
|
||
debug(`!!!Warning!!! no function named ${obj.initialFunc} found. Initial function not called for ${obj.name}`,true);
|
||
}
|
||
};
|
||
const alwaysFunctions = function(trigger){
|
||
Object.values(allHandlers).forEach((handler)=>{
|
||
handler({trigger,attributes,sections,casc});
|
||
});
|
||
};
|
||
const processChange = function({event,trigger}){
|
||
if(event && !trigger){
|
||
debug(`${event.sourceAttribute} change detected. No trigger found`);
|
||
return;
|
||
}
|
||
if(!attributes || !sections || !casc){
|
||
debug(`!!! Insufficient arguments || attributes > ${!!attributes} | sections > ${!!sections} | casc > ${!!casc} !!!`);
|
||
return;
|
||
}
|
||
debug({trigger});
|
||
if(event){
|
||
debug('checking for initial & always functions');
|
||
if(Array.isArray(trigger.affects)){
|
||
attributes.queue.push(...trigger.affects);
|
||
}
|
||
alwaysFunctions(trigger,attributes,sections,casc);//Functions that should be run for all events.
|
||
initialFunction(trigger,attributes,sections,casc);//functions that should only be run if the attribute was the thing changed by the user
|
||
|
||
}
|
||
if(trigger){
|
||
debug(`processing ${trigger.name}`);
|
||
triggerFunctions(trigger,attributes,sections,casc);
|
||
if(!event){
|
||
// Handle autocalc formula
|
||
if(trigger.formula){
|
||
attributes[trigger.name] = parseKFormula({trigger,attributes,sections,casc});
|
||
}
|
||
// handle calculation of element
|
||
if(
|
||
trigger.calculation &&
|
||
funcs[trigger.calculation]
|
||
){
|
||
attributes[trigger.name] = funcs[trigger.calculation]({trigger,attributes,sections,casc});
|
||
}else if(trigger.calculation && !funcs[trigger.calculation]){
|
||
debug(`K-Scaffold Error: No function named ${trigger.calculation} found`);
|
||
}
|
||
}
|
||
}
|
||
attributes.set();
|
||
};
|
||
const attrTarget = {
|
||
updates:{},
|
||
attributes:{...attrs},
|
||
repOrders:{},
|
||
queue: [],
|
||
casc:{},
|
||
alwaysFunctions,
|
||
processChange,
|
||
triggerFunctions,
|
||
initialFunction,
|
||
getCascObj
|
||
};
|
||
const attrHandler = {
|
||
get:function(obj,prop){//gets the most value of the attribute.
|
||
//If it is a repeating order, returns the array, otherwise returns the update value or the original value
|
||
if(prop === 'toJSON'){
|
||
return () => ({...obj.attributes,...obj.updates});
|
||
} else if(prop === 'set'){
|
||
return function(){
|
||
let {callback,vocal} = arguments[0] ? arguments[0] : {};
|
||
if(sections && casc && attributes.queue.length){
|
||
const triggerName = attributes.queue.shift();
|
||
const trigger = getCascObj({sourceAttribute:triggerName});
|
||
processChange({trigger,attributes,sections,casc});
|
||
}else{
|
||
debug({updates:obj.updates});
|
||
const trueCallback = Object.keys(obj.repOrders).length ?
|
||
function(){
|
||
Object.entries(obj.repOrders).forEach(([section,order])=>{
|
||
_setSectionOrder(section,order)
|
||
});
|
||
callback && callback();
|
||
}:
|
||
callback;
|
||
Object.keys(obj.updates).forEach((key)=>obj.attributes[key] = obj.updates[key]);
|
||
const update = obj.updates;
|
||
obj.updates = {};
|
||
set(update,vocal,trueCallback);
|
||
}
|
||
}
|
||
}else if(Object.keys(obj).some(key=>key===prop)){
|
||
return Reflect.get(...arguments)
|
||
}else{
|
||
let retValue;
|
||
switch(true){
|
||
case obj.repOrders.hasOwnProperty(prop):
|
||
retValue = obj.repOrders[prop];
|
||
break;
|
||
case obj.updates.hasOwnProperty(prop):
|
||
retValue = obj.updates[prop];
|
||
break;
|
||
default:
|
||
retValue = obj.attributes[prop];
|
||
break;
|
||
}
|
||
let cascRef = `attr_${prop.replace(/(repeating_[^_]+_)[^_]+/,'$1\$X')}`;
|
||
let numRetVal = +retValue;
|
||
if(!Number.isNaN(numRetVal) && retValue !== ''){
|
||
retValue = numRetVal;
|
||
}else if(cascades[cascRef] && (typeof cascades[cascRef].defaultValue === 'number' || cascades[cascRef].type === 'number')){
|
||
retValue = cascades[cascRef].defaultValue;
|
||
}
|
||
return retValue;
|
||
}
|
||
},
|
||
set:function(obj,prop,value){
|
||
//Sets the value. Also verifies that the value is a valid attribute value
|
||
//e.g. not undefined, null, or NaN
|
||
if(value || value===0 || value===''){
|
||
if(/reporder|^repeating_[^_]+$/.test(prop)){
|
||
let section = prop.replace(/_reporder_/,'');
|
||
obj.repOrders[section] = value;
|
||
}else if(`${obj.attributes}` !== `${value}` ||
|
||
(obj.updates[prop] && `${obj.updates}` !== `${value}`)
|
||
){
|
||
if(sections && casc){
|
||
const trigger = getCascObj({sourceAttribute:prop});
|
||
if(Array.isArray(trigger.affects)){
|
||
attributes.queue.push(...trigger.affects);
|
||
}
|
||
}
|
||
obj.updates[prop] = value;
|
||
}
|
||
}else{
|
||
debug(`!!!Warning: Attempted to set ${prop} to an invalid value:${value}; value not stored!!!`);
|
||
}
|
||
return true;
|
||
},
|
||
deleteProperty(obj,prop){
|
||
//removes the property from the original attributes, updates, and the reporders
|
||
Object.keys(obj).forEach((key)=>{
|
||
delete obj[key][prop.toLowerCase()];
|
||
});
|
||
}
|
||
};
|
||
const attributes = new Proxy(attrTarget,attrHandler);
|
||
return attributes;
|
||
};
|
||
|
||
/**
|
||
* Function that registers a function for being called via the funcs object. Returns true if the function was successfully registered, and false if it could not be registered for any reason.
|
||
* @memberof Utilities
|
||
* @param {object} funcObj - Object with keys that are names to register functions under and values that are functions.
|
||
* @param {object} optionsObj - Object that contains options to use for this registration.
|
||
* @param {string[]} optionsObj.type - Array that contains the types of specialized functions that apply to the functions being registered. Valid types are `"opener"`, `"updater"`, and `"default"`. `"default"` is always used, and never needs to be passed.
|
||
* @returns {boolean} - True if the registration succeeded, false if it failed.
|
||
* @example
|
||
* //Basic Registration
|
||
* const myFunc = function({trigger,attributes,sections,casc}){};
|
||
* k.registerFuncs({myFunc});
|
||
*
|
||
* //Register a function to run on sheet open
|
||
* const openFunc = function({trigger,attributes,sections,casc}){};
|
||
* k.registerFuncs({openFunc},{type:['opener']})
|
||
*
|
||
* //Register a function to run on all events
|
||
* const allFunc = function({trigger,attributes,sections,casc}){};
|
||
* k.registerFuncs({allFunc},{type:['all']})
|
||
*/
|
||
const registerFuncs = function(funcObj,optionsObj = {}){
|
||
if(typeof funcObj !== 'object' || typeof optionsObj !== 'object'){
|
||
debug(`!!!! K-scaffold error: Improper arguments to register functions !!!!`);
|
||
return false;
|
||
}
|
||
const typeArr = optionsObj.type ? ['default',...optionsObj.type] : ['default'];
|
||
const typeSwitch = {
|
||
'opener':openHandlers,
|
||
'updater':updateHandlers,
|
||
'new':initialSetups,
|
||
'all':allHandlers,
|
||
'default':funcs
|
||
};
|
||
let setState;
|
||
Object.entries(funcObj).map(([prop,value])=>{
|
||
typeArr.forEach((type)=>{
|
||
if(typeSwitch[type][prop]){
|
||
debug(`!!! Duplicate function name for ${prop} as ${type}!!!`);
|
||
setState = false;
|
||
}else if(typeof value === 'function'){
|
||
typeSwitch[type][prop] = value;
|
||
setState = setState !== false ? true : false;
|
||
}else{
|
||
debug(`!!! K-scaffold error: Function registration requires a function. Invalid value to register as ${type} !!!`);
|
||
setState = false;
|
||
}
|
||
});
|
||
});
|
||
return setState;
|
||
};
|
||
kFuncs.registerFuncs = registerFuncs;
|
||
|
||
/**
|
||
* Function that sets up the action calls used in the roller mixin.
|
||
* @memberof Sheetworkers
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
*/
|
||
const setActionCalls = function({attributes,sections}){
|
||
actionAttributes.forEach((base)=>{
|
||
let [section,,field] = k.parseTriggerName(base);
|
||
let fieldAction = field.replace(/_/g,'-');
|
||
if(section){
|
||
sections[section].forEach((id)=>{
|
||
attributes[`${section}_${id}_${field}`] = `%{${attributes.character_name}|${section}_${id}_${fieldAction}}`;
|
||
});
|
||
}else{
|
||
attributes[`${field}`] = `%{${attributes.character_name}|${fieldAction}}`;
|
||
}
|
||
});
|
||
};
|
||
funcs.setActionCalls = setActionCalls;
|
||
kFuncs.setActionCalls = setActionCalls;
|
||
|
||
|
||
/**
|
||
* Function that reduces Roll20 macro syntax formulas down to their calculated value.
|
||
* @memberof Sheetworkers
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
*/
|
||
const parseKFormula = ({trigger,attributes,sections,casc}) => {
|
||
const [baseSection,rowID,attrName] = parseTriggerName(trigger.name);
|
||
const repeatBlockRx = baseSection ?
|
||
/(@{repeating_.+?_\$X_.+?})/g :
|
||
/={([^)]*repeating_[^_]+[^)]*)}=/g;
|
||
let mutFormula = trigger.formula;
|
||
mutFormula = mutFormula.replace(repeatBlockRx,(match,repeatMacro) => {
|
||
const [section] = repeatMacro.match(/repeating_[^_]+/);
|
||
const idArray = baseSection ?
|
||
[rowID] :
|
||
sections[section];
|
||
return idArray.map(id => {
|
||
return `(${repeatMacro.replace(/repeating_[^_]+?_[^_]+?_([^}]+)/g,`${section}_${id}_$1`)})`;
|
||
}).join(
|
||
trigger.type === 'number' ?
|
||
' + ' :
|
||
''
|
||
);
|
||
});
|
||
mutFormula = parseMacro(mutFormula,attributes)
|
||
.replace(/@{.+?}/g,'0');
|
||
const mathKeys = ['floor','ceil','round','abs'];
|
||
mathKeys.forEach(func => mutFormula = mutFormula.replace(new RegExp(`${func}\\(`,'g'),`Math.${func}(`));
|
||
const mathRx = new RegExp(`Math\\.(?:${mathKeys.join('|')})`,'g');
|
||
let noAlphaStr = mutFormula
|
||
.replace(mathRx,'');
|
||
return trigger.type !== 'text' ?
|
||
(
|
||
!noAlphaStr.match(/[a-z]/i) ?
|
||
eval(mutFormula) :
|
||
undefined
|
||
) :
|
||
mutFormula;
|
||
};
|
||
funcs.parseKFormula = parseKFormula;
|
||
kFuncs.parseKFormula = parseKFormula;
|
||
|
||
/**
|
||
* Function to call a function previously registered to the funcs object. May not be used that much in actual sheets, but very useful when writing unit tests for your sheet. Either returns the function or null if no function exists.
|
||
* @memberof Sheetworkers
|
||
* @param {string} funcName - The name of the function to invoke.
|
||
* @param {...any} args - The arguments to call the function with.
|
||
* @returns {function|null}
|
||
* @example
|
||
* //Call myFunc with two arguments
|
||
* k.callFunc('myFunc','an argument','another argument');
|
||
*/
|
||
const callFunc = function(funcName,...args){
|
||
if(funcs[funcName]){
|
||
debug(`calling ${funcName}`);
|
||
return funcs[funcName](...args);
|
||
}else{
|
||
debug(`Invalid function name: ${funcName}`);
|
||
return null;
|
||
}
|
||
};
|
||
kFuncs.callFunc = callFunc;/**@namespace Sheetworkers */
|
||
/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
|
||
/*jshint -W014,-W084,-W030,-W033*/
|
||
//Sheet Updaters and styling functions
|
||
/**
|
||
* Function that calls the K-scaffold's update and sheet initialization routines.
|
||
*/
|
||
const updateSheet = function(){
|
||
log('updating sheet');
|
||
getAllAttrs({props:['debug_mode',...baseGet],callback:(attributes,sections,casc)=>{
|
||
kFuncs.debugMode = kFuncs.debugMode || !!attributes.debug_mode;
|
||
debug({sheet_version:attributes.sheet_version});
|
||
if(!attributes.sheet_version){
|
||
Object.entries(initialSetups).forEach(([funcName,handler])=>{
|
||
if(typeof funcs[funcName] === 'function'){
|
||
debug(`running ${funcName}`);
|
||
funcs[funcName]({attributes,sections,casc});
|
||
}else{
|
||
debug(`!!!Warning!!! no function named ${funcName} found. Initial sheet setup not performed.`);
|
||
}
|
||
});
|
||
}else{
|
||
Object.entries(updateHandlers).forEach(([ver,handler])=>{
|
||
if(attributes.sheet_version < +ver){
|
||
handler({attributes,sections,casc});
|
||
}
|
||
});
|
||
}
|
||
k.debug({openHandlers});
|
||
Object.entries(openHandlers).forEach(([funcName,func])=>{
|
||
if(typeof funcs[funcName] === 'function'){
|
||
debug(`running ${funcName}`);
|
||
funcs[funcName]({attributes,sections,casc});
|
||
}else{
|
||
debug(`!!!Warning!!! no function named ${funcName} found. Sheet open handling not performed.`);
|
||
}
|
||
});
|
||
setActionCalls({attributes,sections});
|
||
attributes.sheet_version = kFuncs.version;
|
||
log(`Sheet Update applied. Current Sheet Version ${kFuncs.version}`);
|
||
attributes.set();
|
||
log('Sheet ready for use');
|
||
}});
|
||
};
|
||
kFuncs.updateSheet = updateSheet;
|
||
|
||
const initialSetup = function(attributes,sections){
|
||
debug('Initial sheet setup');
|
||
};
|
||
|
||
/**
|
||
* This is the default listener function for attributes that the K-Scaffold uses. It utilizes the `triggerFuncs`, `listenerFunc`, `calculation`, and `affects` properties of the K-scaffold trigger object (see the Pug section of the scaffold for more details).
|
||
* @memberof Sheetworkers
|
||
* @param {Roll20Event} event - The Roll20 event object
|
||
* @returns {void}
|
||
* @example
|
||
* //Call from an attribute change
|
||
* on('change:an_attribute',k.accessSheet);
|
||
*/
|
||
const accessSheet = function(event){
|
||
debug({funcs:Object.keys(funcs)});
|
||
debug({event});
|
||
getAllAttrs({callback:(attributes,sections,casc)=>{
|
||
let trigger = attributes.getCascObj(event,casc);
|
||
attributes.processChange({event,trigger,attributes,sections,casc});
|
||
}});
|
||
};
|
||
funcs.accessSheet = accessSheet;/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
|
||
/*jshint -W014,-W084,-W030,-W033*/
|
||
/*
|
||
Cascade Expansion functions
|
||
*/
|
||
//Expands the repeating section templates in cascades to reflect the rows actually available
|
||
const expandCascade = function(cascade,sections){
|
||
return _.keys(cascade).reduce((memo,key)=>{//iterate through cascades and replace references to repeating attributes with correct row ids.
|
||
if(/^(?:act|attr)_repeating_/.test(key)){//If the attribute is a repeating attribute, do special logic
|
||
expandRepeating(memo,key,cascade,sections);
|
||
}else if(key){//for non repeating attributes do this logic
|
||
expandNormal(memo,key,cascade,sections);
|
||
}
|
||
return memo;
|
||
},{});
|
||
};
|
||
|
||
const expandRepeating = function(memo,key,cascade,sections){
|
||
key.replace(/((?:attr|act)_)(repeating_[^_]+)_[^_]+?_(.+)/,(match,type,section,field)=>{
|
||
(sections[section]||[]).forEach((id)=>{
|
||
memo[`${type}${section}_${id}_${field}`]=_.clone(cascade[key]);//clone the details so that each row's attributes have correct ids
|
||
memo[`${type}${section}_${id}_${field}`].name = `${section}_${id}_${field}`;
|
||
if(key.startsWith('attr_')){
|
||
memo[`${type}${section}_${id}_${field}`].affects = memo[`${type}${section}_${id}_${field}`].affects.reduce((m,affected)=>{
|
||
if(affected.startsWith(section)){//otherwise if the affected attribute is in the same section, simply set the affected attribute to have the same row id.
|
||
m.push(applyID(affected,id));
|
||
}else if(/repeating/.test(affected)){//If the affected attribute isn't in the same repeating section but is still a repeating attribute, add all the rows of that section
|
||
addAllRows(affected,m,sections);
|
||
}else{//otherwise the affected attribute is a non repeating attribute. Simply add it to the computed affected array
|
||
m.push(affected);
|
||
}
|
||
return m;
|
||
},[]);
|
||
}
|
||
});
|
||
});
|
||
};
|
||
|
||
const applyID = function(affected,id){
|
||
return affected.replace(/(repeating_[^_]+_)[^_]+(.+)/,`$1${id}$2`);
|
||
};
|
||
|
||
const expandNormal = function(memo,key,cascade,sections){
|
||
memo[key] = _.clone(cascade[key]);
|
||
if(key.startsWith('attr_')){
|
||
memo[key].affects = memo[key].affects || [];
|
||
memo[key].affects = memo[key].affects.reduce((m,a)=>{
|
||
if(/^repeating/.test(a)){
|
||
addAllRows(a,m,sections);
|
||
}else{
|
||
m.push(a);
|
||
}
|
||
return m;
|
||
},[]);
|
||
}
|
||
};
|
||
|
||
const addAllRows = function(affected,memo,sections){
|
||
affected.replace(/(repeating_[^_]+?)_[^_]+?_(.+)/,(match,section,field)=>{
|
||
sections[section].forEach(id=>memo.push(`${section}_${id}_${field}`));
|
||
});
|
||
};/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
|
||
/*jshint -W014,-W084,-W030,-W033*/
|
||
/**
|
||
* These are functions that provide K-scaffold aliases for the basic Roll20 sheetworker functions. These functions also provide many additional features on top of the standard Roll20 sheetworkers.
|
||
* @namespace Sheetworkers.Sheetworker Aliases
|
||
*/
|
||
/**
|
||
* Alias for [setSectionOrder()](https://wiki.roll20.net/Sheet_Worker_Scripts#setSectionOrder.28.3CRepeating_Section_Name.3E.2C_.3CSection_Array.3E.2C_.3CCallback.3E.29) that allows you to use the section name in either `repeating_section` or `section` formats. Note that the Roll20 sheetworker [setSectionOrder](https://wiki.roll20.net/Sheet_Worker_Scripts#setSectionOrder.28.3CRepeating_Section_Name.3E.2C_.3CSection_Array.3E.2C_.3CCallback.3E.29) currently causes some display issues on sheets.
|
||
* @memberof Sheetworker Aliases
|
||
* @name setSectionOrder
|
||
* @param {string} section - The name of the section, with or without `repeating_`
|
||
* @param {string[]} order - Array of ids describing the desired order of the section.
|
||
* @returns {void}
|
||
* @example
|
||
* //Set the order of a repeating_weapon section
|
||
* k.setSectionOrder('repeating_equipment',['id1','id2','id3']);
|
||
* //Can also specify the section name without the repeating_ prefix
|
||
* k.setSectionOrder('equipment',['id1','id2','id3']);
|
||
*/
|
||
const _setSectionOrder = function(section,order){
|
||
let trueSection = section.replace(/repeating_/,'');
|
||
setSectionOrder(trueSection,order);
|
||
};
|
||
kFuncs.setSectionOrder = _setSectionOrder;
|
||
|
||
/**
|
||
* Alias for [removeRepeatingRow](https://wiki.roll20.net/Sheet_Worker_Scripts#removeRepeatingRow.28_RowID_.29) that also removes the row from the current object of attribute values and array of section IDs to ensure that erroneous updates are not issued.
|
||
* @memberof Sheetworker Aliases
|
||
* @name removeRepeatingRow
|
||
* @param {string} row - The row id to be removed
|
||
* @param {attributesProxy} attributes - The attribute values currently in memory
|
||
* @param {object} sections - Object that contains arrays of all the IDs in sections on the sheet indexed by repeating name.
|
||
* @returns {void}
|
||
* @example
|
||
* //Remove a repeating Row
|
||
* k.getAllAttrs({
|
||
* callback:(attributes,sections)=>{
|
||
* const rowID = sections.repeating_equipment[0];
|
||
* k.removeRepeatingRow(`repeating_equipment_${rowID}`,attributes,sections);
|
||
* console.log(sections.repeating_equipment); // => rowID no longer exists in the array.
|
||
* console.log(attributes[`repeating_equipment_${rowID}_name`]); // => undefined
|
||
* }
|
||
* })
|
||
*/
|
||
const _removeRepeatingRow = function(row,attributes,sections){
|
||
debug(`removing ${row}`);
|
||
Object.keys(attributes.attributes).forEach((key)=>{
|
||
if(key.startsWith(row)){
|
||
delete attributes[key];
|
||
}
|
||
});
|
||
let [,section,rowID] = row.match(/(repeating_[^_]+)_(.+)/,'');
|
||
sections[section] = sections[section].filter((id)=>id!==rowID);
|
||
removeRepeatingRow(row);
|
||
};
|
||
kFuncs.removeRepeatingRow = _removeRepeatingRow;
|
||
|
||
/**
|
||
* Alias for [getAttrs()](https://wiki.roll20.net/Sheet_Worker_Scripts#getAttrs.28attributeNameArray.2C_callback.29) that converts the default object of attribute values into an {@link attributesProxy} and passes that back to the callback function.
|
||
* @memberof Sheetworker Aliases
|
||
* @name getAttrs
|
||
* @param {string[]} [props=baseGet] - Array of attribute names to get the value of. Defaults to {@link baseGet} if not passed.
|
||
* @param {function(attributesProxy)} callback - The function to call after the attribute values have been gotten. An {@link attributesProxy} is passed to the callback.
|
||
* @example
|
||
* //Gets the attributes named in props.
|
||
* k.getAttrs({
|
||
* props:['attribute_1','attribute_2'],
|
||
* callback:(attributes)=>{
|
||
* //Work with the attributes as you would in a normal getAttrs, or use the superpowers of the K-scaffold attributes object like so:
|
||
* attributes.attribute_1 = 'new value';
|
||
* attributes.set();
|
||
* }
|
||
* })
|
||
*/
|
||
const _getAttrs = function({props=baseGet,callback}){
|
||
getAttrs(props,(values)=>{
|
||
const attributes = createAttrProxy(values);
|
||
callback(attributes);
|
||
});
|
||
};
|
||
kFuncs.getAttrs = _getAttrs;
|
||
|
||
/**
|
||
* Alias for [getAttrs()](https://wiki.roll20.net/Sheet_Worker_Scripts#getAttrs.28attributeNameArray.2C_callback.29) and [getSectionIDs](https://wiki.roll20.net/Sheet_Worker_Scripts#getSectionIDs.28section_name.2Ccallback.29) that combines the actions of both sheetworker functions and converts the default object of attribute values into an {@link attributesProxy}. Also gets the details on how to handle all attributes from the master {@link cascades} object and.
|
||
* @memberof Sheetworker Aliases
|
||
* @param {Object} args
|
||
* @param {string[]} [args.props=baseGet] - Array of attribute names to get the value of. Defaults to {@link baseGet} if not passed.
|
||
* @param {repeatingSectionDetails} sectionDetails - Array of details about a section to get the IDs for and attributes that need to be gotten.
|
||
* @param {function(attributesProxy,sectionObj,expandedCascade):void} args.callback - The function to call after the attribute values have been gotten. An {@link attributesProxy} is passed to the callback along with a {@link sectionObj} and {@link expandedCascade}.
|
||
* @example
|
||
* //Get every K-scaffold linked attribute on the sheet
|
||
* k.getAllAttrs({
|
||
* callback:(attributes,sections,casc)=>{
|
||
* //Work with the attributes as you please.
|
||
* attributes.some_attribute = 'a value';
|
||
* attributes.set();//Apply our change
|
||
* }
|
||
* })
|
||
*/
|
||
const getAllAttrs = function({props=baseGet,sectionDetails=repeatingSectionDetails,callback}){
|
||
getSections(sectionDetails,(repeats,sections)=>{
|
||
getAttrs([...props,...repeats],(values)=>{
|
||
const casc = expandCascade(cascades,sections);
|
||
const attributes = createAttrProxy(values,sections,casc);
|
||
orderSections(attributes,sections);
|
||
callback(attributes,sections,casc);
|
||
})
|
||
});
|
||
};
|
||
kFuncs.getAllAttrs = getAllAttrs;
|
||
|
||
/**
|
||
* Alias for [getSectionIDs()](https://wiki.roll20.net/Sheet_Worker_Scripts#getSectionIDs.28section_name.2Ccallback.29) that allows you to iterate through several functions at once. Also assembles an array of repeating attributes to get.
|
||
* @memberof Sheetworker Aliases
|
||
* @param {object[]} sectionDetails - Array of details about a section to get the IDs for and attributes that need to be gotten.
|
||
* @param {string} sectionDetails.section - The full name of the repeating section including the `repeating_` prefix.
|
||
* @param {string[]} sectionDetails.fields - Array of field names that need to be gotten from the repeating section
|
||
* @param {function(string[],sectionObj)} callback - The function to call once all IDs have been gotten and the array of repating attributes to get has been assembled. The callback is passed the array of repating attributes to get and a {@link sectionObj}.
|
||
* @example
|
||
* // Get some section details
|
||
* const sectionDetails = {
|
||
* {section:'repeating_equipment',fields:['name','weight','cost']},
|
||
* {section:'repeating_weapon',fields:['name','attack','damage']}
|
||
* };
|
||
* k.getSections(sectionDetails,(attributeNames,sections)=>{
|
||
* console.log(attributeNames);// => Array containing all row specific attribute names
|
||
* console.log(sections);// => Object with arrays containing the row ids. Indexed by section name (e.g. repeating_eqiupment)
|
||
* })
|
||
*/
|
||
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);
|
||
}
|
||
};
|
||
kFuncs.getSections = getSections;
|
||
|
||
// Sets the attributes while always calling with {silent:true}
|
||
// Can be awaited to get the values returned from _setAttrs
|
||
/**
|
||
* Alias for [setAttrs()](https://wiki.roll20.net/Sheet_Worker_Scripts#setAttrs.28values.2Coptions.2Ccallback.29) that sets silently by default.
|
||
* @memberof Sheetworker Aliases
|
||
* @alias setAttrs
|
||
* @param {object} obj - The object containting attributes to set
|
||
* @param {boolean} [vocal=false] - Whether to set silently (default value) or not.
|
||
* @param {function()} [callback] - The callback function to invoke after the setting has been completed. No arguments are passed to the callback function.
|
||
* @example
|
||
* //Set some attributes silently
|
||
* k.setAttrs({attribute_1:'new value'})
|
||
* //Set some attributes and triggers listeners
|
||
* k.setAttrs({attribute_1:'new value',true})
|
||
* //Set some attributes and call a callback function
|
||
* k.setAttrs({attribute_1:'new value'},null,()=>{
|
||
* //Do something after the attribute is set
|
||
* })
|
||
*/
|
||
const set = function(obj,vocal=false,callback){
|
||
setAttrs(obj,{silent:!vocal},callback);
|
||
};
|
||
kFuncs.setAttrs = set;
|
||
|
||
const generateCustomID = function(string){
|
||
if(!string.startsWith('-')){
|
||
string = `-${string}`;
|
||
}
|
||
rowID = generateRowID();
|
||
let re = new RegExp(`^.{${string.length}}`);
|
||
return `${string}${rowID.replace(re,'')}`;
|
||
};
|
||
|
||
|
||
/**
|
||
* Alias for generateRowID that adds the new id to the {@link sectionObj}. Also allows for creation of custom IDs that conform to the section ID requirements.
|
||
* @memberof Sheetworker Aliases
|
||
* @name generateRowID
|
||
* @param {sectionObj} sections
|
||
* @param {string} [customText] - Custom text to start the ID with. This text should not be longer than the standard repeating section ID format.
|
||
* @returns {string} - The created ID
|
||
* @example
|
||
* k.getAllAttrs({
|
||
* callback:(attributes,sections,casc)=>{
|
||
* //Create a new row ID
|
||
* const rowID = k.generateRowID('repeating_equipment',sections);
|
||
* console.log(rowID);// => repeating_equipment_-p8rg908ug0suzz
|
||
* //Create a custom row ID
|
||
* const customID = k.generateRowID('repeating_equipment',sections,'custom');
|
||
* console.log(customID);// => repeating_equipment_-custom98uadj89kj
|
||
* }
|
||
* });
|
||
*/
|
||
const _generateRowID = function(section,sections,customText){
|
||
let rowID = customText ?
|
||
generateCustomID(customText) :
|
||
generateRowID();
|
||
section = section.match(/^repeating_[^_]+$/) ?
|
||
section :
|
||
`repeating_${section}`;
|
||
sections[section] = sections[section] || [];
|
||
sections[section].push(rowID);
|
||
return `${section}_${rowID}`;
|
||
};
|
||
kFuncs.generateRowID = _generateRowID;
|
||
|
||
/**
|
||
* An alias for [Roll20's getTranslationByKey](https://wiki.roll20.net/Sheet_Worker_Scripts#getTranslationByKey.28.5Bkey.5D.29) that also supports data-i18n-vars syntax replacement and returns the translation key if no value is found instead of `false`.
|
||
* @memberof Sheetworker Aliases
|
||
* @name getTranslationByKey
|
||
* @param {string} key - The translation key to look up.
|
||
* @param {string[]} [variables = []] - An array of variable values to replace variable indexes with.
|
||
* @returns {string}
|
||
*/
|
||
const _getTranslationByKey = (key,variables = []) => {
|
||
let translate = getTranslationByKey(key) || key;
|
||
console.warn('getTranslationByKey',getTranslationByKey(key));
|
||
console.warn('translate:',translate);
|
||
variables.forEach((v,i) => {
|
||
translate = translate.replace(new RegExp(`\\{\\{${i}\\}\\}`,'g'),v);
|
||
});
|
||
return translate;
|
||
}
|
||
kFuncs.getTranslationByKey = _getTranslationByKey;
|
||
|
||
/**
|
||
* Assembles the roll string from the roll object
|
||
* @param {object} rollObj - object describing the roll
|
||
* @param {string} [rollStart = '@{template_start}'] - The string to start the roll with.
|
||
* @returns {string}
|
||
*/
|
||
const assembleRoll = (rollObj,rollStart = kFuncs.defaultRollStart) => {
|
||
return Object.entries(rollObj).reduce((str,[field,content])=>{
|
||
return str += content ?
|
||
` {{${field}=${content}}}` :
|
||
'';
|
||
},`${rollStart}`);
|
||
};
|
||
|
||
|
||
/**
|
||
* @typedef {Object} kRoll
|
||
* @property {Object} roll - The roll object returned by [Roll20's startRoll](https://wiki.roll20.net/Custom_Roll_Parsing#Sheetworker_Functions).
|
||
* @property {Function} roll.finish - Finishes the associated roll passing it the computeObj and rollId.
|
||
* @property {Object} computeObj - object for storing manipulations to the roll. Assign manipulations to this, DO NOT reassign it to a new object.
|
||
*/
|
||
|
||
/**
|
||
*
|
||
* @param {object} rollObj - Object specifying the fields to pass to the rolltemplate. Object keys are field names. Object values are the field values.
|
||
* @param {string} [startString = '@{template_start}'] - Text that should be prepended to the roll string that results from rollObj.
|
||
* @returns {kRoll}
|
||
*/
|
||
const _startRoll = async (rollObj,startString) => {
|
||
const rollString = assembleRoll(rollObj,startString);
|
||
const roll = await startRoll(rollString);
|
||
const computeObj = {};
|
||
roll.finish = () => {
|
||
finishRoll(roll.rollId,computeObj);
|
||
};
|
||
return {roll, computeObj};
|
||
};
|
||
kFuncs.startRoll = _startRoll;/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
|
||
/*jshint -W014,-W084,-W030,-W033*/
|
||
const listeners = {};
|
||
|
||
/**
|
||
* The array of attribute names that the k-scaffold gets by default. Does not incude repeating attributes.
|
||
* @memberof Variables
|
||
* @var
|
||
* @type {array}
|
||
*/
|
||
const baseGet = Object.entries(cascades).reduce((memo,[attrName,detailObj])=>{
|
||
if(!/repeating/.test(attrName) && detailObj.type !== 'action'){
|
||
memo.push(detailObj.name);
|
||
}
|
||
if(detailObj.listener){
|
||
listeners[detailObj.listener] = detailObj.listenerFunc;
|
||
}
|
||
return memo;
|
||
},[]);
|
||
kFuncs.baseGet = baseGet;
|
||
|
||
const registerEventHandlers = function(){
|
||
on('sheet:opened',updateSheet);
|
||
debug({funcKeys:Object.keys(funcs),funcs});
|
||
//Roll20 change and click listeners
|
||
Object.entries(listeners).forEach(([event,funcName])=>{
|
||
if(funcs[funcName]){
|
||
on(event,funcs[funcName]);
|
||
}else{
|
||
debug(`!!!Warning!!! no function named ${funcName} found. No listener created for ${event}`,true);
|
||
}
|
||
});
|
||
log(`kScaffold Loaded`);
|
||
};
|
||
setTimeout(registerEventHandlers,0);//Delay the execution of event registration to ensure all event properties are present.
|
||
|
||
/**
|
||
* Function to add a repeating section when the add button of a customControlFieldset or inlineFieldset is clicked.
|
||
* @memberof Sheetworkers
|
||
* @param {object} event - The R20 event object
|
||
*/
|
||
const addItem = function(event){
|
||
let [,,section] = parseClickTrigger(event.triggerName);
|
||
section = section.replace(/add-/,'');
|
||
getAllAttrs({
|
||
callback:(attributes,sections,casc) => {
|
||
let row = _generateRowID(section,sections);
|
||
debug({row});
|
||
attributes[`${row}_name`] = '';
|
||
setActionCalls({attributes,sections});
|
||
const trigger = cascades[`fieldset_repeating_${section}`];
|
||
if(trigger){
|
||
if(trigger.addFuncs){
|
||
trigger.addFuncs.forEach((funcName) => {
|
||
if(funcs[funcName]){
|
||
funcs[funcName]({attributes,sections,casc,trigger,newRow:row});
|
||
}
|
||
});
|
||
}
|
||
if(Array.isArray(trigger.affects)){
|
||
attributes.queue.push(...trigger.affects);
|
||
}
|
||
}
|
||
attributes.set({attributes,sections,casc});
|
||
}
|
||
});
|
||
};
|
||
funcs.addItem = addItem;/**
|
||
* The default tab navigation function of the K-scaffold. Courtesy of Riernar. It will add `k-active-tab` to the active tab-container and `k-active-button` to the active button. You can either write your own CSS to control display of these, or use the default CSS included in `scaffold/_k.scss`. Note that `k-active-button` has no default CSS as it is assumed that you will want to style the active button to match your system.
|
||
* @memberof Sheetworkers
|
||
* @param {Object} trigger - The trigger object
|
||
* @param {object} attributes - The attribute values of the character
|
||
*/
|
||
const kSwitchTab = function ({ trigger, attributes }) {
|
||
const [container, tab] = (
|
||
trigger.name.match(/nav-tabs-(.+)--(.+)/) ||
|
||
[]
|
||
).slice(1);
|
||
$20(`[data-container-tab="${container}"]`).removeClass('k-active-tab');
|
||
$20(`[data-container-tab="${container}"][data-tab="${tab}"]`).addClass('k-active-tab');
|
||
$20(`[data-container-button="${container}"]`).removeClass('k-active-button');
|
||
$20(`[data-container-button="${container}"][data-button="${tab}"]`).addClass('k-active-button');
|
||
const tabInputName = `${container.replace(/\-/g,'_')}_tab`;
|
||
if(persistentTabs.indexOf(tabInputName) > -1){
|
||
attributes[tabInputName] = trigger.name;
|
||
}
|
||
}
|
||
|
||
registerFuncs({ kSwitchTab });
|
||
|
||
/**
|
||
* Sets persistent tabs to their last active state
|
||
* @memberof Sheetworkers
|
||
* @param {object} attributes - The attribute values of the character
|
||
*/
|
||
const kTabOnOpen = function({trigger,attributes,sections,casc}){
|
||
if(typeof persistentTabs === 'undefined') return;
|
||
persistentTabs.forEach((tabInput) => {
|
||
const pseudoTrigger = {name:attributes[tabInput]};
|
||
kSwitchTab({trigger:pseudoTrigger, attributes});
|
||
});
|
||
};
|
||
registerFuncs({ kTabOnOpen },{type:['opener']});
|
||
return kFuncs;
|
||
}());
|
||
const actionAttributes = ["odic_dice_action","combat_action","brawn_action","agility_action","perception_action","intelligence_action","willpower_action","fellowship_action","melee_action","ranged_action","warfare_action","athletics_action","intimidate_action","toughness_action","coordination_action","handle_vehicle_action","skuldiggery_action","stealth_action","awareness_action","eavesdrop_action","scrutinize_action","survival_action","education_action","folklore_action","gamble_action","heal_action","navigation_action","strategy_action","wortcunning_action","odweft_action","resolve_action","tradecraft_action","bargain_action","charm_action","disguise_action","guile_action","handle_animal_action","leadership_action","rumor_action","parry_action","dodge_action","repeating_weapons_$X_action","repeating_wortcunning_$X_action","repeating_patrons_$X_print_patron_action","repeating_vitiations_$X_action","initiative_action","repeating_npc-attacks_$X_action","basic_technique_roll_1_action","basic_technique_roll_2_action","basic_technique_roll_3_action","intermediate_technique_roll_1_action","intermediate_technique_roll_2_action","intermediate_technique_roll_3_action","advanced_technique_roll_1_action","advanced_technique_roll_2_action","advanced_technique_roll_3_action","repeating_deck_$X_roll_1_action","repeating_deck_$X_roll_2_action","repeating_deck_$X_roll_3_action"];const skills = {"combat":[{"special":true,"name":"melee"},{"special":true,"name":"ranged"},{"special":true,"name":"warfare"}],"brawn":[{"name":"athletics"},{"name":"intimidate"},{"name":"toughness"}],"agility":[{"name":"coordination"},{"special":true,"name":"handle vehicle"},{"special":true,"name":"skuldiggery"},{"name":"stealth"}],"perception":[{"name":"awareness"},{"name":"eavesdrop"},{"name":"scrutinize"},{"name":"survival"}],"intelligence":[{"special":true,"name":"education"},{"name":"folklore"},{"name":"gamble"},{"special":true,"name":"heal"},{"special":true,"name":"navigation"},{"special":true,"name":"strategy"},{"special":true,"name":"wortcunning"}],"willpower":[{"special":true,"name":"odweft"},{"name":"resolve"},{"special":true,"name":"tradecraft"}],"fellowship":[{"name":"bargain"},{"name":"charm"},{"special":true,"name":"disguise"},{"name":"guile"},{"special":true,"name":"handle animal"},{"special":true,"name":"leadership"},{"name":"rumor"}]};const skillNames = ["melee","ranged","warfare","athletics","intimidate","toughness","coordination","handle vehicle","skuldiggery","stealth","awareness","eavesdrop","scrutinize","survival","education","folklore","gamble","heal","navigation","strategy","wortcunning","odweft","resolve","tradecraft","bargain","charm","disguise","guile","handle animal","leadership","rumor"];const alignment = [{"value":1,"shape":"circle"},{"value":2,"shape":"circle"},{"value":3,"revelation":true,"shape":"triangle"},{"value":4,"shape":"circle"},{"value":5,"revelation":true,"shape":"triangle"},{"value":6,"shape":"circle"},{"value":7,"revelation":true,"shape":"triangle"},{"value":8,"shape":"circle"},{"value":9,"revelation":true,"shape":"triangle"},{"value":10,"revelation":true,"shape":"triangle"}];const paths = [{"name":"bow and blade","icon":"https://files.d20.io/images/351456366/wn801fwKA72_mvnVOPsgog/original.webp","image":"https://files.d20.io/images/351456364/9f26odmMIhIJmF9-4BDGiA/original.webp"},{"name":"od and ritual","icon":"https://files.d20.io/images/351456358/_nlv6e6S0JmQOWTLo7y3Gw/original.webp","image":"https://files.d20.io/images/351456356/SYb1XV3YtZlFjL6TPXdmOw/original.webp"},{"name":"shadow and subterfuge","icon":"https://files.d20.io/images/351456361/K6kkjAvQ3t_2ICdZ0N0pHw/original.webp","image":"https://files.d20.io/images/351456359/-CAtCmOwqUiBaQXBAVo7EA/original.webp"},{"name":"craft and expertise","icon":"https://files.d20.io/images/351456354/EmiCSYPhzTqv5r_DZ3PrKQ/original.webp","image":"https://files.d20.io/images/351456368/Lvfoiz-pHJmiWDPr6GrOZQ/original.webp"},{"name":"charm and manipulation","icon":"https://files.d20.io/images/351456370/EgGgiuTwTmjvuQyv2F_26g/original.webp","image":"https://files.d20.io/images/351456369/BdajE7L6n8ZKE3DH1igWAQ/original.webp"}];const cardAttributes = {"talent":["type","tier","prerequisites","description"],"technique":["type","tier","prerequisites"]};const talentTechTypes = ["bow and blade","od and ritual","shadow and subterfuge","craft and expertise","charm and manipulation"];k.version = 1.02;
|
||
k.sheetName = 'Blackbirds';
|
||
/**
|
||
* updates to 1.1.
|
||
* - back calculates dodge/parry bonuses
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const version1x01 = function({trigger,attributes,sections,casc}){
|
||
const newDodge = calcDefense({trigger:{name:'dodge'},attributes});
|
||
const newParry = calcDefense({trigger:{name:'parry'},attributes});
|
||
|
||
const dodgeMod = attributes.dodge - newDodge;
|
||
const parryMod = attributes.parry - newParry;
|
||
if(dodgeMod){
|
||
attributes.dodge_mod = dodgeMod;
|
||
}
|
||
if(parryMod){
|
||
attributes.parry_mod = parryMod;
|
||
}
|
||
};
|
||
k.registerFuncs({'1.01':version1x01},{type:['updater']});/**
|
||
* updates to 1.1.
|
||
* - back calculates dodge/parry bonuses
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const version1x02 = function({trigger,attributes,sections,casc}){
|
||
sections.repeating_weapons.forEach(id => {
|
||
attributes[`repeating_weapons_${id}_damge`] = '@{combat_mod}[cb]';
|
||
})
|
||
};
|
||
k.registerFuncs({'1.02':version1x02},{type:['updater']});
|
||
/**
|
||
* Assembles the roll string from the roll object
|
||
* @param {object} rollObj - object describing the roll
|
||
* @param {string} [rollStart = '@{template_start}'] - The string to start the roll with.
|
||
* @returns {string}
|
||
*/
|
||
const assembleRoll = (rollObj, rollStart = "@{template_start}") => {
|
||
return Object.entries(rollObj).reduce((str, [field, content]) => {
|
||
return (str += content ? ` {{${field}=${content}}}` : "");
|
||
}, `${rollStart}`);
|
||
};/**
|
||
* Executes the roll. Uses a callback if any computations are required.
|
||
* @param {object} rollObj - Object describing the roll fields to be used
|
||
* @param {object} attributes - The character attributes
|
||
* @param {object[]} sections - The sections array
|
||
* @returns {Promise<object[]>} - Resolves to array with index 0 being the roll results object and index 1 being the computeObj with success/panics precalculated.
|
||
*/
|
||
const executeRoll = async ({ rollObj, attributes,customString }) => {
|
||
const rollString = assembleRoll(rollObj, customString);
|
||
const roll = await startRoll(rollString);
|
||
const computeObj = {};
|
||
computeObj.roll = determineDice(roll.results.roll.result,attributes);
|
||
computeObj.wasCrit = Math.floor(computeObj.roll / 10) === computeObj.roll % 10 ?
|
||
1 :
|
||
0;
|
||
return [roll, computeObj];
|
||
};/**
|
||
* Determines what dice roll to use between flip to succeed, flip to fail, and normal.
|
||
* @param {number} result - The numerical result
|
||
* @param {object} attributes - The attribute values of the character
|
||
*/
|
||
const determineDice = function(result,attributes){
|
||
if(attributes.flip_to === 'fail'){
|
||
return Math.max(result,flipDice(result));
|
||
}else if(attributes.flip_to === 'succeed'){
|
||
return Math.min(result,flipDice(result));
|
||
}else{
|
||
return result;
|
||
}
|
||
};
|
||
|
||
const flipDice = (result) => {
|
||
return +`${result%10}${Math.floor(result/10)}`;
|
||
}/**
|
||
* Slots a card into the triggering card slot
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const slotCard = function({trigger,attributes,sections,casc}){
|
||
const [match,cardTier,cardSlot] = trigger.name.match(/^(.+?)_(.+?)_/);
|
||
const slot = `${cardTier}_${cardSlot}`;
|
||
attributes[`${slot}_show_details`] = 0;
|
||
if(attributes[trigger.name] !== 'new'){
|
||
const row = `repeating_deck_${attributes[trigger.name]}`;
|
||
const attrNames = ['name',...cardAttributes[cardSlot]];
|
||
attrNames.forEach(attr => {
|
||
attributes[`${slot}_${attr}`] = attributes[`${row}_${attr}`];
|
||
attributes.queue.push(`${slot}_${attr}`);
|
||
});
|
||
k.removeRepeatingRow(row,attributes,sections);
|
||
}
|
||
};
|
||
k.registerFuncs({slotCard});/**
|
||
* Updates the options of the card selects to reflect the currently available cards
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const setCardSelects = function({attributes,sections,casc}){
|
||
['talent','technique'].forEach(cardType => {
|
||
['basic','intermediate','advanced'].forEach(cardLevel => {
|
||
const optionsArray = sections['repeating_deck']
|
||
.filter(id => attributes[`repeating_deck_${id}_slot`] === cardType)
|
||
.reduce((arr,id,i,valid) => {
|
||
arr.push({value:id.toLowerCase(),label:attributes[`repeating_deck_${id}_name`] || k.capitalize(getTranslationByKey(`new ${cardType}`))});
|
||
return arr;
|
||
},[{value:'',label:' '},{value:`new`,i18n:`create ${cardType}`,label:`create ${cardType}`}]);
|
||
populateListOptions({elemSelector:`.${cardLevel}-${cardType}-options`,optionsArray});
|
||
})
|
||
})
|
||
};
|
||
k.registerFuncs({setCardSelects},{type:['opener']});/**
|
||
* Removes a card from a slot.
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const unslotCard = function({trigger,attributes,sections,casc}){
|
||
const [match,cardTier,cardSlot] = trigger.name.match(/^(.+?)-(.+?)-/);
|
||
const slot = `${cardTier}_${cardSlot}`;
|
||
const row =
|
||
k.generateRowID('repeating_deck',sections);
|
||
const attrNames = ['name','url',...cardAttributes[cardSlot]];
|
||
attrNames.forEach(attr => {
|
||
if(attributes[`${slot}_${attr}`]){
|
||
attributes[`${row}_${attr}`] = attributes[`${slot}_${attr}`];
|
||
attributes[`${slot}_${attr}`] = casc[`attr_${slot}_${attr}`].defaultValue;
|
||
}
|
||
})
|
||
attributes[`${slot}_extinguished`] = 0;
|
||
attributes[`${row}_slot`] = cardSlot;
|
||
attributes[`${slot}_id`] = '';
|
||
attributes[`${slot}_show_details`] = 1;
|
||
attributes[`${slot}_image`] = '';
|
||
attributes[`${slot}_icon`] = '';
|
||
setCardSelects({attributes,sections,casc})
|
||
};
|
||
k.registerFuncs({unslotCard});/**
|
||
*
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const initializeDeck = function({newID,trigger,attributes,sections,casc}){
|
||
attributes[`repeating_deck_${sections.repeating_deck[sections.repeating_deck.length - 1]}_slot`] = 'talent';
|
||
};
|
||
k.registerFuncs({initializeDeck});/**
|
||
* Flips the deck card display for displaying the talent or technique mode
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const flipDeckCard = function({trigger,attributes,sections,casc}){
|
||
const [section,rowID] = k.parseTriggerName(trigger.name);
|
||
const row = `${section}_${rowID}`;
|
||
attributes[`${row}_slot_flip`] = attributes[`${row}_slot`] === 'talent' ?
|
||
0 :
|
||
1;
|
||
};
|
||
k.registerFuncs({flipDeckCard});/**
|
||
* Calculates the Damage Patronage when the Durability is checked.
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const calcThreshold = function({ trigger, attributes, sections, casc }) {
|
||
if (attributes.armor__degredation === '-1') {
|
||
return attributes.armor_threshold + attributes.armor__degredation;
|
||
} else if (attributes.armor__degredation === '-2') {
|
||
return Math.floor(attributes.armor_threshold / 2);
|
||
} else {
|
||
return attributes.armor_threshold;
|
||
}
|
||
};
|
||
/** Armor Threshold Rules
|
||
* Worn armor suffer a -1 to Damage Threshold
|
||
* Frail - Half the Damage Threshold (Minimum 0)
|
||
* Ruined - no change to threshold
|
||
*//**
|
||
* Calculates the Damage Patronage when the Durability is checked.
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
|
||
const calcPatronage = function({trigger,attributes,sections,casc}){
|
||
return attributes.armor_patronage + attributes.armor__degredation;
|
||
};
|
||
|
||
/** Armor Rules
|
||
* Worn -1 to patronage
|
||
* Frail -2 patronage
|
||
* Ruined -4 patronage
|
||
*//**
|
||
*
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const calcThresholdUnits = function({trigger,attributes,sections,casc}){
|
||
const [,thresholdType,thresholdLevel] = trigger.name.match(/^([^_]+).+?(\d+)/) || [];
|
||
return attributes[`${thresholdType}_base_threshold`] + (+thresholdLevel);
|
||
};
|
||
k.registerFuncs({calcThresholdUnits});/**
|
||
* Sets the URL for the card back image for talents/techniques
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const setCardBack = function({trigger,attributes,sections,casc}){
|
||
const [,cardTier,cardSlot,prop] = trigger.name.match(/^(.+?)_(.+?)_(.+)/);
|
||
const slot = `${cardTier}_${cardSlot}`;
|
||
const pathObj = paths.find(o => o.name === attributes[`${slot}_type`]);
|
||
return pathObj ?
|
||
pathObj[prop] :
|
||
'';
|
||
};
|
||
k.registerFuncs({setCardBack});
|
||
|
||
|
||
/**
|
||
*
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const syncPools = function({trigger,attributes,sections,casc},source,sourceName){
|
||
if(!attributes.flock_sheet && attributes.sheet_type !== 'flock') return;
|
||
|
||
if(
|
||
trigger &&
|
||
attributes.sheet_type !== 'flock'
|
||
){
|
||
// If trigger is passed, then this is called from the source sheet
|
||
k.send(attributes.flock_sheet,'syncPools',{[trigger.name]: attributes[trigger.name]},attributes.character_name);
|
||
}else{
|
||
if(source){
|
||
Object.entries(source).forEach(([key,value]) =>
|
||
attributes[key] = value);
|
||
}
|
||
|
||
if(attributes.sheet_type === 'flock'){
|
||
if(
|
||
!trigger &&
|
||
Object.keys(attributes.updates).includes('fortune')
|
||
){
|
||
const newTrigger = casc['attr_fortune'];
|
||
newTrigger.previousValue = +attributes.attributes.fortune;
|
||
poolCircle({trigger:newTrigger,attributes,sections,casc});
|
||
}
|
||
sections.repeating_flock.forEach(id => {
|
||
const charName = attributes[`repeating_flock_${id}_name`];
|
||
if(charName.toLowerCase() !== sourceName?.toLowerCase()){
|
||
k.send(charName,'syncPools',{...attributes.updates,[trigger.name]:attributes[trigger.name]});
|
||
}
|
||
});
|
||
if(source){
|
||
const existingID = sections.repeating_flock.find(id => attributes[`repeating_flock_${id}_name`].toLowerCase() === sourceName.toLowerCase());
|
||
if(!existingID){
|
||
const newRow = k.generateRowID('repeating_flock',sections);
|
||
attributes[`${newRow}_name`] = sourceName;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
k.registerFuncs({syncPools});
|
||
/**
|
||
* controls the circular effects of the forune/misfortune pools
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const poolCircle = function({trigger,attributes,sections,casc}){
|
||
if(attributes.sheet_type !== 'flock') return;
|
||
const affect = trigger.name.match(/mis/) ?
|
||
'fortune' :
|
||
'misfortune';
|
||
attributes[affect] = Math.max(0,attributes[affect] - (attributes[trigger.name] - trigger.previousValue));
|
||
};
|
||
k.registerFuncs({poolCircle});
|
||
|
||
/**
|
||
* sync's the pc's group resource values with the flock sheet
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const syncResourcesOnOpen = function({trigger,attributes,sections,casc}){
|
||
if(
|
||
attributes.sheet_type !== 'pc' ||
|
||
!attributes.flock_sheet
|
||
) return;
|
||
|
||
k.send(attributes.flock_sheet,'getGroupResources',attributes.character_name);
|
||
};
|
||
k.registerFuncs({syncResourcesOnOpen},{type:['opener']});
|
||
|
||
/**
|
||
* returns group resource amounts to a specific pc sheet
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const getGroupResources = function({trigger,attributes,sections,casc},sourceName){
|
||
k.send(sourceName,'receiveGroupResources',attributes);
|
||
};
|
||
k.registerFuncs({getGroupResources});
|
||
|
||
/**
|
||
* Receives the group resources for a specific pc
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const receiveGroupResources = function({trigger,attributes,sections,casc},flockAttributes){
|
||
['fortune','odic_dice'].forEach(attr => attributes[attr] = flockAttributes[attr]);
|
||
};
|
||
k.registerFuncs({receiveGroupResources});
|
||
|
||
|
||
/**
|
||
* Controls display of the tabs for the various sheet types.
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const sheetTypeTabs = function({trigger,attributes,sections,casc}){
|
||
const typeTabs = {
|
||
pc:['core','combat','advances'],
|
||
npc:['npc'],
|
||
flock:['patrons','flock'],
|
||
};
|
||
const baseTabs = ['settings',...typeTabs[attributes.sheet_type]];
|
||
if(attributes.has_theurgy){
|
||
baseTabs.push('theurgy');
|
||
}
|
||
const activeSelector = baseTabs.map(t => `.tabs--blackbirds__button--${t}`).join(',');
|
||
$20('.tabs--blackbirds__button').addClass('disabled');
|
||
$20(activeSelector).removeClass('disabled');
|
||
};
|
||
k.registerFuncs({sheetTypeTabs},{type:['opener']});
|
||
|
||
|
||
/**
|
||
* Assembles and initiates the skill rolls
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const rollSkill = async function({trigger,attributes,sections,casc}){
|
||
if(
|
||
attributes.sheet_type === 'npc'
|
||
){
|
||
await rollAttribute({trigger,attributes,sections,casc});
|
||
return;
|
||
}
|
||
const skillText = trigger.name.replace(/-action/,'').replace(/-/g,' ');
|
||
const rollObj = {
|
||
title:`^{${skillText}}`,
|
||
roll:'[[1d100]]',
|
||
target: getSkillTarget(skillText,attributes)
|
||
};
|
||
const [roll,computeObj] = await executeRoll({rollObj,attributes});
|
||
finishRoll(roll.rollId,computeObj);
|
||
};
|
||
k.registerFuncs({rollSkill});
|
||
|
||
const getSkillTarget = (skillText,attributes,bonus = 0) => {
|
||
const skillName = skillText.replace(/\s+/g,'_');
|
||
const skillAttrib = getSkillAttrib(skillText);
|
||
return `[[${attributes[skillAttrib]} + ${attributes[`${skillName}_percentage`] + bonus}]]`
|
||
}
|
||
|
||
const getSkillAttrib = (skillText) => Object.keys(skills).find(attr => skills[attr].some(o => o.name === skillText));/**
|
||
* Assembles and initiates the attribute rolls
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
|
||
const rollAttribute = async function({trigger, attributes},title){
|
||
const attributeText = trigger.name.replace(/-action/,'').replace(/-/g,' ');
|
||
const attributeName = attributeText.replace(/\s+/g,'_');
|
||
title = title || `^{${attributeText}}`;
|
||
const rollObj = {
|
||
title:title,
|
||
roll:'[[1d100]]',
|
||
target:`[[${attributes[attributeName]}]]`
|
||
};
|
||
const [roll,computeObj] = await executeRoll({rollObj,attributes});
|
||
finishRoll(roll.rollId, computeObj);
|
||
};
|
||
k.registerFuncs({rollAttribute});/**
|
||
* Automattically calculate the Attribute modifier based off the input percentage
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
|
||
const calcAttribute = function({trigger,attributes,sections,casc}){
|
||
const attrName = trigger.name.replace(/_mod/, '');
|
||
const bonus = [1,2,3,4,5,6].reduce((total,n) => {
|
||
const bonusName = `${attrName}_bonus_${n}`;
|
||
return total + attributes[bonusName];
|
||
},0);
|
||
return bonus + Math.floor(attributes[attrName]/10);
|
||
}
|
||
k.registerFuncs({calcAttribute});
|
||
|
||
|
||
|
||
/**
|
||
*
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const calcInitiative = function({trigger,attributes,sections,casc}){
|
||
return 3 + attributes.perception_mod + attributes.initiative_mod;
|
||
};
|
||
k.registerFuncs({calcInitiative});/**
|
||
*
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const calcMovement = function({trigger,attributes,sections,casc}){
|
||
return 3 + attributes.agility_mod + attributes.initiative_mod;
|
||
};
|
||
k.registerFuncs({calcMovement});/**
|
||
* Calculates the defense attributes
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const calcDefense = function({trigger,attributes,sections,casc}){
|
||
const skill = trigger.name === 'parry' ?
|
||
'melee' :
|
||
'coordination';
|
||
const attr = getSkillAttrib(skill);
|
||
return attributes[`${skill}_percentage`] + attributes[`${trigger.name}_mod`] + attributes[attr];
|
||
};
|
||
k.registerFuncs({calcDefense});
|
||
|
||
|
||
/**
|
||
* Rolls the attack and damage for a given weapon
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const rollWeapon = async function({trigger,attributes,sections,casc}){
|
||
const [section,rowID] = k.parseTriggerName(trigger.name);
|
||
const row = `${section}_${rowID}`;
|
||
const damageRef = attributes[`${row}_damage`] === '@{damage_custom}' ?
|
||
attributes[`${row}_damage_custom`] :
|
||
attributes[`${row}_damage`];
|
||
const diceRef = attributes[`${row}_damage_dice`] === '@{damage_custom}' ?
|
||
attributes[`${row}_damage_dice_custom`] :
|
||
attributes[`${row}_damage_dice`];
|
||
const rollObj = {
|
||
roll: '[[1d100]]',
|
||
qualities: attributes[`${row}_qualities`],
|
||
range: attributes[`${row}_range`],
|
||
damage: `[[1${diceRef} + ${damageRef}]]`,
|
||
critical_damage: `[[2${diceRef} + ${damageRef}]]`,
|
||
wasCrit: '[[0[computed value]]]'
|
||
};
|
||
if(
|
||
attributes.sheet_type === 'npc'
|
||
){
|
||
Object.assign(rollObj,{
|
||
title: attributes[`${row}_attack_name`],
|
||
target: `[[${attributes[`${row}_hit_chance`]}]]`
|
||
});
|
||
}else{
|
||
Object.assign(rollObj,{
|
||
title: attributes[`${row}_name`],
|
||
target: getSkillTarget(attributes[`${row}_skill`],attributes),
|
||
description: attributes[`${row}_description`]
|
||
});
|
||
}
|
||
const [roll,computeObj] = await executeRoll({rollObj,attributes});
|
||
finishRoll(roll.rollId, computeObj);
|
||
};
|
||
k.registerFuncs({rollWeapon});
|
||
|
||
/**
|
||
* sends an Undertaking to the Chat
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
|
||
|
||
|
||
|
||
/**
|
||
* Updates the options of the outsider selects in the vitiations.
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const setOutsiderSelects = function({trigger,attributes,sections,casc}){
|
||
const optionsArray = sections['repeating_outsiders']
|
||
.reduce((arr,id) => {
|
||
arr.push({value:id.toLowerCase(),label:attributes[`repeating_outsiders_${id}_name`] || k.capitalize(getTranslationByKey(`new outsider`))})
|
||
return arr;
|
||
},[{value:'',label:'select one',i18n:'select one'}])
|
||
if(optionsArray.length === 1){
|
||
optionsArray[0].label = 'add an outsider';
|
||
optionsArray[0].i18n = optionsArray[0].label;
|
||
}
|
||
populateListOptions({
|
||
elemSelector:`.outsider-select`,
|
||
optionsArray,
|
||
callback:()=>{
|
||
const updates = {};
|
||
const clearers = {};
|
||
sections['repeating_vitiations'].forEach(id => {
|
||
const newValue = optionsArray.find(o => o.value === attributes[`repeating_vitiations_${id}_outsider_id`].toLowerCase()) ?
|
||
attributes[`repeating_vitiations_${id}_outsider_id`] :
|
||
'';
|
||
// specifying the updates of the attributes to force it to go through even when it is the same.
|
||
// this is necessary to ensure the select displays properly if the name has just changed.
|
||
updates[`repeating_vitiations_${id}_outsider_id`] = newValue;
|
||
clearers[`repeating_vitiations_${id}_outsider_id`] = '';
|
||
});
|
||
// apply these updates
|
||
k.setAttrs(clearers,null,()=>{
|
||
k.setAttrs(updates);
|
||
});
|
||
}
|
||
});
|
||
};
|
||
k.registerFuncs({setOutsiderSelects},{type:['opener']});/**
|
||
* updates the trigger for outsider stations and agreements so that they affect the appropriate vitation tithes
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const affectVitiationTithe = function({trigger,attributes,sections,casc}){
|
||
const [,rowID] = k.parseTriggerName(trigger.name);
|
||
const newAffects = sections['repeating_vitiations']
|
||
.filter(id => attributes[`repeating_vitiations_${id}_outsider_id`] === rowID.toLowerCase())
|
||
.map(id => `repeating_vitiations_${id}_tithe_cost`);
|
||
trigger.affects.push(...newAffects);
|
||
};
|
||
k.registerFuncs({affectVitiationTithe});const titheDictionary = {
|
||
rapport:{
|
||
imp:'2/enact',
|
||
villein:'4/enact',
|
||
lord:'6/enact',
|
||
},
|
||
communion:{
|
||
imp:'1/enact',
|
||
villein:'2/enact',
|
||
lord:'3/enact',
|
||
},
|
||
pact:{
|
||
imp:'1/sunset',
|
||
villein:'2/sunset',
|
||
lord:'3/sunset',
|
||
}
|
||
};
|
||
/**
|
||
* Calculates the tithe for a given vitiation
|
||
* @param {object} trigger - The trigger that caused the function to be called
|
||
* @param {object} attributes - The attribute values of the character
|
||
* @param {object[]} sections - All the repeating section IDs
|
||
* @param {object} casc - Expanded cascade object
|
||
*/
|
||
const calcTithe = function({trigger,attributes,sections,casc}){
|
||
const [section,rowID] = k.parseTriggerName(trigger.name);
|
||
const row = `${section}_${rowID}`;
|
||
const outsiderRow =`repeating_outsiders_${attributes[`${row}_outsider_id`]}`;
|
||
const agreement = attributes[`${outsiderRow}_agreement`];
|
||
const station = attributes[`${outsiderRow}_station`];
|
||
return agreement && station ?
|
||
titheDictionary[agreement][station] :
|
||
'';
|
||
};
|
||
k.registerFuncs({calcTithe});
|
||
</script>
|
||
|