feat(combat): expose per-pair movement and threat info in observation
This commit is contained in:
@@ -678,6 +678,16 @@ class CombatEngine:
|
||||
)
|
||||
charge = self.can_charge(state, target)
|
||||
can_charge = charge is not None and charge.weapon is not None
|
||||
occupied = state.occupied_cells()
|
||||
target_threatens_me = bool(
|
||||
target.active
|
||||
and any(w.kind == "melee" for w in target.usable_attacks())
|
||||
and self.threatened_squares(target) & occupied
|
||||
)
|
||||
threatening_enemies: set[str] = set()
|
||||
for cell in occupied:
|
||||
for enemy in self.enemies_threatening(state, cell):
|
||||
threatening_enemies.add(enemy.combatant.id)
|
||||
return {
|
||||
"target_index": self._states.index(target),
|
||||
"distance_ft": distance_ft,
|
||||
@@ -689,6 +699,9 @@ class CombatEngine:
|
||||
self._grid, state.occupied_cells(), target.occupied_cells()
|
||||
),
|
||||
"flanking": self._flanking_bonus(state, target) > 0,
|
||||
"movement_cost_ft": self.movement_cost_ft(state, target),
|
||||
"target_threatens_me": target_threatens_me,
|
||||
"enemies_threatening_me": len(threatening_enemies),
|
||||
}
|
||||
|
||||
def _take_turn(self, state: CombatantState) -> bool:
|
||||
|
||||
Reference in New Issue
Block a user