225 lines
8.9 KiB
Handlebars
225 lines
8.9 KiB
Handlebars
<div class="celestopol chat-roll {{resultClass}}">
|
||
|
||
{{!-- En-tête : acteur + domaine --}}
|
||
<div class="roll-header">
|
||
{{#if actorImg}}
|
||
<img src="{{actorImg}}" class="actor-img" alt="{{actorName}}">
|
||
{{/if}}
|
||
<div class="roll-info">
|
||
<span class="actor-name">{{actorName}}</span>
|
||
{{!-- Arme (mode combat) --}}
|
||
{{#if isCombat}}
|
||
<span class="weapon-info-header">
|
||
<span class="weapon-icon-small">⚔</span>
|
||
<span class="weapon-name-small">{{weaponName}}</span>
|
||
{{#if (gt weaponDegats "0")}}<span class="weapon-degats-small">+{{weaponDegats}}</span>{{/if}}
|
||
</span>
|
||
{{/if}}
|
||
<span class="skill-info">
|
||
{{#if statLabel}}<span class="stat-lbl">{{statLabel}}</span><span class="sep"> › </span>{{/if}}
|
||
<span class="skill-lbl">{{skillLabel}}</span>
|
||
</span>
|
||
{{#if woundLabel}}<span class="wound-info">⚠ {{woundLabel}}</span>{{/if}}
|
||
</div>
|
||
</div>
|
||
|
||
{{!-- Zone dés --}}
|
||
<div class="dice-zone">
|
||
{{#each diceResults as |die|}}
|
||
<span class="die-face d8 {{#if (eq die 8)}}max{{/if}}{{#if (eq die 1)}}min{{/if}}">{{die}}</span>
|
||
{{/each}}
|
||
{{#if useFortune}}<span class="fortune-fixed-badge">+8</span>{{/if}}
|
||
</div>
|
||
|
||
{{!-- Formule détaillée --}}
|
||
<div class="formula-line">
|
||
<span class="fl-label">{{localize "CELESTOPOL.Roll.formula"}} :</span>
|
||
{{#if useFortune}}
|
||
<span class="fl-ndice">1d8</span>
|
||
<span class="fl-op">+</span>
|
||
<span class="fl-mod fortune" title="{{localize "CELESTOPOL.Roll.fortuneFixed"}}">8</span>
|
||
{{else}}
|
||
<span class="fl-ndice">{{nbDice}}d8</span>
|
||
{{/if}}
|
||
<span class="fl-eq"> = </span>
|
||
<span class="fl-sum">{{diceSum}}</span>
|
||
{{#if useFortune}}
|
||
<span class="fl-op">+</span>
|
||
<span class="fl-mod fortune">8</span>
|
||
{{/if}}
|
||
{{#if skillValue}}
|
||
<span class="fl-op">+</span>
|
||
<span class="fl-mod" title="{{localize "CELESTOPOL.Roll.skillValue"}}">{{skillValue}}</span>
|
||
{{/if}}
|
||
{{#if woundMalus}}
|
||
<span class="fl-op">−</span>
|
||
<span class="fl-mod wound" title="{{localize "CELESTOPOL.Roll.woundMalus"}}">{{abs woundMalus}}</span>
|
||
{{/if}}
|
||
{{#if armorMalus}}
|
||
<span class="fl-op">−</span>
|
||
<span class="fl-mod armor" title="{{localize "CELESTOPOL.Roll.armorMalus"}}">🛡{{abs armorMalus}}</span>
|
||
{{/if}}
|
||
{{#if modifier}}
|
||
<span class="fl-op">{{#if (gt modifier 0)}}+{{else}}−{{/if}}</span>
|
||
<span class="fl-mod">{{abs modifier}}</span>
|
||
{{/if}}
|
||
{{#if aspectMod}}
|
||
<span class="fl-op">{{#if (gt aspectMod 0)}}+{{else}}−{{/if}}</span>
|
||
<span class="fl-asp" title="{{localize "CELESTOPOL.Roll.usedAspect"}}">✦{{abs aspectMod}}</span>
|
||
{{/if}}
|
||
{{#if factionAspectBonus}}
|
||
<span class="fl-op">+</span>
|
||
<span class="fl-faction" title="{{localize "CELESTOPOL.FactionAspect.rollLabel"}}">⚑{{factionAspectBonus}}</span>
|
||
{{/if}}
|
||
{{#if situationMod}}
|
||
<span class="fl-op">{{#if (gt situationMod 0)}}+{{else}}−{{/if}}</span>
|
||
<span class="fl-mod sit" title="{{localize "CELESTOPOL.Roll.situationMod"}}">◈{{abs situationMod}}</span>
|
||
{{/if}}
|
||
<span class="fl-sep">=</span>
|
||
<span class="fl-total">{{total}}</span>
|
||
</div>
|
||
|
||
{{!-- Seuil et marge (masqué en opposition) --}}
|
||
{{#unless isOpposition}}
|
||
<div class="threshold-line">
|
||
<span class="vs-wrap">
|
||
<span class="vs-label">vs</span>
|
||
<span class="diff-label">{{difficultyLabel}}</span>
|
||
{{#unless isCombat}}<span class="diff-val">({{difficultyValue}})</span>{{/unless}}
|
||
</span>
|
||
{{#if margin}}
|
||
<span class="margin-badge {{#if marginAbove}}above{{else}}below{{/if}}">
|
||
{{#if marginAbove}}+{{/if}}{{margin}}
|
||
</span>
|
||
{{/if}}
|
||
</div>
|
||
{{/unless}}
|
||
|
||
{{!-- Infos bonus (Destin, Fortune, Aspect) --}}
|
||
{{#if useDestin}}
|
||
<div class="used-info">
|
||
<span class="used-destin">✦ {{localize "CELESTOPOL.Roll.usedDestin"}}</span>
|
||
</div>
|
||
{{/if}}
|
||
{{#if useFortune}}
|
||
<div class="used-info">
|
||
<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}}
|
||
{{#if armorMalus}}
|
||
<div class="used-info">
|
||
<span class="used-armor">🛡 {{localize "CELESTOPOL.Roll.armorMalus"}} (−{{abs armorMalus}})</span>
|
||
</div>
|
||
{{/if}}
|
||
{{#if factionAspectBonus}}
|
||
<div class="used-info used-faction-aspect">
|
||
<span>⚑ {{factionAspectLabel}} (+{{factionAspectBonus}})</span>
|
||
</div>
|
||
{{/if}}
|
||
|
||
{{!-- Résultat du Dé de la Lune (narratif) --}}
|
||
{{#if hasMoonDie}}
|
||
<div class="moon-die-result {{moonResultClass}}">
|
||
<span class="moon-die-face">{{moonFaceSymbol}}</span>
|
||
<div class="moon-die-info">
|
||
<span class="moon-die-phase">{{moonFaceLabel}}</span>
|
||
<span class="moon-die-type">{{moonResultLabel}}</span>
|
||
<span class="moon-die-desc">{{moonResultDesc}}</span>
|
||
</div>
|
||
</div>
|
||
{{/if}}
|
||
|
||
{{!-- Bandeau résultat --}}
|
||
<div class="roll-result-banner {{resultClass}}">
|
||
{{#if autoSuccess}}
|
||
<span class="result-icon">★</span>
|
||
<span class="result-label">{{localize "CELESTOPOL.Roll.autoSuccess"}}</span>
|
||
{{else if isOpposition}}
|
||
<span class="result-icon">⚔</span>
|
||
<span class="result-label">{{localize "CELESTOPOL.Roll.opposition"}}</span>
|
||
<span class="result-desc">{{localize "CELESTOPOL.Roll.oppositionResolved"}}</span>
|
||
{{else if isTie}}
|
||
<span class="result-icon">⚖</span>
|
||
<span class="result-label">{{localize "CELESTOPOL.Combat.tie"}}</span>
|
||
<span class="result-desc">{{localize "CELESTOPOL.Combat.tieDesc"}}</span>
|
||
{{else if isSuccess}}
|
||
<span class="result-icon">✦</span>
|
||
<span class="result-label">{{localize "CELESTOPOL.Roll.success"}}</span>
|
||
{{#if isCombat}}
|
||
{{#if isRangedDefense}}
|
||
<span class="result-desc">{{localize "CELESTOPOL.Combat.rangedDefenseSuccess"}}</span>
|
||
{{else}}
|
||
<span class="result-desc">{{localize "CELESTOPOL.Combat.successHit"}}</span>
|
||
{{/if}}
|
||
{{/if}}
|
||
{{else if isFailure}}
|
||
<span class="result-icon">✖</span>
|
||
<span class="result-label">{{localize "CELESTOPOL.Roll.failure"}}</span>
|
||
{{#if isCombat}}
|
||
{{#if (eq weaponType "melee")}}
|
||
<span class="result-desc">{{localize "CELESTOPOL.Combat.failureHit"}}</span>
|
||
{{else if isRangedDefense}}
|
||
<span class="result-desc">{{localize "CELESTOPOL.Combat.rangedDefenseFailure"}}</span>
|
||
{{else}}
|
||
<span class="result-desc">{{localize "CELESTOPOL.Combat.distanceNoWound"}}</span>
|
||
{{/if}}
|
||
{{/if}}
|
||
{{/if}}
|
||
</div>
|
||
|
||
{{#if hasDamageSummary}}
|
||
<div class="weapon-damage-summary">
|
||
<div class="damage-header">{{localize "CELESTOPOL.Combat.damageLabel"}}</div>
|
||
<div class="damage-main">
|
||
<span class="damage-value">{{incomingWoundsDisplay}}</span>
|
||
<span class="damage-unit">{{localize "CELESTOPOL.Combat.damageUnit"}}</span>
|
||
</div>
|
||
|
||
{{#if hasVariableDamage}}
|
||
<div class="damage-note">{{localize "CELESTOPOL.Combat.damageManual"}}</div>
|
||
{{else}}
|
||
{{#if targetActorId}}
|
||
<div class="damage-breakdown">
|
||
<div><strong>{{localize "CELESTOPOL.Combat.targetLabel"}} :</strong> {{targetActorName}}</div>
|
||
<div><strong>{{localize "CELESTOPOL.Combat.damageArmorReduction"}} :</strong> −{{selectedTargetProtection}}</div>
|
||
<div><strong>{{localize "CELESTOPOL.Combat.damageApplied"}} :</strong> {{selectedTargetAppliedWounds}}</div>
|
||
</div>
|
||
<div class="weapon-damage-actions">
|
||
<button type="button" class="damage-apply-button" data-action="apply-weapon-damage" data-actor-id="{{targetActorId}}" data-incoming-wounds="{{incomingWounds}}">
|
||
{{localize "CELESTOPOL.Combat.applyDamage"}}
|
||
</button>
|
||
</div>
|
||
{{else if availableTargets.length}}
|
||
<div class="weapon-damage-actions">
|
||
<select name="targetActorId">
|
||
<option value="">{{localize "CELESTOPOL.Combat.targetAuto"}}</option>
|
||
{{#each availableTargets as |target|}}
|
||
<option value="{{target.id}}" {{#if target.selected}}selected{{/if}}>{{target.name}}</option>
|
||
{{/each}}
|
||
</select>
|
||
<button type="button" class="damage-apply-button" data-action="apply-weapon-damage" data-incoming-wounds="{{incomingWounds}}">
|
||
{{localize "CELESTOPOL.Combat.applyDamage"}}
|
||
</button>
|
||
</div>
|
||
{{else}}
|
||
<div class="damage-note">{{localize "CELESTOPOL.Combat.noCharacterTargetAvailable"}}</div>
|
||
{{/if}}
|
||
{{/if}}
|
||
</div>
|
||
{{/if}}
|
||
|
||
{{!-- Blessure auto-cochée (résistance ratée ou combat mêlée raté) --}}
|
||
{{#if woundTaken}}
|
||
<div class="resistance-wound-notice">
|
||
<span class="wound-icon">🩹</span>
|
||
<span>{{#if isCombat}}{{#if isRangedDefense}}{{localize "CELESTOPOL.Combat.rangedDefensePlayerWounded"}}{{else}}{{localize "CELESTOPOL.Combat.playerWounded"}}{{/if}}{{else}}{{localize "CELESTOPOL.Roll.woundTaken"}}{{/if}}</span>
|
||
</div>
|
||
{{/if}}
|
||
|
||
</div>
|