mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-31 04:02:29 +00:00
742 lines
41 KiB
HTML
742 lines
41 KiB
HTML
<div class="penombre-sheet">
|
||
|
||
<!-- ================= Hidden attributs ==================-->
|
||
<!-- Input hidden vide (juste pour déclarer l'attribut) -->
|
||
<input type="hidden" name="attr_rtype">
|
||
|
||
|
||
<select name="attr_rtype" style="display: none;">
|
||
<option value="{{harmonique=1}}">Toujours Harmonique</option>
|
||
<option value="{{merveilleux=1}}">Toujours Merveilleux</option>
|
||
<option
|
||
value="{{query=1}} ?{Type de jet?|Harmonique,{{harmonique=1|Merveilleux,{{merveilleux=1}"
|
||
selected>
|
||
Demander à chaque jet</option>
|
||
</select>
|
||
|
||
|
||
<!-- ================= Onglets =============== -->
|
||
|
||
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="eminence" />
|
||
<div class="sheet_tabs">
|
||
<button type="action" name="act_eminence" data-tab="eminence">Eminence Grise</button>
|
||
<button type="action" name="act_adversaire" data-tab="adversaire">Adversaire</button>
|
||
<button type="action" name="act_collegial" data-tab="collegial">Feuille Collégiale</button>
|
||
</div>
|
||
|
||
<!-- ================= Feuille d'Eminence Grise ============== -->
|
||
|
||
<section class="sheet_eminence">
|
||
<div class="columns">
|
||
<!-- Colonne gauche -->
|
||
<div class="col-left">
|
||
|
||
<!-- ================= Identité ================== -->
|
||
<div class="identite">
|
||
<div class="identite-container">
|
||
<h3 class="titre-vertical identite-titre">
|
||
<span>Personnage</span>
|
||
</h3>
|
||
|
||
<div class="identite-champs">
|
||
<div class="identite-champ"><label>Nom</label><input type="text" name="attr_character_name">
|
||
</div>
|
||
<div class="identite-champ"><label>Peuple</label><input type="text" name="attr_peuple">
|
||
</div>
|
||
<!-- <div><label>Clé</label><input type="text" name="attr_cle"></div>
|
||
<div><label>Gamme</label><input type="text" name="attr_gamme"></div>
|
||
<div><label>Ton</label><input type="text" name="attr_ton"></div> -->
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- ================= Harmoniques ================== -->
|
||
<div class="harmoniques">
|
||
<div class="harmoniques-container">
|
||
<h3 class="titre-vertical harmoniques-titre">
|
||
<span>Harmoniques</span>
|
||
</h3>
|
||
|
||
<div class="harmoniques-grid">
|
||
<div class="harmonique-wrap">
|
||
<div class="harmonique">
|
||
<select name="attr_nuit">
|
||
<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>
|
||
</div>
|
||
<button type="roll"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|1}]] [[@{nuit}]] [[ floor([[1d@{nuit}]]/4) ]] [[ floor([[1d20]]/4) ]] {{title=@{character_name}}} {{carac=de Nuit}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[5]]}} {{r_harmonique=$[[6]]}} {{r_merveilleux=$[[7]]}}"
|
||
name="roll_nuit" class="label-btn">Nuit</button>
|
||
|
||
|
||
<span class="sub-label">Action scélérate</span>
|
||
|
||
</div>
|
||
|
||
<div class="harmonique-wrap">
|
||
<div class="harmonique">
|
||
<select name="attr_ame">
|
||
<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>
|
||
</div>
|
||
|
||
<button type="roll" class=" label-btn"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|1}]] [[@{ame}]] [[ floor([[1d@{ame}]]/4) ]] [[ floor([[1d20]]/4) ]] {{title=@{character_name}}} {{carac=d'Âme}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[5]]}} {{r_harmonique=$[[6]]}} {{r_merveilleux=$[[7]]}}">Âme</button>
|
||
<span class="sub-label">Action sociale</span>
|
||
|
||
</div>
|
||
|
||
<div class="harmonique-wrap nature-wrap">
|
||
<div class="harmonique">
|
||
<select name="attr_nature">
|
||
<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>
|
||
</div>
|
||
<button type="roll"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|1}]] [[@{nature}]] [[ floor([[1d@{nature}]]/4) ]] [[ floor([[1d20]]/4) ]] {{title=@{character_name}}} {{carac=de Nature}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[5]]}} {{r_harmonique=$[[6]]}} {{r_merveilleux=$[[7]]}}"
|
||
class="label-btn">Nature</button>
|
||
<span class="sub-label">Action physique</span>
|
||
|
||
</div>
|
||
|
||
<div class="harmonique-wrap esprit-wrap">
|
||
<div class="harmonique">
|
||
<select name="attr_esprit">
|
||
<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>
|
||
</div>
|
||
<button type="roll"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|1}]] [[@{esprit}]] [[ floor([[1d@{esprit}]]/4) ]] [[ floor([[1d20]]/4) ]] {{title=@{character_name}}} {{carac=d'Esprit}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[5]]}} {{r_harmonique=$[[6]]}} {{r_merveilleux=$[[7]]}}"
|
||
class="label-btn">Esprit</button>
|
||
<span class="sub-label">Action mentale</span>
|
||
</div>
|
||
|
||
<div class="harmonique-wrap etincelle-wrap">
|
||
<div class="harmonique">
|
||
<select name="attr_etincelle">
|
||
<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>
|
||
</div>
|
||
<button type="roll"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|1}]] [[@{etincelle}]] [[ floor([[1d@{etincelle}]]/4) ]] [[ floor([[1d20]]/4) ]] {{title=@{character_name}}} {{carac=d'Étincelle}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[5]]}} {{r_harmonique=$[[6]]}} {{r_merveilleux=$[[7]]}}"
|
||
class="label-btn">Étincelle</button>
|
||
<span class="sub-label">Action perceptive</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- ================= Conscience ================= -->
|
||
<div class="conscience">
|
||
<div class="conscience-container">
|
||
<h3 class="titre-vertical conscience-titre">
|
||
<span>Conscience</span>
|
||
</h3>
|
||
<div class="conscience-wrapper">
|
||
<div class="conscience-header">
|
||
<h4>Max</h4>
|
||
<input type="number" name="attr_conscience_max" value="7" min="0" max="15">
|
||
</div>
|
||
|
||
<!-- input caché contrôlé automatiquement par le sheet-worker -->
|
||
<input type="hidden" name="attr_cmax" value="0">
|
||
|
||
|
||
<!-- Radios cachés : 1 seul attribut attr_cmax (1..10) -->
|
||
<div class="cmax-radios">
|
||
<input type="hidden" name="attr_show_token1" value="on">
|
||
<input type="hidden" name="attr_show_token2" value="on">
|
||
<input type="hidden" name="attr_show_token3" value="on">
|
||
<input type="hidden" name="attr_show_token4" value="on">
|
||
<input type="hidden" name="attr_show_token5" value="on">
|
||
<input type="hidden" name="attr_show_token6" value="on">
|
||
<input type="hidden" name="attr_show_token7" value="on">
|
||
<input type="hidden" name="attr_show_token8" value="0">
|
||
<input type="hidden" name="attr_show_token9" value="0">
|
||
<input type="hidden" name="attr_show_token10" value="0">
|
||
</div>
|
||
|
||
<!-- 15 jetons -->
|
||
<div class="tokens">
|
||
<div class="token"><input type="hidden" name="attr_token1" value="0"><button
|
||
type="action" name="act_token1" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token2" value="0"><button
|
||
type="action" name="act_token2" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token3" value="0"><button
|
||
type="action" name="act_token3" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token4" value="0"><button
|
||
type="action" name="act_token4" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token5" value="0"><button
|
||
type="action" name="act_token5" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token6" value="0"><button
|
||
type="action" name="act_token6" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token7" value="0"><button
|
||
type="action" name="act_token7" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token8" value="0"><button
|
||
type="action" name="act_token8" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token9" value="0"><button
|
||
type="action" name="act_token9" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token10" value="0"><button
|
||
type="action" name="act_token10" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token11" value="0"><button
|
||
type="action" name="act_token11" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token12" value="0"><button
|
||
type="action" name="act_token12" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token13" value="0"><button
|
||
type="action" name="act_token13" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token14" value="0"><button
|
||
type="action" name="act_token14" class="token-btn"></button></div>
|
||
<div class="token"><input type="hidden" name="attr_token15" value="0"><button
|
||
type="action" name="act_token15" class="token-btn"></button></div>
|
||
</div>
|
||
|
||
<!-- Complications -->
|
||
<div class="complications">
|
||
<h4>Complications</h4>
|
||
<div class="comp-row">
|
||
<input type="text" name="attr_complication1">
|
||
<input type="checkbox" name="attr_comp1a"><input type="checkbox"
|
||
name="attr_comp1b"><input type="checkbox" name="attr_comp1c">
|
||
</div>
|
||
<div class="comp-row">
|
||
<input type="text" name="attr_complication2">
|
||
<input type="checkbox" name="attr_comp2a"><input type="checkbox"
|
||
name="attr_comp2b"><input type="checkbox" name="attr_comp2c">
|
||
</div>
|
||
<div class="comp-row">
|
||
<input type="text" name="attr_complication3">
|
||
<input type="checkbox" name="attr_comp3a"><input type="checkbox"
|
||
name="attr_comp3b"><input type="checkbox" name="attr_comp3c">
|
||
</div>
|
||
<div class="comp-row">
|
||
<input type="text" name="attr_complication4">
|
||
<input type="checkbox" name="attr_comp4a"><input type="checkbox"
|
||
name="attr_comp4b"><input type="checkbox" name="attr_comp4c">
|
||
</div>
|
||
<p class="comp-help">(pensez à en créer pour préserver vos jetons)</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Colonne droite -->
|
||
<div class="col-right">
|
||
|
||
<!-- Bandeau supérieur -->
|
||
<header class="header">
|
||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Penombre/assets/img/logo_penombre.webp"
|
||
class="logo" alt="Logo Pénombre">
|
||
</header>
|
||
|
||
<!-- ================= Pouvoirs ================== -->
|
||
<div class="pouvoirs">
|
||
<h2>Pouvoirs</h2>
|
||
|
||
<div class="capacites-flex">
|
||
<!-- Colonne gauche : Potentiel -->
|
||
<div class="col-potentiel">
|
||
<div class="potentiel-wrap">
|
||
<div class="potentiel-img" aria-hidden="true"></div>
|
||
<input type="number" name="attr_pouvoir_potentiel" class="potentiel-input" value="0"
|
||
min="0">
|
||
<div class="potentiel-caption">Potentiel</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Colonne droite : pouvoirs -->
|
||
<div class="col-pouvoirs">
|
||
|
||
<fieldset class="repeating_pouvoirs">
|
||
<div class="pouvoir-row">
|
||
<input type="checkbox" name="attr_pouvoir_used">
|
||
<input type="text" name="attr_nom_pouvoir" placeholder="Nom du pouvoir">
|
||
<textarea name="attr_pouvoir" placeholder="Pouvoir"></textarea>
|
||
<select name="attr_pouvoir_type">
|
||
<option value="aucun">Sans type</option>
|
||
<option value="naissance">Naissance</option>
|
||
<option value="peuple">Peuple</option>
|
||
<option value="cle">Clé</option>
|
||
<option value="gamme">Gamme</option>
|
||
<option value="ton">Ton</option>
|
||
</select>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ================= Atouts ================== -->
|
||
<div class="atouts">
|
||
<h2>Atouts</h2>
|
||
|
||
<div class="capacites-flex">
|
||
<!-- Colonne gauche : Potentiel -->
|
||
<div class="col-potentiel">
|
||
<div class="potentiel-wrap">
|
||
<div class="potentiel-img" aria-hidden="true"></div>
|
||
<input type="number" name="attr_atout_potentiel" class="potentiel-input" value="0"
|
||
min="0">
|
||
<div class="potentiel-caption">Potentiel</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Colonne droite : atouts -->
|
||
<div class="col-atouts">
|
||
|
||
<fieldset class="repeating_atouts">
|
||
<div class="atout-row">
|
||
<textarea name="attr_nom_atout" placeholder="Nom de l'atout"></textarea>
|
||
<!--<input type="text" name="attr_nom_atout" placeholder="Nom de l'atout"> -->
|
||
|
||
<div class="atout-level-row">
|
||
<input type="checkbox" class="case" name="attr_lvl1">
|
||
<input type="checkbox" class="case" name="attr_lvl2">
|
||
<input type="checkbox" class="case" name="attr_lvl3">
|
||
|
||
<input type="hidden" name="attr_atout_nd6" value="0">
|
||
</div>
|
||
|
||
<div class="sheet-atout-container">
|
||
<button type="roll" class="sheet-atout-btn" name="roll_disabled"
|
||
value=""></button>
|
||
<div class="sheet-atout-menu">
|
||
<div class="sheet-atout-heading">Harmonique ? </div>
|
||
<div><button type="roll" class="atout-choice" name="roll_atout_nuit"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|0}]] [[@{nuit}]] [[ [[floor([[1d@{nuit}]]/4)]] + [[@{atout_nd6}d6>4]] ]] [[ [[floor([[1d20]]/4)]] + [[@{atout_nd6}d6>4]] ]] {{title=@{character_name}}} {{carac=de Nuit}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[6]]}} {{r_harmonique=$[[10]]}} {{r_merveilleux=$[[11]]}}"></button><label>Nuit</label>
|
||
</div>
|
||
<div><button type="roll" class="atout-choice" name="roll_atout_ame"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|0}]] [[@{ame}]] [[ [[floor([[1d@{ame}]]/4)]] + [[@{atout_nd6}d6>4]] ]] [[ [[floor([[1d20]]/4)]] + [[@{atout_nd6}d6>4]] ]] {{title=@{character_name}}} {{carac=d'Âme}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[6]]}} {{r_harmonique=$[[10]]}} {{r_merveilleux=$[[11]]}}"></button><label>Âme</label>
|
||
</div>
|
||
<div><button type="roll" class="atout-choice" name="roll_atout_nature"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|0}]] [[@{nature}]] [[ [[floor([[1d@{nature}]]/4)]] + [[@{atout_nd6}d6>4]] ]] [[ [[floor([[1d20]]/4)]] + [[@{atout_nd6}d6>4]] ]] {{title=@{character_name}}} {{carac=de Nature}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[6]]}} {{r_harmonique=$[[10]]}} {{r_merveilleux=$[[11]]}}"></button><label>Nature</label>
|
||
</div>
|
||
<div><button type="roll" class="atout-choice" name="roll_atout_esprit"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|0}]] [[@{esprit}]] [[ [[floor([[1d@{esprit}]]/4)]] + [[@{atout_nd6}d6>4]] ]] [[ [[floor([[1d20]]/4)]] + [[@{atout_nd6}d6>4]] ]] {{title=@{character_name}}} {{carac=d'Esprit}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[6]]}} {{r_harmonique=$[[10]]}} {{r_merveilleux=$[[11]]}}"></button><label>Esprit</label>
|
||
</div>
|
||
<div><button type="roll" class="atout-choice" name="roll_atout_etincelle"
|
||
value="&{template:harmonique} [[20]] [[1]] [[?{Difficulté|0}]] [[@{etincelle}]] [[ [[floor([[1d@{etincelle}]]/4)]] + [[@{atout_nd6}d6>4]] ]] [[ [[floor([[1d20]]/4)]] + [[@{atout_nd6}d6>4]] ]] {{title=@{character_name}}} {{carac=d'Étincelle}} @{rtype}}} {{max_merv=$[[0]]}} {{un=$[[1]]}} {{difficulte=$[[2]]}} {{max_harm=$[[3]]}} {{jet_brut_harm=$[[4]]}} {{jet_brut_merv=$[[6]]}} {{r_harmonique=$[[10]]}} {{r_merveilleux=$[[11]]}}"></button><label>Étincelle</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ================= Maîtrises magiques ================== -->
|
||
|
||
<div class="maitrise-magie">
|
||
<h2>Maîtrises magiques</h2>
|
||
|
||
<div class="capacites-flex">
|
||
<!-- Colonne gauche : Potentiel -->
|
||
<div class="col-potentiel">
|
||
<div class="potentiel-wrap">
|
||
<div class="potentiel-img" aria-hidden="true"></div>
|
||
<input type="number" name="attr_magie_potentiel" class="potentiel-input" value="0"
|
||
min="0">
|
||
<div class="potentiel-caption">Potentiel</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Colonne droite : maitrises magiques -->
|
||
<div class="col-magies">
|
||
|
||
<fieldset class="repeating_magies">
|
||
<div class="magie-row">
|
||
<!-- <input type="text" name="attr_nom_magie" placeholder="Nom de la magie"> -->
|
||
<textarea name="attr_magie" placeholder="Magie & Prérequis ↓"></textarea>
|
||
|
||
<select name="attr_magie_harmonique">
|
||
<option value="@{ame}">Âme</option>
|
||
<option value="@{esprit}">Esprit</option>
|
||
<option value="@{etincelle}">Étincelle</option>
|
||
<option value="@{nature}">Nature</option>
|
||
<option value="@{nuit}">Nuit</option>
|
||
</select>
|
||
<div class="magie-lvl-img" aria-hidden="true">
|
||
<input type="number" name="attr_magie_niveau" class="magie-lvl-input" value="0"
|
||
min="0" max="5">
|
||
</div>
|
||
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<!-- ================= Aide de jeu ================== -->
|
||
<div class="aide-joueur">
|
||
<h2>Aide de jeu</h2>
|
||
<div class="aides-wrap">
|
||
<div class="aide-jetons-img">
|
||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Penombre/assets/img/tableau_partie_gauche.webp"
|
||
alt="Tableau de rappel - partie gauche" class="tableau gauche">
|
||
</div>
|
||
|
||
<div class="aide-succes-img">
|
||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Penombre/assets/img/tableau_partie_droite.webp"
|
||
alt="Tableau de rappel - partie droite" class="tableau droite">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ================= Notes ================== -->
|
||
<div class="notes">
|
||
<h2>Notes</h2>
|
||
<div class="notes-wrap">
|
||
<textarea name="attr_notes" class="notes-textarea" placeholder="Notes diverses..."></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ================= Feuille d'Adversaire ================== -->
|
||
|
||
<section class="sheet_adversaire">
|
||
<div class="adversaire-feuille">
|
||
<h2 class="titre-section">Feuille d’adversaire</h2>
|
||
<div class="adversaire-content">
|
||
|
||
<div class="adversaire-entete">
|
||
<input type="text" name="attr_character_name" class="adversaire-nom"
|
||
placeholder="Nom de l’adversaire">
|
||
<input type="text" name="attr_adversaire_concept" class="adversaire-concept"
|
||
placeholder="Concept de l'adversaire">
|
||
</div>
|
||
|
||
<div class="adversaire-jauges">
|
||
<div class="jauge">
|
||
<label>Adversité</label>
|
||
<div class="valeurs">
|
||
<input type="number" name="attr_adversite_actuelle" value="1" min="0" class="jauge-input">
|
||
<span>/</span>
|
||
<input type="number" name="attr_adversite_base" value="1" min="0" class="jauge-input">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="jauge">
|
||
<label>Résilience</label>
|
||
<div class="valeurs">
|
||
<input type="number" name="attr_resilience_actuelle" value="3" min="0" class="jauge-input">
|
||
<span>/</span>
|
||
<input type="number" name="attr_resilience" class="jauge-input"
|
||
value="(@{adversite_base}*3)" disabled>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="jauge">
|
||
<label>Dissonance</label>
|
||
<div class="valeurs">
|
||
<input type="number" name="attr_dissonance" value="0" min="0" class="jauge-input">
|
||
<select name="attr_dissonnance_harmonique" class="dissonance-select">
|
||
<option value="-" selected>Aucune</option>
|
||
<option value="Âme">Âme</option>
|
||
<option value="Esprit">Esprit</option>
|
||
<option value="Étincelle">Étincelle</option>
|
||
<option value="Nature">Nature</option>
|
||
<option value="Nuit">Nuit</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="adversaire-section-rep">
|
||
<h3>Actions adverses</h3>
|
||
<fieldset class="repeating_actions">
|
||
<input type="text" name="attr_action_nom" placeholder="Nom de l’action adverse">
|
||
<textarea name="attr_action_desc" placeholder="Décris ici l’action adverse..."></textarea>
|
||
</fieldset>
|
||
</div>
|
||
|
||
<div class="adversaire-section-rep">
|
||
<h3>Intrigues</h3>
|
||
<fieldset class="repeating_intrigues">
|
||
<input type="text" name="attr_intrigue_nom" placeholder="Nom de l’intrigue">
|
||
<textarea name="attr_intrigue_desc"
|
||
placeholder="Décris ici l’intrigue ou piste narrative..."></textarea>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</section>
|
||
|
||
<!-- ================= Feuille Collégiale ================== -->
|
||
|
||
<section class="sheet_collegial">
|
||
<div class="collegiale-container">
|
||
<!-- Jeton 1 (haut centre) -->
|
||
<input type="checkbox" name="attr_jeton1" id="jeton1" class="jeton-input">
|
||
<label for="jeton1" class="jeton jeton1"></label>
|
||
|
||
<!-- Jeton 2 (rangée 2 gauche) -->
|
||
<input type="checkbox" name="attr_jeton2" id="jeton2" class="jeton-input">
|
||
<label for="jeton2" class="jeton jeton2"></label>
|
||
|
||
<!-- Jeton 3 (rangée 2 centre) -->
|
||
<input type="checkbox" name="attr_jeton3" id="jeton3" class="jeton-input">
|
||
<label for="jeton3" class="jeton jeton3"></label>
|
||
|
||
<!-- Jeton 4 (rangée 2 droite) -->
|
||
<input type="checkbox" name="attr_jeton4" id="jeton4" class="jeton-input">
|
||
<label for="jeton4" class="jeton jeton4"></label>
|
||
|
||
<!-- Jeton 5 (rangée 3 gauche) -->
|
||
<input type="checkbox" name="attr_jeton5" id="jeton5" class="jeton-input">
|
||
<label for="jeton5" class="jeton jeton5"></label>
|
||
|
||
<!-- Jeton 6 (rangée 3 centre) -->
|
||
<input type="checkbox" name="attr_jeton6" id="jeton6" class="jeton-input">
|
||
<label for="jeton6" class="jeton jeton6"></label>
|
||
|
||
<!-- Jeton 7 (rangée 3 droite) -->
|
||
<input type="checkbox" name="attr_jeton7" id="jeton7" class="jeton-input">
|
||
<label for="jeton7" class="jeton jeton7"></label>
|
||
|
||
<!-- Jeton 8 (rangée 4 gauche) -->
|
||
<input type="checkbox" name="attr_jeton8" id="jeton8" class="jeton-input">
|
||
<label for="jeton8" class="jeton jeton8"></label>
|
||
|
||
<!-- Jeton 9 (rangée 4 centre) -->
|
||
<input type="checkbox" name="attr_jeton9" id="jeton9" class="jeton-input">
|
||
<label for="jeton9" class="jeton jeton9"></label>
|
||
|
||
<!-- Jeton 10 (rangée 4 droite) -->
|
||
<input type="checkbox" name="attr_jeton10" id="jeton10" class="jeton-input">
|
||
<label for="jeton10" class="jeton jeton10"></label>
|
||
</div>
|
||
</section>
|
||
|
||
</div>
|
||
<!-- ================= Rolltemplate Harmonique ================== -->
|
||
|
||
<rolltemplate class="sheet-rolltemplate-harmonique">
|
||
<div class="sheet-rolltemplate-harmonique-background sheet-rolltemplate-harmonique-center">
|
||
{{#title}}
|
||
<div class="sheet-rolltemplate-harmonique-header">{{title}}</div>
|
||
{{/title}}
|
||
<div class="sheet-rolltemplate-harmonique-subheader">
|
||
{{#harmonique}} Jet harmonique {{carac}} {{/harmonique}}
|
||
{{#merveilleux}} Jet harmonique {{carac}} <span
|
||
class="sheet-rolltemplate-harmonique-merveilleux">Merveilleux</span>{{/merveilleux}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-harmonique-result">
|
||
{{#harmonique}}
|
||
<span class="sheet-rolltemplate-harmonique-succes">{{r_harmonique}} succès</span>
|
||
{{#rollGreater() r_harmonique difficulte}}
|
||
<div class="sheet-rolltemplate-harmonique-reussite">Réussite !</div>
|
||
{{/rollGreater() r_harmonique difficulte}}
|
||
{{#rollTotal() r_harmonique difficulte}}
|
||
<div class="sheet-rolltemplate-harmonique-reussite">Réussite !</div>
|
||
{{/rollTotal() r_harmonique difficulte}}
|
||
{{#rollLess() r_harmonique difficulte}}
|
||
<div class="sheet-rolltemplate-harmonique-echec">Presque ! </div>
|
||
{{/rollLess() r_harmonique difficulte}}
|
||
|
||
|
||
{{#rollTotal() jet_brut_harm max_harm}}
|
||
<div class="sheet-rolltemplate-harmonique-critique"><span><img
|
||
class="sheet-rolltemplate-harmonique-critique-icon" alt="icône d'envolée"
|
||
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Penombre/assets/img/envolee.webp"></span>Envolée
|
||
!</div>
|
||
{{/rollTotal() jet_brut_harm max_harm}}
|
||
{{#rollTotal() jet_brut_harm un}}
|
||
<div class="sheet-rolltemplate-harmonique-critique"><span
|
||
class="sheet-rolltemplate-harmonique-critique-icon"><img alt="icône de fausse note"
|
||
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Penombre/assets/img/fausse_note.webp"></span>Fausse
|
||
note</div>
|
||
{{/rollTotal() jet_brut_harm un}}
|
||
|
||
{{/harmonique}}
|
||
|
||
{{#merveilleux}}
|
||
<span class="sheet-rolltemplate-harmonique-succes">{{r_merveilleux}} succès</span>
|
||
{{#rollGreater() r_merveilleux difficulte}}
|
||
<div class="sheet-rolltemplate-harmonique-reussite">Réussite !</div>
|
||
{{/rollGreater() r_merveilleux difficulte}}
|
||
{{#rollTotal() r_merveilleux difficulte}}
|
||
<div class="sheet-rolltemplate-harmonique-reussite">Réussite !</div>
|
||
{{/rollTotal() r_merveilleux difficulte}}
|
||
{{#rollLess() r_merveilleux difficulte}}
|
||
<div class="sheet-rolltemplate-harmonique-echec">Presque !</div>
|
||
{{/rollLess() r_merveilleux difficulte}}
|
||
|
||
{{#rollTotal() jet_brut_merv max_merv}}
|
||
<div><span><img class="sheet-rolltemplate-harmonique-critique-icon" alt="icône de merveille"
|
||
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Penombre/assets/img/merveille.webp"></span>Merveille
|
||
</div>
|
||
{{/rollTotal() jet_brut_merv max_merv}}
|
||
{{#rollTotal() jet_brut_merv un}}
|
||
<div class="critique-echec"><span><img class="sheet-rolltemplate-harmonique-critique-icon"
|
||
alt="icône d'incident magique"
|
||
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Penombre/assets/img/incident_magique.webp"></span>Incident
|
||
magique</div>
|
||
{{/rollTotal() jet_brut_merv un}}
|
||
|
||
{{/merveilleux}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-harmonique-info" style="display:none;">
|
||
{{#harmonique}}Jet brut : {{jet_brut_harm}}{{/harmonique}}
|
||
{{#merveilleux}}Jet brut : {{jet_brut_merv}}{{/merveilleux}}
|
||
</div>
|
||
<div style="display:none;">{{difficulte}}{{max_harm}}{{max_merv}}{{un}}</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
|
||
|
||
|
||
|
||
<!-- ================= Sheet Worker ================== -->
|
||
<script type="text/worker">
|
||
|
||
/* Onglets de la feuille de personnage */
|
||
const buttonlist = ["eminence", "adversaire", "collegial"];
|
||
buttonlist.forEach(button => {
|
||
on(`clicked:${button}`, function() {
|
||
setAttrs({
|
||
sheetTab: button
|
||
});
|
||
});
|
||
});
|
||
|
||
/* Synchronise la valeur de Conscience Max -> cmax */
|
||
on("change:conscience_max sheet:opened", function() {
|
||
getAttrs(["conscience_max"], function(v) {
|
||
let cmax = parseInt(v.conscience_max, 10) || 0;
|
||
cmax = Math.max(0, Math.min(15, cmax));
|
||
setAttrs({ cmax: String(cmax) }, { silent: true });
|
||
});
|
||
});
|
||
|
||
/* Cycle des 15 jetons (0→1→2→0) */
|
||
const ids = Array.from({ length: 15 }, (_, i) => String(i + 1));
|
||
ids.forEach(i => {
|
||
on(`clicked:token${i}`, function() {
|
||
getAttrs([`token${i}`], function(v) {
|
||
let cur = parseInt(v[`token${i}`], 10);
|
||
if (isNaN(cur)) cur = 0;
|
||
const next = (cur + 1) % 3;
|
||
const upd = {};
|
||
upd[`token${i}`] = String(next);
|
||
setAttrs(upd);
|
||
});
|
||
});
|
||
});
|
||
|
||
on("change:repeating_atouts:lvl1 change:repeating_atouts:lvl2 change:repeating_atouts:lvl3", (e) => {
|
||
const base = e.sourceAttribute.replace(/_(lvl1|lvl2|lvl3)$/, "");
|
||
|
||
// Détermine quelle case a été modifiée
|
||
const changedLevel = e.sourceAttribute.match(/lvl([123])$/)?.[1];
|
||
|
||
const keys = [`${base}_lvl1`, `${base}_lvl2`, `${base}_lvl3`];
|
||
|
||
getAttrs(keys, (v) => {
|
||
let l1 = v[`${base}_lvl1`] === "on";
|
||
let l2 = v[`${base}_lvl2`] === "on";
|
||
let l3 = v[`${base}_lvl3`] === "on";
|
||
|
||
// === Logique hiérarchique bidirectionnelle ===
|
||
|
||
if (changedLevel === "3") {
|
||
// On a cliqué sur niveau 3
|
||
if (l3) {
|
||
// Cocher 3 → coche aussi 1 et 2
|
||
l1 = true;
|
||
l2 = true;
|
||
} else {
|
||
// Décocher 3 → laisse 1 et 2 tels quels
|
||
// (ne fait rien)
|
||
}
|
||
} else if (changedLevel === "2") {
|
||
// On a cliqué sur niveau 2
|
||
if (l2) {
|
||
// Cocher 2 → coche aussi 1, décoche 3
|
||
l1 = true;
|
||
l2 = true;
|
||
l3 = false;
|
||
} else {
|
||
// Décocher 2 → décoche aussi 3, laisse 1 tel quel
|
||
l3 = false;
|
||
l2 = false;
|
||
}
|
||
} else if (changedLevel === "1") {
|
||
// On a cliqué sur niveau 1
|
||
if (l1) {
|
||
// Cocher 1 → décoche 2 et 3
|
||
l2 = false;
|
||
l3 = false;
|
||
l1 = true;
|
||
} else {
|
||
// Décocher 1 → décoche tout
|
||
l2 = false;
|
||
l3 = false;
|
||
|
||
}
|
||
}
|
||
|
||
// Calcule le nombre de dés (compte combien sont cochés)
|
||
const nd6 = (l1 ? 1 : 0) + (l2 ? 1 : 0) + (l3 ? 1 : 0);
|
||
|
||
const set = {};
|
||
set[`${base}_lvl1`] = l1 ? "on" : "0";
|
||
set[`${base}_lvl2`] = l2 ? "on" : "0";
|
||
set[`${base}_lvl3`] = l3 ? "on" : "0";
|
||
set[`${base}_atout_nd6`] = String(nd6);
|
||
|
||
setAttrs(set, { silent: true });
|
||
});
|
||
});
|
||
|
||
/* Calcul de la limit des jauges */
|
||
on("change:adversite_base change:adversite_actuelle change:resilience_actuelle", function() {
|
||
getAttrs(["adversite_base", "adversite_actuelle", "resilience_actuelle"], function(values) {
|
||
let adversite_base = parseInt(values.adversite_base) || 0;
|
||
let adversite_actuelle = parseInt(values.adversite_actuelle) || 0;
|
||
let resilience_actuelle = parseInt(values.resilience_actuelle) || 0;
|
||
|
||
// Calcule la résilience de base
|
||
let resilience_base = adversite_base * 3;
|
||
|
||
// Vérifie les limites
|
||
if (adversite_actuelle > adversite_base) adversite_actuelle = adversite_base;
|
||
if (resilience_actuelle > resilience_base) resilience_actuelle = resilience_base;
|
||
|
||
setAttrs({
|
||
adversite_actuelle,
|
||
resilience_base,
|
||
resilience_actuelle
|
||
});
|
||
});
|
||
});
|
||
|
||
</script> |