NPCs can now carry objects.

This commit is contained in:
Patrick 2024-12-13 21:18:52 +01:00
parent a6c9909f26
commit c0d3c68fb3
8 changed files with 130 additions and 23 deletions

View file

@ -0,0 +1,29 @@
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()

View file

@ -3,3 +3,4 @@ extends Objective
func _ready() -> void:
displayed = "Hungry"
time = 5

View file

@ -5,4 +5,5 @@ class_name Objective
extends Node3D
var occupied: bool = false
var time: int
var displayed: String