Files
roll20-character-sheets/Penombre/penombre.html
T

742 lines
41 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div class="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="&#123;&#123;harmonique=1&#125;&#125;">Toujours Harmonique</option>
<option value="&#123;&#123;merveilleux=1&#125;&#125;">Toujours Merveilleux</option>
<option
value="{{query=1}} ?{Type de jet?|Harmonique,&#123&#123harmonique=1|Merveilleux,&#123&#123merveilleux=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&#39;Â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&#39;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&#39;É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&#39;Â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&#39;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&#39;É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 &#8595;"></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 dadversaire</h2>
<div class="adversaire-content">
<div class="adversaire-entete">
<input type="text" name="attr_character_name" class="adversaire-nom"
placeholder="Nom de ladversaire">
<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 laction adverse">
<textarea name="attr_action_desc" placeholder="Décris ici laction 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 lintrigue">
<textarea name="attr_intrigue_desc"
placeholder="Décris ici lintrigue 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>