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
This commit is contained in:
2026-06-28 19:13:05 +02:00
parent 05c93f9475
commit 3df46b5848
38 changed files with 4686 additions and 4602 deletions
+47
View File
@@ -0,0 +1,47 @@
{{#if (equals type "weapon")}}
<div class="attack-result-damage single-btn">
<button class="roll-damage-btn"
data-attacker-id="{{attackerId}}"
data-defender-id="{{defenderId}}"
data-defender-token-id="{{defenderTokenId}}"
data-extra-shield-dr="{{shieldDamageReduction}}"
data-weapon-id="{{attackWeaponId}}"
data-damage-type="medium"
data-d30-bleed="{{d30Bleed}}"
data-d30-damage-mult="{{d30DamageMultiplier}}"
data-d30-dr-mult="{{d30DrMultiplier}}">
<i class="fa-solid fa-dice-d20"></i> Damage
</button>
</div>
{{else if (equals type "monster")}}
<div class="attack-result-damage single-btn">
<button class="roll-damage-btn"
data-attacker-id="{{attackerId}}"
data-defender-id="{{defenderId}}"
data-defender-token-id="{{defenderTokenId}}"
data-extra-shield-dr="{{shieldDamageReduction}}"
data-attack-key="{{attackRollKey}}"
data-damage-type="monster"
data-d30-bleed="{{d30Bleed}}"
data-d30-damage-mult="{{d30DamageMultiplier}}"
data-d30-dr-mult="{{d30DrMultiplier}}">
<i class="fa-solid fa-burst"></i> Damage
</button>
</div>
{{else if (equals type "spell")}}
<div class="attack-result-damage spell-damage">
{{#each tiers}}
<button class="roll-damage-btn"
data-attacker-id="{{../attackerId}}"
data-defender-id="{{../defenderId}}"
data-defender-token-id="{{../defenderTokenId}}"
data-damage-type="spell"
data-damage-formula="{{this.formula}}"
data-d30-bleed="{{../d30Bleed}}"
data-d30-damage-mult="{{../d30DamageMultiplier}}"
data-d30-dr-mult="{{../d30DrMultiplier}}">
<i class="fa-solid fa-wand-magic-sparkles"></i> {{this.label}} ({{this.formula}})
</button>
{{/each}}
</div>
{{/if}}