feat(combat): refonte UI — tracker v14, handicap III, malus d'attaque, checkbox
Release Creation / build (release) Failing after 1m28s
Release Creation / build (release) Failing after 1m28s
- 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)
This commit is contained in:
+145
@@ -0,0 +1,145 @@
|
||||
# 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é.
|
||||
|
||||
Reference in New Issue
Block a user