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)
This commit is contained in:
2026-08-04 14:14:03 +02:00
parent 31f2f4530c
commit f2c8cfe246
45 changed files with 2105 additions and 78 deletions
@@ -1,4 +1,4 @@
<div class="tab abilities sheet-part" data-group="sheet" data-tab="abilities">
<div class="tab abilities sheet-part {{#if @root.tabs.abilities.active}}active{{/if}}" data-group="sheet" data-tab="abilities">
{{!-- Character --}}
<h3>{{ localize 'VERMINE.abilities' }}</h3>
<div class="grid grid-4col">
+2 -11
View File
@@ -1,4 +1,4 @@
<div class="tab combat sheet-part" data-group="sheet" data-tab="combat">
<div class="tab combat sheet-part {{#if @root.tabs.combat.active}}active{{/if}}" data-group="sheet" data-tab="combat">
<div class="align-center">
<div class="shadow">
<h4>situation de combat par défaut</h4>
@@ -20,6 +20,7 @@
</div>
</div>
</div>
{{> "systems/vermine2047/templates/actor/parts/actor-equipped-gear.hbs"}}
<div class="flexrow">
<div class="self-control-container flexcol align-center">
<h4 class="align-center">
@@ -42,7 +43,6 @@
unavailable
{{/ifgt}}">
{{#iflteq @row @root.system.attributes.self_control.max }}
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -56,7 +56,6 @@
"
/>
{{/if}}
{{/iflteq}}
</div>
@@ -88,7 +87,6 @@
unavailable
{{/ifgt}}">
{{#iflteq @row @root.system.attributes.effort.max }}
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -102,7 +100,6 @@
"
/>
{{/if}}
{{/iflteq}}
</div>
@@ -124,7 +121,6 @@
<div class="hexa ability{{#iflteq @minorwoundmax @root.system.minorWound.value }}
checked
{{/iflteq}}">
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -141,7 +137,6 @@
checked="true"
{{/ife}}
/>
{{/if}}
</div>
{{/repeat}}
</div>
@@ -155,7 +150,6 @@
<div class="hexa ability{{#iflteq @majourwoundmax @root.system.majorWound.value }}
checked
{{/iflteq}}">
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -173,7 +167,6 @@
checked="true"
{{/ife}}
/>
{{/if}}
</div>
{{/repeat}}
@@ -189,7 +182,6 @@
<div class="hexa ability{{#iflteq @deadlywoundmax @root.system.deadlyWound.value }}
checked
{{/iflteq}}">
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -206,7 +198,6 @@
checked="true"
{{/ife}}
/>
{{/if}}
</div>
{{/repeat}}
@@ -1,4 +1,4 @@
<div class="tab equipment sheet-part" data-group="sheet" data-tab="equipment">
<div class="tab equipment sheet-part {{#if @root.tabs.equipment.active}}active{{/if}}" data-group="sheet" data-tab="equipment">
<div class="weapons">
<h4>{{localize 'ITEMS.weapons'}}</h4>
{{> "systems/vermine2047/templates/actor/parts/actor-weapons.hbs"}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab stories sheet-part" data-group="sheet" data-tab="stories">
<div class="tab stories sheet-part {{#if @root.tabs.stories.active}}active{{/if}}" data-group="sheet" data-tab="stories">
<section class="flexrow flex-group-left flex-align-left gap-md">
<div>
<h4>{{ localize 'IDENTITY.theme'}}</h4>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab totem sheet-part" data-group="sheet" data-tab="totem">
<div class="tab totem sheet-part {{#if @root.tabs.totem.active}}active{{/if}}" data-group="sheet" data-tab="totem">
{{#if system.identity.totem}}
<div class="totem-details">
<img
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab combat sheet-part" data-group="sheet" data-tab="combat">
<div class="tab combat sheet-part {{#if @root.tabs.combat.active}}active{{/if}}" data-group="sheet" data-tab="combat">
<div class="grid grid-2col">
{{!-- Computed Values --}}
<div>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab effects sheet-part" data-group="sheet" data-tab="effects">
<div class="tab effects sheet-part {{#if @root.tabs.effects.active}}active{{/if}}" data-group="sheet" data-tab="effects">
<h4 class="item-name effect-name flexrow">{{ localize "UI.effects.name" }}</h4>
<ol class="items-list effects-list">
{{#each effects as |section sid|}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab info sheet-part" data-group="sheet" data-tab="info">
<div class="tab info sheet-part {{#if @root.tabs.info.active}}active{{/if}}" data-group="sheet" data-tab="info">
<div class="grid grid-2col">
<div>
<h4>{{ localize 'IDENTITY.profile' }}</h4>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab stats sheet-part" data-group="sheet" data-tab="stats">
<div class="tab stats sheet-part {{#if @root.tabs.stats.active}}active{{/if}}" data-group="sheet" data-tab="stats">
<h3>{{ localize 'VERMINE.base_values' }}</h3>
{{!-- Total attaque (lancable) --}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab gear sheet-part" data-group="sheet" data-tab="gear">
<div class="tab gear sheet-part {{#if @root.tabs.gear.active}}active{{/if}}" data-group="sheet" data-tab="gear">
<div class="grid grid-2col">
<div>
<ol class="items-list">
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab info sheet-part" data-group="sheet" data-tab="info">
<div class="tab info sheet-part {{#if @root.tabs.info.active}}active{{/if}}" data-group="sheet" data-tab="info">
<div class="grid grid-2col">
{{!-- Group Identity --}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab reserve sheet-part" data-group="sheet" data-tab="reserve">
<div class="tab reserve sheet-part {{#if @root.tabs.reserve.active}}active{{/if}}" data-group="sheet" data-tab="reserve">
<div class="grid grid-2col">
{{!-- Group Reserve and Morale --}}
<div class="grid-span-2">
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab road sheet-part" data-group="sheet" data-tab="road">
<div class="tab road sheet-part {{#if @root.tabs.road.active}}active{{/if}}" data-group="sheet" data-tab="road">
<ol class="items-list">
<li class="item flexrow items-header">
<div class="item-name" style="flex:4;">{{ localize 'IDENTITY.name'}}</div>
@@ -1,4 +1,4 @@
<div class="tab characteristics sheet-part" data-group="sheet" data-tab="characteristics">
<div class="tab characteristics sheet-part {{#if @root.tabs.characteristics.active}}active{{/if}}" data-group="sheet" data-tab="characteristics">
<h3>{{ localize 'VERMINE.abilities' }}</h3>
{{!-- Caracteristiques physiques --}}
+2 -1
View File
@@ -1,4 +1,4 @@
<div class="tab combat sheet-part" data-group="sheet" data-tab="combat">
<div class="tab combat sheet-part {{#if @root.tabs.combat.active}}active{{/if}}" data-group="sheet" data-tab="combat">
<div class="grid grid-2col">
<div>
<h4 class="align-center">{{ localize "VERMINE.self_control"}}</h4>
@@ -27,6 +27,7 @@
</p>
</div>
</div>
{{> "systems/vermine2047/templates/actor/parts/actor-equipped-gear.hbs"}}
<h4 class="item-name effect-name flexrow">{{ localize
"VERMINE.wounds.name"}}</h4>
<ul class="unstyled">
+10
View File
@@ -0,0 +1,10 @@
<div class="tab equipment sheet-part {{#if @root.tabs.equipment.active}}active{{/if}}" data-group="sheet" data-tab="equipment">
<div class="weapons">
<h4>{{localize 'ITEMS.weapons'}}</h4>
{{> "systems/vermine2047/templates/actor/parts/actor-weapons.hbs"}}
</div>
<div class="protections">
<h4>{{localize 'ITEMS.defenses'}}</h4>
{{> "systems/vermine2047/templates/actor/parts/actor-defenses.hbs"}}
</div>
</div>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab notes sheet-part" data-group="sheet" data-tab="notes">
<div class="tab notes sheet-part {{#if @root.tabs.notes.active}}active{{/if}}" data-group="sheet" data-tab="notes">
<h3>{{ localize 'IDENTITY.notes' }}</h3>
<div class="grid grid-1col">
<div class="form-group">
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab skills sheet-part" data-group="sheet" data-tab="skills">
<div class="tab skills sheet-part {{#if @root.tabs.skills.active}}active{{/if}}" data-group="sheet" data-tab="skills">
<h3>{{ localize 'VERMINE.skills' }}</h3>
{{!-- Category Selector --}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab threat sheet-part" data-group="sheet" data-tab="threat">
<div class="tab threat sheet-part {{#if @root.tabs.threat.active}}active{{/if}}" data-group="sheet" data-tab="threat">
<h3>{{ localize 'ADVERSITY.threat_details' }}</h3>
<div class="grid grid-3col">
{{!-- Menace --}}
+8
View File
@@ -15,6 +15,7 @@
data-type="defense"
data-action="create"
><i class="fas fa-plus"></i></a>
<a style="visibility:hidden;" aria-hidden="true"><i class="fas fa-circle"></i></a>
<a style="visibility:hidden;" aria-hidden="true"><i class="fas fa-trash"></i></a>
</div>
</li>
@@ -42,6 +43,13 @@
<div><a data-action="edit" title="Edit Item">{{item.system.rarity.value}}</a></div>
<div><a data-action="edit" title="Edit Item">{{item.system.reliability}}</a></div>
<div class="item-controls">
<a
data-action="toggleEquip"
data-item-id="{{item._id}}"
title="{{#if item.system.equipped}}{{ localize 'VERMINE.unequip'}}{{else}}{{ localize 'VERMINE.equip'}}{{/if}}"
><i
class="fas {{#if item.system.equipped}}fa-circle-check{{else}}fa-circle{{/if}}"
></i></a>
<a
data-action="delete"
title="Delete Item"
@@ -0,0 +1,64 @@
{{#if equippedWeapons.length}}
<div class="equipped-gear">
<h4 class="item-name flexrow">{{ localize 'ITEMS.weapons'}}</h4>
<ol class="items-list">
{{#each equippedWeapons as |item|}}
<li
class="item flexrow flex-group-center align-center"
data-item-id="{{item._id}}"
>
<div class="item-name flexrow" style="flex:4;">
<div class="item-image">
<a data-action="roll"><img
src="{{item.img}}"
title="{{item.name}}"
width="24"
height="24"
/></a>
</div>
<a data-action="roll">{{item.name}}</a>
</div>
<div style="flex:1;"><a data-action="attack" title="{{ localize 'VERMINE.attack' }}"><i class="fas fa-crosshairs"></i></a></div>
<div style="flex:2;"><a data-action="edit" title="Edit Item">
{{#if item.system.damage.addVigor}}
{{localize 'VERMINE.vigor'}}+
{{/if}}
{{item.system.damage.value}}
({{item.system.damage.type}})
</a></div>
<div style="flex:2;">{{#if item.system.skill}}{{ smarttlk 'SKILLS' item.system.skill 'name' }}{{/if}}</div>
</li>
{{/each}}
</ol>
</div>
{{/if}}
{{#if equippedDefenses.length}}
<div class="equipped-gear">
<h4 class="item-name flexrow">{{ localize 'ITEMS.defenses'}}</h4>
<ol class="items-list">
{{#each equippedDefenses as |item|}}
<li
class="item flexrow flex-group-center align-center"
data-item-id="{{item._id}}"
>
<div class="item-name flexrow" style="flex:4;">
<div class="item-image">
<a data-action="roll"><img
src="{{item.img}}"
title="{{item.name}}"
width="24"
height="24"
/></a>
</div>
<a data-action="edit" title="Edit Item">{{item.name}}</a>
</div>
<div style="flex:2;"><a data-action="edit" title="Edit Item">{{item.system.level}}</a></div>
<div style="flex:2;"><a data-action="edit" title="Edit Item">
{{#if item.system.isShield}}{{ localize 'ITEMS.shield' }}{{/if}}
</a></div>
</li>
{{/each}}
</ol>
</div>
{{/if}}
+6
View File
@@ -9,6 +9,7 @@
<div class="item-controls">
<a class="item-control item-create" title="Create item"
data-type="weapon" data-action="create"><i class="fas fa-plus"></i></a>
<a style="visibility:hidden;" aria-hidden="true"><i class="fas fa-circle"></i></a>
<a style="visibility:hidden;" aria-hidden="true"><i class="fas fa-trash"></i></a>
<a style="visibility:hidden;" aria-hidden="true"><i class="fas fa-edit"></i></a>
</div>
@@ -37,10 +38,15 @@
<div style="flex:1;"><a data-action="edit" title="Edit Item">{{item.system.rarity.value}}</a></div>
<div style="flex:1;"><a data-action="edit" title="Edit Item">{{item.system.reliability}}</a></div>
<div class="item-controls">
<a data-action="toggleEquip" data-item-id="{{item._id}}"
title="{{#if item.system.equipped}}{{ localize 'VERMINE.unequip'}}{{else}}{{ localize 'VERMINE.equip'}}{{/if}}"><i
class="fas {{#if item.system.equipped}}fa-circle-check{{else}}fa-circle{{/if}}"></i></a>
<a data-action="delete" title="Delete Item"><i
class="fas fa-trash"></i></a>
<a data-action="edit" title="Edit Item"><i
class="fas fa-edit"></i></a>
<a data-action="attack" title="{{ localize 'VERMINE.attack' }}"><i
class="fas fa-crosshairs"></i></a>
<a data-action="roll" title="Roll Item"><i
class="fas fa-dice"></i></a>
</div>
+2
View File
@@ -8,6 +8,7 @@
{{/if}}
</label>
<div class="skill-control">
{{#if @root.isEditMode}}
<input
type="range"
name="system.skills.{{key}}.value"
@@ -16,6 +17,7 @@
max="{{skill.max}}"
data-dtype="Number"
/>
{{/if}}
<span class="skill-value">{{skill.value}}D</span>
</div>
</div>
+234
View File
@@ -0,0 +1,234 @@
<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>
+1 -1
View File
@@ -15,7 +15,7 @@
<option value="">aucune</option>
{{#each @root.config.skillCategories as |skillCategory sckey|}}
<optgroup label="{{ smarttlk 'SKILLS_CATEGORIES' sckey 'name' }}">
{{#each @root.config.skills as |skill key|}}
{{#each (sortedSkills @root.config.skills) as |skill key|}}
{{#ife skill.category sckey}}
<option value="{{key}}" {{#ife key @root.system.needSkill.skill}} selected {{/ife}}>{{ smarttlk 'SKILLS' key 'name' }}</option>
+1 -1
View File
@@ -20,7 +20,7 @@
>
{{#each @root.config.skillCategories as |skillCategory sckey|}}
<optgroup label="{{ smarttlk 'SKILLS_CATEGORIES' sckey 'name' }}">
{{#each @root.config.skills as |skill key|}}
{{#each (sortedSkills @root.config.skills) as |skill key|}}
{{#ife skill.category sckey}}
<option
value="{{key}}"
+1 -1
View File
@@ -11,7 +11,7 @@
>
{{#each @root.config.skillCategories as |skillCategory sckey|}}
<optgroup label="{{ smarttlk 'SKILLS_CATEGORIES' sckey 'name' }}">
{{#each @root.config.skills as |skill key|}}
{{#each (sortedSkills @root.config.skills) as |skill key|}}
{{#ife skill.category sckey}}
<option
value="{{key}}"
+53
View File
@@ -12,6 +12,53 @@
<h3>{{param.actor.name}} : {{localize "VERMINE.test_of"}} {{param.rollLabel}}</h3>
{{#if param.weapon}}
<div class="weapon-block">
<div class="weapon-block-header flexrow">
<span class="weapon-icon"><i class="fas fa-crosshairs"></i></span>
<span class="weapon-name">{{param.weapon.name}}</span>
{{#if param.targets.length}}
<span class="weapon-targets"><i class="fas fa-bullseye"></i> {{param.targets}}</span>
{{/if}}
</div>
<div class="flexrow flex-wrap weapon-details">
<span class="weapon-detail">
<strong>{{localize "VERMINE.damages"}}:</strong>
{{#if param.weapon.system.damage.addVigor}}{{localize "VERMINE.vigor"}}+ {{/if}}
{{param.weapon.system.damage.value}} ({{param.weapon.system.damage.type}})
</span>
<span class="weapon-detail">
<strong>{{localize "VERMINE.ranges"}}:</strong>
{{param.weapon.system.min_range}} / {{param.weapon.system.max_range}}
</span>
<span class="weapon-detail">
<strong>{{localize "VERMINE.ammo"}}:</strong>
{{param.weapon.system.ammo}}
</span>
</div>
</div>
{{/if}}
{{#if param.attack}}
<div class="exchange-actions" data-exchange-id="{{param.attack.id}}">
<div class="exchange-header"><i class="fas fa-exchange-alt"></i> {{localize "VERMINE.exchange"}}</div>
{{#each param.attack.targets}}
<div class="exchange-target">
<span class="exchange-target-name"><i class="fas fa-bullseye"></i> {{this.name}}</span>
{{#if this.canDefend}}
<button type="button" class="exchange-defend" data-type="esquive" data-target-id="{{this.id}}" data-target-uuid="{{this.uuid}}" title="{{localize 'VERMINE.defense_esquive'}}"><i class="fas fa-running"></i> {{localize "VERMINE.defense_esquive"}}</button>
{{#ife @root.param.attack.mode "contact"}}
<button type="button" class="exchange-defend" data-type="parade" data-target-id="{{this.id}}" data-target-uuid="{{this.uuid}}" title="{{localize 'VERMINE.defense_parade'}}"><i class="fas fa-shield-alt"></i> {{localize "VERMINE.defense_parade"}}</button>
{{/ife}}
{{else}}
<span class="exchange-passive"><i class="fas fa-shield-virus"></i> {{localize "VERMINE.passive_defense"}}</span>
{{/if}}
</div>
{{/each}}
<button type="button" class="exchange-resolve" data-exchange-id="{{param.attack.id}}"><i class="fas fa-balance-scale"></i> {{localize "VERMINE.resolve"}}</button>
</div>
{{/if}}
{{!-- Context --}}
<div class="roll-context flexrow flex-wrap">
<div class="context-item">
@@ -83,6 +130,12 @@
{{#if param.poolBreakdown.group}}
<span class="pool-item">{{localize "VERMINE.pool_group"}} +{{param.poolBreakdown.group}}D</span>
{{/if}}
{{#if param.poolBreakdown.pools}}
<span class="pool-item">{{localize "VERMINE.pool_pools"}} +{{param.poolBreakdown.pools}}D</span>
{{/if}}
{{#if param.poolBreakdown.experience}}
<span class="pool-item">{{localize "VERMINE.pool_experience"}} +{{param.poolBreakdown.experience}}D</span>
{{/if}}
{{#if param.poolBreakdown.selfControl}}
<span class="pool-item">{{localize "VERMINE.pool_selfControl"}} +{{param.poolBreakdown.selfControl}}D</span>
{{/if}}