feat: gestion de la Fiabilité du matériel (test de Fiabilité + réparations)

- module/system/reliability.mjs : VermineReliability
  - Test de Fiabilité : jet Xd10 (Mineurs 1D / Graves 3D / Critiques 5D),
    chaque dé >= Fiabilité inflige 1 Dommage ; réduit Fiabilité et dommages
    cumulés (panne/état/effet) ; destruction à 0
  - Traits appliqués : Coque (absorbe n puis se perd), Cassant (+1 perte),
    Étanche (Dommages d'immersion ignorés si Fiabilité au max)
  - Réparations : classique (Précision + Artisanat/Mécanique/Technologie/
    Armurerie vs Fiabilité d'origine + Handicap de panne, +1 Fiabilité/Réussite)
    et de fortune (Précision + Bricolage, panne réparée sans gain de Fiabilité)
- ReliabilityDialog (test/réparation) + cartes de chat dédiées
- Boutons Test de Fiabilité / Réparer sur les fiches d'items (weapon/defense/item)
- i18n fr/en + styles des cartes et boutons
This commit is contained in:
2026-08-07 08:57:35 +02:00
parent d499f60386
commit 70a97796a3
10 changed files with 688 additions and 1 deletions
+161
View File
@@ -1171,3 +1171,164 @@ ol.chat-log {
}
}
}
// ── Test de Fiabilité / Réparations ──────────────────────────────────
.vermine-reliability-message {
padding: 4px 10px 10px;
.reliability-header {
align-items: center;
gap: 8px;
img {
flex: 0 0 auto;
width: 36px;
height: 36px;
object-fit: cover;
border-radius: 3px;
border: 1px solid @color-border-dark-4;
}
h3 {
font-family: "DistressBlack";
text-transform: uppercase;
font-size: @font-size-13;
margin: 0;
border-bottom: none;
color: @theme-color-dark;
}
}
.reliability-meta {
gap: 4px 12px;
margin: 4px 0 6px;
padding: 4px 8px;
background: rgba(0, 0, 0, 0.06);
border-radius: 3px;
.reliability-meta-item {
font-family: "Roboto", sans-serif;
font-size: @font-size-11;
color: @color-text-dark-primary;
strong {
text-transform: uppercase;
}
}
}
.reliability-results {
gap: 6px;
margin: 6px 0;
.reliability-die {
flex: none;
width: 34px;
height: 34px;
display: flex;
align-items: center;
justify-content: center;
font-family: "DistressBlack";
font-size: @font-size-16;
border: 1px solid @color-border-dark-4;
border-radius: 50%;
background: rgba(0, 0, 0, 0.08);
color: @color-text-dark-primary;
&.damage {
border-color: @color-hemolymph;
background: fade(@color-hemolymph, 15%);
color: @color-hemolymph;
font-weight: 900;
}
&.success {
border-color: @color-acid-green;
background: fade(@color-acid-green, 15%);
color: @color-acid-green;
font-weight: 900;
}
}
}
.reliability-summary {
gap: 4px 16px;
margin: 4px 0;
font-family: "Roboto", sans-serif;
font-size: @font-size-12;
color: @color-text-dark-primary;
strong {
text-transform: uppercase;
}
}
.reliability-note {
margin: 2px 0;
font-size: @font-size-11;
font-style: italic;
color: @color-text-dark-secondary;
}
.reliability-destroyed {
margin: 6px 0 0;
padding: 4px 8px;
font-family: "DistressBlack";
text-transform: uppercase;
font-size: @font-size-12;
text-align: center;
color: @color-hemolymph;
border: 1px solid @color-hemolymph;
border-radius: 3px;
background: fade(@color-hemolymph, 12%);
}
}
.item .reliability-actions {
gap: 6px;
justify-content: center;
margin: 4px 0 8px;
button {
font-family: "DistressBlack", sans-serif;
text-transform: uppercase;
font-size: @font-size-11;
padding: 3px 12px;
cursor: pointer;
color: @theme-color-dark;
background: fade(@color-hemolymph, 15%);
border: 1px solid @color-hemolymph;
border-radius: 3px;
.transition();
&:hover {
color: @theme-color-dark;
background: @color-hemolymph;
}
i {
margin-right: 4px;
}
}
}
.reliability-severities,
.reliability-modes {
gap: 8px;
.reliability-option {
display: flex;
align-items: center;
gap: 4px;
cursor: pointer;
font-size: @font-size-12;
color: @color-text-dark-primary;
}
}
.reliability-hint {
margin: 0;
font-size: @font-size-11;
font-style: italic;
color: @color-text-dark-secondary;
}