class_name Carryable extends RigidBody3D var carried: bool = false var carried_by: NPC func _ready() -> void: if ($Area3D as Area3D).body_entered.connect(_on_body_entered): pass func carry() -> void: ($CollisionShape3D as CollisionShape3D).disabled = true freeze = true carried = true func uncarry() -> void: ($CollisionShape3D as CollisionShape3D).disabled = false freeze = false carried = false func _on_body_entered(body: Node) -> void: if Networking.isManager: if body is NPC and (body as NPC).phase == 2: carried_by = body Networking.pick_up_sync_call(carried_by, self) if body is Player and carried: Networking.set_down_sync_call(carried_by, self) (body as Player).incapacitate()