fix(reliability): corrections suite au review

- min: 0 sur reliability (l'update à 0 était clippé à 1 par le schéma —
  l'état 'détruit' était inatteignable)
- réparation de fortune (règles p. 39) : +1D si le personnage possède la
  Compétence requise, sinon Handicap de Rareté de cette Compétence
  (rarity du skill de l'acteur) ; select toujours visible (compétence requise)
  et pré-rempli depuis needSkill/skill de l'item
- dés marqués 'dommage' uniquement pour les Dommages réellement comptés
  (Étanche/Coque absorbe → dés non marqués)
- destruction : damages.value réel conservé (difficulté de réparation
  honnête au lieu de 5 forcé)
- états de panne localisés (VERMINE.damages_state_N), aussi dans panneState()
- ReliabilityDialog invoqué via .create() (convention du codebase)
This commit is contained in:
2026-08-07 13:48:13 +02:00
parent 7ec3d73915
commit 2f78d1a1ea
8 changed files with 56 additions and 26 deletions
+3 -14
View File
@@ -50,6 +50,8 @@ export default class ReliabilityDialog extends HandlebarsApplicationMixin(foundr
async _prepareContext() {
const hasEtanche = !!this.#item.system?.traits?.etanche;
const hasActor = !!this.#item.actor;
const storedSkill = (this.#item.system?.needSkill?.value && this.#item.system?.needSkill?.skill)
|| this.#item.system?.skill || '';
const severities = ['mineurs', 'graves', 'critiques'].map((key) => ({
key,
label: game.i18n.localize(`VERMINE.reliability_severity_${key}`),
@@ -58,6 +60,7 @@ export default class ReliabilityDialog extends HandlebarsApplicationMixin(foundr
const skills = VermineReliability.REPAIR_SKILLS.map((key) => ({
key,
label: game.i18n.localize(`SKILLS.${key}.name`),
selected: key === storedSkill && VermineReliability.REPAIR_SKILLS.includes(storedSkill),
}));
return {
mode: this.#mode,
@@ -70,20 +73,6 @@ export default class ReliabilityDialog extends HandlebarsApplicationMixin(foundr
};
}
_onRender(context, options) {
super._onRender(context, options);
if (this.#mode !== 'repair') return;
const select = this.element.querySelector('#reliability-skill');
const radios = this.element.querySelectorAll('input[name="repairMode"]');
if (!select || !radios.length) return;
const refresh = () => {
const fortune = this.element.querySelector('input[name="repairMode"]:checked')?.value === 'fortune';
select.closest('.form-group')?.classList.toggle('hidden', fortune);
};
radios.forEach((r) => r.addEventListener('change', refresh));
refresh();
}
#getOptions() {
const el = this.element;
if (this.#mode === 'test') {