Files
uberwald 3df46b5848 refactor: extract inline HTML to templates, split oversized files, fix bugs
- Extract all inline HTML from JS into 21 Handlebars templates (chat/, dialogs/, ui/)
- Split utils.mjs (1507) into barrel + helpers.mjs, combat.mjs, d30.mjs
- Split roll.mjs (1632) into barrel + roll-base.mjs, roll-prompt.mjs, roll-combat.mjs, roll-damage.mjs
- Split lethal-fantasy.mjs (1426) into bootstrap + chat-reaction.mjs
- Fix: missing async on injectDiceTray (free-roll.mjs:29 SyntaxError)
- Fix: weapon._id fallback for deserialized chat-message weapon objects
- Fix: missing await on rollModifier.evaluate() calls in roll-combat.mjs
- Fix: choices→choicesList ReferenceError in utils.mjs
- Fix: add 12 missing i18n keys (chooseWeapon, chooseSave, attackRoll, etc.)
- Fix: restore sideLabel in bonus-die-select.hbs
- Clean: remove dead messageContent param, console.log→log()
- Style: barrel files preserve existing import paths
2026-06-28 19:13:05 +02:00

31 lines
1.5 KiB
Handlebars

<div class="attack-result {{#if isAttackWin}}attack-success{{else}}attack-failure{{/if}}">
<h3><i class="fa-solid {{#if isAttackWin}}fa-sword{{else}}fa-shield{{/if}}"></i> Combat Result</h3>
<div class="combat-comparison">
<div class="combat-side attacker {{#if isAttackWin}}winner{{else}}loser{{/if}}">
<div class="side-label">{{localize "LETHALFANTASY.Combat.attacker"}}</div>
<div class="side-info">
<div class="side-name">{{attackerName}}</div>
<div class="side-roll">{{attackRoll}}</div>
</div>
</div>
<div class="combat-vs">VS</div>
<div class="combat-side defender {{#if isAttackWin}}loser{{else}}winner{{/if}}">
<div class="side-label">{{localize "LETHALFANTASY.Combat.defender"}}</div>
<div class="side-info">
<div class="side-name">{{defenderName}}</div>
<div class="side-roll">{{defenseRoll}}</div>
</div>
</div>
</div>
<div class="combat-result-text">
{{#if (equals outcome "shielded-hit")}}
<i class="fa-solid fa-shield"></i> <strong>{{defenderName}}</strong> has blocked with shield — apply armor DR + shield DR <strong>{{shieldDamageReduction}}</strong>.
{{else if isAttackWin}}
<i class="fa-solid fa-circle-check"></i> <strong>{{attackerName}}</strong> hits <strong>{{defenderName}}</strong>!
{{else}}
<i class="fa-solid fa-shield-halved"></i> <strong>{{defenderName}}</strong> avoided the attack!
{{/if}}
</div>
{{{damageButton}}}
</div>