mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 11:42:29 +00:00
2457 lines
123 KiB
HTML
2457 lines
123 KiB
HTML
<div class="sheet-container">
|
|
<input class="sheet-phase0-flag sheet-hidden" type="checkbox" name="attr_show_phase0_flag" checked="checked" value="1" />
|
|
<input class="sheet-notesTab-flag sheet-hidden" type="checkbox" name="attr_show_notesTab_flag" value="1" />
|
|
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab1" value="1" />
|
|
<span title="Phase 0"></span>
|
|
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab2" value="2" checked="checked" />
|
|
<span title="Core"></span>
|
|
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab3" value="3" />
|
|
<span title="Notes"></span>
|
|
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab4" value="4" />
|
|
<span title="Settings"></span>
|
|
|
|
<div class="sheet-tab-content sheet-tab1">
|
|
<div class="sheet-section">
|
|
<h1 class="sheet-h1-logo">
|
|
<img class="sheet-logo" src="./images/Powered-by-Fate.png" alt="FATE CORE" />
|
|
<span>Character Creation Worksheet</span>
|
|
</h1>
|
|
</div>
|
|
<div class="sheet-break"></div>
|
|
|
|
<div class="sheet-section-idea sheet-section">
|
|
<div class="sheet-header">
|
|
<span>CHARACTER IDEA</span>
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_HighConcept" placeholder="High Concept Aspect" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_Trouble" placeholder="Trouble Aspect" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_character_name" placeholder="Name" />
|
|
</div>
|
|
</div>
|
|
<div class="sheet-break"></div>
|
|
|
|
<div class="sheet-section-phase-trio sheet-section">
|
|
<div class="sheet-header">
|
|
<span>PHASE TRIO</span>
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<textarea name="attr_aspect_one_story" placeholder="Phase One: Your Adventure"></textarea>
|
|
<input type="text" name="attr_aspect_one" placeholder="Phase One Aspect" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<textarea name="attr_aspect_two_story" placeholder="Phase Two: Crossing Paths"></textarea>
|
|
<input type="text" name="attr_aspect_two" placeholder="Phase Two Aspect" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<textarea name="attr_aspect_three_story" placeholder="Phase Three: Crossing Paths Again"></textarea>
|
|
<input type="text" name="attr_aspect_three" placeholder="Phase Three Aspect" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-tab-content sheet-tab2">
|
|
<input class="sheet-hints-flag sheet-hidden" type="checkbox" name="attr_show_hints_flag" checked="checked" />
|
|
<div class="sheet-section sheet-hint">
|
|
<div class="sheet-hint-options">
|
|
<input class="sheet-hint-options-flag" type="checkbox" name="attr_show_hints_flag" checked="checked" />
|
|
<span>*</span>
|
|
</div>
|
|
<div class="sheet-hint-icon">
|
|
<span>!</span>
|
|
</div>
|
|
<div class="sheet-hint-content">
|
|
<span>This Fate Core character sheet has been designed to be user friendly, keeping unnecessary changes to a minimum. Use the pencil icons to switch between editing mode and play mode, where you are able to then use Aspects, Skills and Stunts.</span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-break"></div>
|
|
<div class="sheet-section-id-logo sheet-section">
|
|
<img class="sheet-logo" src="./images/Powered-by-Fate.png" alt="FATE CORE" />
|
|
</div>
|
|
|
|
<div class="sheet-section-id sheet-section">
|
|
<div class="sheet-header">
|
|
<span>ID</span>
|
|
</div>
|
|
<input class="sheet-fatepoints-flag sheet-hidden" type="checkbox" name="attr_show_fatepoints_flag" value="1" checked />
|
|
<div class="sheet-section sheet-section-id-info">
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_character_name" placeholder="Name" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<textarea name="attr_character_description" placeholder="Description"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-section sheet-section-id-fatepoints">
|
|
<div class="sheet-repitem">
|
|
<button type="roll" class="sheet-small-button" name="roll_fatePointsRefreshRoll" value="&{template:refresh} @{rollTemplate_showCharName} {{refresh=@{fatePoints_refresh}}} {{fatePoints=@{fatepoints}}} {{pointsNeeded=[[@{fatePoints_refresh}-@{fatepoints}]]}} @{rollTemplate_showInfo}">Refresh</button>
|
|
<input type="number" name="attr_fatePoints_refresh" placeholder="0" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<button type="roll" class="sheet-small-button" name="roll_fatePointsRoll" value="&{template:fatepoints} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo}">Fate Points</button>
|
|
<input type="number" name="attr_fatepoints" placeholder="0" class="sheet-large-number" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-break"></div>
|
|
|
|
<div class="sheet-section-aspects sheet-section sheet-half">
|
|
<div class="sheet-header">
|
|
<span>ASPECTS</span>
|
|
<div class="sheet-section-options">
|
|
<input class="sheet-section-options-flag" type="checkbox" name="attr_aspects_options_flag" />
|
|
<span>p</span>
|
|
</div>
|
|
</div>
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_aspects_options_flag" />
|
|
<div class="sheet-options">
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_HighConcept" placeholder="High Concept Aspect" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_Trouble" placeholder="Trouble Aspect" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_aspect_one" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_aspect_two" />
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<input type="text" name="attr_aspect_three" />
|
|
</div>
|
|
</div>
|
|
<div class="sheet-display">
|
|
<div class="sheet-repitem">
|
|
<button type="roll" class="sheet-action-button" name="roll_highConceptRoll" value="&{template:aspect} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{aspect=@{HighConcept}}}">
|
|
<span name="attr_HighConcept"></span>
|
|
</button>
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<button type="roll" class="sheet-action-button" name="roll_troubleAspectRoll" value="&{template:aspect} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{aspect=@{Trouble}}}">
|
|
<span name="attr_Trouble"></span>
|
|
</button>
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<button type="roll" class="sheet-action-button" name="roll_aspectOneRoll" value="&{template:aspect} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{aspect=@{aspect_one}}}">
|
|
<span name="attr_aspect_one"></span>
|
|
</button>
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<button type="roll" class="sheet-action-button" name="roll_aspectTwoRoll" value="&{template:aspect} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{aspect=@{aspect_two}}}">
|
|
<span name="attr_aspect_two"></span>
|
|
</button>
|
|
</div>
|
|
<div class="sheet-repitem">
|
|
<button type="roll" class="sheet-action-button" name="roll_aspectThreeRoll" value="&{template:aspect} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{aspect=@{aspect_three}}}">
|
|
<span name="attr_aspect_three"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sheet-section-bonus sheet-section sheet-half">
|
|
<div class="sheet-header">
|
|
<span>BOOSTS & SITUATION ASPECTS</span>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-repitem sheet-sa-row">
|
|
<span class="sheet-sa-free-invoke">Free</span>
|
|
<span class="sheet-sa-name">Aspect</span>
|
|
<span class="sheet-sa-edit"></span>
|
|
</div>
|
|
<fieldset class="repeating_situationaspect">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-options sheet-sa-row">
|
|
<input type="number" name="attr_aspect_free_invokes" class="sheet-sa-free-invoke" />
|
|
<input type="text" name="attr_aspect_name" class="sheet-sa-name" />
|
|
</div>
|
|
<div class="sheet-display sheet-sa-row">
|
|
<button type="roll" class="sheet-action-button" name="roll_situationAspectRoll" value="&{template:aspect} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{aspect=@{aspect_name}}} {{bonus=@{aspect_free_invokes}}}">
|
|
<span class="sheet-sa-free-invoke" name="attr_aspect_free_invokes"></span>
|
|
<span class="sheet-sa-name" name="attr_aspect_name"></span>
|
|
</button>
|
|
</div>
|
|
<div class="sheet-item-options sheet-sa-edit">
|
|
<input class="sheet-item-options-flag" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<span>p</span>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sheet-break"></div>
|
|
|
|
<div class="sheet-section-skills sheet-section">
|
|
<div class="sheet-header">
|
|
<span>SKILLS</span>
|
|
<div class="sheet-section-options">
|
|
<input class="sheet-section-options-flag" type="checkbox" name="attr_skills_options_flag" checked="checked" />
|
|
<span>p</span>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<input class="sheet-rollable-flag sheet-hidden" type="checkbox" name="attr_ladder_rollable_flag" value="1" checked="checked" />
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_skills_options_flag" checked="checked" />
|
|
<div class="sheet-skills-pyramid">
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-8">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=8}} {{shiftLevelText=Legendary}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 8]]}}">
|
|
<span>Legendary</span> (+8)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Legendary</span> (+8)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill8">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill8">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-7">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=7}} {{shiftLevelText=Epic}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 7]]}}">
|
|
<span>Epic</span> (+7)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Epic</span> (+7)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill7">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill7">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-6">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=6}} {{shiftLevelText=Fantastic}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 6]]}}">
|
|
<span>Fantastic</span> (+6)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Fantastic</span> (+6)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill6">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill6">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-5">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=5}} {{shiftLevelText=Superb}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 5]]}}">
|
|
<span>Superb</span> (+5)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Superb</span> (+5)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill5">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill5">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-4">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=4}} {{shiftLevelText=Great}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 4]]}}">
|
|
<span>Great</span> (+4)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Great</span> (+4)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill4">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill4">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-3">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=3}} {{shiftLevelText=Good}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 3]]}}">
|
|
<span>Good</span> (+3)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Good</span> (+3)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill3">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill3">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-2">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=2}} {{shiftLevelText=Fair}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 2]]}}">
|
|
<span>Fair</span> (+2)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Fair</span> (+2)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill2">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill2">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-1">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=1}} {{shiftLevelText=Average}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 1]]}}">
|
|
<span>Average</span> (+1)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Average</span> (+1)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill1">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill1">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-0">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=0}} {{shiftLevelText=Mediocre}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df + 0]]}}">
|
|
<span>Mediocre</span> (+0)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Mediocre</span> (+0)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkill0">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkill0">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-n1">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=-1}} {{shiftLevelText=Poor}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df - 1]]}}">
|
|
<span>Poor</span> (-1)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Poor</span> (-1)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkillN1">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkillN1">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-skills-pyramid-row sheet-skills-pyramid-row-n2">
|
|
<div class="sheet-skills-pyramid-shiftLevel">
|
|
<div class="sheet-rollable-flag-true">
|
|
<button type="roll" class="sheet-action-button" name="roll_ladder" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=-2}} {{shiftLevelText=Terrible}} {{skill=@{ladderRollLabel}}} {{skillRoll=[[4df - 2]]}}">
|
|
<span>Terrible</span> (-2)
|
|
</button>
|
|
</div>
|
|
<div class="sheet-rollable-flag-false">
|
|
<span>Terrible</span> (-2)
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_skills">
|
|
<input type="hidden" name="attr_shiftLevel" class="sheet-skills-filter" />
|
|
<input type="hidden" name="attr_shiftLevelText" />
|
|
<div class="sheet-skills-pyramid-skill">
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_skill" />
|
|
</div>
|
|
<div class="sheet-display">
|
|
<button type="roll" class="sheet-action-button" name="roll_skillRoll" value="&{template:skill} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{shiftLevel=@{shiftLevel}}} {{shiftLevelText=@{shiftLevelText}}} {{skill=@{skill}}} {{skillRoll=[[4df + @{shiftLevel}]]}}">
|
|
<span name="attr_skill"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class="sheet-inline-options">
|
|
<button type="action" name="act_removeSkillN2">
|
|
<span>-</span>
|
|
</button>
|
|
<button type="action" name="act_addSkillN2">
|
|
<span>+</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sheet-break"></div>
|
|
|
|
<div class="sheet-section-stunts sheet-section sheet-half">
|
|
<div class="sheet-header">
|
|
<span>STUNTS</span>
|
|
</div>
|
|
<fieldset class="repeating_stunts">
|
|
<div class="sheet-item-options">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-display">
|
|
<input class="sheet-item-options-flag2" type="checkbox" name="attr_more_flag" checked="checked" />
|
|
<span>E</span>
|
|
</div>
|
|
<input class="sheet-item-options-flag" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<span>p</span>
|
|
</div>
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_aspect_name" placeholder="Aspect" />
|
|
<input type="text" name="attr_skill" placeholder="Skill" />
|
|
<input type="hidden" name="attr_skillShiftLevel" />
|
|
<input type="hidden" name="attr_skillShiftLevelText" />
|
|
<div>
|
|
<span class="sheet-check-label">Requires Fate Point?</span>
|
|
<input type="checkbox" name="attr_requiresFatePoint" value="{{requiresFatePoint=1}}" />
|
|
</div>
|
|
<select name="attr_type">
|
|
<option value="" disabled selected hidden>Stunt Type...</option>
|
|
<option value="1"><span>New Action to Skill</span></option>
|
|
<option value="2"><span>Bonus to Action</span></option>
|
|
<option value="3"><span>Rules Exception</span></option>
|
|
</select>
|
|
<input type="hidden" name="attr_typeText" />
|
|
<input type="hidden" name="attr_type" class="sheet-stunt-type" />
|
|
<div class="sheet-stunt-action">
|
|
<div>
|
|
<input type="checkbox" name="attr_isOvercome" value="{{isOvercome=1}}" />
|
|
<span class="sheet-check-label">Overcome</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" name="attr_isAdvantage" value="{{isAdvantage=1}}" />
|
|
<span class="sheet-check-label">Create an Advantage</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" name="attr_isAttack" value="{{isAttack=1}}" />
|
|
<span class="sheet-check-label">Attack</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" name="attr_isDefend" value="{{isDefend=1}}" />
|
|
<span class="sheet-check-label">Defend</span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-stunt-bonus">
|
|
<span>Bonus Shifts: </span>
|
|
<select name="attr_bonusShifts">
|
|
<option value="8"><span>Legendary</span> (+8)</option>
|
|
<option value="7"><span>Epic</span> (+7)</option>
|
|
<option value="6"><span>Fantastic</span> (+6)</option>
|
|
<option value="5"><span>Superb</span> (+5)</option>
|
|
<option value="4"><span>Great</span> (+4)</option>
|
|
<option value="3"><span>Good</span> (+3)</option>
|
|
<option value="2" selected><span>Fair</span> (+2)</option>
|
|
<option value="1"><span>Average</span> (+1)</option>
|
|
</select>
|
|
<input type="hidden" name="attr_bonusShiftsText" />
|
|
<div>
|
|
<span class="sheet-check-label">Roll Skill?</span>
|
|
<input type="checkbox" name="attr_rollSkill" value="{{isSkillRoll=1}}" />
|
|
</div>
|
|
</div>
|
|
<textarea name="attr_description" placeholder="Description"></textarea>
|
|
</div>
|
|
<div class="sheet-display">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_more_flag" checked="checked" />
|
|
<div class="sheet-display">
|
|
<h3 class="sheet-right-buttons">
|
|
<button type="roll" class="sheet-action-button" name="roll_stunt" value="&{template:stunt} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{stunt=@{aspect_name}}} @{requiresFatePoint} {{skill=@{skill}}} {{skillShiftLevelText=@{skillShiftLevelText}}} {{skillShiftLevel=[[@{skillShiftLevel}]]}} {{typeText=@{typeText}}} {{type=[[@{type}]]}} @{isOvercome} @{isAdvantage} @{isAttack} @{isDefend} {{bonusShiftsText=@{bonusShiftsText}}} {{bonusShifts=@{bonusShifts}}} @{rollSkill} {{skillRoll=[[4df + @{skillShiftLevel} + @{bonusShifts}]]}} {{description=@{description}}}">
|
|
<span name="attr_aspect_name"></span>
|
|
</button>
|
|
</h3>
|
|
<span name="attr_description" class="sheet-keep-whitespace"></span>
|
|
</div>
|
|
<div class="sheet-options">
|
|
<h3 class="sheet-right-buttons">
|
|
<button type="roll" class="sheet-action-button sheet-tooltip" name="roll_stunt" value="&{template:stunt} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{stunt=@{aspect_name}}} @{requiresFatePoint} {{skill=@{skill}}} {{skillShiftLevelText=@{skillShiftLevelText}}} {{skillShiftLevel=[[@{skillShiftLevel}]]}} {{typeText=@{typeText}}} {{type=[[@{type}]]}} @{isOvercome} @{isAdvantage} @{isAttack} @{isDefend} {{bonusShiftsText=@{bonusShiftsText}}} {{bonusShifts=@{bonusShifts}}} @{rollSkill} {{skillRoll=[[4df + @{skillShiftLevel} + @{bonusShifts}]]}} {{description=@{description}}}">
|
|
<span name="attr_aspect_name"></span>
|
|
<span name="attr_description" class="sheet-tooltipText sheet-keep-whitespace"></span>
|
|
</button>
|
|
</h3>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<div class="sheet-section-extras sheet-section sheet-half">
|
|
<div class="sheet-header">
|
|
<span>EXTRAS</span>
|
|
</div>
|
|
<fieldset class="repeating_extras">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-item-options sheet-extras-edit">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-display">
|
|
<input class="sheet-item-options-flag2" type="checkbox" name="attr_more_flag" checked="checked" />
|
|
<span>E</span>
|
|
</div>
|
|
<input class="sheet-item-options-flag" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<span>p</span>
|
|
</div>
|
|
<div class="sheet-options sheet-extras-row">
|
|
<input type="text" name="attr_title" placeholder="Title" />
|
|
<input type="text" name="attr_permissions" placeholder="Permissions" />
|
|
<input type="text" name="attr_costs" placeholder="Costs" />
|
|
<textarea name="attr_description" placeholder="Description"></textarea>
|
|
</div>
|
|
<div class="sheet-display sheet-extras-row">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_more_flag" checked="checked" />
|
|
<div class="sheet-display">
|
|
<h3 class="sheet-right-buttons">
|
|
<button type="roll" class="sheet-action-button" name="roll_extra" value="&{template:extra} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{extra=@{title}}} {{permissions=@{permissions}}} {{costs=@{costs}}} {{description=@{description}}}">
|
|
<span name="attr_title"></span>
|
|
</button>
|
|
</h3>
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Permissions</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<span name="attr_permissions"></span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Costs</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<span name="attr_costs"></span>
|
|
</div>
|
|
<span name="attr_description" class="sheet-keep-whitespace"></span>
|
|
</div>
|
|
<div class="sheet-options">
|
|
<h3 class="sheet-right-buttons">
|
|
<button type="roll" class="sheet-action-button sheet-tooltip" name="roll_extra" value="&{template:extra} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{extra=@{title}}} {{permissions=@{permissions}}} {{costs=@{costs}}} {{description=@{description}}}">
|
|
<span name="attr_title"></span>
|
|
<span name="attr_description" class="sheet-tooltipText sheet-keep-whitespace"></span>
|
|
</button>
|
|
</h3>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<div class="sheet-break"></div>
|
|
|
|
<div class="sheet-section-stress sheet-section sheet-half">
|
|
<div class="sheet-header">
|
|
<span>STRESS</span>
|
|
<div class="sheet-section-options">
|
|
<button type="action" name="act_clearStress" >
|
|
<span>#</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_stress">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_name" placeholder="Name" />
|
|
<input type="text" name="attr_skill" placeholder="Skill" />
|
|
<select name="attr_usable">
|
|
<option value=1>1</option>
|
|
<option value=2 selected>2</option>
|
|
<option value=3>3</option>
|
|
<option value=4>4</option>
|
|
<option value=5>5</option>
|
|
<option value=6>6</option>
|
|
<option value=7>7</option>
|
|
<option value=8>8</option>
|
|
</select>
|
|
<input type="hidden" name="attr_bound" />
|
|
<div class="sheet-item-options sheet-stress-edit">
|
|
<input class="sheet-item-options-flag" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<span>3</span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-display">
|
|
<div class="sheet-stress-header">
|
|
<span class="sheet-stress-header-name" name="attr_name"></span>
|
|
<span class="sheet-stress-header-skill" name="attr_skill"></span>
|
|
</div>
|
|
<div class="sheet-stress-row">
|
|
<input type="hidden" name="attr_usable" />
|
|
<input type="checkbox" name="attr_isUsed1" title="1" value=1 />
|
|
<input type="checkbox" name="attr_isUsed2" title="2" value=2 />
|
|
<input type="checkbox" name="attr_isUsed3" title="3" value=3 />
|
|
<input type="checkbox" name="attr_isUsed4" title="4" value=4 />
|
|
<input type="checkbox" name="attr_isUsed5" title="5" value=5 />
|
|
<input type="checkbox" name="attr_isUsed6" title="6" value=6 />
|
|
<input type="checkbox" name="attr_isUsed7" title="7" value=7 />
|
|
<input type="checkbox" name="attr_isUsed8" title="8" value=8 />
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<input class="sheet-conditions-flag sheet-hidden" type="checkbox" name="attr_show_conditions_flag" value="1" />
|
|
<div class="sheet-section-consequences sheet-section sheet-half">
|
|
<div class="sheet-header">
|
|
<span>CONSEQUENCES</span>
|
|
</div>
|
|
<div class="sheet-repitem sheet-consequence-row">
|
|
<span class="sheet-consequence-worth"></span>
|
|
<span class="sheet-consequence-aspect">Aspect</span>
|
|
<span class="sheet-consequence-healing">k</span>
|
|
</div>
|
|
<fieldset class="repeating_consequences">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-options">
|
|
<select name="attr_worth">
|
|
<option value=2 selected><span>Mild</span> (2)</option>
|
|
<option value=4><span>Moderate</span> (4)</option>
|
|
<option value=6><span>Severe</span> (6)</option>
|
|
<option value=8><span>Extreme</span> (8)</option>
|
|
</select>
|
|
<input type="hidden" name="attr_worth_text" value="Mild"/>
|
|
<input type="checkbox" name="attr_isUsed" class="sheet-hidden" value="1" />
|
|
<div class="sheet-item-options sheet-consequence-edit">
|
|
<input class="sheet-item-options-flag" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<span>3</span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-display sheet-consequence-row">
|
|
<div class="sheet-consequence-worth">
|
|
<button type="roll" class="sheet-action-button" name="roll_consequenceRoll" value="&{template:consequence} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{worth=@{worth}}} {{worthText=@{worth_text}}} {{aspect=@{aspect}}} {{isHealing=[[@{isHealing}]]}}">
|
|
<span class="sheet-worth-value" name="attr_worth"></span>
|
|
<span class="sheet-worth-text" name="attr_worth_text"></span>
|
|
</button>
|
|
</div>
|
|
<input type="text" name="attr_aspect" placeholder="Unused" class="sheet-consequence-aspect" />
|
|
<input type="checkbox" name="attr_isHealing" class="sheet-consequence-healing" value="1" />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-section-conditions sheet-section sheet-half">
|
|
<div class="sheet-header">
|
|
<span>CONDITIONS</span>
|
|
<div class="sheet-section-options">
|
|
<input class="sheet-section-options-flag" type="checkbox" name="attr_consequences_options_flag" checked="checked" />
|
|
<span>p</span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-repitem sheet-conditions-row">
|
|
<span class="sheet-consequence-worth"></span>
|
|
<span class="sheet-consequence-healing">k</span>
|
|
<span class="sheet-consequence-aspect">Aspect</span>
|
|
</div>
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_consequences_options_flag" checked="checked" />
|
|
<div class="sheet-options">
|
|
<fieldset class="repeating_consequences">
|
|
<div class="sheet-conditions-row">
|
|
<select name="attr_worth">
|
|
<option value=1 selected><span>Fleeting</span> (1)</option>
|
|
<option value=2><span>Sticky</span> (2)</option>
|
|
<option value=4><span>Lasting</span> (4)</option>
|
|
</select>
|
|
<input type="hidden" name="attr_worth_text" value="Fleeting"/>
|
|
<input type="text" name="attr_aspect" placeholder="Aspect" />
|
|
<input type="checkbox" name="attr_isUsed" class="sheet-hidden" value="1" />
|
|
<input type="checkbox" name="attr_isHealing" class="sheet-hidden" value="1" />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-display">
|
|
<div class="sheet-conditions-group1">
|
|
<h3><span>Fleeting</span></h3>
|
|
<fieldset class="repeating_consequences">
|
|
<input type="hidden" name="attr_worth" class="sheet-conditions-filter" />
|
|
<input type="hidden" name="attr_worth_text" />
|
|
<div class="sheet-conditions-row">
|
|
<div class="sheet-consequence-worth">
|
|
<span class="sheet-worth-value" name="attr_worth"></span>
|
|
<input type="checkbox" name="attr_isUsed" value="1" />
|
|
</div>
|
|
<div class="sheet-consequence-healing">
|
|
<input type="checkbox" name="attr_isHealing" value="1" class="sheet-hidden" />
|
|
</div>
|
|
<div class="sheet-consequence-aspect">
|
|
<button type="roll" class="sheet-action-button" name="roll_consequenceRoll" value="&{template:consequence} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{worth=@{worth}}} {{worthText=@{worth_text}}} {{aspect=@{aspect}}} {{isHealing=[[@{isHealing}]]}}">
|
|
<span name="attr_aspect"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-conditions-group2">
|
|
<h3><span>Sticky</span></h3>
|
|
<fieldset class="repeating_consequences">
|
|
<input type="hidden" name="attr_worth" class="sheet-conditions-filter" />
|
|
<input type="hidden" name="attr_worth_text" />
|
|
<div class="sheet-conditions-row">
|
|
<div class="sheet-consequence-worth">
|
|
<span class="sheet-worth-value" name="attr_worth"></span>
|
|
<input type="checkbox" name="attr_isUsed" value="1" />
|
|
</div>
|
|
<div class="sheet-consequence-healing">
|
|
<input type="checkbox" name="attr_isHealing" value="1" class="sheet-hidden" />
|
|
</div>
|
|
<div class="sheet-consequence-aspect">
|
|
<button type="roll" class="sheet-action-button" name="roll_consequenceRoll" value="&{template:consequence} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{worth=@{worth}}} {{worthText=@{worth_text}}} {{aspect=@{aspect}}} {{isHealing=[[@{isHealing}]]}}">
|
|
<span name="attr_aspect"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-conditions-group4">
|
|
<h3><span>Lasting</span></h3>
|
|
<fieldset class="repeating_consequences">
|
|
<input type="hidden" name="attr_worth" class="sheet-conditions-filter" />
|
|
<input type="hidden" name="attr_worth_text" />
|
|
<div class="sheet-conditions-row">
|
|
<div class="sheet-consequence-worth">
|
|
<span class="sheet-worth-value" name="attr_worth"></span>
|
|
<input type="checkbox" name="attr_isUsed" value="1" />
|
|
</div>
|
|
<div class="sheet-consequence-healing">
|
|
<input type="checkbox" name="attr_isHealing" value="1" />
|
|
</div>
|
|
<div class="sheet-consequence-aspect">
|
|
<button type="roll" class="sheet-action-button" name="roll_consequenceRoll" value="&{template:consequence} @{rollTemplate_showCharName} {{fatePoints=@{fatepoints}}} @{rollTemplate_showInfo} {{worth=@{worth}}} {{worthText=@{worth_text}}} {{aspect=@{aspect}}} {{isHealing=[[@{isHealing}]]}}">
|
|
<span name="attr_aspect"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sheet-break"></div>
|
|
|
|
<input class="sheet-notesTab-flag sheet-hidden" type="checkbox" name="attr_show_notesTab_flag" value="1" />
|
|
|
|
<div class="sheet-section-notes sheet-section">
|
|
<div class="sheet-header">
|
|
<span>NOTES</span>
|
|
</div>
|
|
<fieldset class="repeating_notes">
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-item-options sheet-notes-edit">
|
|
<input class="sheet-item-options-flag" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<span>p</span>
|
|
</div>
|
|
<div class="sheet-options sheet-notes-row">
|
|
<input type="text" name="attr_title" placeholder="Notes Title" />
|
|
<textarea name="attr_body" placeholder="Notes"></textarea>
|
|
</div>
|
|
<div class="sheet-display sheet-notes-row">
|
|
<h3><span name="attr_title"></span></h3>
|
|
<span name="attr_body" class="sheet-keep-whitespace"></span>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sheet-tab-content sheet-tab3">
|
|
<h1>Notes</h1>
|
|
<fieldset class="repeating_notes">
|
|
<div class="sheet-header">
|
|
<span name="attr_title"></span>
|
|
<div class="sheet-section-options">
|
|
<input class="sheet-section-options-flag" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<span>p</span>
|
|
</div>
|
|
</div>
|
|
<input class="sheet-options-flag sheet-hidden" type="checkbox" name="attr_options_flag" checked="checked" />
|
|
<div class="sheet-options">
|
|
<input type="text" name="attr_title" placeholder="Notes Title" />
|
|
<textarea name="attr_body" placeholder="Notes"></textarea>
|
|
</div>
|
|
<div class="sheet-display">
|
|
<span name="attr_body" class="sheet-keep-whitespace"></span>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<div class="sheet-tab-content sheet-tab4">
|
|
<h1>Settings</h1>
|
|
<div class="sheet-section">
|
|
<div class="sheet-header">
|
|
<span>Display Options</span>
|
|
</div>
|
|
<div class="sheet-settings">
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Show First Time Hints</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="1" name="attr_show_hints_flag" checked="checked" />
|
|
<p><span>Show hints that might be useful for first time players or those upgrading from the previous sheet design.</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Show Phase 0 Tab</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="1" name="attr_show_phase0_flag" checked="checked" />
|
|
<p><span>If you are starting with a Phase 0, then you can use this tab to build up your ideas.</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Show Notes Tab</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="1" name="attr_show_notesTab_flag" />
|
|
<p><span>Set this if you would prefer the notes to show on a Tab of their own.</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Rollable Ladder</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" class="sheet-ladder-rollable" value="1" name="attr_ladder_rollable_flag" checked="checked" />
|
|
<p><span>Make the values on the Ladder rollable.</span></p>
|
|
<div class="sheet-ladder-rollable-true">
|
|
<select name="attr_ladderRollLabel">
|
|
<option value=" " selected>Blank</option>
|
|
<option value="?{Skill?}">Ask on roll</option>
|
|
</select>
|
|
<p><span>When rolling from the ladder, what header should be used?</span></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Show Fate Points</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="1" name="attr_show_fatepoints_flag" checked="checked" />
|
|
<p><span>NPCs and Extras don't usually have their own Fate Points so uncheck this to hide the Fate Points and Refresh boxes</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Use Conditions instead of Consequences</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="1" name="attr_show_conditions_flag">
|
|
<p><span>Use the Conditions from the Fate Toolkit to replace Consequences</span></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-section">
|
|
<div class="sheet-header">
|
|
<span>Roll Options</span>
|
|
</div>
|
|
<div class="sheet-settings">
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Show Help Info on Rolls</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="{{showInfo=1}}" name="attr_rollTemplate_showInfo" checked="checked" />
|
|
<p><span>Show hints that might be useful for first time players on rolls.</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Show Character Name on Rolls</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="{{charname=@{character_name}}}" name="attr_rollTemplate_showCharName" checked="checked" />
|
|
<p><span>Show the Character's name on the Roll output. This is useful when rolling other character's Aspects.</span></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-section">
|
|
<div class="sheet-header">
|
|
<span>Game Defaults</span>
|
|
</div>
|
|
<div class="sheet-settings">
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Run First Time Setup</span>
|
|
</div>
|
|
<div>
|
|
<input type="checkbox" value="1" name="attr_run_firstTime_setup" checked="checked" />
|
|
<p><span>Run scripts to setup the sheet for a default character.</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Default Stresses and Skills</span>
|
|
</div>
|
|
<div>
|
|
<input type="text" value="Physical:Physique,Mental:Will" name="attr_default_stressSkills" />
|
|
<p><span>When setting up a default sheet, what stress tracks and their guiding skill should be set up? e.g. "Mental:Will,Extra:3"</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-setting">
|
|
<div class="sheet-header">
|
|
<span>Default Consequences</span>
|
|
</div>
|
|
<div>
|
|
<input type="text" value="2,4,6" name="attr_default_consequences" />
|
|
<p><span>When setting up a default sheet, what consequences are the default consequences? e.g. "2,4,6"</span></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-hidden">
|
|
<input type="hidden" name="attr_importedOldData_flag" />
|
|
</div>
|
|
</div>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-refresh">
|
|
<div class="sheet-rollTemplate">
|
|
<div class="sheet-fate-point-circle">
|
|
<span>{{fatePoints}}</span>
|
|
</div>
|
|
<div class="row sheet-header">
|
|
<span>Refresh</span>
|
|
</div>
|
|
<div class="row">
|
|
<span>{{#charname}}{{charname}}'s {{/charname}}Refresh is {{refresh}}. {{#rollLess() pointsNeeded 1}}No{{/rollLess() pointsNeeded 1}}{{#^rollLess() pointsNeeded 1}}{{pointsNeeded}}{{/^rollLess() pointsNeeded 1}} Fate Point{{#^rollTotal() pointsNeeded 1}}s{{/^rollTotal() pointsNeeded 1}} needed to reach the Refresh.</span>
|
|
</div>
|
|
{{#showInfo}}
|
|
<div class="row sheet-header">
|
|
<span>Info</span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-info">At the start of a new game session, all Player Characters should replenish their Fate Points up to their Refresh.</span>
|
|
</div>
|
|
{{/showInfo}}
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-fatepoints">
|
|
<div class="sheet-rollTemplate">
|
|
<div class="sheet-fate-point-circle">
|
|
<span>{{fatePoints}}</span>
|
|
</div>
|
|
{{^showInfo}}
|
|
<div class="row sheet-header">
|
|
<span>Fate Points</span>
|
|
</div>
|
|
{{/showInfo}}
|
|
{{#showInfo}}
|
|
<div class="row sheet-header">
|
|
<span>Info</span>
|
|
</div>
|
|
<div class="row">
|
|
<p class="sheet-info">You spend Fate Points to make your character awesome. You can either declare a story detail or invoke an Aspect, and some stunts are so rare that they require a Fate Point to activate. If you are running low, then you can suggest a Compel against an Aspect.</p>
|
|
<ul class="sheet-info">
|
|
<li>Declaring a story detail should be something that helps you in the scene. This can be things like "I'm Aspect X, so it makes sense that I've met this NPC in the past" or "Due to Aspect X, I was smart enough to bring a map of this town before leaving" or "I know this language because of my Aspect X". Work out the detail with the GM and if a decision is reached then pay the Fate Point and the story detail is now fact.</li>
|
|
<li>Invoking an Aspect is used when rolling a Skill. The Aspect has to have something to do with the Skill being rolled. You can either re-roll the Skill or gain two additional shifts (+2) to your roll. You can stack multiple Invokes on separate Aspects but they all have to make sense as to why they would help.</li>
|
|
<li>When you are running low on Fate Points, keep a look out for an opportunity to suggest a Compel. When something goes wrong for your character because of an Aspect, that is a compel. The GM should already be planning for some mayhem due to your Aspects, but don't be afraid to suggest one for yourself.</li>
|
|
</ul>
|
|
</div>
|
|
{{/showInfo}}
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-aspect">
|
|
<div class="sheet-rollTemplate">
|
|
<div class="sheet-fate-point-circle">
|
|
<span>{{fatePoints}}</span>
|
|
</div>
|
|
{{#bonus}}
|
|
<div class="sheet-bonus-circle">
|
|
<span>{{bonus}}</span>
|
|
</div>
|
|
{{/bonus}}
|
|
<div class="row sheet-header">
|
|
<span>{{#isCompel}}Compel{{/isCompel}}{{^isCompel}}Invoke{{/isCompel}} Aspect</span>
|
|
</div>
|
|
<div class="row">
|
|
<span>{{#isCompel}}Compelling{{/isCompel}}{{^isCompel}}Invoking{{/isCompel}} {{#charname}}{{charname}}'s {{/charname}}Aspect "{{aspect}}".</span>
|
|
</div>
|
|
{{#showInfo}}
|
|
<div class="row sheet-header">
|
|
<span>Info</span>
|
|
</div>
|
|
<div class="row">
|
|
{{#isCompel}}
|
|
<span class="sheet-info">Something negative is about to occur due to an Aspect. Discuss the details with the GM and then either accept the Fate Point from the person doing the Compelling, otherwise if it is from the GM pay them a Fate Point to prevent the Compel.</span>
|
|
{{/isCompel}}
|
|
{{^isCompel}}
|
|
<p class="sheet-info">Invoking an Aspect costs 1 Fate Point and depending on when it is invoked will change what it does:</p>
|
|
<ul class="sheet-info">
|
|
<li>
|
|
<span>When rolling a Skill, choose one of the following:</span>
|
|
<ul>
|
|
<li>Re-roll the Skill</li>
|
|
<li>Gain two additional shifts (+2) to your roll</li>
|
|
</ul>
|
|
<span>The Aspect has to have something to do with the Skill being rolled. You can stack multiple Invokes on separate Aspects but they all have to make sense as to why they would help.</span>
|
|
</li>
|
|
<li>
|
|
<span>At any other time you can declare a Story Detail that helps you in the scene. Examples are:</span>
|
|
<ul>
|
|
<li><span>"I'm Aspect X, so it makes sense that I've met this NPC in the past"</span></li>
|
|
<li><span>Due to Aspect X, I was smart enough to bring a map of this town before leaving"</span></li>
|
|
<li><span>"I know this language because of my Aspect X"</span></li>
|
|
</ul>
|
|
<span>Work out the detail with the GM and if a decision is reached then pay the Fate Point and the story detail is now fact.</span>
|
|
</li>
|
|
</ul>
|
|
{{/isCompel}}
|
|
</div>
|
|
{{/showInfo}}
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-skill">
|
|
<div class="sheet-rollTemplate">
|
|
<div class="sheet-fate-point-circle">
|
|
<span>{{fatePoints}}</span>
|
|
</div>
|
|
<div class="row sheet-header">
|
|
<span>{{skill}}</span>
|
|
</div>
|
|
<div class="row">
|
|
{{#rollGreater() skillRoll 7}}
|
|
<span>Legendary</span>
|
|
{{/rollGreater() skillRoll 7}}
|
|
{{#rollTotal() skillRoll 7}}
|
|
<span>Epic</span>
|
|
{{/rollTotal() skillRoll 7}}
|
|
{{#rollTotal() skillRoll 6}}
|
|
<span>Fantastic</span>
|
|
{{/rollTotal() skillRoll 6}}
|
|
{{#rollTotal() skillRoll 5}}
|
|
<span>Superb</span>
|
|
{{/rollTotal() skillRoll 5}}
|
|
{{#rollTotal() skillRoll 4}}
|
|
<span>Great</span>
|
|
{{/rollTotal() skillRoll 4}}
|
|
{{#rollTotal() skillRoll 3}}
|
|
<span>Good</span>
|
|
{{/rollTotal() skillRoll 3}}
|
|
{{#rollTotal() skillRoll 2}}
|
|
<span>Fair</span>
|
|
{{/rollTotal() skillRoll 2}}
|
|
{{#rollTotal() skillRoll 1}}
|
|
<span>Average</span>
|
|
{{/rollTotal() skillRoll 1}}
|
|
{{#rollTotal() skillRoll 0}}
|
|
<span>Mediocre</span>
|
|
{{/rollTotal() skillRoll 0}}
|
|
{{#rollTotal() skillRoll -1}}
|
|
<span>Poor</span>
|
|
{{/rollTotal() skillRoll -1}}
|
|
{{#rollLess() skillRoll -1}}
|
|
<span>Terrible</span>
|
|
{{/rollLess() skillRoll -1}}
|
|
<span> ({{#rollGreater() skillRoll -1}}+{{/rollGreater() skillRoll -1}}{{skillRoll}})</span>
|
|
</div>
|
|
{{#showInfo}}
|
|
<div class="row sheet-header">
|
|
<span>Info</span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-info">Skills are used to achieve one of four outcomes:</span>
|
|
<ul class="sheet-info">
|
|
<li>
|
|
<span class="sheet-uppercase">Overcome</span>
|
|
<ul>
|
|
<li><span>Use the overcome action to achieve assorted goals appropriate to your skill.</span></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<span class="sheet-uppercase">Create an Advantage</span>
|
|
<ul>
|
|
<li><span>Use the create an advantage action to make a situation aspect that gives you a benefit, or to claim a benefit from any aspect you have access to.</span></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<span class="sheet-uppercase">Attack</span>
|
|
<ul>
|
|
<li><span>Use the attack action to harm someone in a conflict or take them out of a scene.</span></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<span class="sheet-uppercase">Defend</span>
|
|
<ul>
|
|
<li><span>Use the defend action to avoid an attack or prevent someone from creating an advantage against you.</span></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
{{/showInfo}}
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-stunt">
|
|
<div class="sheet-rollTemplate">
|
|
<div class="sheet-fate-point-circle">
|
|
<span>{{fatePoints}}</span>
|
|
</div>
|
|
<div class="row sheet-header">
|
|
<span>{{stunt}}</span>
|
|
</div>
|
|
{{#requiresFatePoint}}
|
|
<div class="row">
|
|
<span class="sheet-warning">A Fate Point must be spent to activate this Stunt</span>
|
|
</div>
|
|
{{/requiresFatePoint}}
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Skill</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<span>{{skill}} - {{skillShiftLevelText}} ({{#rollGreater() skillShiftLevel -1}}+{{/rollGreater() skillShiftLevel -1}}{{skillShiftLevel}})</span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Stunt Type</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<span>{{typeText}}</span>
|
|
</div>
|
|
{{#rollBetween() type 1 2}}
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Action</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<ul>
|
|
{{#isOvercome}}
|
|
<li>Overcome</li>
|
|
{{/isOvercome}}
|
|
{{#isAdvantage}}
|
|
<li>Create an Advantage</li>
|
|
{{/isAdvantage}}
|
|
{{#isAttack}}
|
|
<li>Attack</li>
|
|
{{/isAttack}}
|
|
{{#isDefend}}
|
|
<li>Defend</li>
|
|
{{/isDefend}}
|
|
</ul>
|
|
</div>
|
|
{{/rollBetween() type 1 2}}
|
|
{{#rollTotal() type 2}}
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Bonus</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<span>{{bonusShiftsText}} (+{{bonusShifts}})</span>
|
|
</div>
|
|
{{/rollTotal() type 2}}
|
|
{{#isSkillRoll}}
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Skill Roll</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
{{#rollGreater() skillRoll 7}}
|
|
<span>Legendary</span>
|
|
{{/rollGreater() skillRoll 7}}
|
|
{{#rollTotal() skillRoll 7}}
|
|
<span>Epic</span>
|
|
{{/rollTotal() skillRoll 7}}
|
|
{{#rollTotal() skillRoll 6}}
|
|
<span>Fantastic</span>
|
|
{{/rollTotal() skillRoll 6}}
|
|
{{#rollTotal() skillRoll 5}}
|
|
<span>Superb</span>
|
|
{{/rollTotal() skillRoll 5}}
|
|
{{#rollTotal() skillRoll 4}}
|
|
<span>Great</span>
|
|
{{/rollTotal() skillRoll 4}}
|
|
{{#rollTotal() skillRoll 3}}
|
|
<span>Good</span>
|
|
{{/rollTotal() skillRoll 3}}
|
|
{{#rollTotal() skillRoll 2}}
|
|
<span>Fair</span>
|
|
{{/rollTotal() skillRoll 2}}
|
|
{{#rollTotal() skillRoll 1}}
|
|
<span>Average</span>
|
|
{{/rollTotal() skillRoll 1}}
|
|
{{#rollTotal() skillRoll 0}}
|
|
<span>Mediocre</span>
|
|
{{/rollTotal() skillRoll 0}}
|
|
{{#rollTotal() skillRoll -1}}
|
|
<span>Poor</span>
|
|
{{/rollTotal() skillRoll -1}}
|
|
{{#rollLess() skillRoll -1}}
|
|
<span>Terrible</span>
|
|
{{/rollLess() skillRoll -1}}
|
|
<span> ({{#rollGreater() skillRoll -1}}+{{/rollGreater() skillRoll -1}}{{skillRoll}})</span>
|
|
</div>
|
|
{{/isSkillRoll}}
|
|
<div class="row">
|
|
<span class="sheet-keep-whitespace">{{description}}</span>
|
|
</div>
|
|
{{#showInfo}}
|
|
<div class="row sheet-header">
|
|
<span>Info</span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-info">Stunts are what set your character apart from the rest of the flock. Anyone can be a Great (+5) Fighter but how many others can Create an Advantage with a Fair (+2) Bonus when they smash the ground with their great war-hammer making everyone "Unsteady on their feet"?</span>
|
|
<ul class="sheet-info">
|
|
<li>
|
|
<span class="sheet-uppercase">Overcome</span>
|
|
<ul>
|
|
<li><span>Use the overcome action to achieve assorted goals appropriate to your skill.</span></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<span class="sheet-uppercase">Create an Advantage</span>
|
|
<ul>
|
|
<li><span>Use the create an advantage action to make a situation aspect that gives you a benefit, or to claim a benefit from any aspect you have access to.</span></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<span class="sheet-uppercase">Attack</span>
|
|
<ul>
|
|
<li><span>Use the attack action to harm someone in a conflict or take them out of a scene.</span></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<span class="sheet-uppercase">Defend</span>
|
|
<ul>
|
|
<li><span>Use the defend action to avoid an attack or prevent someone from creating an advantage against you.</span></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
{{/showInfo}}
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-extra">
|
|
<div class="sheet-rollTemplate">
|
|
<div class="sheet-fate-point-circle">
|
|
<span>{{fatePoints}}</span>
|
|
</div>
|
|
<div class="row sheet-header">
|
|
<span>Extra</span>
|
|
<span>: </span>
|
|
<span>{{extra}}</span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Permissions</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<span>{{permissions}}</span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-inlineLabel">Costs</span>
|
|
<span class="sheet-inlineLabel">: </span>
|
|
<span>{{costs}}</span>
|
|
</div>
|
|
<div class="row">
|
|
<span class="sheet-keep-whitespace">{{description}}</span>
|
|
</div>
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-consequence">
|
|
<div class="sheet-rollTemplate">
|
|
<div class="sheet-fate-point-circle">
|
|
<span>{{fatePoints}}</span>
|
|
</div>
|
|
{{^aspect}}
|
|
<div class="row sheet-header">
|
|
<span>Consequence</span>
|
|
</div>
|
|
<div class="row">
|
|
<span>{{#charname}}{{charname}} is t{{/charname}}{{^charname}}T{{/charname}}aking a {{worthText}} ({{worth}}) consequence.</span>
|
|
</div>
|
|
{{/aspect}}
|
|
{{#aspect}}
|
|
<div class="row sheet-header">
|
|
<span>{{#isCompel}}Compel{{/isCompel}}{{^isCompel}}Invoke{{/isCompel}} Aspect</span>
|
|
</div>
|
|
<div class="row">
|
|
<span>{{#isCompel}}Compelling{{/isCompel}}{{^isCompel}}Invoking{{/isCompel}} {{#charname}}{{charname}}'s {{/charname}}Aspect "{{aspect}}".</span>
|
|
</div>
|
|
{{/aspect}}
|
|
{{#showInfo}}
|
|
<div class="row sheet-header">
|
|
<span>Info</span>
|
|
</div>
|
|
<div class="row">
|
|
{{^aspect}}
|
|
<p class="sheet-info"><span>Taking a Consequence is how real damage is dealt during a conflict. When you use a consequence slot, you reduce the shift value of the attack by the shift value of the consequence. You can use more than one consequence at a time if they're available. Any of the hit's remaining shifts must be handled by a stress box to avoid being taken out.</span></p>
|
|
{{/aspect}}
|
|
{{#aspect}}
|
|
<p class="sheet-info"><span>Conflict has caused a lasting injury or setback for the character. The character that caused this gets a free Invoke of the aspect but anyone can invoke the aspect against the character if they know it is there.</span></p>
|
|
{{#^rollTotal() isHealing 1}}
|
|
<p class="sheet-info"><span>The wound is still relatively fresh and will need treating soon before things get worse. Treatment and how long the wound can go untreated for scales with its severity.</span></p>
|
|
{{/^rollTotal() isHealing 1}}
|
|
{{#rollTotal() isHealing 1}}
|
|
<p class="sheet-info"><span>The wound has been treated and the character is on the mends but the memory of it still lingers. The wound will be completely healed with time depending on the severity and once gone the consequence slot will be opened up again for use.</span></p>
|
|
{{/rollTotal() isHealing 1}}
|
|
{{#isCompel}}
|
|
<p class="sheet-info">
|
|
<span>Something negative is about to occur due to an Aspect. Discuss the details with the GM and then either accept the Fate Point from the person doing the Compelling, otherwise if it is from the GM pay them a Fate Point to prevent the Compel.</span>
|
|
</p>
|
|
{{/isCompel}}
|
|
{{^isCompel}}
|
|
<p class="sheet-info">Invoking an Aspect costs 1 Fate Point and depending on when it is invoked will change what it does:</p>
|
|
<ul class="sheet-info">
|
|
<li>
|
|
<span>When rolling a Skill, choose one of the following:</span>
|
|
<ul>
|
|
<li>Re-roll the Skill</li>
|
|
<li>Gain two additional shifts (+2) to your roll</li>
|
|
</ul>
|
|
<span>The Aspect has to have something to do with the Skill being rolled. You can stack multiple Invokes on separate Aspects but they all have to make sense as to why they would help.</span>
|
|
</li>
|
|
<li>
|
|
<span>At any other time you can declare a Story Detail that helps you in the scene. Examples are:</span>
|
|
<ul>
|
|
<li><span>"I'm Aspect X, so it makes sense that I've met this NPC in the past"</span></li>
|
|
<li><span>Due to Aspect X, I was smart enough to bring a map of this town before leaving"</span></li>
|
|
<li><span>"I know this language because of my Aspect X"</span></li>
|
|
</ul>
|
|
<span>Work out the detail with the GM and if a decision is reached then pay the Fate Point and the story detail is now fact.</span>
|
|
</li>
|
|
</ul>
|
|
{{/isCompel}}
|
|
{{/aspect}}
|
|
</div>
|
|
{{/showInfo}}
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<script type="text/worker">
|
|
on('sheet:opened', function () {
|
|
getAttrs(["run_firstTime_setup", "default_stressSkills",
|
|
"default_consequences", "show_conditions_flag",
|
|
"importedOldData_flag"], function (values) {
|
|
if (isNullOrWhitespace(values["importedOldData_flag"]))
|
|
{
|
|
ImportIdData();
|
|
ImportSkills();
|
|
ImportAspects();
|
|
ImportStunts();
|
|
ImportExtras();
|
|
ImportStresses(values["run_firstTime_setup"], values["default_stressSkills"]);
|
|
ImportConsequences(values["run_firstTime_setup"],
|
|
values["default_consequences"],
|
|
values["show_conditions_flag"]);
|
|
ImportNotes();
|
|
|
|
setAttrs({ importedOldData_flag: 1, run_firstTime_setup: 0 });
|
|
return;
|
|
}
|
|
if (!isNullOrWhitespace(values["run_firstTime_setup"])) {
|
|
SetDefaultStress(values["default_stressSkills"]);
|
|
SetDefaultConsequences(values["default_consequences"], values["show_conditions_flag"]);
|
|
|
|
setAttrs({ run_firstTime_setup: 0 });
|
|
}
|
|
});
|
|
});
|
|
|
|
function ImportIdData () {
|
|
getAttrs(["Description", "Refresh", "Fate"], function (values) {
|
|
if(isNullOrWhitespace(values["Description"])
|
|
&& isNullOrWhitespace(values["Refresh"]
|
|
&& isNullOrWhitespace(values["Fate"])))
|
|
return;
|
|
|
|
setAttrs({ character_description: values["Description"],
|
|
fatePoints_refresh: Number(values["Refresh"]),
|
|
fatepoints: Number(values["Fate"])
|
|
});
|
|
});
|
|
};
|
|
|
|
function ImportSkills () {
|
|
getAttrs(["LegendaryActive", "EpicActive", "FantasticActive",
|
|
"SuperbActive", "PoorActive", "TerribleActive"], settings => {
|
|
var attrs = [];
|
|
for (var i = 1; i < 9; i++) {
|
|
if (!isNullOrWhitespace(settings["LegendaryActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
attrs.push("Leg" + i);
|
|
if (!isNullOrWhitespace(settings["EpicActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
attrs.push("Epic" + i);
|
|
if (!isNullOrWhitespace(settings["FantasticActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
attrs.push("Fan" + i);
|
|
if (!isNullOrWhitespace(settings["SuperbActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
attrs.push("Sup" + i);
|
|
attrs.push("Great" + i);
|
|
attrs.push("Good" + i);
|
|
attrs.push("Fair" + i);
|
|
attrs.push("Avg" + i);
|
|
if (!isNullOrWhitespace(settings["PoorActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
attrs.push("Poor" + i);
|
|
if (!isNullOrWhitespace(settings["TerribleActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
attrs.push("Ter" + i);
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
for (var i = 1; i < 9; i++) {
|
|
if (!isNullOrWhitespace(settings["LegendaryActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
importSkill(values["Leg" + i], 8);
|
|
if (!isNullOrWhitespace(settings["EpicActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
importSkill(values["Epic" + i], 7);
|
|
if (!isNullOrWhitespace(settings["FantasticActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
importSkill(values["Fan" + i], 6);
|
|
if (!isNullOrWhitespace(settings["SuperbActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
importSkill(values["Sup" + i], 5);
|
|
importSkill(values["Great" + i], 4);
|
|
importSkill(values["Good" + i], 3);
|
|
importSkill(values["Fair" + i], 2);
|
|
importSkill(values["Avg" + i], 1);
|
|
if (!isNullOrWhitespace(settings["PoorActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
importSkill(values["Poor" + i], -1);
|
|
if (!isNullOrWhitespace(settings["TerribleActive"]) || typeof settings["LegendaryActive"] === "undefined")
|
|
importSkill(values["Ter" + i], -2);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
const importSkill = (skill, skillLevel) => {
|
|
if (isNullOrWhitespace(skill))
|
|
return;
|
|
|
|
var newRowId = generateRowID();
|
|
var newRowAttrs = {};
|
|
newRowAttrs["repeating_skills_" + newRowId + "_skill"] = skill;
|
|
newRowAttrs["repeating_skills_" + newRowId + "_shiftLevel"] = skillLevel;
|
|
newRowAttrs["repeating_skills_" + newRowId + "_shiftLevelText"] = getShiftText(skillLevel);
|
|
setAttrs(newRowAttrs);
|
|
};
|
|
|
|
function ImportAspects () {
|
|
var attrs = [];
|
|
attrs.push("HighConcept");
|
|
attrs.push("Trouble");
|
|
attrs.push("AdvantagesActive");
|
|
for (var i = 1; i < 6; i++) {
|
|
attrs.push("HiCon" + i);
|
|
attrs.push("Trouble" + i);
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var hiCon = 0;
|
|
var trbl = 0;
|
|
for (var i = 1; i < 6; i++) {
|
|
if (!isNullOrWhitespace(values["HiCon" + i]))
|
|
hiCon++;
|
|
if (!isNullOrWhitespace(values["Trouble" + i]))
|
|
trbl++;
|
|
}
|
|
|
|
if (hiCon > 0)
|
|
importSitAspect(values["HighConcept"], hiCon);
|
|
if (trbl > 0)
|
|
importSitAspect(values["Trouble"], trbl);
|
|
|
|
if (isNullOrWhitespace(values["AdvantagesActive"]))
|
|
return;
|
|
|
|
getSectionIDs("repeating_Advantages", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
idArray.forEach(id => {
|
|
var attrs = [];
|
|
attrs.push("repeating_Advantages_" + id + "_Advantages");
|
|
for (var i = 1; i < 6; i++) {
|
|
attrs.push("repeating_Advantages_" + id + "_Adv" + i);
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var bonus = 0;
|
|
for (var i = 1; i < 6; i++) {
|
|
if (!isNullOrWhitespace(values["repeating_Advantages_" + id + "_Adv" + i]))
|
|
bonus++;
|
|
}
|
|
|
|
importSitAspect(values["repeating_Advantages_" + id + "_Advantages"], bonus);
|
|
removeRepeatingRow("repeating_Advantages_" + id);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
getSectionIDs("repeating_Aspects", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
idArray.forEach(id => {
|
|
var attrs = [];
|
|
attrs.push("repeating_Aspects_" + id + "_Aspect");
|
|
for (var i = 1; i < 6; i++) {
|
|
attrs.push("repeating_Aspects_" + id + "_Asp" + i);
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var bonus = 0;
|
|
for (var i = 1; i < 6; i++) {
|
|
if (!isNullOrWhitespace(values["repeating_Aspects_" + id + "_Asp" + i]))
|
|
bonus++;
|
|
}
|
|
|
|
var index = idArray.indexOf(id);
|
|
if (index < 3) {
|
|
if (index == 0)
|
|
setAttrs({ aspect_one: values["repeating_Aspects_" + id + "_Aspect"]});
|
|
else if (index == 1)
|
|
setAttrs({ aspect_two: values["repeating_Aspects_" + id + "_Aspect"]});
|
|
else if (index == 2)
|
|
setAttrs({ aspect_three: values["repeating_Aspects_" + id + "_Aspect"]});
|
|
if (bonus > 0)
|
|
importSitAspect(values["repeating_Aspects_" + id + "_Aspect"], bonus);
|
|
}
|
|
else
|
|
importSitAspect(values["repeating_Aspects_" + id + "_Aspect"], bonus);
|
|
|
|
removeRepeatingRow("repeating_Aspects_" + id);
|
|
});
|
|
});
|
|
});
|
|
};
|
|
|
|
const importSitAspect = (aspect, bonus) => {
|
|
if (isNullOrWhitespace(aspect))
|
|
return;
|
|
|
|
var newRowId = generateRowID();
|
|
var newRowAttrs = {};
|
|
newRowAttrs["repeating_situationaspect_" + newRowId + "_aspect_name"] = aspect;
|
|
newRowAttrs["repeating_situationaspect_" + newRowId + "_aspect_free_invokes"] = bonus;
|
|
newRowAttrs["repeating_situationaspect_" + newRowId + "_options_flag"] = "on";
|
|
setAttrs(newRowAttrs);
|
|
};
|
|
|
|
function ImportStunts () {
|
|
getAttrs(["Stunts"], function (values) {
|
|
getSectionIDs("repeating_Stunts", function (idArray) {
|
|
importStunt(values["Stunts"]);
|
|
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_Stunts_" + idArray[i] + "_Stunt");
|
|
}
|
|
|
|
getAttrs(attrs, function (stunts) {
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
importStunt(stunts["repeating_Stunts_" + idArray[i] + "_Stunt"]);
|
|
removeRepeatingRow("repeating_Stunts_" + idArray[i]);
|
|
}
|
|
|
|
setAttrs(newRowAttrs);
|
|
});
|
|
});
|
|
});
|
|
};
|
|
|
|
const importStunt = (stunt) => {
|
|
if (isNullOrWhitespace(stunt))
|
|
return;
|
|
|
|
var newRowId = generateRowID();
|
|
var newRowAttrs = {};
|
|
newRowAttrs["repeating_stunts_" + newRowId + "_description"] = stunt;
|
|
setAttrs(newRowAttrs);
|
|
};
|
|
|
|
function ImportExtras () {
|
|
getAttrs(["Extras"], function (values) {
|
|
getSectionIDs("repeating_Extras", function (idArray) {
|
|
importExtra(values["Extras"]);
|
|
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_Extras_" + idArray[i] + "_Extra");
|
|
}
|
|
|
|
getAttrs(attrs, function (extras) {
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
importExtra(extras["repeating_Extras_" + idArray[i] + "_Extra"]);
|
|
removeRepeatingRow("repeating_Extras_" + idArray[i]);
|
|
}
|
|
|
|
setAttrs(newRowAttrs);
|
|
});
|
|
});
|
|
});
|
|
};
|
|
|
|
const importExtra = (extra) => {
|
|
if (isNullOrWhitespace(extra))
|
|
return;
|
|
|
|
var newRowId = generateRowID();
|
|
var newRowAttrs = {};
|
|
newRowAttrs["repeating_extras_" + newRowId + "_description"] = extra;
|
|
setAttrs(newRowAttrs);
|
|
};
|
|
|
|
function ImportStresses (runFirstTimeSetup, default_stressSkills) {
|
|
var attr = [];
|
|
attr.push("PhyGoverningSkill");
|
|
attr.push("MenGoverningSkill");
|
|
for (var i = 1; i < 5; i++) {
|
|
attr.push("Phy" + i);
|
|
attr.push("Phy" + i + "Active");
|
|
attr.push("Men" + i);
|
|
attr.push("Men" + i + "Active");
|
|
}
|
|
|
|
getAttrs(attr, function (basicValues) {
|
|
var phyGoverningSkill = basicValues["PhyGoverningSkill"];
|
|
if (isNullOrWhitespace(phyGoverningSkill))
|
|
phyGoverningSkill = "Physique";
|
|
|
|
var menGoverningSkill = basicValues["MenGoverningSkill"];
|
|
if (isNullOrWhitespace(menGoverningSkill))
|
|
menGoverningSkill = "Will";
|
|
|
|
getSectionIDs("repeating_Stress", function (idArray) {
|
|
if (idArray.length == 0) {
|
|
importStress("Physical", phyGoverningSkill, "Phy", basicValues);
|
|
importStress("Mental", menGoverningSkill, "Men", basicValues);
|
|
|
|
if (!isNullOrWhitespace(runFirstTimeSetup))
|
|
SetDefaultStress(default_stressSkills);
|
|
|
|
return;
|
|
}
|
|
|
|
var attrs = [];
|
|
idArray.forEach(id => {
|
|
attrs.push("repeating_Stress_" + id + "_Name");
|
|
attrs.push("repeating_Stress_" + id + "_Mirrored");
|
|
for (var x = 1; x < 5; x++) {
|
|
attr.push("repeating_Stress_" + id + "_Stress" + x);
|
|
attr.push("repeating_Stress_" + id + "_Stress" + x + "Active");
|
|
}
|
|
});
|
|
|
|
getAttrs(attrs, function (repValues) {
|
|
var mirrors = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
mirrors.push("repeating_StressOptions_" + repValues["repeating_Stress_" + idArray[i] + "_Mirrored"] + "_GoverningSkill");
|
|
}
|
|
|
|
getAttrs(mirrors, function (mirroredValues) {
|
|
importStress("Physical", phyGoverningSkill, "Phy", basicValues);
|
|
importStress("Mental", menGoverningSkill, "Men", basicValues);
|
|
|
|
idArray.forEach(id => {
|
|
importStress(repValues["repeating_Stress_" + id + "_Name"],
|
|
mirroredValues["repeating_StressOptions_" + repValues["repeating_Stress_" + id + "_Mirrored"] + "_GoverningSkill"],
|
|
"repeating_Stress_" + id + "_Stress", repValues);
|
|
|
|
removeRepeatingRow("repeating_StressOptions_" + repValues["repeating_Stress_" + id + "_Mirrored"]);
|
|
removeRepeatingRow("repeating_Stress_" + id);
|
|
});
|
|
|
|
if (!isNullOrWhitespace(runFirstTimeSetup))
|
|
SetDefaultStress(default_stressSkills);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
};
|
|
|
|
const importStress = (stress, skill, prefix, attrs) => {
|
|
var newRowAttrs = {};
|
|
var stressMax = 0;
|
|
|
|
var newRowId = generateRowID();
|
|
newRowAttrs["repeating_stress_" + newRowId + "_name"] = stress.trim();
|
|
|
|
for (var i = 1; i < 5; i++) {
|
|
if(!isNullOrWhitespace(attrs[prefix + i + "Active"])) {
|
|
stressMax++;
|
|
if(!isNullOrWhitespace(attrs[prefix + i]))
|
|
newRowAttrs["repeating_stress_" + newRowId + "_isUsed" + i] = i;
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
|
|
if (stressMax == 0)
|
|
return;
|
|
|
|
newRowAttrs["repeating_stress_" + newRowId + "_usable"] = stressMax;
|
|
|
|
if (!isNullOrWhitespace(skill)) {
|
|
newRowAttrs["repeating_stress_" + newRowId + "_skill"] = skill.trim();
|
|
newRowAttrs["repeating_stress_" + newRowId + "_bound"] = 1;
|
|
}
|
|
|
|
setAttrs(newRowAttrs);
|
|
};
|
|
|
|
function SetDefaultStress (default_stressSkills) {
|
|
if (!isNullOrWhitespace(default_stressSkills)) {
|
|
getSectionIDs("repeating_stress", function (idArray) {
|
|
if (idArray.length == 0) {
|
|
var stressSkills = default_stressSkills.split(",");
|
|
var newRowAttrs = {};
|
|
stressSkills.forEach(element => {
|
|
var keyValuePair = element.split(":");
|
|
var newRowId = generateRowID();
|
|
newRowAttrs["repeating_stress_" + newRowId + "_name"] = keyValuePair[0].trim();
|
|
if (keyValuePair.length > 1) {
|
|
var skill = keyValuePair[1].trim();
|
|
var usable = Number(skill);
|
|
if (isNaN(usable)) {
|
|
newRowAttrs["repeating_stress_" + newRowId + "_skill"] = skill;
|
|
newRowAttrs["repeating_stress_" + newRowId + "_usable"] = 2;
|
|
newRowAttrs["repeating_stress_" + newRowId + "_bound"] = 1;
|
|
}
|
|
else {
|
|
newRowAttrs["repeating_stress_" + newRowId + "_usable"] = usable;
|
|
newRowAttrs["repeating_stress_" + newRowId + "_bound"] = 0;
|
|
}
|
|
newRowAttrs["repeating_stress_" + newRowId + "_options_flag"] = 0;
|
|
}
|
|
else {
|
|
newRowAttrs["repeating_stress_" + newRowId + "_options_flag"] = "on";
|
|
}
|
|
});
|
|
setAttrs(newRowAttrs);
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
function ImportConsequences (runFirstTimeSetup, default_consequences, show_conditions_flag) {
|
|
var attr = [];
|
|
attr.push("MildConsequence");
|
|
attr.push("MildInvoke");
|
|
attr.push("ModerateConsequence");
|
|
attr.push("ModerateInvoke");
|
|
attr.push("SevereConsequence");
|
|
attr.push("SevereInvoke");
|
|
|
|
getAttrs(attr, function (basicValues) {
|
|
getSectionIDs("repeating_Cons", function (idArray) {
|
|
if (idArray.length == 0) {
|
|
if (isNullOrWhitespace(basicValues["MildConsequence"])
|
|
&& isNullOrWhitespace(basicValues["MildInvoke"])
|
|
&& isNullOrWhitespace(basicValues["ModerateConsequence"])
|
|
&& isNullOrWhitespace(basicValues["ModerateInvoke"])
|
|
&& isNullOrWhitespace(basicValues["SevereConsequence"])
|
|
&& isNullOrWhitespace(basicValues["SevereInvoke"])) {
|
|
if (!isNullOrWhitespace(runFirstTimeSetup))
|
|
SetDefaultConsequences(default_consequences, show_conditions_flag);
|
|
return;
|
|
}
|
|
|
|
importConsequence(2, basicValues["MildConsequence"], !isNullOrWhitespace(basicValues["MildInvoke"]));
|
|
importConsequence(4, basicValues["ModerateConsequence"], !isNullOrWhitespace(basicValues["ModerateInvoke"]));
|
|
importConsequence(6, basicValues["SevereConsequence"], !isNullOrWhitespace(basicValues["SevereInvoke"]));
|
|
return;
|
|
}
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_Cons_" + idArray[i] + "_conType");
|
|
attrs.push("repeating_Cons_" + idArray[i] + "_Consequence");
|
|
attrs.push("repeating_Cons_" + idArray[i] + "_Invoke");
|
|
}
|
|
|
|
getAttrs(attrs, function (repValues) {
|
|
importConsequence(2, basicValues["MildConsequence"], !isNullOrWhitespace(basicValues["MildInvoke"]));
|
|
importConsequence(4, basicValues["ModerateConsequence"], !isNullOrWhitespace(basicValues["ModerateInvoke"]));
|
|
importConsequence(6, basicValues["SevereConsequence"], !isNullOrWhitespace(basicValues["SevereInvoke"]));
|
|
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
var worth = 0;
|
|
switch (repValues["repeating_Cons_" + idArray[i] + "_conType"]) {
|
|
case "Mild":
|
|
worth = 2;
|
|
break;
|
|
case "Moderate":
|
|
worth = 4;
|
|
break;
|
|
case "Severe":
|
|
worth = 6;
|
|
break;
|
|
}
|
|
|
|
importConsequence(worth,
|
|
repValues["repeating_Cons_" + idArray[i] + "_Consequence"],
|
|
!isNullOrWhitespace(repValues["repeating_Cons_" + idArray[i] + "_Invoke"]));
|
|
|
|
removeRepeatingRow("repeating_Cons_" + idArray[i]);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
};
|
|
|
|
const importConsequence = (worth, aspect, addBonus) => {
|
|
if (!isNaN(worth) && worth > 0) {
|
|
var newRowAttrs = {};
|
|
var newRowId = generateRowID();
|
|
newRowAttrs["repeating_consequences_" + newRowId + "_worth"] = worth;
|
|
newRowAttrs["repeating_consequences_" + newRowId + "_aspect"] = aspect;
|
|
newRowAttrs["repeating_consequences_" + newRowId + "_worth_text"] = getConsequenceText(worth);
|
|
|
|
setAttrs(newRowAttrs);
|
|
|
|
if (addBonus)
|
|
importSitAspect(aspect, 1);
|
|
}
|
|
};
|
|
|
|
function SetDefaultConsequences (default_consequences, show_conditions_flag) {
|
|
if (!isNullOrWhitespace(default_consequences)) {
|
|
getSectionIDs("repeating_consequences", function (idArray) {
|
|
if (idArray.length == 0) {
|
|
var consequences = default_consequences.split(",")
|
|
var newRowAttrs = {};
|
|
consequences.forEach(consequence => {
|
|
var elements = consequence.split("|");
|
|
var worth = Number(elements[0].trim());
|
|
if (!isNaN(worth) && worth > 0) {
|
|
var newRowId = generateRowID();
|
|
newRowAttrs["repeating_consequences_" + newRowId + "_worth"] = worth;
|
|
|
|
if (elements.length > 1)
|
|
newRowAttrs["repeating_consequences_" + newRowId + "_aspect"] = elements[1];
|
|
if (show_conditions_flag == "1")
|
|
newRowAttrs["repeating_consequences_" + newRowId + "_worth_text"] = getConditionsText(worth);
|
|
else
|
|
newRowAttrs["repeating_consequences_" + newRowId + "_worth_text"] = getConsequenceText(worth);
|
|
}
|
|
});
|
|
setAttrs(newRowAttrs);
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
function ImportNotes () {
|
|
getAttrs(["Notes"], function (values) {
|
|
if(isNullOrWhitespace(values["Notes"]))
|
|
return;
|
|
|
|
var newRowAttrs = {};
|
|
var newRowId = generateRowID();
|
|
newRowAttrs["repeating_notes_" + newRowId + "_body"] = values["Notes"];
|
|
|
|
setAttrs(newRowAttrs);
|
|
});
|
|
};
|
|
|
|
on("change:repeating_consequences:worth", function (eventInfo) {
|
|
getAttrs(["show_conditions_flag"], function (values) {
|
|
if (!isNullOrWhitespace(values["show_conditions_flag"]))
|
|
setAttrs({ repeating_consequences_worth_text: getConditionsText(Number(eventInfo.newValue)) });
|
|
else
|
|
setAttrs({ repeating_consequences_worth_text: getConsequenceText(Number(eventInfo.newValue)) });
|
|
});
|
|
});
|
|
|
|
on("change:show_conditions_flag", function (eventInfo) {
|
|
getSectionIDs("repeating_consequences", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_consequences_" + idArray[i] + "_worth");
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var newRowAttrs = {};
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
var worth = Number(values["repeating_consequences_" + idArray[i] + "_worth"]);
|
|
if (!isNullOrWhitespace(eventInfo.newValue))
|
|
newRowAttrs["repeating_consequences_" + idArray[i] + "_worth_text"] = getConditionsText(worth);
|
|
else
|
|
newRowAttrs["repeating_consequences_" + idArray[i] + "_worth_text"] = getConsequenceText(worth);
|
|
}
|
|
|
|
setAttrs(newRowAttrs);
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:repeating_skills:skill", function (eventInfo) {
|
|
skillChanged(eventInfo.previousValue, 0);
|
|
getAttrs(["repeating_skills_shiftLevel"], function (values) {
|
|
skillChanged(eventInfo.newValue, Number(values["repeating_skills_shiftLevel"]));
|
|
});
|
|
});
|
|
|
|
on("change:repeating_skills:shiftLevel", function (eventInfo) {
|
|
var skillLevel = Number(eventInfo.newValue);
|
|
setAttrs({ repeating_skills_shiftLevelText: getShiftText(skillLevel) });
|
|
getAttrs(["repeating_skills_skill"], function (values) {
|
|
skillChanged(values["repeating_skills_skill"], skillLevel);
|
|
});
|
|
});
|
|
|
|
on("clicked:addSkill8", function () {
|
|
createSkill(8);
|
|
});
|
|
|
|
on("clicked:removeSkill8", function () {
|
|
removeSkill(8);
|
|
});
|
|
|
|
on("clicked:addSkill7", function () {
|
|
createSkill(7);
|
|
});
|
|
|
|
on("clicked:removeSkill7", function () {
|
|
removeSkill(7);
|
|
});
|
|
|
|
on("clicked:addSkill6", function () {
|
|
createSkill(6);
|
|
});
|
|
|
|
on("clicked:removeSkill6", function () {
|
|
removeSkill(6);
|
|
});
|
|
|
|
on("clicked:addSkill5", function () {
|
|
createSkill(5);
|
|
});
|
|
|
|
on("clicked:removeSkill5", function () {
|
|
removeSkill(5);
|
|
});
|
|
|
|
on("clicked:addSkill4", function () {
|
|
createSkill(4);
|
|
});
|
|
|
|
on("clicked:removeSkill4", function () {
|
|
removeSkill(4);
|
|
});
|
|
|
|
on("clicked:addSkill3", function () {
|
|
createSkill(3);
|
|
});
|
|
|
|
on("clicked:removeSkill3", function () {
|
|
removeSkill(3);
|
|
});
|
|
|
|
on("clicked:addSkill2", function () {
|
|
createSkill(2);
|
|
});
|
|
|
|
on("clicked:removeSkill2", function () {
|
|
removeSkill(2);
|
|
});
|
|
|
|
on("clicked:addSkill1", function () {
|
|
createSkill(1);
|
|
});
|
|
|
|
on("clicked:removeSkill1", function () {
|
|
removeSkill(1);
|
|
});
|
|
|
|
on("clicked:addSkill0", function () {
|
|
createSkill(0);
|
|
});
|
|
|
|
on("clicked:removeSkill0", function () {
|
|
removeSkill(0);
|
|
});
|
|
|
|
on("clicked:addSkillN1", function () {
|
|
createSkill(-1);
|
|
});
|
|
|
|
on("clicked:removeSkillN1", function () {
|
|
removeSkill(-1);
|
|
});
|
|
|
|
on("clicked:addSkillN2", function () {
|
|
createSkill(-2);
|
|
});
|
|
|
|
on("clicked:removeSkillN2", function () {
|
|
removeSkill(-2);
|
|
});
|
|
|
|
on("change:repeating_stunts:skill", function (eventInfo) {
|
|
getSectionIDs("repeating_skills", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_skills_" + idArray[i] + "_skill");
|
|
attrs.push("repeating_skills_" + idArray[i] + "_shiftLevel");
|
|
attrs.push("repeating_skills_" + idArray[i] + "_shiftLevelText");
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var skillShiftLevel = 0;
|
|
var skillShiftLevelText = getShiftText(0);
|
|
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
if (values["repeating_skills_" + idArray[i] + "_skill"] == eventInfo.newValue) {
|
|
skillShiftLevel = values["repeating_skills_" + idArray[i] + "_shiftLevel"];
|
|
skillShiftLevelText = values["repeating_skills_" + idArray[i] + "_shiftLevelText"];
|
|
break;
|
|
}
|
|
}
|
|
|
|
setAttrs({
|
|
repeating_stunts_skillShiftLevel: skillShiftLevel,
|
|
repeating_stunts_skillShiftLevelText: skillShiftLevelText
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:repeating_stunts:bonusShifts", function (eventInfo) {
|
|
var description = getShiftText(Number(eventInfo.newValue));
|
|
setAttrs({ repeating_stunts_bonusShiftsText: description });
|
|
});
|
|
|
|
on("change:repeating_stunts:type", function (eventInfo) {
|
|
var description;
|
|
switch (Number(eventInfo.newValue)) {
|
|
case 1:
|
|
description = "New Action to Skill";
|
|
break;
|
|
case 2:
|
|
description = "Bonus to Action";
|
|
break;
|
|
default:
|
|
description = "Rules Exception";
|
|
break;
|
|
}
|
|
setAttrs({ repeating_stunts_typeText: description });
|
|
|
|
if (Number(eventInfo.newValue) == 2) {
|
|
getAttrs(["repeating_stunts_bonusShifts"], function (values) {
|
|
if (isNullOrWhitespace(values["repeating_stunts_bonusShifts"])) {
|
|
var description = getShiftText(2);
|
|
setAttrs({ repeating_stunts_bonusShiftsText: description, repeating_stunts_bonusShifts: 2 });
|
|
}
|
|
else {
|
|
var description = getShiftText(Number(values["repeating_stunts_bonusShifts"]));
|
|
setAttrs({ repeating_stunts_bonusShiftsText: description });
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
on("change:repeating_stress:skill", function (eventInfo) {
|
|
getSectionIDs("repeating_skills", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_skills_" + idArray[i] + "_skill");
|
|
attrs.push("repeating_skills_" + idArray[i] + "_shiftLevel");
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var stressMax;
|
|
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
if (values["repeating_skills_" + idArray[i] + "_skill"] == eventInfo.newValue) {
|
|
var skillShiftLevel = Number(values["repeating_skills_" + idArray[i] + "_shiftLevel"]);
|
|
stressMax = getStressMax(skillShiftLevel);
|
|
}
|
|
}
|
|
|
|
if (stressMax != null) {
|
|
setAttrs({ repeating_stress_usable: stressMax, repeating_stress_bound: 1 });
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:repeating_stress:usable", function (eventInfo) {
|
|
if (eventInfo.sourceType != "sheetworker")
|
|
setAttrs({ repeating_stress_bound: 0 });
|
|
});
|
|
|
|
on("clicked:clearStress", function () {
|
|
getSectionIDs("repeating_stress", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var editAttrs = {};
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
for (var x = 1; x < 9; x++) {
|
|
editAttrs["repeating_stress_" + idArray[i] + "_isUsed" + x] = "";
|
|
}
|
|
}
|
|
|
|
setAttrs(editAttrs);
|
|
});
|
|
});
|
|
|
|
function getShiftText(shiftLevel) {
|
|
switch (shiftLevel) {
|
|
case 8:
|
|
return "Legendary";
|
|
case 7:
|
|
return "Epic";
|
|
case 6:
|
|
return "Fantastic";
|
|
case 5:
|
|
return "Superb";
|
|
case 4:
|
|
return "Great";
|
|
case 3:
|
|
return "Good";
|
|
case 2:
|
|
return "Fair";
|
|
case 1:
|
|
return "Average";
|
|
case 0:
|
|
return "Mediocre";
|
|
case -1:
|
|
return "Poor";
|
|
case -2:
|
|
return "Terrible";
|
|
}
|
|
|
|
if (shiftLevel > 8) {
|
|
return "Legendary+" + (shiftLevel - 8);
|
|
}
|
|
if (shiftLevel < -2) {
|
|
return "Terrible" + (shiftLevel + 2);
|
|
}
|
|
|
|
return "";
|
|
};
|
|
|
|
function getConsequenceText(worth) {
|
|
switch (Number(worth)) {
|
|
case 2:
|
|
return "Mild";
|
|
case 4:
|
|
return "Moderate";
|
|
case 6:
|
|
return "Severe";
|
|
case 8:
|
|
return "Extreme";
|
|
default:
|
|
return "Custom";
|
|
}
|
|
};
|
|
|
|
function getConditionsText(worth) {
|
|
switch (Number(worth)) {
|
|
case 1:
|
|
return "Fleeting";
|
|
case 2:
|
|
return "Sticky";
|
|
case 4:
|
|
return "Lasting";
|
|
default:
|
|
return "Custom";
|
|
}
|
|
};
|
|
|
|
function getStressMax(skillShiftLevel) {
|
|
if (skillShiftLevel < 1) {
|
|
return 2;
|
|
}
|
|
|
|
if (skillShiftLevel < 3) {
|
|
return 3;
|
|
}
|
|
|
|
return 4;
|
|
};
|
|
|
|
const createSkill = (skillLevel) => {
|
|
var newRowId = generateRowID();
|
|
var newRowAttrs = {};
|
|
newRowAttrs["repeating_skills_" + newRowId + "_shiftLevel"] = skillLevel;
|
|
newRowAttrs["repeating_skills_" + newRowId + "_shiftLevelText"] = getShiftText(skillLevel);
|
|
setAttrs(newRowAttrs);
|
|
};
|
|
|
|
const removeSkill = (skillLevel) => {
|
|
getSectionIDs("repeating_skills", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_skills_" + idArray[i] + "_skill");
|
|
attrs.push("repeating_skills_" + idArray[i] + "_shiftLevel");
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var lastRowId;
|
|
var lastSkill;
|
|
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
if (Number(values["repeating_skills_" + idArray[i] + "_shiftLevel"]) == skillLevel) {
|
|
lastRowId = idArray[i];
|
|
lastSkill = values["repeating_skills_" + idArray[i] + "_skill"]
|
|
}
|
|
}
|
|
|
|
if (lastRowId != null) {
|
|
removeRepeatingRow("repeating_skills_" + lastRowId);
|
|
skillChanged(lastSkill, 0);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
const skillChanged = (skill, skillLevel) => {
|
|
if (isNullOrWhitespace(skill))
|
|
return;
|
|
|
|
if (skillLevel == null || isNaN(skillLevel))
|
|
skillLevel = 0;
|
|
|
|
var skillLevelDesc = getShiftText(skillLevel);
|
|
|
|
//adjust Stunts
|
|
getSectionIDs("repeating_stunts", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_stress_" + idArray[i] + "_skill");
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var editAttrs = {};
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
if (!isNullOrWhitespace(values["repeating_stress_" + idArray[i] + "_bound"])
|
|
&& values["repeating_stress_" + idArray[i] + "_skill"] == skill) {
|
|
editAttrs["repeating_stress_" + idArray[i] + "_shiftLevel"] = skillLevel;
|
|
editAttrs["repeating_stress_" + idArray[i] + "_shiftLevelText"] = skillLevelDesc;
|
|
}
|
|
}
|
|
|
|
setAttrs(editAttrs);
|
|
});
|
|
});
|
|
|
|
//adjust Stress
|
|
getSectionIDs("repeating_stress", function (idArray) {
|
|
if (idArray.length == 0)
|
|
return;
|
|
|
|
var attrs = [];
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
attrs.push("repeating_stress_" + idArray[i] + "_skill");
|
|
attrs.push("repeating_stress_" + idArray[i] + "_bound");
|
|
}
|
|
|
|
getAttrs(attrs, function (values) {
|
|
var editAttrs = {};
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
if (!isNullOrWhitespace(values["repeating_stress_" + idArray[i] + "_bound"])
|
|
&& values["repeating_stress_" + idArray[i] + "_skill"] == skill) {
|
|
editAttrs["repeating_stress_" + idArray[i] + "_usable"] = getStressMax(skillLevel);
|
|
}
|
|
}
|
|
|
|
setAttrs(editAttrs);
|
|
});
|
|
});
|
|
}
|
|
|
|
const isNullOrWhitespace = (attr) => !(attr && (attr.trim ? attr.trim() && attr.trim() != "0" : attr > 0));
|
|
</script>
|
|
|
|
|
|
|
|
|