class_name BaseJet extends Node var CONFLICT_SIDE = Globals.FACTION.NEUTRAL var HEALTH: int = 100 var YAW_SPEED: int = 50 var ROLL_SPEED: int = 100 var MIN_SPEED: int = 200 var MAX_SPEED: int = 2000 var ACCELERATION: int = 15 var speed: float = float(MIN_SPEED) func do_action( action: String, delta: float, jet: Jet ) -> void: var change_rate: float = deg_to_rad(1) * delta match action: "pull_up": pull_up(change_rate, jet) "push_down": push_down(change_rate, jet) "yaw_left": yaw_left(change_rate, jet) "yaw_right": yaw_right(change_rate, jet) "roll_left": roll_left(change_rate, jet) "roll_right": roll_right(change_rate, jet) "throttle_up": throttle_up(delta) "throttle_down": throttle_down(delta) _: pass func pull_up(change_rate: float, jet: Jet) -> void: jet.rotate_object_local(Vector3.RIGHT, change_rate * MIN_SPEED) func push_down(change_rate: float, jet: Jet) -> void: jet.rotate_object_local(Vector3.LEFT, change_rate * MIN_SPEED) func yaw_left(change_rate: float, jet: Jet) -> void: jet.rotate_object_local(Vector3.UP, change_rate * YAW_SPEED) func yaw_right(change_rate: float, jet: Jet) -> void: jet.rotate_object_local(Vector3.DOWN, change_rate * YAW_SPEED) func roll_left(change_rate: float, jet: Jet) -> void: jet.rotate_object_local(Vector3.BACK, change_rate * ROLL_SPEED) func roll_right(change_rate: float, jet: Jet) -> void: jet.rotate_object_local(Vector3.FORWARD, change_rate * ROLL_SPEED) func throttle_up(delta: float) -> void: speed = move_toward(speed, MAX_SPEED, ACCELERATION * delta) func throttle_down(delta: float) -> void: speed = move_toward(speed, MIN_SPEED, ACCELERATION * delta)