Files
vermine2047/templates/dialogs/combat-dialog.hbs
T
uberwald f2c8cfe246 feat: équipement, échanges de coups et améliorations des fiches
- équipement des armes et protections (champ equipped, liste des équipés, toggle)
- échanges de coups automatisés (attaque/défense/résolution/blessures dans le chat)
- dialogue d'attaque par type (personnage/PNJ/créature), portées et difficultés
- conservation du scroll des fiches lors des modifs (option scrollable + classe active)
- verrouillage des compétences PNJ en mode jeu
- corrections review combat (défenseur, difficulté >10, multi-cibles, permissions)
2026-08-04 14:14:03 +02:00

235 lines
9.3 KiB
Handlebars

<div class="roll-dialog-content">
<!-- HIDDEN DATA -->
<input type="hidden" name="ability" id="ability" value="{{ abilityValue }}" />
<input type="hidden" name="speakerId" value="{{ actor.id }}" />
{{#if weapon}}
<div class="weapon-block combat-dialog-weapon">
<div class="weapon-block-header flexrow">
<span class="weapon-icon"><i class="fas fa-crosshairs"></i></span>
<span class="weapon-name">{{ weapon.name }}</span>
</div>
<div class="flexrow flex-wrap weapon-details">
<span class="weapon-detail">
<strong>{{localize "VERMINE.damages"}}:</strong>
{{#if weapon.system.damage.addVigor}}{{localize "VERMINE.vigor"}}+ {{/if}}
{{ weapon.system.damage.value }} ({{ weapon.system.damage.type }})
</span>
<span class="weapon-detail">
<strong>{{localize "VERMINE.ranges"}}:</strong>
{{ weapon.system.min_range }} / {{ weapon.system.max_range }}
</span>
<span class="weapon-detail">
<strong>{{localize "VERMINE.ammo"}}:</strong>
{{ weapon.system.ammo }}
</span>
</div>
</div>
{{/if}}
<h4 class="combat-mode-label">{{#ife mode "ranged"}}{{localize 'VERMINE.attack_ranged'}}{{else}}{{localize 'VERMINE.attack_contact'}}{{/ife}}</h4>
<div class="dice-pool">
<!-- ATTACKER POOL -->
<div class="flexrow main-roll-section">
<div class="flexcol characteristic-section">
<label class="label">{{localize 'VERMINE.ability'}}</label>
{{#if isCharacter}}
<div class="locked-value">{{ smarttlk 'ABILITIES' abilityKey 'name' }} / {{ abilityValue }}</div>
{{else if isNpc}}
<div class="locked-value">{{localize 'ADVERSITY.threat'}} / {{ npcThreatPool }}</div>
{{else}}
<div class="locked-value">{{localize 'ADVERSITY.attack'}} / {{ basePool }}</div>
{{/if}}
</div>
<div class="flexcol skill-section">
<label class="label">{{localize 'VERMINE.skill_title'}}</label>
{{#if isCharacter}}
<div class="locked-value">{{ smarttlk 'SKILLS' skillKey 'name' }} / {{ skillValue }}</div>
{{else}}
<div class="locked-value">{{localize 'VERMINE.pool_total'}}</div>
{{/if}}
</div>
</div>
<!-- DIFFICULTY -->
<details class="difficulty-section" open>
<summary class="flexrow">
<span class="label">{{localize 'VERMINE.difficulty'}}</span>
<span class="current-values"><span id="final-difficulty">{{ defaultDifficulty }}</span></span>
</summary>
<div class="flexcol difficulty-controls">
<div class="flexrow combat-difficulty-options">
{{#each difficultyOptions}}
<label class="flexrow difficulty-option {{#if this.locked}}locked{{/if}}">
<input
type="radio"
data-roll="true"
name="combat-difficulty"
value="{{ this.difficulty }}"
{{#if this.rangeKey}}data-range-key="{{ this.rangeKey }}"{{/if}}
{{#ife @root.defaultDifficulty this.difficulty}}checked{{/ife}}
{{#if this.locked}}disabled{{/if}}
/>
<span>{{#if this.label}}{{ this.label }}{{else}}{{ this.difficulty }}{{/if}} ({{ this.difficulty }})</span>
</label>
{{/each}}
</div>
{{#unless isCreature}}
{{#unless creatureLocked}}
<label class="flexrow bonus-item">
<input type="checkbox" data-roll="true" name="second-action" id="second-action" value="1" />
<span class="label">{{localize 'VERMINE.second_action'}}</span>
</label>
{{/unless}}
{{/unless}}
{{#if hasAmmo}}
<label class="flexrow bonus-item">
<input type="checkbox" data-roll="true" name="use-ammo" id="use-ammo" value="1" checked />
<span class="label">{{localize 'VERMINE.consume_ammo'}}</span>
</label>
{{/if}}
<div class="flexcol handicap-section">
<label class="label" for="handicap">{{localize 'VERMINE.handicap'}}</label>
<select class="info-value" data-roll="true" data-dtype="String" type="number"
name="handicap" id="handicap" min="0" max="2">
<option value="1" selected>{{localize 'VERMINE.none'}}</option>
<option value="2">(I)</option>
<option value="3">(II)</option>
</select>
</div>
</div>
</details>
<!-- NPC POOLS -->
{{#if isNpc}}
<div class="flexrow bonus-item full-width">
<label class="label" for="pools-spent">{{localize 'VERMINE.npc_pool'}}</label>
<input
type="number"
data-roll="true"
class="numeric-entry"
style="text-align: center;"
name="pools-spent"
id="pools-spent"
min="0"
max="{{ npcPoolMax }}"
value="0"
/>
<span>/ {{ npcPoolMax }}</span>
</div>
{{/if}}
<!-- TARGETS -->
{{#if targets.length}}
<div class="combat-targets">
<span class="label">{{localize 'ITEMS.targets'}}:</span>
{{#each targets}}
<span class="combat-target-tag">{{ this.name }}</span>
{{/each}}
</div>
{{/if}}
<!-- BONUSES -->
<details class="bonuses-section">
<summary class="flexrow">
<span class="label">{{localize 'VERMINE.bonuses'}}</span>
<span class="bonus-count">+<span id="total-bonus">0</span>D</span>
</summary>
<div class="grid grid-2col bonus-grid">
<div class="flexrow bonus-item">
<input type="checkbox" data-roll="true" name="helped" id="helped" value="1" />
<label class="label" for="helped">{{localize 'VERMINE.help'}} (+1D)</label>
</div>
<div class="flexrow bonus-item">
<label class="label" for="group">{{localize 'VERMINE.group'}}</label>
<input type="number" data-roll="true" class="numeric-entry" style="text-align: center;"
name="group" id="group" min="0" max="5" value="0" />
<span>D</span>
</div>
{{#if isCharacter}}
<div class="flexrow bonus-item full-width">
<label class="label" for="self_control">
{{localize 'VERMINE.self_control'}} <span>(+<span id="self_control_value">0</span>D)</span>
</label>
<input type="range" id="self_control" data-roll="true" name="self_control" min="0" max="0" value="0" />
</div>
{{/if}}
{{#if availableItems.length}}
<div class="flexrow bonus-item full-width">
<label class="label">{{localize 'VERMINE.tooling'}} (+1D)</label>
<div class="item-list grid grid-4col">
<label>
<input type="radio" data-roll="true" name="usingTools" id="usingTools" value="0" checked />
<i>{{localize 'VERMINE.none'}}</i>
</label>
{{#each availableItems as |item ind|}}
<label>
<input type="radio" data-roll="true" name="usingTools" id="usingTools" value="{{ item.name }}" />
<i>{{ item.name }}</i>
</label>
{{/each}}
</div>
</div>
{{/if}}
{{#ifgt @root.system.adaptation.totems.human.value 0}}
<div class="flexrow bonus-item full-width totems-section">
<label class="label">{{localize 'VERMINE.totem_dice'}}</label>
<div class="flexrow totem-options">
<label class="totem-option">
<input type="checkbox" data-roll="true" name="human-totem" id="human-totem" value="1" class="totem-checkbox" />
<span class="totem-label">{{localize 'TOTEMS.human.name'}}</span>
<small>({{@root.system.adaptation.totems.human.value}}D)</small>
</label>
{{#ifgt @root.system.adaptation.totems.adapted.value 0}}
<label class="totem-option">
<input type="checkbox" data-roll="true" name="adapted-totem" id="adapted-totem" value="1" class="totem-checkbox" />
<span class="totem-label">{{localize 'TOTEMS.adapted.name'}}</span>
<small>({{@root.system.adaptation.totems.adapted.value}}D)</small>
</label>
{{/ifgt}}
</div>
</div>
{{/ifgt}}
</div>
</details>
<!-- TOTAL -->
<div class="flexrow total-section">
<label class="label">{{localize 'VERMINE.total'}}:</label>
<span id="dice-pool-total" class="total-value">0D</span>
{{#ifgt @root.system.adaptation.totems.human.value 0}}
{{#ifgt @root.system.adaptation.totems.adapted.value 0}}
<span class="totem-selector">
({{localize 'VERMINE.keep_totem'}}
<select id="keep-totem-select" name="keep_totem">
<option value="human">{{localize 'TOTEMS.human.name'}}</option>
<option value="adapted">{{localize 'TOTEMS.adapted.name'}}</option>
</select>)
</span>
{{/ifgt}}
{{/ifgt}}
<span class="totem-selector">
({{localize 'VERMINE.difficulty'}}: <strong id="final-difficulty">{{ defaultDifficulty }}</strong>)
</span>
</div>
</div>
<footer class="sheet-footer flexrow">
<button type="button" data-action="cancel">
<i class="fas fa-times"></i> {{localize "VERMINE.cancel"}}
</button>
<button type="button" data-action="roll">
<i class="fas fa-crosshairs"></i> {{localize "VERMINE.attack"}}
</button>
</footer>
</div>