sotc-foundry-suite/sotc-damage-wizard/templates/damage-wizard.hbs

249 lines
12 KiB
Handlebars
Raw Permalink 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.

{{!-- templates/damage-wizard.hbs --}}
<div class="dw-root {{#if isClash}}dw-clash{{else}}dw-unilateral{{/if}}">
{{!-- ═══════════════════════════════════════════════════════════════ --}}
{{!-- ZONE PRINCIPALE 3 COLONNES --}}
{{!-- ═══════════════════════════════════════════════════════════════ --}}
<div class="dw-main">
{{!-- ── COLONNE GAUCHE : ATTAQUANT ─────────────────────────────── --}}
<div class="dw-col dw-col-attacker">
<div class="dw-col-header dw-header-attacker">
<span class="dw-header-label">{{attacker.name}}</span>
</div>
{{!-- Stats --}}
<div class="dw-stats-block">
<div class="dw-stat-row">
<span class="dw-stat-lbl">HP</span>
<div class="dw-bar-wrap"><div class="dw-bar dw-bar-hp" style="width:{{attacker.hpPercent}}%"></div></div>
<span class="dw-stat-val">{{attacker.hpValue}}/{{attacker.hpMax}}</span>
</div>
<div class="dw-stat-row">
<span class="dw-stat-lbl">STG</span>
<div class="dw-bar-wrap"><div class="dw-bar dw-bar-stg" style="width:{{attacker.staggerPercent}}%"></div></div>
<span class="dw-stat-val">{{attacker.staggerValue}}/{{attacker.staggerMax}}</span>
</div>
<div class="dw-stat-inline">
<span class="dw-stat-lbl">💡</span><span class="dw-stat-val">{{attacker.lightValue}}/{{attacker.lightMax}}</span>
<span class="dw-stat-lbl" style="margin-left:8px;">💜</span><span class="dw-stat-val">{{attacker.emotion}}</span>
</div>
</div>
{{!-- Compétence --}}
{{#if attacker.skillName}}
<div class="dw-skill-row">
<img class="dw-skill-icon" src="{{attacker.skillImg}}" alt="{{attacker.skillName}}" />
<span class="dw-skill-label">{{attacker.skillName}}</span>
</div>
{{/if}}
{{!-- Dés de l'attaquant --}}
{{#if matchupRows}}
{{#each matchupRows}}
{{#if (eq this.side "atk")}}
<div class="dw-die-card dw-verdict-bg-{{this.verdict}}">
<img class="dw-die-img" src="systems/sotc/assets/dice types/{{this.dieType}}.png" alt="{{this.dieType}}"/>
<span class="dw-die-type dw-tag-{{this.dieType}}">{{this.dieType}}</span>
<span class="dw-die-score">{{this.power}}</span>
<span class="dw-die-formula-sm">{{this.formulaDisplay}}</span>
</div>
{{/if}}
{{/each}}
{{else}}
{{#if attacker.dice}}
{{#each attacker.dice}}
<div class="dw-die-card dw-die-card-preview">
<img class="dw-die-img" src="systems/sotc/assets/dice types/{{this.type}}.png" alt="{{this.type}}"/>
<span class="dw-die-type dw-tag-{{this.type}}">{{this.type}}</span>
<span class="dw-die-formula-sm">{{this.formula}}</span>
</div>
{{/each}}
{{/if}}
{{/if}}
</div>
{{!-- ── COLONNE CENTRE : RÉSOLUTION ──────────────────────────────── --}}
<div class="dw-col dw-col-resolution">
<div class="dw-col-header dw-header-resolution">
<span class="dw-header-label">Résolution</span>
</div>
{{#if matchupRows}}
{{#each matchupRows}}
<div class="dw-matchup dw-matchup-{{this.side}}">
{{!-- Ligne principale : type + score VS type + score --}}
<div class="dw-matchup-main">
<span class="dw-matchup-tag dw-tag-{{this.dieType}}">{{this.dieType}}</span>
<span class="dw-matchup-score">{{this.power}}</span>
{{#if (eq this.clashType "clash")}}
<span class="dw-matchup-vs">⚔</span>
<span class="dw-matchup-tag dw-tag-{{this.oppType}}">{{this.oppType}}</span>
<span class="dw-matchup-score">{{this.oppPower}}</span>
{{else}}
<span class="dw-matchup-unopposed">— sans opposition —</span>
{{/if}}
</div>
{{!-- Verdict --}}
<div class="dw-matchup-verdict dw-verdict-chip-{{this.verdict}}">
{{#if (eq this.verdict "off-win")}}✓ VICTOIRE{{/if}}
{{#if (eq this.verdict "off-lose")}}✗ DÉFAITE{{/if}}
{{#if (eq this.verdict "tie")}}= ÉGALITÉ{{/if}}
{{#if (eq this.verdict "off-win-vs-block")}}✓ vs Block{{/if}}
{{#if (eq this.verdict "off-lose-vs-block")}}↑ Block WIN{{/if}}
{{#if (eq this.verdict "off-win-vs-evade")}}✓ vs Evade{{/if}}
{{#if (eq this.verdict "off-lose-vs-evade")}}🔄 Evade WIN{{/if}}
{{#if (eq this.verdict "block-win-vs-off")}}🛡 Block WIN{{/if}}
{{#if (eq this.verdict "block-lose-vs-off")}}🛡↓ Block LOSE{{/if}}
{{#if (eq this.verdict "block-win-vs-def")}}🛡 Block WIN{{/if}}
{{#if (eq this.verdict "block-lose-vs-def")}}🛡↓ Block LOSE{{/if}}
{{#if (eq this.verdict "evade-win-vs-off")}}🔄 RECYCLÉ{{/if}}
{{#if (eq this.verdict "evade-lose-vs-off")}}↓ Evade LOSE{{/if}}
{{#if (eq this.verdict "evade-win-vs-def")}}💚 Stagger Regain{{/if}}
{{#if (eq this.verdict "evade-lose-vs-def")}}↓ Evade LOSE{{/if}}
{{#if (eq this.verdict "unopposed-off")}}◆ SANS OPP.{{/if}}
{{#if (eq this.verdict "unopposed-saved")}}💾 SAUVEGARDÉ{{/if}}
{{#if (eq this.verdict "unopposed-counter-noop")}}— Counter inactif{{/if}}
</div>
{{!-- Effets --}}
{{#if this.effects.length}}
<div class="dw-matchup-effects">
{{#each this.effects}}<span class="dw-effect-tag">{{this}}</span>{{/each}}
</div>
{{/if}}
</div>
{{/each}}
{{else}}
<div class="dw-resolution-hint">Lance les dés pour voir la résolution</div>
{{/if}}
</div>
{{!-- ── COLONNE DROITE : DÉFENSEUR ─────────────────────────────── --}}
<div class="dw-col dw-col-defender">
<div class="dw-col-header dw-header-defender">
<span class="dw-header-label">{{defender.name}}</span>
</div>
{{!-- Stats --}}
<div class="dw-stats-block">
<div class="dw-stat-row">
<span class="dw-stat-lbl">HP</span>
<div class="dw-bar-wrap"><div class="dw-bar dw-bar-hp" style="width:{{defender.hpPercent}}%"></div></div>
<span class="dw-stat-val">{{defender.hpValue}}/{{defender.hpMax}}</span>
</div>
<div class="dw-stat-row">
<span class="dw-stat-lbl">STG</span>
<div class="dw-bar-wrap"><div class="dw-bar dw-bar-stg" style="width:{{defender.staggerPercent}}%"></div></div>
<span class="dw-stat-val">{{defender.staggerValue}}/{{defender.staggerMax}}</span>
</div>
<div class="dw-stat-inline">
<span class="dw-stat-lbl">💡</span><span class="dw-stat-val">{{defender.lightValue}}/{{defender.lightMax}}</span>
<span class="dw-stat-lbl" style="margin-left:8px;">💜</span><span class="dw-stat-val">{{defender.emotion}}</span>
</div>
</div>
{{!-- Compétence défenseur --}}
{{#if isClash}}
{{#if defender.skillName}}
<div class="dw-skill-row">
<img class="dw-skill-icon" src="{{defender.skillImg}}" alt="{{defender.skillName}}" />
<span class="dw-skill-label">{{defender.skillName}}</span>
</div>
{{else}}
<div class="dw-skill-row dw-skill-none"><span class="dw-skill-label">— Aucune compétence —</span></div>
{{/if}}
{{else}}
<div class="dw-skill-row dw-skill-none"><span class="dw-skill-label">— Attaque directe —</span></div>
{{/if}}
{{!-- Dés du défenseur --}}
{{#if matchupRows}}
{{#each matchupRows}}
{{#if (eq this.side "def")}}
<div class="dw-die-card dw-verdict-bg-{{this.verdict}}">
<img class="dw-die-img" src="systems/sotc/assets/dice types/{{this.dieType}}.png" alt="{{this.dieType}}"/>
<span class="dw-die-type dw-tag-{{this.dieType}}">{{this.dieType}}</span>
<span class="dw-die-score">{{this.power}}</span>
<span class="dw-die-formula-sm">{{this.formulaDisplay}}</span>
</div>
{{/if}}
{{/each}}
{{else}}
{{#if isClash}}
{{#if defender.dice}}
{{#each defender.dice}}
<div class="dw-die-card dw-die-card-preview">
<img class="dw-die-img" src="systems/sotc/assets/dice types/{{this.type}}.png" alt="{{this.type}}"/>
<span class="dw-die-type dw-tag-{{this.type}}">{{this.type}}</span>
<span class="dw-die-formula-sm">{{this.formula}}</span>
</div>
{{/each}}
{{/if}}
{{/if}}
{{/if}}
</div>
</div>{{!-- /.dw-main --}}
{{!-- ═══════════════════════════════════════════════════════════════ --}}
{{!-- BARRE INFÉRIEURE --}}
{{!-- ═══════════════════════════════════════════════════════════════ --}}
<div class="dw-footer">
{{#if clashResult}}
<div class="dw-summary">
{{!-- Dégâts sur le défenseur --}}
<span class="dw-summary-line">
🎯 <strong>{{defender.name}}</strong> →
<span class="dw-sum-hp">HP −{{clashResult.atkHpDamage}}</span>
<span class="dw-sum-stg">Stagger −{{clashResult.atkStaggerDamage}}</span>
{{#if clashResult.defStaggerRegain}}
<span class="dw-sum-gain">Stagger +{{clashResult.defStaggerRegain}}</span>
{{/if}}
</span>
{{!-- Dégâts sur l'attaquant (clash) --}}
{{#if isClash}}
<span class="dw-summary-line">
🎯 <strong>{{attacker.name}}</strong> →
<span class="dw-sum-hp">HP −{{clashResult.defHpDamage}}</span>
<span class="dw-sum-stg">Stagger −{{clashResult.defStaggerDamage}}</span>
{{#if clashResult.atkStaggerRegain}}
<span class="dw-sum-gain">Stagger +{{clashResult.atkStaggerRegain}}</span>
{{/if}}
</span>
{{/if}}
{{!-- PE --}}
{{#if clashResult.atkPE}}
<span class="dw-summary-line dw-pe-line">
💜 PE :
<strong>{{attacker.name}}</strong> +{{clashResult.atkPE}}
{{#if isClash}}<strong>{{defender.name}}</strong> +{{clashResult.defPE}}{{/if}}
</span>
{{/if}}
{{!-- Dés sauvegardés --}}
{{#if clashResult.defSavedDice}}
<span class="dw-summary-line dw-saved-line">💾 {{defender.name}} → Saved Defense Die (état 2)</span>
{{/if}}
{{#if clashResult.atkSavedDice}}
<span class="dw-summary-line dw-saved-line">💾 {{attacker.name}} → Saved Defense Die (état 2)</span>
{{/if}}
</div>
{{/if}}
<div class="dw-footer-btns">
<button class="dw-foot-btn dw-foot-cancel">✕ Annuler</button>
{{#if hasRolled}}
<button class="dw-foot-btn dw-foot-apply">✔ Appliquer</button>
{{else}}
<button class="dw-foot-btn dw-foot-roll">🎲 Lancer les dés</button>
{{/if}}
</div>
</div>
</div>