NPCs can now carry objects.
This commit is contained in:
parent
a6c9909f26
commit
c0d3c68fb3
8 changed files with 130 additions and 23 deletions
29
scripts/maps/carryable/carryable.gd
Normal file
29
scripts/maps/carryable/carryable.gd
Normal 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()
|
|
@ -3,3 +3,4 @@ extends Objective
|
|||
|
||||
func _ready() -> void:
|
||||
displayed = "Hungry"
|
||||
time = 5
|
||||
|
|
|
@ -5,4 +5,5 @@ class_name Objective
|
|||
extends Node3D
|
||||
|
||||
var occupied: bool = false
|
||||
var time: int
|
||||
var displayed: String
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue