mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
635 lines
60 KiB
HTML
635 lines
60 KiB
HTML
<input class="sheet-mainBgColor" name="attr_mainBgColor" type="hidden" value="default"/>
|
|
<div class="sheet-characterSheet">
|
|
<div class="3colrow characterSheet">
|
|
<div class="col">
|
|
<label data-i18n="race">Race</label><input type="text" name="attr_race" />
|
|
<label data-i18n="profession">Profession</label><input type="text" name="attr_profession" />
|
|
<label data-i18n="level">Niveau</label><input type="number" name="attr_niveau" class='sheet-short' value="1"/>
|
|
<label data-i18n="experience" style="width: 41px;">Exp.</label><input type="text" name="attr_experience" style="width: 70px;"/>
|
|
<div>
|
|
<button data-i18n="character" type="action" name="act_character" style="margin-top: 2px;" >Personnage</button>
|
|
<button data-i18n="equipment" type="action" name="act_equipment" >Equipement</button>
|
|
<button data-i18n="magic" type="action" name="act_magic" >Magie</button>
|
|
<button data-i18n="settings" type="action" name="act_settings" >Configuration</button>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="col" >
|
|
<img src="https://images.squarespace-cdn.com/content/v1/52ed62c3e4b0957cc4094975/1589849785190-ONNCBWT2YN62TLC0ZM9W/ke17ZwdGBToddI8pDm48kJSpaAm9EnAAXqaQOAUHvcR7gQa3H78H3Y0txjaiv_0fDoOvxcdMmMKkDsyUqMSsMWxHk725yiiHCCLfrh8O1z4YTzHvnKhyp6Da-NYroOW3ZGjoBKy3azqku80C789l0vl2h348PERjZ0kbWc3syzQarRy86ehuWh77YXUQONiEFHEuCT1uOvb_v_MKdKr-HQ/rm2logo.png" style="float:center;"/>
|
|
</div>
|
|
|
|
<div class="col">
|
|
<label data-i18n="realmpower">Roy. pouvoir</label><input type="text" name="attr_royaume_pouvoir" />
|
|
<label data-i18n="powerpoints">Pts pouvoir</label><input type="number" name="attr_pp" class='sheet-short'> / <input type="number" name="attr_pp_max" class='sheet-short'/>
|
|
<label data-i18n="basehp">PdC base</label><input type="text" name="attr_hp_base" class='sheet-short'> <label data-i18n="totalhp" style="width: 63px;">PdC total</label><input type="text" name="attr_hp_max" class='sheet-short'/>
|
|
<label data-i18n="actualhp">PdC actuels</label><input type="number" name="attr_hp" style="width: 70px;"/>
|
|
</div>
|
|
</div>
|
|
|
|
<input type='hidden' class='sheet-tabstoggle' name='attr_sheetTab' value='character' />
|
|
<br>
|
|
|
|
<!-- ##############################################
|
|
# CHARACTER TAB #
|
|
############################################## -->
|
|
|
|
|
|
<div class='sheet-character'>
|
|
|
|
|
|
<div class="3colrow">
|
|
<div class="col" style="width: 400px;">
|
|
<table><tr><th class="header" data-i18n="attributes" style="padding-left: 5px;">Caractéristiques</th><th class="header" data-i18n="temporary-abbr">Temp.</th><th class="header" data-i18n="potential-abbr">Pot.</th><th class="header" data-i18n="development-abbr">Dev.</th><th class="header" data-i18n="base-abbr">Base</th><th class="header" data-i18n="race-abbr">Race</th><th class="header" data-i18n="total-abbr">TOTAL</th></tr>
|
|
|
|
<tr><td><label data-i18n="constitution">Constitution</label></td><td><input type="text" name='attr_temp_constitution' class='sheet-short'></td><td><input type="text" name='attr_pot_constitution' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_dev_constitution' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_base_constitution' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_constitution' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_constitution' value="(@{base_constitution}+@{race_constitution})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{constitutioncheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_constitution}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="agility">Agilité</label></td><td><input type="text" name='attr_temp_agilite' class='sheet-short'></td><td><input type="text" name='attr_pot_agilite' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_dev_agilite' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_base_agilite' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_agilite' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_agilite' value="(@{base_agilite}+@{race_agilite})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{agilitycheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_agilite}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="selfdiscipline">Autodiscipline</label></td><td><input type="text" name='attr_temp_autodiscipline' class='sheet-short'></td><td><input type="text" name='attr_pot_autodiscipline' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_dev_autodiscipline' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_base_autodiscipline' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_autodiscipline' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_autodiscipline' value="(@{base_autodiscipline}+@{race_autodiscipline})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{selfdisciplinecheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_autodiscipline}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="memory">Mémoire</label></td><td><input type="text" name='attr_temp_memoire' class='sheet-short'></td><td><input type="text" name='attr_pot_memoire' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_dev_memoire' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_base_memoire' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_memoire' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_memoire' value="(@{base_memoire}+@{race_memoire})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{memorycheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_memoire}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="reasoning">Raisonnement</label></td><td><input type="text" name='attr_temp_raisonnement' class='sheet-short'></td><td><input type="text" name='attr_pot_raisonnement' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_dev_raisonnement' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_base_raisonnement' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_raisonnement' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_raisonnement' value="(@{base_raisonnement}+@{race_raisonnement})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{reasoningcheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_raisonnement}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="strength">Force</label></td><td><input type="text" name='attr_temp_force' class='sheet-short'></td><td><input type="text" name='attr_pot_force' class="transparent" class='sheet-short'></td>
|
|
<td></td><td><input type="text" name='attr_base_force' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_force' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_force' value="(@{base_force}+@{race_force})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{strengthcheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_force}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="quickness">Rapidité</label></td><td><input type="text" name='attr_temp_rapidite' class='sheet-short'></td><td><input type="text" name='attr_pot_rapidite' class="transparent" class='sheet-short'></td>
|
|
<td></td><td><input type="text" name='attr_base_rapidite' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_rapidite' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_rapidite' value="(@{base_rapidite}+@{race_rapidite})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{quicknesscheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_rapidite}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="presence">Présence</label></td><td><input type="text" name='attr_temp_presence' class='sheet-short'></td><td><input type="text" name='attr_pot_presence' class="transparent" class='sheet-short'></td>
|
|
<td></td><td><input type="text" name='attr_base_presence' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_presence' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_presence' value="(@{base_presence}+@{race_presence})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{presencecheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_presence}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="empathy">Empathie</label></td><td><input type="text" name='attr_temp_empathie' class='sheet-short'></td><td><input type="text" name='attr_pot_empathie' class="transparent" class='sheet-short'></td>
|
|
<td></td><td><input type="text" name='attr_base_empathie' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_empathie' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_empathie' value="(@{base_empathie}+@{race_empathie})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{empathycheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_empathie}]]}}'></button></td></tr>
|
|
|
|
<tr><td><label data-i18n="intuition">Intuition</label></td><td><input type="text" name='attr_temp_intuition' class='sheet-short'></td><td><input type="text" name='attr_pot_intuition' class="transparent" class='sheet-short'></td>
|
|
<td></td><td><input type="text" name='attr_base_intuition' class="transparent" class='sheet-short'></td>
|
|
<td><input type="text" name='attr_race_intuition' class="transparent" class='sheet-short'></td><td><input type="text" name='attr_total_intuition' value="(@{base_intuition}+@{race_intuition})" disabled="true" class='sheet-short'></td>
|
|
<td><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{intuitioncheck}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{total_intuition}]]}}'></button></td></tr>
|
|
|
|
</table>
|
|
|
|
|
|
|
|
</div>
|
|
<div class="col" style="width: 290px;">
|
|
<label data-i18n="defenses" style="width: 267px; padding-left: 5px;" class="header">Défenses </label>
|
|
<label data-i18n="armor-at" style="width: 90px;">Armure (TA)</label><input type="text" name='attr_armure_ta' style="width: 182px;">
|
|
<label data-i18n="defensivebonus-db" style="width: 139px;">Bonus défensif (BD)</label><input type="text" name='attr_bonus_bd' style="width: 133px;">
|
|
<label data-i18n="withshield" style="width: 90px;">Avec bouclier</label><input type="text" name='attr_bouclier_melee' style="width: 86px;"> <b>/</b> <input type="text" name='attr_bouclier_distance' style="width: 85px;">
|
|
<label data-i18n="movementpenalty" style="width: 85px;">Malus mouvelent</label><input type="text" name='attr_malus_armure' style="width: 45px; margin-right: 15px;"> <label data-i18n="distancepenalty" style="width: 65px;">Malus tir</label> <input type="text" name='attr_malus_tir' style="width: 45px;">
|
|
<input type="checkbox" name="attr_casque" value="1" checked="false" style="width: 14px; margin-right: 5px;" /><label data-i18n="helmet" style="width: 50px;">Casque</label>
|
|
<input type="checkbox" name="attr_brassards" value="1" checked="false" style="width: 14px; margin-right: 5px;" /><label data-i18n="armgreaves" style="width: 65px;">Brassards</label>
|
|
<input type="checkbox" name="attr_jambières" value="1" checked="false" style="width: 14px; margin-right: 5px;" /><label data-i18n="leggreaves" style="width: 65px;">Jambières</label>
|
|
<br><br>
|
|
<label data-i18n="wounds" style="width: 274px; padding-left: 5px;" class="header">Blessures</label>
|
|
<fieldset class="repeating_blessures" >
|
|
<input type="text" name="attr_blessures" style="width: 290px;"/>
|
|
</fieldset>
|
|
</div>
|
|
<div class="col" style="width: 220px;">
|
|
<label data-i18n="languages" style="width: 135px; padding-left: 5px;" class="header">Langages</label><label data-i18n="spoken" style="width: 25px;" class="header">Parlé</label><label data-i18n="writen" style="width: 25px;" class="header">Ecrit</label>
|
|
<fieldset class="repeating_langages">
|
|
<input type="text" name="attr_langages" style="width: 150px;" /><input type="text" name="attr_parle_langages" style="width: 35px;" /><input type="text" name="attr_ecrit_langages" style="width: 35px;" />
|
|
</fieldset>
|
|
<br>
|
|
<label data-i18n="miscellaneous" style="width: 205px; padding-left: 5px;" class="header">Divers</label>
|
|
<label data-i18n="bmr" style="width: 30px;">BMR</label><input type="text" name='attr_bmr' style="width: 52px;">
|
|
<select name="attr_alluremax" style="width: 124px;">
|
|
<option data-i18n="walk" value="1" selected="selected">Marche x1</option>
|
|
<option data-i18n="fastwalk" value="1.5">Marche rapide x1.5</option>
|
|
<option data-i18n="run" value="2">Course x2</option>
|
|
<option data-i18n="sprint" value="3">Sprint x3</option>
|
|
<option data-i18n="accsprint" value="4">Sprint acc. x4</option>
|
|
<option data-i18n="dash" value="5">Ruée x5</option>
|
|
</select>
|
|
<label data-i18n="hitdice" style="width: 82px;">Dé de vie</label><input type="text" name='attr_des_vie' style="width: 52px;"><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{hitdice}}} {{^{result}=[[d@{des_vie}]]}}'></button>
|
|
<label data-i18n="developmentpoints" style="width: 82px;">Pts de Dév</label><input type="text" name='attr_pdevused' style="width: 52px;"> / <input type="text" name='attr_pdev' style="width: 52px;">
|
|
<label data-i18n="secundarydevelopmentpoints" style="width: 82px;">PdD Sec.</label><input type="text" name='attr_secpdevused' style="width: 52px;"> / <input type="text" name='attr_secpdev' style="width: 52px;">
|
|
</div>
|
|
</div>
|
|
|
|
<hr class="sheet-mainBgColor">
|
|
|
|
|
|
<div class="2colrow" >
|
|
<div class="col" style="width: 678px;">
|
|
<label data-i18n="primaryskills" style="width: 135px; padding-left: 5px;" class="header">Comp. principales</label><label data-i18n="attributemod-abbr" style="width: 70px;" class="header">Mod Carac.</label><label data-i18n="cost" style="width: 30px;" class="header">Coût</label><label data-i18n="profession-abbr" style="width: 25px;" class="header">Prof.</label><label data-i18n="nbranks" style="width: 44px;" class="header">#Rangs</label><label data-i18n="dev-abbr" style="width: 30px; text-align: center;" class="header">Dev.</label><label data-i18n="base-abbr" style="width: 35px;" class="header">Base</label><label data-i18n="attribute-abbr" style="width: 35px;" class="header">Carac.</label><label data-i18n="profession-abbr" style="width: 25px;" class="header">Prof.</label><label data-i18n="miscellaneous-abbr" style="width: 30px;" class="header">Div.</label><label data-i18n="item-abbr" style="width: 30px;" class="header">Obj.</label><label data-i18n="total-abbr" style="width: 34px;" class="header">TOTAL</label>
|
|
|
|
<fieldset class="repeating_skills">
|
|
<input type="text" name="attr_skillname" style="width: 150px;" /><input type="text" name='attr_modcarac_skillname' class="transparent" style="width: 80px;"><input type="text" name='attr_cout_skillname' class="transparent" style="width: 40px;"><input type="text" name='attr_prof_skillname' class="transparent" style="width: 35px;" value="0"><input type="number" name='attr_nbrangs_skillname' style="width: 50px; text-align: center;"><input type="number" name='attr_dev_skillname' style="width: 40px; text-align: center;">
|
|
<input type="text" name='attr_base_skillname' class="transparent" style="width: 45px;" value="0"><input type="text" name='attr_carac_skillname' class="transparent" style="width: 45px;" value="0"><input type="text" name='attr_profbonus_skillname' class="transparent" style="width: 35px;"><input type="text" name='attr_div_skillname' class="transparent" style="width: 40px;" value="0"><input type="text" name='attr_obj_skillname' class="transparent" style="width: 40px;" value="0"><input type="text" name='attr_total_skillname' value="(@{base_skillname}+@{carac_skillname}+@{profbonus_skillname}+@{div_skillname}+@{obj_skillname})" disabled="true" style="width: 45px; text-align: center;"><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{skillname}}} {{result=[[1d100!>96cs>96cf<5 + @{total_skillname}]]}}'></button>
|
|
</fieldset>
|
|
<br>
|
|
<label data-i18n="secondaryskills" style="width: 135px; padding-left: 5px;" class="header">Comp. secondaires</label><label data-i18n="attributemod-abbr" style="width: 70px;" class="header">Mod Carac.</label><label data-i18n="cost" style="width: 30px;" class="header">Coût</label><label data-i18n="profession-abbr" style="width: 25px;" class="header">Prof.</label><label data-i18n="nbranks" style="width: 44px;" class="header">#Rangs</label><label data-i18n="dev-abbr" style="width: 30px; text-align: center;" class="header">Dev.</label><label data-i18n="base-abbr" style="width: 35px;" class="header">Base</label><label data-i18n="attribute-abbr" style="width: 35px;" class="header">Carac.</label><label data-i18n="profession-abbr" style="width: 25px;" class="header">Prof.</label><label data-i18n="miscellaneous-abbr" style="width: 30px;" class="header">Div.</label><label data-i18n="item-abbr" style="width: 30px;" class="header">Obj.</label><label data-i18n="total-abbr" style="width: 34px;" class="header">TOTAL</label>
|
|
|
|
<fieldset class="repeating_secondaryskills">
|
|
<input type="text" name="attr_skillname" style="width: 150px;" /><input type="text" name='attr_modcarac_skillname' class="transparent" style="width: 80px;"><input type="text" name='attr_cout_skillname' class="transparent" style="width: 40px;"><input type="text" name='attr_prof_skillname' class="transparent" style="width: 35px;" value="0"><input type="number" name='attr_nbrangs_skillname' style="width: 50px; text-align: center;"><input type="number" name='attr_dev_skillname' style="width: 40px; text-align: center;">
|
|
<input type="text" name='attr_base_skillname' class="transparent" style="width: 45px;" value="0"><input type="text" name='attr_carac_skillname' class="transparent" style="width: 45px;" value="0"><input type="text" name='attr_profbonus_skillname' class="transparent" style="width: 35px;"><input type="text" name='attr_div_skillname' class="transparent" style="width: 40px;" value="0"><input type="text" name='attr_obj_skillname' class="transparent" style="width: 40px;" value="0"><input type="text" name='attr_total_skillname' value="(@{base_skillname}+@{carac_skillname}+@{profbonus_skillname}+@{div_skillname}+@{obj_skillname})" disabled="true" style="width: 45px; text-align: center;"><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{skillname}}} {{result=[[1d100!>96cs>96cf<5 + @{total_skillname}]]}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<div class="col" style="width: 288px;">
|
|
<label data-i18n="weaponskills" style="width: 162px; padding-left: 5px;" class="header">Compétences d'armes</label><label data-i18n="ob" style="width: 30px;"class="header">BO</label><label data-i18n="db" style="width: 30px;" class="header">BD</label>
|
|
<fieldset class="repeating_weapons">
|
|
<input type="text" name="attr_weapon" style="width: 177px;" /><input type="text" name="attr_weaponbo" style="width: 40px;" /><input type="text" name="attr_weaponbd" style="width: 40px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{weapon}}} {{^{result}=[[1d100!>96cs>96cf<5 + @{weaponbo} - ?{Ennemy DB|0}]]}}'></button>
|
|
</fieldset>
|
|
<br>
|
|
<label data-i18n="resistances" style="width: 85px; padding-left: 5px;" class="header">Résistances</label><label data-i18n="base-abbr" style="width: 30px;" class="header">Base</label><label data-i18n="race-abbr" style="width: 30px;" class="header">Race</label><label data-i18n="miscellaneous" style="width: 30px;" class="header">Divers</label><label data-i18n="total-abbr" style="width: 30px;" class="header">TOTAL</label>
|
|
<fieldset class="repeating_resistances" >
|
|
<input type="text" name="attr_resistancename" style="width: 99px;" /><input type="text" name='attr_base_resistancename' class="transparent" style="width: 40px;" value="0"><input type="text" name='attr_race_resistancename' class="transparent" style="width: 40px;" value="0"><input type="text" name='attr_divers_resistancename' class="transparent" style="width: 40px;" value="0"><input type="text" name='attr_total_resistancename' value="(@{base_resistancename}+@{race_resistancename}+@{divers_resistancename})" disabled="true" class='sheet-short' style="width: 40px;"><button type='roll' name='roll_testattack' value='&{template:custom} {{title=^{resistancecheck} @{resistancename}}} {{result=[[1d100!>96cs>96cf<5 + @{total_resistancename}]]}}'></button>
|
|
</fieldset>
|
|
<br>
|
|
<label data-i18n="notes" style="width: 274px; padding-left: 5px;" class="header">Notes</label>
|
|
<textarea name="attr_notes" style="width: 279px;"></textarea>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- ##############################################
|
|
# EQUIPMENT TAB #
|
|
############################################## -->
|
|
|
|
<div class='sheet-equipment'>
|
|
|
|
<div class="2colrow" >
|
|
<div class="col" style="width: 466px;">
|
|
<label data-i18n="equipment" style="width: 381px; padding-left: 5px;" class="header">Equipement</label><label data-i18n="weight" style="width: 60px;" class="header">Poids kg</label>
|
|
<fieldset class="repeating_equipment">
|
|
<input type="text" name="attr_equipment" style="width: 396px;" /><input type="text" name="attr_poids_equipment" style="width: 70px;" />
|
|
</fieldset>
|
|
<br>
|
|
<label data-i18n="loadcapacity"style="width: 200px;">Capacité de charge (kg)</label><input type="text" name="attr_loadcapacity" class='sheet-short'/><br>
|
|
<label data-i18n="weighttotal"style="width: 200px;">Poids total (kg)</label><input type="text" name="attr_weighttotal" class='sheet-short'/>
|
|
</div>
|
|
<div class="col" style="width: 500px;">
|
|
<label data-i18n="possessions" style="width: 324px; padding-left: 5px;" class="header">Possessions</label><label data-i18n="localization" style="width: 150px;" class="header">Localisation</label>
|
|
<fieldset class="repeating_possessions">
|
|
<input type="text" name="attr_possessions" style="width: 340px;" /><input type="text" name="attr_loca_possessions" style="width: 160px;" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
<div>
|
|
<div class="col" style="width: 466px;">
|
|
<label data-i18n="mithril" style="width: 56px; padding-left: 5px;" class="header">Mithril</label><label data-i18n="gold" style="width: 60px;" class="header">Or</label><label data-i18n="silver" style="width: 60px;" class="header">Argent</label><label data-i18n="bronze" style="width: 60px;" class="header">Bronze</label><label data-i18n="copper" style="width: 60px;" class="header">Cuivre</label><label data-i18n="iron" style="width: 58px;" class="header">Fer</label>
|
|
<input type="number" name="attr_pm" style="width: 70px;" /><input type="number" name="attr_po" style="width: 70px;" /><input type="number" name="attr_pa" style="width: 70px;" /><input type="number" name="attr_pb" style="width: 70px;" /><input type="number" name="attr_pc" style="width: 70px;" /><input type="number" name="attr_pf" style="width: 70px;" />
|
|
</div>
|
|
</div>
|
|
<br>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- ##############################################
|
|
# MAGIC TAB #
|
|
############################################## -->
|
|
|
|
<div class='sheet-magic'>
|
|
|
|
<div class="col" style="width: 950px;">
|
|
<label data-i18n="show" style="width: 45px; padding-left: 5px;" class="header">Afficher</label><label data-i18n="spelllists" style="width: 290px;" class="header">Listes de sorts</label><label data-i18n="realm" style="width: 90px;" class="header">Royaume</label><label data-i18n="listtype" style="width: 90px;" class="header">Type de liste</label><label data-i18n="levelmax" style="width: 70px;" class="header">Niveau max</label><label data-i18n="learnchances" style="width: 70px;" class="header">%Apprent.</label><label data-i18n="bookandpage" style="width: 137px;" class="header">Manuel et page</label>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-1" style="width: 57px;"/><input type="text" name="attr_spell_list_1_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_1_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_1_type" style="width: 100px;" /><input type="text" name="attr_spell_list_1_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_1_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_1_page" style="width: 150px;" />
|
|
<div class="sheet-body-1">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-1">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-2" style="width: 57px;"/><input type="text" name="attr_spell_list_2_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_2_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_2_type" style="width: 100px;" /><input type="text" name="attr_spell_list_2_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_2_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_2_page" style="width: 150px;" />
|
|
<div class="sheet-body-2">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-2">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-3" style="width: 57px;"/><input type="text" name="attr_spell_list_3_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_3_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_3_type" style="width: 100px;" /><input type="text" name="attr_spell_list_3_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_3_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_3_page" style="width: 150px;" />
|
|
<div class="sheet-body-3">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-3">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-4" style="width: 57px;"/><input type="text" name="attr_spell_list_4_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_4_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_4_type" style="width: 100px;" /><input type="text" name="attr_spell_list_4_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_4_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_4_page" style="width: 150px;" />
|
|
<div class="sheet-body-4">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-4">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-5" style="width: 57px;"/><input type="text" name="attr_spell_list_5_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_5_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_5_type" style="width: 100px;" /><input type="text" name="attr_spell_list_5_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_5_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_5_page" style="width: 150px;" />
|
|
<div class="sheet-body-5">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-5">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-6" style="width: 57px;"/><input type="text" name="attr_spell_list_6_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_6_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_6_type" style="width: 100px;" /><input type="text" name="attr_spell_list_6_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_6_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_6_page" style="width: 150px;" />
|
|
<div class="sheet-body-6">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-6">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-7" style="width: 57px;"/><input type="text" name="attr_spell_list_7_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_7_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_7_type" style="width: 100px;" /><input type="text" name="attr_spell_list_7_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_7_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_7_page" style="width: 150px;" />
|
|
<div class="sheet-body-7">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-7">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-8" style="width: 57px;"/><input type="text" name="attr_spell_list_8_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_8_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_8_type" style="width: 100px;" /><input type="text" name="attr_spell_list_8_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_8_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_8_page" style="width: 150px;" />
|
|
<div class="sheet-body-8">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-8">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-9" style="width: 57px;"/><input type="text" name="attr_spell_list_9_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_9_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_9_type" style="width: 100px;" /><input type="text" name="attr_spell_list_9_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_9_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_9_page" style="width: 150px;" />
|
|
<div class="sheet-body-9">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-9">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
<br>
|
|
<input type="checkbox" class="sheet-toggle-show-10" style="width: 57px;"/><input type="text" name="attr_spell_list_10_nom" style="width: 300px;" /><input type="text" name="attr_spell_list_10_royaume" style="width: 100px;" /><input type="text" name="attr_spell_list_10_type" style="width: 100px;" /><input type="text" name="attr_spell_list_10_niveau" style="width: 80px;" /><input type="text" name="attr_spell_list_10_pourcentage" style="width: 80px;" /><input type="text" name="attr_spell_list_10_page" style="width: 150px;" />
|
|
<div class="sheet-body-10">
|
|
<label data-i18n="level" style="width: 37px; padding-left: 5px;" class="header">Niveau</label><label data-i18n="spellname" style="width: 190px;" class="header">Nom</label><label data-i18n="spellclass" style="width: 60px;" class="header">Classe</label><label data-i18n="spellduration" style="width: 60px;" class="header">Durée</label><label data-i18n="spellrange" style="width: 60px;" class="header">Portée</label><label data-i18n="description" style="width: 427px;" class="header">Description</label>
|
|
<fieldset class="repeating_spell-10">
|
|
<input type="text" name="attr_spell_niveau-1" style="width: 50px;" /><input type="text" name="attr_spell_nom-1" style="width: 200px;" /><input type="text" name="attr_spell_classe-1" style="width: 70px;" /><input type="text" name="attr_spell_duree-1" style="width: 70px;" /><input type="text" name="attr_spell_portee-1" style="width: 70px;" /><input type="text" name="attr_spell_descri-1" style="width: 439px;" /><button type='roll' name='roll_testattack' value='&{template:custom} {{title=@{spell_nom-1}}} {{^{level}=@{spell_niveau-1}}} {{^{spellclass}=@{spell_classe-1}}} {{^{spellduration}=@{spell_duree-1}}} {{^{spellrange}=@{spell_portee-1}}} {{desc=@{spell_descri-1}}}'></button>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- ##############################################
|
|
# SETTINGS TAB #
|
|
############################################## -->
|
|
|
|
<div class='sheet-settings'>
|
|
|
|
<label data-i18n="background-color" style="width: 175px;">Background color</label>
|
|
<select name="attr_mainBgColorSelect" value="default">
|
|
<option value="default" data-i18n="default" style="background-color: #d4dce4;" selected="selected">Default</option>
|
|
<option value="white" data-i18n="white" style="background-color: #fff;">White</option>
|
|
<option value="lilac" data-i18n="lilac" style="background-color: #ded6e0;">Lilac</option>
|
|
<option value="grayscale" data-i18n="grayscale" style="background-color: #f3f3f3;">Grayscale</option>
|
|
<option value="book" data-i18n="book" style="background-color: #f3efe6;">Book</option>
|
|
<option value="summer" data-i18n="season-summer" style="background-color: #fef7ed;">Summer</option>
|
|
<option value="fall" data-i18n="season-fall" style="background-color: #f5dbcc;">Fall</option>
|
|
<option value="winter" data-i18n="season-winter" style="background-color: #dcefef;">Winter</option>
|
|
<option value="spring" data-i18n="season-spring" style="background-color: #e6f1e2;">Spring</option>
|
|
</select>
|
|
<p data-i18n="backgroundcolordesc" style="width: 700px;">Choose the main color of the character sheet (changes background and headers).</p>
|
|
<br>
|
|
<label data-i18n="totalhpcalcmode" style="width: 175px;"/>Total HP calculation mode</label>
|
|
<select name="attr_totalhpcalculation">
|
|
<option data-i18n="legacycalc" value="1" selected="selected">Legacy calculations</option>
|
|
<option data-i18n="nocalc" value="0">No calculations</option>
|
|
</select>
|
|
<p data-i18n="hpcalcdescription" style="width: 700px;">Choose the Total HP calculation. In Legacy, the Total HP equals the Base HP + Base HP * (constitution bonus / 100). If you choose No Calculations, Total HP is not automatically calculated and you will need to enter the value manually. If you do that, you don't have to use the Base HP value.</p>
|
|
<br>
|
|
<label data-i18n="professionbonusmode" style="width: 175px;"/>Profession bonus mode</label>
|
|
<select name="attr_professionbonuscalcmode">
|
|
<option data-i18n="legacyprofbonus" value="0" selected="selected">Legacy profession bonus</option>
|
|
<option data-i18n="flatprofbonus" value="1">Flat profession bonus</option>
|
|
</select>
|
|
<p data-i18n="profbonusmodedescription" style="width: 700px;">Choose the mode of professional bonus calculations. By the legacy rules, the professional bonus is multiplied by the character level. You can also choice the flat bonus option, in this case, the professional bonus don't scale with the caracter level.</p>
|
|
<br>
|
|
<label data-i18n="skilldevmode" style="width: 175px;"/>Skill development mode</label>
|
|
<select name="attr_skilldevmode">
|
|
<option data-i18n="legacyskilldev" value="0" selected="selected">Legacy development points</option>
|
|
<option data-i18n="flatskilldev" value="1">Flat development points</option>
|
|
</select>
|
|
<p data-i18n="skilldevmodedescription" style="width: 700px;">Choose the mode of development points acquisition. In legacy rules, development points are derived from the 5 first attributes and depend of the temporary score. You can choose a flat development points too and enter the desired development points manually.</p>
|
|
<br>
|
|
<label data-i18n="secondaryskilldevmode" style="width: 175px;"/>Secondary skill dev bonus</label>
|
|
<select name="attr_secondaryskilldevmode">
|
|
<option data-i18n="flatskilldev" value="0" selected="selected">Fixed development points</option>
|
|
<option data-i18n="10bonus" value="10" >10% bonus</option>
|
|
<option data-i18n="20bonus" value="20" >20% bonus</option>
|
|
<option data-i18n="25bonus" value="25" >25% bonus</option>
|
|
<option data-i18n="30bonus" value="30" >30% bonus</option>
|
|
<option data-i18n="40bonus" value="40" >40% bonus</option>
|
|
<option data-i18n="50bonus" value="50" >50% bonus</option>
|
|
</select>
|
|
<p data-i18n="secondaryskilldevmodedescription" style="width: 700px;">Choose the secondary skill development bonus. You can choose a fixed bonus or a pourcentage of the primary development points. The pourcentage bonus work only correctly of you use the legacy development points mode on the above option.</p>
|
|
<br>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- ##############################################
|
|
# ROLL TEMPLATE SECTION #
|
|
############################################## -->
|
|
|
|
<rolltemplate class="sheet-rolltemplate-custom">
|
|
<div class="sheet-container sheet-color-{{color}}">
|
|
<div class="sheet-header">
|
|
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
|
|
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
|
|
</div>
|
|
<div class="sheet-content">
|
|
{{#allprops() title subtitle desc color}}
|
|
<div class="sheet-key">{{key}}</div>
|
|
<div class="sheet-value">{{value}}</div>
|
|
{{/allprops() title subtitle desc color}}
|
|
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<!-- ##############################################
|
|
# SCRIPTS SECTION #
|
|
############################################## -->
|
|
|
|
|
|
<script type="text/worker">
|
|
/* *******************************
|
|
* TAB SYSTEM *
|
|
*******************************/
|
|
const buttonlist = ["character","equipment","magic", "settings"];
|
|
buttonlist.forEach(button => {
|
|
on(`clicked:${button}`, function() {
|
|
setAttrs({
|
|
sheetTab: button
|
|
});
|
|
});
|
|
});
|
|
/* *********************************************
|
|
* REPEATING LIST TOTAL (WEITHT, DP...) *
|
|
*********************************************/
|
|
const repeatingSum = (destinations, section, fields, ...extras) => {
|
|
const isNumber = value => parseFloat(value).toString() === value.toString();
|
|
const isOption = value => [...checks.valid, ...checks.roundtypes].includes(value);
|
|
const isRounding = value => checks.roundtypes.includes(value);
|
|
const isFraction = value => value.includes('/') && !(value.includes(',') || value.includes('|'));
|
|
const getTrimmed = value => value.toLowerCase().replace(/\s/g, '');
|
|
const getRounded = (type, value, pow) => (Math[type](value * Math.pow(10, pow)) / Math.pow(10, pow)).toFixed(Math.max(0, pow));
|
|
const getFraction = (value) => /*{ console.log(`value: ${value}`); */
|
|
parseInt(value.split('/')[0]) / parseInt(value.split('/')[1]);
|
|
const getMultiplier = (value, rounding = 1) => 'undefined' === typeof value ? (rounding ? 0: 1) : (
|
|
isNumber(value) ? parseFloat(value) : (isFraction(value) ? getFraction(value) : value));
|
|
if (!Array.isArray(destinations)) destinations = [getTrimmed(destinations)];
|
|
if (!Array.isArray(fields)) fields = [getTrimmed(fields)];
|
|
const fields_trimmed = fields.map(field => getTrimmed(field).split(':')[0]);
|
|
const subfields = fields_trimmed.slice(0,destinations.length);
|
|
const checks = { valid: ['multiplier'], roundtypes: ['ceil', 'round', 'floor'] };
|
|
let properties = {attributes: {}, options: {}};
|
|
extras.forEach(extra => {
|
|
const [prop, v] = getTrimmed(extra).split(':');
|
|
const multiplier_maybe = getMultiplier(v, isRounding(prop));
|
|
const obj = isNumber(multiplier_maybe) ? subfields.reduce((obj,field) => {
|
|
obj[field] = multiplier_maybe;
|
|
return obj;
|
|
},{}) : multiplier_maybe.split(',').reduce((obj, item) => {
|
|
const [stat, value] = item.split('|');
|
|
const multiplier = getMultiplier(value, isRounding(prop));
|
|
obj[stat] = multiplier;
|
|
return obj;
|
|
}, {});
|
|
properties[isOption(prop) ? 'options' : 'attributes'][prop] = obj;
|
|
});
|
|
getSectionIDs(`repeating_${section}`, idArray => {
|
|
const attrArray = idArray.reduce((m, id) => [...m, ...(fields_trimmed.map(field => `repeating_${section}_${id}_${field}`))], []);
|
|
getAttrs([...attrArray, ...Object.keys(properties.attributes)], v => {
|
|
const getValue = (section, id, field) => v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : parseFloat(v[`repeating_${section}_${id}_${field}`]) || 0;
|
|
const commonMultipliers = (fields.length <= destinations.length) ? [] : fields.splice(destinations.length, fields.length - destinations.length);
|
|
const output = destinations.reduce((obj, destination, index) => {
|
|
let sumTotal = idArray.reduce((total, id) => total + getValue(section, id, fields_trimmed[index]) * commonMultipliers.reduce((subtotal, mult) => subtotal * ((!mult.includes(':') || mult.split(':')[1].split(',').includes(fields_trimmed[index])) ? getValue(section, id, mult.split(':')[0]) : 1), 1), 0);
|
|
sumTotal *= (properties.options.hasOwnProperty('multiplier') && Object.keys(properties.options.multiplier).includes(fields_trimmed[index])) ? (parseFloat(properties.options.multiplier[fields_trimmed[index]]) || 0): 1;
|
|
sumTotal += Object.entries(properties.attributes).reduce((total, [key, value]) =>
|
|
total += (value.hasOwnProperty(fields_trimmed[index]) ? parseFloat(v[key] || 0) * (parseFloat(value[fields_trimmed[index]]) || 1): 0) , 0);
|
|
checks.roundtypes.forEach(type => {
|
|
if (properties.options.hasOwnProperty(type)) {
|
|
if (Object.keys(properties.options[type]).includes(fields_trimmed[index])) {
|
|
sumTotal = getRounded(type, sumTotal, (+properties.options[type][fields_trimmed[index]] || 0));
|
|
} else if (properties.options[type] == '0' || !isNaN(+properties.options[type] || 'x') ) {
|
|
sumTotal = getRounded(type, sumTotal, +properties.options[type]);
|
|
}
|
|
}
|
|
});
|
|
obj[destination] = sumTotal;
|
|
return obj;
|
|
}, {});
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
};
|
|
on('change:repeating_equipment:poids_equipment remove:repeating_equipment change:weighttotal', function() {
|
|
repeatingSum('weighttotal','equipment','poids_equipment','round:2');
|
|
});
|
|
|
|
on('change:repeating_skills:dev_skillname remove:repeating_skills change:pdevused', function() {
|
|
repeatingSum('pdevused','skills','dev_skillname');
|
|
});
|
|
|
|
on('change:repeating_secondaryskills:dev_skillname remove:repeating_secondaryskills change:secpdevused', function() {
|
|
repeatingSum('secpdevused','secondaryskills','dev_skillname');
|
|
});
|
|
|
|
/* *************************
|
|
* HP CALCULATIONS *
|
|
*************************/
|
|
on('change:hp_base change:base_constitution change:race_constitution change:totalhpcalculation change:hp_max', () => {
|
|
getAttrs(['hp_base','base_constitution','race_constitution','totalhpcalculation'], values => {
|
|
const base = parseInt( values.hp_base) || 0;
|
|
const basemod = parseInt( values.base_constitution) || 0;
|
|
const racemod = parseInt( values.race_constitution) || 0;
|
|
const check = parseInt( values.totalhpcalculation) || 0;
|
|
// check to see if calculation is on or off. If off, end the sheet worker.
|
|
if(check==0) return;
|
|
// calculate hp
|
|
const hp = Math.round(base * (1+ ((basemod + racemod) / 100)));
|
|
// update hp attribute on sheet.
|
|
setAttrs({
|
|
hp_max: hp
|
|
});
|
|
});
|
|
});
|
|
|
|
/* ***************************
|
|
* PRIMARY DEV POINTS *
|
|
***************************/
|
|
on('change:dev_constitution change:dev_agilite change:dev_autodiscipline change:dev_memoire change:dev_raisonnement change:skilldevmode change:pdev', () => {
|
|
getAttrs(['dev_constitution','dev_agilite','dev_autodiscipline','dev_memoire','dev_raisonnement', 'skilldevmode'], values => {
|
|
const devco = parseInt( values.dev_constitution) || 0;
|
|
const devag = parseInt( values.dev_agilite) || 0;
|
|
const devad = parseInt( values.dev_autodiscipline) || 0;
|
|
const devme = parseInt( values.dev_memoire) || 0;
|
|
const devrs = parseInt( values.dev_raisonnement) || 0;
|
|
const devmode = parseInt( values.skilldevmode) || 0;
|
|
// check to see if calculation is on or off. If off, end the sheet worker.
|
|
if(devmode==1) return;
|
|
// calculate dev points
|
|
const devpts = devco+devag+devad+devme+devrs;
|
|
// update hp attribute on sheet.
|
|
setAttrs({
|
|
pdev: devpts
|
|
});
|
|
});
|
|
});
|
|
|
|
/* *****************************
|
|
* SECONDARY DEV POINTS *
|
|
*****************************/
|
|
on('change:dev_constitution change:dev_agilite change:dev_autodiscipline change:dev_memoire change:dev_raisonnement change:secondaryskilldevmode change:secpdev', () => {
|
|
getAttrs(['dev_constitution','dev_agilite','dev_autodiscipline','dev_memoire','dev_raisonnement', 'secondaryskilldevmode'], values => {
|
|
const secdevco = parseInt( values.dev_constitution) || 0;
|
|
const secdevag = parseInt( values.dev_agilite) || 0;
|
|
const secdevad = parseInt( values.dev_autodiscipline) || 0;
|
|
const secdevme = parseInt( values.dev_memoire) || 0;
|
|
const secdevrs = parseInt( values.dev_raisonnement) || 0;
|
|
const secdevmode = parseInt( values.secondaryskilldevmode) || 0;
|
|
// check to see if calculation is on or off. If off, end the sheet worker.
|
|
if(secdevmode==0) return;
|
|
// calculate dev points
|
|
const secdevpts = Math.round((secdevco+secdevag+secdevad+secdevme+secdevrs) * secdevmode / 100);
|
|
// update hp attribute on sheet.
|
|
setAttrs({
|
|
secpdev: secdevpts
|
|
});
|
|
});
|
|
});
|
|
|
|
/* ******************************************
|
|
* PROFESSIONAL PRIMARY SKILL BONUS *
|
|
******************************************/
|
|
on('change:repeating_skills:prof_skillname change:professionbonuscalcmode change:niveau', () => {
|
|
getSectionIDs('repeating_skills', ids => {
|
|
// get an array of names for the skillname attribute across all rows.
|
|
// getSectionIDs gives an array of the row ids.
|
|
const fieldnames = [];
|
|
ids.forEach(id => fieldnames.push(`repeating_skills_${id}_prof_skillname`));
|
|
|
|
// now getAttrs can use that array to get the attributes from all rows
|
|
getAttrs([...fieldnames,'niveau', 'professionbonuscalcmode'], values => {
|
|
// get the values of the attributes outside the repeating section
|
|
const level = parseInt( values.niveau) || 0;
|
|
const check = parseInt( values.professionbonuscalcmode) || 0;
|
|
|
|
// create a variable to hold all the stats that need to be updated
|
|
const output = {};
|
|
// now loop through the row ids again
|
|
ids.forEach(id => {
|
|
// get the value of the prof_skillname attribute for this specific row.
|
|
const prof = parseInt( values[`repeating_skills_${id}_prof_skillname`]) || 0;
|
|
|
|
// check to see if calculation is 1 or 0. Use triple equality to match properly.
|
|
if(check === 0) {
|
|
const profbonus = prof*level;
|
|
output[`repeating_skills_${id}_profbonus_skillname`] = profbonus;
|
|
} else if(check === 1) {
|
|
const profbonus = prof;
|
|
output[`repeating_skills_${id}_profbonus_skillname`] = profbonus;
|
|
}
|
|
});
|
|
// save the collected attributes.
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
});
|
|
|
|
/* ********************************************
|
|
* PROFESSIONAL SECONDARY SKILL BONUS *
|
|
********************************************/
|
|
|
|
on('change:repeating_secondaryskills:prof_skillname change:professionbonuscalcmode change:niveau', () => {
|
|
getSectionIDs('repeating_secondaryskills', ids => {
|
|
// get an array of names for the skillname attribute across all rows.
|
|
// getSectionIDs gives an array of the row ids.
|
|
const fieldnames = [];
|
|
ids.forEach(id => fieldnames.push(`repeating_secondaryskills_${id}_prof_skillname`));
|
|
|
|
// now getAttrs can use that array to get the attributes from all rows
|
|
getAttrs([...fieldnames,'niveau', 'professionbonuscalcmode'], values => {
|
|
// get the values of the attributes outside the repeating section
|
|
const level = parseInt( values.niveau) || 0;
|
|
const check = parseInt( values.professionbonuscalcmode) || 0;
|
|
|
|
// create a variable to hold all the stats that need to be updated
|
|
const output = {};
|
|
// now loop through the row ids again
|
|
ids.forEach(id => {
|
|
// get the value of the prof_skillname attribute for this specific row.
|
|
const prof = parseInt( values[`repeating_secondaryskills_${id}_prof_skillname`]) || 0;
|
|
|
|
// check to see if calculation is 1 or 0. Use triple equality to match properly.
|
|
if(check === 0) {
|
|
const profbonus = prof*level;
|
|
output[`repeating_secondaryskills_${id}_profbonus_skillname`] = profbonus;
|
|
} else if(check === 1) {
|
|
const profbonus = prof;
|
|
output[`repeating_secondaryskills_${id}_profbonus_skillname`] = profbonus;
|
|
}
|
|
});
|
|
// save the collected attributes.
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
});
|
|
|
|
/* ***************************************
|
|
* BACKGROUND COLOR SELECTOR *
|
|
***************************************/
|
|
|
|
on("change:mainBgColorSelect", function(event) {
|
|
getAttrs(["mainBgColorSelect", "mainBgColor"], function(values) {
|
|
setAttrs({
|
|
mainBgColor: values.mainBgColorSelect
|
|
});
|
|
});
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|