1550 lines
82 KiB
HTML
1550 lines
82 KiB
HTML
<div class="sheet-body">
|
|
<input type="hidden" name="attr_fiche_type" value="pj" />
|
|
<input type="hidden" name="attr_section" value="1" />
|
|
<input id="section-1" type="radio" name="attr_section" value="1" hidden />
|
|
<input id="section-2" type="radio" name="attr_section" value="2" hidden />
|
|
<input id="section-3" type="radio" name="attr_section" value="3" hidden />
|
|
<input class="sheet-option-btn" type="checkbox" name="options_show" />
|
|
<span></span>
|
|
<div class="sheet-options">
|
|
<h2>Options</h2>
|
|
<label for="attr_fiche_type"
|
|
>Type de fiche :
|
|
<select id="attr_fiche_type" name="attr_fiche_type">
|
|
<option value="pj">PJ</option>
|
|
<option value="pnj">PNJ</option>
|
|
</select>
|
|
</label>
|
|
<label for="attr_privaterolls"
|
|
>Chuchoter au MJ
|
|
<select class="sheet-opt-field" name="attr_privaterolls">
|
|
<option value="/w gm " data-i18n="oui-toujours">Oui (Toujours)</option>
|
|
<option value=" " data-i18n="non-jamais">Non (Jamais)</option>
|
|
<option value="?{Chuchoter au MJ ?|Oui,/w gm |Non,}" data-i18n="demander-oui-par-defaut">
|
|
Demander (Oui par défaut)
|
|
</option>
|
|
<option value="?{Chuchoter au MJ ?|Non,|Oui,/w gm }" data-i18n="demander-non-par-defaut">
|
|
Demander (Non par défaut)
|
|
</option>
|
|
</select>
|
|
</label>
|
|
<button type="action" name="act_generage_default_skills">Générer les compétences par défaut</button>
|
|
<button type="action" name="act_generage_default_talents">Générer les talents par défaut</button>
|
|
</div>
|
|
<div class="sheet-fiche">
|
|
<div class="sheet-general-informations">
|
|
<img class="sheet-character-avatar" name="attr_character_token" />
|
|
<div class="sheet-character-informations">
|
|
<div>
|
|
<div class="sheet-input-field">
|
|
<span>Nom</span>
|
|
<input name="attr_character_name" type="text" title="@{character_name}" />
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-input-field">
|
|
<span>Race</span>
|
|
<input name="attr_race" type="text" title="@{race}" />
|
|
</div>
|
|
<div class="sheet-input-field sheet-input-field-age">
|
|
<span>Age</span>
|
|
<input name="attr_age" type="text" title="@{age}" />
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-input-field sheet-input-field-level">
|
|
<span>Niveau</span>
|
|
<input class="sheet-text-center" value="1" name="attr_level" type="text" title="@{level}" />
|
|
</div>
|
|
<div class="sheet-input-field sheet-input-field-experience">
|
|
<span>Experience</span>
|
|
<input class="sheet-text-center" name="attr_experience" type="text" title="@{experience}" />
|
|
<span>/</span>
|
|
<input
|
|
class="sheet-text-center"
|
|
name="attr_experience_required"
|
|
type="text"
|
|
title="@{experience_required}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-caracteristiques">
|
|
<div>
|
|
<div>
|
|
<button class="sheet-button-roll" name="act_strength" type="action">
|
|
<span class="sheet-field-name">Force</span>
|
|
<input type="text" name="attr_strength_name" value="Force" hidden />
|
|
</button>
|
|
</div>
|
|
<div>
|
|
<input value="4" name="attr_strength" type="text" title="@{strength}" />
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
<button class="sheet-button-roll" name="act_dexterity" type="action">
|
|
<span class="sheet-field-name">Dextérité</span>
|
|
<input type="text" name="attr_dexterity_name" value="Dextérité" hidden />
|
|
</button>
|
|
</div>
|
|
<div>
|
|
<input value="4" name="attr_dexterity" type="text" title="@{dexterity}" />
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
<button class="sheet-button-roll" name="act_endurance" type="action">
|
|
<span class="sheet-field-name">Endurance</span>
|
|
<input type="text" name="attr_endurance_name" value="@{endurance}" hidden />
|
|
</button>
|
|
</div>
|
|
<div>
|
|
<input value="4" name="attr_endurance" type="text" title="@{endurance}" />
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
<button class="sheet-button-roll" name="act_intelligence" type="action">
|
|
<span class="sheet-field-name">Intelligence</span>
|
|
<input type="text" name="attr_intelligence_name" value="@{intelligence}" hidden />
|
|
</button>
|
|
</div>
|
|
<div>
|
|
<input value="4" name="attr_intelligence" type="text" title="@{intelligence}" />
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
<button class="sheet-button-roll" name="act_charisma" type="action">
|
|
<span class="sheet-field-name">Charisme</span>
|
|
<input type="text" name="attr_charisma_name" value="Charisme" hidden />
|
|
</button>
|
|
</div>
|
|
<div>
|
|
<input value="4" name="attr_charisma" type="text" title="@{charisma}" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-character-status">
|
|
<div>
|
|
<div class="sheet-s-50">
|
|
<input name="attr_wounds" type="text" title="@{wounds}" value="0" />
|
|
</div>
|
|
<span>Blessures</span>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-s-65">
|
|
<input value="0" name="attr_dv" type="text" title="@{dv}" />
|
|
</div>
|
|
<span>Dés de soin</span>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-s-80">
|
|
<input value="0" name="attr_hp" type="text" title="@{hp}" />
|
|
<div>
|
|
<input value="0" name="attr_hp_temp" type="text" title="@{hp_temp}" />
|
|
<span>Temp.</span>
|
|
</div>
|
|
<div>
|
|
<input name="attr_hp_max" type="text" title="@{hp_max}" value="(@{endurance}*3)" disabled />
|
|
<span>Max.</span>
|
|
</div>
|
|
</div>
|
|
<span>Points de vie</span>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-s-65">
|
|
<input value="0" name="attr_armor" type="text" title="@{armor}" />
|
|
<div>
|
|
<input value="0" name="attr_shield" type="text" title="@{shield}" />
|
|
<span>Bouclier</span>
|
|
</div>
|
|
<div>
|
|
<input value="0" name="attr_armor_other" type="text" title="@{armor_other}" />
|
|
<span>Autre</span>
|
|
</div>
|
|
</div>
|
|
<span>Armure</span>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-s-50">
|
|
<input name="attr_speed" type="text" title="@{speed}" value="9" />
|
|
</div>
|
|
<span>Vitesse</span>
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
<div class="sheet-section-buttons" data-section-id>
|
|
<label for="section-1">Attaques & Maîtrises</label>
|
|
<label for="section-2">Talents</label>
|
|
<label for="section-3">Inventaire & Équipement</label>
|
|
</div>
|
|
<div class="sheet-sections-container" data-section-id="|1|2|" data-section-pnj>
|
|
<div class="sheet-section sheet-display-repcontrol" data-section-id="|1|2|" data-section-pnj>
|
|
<div class="sheet-section-title">
|
|
<h2>Compétences</h2>
|
|
</div>
|
|
<div>
|
|
<fieldset class="repeating_skills">
|
|
<div class="sheet-skill-section">
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-link">
|
|
<select name="attr_link1">
|
|
<option value="@{strength}">FOR</option>
|
|
<option value="@{dexterity}">DEX</option>
|
|
<option value="@{endurance}">END</option>
|
|
<option value="@{intelligence}">INT</option>
|
|
<option value="@{charisma}">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_link2">
|
|
<option value="@{strength}">FOR</option>
|
|
<option value="@{dexterity}">DEX</option>
|
|
<option value="@{endurance}">END</option>
|
|
<option value="@{intelligence}">INT</option>
|
|
<option value="@{charisma}">CHA</option>
|
|
</select>
|
|
</div>
|
|
<input
|
|
class="sheet-mastery-value"
|
|
name="attr_mastery"
|
|
type="text"
|
|
title="@{mastery}"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
<div class="sheet-sections-container-col">
|
|
<div class="sheet-section sheet-display-repcontrol" data-section-id="|1|" data-section-pnj>
|
|
<div class="sheet-section-title">
|
|
<h2>Maîtrises</h2>
|
|
</div>
|
|
<div>
|
|
<fieldset class="repeating_masteries">
|
|
<div class="sheet-skill-section">
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input list="masteries-list" type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-link">
|
|
<select name="attr_link1">
|
|
<option value="@{strength}">FOR</option>
|
|
<option value="@{dexterity}">DEX</option>
|
|
<option value="@{endurance}">END</option>
|
|
<option value="@{intelligence}">INT</option>
|
|
<option value="@{charisma}">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_link2">
|
|
<option value="@{strength}">FOR</option>
|
|
<option value="@{dexterity}">DEX</option>
|
|
<option value="@{endurance}">END</option>
|
|
<option value="@{intelligence}">INT</option>
|
|
<option value="@{charisma}">CHA</option>
|
|
</select>
|
|
</div>
|
|
<input
|
|
class="sheet-mastery-bonus"
|
|
name="attr_mastery_bonus"
|
|
type="text"
|
|
title="@{mastery_bonus}"
|
|
value="0"
|
|
/>
|
|
<input
|
|
class="sheet-mastery-value"
|
|
name="attr_mastery"
|
|
type="text"
|
|
title="@{mastery}"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<hr data-section-id="|1|" data-section-pnj />
|
|
<div class="sheet-section sheet-display-repcontrol" data-section-id="|1|" data-section-pnj>
|
|
<div class="sheet-section-title">
|
|
<h2>Attaques</h2>
|
|
</div>
|
|
<div>
|
|
<fieldset class="repeating_attacks">
|
|
<div class="sheet-attack-section sheet-option-btn-container">
|
|
<input type="hidden" name="attr_extended" />
|
|
<div class="sheet-skill-section">
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
name="attr_attack"
|
|
type="text"
|
|
title="@{attack}"
|
|
value="1d4"
|
|
/>
|
|
<input
|
|
class="sheet-option-btn sheet-extend-btn"
|
|
type="checkbox"
|
|
name="attr_extended"
|
|
/>
|
|
<span></span>
|
|
</div>
|
|
<div class="sheet-extended-attack-section">
|
|
<div class="sheet-input-field sheet-description-field">
|
|
<span>Description</span>
|
|
<textarea
|
|
name="attr_attack_description"
|
|
title="@{attack_description}"
|
|
></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<hr data-section-pnj />
|
|
<div class="sheet-section sheet-pnj-notes" data-section-pnj>
|
|
<div class="sheet-notes-section">
|
|
<div class="sheet-section-title">
|
|
<h2>Notes</h2>
|
|
</div>
|
|
<textarea name="attr_notes"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-section" data-section-id="|2|">
|
|
<div class="sheet-section-title">
|
|
<h2>Talents</h2>
|
|
</div>
|
|
<div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_handicraft"
|
|
name="attr_expend_handicraft"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_handicraft">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents d'artisanat
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_handicraft_link1">
|
|
<option value="strength">FOR</option>
|
|
<option selected value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_handicraft_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option selected value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-handicraft">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_handicraft_link1}+@{talent_handicraft_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="handicraft" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_secret"
|
|
name="attr_expend_secret"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_secret">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents d'archiviste
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_secret_link1">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option selected value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_secret_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option selected value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-secret">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_secret_link1}+@{talent_secret_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="secret" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_stealth"
|
|
name="attr_expend_stealth"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_stealth">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents de furtivité
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_stealth_link1">
|
|
<option value="strength">FOR</option>
|
|
<option selected value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_stealth_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option selected value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-stealth">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_stealth_link1}+@{talent_stealth_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="stealth" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_dressage"
|
|
name="attr_expend_dressage"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_dressage">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents de dressage
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_dressage_link1">
|
|
<option selected value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_dressage_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option selected value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-dressage">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_dressage_link1}+@{talent_dressage_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="dressage" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_larceny"
|
|
name="attr_expend_larceny"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_larceny">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents de larcin
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_larceny_link1">
|
|
<option value="strength">FOR</option>
|
|
<option selected value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_larceny_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option selected value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-larceny">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_larceny_link1}+@{talent_larceny_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="larceny" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_language"
|
|
name="attr_expend_language"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_language">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents linguistiques
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_language_link1">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option selected value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_language_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option selected value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-language">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_language_link1}+@{talent_language_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="language" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_maneuver"
|
|
name="attr_expend_maneuver"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_maneuver">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents de manoeuvrabilité
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_maneuver_link1">
|
|
<option value="strength">FOR</option>
|
|
<option selected value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_maneuver_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option selected value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-maneuver">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_maneuver_link1}+@{talent_maneuver_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="maneuver" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_psychology"
|
|
name="attr_expend_psychology"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_psychology">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents de psychologie
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_psychology_link1">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option selected value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_psychology_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option selected value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-psychology">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_psychology_link1}+@{talent_psychology_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="psychology" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_survival"
|
|
name="attr_expend_survival"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_survival">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Talents de survie
|
|
</h3>
|
|
</label>
|
|
<div class="sheet-link">
|
|
<select name="attr_talent_survival_link1">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option selected value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_talent_survival_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option selected value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-survival">
|
|
<div class="sheet-skill-section">
|
|
<input
|
|
type="hidden"
|
|
name="attr_talent_links"
|
|
value="@{talent_survival_link1}+@{talent_survival_link2}"
|
|
disabled
|
|
/>
|
|
<input type="text" name="attr_talent_name" value="survival" hidden />
|
|
<button class="sheet-button-roll" name="act_roll" type="action"></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input type="checkbox" name="attr_skill_mastered" title="@{skill_mastered}" />
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input type="hidden" name="attr_mastery_max" value="@{mastery_max}" disabled />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-talent-container sheet-display-repcontrol">
|
|
<input
|
|
class="sheet-expand-talent-btn"
|
|
type="checkbox"
|
|
id="attr_expend_other"
|
|
name="attr_expend_other"
|
|
hidden
|
|
/>
|
|
<div class="sheet-talent-title">
|
|
<label for="attr_expend_other">
|
|
<h3>
|
|
<span class="material-icons sheet-expend-icon">expand_more</span>
|
|
<span class="material-icons sheet-retract-icon">expand_less</span>
|
|
Autres
|
|
</h3>
|
|
</label>
|
|
</div>
|
|
<div class="sheet-talent-list">
|
|
<fieldset class="repeating_talent-other">
|
|
<div class="sheet-talent-other sheet-option-btn-container">
|
|
<div class="sheet-skill-section">
|
|
<input type="hidden" name="attr_extended" />
|
|
<div>
|
|
<button
|
|
class="sheet-button-roll"
|
|
name="act_roll"
|
|
type="action"
|
|
></button>
|
|
<input type="text" name="attr_skillname" value="" />
|
|
<div class="sheet-skill-xp">
|
|
<input type="text" name="attr_skill_xp" value="0" />/1000
|
|
</div>
|
|
<input
|
|
type="checkbox"
|
|
name="attr_skill_mastered"
|
|
title="@{skill_mastered}"
|
|
/>
|
|
<input
|
|
class="sheet-mastery-value"
|
|
type="text"
|
|
name="attr_mastery"
|
|
value="@{mastery}%"
|
|
disabled
|
|
/>
|
|
<input
|
|
type="hidden"
|
|
name="attr_mastery_max"
|
|
value="@{mastery_max}"
|
|
disabled
|
|
/>
|
|
</div>
|
|
<div class="sheet-link">
|
|
<select name="attr_link1">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option selected value="endurance">END</option>
|
|
<option value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
/
|
|
<select name="attr_link2">
|
|
<option value="strength">FOR</option>
|
|
<option value="dexterity">DEX</option>
|
|
<option value="endurance">END</option>
|
|
<option selected value="intelligence">INT</option>
|
|
<option value="charisma">CHA</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<input
|
|
class="sheet-option-btn sheet-extend-btn"
|
|
type="checkbox"
|
|
name="attr_extended"
|
|
/>
|
|
<span></span>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-sections-container sheet-inventory-sections-container" data-section-id="|3|">
|
|
<div class="sheet-inventory-container">
|
|
<div class="sheet-inventory-section">
|
|
<h3>Inventaire</h3>
|
|
<textarea name="attr_inventory"></textarea>
|
|
</div>
|
|
<div class="sheet-money-section">
|
|
<label class="sheet-currency-input" title="Pièce de platine">
|
|
<input type="text" name="attr_currency_pp" />
|
|
<span>PP</span>
|
|
</label>
|
|
<label class="sheet-currency-input" title="Pièce d'or">
|
|
<input type="text" name="attr_currency_po" />
|
|
<span>PO</span>
|
|
</label>
|
|
<label class="sheet-currency-input" title="Pièce d'argent">
|
|
<input type="text" name="attr_currency_pa" />
|
|
<span>PA</span>
|
|
</label>
|
|
<label class="sheet-currency-input" title="Pièce de cuivre">
|
|
<input type="text" name="attr_currency_pc" />
|
|
<span>PC</span>
|
|
</label>
|
|
</div>
|
|
<div class="sheet-equipment-section">
|
|
<h3>Équipement</h3>
|
|
<textarea name="attr_equipment"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-notes-section">
|
|
<h3>Notes</h3>
|
|
<textarea name="attr_notes"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<datalist id="masteries-list">
|
|
<option value="Armes légères"></option>
|
|
<option value="Armes intermédiaires"></option>
|
|
<option value="Armes lourdes"></option>
|
|
<option value="Armes colossales"></option>
|
|
<option value="Armes improvisées"></option>
|
|
<option value="Sans armes"></option>
|
|
<option value="Armes de jet"></option>
|
|
<option value="Armes à projectiles"></option>
|
|
<option value="Armes à distance colossales"></option>
|
|
<option value="Détermination"></option>
|
|
<option value="Inspiration"></option>
|
|
<option value="Abjuration"></option>
|
|
<option value="Conjuration"></option>
|
|
<option value="Divination"></option>
|
|
<option value="Enchantement"></option>
|
|
<option value="Evocation"></option>
|
|
<option value="Illusion"></option>
|
|
<option value="Nécromancie"></option>
|
|
<option value="Transmutation"></option>
|
|
</datalist>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-rt1">
|
|
<div
|
|
class="sheet-rt1-container"
|
|
style="background-color: #fcf8f2; border: 2px solid #a69c73; padding: 5px; color: #3e3431"
|
|
>
|
|
<h1 style="color: #3e3431">{{name}}</h1>
|
|
<h2 style="color: #3e3431; border-bottom: 2px solid rgba(62, 52, 49, 0.2)">{{character_name}}</h2>
|
|
{{#description}}
|
|
<div>{{description}}</div>
|
|
{{/description}} {{#damageRolled}}
|
|
<div class="sheet-rt1-rollvalue">
|
|
<span>Dégâts: <span>{{damageRolled}}</span></span>
|
|
</div>
|
|
{{/damageRolled}} {{#successLevel}}
|
|
<div class="sheet-rt1-success">
|
|
{{#rollTotal() computed::successLevel 0}}
|
|
<div></div>
|
|
{{/rollTotal() computed::successLevel 0}}
|
|
<span class="sheet-rt1-success-level">{{success0}}</span>
|
|
{{#rollTotal() computed::successLevel 1}}
|
|
<div></div>
|
|
{{/rollTotal() computed::successLevel 1}}
|
|
<span class="sheet-rt1-success-level">{{success1}}</span>
|
|
{{#rollTotal() computed::successLevel 2}}
|
|
<div></div>
|
|
{{/rollTotal() computed::successLevel 2}}
|
|
<span class="sheet-rt1-success-level">{{success2}}</span>
|
|
{{#rollTotal() computed::successLevel 3}}
|
|
<div></div>
|
|
{{/rollTotal() computed::successLevel 3}}
|
|
<span class="sheet-rt1-success-level">{{success3}}</span>
|
|
{{#rollTotal() computed::successLevel 4}}
|
|
<div></div>
|
|
{{/rollTotal() computed::successLevel 4}}
|
|
<span class="sheet-rt1-success-level">{{success4}}</span>
|
|
</div>
|
|
{{/successLevel}}
|
|
<div class="sheet-rt1-roll">
|
|
<div>{{roll}}</div>
|
|
</div>
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<script type="text/worker">
|
|
(function () {
|
|
const skills = [
|
|
{
|
|
name: "Acrobatie",
|
|
links: ["dexterity", "endurance"],
|
|
},
|
|
{
|
|
name: "Artisanat / Construire",
|
|
links: ["dexterity", "intelligence"],
|
|
talent_name: "Talents d'artisanat",
|
|
repeating_section_name: "handicraft",
|
|
talents: [
|
|
"Alchimie",
|
|
"Cuisine",
|
|
"Forge",
|
|
"Couture",
|
|
"Travail du cuir",
|
|
"Thaumaturgie",
|
|
"Artisan trappeur",
|
|
],
|
|
},
|
|
{
|
|
name: "Athlétisme",
|
|
links: ["strength", "endurance"],
|
|
},
|
|
{
|
|
name: "Combat rapproché",
|
|
links: ["strength", "dexterity"],
|
|
talent_name: "Talents de combat rapproché",
|
|
//repeating_section_name: "cac",
|
|
talents: ["Armes légères", "Armes intermédiaires", "Armes lourdes", "Armes colossales"],
|
|
},
|
|
{
|
|
name: "Combat à distance",
|
|
links: ["dexterity", "intelligence"],
|
|
talent_name: "Talents de combat à distance",
|
|
//repeating_section_name: "range",
|
|
talents: ["Armes de jets", "Armes à projectiles", "Armes à distance colossales"],
|
|
},
|
|
{
|
|
name: "Connaissance des secrets",
|
|
links: ["intelligence", "charisma"],
|
|
talent_name: "Talents d'archiviste",
|
|
repeating_section_name: "secret",
|
|
talents: ["Religion", "Arcane", "Histoire"],
|
|
},
|
|
{
|
|
name: "Connaissance de la nature",
|
|
links: ["dexterity", "intelligence"],
|
|
},
|
|
{
|
|
name: "Discrétion",
|
|
links: ["dexterity", "charisma"],
|
|
talent_name: "Talents de furtivité",
|
|
repeating_section_name: "stealth",
|
|
talents: ["Camouflage", "Filature"],
|
|
},
|
|
{
|
|
name: "Dressage",
|
|
links: ["strength", "charisma"],
|
|
talent_name: "Talents de dressage",
|
|
repeating_section_name: "dressage",
|
|
talents: ["Domptage", "Apprivoisement"],
|
|
},
|
|
{
|
|
name: "Esquiver",
|
|
links: ["dexterity", "intelligence"],
|
|
},
|
|
{
|
|
name: "Intimider",
|
|
links: ["strength", "charisma"],
|
|
},
|
|
{
|
|
name: "Larcin",
|
|
links: ["dexterity", "intelligence"],
|
|
talent_name: "Talents de larcin",
|
|
repeating_section_name: "larceny",
|
|
talents: ["Crochetage", "Vol à la tire", "Désamorçage"],
|
|
},
|
|
{
|
|
name: "Lire/Ecrire",
|
|
links: ["intelligence", "charisma"],
|
|
talent_name: "Talents linguistiques",
|
|
repeating_section_name: "language",
|
|
talents: [
|
|
"Langue commune",
|
|
"Langue runique",
|
|
"Langue elfique",
|
|
"Langue orc",
|
|
"Langue sacrée",
|
|
"Langue draconique",
|
|
"Langue elfique ancienne",
|
|
],
|
|
},
|
|
{
|
|
name: "Manoeuvrer",
|
|
links: ["dexterity", "endurance"],
|
|
talent_name: "Talents de manoeuvrabilité",
|
|
repeating_section_name: "maneuver",
|
|
talents: ["Equitation", "Armes de siège", "Navigation"],
|
|
},
|
|
{
|
|
name: "Médecine",
|
|
links: ["intelligence", "endurance"],
|
|
},
|
|
{
|
|
name: "Mentir / Convaincre",
|
|
links: ["intelligence", "charisma"],
|
|
},
|
|
{
|
|
name: "Perception",
|
|
links: ["intelligence", "charisma"],
|
|
},
|
|
{
|
|
name: "Psychologie",
|
|
links: ["endurance", "intelligence"],
|
|
talent_name: "Talents de psychologie",
|
|
repeating_section_name: "psychology",
|
|
talents: ["Perspicacité", "Ténacité"],
|
|
},
|
|
{
|
|
name: "Réflexes",
|
|
links: ["dexterity", "endurance"],
|
|
},
|
|
{
|
|
name: "Survie",
|
|
links: ["endurance", "intelligence"],
|
|
talent_name: "Talents de survie",
|
|
repeating_section_name: "survival",
|
|
talents: ["Chasse/Pêche", "Cartographie/Repérage"],
|
|
},
|
|
];
|
|
|
|
function generageDefaultSkills() {
|
|
const sectionName = "repeating_skills";
|
|
const skillNameAttr = "skillname";
|
|
getSectionIDs(sectionName, (ids) => {
|
|
getAttrs(
|
|
ids.map((i) => `${sectionName}_${i}_${skillNameAttr}`),
|
|
(names) => {
|
|
const skillNamesToSectionId = {};
|
|
Object.keys(names).forEach((skillname_path) => {
|
|
skillNamesToSectionId[names[skillname_path]] = skillname_path.substring(
|
|
sectionName.length + 1,
|
|
skillname_path.length - skillNameAttr.length - 1
|
|
);
|
|
});
|
|
const skillNames = Object.values(names);
|
|
const attrsToAdd = {};
|
|
skills.forEach((skill) => {
|
|
rowId =
|
|
skillNames.indexOf(skill.name) !== -1
|
|
? skillNamesToSectionId[skill.name]
|
|
: generateRowID();
|
|
attrsToAdd[`${sectionName}_${rowId}_skillname`] = skill.name;
|
|
attrsToAdd[`${sectionName}_${rowId}_link1`] = `@{${skill.links[0]}}`;
|
|
attrsToAdd[`${sectionName}_${rowId}_link2`] = `@{${skill.links[1]}}`;
|
|
});
|
|
setAttrs(attrsToAdd);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
on("clicked:generage_default_skills", function () {
|
|
generageDefaultSkills();
|
|
});
|
|
|
|
function generageDefaultTalents() {
|
|
skills.forEach((skill) => {
|
|
if (!skill["repeating_section_name"]) {
|
|
return;
|
|
}
|
|
const sectionName = `repeating_talent-${skill["repeating_section_name"]}`;
|
|
const skillNameAttr = "skillname";
|
|
getSectionIDs(sectionName, (ids) => {
|
|
getAttrs(
|
|
ids.map((i) => `${sectionName}_${i}_${skillNameAttr}`),
|
|
(names) => {
|
|
const skillNamesToSectionId = {};
|
|
Object.keys(names).forEach((skillname_path) => {
|
|
skillNamesToSectionId[names[skillname_path]] = skillname_path.substring(
|
|
sectionName.length + 1,
|
|
skillname_path.length - skillNameAttr.length - 1
|
|
);
|
|
});
|
|
const skillNames = Object.values(names);
|
|
const attrsToAdd = {};
|
|
skill.talents.forEach((talent) => {
|
|
rowId =
|
|
skillNames.indexOf(talent) !== -1 ? skillNamesToSectionId[talent] : generateRowID();
|
|
attrsToAdd[`${sectionName}_${rowId}_skillname`] = talent;
|
|
});
|
|
setAttrs(attrsToAdd);
|
|
}
|
|
);
|
|
});
|
|
});
|
|
}
|
|
|
|
on("clicked:generage_default_talents", function () {
|
|
generageDefaultTalents();
|
|
});
|
|
|
|
function roll_rt1(name, skillLevel, roll, description, displayRoll) {
|
|
getAttrs(["privaterolls"], (values) => {
|
|
const success = skillLevel
|
|
? [
|
|
Math.min(Math.floor((skillLevel * 1) / 3), 90),
|
|
Math.min(Math.floor((skillLevel * 2) / 3), 90),
|
|
Math.min(skillLevel, 90),
|
|
Math.min(skillLevel + 10, 90),
|
|
Math.min(skillLevel + 20, 90),
|
|
]
|
|
: undefined;
|
|
const cmd = `${
|
|
values["privaterolls"]
|
|
}&{template:rt1} {{name=${name}}} {{character_name=[@{character_name}](http://journal.roll20.net/character/@{character_id})}} ${
|
|
success ? success.map((v, i) => `{{success${i}=${v}%}}`).join(" ") + " {{successLevel=[[-1]]}}" : ""
|
|
} {{roll=[[${roll ? roll : "1d100"}]]}} ${description ? `{{description=${description}}}` : ""} ${
|
|
displayRoll ? `{{damageRolled=${roll}}}` : ""
|
|
}`;
|
|
startRoll(cmd, (results) => {
|
|
const r = results.results.roll.result;
|
|
finishRoll(results.rollId, {
|
|
successLevel: success ? success.findIndex((s) => s >= r) : undefined,
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
on(
|
|
"clicked:strength clicked:dexterity clicked:endurance clicked:intelligence clicked:charisma",
|
|
(eventInfo) => {
|
|
const attrName = eventInfo.triggerName.substring(8);
|
|
getAttrs([attrName, `${attrName}_name`], (values) => {
|
|
roll_rt1(values[`${attrName}_name`], parseInt(values[attrName]));
|
|
});
|
|
}
|
|
);
|
|
|
|
function skillClicked(sourceAttribute, btnName, attrSkillName, attrValueName) {
|
|
const pathBase = sourceAttribute.substring(0, sourceAttribute.length - btnName.length);
|
|
const skillNamePath = pathBase + attrSkillName;
|
|
const valuePath = pathBase + attrValueName;
|
|
|
|
getAttrs([skillNamePath, valuePath], (values) => {
|
|
roll_rt1(values[skillNamePath], values[valuePath]);
|
|
});
|
|
}
|
|
|
|
on("clicked:repeating_skills:roll clicked:repeating_masteries:roll", async (eventInfo) => {
|
|
skillClicked(eventInfo.sourceAttribute, "roll", "skillname", "mastery_max");
|
|
});
|
|
|
|
on("clicked:repeating_attacks:roll", async (eventInfo) => {
|
|
const pathBase = eventInfo.sourceAttribute.substring(0, eventInfo.sourceAttribute.length - 4);
|
|
getAttrs([`${pathBase}skillname`, `${pathBase}attack`, `${pathBase}attack_description`], (values) => {
|
|
roll_rt1(
|
|
values[`${pathBase}skillname`],
|
|
undefined,
|
|
values[`${pathBase}attack`],
|
|
values[`${pathBase}attack_description`],
|
|
values[`${pathBase}attack`]
|
|
);
|
|
});
|
|
});
|
|
|
|
on(
|
|
`clicked:repeating_talent-other:roll ${skills
|
|
.filter((s) => s["repeating_section_name"])
|
|
.map((s) => `clicked:repeating_talent-${s["repeating_section_name"]}:roll`)
|
|
.join(" ")}`,
|
|
async function (eventInfo) {
|
|
const pathBase = eventInfo.sourceAttribute.substring(0, eventInfo.sourceAttribute.length - 4);
|
|
getAttrs([`${pathBase}skillname`, `${pathBase}mastery_max`], (values) => {
|
|
roll_rt1(values[`${pathBase}skillname`], values[`${pathBase}mastery_max`]);
|
|
});
|
|
}
|
|
);
|
|
|
|
const characteristicNames = ["strength", "dexterity", "endurance", "intelligence", "charisma"];
|
|
function getLinkAttr(linkValue) {
|
|
return linkValue.substring(2, linkValue.length - 1);
|
|
}
|
|
|
|
function calculate_repeating_skills(repSection) {
|
|
getAttrs([`${repSection}_link1`, `${repSection}_link2`, ...characteristicNames], (values) => {
|
|
const output = {};
|
|
const masteryMax = Math.floor(
|
|
(parseInt(values[getLinkAttr(values[`${repSection}_link1`])]) +
|
|
parseInt(values[getLinkAttr(values[`${repSection}_link2`])])) *
|
|
2.5
|
|
);
|
|
output[`${repSection}_mastery`] = Math.min(90, masteryMax);
|
|
output[`${repSection}_mastery_max`] = masteryMax;
|
|
setAttrs(output);
|
|
});
|
|
}
|
|
|
|
on("change:repeating_skills:link1 change:repeating_skills:link2", async (eventInfo) => {
|
|
calculate_repeating_skills(eventInfo.sourceAttribute.substring(0, eventInfo.sourceAttribute.length - 6));
|
|
});
|
|
|
|
function calculate_repeating_masteries(repSections) {
|
|
getAttrs(
|
|
repSections.reduce(
|
|
(acc, repSection) => [
|
|
...acc,
|
|
`${repSection}_link1`,
|
|
`${repSection}_link2`,
|
|
`${repSection}_mastery_bonus`,
|
|
...characteristicNames,
|
|
],
|
|
[]
|
|
),
|
|
(values) => {
|
|
const output = {};
|
|
repSections.forEach((repSection) => {
|
|
const masteryMax = Math.floor(
|
|
(parseInt(values[getLinkAttr(values[`${repSection}_link1`])]) +
|
|
parseInt(values[getLinkAttr(values[`${repSection}_link2`])])) /
|
|
2 +
|
|
parseInt(values[`${repSection}_mastery_bonus`])
|
|
);
|
|
output[`${repSection}_mastery`] = Math.min(90, masteryMax);
|
|
output[`${repSection}_mastery_max`] = masteryMax;
|
|
});
|
|
setAttrs(output);
|
|
}
|
|
);
|
|
}
|
|
|
|
on("change:repeating_masteries:link1 change:repeating_masteries:link2", async (eventInfo) => {
|
|
calculate_repeating_masteries([
|
|
eventInfo.sourceAttribute.substring(0, eventInfo.sourceAttribute.length - 6),
|
|
]);
|
|
});
|
|
on("change:repeating_masteries:mastery_bonus", async (eventInfo) => {
|
|
calculate_repeating_masteries([
|
|
eventInfo.sourceAttribute.substring(0, eventInfo.sourceAttribute.length - 14),
|
|
]);
|
|
});
|
|
|
|
function calculate_repeating_talent(basePaths) {
|
|
getAttrs(
|
|
basePaths.reduce(
|
|
(acc, pathBase) => [...acc, `${pathBase}talent_name`, `${pathBase}skill_mastered`],
|
|
[]
|
|
),
|
|
(values) => {
|
|
const talentNames = basePaths.map((pathBase) => values[`${pathBase}talent_name`]);
|
|
getAttrs(
|
|
talentNames.reduce(
|
|
(acc, talentName) => [
|
|
...acc,
|
|
`talent_${talentName}_link1`,
|
|
`talent_${talentName}_link2`,
|
|
...characteristicNames,
|
|
],
|
|
[]
|
|
),
|
|
(talentValues) => {
|
|
const output = {};
|
|
basePaths.forEach((pathBase) => {
|
|
const talentName = values[`${pathBase}talent_name`];
|
|
const masteryMax = Math.floor(
|
|
(values[`${pathBase}skill_mastered`] === "on" ? 10 : 0) +
|
|
(parseInt(talentValues[talentValues[`talent_${talentName}_link1`]]) +
|
|
parseInt(talentValues[talentValues[`talent_${talentName}_link2`]])) *
|
|
2.5
|
|
);
|
|
output[`${pathBase}mastery`] = Math.min(90, masteryMax);
|
|
output[`${pathBase}mastery_max`] = masteryMax;
|
|
});
|
|
setAttrs(output);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
|
|
on(
|
|
skills
|
|
.filter((s) => s["repeating_section_name"])
|
|
.map((s) => `change:repeating_talent-${s["repeating_section_name"]}`)
|
|
.join(" "),
|
|
async (eventInfo) => {
|
|
const rowIdIdx = eventInfo.triggerName.indexOf("_-");
|
|
if (rowIdIdx === -1) {
|
|
const sectionName = eventInfo.triggerName.substring(0, eventInfo.triggerName.lastIndexOf("_"));
|
|
getSectionIDs(sectionName, (ids) => {
|
|
calculate_repeating_talent(ids.map((id) => `${sectionName}_${id}_`));
|
|
});
|
|
} else {
|
|
if (eventInfo.sourceAttribute.indexOf("_", eventInfo.sourceAttribute.indexOf("-", 17)) !== -1) {
|
|
calculate_repeating_talent([`${eventInfo.triggerName}_`]);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
function calculate_repeating_talent_other(basePaths) {
|
|
getAttrs(
|
|
basePaths.reduce(
|
|
(acc, pathBase) => [
|
|
...acc,
|
|
`${pathBase}skillname`,
|
|
`${pathBase}skill_mastered`,
|
|
`${pathBase}link1`,
|
|
`${pathBase}link2`,
|
|
],
|
|
[...characteristicNames]
|
|
),
|
|
(values) => {
|
|
const output = {};
|
|
basePaths.forEach((pathBase) => {
|
|
const masteryMax = Math.floor(
|
|
(values[`${pathBase}skill_mastered`] === "on" ? 10 : 0) +
|
|
(parseInt(values[values[`${pathBase}link1`]]) +
|
|
parseInt(values[values[`${pathBase}link2`]])) *
|
|
2.5
|
|
);
|
|
output[`${pathBase}mastery`] = Math.min(90, masteryMax);
|
|
output[`${pathBase}mastery_max`] = masteryMax;
|
|
});
|
|
setAttrs(output);
|
|
}
|
|
);
|
|
}
|
|
|
|
on("change:repeating_talent-other", (eventInfo) => {
|
|
const rowIdIdx = eventInfo.triggerName.indexOf("_-");
|
|
if (rowIdIdx === -1) {
|
|
const sectionName = eventInfo.triggerName.substring(0, eventInfo.triggerName.lastIndexOf("_"));
|
|
getSectionIDs(sectionName, (ids) => {
|
|
calculate_repeating_talent_other(ids.map((id) => `${sectionName}_${id}_`));
|
|
});
|
|
} else {
|
|
if (eventInfo.sourceAttribute.indexOf("_", eventInfo.sourceAttribute.indexOf("-", 17)) !== -1) {
|
|
calculate_repeating_talent_other([`${eventInfo.triggerName}_`]);
|
|
}
|
|
}
|
|
});
|
|
|
|
on(characteristicNames.map((c) => `change:${c}`).join(" "), async (eventInfo) => {
|
|
getSectionIDs("repeating_masteries", (ids) => {
|
|
calculate_repeating_masteries(ids.map((i) => `repeating_masteries_${i}`));
|
|
});
|
|
|
|
const repTalents = skills.filter((s) => s["repeating_section_name"]);
|
|
getAttrs(
|
|
repTalents.reduce(
|
|
(acc, t) => [
|
|
...acc,
|
|
`talent_${t["repeating_section_name"]}_link1`,
|
|
`talent_${t["repeating_section_name"]}_link2`,
|
|
],
|
|
[]
|
|
),
|
|
(talentLinks) => {
|
|
const talentsToUpdate = repTalents.filter(
|
|
(t) =>
|
|
talentLinks[`talent_${t["repeating_section_name"]}_link1`] === eventInfo.sourceAttribute ||
|
|
talentLinks[`talent_${t["repeating_section_name"]}_link2`] === eventInfo.sourceAttribute
|
|
);
|
|
|
|
talentsToUpdate.forEach((talentToUpdate) => {
|
|
const sectionName = `repeating_talent-${talentToUpdate["repeating_section_name"]}`;
|
|
getSectionIDs(sectionName, (ids) => {
|
|
calculate_repeating_talent(ids.map((id) => `${sectionName}_${id}_`));
|
|
});
|
|
});
|
|
}
|
|
);
|
|
getSectionIDs("repeating_talent-other", (ids) => {
|
|
calculate_repeating_talent_other(ids.map((i) => `repeating_talent-other_${i}_`));
|
|
});
|
|
});
|
|
})();
|
|
</script>
|