feat: système d'expérience et transferts de dés d'expérience
Release Creation / build (release) Failing after 1m20s
Release Creation / build (release) Failing after 1m20s
- phase d'expérience (récompenses collectives et individuelles, objectifs, traumatisme) - jets d'apprentissage (compétences, spécialités, caractéristiques, réserves, évolution) - bonus de réserve acquis par apprentissage intégré au max dérivé - transferts de dés individuels <-> groupe dans le dialogue de jet - onglet expérience sur la fiche personnage - guide utilisateur combat (docs/user/COMBAT.md)
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
<div class="tab experience sheet-part {{#if @root.tabs.experience.active}}active{{/if}}" data-group="sheet" data-tab="experience">
|
||||
<h3>{{ localize 'VERMINE.experience' }}</h3>
|
||||
|
||||
<div class="experience-summary">
|
||||
<div class="exp-stat">
|
||||
<label>{{ localize 'VERMINE.experience_dice' }}</label>
|
||||
<span class="exp-value">{{ system.experience.dice }}D</span>
|
||||
</div>
|
||||
<div class="exp-stat">
|
||||
<label>{{ localize 'VERMINE.experience_phase' }}</label>
|
||||
<span class="exp-value">{{ system.experience.phase }}</span>
|
||||
</div>
|
||||
<div class="exp-stat">
|
||||
<label>{{ localize 'VERMINE.evolution_dice' }}</label>
|
||||
<span class="exp-value">{{ system.experience.evolution }}D</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flexrow exp-actions">
|
||||
{{#if isGM}}
|
||||
<button type="button" data-action="openExperiencePhase">
|
||||
<i class="fas fa-star"></i> {{ localize 'VERMINE.open_experience_phase' }}
|
||||
</button>
|
||||
{{/if}}
|
||||
<button type="button" data-action="openLearning">
|
||||
<i class="fas fa-graduation-cap"></i> {{ localize 'VERMINE.open_learning' }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<section class="exp-rewards">
|
||||
<h4>{{ localize 'VERMINE.collective_rewards' }} <span class="exp-total">({{ collectiveTotal }}D)</span></h4>
|
||||
<div class="exp-reward-row">
|
||||
<label>{{ localize 'VERMINE.danger' }}</label>
|
||||
<span>{{ system.experience.collective.danger }}D</span>
|
||||
<label>{{ localize 'VERMINE.discoveries' }}</label>
|
||||
<span>{{ system.experience.collective.discoveries }}D</span>
|
||||
<label>{{ localize 'VERMINE.duration' }}</label>
|
||||
<span>{{ system.experience.collective.duration }}D</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="exp-rewards">
|
||||
<h4>{{ localize 'VERMINE.individual_rewards' }} <span class="exp-total">({{ individualTotal }}D)</span></h4>
|
||||
<div class="exp-reward-row">
|
||||
<label>{{ localize 'VERMINE.implication' }}</label>
|
||||
<span>{{ system.experience.individual.implication }}D</span>
|
||||
<label>{{ localize 'VERMINE.influence' }}</label>
|
||||
<span>{{ system.experience.individual.influence }}D</span>
|
||||
<label>{{ localize 'VERMINE.interpretation' }}</label>
|
||||
<span>{{ system.experience.individual.interpretation }}D</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="exp-rewards">
|
||||
<h4>{{ localize 'VERMINE.learning_limits' }}</h4>
|
||||
<div class="exp-learned">
|
||||
<span class="{{#if system.experience.learned.skill}}learned{{/if}}">{{ localize 'VERMINE.learned_skill' }}</span>
|
||||
<span class="{{#if system.experience.learned.specialty}}learned{{/if}}">{{ localize 'VERMINE.learned_specialty' }}</span>
|
||||
<span class="{{#if system.experience.learned.reserve}}learned{{/if}}">{{ localize 'VERMINE.learned_reserve' }}</span>
|
||||
<span class="{{#if system.experience.learned.characteristic}}learned{{/if}}">{{ localize 'VERMINE.learned_characteristic' }}</span>
|
||||
<span class="{{#if system.experience.learned.evolution}}learned{{/if}}">{{ localize 'VERMINE.learned_evolution' }}</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="exp-rewards">
|
||||
<h4>{{ localize 'VERMINE.trauma_reward' }}</h4>
|
||||
<div class="exp-learned">
|
||||
<span class="{{#if system.experience.traumaReward}}learned{{/if}}">{{ localize 'VERMINE.trauma_reward_5' }}</span>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -0,0 +1,109 @@
|
||||
<div class="roll-dialog-content">
|
||||
<h3 class="combat-mode-label">{{ localize 'VERMINE.experience_phase' }}</h3>
|
||||
|
||||
<details class="difficulty-section" open>
|
||||
<summary class="flexrow">
|
||||
<span class="label">{{ localize 'VERMINE.collective_rewards' }}</span>
|
||||
<span class="current-values"><span id="collective-total">0D</span></span>
|
||||
</summary>
|
||||
<div class="flexrow difficulty-controls">
|
||||
<div class="flexcol">
|
||||
<label class="label" for="collective-danger">{{ localize 'VERMINE.danger' }}</label>
|
||||
<select class="info-value" data-roll="true" id="collective-danger" name="collective-danger">
|
||||
{{#each rewards}}
|
||||
<option value="{{ this.value }}">{{ this.label }} ({{ this.value }}D)</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<label class="label" for="collective-discoveries">{{ localize 'VERMINE.discoveries' }}</label>
|
||||
<select class="info-value" data-roll="true" id="collective-discoveries" name="collective-discoveries">
|
||||
{{#each rewards}}
|
||||
<option value="{{ this.value }}">{{ this.label }} ({{ this.value }}D)</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<label class="label" for="collective-duration">{{ localize 'VERMINE.duration' }}</label>
|
||||
<select class="info-value" data-roll="true" id="collective-duration" name="collective-duration">
|
||||
{{#each rewards}}
|
||||
<option value="{{ this.value }}">{{ this.label }} ({{ this.value }}D)</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{#if groups.length}}
|
||||
<div class="flexrow bonus-item">
|
||||
<label class="label" for="group-select">{{ localize 'VERMINE.collective_group' }}</label>
|
||||
<select class="info-value" id="group-select" name="group-select">
|
||||
<option value="">{{ localize 'VERMINE.none' }}</option>
|
||||
{{#each groups}}
|
||||
<option value="{{ this.id }}">{{ this.name }} ({{ this.dice }}D)</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
</details>
|
||||
|
||||
<div class="exp-phase-characters">
|
||||
{{#each characters}}
|
||||
<details class="difficulty-section" data-character-id="{{ this.id }}" open>
|
||||
<summary class="flexrow">
|
||||
<span class="label">{{ this.name }}</span>
|
||||
<span class="current-values">{{ localize 'VERMINE.experience_dice' }}: {{ this.dice }}D</span>
|
||||
</summary>
|
||||
<div class="flexrow difficulty-controls">
|
||||
<div class="flexcol">
|
||||
<label class="label" for="implication-{{ this.id }}">{{ localize 'VERMINE.implication' }}</label>
|
||||
<select class="info-value" data-roll="true" id="implication-{{ this.id }}" name="implication-{{ this.id }}">
|
||||
{{#each @root.rewards}}
|
||||
<option value="{{ this.value }}">{{ this.label }} ({{ this.value }}D)</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<label class="label" for="influence-{{ this.id }}">{{ localize 'VERMINE.influence' }}</label>
|
||||
<select class="info-value" data-roll="true" id="influence-{{ this.id }}" name="influence-{{ this.id }}">
|
||||
{{#each @root.rewards}}
|
||||
<option value="{{ this.value }}">{{ this.label }} ({{ this.value }}D)</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<label class="label" for="interpretation-{{ this.id }}">{{ localize 'VERMINE.interpretation' }}</label>
|
||||
<select class="info-value" data-roll="true" id="interpretation-{{ this.id }}" name="interpretation-{{ this.id }}">
|
||||
{{#each @root.rewards}}
|
||||
<option value="{{ this.value }}">{{ this.label }} ({{ this.value }}D)</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexrow bonus-item">
|
||||
<label class="flexrow">
|
||||
<input type="checkbox" data-roll="true" id="objective-minor-{{ this.id }}" name="objective-minor-{{ this.id }}" />
|
||||
<span class="label">{{ localize 'VERMINE.objective_minor' }} (+3D)</span>
|
||||
</label>
|
||||
<label class="flexrow">
|
||||
<input type="checkbox" data-roll="true" id="objective-major-{{ this.id }}" name="objective-major-{{ this.id }}" />
|
||||
<span class="label">{{ localize 'VERMINE.objective_major' }} (+5D)</span>
|
||||
</label>
|
||||
<label class="flexrow">
|
||||
<input type="checkbox" data-roll="true" id="trauma-{{ this.id }}" name="trauma-{{ this.id }}" />
|
||||
<span class="label">{{ localize 'VERMINE.trauma_reward' }} (+5D)</span>
|
||||
</label>
|
||||
</div>
|
||||
</details>
|
||||
{{else}}
|
||||
<p>{{ localize 'VERMINE.no_character' }}</p>
|
||||
{{/each}}
|
||||
</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="apply">
|
||||
<i class="fas fa-check"></i> {{localize "VERMINE.apply"}}
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
@@ -0,0 +1,94 @@
|
||||
<div class="roll-dialog-content">
|
||||
<h3 class="combat-mode-label">{{ localize 'VERMINE.open_learning' }}</h3>
|
||||
|
||||
<div class="learning-summary">
|
||||
<span class="label">{{ localize 'VERMINE.experience_dice' }}:</span>
|
||||
<span class="exp-value">{{ dice }}D</span>
|
||||
</div>
|
||||
|
||||
<div class="learning-type">
|
||||
<label><input type="radio" data-roll="true" name="learning-type" value="skill" checked /><span>{{ localize 'VERMINE.learn_skill' }}</span></label>
|
||||
<label><input type="radio" data-roll="true" name="learning-type" value="specialty" /><span>{{ localize 'VERMINE.learn_specialty' }}</span></label>
|
||||
<label><input type="radio" data-roll="true" name="learning-type" value="characteristic" /><span>{{ localize 'VERMINE.learn_characteristic' }}</span></label>
|
||||
<label><input type="radio" data-roll="true" name="learning-type" value="reserve" /><span>{{ localize 'VERMINE.learn_reserve' }}</span></label>
|
||||
<label><input type="radio" data-roll="true" name="learning-type" value="evolution" /><span>{{ localize 'VERMINE.learn_evolution' }}</span></label>
|
||||
</div>
|
||||
|
||||
<div id="learning-skill-section" class="learning-targets">
|
||||
<label class="label" for="learning-target">{{ localize 'VERMINE.learn_skill' }}</label>
|
||||
<select class="info-value" data-roll="true" id="learning-target" name="learning-target">
|
||||
{{#each skills}}
|
||||
<option value="{{ this.key }}" data-value="{{ this.value }}" data-rarity="{{ this.rarity }}" data-domain="{{ this.isDomain }}">
|
||||
{{ this.name }} ({{ this.value }} → {{ this.target }})
|
||||
</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="learning-specialty-section" class="learning-targets" style="display:none;">
|
||||
<div class="flexrow bonus-item">
|
||||
<label class="label" for="specialty-name">{{ localize 'VERMINE.learn_specialty_name' }}</label>
|
||||
<input type="text" data-roll="true" id="specialty-name" name="specialty-name" value="{{ localize 'ITEMS.new_specialty' }}" />
|
||||
</div>
|
||||
<p class="learning-hint">{{ localize 'VERMINE.specialty_hint' }}</p>
|
||||
</div>
|
||||
|
||||
<div id="learning-ability-section" class="learning-targets" style="display:none;">
|
||||
<label class="label" for="learning-ability">{{ localize 'VERMINE.learn_characteristic' }}</label>
|
||||
<select class="info-value" data-roll="true" id="learning-ability" name="learning-ability">
|
||||
{{#each abilities}}
|
||||
<option value="{{ this.key }}">{{ this.label }} ({{ this.value }})</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<p class="learning-hint">{{ localize 'VERMINE.characteristic_hint' }}</p>
|
||||
</div>
|
||||
|
||||
<div id="learning-reserve-section" class="learning-targets" style="display:none;">
|
||||
<label class="label" for="learning-reserve">{{ localize 'VERMINE.learn_reserve' }}</label>
|
||||
<select class="info-value" data-roll="true" id="learning-reserve" name="learning-reserve">
|
||||
{{#each reserves}}
|
||||
<option value="{{ this.key }}">{{ this.label }} ({{ this.value }}/{{ this.max }})</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<p class="learning-hint">{{ localize 'VERMINE.reserve_hint' }}</p>
|
||||
</div>
|
||||
|
||||
<div id="learning-evolution-section" class="learning-targets" style="display:none;">
|
||||
<p class="learning-hint">{{ localize 'VERMINE.evolution_hint' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="flexrow bonus-item full-width">
|
||||
<label class="label" for="learning-dice">{{ localize 'VERMINE.dice_spent' }}</label>
|
||||
<input type="number" class="numeric-entry" style="text-align:center;" data-roll="true"
|
||||
id="learning-dice" name="learning-dice" min="1" max="{{ dice }}" value="1" />
|
||||
<span>D</span>
|
||||
</div>
|
||||
|
||||
<div class="learning-result">
|
||||
<div class="context-item">
|
||||
<span class="context-label">{{ localize 'VERMINE.difficulty' }}</span>
|
||||
<span class="context-value" id="diff-value">5</span>
|
||||
</div>
|
||||
<div class="context-item">
|
||||
<span class="context-label">{{ localize 'VERMINE.handicap' }}</span>
|
||||
<span class="context-value" id="handicap-value">0</span>
|
||||
</div>
|
||||
<div class="context-item">
|
||||
<span class="context-label">{{ localize 'VERMINE.success_required' }}</span>
|
||||
<span class="context-value" id="required-value">1</span>
|
||||
</div>
|
||||
<div class="context-item">
|
||||
<span class="context-label">{{ localize 'VERMINE.pool_total' }}</span>
|
||||
<span class="context-value" id="pool-value">1D</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-graduation-cap"></i> {{localize "VERMINE.roll"}}
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
@@ -335,6 +335,33 @@
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!-- EXPERIENCE DICE -->
|
||||
{{#if experience.hasExperience}}
|
||||
<details class="experience-section">
|
||||
<summary class="flexrow">
|
||||
<span class="label">{{localize 'VERMINE.experience_transfer'}}</span>
|
||||
<span class="current-values">{{localize 'VERMINE.experience_dice'}}: <span id="exp-individual">{{experience.individual}}</span>D</span>
|
||||
</summary>
|
||||
<div class="flexcol experience-controls">
|
||||
<div class="flexrow bonus-item">
|
||||
<label class="label" for="experience-pull">{{localize 'VERMINE.experience_pull'}}</label>
|
||||
<select class="info-value" data-roll="true" id="experience-pull" name="experience-pull"
|
||||
{{#unless experience.canPull}}disabled{{/unless}}>
|
||||
{{#each experience.pullOptions}}
|
||||
<option value="{{this}}">{{this}}D</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<span class="experience-group">{{localize 'VERMINE.collective_group'}}: <span id="exp-group">{{experience.groupPool}}</span>D</span>
|
||||
</div>
|
||||
<div class="flexrow bonus-item">
|
||||
<button type="button" data-action="giveToGroup" {{#unless experience.canGive}}disabled{{/unless}}>
|
||||
<i class="fas fa-share"></i> {{localize 'VERMINE.experience_give'}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
{{/if}}
|
||||
|
||||
<!-- TOTAL DICE POOL -->
|
||||
<div class="flexrow total-section">
|
||||
<label class="label">{{localize 'VERMINE.total'}}:</label>
|
||||
|
||||
Reference in New Issue
Block a user