diff --git a/src/mudlib/combat/encounter.py b/src/mudlib/combat/encounter.py index 93b82d4..071990d 100644 --- a/src/mudlib/combat/encounter.py +++ b/src/mudlib/combat/encounter.py @@ -123,6 +123,23 @@ class CombatEncounter: combat_ended=False, ) + # Check for altitude mismatch (flying dodge) + attacker_flying = getattr(self.attacker, "flying", False) + defender_flying = getattr(self.defender, "flying", False) + if attacker_flying != defender_flying: + # Altitude mismatch - attack misses + template = "{attacker}'s attack miss{es} — {defender} {is|is} out of reach!" + # Reset to IDLE + self.state = CombatState.IDLE + self.current_move = None + self.pending_defense = None + return ResolveResult( + resolve_template=template, + damage=0.0, + countered=True, + combat_ended=False, + ) + # Check if defense counters attack defense_succeeds = ( self.pending_defense