DataModels + Appv2 migration : OK

This commit is contained in:
2026-03-01 01:12:00 +01:00
parent 1ffb8b08fc
commit 6c70dc147c
130 changed files with 2998 additions and 741 deletions

View File

@@ -1,8 +1,16 @@
<h4><strong>{{localize "BOL.chat.alchemytitle" name=alchemy.name}}</strong></h4>
<h4><strong>{{localize "BOL.chat.alchemypoints" pcCostCurrent=pcCostCurrent}}</strong></h4>
{{#if isSuccess}}
{{localize "BOL.chat.alchemysuccess"}}
{{else}}
{{localize "BOL.chat.alchemyfailure"}}
{{/if}}
<div class="bol-alchemy-card">
<div class="alchemy-card-header">
<img class="alchemy-img" src="{{alchemy.img}}" alt="{{alchemy.name}}"/>
<div class="alchemy-card-title">
<span class="alchemy-name">{{alchemy.name}}</span>
<span class="alchemy-stat-badge"><i class="fas fa-flask"></i> {{localize "BOL.chat.alchemypoints" pcCostCurrent=pcCostCurrent}}</span>
</div>
</div>
<div class="alchemy-result {{#if isSuccess}}success{{else}}failure{{/if}}">
{{#if isSuccess}}
<i class="fas fa-check-circle"></i> {{{localize "BOL.chat.alchemysuccess"}}}
{{else}}
<i class="fas fa-times-circle"></i> {{{localize "BOL.chat.alchemyfailure"}}}
{{/if}}
</div>
</div>

View File

@@ -1,20 +1,25 @@
<img class="chat-icon" src="{{weapon.img}}" alt="{{weapon.name}}"/>
<h3><strong>{{localize "BOL.chat.damageresult" name=weapon.name total=damageRoll.total}}</strong></h3>
{{#if defender}}
<h3><strong>{{localize "BOL.chat.damagetarget" target=defender.name}}</strong></h3>
{{/if}}
{{#if weapon.system.properties.damageReroll1}}
<div>
<label>{{localize "BOL.chat.weaponreroll1"}}</label>
<div class="bol-damage-card">
<div class="damage-card-header">
<img class="damage-weapon-img" src="{{weapon.img}}" alt="{{weapon.name}}"/>
<div class="damage-card-title">
<div class="damage-card-label">⚔ {{localize "BOL.ui.damages"}}</div>
<div class="damage-weapon-name">{{weapon.name}}</div>
<div class="damage-formula">{{damageFormula}}</div>
<div class="damage-total-badge">{{damageRoll.total}}</div>
</div>
</div>
{{/if}}
<div class="actions-section">
{{#if targetId}}
<div id="{{applyId}}">
<button class="chat-damage-apply" data-attack-id="{{id}}">{{localize "BOL.chat.applydamagetotarget"}}</button>
</div>
<br>
{{#if defender}}
<div class="damage-target">{{localize "BOL.chat.damagetarget" target=defender.name}}</div>
{{/if}}
</div>
{{#if weapon.system.properties.damageReroll1}}
<div class="damage-note">{{localize "BOL.chat.weaponreroll1"}}</div>
{{/if}}
{{#if targetId}}
<div class="actions-section" id="{{applyId}}">
<button class="chat-damage-apply" data-attack-id="{{id}}">{{localize "BOL.chat.applydamagetotarget"}}</button>
</div>
{{/if}}
</div>

View File

@@ -1,27 +1,30 @@
<img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}" />
{{localize "BOL.chat.hurttitle" name=defender.name damageTotal=damageTotal}}
<div class="bol-defense-card">
<div class="defense-card-header">
<img class="damage-weapon-img" src="{{defender.img}}" alt="{{defender.name}}"/>
<div class="damage-card-title">
<div class="damage-weapon-name">{{defender.name}}</div>
<div class="damage-total-badge damage-total-badge--hit">{{damageTotal}}</div>
</div>
</div>
{{#if damagesIgnoresArmor}}
<br>{{localize "BOL.chat.armordefault"}}
{{/if}}
{{#if damagesIgnoresArmor}}
<div class="damage-note damage-note--warn">⚠ {{localize "BOL.chat.armordefault"}}</div>
{{/if}}
<button class="damage-handling" data-defense-mode="damage-with-armor" data-attack-id="{{attackId}}">{{localize
"BOL.chat.witharmor"}}</button>
<button class="damage-handling" data-defense-mode="damage-without-armor" data-attack-id="{{attackId}}">{{localize
"BOL.chat.withoutarmor"}}</button>
<div class="actions-section defense-actions">
<button class="damage-handling" data-defense-mode="damage-with-armor" data-attack-id="{{attackId}}">{{localize "BOL.chat.witharmor"}}</button>
<button class="damage-handling" data-defense-mode="damage-without-armor" data-attack-id="{{attackId}}">{{localize "BOL.chat.withoutarmor"}}</button>
{{#if (gt defenderHeroPoints 0)}}
<button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize
"BOL.chat.shakeoff"}}</button>
{{#if (gt defenderHeroPoints 0)}}
<div class="defense-hero-separator">— {{localize "BOL.ui.heropoints"}} —</div>
<button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize "BOL.chat.shakeoff"}}</button>
{{#each defenderWeapons as |weapon idx|}}
<button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}" data-weapon-id="{{weapon._id}}">{{localize "BOL.chat.splinteredshield" name=weapon.name}}</button>
{{/each}}
{{/if}}
{{#each defenderWeapons as |weapon idx|}}
<button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}"
data-weapon-id="{{weapon._id}}">{{localize "BOL.chat.splinteredshield" name=weapon.name}}</button>
{{/each}}
{{/if}}
<button class="damage-handling" data-defense-mode="damage-not-applied" data-attack-id="{{attackId}}">{{localize "BOL.chat.nodamage"}}</button>
</div>
<button class="damage-handling" data-defense-mode="damage-not-applied" data-attack-id="{{attackId}}">{{localize
"BOL.chat.nodamage"}}</button>
<br>
{{localize "BOL.chat.defenseReduceDamage2"}}
<div class="defense-footer-note">{{localize "BOL.chat.defenseReduceDamage2"}}</div>
</div>

View File

@@ -1,22 +1,33 @@
<img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}"/>
<h3>{{localize "BOL.chat.damagesummary" name=name}}</h3>
<ul>
<li>
{{#if (eq defenseMode "damage-with-armor")}}
{{localize "BOL.chat.protectvalue"}} : {{armorProtect}}.
{{/if}}
{{#if (eq defenseMode "damage-without-armor")}}
{{localize "BOL.chat.noprotectvalue"}}
{{/if}}
{{#if (eq defenseMode "hero-reduce-damage")}}
{{localize "BOL.chat.protectvalue"}} : {{armorProtect}}.
{{localize "BOL.chat.heroreducedamage" total=rollHero.total}}
{{/if}}
{{#if (eq defenseMode "hero-in-extremis")}}
{{localize "BOL.chat.herosplintered" name=weaponHero.name}}
{{/if}}
</li>
<li>
{{localize "BOL.chat.finaldamage" finalDamage=finalDamage}}
</li>
</ul>
<div class="bol-defense-summary-card">
<div class="defense-summary-header">
<img class="damage-weapon-img" src="{{defender.img}}" alt="{{defender.name}}"/>
<div class="damage-card-title">
<div class="damage-card-label">🛡 {{localize "BOL.chat.damagesummary" name=""}}</div>
<div class="damage-weapon-name">{{name}}</div>
{{#if (eq finalDamage 0)}}
<div class="damage-total-badge damage-total-badge--none">0</div>
{{else}}
<div class="damage-total-badge">{{finalDamage}}</div>
{{/if}}
</div>
</div>
<div class="defense-summary-details">
{{#if (eq defenseMode "damage-with-armor")}}
<div class="defense-detail">🔰 {{localize "BOL.chat.protectvalue"}} : <strong>{{armorProtect}}</strong></div>
{{/if}}
{{#if (eq defenseMode "damage-without-armor")}}
<div class="defense-detail warning">⚠ {{localize "BOL.chat.noprotectvalue"}}</div>
{{/if}}
{{#if (eq defenseMode "hero-reduce-damage")}}
<div class="defense-detail">🔰 {{localize "BOL.chat.protectvalue"}} : <strong>{{armorProtect}}</strong></div>
<div class="defense-detail">✨ {{localize "BOL.chat.heroreducedamage" total=rollHero.total}}</div>
{{/if}}
{{#if (eq defenseMode "hero-in-extremis")}}
<div class="defense-detail">⚔ {{localize "BOL.chat.herosplintered" name=weaponHero.name}}</div>
{{/if}}
<div class="defense-final {{#if (eq finalDamage 0)}}defense-final--safe{{/if}}">
{{localize "BOL.chat.finaldamage" finalDamage=finalDamage}}
</div>
</div>
</div>

View File

@@ -1,11 +1,21 @@
<img class="chat-icon" src="{{defender.img}}" alt="{{defender.name}}"/>
<h3>{{localize "BOL.chat.damagesummary" name=name}}</h3>
<ul>
<li>
{{#if (eq finalDamage 0)}}
{{localize "BOL.chat.nodamagesummary"}}
{{else}}
{{localize "BOL.chat.damageresume" name=name}}
{{/if}}
</li>
</ul>
<div class="bol-defense-summary-card">
<div class="defense-summary-header">
<img class="damage-weapon-img" src="{{defender.img}}" alt="{{defender.name}}"/>
<div class="damage-card-title">
<div class="damage-card-label">🛡 {{localize "BOL.chat.damagesummary" name=""}}</div>
<div class="damage-weapon-name">{{name}}</div>
{{#if (eq finalDamage 0)}}
<div class="damage-total-badge damage-total-badge--none">0</div>
{{else}}
<div class="damage-total-badge">{{finalDamage}}</div>
{{/if}}
</div>
</div>
<div class="defense-summary-details">
{{#if (eq finalDamage 0)}}
<div class="defense-final defense-final--safe">{{localize "BOL.chat.nodamagesummary"}}</div>
{{else}}
<div class="defense-final">{{localize "BOL.chat.damageresume" name=name}}</div>
{{/if}}
</div>
</div>

View File

@@ -1,26 +1,35 @@
<h4><strong>{{localize "BOL.chat.horoscope"}} {{localize horoscopeTypeLabel}}</strong></h4>
<h4><strong>{{localize "BOL.chat.horoscopepoints" points=astrologyPointsCost}}</strong></h4>
<div class="bol-horoscope-card">
<div class="horoscope-card-header">
<i class="fas fa-star horoscope-icon"></i>
<div class="horoscope-card-title">
<span class="horoscope-type">{{localize "BOL.chat.horoscope"}}{{localize horoscopeTypeLabel}}</span>
<span class="horoscope-stat-badge"><i class="fas fa-coins"></i> {{localize "BOL.chat.horoscopepoints" points=astrologyPointsCost}}</span>
</div>
</div>
{{#if (eq horoscopeType "minor")}}
{{#if isSuccess}}
{{localize "BOL.chat.horoscopeminorsuccess"}}
{{else}}
{{localize "BOL.chat.horoscopeminorfailure"}}
{{/if}}
{{/if}}
<div class="horoscope-result">
{{#if (eq horoscopeType "minor")}}
{{#if isSuccess}}
<span class="horoscope-text success">{{{localize "BOL.chat.horoscopeminorsuccess"}}}</span>
{{else}}
<span class="horoscope-text failure">{{{localize "BOL.chat.horoscopeminorfailure"}}}</span>
{{/if}}
{{/if}}
{{#if (eq horoscopeType "major")}}
{{#if isSuccess}}
{{localize "BOL.chat.horoscopemajorsuccess" horoscopeName=horoscopeName}}
{{else}}
{{localize "BOL.chat.horoscopemajorfailure" horoscopeName=horoscopeName}}
{{/if}}
{{/if}}
{{#if (eq horoscopeType "major")}}
{{#if isSuccess}}
<span class="horoscope-text success">{{{localize "BOL.chat.horoscopemajorsuccess" horoscopeName=horoscopeName}}}</span>
{{else}}
<span class="horoscope-text failure">{{{localize "BOL.chat.horoscopemajorfailure" horoscopeName=horoscopeName}}}</span>
{{/if}}
{{/if}}
{{#if (eq horoscopeType "majorgroup")}}
{{#if isSuccess}}
{{localize "BOL.chat.horoscopemajorgroupsuccess" careerBonus=careerBonus}}
{{else}}
{{localize "BOL.chat.horoscopemajorgroupfailure" careerBonus=careerBonus}}
{{/if}}
{{/if}}
{{#if (eq horoscopeType "majorgroup")}}
{{#if isSuccess}}
<span class="horoscope-text success">{{{localize "BOL.chat.horoscopemajorgroupsuccess" careerBonus=careerBonus}}}</span>
{{else}}
<span class="horoscope-text failure">{{{localize "BOL.chat.horoscopemajorgroupfailure" careerBonus=careerBonus}}}</span>
{{/if}}
{{/if}}
</div>
</div>

View File

@@ -1,4 +1,13 @@
<h4><strong>{{localize "BOL.chat.spell"}} : {{spell.name}}</strong></h4>
<h4><strong>{{localize "BOL.chat.spellcost"}} : {{ppCost}}</strong></h4>
<h4><strong>{{localize "BOL.chat.spellremaining"}} : {{remainingPP}}</strong></h4>
<div class="bol-spell-card">
<div class="spell-card-header">
<img class="spell-img" src="{{spell.img}}" alt="{{spell.name}}"/>
<div class="spell-card-title">
<span class="spell-name">{{spell.name}}</span>
<div class="spell-stats">
<span class="spell-stat-badge cost"><i class="fas fa-bolt"></i> {{localize "BOL.chat.spellcost"}} : {{ppCost}}</span>
{{#if remainingPP}}<span class="spell-stat-badge remaining"><i class="fas fa-battery-half"></i> {{localize "BOL.chat.spellremaining"}} : {{remainingPP}}</span>{{/if}}
</div>
</div>
</div>
</div>