extends CharacterBody3D ## Stand-in bull for the combat tests. As a TARGET it records hitbox callbacks (hits / knock-up); ## as an ATTACKER it exposes the ability-state interface (is_dashing / is_rolling) the matador and ## bear query. Ability flags default off = an ordinary charge. var hits: int = 0 var knocked_up: float = 0.0 var dashing: bool = false var rolling: bool = false func take_sword_hit(_cause: String = "", _hit_pos: Vector3 = Vector3.ZERO) -> void: hits += 1 func apply_knock_up(v: float) -> void: knocked_up = maxf(knocked_up, v) func is_dashing() -> bool: return dashing func is_rolling() -> bool: return rolling