Files
roll20-character-sheets/ChroniquesOubliees/co.html
T

5569 lines
261 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div class="mainBg"> <!-- FDP -->
<input type="hidden" name="attr_version" value="5.00" />
<!-- INPUT HIDDEN TYPE DE JETS -->
<input type="hidden" name="attr_jetnormal" value="1d@{ETATDE}" />
<input type="hidden" name="attr_jetsup" value="2d@{ETATDE}kh1" />
<input type="hidden" name="attr_jetsuphero" value="{2d@{ETATDE}kh1, 0d20+10}kh1" />
<!-- FIN Type de jets -->
<input type="hidden" name="attr_pnj_default_jets_caches" value="false" />
<input type="hidden" name="attr_max_attack_label" value=0 />
<input type="hidden" name="attr_maxrangaction" value=0 />
<input type="hidden" name="attr_titrevoie4" value="Voie 4" />
<input type="hidden" name="attr_titrevoie5" value="Voie 5" />
<input type="hidden" name="attr_titrecapaciteraciale" value="Capacité raciale" />
<div><!-- Identité -->
<input type="radio" name="attr_option_setting" class="hidden-tab setting-generic" value="generique" checked="checked"><span title="Chroniques Oubliées"></span>
<input type="radio" name="attr_option_setting" class="hidden-tab setting-arran" value="arran"><span title="Terres d'Arran"></span>
<div class="tab-content setting-generic">
<div class = "container" >
<div style="vertical-align: middle;text-align: center;">
<img style="width:70%;" title="Version 5.00 - 09/07/2021" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/CO_Logo3.png"/><br>
</div>
<div style="width:250px;">
<table>
<tr>
<td class="textfatleft">
<input class="block-switch-arrow" name="attr_aliasoptflag" type="checkbox" title="Montrer/cacher l'alias" style="left:-6px;">
<span style="margin-left:-15px;">
<span style="margin-left:9px;">Nom</span>
</span>
<div class="block-show-arrow">
<span style="display:inline-block; padding-top:4px;">Alias</span>
</div>
</td>
<td colspan="3">
<input class="nobox" name="attr_character_name" type="text" />
<input class="optional-block-switch" name="attr_aliasoptflag" type="checkbox" />
<div class="optional-block">
<input class="nobox" name="attr_alias" type="text" />
</div>
</td>
</tr>
<tr><td class="textfatleft">Race</td><td colspan="3"><input class="nobox" name="attr_race" type="text" /></td></tr>
<tr>
<td class="textfatleft">Profil</td><td colspan="3"><input class="nobox" name="attr_profil" type="text" /></td>
</tr>
<tr>
<td class="textfatleft">Niveau</td>
<td style="text-align:left;"><input class="nobox" name="attr_niveau" type="number" value="1" min="0" /></td>
<td class="textfatleft">Type</td>
<td class="boxinput">
<select class="carac" name="attr_type_personnage" size="1" title="@{type_personnage}">
<option value="PJ" selected>PJ</option>
<option value="PNJ">PNJ</option>
</select>
</td>
</tr>
</table>
</div>
<div style="width:130px;">
<table>
<tr>
<td class="textfatleft">
<input class="optional-block-switch" name="attr_aliasoptflag" type="checkbox" />
<div class="optional-block">
<span style="display:inline-block; padding-top:2px; padding-bottom:2px;">Connu</span>
</div>
Sexe
</td>
<td>
<input class="optional-block-switch" name="attr_aliasoptflag" type="checkbox" />
<div class="optional-block">
<select style="width:70px;" name="attr_displayname" title="@{displayname}">
<option value="@{character_name}" selected>de nom</option>
<option value="@{alias}">alias</option>
</select>
</div>
<input class="nobox" name="attr_sexe" type="text" />
</td>
</tr>
<tr><td class="textfatleft">Âge</td><td><input class="nobox" name="attr_age" type="text" /></td></tr>
<tr><td class="textfatleft">Taille</td><td><input class="nobox" name="attr_taille" type="text" /></td></tr>
<tr><td class="textfatleft">Poids</td><td><input class="nobox" name="attr_poids" type="text" /></td></tr>
</table>
</div>
</div>
</div>
<div class="tab-content setting-arran"><!-- version pour terres d'Arran -->
<input type="hidden" name="attr_famille_par_defaut" value=1 />
<div class = "container" style="width:810px;">
<div style="width:300px;">
<table>
<tr>
<td class="textfatleft">Nom</td>
<td colspan="3"><input class="nobox" name="attr_character_name" type="text" /></td>
</tr>
<tr>
<td class="textfatleft">Profil</td>
<td colspan="3"><input class="nobox" name="attr_profil" type="text" /></td>
</tr>
<tr>
<td class="textfatleft">Peuple</td>
<td colspan="3"><input class="nobox" name="attr_race" type="text" /></td>
</tr>
<tr>
<td class="textfatleft">Culture</td>
<td colspan="3"><input class="nobox" name="attr_culture" type="text" /></td>
</tr>
</tr>
<tr>
<td class="textfatleft">Famille</td>
<td><select style="width:92px;" name="attr_famille">
<option value="aventurier" selected>Aventurier</option>
<option value="combattant" >Combattant</option>
<option value="mystique" >Mystique</option>
</select>
</td>
<td class="textfatleft">Niveau</td>
<td style="text-align:left;"><input class="nobox" name="attr_niveau" type="number" value="1" min="0" /></td>
</tr>
</table>
</div>
<div style="vertical-align: middle;text-align: center;">
<!--
<img style="width:135px;" title="Version 5.00 - 09/07/2021" src="https://www.black-book-editions.fr/contenu/image/Images_divers/JDR_Terres%20dArran/Tampon_TerredArran_v1.jpg"/><br>
-->
<img title="Logo supprimé à la demande de BBE" src="https://via.placeholder.com/250x100.png?text=Logo+supprime+a+la+demande+de+BBE" alt="Logo des Terres d'Arran supprimé &#13; à la demande de Black Book Edition"/><br>
</div>
<div style="width:220px;">
<table>
<tr>
<td class="textfatleft">Alias</td>
<td colspan="3"><input class="nobox" name="attr_alias" type="text" /></td>
</tr>
<tr>
<td> Connu </td>
<td colspan="3">
<select style="width:110px;" name="attr_displayname" title="@{displayname}">
<option value="@{character_name}" selected>de nom</option>
<option value="@{alias}">par son alias</option>
</select>
</td>
</tr>
<tr>
<td class="textfatleft">Genre</td>
<td><input class="nobox" name="attr_sexe" type="text" /></td>
<td class="textfatleft">Âge</td>
<td><input class="nobox" name="attr_age" type="text" /></td>
</tr>
<tr>
<td class="textfatleft">Taille</td>
<td><input class="nobox" name="attr_taille" type="text" /></td>
<td class="textfatleft">Poids</td>
<td><input class="nobox" name="attr_poids" type="text" /></td>
</tr>
<tr>
<td class="textfatleft">Type</td>
<td class="boxinput">
<select class="carac" name="attr_type_personnage" size="1" title="@{type_personnage}">
<option value="PJ" selected>PJ</option>
<option value="PNJ">PNJ</option>
</select>
</td>
</tr>
</table>
</div>
</div>
</div>
</div> <!-- FIN Identité -->
<input type="radio" name="attr_type_personnage" class="hidden-tab fp1" value="PJ" checked="checked"><span title="Personnage"></span>
<input type="radio" name="attr_type_personnage" class="hidden-tab fp2" value="PNJ"><span title="PNJ"></span>
<div class="tab-content fp1"><!-- La fiche PJ -->
<input type="radio" name="attr_tab" class="tab tab1" value="caracteristiques" checked="checked"><span title="Caractéristiques"></span>
<input type="radio" name="attr_tab" class="tab tab2" value="Capacites"><span title="Capacités"></span>
<input type="radio" name="attr_tab" class="tab tab3" value="Equipement"><span title="Équipement"></span>
<input type="radio" name="attr_tab" class="tab tab4" value="Options"><span title="Configuration"></span>
<input type="radio" name="attr_tab" class="tab tab5" value="Script"><span title="Script"></span>
<img class="imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
<div class="tab-content tab1">
<div class="containerl"> <!-- Caracs + combat + PV + défense -->
<div> <!-- Caracs -->
<table class="tabsep">
<tr>
<td class="textfat-car">CARAC.</td>
<td></td>
<td class="textbase-car">Valeur</td>
<td class="textfat-car">Mod.</td>
<td class="textbase-car">Bonus</td>
<td class="textfat-car">Test</td>
</tr>
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_FOR" title="Jet de Force" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Force}} {{subtags=Caractéristique}} {{carac=[[ @{for_sup}[Dé] + [[@{FOR_TEST}]][Bonus] ]] }}"> FOR</button>
</td>
<td class="boxinputlight-car">
<select class="selectmin-car" name="attr_for_sup" title="Caractéristique Normale ou Supérieure (Règle optionnelle page 138)">
<option value="@{jetnormal}" selected>N Normale</option>
<option value="@{jetsup}">S Supérieure OU Héroïque</option>
<option value="@{jetsuphero}">H Supérieure ET Héroïque</option>
</select>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_force" title="Force" value="10" min="0"/>
</td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_FOR" value="floor((@{force}-10)/2)" disabled /></td>
<td class="boxinput-car"><input type="number" class="car" name="attr_FOR_BONUS" value="0" title="Bonus au Test" /></td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_FOR_TEST" value="@{FOR}+@{FOR_BONUS}" disabled /></td>
</tr>
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_DEX" title="Jet de Dextérité" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Dextérité}} {{subtags=Caractéristique}} {{carac=[[ @{dex_sup}[Dé] + [[@{DEX_TEST}]][Bonus] ]]}}"> DEX</button>
</td>
<td class="boxinputlight-car">
<select class="selectmin-car" name="attr_dex_sup" title="Caractéristique Normale ou Supérieure (Règle optionnelle page 138)">
<option value="@{jetnormal}" selected>N Normale</option>
<option value="@{jetsup}">S Supérieure OU Héroïque</option>
<option value="@{jetsuphero}">H Supérieure ET Héroïque</option>
</select>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_dexterite" title="Dextérité" value="10" min="0" />
</td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_DEX" value="floor((@{dexterite}-10)/2)" disabled /></td>
<td class="boxinput-car"><input type="number" class="car" name="attr_DEX_BONUS" value="0" title="Bonus au Test" /></td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_DEX_TEST" value="@{DEX}+@{DEX_BONUS}-((@{DEFARMUREON}*@{DEFARMUREMALUS})+(@{DEFBOUCLIERON}*@{DEFBOUCLIERMALUS}))" disabled /></td>
</tr>
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_CON" title="Jet de Constitution" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Constitution}} {{subtags=Caractéristique}} {{carac=[[ @{con_sup}[Dé] + [[@{CON_TEST}]][Bonus] ]]}}"> CON</button>
</td>
<td class="boxinputlight-car">
<select class="selectmin-car" name="attr_con_sup" title="Caractéristique Normale ou Supérieure (Règle optionnelle page 138)">
<option value="@{jetnormal}" selected>N Normale</option>
<option value="@{jetsup}">S Supérieure OU Héroïque</option>
<option value="@{jetsuphero}">H Supérieure ET Héroïque</option>
</select>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_constitution" title="Constitution" value="10" min="0" />
</td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_CON" value="floor((@{constitution}-10)/2)" disabled /></td>
<td class="boxinput-car"><input type="number" class="car" name="attr_CON_BONUS" value="0" title="Bonus au Test" /></td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_CON_TEST" value="@{CON}+@{CON_BONUS}" disabled /></td>
</tr>
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_INT" title="Jet d'Intelligence" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Intelligence}} {{subtags=Caractéristique}} {{carac=[[ @{int_sup}[Dé] + [[@{INT_TEST}]][Bonus] ]]}}"> INT</button>
</td>
<td class="boxinputlight-car">
<select class="selectmin-car" name="attr_int_sup" title="Caractéristique Normale ou Supérieure (Règle optionnelle page 138)">
<option value="@{jetnormal}" selected>N Normale</option>
<option value="@{jetsup}">S Supérieure OU Héroïque</option>
<option value="@{jetsuphero}">H Supérieure ET Héroïque</option>
</select>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_intelligence" title="Intelligence" value="10" min="0" />
</td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_INT" value="floor((@{intelligence}-10)/2)" disabled /></td>
<td class="boxinput-car"><input type="number" class="car" name="attr_INT_BONUS" value="0" title="Bonus au Test" /></td>
<td class="boxinputlight-car">
<input type="number" class="car" name="attr_INT_TEST" value="@{INT}+@{INT_BONUS}" disabled />
</td>
</tr>
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_SAG" title="Jet de Sagesse" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Sagesse}} {{subtags=Caractéristique}} {{carac=[[ @{sag_sup}[Dé] + [[@{SAG_TEST}]][Bonus] ]]}}"> SAG</button>
</td>
<td class="boxinputlight-car">
<select class="selectmin-car" name="attr_sag_sup" title="Caractéristique Normale ou Supérieure (Règle optionnelle page 138)">
<option value="@{jetnormal}" selected>N Normale</option>
<option value="@{jetsup}">S Supérieure OU Héroïque</option>
<option value="@{jetsuphero}">H Supérieure ET Héroïque</option>
</select>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_sagesse" title="Sagesse" value="10" min="0" />
</td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_SAG" value="floor((@{sagesse}-10)/2)" disabled /></td>
<td class="boxinput-car"><input type="number" class="car" name="attr_SAG_BONUS" value="0" title="Bonus au Test" /></td>
<td class="boxinputlight-car">
<input type="number" class="car" name="attr_SAG_TEST" value="@{SAG}+@{SAG_BONUS}" disabled />
</td>
</tr>
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_CHA" title="Jet de Charisme" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Charisme}} {{subtags=Caractéristique}} {{carac=[[ @{cha_sup}[Dé] + [[@{CHA_TEST}]][Bonus] ]]}}"> CHA</button>
</td>
<td class="boxinputlight-car">
<select class="selectmin-car" name="attr_cha_sup" title="Caractéristique Normale ou Supérieure (Règle optionnelle page 138)">
<option value="@{jetnormal}" selected>N Normale</option>
<option value="@{jetsup}">S Supérieure OU Héroïque</option>
<option value="@{jetsuphero}">H Supérieure ET Héroïque</option>
</select>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_charisme" title="Charisme" value="10" min="0" />
</td>
<td class="boxinputlight-car"><input type="number" class="car" name="attr_CHA" value="floor((@{charisme}-10)/2)" disabled /></td>
<td class="boxinput-car"><input type="number" class="car" name="attr_CHA_BONUS" value="0" title="Bonus au Test" /></td>
<td class="boxinputlight-car">
<input type="number" class="car" name="attr_CHA_TEST" value="@{CHA}+@{CHA_BONUS}" disabled />
</td>
</tr>
<tr>
<td class="textfat">ÉTAT</td>
<td class="boxinputlight" colspan="5">
<input type="radio" name="attr_ETATDE" value="20" checked/>Normal (d20) &nbsp;
<input type="radio" name="attr_ETATDE" value="12"/>Affaibli (d12)
</td>
</tr>
</table>
</div> <!-- FIN Caracs -->
<div> <!-- Combat + PV + défense -->
<table>
<tr>
<td> <!-- Combat -->
<table class="tabsep">
<tr>
<td class="textfat-atk">COMBAT</td>
<td class="textbase-atk">Base</td>
<td class="textbase-atk">Mod.</td>
<td class="textbase-atk">Bonus</td>
<td class="textfat-atk">Total</td>
</tr>
<tr>
<td class="boxtitre-atk"><button class="boxtitre-atk" type="roll" name="roll_CAC" title="Jet d'attaque au contact" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Au Contact}} {{subtags=Attaque}} {{attaque=[[1d@{ETATDE}[Dé] + [[@{ATKCAC}]][Bonus] ]]}}"> AU CONTACT</button></td>
<td class="boxinputlight-atk"><input type="number" name="attr_atkcac_base" value="1" title="@{atkcac_base}" class="atk"/></td>
<td class="boxinput-atk">
<input type="radio" name="attr_option_setting_cac" class="hidden-tab setting-generic" value="generique" checked="checked"><span title="Chroniques Oubliées"></span>
<input type="radio" name="attr_option_setting_cac" class="hidden-tab setting-arran" value="arran"><span title="Terres d'Arran"></span>
<div class="tab-content setting-generic">
<select class="carac-atk" name="attr_ATKCAC_CARAC" size="1">
<option value="@{FOR}" selected>FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{SAG}">SAG</option>
<option value="@{CHA}">CHA</option>
</select>
</div>
<div class="tab-content setting-arran">
<input type="hidden" name="attr_mod_atkcac" value="0" />
<span name="attr_mod_atkcac"></span>
</div>
</td>
<td class="boxinput-atk"><input type="number" name="attr_ATKCAC_DIV" title="Bonus divers" value="0" class="atk" /></td>
<td class="boxinputlight-atk"><input type="number" class="atk" name="attr_ATKCAC" value="@{atkcac_base}+@{ATKCAC_CARAC}+@{mod_atkcac}+@{ATKCAC_DIV}" disabled /></td>
</tr>
<tr>
<td class="boxtitre-atk"><button class="boxtitre-atk" type="roll" name="roll_TIR" title="Jet d'attaque à distance" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=&Agrave; Distance}} {{subtags=Attaque}} {{attaque=[[ 1d@{ETATDE}[Dé] + [[@{ATKTIR}]][Bonus] ]]}}"> &Agrave; DISTANCE</button></td>
<td class="boxinputlight-atk"><input type="number" class="atk" name="attr_atktir_base" value="1" title="@{atktir_base"/></td>
<td class="boxinput-atk">
<input type="radio" name="attr_option_setting_tir" class="hidden-tab setting-generic" value="generique" checked="checked"><span title="Chroniques Oubliées"></span>
<input type="radio" name="attr_option_setting_tir" class="hidden-tab setting-arran" value="arran"><span title="Terres d'Arran"></span>
<div class="tab-content setting-generic">
<select class="carac-atk" name="attr_ATKTIR_CARAC" size="1">
<option value="@{FOR}">FOR</option>
<option value="@{DEX}" selected>DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{SAG}">SAG</option>
<option value="@{CHA}">CHA</option>
</select>
</div>
<div class="tab-content setting-arran">
<input type="hidden" name="attr_mod_atktir" value="0" />
<span name="attr_mod_atktir"></span>
</div>
</td>
<td class="boxinput-atk"><input type="number" class="atk" name="attr_ATKTIR_DIV" title="Bonus divers" value="0" /></td>
<td class="boxinputlight-atk"><input type="number" class="atk" name="attr_ATKTIR" value="@{atktir_base}+@{ATKTIR_CARAC}+@{mod_atktir}+@{ATKTIR_DIV}" disabled /></td>
</tr>
<tr>
<td class="boxtitre-atk"><button class="boxtitre-atk" type="roll" name="roll_MAG" title="Jet d'attaque magique" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Magique}} {{subtags=Attaque}} {{attaque=[[ 1d@{ETATDE}[Dé] + [[@{ATKMAG}]][Bonus] ]]}}"> MAGIQUE</button></td>
<td class="boxinputlight-atk"><input type="number" class="atk" name="attr_atkmag_base" value="1" title="@{atkmag_base}" /></td>
<td class="boxinput-atk">
<input type="radio" name="attr_option_setting_mag" class="hidden-tab setting-generic" value="generique" checked="checked"><span title="Chroniques Oubliées"></span>
<input type="radio" name="attr_option_setting_mag" class="hidden-tab setting-arran" value="arran"><span title="Terres d'Arran"></span>
<div class="tab-content setting-generic">
<select class="carac-atk" name="attr_ATKMAG_CARAC" size="1">
<option value="@{FOR}">FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}" selected>INT</option>
<option value="@{SAG}">SAG</option>
<option value="@{CHA}">CHA</option>
</select>
</div>
<div class="tab-content setting-arran">
<input type="hidden" name="attr_mod_atkmag" value="0" />
<span name="attr_mod_atkmag"></span>
</div>
</td>
<td class="boxinput-atk"><input type="number" class="atk" name="attr_ATKMAG_DIV" title="Bonus divers" value="0" /></td>
<td class="boxinputlight-atk"><input type="number" class="atk" name="attr_ATKMAG" value="@{atkmag_base}+@{ATKMAG_CARAC}+@{mod_atkmag}+@{ATKMAG_DIV}" disabled /></td>
</tr>
<tr>
<td class="boxtitre-init"><button class="boxtitre-init" type="roll" name="roll_INIT" title="Initiative" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Initiative}} {{subtags=Combat}} {{carac=[[@{INIT} &{tracker}]]}}"> INITIATIVE</button></td>
<td class="boxinputlight-init"><input type="number" class="init" name="attr_INIT_CARAC" value="@{dexterite}" title="Dextérité" disabled /></td>
<td style="text-align:center;">
<input type="radio" name="attr_option_setting_init" class="hidden-tab setting-generic" value="generique" checked="checked"><span title="Chroniques Oubliées"></span>
<input type="radio" name="attr_option_setting_init" class="hidden-tab setting-arran" value="arran"><span title="Terres d'Arran"></span>
<div class="tab-content setting-generic">
&nbsp;
</div>
<div class="tab-content setting-arran">
<input type="hidden" name="attr_mod_initiative" value="0" />
<span class="init" name="attr_mod_initiative"></span>
</div>
</td>
<td class="boxinput-init"><input type="number" class="init" name="attr_INIT_DIV" title="Bonus divers" value="0" /></td>
<td class="boxinputlight-init"><input type="number" class="init" name="attr_INIT" value="@{INIT_CARAC}+@{mod_initiative}+@{INIT_DIV}" disabled /></td>
</tr>
</table>
</td> <!-- FIN Combat -->
<td> <!-- PV -->
<table class="tabsep">
<tr>
<td class="textfat-pv">VITALITÉ</td>
<td class="textfat-pv">&nbsp;</td>
</tr>
<tr>
<td class="boxtitre-pv"><button class="boxtitre-pv" type="roll" name="roll_DV" title="Jet de Dé de Vie" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Dé de Vie}} {{subtags=Vitalité}} {{DV=[[ 1d@{DV}[Dé] + [[@{CON}]][CON] ]]}}"> DV</button></td>
<td class="boxinput-pv">
<select class="carac-pv" name="attr_DV" size="1" title="Dé de Vie">
<option value="0" selected >-</option>
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
</td>
</tr>
<tr>
<td class="boxtitre-pv">PV</td>
<td class="boxinput-pv"><input type="number" class="pv" name="attr_PV_max" title="Points de Vie maximum" value="0" /></td>
</tr>
<tr>
<td class="boxinput-pv" colspan="2">
<span class="textbase-pv">PV restants</span>&nbsp;
<input type="number" class="pv" name="attr_PV" title="Points de Vie restants" value="0" />
</td>
</tr>
<tr>
<td class="boxinput-pv" colspan="2">
<span class="textbase-pv">DM temp.</span>&nbsp;
<input type="number" class="pv" name="attr_DMTEMP" title="Dommages Temporaires" value="0" />
</td>
</tr>
</table>
<input type="checkbox" class="optional-block-switch" name="attr_option_pr" value="1" checked><span></span>
<div class="optional-block">
<table class="tabsep">
<tr>
<td class="boxtitre-pv"><button class="boxtitre-pv" type="roll" title="Jet de Récupération (1DV+CON+NIVEAU)" name="roll_RECUP" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Récupération}} {{subtags=Vitalité}} {{DV=[[1d@{DV}+[[@{CON}]]+@{niveau}]]}}"> PR</button></td>
<td class="boxinput-pv">
<input type="number" class="pv" name="attr_pr" min="0" title="Points de récupération (page 80)" value="5" /> <span class="input">/</span> <input type="number" class="pv" name="attr_pr_max" min="0" value="5" />
</td>
</tr>
</table>
</div>
</td> <!-- FIN PV -->
</tr>
<tr>
<td> <!-- Défense -->
<table class="tabsep">
<tr>
<td class="textfat-def">DÉFENSE</td>
<td class="textbase-def">
Armure
<input type="checkbox" class="def" name="attr_DEFARMUREON" value="1" title="Armure portée" />
</td>
<td class="textbase-def">
Bouclier
<input type="checkbox" class="def" name="attr_DEFBOUCLIERON" value="1" title="Bouclier équipé" />
</td>
<td class="textbase-def">DEX</td>
<td class="textbase-def">Div.</td>
<td class="textfat-def">Total</td>
</tr>
<tr>
<td class="boxtitre-def">DEF</td>
<td class="boxinput-def"><input type="number" class="def" name="attr_DEFARMURE" title="Armure" value="0" min="0" /></td>
<td class="boxinput-def"><input type="number" class="def" name="attr_DEFBOUCLIER" title="Bouclier" value="0" min="0" /></td>
<td class="boxinputlight-def"><input type="number" class="def" name="attr_DEFCAR" value="@{DEX}" title="Modificateur de Dextérité" disabled /></td>
<td class="boxinput-def"><input type="number" class="def" name="attr_DEFDIV" title="Bonus divers" value="0" /></td>
<td class="boxinputlight-def"><input type="number" class="def" name="attr_DEF" value="10+(@{DEFARMURE}*@{DEFARMUREON})+(@{DEFBOUCLIER}*@{DEFBOUCLIERON})+@{DEFCAR}+@{DEFDIV}-4*@{attaque_risquee_check}" title="Défense" disabled /></td>
</tr>
<tr>
<td class="textfat-def" style="text-align: right;">Malus</td>
<td class="boxinput-def"><input type="number" class="def" name="attr_DEFARMUREMALUS" title="Malus aux Tests de DEX quand l'Amrure est portée." value="0" min="0"/></td>
<td class="boxinput-def"><input type="number" class="def" name="attr_DEFBOUCLIERMALUS" title="Malus aux Tests de DEX quand le Bouclier est équipé" value="0" min="0"/></td>
<td class="textbase-def" colspan="2">
Casque
<input type="checkbox" class="def" name="attr_casque_on" value="1" title="Casque équipé" />
</td>
</tr>
<tr>
<td class="boxtitre-def" title="Réduction(s) des DM">RD</td>
<td class="boxinput-def" colspan="2"><textarea class="def ligne" name="attr_RDS" title="Réduction(s) des DM" spellcheck="false" placeholder="Réduction(s) des DM"></textarea></td>
<td class="boxinput-def"><input type="number" class="def" name="attr_casque_rd" title="RD du casque" value="0" /></td>
<td class="boxinput-def"><input type="number" class="def" name="attr_casque_malus" title="Malus perception du casque" value="0" /></td>
</tr>
</table>
</td>
<td>
<div><!-- option points de chance -->
<input type="checkbox" class="optional-block-switch" name="attr_option_pc" value="1" checked><span></span>
<div class="optional-block">
<span class="textfat-chance">&nbsp;&nbsp;&nbsp;CHANCE</span>
<input class="options-flag" name="attr_pcoptflag" type="checkbox" title="Montrer/cacher les options" /><span>y</span>
<div>
<input type="hidden" name="attr_pc_base" value="3" />
<input type="hidden" name="attr_pc_max" value="3" />
<table class="tabsep">
<tr>
<td class="boxtitre-chance">PC</td>
<td class="boxinput-chance">
<input type="number" class="chance" style="width:40px;" name="attr_pc" value="3" min="0" /> <span class="input">/</span> <span class="input" style="width:40px;" name="attr_pc_max" > </span>
</td>
</tr>
</table>
</div>
<div class="options">
<table class="tabsep">
<tr>
<td class="textbase-chance">Base</td>
<td class="textbase-chance"><span class="input" class="chance" name="attr_pc_base"></span>,</td>
<td class="textbase-chance">Bonus</td>
<td class="boxinputlight-chance"><input type="number" class="chance" style="width:30px;" name="attr_pc_bonus" value="0" /></td>
</tr>
</table>
</div>
</div>
</div><!-- fin des points de chance -->
<input type="checkbox" class="optional-block-switch" name="attr_option_pm" value="1" checked><span></span>
<input type="checkbox" class="optional-block-switch" name="attr_option_epuisement" value="1" ><span></span>
<div class="optional-block">
<input type="checkbox" class="block-switch" name="attr_magie" value="1" checked><span></span>
<div class=block-hidden><span class=textbasesmall>Pas de magie</span> </div>
<div class=block-show>
<span class="textfat-chance">&nbsp;&nbsp;&nbsp;MAGIE</span>
<div>
<input type="checkbox" class="optional-block-switch" name="attr_option_pm" value="1" checked><span></span>
<div class="optional-block">
<table class="tabsep">
<tr>
<td class="boxtitre-chance">PM</td>
<td class="boxinput-chance"><input type="number" class="chance" name="attr_pm" min="0"/> <span class="input">/</span> <input type="number" class="chance" name="attr_pm_max" min="0"/></td>
</tr>
</table>
</div>
</div>
<input type="checkbox" class="optional-block-switch" name="attr_option_epuisement" value="1" ><span></span>
<div class="optional-block">
<table class="tabsep">
<tr>
<td class="boxtitre-chance">Épuisement</td>
<td class="boxinput-chance">
<input type="number" class="chance" name="attr_epuisement" value="0" title="Épuisement magique (page 180)" />
<button type="roll" class="chance" title="@roll{roll_epmag} Jet d'épuisement magique" class="neutre" name="roll_epmag" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Épuisement}} {subtags=Magie} {{carac=[[(1d@{ETATDE}[Dé] + [[@{ATKMAG}]][Bonus])]] > [[@{epuisement}]]}}"/>
</td>
</tr>
</table>
</div>
</div>
</div><!-- fin de la magie -->
</td>
</tr>
</table>
</div> <!-- FIN Combat + PV + défense + options -->
</div> <!-- FIN Caracs + combat + PV + défense -->
<input type="radio" name="attr_attaquetabpj" class="attacktab attacktab1" value="Attaques" checked="checked" /><span title="Attaques"></span>
<input type="radio" name="attr_attaquetabpj" class="attacktab attacktab2" value="Options" /><span title="Options"></span>
<img class="imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
<div class="tab-content attacktab1"> <!-- Armes -->
<table class="tabsep">
<tr>
<td class="textfatleft-atk" style="width:153px;">ARMES / ATTAQUES</td>
<td class="textbase-atk" style="width:130px;">ATTAQUE</td>
<td class="textbase-atk" style="width:20px;">CRIT.</td>
<td class="textbase-atk" style="width:190px;">DM</td>
<td class="textbase-atk" style="width:50px;">PORTÉE</td>
<td class="textbase-atk">SPÉCIAL</td>
</tr>
</table>
<fieldset class="repeating_armes">
<div class="attack">
<input class="options-flag" name="attr_armeoptflag" type="checkbox" title="Montrer/cacher les options" /><span>y</span>
<div>
<table class="tabsep">
<tr>
<input type='hidden' name='attr_armebonusoption' value='0' />
<input type='hidden' name='attr_armedmtemp' value='' />
<input type='hidden' name='attr_armedegats' value='{{degats=[[(@{armedmnbde}d@{armedmde}@{armedmrollmod}+[[@{armedmcar}]]+@{armedmdiv})@{division_attaque_assuree}]]}}' />
<input type='hidden' name='attr_armepoudre' value='{{poudre=}}' />
<input type='hidden' name='attr_armereussiteauto' value='{{attaqueautomatique=}}' />
<input type='hidden' name='attr_armedmrollmod' value='' />
<input type='hidden' name='attr_armeattrollmod' value='' />
<input type='hidden' name='attr_armeattnbde' value='1' />
<input type='hidden' name='attr_armeattde' value='@{ETATDE}' />
<td>
<button type="roll" class="atk" name="roll_Arme" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=@{armenom}}} {{subtags=Attaque}} {{attaque=[[ @{armeattnbde}d@{armeattde}@{armeattrollmod}cs>@{armecrit}cf1 + [[@{armeatk}]] + @{armeatkdiv} +@{bonus_attaque_option} +@{armebonusoption}]]}} @{armereussiteauto} @{armepoudre} @{armedegats} {{special=@{armespec}}} {{degats2=@{bonus_dm_option}}} {{dmtemp=@{armedmtemp}}}" />
</td>
<td class="boxinputleft-atk" style="min-width:150px;">
<input type="text" class="atk" style="width:16px; text-align:center; font-size:10px;" name="attr_armelabel" value=0>
<input type="text" class="atk" name="attr_armenom" style="font-weight: bold;width:90%;margin-left:-6px;" placeholder="Arme/attaque"/>
</td>
<td class="boxinputleft-atk">
<select class="carac-atk" style="width: 72px;" name="attr_armeatk" size="1">
<option value="@{ATKCAC}" selected>Contact</option>
<option value="@{ATKTIR}">Distance</option>
<option value="@{ATKMAG}">Magie</option>
</select>+<input type="number" class="atk" style="width:32px;" name="attr_armeatkdiv" value="0" title="Bonus d'attaque divers" />
</td>
<td class="boxinputleft-atk" style="text-align: right;">
<input type="number" class="atk" name="attr_armecrit" style="width:32px;" min="2" max="20" value="20" title="Seuil de Critique (par défaut 20)" />
</td>
<td class="boxinputleft-atk">
<input type="number" class="atk" style="width:30px;" name="attr_armedmnbde" value="1" title="Nombre de dés de dommage" />
<select class="carac-atk" style="width:45px;" name="attr_armedmde" size="1" title="Dé de dommage">
<option value="3">d3</option>
<option value="4" selected>d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>+<select class="carac-atk" style="width:50px;" name="attr_armedmcar" size="1" title="Modificateur aux dommages">
<option value="0">-</option>
<option value="@{FOR}" selected>FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{SAG}">SAG</option>
<option value="@{CHA}">CHA</option>
</select>+<input type="number" class="atk" style="width:32px;" name="attr_armedmdiv" value="0" title="Bonus de dommage divers" />
</td>
<td class="boxinputleft-atk" style="min-width:50px;">
<input type="text" class="atk" name="attr_armeportee" placeholder="Portée" title="Portée" />
</td>
<td class="boxinputleft-atk" style="width:100%;">
<textarea name="attr_armespec" class="atk ligne" placeholder="Notes, capacités spéciales, effet ..." spellcheck="false" title="Notes, capacités spéciales, effet ..."></textarea>
</td>
</tr>
</table>
</div>
<div class="options">
<table class="tabsep">
<tr>
<td style="width:18px; text-align:center;">
<input type="checkbox" name="attr_armeactionvisible" title="Attaque visible dans les actions" value="1" checked>
</td>
<td class="boxinputleft-atk">
<select class="carac-atk" style="width: 118px;" name="attr_armetypeattaque" title="Type d'attaque">
<option>Naturel</option>
<option>Arme 1 main</option>
<option>Arme 2 mains</option>
<option>Sortilege</option>
<option>Arme gauche</option>
<option>Arme de jet</option>
</select>
</td>
<td class="boxinputleft-atk" style="min-width: 189px;">
<textarea name="attr_armemodificateurs" class="atk ligne" placeholder="Liste de modificateurs" spellcheck="false" title="Modificateurs d'attaque, séparés par des virgules&#10; avantage: garde le meilleur de 2 dés&#10; avecd12: utilise le d12 en attaque&#10; auto: réussite automatique&#10; choc: peut faire des attaques non léthales sans malus&#10; désavantage: garde le moins bon de 2 dés&#10; explodeMax: dés de dégâts explosifs&#10; pasDeDmg: l'attaque ne fait pas de dégât&#10; poudre: arme à poudre&#10; reroll1: relance les 1 des dé de DM&#10; tempDmg: fait toujours des attaques non léthales"></textarea>
</td>
<td class="boxinputleft-atk">
<select class="carac-atk" style="width: 87px;" name="attr_armetypedegats" title="Type des dégâts">
<option>tranchant</option>
<option>contondant</option>
<option>percant</option>
<option>mental</option>
<option>feu</option>
<option>acide</option>
<option value="electrique">électrique</option>
<option>froid</option>
<option>sonique</option>
<option>poison</option>
<option>maladie</option>
<option>drain</option>
<option>magique</option>
</select>
</td>
<td class="boxinputleft-atk" style="width:100%;">
<textarea name="attr_armeoptions" class="atk ligne" placeholder="Options d'attaque avec argument" spellcheck="false" title="Options d'attaque"></textarea>
</td>
</tr>
</table>
</div>
</div>
</fieldset>
</div>
<div class="tab-content attacktab2"> <!-- Options d'attaque -->
<input type='hidden' name='attr_bonus_attaque_option' value='0' />
<input type='hidden' name='attr_bonus_dm_option' value='' />
<table>
<tr>
<td style="text-align:center;">
<input type="checkbox" name="attr_attaque_en_puissance_check" title="Attaque en puissance utilisée" value="1" unchecked>
</td>
<td>
Attaque en puissance
</td>
<td>
<input type='hidden' name='attr_malus_attaque_en_puissance' value='-5' />
<span name="attr_malus_attaque_en_puissance"></span> en attaque et +
<input type="number" class="atk" style="width:32px;" name="attr_attaque_en_puissance" value="1" min="1" title="Nombre de dés de dommage ajoutés" />
d6 DM
</td>
</tr>
<tr>
<td style="text-align:center;">
<input type="checkbox" name="attr_attaque_assuree_check" title="Attaque assurée" value="1" unchecked>
<input type='hidden' name='attr_division_attaque_assuree' value='' />
</td>
<td>
Attaque assurée
</td>
<td>
+5 en attaque et DM divisés par 2
</td>
</tr>
<tr>
<td style="text-align:center;">
<input type="checkbox" name="attr_attaque_risquee_check" title="Attaque risquée" value="1" unchecked>
</td>
<td>
Attaque risquée
</td>
<td>
+2 en attaque au contact et -4 en DEF
</td>
</tr>
<tr>
<td style="text-align:center;">
<input type="checkbox" name="attr_attaque_dm_temp_check" title="Assomer" value="1" unchecked>
</td>
<td>
Attaque non léthale
</td>
<td>
-2 en attaque si arme non adaptée
</td>
</tr>
</table>
</div><!-- fin des options d'attaque -->
</div><!-- fin tab-contant tab1-->
<div class="tab-content tab2"> <!-- Capacités -->
<div class="containera"><!-- Capa hors voies -->
<input type="checkbox" class="optional-block-switch" name="attr_talent_magique_present" value="1" /><span></span>
<div class="optional-block boxinputleft title">
<span class="textbasesmall">Talent magique</span><br/>
<textarea name="attr_talent_magique" spellcheck="false" style="height:3em;"></textarea>
</div>
<div class="boxinputleft title">
<span class="textbasesmall" name="attr_titrecapaciteraciale"></span><br/>
<textarea name="attr_CAPA_RACE" spellcheck="false" style="height:3em;"></textarea>
</div>
<div class="boxinputleft title">
<span class="textbasesmall">Langues Connues</span><br/>
<textarea name="attr_LANGUES" spellcheck="false" style="height:3em;"></textarea>
</div>
<div class="boxinputleft title">
<span class="textbasesmall">Autres capacités</span><br/>
<textarea name="attr_DIVERS" spellcheck="false" style="height:3em;"></textarea>
</div>
</div><!-- FIN hors voies -->
<input class="block-switch-b" name="attr_setup_abilities" type="checkbox"/>
<div class="block-hidden-b"><!-- capacité non éditables -->
<table>
<tr>
<td class="textfatleft" colspan="3">
CAPACITÉS DU PERSONNAGE
</td>
<td style="text-align: right; font-weight: lighter;">
Éditer
<input type="checkbox" class="setup-abilities" name="attr_setup_abilities" title="Éditer les capacités">
</td>
</tr>
<tr>
<td class="boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="boxtitresmall">Voie 1</td>
<td class="boxtitresmall">Voie 2</td>
<td class="boxtitresmall">Voie 3</td>
</tr>
<tr>
<td class="boxtitresmall">R</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie1showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie1nom" title = "@{voie1nom}" placeholder="Nom de la Voie n°1" />
</span>
<div class="block-show-arrow">
<span name="attr_voie1expl" class="boxability"></span>
</div>
</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie1showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie2nom" placeholder="Nom de la Voie n°2" />
</span>
<div class="block-show-arrow">
<span name="attr_voie2expl" class="boxability"></span>
</div>
</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie1showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie3nom" placeholder="Nom de la Voie n°3" />
</span>
<div class="block-show-arrow">
<span name="attr_voie3expl" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">1</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v1r1" value="1" />
<input class="block-switch-arrow" name="attr_v1r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v1r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v1r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r1titre} }} {{desc=**@{voie1nom}, rang [[1]]** }} {{text=@{voie1-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie1-1" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v2r1" value="1" />
<input class="block-switch-arrow" name="attr_v1r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v2r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v2r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r1titre} }} {{desc=**@{voie2nom}, rang [[1]]** }} {{text=@{voie2-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie2-1" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v3r1" value="1" />
<input class="block-switch-arrow" name="attr_v1r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v3r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v3r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r1titre} }} {{desc=**@{voie3nom}, rang [[1]]** }} {{text=@{voie3-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie3-1" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">2</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v1r2" value="1" />
<input class="block-switch-arrow" name="attr_v1r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v1r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v1r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r2titre} }} {{desc=**@{voie1nom}, rang [[2]]** }} {{text=@{voie1-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie1-2" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v2r2" value="1" />
<input class="block-switch-arrow" name="attr_v1r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v2r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v2r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r2titre} }} {{desc=**@{voie2nom}, rang [[2]]** }} {{text=@{voie2-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie2-2" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v3r2" value="1" />
<input class="block-switch-arrow" name="attr_v1r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v3r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v3r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r2titre} }} {{desc=**@{voie3nom}, rang [[2]]** }} {{text=@{voie3-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie3-2" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">3</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v1r3" value="1" />
<input class="block-switch-arrow" name="attr_v1r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v1r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v1r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r3titre} }} {{desc=**@{voie1nom}, rang [[3]]** }} {{text=@{voie1-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie1-3" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v2r3" value="1" />
<input class="block-switch-arrow" name="attr_v1r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v2r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v2r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r3titre} }} {{desc=**@{voie2nom}, rang [[3]]** }} {{text=@{voie2-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie2-3" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v3r3" value="1" />
<input class="block-switch-arrow" name="attr_v1r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v3r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v3r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r3titre} }} {{desc=**@{voie3nom}, rang [[3]]** }} {{text=@{voie3-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie3-3" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">4</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v1r4" value="1" />
<input class="block-switch-arrow" name="attr_v1r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v1r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v1r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r4titre} }} {{desc=**@{voie1nom}, rang [[4]]** }} {{text=@{voie1-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie1-4" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v2r4" value="1" />
<input class="block-switch-arrow" name="attr_v1r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v2r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v2r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r4titre} }} {{desc=**@{voie2nom}, rang [[4]]** }} {{text=@{voie2-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie2-4" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v3r4" value="1" />
<input class="block-switch-arrow" name="attr_v1r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v3r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v3r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r4titre} }} {{desc=**@{voie3nom}, rang [[4]]** }} {{text=@{voie3-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie3-4" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">5</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v1r5" value="1" />
<input class="block-switch-arrow" name="attr_v1r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v1r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v1r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r5titre} }} {{desc=**@{voie1nom}, rang [[5]]** }} {{text=@{voie1-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie1-5" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v2r5" value="1" />
<input class="block-switch-arrow" name="attr_v1r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v2r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v2r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r5titre} }} {{desc=**@{voie2nom}, rang [[5]]** }} {{text=@{voie2-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie2-5" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v3r5" value="1" />
<input class="block-switch-arrow" name="attr_v1r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v3r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v3r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r5titre} }} {{desc=**@{voie3nom}, rang [[5]]** }} {{text=@{voie3-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie3-5" class="boxability"></span>
</div>
</td>
</tr>
</table>
<table>
<tr>
<td class="boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="boxtitresmall"><span name="attr_titrevoie4"></span></td>
<td class="boxtitresmall"><span name="attr_titrevoie5"></span></td>
<td class="boxtitresmall">Voie de prestige</td>
</tr>
<tr>
<td class="boxtitresmall">R</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie2showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie4nom" placeholder="Nom de la Voie" />
</span>
<div class="block-show-arrow">
<span name="attr_voie4expl" class="boxability"></span>
</div>
</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie2showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie5nom" placeholder="Nom de la Voie" />
</span>
<div class="block-show-arrow">
<span name="attr_voie5expl" class="boxability"></span>
</div>
</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie2showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie6nom" placeholder="Nom de la Voie de Prestige" />
</span>
<div class="block-show-arrow">
<span name="attr_voie6expl" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">1</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v4r1" value="1" />
<input class="block-switch-arrow" name="attr_v4r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v4r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v4r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r1titre} }} {{desc=**@{voie4nom}, rang [[1]]** }} {{text=@{voie4-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie4-1" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v5r1" value="1" />
<input class="block-switch-arrow" name="attr_v4r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v5r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v5r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r1titre} }} {{desc=**@{voie5nom}, rang [[1]]** }} {{text=@{voie5-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie5-1" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v6r1" value="1" />
<input class="block-switch-arrow" name="attr_v4r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v6r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v6r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r1titre} }} {{desc=**@{voie6nom}, rang [[1]]** }} {{text=@{voie6-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie6-1" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">2</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v4r2" value="1" />
<input class="block-switch-arrow" name="attr_v4r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v4r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v4r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r2titre} }} {{desc=**@{voie4nom}, rang [[2]]** }} {{text=@{voie4-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie4-2" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v5r2" value="1" />
<input class="block-switch-arrow" name="attr_v4r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v5r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v5r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r2titre} }} {{desc=**@{voie5nom}, rang [[2]]** }} {{text=@{voie5-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie5-2" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v6r2" value="1" />
<input class="block-switch-arrow" name="attr_v4r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v6r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v6r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r2titre} }} {{desc=**@{voie6nom}, rang [[2]]** }} {{text=@{voie6-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie6-2" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">3</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v4r3" value="1" />
<input class="block-switch-arrow" name="attr_v4r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v4r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v4r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r3titre} }} {{desc=**@{voie4nom}, rang [[3]]** }} {{text=@{voie4-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie4-3" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v5r3" value="1" />
<input class="block-switch-arrow" name="attr_v4r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v5r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v5r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r3titre} }} {{desc=**@{voie5nom}, rang [[3]]** }} {{text=@{voie5-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie5-3" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v6r3" value="1" />
<input class="block-switch-arrow" name="attr_v4r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v6r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v6r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r3titre} }} {{desc=**@{voie6nom}, rang [[3]]** }} {{text=@{voie6-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie6-3" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">4</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v4r4" value="1" />
<input class="block-switch-arrow" name="attr_v4r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v4r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v4r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r4titre} }} {{desc=**@{voie4nom}, rang [[4]]** }} {{text=@{voie4-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie4-4" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v5r4" value="1" />
<input class="block-switch-arrow" name="attr_v4r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v5r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v5r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r4titre} }} {{desc=**@{voie5nom}, rang [[4]]** }} {{text=@{voie5-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie5-4" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v6r4" value="1" />
<input class="block-switch-arrow" name="attr_v4r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v6r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v6r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r4titre} }} {{desc=**@{voie6nom}, rang [[4]]** }} {{text=@{voie6-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie6-4" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">5</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v4r5" value="1" />
<input class="block-switch-arrow" name="attr_v4r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v4r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v4r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r5titre} }} {{desc=**@{voie4nom}, rang [[5]]** }} {{text=@{voie4-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie4-5" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v5r5" value="1" />
<input class="block-switch-arrow" name="attr_v4r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v5r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v5r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r5titre} }} {{desc=**@{voie5nom}, rang [[5]]** }} {{text=@{voie5-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie5-5" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v6r5" value="1" />
<input class="block-switch-arrow" name="attr_v4r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v6r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v6r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r5titre} }} {{desc=**@{voie6nom}, rang [[5]]** }} {{text=@{voie6-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie6-5" class="boxability"></span>
</div>
</td>
</tr>
</table>
<div> <!-- début plus de voies -->
<input type="checkbox" class="block-switch" name="attr_plus_de_voies"><span></span>
<div class="block-hidden">Plus de voies</div>
<div class="block-show">
<table>
<tr>
<td class="boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="boxtitresmall">Voie 7</td>
<td class="boxtitresmall">Voie 8</td>
<td class="boxtitresmall">Voie 9</td>
</tr>
<tr>
<td class="boxtitresmall">R</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie3showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie7nom" placeholder="Nom de la Voie n°7" />
</td>
</span>
<div class="block-show-arrow">
<span name="attr_voie7expl" class="boxability"></span>
</div>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie3showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie8nom" placeholder="Nom de la Voie n°8" />
</span>
<div class="block-show-arrow">
<span name="attr_voie8expl" class="boxability"></span>
</div>
</td>
<td class="boxinputleft">
<input class="block-switch-arrow" name="attr_voie3showexpl" type="checkbox"><span>
<input type="text" class="nomvoie" name="attr_voie9nom" placeholder="Nom de la Voie n°9" />
</span>
<div class="block-show-arrow">
<span name="attr_voie9expl" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">1</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v7r1" value="1" />
<input class="block-switch-arrow" name="attr_v7r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v7r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v7r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r1titre} }} {{desc=**@{voie7nom}, rang [[1]]** }} {{text=@{voie7-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie7-1" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v8r1" value="1" />
<input class="block-switch-arrow" name="attr_v7r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v8r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v8r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r1titre} }} {{desc=**@{voie8nom}, rang [[1]]** }} {{text=@{voie8-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie8-1" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v9r1" value="1" />
<input class="block-switch-arrow" name="attr_v7r1showexpl" type="checkbox"><span>
<input type="text" name="attr_v9r1titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v9r1" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r1titre} }} {{desc=**@{voie9nom}, rang [[1]]** }} {{text=@{voie9-1} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie9-1" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">2</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v7r2" value="1" />
<input class="block-switch-arrow" name="attr_v7r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v7r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v7r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r2titre} }} {{desc=**@{voie7nom}, rang [[2]]** }} {{text=@{voie7-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie7-2" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v8r2" value="1" />
<input class="block-switch-arrow" name="attr_v7r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v8r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v8r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r2titre} }} {{desc=**@{voie8nom}, rang [[2]]** }} {{text=@{voie8-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie8-2" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v9r2" value="1" />
<input class="block-switch-arrow" name="attr_v7r2showexpl" type="checkbox"><span>
<input type="text" name="attr_v9r2titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v9r2" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r2titre} }} {{desc=**@{voie9nom}, rang [[2]]** }} {{text=@{voie9-2} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie9-2" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">3</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v7r3" value="1" />
<input class="block-switch-arrow" name="attr_v7r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v7r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v7r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r3titre} }} {{desc=**@{voie7nom}, rang [[3]]** }} {{text=@{voie7-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie7-3" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v8r3" value="1" />
<input class="block-switch-arrow" name="attr_v7r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v8r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v8r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r3titre} }} {{desc=**@{voie8nom}, rang [[3]]** }} {{text=@{voie8-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie8-3" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v9r3" value="1" />
<input class="block-switch-arrow" name="attr_v7r3showexpl" type="checkbox"><span>
<input type="text" name="attr_v9r3titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v9r3" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r3titre} }} {{desc=**@{voie9nom}, rang [[3]]** }} {{text=@{voie9-3} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie9-3" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">4</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v7r4" value="1" />
<input class="block-switch-arrow" name="attr_v7r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v7r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v7r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r4titre} }} {{desc=**@{voie7nom}, rang [[4]]** }} {{text=@{voie7-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie7-4" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v8r4" value="1" />
<input class="block-switch-arrow" name="attr_v7r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v8r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v8r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r4titre} }} {{desc=**@{voie8nom}, rang [[4]]** }} {{text=@{voie8-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie8-4" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v9r4" value="1" />
<input class="block-switch-arrow" name="attr_v7r4showexpl" type="checkbox"><span>
<input type="text" name="attr_v9r4titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v9r4" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r4titre} }} {{desc=**@{voie9nom}, rang [[4]]** }} {{text=@{voie9-4} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie9-4" class="boxability"></span>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">5</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v7r5" value="1" />
<input class="block-switch-arrow" name="attr_v7r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v7r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v7r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r5titre} }} {{desc=**@{voie7nom}, rang [[5]]** }} {{text=@{voie7-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie7-5" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v8r5" value="1" />
<input class="block-switch-arrow" name="attr_v7r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v8r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v8r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r5titre} }} {{desc=**@{voie8nom}, rang [[5]]** }} {{text=@{voie8-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie8-5" class="boxability"></span>
</div>
</td>
<td class="boxvoie boxtext">
<input type="checkbox" name="attr_v9r5" value="1" />
<input class="block-switch-arrow" name="attr_v7r5showexpl" type="checkbox"><span>
<input type="text" name="attr_v9r5titre" class="titreability"/>
</span>
<span style="float: right;">
<button type="roll" class="flatbtn iconbtn" name="roll_v9r5" title=""
value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r5titre} }} {{desc=**@{voie9nom}, rang [[5]]** }} {{text=@{voie9-5} }}">w</button>
</span>
<div class="block-show-arrow">
<span name="attr_voie9-5" class="boxability" ></span>
</div>
</td>
</tr>
</table>
</div>
</div> <!-- fin plus de voies -->
</div>
<div class="block-show-b">
<table>
<tr>
<td class="textfatleft" colspan="3">
CAPACITÉS DU PERSONNAGE
</td>
<td style="text-align: right; font-weight: lighter;">
Éditer
<input type="checkbox" class="setup-abilities" name="attr_setup_abilities" title="Éditer les capacités">
</td>
</tr>
<tr>
<td class="boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="boxtitresmall">Voie 1</td>
<td class="boxtitresmall">Voie 2</td>
<td class="boxtitresmall">Voie 3</td>
</tr>
<tr>
<td class="boxtitresmall">R</td>
<td class="boxinputleft">
<input type="text" class="nomvoie" name="attr_voie1nom" title = "@{voie1nom}" placeholder="Nom de la Voie n°1" />
<br>
<textarea spellcheck="false" name="attr_voie1expl" title="Explications voie 1"></textarea>
</td>
<td class="boxinput">
<input type="text" class="nomvoie" name="attr_voie2nom" placeholder="Nom de la Voie n°2" />
<br>
<textarea spellcheck="false" name="attr_voie2expl" title="Explications voie 2"></textarea>
</td>
<td class="boxinput">
<input type="text" class="nomvoie" name="attr_voie3nom" placeholder="Nom de la Voie n°3" />
<br>
<textarea spellcheck="false" name="attr_voie3expl" title="Explications voie 3"></textarea>
</td>
</tr>
<tr>
<td class="boxtitresmall">1</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v1r1" value="1" />
<input type="text" name="attr_v1r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie1-1" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v2r1" value="1" />
<input type="text" name="attr_v2r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie2-1" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v3r1" value="1" />
<input type="text" name="attr_v3r1titre" class="titreability2" />
<div>
<textarea spellCheck="false" name="attr_voie3-1" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">2</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v1r2" value="1" />
<input type="text" name="attr_v1r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie1-2" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v2r2" value="1" />
<input type="text" name="attr_v2r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie2-2" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v3r2" value="1" />
<input type="text" name="attr_v3r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie3-2" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">3</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v1r3" value="1" />
<input type="text" name="attr_v1r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie1-3" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v2r3" value="1" />
<input type="text" name="attr_v2r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie2-3" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v3r3" value="1" />
<input type="text" name="attr_v3r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie3-3" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">4</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v1r4" value="1" />
<input type="text" name="attr_v1r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie1-4" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v2r4" value="1" />
<input type="text" name="attr_v2r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie2-4" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v3r4" value="1" />
<input type="text" name="attr_v3r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie3-4" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">5</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v1r5" value="1" />
<input type="text" name="attr_v1r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie1-5" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v2r5" value="1" />
<input type="text" name="attr_v2r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie2-5" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v3r5" value="1" />
<input type="text" name="attr_v3r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie3-5" class="boxability"></textarea>
</div>
</td>
</tr>
</table>
<table>
<tr>
<td class="boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="boxtitresmall"><span name="attr_titrevoie4"></span></td>
<td class="boxtitresmall"><span name="attr_titrevoie5"></span></td>
<td class="boxtitresmall">Voie de prestige</td>
</tr>
<tr>
<td class="boxtitresmall">R</td>
<td class="boxinputleft">
<input type="text" class="nomvoie" name="attr_voie4nom" placeholder="Nom de la Voie n°4" />
<br>
<textarea spellcheck="false" name="attr_voie4expl" title="Explications voie 4"></textarea>
</td>
<td class="boxinput">
<input type="text" class="nomvoie" name="attr_voie5nom" placeholder="Nom de la Voie n°5" />
<br>
<textarea spellcheck="false" name="attr_voie5expl" title="Explications voie 4"></textarea>
</td>
<td class="boxinput">
<input type="text" class="nomvoie" name="attr_voie6nom" placeholder="Nom de la Voie de Prestige" />
<br>
<textarea spellcheck="false" name="attr_voie6expl" title="Explications voie de prestige"></textarea>
</td>
</tr>
<tr>
<td class="boxtitresmall">1</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v4r1" value="1" />
<input type="text" name="attr_v4r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie4-1" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v5r1" value="1" />
<input type="text" name="attr_v5r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie5-1" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v6r1" value="1" />
<input type="text" name="attr_v6r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie6-1" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">2</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v4r2" value="1" />
<input type="text" name="attr_v4r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie4-2" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v5r2" value="1" />
<input type="text" name="attr_v5r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie5-2" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v6r2" value="1" />
<input type="text" name="attr_v6r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie6-2" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">3</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v4r3" value="1" />
<input type="text" name="attr_v4r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie4-3" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v5r3" value="1" />
<input type="text" name="attr_v5r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie5-3" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v6r3" value="1" />
<input type="text" name="attr_v6r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie6-3" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">4</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v4r4" value="1" />
<input type="text" name="attr_v4r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie4-4" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v5r4" value="1" />
<input type="text" name="attr_v5r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie5-4" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v6r4" value="1" />
<input type="text" name="attr_v6r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie6-4" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">5</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v4r5" value="1" />
<input type="text" name="attr_v4r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie4-5" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v5r5" value="1" />
<input type="text" name="attr_v5r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie5-5" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v6r5" value="1" />
<input type="text" name="attr_v6r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie6-5" class="boxability"></textarea>
</div>
</td>
</tr>
</table>
<div>
<input type="checkbox" class="block-switch" name="attr_plus_de_voies"><span></span>
<div class="block-hidden">Plus de voies</div>
<div class="block-show">
<table>
<tr>
<td class="boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="boxtitresmall">Voie 7</td>
<td class="boxtitresmall">Voie 8</td>
<td class="boxtitresmall">Voie 9</td>
</tr>
<tr>
<td class="boxtitresmall">R</td>
<td class="boxinputleft">
<input type="text" class="nomvoie" name="attr_voie7nom" placeholder="Nom de la Voie n°7" />
<br>
<textarea spellcheck="false" name="attr_voie7expl" title="Explications voie 7"></textarea>
</td>
<td class="boxinput">
<input type="text" class="nomvoie" name="attr_voie8nom" placeholder="Nom de la Voie n°8" />
<br>
<textarea spellcheck="false" name="attr_voie8expl" title="Explications voie 8"></textarea>
</td>
<td class="boxinput">
<input type="text" class="nomvoie" name="attr_voie9nom" placeholder="Nom de la Voie n°9" />
<br>
<textarea spellcheck="false" name="attr_voie9expl" title="Explications voie 9"></textarea>
</td>
</tr>
<tr>
<td class="boxtitresmall">1</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v7r1" value="1" />
<input type="text" name="attr_v7r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie7-1" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v8r1" value="1" />
<input type="text" name="attr_v8r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie8-1" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v9r1" value="1" />
<input type="text" name="attr_v9r1titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie9-1" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">2</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v7r2" value="1" />
<input type="text" name="attr_v7r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie7-2" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v8r2" value="1" />
<input type="text" name="attr_v8r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie8-2" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v9r2" value="1" />
<input type="text" name="attr_v9r2titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie9-2" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">3</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v7r3" value="1" />
<input type="text" name="attr_v7r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie7-3" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v8r3" value="1" />
<input type="text" name="attr_v8r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie8-3" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v9r3" value="1" />
<input type="text" name="attr_v9r3titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie9-3" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">4</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v7r4" value="1" />
<input type="text" name="attr_v7r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie7-4" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v8r4" value="1" />
<input type="text" name="attr_v8r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie8-4" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v9r4" value="1" />
<input type="text" name="attr_v9r4titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie9-4" class="boxability"></textarea>
</div>
</td>
</tr>
<tr>
<td class="boxtitresmall">5</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v7r5" value="1" />
<input type="text" name="attr_v7r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie7-5" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v8r5" value="1" />
<input type="text" name="attr_v8r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie8-5" class="boxability"></textarea>
</div>
</td>
<td class="boxvoie">
<input type="checkbox" name="attr_v9r5" value="1" />
<input type="text" name="attr_v9r5titre" class="titreability2" />
<div>
<textarea spellcheck="false" name="attr_voie9-5" class="boxability" ></textarea>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<!-- les Formations martiales pour les terres d'arran -->
<input type="checkbox" class="optional-block-switch" name="attr_formations_martiales_check" value="1"><span></span>
<div class="optional-block">
<img class="imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
<table style="width:600px;">
<tr>
<td class="textfatleft" colspan="3">
FOMATIONS MARTIALES
</td>
</tr>
<tr>
<td class="textleft">
<input type="checkbox" name="attr_formation_armures_legeres" value="1" />
Armures légères
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_de_paysan" value="1" checked />
Armes de paysan
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation1" value="1" />
<input class="nobox" name="attr_nomformation1" type="text" style="width:160px;"/>
</td>
</tr>
<tr>
<td class="textleft">
<input type="checkbox" name="attr_formation_armures_lourdes" value="1" />
Armures lourdes
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_de_guerre" value="1"/>
Armes de guerre
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation2" value="1" />
<input class="nobox" name="attr_nomformation2" type="text" style="width:160px;"/>
</td>
</tr>
<tr>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_de_jet" value="1" />
Armes de jet
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_de_guerre_lourdes" value="1"/>
Armes de guerre lourdes
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation3" value="1" />
<input class="nobox" name="attr_nomformation3" type="text" style="width:160px;"/>
</td>
</tr>
<tr>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_de_trait" value="1" />
Armes de trait
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_de_duel" value="1"/>
Armes de duel
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation4" value="1" />
<input class="nobox" name="attr_nomformation4" type="text" style="width:160px;"/>
</td>
</tr>
<tr>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_de_tir" value="1" />
Armes de tir
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation_armes_d_hast" value="1"/>
Armes d'hast
</td>
<td class="textleft">
<input type="checkbox" name="attr_formation5" value="1" />
<input class="nobox" name="attr_nomformation5" type="text" style="width:160px;"/>
</td>
</tr>
</table>
</div>
<img class="imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
<table class="tabsep">
<tr>
<td class="textfatleft" style="width:300px;">Compétences</td>
<td class="textbase" style="width:66px;">Malus</td>
<td class="textbase" style="width:54px;">Carac.</td>
<td class="textbase" style="width:60px;">Bonus</td>
<td class="textbase">Description</td>
</tr>
</table>
<fieldset class="repeating_competences">
<input type='hidden' name='attr_comp_jet' value='@{for_sup} + @{FOR_TEST}' />
<input type='hidden' name='attr_comp_nomCapa' value='' />
<input type='hidden' name='attr_comp_bonusCapa' value=0 />
<input type='hidden' name='attr_comp_bonusCapaText' value='' />
<input type='hidden' name='attr_comp_caracs' value='' />
<input type='hidden' name='attr_comp_bonusTotal' value=0 />
<table class="tabsep">
<tr>
<td>
<button type="roll" class="neutre" name="roll_competence" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=@{comp_nom}}} {{subtags=@{comp_carac}:}} {{carac=[[@{comp_jet} + @{comp_bonusTotal}]]}} {{desc=@{comp_description}}}" />
</td>
<td class="boxinputleft" style="min-width:280px;">
<input type="text" name="attr_comp_nom" style="font-weight: bold;"/>
</td>
<td class="boxinputleft">
<select style="width:62px;" name="attr_comp_malus" size="1" title="Malus applicable">
<option value="" selected>-</option>
<option value="armure">Armure</option>
<option value="casque">Casque</option>
</select>
</td>
<td class="boxinputleft">
<select class="carac" name="attr_comp_carac" size="1" title="Caractéristique utilisée pour le jet">
<option selected>FOR</option>
<option>DEX</option>
<option>CON</option>
<option>INT</option>
<option>SAG</option>
<option>CHA</option>
</select>
</td>
<td class="boxinputleft">
<span name="attr_comp_bonusCapaText"></span>
+<input type="number" style="width:32px;" name="attr_comp_bonus" value="0" title="Bonus divers" />
</td>
<td class="boxinputleft" style="width:100%;">
<span name="attr_comp_caracs"></span>
<textarea class="ligne" name="attr_comp_description" title="Description"></textarea>
</td>
</tr>
</table>
</fieldset>
<span class="textfatleft">Jets de Capacité</span>
<fieldset class="repeating_jetcapas">
<table class="tabsep">
<tr>
<td>
<button type="roll" class="neutre" name="roll_CAPA" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=@{jetcapanom}}} {{subtags=Capacité}} {{carac=[[@{jetcapanbde}d@{jetcapade}@{jetcapatypjet}+[[@{jetcapacarac}]]+@{jetcapadiv}]]}} {{desc=@{jetcapadesc}}}" />
</td>
<td class="boxinputleft" style="min-width:200px;">
<input type="text" name="attr_jetcapanom" style="font-weight: bold;" placeholder="Nom du Jet de capacité" />
</td>
<td class="textbase" style="text-align: right;">
Jet
</td>
<td class="boxinputleft">
<input type="number" style="width:32px;" name="attr_jetcapanbde" value="1" title="Nombre de dés" />
<select class="carac" style="width:50px;" name="attr_jetcapade" size="1" title="Dé">
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
<option value="@{ETATDE}" selected>d20 (ou d12 si Affaibli)</option>
</select>
(<select class="carac" style="width:30px;" name="attr_jetcapatypjet" size="1" title="Option du jet : normal, garder le plus bas, garder le plus haut">
<option value="">N - Normal / additionner tous les dés</option>
<option value="kh1">S - garder le dé Supérieur / le plus haut score</option>
<option value="kl1">I - garder le dé Inférieur / le plus bas score</option>
</select>)
+<select class="carac" style="width:50px;" name="attr_jetcapacarac" size="1" title="Modificateur du jet">
<option value="0">-</option>
<optgroup label="Mod. de base">
<option value="@{FOR}" selected>FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{SAG}">SAG</option>
<option value="@{CHA}">CHA</option>
</optgroup>
<optgroup label="Mod. de test">
<option value="@{FOR_TEST}">FOR</option>
<option value="@{DEX_TEST}">DEX</option>
<option value="@{CON_TEST}">CON</option>
<option value="@{INT_TEST}">INT</option>
<option value="@{SAG_TEST}">SAG</option>
<option value="@{CHA_TEST}">CHA</option>
</optgroup>
</select>+<input type="number" style="width:32px;" name="attr_jetcapadiv" value="0" title="Bonus divers" />
</td>
<td class="textbase" style="text-align: right;">
Desc.
</td>
<td class="boxinputleft" style="width:100%;">
<textarea class="ligne" name="attr_jetcapadesc" placeholder="Description" title="Description"></textarea>
</td>
</tr>
</table>
</fieldset>
</div> <!-- FIN Voies -->
<div class="tab-content tab3"> <!-- Equipement -->
<div class="sheet-2colrow">
<div class="sheet-col">
<div class="boxtitre">ÉQUIPEMENT : Consommables</div>
<div class="boxinputleft">
<span class="textbase">Bourse&nbsp;:</span>
<input type="number" class="nombre" name="attr_bourse_pp" min="0" value="0" title="pièces de platine" /> PP,
<input type="number" class="nombre" name="attr_bourse_po" min="0" value="0" title="pièces d'or" /> PO,
<input type="number" class="nombre" name="attr_bourse_pa" min="0" value="0" title="pièces d'argent" /> PA,
<input type="number" class="nombre" name="attr_bourse_pc" min="0" value="0" title="pièces de cuivre" /> PC
<br>
<textarea name="attr_BOURSE" class="ligne" placeholder="Gemmes et autres monnaies" spellcheck:"false"></textarea>
</div>
<fieldset class="repeating_equipement">
<input class="options-flag" style="right:-10px;" name="attr_equipoptflag" type="checkbox" title="Montrer/cacher les options" /><span style="right:-10px;">y</span>
<div class="boxvoie">
<input type="text" style="width:310px;" name="attr_equip_nom" title="Équipement" />
&nbsp;<span class="textbase">Qté</span>
<input type="number" name="attr_equip_qte" value="1" title="Quantité" />
</div>
<div class="options boxvoie">
&nbsp;<span class="textbase">Effet :</span><textarea class="ligne" style="width:346px;" name="attr_equip_effet" title="Commande API" spellcheck="false" ></textarea>
</div>
</fieldset>
<table>
<tr><td class="boxtitre">ÉQUIPEMENT : Divers</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_equip_div" spellcheck="false" style="height:7em;" title="ÉQUIPEMENT DIVERS"></textarea></td></tr>
</table>
</div>
<div class="sheet-col">
<table>
<tr><td class="boxtitre">Notes</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_notes" style="height:13em;" title="Notes"></textarea></td></tr>
</table>
</div>
</div>
</div> <!-- FIN Equipement -->
<div class="tab-content tab4">
<div> <!-- Configuration -->
<ul>
<li>Setting :
<select name="attr_option_setting" title="@{option_setting}">
<option value="generique" selected>Générique</option>
<option value="arran">Terres d'Arran</option>
</select>
</li>
<li>Points de chance :
<input type="checkbox" name="attr_option_pc" value="1" title="@{option_pc}" checked />
</li>
<li>Points de récupération :
<input type="checkbox" name="attr_option_pr" value="1" title="@{option_pr}" checked />
</li>
<li>Magie :
<ul>
<li>Points de mana :
<input type="checkbox" name="attr_option_pm" value="1" title="@{option_pm}" checked />
</li>
<li> Épuisement magique :
<input type="checkbox" name="attr_option_epuisement" value="1" title="@{option_pr}" />
</li>
</ul>
</li>
<li> Bonus d'attaque de base égal au niveau :
<input type="checkbox" name="attr_option_ba_niveau" value="1" title="@{option_ba_niveau}" checked />
</li>
</ul>
</div> <!-- FIN Configuration -->
<div>
<span class="textbase">Jets</span>&nbsp;
<select class="carac" style="width: 75px;" name="attr_jets_caches" title="@{jets_caches}" size="1">
<option value="" selected>Normaux</option>
<option value="/w gm ">Cachés</option>
</select>
</div>
</div> <!-- FIN tab4 de fiche type PJ -->
<div class="tab-content tab5"> <!-- Données pour le script -->
<input type="checkbox" class="block-switch hidden-tab" name="attr_show_script" value="1"><span></span>
<div class=block-hidden><span class=textbasesmall>Le script COFantasy n'est pas installé. </span> </div>
<div class="block-show">
<input type="hidden" name="attr_message_version" value="Pas encore utilisable par le script" />
<div style="text-align:center;">
<span name="attr_message_version"></span>
</div>
<div class="sheet-2colrow">
<div class="sheet-col">
<div class="boxtitre">Actions du tour</div>
<input type="checkbox" name="attr_montrerattaques" value="1" checked/>
Montrer toutes les attaques cochées <br/>
<input type="checkbox" name="attr_montrerarmeenmain" value="1" checked/>
Montrer l'arme en main et dégainer
<fieldset class="repeating_actions">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0 />
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div class="boxtitre">Autres listes d'action</div>
<div style="position:relative">
<input class="options-flag" name="attr_action1optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction1" value="Liste 1" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions1" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions1">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div style="position:relative">
<input class="options-flag" name="attr_action2optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction2" value="Liste 2" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions2" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions2">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div style="position:relative">
<input class="options-flag" name="attr_action3optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction3" value="Liste 3" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions3" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions3">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div style="position:relative">
<input class="options-flag" name="attr_action4optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction4" value="Liste 4" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions4" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions4">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
</div>
<div class="sheet-col">
<table>
<tr><td class="boxtitre">Prédicats</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_predicats_script" style="height:15em;" title="Predicats"></textarea></td></tr>
</table>
</div>
</div>
</div>
</div> <!-- FIN des données pour le script -->
</div> <!-- FIN fiche type PJ -->
<div class="tab-content fp2"> <!-- fiche type PNJ -->
<input type="radio" name="attr_tab" class="tab tab1" value="carac. pnj"><span title="Caractéristiques"></span>
<input type="radio" name="attr_tab" class="tab tab2" value="equip. pnj"><span title="Équipement"></span>
<input type="radio" name="attr_tab" class="tab tab3" value="statblock"><span title="Statblock"></span>
<input type="radio" name="attr_tab" class="tab tab4" value="script pnj"><span title="Script"></span>
<img class="imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
<div class="tab-content tab1">
<div class="containerl">
<div style="width:375px;">
<table class="tabsep">
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_pnj_FOR" title="Jet de Force" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Force}} {{subtags=Caractéristique}} {{carac=[[ @{for_sup}[Dé] + [[@{pnj_for}]][Bonus] ]] }}">FOR</button>
<input type="checkbox" class="car" name="attr_pnj_for_sup" title="@{pnj_for_sup}"><span></span>
</td>
<td class="boxinput">
<input type="number" class="car" name="attr_pnj_for" title="Force" value="0" />
</td>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_pnj_DEX" title="Jet de Dextérité" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Dextérité}} {{subtags=Caractéristique}} {{carac=[[ @{dex_sup}[Dé] + [[@{pnj_dex}]][Bonus] ]] }}">DEX</button>
<input type="checkbox" class="car" name="attr_pnj_dex_sup" title="@{pnj_dex_sup}"><span></span>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_pnj_dex" title="Dextérité" value="0" />
</td>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_pnj_CON" title="Jet de Constitution" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Constitution}} {{subtags=Caractéristique}} {{carac=[[ @{con_sup}[Dé] + [[@{pnj_con}]][Bonus] ]] }}">CON</button>
<input type="checkbox" class="car" name="attr_pnj_con_sup" title="@{pnj_con_sup}"><span></span>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_pnj_con" title="Constitution" value="0" />
</td>
</tr>
<tr>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_pnj_INT" title="Jet d'Intelligence" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Intelligence}} {{subtags=Caractéristique}} {{carac=[[ @{int_sup}[Dé] + [[@{pnj_int}]][Bonus] ]] }}">INT</button>
<input type="checkbox" class="car" name="attr_pnj_int_sup" title="@{pnj_int_sup}"><span></span>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_pnj_int" title="Intelligence" value="0" />
</td>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_pnj_SAG" title="Jet de Sagesse" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Sagesse}} {{subtags=Caractéristique}} {{carac=[[ @{sag_sup}[Dé] + [[@{pnj_sag}]][Bonus] ]] }}">SAG</button>
<input type="checkbox" class="car" name="attr_pnj_sag_sup" title="@{pnj_sag_sup}"><span></span>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_pnj_sag" title="Sagesse" value="0" />
</td>
<td class="boxtitre-car">
<button class="boxtitre-car" type="roll" name="roll_pnj_CHA" title="Jet de Charisme" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Charisme}} {{subtags=Caractéristique}} {{carac=[[ @{cha_sup}[Dé] + [[@{pnj_cha}]][Bonus] ]] }}">CHA</button>
<input type="checkbox" class="car" name="attr_pnj_cha_sup" title="@{pnj_cha_sup}"><span></span>
</td>
<td class="boxinput-car">
<input type="number" class="car" name="attr_pnj_cha" title="Charisme" value="0" />
</td>
</tr>
</table>
<table class="tabsep">
<tr>
<td class="boxtitre-def" style="width:21%">DEF</td>
<td class="boxinput-def">
<input type="number" class="def" name="attr_pnj_def" title="Défense" value="10" min="0"/>
</td>
<td class="boxtitre-pv" style="width:21%">PV</td>
<td class="boxinput-pv">
<input type="number" class="pv" name="attr_PV_max" title="PVs max" value="0" min="0"/>
</td>
<td class="boxtitre-init">
<button class="boxtitre-init" type="roll" name="roll_pnj__INIT" title="Initiative" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=Initiative}} {{subtags=Combat}} {{carac=[[@{pnj_init} &{tracker}]]}}"> INIT</button>
</td>
<td class="boxinput-init">
<input type="number" class="init" name="attr_pnj_init" title="Initiative" value="10" min="1"/>
</tr>
</table>
<div class="containerl">
<table class="tabsep" style="width:20%;">
<tr><td class="boxtitre-def">RD</td></tr>
<tr><td class="boxinputleft-def">
<textarea class="def ligne" name="attr_RDS" spellcheck="false" title="@{RDS}"></textarea></td></tr>
</table>
<table style="width:51px">
<tr><td>
<input type="checkbox" name="attr_pnj_armure" title="@{pnj_armure}" style="width:9px"><span class="def" style="font-size:9px">Armure</span>
</td></tr>
<tr><td>
<input type="checkbox" name="attr_pnj_bouclier" title="@{pnj_bouclier}" style="width:9px"><span class="def" style="font-size:9px">Bouclier</span>
</td></tr>
</table>
<table class="tabsep" style="width:18%;">
<tr>
<td class="boxinput-pv">
<span class="textbase-pv">PV restants</span>&nbsp;
<input type="number" class="pv" name="attr_PV" title="Points de Vie restants" value="0" />
</td>
</tr>
<tr>
<td class="boxinput-pv">
<span class="textbase-pv">DM temp.</span>&nbsp;
<input type="number" class="pv" name="attr_DMTEMP" title="Dommages Temporaires" value="0" />
</td>
</tr>
</table>
&nbsp;&nbsp;
<span class="textbase">Jets</span>&nbsp;
<select class="carac" style="width: 75px;" name="attr_pnj_jets_caches" title="@{jets_caches}" size="1">
<option value="" selected>Normaux</option>
<option value="/w gm ">Cachés</option>
</select>
</div>
</div>
<div style="width:100%;">
<table>
<tr><td class="boxtitre">Capacités</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_capacites_pnj" style="border:none; margin:0px; resize:vertical; height:9em;" spellcheck="false" title="@{capacites_pnj}"></textarea></td></tr>
</table>
</div>
</div>
<input type="radio" name="attr_attaquetab" class="attacktab attacktab1" value="Attaques" checked="checked"><span title="Attaques"></span>
<input type="radio" name="attr_attaquetab" class="attacktab attacktab2" value="Options"><span title="Options"></span>
<img class="imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
<div class="tab-content attacktab1"> <!-- Attaques -->
<table class="tabsep">
<tr>
<td class="textfatleft-atk" style="width:156px;">Attaques</td>
<td class="textbase-atk" style="width:50px;">Toucher</td>
<td class="textbase-atk" style="width:32px;">Crit.</td>
<td class="textbase-atk" style="width:125px;">DM</td>
<td class="textbase-atk" style="width:50px;">Portée</td>
<td class="textbase-atk">Spécial</td>
</tr>
</table>
<fieldset class="repeating_pnjatk">
<div class="attack">
<input class="options-flag" name="attr_armeoptflag" type="checkbox" title="Montrer/cacher les options" /><span>y</span>
<div>
<table class="tabsep">
<tr>
<input type='hidden' name='attr_armebonusoption' value='0' />
<input type='hidden' name='attr_armedmtemp' value='' />
<input type='hidden' name='attr_armedegats' value='{{degats=[[(@{armedmnbde}d@{armedmde}@{armedmrollmod}+@{armedm})@{division_attaque_assuree}]]}}' />
<input type='hidden' name='attr_armepoudre' value='{{poudre=}}' />
<input type='hidden' name='attr_armereussiteauto' value='{{attaqueautomatique=}}' />
<input type='hidden' name='attr_armedmrollmod' value='' />
<input type='hidden' name='attr_armeattrollmod' value='' />
<input type='hidden' name='attr_armeattnbde' value='1' />
<input type='hidden' name='attr_armeattde' value='@{ETATDE}' />
<td>
<button type="roll" class="atk" name="roll_pnj_Arme" value="@{jets_caches}&{template:co1} {{perso=@{displayname}}} {{name=@{armenom}}} {{subtags=Attaque}} {{attaque=[[ @{armeattnbde}d@{armeattde}@{armeattrollmod}cs>@{armecrit}cf1 + @{armeatk} +@{bonus_attaque_option} +@{armebonusoption}]]}} @{armereussiteauto} @{armedegats} @{armepoudre} {{special=@{armespec}}} {{degats2=@{bonus_dm_option}}} {{dmtemp=@{armedmtemp}}}" />
</td>
<td class="boxinputleft-atk" style="min-width:138px;">
<input type="text" class="atk" style="width:13px; text-align:center; font-size:10px;" name="attr_armelabel" value=0>
<input type="text" class="atk" name="attr_armenom" style="font-weight: bold;width:92%;margin-left:-6px" placeholder="Arme/attaque"/>
</td>
<td class="boxinputleft-atk">
+<input type="number" class="atk" style="width:32px;" name="attr_armeatk" value="0" title="Bonus d'attaque" />
</td>
<td class="boxinputleft-atk" style="text-align: right;">
<input type="number" class="atk" name="attr_armecrit" style="width:32px;" min="2" max="20" value="20" title="Seuil de Critique (par défaut 20)" />
</td>
<td class="boxinputleft-atk">
<input type="number" class="atk" style="width:32px;" name="attr_armedmnbde" value="1" title="Nombre de dés de dommage" />
<select class="carac-atk" style="width:47px;" name="attr_armedmde" size="1" title="Dé de dommage">
<option value="3">d3</option>
<option value="4" selected>d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
+<input type="number" class="atk" style="width:32px;" name="attr_armedm" value="0" title="Bonus de dommage" />
</td>
<td class="boxinputleft-atk" style="min-width:50px;">
<input type="text" class="atk" name="attr_armeportee" placeholder="Portée" title="Portée" />
</td>
<td class="boxinputleft-atk" style="width:100%;">
<textarea class="atk ligne" name="attr_armespec" spellcheck="false" placeholder="Notes, capacités spéciales, effet ..." title="Notes, capacités spéciales, effet ..."></textarea>
</td>
</tr>
</table>
</div>
<div class="options">
<table class="tabsep">
<tr>
<td style="width:18px; text-align:center;">
<input type="checkbox" name="attr_armeactionvisible" title="Attaque visible dans les actions" value="1" checked>
</td>
<td class="boxinputleft-atk">
<select class="carac-atk" style="width: 124px;" name="attr_armetypeattaque" title="Type d'attaque">
<option>Naturel</option>
<option>Arme 1 main</option>
<option>Arme 2 mains</option>
<option>Sortilege</option>
<option>Arme gauche</option>
<option>Arme de jet</option>
</select>
</td>
<td class="boxinputleft-atk" style="min-width: 193px;">
<textarea name="attr_armemodificateurs" class="atk ligne" placeholder="Liste de modificateurs" spellcheck="false" title="Modificateurs d'attaque, séparés par des virgules&#10; avantage: garde le meilleur de 2 dés&#10; avecd12: utilise le d12 en attaque&#10; auto: réussite automatique&#10; choc: peut faire des attaques non léthales sans malus&#10; désavantage: garde le moins bon de 2 dés&#10; explodeMax: dé de dégâts explosifs&#10; pasDeDmg: l'attaque ne fait pas de dégâts&#10; poudre: arme à poudre&#10; reroll1: relance les 1 des dés de DM&#10; tempDmg: fait toujours des attaques non léthales"></textarea>
</td>
<td class="boxinputleft-atk">
<select class="carac-atk" style="width: 87px;" name="attr_armetypedegats" title="Type des dégâts">
<option>tranchant</option>
<option>contondant</option>
<option>percant</option>
<option>mental</option>
<option>feu</option>
<option>acide</option>
<option value="electrique">électrique</option>
<option>froid</option>
<option>sonique</option>
<option>poison</option>
<option>maladie</option>
<option>drain</option>
<option>magique</option>
</select>
</td>
<td class="boxinputleft-atk" style="width:100%;">
<textarea name="attr_armeoptions" class="atk ligne" placeholder="Options d'attaque avec argument" spellcheck="false" title="Options d'attaque"></textarea>
</td>
</tr>
</table>
</div>
</div>
</fieldset>
</div> <!-- fin attaques (pnj) -->
<div class="tab-content attacktab2"> <!-- Options d'attaque -->
<table>
<tr>
<td colspan='2'>
Attaque de groupe :
</td>
<td>
<input type='hidden' name='attr_message_attaque_de_groupe' value="attaquant par jet" />
<input type='number' class='atk' style="width:24px;" name="attr_attaque_de_groupe" value="1" min="1" title="Nombre d'attaques de pnj résolues en un jet" /> <span name='attr_message_attaque_de_groupe'></span>
</td>
</tr>
<tr>
<td style="text-align:center;">
<input type="checkbox" name="attr_attaque_en_puissance_check" title="Attaque en puissance utilisée" value="1" unchecked>
</td>
<td>
Attaque en puissance
</td>
<td>
<span name="attr_malus_attaque_en_puissance"></span> en attaque et +
<input type="number" class="atk" style="width:24px;" name="attr_attaque_en_puissance" value="1" min="1" title="Nombre de dés de dommage ajoutés" />
d6 DM
</td
</tr>
<tr>
<td style="text-align:center;">
<input type="checkbox" name="attr_attaque_assuree_check" title="Attaque assurée" value="1" unchecked>
</td>
<td>
Attaque assurée
</td>
<td>
+5 en attaque et DM divisés par 2
</td>
</tr>
<tr>
<td style="text-align:center;">
<input type='hidden' name='attr_defense_si_attaque_risquee' value='6'/>
<input type="checkbox" name="attr_attaque_risquee_check" title="Attaque risquée" value="1" unchecked />
</td>
<td>
Attaque risquée
</td>
<td>
+2 en attaque au contact mais la DEF passe de <span name='attr_pnj_def'></span> à <span name='attr_defense_si_attaque_risquee'></span> pour 1 tour
</td>
</tr>
<tr>
<td style="text-align:center;">
<input type="checkbox" name="attr_attaque_dm_temp_check" title="Assomer" value="1" unchecked>
</td>
<td>
Attaque non léthale
</td>
<td>
-2 en attaque si arme non adaptée
</td>
</tr>
</table>
</div><!-- fin des options d'attaque de PNJ -->
</div><!-- fin des caracs de PNJs -->
<div class="tab-content tab2"> <!-- Equipement PNJ-->
<div class="sheet-2colrow">
<div class="sheet-col">
<div class="boxtitre">ÉQUIPEMENT : Consommables</div>
<div class="boxinputleft">
<span class="textbase">Bourse&nbsp;:</span>
<input type="number" class="nombre" name="attr_bourse_pp" min="0" value="0" title="pièces de platine" /> PP,
<input type="number" class="nombre" name="attr_bourse_po" min="0" value="0" title="pièces d'or" /> PO,
<input type="number" class="nombre" name="attr_bourse_pa" min="0" value="0" title="pièces d'argent" /> PA,
<input type="number" class="nombre" name="attr_bourse_pc" min="0" value="0" title="pièces de cuivre" /> PC
<br>
<textarea class="ligne" name="attr_BOURSE" placeholder="Gemmes et autres monnaies" spellcheck:"false"></textarea>
</div>
<fieldset class="repeating_equipement">
<input class="options-flag" style="right:-10px;" name="attr_equipoptflag" type="checkbox" title="Montrer/cacher les options" /><span style="right:-10px;">y</span>
<div class="boxvoie">
<input type="text" style="width:310px;" name="attr_equip_nom" title="Équipement" />
&nbsp;<span class="textbase">Qté</span>
<input type="number" name="attr_equip_qte" value="1" title="Quantité" />
</div>
<div class="options boxvoie">
&nbsp;<span class="textbase">Effet :</span><textarea class="ligne" style="width:340px;" name="attr_equip_effet" title="Commande API" spellcheck="false" ></textarea>
</div>
</fieldset>
<table>
<tr><td class="boxtitre">ÉQUIPEMENT : Divers</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_equip_div" spellcheck="false" style="height:7em;" title="ÉQUIPEMENT DIVERS"></textarea></td></tr>
</table>
</div>
<div class="sheet-col">
<table>
<tr><td class="boxtitre">Notes</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_notes" style="height:13em;" title="Notes"></textarea></td></tr>
</table>
</div>
</div>
</div> <!-- FIN Equipement PNJ-->
<div class="tab-content tab3">
<table>
<tr><td class="boxtitre">Importer un block de statistiques</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_statblock" style="height:20em;" spellcheck="false" placeholder="Coller ici un statblock copié depuis le PDF" ></textarea></td></tr>
</table>
</div><!-- fin import statblocks -->
<div class="tab-content tab4"> <!-- Données pour le script -->
<input type="checkbox" class="block-switch hidden-tab" name="attr_show_script" value="1"><span></span>
<div class=block-hidden><span class=textbasesmall>Le script COFantasy n'est pas installé. </span> </div>
<div class="block-show">
<input type="hidden" name="attr_message_version" value="Pas encore utilisable par le script" />
<div style="text-align:center;">
<span name="attr_message_version"></span>
</div>
<div class="sheet-2colrow">
<div class="sheet-col">
<div class="boxtitre">Actions du tour</div>
<input type="checkbox" name="attr_montrerattaques" value="1" checked/>
Montrer toutes les attaques cochées <br/>
<input type="checkbox" name="attr_montrerarmeenmain" value="1" checked/>
Montrer l'arme en main et dégainer
<fieldset class="repeating_actions">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0 />
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div class="boxtitre">Autres listes d'action</div>
<div style="position:relative">
<input class="options-flag" name="attr_action1optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction1" value="Liste 1" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions1" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions1">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div style="position:relative">
<input class="options-flag" name="attr_action2optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction2" value="Liste 2" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions2" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions2">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div style="position:relative">
<input class="options-flag" name="attr_action3optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction3" value="Liste 3" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions3" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions3">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
<br />
<div style="position:relative">
<input class="options-flag" name="attr_action4optflag" type="checkbox" title="Montrer/cacher les options d'attaque" /><span>y</span>
<input type="text" name="attr_nomlisteaction4" value="Liste 4" style="font-weight:bold;text-align:center;"/>
<div class="options">
Options : <input type="text" name="attr_optionslisteactions4" style="width:83%" placeholder="Options des attaques" spellcheck="false">
</div>
</div>
<fieldset class="repeating_actions4">
<div>
<input class="options-flag" name="attr_actionoptflag" type="checkbox" title="Montrer/cacher le code de l'action" checked /><span>y</span>
<div>
<hr class="actionhr">
<input type="checkbox" name="attr_actionmontree" value="1" checked/>
<input type="text" style="width:20px; text-align:right; padding-left:-2px;" name="attr_actionrang" value=0>
<input type="text" name="attr_actiontitre" style="width:280px; font-weight: bold;" placeholder="Nom"/>
<select style="width:60px;" name="attr_actiontype" size="1" title="Type d'action">
<option value="action" selected>Action</option>
<option value="liste">Liste d'actions</option>
</select>
</div>
<div class="options">
<span style="font-weight: normal">Conditions :</span><input type="text" style="width:81%" name="attr_actionconditions" spellcheck="false" title="Conditions pour que l'action soit montrée" placeholder="toujours montré" />
<textarea class="ligne" name="attr_actioncode" spellcheck="false" placeholder="Code de l'action ou nom de macro ou ability si différent du titre" title="Code de l'action"></textarea>
</div>
</div>
</fieldset>
</div>
<div class="sheet-col">
<table>
<tr><td class="boxtitre">Prédicats</td></tr>
<tr><td class="boxinputleft"><textarea name="attr_predicats_script" style="height:15em;" title="Predicats"></textarea></td></tr>
</table>
</div>
</div>
</div>
</div> <!-- FIN des données pour le script -->
</div> <!-- FIN fiche type PNJ -->
</div> <!-- FIN FDP -->
<!-- TEMPLATES -->
<rolltemplate class="sheet-rolltemplate-co1">
<table>
<tr>
<th colspan="2" style="text-align: center;">{{perso}}</th>
</tr>
<tr>
<td class="sheet-rolltemplate-subheader">{{subtags}}</td>
<th>{{name}}</th>
</tr>
<tr>
<td colspan="2">
<img class="sheet-rolltemplate-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
</td>
</tr>
{{#DV}}
<tr>
<td class="sheet-rolltemplate-tcat">PV gagnés</td>
<td>{{DV}}</td>
</tr>
{{/DV}}
{{#carac}}
<tr>
<td class="sheet-rolltemplate-tcat">Jet </td>
<td>{{carac}}</td>
</tr>
{{/carac}}
{{#desc}}
<tr>
<td colspan="2" style="white-space:normal;">
<div class="sheet-rolltemplate-desc">{{desc}}</div>
</td>
</tr>
{{/desc}}
{{#attaque}}
{{^attaqueautomatique}}
{{#rollWasCrit() attaque}}
<tr><td colspan="2" style="color:green;"><b>Critique !</b></td></tr>
{{/rollWasCrit() attaque}}
{{#rollWasFumble() attaque}}
<tr>
<td colspan="2" style="color:red;"><b>Fumble !</b></td>
</tr>
{{/rollWasFumble() attaque}}
<tr>
<td class="sheet-rolltemplate-tcat">Jet </td>
<td>{{attaque}} contre DEF</td>
</tr>
{{#poudre}}
<tr>
<td>
Dé de poudre
</td>
<td>
{{poudre}}
</td>
</tr>
{{/poudre}}
{{/attaqueautomatique}}
{{#attaqueautomatique}}
<tr><td colspan="2" style="color:green; text-align: center;">Réussite automatique</td></tr>
{{/attaqueautomatique}}
{{#degats}}
<tr>
<td class="sheet-rolltemplate-tcat">Dégâts {{#dmtemp}}temp.{{/dmtemp}}</td>
<td>
{{degats}}
{{#rollWasCrit() attaque}}
<span style="color:green;font-weight:bold;"> + {{degats}}</span>
{{/rollWasCrit() attaque}}
{{#degats2}}
+ {{degats2}}
{{/degats2}}
</td>
</tr>
{{/degats}}
{{/attaque}}
{{#special}}
<tr>
<td colspan="2" class="sheet-rolltemplate-subheader" style="text-align:left;">Spécial</td>
</tr>
<tr>
<td colspan="2" style="white-space:normal;">
<div class="sheet-rolltemplate-desc">{{special}}</div>
</td>
</tr>
{{/special}}
{{#text}}
<tr>
<td colspan="2" style="white-space:normal; margin: 1px;">
<div class="sheet-rolltemplate-text">{{text}}</div>
</td>
</tr>
{{/text}}
<tr>
<td colspan="2">
<img class="sheet-rolltemplate-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesOubliees/co_hr.png" />
</td>
</tr>
</table>
</rolltemplate>
<!-- FIN TEMPLATES -->
<!-- **** SCRIPTS / SHEET WORKERS -->
<script type="text/worker">
on('sheet:opened', function() {
// **** Gestion transition de version
getAttrs(["version", "option_setting"], function(v) {
var verfdp = parseFloat(v.version) || 0;
if (verfdp === 0) {
// Version 1.6 vers 1.7
getAttrs(["FOR_SUP", "DEX_SUP", "CON_SUP", "INT_SUP", "SAG_SUP", "CHA_SUP"], function(jets) {
var sfor, sdex, scon, sint, ssag, scha = "";
if (jets.FOR_SUP == "2") {
sfor = "@{JETSUP}";
} else {
sfor = "@{JETNORMAL}";
}
if (jets.DEX_SUP == "2") {
sdex = "@{JETSUP}";
} else {
sdex = "@{JETNORMAL}";
}
if (jets.CON_SUP == "2") {
scon = "@{JETSUP}";
} else {
scon = "@{JETNORMAL}";
}
if (jets.INT_SUP == "2") {
sint = "@{JETSUP}";
} else {
sint = "@{JETNORMAL}";
}
if (jets.SAG_SUP == "2") {
ssag = "@{JETSUP}";
} else {
ssag = "@{JETNORMAL}";
}
if (jets.CHA_SUP == "2") {
scha = "@{JETSUP}";
} else {
scha = "@{JETNORMAL}";
}
setAttrs({
for_sup: sfor,
dex_sup: sdex,
con_sup: scon,
int_sup: sint,
sag_sup: ssag,
cha_sup: scha,
}, {
silent: true
});
});
}
if (verfdp < 3) {
setAttrs({
type_personnage: 'PJ'
}, {
silent: true
});
getAttrs(["charisme", "option_pc", "pc", "pc_max"], function(values) {
var option_pc = values.option_pc;
if (option_pc == 1 || option_pc == 'on') {
var charisme = parseInt(values.charisme);
if (!isNaN(charisme) && charisme > 0) {
var pc_base = 3 + Math.floor((charisme - 10) / 2);
var toSet = {
pc_base: pc_base
};
var new_pc = 3;
var pc_max = parseInt(values.pc_max);
if (!isNaN(pc_max) && pc_max != pc_base) {
toSet.pc_bonus = pc_max - pc_base;
} else {
if (pc_base < 0) pc_base = 0;
toSet.pc_max = pc_base;
}
setAttrs(toSet, {
silent: true
});
}
}
});
getAttrs(["for_sup", "dex_sup", "con_sup", "int_sup", "sag_sup", "cha_sup"], function(jets) {
var sfor, sdex, scon, sint, ssag, scha = "";
if (jets.for_sup) sfor = jets.for_sup.toLowerCase();
if (jets.dex_sup) sdex = jets.dex_sup.toLowerCase();
if (jets.con_sup) scon = jets.con_sup.toLowerCase();
if (jets.int_sup) sint = jets.int_sup.toLowerCase();
if (jets.sag_sup) ssag = jets.sag_sup.toLowerCase();
if (jets.cha_sup) scha = jets.cha_sup.toLowerCase();
setAttrs({
for_sup: sfor,
dex_sup: sdex,
con_sup: scon,
int_sup: sint,
sag_sup: ssag,
cha_sup: scha,
}, {
silent: true
});
});
}
if (verfdp < 3.2) {
getAttrs(["DEFARMURE"], function(values) {
var def = parseInt(values.DEFARMURE);
if (def === 0) setAttrs({
DEFARMUREON: 0
}, {
silent: true
});
else if (def > 0) setAttrs({
DEFARMUREON: 1
}, {
silent: true
});
});
getAttrs(["DEFBOUCLIER"], function(values) {
var def = parseInt(values.DEFBOUCLIER);
if (def === 0) setAttrs({
DEFBOUCLIERON: 0
}, {
silent: true
});
else if (def > 0) setAttrs({
DEFBOUCLIERON: 1
}, {
silent: true
});
});
//Remplis le casque si on a un attribut RD_critique
getAttrs(['RD_critique'], function(values) {
var rd = values.RD_critique;
if (rd) {
rd = parseInt(rd);
if (!isNaN(rd) && rd > 0) {
setAttrs({
casque_rd: rd,
casque_malus: rd,
casque_on: 1,
RD_critique: ''
}, {
silent: true
});
}
}
});
//Ajout des labels aux armes.
ajouteLabels('repeating_armes');
ajouteLabels('repeating_pnjatk');
}
if (verfdp < 3.3) {
//Par défaut, les attaques n'étaient pas visibles
enleveAttaqueVisible('repeating_armes');
enleveAttaqueVisible('repeating_pnjatk');
}
if (verfdp < 3.4) {
appliqueModificateurs34('armes');
appliqueModificateurs34('pnjatk');
getAttrs(['pnj_def'], function(values) {
var def = parseInt(values.pnj_def);
if (isNaN(def) || def == 10) return;
setAttrs({
defense_si_attaque_risquee: def - 4
}, {
silent: true
});
});
}
if (verfdp < 3.5) {
getAttrs(['type_personnage'], function(values) {
if (values.type_personnage == 'PNJ') {
setAttrs({
tab: "carac. pnj"
}, {
silent: true
});
}
});
}
if (verfdp < 3.6) { //passage à un seul attribut pour les PRs
getAttrs(['PR1', 'PR2', 'PR3', 'PR4', 'PR5'], function(values) {
var pr = 5;
if (parseInt(values.PR1)) pr--;
if (parseInt(values.PR2)) pr--;
if (parseInt(values.PR3)) pr--;
if (parseInt(values.PR4)) pr--;
if (parseInt(values.PR5)) pr--;
setAttrs({
pr: pr,
pr_max: 5
}, {
silent: true
});
});
}
if (verfdp < 3.7) { //unification des attributs pv, dmtemp et rd
getAttrs(['type_personnage', 'pnj_pv', 'pnj_pv_max', 'pnj_dmtemp', 'pnj_rd'], function(values) {
if (values.type_personnage != 'PNJ') return;
var sa = {
RDS: values.pnj_rd
};
var pvMax = parseInt(values.pnj_pv_max);
if (!isNaN(pvMax) && pvMax > 0) sa.PV_max = pvMax;
var pv = parseInt(values.pnj_pv);
if (!isNaN(pv) && pv >= 0 && pv <= pvMax) sa.PV = pv;
var dmtemp = parseInt(values.pnj_dmtemp);
if (!isNaN(dmtemp) && dmtemp >= 0 && dmtemp <= pvMax)
sa.DMTEMP = dmtemp;
setAttrs(sa);
});
}
if (verfdp < 4.01) { //changement de nom des attributs de consommables
getSectionIDs('repeating_equipement', function(idArray) {
idArray.forEach(function(id) {
var prefix = 'repeating_equipement_' + id + '_';
getAttrs([prefix + 'equip-nom', prefix + 'equip-qte', prefix + 'equip-effet'], function(values) {
var sa = {};
sa[prefix + 'equip_nom'] = values[prefix + 'equip-nom'];
sa[prefix + 'equip_qte'] = values[prefix + 'equip-qte'];
sa[prefix + 'equip_effet'] = values[prefix + 'equip-effet'];
sa[prefix + 'equip-nom'] = '';
sa[prefix + 'equip-qte'] = '';
sa[prefix + 'equip-effet'] = '';
setAttrs(sa);
});
});
});
getAttrs(['equip-div'], function(values) {
if (values['equip-div'] !== undefined)
setAttrs({
equip_div: values['equip-div'],
});
});
}
if (verfdp < 4.02) { //rattrapage équipement divers, parsing de bourse
getAttrs(['equip-div', 'equip_div', 'BOURSE', 'option_setting'], function(values) {
if (values['equip-div'] !== undefined && values['equip-div'] !== '' && values.equip_div === '') {
setAttrs({
equip_div: values['equip-div'],
});
}
if (values.BOURSE) {
var sa = {};
var bourse = values.BOURSE.toLowerCase().split(/[ ,]/);
var lastNumber = 0;
var reste = '';
bourse.forEach(function(t) {
switch (t.trim()) {
case '':
case ' ':
case ',':
case 'et':
return;
case 'pp':
case 'platine':
if (lastNumber) sa.bourse_pp = lastNumber;
else reste += ' ' + t;
lastNumber = 0;
return;
case 'po':
case 'or':
if (lastNumber) sa.bourse_po = lastNumber;
else reste += ' ' + t;
lastNumber = 0;
return;
case 'pa':
case 'argent':
case "d'argent":
if (lastNumber) sa.bourse_pa = lastNumber;
else reste += ' ' + t;
lastNumber = 0;
return;
case 'pc':
case 'cuivre':
if (lastNumber) sa.bourse_pc = lastNumber;
else reste += ' ' + t;
lastNumber = 0;
return;
default:
var n = parseInt(t);
if (isNaN(n) | n < 1) {
reste += ' ' + t;
return;
}
if (lastNumber) reste += ' ' + lastNumber;
lastNumber = n;
if (t.endsWith('pp')) {
sa.bourse_pp = lastNumber;
lastNumber = 0;
} else if (t.endsWith('po')) {
sa.bourse_po = lastNumber;
lastNumber = 0;
} else if (t.endsWith('pa')) {
sa.bourse_pa = lastNumber;
lastNumber = 0;
} else if (t.endsWith('pc')) {
sa.bourse_pc = lastNumber;
lastNumber = 0;
}
}
});
if (sa.bourse_pp || sa.bourse_po || sa.bourse_pa || sa.bourse_pc) {
sa.BOURSE = reste;
setAttrs(sa);
}
}
if (values.option_settings != 'arran') {
setAttrs({
mod_atktir: '',
mod_atkmag: '',
mod_initiative: '',
});
}
});
}
if (verfdp < 4.03) { //bonus d'attaque différenciés
setBaseAttacks();
}
if (verfdp < 4.04) { //titres de capacités
var a = [];
var voie;
var rang;
for (voie = 1; voie < 10; voie++) {
for (rang = 1; rang < 6; rang++) {
a.push('voie' + voie + '-' + rang);
a.push('v' + voie + 'r' + rang + 'titre');
}
}
getAttrs(a, function(values) {
var s = {};
for (voie = 1; voie < 10; voie++) {
for (rang = 1; rang < 6; rang++) {
var titre = 'v' + voie + 'r' + rang + 'titre';
if (values[titre] !== '') continue;
var capa = 'voie' + voie + '-' + rang;
var r = extraireTitreCapacite(values[capa]);
if (r.titre === '') continue;
s[titre] = r.titre;
s[capa] = r.texte;
}
}
setAttrs(s);
});
}
setAttrs({
version: 4.04
});
if (v.option_setting == 'arran') {
//Quelques valeurs de départ selon la famille de profil par défaut
getAttrs(['famille_par_defaut', 'famille', 'charisme', 'sagesse', 'niveau'], function(values) {
if (values.famille_par_defaut == 1 && values.famille == 'aventurier') {
var attr = {
famille_par_defaut: 0,
DV: 8,
mod_atkcac: 1,
mod_atktir: 1,
option_setting_cac: 'arran',
option_setting_tir: 'arran',
option_setting_mag: 'arran',
option_setting_init: 'arran',
titrevoie4: "Voie de peuple",
titrevoie5: "Voie culturelle",
titrecapaciteraciale: "Trait de peuple",
formations_martiales_check: 1,
};
var charisme = parseInt(values.charisme);
if (!isNaN(charisme) && charisme > 0) {
attr.pc_base = 4 + Math.floor((charisme - 10) / 2);
attr.pc_max = attr.pc_base;
attr.pc = attr.pc_base;
}
var sagesse = parseInt(values.sagesse);
var niveau = parseInt(values.niveau);
if (!isNaN(sagesse) && sagesse > 0 && !isNaN(niveau) && niveau >= 0) {
attr.pm_max = niveau + Math.floor((sagesse - 10) / 2);
attr.pm = attr.pm_max;
}
setAttrs(attr);
}
});
}
});
});
function extraireTitreCapacite(capacite) {
var res = {
titre: capacite,
texte: ''
};
capacite = (capacite + '').trim();
if (capacite.length === 0) return res;
var i = capacite.indexOf('\n');
if (i > 0 && i < 41) {
res.titre = capacite.substring(0, i).trim();
if (i < capacite.length - 1)
res.texte = capacite.substring(i + 1);
return res;
}
if (capacite.length < 42) return res;
i = capacite.lastIndexOf(' ', 42);
if (i < 0) i = capacite.indexOf(' ');
if (i < 0) return res;
res.titre = capacite.substring(0, i);
if (i < capacite.length - 1) res.texte = capacite.substring(i + 1);
return res;
}
function appliqueModificateurs34(section) {
getSectionIDs('repeating_' + section, function(idArray) {
idArray.forEach(function(id) {
var prefix = 'repeating_' + section + '_' + id + '_';
getAttrs([prefix + 'armemodificateurs'], function(values) {
var modifs = values[prefix + 'armemodificateurs'].split(',');
var attrs = {};
var nbDes = 1; //Nombre de dés pour l'attaque
var plusFort = true;
modifs.forEach(function(m) {
switch (m.trim()) {
case 'tempDmg':
attrs[prefix + 'armedmtemp'] = 1;
return;
case 'pasDeDmg':
attrs[prefix + 'armedegats'] = '{{degats=}}';
return;
case 'poudre':
attrs[prefix + 'armepoudre'] = '{{poudre=[[1d20]]}}';
return;
case 'auto':
attrs[prefix + 'armereussiteauto'] = '{{attaqueautomatique=1}}';
return;
case 'reroll1':
attrs[prefix + 'armedmrollmod'] = attrs[prefix + 'armedmrollmod'] || '';
attrs[prefix + 'armedmrollmod'] += 'r1';
return;
case 'explodeMax':
attrs[prefix + 'armedmrollmod'] = attrs[prefix + 'armedmrollmod'] || '';
attrs[prefix + 'armedmrollmod'] += '!';
return;
case 'avantage':
case 'm2d20':
if (plusFort) nbDes++;
else if (nbDes <= 1) {
plusFort = true;
nbDes = 2;
} else nbDes--;
return;
case 'desavantage':
case 'désavantage':
if (plusFort) {
if (nbDes > 1) nbDes--;
else {
plusFort = false;
nbDes = 2;
}
} else nbDes++;
return;
case 'avecd12':
attrs[prefix + 'armeattde'] = '12';
return;
}
});
if (nbDes > 1) {
attrs[prefix + 'armeattnbde'] = nbDes;
if (plusFort) attrs[prefix + 'armeattrollmod'] = 'kh1';
else attrs[prefix + 'armeattrollmod'] = 'kl1';
}
setAttrs(attrs);
});
});
});
}
function enleveAttaqueVisible(attr) {
getSectionIDs(attr, function(idArray) {
var toSet = {};
idArray.forEach(function(id) {
toSet[attr + '_' + id + '_armeactionvisible'] = 0;
});
setAttrs(toSet);
});
}
function ajouteLabels(attr) {
getSectionIDs(attr, function(idArray) {
getAttrs(['max_attack_label'], function(v) {
var maxLabel = parseInt(v.max_attack_label);
if (isNaN(maxLabel)) maxLabel = 0;
var initialMaxLabel = maxLabel;
var count = idArray.length;
var finalize = function() {
count--;
if (count === 0) {
if (maxLabel > initialMaxLabel)
setAttrs({
max_attack_label: maxLabel
}, {
silent: true
});
}
};
idArray.forEach(function(id) {
var prefix = attr + '_' + id + '_';
getAttrs([prefix + 'armelabel', prefix + 'armenom'], function(values) {
var label = parseInt(values[prefix + 'armelabel']);
if (label > 0) return;
var toSet = {};
var nom = values[prefix + 'armenom'];
var postLabel = nom.indexOf(' ');
if (postLabel > 0 && postLabel < nom.length - 1) {
label = parseInt(nom.substring(0, postLabel));
if (!isNaN(label)) {
if (label > maxLabel) maxLabel = label;
toSet[prefix + 'armelabel'] = label;
toSet[prefix + 'armenom'] = nom.substring(postLabel + 1);
setAttrs(toSet);
finalize();
return;
}
}
//Pas de label dans le nom
maxLabel++;
toSet[prefix + 'armelabel'] = maxLabel;
setAttrs(toSet);
finalize();
});
});
});
});
}
function car_sup_from_pj_to_pnj(att_sup) {
if (att_sup === undefined || att_sup == '@{jetnormal}') return 0;
return 'on';
}
//asynchrone, appelle callback avec un map label -> prefix attribut
function getLabels(attr, callback) {
var res = {};
getSectionIDs(attr, function(idArray) {
var labelArray = idArray.map(function(id) {
return attr + '_' + id + '_armelabel';
});
getAttrs(labelArray, function(values) {
idArray.forEach(function(id) {
var label = values[attr + '_' + id + '_armelabel'];
if (label === undefined) return;
res[label] = attr + '_' + id + '_';
});
callback(res);
});
});
}
on('change:type_personnage', function(eventinfo) {
//Conversion quand on passe de PJ à PNJ
if (eventinfo.newValue == 'PNJ') {
getAttrs(
["force", "FOR_BONUS", "dexterite", "DEX_BONUS", "constitution",
"CON_BONUS", "intelligence", "INT_BONUS", "sagesse", "SAG_BONUS",
"charisme", "CHA_BONUS", "INIT_DIV", "DEFARMURE", "DEFARMUREON",
"DEFBOUCLIER", "DEFBOUCLIERON", "DEFDIV", "PV_max", "for_sup",
"dex_sup", "con_sup", "int_sup", "sag_sup", "cha_sup", "PV", "RDS",
"jets_caches", "pnj_default_jets_caches",
],
function(values) {
var attrs = {
tab: "carac. pnj"
};
attrs.pnj_for = Math.floor((parseInt(values.force) - 10) / 2);
if (isNaN(attrs.pnj_for)) attrs.pnj_for = 0;
var bonus = parseInt(values.FOR_BONUS);
if (!isNaN(bonus)) attrs.pnj_for += bonus;
attrs.pnj_init = parseInt(values.dexterite);
if (isNaN(attrs.pnj_init)) attrs.pnj_init = 10;
attrs.pnj_dex = Math.floor((attrs.pnj_init - 10) / 2);
attrs.pnj_def = 10 + attrs.pnj_dex;
bonus = parseInt(values.DEX_BONUS);
if (!isNaN(bonus)) attrs.pnj_dex += bonus;
attrs.pnj_con = Math.floor((parseInt(values.constitution) - 10) / 2);
if (isNaN(attrs.pnj_con)) attrs.pnj_con = 0;
bonus = parseInt(values.CON_BONUS);
if (!isNaN(bonus)) attrs.pnj_con += bonus;
attrs.pnj_int = Math.floor((parseInt(values.intelligence) - 10) / 2);
if (isNaN(attrs.pnj_int)) attrs.pnj_int = 0;
bonus = parseInt(values.INT_BONUS);
if (!isNaN(bonus)) attrs.pnj_int += bonus;
attrs.pnj_sag = Math.floor((parseInt(values.sagesse) - 10) / 2);
if (isNaN(attrs.pnj_sag)) attrs.pnj_sag = 0;
bonus = parseInt(values.SAG_BONUS);
if (!isNaN(bonus)) attrs.pnj_sag += bonus;
attrs.pnj_cha = Math.floor((parseInt(values.charisme) - 10) / 2);
if (isNaN(attrs.pnj_cha)) attrs.pnj_cha = 0;
bonus = parseInt(values.CHA_BONUS);
if (!isNaN(bonus)) attrs.pnj_cha += bonus;
bonus = parseInt(values.DEFARMURE) * parseInt(values.DEFARMUREON);
if (!isNaN(bonus)) attrs.pnj_def += bonus;
bonus = parseInt(values.DEFBOUCLIER) * parseInt(values.DEFBOUCLIERON);
if (!isNaN(bonus)) attrs.pnj_def += bonus;
bonus = parseInt(values.DEFDIV);
if (!isNaN(bonus)) attrs.pnj_def += bonus;
bonus = parseInt(values.INIT_DIV);
if (!isNaN(bonus)) attrs.pnj_init += bonus;
attrs.pnj_for_sup = car_sup_from_pj_to_pnj(values.for_sup);
attrs.pnj_dex_sup = car_sup_from_pj_to_pnj(values.dex_sup);
attrs.pnj_con_sup = car_sup_from_pj_to_pnj(values.con_sup);
attrs.pnj_int_sup = car_sup_from_pj_to_pnj(values.int_sup);
attrs.pnj_sag_sup = car_sup_from_pj_to_pnj(values.sag_sup);
attrs.pnj_cha_sup = car_sup_from_pj_to_pnj(values.cha_sup);
if (values.pnj_default_jets_caches == "true") {
attrs.pnj_jets_caches = '/w gm ';
attrs.jets_caches = '/w gm ';
} else {
attrs.pnj_jets_caches = values.jets_caches;
}
attrs.pnj_armure = values.DEFARMUREON;
attrs.pnj_bouclier = values.DEFBOUCLIERON;
setAttrs(attrs);
});
//Copie des attaques
getLabels('repeating_pnjatk', function(pnjLabels) {
getSectionIDs('repeating_armes', function(idArray) {
idArray.forEach(function(id) {
var prefix = 'repeating_armes_' + id + '_';
getAttrs([prefix + 'armelabel', prefix + 'armenom', prefix + 'armeatk', prefix + 'armeatkdiv', prefix + 'armecrit', prefix + 'armedmnbde', prefix + 'armedmde', prefix + 'armedmcar', prefix + 'armedmdiv', prefix + 'armeportee', prefix + 'armespec', prefix + 'armeoptflag', 'niveau', 'force', 'dexterite', 'constitution', 'intelligence', 'sagesse', 'charisme', 'ATKCAC_CARAC', 'ATKCAC_DIV', 'ATKTIR_CARAC', 'ATKTIR_DIV', 'ATKMAG_CARAC', 'ATKMAG_DIV'], function(values) {
var label = values[prefix + 'armelabel'];
if (!pnjLabels[label]) {
var attrs = {};
var pnjPref = 'repeating_pnjatk_' + generateRowID() + '_';
attrs[pnjPref + 'armelabel'] = label;
attrs[pnjPref + 'armenom'] = values[prefix + 'armenom'];
attrs[pnjPref + 'armeoptflag'] = values[prefix + 'armeoptflag'];
var atk = parseInt(values.niveau);
if (isNaN(atk)) return;
var typeAtk;
switch (values[prefix + 'armeatk']) {
case '@{ATKCAC}':
typeAtk = 'ATKCAC';
break;
case '@{ATKTIR}':
typeAtk = 'ATKTIR';
break;
case '@{ATKMAG}':
typeAtk = 'ATKMAG';
break;
default:
return;
}
var caracAtk;
switch (values[typeAtk + '_CARAC']) {
case '@{FOR}':
caracAtk = 'force';
break;
case '@{DEX}':
caracAtk = 'dexterite';
break;
case '@{CON}':
caracAtk = 'constitution';
break;
case '@{INT}':
caracAtk = 'intelligence';
break;
case '@{SAG}':
caracAtk = 'sagesse';
break;
case '@{CHA}':
caracAtk = 'charisme';
break;
default:
return;
}
caracAtk = parseInt(values[caracAtk]);
if (isNaN(caracAtk)) return;
atk += Math.floor((caracAtk - 10) / 2);
var div = parseInt(values[typeAtk + '_DIV']);
if (!isNaN(div)) atk += div;
div = parseInt(values[prefix + 'armeatkdiv']);
if (!isNaN(div)) atk += div;
attrs[pnjPref + 'armeatk'] = atk;
attrs[pnjPref + 'armecrit'] = values[prefix + 'armecrit'];
attrs[pnjPref + 'armedmnbde'] = values[prefix + 'armedmnbde'];
attrs[pnjPref + 'armedmde'] = values[prefix + 'armedmde'];
var dm = parseInt(values[prefix + 'armedmdiv']);
if (isNaN(dm)) dm = 0;
switch (values[prefix + 'armedmcar']) {
case '@{FOR}':
caracAtk = 'force';
break;
case '@{DEX}':
caracAtk = 'dexterite';
break;
case '@{CON}':
caracAtk = 'constitution';
break;
case '@{INT}':
caracAtk = 'intelligence';
break;
case '@{SAG}':
caracAtk = 'sagesse';
break;
case '@{CHA}':
caracAtk = 'charisme';
break;
default:
caracAtk = 0;
}
if (caracAtk) {
caracAtk = parseInt(values[caracAtk]);
if (!isNaN(caracAtk)) dm += Math.floor((caracAtk - 10) / 2);
}
attrs[pnjPref + 'armedm'] = dm;
attrs[pnjPref + 'armeportee'] = values[prefix + 'armeportee'];
attrs[pnjPref + 'armespec'] = values[prefix + 'armespec'];
setAttrs(attrs);
}
});
});
});
});
} else {
//On passe de PNJ à PJ
getAttrs(['option_ba_niveau', 'niveau'], function(values) {
var attrsPJ = {
tab: 'caracteristiques'
};
if (values.option_ba_niveau == '1') {
attrsPJ.atkcac_base = values.niveau;
attrsPJ.atktir_base = values.niveau;
attrsPJ.atkmag_base = values.niveau;
}
setAttrs(attrsPJ);
});
}
});
//Conversion PNJ vers PJ
on('change:pnj_for', function(eventinfo) {
getAttrs(["FOR_BONUS", "pnj_for"], function(values) {
var bonus_carac = parseInt(values.pnj_for);
if (isNaN(bonus_carac)) return;
var pre_bonus = parseInt(values.FOR_BONUS);
if (!isNaN(pre_bonus)) bonus_carac -= pre_bonus;
setAttrs({
force: 10 + 2 * bonus_carac,
});
});
});
on('change:pnj_dex', function(eventinfo) {
getAttrs(["DEX_BONUS", "pnj_dex", "INIT_DIV", "DEFARMURE", "DEFARMUREON", "DEFBOUCLIER", "DEFBOUCLIERON", "pnj_init", "pnj_def"], function(values) {
var bonus_carac = parseInt(values.pnj_dex);
if (isNaN(bonus_carac)) return;
var pre_bonus = parseInt(values.DEX_BONUS);
if (!isNaN(pre_bonus)) bonus_carac -= pre_bonus;
var carac = 10 + 2 * bonus_carac;
//update INIT_DIV so that init does not change
var init = parseInt(values.pnj_init);
if (!isNaN(init)) {
if (init % 2 == 1) carac++;
setAttrs({
INIT_DIV: init - carac
});
}
//update DEFDIV so that DEF does not change
var def = parseInt(values.pnj_def);
if (!isNaN(def)) {
var defense = 10;
var bonus = parseInt(values.DEFARMURE) * parseInt(values.DEFARMUREON);
if (!isNaN(bonus)) defense += bonus;
bonus = parseInt(values.DEFBOUCLIER) * parseInt(values.DEFBOUCLIERON);
if (!isNaN(bonus)) defense += bonus;
bonus = Math.floor((parseInt(values.dexterite) - 10) / 2);
if (!isNaN(bonus)) defense += bonus;
setAttrs({
DEFDIV: def - defense
});
}
setAttrs({
dexterite: carac,
});
});
});
on('change:pnj_con', function(eventinfo) {
getAttrs(["CON_BONUS", "pnj_con"], function(values) {
var bonus_carac = parseInt(values.pnj_con);
if (isNaN(bonus_carac)) return;
var pre_bonus = parseInt(values.CON_BONUS);
if (!isNaN(pre_bonus)) bonus_carac -= pre_bonus;
setAttrs({
constitution: 10 + 2 * bonus_carac,
});
});
});
on('change:pnj_int', function(eventinfo) {
getAttrs(["INT_BONUS", "pnj_int"], function(values) {
var bonus_carac = parseInt(values.pnj_int);
if (isNaN(bonus_carac)) return;
var pre_bonus = parseInt(values.INT_BONUS);
if (!isNaN(pre_bonus)) bonus_carac -= pre_bonus;
setAttrs({
intelligence: 10 + 2 * bonus_carac,
});
});
});
on('change:pnj_sag', function(eventinfo) {
getAttrs(["SAG_BONUS", "pnj_sag"], function(values) {
var bonus_carac = parseInt(values.pnj_sag);
if (isNaN(bonus_carac)) return;
var pre_bonus = parseInt(values.SAG_BONUS);
if (!isNaN(pre_bonus)) bonus_carac -= pre_bonus;
setAttrs({
sagesse: 10 + 2 * bonus_carac,
});
});
});
on('change:pnj_cha', function(eventinfo) {
getAttrs(["CHA_BONUS", "pnj_cha"], function(values) {
var bonus_carac = parseInt(values.pnj_cha);
if (isNaN(bonus_carac)) return;
var pre_bonus = parseInt(values.CHA_BONUS);
if (!isNaN(pre_bonus)) bonus_carac -= pre_bonus;
setAttrs({
charisme: 10 + 2 * bonus_carac,
});
});
});
on('change:pnj_def', function(eventinfo) {
getAttrs(["DEFARMURE", "DEFARMUREON", "DEFBOUCLIER", "DEFBOUCLIERON", "dexterite", "pnj_def"], function(values) {
var new_def = parseInt(values.pnj_def);
if (isNaN(new_def)) {
console.log("DEF pnj non définie");
return;
}
var defense = 10;
var bonus = parseInt(values.DEFARMURE) * parseInt(values.DEFARMUREON);
if (!isNaN(bonus)) defense += bonus;
bonus = parseInt(values.DEFBOUCLIER) * parseInt(values.DEFBOUCLIERON);
if (!isNaN(bonus)) defense += bonus;
bonus = Math.floor((parseInt(values.dexterite) - 10) / 2);
if (!isNaN(bonus)) defense += bonus;
setAttrs({
DEFDIV: new_def - defense,
defense_si_attaque_risquee: new_def - 4,
});
});
});
on('change:pnj_init', function(eventinfo) {
getAttrs(["dexterite", "pnj_init"], function(values) {
var new_init = parseInt(values.pnj_init);
if (isNaN(new_init)) {
console.log("Initiative de PNJ incorrecte");
return;
}
var dex = parseInt(values.dexterite);
if (isNaN(dex)) {
setAttrs({
dexterite: new_init,
INIT_DIV: 0
});
return;
}
if (dex % 2 == 1) {
if (new_init % 2 === 0) {
dex--;
setAttrs({
dexterite: dex
});
}
} else if (new_init % 2 == 1) {
dex++;
setAttrs({
dexterite: dex
});
}
setAttrs({
INIT_DIV: new_init - dex
});
});
});
on('change:pnj_for_sup', function(eventinfo) {
if (eventinfo.newValue == 'on') {
getAttrs(["for_sup"], function(values) {
if (values.for_sup && values.for_sup.startsWith('@{jetsup')) return;
setAttrs({
for_sup: '@{jetsup}'
});
});
} else {
setAttrs({
for_sup: '@{jetnormal}'
});
}
});
on('change:pnj_dex_sup', function(eventinfo) {
if (eventinfo.newValue == 'on') {
getAttrs(["dex_sup"], function(values) {
if (values.dex_sup && values.dex_sup.startsWith('@{jetsup')) return;
setAttrs({
dex_sup: '@{jetsup}'
});
});
} else {
setAttrs({
dex_sup: '@{jetnormal}'
});
}
});
on('change:pnj_con_sup', function(eventinfo) {
if (eventinfo.newValue == 'on') {
getAttrs(["con_sup"], function(values) {
if (values.con_sup && values.con_sup.startsWith('@{jetsup')) return;
setAttrs({
con_sup: '@{jetsup}'
});
});
} else {
setAttrs({
con_sup: '@{jetnormal}'
});
}
});
on('change:pnj_int_sup', function(eventinfo) {
if (eventinfo.newValue == 'on') {
getAttrs(["int_sup"], function(values) {
if (values.int_sup && values.int_sup.startsWith('@{jetsup')) return;
setAttrs({
int_sup: '@{jetsup}'
});
});
} else {
setAttrs({
int_sup: '@{jetnormal}'
});
}
});
on('change:pnj_sag_sup', function(eventinfo) {
if (eventinfo.newValue == 'on') {
getAttrs(["sag_sup"], function(values) {
if (values.sag_sup && values.sag_sup.startsWith('@{jetsup')) return;
setAttrs({
sag_sup: '@{jetsup}'
});
});
} else {
setAttrs({
sag_sup: '@{jetnormal}'
});
}
});
on('change:pnj_cha_sup', function(eventinfo) {
if (eventinfo.newValue == 'on') {
getAttrs(["cha_sup"], function(values) {
if (values.cha_sup && values.cha_sup.startsWith('@{jetsup')) return;
setAttrs({
cha_sup: '@{jetsup}'
});
});
} else {
setAttrs({
cha_sup: '@{jetnormal}'
});
}
});
on('change:pnj_jets_caches', function(eventinfo) {
getAttrs(["pnj_jets_caches"], function(values) {
setAttrs({
jets_caches: values.pnj_jets_caches
});
});
});
on('change:pnj_armure', function(eventinfo) {
getAttrs(["DEFARMUREON", "pnj_armure"], function(values) {
if (values.DEFARMUREON != values.pnj_armure) {
setAttrs({
DEFARMUREON: values.pnj_armure
});
}
});
});
on('change:pnj_bouclier', function(eventinfo) {
getAttrs(["DEFBOUCLIERON", "pnj_bouclier"], function(values) {
if (values.DEFBOUCLIERON != values.pnj_bouclier) {
setAttrs({
DEFBOUCLIERON: values.pnj_bouclier
});
}
});
});
//Mise à jour des stats dérivées
on('change:charisme change:option_pc change:pc_bonus change:famille', function(eventinfo) {
getAttrs(['charisme', 'option_pc', 'pc_bonus', 'pc_base', 'pc', 'pc_max', 'option_setting', 'famille'], function(values) {
var toSet = {};
var change;
var option_pc = values.option_pc;
if (option_pc == 1 || option_pc == 'on') {
var charisme = parseInt(values.charisme);
var pc_bonus = parseInt(values.pc_bonus);
if (!isNaN(charisme) && charisme > 0) {
var pc_base = 3 + Math.floor((charisme - 10) / 2);
if (values.option_setting == 'arran') {
if (values.famille == 'aventurier') pc_base += 1;
else pc_base -= 1;
}
if (pc_base != values.pc_base) {
toSet.pc_base = pc_base;
change = true;
}
var new_pc_max = pc_base;
if (isNaN(pc_bonus)) new_pc_max = pc_base;
else new_pc_max = pc_base + pc_bonus;
if (new_pc_max < 0) new_pc_max = 0;
var pc_max = parseInt(values.pc_max);
if (new_pc_max != pc_max) {
toSet.pc_max = new_pc_max;
var pc = parseInt(values.pc);
if (isNaN(pc) || pc < 0 || isNaN(pc_max)) toSet.pc = new_pc_max;
else {
pc += new_pc_max - pc_max;
if (pc < 0) toSet.pc = 0;
else if (pc > new_pc_max) toSet.pc = new_pc_max;
else toSet.pc = pc;
}
change = true;
}
}
}
if (change) setAttrs(toSet);
});
});
//Importation de statblocks
const statsReconnues = {
for: 'pnj_for',
dex: 'pnj_dex',
con: 'pnj_con',
int: 'pnj_int',
sag: 'pnj_sag',
per: 'pnj_sag',
cha: 'pnj_cha',
creature: 'profil',
nc: 'niveau',
niveau: 'niveau',
taille: 'taille',
profil: 'profil',
init: 'pnj_init',
def: 'pnj_def',
pv: 'PV_max',
rd: 'RDS',
};
function buildRegexp(obj) {
var res = "\\b(";
var premier = true;
for (var field in obj) {
if (premier) {
res += field;
premier = false;
} else {
res += "|" + field;
}
}
res += "|créature)\\b"; //pour la version accentuée
return new RegExp(res, 'gi');
}
const patternStats = buildRegexp(statsReconnues);
const listeArmes = [{
keys: ['épée', 'epee', 'sabre', 'cimetere', 'cimetère'],
typeattaque: 'Arme 1 main',
typedegats: 'tranchant',
modificateurs: ''
}, {
keys: ['hache'],
typeattaque: 'Arme 1 main',
typedegats: 'tranchant',
modificateurs: 'hache'
}, {
keys: ['katana', 'vivelame'],
typeattaque: 'Arme 2 mains',
typedegats: 'tranchant',
modificateurs: ''
}, {
keys: ['epieu', 'épieu'],
typeattaque: 'Arme 2 mains',
typedegats: 'percant',
modificateurs: 'epieu'
}, {
keys: ['bâton', 'baton'],
typeattaque: 'Arme 2 mains',
typedegats: 'contondant',
modificateurs: 'choc'
}, {
keys: ['gourdin'],
typeattaque: 'Arme 1 main',
typedegats: 'contondant',
modificateurs: 'choc'
}, {
keys: ['dague', 'rapière', 'rapiere', 'stylet'],
typeattaque: 'Arme 1 main',
typedegats: 'percant',
modificateurs: ''
}, {
keys: ['mousquet'],
typeattaque: 'Arme 2 main',
typedegats: 'percant',
modificateurs: 'poudre'
}, {
keys: ['pétoire', 'petoire'],
typeattaque: 'Arme 1 main',
typedegats: 'percant',
modificateurs: 'poudre'
}, {
keys: ['arc', 'arbalète', 'arbalete'],
typeattaque: 'Arme 2 mains',
typedegats: 'percant',
modificateurs: ''
}, {
keys: ['masse', 'massue', 'fronde'],
typeattaque: 'Arme 1 main',
typedegats: 'contondant',
modificateurs: ''
}, {
keys: ['marteau'],
typeattaque: 'Arme 1 main',
typedegats: 'contondant',
modificateurs: 'marteau'
}, {
keys: ['javelot'],
typeattaque: 'Arme de jet',
typedegats: 'percant',
modificateurs: ''
}, {
keys: ['hachette'],
typeattaque: 'Arme de jet',
typedegats: 'tranchant',
modificateurs: ''
}, {
keys: ['lance'],
typeattaque: 'Arme 2 mains',
typedegats: 'percant',
modificateurs: ''
}];
function keyListToMap(l) {
var res = {};
l.forEach(function(s) {
s.keys.forEach(function(k) {
res[k] = s;
});
if (s.variantes) {
s.variantes = keyListToMap(s.variantes);
}
});
return res;
}
const mapArmes = keyListToMap(listeArmes);
//values doit contenir montrerarmeenmain et scriptVersion_max
function montrerArme(typeAttaque, values) {
if (!typeAttaque.startsWith('Arme')) return false;
if (typeAttaque == 'Arme de jet') return false;
var version = parseFloat(values.scriptVersion_max);
return !isNaN(version) && version >= 3 &&
values.montrerarmeenmain && values.montrerarmeenmain === '1';
}
//values doit contenir au moins:
// - scriptVersion
// - scriptVersion_max
// - montrerarmeenmain
function guessAttackType(nomAttaque, prefix, newAttrs, values) {
var typeAttaque = 'Naturel';
var na = nomAttaque.toLowerCase();
na.split(' ').forEach(function(mot) {
mot = mot.trim();
if (mot === '') return;
var s = mapArmes[mot];
if (s && s.typeattaque) {
newAttrs[prefix + 'typeattaque'] = s.typeattaque;
typeAttaque = s.typeattaque;
newAttrs[prefix + 'modificateurs'] = s.modificateurs;
newAttrs[prefix + 'typedegats'] = s.typedegats;
}
});
if (na.includes('2 mains') || na.includes('deux mains')) {
newAttrs[prefix + 'typeattaque'] = 'Arme 2 mains';
typeAttaque = 'Arme 2 mains';
} else if (na.includes('attaque magique')) {
newAttrs[prefix + 'typeattaque'] = 'Sortilège';
typeAttaque = 'Sortilège';
}
if (values.scriptVersion && values.scriptVersion !== '') {
newAttrs[prefix + 'optflag'] = 'on';
if (montrerArme(typeAttaque, values)) {
newAttrs[prefix + 'actionvisible'] = '0';
}
}
}
//Parsing des statblocks. Peut cascader
on('change:statblock', function(eventinfo) {
getAttrs(['max_attack_label', 'scriptVersion', 'scriptVersion_max', 'montrerarmeenmain'], function(values) {
var maxAttack = parseInt(values.max_attack_label);
if (isNaN(maxAttack)) maxAttack = 0;
var stats = eventinfo.newValue;
if (stats === '') return;
stats = stats.replace(/\r/g, '');
//On enlève les caractères images des dernières versions de COF
stats = stats.replace(/\ue1e9/g, ''); //DEF
stats = stats.replace(/♥/g, ''); //PV
stats = stats.replace(/\ue0bf/g, ''); //Attaque
stats = stats.replace(/\, /g, ' ');
var rows = stats.split(/\n/);
var newAttrs = {};
var previousLine = ''; //Au cas d'attaque sur plusieurs lignes
var previousContainsDM = false;
var lastPrefix = ''; //Pour les suites d'attaque sur la ligne suivante
var firstLine = true; //si la première ligne ne correspond à rien, c'est le nom
rows.forEach(function(row) {
if (row === '') {
previousLine = '';
lastPrefix = '';
firstLine = false;
previousContainsDM = false;
return;
}
row = row.trim();
if (row.endsWith('DM')) {
previousLine += row + ' ';
previousContainsDM = true;
} else if (previousContainsDM || row.search(/\bDM\b/i) >= 0) { //Attaque
var currentRow = previousLine + row;
var nomAttaqueFin = currentRow.search(/\s(\+\d+|0\b|DM)/i);
var nomAttaque = currentRow.substring(0, nomAttaqueFin);
var portee = /\(\d+\s*(m|mètre|mètres|metre|metres)\)/i.exec(nomAttaque);
if (portee) {
nomAttaque = nomAttaque.substring(0, portee.index).trim();
portee = parseInt(portee[0].substring(1));
if (isNaN(portee)) portee = 0;
}
currentRow = currentRow.substring(nomAttaqueFin).trim();
var bonusAtt = 0;
if (currentRow.startsWith('+')) {
currentRow = currentRow.substring(1);
bonusAtt = parseInt(currentRow);
if (isNaN(bonusAtt)) {
console.log("Sheet worker: bonus d'attaque incorrect " + row);
previousLine = '';
return;
}
currentRow = currentRow.substring(currentRow.search(/\D/));
} else if (currentRow.startsWith('0')) {
currentRow = currentRow.substring(1).trim();
}
var index = currentRow.search(/\bDM\b/i);
var specAtt = currentRow.substring(0, index).trim();
var specInAttackName = /\([^\)]*\)/i.exec(nomAttaque);
if (specInAttackName) {
nomAttaque = nomAttaque.substring(0, specInAttackName.index).trim();
specAtt += ' ' + specInAttackName[0].substring(1, specInAttackName[0].length - 1);
}
if (!portee) {
//parfois la portée n'est pas placée juste après le nom de l'attaque et se retrouve dans le champ spécial
portee = /\(\d+\s*m\)/i.exec(specAtt);
if (portee) {
specAtt = specAtt.substring(0, portee.index).trim();
portee = parseInt(portee[0].substring(1));
if (isNaN(portee)) portee = 0;
}
}
currentRow = currentRow.substring(index + 3).trim();
index = currentRow.search(/\s/);
if (index < 0) {
index = currentRow.length;
}
var nbDe = 0;
var de = 4;
var bonusDM = 0;
var dmExpr = currentRow.substring(0, index);
var indexDe = dmExpr.search(/d/i);
if (indexDe < 0) {
bonusDM = parseInt(dmExpr);
if (isNaN(bonusDM)) {
console.log("Impossible de trouver les DM dans " + row);
previousLine += row + ' ';
previousContainsDM = true;
return;
}
} else {
nbDe = parseInt(dmExpr.substring(0, indexDe));
dmExpr = dmExpr.substring(indexDe + 1);
de = parseInt(dmExpr);
if (isNaN(bonusDM) || isNaN(de)) {
console.log("Impossible de trouver les DM dans " + row);
previousLine += row + ' ';
previousContainsDM = true;
return;
}
var indexBonusDM = dmExpr.search(/(\+|-)/);
if (indexBonusDM >= 0) {
bonusDM = parseInt(dmExpr.substring(indexBonusDM));
if (isNaN(bonusDM)) {
bonusDM = 0;
}
} else if (index > 0 && index < currentRow.length - 1) {
currentRow = currentRow.substring(index).trim();
index = 0;
if (currentRow.startsWith('+') || currentRow.startsWith('-')) {
bonusDM = parseInt(currentRow);
if (isNaN(bonusDM)) {
bonusDM = 0;
} else index = currentRow.search(/\s/);
}
}
}
if (index >= 0 && index < currentRow.length - 1) {
specAtt += currentRow.substring(index).trim();
}
var prefix = 'repeating_pnjatk_' + generateRowID() + '_arme';
maxAttack++;
newAttrs[prefix + 'label'] = maxAttack;
newAttrs[prefix + 'nom'] = nomAttaque;
newAttrs[prefix + 'atk'] = bonusAtt;
newAttrs[prefix + 'dmnbde'] = nbDe;
newAttrs[prefix + 'dmde'] = de;
newAttrs[prefix + 'dm'] = bonusDM;
newAttrs[prefix + 'spec'] = specAtt;
if (portee) newAttrs[prefix + 'portee'] = portee;
// On essaie de trouver des valeurs pour le type de l'attaque
guessAttackType(nomAttaque, prefix, newAttrs, values);
lastPrefix = prefix;
previousContainsDM = false;
previousLine = '';
} else if (row.startsWith('+') && lastPrefix !== '') {
newAttrs[lastPrefix + 'spec'] += row;
} else { //Pas attaque
lastPrefix = '';
var lexemes = [];
var lastMatch;
var match = patternStats.exec(row);
while (match) {
if (lastMatch) {
lexemes.push({
match: lastMatch,
end: match.index
});
}
lastMatch = match;
match = patternStats.exec(row);
}
if (lastMatch) {
lexemes.push({
match: lastMatch,
end: row.length
});
}
if (lexemes.length === 0) {
if (firstLine) {
newAttrs.character_name = row;
} else {
console.log("La ligne " + row + " ne correspond à rien");
previousLine = row + ' ';
}
} else previousLine = '';
lexemes.forEach(function(l) {
var lstat = l.match[0].toLowerCase();
var lattr = statsReconnues[lstat];
if (lattr === undefined && lstat == 'créature') lattr = statsReconnues.creature;
if (lattr === undefined) {
console.log("Erreur ! Pattern " + lstat + " non reconne. La ligne était " + l);
return;
}
var valAttr = row.substring(l.match.index + lstat.length, l.end).trim();
valAttr = valAttr.replace(/\)$/, '');
if (lattr.search(/(for|dex|con|sag|int|cha)/) > 0) {
//Cas ou on rajoute une autre valeur pour la caractéristique
//par exemple pour le centaure
var caracParen = valAttr.search(/\([+-]\d/);
if (caracParen > 0) {
valAttr = valAttr.substring(0, caracParen - 1).trim();
}
if (valAttr.endsWith('*')) {
valAttr = valAttr.substr(0, valAttr.length - 1);
newAttrs[lattr + '_sup'] = 'on';
}
//cas où le statblock donne valeur/bonus
var caracSlash = valAttr.indexOf('/');
if (caracSlash > 0) {
var caracVal = parseInt(valAttr);
valAttr = parseInt(valAttr.substring(caracSlash + 1));
switch (lattr) {
case 'pnj_for':
newAttrs.force = caracVal;
break;
case 'pnj_dex':
newAttrs.dexterite = caracVal;
break;
case 'pnj_con':
newAttrs.constitution = caracVal;
break;
case 'pnj_int':
newAttrs.intelligence = caracVal;
break;
case 'pnj_sag':
newAttrs.sagesse = caracVal;
break;
case 'pnj_cha':
newAttrs.charisme = caracVal;
break;
}
} else {
valAttr = parseInt(valAttr);
}
} else if (lattr == 'PV_max') {
//On met aussi les pv courants à jour
var pvMax = parseInt(valAttr);
//Cas où on note entre parenhèse les PV courants ou la RD
var pvParen = valAttr.indexOf('(');
if (pvParen > 0) {
var pvSuite = valAttr.substring(pvParen + 1);
valAttr = valAttr.substring(0, pvParen).trim();
pvMax = parseInt(valAttr);
if (pvSuite.startsWith('RD')) {
newAttrs.RDS = parseInt(pvSuite.substring(2));
newAttrs.PV = pvMax;
} else {
var pvCourant = parseInt(pvSuite);
newAttrs.PV = pvCourant;
}
} else newAttrs.PV = pvMax;
}
newAttrs[lattr] = valAttr;
});
}
firstLine = false;
});
newAttrs.max_attack_label = maxAttack;
setAttrs(newAttrs);
});
});
//Coche le port d'armure si sa def devient positive
on('change:DEFARMURE', function(eventinfo) {
getAttrs(['DEFARMURE', 'DEFARMUREON'], function(values) {
var def = parseInt(values.DEFARMURE);
if (isNaN(def)) return;
var armureOn = parseInt(values.DEFARMUREON);
if (eventinfo.previousValue > 0 && eventinfo.previousValue != def) {
if (def === 0 && armureOn) setAttrs({
DEFARMUREON: 0
});
} else { //comprend aussi le cas où previousValue == def, car c'est le cas si l'attribut n'a encore jamais été modifié
if (def > 0 && !armureOn) setAttrs({
DEFARMUREON: 1
});
}
});
});
on('change:DEFBOUCLIER', function(eventinfo) {
getAttrs(['DEFBOUCLIER', 'DEFBOUCLIERON'], function(values) {
var def = parseInt(values.DEFBOUCLIER);
if (isNaN(def)) return;
var bouclierOn = parseInt(values.DEFBOUCLIERON);
if (eventinfo.previousValue > 0 && eventinfo.previousValue != def) {
if (def === 0 && bouclierOn) setAttrs({
DEFBOUCLIERON: 0
});
} else {
if (def > 0 && !bouclierOn) setAttrs({
DEFBOUCLIERON: 1
});
}
});
});
on('change:casque_rd', function(eventinfo) {
getAttrs(['casque_rd', 'casque_on'], function(values) {
var rd = parseInt(values.casque_rd);
if (isNaN(rd)) return;
var casqueOn = parseInt(values.casque_on);
if (eventinfo.previousValue > 0 && eventinfo.previousValue != rd) {
if (rd === 0 && casqueOn) setAttrs({
casque_on: 0
});
} else {
if (rd > 0 && !casqueOn) setAttrs({
casque_on: 1
});
}
});
});
//Numérotation des attaques, ne cascade pas
on('change:repeating_armes:armenom', function(eventinfo) {
getAttrs(['max_attack_label', 'repeating_armes_armelabel', 'repeating_armes_armenom', 'scriptVersion', 'scriptVersion_max', 'montrerarmeenmain'], function(values) {
var currentLabel = parseInt(values.repeating_armes_armelabel);
if (isNaN(currentLabel) || currentLabel === 0) {
currentLabel = parseInt(values.max_attack_label);
if (isNaN(currentLabel)) currentLabel = 0;
currentLabel++;
var sa = {
max_attack_label: currentLabel,
repeating_armes_armelabel: currentLabel
};
guessAttackType(values.repeating_armes_armenom, 'repeating_armes_arme', sa, values);
setAttrs(sa, {
silent: true
});
}
});
});
on('change:repeating_pnjatk:armenom', function(eventinfo) {
getAttrs(['max_attack_label', 'repeating_pnjatk_armelabel', 'repeating_pnjatk_armenom', 'scriptVersion', 'scriptVersion_max', 'montrerarmeenmain'], function(values) {
var currentLabel = parseInt(values.repeating_pnjatk_armelabel);
if (isNaN(currentLabel) || currentLabel === 0) {
currentLabel = parseInt(values.max_attack_label);
if (isNaN(currentLabel)) currentLabel = 0;
currentLabel++;
var sa = {
max_attack_label: currentLabel,
repeating_pnjatk_armelabel: currentLabel
};
guessAttackType(values.repeating_pnjatk_armenom, 'repeating_pnjatk_arme', sa, values);
setAttrs(sa, {
silent: true
});
}
});
});
on('remove:repeating_armes remove:repeating_pnjatk', function(eventinfo) {
getAttrs(['max_attack_label'], function(values) {
var label = eventinfo.removedInfo[eventinfo.sourceAttribute + '_armelabel'];
if (values.max_attack_label == label) {
var maxLabel = 0;
getSectionIDs('repeating_armes', function(idarray) {
var labelArray = idarray.map(function(id) {
return 'repeating_armes_' + id + '_armelabel';
});
getSectionIDs('repeating_pnjatk', function(idarray) {
idarray.forEach(function(id) {
labelArray.push('repeating_pnjatk_' + id + '_armelabel');
});
getAttrs(labelArray, function(values) {
labelArray.forEach(function(ln) {
var l = parseInt(values[ln]);
if (isNaN(l)) {
console.log("Label de " + ln + " invalide");
return;
}
if (l > maxLabel) maxLabel = l;
});
setAttrs({
max_attack_label: maxLabel
});
});
});
});
}
});
});
//Montrer ou cacher l'attaque selon le type. Ne cascade pas.
on('change:repeating_armes:armetypeattaque', function(eventinfo) {
getAttrs(['repeating_armes_armetypeattaque', 'scriptVersion_max', 'montrerarmeenmain'], function(values) {
if (montrerArme(values.repeating_armes_armetypeattaque, values))
setAttrs({
repeating_armes_armeactionvisible: '0'
}, {
silent: true
});
});
});
on('change:repeating_pnjatk:armetypeattaque', function(eventinfo) {
getAttrs(['repeating_pnjatk_armetypeattaque', 'scriptVersion_max', 'montrerarmeenmain'], function(values) {
if (montrerArme(values.repeating_pnjatk_armetypeattaque, values))
setAttrs({
repeating_pnjatk_armeactionvisible: '0'
}, {
silent: true
});
});
});
function setBaseAttacks() {
getAttrs(['option_ba_niveau', 'type_personnage', 'niveau'], function(values) {
if (values.type_personnage == 'PNJ') return;
if (values.option_ba_niveau != '1') return;
setAttrs({
atkcac_base: values.niveau,
atktir_base: values.niveau,
atkmag_base: values.niveau,
});
});
}
on('change:option_ba_niveau', function(enventinfo) {
setBaseAttacks();
});
on('change:niveau', function(enventinfo) {
setBaseAttacks();
});
//Les options d'attaque
on('change:attaque_en_puissance', function(eventinfo) {
getAttrs(['attaque_en_puissance'], function(values) {
var bonus = parseInt(values.attaque_en_puissance);
if (isNaN(bonus) || bonus < 1) {
setAttrs({
attaque_en_puissance: 1
});
return;
}
setAttrs({
malus_attaque_en_puissance: -5 * bonus
});
});
});
on('change:attaque_en_puissance_check change:attaque_en_puissance change:attaque_de_groupe', function(eventinfo) {
getAttrs(['attaque_en_puissance_check', 'attaque_en_puissance', 'attaque_assuree_check', 'attaque_de_groupe'], function(values) {
var attrs = {};
var bonus = 0;
var attaque_en_puissance = parseInt(values.attaque_en_puissance_check) * parseInt(values.attaque_en_puissance);
var attaque_assuree = parseInt(values.attaque_assuree_check);
if (!isNaN(attaque_en_puissance) && attaque_en_puissance > 0) {
bonus -= 5 * attaque_en_puissance;
attrs.bonus_dm_option = '[[' + attaque_en_puissance + 'd6]]';
if (attaque_assuree) attrs.attaque_assuree_check = 0;
} else {
attrs.bonus_dm_option = '';
if (attaque_assuree) bonus += 5;
}
var attaque_groupe = parseInt(values.attaque_de_groupe);
if (isNaN(attaque_groupe) || attaque_groupe < 1) {
attaque_groupe = 1;
attrs.attaque_groupe = 1;
}
if (attaque_groupe == 1) {
attrs.message_attaque_de_groupe = 'attaquant par jet';
} else {
var bg = (attaque_groupe - 1) * 2;
attrs.message_attaque_de_groupe = 'attaquants par jet (+' + bg + ' en attaque, DM x2 si attaque > DEF + 5, et x3 si critique)';
bonus += bg;
}
attrs.bonus_attaque_option = bonus;
setAttrs(attrs);
});
});
on('change:attaque_assuree_check', function(eventinfo) {
getAttrs(['attaque_en_puissance_check', 'attaque_en_puissance', 'attaque_assuree_check', 'attaque_de_groupe'], function(values) {
var attrs = {};
var bonus = 0;
var attaque_en_puissance = parseInt(values.attaque_en_puissance_check) * parseInt(values.attaque_en_puissance);
var attaque_assuree = parseInt(values.attaque_assuree_check);
if (attaque_assuree) {
bonus += 5;
attrs.division_attaque_assuree = '/2';
if (isNaN(attaque_en_puissance) || attaque_en_puissance > 0)
attrs.attaque_en_puissance_check = 0;
} else {
attrs.division_attaque_assuree = '';
if (!isNaN(attaque_en_puissance) && attaque_en_puissance > 0)
bonus -= 5 * attaque_en_puissance;
}
var attaque_groupe = parseInt(values.attaque_de_groupe);
if (attaque_groupe > 1) {
bonus += (attaque_groupe - 1) * 2;
}
attrs.bonus_attaque_option = bonus;
setAttrs(attrs);
});
});
on('change:attaque_risquee_check change:attaque_dm_temp_check', function(eventinfo) {
getAttrs(['attaque_risquee_check', 'attaque_dm_temp_check'], function(values) {
var attaque_risquee = parseInt(values.attaque_risquee_check);
var attaque_non_lethale = parseInt(values.attaque_dm_temp_check);
var updateArmes = function(section) {
getSectionIDs('repeating_' + section, function(idArray) {
idArray.forEach(function(id) {
var prefix = 'repeating_' + section + '_' + id + '_';
getAttrs([prefix + 'armeportee', prefix + 'armemodificateurs'], function(values) {
var portee = values[prefix + 'armeportee'];
var modifs = values[prefix + 'armemodificateurs'].split(',');
var bonus = 0;
if (attaque_non_lethale) bonus = -2;
var attrs = {};
var dmTemp = attaque_non_lethale;
modifs.forEach(function(m) {
switch (m.trim()) {
case 'tempDmg':
dmTemp = true;
if (attaque_non_lethale) bonus = 0;
return;
case 'choc':
if (attaque_non_lethale) bonus = 0;
return;
}
});
if (dmTemp) attrs[prefix + 'armedmtemp'] = 1;
else attrs[prefix + 'armedmtemp'] = '';
if (attaque_risquee && !portee) {
attrs[prefix + 'armebonusoption'] = bonus + 2;
} else {
attrs[prefix + 'armebonusoption'] = bonus;
}
setAttrs(attrs);
});
});
});
};
updateArmes('armes');
updateArmes('pnjatk');
});
});
const DEGATSPJ = '{{degats=[[(@{armedmnbde}d@{armedmde}@{armedmrollmod}+[[@{armedmcar}]]+@{armedmdiv})@{division_attaque_assuree}]]}}';
//Du coup, mise à jour aussi quand on change les attaques
on('change:repeating_armes:armeportee change:repeating_armes:armemodificateurs', function(eventinfo) {
getAttrs(['attaque_risquee_check', 'attaque_dm_temp_check', 'repeating_armes_armeportee', 'repeating_armes_armemodificateurs'], function(values) {
var attaque_risquee = parseInt(values.attaque_risquee_check);
var attaque_non_lethale = parseInt(values.attaque_dm_temp_check);
var portee = values.repeating_armes_armeportee;
var modifs = values.repeating_armes_armemodificateurs.split(',');
var bonus = 0;
if (attaque_non_lethale) bonus = -2;
var attrs = {};
var dmTemp = attaque_non_lethale;
var nbDes = 1; //Nombre de dés pour l'attaque
var plusFort = true;
attrs.repeating_armes_armedegats = DEGATSPJ;
attrs.repeating_armes_armepoudre = '{{poudre=}}';
attrs.repeating_armes_armereussiteauto = '{{attaqueautomatique=}}';
attrs.repeating_armes_armedmrollmod = '';
attrs.repeating_armes_armeattde = '@{ETATDE}';
modifs.forEach(function(m) {
switch (m.trim()) {
case 'tempDmg':
dmTemp = true;
if (attaque_non_lethale) bonus = 0;
return;
case 'choc':
if (attaque_non_lethale) bonus = 0;
return;
case 'pasDeDmg':
attrs.repeating_armes_armedegats = '{{degats=}}';
return;
case 'poudre':
attrs.repeating_armes_armepoudre = '{{poudre=[[1d20]]}}';
return;
case 'auto':
attrs.repeating_armes_armereussiteauto = '{{attaqueautomatique=1}}';
return;
case 'reroll1':
attrs.repeating_armes_armedmrollmod += 'r1';
return;
case 'explodeMax':
attrs.repeating_armes_armedmrollmod += '!';
return;
case 'avantage':
case 'm2d20':
if (plusFort) nbDes++;
else if (nbDes <= 1) {
plusFort = true;
nbDes = 2;
} else nbDes--;
return;
case 'desavantage':
case 'désavantage':
if (plusFort) {
if (nbDes > 1) nbDes--;
else {
plusFort = false;
nbDes = 2;
}
} else nbDes++;
return;
case 'avecd12':
attrs.repeating_armes_armeattde = '12';
return;
}
});
if (dmTemp) attrs.repeating_armes_armedmtemp = 1;
else attrs.repeating_armes_armedmtemp = '';
if (attaque_risquee && !portee) {
attrs.repeating_armes_armebonusoption = bonus + 2;
} else {
attrs.repeating_armes_armebonusoption = bonus;
}
attrs.repeating_armes_armeattnbde = nbDes;
if (nbDes > 1) {
if (plusFort) attrs.repeating_armes_armeattrollmod = 'kh1';
else attrs.repeating_armes_armeattrollmod = 'kl1';
} else attrs.repeating_armes_armeattrollmod = '';
setAttrs(attrs);
});
});
const DEGATSPNJ = '{{degats=[[(@{armedmnbde}d@{armedmde}@{armedmrollmod}+@{armedm})@{division_attaque_assuree}]]}}';
on('change:repeating_pnjatk:armeportee change:repeating_pnjatk:armemodificateurs', function(eventinfo) {
getAttrs(['attaque_risquee_check', 'attaque_dm_temp_check', 'repeating_pnjatk_armeportee', 'repeating_pnjatk_armemodificateurs'], function(values) {
var attaque_risquee = parseInt(values.attaque_risquee_check);
var attaque_non_lethale = parseInt(values.attaque_dm_temp_check);
var portee = values.repeating_pnjatk_armeportee;
var modifs = values.repeating_pnjatk_armemodificateurs.split(',');
var bonus = 0;
if (attaque_non_lethale) bonus = -2;
var attrs = {};
var dmTemp = attaque_non_lethale;
var nbDes = 1; //Nombre de dés pour l'attaque
var plusFort = true;
attrs.repeating_pnjatk_armedegats = DEGATSPNJ;
attrs.repeating_pnjatk_armepoudre = '{{poudre=}}';
attrs.repeating_pnjatk_armereussiteauto = '{{attaqueautomatique=}}';
attrs.repeating_pnjatk_armedmrollmod = '';
attrs.repeating_pnjatk_armeattde = '@{ETATDE}';
modifs.forEach(function(m) {
switch (m.trim()) {
case 'tempDmg':
dmTemp = true;
if (attaque_non_lethale) bonus = 0;
return;
case 'choc':
if (attaque_non_lethale) bonus = 0;
return;
case 'pasDeDmg':
attrs.repeating_pnjatk_armedegats = '{{degats=}}';
return;
case 'poudre':
attrs.repeating_pnjatk_armepoudre = '{{poudre=[[1d20]]}}';
return;
case 'auto':
attrs.repeating_pnjatk_armereussiteauto = '{{attaqueautomatique=1}}';
return;
case 'reroll1':
attrs.repeating_pnjatk_armedmrollmod += 'r1';
return;
case 'explodeMax':
attrs.repeating_pnjatk_armedmrollmod += '!';
return;
case 'avantage':
case 'm2d20':
if (plusFort) nbDes++;
else if (nbDes <= 1) {
plusFort = true;
nbDes = 2;
} else nbDes--;
return;
case 'desavantage':
case 'désavantage':
if (plusFort) {
if (nbDes > 1) nbDes--;
else {
plusFort = false;
nbDes = 2;
}
} else nbDes++;
return;
case 'avecd12':
attrs.repeating_pnjatk_armeattde = '12';
return;
}
});
if (dmTemp) attrs.repeating_pnjatk_armedmtemp = 1;
else attrs.repeating_pnjatk_armedmtemp = '';
if (attaque_risquee && !portee) {
attrs.repeating_pnjatk_armebonusoption = bonus + 2;
} else {
attrs.repeating_pnjatk_armebonusoption = bonus;
}
attrs.repeating_pnjatk_armeattnbde = nbDes;
if (nbDes > 1) {
if (plusFort) attrs.repeating_pnjatk_armeattrollmod = 'kh1';
else attrs.repeating_pnjatk_armeattrollmod = 'kl1';
} else attrs.repeating_pnjatk_armeattrollmod = '';
setAttrs(attrs);
});
});
//Les options de script
on('change:tab', function(eventinfo) {
if (eventinfo.newValue != 'Script' && eventinfo.newValue != 'script pnj') return;
getAttrs(['show_script', 'scriptVersion', 'scriptVersion_max'], function(values) {
if (values.scriptVersion) {
if (values.show_script == 1) return;
var sa = {
show_script: 1
};
var version = parseFloat(values.scriptVersion_max);
if (!isNaN(version) && version >= 3)
sa.message_version = "COFantasy version " + version;
setAttrs(sa);
} else {
if (values.show_script == 0) return;
setAttrs({
show_script: 0
});
}
});
});
on('change:repeating_actions:actiontitre', function(eventinfo) {
getAttrs(['maxrangaction', 'repeating_actions_actionrang', 'repeating_actions_actiontitre'], function(values) {
var rangActuel = parseInt(values.repeating_actions_actionrang);
if (isNaN(rangActuel) || rangActuel === 0) {
rangActuel = parseInt(values.maxrangaction);
if (isNaN(rangActuel)) rangActuel = 0;
rangActuel++;
setAttrs({
maxrangaction: rangActuel,
repeating_actions_actionrang: rangActuel
});
}
});
});
on('remove:repeating_actions', function(eventinfo) {
getAttrs(['maxrangaction'], function(values) {
var rang = eventinfo.removedInfo[eventinfo.sourceAttribute + '_actionrang'];
if (values.maxrangaction <= rang) {
var maxRang = 0;
getSectionIDs('repeating_actions', function(idarray) {
var rangArray = idarray.map(function(id) {
return 'repeating_actions_' + id + '_actionrang';
});
getAttrs(rangArray, function(values) {
rangArray.forEach(function(ln) {
var l = parseInt(values[ln]);
if (isNaN(l)) {
console.log("Rang de " + ln + " invalide");
return;
}
if (l > maxRang) maxRang = l;
});
setAttrs({
maxrangaction: maxRang
});
});
});
}
});
});
on('change:repeating_actions:actionmontree', function(eventinfo) {
getAttrs(['repeating_actions_actionmontree', 'repeating_actions_actionoptflag'], function(values) {
if (values.repeating_actions_actionmontree == 1) return;
if (values.repeating_actions_actionoptflag == "off") return;
setAttrs({
repeating_actions_actionoptflag: 'off'
});
});
});
on('change:repeating_actions:actiontype', function(eventinfo) {
getAttrs(['repeating_actions_actiontype', 'repeating_actions_actionoptflag'], function(values) {
if (values.repeating_actions_actiontype == 'action') return;
if (values.repeating_actions_actionoptflag == "off") return;
setAttrs({
repeating_actions_actionoptflag: 'off'
});
});
});
on('change:repeating_actions1:actiontitre', function(eventinfo) {
getAttrs(['maxrangaction1', 'repeating_actions1_actionrang', 'repeating_actions1_actiontitre'], function(values) {
var rangActuel = parseInt(values.repeating_actions1_actionrang);
if (isNaN(rangActuel) || rangActuel === 0) {
rangActuel = parseInt(values.maxrangaction1);
if (isNaN(rangActuel)) rangActuel = 0;
rangActuel++;
setAttrs({
maxrangaction1: rangActuel,
repeating_actions1_actionrang: rangActuel
});
}
});
});
on('remove:repeating_actions1', function(eventinfo) {
getAttrs(['maxrangaction1'], function(values) {
var rang = eventinfo.removedInfo[eventinfo.sourceAttribute + '_actionrang'];
if (values.maxrangaction1 <= rang) {
var maxRang = 0;
getSectionIDs('repeating_actions1', function(idarray) {
var rangArray = idarray.map(function(id) {
return 'repeating_actions1_' + id + '_actionrang';
});
getAttrs(rangArray, function(values) {
rangArray.forEach(function(ln) {
var l = parseInt(values[ln]);
if (isNaN(l)) {
console.log("Rang de " + ln + " invalide");
return;
}
if (l > maxRang) maxRang = l;
});
setAttrs({
maxrangaction1: maxRang
});
});
});
}
});
});
on('change:repeating_actions2:actiontitre', function(eventinfo) {
getAttrs(['maxrangaction2', 'repeating_actions2_actionrang', 'repeating_actions2_actiontitre'], function(values) {
var rangActuel = parseInt(values.repeating_actions2_actionrang);
if (isNaN(rangActuel) || rangActuel === 0) {
rangActuel = parseInt(values.maxrangaction2);
if (isNaN(rangActuel)) rangActuel = 0;
rangActuel++;
setAttrs({
maxrangaction2: rangActuel,
repeating_actions2_actionrang: rangActuel
});
}
});
});
on('remove:repeating_actions2', function(eventinfo) {
getAttrs(['maxrangaction2'], function(values) {
var rang = eventinfo.removedInfo[eventinfo.sourceAttribute + '_actionrang'];
if (values.maxrangaction2 <= rang) {
var maxRang = 0;
getSectionIDs('repeating_actions2', function(idarray) {
var rangArray = idarray.map(function(id) {
return 'repeating_actions2_' + id + '_actionrang';
});
getAttrs(rangArray, function(values) {
rangArray.forEach(function(ln) {
var l = parseInt(values[ln]);
if (isNaN(l)) {
console.log("Rang de " + ln + " invalide");
return;
}
if (l > maxRang) maxRang = l;
});
setAttrs({
maxrangaction2: maxRang
});
});
});
}
});
});
on('change:repeating_actions3:actiontitre', function(eventinfo) {
getAttrs(['maxrangaction3', 'repeating_actions3_actionrang', 'repeating_actions3_actiontitre'], function(values) {
var rangActuel = parseInt(values.repeating_actions3_actionrang);
if (isNaN(rangActuel) || rangActuel === 0) {
rangActuel = parseInt(values.maxrangaction3);
if (isNaN(rangActuel)) rangActuel = 0;
rangActuel++;
setAttrs({
maxrangaction3: rangActuel,
repeating_actions3_actionrang: rangActuel
});
}
});
});
on('remove:repeating_actions3', function(eventinfo) {
getAttrs(['maxrangaction3'], function(values) {
var rang = eventinfo.removedInfo[eventinfo.sourceAttribute + '_actionrang'];
if (values.maxrangaction3 <= rang) {
var maxRang = 0;
getSectionIDs('repeating_actions3', function(idarray) {
var rangArray = idarray.map(function(id) {
return 'repeating_actions3_' + id + '_actionrang';
});
getAttrs(rangArray, function(values) {
rangArray.forEach(function(ln) {
var l = parseInt(values[ln]);
if (isNaN(l)) {
console.log("Rang de " + ln + " invalide");
return;
}
if (l > maxRang) maxRang = l;
});
setAttrs({
maxrangaction3: maxRang
});
});
});
}
});
});
on('change:repeating_actions4:actiontitre', function(eventinfo) {
getAttrs(['maxrangaction4', 'repeating_actions4_actionrang', 'repeating_actions4_actiontitre'], function(values) {
var rangActuel = parseInt(values.repeating_actions4_actionrang);
if (isNaN(rangActuel) || rangActuel === 0) {
rangActuel = parseInt(values.maxrangaction4);
if (isNaN(rangActuel)) rangActuel = 0;
rangActuel++;
setAttrs({
maxrangaction4: rangActuel,
repeating_actions4_actionrang: rangActuel
});
}
});
});
on('remove:repeating_actions4', function(eventinfo) {
getAttrs(['maxrangaction4'], function(values) {
var rang = eventinfo.removedInfo[eventinfo.sourceAttribute + '_actionrang'];
if (values.maxrangaction4 <= rang) {
var maxRang = 0;
getSectionIDs('repeating_actions4', function(idarray) {
var rangArray = idarray.map(function(id) {
return 'repeating_actions4_' + id + '_actionrang';
});
getAttrs(rangArray, function(values) {
rangArray.forEach(function(ln) {
var l = parseInt(values[ln]);
if (isNaN(l)) {
console.log("Rang de " + ln + " invalide");
return;
}
if (l > maxRang) maxRang = l;
});
setAttrs({
maxrangaction4: maxRang
});
});
});
}
});
});
//Consommables
var listeConsommables = [{
keys: ['agrandissement', "d'agrandissement"],
effet: "!cof-effet-temp agrandissement 8",
}, {
keys: ['flèche', 'fleche'],
variantes: [{
keys: ['enflammée', 'enflammee'],
effet: "!cof-attack @{selected|token_id} @{target|token_id} Flèche enflammée --toucher [[@{selected|ATKMAG}]] --dm 1d6 + [[@{selected|INT}]] --portee 30 --fx beam-fire --feu --sortilege --enflamme"
}],
}, {
keys: ['force'],
variantes: [{
keys: ['géant', 'geant'],
effet: "!cof-effet-temp forceDeGeant 10",
}],
}, {
keys: ['forme'],
variantes: [{
keys: ['gazeuse'],
effet: "!cof-effet-temp formeGazeuse [[1d4+3]]",
}],
}, {
keys: ['gland'],
variantes: [{
keys: ['pouvoir'],
effet: "#Attaque Gland de pouvoir --toucher [[@{selected|ATKTIR}]] --portee 10 --pasDeDmg --magique --effet statueDeBois [[2d6+@{selected|SAG}]] --valeur 10 10",
}],
}, {
keys: ['invisibilité', 'invisibilite', "d'invisibilité", "d'invisibilite"],
effet: "!cof-set-state invisible true --message devient invisible"
}, {
keys: ['résistance', 'resistance'],
variantes: [{
keys: ['acide', "l'acide"],
effet: "!cof-set-attribute resistanceA_acide true",
}, {
keys: ['feu'],
effet: "!cof-set-attribute resistanceA_feu true",
}],
}, {
keys: ['soin', 'soins'],
effet: "!cof-soin 1d8",
variantes: [{
keys: ['léger', 'leger', 'légers', 'legers'],
effet: "!cof-soin 1d8+@{selected|niveau}",
}, {
keys: ['modéré', 'modere', 'modérés', 'moderes'],
effet: "!cof-soin 2d8+@{selected|niveau}",
}],
}];
const mapConsommables = keyListToMap(listeConsommables);
on('change:repeating_equipement:equip_nom', function(eventinf) {
getAttrs(['repeating_equipement_equip_nom', 'scriptVersion'], function(values) {
var tokens = values.repeating_equipement_equip_nom.toLowerCase().trim();
if (tokens === '') return;
tokens = tokens.split(' ');
var parse = [
[mapConsommables]
];
var effet;
tokens.forEach(function(t) {
var updateParse = {};
parse.forEach(function(pa, i) {
pa.forEach(function(p) {
var s = p[t];
if (s === undefined) return;
if (s.effet && (effet === undefined || effet.rang < i))
effet = {
rang: i,
effet: s.effet
};
if (s.variantes) {
updateParse[i + 1] = updateParse[i + 1] || [];
updateParse[i + 1].push(s.variantes);
}
});
});
for (var i in updateParse) {
if (i == parse.length) parse.push([]);
parse[i] = parse[i].concat(updateParse[i]);
}
});
if (effet === undefined) return;
setAttrs({
repeating_equipement_equip_effet: effet.effet,
});
});
});
//Fonctions spécifiques aux terres d'Arran
on('change:option_setting', function(eventinfo) {
getAttrs(['option_setting', 'famille', 'charisme', 'pc_bonus'], function(values) {
var attrs = {
option_setting_cac: values.option_setting,
option_setting_tir: values.option_setting,
option_setting_mag: values.option_setting,
option_setting_init: values.option_setting,
};
var charisme = parseInt(values.charisme);
if (!isNaN(charisme) && charisme > 0) {
attrs.pc_base = 3 + Math.floor((charisme - 10) / 2);
} else attrs.pc_base = 0;
switch (values.option_setting) {
case 'generique':
attrs.mod_atkcac = 0;
attrs.mod_atktir = 0;
attrs.mod_atkcar = 0;
attrs.mod_initiative = 0;
attrs.titrevoie4 = '';
attrs.titrevoie5 = '';
attrs.titrecapaciteraciale = '';
attrs.talent_magique_present = '';
attrs.formations_martiales_check = '';
break;
case 'arran':
switch (values.famille) {
case 'aventurier':
attrs.DV = 8;
attrs.mod_atkcac = 1;
attrs.mod_atktir = 1;
attrs.mod_atkmag = 0;
attrs.pc_base += 1;
attrs.talent_magique_present = '';
break;
case 'combattant':
attrs.DV = 10;
attrs.mod_atkcac = 2;
attrs.mod_atktir = 2;
attrs.mod_atkmag = 0;
attrs.pc_base -= 1;
attrs.talent_magique_present = '';
break;
case 'mystique':
attrs.DV = 6;
attrs.mod_atkcac = 0;
attrs.mod_atktir = 0;
attrs.mod_atkmag = 2;
attrs.pc_base -= 1;
attrs.talent_magique_present = 1;
break;
}
attrs.ATKCAC_CARAC = '';
attrs.ATKTIR_CARAC = '';
attrs.ATKMAG_CARAC = '';
attrs.option_pc = 1;
attrs.option_pr = 1;
attrs.option_pm = 1;
attrs.titrevoie4 = "Voie de peuple";
attrs.titrevoie5 = "Voie culturelle";
attrs.titrecapaciteraciale = "Trait de peuple";
attrs.formations_martiales_check = 1;
}
var pc_bonus = parseInt(values.pc_bonus);
if (!isNaN(pc_bonus)) attrs.pc_max = attrs.pc_base + pc_bonus;
setAttrs(attrs);
});
});
on('change:famille', function(eventinfo) {
getAttrs(['famille', 'DEFARMUREON', 'DEFARMUREMALUS', 'DEFBOUCLIERON', 'DEFBOUCLIERMALUS'], function(values) {
var attrs = {};
switch (values.famille) {
case 'aventurier':
attrs.DV = 8;
attrs.mod_atkcac = 1;
attrs.mod_atktir = 1;
attrs.mod_atkmag = 0;
attrs.talent_magique_present = '';
break;
case 'combattant':
attrs.DV = 10;
attrs.mod_atkcac = 2;
attrs.mod_atktir = 2;
attrs.mod_atkmag = 0;
attrs.talent_magique_present = '';
break;
case 'mystique':
attrs.DV = 6;
attrs.mod_atkcac = 0;
attrs.mod_atktir = 0;
attrs.mod_atkmag = 2;
attrs.talent_magique_present = 1;
break;
default:
return;
}
var malusArmure = values.DEFARMUREON * values.DEFARMUREMALUS + values.DEFBOUCLIERON * values.DEFBOUCLIERMALUS;
attrs.mod_atkmag -= malusArmure;
attrs.mod_atktir -= Math.floor(malusArmure / 2);
setAttrs(attrs);
});
});
on('change:DEFARMUREON change:DEFARMUREMALUS change:DEFBOUCLIERON change:DEFBOUCLIERMALUS', function(eventinfo) {
getAttrs(['famille', 'DEFARMUREON', 'DEFARMUREMALUS', 'DEFBOUCLIERON', 'DEFBOUCLIERMALUS', 'option_setting'], function(values) {
if (values.option_setting != 'arran') return;
var malusArmure = values.DEFARMUREON * values.DEFARMUREMALUS + values.DEFBOUCLIERON * values.DEFBOUCLIERMALUS;
var attrs = {};
switch (values.famille) {
case 'aventurier':
attrs.mod_atktir = 1;
attrs.mod_atkmag = 0;
break;
case 'combattant':
attrs.mod_atktir = 2;
attrs.mod_atkmag = 0;
break;
case 'mystique':
attrs.mod_atktir = 0;
attrs.mod_atkmag = 2;
break;
default:
return;
}
attrs.mod_atktir -= Math.floor(malusArmure / 2);
attrs.mod_atkmag -= malusArmure;
attrs.mod_initiative = -malusArmure;
setAttrs(attrs);
});
});
//Mise à jour de la mana
on('change:sagesse change:option_pm change:niveau change:famille', function(eventinfo) {
getAttrs(['sagesse', 'option_pm', 'niveau', 'pm', 'pm_max', 'option_setting', 'famille'], function(values) {
if (values.option_setting != 'arran') return;
var toSet = {};
var option_pm = values.option_pm;
if (option_pm == 1 || option_pm == 'on') {
var sagesse = parseInt(values.sagesse);
var niveau = parseInt(values.niveau);
if (!isNaN(sagesse) && sagesse > 0 && !isNaN(niveau) && niveau >= 0) {
var new_pm_max = niveau + Math.floor((sagesse - 10) / 2);
if (values.famille == 'mystique') new_pm_max *= 2;
var pm_max = parseInt(values.pm_max);
if (new_pm_max != pm_max) {
toSet.pm_max = new_pm_max;
var pm = parseInt(values.pm);
if (isNaN(pm) || pm < 0 || isNaN(pm_max)) toSet.pm = new_pm_max;
else {
pm += new_pm_max - pm_max;
if (pm < 0) toSet.pm = 0;
else if (pm > new_pm_max) toSet.pm = new_pm_max;
else toSet.pm = pm;
}
setAttrs(toSet);
}
}
}
});
});
function keyOfName(nom) {
nom = nom + '';
nom = nom.trim().toLowerCase();
nom = nom.replace(/é/g, 'e');
nom = nom.replace(/ç/g, 'c');
return nom;
}
//Les compétences
var competences = {
desamorcage: {
nom: 'Désamorçage',
main: 'DEX',
caracs: {
DEX: {},
INT: {},
}
},
discretion: {
nom: 'Discrétion',
main: 'DEX',
caracs: {
DEX: {
malus: 'armure'
},
}
},
mecanique: {
nom: 'Mécanique',
main: 'INT',
caracs: {
DEX: {},
INT: {},
}
},
perception: {
nom: 'Perception',
main: 'SAG',
caracs: {
SAG: {
malus: 'casque'
},
}
},
survie: {
nom: 'Survie',
main: 'SAG',
caracs: {
SAG: {
malus: 'casque'
},
CON: {
malus: 'armure'
}
}
},
vigilance: {
nom: 'Vigilance',
main: 'SAG',
caracs: {
SAG: {
malus: 'casque'
},
}
},
};
on('change:repeating_competences:comp_carac', function(eventinfo) {
var carac = eventinfo.newValue;
setAttrs({
repeating_competences_comp_jet: "@{" + carac + "_SUP} + [[@{" + carac + "} + @{" + carac + "_BONUS}]]"
});
});
on('change:repeating_competences:comp_bonusCapa', function(eventinfo) {
var bc = parseInt(eventinfo.newValue);
if (isNaN(bc)) bc = eventinfo.newValue;
else if (bc > 0) bc = '+' + bc;
else if (bc === 0) bc = '';
setAttrs({
repeating_competences_comp_bonusCapaText: bc
});
});
function bonusTotalCompetence(compValues, prefix, values) {
var bonusTotal = 0;
var bonus = parseInt(compValues[prefix + 'bonusCapa']);
if (!isNaN(bonus)) bonusTotal += bonus;
bonus = parseInt(compValues[prefix + 'bonus']);
if (!isNaN(bonus)) bonusTotal += bonus;
switch (compValues[prefix + 'malus']) {
case 'armure':
bonus = values.DEFARMUREON * values.DEFARMUREMALUS + values.DEFBOUCLIERON * values.DEFBOUCLIERMALUS;
if (!isNaN(bonus)) bonusTotal -= bonus;
break;
case 'casque':
bonus = values.casque_on * values.casque_malus;
if (!isNaN(bonus)) bonusTotal -= bonus;
break;
}
var sa = {};
sa[prefix + 'bonusTotal'] = bonusTotal;
setAttrs(sa);
}
on('change:repeating_competences:comp_bonusCapa change:repeating_competences:comp_bonus change:repeating_competences:comp_malus', function(eventinfo) {
getAttrs(['repeating_competences_comp_bonusCapa', 'repeating_competences_comp_bonus', 'repeating_competences_comp_malus', 'DEFARMUREON', 'DEFARMUREMALUS', 'DEFBOUCLIERON', 'DEFBOUCLIERMALUS', 'casque_on', 'casque_malus'], function(values) {
bonusTotalCompetence(values, 'repeating_competences_comp_', values);
});
});
on('change:DEFARMUREON change:DEFARMUREMALUS change:DEFBOUCLIERON change:DEFBOUCLIERMALUS change:casque_on change:casque_malus', function(eventinfo) {
getAttrs(['DEFARMUREON', 'DEFARMUREMALUS', 'DEFBOUCLIERON', 'DEFBOUCLIERMALUS', 'casque_on', 'casque_malus'], function(values) {
getSectionIDs('repeating_competences', function(idArray) {
idArray.forEach(function(id) {
var prefix = 'repeating_competences_' + id + '_comp_';
getAttrs([prefix + 'bonusCapa', prefix + 'bonus', prefix + 'malus'], function(compValues) {
bonusTotalCompetence(compValues, prefix, values);
});
});
});
});
});
on('change:repeating_competences:comp_nom change:repeating_competences:comp_nomCapa', function(eventinfo) {
getAttrs(['repeating_competences_comp_nom', 'repeating_competences_comp_nomCapa', 'repeating_competences_comp_carac', 'repeating_competences_comp_malus'], function(values) {
var nom = values.repeating_competences_comp_nom;
//Le nom doit être égal à nomCapa si il existe
var nomCapa = values.repeating_competences_comp_nomCapa;
if (nomCapa !== '' && nom != nomCapa) {
setAttrs({
repeating_competences_comp_nom: nomCapa
});
return;
}
var n = keyOfName(nom);
var c = competences[n];
if (c === undefined) return;
var carac = values.repeating_competences_comp_carac;
var sa = {};
var modif;
if (carac == 'FOR' && c.main != 'FOR') {
sa.repeating_competences_comp_carac = c.main;
carac = c.main;
modif = true;
}
carac = c.caracs[carac];
if (carac.malus && carac.malus != values.repeating_competences_comp_malus) {
sa.repeating_competences_comp_malus = carac.malus;
modif = true;
}
if (modif) setAttrs(sa);
});
});
on('change:repeating_competences:comp_carac', function(eventinfo) {
getAttrs(['repeating_competences_comp_nom', 'repeating_competences_comp_malus'], function(values) {
var nom = values.repeating_competences_comp_nom;
var n = keyOfName(nom);
var c = competences[n];
if (c === undefined) return;
var carac = c.caracs[eventinfo.newValue];
if (carac.malus && carac.malus != values.repeating_competences_comp_malus) {
setAttrs({
repeating_competences_comp_malus: carac.malus
});
}
});
});
//Les capacités
var capacites = {
mecanismes: {
voie: "voie de l'artilleur",
rang: 1,
texte: "larquebusier obtient un bonus de +1 par Rang dans cette voie à tous les tests visant à réparer ou à comprendre des mécanismes (cela inclut le fait de désamorcer des pièges mécaniques et de manipuler des armes de siège). Il peut appliquer ce bonus à tous les tests dattaque avec des armes de siège (baliste, couleuvrine, canon, trébuchet, catapulte, etc.).",
bonus: [{
type: 'competence',
nom: 'Mécanique',
valeur: 'rang'
}, {
type: 'competence',
nom: 'Désamorçage',
valeur: 'rang'
}, ]
},
};
</script>