Corrections sur factions, aspects, degats et fiches PNJs
This commit is contained in:
@@ -35,11 +35,8 @@
|
||||
<div class="armure-stat-box">
|
||||
<label>{{localize "CELESTOPOL.Armure.malus"}}</label>
|
||||
<div class="armure-stat-value">
|
||||
{{#if isEditable}}
|
||||
<input type="number" name="system.malus" value="{{system.malus}}" min="0" max="2">
|
||||
{{else}}
|
||||
<span>{{system.malus}}</span>
|
||||
{{/if}}
|
||||
<input type="hidden" name="system.malus" value="{{system.protection}}">
|
||||
<span data-armure-malus-value>{{system.protection}}</span>
|
||||
</div>
|
||||
<div class="armure-stat-hint">{{localize "CELESTOPOL.Armure.malusHint"}}</div>
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<img src="{{item.img}}" class="item-icon">
|
||||
<span class="item-name">{{item.name}}</span>
|
||||
<span class="item-tag prot"><i class="fas fa-shield"></i> {{item.system.protection}}</span>
|
||||
{{#if item.system.malus}}<span class="item-tag malus">−{{item.system.malus}} {{localize "CELESTOPOL.Armure.malus"}}</span>{{/if}}
|
||||
{{#if item.system.protection}}<span class="item-tag malus">−{{item.system.protection}} {{localize "CELESTOPOL.Armure.malus"}}</span>{{/if}}
|
||||
<div class="item-controls">
|
||||
<a data-action="toggleArmure" data-item-uuid="{{item.uuid}}"
|
||||
class="equip-toggle {{#if item.system.equipped}}equipped{{/if}}"
|
||||
|
||||
@@ -1,55 +1,124 @@
|
||||
<div class="tab factions {{tab.cssClass}}" data-group="sheet" data-tab="factions">
|
||||
<table class="factions-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{localize "CELESTOPOL.Faction.label"}}</th>
|
||||
<th>{{localize "CELESTOPOL.Faction.relation"}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{!-- Factions standard --}}
|
||||
{{#each factionRows as |faction|}}
|
||||
<tr class="faction-row" data-faction="{{faction.id}}">
|
||||
<td class="faction-name">{{localize faction.label}}</td>
|
||||
<td class="faction-value">
|
||||
<div class="faction-checkboxes-container">
|
||||
<div class="faction-checkboxes">
|
||||
{{#each faction.dots as |dot|}}
|
||||
<span class="faction-dot {{dot.type}} {{#if dot.filled}}filled{{/if}}"
|
||||
{{#if @root.isEditable}}data-action="factionLevel" data-faction="{{../id}}" data-index="{{dot.index}}"{{/if}}></span>
|
||||
{{/each}}
|
||||
</div>
|
||||
<span class="faction-count">{{faction.valueStr}}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
<div class="factions-layout">
|
||||
<section class="faction-aspect-summary">
|
||||
<div class="faction-aspect-summary-header">
|
||||
<div class="faction-aspect-summary-title">{{localize "CELESTOPOL.FactionAspect.title"}}</div>
|
||||
{{#if isGM}}
|
||||
<a class="faction-aspect-manage" data-action="manageFactionAspects">
|
||||
<i class="fa-solid fa-sliders"></i> {{localize "CELESTOPOL.FactionAspect.manage"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{!-- Factions personnalisées --}}
|
||||
{{#each factionCustom as |faction|}}
|
||||
<tr class="faction-row custom" data-faction="{{faction.id}}">
|
||||
<td>
|
||||
{{#if @root.isEditMode}}
|
||||
<input type="text" name="system.factions.{{faction.id}}.label"
|
||||
value="{{faction.label}}"
|
||||
placeholder="{{localize 'CELESTOPOL.Faction.custom'}}">
|
||||
{{else}}
|
||||
<span>{{#if faction.label}}{{faction.label}}{{else}}—{{/if}}</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td>
|
||||
<div class="faction-checkboxes-container">
|
||||
<div class="faction-checkboxes">
|
||||
{{#each faction.dots as |dot|}}
|
||||
<span class="faction-dot {{dot.type}} {{#if dot.filled}}filled{{/if}}"
|
||||
{{#if @root.isEditable}}data-action="factionLevel" data-faction="{{../id}}" data-index="{{dot.index}}"{{/if}}></span>
|
||||
{{/each}}
|
||||
</div>
|
||||
<span class="faction-count">{{faction.valueStr}}</span>
|
||||
{{#if factionAspectSummary}}
|
||||
<div class="faction-aspect-points">
|
||||
<div class="faction-aspect-point">
|
||||
<span class="label">{{localize "CELESTOPOL.FactionAspect.pointsMax"}}</span>
|
||||
<span class="value">{{factionAspectSummary.pointsMax}}</span>
|
||||
</div>
|
||||
<div class="faction-aspect-point">
|
||||
<span class="label">{{localize "CELESTOPOL.FactionAspect.pointsSpent"}}</span>
|
||||
<span class="value">{{factionAspectSummary.pointsSpent}}</span>
|
||||
</div>
|
||||
<div class="faction-aspect-point">
|
||||
<span class="label">{{localize "CELESTOPOL.FactionAspect.pointsRemaining"}}</span>
|
||||
<span class="value">{{factionAspectSummary.pointsRemaining}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if factionAspectSummary.sourceLabels.length}}
|
||||
<div class="faction-aspect-source-line">
|
||||
<strong>{{localize "CELESTOPOL.FactionAspect.sources"}} :</strong>
|
||||
{{#each factionAspectSummary.sourceLabels as |label|}}
|
||||
<span class="faction-aspect-source">{{label}}</span>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="faction-aspect-empty">{{localize "CELESTOPOL.FactionAspect.officialSourcesEmpty"}}</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="faction-aspect-active-block">
|
||||
<div class="faction-aspect-active-title">{{localize "CELESTOPOL.FactionAspect.activeTitle"}}</div>
|
||||
{{#if factionAspectSummary.activatedAspects.length}}
|
||||
<div class="faction-aspect-active-list">
|
||||
{{#each factionAspectSummary.activatedAspects as |aspect|}}
|
||||
<div class="faction-aspect-chip {{#if aspect.relevantToActor}}is-relevant{{/if}}">
|
||||
<span class="name">{{aspect.label}}</span>
|
||||
<span class="value">+{{aspect.value}}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="faction-aspect-empty">{{localize "CELESTOPOL.FactionAspect.noneActive"}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</section>
|
||||
|
||||
<table class="factions-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{localize "CELESTOPOL.Faction.label"}}</th>
|
||||
<th>{{localize "CELESTOPOL.Faction.relation"}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{!-- Factions standard --}}
|
||||
{{#each factionRows as |faction|}}
|
||||
<tr class="faction-row" data-faction="{{faction.id}}">
|
||||
<td class="faction-name">{{localize faction.label}}</td>
|
||||
<td class="faction-value">
|
||||
<div class="faction-checkboxes-container">
|
||||
<div class="faction-checkboxes">
|
||||
{{#each faction.dots as |dot|}}
|
||||
<span class="faction-dot {{dot.type}} {{#if dot.filled}}filled{{/if}}"
|
||||
{{#if @root.isEditable}}data-action="factionLevel" data-faction="{{../id}}" data-index="{{dot.index}}"{{/if}}></span>
|
||||
{{/each}}
|
||||
</div>
|
||||
<span class="faction-count">{{faction.valueStr}}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
||||
{{!-- Factions personnalisées --}}
|
||||
{{#each factionCustom as |faction|}}
|
||||
<tr class="faction-row custom" data-faction="{{faction.id}}">
|
||||
<td>
|
||||
{{#if @root.isEditMode}}
|
||||
<input type="text" name="system.factions.{{faction.id}}.label"
|
||||
value="{{faction.label}}"
|
||||
placeholder="{{localize 'CELESTOPOL.Faction.custom'}}">
|
||||
{{else}}
|
||||
<span>{{#if faction.label}}{{faction.label}}{{else}}—{{/if}}</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td>
|
||||
<div class="faction-checkboxes-container">
|
||||
<div class="faction-checkboxes">
|
||||
{{#each faction.dots as |dot|}}
|
||||
<span class="faction-dot {{dot.type}} {{#if dot.filled}}filled{{/if}}"
|
||||
{{#if @root.isEditable}}data-action="factionLevel" data-faction="{{../id}}" data-index="{{dot.index}}"{{/if}}></span>
|
||||
{{/each}}
|
||||
</div>
|
||||
<span class="faction-count">{{faction.valueStr}}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<aside class="factions-legend">
|
||||
<div class="factions-legend-title">{{localize "CELESTOPOL.Faction.legendTitle"}}</div>
|
||||
<div class="factions-legend-list">
|
||||
{{#each factionLegend as |entry|}}
|
||||
<div class="factions-legend-row">
|
||||
<span class="factions-legend-value">{{entry.value}}</span>
|
||||
<span class="factions-legend-label">{{entry.label}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -45,10 +45,18 @@
|
||||
</div>
|
||||
<div class="identity-field">
|
||||
<label>{{localize "CELESTOPOL.Actor.faction"}}</label>
|
||||
{{#if isEditMode}}
|
||||
<input type="text" name="system.faction" value="{{system.faction}}" placeholder="{{localize 'CELESTOPOL.Actor.faction'}}">
|
||||
{{#if isEditMode}}
|
||||
<select name="system.faction">
|
||||
<option value="" {{#unless selectedPrimaryFactionId}}{{#unless legacyPrimaryFactionValue}}selected{{/unless}}{{/unless}}>— {{localize "CELESTOPOL.NPC.factionNone"}} —</option>
|
||||
{{#if legacyPrimaryFactionValue}}
|
||||
<option value="{{legacyPrimaryFactionValue}}" selected>{{localize "CELESTOPOL.FactionAspect.legacyFactionValue"}} : {{legacyPrimaryFactionValue}}</option>
|
||||
{{/if}}
|
||||
{{#each factions as |faction key|}}
|
||||
<option value="{{key}}" {{#if (eq key ../selectedPrimaryFactionId)}}selected{{/if}}>{{localize faction.label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
{{else}}
|
||||
<span>{{system.faction}}</span>
|
||||
<span>{{primaryFactionLabel}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -92,6 +100,11 @@
|
||||
</div>
|
||||
|
||||
<div class="header-buttons">
|
||||
{{#if isGM}}
|
||||
<a class="manage-faction-aspects-btn" data-action="manageFactionAspects" title="{{localize 'CELESTOPOL.FactionAspect.managerTitle'}}">
|
||||
<i class="fa-solid fa-people-group"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
<a class="moon-standalone-btn" data-action="rollMoonDie" title="{{localize 'CELESTOPOL.Moon.standaloneTitle'}}">
|
||||
🌙
|
||||
</a>
|
||||
|
||||
@@ -55,6 +55,10 @@
|
||||
<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>
|
||||
@@ -63,6 +67,10 @@
|
||||
<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>
|
||||
@@ -103,6 +111,16 @@
|
||||
<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}}
|
||||
@@ -136,7 +154,7 @@
|
||||
{{#if isRangedDefense}}
|
||||
<span class="result-desc">{{localize "CELESTOPOL.Combat.rangedDefenseSuccess"}}</span>
|
||||
{{else}}
|
||||
<span class="result-desc">{{localize "CELESTOPOL.Combat.successHit"}}{{#if (gt weaponDegats "0")}} +{{weaponDegats}} {{localize "CELESTOPOL.Combat.weaponDamage"}}{{/if}}</span>
|
||||
<span class="result-desc">{{localize "CELESTOPOL.Combat.successHit"}}</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{else if isFailure}}
|
||||
@@ -154,6 +172,47 @@
|
||||
{{/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">
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<img src="{{item.img}}" class="item-icon">
|
||||
<span class="item-name">{{item.name}}</span>
|
||||
<span class="item-tag prot"><i class="fas fa-shield"></i> {{item.system.protection}}</span>
|
||||
{{#if item.system.malus}}<span class="item-tag malus">−{{item.system.malus}} {{localize "CELESTOPOL.Armure.malus"}}</span>{{/if}}
|
||||
{{#if item.system.protection}}<span class="item-tag malus">−{{item.system.protection}} {{localize "CELESTOPOL.Armure.malus"}}</span>{{/if}}
|
||||
<div class="item-controls">
|
||||
<a data-action="toggleArmure" data-item-uuid="{{item.uuid}}"
|
||||
title="{{#if item.system.equipped}}{{localize 'CELESTOPOL.Armure.unequip'}}{{else}}{{localize 'CELESTOPOL.Armure.equip'}}{{/if}}"
|
||||
@@ -55,4 +55,27 @@
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
{{!-- ── Équipements ──────────────────────────────────────────────────── --}}
|
||||
<div class="equip-section">
|
||||
<div class="section-header">
|
||||
<i class="fas fa-briefcase"></i>
|
||||
<span>{{localize "CELESTOPOL.Item.equipments"}}</span>
|
||||
{{#if isEditMode}}
|
||||
<a data-action="createEquipment" title="{{localize 'CELESTOPOL.Item.newEquipment'}}"><i class="fas fa-plus"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#each equipments as |item|}}
|
||||
<div class="item-row equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
<img src="{{item.img}}" class="item-icon">
|
||||
<span class="item-name">{{item.name}}</span>
|
||||
<div class="item-controls">
|
||||
<a data-action="edit" data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
{{#if ../isEditMode}}<a data-action="delete" data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<p class="equip-empty">{{localize "CELESTOPOL.Item.noEquipments"}}</p>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<select id="targetSelect" name="targetSelect">
|
||||
<option value="">— {{localize "CELESTOPOL.Combat.targetAuto"}} —</option>
|
||||
{{#each availableTargets as |t|}}
|
||||
<option value="{{t.corps}}">{{t.name}}</option>
|
||||
<option value="{{t.id}}" data-corps="{{t.corps}}">{{t.name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
@@ -85,7 +85,6 @@
|
||||
</div>
|
||||
|
||||
{{!-- Test en opposition : le résultat sera masqué, MJ décide --}}
|
||||
{{#unless isResistance}}
|
||||
<div class="form-opposition-row">
|
||||
<label class="opposition-toggle" for="isOpposition">
|
||||
<input type="checkbox" id="isOpposition" name="isOpposition">
|
||||
@@ -96,7 +95,6 @@
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
{{/if}}
|
||||
|
||||
@@ -137,6 +135,18 @@
|
||||
|
||||
{{/unless}}{{!-- /isResistance aspect --}}
|
||||
|
||||
{{#if factionAspectChoices.length}}
|
||||
<div class="form-row-line form-faction-aspect">
|
||||
<label for="factionAspectId">{{localize "CELESTOPOL.FactionAspect.rollLabel"}}</label>
|
||||
<select id="factionAspectId" name="factionAspectId">
|
||||
<option value="">{{localize "CELESTOPOL.FactionAspect.noneOption"}}</option>
|
||||
{{#each factionAspectChoices as |choice|}}
|
||||
<option value="{{choice.id}}" data-value="{{choice.value}}">{{choice.label}} (+{{choice.value}})</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Options non disponibles en test de résistance (lune, destin, puiser, fortune) --}}
|
||||
{{#unless isResistance}}
|
||||
|
||||
@@ -225,5 +235,3 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user