feat: implémente 'Puiser dans ses ressources'
Règle : le joueur peut ignorer tous les malus actifs contre une case de Spleen. - roll.mjs : checkbox puiserRessources ; ignore woundMalus, modifier négatif et aspectMod négatif ; incrémente system.spleen.lvl +1 après le jet - roll-dialog.hbs : bloc rouge foncé visible si woundMalus < 0 ; preview mis à jour - chat-message.hbs : bandeau '💪 Ressources puisées' si utilisé - roll.less : .form-puiser-row, .used-info.used-puiser - lang/fr.json : Roll.puiser/puiserDesc/usedPuiser Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -84,6 +84,11 @@
|
||||
<span class="used-fortune">⚜ {{localize "CELESTOPOL.Roll.usedFortune"}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if puiserRessources}}
|
||||
<div class="used-info used-puiser">
|
||||
<span>💪 {{localize "CELESTOPOL.Roll.usedPuiser"}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Résultat du Dé de la Lune (narratif) --}}
|
||||
{{#if hasMoonDie}}
|
||||
|
||||
@@ -82,6 +82,21 @@
|
||||
</label>
|
||||
</div>
|
||||
|
||||
{{!-- Puiser dans ses ressources — si malus de blessures --}}
|
||||
{{#if hasMalus}}
|
||||
<div class="form-puiser-row">
|
||||
<label class="puiser-toggle" for="puiserRessources">
|
||||
<input type="checkbox" id="puiserRessources" name="puiserRessources">
|
||||
<span class="puiser-icon">💪</span>
|
||||
<span class="puiser-text">
|
||||
<span class="puiser-main">{{localize "CELESTOPOL.Roll.puiser"}}</span>
|
||||
<span class="puiser-sub">{{localize "CELESTOPOL.Roll.puiserDesc"}}</span>
|
||||
</span>
|
||||
<span class="puiser-cost">+1 <i class="fas fa-face-sad-tear"></i></span>
|
||||
</label>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Fortune (1d8+8) — seulement si Fortune > 0 --}}
|
||||
{{#if fortuneValue}}
|
||||
<div class="form-fortune-row">
|
||||
@@ -126,12 +141,17 @@
|
||||
const woundMalus = {{woundMalus}};
|
||||
|
||||
function update() {
|
||||
const modifier = parseInt(wrap.querySelector('#modifier')?.value ?? 0) || 0;
|
||||
const aspectMod = parseInt(wrap.querySelector('#aspectModifier')?.value ?? 0) || 0;
|
||||
const useDestin = wrap.querySelector('#useDestin')?.checked;
|
||||
const useFortune= wrap.querySelector('#useFortune')?.checked;
|
||||
const ndice = useDestin ? 3 : 2;
|
||||
const totalMod = skillVal + woundMalus + modifier + aspectMod;
|
||||
const modifier = parseInt(wrap.querySelector('#modifier')?.value ?? 0) || 0;
|
||||
const aspectMod = parseInt(wrap.querySelector('#aspectModifier')?.value ?? 0) || 0;
|
||||
const useDestin = wrap.querySelector('#useDestin')?.checked;
|
||||
const useFortune = wrap.querySelector('#useFortune')?.checked;
|
||||
const puiser = wrap.querySelector('#puiserRessources')?.checked;
|
||||
const ndice = useDestin ? 3 : 2;
|
||||
|
||||
const effWound = puiser ? 0 : woundMalus;
|
||||
const effMod = puiser ? Math.max(0, modifier) : modifier;
|
||||
const effAspect = puiser ? Math.max(0, aspectMod) : aspectMod;
|
||||
const totalMod = skillVal + effWound + effMod + effAspect;
|
||||
|
||||
let formula;
|
||||
if (useFortune) {
|
||||
@@ -147,7 +167,7 @@
|
||||
if (previewEl) previewEl.textContent = formula;
|
||||
}
|
||||
|
||||
wrap.querySelectorAll('#modifier, #aspectModifier, #useDestin, #useFortune').forEach(el => {
|
||||
wrap.querySelectorAll('#modifier, #aspectModifier, #useDestin, #useFortune, #puiserRessources').forEach(el => {
|
||||
el.addEventListener('change', update);
|
||||
el.addEventListener('input', update);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user