mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-31 12:12:30 +00:00
* Chroniques Oubliees Contemporain: version 2.8 * Chroniques Galactiques: version 3.8
3864 lines
187 KiB
HTML
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érité" value="@(togm}&{template:co1} {{perso=@{character_name}}} {{name=Dextérité}} {{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">
|
|
|
|
<input type="radio" name="attr_ETATDE" value="20" title="@{ETATDE} Jet d'un d20 pour tous les tests" checked> Normal</input>
|
|
|
|
<input type="radio" name="attr_ETATDE" value="12" title="@{ETATDE} Jet d'un d12 pour tous les tests"> Affaibli</input>
|
|
|
|
<input type="checkbox" name="attr_POISSE" title="@{POISSE} Moins bon de deux d20 pour tous les tests" value="1" /> 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=À Distance}} {{subtags=Attaque}} {{attaque=[[@{JETNORMAL}cs20cf1[Dé] + [[@{ATKTIR}]][Bonus] ]] }}"> À 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> </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> </td>
|
|
</tr>
|
|
</table>
|
|
</td> <!-- FIN Combat -->
|
|
<td style="vertical-align: top;">
|
|
<!-- PV -->
|
|
<table class="sheet-tabsep">
|
|
<tr>
|
|
<td class="sheet-textfat" colspan="2">VITALITÉ</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é 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é}} {{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>
|
|
<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>
|
|
<input type="number" name="attr_DMTEMP" title="@{DMTEMP} Dommages Temporaires" value="0" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="sheet-boxinput" colspan="2">
|
|
<input type="checkbox" name="attr_BLESSURE" title="@{BLESSURE} Gravement blessé" value="1" />
|
|
<span class="textbase">Blessure grave</span>
|
|
<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> </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É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érité" 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é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"> </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="sheet-boxtitre">DEP</td>
|
|
<td class="sheet-boxinputlight">10+</td>
|
|
<td class="sheet-textbase"> </td>
|
|
<td class="sheet-textbase"> </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"> </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;"> </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"> </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ÉS DU PERSONNAGE</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="sheet-boxtitresmall" style="width: 20px;"> </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;"> </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;"> </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%;"> </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> </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 "@{character_name}" &{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">ÉQUIPEMENT : Consommables</div>
|
|
<div class="sheet-boxinputleft">
|
|
<span class="textbase">Crédits :</span>
|
|
<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}" />
|
|
<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">É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">É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>
|
|
<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> <input type="checkbox" name="attr_INIT_VAR" title="@{INIT_VAR}" value="[[1d6!]]" />
|
|
</td>
|
|
<td style="width: 25%;">
|
|
<span class="textbase">Compteur PC:</span>
|
|
<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>
|
|
<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>
|
|
<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é" value="@(togm}&{template:co1} {{perso=@{character_name}}} {{subtags=Test}} {{name= Poste de Pilotage (PIL)}} {{carac=[[1d20cs20cf1[Dé] +[[@{DEX_TEST}]][Manoeuvrabilité] +@{POSTE_PIL} ]] }} {{jet=Manoeuvrabilité}} {{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é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=À Distance}} {{subtags=Attaque}} {{attaque=[[1d20cs20cf1[Dé] + [[@{ATKTIRV}]][Bonus] ]] }}"> À 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> </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é 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>
|
|
<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>
|
|
<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> </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ÉFENSES</td>
|
|
<td> </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é" 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éfense (rapidité)" 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"> </td>
|
|
<td class="sheet-textbase"> </td>
|
|
<td class="sheet-textbase"> </td>
|
|
<td class="sheet-boxinputlight"><input type="number" name="attr_DEFSOL" value="10+@{DEFVCON}+@{DEFVPER}+@{DEFVSEN}" title="@{DEFSOL} Défense (solidité)" 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;"> </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> </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>
|
|
<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> <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"> </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"> </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}" /> /
|
|
<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"> </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"> </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"> </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>
|
|
<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> <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> [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"> </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 -->
|