Files
roll20-character-sheets/ChroniquesGalactiques/cog.htm
T
Ulty 24d52b0699 Small updates in Chroniques Contemporain and Chroniques Galactiques (#5541)
* Chroniques Oubliees Contemporain: version 2.8

* Chroniques Galactiques: version 3.8
2019-10-14 14:50:05 -05:00

3864 lines
187 KiB
HTML

<div class="sheet-mainBg">
<!-- FDP -->
<!-- INPUT HIDDEN Version FdP -->
<input type="hidden" name="attr_verfdp" value="3.8" />
<input type="hidden" name="attr_VERSION" value="3.8" />
<!-- INPUT HIDDEN Univers (COF, CG, COC) -->
<input type="hidden" name="attr_UNIVERS" value="CG" />
<!-- 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" />
<input type="hidden" name="attr_JETRISQUE" value="1d12" />
<input type="hidden" name="attr_JDEX" value="1d@{ETATDE}" />
<input type="hidden" name="attr_JDEXSUP" value="2d@{ETATDE}kh1" />
<input type="hidden" name="attr_JDEXSUPHERO" value="{2d@{ETATDE}kh1, 0d20+10}kh1" />
<input type="hidden" name="attr_JDEXRISQUE" value="1d12" />
<!-- INPUT HIDDEN Buffs -->
<input type="hidden" name="attr_FOR_BUFF" value="0" />
<input type="hidden" name="attr_DEX_BUFF" value="0" />
<input type="hidden" name="attr_CON_BUFF" value="0" />
<input type="hidden" name="attr_INT_BUFF" value="0" />
<input type="hidden" name="attr_SAG_BUFF" value="0" />
<input type="hidden" name="attr_PER_BUFF" value="0" />
<input type="hidden" name="attr_CHA_BUFF" value="0" />
<input type="hidden" name="attr_ATKCAC_BUFF" value="0" />
<input type="hidden" name="attr_ATKTIR_BUFF" value="0" />
<input type="hidden" name="attr_ATKMAG_BUFF" value="0" />
<input type="hidden" name="attr_ATKMEN_BUFF" value="0" />
<input type="hidden" name="attr_PSYINTUI_BUFF" value="0" />
<input type="hidden" name="attr_PSYINFLU_BUFF" value="0" />
<input type="hidden" name="attr_INIT_BUFF" value="0" />
<input type="hidden" name="attr_DEF_BUFF" value="0" />
<input type="hidden" name="attr_DEP_BUFF" value="0" />
<input type="hidden" name="attr_PV_BUFF" value="0" />
<!-- INPUT HIDDEN Malus Armure -->
<input type="hidden" name="attr_ARMURE_MALUS" value="0" />
<!-- INPUT HIDDEN Buffs vaisseau -->
<input type="hidden" name="attr_ATKTIRV_BUFF" value="0" />
<input type="hidden" name="attr_DEFVPIL_BUFF" value="0" />
<input type="hidden" name="attr_DEFVSEN_BUFF" value="0" />
<input type="hidden" name="attr_PEV_BUFF" value="0" />
<!-- INPUT HIDDEN Etats préjudiciable précédent -->
<input type="hidden" name="attr_CONDITION" value="" />
<input type="hidden" name="attr_PCONDITION" value="" />
<!-- INPUT HIDDEN PE -->
<input type="hidden" name="attr_PE_ONCE" value="Points énergie" />
<!-- INPUT HIDDEN Précédent nombre de PV -->
<input type="hidden" name="attr_LAST_PV" value="" />
<!-- INPUT HIDDEN Choix carac jets capacités -->
<input type="hidden" name="attr_QRYMOD" value="?{Carac. ?|Force,@{FOR}|Dextérité,@{DEX}|Constitution,@{CON}|Intelligence,@{INT}|Perception,@{PER}|Charisme,@{CHA}}" />
<input type="hidden" name="attr_QRYMODT" value="?{Carac. ?|Force,@{FOR_TEST}|Dextérité,@{DEX_TEST}|Constitution,@{CON_TEST}|Intelligence,@{INT_TEST}|Perception,@{PER_TEST}|Charisme,@{CHA_TEST}}" />
<!-- INPUT HIDDEN Postes de combat vaisseaux -->
<input type="hidden" name="attr_POSTE_PIL" value="" />
<input type="hidden" name="attr_POSTE_MOT" value="" />
<input type="hidden" name="attr_POSTE_SEN" value="" />
<input type="hidden" name="attr_POSTE_ORD" value="" />
<!-- INPUT HIDDEN Rangs Voies -->
<input type="hidden" name="attr_RANG_VOIE1" value="0" />
<input type="hidden" name="attr_RANG_VOIE2" value="0" />
<input type="hidden" name="attr_RANG_VOIE3" value="0" />
<input type="hidden" name="attr_RANG_VOIE4" value="0" />
<input type="hidden" name="attr_RANG_VOIE5" value="0" />
<input type="hidden" name="attr_RANG_VOIE6" value="0" />
<input type="hidden" name="attr_RANG_VOIE7" value="0" />
<input type="hidden" name="attr_RANG_VOIE8" value="0" />
<input type="hidden" name="attr_RANG_VOIE9" value="0" />
<!-- INPUT HIDDEN Caractéristiques -->
<input type="hidden" name="attr_CARACS" value="" />
<!-- FIN Hidden -->
<div style="display: none;">
<button type="roll" name="roll_incident_tir" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Attaque}} {{name=Incident de tir}} {{test=[[1d20cf1cs>2]]}} {{test_crit=Surchauffe ! Tir au prochain tour}} {{test_fumble=Batterie déchargée !}}" />
</div>
<div class="sheet-container">
<!-- Identité -->
<div style="width: 420px; vertical-align: middle; text-align: center;">
<img width="340" title="Version 3.8 - 28/09/2019" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_logo.png" />
</div>
<div style="width: 250px;">
<table>
<tr>
<td class="sheet-textfatleft">Nom</td>
<td colspan="3"><input class="sheet-nobox" name="attr_character_name" type="text" title="@{character_name}" /></td>
</tr>
<tr>
<td class="sheet-textfatleft">Race</td>
<td colspan="3"><input class="sheet-nobox" name="attr_RACE" type="text" title="@{RACE}" /></td>
</tr>
<tr>
<td class="sheet-textfatleft">Profil</td>
<td colspan="3"><input class="sheet-nobox" name="attr_PROFIL" type="text" title="@{PROFIL}" /></td>
</tr>
<tr>
<td class="sheet-textfatleft">Niveau</td>
<td style="text-align:left;"><input class="sheet-nobox" name="attr_NIVEAU" type="number" value="1" min="0" title="@{NIVEAU}" /></td>
<td class="sheet-textfatleft">Type</td>
<td class="sheet-boxinput">
<select class="sheet-pjstatus" name="attr_type_personnage" size="1" title="@{type_personnage}">
<option value="pj" selected>PJ</option>
<option value="pnj">PNJ</option>
<option value="vaisseau">Vaisseau</option>
</select>
</td>
</tr>
</table>
</div>
<div style="width: 110px;">
<table>
<tr>
<td class="sheet-textfatleft">Sexe</td>
<td><input class="sheet-nobox" name="attr_SEXE" type="text" title="@{SEXE}" /></td>
</tr>
<tr>
<td class="sheet-textfatleft">Âge</td>
<td><input class="sheet-nobox" name="attr_AGE" type="text" title="@{AGE}" /></td>
</tr>
<tr>
<td class="sheet-textfatleft">Taille</td>
<td><input class="sheet-nobox" name="attr_TAILLE" type="text" title="@{TAILLE}" /></td>
</tr>
<tr>
<td class="sheet-textfatleft">Poids</td>
<td><input class="sheet-nobox" name="attr_POIDS" type="text" title="@{POIDS}" /></td>
</tr>
</table>
</div>
</div> <!-- FIN Identité -->
<input type="radio" name="attr_type_fiche" class="sheet-hidden-tab sheet-fp1" value="pj" checked="checked"><span title="Personnage"></span>
<input type="radio" name="attr_type_fiche" class="sheet-hidden-tab sheet-fp2" value="vaisseau"><span title="Vaisseau"></span>
<input type="radio" name="attr_type_fiche" class="sheet-hidden-tab sheet-fp3" value="pnj"><span title="PNJ"></span>
<div class="sheet-tab-content sheet-fp1">
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab1" value="caracs" checked="checked"><span title="Caractéristiques"></span>
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab2" value="voies"><span title="Capacités"></span>
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab3" value="equip"><span title="Équipement"></span>
<input type="radio" name="attr_tab" class="sheet-tab sheet-tab4" value="config"><span title="Configuration"></span>
<img class="sheet-imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-tab-content sheet-tab1">
<div>
<!-- Caracs + combat + PV + défense -->
<table>
<tr>
<td style="width:250px; vertical-align: top;">
<!-- Caracs + Chance -->
<table class="sheet-tabsep">
<!-- Caracs -->
<tr>
<td class="sheet-textfat">CARAC.</td>
<td></td>
<td class="sheet-textbase">Valeur</td>
<td class="sheet-textfat">Mod.</td>
<td class="sheet-textbase">Bonus</td>
<td class="sheet-textfat">Test</td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_for" title="%{jet_for} Jet de Force" value="@(togm}&{template:co1} {{perso=@{character_name}}} {{name=Force}} {{subtags=Test}} {{carac=[[@{FOR_SUP}[Dé] + [[@{FOR_TEST}]][Bonus] ]] }}"> FOR</button></td>
<td class="sheet-boxinputlight">
<select class="sheet-selectmin" name="attr_FOR_SUP" title="@{FOR_SUP} Caractéristique Normale ou Supérieure/Héroïque (règle p.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="sheet-boxinput"><input type="number" name="attr_FORCE" title="@{FORCE}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_FOR" title="@{FOR}" value="floor((@{FORCE}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_FOR_BONUS" title="@{FOR_BONUS} Bonus au Test" value="@{FOR_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_FOR_TEST" title="@{FOR_TEST}" value="@{FOR}+@{FOR_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_dex" title="%{jet_dex} Jet de Dext&eacute;rit&eacute;" value="@(togm}&{template:co1} {{perso=@{character_name}}} {{name=Dext&eacute;rit&eacute;}} {{subtags=Test}} {{carac=[[@{DEX_SUP}[Dé] + [[@{DEX_TEST}]][Bonus] ]] }}"> DEX</button></td>
<td class="sheet-boxinputlight">
<select class="sheet-selectmin" name="attr_DEX_SUP" title="@{DEX_SUP} Caractéristique Normale ou Supérieure/Héroïque (règle p.138)">
<option value="@{JDEX}" selected>N Normale</option>
<option value="@{JDEXSUP}">S Supérieure OU Héroïque</option>
<option value="@{JDEXSUPHERO}">H Supérieure ET Héroïque</option>
</select>
</td>
<td class="sheet-boxinput"><input type="number" name="attr_DEXTERITE" title="@{DEXTERITE}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEX" title="@{DEX}" value="floor((@{DEXTERITE}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEX_BONUS" title="@{DEX_BONUS} Bonus au Test" value="@{DEX_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEX_TEST" title="@{DEX_TEST}" value="@{DEX}+@{DEX_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_con" title="%{jet_con} Jet de Constitution" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Constitution}} {{subtags=Test}} {{carac=[[@{CON_SUP}[Dé] + [[@{CON_TEST}]][Bonus] ]] }}"> CON</button></td>
<td class="sheet-boxinputlight">
<select class="sheet-selectmin" name="attr_CON_SUP" title="@{CON_SUP} Caractéristique Normale ou Supérieure/Héroïque (règle p.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="sheet-boxinput"><input type="number" name="attr_CONSTITUTION" title="@{CONSTITUTION}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CON" title="@{CON}" value="floor((@{CONSTITUTION}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CON_BONUS" title="@{CON_BONUS} Bonus au Test" value="@{CON_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CON_TEST" title="@{CON_TEST}" value="@{CON}+@{CON_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_int" title="%{jet_int} Jet d'Intelligence" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Intelligence}} {{subtags=Test}} {{carac=[[@{INT_SUP}[Dé] + [[@{INT_TEST}]][Bonus] ]] }}"> INT</button></td>
<td class="sheet-boxinputlight">
<select class="sheet-selectmin" name="attr_INT_SUP" title="@{INT_SUP} Caractéristique Normale ou Supérieure/Héroïque (règle p.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="sheet-boxinput"><input type="number" name="attr_INTELLIGENCE" title="@{INTELLIGENCE}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INT" title="@{INT}" value="floor((@{INTELLIGENCE}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INT_BONUS" title="@{INT_BONUS} Bonus au Test" value="@{INT_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INT_TEST" title="@{INT_TEST}" value="@{INT}+@{INT_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_per" title="%{jet_per} Jet de Perception" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Perception}} {{subtags=Test}} {{carac=[[@{PER_SUP}[Dé] + [[@{PER_TEST}]][Bonus] ]] }}"> PER</button></td>
<td class="sheet-boxinputlight">
<select class="sheet-selectmin" name="attr_PER_SUP" title="@{PER_SUP} Caractéristique Normale ou Supérieure/Héroïque (règle p.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="sheet-boxinput"><input type="number" name="attr_PERCEPTION" title="@{PERCEPTION}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PER" title="@{PER}" value="floor((@{PERCEPTION}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PER_BONUS" title="@{PER_BONUS} Bonus au Test" value="@{PER_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PER_TEST" title="@{PER_TEST}" value="@{PER}+@{PER_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_cha" title="%{jet_cha} Jet de Charisme" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Charisme}} {{subtags=Test}} {{carac=[[@{CHA_SUP}[Dé] + [[@{CHA_TEST}]][Bonus] ]] }}"> CHA</button></td>
<td class="sheet-boxinputlight">
<select class="sheet-selectmin" name="attr_CHA_SUP" title="@{CHA_SUP} Caractéristique Normale ou Supérieure/Héroïque (règle p.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="sheet-boxinput"><input type="number" name="attr_CHARISME" title="@{CHARISME}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CHA" title="@{CHA}" value="floor((@{CHARISME}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CHA_BONUS" title="@{CHA_BONUS} Bonus au Test" value="@{CHA_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CHA_TEST" title="@{CHA_TEST}" value="@{CHA}+@{CHA_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-textfat" colspan="6">ÉTATS PRÉJUDICIABLES</td>
</tr>
<tr>
<td class="sheet-boxinputlight" colspan="6">
&nbsp;
<input type="radio" name="attr_ETATDE" value="20" title="@{ETATDE} Jet d'un d20 pour tous les tests" checked>&nbsp;Normal</input>
&nbsp;
<input type="radio" name="attr_ETATDE" value="12" title="@{ETATDE} Jet d'un d12 pour tous les tests">&nbsp;Affaibli</input>
&nbsp;
<input type="checkbox" name="attr_POISSE" title="@{POISSE} Moins bon de deux d20 pour tous les tests" value="1" />&nbsp;Poisse
</td>
</tr>
<tr>
<td class="sheet-boxinputlight" colspan="6">
<button type="action" class="sheet-iconbtn" name="act_cond_aveugle" title="Aveuglé">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_aveugle.png" />
</button>
<button type="action" class="sheet-iconbtn" name="act_cond_effraye" title="Effrayé">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_effraye.png" />
</button>
<button type="action" class="sheet-iconbtn" name="act_cond_etourdi" title="Etourdi">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_etourdi.png" />
</button>
<button type="action" class="sheet-iconbtn" name="act_cond_immobilise" title="Immobilisé">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_immobilise.png" />
</button>
<button type="action" class="sheet-iconbtn" name="act_cond_panique" title="Paniqué">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_panique.png" />
</button>
<button type="action" class="sheet-iconbtn" name="act_cond_ralenti" title="Ralenti">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_ralenti.png" />
</button>
<button type="action" class="sheet-iconbtn" name="act_cond_renverse" title="Renversé">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_renverse.png" />
</button>
<button type="action" class="sheet-iconbtn" name="act_cond_surpris" title="Surpris">
<img class="sheet-iconimg" src="https://raw.githubusercontent.com/stephaned68/ChroniquesGalactiques/master/cond_surpris.png" />
</button>
<br /><span name="attr_conditions" value=""></span>
</td>
</tr>
</table> <!-- FIN Caracs -->
<table class="sheet-tabsep" style="margin-top: 20px;">
<!-- Chance -->
<tr>
<td class="sheet-boxtitre" title="Points de Chance"><button type="roll" class="sheet-boxtitre" name="roll_jet_pc" title="%{jet_pc} Utilisation d'un PC" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Bonus}} {{name=Point de Chance}} {{desc=@{character_name} utilise un Point de Chance et obtient un bonus de +10}} {{text=@{character_name} peut aussi utiliser un Point de Chance pour annuler une blessure grave (1 / combat), annuler un incident de tir (1 / combat), ou pour la durée d'un combat spatial, prendre un poste à bord d'un vaisseau que ces capacités ne lui permettent pas d'occuper en tant normal.}}" />PC</td>
<td class="sheet-boxinput"><input type="number" style="width: 35px;" name="attr_PC" value="0" title="@{PC} Points de Chance utilisés ou courants" /></td>
<td>/</td>
<td class="sheet-boxinput"><input type="number" style="width: 35px;" name="attr_PCRACE" title="@{PCRACE}Points de Chance de Race" value="0" /></td>
<td>+</td>
<td class="sheet-boxinput"><input type="number" style="width: 35px;" name="attr_PCDIV" title="@{PCDIV} Points de Chance additionnels" value="0" /></td>
<td>+</td>
<td class="sheet-boxinputlight"><INPUT type="number" style="width: 35px;" name="attr_PCCAR" value="@{CHA}" title="@{PCCAR} Modificateur de Charisme" disabled /></td>
<td>=</td>
<td class="sheet-boxinputlight"><input type="number" style="width: 35px;" name="attr_PC_max" value="@{PCRACE}+@{PCDIV}+@{PCCAR}" title="@{PC|max} Points de Chance maximums" disabled /></td>
</tr>
</table> <!-- FIN Chance -->
</td> <!-- FIN Caracs + Chance -->
<td style="width:100%; vertical-align: top;">
<!-- Combat + PV + défense -->
<table>
<tr>
<td style="vertical-align: top;">
<!-- Combat -->
<table class="sheet-tabsep">
<tr>
<td class="sheet-textfat">COMBAT</td>
<td class="sheet-textbase">Base</td>
<td class="sheet-textbase">Mod.</td>
<td class="sheet-textbase">Div.</td>
<td class="sheet-textfat">Total</td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_cac" title="%{jet_cac} Jet d'attaque au contact" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Au Contact}} {{subtags=Attaque}} {{attaque=[[@{JETNORMAL}cs20cf1[Dé] + [[@{ATKCAC}]][Bonus] ]] }}"> AU CONTACT</button></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKCAC_BASE" value="0" title="@{ATKCAC_BASE} Score de base" /></td>
<td class="sheet-boxinput">
<select class="sheet-carac" name="attr_ATKCAC_CARAC" size="1" title="@{ATKCAC_CARAC}">
<option value="@{FOR}" selected>FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{PER}">PER</option>
<option value="@{CHA}">CHA</option>
</select>
</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKCAC_DIV" title="@{ATKCAC_DIV} Bonus divers" value="@{ATKCAC_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKCAC" title="@{ATKCAC}" value="@{ATKCAC_BASE}+@{ATKCAC_CARAC}+@{ATKCAC_DIV}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_tir" title="%{jet_tir} Jet d'attaque à distance" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=&Agrave; Distance}} {{subtags=Attaque}} {{attaque=[[@{JETNORMAL}cs20cf1[Dé] + [[@{ATKTIR}]][Bonus] ]] }}"> &Agrave; DISTANCE</button></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKTIR_BASE" value="0" title="@{ATKTIR_BASE} Score de base" /></td>
<td class="sheet-boxinput">
<select class="sheet-carac" name="attr_ATKTIR_CARAC" size="1" title="@{ATKTIR_CARAC}">
<option value="@{FOR}">FOR</option>
<option value="@{DEX}" selected>DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{PER}">PER</option>
<option value="@{CHA}">CHA</option>
</select>
</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKTIR_DIV" title="@{ATKTIR_DIV} Bonus divers" value="@{ATKTIR_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKTIR" title="@{ATKTIR}" value="@{ATKTIR_BASE}+@{ATKTIR_CARAC}+@{ATKTIR_DIV}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_psyinf" title="%{jet_psyinf} Jet d'attaque psychique : Influence" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Psychique (Influence)}} {{subtags=Attaque}} {{attaque=[[@{JETNORMAL}cs20cf1[Dé] + [[@{ATKPSYINFLU}]][Bonus] ]]}}"> PSY Influence</button></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKPSY_BASE" value="0" title="@{ATKPSY_BASE} Score de base" /></td>
<td class="sheet-boxinput">
<select class="sheet-carac" name="attr_ATKPSYINFLU_CARAC" title="@{ATKPSYINFLU_CARAC}" size="1">
<option value="@{FOR}">FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{PER}">PER</option>
<option value="@{CHA}" selected>CHA</option>
</select>
</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKPSYINFLU_DIV" title="@{ATKPSYINFLU_DIV} Bonus divers" value="@{PSYINFLU_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKPSYINFLU" title="@{ATKPSYINFLU}" value="@{ATKPSY_BASE}+@{ATKPSYINFLU_CARAC}+@{ATKPSYINFLU_DIV}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_psyint" title="%{jet_psyint} Jet d'attaque psychique : Intuition" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Psychique (Intuition)}} {{subtags=Attaque}} {{attaque=[[@{JETNORMAL}cs20cf1[Dé] + [[@{ATKPSYINTUI}]][Bonus] ]]}}"> PSY Intuition</button></td>
<td class="sheet-boxinputlight"><span name="attr_ATKPSY_BASE" title="@{ATKPSY_BASE} Score de base"></span></td>
<td class="sheet-boxinput">
<select class="sheet-carac" name="attr_ATKPSYINTUI_CARAC" title="@{ATKPSYINTUI_CARAC}" size="1">
<option value="@{FOR}">FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{PER}" selected>PER</option>
<option value="@{CHA}">CHA</option>
</select>
</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKPSYINTUI_DIV" title="@{ATKPSYINTUI_DIV} Bonus divers" value="@{PSYINTUI_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKPSYINTUI" title="@{ATKPSYINTUI}" value="@{ATKPSY_BASE}+@{ATKPSYINTUI_CARAC}+@{ATKPSYINTUI_DIV}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_init" title="%{jet_init} Jet d'initiative" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Initiative}} {{subtags=Combat}} {{carac=[[@{INIT}[Init.] + @{INIT_VAR}[Dé(s)] &{tracker}]]}}"> INITIATIVE</button></td>
<td>&nbsp;</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INIT_CARAC" title="@{INIT_CARAC}" value="@{DEXTERITE}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INIT_DIV" title="@{INIT_DIV} Bonus divers" value="@{INIT_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INIT" title="@{INIT}" value="@{INIT_CARAC}+@{INIT_DIV}-@{ARMURE_MALUS}" disabled /></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>
</td> <!-- FIN Combat -->
<td style="vertical-align: top;">
<!-- PV -->
<table class="sheet-tabsep">
<tr>
<td class="sheet-textfat" colspan="2">VITALIT&Eacute;</td>
</tr>
<tr>
<td class="sheet-boxtitre">
<button class="sheet-boxtitre" type="action" name="act_dv_btn" title="Progression d'un niveau">
DV</button>
</td>
<td class="sheet-boxinput">
<select class="sheet-carac" name="attr_DV" size="1" title="@{DV} D&eacute; 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="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_pr" title="%{jet_pr} Jet de Récupération" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Récupération}} {{subtags=Vitalit&eacute;}} {{RECUP=[[1d@{DV}[DV] + @{NIVEAU}[Niveau] + [[@{CON}]][Mod. CON] ]]}}"> PV</button></td>
<td class="sheet-boxinput"><input type="number" name="attr_PV_max" title="@{PV|max} Points de Vie maximum" value="0" /></td>
</tr>
<tr>
<td class="sheet-boxinput" colspan="2">
<span class="textbase">PV restants</span>&nbsp;
<input type="number" name="attr_PV" title="@{PV} Points de Vie restants" value="0" />
</td>
</tr>
<tr>
<td class="sheet-boxinput" colspan="2">
<span class="textbase">DM temp.</span>&nbsp;
<input type="number" name="attr_DMTEMP" title="@{DMTEMP} Dommages Temporaires" value="0" />
</td>
</tr>
<tr>
<td class="sheet-boxinput" colspan="2">
&nbsp;<input type="checkbox" name="attr_BLESSURE" title="@{BLESSURE} Gravement blessé" value="1" />
<span class="textbase">Blessure grave</span>&nbsp;
<input type="number" name="attr_SEUILBG" title="@{SEUILBG} Seuil de blessure grave" value="0" />
</td>
</tr>
<tr>
<td class="sheet-boxtitre" title="Réduction des DM">RD</td>
<td class="sheet-boxinput">
<input type="number" name="attr_RD" title="@{RD} Réduction des DM" value="0" />
</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>
</td> <!-- FIN PV -->
</tr>
<tr>
<td colspan="2" style="vertical-align: top;">
<!-- Défense -->
<table class="sheet-tabsep">
<tr>
<td colspan="2" class="sheet-textfat">D&Eacute;FENSES</td>
<td class="sheet-textbase">
Armure
<input type="checkbox" name="attr_DEFARMUREON" value="1" checked title="@{DEFARMUREON} Armure portée" />
</td>
<td class="sheet-textbase">
Bouclier
<input type="checkbox" name="attr_DEFBOUCLIERON" value="1" checked title="@{DEFBOUCLIERON} Champ de force activé" />
</td>
<td class="sheet-textbase">Mod.</td>
<td class="sheet-textbase">Div.</td>
<td class="sheet-textbase">Action défensive</td>
<td class="sheet-textfat">Total</td>
</tr>
<tr>
<td class="sheet-boxtitre">DEF</td>
<td class="sheet-boxinputlight">10+</td>
<td class="sheet-boxinput"><input type="number" name="attr_DEFARMURE" title="@{DEFARMURE} Armure" value="0" /></td>
<td class="sheet-boxinput"><input type="number" name="attr_DEFBOUCLIER" title="@{DEFBOUCLIER} Champ de force" value="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFCAR" value="@{DEX}" title="@{DEFCAR} Modificateur de Dext&eacute;rit&eacute;" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFDIV" title="@{DEFDIV} Bonus divers" value="@{DEF_BUFF}" disabled /></td>
<td class="sheet-boxinput">
<select class="sheet-carac" style="width: 80px" name="attr_DEFACT" size="1" title="@{DEFACT} Actions défensives">
<option value="0" selected>-</option>
<option value="2">Simple</option>
<option value="4">Totale (L)</option>
</select>
</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEF" value="10+(@{DEFARMURE}*@{DEFARMUREON})+(@{DEFBOUCLIER}*@{DEFBOUCLIERON})+@{DEFCAR}+@{DEFDIV}+@{DEFACT}" title="@{DEF} D&eacute;fense Physique" disabled /></td>
</tr>
<tr>
<td class="sheet-textfat" colspan="2" style="text-align: right;">Malus</td>
<td class="sheet-boxinput"><input type="number" name="attr_DEFARMUREMALUS" title="@{DEFARMUREMALUS} Malus à toutes les actions et à l'Init. quand l'armure est portée." min="0" value="0" /></td>
<td class="sheet-textbase" colspan="3">&nbsp;</td>
</tr>
<tr>
<td class="sheet-boxtitre">DEP</td>
<td class="sheet-boxinputlight">10+</td>
<td class="sheet-textbase">&nbsp;</td>
<td class="sheet-textbase">&nbsp;</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEPCAR" value="@{CHA}" title="@{DEPCAR}Modificateur de Charisme" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEPDIV" title="@{DEPDIV} Bonus divers" value="@{DEP_BUFF}" disabled /></td>
<td class="sheet-textbase">&nbsp;</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEP" value="10+@{DEPCAR}+@{DEPDIV}" title="@{DEP} Défense Psychique" disabled /></td>
</tr>
</table>
</td>
</tr>
</table>
</td> <!-- FIN Combat + PV + défense -->
</tr>
</table>
</div> <!-- FIN Caracs + combat + PV + défense -->
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div>
<!-- Armes -->
<table class="sheet-tabsep" title="repeating_armes">
<tr>
<td class="sheet-textfatleft" style="width: 155px;">ARMES / ATTAQUES</td>
<td class="sheet-textbase" style="width: 150px;">ATTAQUE</td>
<td class="sheet-textbase" style="width: 20px;">CRIT.</td>
<td class="sheet-textbase" style="width: 210px;">DM</td>
<td class="sheet-textbase" style="width: 40px;">PORTÉE</td>
<td class="sheet-textbase">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="sheet-tabsep">
<tr>
<td>
<button type="roll" class="sheet-neutre" name="roll_pjatk" title="%{repeating_armes_$N_pjatk}" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Attaque}} {{name=@{armenom}}} {{portee=@{armeportees}}} {{desc=@{armejetn} @{armelim}}} {{@{armeatt}[[@{armejetd}cs>@{armecrit}cf<@{armeinct}[Dé] + [[@{armeatk}]][Attaque] + [[@{armeatkdiv}]][Bonus] + (@{armebuff}) ]]}} {{@{armedmg}[[[[@{armedmnbde}d@{armedmde}@{armedmrel}@{armedmvrel}]][Dé DM] + ([[@{armedmcar}]])[Mod.DM] + (@{armedmdiv})[Bonus DM] + (@{armebuffdm}) ]]}} {{dmtype=@{armedmtype}}} {{degats2=@{armedmg2}}} {{dm2type=@{armedm2_desc}}} {{special=@{armespec}}}" />
</td>
<td class="sheet-boxinputleft" style="min-width: 130px;">
<input type="text" name="attr_armenom" title="@{armenom}" style="font-weight: bold;" placeholder="Arme/attaque" />
</td>
<td class="sheet-boxinputleft" style="min-width: 150px;">
<input type="checkbox" name="attr_armeatt" title="@{armeatt} Faire un jet d'attaque pour toucher" value="attaque=" checked="checked" />
<select class="sheet-carac" style="width: 87px;" name="attr_armeatk" title="@{armeatk}" size="1">
<option value="@{ATKCAC}" selected>CONTACT</option>
<option value="@{ATKTIR}">DISTANCE</option>
<option value="@{ATKPSYINFLU}">PSY Inf.</option>
<option value="@{ATKPSYINTUI}">PSY Int.</option>
</select>+<input type="number" style="width: 32px;" name="attr_armeatkdiv" value="0" title="@{armeatkdiv} Bonus d'attaque divers" />
<input type="hidden" name="attr_armebuff" value="" />
</td>
<td class="sheet-boxinputleft" style="text-align: right;">
<input type="number" name="attr_armecrit" style="width:32px;" min="2" max="20" value="20" title="@{armecrit} Seuil de Critique (par défaut 20)" />
</td>
<td class="sheet-boxinputleft">
<input type="checkbox" name="attr_armedmg" title="@{armedmg} Faire un jet de dommages" value="degats=" checked="checked" />
<input type="number" style="width:32px;" name="attr_armedmnbde" value="1" title="@{armedmnbde} Nombre de dés de dommage" />
<select class="sheet-carac" style="width: 47px;" name="attr_armedmde" size="1" title="@{armedmde} Dé de dommage">
<optgroup label="Normaux">
<option value="3">d3</option>
<option value="4">d4</option>
<option value="6" selected>d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</optgroup>
<optgroup label="Sans limite">
<option value="3!">d3</option>
<option value="4!">d4</option>
<option value="6!" selected>d6</option>
<option value="8!">d8</option>
<option value="10!">d10</option>
<option value="12!">d12</option>
</optgroup>
</select>+<select class="sheet-carac" style="width: 52px;" name="attr_armedmcar" size="1" title="@{armedmcar} Modificateur aux dommages">
<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="@{PER}">PER</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="@{PER_TEST}">PER</option>
<option value="@{CHA_TEST}">CHA</option>
</optgroup>
</select>+<input type="number" style="width: 32px;" name="attr_armedmdiv" value="0" title="@{armedmdiv} Bonus de dommage divers" />
<input type="hidden" name="attr_armebuffdm" value="" />
</td>
<td class="sheet-boxinputleft" style="min-width: 50px;">
<input type="text" name="attr_armeportee" placeholder="Portée" title="@{armeportee}" />
<input type="hidden" name="attr_armeportees" value="" />
</td>
<td class="sheet-boxinputleft" style="width: 100%;">
<textarea name="attr_armespec" title="@{armespec}" placeholder="Notes, capacités spéciales, effet ..." title="Notes, capacités spéciales, effet ..."></textarea>
</td>
</tr>
</table>
</div>
<div class="options">
<table class="sheet-tabsep">
<tr>
<td style="width: 18px;">&nbsp;</td>
<td class="sheet-boxinputleft" style="width: 270px;">
<input type="checkbox" name="attr_arme_al" style="width: 12px;" title="@{armelim} Action limitée (L)" value="1" />
<input type="hidden" name="attr_armelim" value="" />
<input type="text" name="attr_armejetn" style="width: 230px; font-weight: bold;" placeholder="Nom de l'attaque" title="@{armejetn}" />
<select class="sheet-carac" style="width: 30px;" name="attr_armejetd" size="1" title="@{armejetd} Jet d'attaque : Normal, 'Risque' = avec d12, 'Expert' = meilleur de deux d20">
<option value="@{JETNORMAL}" selected>N - Normal</option>
<option value="@{JETRISQUE}">R - Risque (d12)</option>
<option value="@{JETSUP}">E - Expert (2 d20)</option>
</select>
</td>
<td class="sheet-boxinputleft" style="width: 32px;">
<input type="number" style="width: 32px;" name="attr_armeinct" min="1" max="19" value="1" title="@{armeinct} Seuil d'incident de tir (par défaut 1)" />
</td>
<td class="sheet-boxinputleft" style="width: 200px">
<input type="text" class="sheet-carac" style="width: 106px;" name="attr_armedmtype" title="@{armedmtype}" placeholder="Type DM">
<select class="sheet-carac" style="width: 40px;" name="attr_armedmrel" size="1" title="@{armedmrel} Relance dés de DM = (r)eroll -- 1 fois = (r)eroll (o)nce">
<option value="" selected>-x- Pas de relance DM</option>
<option value="r">-r- Relance DM (r)</option>
<option value="ro">-o- Relance DM 1 seule fois (ro)</option>
</select>
<input type="text" style="width: 50px;" name="attr_armedmvrel" title="@{armedmvrel} Seuil de relance (relance les 1 si non indiqué)" />
</td>
<td class="sheet-boxinputleft" style="width: 200px;" colspan="2">
<input type="text" style="width: 50px;" name="attr_armedm2_de" placeholder="1d6" title="@{armedm2_de}" />
<input type="text" style="width: 150px;" name="attr_armedm2_desc" placeholder="Electro-impact" title="@{armedm2_desc}" />
<input type="hidden" name="attr_armedmg2" value="" />
</td>
</tr>
</table>
</div>
</div>
</fieldset>
<table>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td style="width: 35px; text-align: right;">Att. :</td>
<td>
<textarea class="sheet-boxinputleft" style="height: 3em;" name="attr_mods_atk"
title="Modificateurs de circonstances" placeholder="Ex: ATD -5 Portée double" value=""></textarea>
</td>
</tr>
<tr>
<td style="width: 35px; text-align: right;">DM :</td>
<td>
<textarea class="sheet-boxinputleft" style="height: 3em;" name="attr_mods_atkdm"
title="Modificateurs de circonstances" placeholder="Ex: ATD +[PER] Visée" value=""></textarea>
</td>
</tr>
<tr>
<td colspan="2" style="text-align: left;"><span name="attr_INFOMSG"></span></td>
</tr>
</table>
</div>
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
</div>
<div class="sheet-tab-content sheet-tab2">
<div>
<!-- Voies -->
<table>
<tr>
<td class="sheet-textfatleft" colspan="5">CAPACIT&Eacute;S DU PERSONNAGE</td>
</tr>
<tr>
<td class="sheet-boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="sheet-boxtitresmall">Voie 1</td>
<td class="sheet-boxtitresmall">Voie 2</td>
<td class="sheet-boxtitresmall">Voie 3</td>
</tr>
<tr>
<td class="sheet-boxtitresmall">R</td>
<td class="sheet-boxinputleft"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie1nom" title="@{voie1nom}" placeholder="Nom de la Voie n°1" /></td>
<td class="sheet-boxinput"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie2nom" placeholder="Nom de la Voie n°2" /></td>
<td class="sheet-boxinput"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie3nom" placeholder="Nom de la Voie n°3" /></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">1</td>
<td class="sheet-boxvoie"><textarea name="attr_voie1-1" title="@{voie1-1}"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie2-1"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie3-1"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">2</td>
<td class="sheet-boxvoie"><textarea name="attr_voie1-2" title="@{voie1-2}"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie2-2"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie3-2"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">3</td>
<td class="sheet-boxvoie"><textarea name="attr_voie1-3" title="@{voie1-3}"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie2-3"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie3-3"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">4</td>
<td class="sheet-boxvoie"><textarea name="attr_voie1-4" title="@{voie1-4}"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie2-4"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie3-4"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">5</td>
<td class="sheet-boxvoie"><textarea name="attr_voie1-5" title="@{voie1-5}"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie2-5"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie3-5"></textarea></td>
</tr>
</table>
<table>
<tr>
<td class="sheet-boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="sheet-boxtitresmall">Voie 4</td>
<td class="sheet-boxtitresmall">Voie 5</td>
<td class="sheet-boxtitresmall">Voie 6</td>
</tr>
<tr>
<td class="sheet-boxtitresmall">R</td>
<td class="sheet-boxinputleft"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie4nom" placeholder="Nom de la Voie n°4" /></td>
<td class="sheet-boxinput"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie5nom" placeholder="Nom de la Voie n°5" /></td>
<td class="sheet-boxinput"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie6nom" placeholder="Nom de la Voie n°6" /></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">1</td>
<td class="sheet-boxvoie"><textarea name="attr_voie4-1"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie5-1"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie6-1"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">2</td>
<td class="sheet-boxvoie"><textarea name="attr_voie4-2"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie5-2"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie6-2"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">3</td>
<td class="sheet-boxvoie"><textarea name="attr_voie4-3"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie5-3"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie6-3"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">4</td>
<td class="sheet-boxvoie"><textarea name="attr_voie4-4"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie5-4"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie6-4"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">5</td>
<td class="sheet-boxvoie"><textarea name="attr_voie4-5"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie5-5"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie6-5"></textarea></td>
</tr>
</table>
<div>
<input type="checkbox" class="sheet-block-switch" name="attr_voies789" title="@{voies789}" value="1"><span>Plus de voies</span>
<div class="sheet-block-hidden"></div>
<div class="sheet-block-show">
<table>
<tr>
<td class="sheet-boxtitresmall" style="width: 20px;">&nbsp;</td>
<td class="sheet-boxtitresmall">Voie 7</td>
<td class="sheet-boxtitresmall">Voie 8</td>
<td class="sheet-boxtitresmall">Voie 9</td>
</tr>
<tr>
<td class="sheet-boxtitresmall">R</td>
<td class="sheet-boxinputleft"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie7nom" placeholder="Nom de la Voie n°7" /></td>
<td class="sheet-boxinput"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie8nom" placeholder="Nom de la Voie n°8" /></td>
<td class="sheet-boxinput"><input type="text" style="font-weight: bold;text-align: center;" name="attr_voie9nom" placeholder="Nom de la Voie n°9" /></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">1</td>
<td class="sheet-boxvoie"><textarea name="attr_voie7-1"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie8-1"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie9-1"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">2</td>
<td class="sheet-boxvoie"><textarea name="attr_voie7-2"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie8-2"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie9-2"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">3</td>
<td class="sheet-boxvoie"><textarea name="attr_voie7-3"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie8-3"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie9-3"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">4</td>
<td class="sheet-boxvoie"><textarea name="attr_voie7-4"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie8-4"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie9-4"></textarea></td>
</tr>
<tr>
<td class="sheet-boxtitresmall">5</td>
<td class="sheet-boxvoie"><textarea name="attr_voie7-5"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie8-5"></textarea></td>
<td class="sheet-boxvoie"><textarea name="attr_voie9-5"></textarea></td>
</tr>
</table>
</div>
</div>
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<table class="sheet-tabsep" title="repeating_jetcapas">
<tr>
<td class="sheet-textfatleft" style="min-width:245px;">Jets de Capacités</td>
<td class="sheet-textbase" style="width:100%;">&nbsp;</td>
</tr>
</table>
<fieldset class="repeating_jetcapas">
<table class="sheet-tabsep">
<tr>
<td>
<button type="roll" class="sheet-neutre" name="roll_pjcapa" title="%{repeating_jetcapas_$N_pjcapa}" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Capacité}} {{name=@{jetcapanom} @{jetcapalim}}} {{carac=[[@{jetcapanbde}d@{jetcapade}@{jetcapatypjet} + [[@{jetcapacarac}]] + @{jetcapadiv}]] }} {{jet=@{jetcapatitre}}} {{desc=@{jetcapavoie}}} {{text=@{jetcapadesc}}}" />
</td>
<td class="sheet-boxinputleft" style="min-width:200px;">
<input type="text" name="attr_jetcapanom" title="@{jetcapanom}" style="font-weight: bold;" placeholder="Nom du jet de capacité" />
</td>
<td class="sheet-boxinputleft">
<input type="checkbox" name="attr_jetcapa_al" style="width: 12px;" title="@{jetcapalim} Action limitée (L)" value="1" />
<input type="hidden" name="attr_jetcapalim" value="" />
<input type="number" style="width:32px;" name="attr_jetcapanbde" value="1" title="@{jetcapanbde} Nombre de dés" />
<select class="sheet-carac" style="width:50px;" name="attr_jetcapade" size="1" title="@{jetcapade} Dé (d20 => d12 si Affaibli)">
<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="sheet-carac" style="width:30px;" name="attr_jetcapatypjet" size="1" title="@{jetcapatypjet} Option du jet : normal, meilleur dé, moins bon dé, sans limite">
<option value="">N - Normal</option>
<option value="kh1">S - Garder le meilleur dé</option>
<option value="kl1">I - Garder le moins bon dé</option>
<option value="!">E - Explosif (jet sans limite)</option>
</select>)
+<select class="sheet-carac" style="width:60px;" name="attr_jetcapacarac" size="1" title="@{jetcapacarac} 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="@{PER}">PER</option>
<option value="@{CHA}">CHA</option>
<option value="@{QRYMOD}">Choix</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="@{PER_TEST}">PER</option>
<option value="@{CHA_TEST}">CHA</option>
<option value="@{QRYMODT}">Choix</option>
</optgroup>
<optgroup label="Attaques">
<option value="@{ATKCAC}">ATC</option>
<option value="@{ATKTIR}">ATD</option>
<option value="@{ATKPSYINFLU}">Influ. Psy</option>
<option value="@{ATKPSYINTUI}">Intui. Psy</option>
</optgroup>
</select>+<input type="number" style="width:32px;" name="attr_jetcapadiv" value="0" title="@{jetcapadiv} Bonus divers" />
</td>
<td class="sheet-boxinputleft" style="width: 25%;">
<input type="text" name="attr_jetcapatitre" style="width:100%;" placeholder="Compétence (CARAC)" title="@{jetcapatitre}" />
</td>
<td class="sheet-boxinputleft" style="width: 25%;">
<input type="text" name="attr_jetcapavoie" style="width:100%;" placeholder="Voie, rang" title="@{jetcapavoie}" />
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td class="sheet-boxinputleft" colspan="4">
<textarea name="attr_jetcapadesc" style="width: 100%;" placeholder="Description" title="@{jetcapadesc}"></textarea>
</td>
</tr>
</table>
</fieldset>
</div> <!-- FIN Voies -->
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div>
<span class="sheet-textfatleft">Traits</span>
<fieldset class="repeating_traits">
<table class="sheet-tabsep">
<tr>
<td style="width: 15px;">
<button type="roll" name="roll_pjtrait" title="%{repeating_traits_$N_pjtrait}" class="sheet-output" value="/w &quot;@{character_name}&quot; &{template:co1} {{perso=@{character_name}}} {{name=@{traitnom}}} {{subtags=@{traittype}}} {{text=@{traitdesc}}}">w</button>
</td>
<td class="sheet-boxinputleft" style="width: 200px;"><input type="text" style="font-weight: bold;" name="attr_traitnom" placeholder="Nom du trait" title="@{traitnom}" /></td>
<td class="sheet-boxinputleft" style="width: 150px;"><input type="text" name="attr_traittype" placeholder="Origine/Type de trait" title="@{traittype}" /></td>
<td class="sheet-boxinputleft"><textarea name="attr_traitdesc" placeholder="Description" title="@{traitdesc}"></textarea></td>
</tr>
</table>
</fieldset>
</div>
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
</div>
<div class="sheet-tab-content sheet-tab3">
<div>
<!-- Equipement et règles optionnelles -->
<div class="sheet-2colrow">
<div class="sheet-col" title="repeating_equipement">
<div class="sheet-boxtitre">&Eacute;QUIPEMENT : Consommables</div>
<div class="sheet-boxinputleft">
<span class="textbase">Crédits&nbsp;:</span>&nbsp;
<input type="text" style="width:230px;" name="attr_BOURSE" title="@{BOURSE}" placeholder="Rien ? C'est la pauvreté !" />
<input type="number" name="attr_encombrement" title="@{encombrement} Encombrement total" value="@{total_enc}" disabled></span>
/ <input type="number" name="attr_seuil_enc" title="@{seuil_enc} Seuil d'encombrement (FOR)" value="0" />
</div>
<fieldset class="repeating_equipement">
<div class="sheet-boxvoie">
<input type="text" style="width: 280px;" name="attr_equip-desc" title="@{equip-desc}" /> &nbsp;
<input type="number" name="attr_equip-enc" style="width: 30px;" value="0" title="@{equip-enc} Encombrement" />
<span class="sheet-textbase">Qté</span>
<input type="number" name="attr_equip-qte" style="width: 35px;" value="1" title="@{equip-qte}" />
</div>
</fieldset>
</div>
<div class="sheet-col" title="repeating_materiel">
<div class="sheet-boxtitre">&Eacute;QUIPEMENT : Personnel</div>
<fieldset class="repeating_materiel">
<div class="sheet-boxvoie">
<input type="text" name="attr_mater-nom" title="@{mater-nom}" />
</div>
</fieldset>
</div>
</div>
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-2colrow">
<div class="sheet-col">
<table>
<tr>
<td class="sheet-boxtitre">&Eacute;QUIPEMENT : Divers</td>
</tr>
<tr>
<td class="sheet-boxinputleft"><textarea name="attr_equip-div" style="height:15em;" title="@{equip-div}"></textarea></td>
</tr>
</table>
</div>
<div class="sheet-col">
<table>
<tr>
<td class="sheet-boxtitre">Notes</td>
</tr>
<tr>
<td class="sheet-boxinputleft"><textarea name="attr_notes" style="height:15em;" title="@{notes}"></textarea></td>
</tr>
</table>
</div>
</div>
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
</div> <!-- FIN Equipement et règles optionnelles -->
</div>
<div class="sheet-tab-content sheet-tab4">
<div class="sheet-row">
<!-- Config -->
<table class="sheet-tabsep">
<tr>
<td style="width: 15%;">
<span class="textbase">Jets</span>&nbsp;
<select class="sheet-carac" style="width: 80px;" name="attr_togm" title="@{togm}">
<option value="" selected>Normaux</option>
<option value="/w gm ">Cachés</option>
</select>
</td>
<td style="width: 20%;">
<span class="textbase">Initiative variable</span>&nbsp;<input type="checkbox" name="attr_INIT_VAR" title="@{INIT_VAR}" value="[[1d6!]]" />
</td>
<td style="width: 25%;">
<span class="textbase">Compteur PC:</span>&nbsp;
<select class="sheet-carac" style="width: 80px;" name="attr_pc_count" title="@{pc_count}">
<option value="R" selected>Restants</option>
<option value="U">Utilisés</option>
</select>
</td>
<td style="width: 20%;">
<span class="textbase">Encombrement</span>&nbsp;
<input type="checkbox" name="attr_use_encombrement" title="@{use_encombrement} Gérer l'encombrement" value="1" />
</td>
<td style="width: 20%;">
<button type="action" class="sheet-iconbtn" name="act_reset_btn" title="Re-calculer attributs (rangs, encombrement)">r</button>
</td>
</tr>
<tr>
<td>
<span class="textbase">Progression PV :</span>&nbsp;
<select class="sheet-carac" style="width: 90px;" name="attr_prog_pv" title="@{prog_pv}" size="1">
<option value="0" selected>Jet DV</option>
<option value="1">Moyenne</option>
</select>
</td>
</tr>
</table>
</div> <!-- FIN Config -->
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-row">
<!-- BUFFS -->
<div class="sheet-textfatleft">BUFFS</div>
<table class="sheet-tabsep">
<tr>
<td style="width: 5%;">FOR:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_FOR_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_FOR_BUFFS" value="@{FOR_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">DEX:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_DEX_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_DEX_BUFFS" value="@{DEX_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">CON:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_CON_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_CON_BUFFS" value="@{CON_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">INT:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_INT_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_INT_BUFFS" value="@{INT_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">PER:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_PER_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_PER_BUFFS" value="@{PER_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">CHA:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_CHA_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_CHA_BUFFS" value="@{CHA_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">ATC:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_ATKCAC_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_ATKCAC_BUFFS" value="@{ATKCAC_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">ATD:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_ATKTIR_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_ATKTIR_BUFFS" value="@{ATKTIR_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">PSYInf.:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_PSYINFLU_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_PSYINFLU_BUFFS" value="@{PSYINFLU_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">PSYInt.:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_PSYINTUI_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_PSYINTUI_BUFFS" value="@{PSYINTUI_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">INIT:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_INIT_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_INIT_BUFFS" value="@{INIT_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">DEF:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_DEF_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_DEF_BUFFS" value="@{DEF_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">DEFPsy:</td>
<td style="width: 90%;"><input class="sheet-buff" type="text" name="attr_DEP_BUFF_LIST" placeholder="<Type> : <Valeur>; <Type> <Valeur>..." /></td>
<td style="width: 5%;"><input class="sheet-buff" type="number" name="attr_DEP_BUFFS" value="@{DEP_BUFF}" disabled /></td>
</tr>
<tr>
<td style="width: 5%;">PV:</td>
<td style="width: 90%;">
<input class="sheet-buff" type="text" name="attr_PV_BUFF_LIST"
placeholder="<Type> : <Valeur>; <Type> <Valeur>..." />
</td>
<td style="width: 5%;">
<input class="sheet-buff" type="number" name="attr_PV_BUFFS" value="@{PV_BUFF}" disabled />
</td>
</tr>
</table>
</div> <!-- FIN BUFFS -->
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
</div>
</div>
<div class="sheet-tab-content sheet-fp2">
<input type="radio" name="attr_tabvaiss" class="sheet-tab sheet-tab1" value="caracs" checked="checked"><span title="Caractéristiques"></span>
<input type="radio" name="attr_tabvaiss" class="sheet-tab sheet-tab2" value="config"><span title="Configuration"></span>
<img class="sheet-imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-tab-content sheet-tab1">
<div>
<!-- Caracs + combat + PV + défense -->
<table>
<tr>
<td style="width:250px; vertical-align: top;">
<!-- Caracs + Chance -->
<table class="sheet-tabsep">
<!-- Caracs -->
<tr>
<td class="sheet-textfat">CARAC.</td>
<td></td>
<td class="sheet-textbase">Valeur</td>
<td class="sheet-textfat">Mod.</td>
<td class="sheet-textbase">Bonus</td>
<td class="sheet-textfat">Test</td>
</tr>
<tr>
<td class="sheet-boxtitre" colspan="2"><button class="sheet-boxtitre" type="roll" name="roll_jet_forv" title="%{jet_forv} Jet de Puissance" value="@(togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Test}} {{name=Salle des Machines (MOT)}} {{carac=[[1d20cs20cf1[Dé] +[[@{FOR_TEST}]][Puissance] +@{POSTE_MOT} ]] }} {{jet=Puissance}} {{desc=Mécano : @{POSTE_MOT_NOM}}}"> FOR</button></td>
<td class="sheet-boxinput"><input type="number" name="attr_FORCE" title="@{FORCE}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_FOR" title="@{FOR}" value="floor((@{FORCE}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_FOR_BONUS" title="@{FOR_BONUS} Bonus au Test" value="@{FOR_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_FOR_TEST" title="@{FOR_TEST}" value="@{FOR}+@{FOR_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre" colspan="2"><button class="sheet-boxtitre" type="roll" name="roll_jet_dexv" title="%{jet_dexv} Jet de Manoeuvrabilit&eacute;" value="@(togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Test}} {{name= Poste de Pilotage (PIL)}} {{carac=[[1d20cs20cf1[Dé] +[[@{DEX_TEST}]][Manoeuvrabilit&eacute;] +@{POSTE_PIL} ]] }} {{jet=Manoeuvrabilit&eacute;}} {{desc=Pilote : @{POSTE_PIL_NOM}}}"> DEX</button></td>
<td class="sheet-boxinput"><input type="number" name="attr_DEXTERITE" title="@{DEXTERITE}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEX" title="@{DEX}" value="floor((@{DEXTERITE}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEX_BONUS" title="@{DEX_BONUS} Bonus au Test" value="@{DEX_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEX_TEST" title="@{DEX_TEST}" value="@{DEX}+@{DEX_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre" colspan="2"><button class="sheet-boxtitre" type="roll" name="roll_jet_conv" title="%{jet_conv} Jet de Coque" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Test}} {{name=Coque}} {{carac=[[1d20cs20cf1[Dé] + [[@{CON_TEST}]][Bonus] ]] }}"> CON</button></td>
<td class="sheet-boxinput"><input type="number" name="attr_CONSTITUTION" title="@{CONSTITUTION}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CON" title="@{CON}" value="floor((@{CONSTITUTION}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CON_BONUS" title="@{CON_BONS} Bonus au Test" value="@{CON_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CON_TEST" title="@{CON_TEST}" value="@{CON}+@{CON_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre" colspan="2"><button class="sheet-boxtitre" type="roll" name="roll_jet_intv" title="%{jet_intv} Jet d'Ordinateurs de Vis&eacute;e" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Test}} {{name=Ordinateur de Visée}} {{carac=[[1d20cs20cf1[Dé] +[[@{INT_TEST}]][Bonus] ]] }}"> INT</button></td>
<td class="sheet-boxinput"><input type="number" name="attr_INTELLIGENCE" title="@{INTELLIGENCE}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INT" title="@{INT}" value="floor((@{INTELLIGENCE}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INT_BONUS" title="@{INT_BONUS} Bonus au Test" value="@{INT_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INT_TEST" title="@{INT_TEST}" value="@{INT}+@{INT_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre" colspan="2"><button class="sheet-boxtitre" type="roll" name="roll_jet_perv" title="%{jet_perv} Jet de Senseurs" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Test}} {{name=Senseurs (SEN)}} {{carac=[[1d20cs20cf1[Dé] +[[@{PER_TEST}]][Senseurs] +@{POSTE_SEN} ]] }} {{jet=Détection}} {{desc=Opérateur : @{POSTE_SEN_NOM}}}"> PER</button></td>
<td class="sheet-boxinput"><input type="number" name="attr_PERCEPTION" title="@{PERCEPTION}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PER" title="@{PER}" value="floor((@{PERCEPTION}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PER_BONUS" title="@{PER_BONUS} Bonus au Test" value="@{PER_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PER_TEST" title="@{PER_TEST}" value="@{PER}+@{PER_BONUS}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre" colspan="2"><button class="sheet-boxtitre" type="roll" name="roll_jet_chav" title="%{jet_chav} Jet de Communications" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Test}} {{name=Communications (CHA)}} {{carac=[[1d20cs20cf1[Dé] + [[@{CHA_TEST}]][Comm.Systèmes] +@{POSTE_ORD} ]] }} {{jet=Ordinateur}} {{desc=Opérateur : @{POSTE_ORD_NOM}}}"> CHA</button></td>
<td class="sheet-boxinput"><input type="number" name="attr_CHARISME" title="@{CHARISME}" value="10" min="0" /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CHA" title="@{CHA}" value="floor((@{CHARISME}-10)/2)" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CHA_BONUS" title="@{CHA_BONUS} Bonus au Test" value="@{CHA_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_CHA_TEST" title="@{CHA_TEST}" value="@{CHA}+@{CHA_BONUS}" disabled /></td>
</tr>
</table> <!-- FIN Caracs -->
<table class="sheet-tabsep" style="margin-top: 20px;">
<!-- Energie -->
<tr>
<td class="sheet-boxtitre" title="Points d'énergie">PE</td>
<td class="sheet-boxinput"><input type="number" name="attr_PEV" value="0" title="@{PEV} Points d'énergie utilisés ou courants" /></td>
<td>/</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PEVBASE" title="@{PEVBASE} Points d'énergie de base" value="@{NIVEAU}" disabled /></td>
<td>+</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PEVDIV" title="@{PEVDIV} Points d'énergie additionnels" value="@{PEV_BUFF}" disabled /></td>
<td>+</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PEVCAR" value="@{FOR}" title="@{PEVCAR} Mod. de puissance (FOR)" disabled /></td>
<td>=</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_PEV_max" value="@{PEVBASE}+@{PEVDIV}+@{PEVCAR}" title="Points d'énergie maximums" disabled /></td>
</tr>
</table> <!-- FIN Energie -->
</td> <!-- FIN Caracs + Chance -->
<td style="width:100%; vertical-align: top;">
<!-- Combat + PV + défense -->
<table>
<tr>
<td style="vertical-align: top;">
<!-- Combat -->
<table class="sheet-tabsep">
<tr>
<td class="sheet-textfat">COMBAT</td>
<td class="sheet-textbase">Base</td>
<td class="sheet-textbase">Mod.</td>
<td class="sheet-textbase">Div.</td>
<td class="sheet-textfat">Total</td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_tirv" title="%{jet_tirv} Jet d'attaque à distance" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=&Agrave; Distance}} {{subtags=Attaque}} {{attaque=[[1d20cs20cf1[Dé] + [[@{ATKTIRV}]][Bonus] ]] }}"> &Agrave; DISTANCE</button></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKTIRV_BASE" value="@{NIVEAU}" title="@{ATKTIRV_BASE} Score de base" disabled /></td>
<td class="sheet-boxinput">
<select class="sheet-carac" name="attr_ATKTIRV_CARAC" size="1" title="@{ATKTIRV_CARAC}">
<option value="@{INT}" selected>INT</option>
</select>
</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKTIRV_DIV" title="@{ATKTIRV_DIV} Bonus divers" value="@{ATKTIRV_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_ATKTIRV" title="@{ATKTIRV}" value="@{ATKTIRV_BASE}+@{ATKTIRV_CARAC}+@{ATKTIRV_DIV}" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre" title="Poste de pilotage (PIL)">Pilotage</td>
<td class="sheet-boxinput" colspan="4">
<input type="text" style="width: 220px;" name="attr_POSTE_PIL_NOM" title="@{POSTE_PIL_NOM}" placeholder="Nom du pilote" />
<input type="number" name="attr_POSTE_PIL_BONUS" title="@{POSTE_PIL_BONUS} Rangs dans la Voie du Pilotage" />
</td>
</tr>
<tr>
<td class="sheet-boxtitre" title="Salle des machines (MOT)">Machines</td>
<td class="sheet-boxinput" colspan="4">
<input type="text" style="width: 220px;" name="attr_POSTE_MOT_NOM" title="@{POSTE_MOT_NOM}" placeholder="Nom du mécanicien" />
<input type="number" name="attr_POSTE_MOT_BONUS" title="@{POSTE_MOT_BONUS} Rangs dans la Voie des Moteurs" />
</td>
</tr>
<tr>
<td class="sheet-boxtitre" title="Console des senseurs (SEN)">Senseurs</td>
<td class="sheet-boxinput" colspan="4">
<input type="text" style="width: 220px;" name="attr_POSTE_SEN_NOM" title="@{POSTE_SEN_NOM}" placeholder="Nom du scantech" />
<input type="number" name="attr_POSTE_SEN_BONUS" title="@{POSTE_SEN_BONUS} Rangs dans la Voie de l'Electronique" />
</td>
</tr>
<tr>
<td class="sheet-boxtitre" title="Console du système (ORD)">Ordinateurs</td>
<td class="sheet-boxinput" colspan="4">
<input type="text" style="width: 220px;" name="attr_POSTE_ORD_NOM" title="@{POSTE_ORD_NOM}" placeholder="Nom de l'infotech" />
<input type="number" name="attr_POSTE_ORD_BONUS" title="@{POSTE_ORD_BONUS} Rangs dans la Voie de l'Electronique" />
</td>
</tr>
<tr>
<td class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_jet_initv" title="%{jet_initv} Initiative" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{name=Initiative}} {{subtags=Combat}} {{carac=[[@{INITV} + @{INIT_VAR}[Dé(s)] &{tracker}]]}}"> INITIATIVE</button></td>
<td>&nbsp;</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INITV_CARAC" title="@{INITV_CARAC}" value="@{DEX}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INITV_PIL" title="@{INITV_PIL} Valeur de DEX du pilote" value="@{INIT_BUFF}" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_INITV" title="@{INITV}" value="[[@{INITV_CARAC}]][Manoeuvrabilité]+[[@{INITV_PIL}]][DEX pilote]" disabled /></td>
</tr>
</table>
</td> <!-- FIN Combat -->
<td style="vertical-align: top;">
<!-- PV -->
<table class="sheet-tabsep">
<tr>
<td class="sheet-textfat" colspan="2">STRUCTURE</td>
</tr>
<tr>
<td class="sheet-boxtitre">DV</td>
<td class="sheet-boxinput">
<select class="sheet-carac" name="attr_DV" size="1" title="@{DV} D&eacute; de Structure">
<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="sheet-boxtitre">PV</td>
<td class="sheet-boxinput"><input type="number" name="attr_PV_max" title="@{PV|max} Points de Structure maximum" value="0" /></td>
</tr>
<tr>
<td class="sheet-boxinput" colspan="2">
<span class="textbase">PV restants</span>&nbsp;
<input type="number" name="attr_PV" title="@{PV} Points de Structure restants" value="0" />
</td>
</tr>
<tr>
<td class="sheet-boxinput" colspan="2">
<span class="textbase">DM temp.</span>&nbsp;
<input type="number" name="attr_DMTEMP" title="@{DMTEMP} Dommages EMP" value="0" />
</td>
</tr>
<tr>
<td class="sheet-boxtitre" title="Boucliers (réduction des dommages)">RD</td>
<td class="sheet-boxinput"><input type="number" name="attr_RD" title="@{RD} Réduction des dommages" value="0" /></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>
</td> <!-- FIN PV -->
</tr>
<tr>
<td colspan="2" style="vertical-align: top;">
<!-- Défense -->
<table class="sheet-tabsep">
<tr>
<td class="sheet-textfat">D&Eacute;FENSES</td>
<td>&nbsp;</td>
<td class="sheet-textbase">Mod. DEX/CON</td>
<td class="sheet-textbase">Pilote</td>
<td class="sheet-textbase">Mod. PER</td>
<td class="sheet-textbase">Scantech</td>
<td class="sheet-textfat">Total</td>
</tr>
<tr>
<td class="sheet-boxtitre">DEF (rapidité)</td>
<td class="sheet-boxinputlight">10+</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFVDEX" value="@{DEX}" title="@{DEFVDEX} Bonus de Manoeuvrabilit&eacute;" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFVPIL" value="@{DEFVPIL_BUFF}" title="@{DEFVPIL} Bonus du Pilote" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFVPER" value="@{PER}" title="@{DEFVPER} Bonus de Senseurs" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFVSEN" value="@{DEFVSEN_BUFF}" title="@{DEFVSEN} Bonus du Scantech" disabled /></td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFRAP" value="10+@{DEFVDEX}+@{DEFVPIL}+@{DEFVPER}+@{DEFVSEN}" title="@{DEFRAP} D&eacute;fense (rapidit&eacute;)" disabled /></td>
</tr>
<tr>
<td class="sheet-boxtitre">DEF (solidité)</td>
<td class="sheet-boxinputlight">10+</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFVCON" value="@{CON}" title="@{DEFVCON} Bonus de Coque" disabled /></td>
<td class="sheet-textbase">&nbsp;</td>
<td class="sheet-textbase">&nbsp;</td>
<td class="sheet-textbase">&nbsp;</td>
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFSOL" value="10+@{DEFVCON}+@{DEFVPER}+@{DEFVSEN}" title="@{DEFSOL} D&eacute;fense (solidit&eacute;)" disabled /></td>
</tr>
</table>
</td>
</tr>
</table>
</td> <!-- FIN Combat + PV + défense -->
</tr>
</table>
</div> <!-- FIN Caracs + combat + PV + défense -->
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div>
<!-- Armes -->
<table class="sheet-tabsep" title="repeating_armesv">
<tr>
<td class="sheet-textfatleft" style="width:155px;">ARMES / ATTAQUES</td>
<td class="sheet-textbase" style="width:140px;">ATTAQUE</td>
<td class="sheet-textbase" style="width:20px;">CRIT.</td>
<td class="sheet-textbase" style="width:185px;">DM</td>
<td class="sheet-textbase">SPÉCIAL</td>
</tr>
</table>
<fieldset class="repeating_armesv">
<div class="attack">
<input class="options-flag" name="attr_armeoptflag" type="checkbox" title="Montrer/cacher les options"><span>y</span>
<div>
<input type="hidden" name="attr_armecan" value="" />
<table class="sheet-tabsep">
<tr>
<td>
<button type="roll" class="sheet-neutre" name="roll_vatk" title="%{repeating_armesv_$N_vatk}" value="@{togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Tir}} {{name=@{armenom}}} {{desc=@{armecan_nom}}} {{text=@{armejetn}}} {{@{armeatt}[[@{armejetd}cs>@{armecrit}cf<@{armeinct}[Dé] + [[@{armeatk}]][Attaque] + @{armecan} + @{armeatkdiv}[Bonus] ]]}} {{@{armedmg}[[@{armedmnbde}d@{armedmde}[Dé DM] + [[@{armedmcar}]][Mod.DM] + @{armedmdiv}[Bonus DM] ]]}} {{special=@{armespec}}}" />
</td>
<td class="sheet-boxinputleft" style="min-width: 140px;">
<input type="text" name="attr_armenom" title="@{armenom}" style="font-weight: bold;" placeholder="Arme/attaque" />
</td>
<td class="sheet-boxinputleft" style="min-width: 135px;">
<input type="checkbox" name="attr_armeatt" title="@{armeatt}" value="attaque=" checked="checked" />
<select class="sheet-carac" style="width: 87px;" name="attr_armeatk" title="@{armeatk}" size="1">
<option value="@{ATKTIRV}" selected>DISTANCE</option>
</select>+<input type="number" style="width:32px;" name="attr_armeatkdiv" value="0" title="@{armeatkdiv} Bonus d'attaque divers" />
</td>
<td class="sheet-boxinputleft" style="text-align: right;">
<input type="number" name="attr_armecrit" style="width:32px;" min="2" max="20" value="20" title="@{armecrit} Seuil de Critique (par défaut 20)" />
</td>
<td class="sheet-boxinputleft">
<input type="checkbox" name="attr_armedmg" title="@{armedmg}" value="degats=" checked="checked" />
<input type="number" style="width:32px;" name="attr_armedmnbde" value="1" title="@{armedmnbde} Nombre de dés de dommage" />
<select class="sheet-carac" style="width:47px;" name="attr_armedmde" size="1" title="@{armedmde} Dé de dommage">
<option value="4">d4</option>
<option value="6" selected>d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>+<select class="sheet-carac" style="width:52px;" name="attr_armedmcar" size="1" title="@{armedmcar} Modificateur aux dommages">
<option value="0">-</option>
<optgroup label="Mod. de base">
<option value="@{FOR}">FOR</option>
<option value="@{DEX}">DEX</option>
<option value="@{CON}">CON</option>
<option value="@{INT}">INT</option>
<option value="@{PER}">PER</option>
<option value="@{CHA}">CHA</option>
</optgroup>
<optgroup label="Mod. de test">
<option value="@{FOR_TEST}" selected>FOR</option>
<option value="@{DEX_TEST}">DEX</option>
<option value="@{CON_TEST}">CON</option>
<option value="@{INT_TEST}">INT</option>
<option value="@{PER_TEST}">PER</option>
<option value="@{CHA_TEST}">CHA</option>
</optgroup>
</select>+<input type="number" style="width:32px;" name="attr_armedmdiv" value="0" title="@{armedmdiv} Bonus de dommage divers" />
</td>
<td class="sheet-boxinputleft" style="width:100%;">
<textarea name="attr_armespec" title="@{armespec}" placeholder="Notes, capacités spéciales, effet ..." title="@{armespec} Notes, capacités spéciales, effet ..."></textarea>
</td>
</tr>
</table>
</div>
<div class="options">
<table class="sheet-tabsep">
<tr>
<td style="width: 18px;">&nbsp;</td>
<td class="sheet-boxinputleft" style="width: 272px;">
<input type="text" name="attr_armejetn" style="width: 255px; font-weight: bold;" placeholder="Nom de l'attaque" title="@{armejetn}" />
<select class="sheet-carac" style="width: 30px;" name="attr_armejetd" size="1" title="@{armejetd} Jet d'attaque : 'Risque' = avec d12, 'Expert' = meilleur de deux d20">
<option value="1d20" selected>Normal</option>
<option value="1d12">Risque (d12)</option>
<option value="2d20kh1">Expert (2 d20)</option>
</select>
</td>
<td class="sheet-boxinputleft" style="width: 32px;">
<input type="number" style="width: 32px;" name="attr_armeinct" min="1" max="19" value="1" title="@{armeinct} Seuil d'incident de tir (par défaut 1)" />
</td>
<td class="sheet-boxinputleft" style="width: 250px;">
<input type="text" style="width: 220px;" name="attr_armecan_nom" title="@{armecan_nom} Nom du canonnier (CAN)" />
<input type="number" style="width: 32px;" name="attr_armecan_bonus" title="@{armecan_bonus} Rang armes lourdes (CAN)" value="0" />
</td>
<td>&nbsp;</td>
</tr>
</table>
</div>
</div>
</fieldset>
</div>
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
</div>
<div class="sheet-tab-content sheet-tab2">
<div class="sheet-row">
<!-- Config -->
<table class="sheet-tabsep">
<tr>
<td style="width: 15%;">
<span class="textbase">Jets</span>&nbsp;
<select class="sheet-carac" style="width: 80px;" name="attr_togm" title="@{togm}">
<option value="" selected>Normaux</option>
<option value="/w gm ">Cachés</option>
</select>
</td>
<td style="width: 20%;">
<span class="textbase">Initiative variable</span>&nbsp;<input type="checkbox" name="attr_INIT_VAR" title="@{INIT_VAR}" value="[[1d6!]]" />
</td>
<td style="width: 25%;"></td>
<td style="width: 20%;"></td>
<td style="width: 20%;"></td>
</tr>
</table>
</div> <!-- FIN Config -->
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-row">
<!-- BUFFS -->
<div class="sheet-textfatleft">BUFFS</div>
<table class="sheet-tabsep">
<tr>
<td style="width: 5%;">FOR:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_FOR_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_FOR_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_FOR_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_FOR_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_FOR_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_FOR_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_FOR_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_FOR_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_FOR_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_FOR_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">DEX:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEX_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_DEX_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEX_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_DEX_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEX_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_DEX_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEX_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_DEX_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEX_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_DEX_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">CON:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CON_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_CON_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CON_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_CON_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CON_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_CON_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CON_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_CON_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CON_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_CON_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">INT:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INT_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_INT_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INT_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_INT_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INT_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_INT_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INT_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_INT_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INT_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_INT_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">PER:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PER_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_PER_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PER_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_PER_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PER_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_PER_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PER_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_PER_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PER_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_PER_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">CHA:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CHA_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_CHA_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CHA_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_CHA_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CHA_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_CHA_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CHA_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_CHA_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_CHA_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_CHA_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">ATD:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_ATKTIRV_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_ATKTIRV_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_ATKTIRV_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_ATKTIRV_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_ATKTIRV_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_ATKTIRV_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_ATKTIRV_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_ATKTIRV_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_ATKTIRV_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_ATKTIRV_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">INIT:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INIT_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_INIT_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INIT_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_INIT_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INIT_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_INIT_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INIT_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_INIT_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_INIT_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_INIT_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">PIL:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVPIL_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVPIL_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVPIL_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVPIL_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVPIL_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVPIL_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVPIL_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVPIL_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVPIL_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVPIL_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">SEN:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVSEN_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVSEN_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVSEN_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVSEN_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVSEN_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVSEN_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVSEN_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVSEN_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_DEFVSEN_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_DEFVSEN_BUFF5" />
</td>
</tr>
<tr>
<td style="width: 5%;">PE:</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PEV_BUFF1_DESC" /><input class="sheet-buff" type="number" name="attr_PEV_BUFF1" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PEV_BUFF2_DESC" /><input class="sheet-buff" type="number" name="attr_PEV_BUFF2" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PEV_BUFF3_DESC" /><input class="sheet-buff" type="number" name="attr_PEV_BUFF3" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PEV_BUFF4_DESC" /><input class="sheet-buff" type="number" name="attr_PEV_BUFF4" />
</td>
<td style="width: 19%;">
<input class="sheet-buff" style="width: 70%;" type="text" name="attr_PEV_BUFF5_DESC" /><input class="sheet-buff" type="number" name="attr_PEV_BUFF5" />
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sheet-tab-content sheet-fp3">
<input type="radio" name="attr_tab_pnj" class="sheet-tab sheet-tab1" value="caracs" checked="checked"><span title="Caractéristiques"></span>
<input type="radio" name="attr_tab_pnj" class="sheet-tab sheet-tab2" value="config"><span title="Configuration"></span>
<img class="sheet-imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-tab-content sheet-tab1">
<div>
<div class="sheet-2colrow">
<div class="sheet-col">
<div class="sheet-row">
<span class="textfatleft">Attributs</span>
</div>
<div class="sheet-3colrow">
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_pnj_for" title="%{pnj_for} Jet de Force" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{name=Force}} {{subtags=Test}} {{carac=[[@{pnj_jetfor}cs20cf1[Dé] + [[@{pnj_for}]][FOR] ]] }}"> FOR</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_for" type="number" title="@{pnj_for}" />
<select class="sheet-carac" style="width: 30px;" name="attr_pnj_jetfor" title="@{pnj_jetfor}">
<option value="1d20" selected>N - Normale</option>
<option value="2d20kh1">S - Supérieure</option>
</select>
</div>
</div>
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_pnj_dex" title="%{pnj_dex} Jet de Dextérité" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{name=Dextérité}} {{subtags=Test}} {{carac=[[@{pnj_jetdex}cs20cf1[Dé] + [[@{pnj_dex}]][DEX] ]] }}"> DEX</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_dex" type="number" title="@{pnj_dex}" />
<select class="sheet-carac" style="width: 30px;" name="attr_pnj_jetdex" title="@{pnj_jetdex}">
<option value="1d20" selected>N - Normale</option>
<option value="2d20kh1">S - Supérieure</option>
</select>
</div>
</div>
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_pnj_con" title="%{pnj_con} Jet de Constitution" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{name=Constitution}} {{subtags=Test}} {{carac=[[@{pnj_jetcon}cs20cf1[Dé] + [[@{pnj_con}]][CON] ]] }}"> CON</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_con" type="number" title="@{pnj_con}" />
<select class="sheet-carac" style="width: 30px;" name="attr_pnj_jetcon" title="@{pnj_jetcon}">
<option value="1d20" selected>N - Normale</option>
<option value="2d20kh1">S - Supérieure</option>
</select>
</div>
</div>
</div>
<div class="sheet-row">&nbsp;</div>
<div class="sheet-3colrow">
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_pnj_int" title="%{pnj_int} Jet d'Intelligence" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{name=Intelligence}} {{subtags=Test}} {{carac=[[@{pnj_jetint}cs20cf1[Dé] + [[@{pnj_int}]][INT] ]] }}"> INT</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_int" type="number" title="@{pnj_int}" />
<select class="sheet-carac" style="width: 30px;" name="attr_pnj_jetint" title="@{pnj_jetint}">
<option value="1d20" selected>N - Normale</option>
<option value="2d20kh1">S - Supérieure</option>
</select>
</div>
</div>
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_pnj_per" title="%{pnj_per} Jet de Perception" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{name=Perception}} {{subtags=Test}} {{carac=[[@{pnj_jetper}cs20cf1[Dé] + [[@{pnj_per}]][PER] ]] }}"> PER</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_per" type="number" title="@{pnj_per}" />
<select class="sheet-carac" style="width: 30px;" name="attr_pnj_jetper" title="@{pnj_jetper}">
<option value="1d20" selected>N - Normale</option>
<option value="2d20kh1">S - Supérieure</option>
</select>
</div>
</div>
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_pnj_cha" title="%{pnj_cha} Jet de Charisme" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{name=Charisme}} {{subtags=Test}} {{carac=[[@{pnj_jetcha}cs20cf1[Dé] + [[@{pnj_cha}]][CHA] ]] }}"> CHA</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_cha" type="number" title="@{pnj_cha}" />
<select class="sheet-carac" style="width: 30px;" name="attr_pnj_jetcha" title="@{pnj_jetcha}">
<option value="1d20" selected>N - Normale</option>
<option value="2d20kh1">S - Supérieure</option>
</select>
</div>
</div>
</div>
<div class="sheet-row">&nbsp;</div>
<div class="sheet-3colrow">
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre"><button class="sheet-boxtitre" type="roll" name="roll_pnj_init" title="%{pnj_init} Jet d'Initiative" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{name=Initiative}} {{subtags=Combat}} {{carac=[[@{pnj_init}[Init.] + @{pnj_init_var}[Dé(s)] &{tracker}]]}}"> Init.</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_init" type="number" title="@{pnj_init}" />
</div>
</div>
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre">DEF / DEP</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_def" type="number" title="@{pnj_def}" />&nbsp;/
<input class="sheet-carac" name="attr_pnj_dep" type="number" title="@{pnj_dep}" />
</div>
</div>
<div class="sheet-col" style="width: 25%;">
<div class="sheet-boxtitre">PV</div>
<div class="sheet-boxinput">
<input class="sheet-carac" name="attr_pnj_pv" type="number" title="@{pnj_pv} PV courants" /> / <input class="sheet-carac" name="attr_pnj_pv_max" type="number" title="@{pnj_pv|max} PV MAX" />
</div>
</div>
</div>
</div>
<div class="sheet-col">
<div class="sheet-row">
<span class="textfatleft">Divers</span>
</div>
<div class="sheet-row">
<textarea name="attr_pnj_divers" style="border: 1px solid; height: 15em;" title="@{pnj_divers}"></textarea>
</div>
</div>
</div>
<div class="sheet-row">&nbsp;</div>
<img class="sheet-imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-row">
<div class="sheet-row">
<table>
<tr>
<td class="textfatleft" style="width: 250px;" title="repeating_pnjatk">Attaques</td>
<td class="textbase" style="width: 55px;">Toucher</td>
<td class="textbase" style="width: 55px;">Crit.</td>
<td class="textbase" style="width: 150px;">DM</td>
<td class="textbase" style="width: 50px;">Portée</td>
<td class="textbase">Spécial</td>
</tr>
</table>
</div>
<fieldset class="repeating_pnjatk">
<table class="sheet-tabsep">
<tr>
<td style="width: 30px;">
<button type="roll" class="sheet-neutre" style="width: 25px;" name="roll_pnjatk" title="%{repeating_pnjatk_$N_pnjatk}" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Attaque}} {{name=@{atknom}}} {{portee=@{atkportee}}} {{@{atkatt}[[@{atkjet}cf1cs>@{atkcrit}[Dé] + [[@{atkbonus}]][Attaque] ]]}} {{@{atkdmg}[[@{atkdmnbde}d@{atkdmde}[Dé DM] + [[@{atkdmbonus}]][Mod.DM] ]]}} {{special=@{atkspec}}}" />
</td>
<td class="sheet-boxinputleft" style="width: 250px;">
<input type="checkbox" name="attr_atkatt" title="@{atkatt} Faire un jet d'attaque pour toucher" value="attaque=" checked="checked" />
<input type="text" class="sheet-carac" style="width: 180px;" name="attr_atknom" title="@{atknom} Nom de l'arme / attaque" />
<select class="sheet-carac" style="width: 30px;" name="attr_atkjet" title="@{atkjet} Jet d'attaque normal (d20) ou expert (meilleur de deux d20)">
<option value="1d20" selected>N Normal</option>
<option value="2d20kh1">E Expert</option>
</select>
<input type="number" class="sheet-carac" style="width: 35px;" name="attr_atkbonus" title="@{atkbonus} Bonus d'attaque" value="0" />
</td>
<td class="sheet-boxinputleft" style="width: 35px;">
<input type="number" class="sheet-carac" style="width: 35px;" name="attr_atkcrit" title="@{atkcrit} Seuil de critique" value="20" />
</td>
<td class="sheet-boxinputleft" style="width: 130px;">
<input type="checkbox" name="attr_atkdmg" title="@{atkdmg} Faire un jet de dommages" value="degats=" checked="checked" />
<input type="number" class="sheet-carac" style="width: 35px;" name="attr_atkdmnbde" title="@{atkdmnbde} Nombre de dés de DM" value="0" />
<select class="sheet-carac" style="width: 45px;" name="attr_atkdmde" title="@{atkdmde} Dé de DM">
<optgroup label="Normaux">
<option value="3">d3</option>
<option value="4">d4</option>
<option value="6" selected>d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</optgroup>
<optgroup label="Sans limite">
<option value="3!">d3</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>
</optgroup>
</select>
+
<input type="number" class="sheet-carac" style="width: 35px;" name="attr_atkdmbonus" title="@{atkdmbonus} Bonus aux DM" value="0" />
</td>
<td class="sheet-boxinputleft" style="width: 35px;">
<input type="text" class="sheet-carac" style="width: 35px;" name="attr_atkportee" title="@{atkportee} Portée" value="" />
</td>
<td class="sheet-boxinputleft">
<textarea class="sheet-carac" name="attr_atkspec" title="@{atkspec} Autres effets"></textarea>
</td>
</tr>
</table>
</fieldset>
</div>
<div class="sheet-row">&nbsp;</div>
<img class="sheet-imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-row">
<div class="sheet-row">
<span class="textfatleft">Capacités</span>
</div>
<fieldset class="repeating_pnjcapas">
<table class="sheet-tabsep">
<tr>
<td style="width: 30px;">
<button type="roll" class="sheet-neutre" style="width: 25px;" name="roll_pnjcapa" title="%{repeating_pnjcapas_$N_pnjcapa}" value="@{pnj_togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Capacité}} {{name=@{capanom}}} {{text=@{capadesc}}}" />
</td>
<td class="sheet-boxinputleft" style="width: 200px;">
<input type="text" class="sheet-carac" style="width: 200px;" name="attr_capanom" title="@{capanom} Nom de la capacité" />
</td>
<td class="sheet-boxinputleft">
<textarea class="sheet-carac" name="attr_capadesc" title="@{capadesc} Description de la capacité"></textarea>
</td>
</tr>
</table>
</fieldset>
</div>
<div class="sheet-row">&nbsp;</div>
<img class="sheet-imghr-up" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
<div class="sheet-row">
<input type="checkbox" class="sheet-block-switch"><span>Importer statblock</span>
<div class="sheet-block-hidden"></div>
<div class="sheet-block-show">
<div class="sheet-2colrow">
<div class="sheet-col">
<textarea class="sheet-boxinputleft" name="attr_statblock" style="height: 10em;" placeholder="Coller ici un statblock copié depuis le PDF"></textarea>
</div>
<div class="sheet-col">
<textarea name="attr_sbresult" style="border: 1px solid; height: 5em;"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-tab-content sheet-tab2">
<div class="sheet-3colrow">
<div class="sheet-col">
<span class="textbase">Jets</span>&nbsp;
<select class="sheet-carac" style="width: 80px;" name="attr_pnj_togm" title="@{pnj_togm}" size="1">
<option value="" selected>Normaux</option>
<option value="/w gm ">Cachés</option>
</select>
</div>
<div class="sheet-col">
<span class="textbase">Initiative variable</span>&nbsp;<input type="checkbox" name="attr_pnj_init_var" title="@{pnj_init_var}" value="[[1d6!]]" />
</div>
</div>
<div class="sheet-col"></div>
</div>
</div>
</div> <!-- FIN FDP -->
<!-- TEMPLATES -->
<rolltemplate class="sheet-rolltemplate-co1">
<div class="sheet-roundtable">
<table>
<tr>
<th colspan="2" style="text-align: center;">{{perso}}</th>
</tr>
<tr>
<td class="subheader">{{subtags}}</td>
<th>{{name}}</th>
</tr>
{{#portee}}
<tr>
<td style="font-size: smaller; text-align: center;" colspan="2">Portée : {{portee}} </td>
</tr>
{{/portee}}
<tr>
<td colspan="2">
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
</td>
</tr>
{{#desc}}
<tr>
<td colspan="2" style="white-space:normal;">
<div class="desc">{{desc}}</div>
</td>
</tr>
{{/desc}}
{{#DV}}
<tr>
<td class="tcat">PV gagnés</td>
<td>{{DV}}</td>
</tr>
{{/DV}}
{{#RECUP}}
<tr>
<td class="tcat">PV récupérés</td>
<td>{{RECUP}}</td>
</tr>
{{/RECUP}}
{{#carac}}
<tr>
{{#jet}}
<td class="tcat">{{jet}} </td>
{{/jet}}
{{^jet}}
<td class="tcat">Jet </td>
{{/jet}}
<td>{{carac}}</td>
</tr>
{{/carac}}
{{#test}}
<tr>
<td colspan="2" style="display: none;">{{test}}</td>
</tr>
{{#rollWasCrit() test}}
<tr>
<td colspan="2" style="color:green;">
<div class="desc"><b>{{test_crit}}</b></div>
</td>
</tr>
{{/rollWasCrit() test}}
{{#rollWasFumble() test}}
<tr>
<td colspan="2" style="color:red;">
<div class="desc"><b>{{test_fumble}}</b></div>
</td>
</tr>
{{/rollWasFumble() test}}
{{/test}}
{{#attaque}}
{{#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>&nbsp;[Incident de tir](~target|incident_tir)
</td>
</tr>
{{/rollWasFumble() attaque}}
<tr>
<td class="tcat">Jet </td>
<td>{{attaque}}</td>
</tr>
{{#degats}}
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td class="tcat">Dégâts </td>
<td>
{{degats}}
{{#rollWasCrit() attaque}}
<span style="color:green;font-weight:bold;"> + {{degats}}</span>
{{/rollWasCrit() attaque}}
{{dmtype}}
</td>
</tr>
{{#degats2}}
<tr>
<td style="text-align: right;">+</td>
<td><span style="color: steelblue;">{{degats2}} {{dm2type}}</span></td>
</tr>
{{/degats2}}
{{/degats}}
{{/attaque}}
{{^attaque}}
{{#degats}}
<tr>
<td class="tcat">Dégâts </td>
<td>{{degats}} {{dmtype}}</td>
</tr>
{{#degats2}}
<tr>
<td style="text-align: right;">+</td>
<td><span style="color: steelblue;">{{degats2}} {{dm2type}}</span></td>
</tr>
{{/degats2}}
{{/degats}}
{{/attaque}}
{{#special}}
<tr>
<td colspan="2" style="white-space:normal;">
<div class="desc">{{special}}</div>
</td>
</tr>
{{/special}}
{{#text}}
<tr>
<td colspan="2" style="white-space:normal; margin: 1px;">
<div class="text">{{text}}</div>
</td>
</tr>
{{/text}}
<tr>
<td colspan="2">
<img class="sheet-imghr" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ChroniquesGalactiques/cog_hr.png" />
</td>
</tr>
</table>
</div>
</rolltemplate>
<!-- FIN TEMPLATES -->
<!-- **** SCRIPTS / SHEET WORKERS -->
<script type="text/worker">
function consoleLog(l, m) {
m = m || '';
if (m !== '') m = ' : ' + m;
console.log('** CO sheetworker' + m + ' <<<');
console.log(l);
console.log('** CO sheetworker' + m + ' >>>');
}
function addTrait(npcObj, traitObj) {
if (traitObj['nom'] !== '' && traitObj['desc'] !== '') {
if (!npcObj['Capas']) npcObj['Capas'] = [];
npcObj['Capas'].push(`${traitObj['nom']}~${traitObj['desc']}`);
traitObj['nom'] = '';
traitObj['desc'] = '';
}
}
function importStatblock(text) {
text = text.replace(/\r/g, '');
text = text.replace(/ \(DM/g, ' DM');
text = text.replace(/ \(RD/g, ' RD');
text = text.replace(/\, /g, ' ');
text = text.replace(/\n[ ]*\+/g, '+');
var npc = {};
var rows = text.split(/\n/);
var capacites = false;
var capacite = { 'nom': '', 'desc': '' };
console.log('** CO sheetworker : parsing text <<<');
rows.forEach(function (row, rownr) {
console.log(row);
if (rownr === 0 && row.toUpperCase().indexOf('NC') === -1) {
npc['character_name'] = row.trim(); // assume first line is name
return;
}
if (!capacites && row.toUpperCase().indexOf('DM') !== -1) { // this is an attack line
row = row.replace(/\)$/g, ''); // handle CG statblocks
if (!npc.Atks) npc.Atks = [];
npc.Atks.push(row);
return;
}
if (capacites) { // start parsing traits
let s = row.indexOf(':');
if (s !== -1) {
addTrait(npc, capacite);
capacite['nom'] = row.substring(0, s - 1).trim();
if (capacite['nom'].indexOf(' RD') !== -1) capacite['nom'] = capacite['nom'].replace(' RD', ' (RD');
capacite['desc'] = row.substring(s + 1).trim();
} else {
capacite['desc'] += ' ' + row.trim();
}
return;
}
if (row.trim().startsWith('---')) {
if (capacites) addTrait(npc, capacite);
capacites = !capacites;
return;
}
row = row.replace(/ \(/g, '('); // strip space before '(
row = row.replace(/très /g, 'très~'); // handle 'très petite' size
row = row.replace(/créature /g, 'PROFIL créature~'); // handle 'créature' mention
var items = row.split(' ');
for (var item = 0; item < items.length - 1; item++) {
if (item % 2 === 0) {
var k = items[item].toUpperCase().replace(/\./g, '');
var v = items[item + 1];
if (v) {
v.replace(/~/g, ' ');
if (v.charAt(v.length - 1) === ')' && v.charAt(0) !== '(') v = v.substring(0, v.length - 1);
} else {
v = '';
}
npc[k] = v;
}
}
});
if (capacites) addTrait(npc, capacite);
console.log('** CO sheetworker : parsing text >>>');
return npc;
}
function processBaseAttributes(universe, pnjObj) {
var result = '';
var pnj_sagorper = '';
var pnj_jetsagorper = '';
var pnj_sagper = 'pnj_per';
var pnj_jetsagper = 'pnj_jetper';
var sagOrPer = pnjObj.PER; //might be undefined
if (universe == 'COF') { // COF uses SAG (Wisdom)
pnj_sagper = 'pnj_sag';
pnj_jetsagper = 'pnj_jetsag';
if (!pnjObj.hasOwnProperty('SAG') && pnjObj.hasOwnProperty('PER')) {
// in case a CG/COC statblock is pasted to COF
sagOrPer = pnjObj.PER;
result = 'Attention : PER trouvé à la place de SAG';
} else {
sagOrPer = pnjObj.SAG;
}
}
if (universe == 'COC' || universe == 'CG') { // CG & COC uses PER (Perception)
pnj_sagper = 'pnj_per';
pnj_jetsagper = 'pnj_jetper';
if (!pnjObj.hasOwnProperty('PER') && pnjObj.hasOwnProperty('SAG')) {
// in case a COF statblock is pasted to CG/COC
sagOrPer = pnjObj.SAG;
result = 'Attention : SAG trouvé à la place de PER';
} else {
sagOrPer = pnjObj.PER;
}
}
var jnor = '1d20';
var jsup = '2d20kh1';
var pnjAttrs = {};
if (pnjObj.hasOwnProperty('character_name')) pnjAttrs['character_name'] = pnjObj.character_name;
delete pnjObj['character_name'];
pnjAttrs.NIVEAU = parseInt(pnjObj.NC) || 0;
delete pnjObj.NC;
pnjAttrs.TAILLE = pnjObj.TAILLE || '';
delete pnjObj.TAILLE;
if (pnjObj.hasOwnProperty('PROFIL')) pnjAttrs.PROFIL = pnjObj.PROFIL;
delete pnjObj.PROFIL;
pnjAttrs.pnj_for = parseInt(pnjObj.FOR.replace('*', ''));
pnjAttrs.pnj_jetfor = pnjObj.FOR.charAt(pnjObj.FOR.length - 1) == '*' ? jsup : jnor;
delete pnjObj.FOR;
pnjAttrs.pnj_dex = parseInt(pnjObj.DEX.replace('*', ''));
pnjAttrs.pnj_jetdex = pnjObj.DEX.charAt(pnjObj.DEX.length - 1) == '*' ? jsup : jnor;
delete pnjObj.DEX;
pnjAttrs.pnj_con = parseInt(pnjObj.CON.replace('*', ''));
pnjAttrs.pnj_jetcon = pnjObj.CON.charAt(pnjObj.CON.length - 1) == '*' ? jsup : jnor;
delete pnjObj.CON;
pnjAttrs.pnj_int = parseInt(pnjObj.INT.replace('*', ''));
pnjAttrs.pnj_jetint = pnjObj.INT.charAt(pnjObj.INT.length - 1) == '*' ? jsup : jnor;
delete pnjObj.INT;
pnjAttrs[pnj_sagper] = parseInt(sagOrPer.replace('*', ''));
pnjAttrs[pnj_jetsagper] = sagOrPer.charAt(sagOrPer.length - 1) == '*' ? jsup : jnor;
delete pnjObj.SAG;
delete pnjObj.PER;
pnjAttrs.pnj_cha = parseInt(pnjObj.CHA.replace('*', ''));
pnjAttrs.pnj_jetcha = pnjObj.CHA.charAt(pnjObj.CHA.length - 1) == '*' ? jsup : jnor;
delete pnjObj.CHA;
pnjAttrs.pnj_init = parseInt(pnjObj.INIT);
delete pnjObj.INIT;
pnjAttrs.pnj_def = parseInt(pnjObj.DEF);
delete pnjObj.DEF;
if (pnjObj.hasOwnProperty('DEP')) {
pnjAttrs.pnj_dep = parseInt(pnjObj.DEP);
delete pnjObj.DEP;
}
pnjAttrs.pnj_pv = parseInt(pnjObj.PV);
pnjAttrs.pnj_pv_max = parseInt(pnjObj.PV);
delete pnjObj.PV;
consoleLog(pnjAttrs, 'setting attributes');
pnjAttrs.statblock = '';
setAttrs(pnjAttrs);
return result;
}
function processAttacks(universe, pnjObj) {
var result = '';
for (var atk = 0; atk < pnjObj.Atks.length; atk++) {
var atkItems = pnjObj.Atks[atk].split(' ');
consoleLog(atkItems, 'attacks found');
if (atkItems[atkItems.length - 1] == 'DM') atkItems.push('-');
var atkAtt = 'attaque=';
var atkNom = '';
var atkBonus = -1;
var atkDM = '';
var atkSpec = '';
var parsed = '';
for (var item = 0; item < atkItems.length; item++) {
if (atkItems[item] == 'DM' && atkNom == '') {
atkNom = parsed;
parsed = 'DM';
continue;
}
if (atkItems[item].charAt(0) == '+' && atkItems[item] != '+' && atkNom == '') {
atkBonus = parseInt(atkItems[item].replace('+', '')) || 0;
atkNom = parsed;
parsed = '';
continue;
}
if (parsed.endsWith('DM')) {
atkDM = atkItems[item];
atkSpec = parsed.replace('DM', '');
parsed = '';
continue;
}
parsed += parsed != '' ? ' ' : '';
parsed += atkItems[item];
}
consoleLog(atkNom + ' ' + atkBonus + ' ' + atkDM + ' ' + atkSpec);
if (atkBonus == -1) atkAtt = '0'; // No attack bonus found, damage only
var atkDmg = 'degats=';
var atkNbDe = 0;
var atkDe = '';
var atkBonusDM = 0;
if (atkDM != '') {
atkDM = atkDM.replace('d', '|');
atkDM = atkDM.replace('+', '|+');
atkDM = atkDM.replace('-', '|-');
var dm = atkDM.split('|');
atkNbDe = parseInt(dm[0]) || 0;
if (atkNbDe == 0) atkDmg = '0'; // No damage dice, attack only
atkDe = dm[1];
if (universe === 'COC') atkDe += '!';
atkBonusDM = parseInt(dm[2]) || 0;
}
if (atkNom != '' && atkNbDe >= 0 && atkDe != '') {
newRowID = generateRowID();
var atkRow = {};
atkRow[`repeating_pnjatk_${newRowID}_atkatt`] = atkAtt;
atkRow[`repeating_pnjatk_${newRowID}_atknom`] = atkNom;
atkRow[`repeating_pnjatk_${newRowID}_atkjet`] = '1d20';
atkRow[`repeating_pnjatk_${newRowID}_atkbonus`] = atkBonus;
atkRow[`repeating_pnjatk_${newRowID}_atkcrit`] = '20';
atkRow[`repeating_pnjatk_${newRowID}_atkdmg`] = atkDmg;
atkRow[`repeating_pnjatk_${newRowID}_atkdmnbde`] = atkNbDe;
atkRow[`repeating_pnjatk_${newRowID}_atkdmde`] = atkDe;
atkRow[`repeating_pnjatk_${newRowID}_atkdmbonus`] = atkBonusDM;
atkSpec += parsed;
atkSpec = atkSpec.replace(/\d+d\d+/g, '[[$&]]'); // search for <numbers>d<numbers> and replace with in-line roll
if (atkSpec != '') atkRow[`repeating_pnjatk_${newRowID}_atkspec`] = atkSpec;
consoleLog(atkRow, 'adding attack');
setAttrs(atkRow);
} else {
result += (result.length > 0 ? '\n' : '') + 'Err: impossible d\'analyser le contenu de "' + pnjObj.Atks[atk] + '"';
}
}
for (let attr of ['ATP(PER)', 'ATP(CHA)']) {
if (pnjObj.hasOwnProperty(attr)) {
newRowID = generateRowID();
let atkRow = {};
atkRow[`repeating_pnjatk_${newRowID}_atkatt`] = atkAtt;
if (attr === 'ATP(PER)') {
atkRow[`repeating_pnjatk_${newRowID}_atknom`] = 'Psy Intuition';
} else if (attr === 'ATP(CHA)') {
atkRow[`repeating_pnjatk_${newRowID}_atknom`] = 'Psy Influence';
} else {
continue;
}
atkRow[`repeating_pnjatk_${newRowID}_atkjet`] = '1d20';
atkRow[`repeating_pnjatk_${newRowID}_atkbonus`] = parseInt(pnjObj[attr]);
atkRow[`repeating_pnjatk_${newRowID}_atkcrit`] = '20';
atkRow[`repeating_pnjatk_${newRowID}_atkdmg`] = '0';
atkRow[`repeating_pnjatk_${newRowID}_atkdmnbde`] = 0;
atkRow[`repeating_pnjatk_${newRowID}_atkdmde`] = '';
atkRow[`repeating_pnjatk_${newRowID}_atkdmbonus`] = 0;
consoleLog(atkRow, 'adding attack');
setAttrs(atkRow);
delete pnjObj[attr];
}
}
return result;
}
function processTraits(universe, pnjObj) {
let result = '';
for (let capa of pnjObj['Capas']) {
let capacite = capa.split('~')
if (capacite.length == 2) {
let name = capacite[0] || '';
let desc = capacite[1] || '';
if (name !== '' && desc !== '') {
newRowID = generateRowID();
let capaRow = {};
capaRow[`repeating_pnjcapas_${newRowID}_capanom`] = name;
desc = desc.replace(/\d+d\d+[+-]*\d*/g, '{{$&}}'); // search for <numbers>d<numbers>+/-<number>
desc = desc.replace(/\[\d+d\d+[+-]*\d*\]/g, '{$&}'); // search for [<numbers>d<numbers>+/-<number>]
desc = desc.replace(/\[{{/g, '[[');
desc = desc.replace(/}}\]/g, ']]');
desc = desc.replace(/{{/g, '[[');
desc = desc.replace(/}}/g, ']]');
capaRow[`repeating_pnjcapas_${newRowID}_capadesc`] = desc;
consoleLog(capaRow, 'adding trait');
setAttrs(capaRow);
}
} else {
result += (result.length > 0 ? '\n' : '') + 'Err: impossible d\'analyser le contenu de "' + capacite + '"';
}
}
return result;
}
function buildCaracs() {
getAttrs([
'FORCE', 'DEXTERITE', 'CONSTITUTION', 'INTELLIGENCE', 'PERCEPTION', 'CHARISME', 'NIVEAU',
'RANG_VOIE1', 'RANG_VOIE2', 'RANG_VOIE3', 'RANG_VOIE4', 'RANG_VOIE5', 'RANG_VOIE6', 'RANG_VOIE7', 'RANG_VOIE8', 'RANG_VOIE9',
'voie1nom', 'voie2nom', 'voie3nom', 'voie4nom', 'voie5nom', 'voie6nom', 'voie7nom', 'voie8nom', 'voie9nom'
], function (values) {
let caracs = {
FOR: 0,
DEX: 0,
CON: 0,
INT: 0,
PER: 0,
CHA: 0
};
for (let car in values) {
let vcar = values[car];
if (vcar && !isNaN(vcar)) vcar = parseInt(vcar) || 0;
let mod = car.substring(0, 3);
if (caracs.hasOwnProperty(mod)) caracs[mod] = Math.floor((vcar - 10) / 2);
if (car.startsWith('RANG_')) {
if (!caracs.hasOwnProperty('rangs')) caracs.rangs = [0, 0, 0, 0, 0, 0, 0, 0, 0];
let voie = parseInt(car.substring(car.length - 1)) || 0;
if (voie > 0) caracs.rangs[voie - 1] = vcar;
} else if (car.startsWith('voie') && car.endsWith('nom')) {
if (!caracs.hasOwnProperty('voies')) caracs.voies = ['', '', '', '', '', '', '', '', ''];
let voie = parseInt(car.substring(4, 5)) || 0;
if (voie > 0 && vcar) caracs.voies[voie - 1] = vcar.toUpperCase();
} else {
caracs[car] = vcar;
}
}
setAttrs({
CARACS: JSON.stringify(caracs)
});
});
}
on('sheet:opened', function () {
// **** Gestion transition de version
getAttrs(["VERSION"], function (values) {
var verfdp = parseFloat(values.VERSION) || 0;
if (verfdp === 0) {
// Version 1.6 vers 1.7
getAttrs(["FOR_SUP", "DEX_SUP", "CON_SUP", "INT_SUP", "PER_SUP", "CHA_SUP"], function (jets) {
var sfor, sdex, scon, sint, sper, 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.PER_SUP == "2") {
sper = "@{JETSUP}";
} else {
sper = "@{JETNORMAL}";
}
if (jets.CHA_SUP == "2") {
scha = "@{JETSUP}";
} else {
scha = "@{JETNORMAL}";
}
setAttrs({
FOR_SUP: sfor,
DEX_SUP: sdex,
CON_SUP: scon,
INT_SUP: sint,
PER_SUP: sper,
CHA_SUP: scha,
VERSION: "2.0"
});
});
}
if (verfdp < 3) { // version 2.0 > 3.0
getAttrs(['UNIVERS', 'FOR_BONUS', 'DEX_BONUS', 'CON_BONUS', 'INT_BONUS', 'PER_BONUS', 'CHA_BONUS', 'ATKCAC_DIV', 'ATKTIR_DIV', 'ATKMAG_DIV', 'ATKMEN_DIV', 'PSYINTUI_DIV', 'PSYINFLU_DIV', 'INIT_DIV', 'DEFDIV', 'DEPDIV'], function (values) {
var for_bonus_desc = '',
for_bonus = parseInt(values.FOR_BONUS) || 0;
if (for_bonus !== 0) for_bonus_desc = 'Bonus FOR';
var dex_bonus_desc = '',
dex_bonus = parseInt(values.DEX_BONUS) || 0;
if (dex_bonus !== 0) dex_bonus_desc = 'Bonus DEX';
var con_bonus_desc = '',
con_bonus = parseInt(values.CON_BONUS) || 0;
if (con_bonus !== 0) con_bonus_desc = 'Bonus CON';
var int_bonus_desc = '',
int_bonus = parseInt(values.INT_BONUS) || 0;
if (int_bonus !== 0) int_bonus_desc = 'Bonus INT';
var per_bonus_desc = '',
per_bonus = parseInt(values.PER_BONUS) || 0;
if (per_bonus !== 0) per_bonus_desc = 'Bonus PER';
var cha_bonus_desc = '',
cha_bonus = parseInt(values.CHA_BONUS) || 0;
if (cha_bonus !== 0) cha_bonus_desc = 'Bonus CHA';
var atkcac_bonus_desc = '',
atkcac_div = parseInt(values.ATKCAC_DIV) || 0;
if (atkcac_div !== 0) atkcac_bonus_desc = 'Bonus ATC';
var atktir_bonus_desc = '',
atktir_div = parseInt(values.ATKTIR_DIV) || 0;
if (atktir_div !== 0) atktir_bonus_desc = 'Bonus ATD';
var atkmag_bonus_desc = '',
atkmag_div = parseInt(values.ATKMAG_DIV) || 0;
if (atkmag_div !== 0) atkmag_bonus_desc = 'Bonus MAG';
var atkmen_bonus_desc = '',
atkmen_div = parseInt(values.ATKMEN_DIV) || 0;
if (atkmen_div !== 0) atkmen_bonus_desc = 'Bonus MEN';
var psyinflu_bonus_desc = '',
psyinflu_div = parseInt(values.ATKPSYINFLU_DIV) || 0;
if (psyinflu_div !== 0) psyinflu_bonus_desc = 'Bonus Psy Inf.';
var psyintui_bonus_desc = '',
psyintui_div = parseInt(values.ATKPSYINTUI_DIV) || 0;
if (psyintui_div !== 0) psyintui_bonus_desc = 'Bonus Psy Int.';
var init_bonus_desc = '',
init_div = parseInt(values.INIT_DIV) || 0;
if (init_div !== 0) init_bonus_desc = 'Bonus Init.';
var def_bonus_desc = '',
defdiv = parseInt(values.DEFDIV) || 0;
if (defdiv !== 0) def_bonus_desc = 'Bonus DEF';
var dep_bonus_desc = '',
depdiv = parseInt(values.DEPDIV) || 0;
if (depdiv !== 0) dep_bonus_desc = 'Bonus DEP';
setAttrs({
FOR_BUFF1_DESC: for_bonus_desc,
FOR_BUFF1: for_bonus,
FOR_BUFF: for_bonus,
DEX_BUFF1_DESC: dex_bonus_desc,
DEX_BUFF1: dex_bonus,
DEX_BUFF: dex_bonus,
CON_BUFF1_DESC: con_bonus_desc,
CON_BUFF1: con_bonus,
CON_BUFF: con_bonus,
INT_BUFF1_DESC: int_bonus_desc,
INT_BUFF1: int_bonus,
INT_BUFF: int_bonus,
PER_BUFF1_DESC: per_bonus_desc,
PER_BUFF1: per_bonus,
PER_BUFF: per_bonus,
CHA_BUFF1_DESC: cha_bonus_desc,
CHA_BUFF1: cha_bonus,
CHA_BUFF: cha_bonus,
ATKCAC_BUFF1_DESC: atkcac_bonus_desc,
ATKCAC_BUFF1: atkcac_div,
ATKCAC_BUFF: atkcac_div,
ATKTIR_BUFF1_DESC: atktir_bonus_desc,
ATKTIR_BUFF1: atktir_div,
ATKTIR_BUFF: atktir_div,
ATKMAG_BUFF1_DESC: atkmag_bonus_desc,
ATKMAG_BUFF1: atkmag_div,
ATKMAG_BUFF: atkmag_div,
ATKMEN_BUFF1_DESC: atkmen_bonus_desc,
ATKMEN_BUFF1: atkmen_div,
ATKMEN_BUFF: atkmen_div,
PSYINFLU_BUFF1_DESC: psyinflu_bonus_desc,
PSYINFLU_BUFF1: psyinflu_div,
PSYINFLU_BUFF: psyinflu_div,
PSYINTUI_BUFF1_DESC: psyintui_bonus_desc,
PSYINTUI_BUFF1: psyintui_div,
PSYINTUI_BUFF: psyintui_div,
INIT_BUFF1_DESC: init_bonus_desc,
INIT_BUFF1: init_div,
INIT_BUFF: init_div,
DEF_BUFF1_DESC: def_bonus_desc,
DEF_BUFF1: defdiv,
DEF_BUFF: defdiv,
DEP_BUFF1_DESC: dep_bonus_desc,
DEP_BUFF1: depdiv,
DEP_BUFF: depdiv,
ATKTIRV_BUFF: 0,
VERSION: '3.0'
});
});
}
if (verfdp < 3.4) { // version 3.3 > 3.4
getAttrs(['TRAITS'], function (values) {
var traits = values.TRAITS.split(':');
if (traits.length >= 2) {
newRowID = generateRowID();
var traitRow = {};
traitRow['repeating_traits_' + newRowID + '_traitnom'] = traits[0].trim();
traitRow['repeating_traits_' + newRowID + '_traittype'] = 'Race / Humain';
traits.splice(0, 1);
traitRow['repeating_traits_' + newRowID + '_traitdesc'] = traits.join(':').trim();
setAttrs(traitRow);
setAttrs({ VERSION: '3.4' });
}
});
}
if (verfdp < 3.5) { // version 3.4 > 3.5
const attrList = ['FOR', 'DEX', 'CON', 'INT', 'PER', 'CHA', 'ATKCAC', 'ATKTIR', 'PSYINFLU', 'PSYINTUI', 'INIT', 'DEF', 'DEP'];
for (let a = 0; a < attrList.length; a++) {
let attr = attrList[a];
let attrDesc = [];
let attrVals = [];
for (let b = 1; b < 6; b++) {
attrDesc.push(`${attr}_BUFF${b}_DESC`);
attrVals.push(`${attr}_BUFF${b}`);
}
getAttrs([attr, ...attrDesc, ...attrVals], function (values) {
let attr = Object.keys(values)[0];
let buffList = [];
for (let b = 1; b < 6; b++) {
let desc = values[`${attr}_BUFF${b}_DESC`] || '';
let buff = values[`${attr}_BUFF${b}`] || 0;
if (desc !== '') buffList.push(`${desc} : ${buff}`);
}
let buffAttr = {};
buffAttr[`${attr}_BUFF_LIST`] = buffList.join(';');
setAttrs(buffAttr);
});
}
setAttrs({ VERSION: '3.5' });
}
});
// Activer Buffs PSY ou de vaisseau
getAttrs(['UNIVERS', 'type_personnage', 'PE_ONCE', 'FOR_BUFF1_DESC', 'DEX_BUFF1_DESC', 'INT_BUFF1_DESC', 'PER_BUFF1_DESC', 'CHA_BUFF1_DESC', 'ATKTIRV_BUFF1_DESC', 'INIT_BUFF1_DESC', 'DEFVPIL_BUFF1_DESC', 'DEFVPIL_BUFF2_DESC', 'DEFVSEN_BUFF1_DESC', 'DEFVSEN_BUFF2_DESC'], function (values) {
if (values.UNIVERS == 'CG') {
if (values.type_personnage == 'vaisseau' && values.PE_ONCE !== '') {
var for_buff_desc = (values.FOR_BUFF1_DESC) || values.PE_ONCE;
var dex_buff_desc = (values.DEX_BUFF1_DESC) || values.PE_ONCE;
var int_buff_desc = (values.INT_BUFF1_DESC) || values.PE_ONCE;
var per_buff_desc = (values.PER_BUFF1_DESC) || values.PE_ONCE;
var cha_buff_desc = (values.CHA_BUFF1_DESC) || values.PE_ONCE;
var atktirv_buff_desc = (values.ATKTIRV_BUFF1_DESC) || values.PE_ONCE;
var init_buff_desc = (values.INIT_BUFF1_DESC) || 'Valeur DEX pilote';
var defvpil_buff1_desc = (values.DEFVPIL_BUFF1_DESC) || 'Mod. DEX Pilote';
var defvpil_buff2_desc = (values.DEFVPIL_BUFF2_DESC) || 'Rang Pilotage';
var defvsen_buff1_desc = (values.DEFVSEN_BUFF1_DESC) || 'Mod. INT Scantech';
var defvsen_buff2_desc = (values.DEFVSEN_BUFF2_DESC) || 'Rang Electronique';
setAttrs({
FOR_BUFF1_DESC: for_buff_desc,
DEX_BUFF1_DESC: dex_buff_desc,
INT_BUFF1_DESC: int_buff_desc,
PER_BUFF1_DESC: per_buff_desc,
CHA_BUFF1_DESC: cha_buff_desc,
ATKTIRV_BUFF1_DESC: atktirv_buff_desc,
INIT_BUFF1_DESC: init_buff_desc,
DEFVPIL_BUFF1_DESC: defvpil_buff1_desc,
DEFVPIL_BUFF2_DESC: defvpil_buff2_desc,
DEFVSEN_BUFF1_DESC: defvsen_buff1_desc,
DEFVSEN_BUFF2_DESC: defvsen_buff2_desc,
PE_ONCE: '',
type_personnage: 'vaisseau'
});
}
}
});
// MAJ Version, LAST_PV, message
getAttrs(['verfdp', 'PV'], function (values) {
setAttrs({
VERSION: values.verfdp,
LAST_PV: values.PV,
INFOMSG: ' '
});
});
// ARMURE_MALUS
getAttrs(['ARMURE_MALUS'], function (value) {
if (!value.ARMURE_MALUS) setArmorMalus();
});
// RANG_VOIE#
for (let voie = 1; voie <= 9; voie++) {
setRank(voie.toString());
}
// seuil_enc (if needed)
getAttrs(['seuil_enc', 'FORCE'], function (values) {
let seuil_enc = parseInt(values.seuil_enc) || 0;
if (seuil_enc === 0) {
setAttrs({
seuil_enc: parseInt(values.FORCE) || 0
});
}
});
// encombrement (refresh)
encumbrance();
// CARACS
buildCaracs();
});
on('change:character_name', function () {
getAttrs(['character_name'], function (values) {
var charName = values.character_name;
charName = charName.replace(/ "/g, ' «');
charName = charName.replace(/" /g, '» ');
setAttrs({ character_name: charName })
});
});
/**
* Buffs de personnage
*/
function buffValue(v, caracs) {
v = v.trim();
let bm = 1;
if (v.startsWith('-')) bm = -1;
if (v.indexOf('2[') !== -1) {
v = v.replace('2[', '[');
bm *= 2;
}
v = v.replace(/[\+\-\[\]]/g, '');
consoleLog(v);
if (isNaN(v)) {
// c'est une référence d'attribut
if (v.toUpperCase().startsWith('VOIE')) {
// c'est un rang dans une voie identifiée par son no
let rv = parseInt(v.substring(4).trim()) || 0;
if (rv > 0) bv = caracs.rangs[rv - 1];
} else if (v.toUpperCase().startsWith('RANG')) {
// c'est un rang dans une voie identifiée par son nom
let vname = v.substring(5).toUpperCase();
let vfound = -1;
for (let vn = 0; vn < caracs.voies.length; vn++) {
if (caracs.voies[vn] === vname) {
vfound = vn;
break;
}
}
if (vfound > -1) bv = caracs.rangs[vfound];
} else {
// c'est un mod. de carac
bv = caracs[v];
}
} else { // c'est une valeur fixe
bv = v;
}
return parseInt(bv) * bm || 0;
}
function parseBuff(buffAttr) {
getAttrs([`${buffAttr}_BUFF_LIST`, 'CARACS'], function (v) {
let buffAttr = Object.keys(v)[0];
let buffList = v[buffAttr];
let caracs = JSON.parse(v.CARACS);
let buffSum = 0;
if (buffList && buffList !== '') {
let buffs = buffList.split(';');
for (let b = 0; b < buffs.length; b++) {
let buff = buffs[b];
if (buff && buff !== '') {
let delim = (buff.indexOf(':') !== -1) ? ':' : ' ';
let buffv = buff.split(delim);
let buffName = '';
let buffVal = 0;
if (delim === ' ') {
buffVal = buffValue(buffv[buffv.length - 1], caracs);
buffv.pop();
buffName = buffv.join(' ').trim();
} else {
buffName = buffv[0].trim();
buffVal = buffValue(buffv[1], caracs);
}
consoleLog(buffName);
if (!buffName.startsWith('-')) buffSum += buffVal;
}
}
}
let attr = {};
attr[buffAttr.replace('_LIST', '')] = buffSum;
setAttrs(attr);
});
}
function updateBuffs(e) {
const caracs = ['FOR', 'DEX', 'CON', 'INT', 'PER', 'CHA'];
let mod = e.sourceAttribute.substring(0, 3).toUpperCase();
if (!caracs.includes(mod)) return;
const attrs = [...caracs, 'ATKCAC', 'ATKTIR', 'PSYINTUI', 'PSYINFLU', 'INIT', 'DEF', 'DEP'];
for (let a = 0; a < attrs.length; a++) {
attrs[a] = `${attrs[a]}_BUFF_LIST`;
}
attrs.unshift(mod);
getAttrs(attrs, function (values) {
let props = Object.keys(values);
for (let p = 1; p < props.length; p++) {
if (props[p].startsWith(props[0])) continue;
if (values[props[p]].indexOf(`[${props[0]}]`) !== -1) parseBuff(props[p].replace('_BUFF_LIST', ''));
}
});
}
on([
'change:force',
'change:dexterite',
'change:constitution',
'change:intelligence',
'change:perception',
'change:charisme',
'change:niveau',
'change:defarmureon',
'change:voie1nom',
'change:voie2nom',
'change:voie3nom',
'change:voie4nom',
'change:voie5nom',
'change:voie6nom',
'change:voie7nom',
'change:voie8nom',
'change:voie9nom',
'change:rang_voie1',
'change:rang_voie2',
'change:rang_voie3',
'change:rang_voie4',
'change:rang_voie5',
'change:rang_voie6',
'change:rang_voie7',
'change:rang_voie8',
'change:rang_voie9',
].join(' '), function (eventInfo) {
// on reconstruit d'abord l'attribut caché CARACS...
buildCaracs();
// ... puis on met à jour les buffs qui contiennent une référence à la caractéristique modifiée
updateBuffs(eventInfo);
});
on('change:for_buff_list', function () {
parseBuff('FOR');
});
on('change:dex_buff_list', function () {
parseBuff('DEX');
});
on('change:con_buff_list', function () {
parseBuff('CON');
});
on('change:int_buff_list', function () {
parseBuff('INT');
});
on('change:per_buff_list', function () {
parseBuff('PER');
});
on('change:cha_buff_list', function () {
parseBuff('CHA');
});
on('change:atkcac_buff_list', function () {
parseBuff('ATKCAC');
});
on('change:atktir_buff_list', function () {
parseBuff('ATKTIR');
});
on('change:psyinflu_buff_list', function () {
parseBuff('PSYINFLU');
});
on('change:psyintui_buff_list', function () {
parseBuff('PSYINTUI');
});
on('change:init_buff_list', function () {
parseBuff('INIT');
});
on('change:def_buff_list', function () {
parseBuff('DEF');
});
on('change:dep_buff_list', function () {
parseBuff('DEP');
});
on('change:pv_buff_list', function () {
parseBuff('PV');
});
/**
* Buffs de vaisseau
*/
function attrBuff(attr) {
let attrs = [];
for (let b = 1; b < 6; b++) {
attrs.push(`${attr}_BUFF${b}`);
}
return attrs;
}
function setBuff(v, buffAttr) {
let buffVal = 0;
for (let attr = 1; attr < 6; attr++) {
buffVal += parseInt(v[`${buffAttr}_BUFF${attr}`]) || 0;
}
let buff = {};
buff[`${buffAttr}_BUFF`] = buffVal;
setAttrs(buff);
}
on([
'change:for_buff1',
'change:for_buff2',
'change:for_buff3',
'change:for_buff4',
'change:for_buff5'
].join(' '), function () {
getAttrs(attrBuff('FOR'), function (values) {
setBuff(values, 'FOR');
});
});
on([
'change:dex_buff1',
'change:dex_buff2',
'change:dex_buff3',
'change:dex_buff4',
'change:dex_buff5'
].join(' '), function () {
getAttrs(attrBuff('DEX'), function (values) {
setBuff(values, 'DEX');
});
});
on([
'change:con_buff1',
'change:con_buff2',
'change:con_buff3',
'change:con_buff4',
'change:con_buff5'
].join(' '), function () {
getAttrs(attrBuff('CON'), function (values) {
setBuff(values, 'CON');
});
});
on([
'change:int_buff1',
'change:int_buff2',
'change:int_buff3',
'change:int_buff4',
'change:int_buff5'
].join(' '), function () {
getAttrs(attrBuff('INT'), function (values) {
setBuff(values, 'INT');
});
});
on([
'change:per_buff1',
'change:per_buff2',
'change:per_buff3',
'change:per_buff4',
'change:per_buff5'
].join(' '), function () {
getAttrs(attrBuff('PER'), function (values) {
setBuff(values, 'PER');
});
});
on([
'change:cha_buff1',
'change:cha_buff2',
'change:cha_buff3',
'change:cha_buff4',
'change:cha_buff5'
].join(' '), function () {
getAttrs(attrBuff('CHA'), function (values) {
setBuff(values, 'CHA');
});
});
on([
'change:atktirv_buff1',
'change:atktirv_buff2',
'change:atktirv_buff3',
'change:atktirv_buff4',
'change:atktirv_buff5'
].join(' '), function () {
getAttrs(attrBuff('ATKTIRV'), function (values) {
setBuff(values, 'ATKTIRV');
});
});
on([
'change:defvpil_buff1',
'change:defvpil_buff2',
'change:defvpil_buff3',
'change:defvpil_buff4',
'change:defvpil_buff5'
].join(' '), function () {
getAttrs(attrBuff('DEFVPIL'), function (values) {
setBuff(values, 'DEFVPIL');
});
});
on([
'change:defvsen_buff1',
'change:defvsen_buff2',
'change:defvsen_buff3',
'change:defvsen_buff4',
'change:defvsen_buff5'
].join(' '), function () {
getAttrs(attrBuff('DEFVSEN'), function (values) {
setBuff(values, 'DEFVSEN');
});
});
on([
'change:pev_buff1',
'change:pev_buff2',
'change:pev_buff3',
'change:pev_buff4',
'change:pev_buff5'
].join(' '), function () {
getAttrs(attrBuff('PEV'), function (values) {
setBuff(values, 'PEV');
});
});
on('change:blessure', function () {
getAttrs(['BLESSURE'], function (values) {
var etatde = (values.BLESSURE == '1') ? '12' : '20';
setAttrs({
ETATDE: etatde
});
});
});
on('change:poisse', function () {
getAttrs(['POISSE'], function (values) {
var jetn = (values.POISSE == '1') ? '2d@{ETATDE}kl1' : '1d@{ETATDE}';
var jets = (values.POISSE == '1') ? '1d@{ETATDE}' : '2d@{ETATDE}kh1';
var jetsh = (values.POISSE == '1') ? '2d@{ETATDE}kh1' : '{2d@{ETATDE}kh1, 0d20+10}kh1';
var jetr = (values.POISSE == '1') ? '2d12kl1' : '1d12';
setAttrs({
JETNORMAL: jetn,
JETSUP: jets,
JETSUPHERO: jetsh,
JETRISQUE: jetr,
JDEX: jetn,
JDEXSUP: jets,
JDEXSUPHERO: jetsh,
JDEXRISQUE: jetr
});
});
});
on('change:statblock', function (eventInfo) {
if (eventInfo.newValue === '') return;
getAttrs(['UNIVERS', 'statblock'], function (values) {
var messages = '';
var pnjObj = importStatblock(values.statblock);
if (pnjObj) {
consoleLog(pnjObj, 'NPC object');
messages = processBaseAttributes(values.UNIVERS, pnjObj);
if (pnjObj.hasOwnProperty('Atks')) {
var result = processAttacks(values.UNIVERS, pnjObj);
if (result !== '' && messages !== '') result = '\n' + result;
messages += result;
delete pnjObj.Atks;
}
if (pnjObj.hasOwnProperty('Capas')) {
result = processTraits(values.UNIVERS, pnjObj);
if (result != '' && messages != '') result = '\n' + result;
messages += result;
delete pnjObj['Capas'];
}
// Other attributes go to DIVERS field
var divers = '';
var otherAttrs = Object.keys(pnjObj);
consoleLog(otherAttrs, 'additional data');
if (otherAttrs.length > 0) {
for (var other = 0; other < otherAttrs.length; other++) {
var k = otherAttrs[other];
divers += k + ' ' + pnjObj[k] + '\n';
}
}
setAttrs({
pnj_divers: divers,
sbresult: messages
});
}
});
});
const npcAtkAttribs = [
'atkatt',
'atknom',
'atkjet',
'atkbonus',
'atkcrit',
'atkdmg',
'atkdmnbde',
'atkdmde',
'atkdmbonus',
'atkportee',
'atkspec'
]
function convertToPC() {
getAttrs([
'pnj_for', 'pnj_dex', 'pnj_con', 'pnj_int', 'pnj_per', 'pnj_cha',
'pnj_jetfor', 'pnj_jetdex', 'pnj_jetcon', 'pnj_jetint', 'pnj_jetper', 'pnj_jetcha',
'pnj_init', 'pnj_def', 'pnj_dep', 'pnj_pv', 'pnj_pv_max'
], function (values) {
let attrs = {};
for (let attr of ['FORCE', 'DEXTERITE', 'CONSTITUTION', 'INTELLIGENCE', 'PERCEPTION', 'CHARISME']) {
let attrv = parseInt(values[`pnj_${attr.substring(0, 3).toLowerCase()}`]) || 0;
attrs[attr] = 10 + (2 * attrv);
if (attr === 'DEXTERITE') {
let init = parseInt(values.pnj_init) || 0;
if (init === attrv + 1) {
attrs[attr]++;
} else {
attrs['INIT_BUFF_LIST'] = 'Bonus Init.';
attrs['INIT_BUFF'] = init - attrs[attr];
}
let defb = 10 + attrv;
let def = parseInt(values.pnj_def) || 0;
if (def !== defb) {
attrs['DEF_BUFF_LIST'] = 'Bonus DEF';
attrs['DEF_BUFF'] = def - defb;
}
attrs['DEX_SUP'] = (values['pnj_jetdex'] === '2d20kh1') ? '@{JDEXSUP}' : '@{JDEX}';
} else if (attr === 'CHARISME') {
let depb = 10 + attrv;
let dep = parseInt(values.pnj_dep) || 0;
if (dep !== depb) {
attrs['DEP_BUFF_LIST'] = 'Bonus DEP';
attrs['DEP_BUFF'] = dep - depb;
}
} else {
attrs[`${attr.substring(0, 3)}_SUP`] = (values[`pnj_jet${attr.substring(0, 3).toLowerCase()}`] === '2d20kh1') ? '@{JETSUP}' : '@{JETNORMAL}';
}
}
attrs['PV'] = parseInt(values.pnj_pv) || 0;
attrs['PV_max'] = parseInt(values.pnj_pv_max) || 0;
getSectionIDs('repeating_armes', function (ids) {
for (let id of ids) {
removeRepeatingRow(`repeating_armes_${id}`);
}
});
getSectionIDs('repeating_pnjatk', function (ids) {
for (let id of ids) {
getAttrs([...npcAtkAttribs.map(attr => `repeating_pnjatk_${id}_${attr}`), 'pnj_for', 'pnj_dex', 'pnj_cha'], function (values) {
consoleLog(values);
let v = {};
for (let attr of npcAtkAttribs) {
v[attr] = values[`repeating_pnjatk_${id}_${attr}`] || '';
}
newRowID = generateRowID();
let atkRow = {};
atkRow[`repeating_armes_${newRowID}_armeatt`] = v['atkatt'];
atkRow[`repeating_armes_${newRowID}_armenom`] = v['atknom'];
let psyint = v['atknom'].toLowerCase().includes('psy intuition');
let psyinf = v['atknom'].toLowerCase().includes('psy influence');
let tohit = parseInt(v['atkbonus']) || 0;
let atk = 0;
let bdm = 0;
if (v['atkportee'] && v['atkportee'] !== '') {
atk = values.pnj_dex || 0;
if (psyint) atk = values.pnj_int || 0;
if (psyinf) atk = values.pnj_cha || 0;
atkRow[`repeating_armes_${newRowID}_armeatk`] = '@{ATKTIR}';
if (psyint) atkRow[`repeating_armes_${newRowID}_armeatk`] = '@{ATKPSYINTUI}';
if (psyinf) atkRow[`repeating_armes_${newRowID}_armeatk`] = '@{ATKPSYINFLU}';
atkRow[`repeating_armes_${newRowID}_armedmcar`] = '0';
} else {
atk = values.pnj_for || 0;
if (psyint) atk = values.pnj_int || 0;
if (psyinf) atk = values.pnj_cha || 0;
bdm = (psyint || psyinf) ? 0 : atk;
atkRow[`repeating_armes_${newRowID}_armeatk`] = '@{ATKCAC}';
if (psyint) atkRow[`repeating_armes_${newRowID}_armeatk`] = '@{ATKPSYINTUI}';
if (psyinf) atkRow[`repeating_armes_${newRowID}_armeatk`] = '@{ATKPSYINFLU}';
atkRow[`repeating_armes_${newRowID}_armedmcar`] = (psyint || psyinf) ? '0' : '@{FOR}';
}
if (tohit !== atk) atkRow[`repeating_armes_${newRowID}_armeatkdiv`] = tohit - atk;
atkRow[`repeating_armes_${newRowID}_armejetd`] = v['atkjet'];
atkRow[`repeating_armes_${newRowID}_armecrit`] = v['atkcrit'];
atkRow[`repeating_armes_${newRowID}_armedmg`] = v['atkdmg'];
atkRow[`repeating_armes_${newRowID}_armedmnbde`] = v['atkdmnbde'];
atkRow[`repeating_armes_${newRowID}_armedmde`] = v['atkdmde'];
let dmdiv = parseInt(v['atkdmbonus']) || 0;
if (dmdiv !== bdm) atkRow[`repeating_armes_${newRowID}_armedmdiv`] = dmdiv - bdm;
atkRow[`repeating_armes_${newRowID}_armeportee`] = v['atkportee'];
atkRow[`repeating_armes_${newRowID}_armespec`] = v['atkspec'];
setAttrs(atkRow);
});
}
});
setAttrs(attrs);
});
}
on('change:type_personnage', function (eventInfo) {
if (eventInfo.previousValue === 'pnj' && eventInfo.newValue === 'pj') convertToPC();
// if (eventInfo.previousValue === 'pj' && eventInfo.newValue === 'pnj') convertToNPC();
getAttrs(['type_personnage'], function (value) {
let attrs = {};
attrs['type_fiche'] = value.type_personnage;
if (value.type_personnage === 'pnj') attrs['pnj_togm'] = '/w gm ';
setAttrs(attrs);
consoleLog(attrs);
});
});
on('change:pv', function () {
getAttrs(['PV', 'PV_max', 'LAST_PV', 'SEUILBG', 'BLESSURE'], function (values) {
var seuilbg = parseInt(values.SEUILBG) || 0;
var max_pv = parseInt(values.PV_max) || 0;
var last_pv = parseInt(values.LAST_PV) || max_pv;
var curr_pv = parseInt(values.PV) || 0;
var blessure = values.BLESSURE;
if (seuilbg > 0) {
if (last_pv - curr_pv >= seuilbg || curr_pv === 0) blessure = '1';
}
setAttrs({
LAST_PV: values.PV,
BLESSURE: blessure
});
});
});
function attrStation(attr) {
return [`POSTE_${attr}_NOM`, `POSTE_${attr}_BONUS`];
}
function setStation(v, attr, fill) {
let attrn = '';
let attrb = '';
if (attr === 'CAN') {
attrn = 'repeating_armesv_armecan_nom';
attrb = 'repeating_armesv_armecan_bonus';
} else {
attrn = `POSTE_${attr}_NOM`;
attrb = `POSTE_${attr}_BONUS`;
}
let station_name = v[attrn] || '';
station_name = station_name != '' ? `@{${station_name}|${fill[0]}}` : '0';
let station_bonus = parseInt(v[attrb]) || 0;
let station = {};
let station_attr = '';
if (attr === 'CAN') {
station_attr = 'repeating_armesv_armecan';
} else {
station_attr = `POSTE_${attr}`;
}
station[station_attr] = `[[${station_name}]][${fill[1]}] + ${station_bonus}[${fill[2]}]`;
setAttrs(station);
}
on([
'change:poste_pil_nom',
'change:poste_pil_bonus'
].join(' '), function () {
getAttrs(attrStation('PIL'), function (values) {
setStation(values, 'PIL', ['DEX', 'DEX pilote', 'Pilotage']);
});
});
on([
'change:poste_mot_nom',
'change:poste_mot_bonus'
].join(' '), function () {
getAttrs(attrStation('MOT'), function (values) {
setStation(values, 'MOT', ['INT', 'INT mécano', 'Moteurs']);
});
});
on([
'change:poste_sen_nom',
'change:poste_sen_bonus'
].join(' '), function () {
getAttrs(attrStation('SEN'), function (values) {
setStation(values, 'SEN', ['INT', 'INT scan', 'Electronique/Investigation']);
});
});
on([
'change:poste_ord_nom',
'change:poste_ord_bonus'
].join(' '), function () {
getAttrs(attrStation('ORD'), function (values) {
setStation(values, 'ORD', ['INT', 'INT info', 'Electronique']);
});
});
on([
'change:repeating_armesv:armecan_nom',
'change:repeating_armesv:armecan_bonus'
].join(' '), function () {
getAttrs(['repeating_armesv_armecan_nom', 'repeating_armesv_armecan_bonus'], function (values) {
setStation(values, 'CAN', ['DEX', 'DEX canonnier', 'Armes lourdes']);
});
});
function attrRanks(voie) {
let attrs = [];
for (let r = 1; r < 6; r++) {
attrs.push(`voie${voie}-${r}`);
}
return attrs;
}
function setRank(voie) {
getAttrs(attrRanks(voie), function (v) {
let vr = 0;
for (let r = 1; r < 6; r++) {
let attr = v[`voie${voie}-${r}`];
if (attr && attr !== '') vr = r;
}
let rank = {};
rank[`RANG_VOIE${voie}`] = vr;
setAttrs(rank);
buildCaracs();
});
}
on([
'change:voie1nom',
'change:voie1-1',
'change:voie1-2',
'change:voie1-3',
'change:voie1-4',
'change:voie1-5'
].join(' '), function () {
setRank('1');
});
on([
'change:voie2nom',
'change:voie2-1',
'change:voie2-2',
'change:voie2-3',
'change:voie2-4',
'change:voie2-5'
].join(' '), function () {
setRank('2');
});
on([
'change:voie3nom',
'change:voie3-1',
'change:voie3-2',
'change:voie3-3',
'change:voie3-4',
'change:voie3-5'
].join(' '), function () {
setRank('3');
});
on([
'change:voie4nom',
'change:voie4-1',
'change:voie4-2',
'change:voie4-3',
'change:voie4-4',
'change:voie4-5'
].join(' '), function () {
setRank('4');
});
on([
'change:voie5nom',
'change:voie5-1',
'change:voie5-2',
'change:voie5-3',
'change:voie5-4',
'change:voie5-5'
].join(' '), function () {
setRank('5');
});
on([
'change:voie6nom',
'change:voie6-1',
'change:voie6-2',
'change:voie6-3',
'change:voie6-4',
'change:voie6-5'
].join(' '), function () {
setRank('6');
});
on([
'change:voie7nom',
'change:voie7-1',
'change:voie7-2',
'change:voie7-3',
'change:voie7-4',
'change:voie7-5'
].join(' '), function () {
setRank('7');
});
on([
'change:voie8nom',
'change:voie8-1',
'change:voie8-2',
'change:voie8-3',
'change:voie8-4',
'change:voie8-5'
].join(' '), function () {
setRank('8');
});
on([
'change:voie9nom',
'change:voie9-1',
'change:voie9-2',
'change:voie9-3',
'change:voie9-4',
'change:voie9-5'
].join(' '), function () {
setRank('9');
});
function setArmorMalus() {
getAttrs(['DEFARMUREON', 'DEFARMUREMALUS'], function (values) {
let armure_on = values.DEFARMUREON || 0;
let armure_malus = values.DEFARMUREMALUS || 0;
setAttrs({
ARMURE_MALUS: armure_on * armure_malus
});
});
}
on([
'change:defarmureon',
'change:defarmuremalus'
].join(' '), function (eventInfo) {
setArmorMalus();
});
on([
'change:repeating_armes:armedm2_de',
'change:repeating_armes:armedm2_desc'
].join(' '), function (eventInfo) {
getAttrs(['repeating_armes_armedm2_de', 'repeating_armes_armedm2_desc'], function (values) {
let dm2_de = values.repeating_armes_armedm2_de || '';
let dm2_desc = values.repeating_armes_armedm2_desc || '';
let dmg2 = '';
if (dm2_desc !== '') dm2_desc = `[${dm2_desc}] `;
if (dm2_de !== '') dmg2 = `[[${dm2_de}${dm2_desc}]]`;
setAttrs({
repeating_armes_armedmg2: dmg2
});
});
});
on('change:repeating_armes:armeportee', function () {
getAttrs(['repeating_armes_armeportee'], function (value) {
let um = '';
if (value.repeating_armes_armeportee.indexOf(' m') !== -1) {
um = ' m';
} else if (value.repeating_armes_armeportee.indexOf('m') !== -1) {
um = 'm';
}
let portee = value.repeating_armes_armeportee;
if (um !== '') portee = portee.replace(um, '');
let portees = parseInt(portee) || 0;
if (portees !== 0) {
setAttrs({
repeating_armes_armeportees: `${portees}m | ${portees * 2}m (DM/2) | ${portees * 3}m (DM/3)`
});
}
});
});
function actionLimitee(v) {
return (parseInt(v[Object.keys(v)[0]]) || 0) === 1 ? '(L)' : '';
}
on('change:repeating_armes:arme_al', function () {
getAttrs(['repeating_armes_arme_al'], function (value) {
setAttrs({
repeating_armes_armelim: actionLimitee(value)
});
});
});
on('change:repeating_jetcapas:jetcapa_al', function () {
getAttrs(['repeating_jetcapas_jetcapa_al'], function (value) {
setAttrs({
repeating_jetcapas_jetcapalim: actionLimitee(value)
});
});
});
function encumbrance() {
getSectionIDs('repeating_equipement', function (ids) {
const encombrement = {
total: 0,
zeros: 0
}
for (let id = 0; id < ids.length; id++) {
getAttrs([`repeating_equipement_${ids[id]}_equip-qte`, `repeating_equipement_${ids[id]}_equip-enc`], function (values) {
let qte = parseInt(values[Object.keys(values)[0]]) || 0;
let enc = parseInt(values[Object.keys(values)[1]]) || 0;
if (enc === 0) {
encombrement.zeros += qte;
if (encombrement.zeros >= 3) {
encombrement.total += Math.floor(encombrement.zeros / 3);
encombrement.zeros %= 3;
}
} else {
encombrement.total += qte * enc;
}
setAttrs({
total_enc: encombrement.total
});
});
}
});
}
on([
'change:repeating_equipement:equip-qte',
'change:repeating_equipement:equip-enc'
].join(' '), function () {
encumbrance();
});
on('change:total_enc', function () {
getAttrs(['use_encombrement', 'total_enc', 'seuil_enc'], function (values) {
let use_encombrement = values.use_encombrement === 1 ? true : false;
if (!use_encombrement) return;
let seuil_enc = parseInt(values.seuil_enc) || 0;
let encombrement = parseInt(values.total_enc) || 0;
if (seuil_enc > 0 && encombrement > 0) {
let cond = {};
if (encombrement > seuil_enc * 3) {
cond.CONDITION = 'I'; // Immobilisé
} else if (encombrement > seuil_enc * 2) {
cond.CONDITION = 'L'; // Ralenti
cond.ETATDE = '12'; // +Affaibli
} else if (encombrement > seuil_enc) {
cond.CONDITION = '';
cond.JDEX = '1d12';
cond.JDEXSUP = '2d12kh1';
cond.JDEXSUPHERO = '{2d12kh1, 0d12+10}kh1';
cond.JDEXRISQUE = '2d12kl1';
cond.ETATDE = '20';
} else {
cond.CONDITION = '';
cond.JDEX = '1d@{ETATDE}';
cond.JDEXSUP = '2d@{ETATDE}kh1';
cond.JDEXSUPHERO = '{2d@{ETATDE}kh1, 0d20+10}kh1';
cond.JDEXRISQUE = '1d12';
cond.ETATDE = '20';
}
if (cond !== null) setAttrs(cond);
}
});
});
on('clicked:reset_btn', function () {
for (let v = 1; v <= 9; v++) {
setRank(v.toString());
}
buildCaracs();
encumbrance();
});
on('change:mods_atk', function () {
let infomsg = 'Syntaxe non reconnue, corrigez SVP...';
setAttrs({ INFOMSG: infomsg });
getAttrs(['mods_atk', 'CARACS'], function (values) {
const aliases = {
'attaque': 'att',
'attaques': 'att',
'cac': 'atc',
'contact': 'atc',
'cad': 'atd',
'distance': 'atd',
'psyinf': 'inf',
'influ': 'inf',
'psyint': 'int',
'intui': 'int',
'tir': 'atd'
};
const modifiers = {
atc: '',
atd: '',
inf: '',
int: ''
};
let result = ' ';
if (values.mods_atk !== '') {
let caracs = JSON.parse(values.CARACS);
let mods = values.mods_atk.replace('\n', ';').split(';');
for (let mod of mods) {
if (mod.trim() === '' || mod.trim().startsWith('-')) continue;
let modv = mod.trim().split(' ');
let mod_attr = modv.shift().toLowerCase();
let mod_sgn = '+';
let mod_val = modv.shift();
if (mod_val.startsWith('+') || mod_val.startsWith('-')) {
mod_sgn = mod_val.substring(0, 1);
mod_val = mod_val.substring(1);
}
if (mod_val.search(/\d+[dD]\d+/) !== -1) {
mod_val = `[[${mod_val}]]`;
} else {
mod_val = buffValue(mod_val, caracs);
if (mod_val === 0) continue;
}
let mod_desc = ` ${mod_sgn}${mod_val}[${modv.join(' ').trim()}]`;
switch (mod_attr) {
case 'atc':
case 'atd':
case 'inf':
case 'inf':
modifiers[mod_attr] += mod_desc;
break;
case 'att':
for (let attr of ['atc', 'atd', 'inf', 'int']) {
modifiers[attr] += mod_desc;
}
break;
default:
if (Object.keys(aliases).includes(mod_attr)) {
modifiers[aliases[mod_attr]] += mod_desc;
result = ' ';
} else {
result = infomsg;
}
break;
}
}
}
getSectionIDs('repeating_armes', function (ids) {
for (const id of ids) {
getAttrs([`repeating_armes_${id}_armeatk`, `repeating_armes_${id}_armeportee`], function (values) {
let type = values[Object.keys(values)[0]] || '';
let portee = values[Object.keys(values)[1]] || '';
let attr = {};
if (type === '@{ATKCAC}' || (type === '@{ATKTIR}' && portee === '')) {
attr[`repeating_armes_${id}_armebuff`] = modifiers.atc.trim();
} else if (type === '@{ATKTIR}') {
attr[`repeating_armes_${id}_armebuff`] = modifiers.atd.trim();
} else if (type === '@{ATKPSYINFLU}') {
attr[`repeating_armes_${id}_armebuff`] = modifiers.inf.trim();
} else if (type === '@{ATKPSYINTUI}') {
attr[`repeating_armes_${id}_armebuff`] = modifiers.int.trim();
}
if (attr !== null) setAttrs(attr);
});
}
});
consoleLog(`[${result}]`);
setAttrs({ INFOMSG: result });
});
});
on('change:mods_atkdm', function () {
let infomsg = 'Syntaxe non reconnue, corrigez SVP...';
setAttrs({ INFOMSG: infomsg });
getAttrs(['mods_atkdm', 'CARACS'], function (values) {
const aliases = {
'attaque': 'att',
'attaques': 'att',
'cac': 'atc',
'contact': 'atc',
'cad': 'atd',
'distance': 'atd',
'psyinf': 'inf',
'influ': 'inf',
'psyint': 'int',
'intui': 'int',
'tir': 'atd'
};
const modifiers = {
atc: '',
atd: '',
inf: '',
int: ''
};
let result = ' ';
if (values.mods_atkdm !== '') {
let caracs = JSON.parse(values.CARACS);
let mods = values.mods_atkdm.replace('\n', ';').split(';');
for (let mod of mods) {
if (mod.trim() === '' || mod.trim().startsWith('-')) continue;
let modv = mod.trim().split(' ');
let mod_attr = modv.shift().toLowerCase();
let mod_sgn = '+';
let mod_val = modv.shift();
if (mod_val.startsWith('+') || mod_val.startsWith('-')) {
mod_sgn = mod_val.substring(0, 1);
mod_val = mod_val.substring(1);
}
if (mod_val.search(/\d+[dD]\d+/) !== -1) {
mod_val = `[[${mod_val}]]`;
} else {
mod_val = buffValue(mod_val, caracs);
if (mod_val === 0) continue;
}
let mod_desc = ` ${mod_sgn}${mod_val}[${modv.join(' ').trim()}]`;
switch (mod_attr) {
case 'atc':
case 'atd':
case 'inf':
case 'int':
modifiers[mod_attr] += mod_desc;
break;
case 'att':
for (let attr of ['atc', 'atd', 'inf', 'int']) {
modifiers[attr] += mod_desc;
}
break;
default:
if (Object.keys(aliases).includes(mod_attr)) {
modifiers[aliases[mod_attr]] += mod_desc;
result = ' ';
} else {
result = infomsg;
}
break;
}
}
}
getSectionIDs('repeating_armes', function (ids) {
for (const id of ids) {
getAttrs([`repeating_armes_${id}_armeatk`, `repeating_armes_${id}_armeportee`], function (values) {
let type = values[Object.keys(values)[0]] || '';
let portee = values[Object.keys(values)[1]] || '';
let attr = {};
if (type === '@{ATKCAC}' || (type === '@{ATKTIR}' && portee === '')) {
attr[`repeating_armes_${id}_armebuffdm`] = modifiers.atc.trim();
} else if (type === '@{ATKTIR}') {
attr[`repeating_armes_${id}_armebuffdm`] = modifiers.atd.trim();
} else if (type === '@{ATKPSYINFLU}') {
attr[`repeating_armes_${id}_armebuffdm`] = modifiers.inf.trim();
} else if (type === '@{ATKPSYINTUI}') {
attr[`repeating_armes_${id}_armebuffdm`] = modifiers.int.trim();
}
if (attr !== null) setAttrs(attr);
});
}
});
consoleLog(`[${result}]`);
setAttrs({ INFOMSG: result });
});
});
const conditions = {
'aveugle': 'A',
'effraye': 'F',
'etourdi': 'E',
'immobilise': 'I',
'panique': 'P',
'ralenti': 'L',
'renverse': 'R',
'surpris': 'S'
}
const conditions_data = {
'': {
'atc': 0,
'atd': 0,
'def': 0,
'init': 0,
'title': ''
},
'A': {
'atc': 5,
'atd': 10,
'def': 5,
'init': 5,
'title': 'Aveuglé'
},
'E': {
'atc': 0,
'atd': 0,
'def': 5,
'init': 0,
'title': 'Etourdi'
},
'F': {
'atc': 5,
'atd': 5,
'def': 0,
'init': 0,
'title': 'Effrayé'
},
'I': {
'atc': 0,
'atd': 0,
'def': 0,
'init': 0,
'title': 'Immobilisé'
},
'P': {
'atc': 0,
'atd': 0,
'def': 2,
'init': 0,
'title': 'Paniqué'
},
'L': {
'atc': 0,
'atd': 0,
'def': 0,
'init': 0,
'title': 'Ralenti'
},
'R': {
'atc': 5,
'atd': 5,
'def': 5,
'init': 0,
'title': 'Renversé'
},
'S': {
'atc': 0,
'atd': 0,
'def': 5,
'init': 0,
'title': 'Surpris'
}
}
function applyConditions(buffs, conditionAttr, s) {
if (conditionAttr === '') return;
for (let cond of conditionAttr) {
buffs.atc += s * conditions_data[cond].atc;
buffs.atd += s * conditions_data[cond].atd;
buffs.def += s * conditions_data[cond].def;
buffs.init += s * conditions_data[cond].init;
}
}
on([
'clicked:cond_aveugle',
'clicked:cond_effraye',
'clicked:cond_etourdi',
'clicked:cond_immobilise',
'clicked:cond_panique',
'clicked:cond_ralenti',
'clicked:cond_renverse',
'clicked:cond_surpris'
].join(' '), function (eventInfo) {
var clickedCondition = conditions[eventInfo.triggerName.replace('clicked:cond_', '')];
getAttrs(['PCONDITION', 'CONDITION', 'ATKCAC_BUFF', 'ATKTIR_BUFF', 'INIT_BUFF', 'DEF_BUFF', 'ETATDE'], function (values) {
let buffs = {
'atc': parseInt(values.ATKCAC_BUFF) || 0,
'atd': parseInt(values.ATKTIR_BUFF) || 0,
'def': parseInt(values.DEF_BUFF) || 0,
'init': parseInt(values.INIT_BUFF) || 0
};
// debuffs prior condition
let pcondition = values.PCONDITION || '';
applyConditions(buffs, pcondition, +1);
// change condition
let condition = values.CONDITION || '';
if (condition.includes(clickedCondition)) {
condition = condition.replace(clickedCondition, '');
} else {
condition += clickedCondition;
}
// buff new condition
applyConditions(buffs, condition, -1);
// check prior condition for die roll
let etatde = values.ETATDE;
if (pcondition !== '' && (pcondition.includes(conditions.immobilise) || pcondition.includes(conditions.panique))) etatde = '20';
// check condition for die roll
if (condition !== '' && (condition.includes(conditions.immobilise) || condition.includes(conditions.panique))) etatde = '12';
//
let displayConditions = '';
if (condition !== '') {
for (cond of Object.keys(conditions)) {
if (condition.includes(conditions[cond])) {
displayConditions += (displayConditions === '' ? '' : ', ') + conditions_data[conditions[cond]].title;
}
}
}
if (displayConditions === '') displayConditions = ' ';
setAttrs({
ATKCAC_BUFF: buffs.atc,
ATKTIR_BUFF: buffs.atd,
DEF_BUFF: buffs.def,
INIT_BUFF: buffs.init,
ETATDE: etatde,
CONDITION: condition,
PCONDITION: condition,
conditions: displayConditions
});
});
});
function hitPoints(attr) {
getAttrs(['NIVEAU', 'DV', 'CONSTITUTION', 'PV_NIVEAU', 'PV_BUFF', 'prog_pv'], function (values) {
let niveau = parseInt(values.NIVEAU) || 0;
if (niveau === 0) return;
let dv = parseInt(values.DV) || 0;
if (dv === 0) return;
let constitution = parseInt(values.CONSTITUTION) || 0;
let modcon = 0;
if (constitution > 0) modcon = Math.floor((constitution - 10) / 2);
let pv_niveau = values.PV_NIVEAU || '';
let pv = [];
if (attr === 'niveau' || attr === 'constitution' || attr === 'pv_buff') {
if (pv_niveau !== '') pv = JSON.parse(pv_niveau);
}
let average = (parseInt(values.prog_pv) || 0 === 1) ? 1 + (dv / 2) : 0;
let pv_buff = parseInt(values.PV_BUFF) || 0;
let pv_max = 0;
for (let n = 1; n <= niveau; n++) {
let pvie = 0;
if (n === 1) {
pvie = dv + modcon; // niveau 1 : Max. DV + Mod. CON
} else {
if (n > 10) { // niveaux > 10 : 1 ou 2 PV selon DV
if (dv >= 10) pvie = 2;
else pvie = 1;
} else { // niveaux <= 10
if (n % 2 === 0) { // niveau pair
if (n > pv.length) { // nouveau niveau
if (average !== 0) {
pvie = average; // ... soit moyenne du DV + 1
} else {
pvie = getRandom(dv); // ... soit tirage de DV
}
if (modcon < 0) pvie += modcon; // ... + Mod. CON si négative
if (pvie < 0) pvie = 0; // ... mais on ne perd pas de PV
} else { // niveau existant
pvie = pv[n - 1];
}
} else { // niveau impair
if (modcon > 0) pvie = modcon; // Mod. CON si positif
}
}
}
if (n > pv.length) pv.push(pvie);
else pv[n - 1] = pvie;
pv_max += pvie;
}
pv_max += pv_buff;
setAttrs({
PV_NIVEAU: JSON.stringify(pv),
PV_max: pv_max,
PV: pv_max
});
});
}
on([
'change:niveau',
'change:dv',
'change:constitution',
'change:pv_buff',
'change:prog_pv'
].join(' '), function (eventInfo) {
hitPoints(eventInfo.sourceAttribute);
});
on('clicked:dv_btn', function () {
getAttrs(['NIVEAU'], function (value) {
let niveau = parseInt(value.NIVEAU) || 0;
if (niveau > 0 && niveau <= 20) {
setAttrs({
NIVEAU: niveau + 1
});
}
});
});
</script>
<!-- FIN SCRIPTS / SHEET WORKERS -->