feat(attack): étendre advantage/disadvantage externes à resolve_offhand_attack, resolve_unarmed_strike et resolve_opportunity_attack #6

Open
opened 2026-07-02 05:53:52 +00:00 by Reliodas · 0 comments
Owner

Constat d'audit (2026-07-02). La 1.17.0 a ajouté les sources externes d'avantage/désavantage à resolve_weapon_attack, et resolve_monster_action les avait déjà. Mais les règles spatiales consommateur (couverture, portée longue, cible invisible…) s'appliquent tout autant aux autres chemins d'attaque, qui ne les acceptent pas :

  • AttackRules.resolve_offhand_attack (core/attack_rules.gd:65)
  • AttackRules.resolve_unarmed_strike (core/attack_rules.gd:107)
  • ActionRules.resolve_opportunity_attack (facade core/rules_engine.gd:351)

À faire :

  • Ajouter advantage: bool = false, disadvantage: bool = false aux trois méthodes (module spécialisé d'abord, puis facades RulesEngine + wrapper DndRules), même sémantique de combinaison/annulation que resolve_weapon_attack.
  • Rétro-compatible (paramètres optionnels), donc minor.
  • Tests focalisés (avantage seul, désavantage seul, annulation, combinaison avec les sources internes — ex. HEAVY + avantage externe sur off-hand).
  • Documenter dans docs/INTEGRATION.md FR+EN et le CHANGELOG.
**Constat d'audit (2026-07-02).** La 1.17.0 a ajouté les sources externes d'avantage/désavantage à `resolve_weapon_attack`, et `resolve_monster_action` les avait déjà. Mais les règles spatiales consommateur (couverture, portée longue, cible invisible…) s'appliquent tout autant aux autres chemins d'attaque, qui ne les acceptent pas : - `AttackRules.resolve_offhand_attack` (`core/attack_rules.gd:65`) - `AttackRules.resolve_unarmed_strike` (`core/attack_rules.gd:107`) - `ActionRules.resolve_opportunity_attack` (facade `core/rules_engine.gd:351`) **À faire :** - Ajouter `advantage: bool = false, disadvantage: bool = false` aux trois méthodes (module spécialisé d'abord, puis facades `RulesEngine` + wrapper `DndRules`), même sémantique de combinaison/annulation que `resolve_weapon_attack`. - Rétro-compatible (paramètres optionnels), donc *minor*. - Tests focalisés (avantage seul, désavantage seul, annulation, combinaison avec les sources internes — ex. HEAVY + avantage externe sur off-hand). - Documenter dans `docs/INTEGRATION.md` FR+EN et le CHANGELOG.
Reliodas added this to the 1.18.0 milestone 2026-07-02 05:53:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: dnd/dnd55e#6
No description provided.