Files
vermine2047/TEST_COMBAT.md
T
uberwald 9f88a66b72
Release Creation / build (release) Failing after 1m28s
feat(combat): refonte UI — tracker v14, handicap III, malus d'attaque, checkbox
- combat-tracker.hbs + fight.mjs : alignés sur le CSS core v14 (header/tracker/footer, boutons <button>), attitudes/couleurs PJ-PNJ conservées, menu contextuel combatant réparé
- less/combat.less (nouveau) : styles custom tracker + footer sticky des dialogues
- handicap des 3 dialogues de jet étendu jusqu'à III
- dialogue d'attaque : champ « Malus temporaires » (malus sur les jets)
- checkbox/radio : flex: 0 0 auto global (fin des icônes étirées — ex. « Deuxième action » 228px → 24px)
- TEST_COMBAT.md : plan de test combat rejouable (S1-S8, tout PASS)
2026-08-07 18:31:04 +02:00

146 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plan de test — Combat Vermine2047 (rejouable)
Base : règles de combat (Kit de Survie p.44-52, `regles/2047_KitDeSurvie-DEF.txt`) et moteur `VermineExchange`/`CombatDialog`/`VermineCombatTracker`.
Ce plan décrit le **setup reproductible**, les **scénarios**, les **valeurs attendues** (déterministes : pools, difficultés, formules) et la **procédure** de validation. Les jets de dés restent aléatoires ; on valide la mécanique, pas un résultat chiffré précis.
## Prérequis
- Monde Vermine2047 sur `https://localhost:31000`, connecté en **Gamemaster**.
- Scène « AA » (`49tnX0ynTzztVkxy`) avec tokens PJ / PNJ (+ token Créature ajouté).
- Dés en main : chaque jet via l'UI crée une carte de chat (animations 3D possibles).
## Acteurs (setup reproductible)
| Acteur | Type | ID | Réglages |
|--------|------|----|----------|
| **Personnage** | PJ (character) | `f6qo5ubEnrSrtcfM` | Vigueur 3, Précision 2, Réflexes 2 · Mêlée 3, Corps-à-corps 2, Armes à feu 3 · Equipé : TEST Epée (lame 3), TEST Fusil (balle 4, mun. 10, 5/50 m), TEST Gilet (Protection 2, Mobilité 1) |
| **PNJ** | PNJ (npc) | `EsksoLF7SV6yx7ZM` | Menace 2 (Attaque 4), Expérience 3 (contact « 5,7 ou 9 », action 4), Rôle 3 (Protection 3) · Equipé : TEST Hache (lame 3), TEST Armure (Protection 3) |
| **Créature** | Créature | `4CCdIWBHSqgApmlR` | Attaque 7, Dommages 5, Vigueur 4, Protection 2, Statut combat Difficulté 7 · Equipée : TEST Morsure (choc 4 + Vigueur) |
### Pools de dés attendus (SkillLevels : lvl2→pool1/reroll1, lvl3→pool2/reroll1)
| Jet | Pool | Difficulté |
|-----|------|-----------|
| PJ contact (Épée, Mêlée 3) | 3 + 2 = **5D** | 5 / 7 / 9 |
| PJ distance (Fusil, AF 3) | 2 + 2 = **4D** | Portée : courte 5 / moyenne 7 / longue 9 |
| PJ esquive | 2 + 1 = **3D** | = difficulté attaque |
| PJ parade | 3 + 2 = **5D** | = difficulté attaque |
| PNJ attaque (Menace 2) | **4D** | 5 / 7 / 9 |
| PNJ défense | **4D** (action) | = difficulté attaque |
| Créature attaque (Morsure) | **7D** | = statut combat (7) |
| Créature défense | **passive** (pas de jet, difficulté verrouillée 7) | — |
### Seuils de blessure (netDamage)
| Acteur | Légère | Grave | Mortelle |
|--------|--------|-------|----------|
| PJ | ≥ 1 | ≥ 4 | ≥ 8 |
| PNJ | ≥ 2 | ≥ 5 | ≥ 8 |
| Créature | ≥ 2 | ≥ 4 | ≥ 6 |
### Formules de résolution (vérifiées par le moteur)
- Dégâts bruts = **Dommages de base + réussites de l'attaquant**.
- Dégâts nets = max(0, bruts Protection du défenseur). La Protection est la somme des **défenses équipées** (PNJ : TEST Armure 3 ; la « Protection » de rôle n'est PAS une défense équipée). Parade : seule la protection utilisée compte.
- Blessure : catégorie dont le seuil est ≤ dégâts nets (la plus haute).
- Défense : ≥ réussites attaquant → paré/esquivé (0 dégât) ; 1+ de plus → touché.
---
## Scénarios
### S1 — Création du combat et initiative
1. Créer un combat « TEST COMBAT » ; ajouter les combatants PJ + PNJ + Créature.
2. `rollAll()` : toutes les initiatives sont jetées (formule `Xd10cs>=7`).
- **Attendu** : combatantCount = 3 ; chaque combatant a une initiative non nulle ; `turn`/`round` cohérents après `startCombat`.
- **Validation** : ⬜
### S2 — Attaque PJ → PNJ au contact (Épée)
1. Cibler le token PNJ. Ouvrir l'attaque via l'icône « Attaque » de la fiche PJ (équipement → TEST Epée).
2. Vérifier le pool **5D** (Vigueur 3 + Mêlée) et les difficultés **5/7/9**.
3. Lancer (difficulté 7). Défense PNJ : **Esquive** (4D).
4. « Résoudre » : dégâts bruts = 3 + réussites PJ ; nets = bruts 3 (Protection PNJ).
- **Attendu** : pool affiché 5D, difficulté 7 ; résolution = formules ci-dessus ; si touché → blessure Légère (≥2) / Grave (≥5) / Mortelle (≥8).
- **Validation** : ⬜
### S3 — Attaque PJ → Créature à distance (Fusil)
1. Cibler le token Créature. Attaque via TEST Fusil.
2. Vérifier le pool **4D**, difficulté de Portée (choisir Moyenne = 7).
3. Lancer. La créature **ne peut pas défendre** (défense passive ; pas de bouton Esquive/Parade sur sa ligne).
- **Attendu** : pool 4D, difficulté 7 ; carte créature = « Défense passive » ; résolution = 4 + réussites 2 (Protection créature) ; seuils créature 2/4/6.
- **Validation** : ⬜
### S4 — Attaque PNJ → PJ (Hache)
1. Cibler le token PJ. Attaque via la Hache du PNJ.
2. Vérifier le pool **4D** (Menace 2) et les difficultés **5/7/9**.
3. Défense PJ : **Parade** (5D, Vigueur + Mêlée) — choisir Parade.
- **Attendu** : pool 4D ; parade 5D ; si touché → 3 + réussites 2 (TEST Gilet) ; seuils PJ 1/4/8.
- **Validation** : ⬜
### S5 — Attaque Créature → PJ (Morsure)
1. Cibler le token PJ. Attaque via TEST Morsure de la créature.
2. Vérifier le pool **7D**, difficulté **verrouillée 7** (statut combat).
3. Défense PJ : **Esquive** (3D).
- **Attendu** : pool 7D, difficulté 7 verrouillée ; dégâts de base = 4 + Vigueur 4 = **8** ; nets = 8 + réussites 2 ; seuils PJ 1/4/8.
- **Validation** : ⬜
### S6 — Traits de combat
- **Rafale (3)** : case « Tir en rafale » sur le Fusil → difficulté +2 (7→9) ; si jet réussi, +3 réussites affichées (« réussites automatiques ») ; si échec, pas de bonus.
- **Rapide (2)** : arme avec Rapide → note « le défenseur subit 2 Handicap(s) » ; la défense du PNJ s'ouvre avec handicap **II** pré-rempli.
- **Lourd (4)** : équiper un objet Lourd 4 au PJ (Vigueur 3 < 4) → malus **-1D** dans le pool (dialogue + ligne « Malus Lourd »).
- **Portée (8)** : arme Portée 8, Vigueur 4 → « Portée effective : 32 m » affichée.
- **Incapacitant (7)** : sur la carte d'échange, bouton « Jet de Santé (7) » → ouvre un jet de Santé vs 7.
- **Zone (6)** : note « Zone (6 m) » + bouton « Appliquer aux cibles de la zone ».
- **Validation** : ⬜
### S7 — Tracker (gestion)
1. Bouton **+** (createCombat) : crée un nouveau combat.
2. Clic droit sur un combatant → menu contextuel (Mettre à jour / Effacer / Relancer / **Supprimer**) ; le bouton poubelle par combatant supprime aussi.
3. Poubelle d'en-tête (deleteCombat) : supprime le combat.
4. Footer : **Commencer** (startCombat), tours (←/→), rounds (←/→), **Terminer** (endCombat).
- **Validation** : ⬜
### S8 — Nettoyage
- Supprimer les combats de test, les items « TEST * », restaurer les compétences PJ (0), retirer le token Créature.
---
## Rapport d'exécution
Chaque scénario : note **PASS** si les valeurs attendues sont vérifiées, **FAIL** sinon (avec l'écart). Les chiffres aléatoires (dés) sont relevés tels quels.
### S1 — Combat & initiative — **PASS**
3 combatants ajoutés ; initiatives jetées (PJ 1, PNJ 0, Créature 0) ; `startCombat` → round 1 ; ordre du tour = initiative décroissante (Personnage, PNJ, Créature).
### S2 — PJ→PNJ contact (Épée) — **PASS**
- Dialogue : pool **5D** (Vigueur 3 + Mêlée 3), difficultés **[5,7,9]**, dégâts de base 3.
- Attaque (difficulté 7) → 2 réussites. Défense PNJ **Esquive 4D** (action) → 0 réussite.
- Résolution : **Touché**, bruts 3+2=5, nets 5 (PNJ sans défense équipée → 0 protection) → **Blessure grave** (seuil 5).
- Application : `majorWound` 0→1, « Blessure appliquée ».
- Note : la « Protection 3 » du rôle PNJ n'est pas une défense équipée → non déduite.
### S3 — PJ→Créature distance (Fusil) — **PASS**
- Dialogue : pool **4D** (Précision 2 + AF 3), difficulté **verrouillée 7** (cible créature).
- Créature : pas de bouton défense → « Défense passive ».
- Résolution : attaque 3 réussites → **Touché**, bruts 4+3=7 protection 2 = **5****Blessure grave** (seuil créature 4).
### S4 — PNJ→PJ (Hache) — **PASS**
- Dialogue PNJ : pool **4D** (Menace 2), difficultés **[5,7,9]**.
- Défense PJ **Parade** : pool **5D** (Vigueur 3 + Mêlée 3), difficulté 7, compétence Mêlée.
- Résolution : attaque 2, défense 2 → **Paré, aucun dégât** (réussites défense ≥ attaque).
### S5 — Créature→PJ (Morsure) — **PASS**
- Dialogue : pool **7D** (attaque), difficulté **verrouillée 7** (statut combat), dégâts de base **8** (4 + Vigueur 4).
- Défense PJ **Esquive** : pool **3D** (Réflexes 2 + Corps-à-corps 2), difficulté 7.
- Résolution (défense 0) : **Touché**, bruts 8+4=12 protection 2 = **10****Blessure mortelle** (seuil 8).
- Bonus : le **malus de blessure** d'une créature blessée est bien appliqué (deadlyWound=1 → 3D, pool 7→4).
### S6 — Traits de combat — **PASS**
- **Rafale (3)** : case → difficulté +2 (7→9) ; jet raté → **aucun bonus** (total 0) ; jet réussi → **+3 réussites** (total = brut + 3, ligne « réussites automatiques »).
- **Rapide (2)** : note sur la carte ; dialogue de défense → handicap **II** pré-rempli.
- **Lourd (4)** : Vigueur 3 < 4 → malus **1D** (pool breakdown « Malus Lourd »).
- **Portée (8)** : portée effective = 8 × Vigueur 3 = **24 m**.
- **Incapacitant (7)** / **Zone (6)** : boutons « Jet de Santé » / « Appliquer aux cibles de la zone » présents sur la carte.
### S7 — Tracker — **PASS** (onglet combat actif requis)
Bouton **+** → nouveau combat ; suppression combatant (bouton poubelle + menu contextuel clic-droit) ; footer **Commencer** → round 1 ; boutons tours/rounds ; **Terminer** → round 0 ; poubelle d'en-tête → suppression du combat.
### S8 — Nettoyage — **PASS**
Combats de test supprimés, items « TEST * » retirés, compétences PJ restaurées, token Créature retiré.