hotel-madness/scripts/maps/carryable/carryable.gd

35 lines
936 B
GDScript

## SPDX-License-Identifier: GPL-3.0-or-later
## Copyright (c) 2024 interstellardevelopment.org
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.incapacitate_sync_call(body as Player)
func _physics_process(_delta: float) -> void:
if Networking.isManager and sleeping and !carried:
Networking.object_sync_call(position, rotation, name)