This commit is contained in:
Patrick 2025-07-31 13:57:50 +02:00
parent fadea22b9d
commit d72b5ac57b
14 changed files with 184 additions and 5 deletions

View file

@ -8,10 +8,13 @@ func _on_dropoff(body: Node3D) -> void:
var player: Player = body
if player.caught_player and !caught_player:
caught_player = player.caught_player
player.caught_player.get_imprisoned.rpc_id(player.caught_player.get_multiplayer_authority(), get_path())
caught_player.get_imprisoned.rpc_id(caught_player.get_multiplayer_authority(), get_path())
player.released_player.rpc_id(player.get_multiplayer_authority())
(player.get_node("ReleaseTimer") as Timer).stop()
($DamageTimer as Timer).start()
for i: int in range(Multiplayer.players.size()):
if Multiplayer.players[i].id == caught_player.get_multiplayer_authority():
Multiplayer.players[i].captured = true
elif !player.hunter and player.visible and caught_player and caught_player.health > 0:
caught_player.go_free.rpc_id(caught_player.get_multiplayer_authority())
caught_player = null

10
entities/escape_area.gd Normal file
View file

@ -0,0 +1,10 @@
extends Area3D
func _on_body_entered(body: Node3D) -> void:
if multiplayer.is_server() and body is Player:
var player: Player = body
if !player.hunter:
for i: int in range(Multiplayer.players.size()):
if Multiplayer.players[i].id == player.get_multiplayer_authority():
Multiplayer.players[i].escaped = true
player.get_caught.rpc_id(player.get_multiplayer_authority(), $"../SpectatorCamera".get_path())

View file

@ -0,0 +1 @@
uid://bvjyyj4m56b7b

14
entities/escape_area.tscn Normal file
View file

@ -0,0 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://dbgqg1wtqmhw3"]
[ext_resource type="Script" uid="uid://bvjyyj4m56b7b" path="res://entities/escape_area.gd" id="1_ubptc"]
[sub_resource type="BoxShape3D" id="BoxShape3D_eij3b"]
size = Vector3(10, 10, 10)
[node name="EscapeArea" type="Area3D"]
script = ExtResource("1_ubptc")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("BoxShape3D_eij3b")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

19
entities/fuse_box.gd Normal file
View file

@ -0,0 +1,19 @@
class_name FuseBox
extends StaticBody3D
var done: bool = false
func _ready() -> void:
if multiplayer.is_server():
Multiplayer.fuseboxes += 1
func _on_fixing_started(body: Node3D) -> void:
if multiplayer.is_server() and !done and body is Player:
var player: Player = body
if !player.hunter:
complete_fusebox()
func complete_fusebox() -> void:
($Hinge as Node3D).rotation.y = 0
done = true
Multiplayer.fuseboxes -= 1

1
entities/fuse_box.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://cclwbdyr23has

44
entities/fuse_box.tscn Normal file
View file

@ -0,0 +1,44 @@
[gd_scene load_steps=6 format=3 uid="uid://d1d30fwvkx66s"]
[ext_resource type="Script" uid="uid://cclwbdyr23has" path="res://entities/fuse_box.gd" id="1_x8jfh"]
[sub_resource type="BoxMesh" id="BoxMesh_dwu7d"]
size = Vector3(0.2, 1, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_g83f7"]
size = Vector3(0.2, 1, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_uyarn"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_o4y3h"]
properties/0/path = NodePath("Hinge:rotation:y")
properties/0/spawn = true
properties/0/replication_mode = 1
[node name="FuseBox" type="StaticBody3D"]
script = ExtResource("1_x8jfh")
[node name="FuseBoxMesh" type="MeshInstance3D" parent="."]
mesh = SubResource("BoxMesh_dwu7d")
[node name="Hinge" type="Node3D" parent="."]
transform = Transform3D(-0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, -0.707107, 0.1, 0, 0.5)
[node name="DoorMesh" type="MeshInstance3D" parent="Hinge"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1, 0, -0.5)
mesh = SubResource("BoxMesh_dwu7d")
skeleton = NodePath("../../FuseBoxMesh")
[node name="Collision" type="CollisionShape3D" parent="."]
shape = SubResource("BoxShape3D_g83f7")
[node name="FixingArea" type="Area3D" parent="."]
[node name="Shape" type="CollisionShape3D" parent="FixingArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, 0)
shape = SubResource("BoxShape3D_uyarn")
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_o4y3h")
[connection signal="body_entered" from="FixingArea" to="." method="_on_fixing_started"]