mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
828 lines
46 KiB
HTML
828 lines
46 KiB
HTML
<input type='hidden' class='page-form' name='attr_pageTab'/>
|
|
|
|
<div class='page'>
|
|
|
|
<!-- Logo aventures -->
|
|
<div class="page-logo-aventures">
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Aventures/img/aventures-logo2.png" width="150px"/>
|
|
</div>
|
|
|
|
<!-- Informations générales du personnage -->
|
|
<!-- Le système de table grid est utilisé dans cette page -->
|
|
<div class="page-block">
|
|
<div class="page-head">
|
|
<span data-i18n="personnage">Personnage </span>
|
|
</div>
|
|
<div class="grid-character">
|
|
<div class="grid-character-nom">
|
|
<span data-i18n="nom:">Nom : </span> <input type="text" class="page-input-text" spellcheck="false" name="attr_Nomperso" data-i18n-placeholder="nom" placeholder="Nom"/>
|
|
</div>
|
|
<div class="grid-character-race">
|
|
<span data-i18n="race:">Race : </span> <input type="text" class="page-input-text" spellcheck="false" name="attr_character_race" data-i18n-placeholder="race" placeholder="Race"/>
|
|
</div>
|
|
<div class="grid-character-classe">
|
|
<span data-i18n="classe:">Classe : </span> <input type="text" class="page-input-text" spellcheck="false" name="attr_character_classe" data-i18n-placeholder="classe" placeholder="Classe"/>
|
|
</div>
|
|
<div class="grid-character-element">
|
|
<span data-i18n="element:">Élément : </span> <input type="text" class="page-input-text" spellcheck="false" name="attr_character_element" data-i18n-placeholder="element" placeholder="Élement"/>
|
|
</div>
|
|
<div class="grid-character-themes">
|
|
<span data-i18n="themes:">Thèmes : </span><br>
|
|
<textarea class="themes-langues" spellcheck="false" name="attr_character_themes" data-i18n-placeholder="themes" placeholder="Thèmes"></textarea>
|
|
</div>
|
|
<div class="grid-character-langues">
|
|
<span data-i18n="langues:">Langues connues : </span><br>
|
|
<textarea class="themes-langues" spellcheck="false" name="attr_character_langues" data-i18n-placeholder="langues" placeholder="Langues connues"></textarea>
|
|
</div>
|
|
<div class="grid-character-vocation">
|
|
<span data-i18n="vocation:">Vocation : </span><br>
|
|
<textarea class="vocation" spellcheck="false" name="attr_character_vocation" data-i18n-placeholder="vocation" placeholder="Vocation"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Stats du personnage-->
|
|
<div class="page-block">
|
|
<div class="page-head">
|
|
<span data-i18n="statistiques">Statistiques </span>
|
|
</div>
|
|
<div class="grid-global-stats">
|
|
<!-- Stats principales et secondaires : exemple Physique - Puissance - Agilité -->
|
|
<div class="grid-stats">
|
|
<div class="grid-stats-physique">
|
|
<span data-i18n="physique">Physique </span>
|
|
</div>
|
|
<div class="grid-stats-social">
|
|
<span data-i18n="social">Social </span>
|
|
</div>
|
|
<div class="grid-stats-mental">
|
|
<span data-i18n="mental">Mental </span>
|
|
</div>
|
|
|
|
<div class="grid-stats-physique-value">
|
|
<input type="number" class="page-number-main" name="attr_physique">
|
|
|
|
<!-- On lance un dés qui s'affiche en rouge en cas d'échec critique (entre 96 et 100) et en vert en cas de réussite critique (5 ou moins)
|
|
et on affiche la stats concernée + les modificateurs bonus/malus
|
|
plus d'info : https://wiki.roll20.net/Dice_Reference#Critical_Success_and_Fumble_Points -->
|
|
|
|
<button type='roll' value='/me effectue un jet de Physique ! [[1d100cs<5cf>96]] vs: [[@{physique}+@{puissanceJ}+@{puissanceRMalus}+@{finesseJ}+@{finesseRMalus}+@{mod}]]' name='roll_Physique'></button>
|
|
|
|
<!-- le format de la value est une macro roll20 : https://wiki.roll20.net/Macros -->
|
|
</div>
|
|
<div class="grid-stats-social-value">
|
|
<input type="number" class="page-number-main" name="attr_social">
|
|
<button type='roll' value='/me effectue un jet de Social ! [[1d100cs<5cf>96]] vs: [[@{social}+@{auraJ}+@{auraRMalus}+@{relationJ}+@{relationRMalus}+@{mod}]]' name='roll_Social'></button>
|
|
</div>
|
|
<div class="grid-stats-mental-value">
|
|
<input type="number" class="page-number-main" name="attr_mental">
|
|
<button type='roll' value='/me effectue un jet de Mental ! [[1d100cs<5cf>96]] vs: [[@{mental}+@{instinctJ}+@{instinctRMalus}+@{savoirJ}+@{savoirRMalus}+@{mod}]]' name='roll_Mental'></button>
|
|
</div>
|
|
|
|
<div class="grid-stats-puissance">
|
|
<span data-i18n="puissance">Puissance </span>
|
|
</div>
|
|
<div class="grid-stats-finesse">
|
|
<span data-i18n="finesse">Finesse </span>
|
|
</div>
|
|
<div class="grid-stats-aura">
|
|
<span data-i18n="aura">Aura </span>
|
|
</div>
|
|
<div class="grid-stats-relations">
|
|
<span data-i18n="relations">Relations </span>
|
|
</div>
|
|
<div class="grid-stats-instinct">
|
|
<span data-i18n="instinct">Instinct </span>
|
|
</div>
|
|
<div class="grid-stats-savoir">
|
|
<span data-i18n="savoir">Savoir </span>
|
|
</div>
|
|
|
|
<!-- On définit en caché les jets possibles pour les sous-catégories des stats principales -->
|
|
<input type="number" disabled="true" class="page-query" value="?{type de dé|d6, 1d6cs1cf6|d8, 1d8cs1cf8|d10, 1d10cs1cf10|d12, 1d12cs1cf12|d20, 1d4cs1cf4}" name="attr_query">
|
|
|
|
<div class="grid-stats-puissance-value">
|
|
<input type="number" class="page-number" name="attr_puissance">
|
|
|
|
<!-- On lance le dés choisi par le joeur dans la query ci-dessus et on compare à la stat + le modificateur de bonus/malus -->
|
|
|
|
<button type='roll' value="/me effectue un jet de Puissance ! [[@{query}]] vs: [[(@{puissance}+@{puissance_bonus}+@{puissanceJ}/10+@{mod})*@{puissanceR}]]" name='roll_Puissance'></button>
|
|
</div>
|
|
<div class="grid-stats-finesse-value">
|
|
<input type="number" class="page-number" name="attr_finesse">
|
|
<button type='roll' value="/me effectue un jet de Finesse ! [[@{query}]] vs: [[(@{finesse}+@{finesse_bonus}+@{finesseJ}/10+@{mod})*@{finesseR}]]" name='roll_Finesse'></button>
|
|
</div>
|
|
<div class="grid-stats-aura-value">
|
|
<input type="number" class="page-number" name="attr_aura">
|
|
<button type='roll' value="/me effectue un jet d'Aura ! [[@{query}]] vs: [[(@{aura}+@{aura_bonus}+@{auraJ}/10+@{mod})*@{auraR}]]" name='roll_Aura'></button>
|
|
</div>
|
|
<div class="grid-stats-relations-value">
|
|
<input type="number" class="page-number" name="attr_relation">
|
|
<button type='roll' value="/me effectue un jet de Relations ! [[@{query}]] vs: [[(@{relation}+@{relation_bonus}+@{relationJ}/10+@{mod})*@{relationR}]]" name='roll_Relations'></button>
|
|
</div>
|
|
<div class="grid-stats-instinct-value">
|
|
<input type="number" class="page-number" name="attr_instinct">
|
|
<button type='roll' value="/me effectue un jet d'Instinct ! [[@{query}]] vs: [[(@{instinct}+@{instinct_bonus}+@{instinctJ}/10+@{mod})*@{instinctR}]]" name='roll_Instinct'></button>
|
|
</div>
|
|
<div class="grid-stats-savoir-value">
|
|
<input type="number" class="page-number" name="attr_savoir">
|
|
<button type='roll' value="/me effectue un jet de Savoir ! [[@{query}]] vs: [[(@{savoir}+@{savoir_bonus}+@{savoirJ}/10+@{mod})*@{savoirR}]]" name='roll_Savoir'></button>
|
|
</div>
|
|
|
|
<!-- Cartons de malus jaunes/rouges -->
|
|
<div class="grid-carton-puissance">
|
|
<input type='checkbox' class="page-carton-jaune" name='attr_puissance_jaune'/>
|
|
<input type='checkbox' class="page-carton-rouge" name='attr_puissance_rouge'/>
|
|
|
|
<!-- On définit la valeur des cartons, 0 par défaut -->
|
|
<input name="attr_puissanceJ" type="hidden" value="0">
|
|
<input name="attr_puissanceR" type="hidden" value="1">
|
|
<input name="attr_puissanceRMalus" type="hidden" value="0">
|
|
</div>
|
|
|
|
<div class="grid-carton-finesse">
|
|
<input type='checkbox' class="page-carton-jaune" name='attr_finesse_jaune'/>
|
|
<input type='checkbox' class="page-carton-rouge" name='attr_finesse_rouge'/>
|
|
|
|
<input name="attr_finesseJ" type="hidden" value="0">
|
|
<input name="attr_finesseR" type="hidden" value="1">
|
|
<input name="attr_finesseRMalus" type="hidden" value="0">
|
|
|
|
</div>
|
|
<div class="grid-carton-aura">
|
|
<input type='checkbox' class="page-carton-jaune" name='attr_aura_jaune'/>
|
|
<input type='checkbox' class="page-carton-rouge" name='attr_aura_rouge'/>
|
|
|
|
<input name="attr_auraJ" type="hidden" value="0">
|
|
<input name="attr_auraR" type="hidden" value="1">
|
|
<input name="attr_auraRMalus" type="hidden" value="0">
|
|
</div>
|
|
<div class="grid-carton-relation">
|
|
<input type='checkbox' class="page-carton-jaune" name='attr_relation_jaune'/>
|
|
<input type='checkbox' class="page-carton-rouge" name='attr_relation_rouge'/>
|
|
|
|
<input name="attr_relationJ" type="hidden" value="0">
|
|
<input name="attr_relationR" type="hidden" value="1">
|
|
<input name="attr_relationRMalus" type="hidden" value="0">
|
|
</div>
|
|
<div class="grid-carton-instinct">
|
|
<input type='checkbox' class="page-carton-jaune" name='attr_instinct_jaune'/>
|
|
<input type='checkbox' class="page-carton-rouge" name='attr_instinct_rouge'/>
|
|
|
|
<input name="attr_instinctJ" type="hidden" value="0">
|
|
<input name="attr_instinctR" type="hidden" value="1">
|
|
<input name="attr_instinctRMalus" type="hidden" value="0">
|
|
</div>
|
|
<div class="grid-carton-savoir">
|
|
<input type='checkbox' class="page-carton-jaune" name='attr_savoir_jaune'/>
|
|
<input type='checkbox' class="page-carton-rouge" name='attr_savoir_rouge'/>
|
|
|
|
<input name="attr_savoirJ" type="hidden" value="0">
|
|
<input name="attr_savoirR" type="hidden" value="1">
|
|
<input name="attr_savoirRMalus" type="hidden" value="0">
|
|
</div>
|
|
|
|
<!-- Bonus de sous-stats -->
|
|
|
|
<div class="grid-stats-bonus">
|
|
<span data-i18n="bonus">Bonus </span>
|
|
</div>
|
|
|
|
<!-- Valeurs des bonus de sous-stats -->
|
|
|
|
<div class="grid-bonus-puissance">
|
|
<input type="number" class="page-number" name="attr_puissance_bonus" value="0">
|
|
</div>
|
|
<div class="grid-bonus-finesse">
|
|
<input type="number" class="page-number" name="attr_finesse_bonus" value="0">
|
|
</div>
|
|
<div class="grid-bonus-aura">
|
|
<input type="number" class="page-number" name="attr_aura_bonus" value="0">
|
|
</div>
|
|
<div class="grid-bonus-relation">
|
|
<input type="number" class="page-number" name="attr_relation_bonus" value="0">
|
|
</div>
|
|
<div class="grid-bonus-instinct">
|
|
<input type="number" class="page-number" name="attr_instinct_bonus" value="0">
|
|
</div>
|
|
<div class="grid-bonus-savoir">
|
|
<input type="number" class="page-number" name="attr_savoir_bonus" value="0">
|
|
</div>
|
|
|
|
<!--Detail des bonus-->
|
|
<div class="grid-bonus-detail">
|
|
<textarea class="bonus-detail" spellcheck="false" name="attr_bonus_detail" data-i18n-placeholder="bonusdetails" placeholder="Détails des bonus"></textarea>
|
|
</div>
|
|
|
|
<!-- Avantage ou désavantage actif ? Sert de rappel pour le joueur/MJ -->
|
|
<div class="grid-avantage">
|
|
<span data-i18n="avantage">Avantage </span>
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Aventures/img/chained-heart.png" width="15px" height="15px">
|
|
<input type='checkbox' name='attr_avantage'/>
|
|
| <span data-i18n="desavantage">Désavantage </span>
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Aventures/img/broken-heart.png" width="12px" height="12px">
|
|
<input type='checkbox' name='attr_desavantage' />
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Stats ingame : Lvl, PV, Psy, ect... -->
|
|
<div class="grid-stats-ingame">
|
|
<div class="grid-stats-lvl">
|
|
<span data-i18n="niveau">Niveau </span>
|
|
</div>
|
|
<div class="grid-stats-lvl-value">
|
|
<input type="number" class="page-number-main" name="attr_niveau">
|
|
</div>
|
|
<div class="grid-stats-pv">
|
|
<span data-i18n="sante">Santé </span>
|
|
</div>
|
|
<div class="grid-stats-pv-value">
|
|
<input type="number" class="page-number-main" name="attr_sante">
|
|
/
|
|
<input type="number" class="page-number-bar-max" name="attr_sante_max">
|
|
</div>
|
|
<div class="grid-stats-psy">
|
|
<span data-i18n="psy">Psy </span>
|
|
</div>
|
|
<div class="grid-stats-psy-value">
|
|
<input type="number" class="page-number-main" name="attr_psy">
|
|
/
|
|
<input type="number" class="page-number-bar-max" name="attr_psy_max">
|
|
</div>
|
|
|
|
<div class="grid-stats-posture">
|
|
<span data-i18n="postureBase">Posture de base </span>
|
|
</div>
|
|
<div class="grid-stats-posture-value">
|
|
<select name="attr_posture" class="page-select">
|
|
<option value="posture" data-i18n="posture" selected>Posture </option>
|
|
<option value="offensif" data-i18n="offensif">Offensif </option>
|
|
<option value="defensif" data-i18n="defensif">Défensif </option>
|
|
<option value="focus" data-i18n="focus">Focus </option>
|
|
</select>
|
|
</div>
|
|
|
|
<!--Gestion des dés d'aventures et de mésaventures
|
|
possible d'utiliser le script suivant pour synchroniser le changement sur toutes les fiches de perso :
|
|
https://github.com/Roll20/roll20-api-scripts/blob/master/ChatSetAttr/README.md-->
|
|
<div class="grid-des-aventures-des">
|
|
<span data-i18n="desAventures">Dés d'aventures</span>
|
|
<button type='roll' value="&{template:default} {{name=lance un dés d'aventures}} {{Roll=[[1d6]]}} {{1-2=Déplacement.}} {{3-4=Posture.}} {{5-6=In extremis.}}" name='roll_desAventures_button'></button>
|
|
</div>
|
|
<div class="grid-des-aventures-reste">
|
|
<span data-i18n="restant">Restant : </span>
|
|
<input type="number" class="page-number" name="attr_desAventures" value="2"/>
|
|
<button type="action" name="act_aventureDice" class="des_buttons" ><img
|
|
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Aventures/img/minus.png"
|
|
width="10px"/></button>
|
|
|
|
</div>
|
|
<div class="grid-des-mesaventures-des">
|
|
<span data-i18n="desMesaventures">Dés de mésaventures</span>
|
|
<button type='roll' value="&{template:default} {{name=lance un dés de mésaventures}} {{Roll=[[1d6]]}} {{1-2=Déplacement.}} {{3-4=Posture.}} {{5-6=In extremis.}}" name='roll_desMesaventures_button'></button>
|
|
</div>
|
|
<div class="grid-des-mesaventures-reste">
|
|
<span data-i18n="restant">Restant : </span>
|
|
<input type="number" class="page-number" name="attr_desMesaventures" value="2"/>
|
|
<button type="action" name="act_mesaventureDice" class="des_buttons" ><img
|
|
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Aventures/img/minus.png"
|
|
width="10px"/></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Mise en place des tabs, par défaut sur competences -->
|
|
<input type="hidden" class="page-tabstoggle" name="attr_pageTab" value="competences"/>
|
|
|
|
<div class="tab" name="attr_tab">
|
|
<button class="tablinks" type="action" name="act_competences"><span data-i18n="competences">Compétences </span></button>
|
|
<button class="tablinks" type="action" name="act_equipement"><span data-i18n="equipement">Équipement </span></button>
|
|
</div>
|
|
|
|
<div class="page-competences">
|
|
<!-- Compétences et dons -->
|
|
<div class="page-block">
|
|
<div class="page-head">
|
|
<span data-i18n="competencesetdons">Compétences et dons </span>
|
|
</div>
|
|
<div class="grid-competences-dons">
|
|
|
|
<!-- Répétitions de compétences, création de ligne à la volé -->
|
|
<div class='grid-competences'>
|
|
<span data-i18n="competences">Compétences </span>
|
|
<div>
|
|
<input type="text" class="page-text-competence" spellcheck="false" name="attr_competence_3" data-i18n-placeholder="competencenom" placeholder="Nom de la compétence"/>
|
|
<select name="attr_competence_attr" class="page-select">
|
|
<option value="0" data-i18n="attribut" selected>Attribut</option>
|
|
<option value="[[@{physique}+@{puissanceJ}+@{puissanceRMalus}+@{finesseJ}+@{finesseRMalus}+@{mod}]]" data-i18n="physique">Physique</option>
|
|
<option value="[[@{social}+@{auraJ}+@{auraRMalus}+@{relationJ}+@{relationRMalus}+@{mod}]]" data-i18n="social">Social</option>
|
|
<option value="[[@{mental}+@{instinctJ}+@{instinctRMalus}+@{savoirJ}+@{savoirRMalus}+@{mod}]]" data-i18n="mental">Mental</option>
|
|
</select>
|
|
+
|
|
<input type="number" class="page-number-long" name="attr_competence_4">
|
|
<!-- On lance un test de compétence en prenant en compte la stat principale + le bonus de compétence + le modificateur de bonus/malus -->
|
|
<button type='roll' value="/me teste sa compétence @{competence_3} ! [[1d100cs<5cf>96]] vs: [[@{competence_attr}+@{competence_4}+@{mod}]]" name='roll_Comp'></button>
|
|
</div>
|
|
<fieldset class="repeating_competences">
|
|
<div>
|
|
<input type="text" class="page-text-competence" spellcheck="false" name="attr_competence_3" data-i18n-placeholder="competencenom" placeholder="Nom de la compétence"/>
|
|
<select name="attr_competence_attr" class="page-select">
|
|
<option value="0" data-i18n="attribut">Attribut</option>
|
|
<option value="[[@{physique}+@{puissanceJ}+@{puissanceRMalus}+@{finesseJ}+@{finesseRMalus}+@{mod}]]" data-i18n="physique">Physique</option>
|
|
<option value="[[@{social}+@{auraJ}+@{auraRMalus}+@{relationJ}+@{relationRMalus}+@{mod}]]" data-i18n="social">Social</option>
|
|
<option value="[[@{mental}+@{instinctJ}+@{instinctRMalus}+@{savoirJ}+@{savoirRMalus}+@{mod}]]" data-i18n="mental">Mental</option>
|
|
</select>
|
|
+
|
|
<input type="number" class="page-number-long" name="attr_competence_4">
|
|
<!-- On lance un test de compétence en prenant en compte la stat principale + le bonus de compétence + le modificateur de bonus/malus -->
|
|
<button type='roll' value="/me teste sa compétence @{competence_3} ! [[1d100cs<5cf>96]] vs: [[@{competence_attr}+@{competence_4}+@{mod}]]" name='roll_Comp'></button>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<!-- Répétitions de dons, création de ligne à la volé -->
|
|
<div class='grid-dons'>
|
|
<span data-i18n="dons">Dons </span>
|
|
<div> <!--Création d'une première ligne-->
|
|
<input type="text" class="page-text-don" spellcheck="false" name="attr_dons_3" data-i18n-placeholder="donname" placeholder="Nom du don"/>
|
|
<input type="number" data-i18n-placeholder="psy" placeholder="Psy" class="page-number-don-cost" name="attr_dons_4">
|
|
<input type="number" name="attr_don_dmgdice" class="page-number" placeholder="1">
|
|
<select name="attr_don_dX" class="page-comp-dX-select" data-i18n-placeholder="type" placeholder="Type">
|
|
<option value="x">d?</option>
|
|
<option value="d4">d4</option>
|
|
<option value="d6">d6</option>
|
|
<option value="d8">d8</option>
|
|
<option value="d10">d10</option>
|
|
<option value="d12">d12</option>
|
|
<option value="d20">d20</option>
|
|
</select>
|
|
+
|
|
<input type="number" name="attr_don_mod" class="page-number" placeholder="0">
|
|
<button type='roll' value="/me lance le sort @{dons_3} et inflige [[(@{don_dmgdice}@{don_dX})+@{don_mod}+@{mod}]] !" name='roll_dmg'></button>
|
|
</div>
|
|
|
|
<fieldset class="repeating_dons">
|
|
<div> <!--Création de lignes supplémentaires-->
|
|
<input type="text" class="page-text-don" spellcheck="false" name="attr_dons_3" data-i18n-placeholder="donname" placeholder="Nom du don"/>
|
|
<input type="number" data-i18n-placeholder="psy" placeholder="Psy" class="page-number-don-cost" name="attr_dons_4">
|
|
<input type="number" name="attr_don_dmgdice" class="page-number" placeholder="1">
|
|
<select name="attr_don_dX" class="page-comp-dX-select" data-i18n-placeholder="type" placeholder="Type">
|
|
<option value="x">d?</option>
|
|
<option value="d4">d4</option>
|
|
<option value="d6">d6</option>
|
|
<option value="d8">d8</option>
|
|
<option value="d10">d10</option>
|
|
<option value="d12">d12</option>
|
|
<option value="d20">d20</option>
|
|
</select>
|
|
+
|
|
<input type="number" name="attr_don_mod" class="page-number" placeholder="0">
|
|
<!-- On lance le don et les dégâts de celui-ci. Attention, le coût en psy n'est pas retiré automatiquement, les macros roll20 ne le permettent pas -->
|
|
<button type='roll' value="/me lance le sort @{dons_3} et inflige [[(@{don_dmgdice}@{don_dX})+@{don_mod}+@{mod}]] !" name='roll_dmg'></button>
|
|
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="grid-competences-passiv">
|
|
<span data-i18n="passives">Passives </span> <br>
|
|
<textarea class="textarea.passiv" spellcheck="false" name="attr_competencespassives" data-i18n-placeholder="passivesdetails" placeholder="Compétences passives" ></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="page-equipement">
|
|
<!-- Equipement -->
|
|
<div class="page-block">
|
|
<div class="page-head">
|
|
<span data-i18n="equipement">Équipement </span>
|
|
</div>
|
|
<div class="grid-equipement">
|
|
|
|
<!-- Répétitions d'armes, création de ligne à la volé -->
|
|
<div class="grid-armes">
|
|
<span data-i18n="armes">Armes </span>
|
|
<div>
|
|
<input type="text" class="page-arme" spellcheck="false" name="attr_arme" data-i18n-placeholder="armenom" placeholder="Nom de l'arme" />
|
|
<select name="attr_arme_type" class="page-select">
|
|
<option value="" data-i18n="type">Type</option>
|
|
<option value="perforant" data-i18n="perforant">Perforant</option>
|
|
<option value="tranchant" data-i18n="tranchant">Tranchant</option>
|
|
<option value="contondant" data-i18n="contondant">Contondant</option>
|
|
</select>
|
|
<input type="number" name="attr_dmgdice" class="page-number" placeholder="1">
|
|
<select name="attr_dX" class="page-comp-dX-select" data-i18n-placeholder="type" placeholder="Type">
|
|
<option value="x">d?</option>
|
|
<option value="d4">d4</option>
|
|
<option value="d6">d6</option>
|
|
<option value="d8">d8</option>
|
|
<option value="d10">d10</option>
|
|
<option value="d12">d12</option>
|
|
<option value="d20">d20</option>
|
|
</select>
|
|
+
|
|
<input type="number" class="page-number" name="attr_dmgmod">
|
|
|
|
<!-- On affiche le nombre de dégât en prenant en compte les dégâts fixes et le type de dégât en fonction de l'arme -->
|
|
<button type='roll' value='/me inflige [[(@{dmgdice}@{dX})+@{dmgmod}]] de dégâts @{arme_type} avec @{arme} !' name='roll_dmg'></button>
|
|
</div>
|
|
<fieldset class="repeating_weapons">
|
|
<div>
|
|
<input type="text" class="page-arme" spellcheck="false" name="attr_arme" data-i18n-placeholder="armenom" placeholder="Nom de l'arme" />
|
|
<select name="attr_arme_type" class="page-select">
|
|
<option value="" data-i18n="type">Type</option>
|
|
<option value="perforant" data-i18n="perforant">Perforant</option>
|
|
<option value="tranchant" data-i18n="tranchant">Tranchant</option>
|
|
<option value="contondant" data-i18n="contondant">Contondant</option>
|
|
</select>
|
|
<input type="number" name="attr_dmgdice" class="page-number" placeholder="1">
|
|
<select name="attr_dX" class="page-comp-dX-select" data-i18n-placeholder="type" placeholder="Type">
|
|
<option value="x">d?</option>
|
|
<option value="d4">d4</option>
|
|
<option value="d6">d6</option>
|
|
<option value="d8">d8</option>
|
|
<option value="d10">d10</option>
|
|
<option value="d12">d12</option>
|
|
<option value="d20">d20</option>
|
|
</select>
|
|
+
|
|
<input type="number" class="page-number" name="attr_dmgmod">
|
|
|
|
<!-- On affiche le nombre de dégât en prenant en compte les dégâts fixes et le type de dégât en fonction de l'arme -->
|
|
<button type='roll' value='/me inflige [[(@{dmgdice}@{dX})+@{dmgmod}]] de dégâts @{arme_type} avec @{arme} !' name='roll_dmg'></button>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<!-- Répétitions d'armures, création de ligne à la volé -->
|
|
<div class="grid-armure">
|
|
<span data-i18n="armure">Armure </span>
|
|
<div>
|
|
<input type="text" class="page-armure" spellcheck="false" name="attr_equipement_7" data-i18n-placeholder="armurenom" placeholder="Nom de l'armure" />
|
|
<input type="number" class="page-number-long" name="attr_equipement_8" data-i18n-placeholder="physiquereduit" placeholder="Phy" />
|
|
</div>
|
|
<fieldset class="repeating_equipements2">
|
|
<div>
|
|
<input type="text" class="page-armure" spellcheck="false" name="attr_equipement_7" data-i18n-placeholder="armurenom" placeholder="Nom de l'armure" />
|
|
<input type="number" class="page-number-long" name="attr_equipement_8" data-i18n-placeholder="physiquereduit" placeholder="Phy" />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<!-- Répétitions d'équipements, création de ligne à la volé -->
|
|
<div class="grid-sac">
|
|
<span data-i18n="equipementtotal">Equipement total </span>
|
|
<div>
|
|
<input type="text" class="page-objet-nom" spellcheck="false" name="attr_equipement_5" data-i18n-placeholder="objet" placeholder="Objet" />
|
|
<input type="number" class="page-number-long" spellcheck="false" name="attr_equipement_6" data-i18n-placeholder="quantitereduit" placeholder="Qté" />
|
|
</div>
|
|
<fieldset class="repeating_equipements1">
|
|
<div>
|
|
<input type="text" class="page-objet-nom" spellcheck="false" name="attr_equipement_5" data-i18n-placeholder="objet" placeholder="Objet" />
|
|
<input type="number" class="page-number-long" spellcheck="false" name="attr_equipement_6" data-i18n-placeholder="quantitereduit" placeholder="Qté" />
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<!-- Champ libre -->
|
|
<div class="grid-autre">
|
|
<span data-i18n="autres">Autres </span>
|
|
<div>
|
|
<textarea class="textarea.autres" spellcheck="false" name="attr_autre" data-i18n-placeholder="autres" placeholder="Autres" ></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Active/Desactive l'ajout d'une boite de dialogue pour ajouter des bonus/malus aux jets -->
|
|
<div class="page-options">
|
|
<span data-i18n="jetbonusmalus">Bonus/Malus dans les jets : </span> <input type="checkbox" value="?{Bonus/malus|0}[mod]" name="attr_mod" checked="true">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ver"> Ver. 3.0 </div><!-- Version format: [Nb de prod].[Modifs post-prod] -->
|
|
|
|
<!-- Scripts -->
|
|
<script type="text/worker">
|
|
//Lignes d'équipement total
|
|
on('change:repeating_equipements remove:repeating_equipements', function() {
|
|
repeatingSum("poids_total","equipements",["equipement_poids","equipement_nombre"]);
|
|
});
|
|
|
|
//IDs des nouvelles lignes créées à la volée
|
|
on(`page:opened`, function() {
|
|
getAttrs(["code_version","competence_1","competence_2","don_1","don_2","equipement_1","equipement_2","equipement_3","equipement_4"], values => {
|
|
let version = parseInt(values.code_version)||0;
|
|
if(version < 1) {
|
|
var newrowattrs = {};
|
|
newrowattrs['code_version'] = 1;
|
|
|
|
newrowid = generateRowID();
|
|
newrowattrs["repeating_competences_" + newrowid + "_competence_3"] = values.competence_1;
|
|
newrowattrs["repeating_competences_" + newrowid + "_competence_4"] = values.competence_2;
|
|
|
|
newrowid = generateRowID();
|
|
newrowattrs["repeating_dons_" + newrowid + "_dons_3"] = values.don_1;
|
|
newrowattrs["repeating_dons_" + newrowid + "_dons_4"] = values.don_2;
|
|
newrowattrs["repeating_dons_" + newrowid + "_don_dmgdice"] = "values.don_dmgdice";
|
|
newrowattrs["repeating_dons_" + newrowid + "_don_dX"] = "values.don_dX";
|
|
newrowattrs["repeating_dons_" + newrowid + "_don_mod"] = "values.don_mod";
|
|
|
|
newrowid = generateRowID();
|
|
newrowattrs["repeating_weapons_" + newrowid + "_arme"] = "values.arme";
|
|
newrowattrs["repeating_weapons_" + newrowid + "_arme_type"] = "values.arme_type";
|
|
newrowattrs["repeating_weapons_" + newrowid + "_dmgdice"] = "values.dmgdice";
|
|
newrowattrs["repeating_weapons_" + newrowid + "_dX"] = "values.dX";
|
|
newrowattrs["repeating_weapons_" + newrowid + "_dmgmod"] = "values.dmgmod";
|
|
|
|
newrowid = generateRowID();
|
|
newrowattrs["repeating_equipements1_" + newrowid + "_equipement_5"] = values.equipement_1;
|
|
newrowattrs["repeating_equipements1_" + newrowid + "_equipement_6"] = values.equipement_2;
|
|
|
|
newrowid = generateRowID();
|
|
newrowattrs["repeating_equipements2_" + newrowid + "_equipement_7"] = values.equipement_3;
|
|
newrowattrs["repeating_equipements2_" + newrowid + "_equipement_8"] = values.equipement_4;
|
|
|
|
setAttrs(newrowattrs);
|
|
}
|
|
});
|
|
});
|
|
|
|
// Scripts de gestion des dés d'aventures et mésaventures
|
|
|
|
on('clicked:aventureDice', function() {
|
|
getAttrs(['desAventures', "desMesaventures"], function(values) {
|
|
let nbAventures = parseInt(values.desAventures)||0;
|
|
let nbMesaventures = parseInt(values.desMesaventures)||0;
|
|
|
|
if (nbAventures != 0) {
|
|
setAttrs({
|
|
desAventures: nbAventures-1,
|
|
desMesaventures: nbMesaventures+1
|
|
});
|
|
} else {
|
|
}
|
|
});
|
|
});
|
|
|
|
on('clicked:mesaventureDice', function() {
|
|
getAttrs(['desAventures', "desMesaventures"], function(values) {
|
|
let nbAventures = parseInt(values.desAventures)||0;
|
|
let nbMesaventures = parseInt(values.desMesaventures)||0;
|
|
|
|
if (nbMesaventures != 0) {
|
|
setAttrs({
|
|
desAventures: nbAventures+1,
|
|
desMesaventures: nbMesaventures-1
|
|
});
|
|
|
|
} else {
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
// Scripts de calcul des malus de cartons jaune et rouge
|
|
|
|
//Applique -10% aux jets de Physique et -1 aux jets de puissance
|
|
on('change:puissance_jaune', function() {
|
|
getAttrs(['puissance_jaune', "puissanceJ"], function(values) {
|
|
if (values.puissance_jaune == 'on') {
|
|
setAttrs({
|
|
puissanceJ: -10
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
puissanceJ: 0
|
|
});
|
|
}
|
|
});
|
|
});
|
|
//Applique -(Valeur de puissance * 10)% aux jets de Physique et empèche les jets de puissance
|
|
on('change:puissance_rouge ; puissance_jaune', function() {
|
|
getAttrs(['puissance_rouge', "puissanceR", "puissanceRMalus", "puissance", "puissance_bonus", "puissanceJ"], function(values) {
|
|
let puissanceMalus = parseInt(values.puissanceRMalus)||0;
|
|
let puissance = parseInt(values.puissance)||0;
|
|
let puissanceBonus = parseInt(values.puissance_bonus)||0;
|
|
let puissanceJ = parseInt(values.puissanceJ)||0;
|
|
|
|
puissanceMalus = (puissance + puissanceBonus -1) * -10;
|
|
|
|
if (values.puissance_rouge == 'on') {
|
|
setAttrs({
|
|
puissanceRMalus: puissanceMalus,
|
|
puissanceR: 0
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
puissanceRMalus: 0,
|
|
puissanceR: 1
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
//Applique -10% aux jets de Physique et -1 aux jets de finesse
|
|
on('change:finesse_jaune', function() {
|
|
getAttrs(['finesse_jaune', "finesseJ"], function(values) {
|
|
if (values.finesse_jaune == 'on') {
|
|
setAttrs({
|
|
finesseJ: -10
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
finesseJ: 0
|
|
});
|
|
}
|
|
});
|
|
});
|
|
//Applique -(Valeur de finesse * 10)% aux jets de Physique et empèche les jets de finesse
|
|
on('change:finesse_rouge ; finesse_jaune', function() {
|
|
getAttrs(['finesse_rouge', "finesseR", "finesseRMalus", "finesse", "finesse_bonus", "finesseJ"], function(values) {
|
|
let finesseMalus = parseInt(values.finesseRMalus)||0;
|
|
let finesse = parseInt(values.finesse)||0;
|
|
let finesseBonus = parseInt(values.finesse_bonus)||0;
|
|
let finesseJ = parseInt(values.finesseJ)||0;
|
|
|
|
finesseMalus = (finesse + finesseBonus -1) * -10;
|
|
|
|
if (values.finesse_rouge == 'on') {
|
|
setAttrs({
|
|
finesseRMalus: finesseMalus,
|
|
finesseR: 0
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
finesseRMalus: 0,
|
|
finesseR: 1
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
//Applique -10% aux jets de Social et -1 aux jets de aura
|
|
on('change:aura_jaune', function() {
|
|
getAttrs(['aura_jaune', "auraJ"], function(values) {
|
|
if (values.aura_jaune == 'on') {
|
|
setAttrs({
|
|
auraJ: -10
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
auraJ: 0
|
|
});
|
|
}
|
|
});
|
|
});
|
|
//Applique -(Valeur de aura * 10)% aux jets de Social et empèche les jets de aura
|
|
on('change:aura_rouge ; aura_jaune', function() {
|
|
getAttrs(['aura_rouge', "auraR", "auraRMalus", "aura", "aura_bonus", "auraJ"], function(values) {
|
|
let auraMalus = parseInt(values.auraRMalus)||0;
|
|
let aura = parseInt(values.aura)||0;
|
|
let auraBonus = parseInt(values.aura_bonus)||0;
|
|
let auraJ = parseInt(values.auraJ)||0;
|
|
|
|
auraMalus = (aura + auraBonus -1) * -10;
|
|
|
|
if (values.aura_rouge == 'on') {
|
|
setAttrs({
|
|
auraRMalus: auraMalus,
|
|
auraR: 0
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
auraRMalus: 0,
|
|
auraR: 1
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
//Applique -10% aux jets de Social et -1 aux jets de relation
|
|
on('change:relation_jaune', function() {
|
|
getAttrs(['relation_jaune', "relationJ"], function(values) {
|
|
if (values.relation_jaune == 'on') {
|
|
setAttrs({
|
|
relationJ: -10
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
relationJ: 0
|
|
});
|
|
}
|
|
});
|
|
});
|
|
//Applique -(Valeur de relation * 10)% aux jets de Social et empèche les jets de relation
|
|
on('change:relation_rouge ; relation_jaune', function() {
|
|
getAttrs(['relation_rouge', "relationR", "relationRMalus", "relation", "relation_bonus", "relationJ"], function(values) {
|
|
let relationMalus = parseInt(values.relationRMalus)||0;
|
|
let relation = parseInt(values.relation)||0;
|
|
let relationBonus = parseInt(values.relation_bonus)||0;
|
|
let relationJ = parseInt(values.relationJ)||0;
|
|
|
|
relationMalus = (relation + relationBonus -1) * -10;
|
|
|
|
if (values.relation_rouge == 'on') {
|
|
setAttrs({
|
|
relationRMalus: relationMalus,
|
|
relationR: 0
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
relationRMalus: 0,
|
|
relationR: 1
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
//Applique -10% aux jets de Mental et -1 aux jets de instinct
|
|
on('change:instinct_jaune', function() {
|
|
getAttrs(['instinct_jaune', "instinctJ"], function(values) {
|
|
if (values.instinct_jaune == 'on') {
|
|
setAttrs({
|
|
instinctJ: -10
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
instinctJ: 0
|
|
});
|
|
}
|
|
});
|
|
});
|
|
//Applique -(Valeur de instinct * 10)% aux jets de Mental et empèche les jets de instinct
|
|
on('change:instinct_rouge ; instinct_jaune', function() {
|
|
getAttrs(['instinct_rouge', "instinctR", "instinctRMalus", "instinct", "instinct_bonus", "instinctJ"], function(values) {
|
|
let instinctMalus = parseInt(values.instinctRMalus)||0;
|
|
let instinct = parseInt(values.instinct)||0;
|
|
let instinctBonus = parseInt(values.instinct_bonus)||0;
|
|
let instinctJ = parseInt(values.instinctJ)||0;
|
|
|
|
instinctMalus = (instinct + instinctBonus -1) * -10;
|
|
|
|
if (values.instinct_rouge == 'on') {
|
|
setAttrs({
|
|
instinctRMalus: instinctMalus,
|
|
instinctR: 0
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
instinctRMalus: 0,
|
|
instinctR: 1
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
//Applique -10% aux jets de Mental et -1 aux jets de savoir
|
|
on('change:savoir_jaune', function() {
|
|
getAttrs(['savoir_jaune', "savoirJ"], function(values) {
|
|
if (values.savoir_jaune == 'on') {
|
|
setAttrs({
|
|
savoirJ: -10
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
savoirJ: 0
|
|
});
|
|
}
|
|
});
|
|
});
|
|
//Applique -(Valeur de savoir * 10)% aux jets de Mental et empèche les jets de savoir
|
|
on('change:savoir_rouge ; savoir_jaune', function() {
|
|
getAttrs(['savoir_rouge', "savoirR", "savoirRMalus", "savoir", "savoir_bonus", "savoirJ"], function(values) {
|
|
let savoirMalus = parseInt(values.savoirRMalus)||0;
|
|
let savoir = parseInt(values.savoir)||0;
|
|
let savoirBonus = parseInt(values.savoir_bonus)||0;
|
|
let savoirJ = parseInt(values.savoirJ)||0;
|
|
|
|
savoirMalus = (savoir + savoirBonus -1) * -10;
|
|
|
|
if (values.savoir_rouge == 'on') {
|
|
setAttrs({
|
|
savoirRMalus: savoirMalus,
|
|
savoirR: 0
|
|
});
|
|
} else {
|
|
setAttrs({
|
|
savoirRMalus: 0,
|
|
savoirR: 1
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
//Gestion des tabs
|
|
const buttontablist = ["competences","equipement"];
|
|
buttontablist.forEach(button => {
|
|
on(`clicked:${button}`, function() {
|
|
setAttrs({
|
|
pageTab: button
|
|
});
|
|
});
|
|
});
|
|
</script>
|