Compare commits

..

15 Commits

Author SHA1 Message Date
5dc8bc2661 Added cargo lift control label text
Some checks failed
linting & formatting / build (push) Successful in 23s
itch.io publish action / build (linux64, x86_64) (push) Successful in 2m14s
itch.io publish action / build (win64, exe) (push) Has been cancelled
itch.io publish action / build (osx, app) (push) Has been cancelled
2025-07-06 17:40:58 -06:00
f8123ecc00 Enabled cargo bay bulkhead switch 2025-07-06 17:36:23 -06:00
f23611a39d Adjusted wall switch hitbox 2025-07-06 17:35:07 -06:00
4f236e9bf9 New listener intro puzzle in hallway before crew hab 2025-07-06 17:32:45 -06:00
87c747e3d5 Cleaner physics hitboxes, & added physics sofa 2025-07-06 16:50:54 -06:00
7493e3cd5a Starting redesign of crew hab 2025-07-06 15:22:39 -06:00
57b32fd7d3 Bounds for cargo bay warehouse area 2025-07-05 16:47:13 -06:00
9e06f7a55e Set GI mode for elevator platform & associated geometry 2025-07-05 15:57:44 -06:00
88fb78ce2a Cargo bay lift 2025-07-05 15:53:05 -06:00
387121a9fb Basics of cargo bay loading dock 2025-07-04 17:57:52 -06:00
2b9910e7c0 Debug menu function to open all doors 2025-07-04 16:56:40 -06:00
d8406bba9c Less bookkeeping for select & deselect 2025-07-04 16:36:17 -06:00
73afb696a2 Tools are deactivated and tool HUD hidden when holding object 2025-07-04 15:20:26 -06:00
6b3ac1311e Holdable component HUD 2025-07-04 14:56:35 -06:00
7d04454737 Modular interactive components 2025-07-04 13:13:18 -06:00
83 changed files with 5996 additions and 774 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -19,12 +19,12 @@ compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
roughness/mode=1
roughness/src_normal="res://assets/props/bulkhead/bulkhead_door_C.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false

View File

@ -0,0 +1,12 @@
# Blender 4.3.2 MTL File: 'sofa_parts.blend'
# www.blender.org
newmtl Frame_Material
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 2

View File

@ -0,0 +1,195 @@
# Blender 4.3.2
# www.blender.org
mtllib sofa_bottom_cushion.mtl
o BottomCushion
v 0.300727 -0.076171 -0.402174
v 0.301396 -0.031171 -0.447169
v 0.345722 -0.031171 -0.401504
v 0.300727 0.073829 -0.402174
v 0.345722 0.028829 -0.401504
v 0.301396 0.028829 -0.447169
v -0.288005 -0.031171 -0.455939
v -0.288675 -0.076171 -0.410944
v -0.333670 -0.031171 -0.411614
v -0.288675 0.073829 -0.410944
v -0.288005 0.028829 -0.455939
v -0.333670 0.028829 -0.411614
v -0.301396 -0.031171 0.443961
v -0.345722 -0.031171 0.398297
v -0.300727 -0.076171 0.398966
v -0.300727 0.073829 0.398966
v -0.345722 0.028829 0.398297
v -0.301396 0.028829 0.443961
v 0.288005 -0.031171 0.452732
v 0.288675 -0.076171 0.407737
v 0.333670 -0.031171 0.408406
v 0.288005 0.028829 0.452732
v 0.333670 0.028829 0.408406
v 0.288675 0.073829 0.407737
v 0.108329 -0.076171 -0.405097
v -0.095807 -0.076171 -0.408021
v -0.095111 -0.029414 -0.453016
v 0.109025 -0.029414 -0.450092
v 0.109025 0.032927 -0.450092
v -0.095111 0.032927 -0.453016
v -0.095807 0.079684 -0.408021
v 0.108329 0.079684 -0.405097
v -0.108329 -0.076171 0.409909
v 0.095807 -0.076171 0.412832
v 0.095111 -0.029414 0.457827
v -0.109025 -0.029414 0.454904
v -0.109025 0.032927 0.454904
v 0.095111 0.032927 0.457827
v 0.095807 0.079684 0.412832
v -0.108329 0.079684 0.409909
vn 0.9999 -0.0000 0.0149
vn 0.0152 -0.0000 -0.9999
vn 0.0264 -0.0000 0.9997
vn -0.9999 -0.0000 -0.0149
vn 0.0304 0.9995 0.0005
vn -0.0000 -1.0000 -0.0000
vn 0.5859 -0.5774 -0.5687
vn 0.5859 0.5774 -0.5687
vn -0.5687 -0.5774 -0.5859
vn -0.5687 0.5774 -0.5859
vn -0.5859 -0.5774 0.5687
vn -0.5859 0.5774 0.5687
vn 0.5687 -0.5774 0.5859
vn 0.5687 0.5774 0.5859
vn 0.0140 -0.7002 -0.7138
vn -0.0072 0.7001 -0.7140
vn 0.0157 -0.7000 0.7140
vn 0.0369 0.6994 0.7137
vn 0.7175 -0.0000 -0.6965
vn 0.7070 0.7071 0.0105
vn -0.7070 -0.7071 -0.0105
vn -0.6965 -0.0000 -0.7175
vn -0.7175 -0.0000 0.6965
vn -0.7070 0.7071 -0.0105
vn 0.7070 -0.7071 0.0105
vn 0.6965 -0.0000 0.7175
vn -0.0586 0.6994 0.7123
vn -0.0103 0.6934 0.7204
vn -0.0374 -0.7000 0.7132
vn -0.0103 -0.6934 0.7204
vn 0.0290 0.7001 -0.7134
vn 0.0103 0.6934 -0.7204
vn 0.0077 -0.7002 -0.7139
vn 0.0103 -0.6934 -0.7204
vn -0.0304 0.9995 -0.0005
vn -0.0000 1.0000 -0.0000
vn -0.0568 -0.0000 0.9984
vn -0.0143 -0.0000 0.9999
vn 0.0143 -0.0000 -0.9999
vt 0.937500 0.695312
vt 0.937500 0.546875
vt 0.953125 0.546875
vt 0.953125 0.695312
vt 0.843750 0.710938
vt 0.843750 0.726562
vt 0.804688 0.726562
vt 0.804688 0.710938
vt 0.882812 0.531250
vt 0.882812 0.515625
vt 0.921875 0.515625
vt 0.921875 0.531250
vt 0.773438 0.546875
vt 0.789062 0.546875
vt 0.789062 0.695312
vt 0.773438 0.695312
vt 0.882812 0.546875
vt 0.921875 0.546875
vt 0.921875 0.695312
vt 0.882812 0.695312
vt 0.304688 0.687500
vt 0.304688 0.539062
vt 0.343750 0.539062
vt 0.343750 0.687500
vt 0.968750 0.695312
vt 0.960938 0.710938
vt 0.929688 0.710938
vt 0.765625 0.710938
vt 0.757812 0.695312
vt 0.804688 0.695312
vt 0.796875 0.710938
vt 0.765625 0.531250
vt 0.757812 0.546875
vt 0.804688 0.546875
vt 0.796875 0.531250
vt 0.960938 0.531250
vt 0.968750 0.546875
vt 0.929688 0.531250
vt 0.843750 0.742188
vt 0.804688 0.742188
vt 0.843750 0.695312
vt 0.882812 0.500000
vt 0.921875 0.500000
vt 0.953125 0.710938
vt 0.937500 0.710938
vt 0.789062 0.710938
vt 0.773438 0.710938
vt 0.773438 0.531250
vt 0.789062 0.531250
vt 0.937500 0.531250
vt 0.953125 0.531250
vt 0.804688 0.531250
vt 0.843750 0.531250
vt 0.843750 0.546875
vt 0.804688 0.500000
vt 0.843750 0.500000
vt 0.843750 0.515625
vt 0.804688 0.515625
vt 0.921875 0.710938
vt 0.882812 0.710938
vt 0.921875 0.742188
vt 0.882812 0.742188
vt 0.882812 0.726562
vt 0.921875 0.726562
vt 0.226562 0.687500
vt 0.226562 0.539062
vt 0.265625 0.539062
vt 0.265625 0.687500
s 0
usemtl Frame_Material
f 5/1/1 23/2/1 21/3/1 3/4/1
f 30/5/2 27/6/2 7/7/2 11/8/2
f 38/9/3 35/10/3 19/11/3 22/12/3
f 14/13/4 17/14/4 12/15/4 9/16/4
f 39/17/5 24/18/5 4/19/5 32/20/5
f 34/21/6 25/22/6 1/23/6 20/24/6
f 1/25/7 2/26/7 3/4/7
f 4/19/8 5/1/8 6/27/8
f 7/28/9 8/29/9 9/16/9
f 10/30/10 11/31/10 12/15/10
f 13/32/11 14/13/11 15/33/11
f 16/34/12 17/14/12 18/35/12
f 19/36/13 20/37/13 21/3/13
f 22/38/14 23/2/14 24/18/14
f 26/39/15 8/40/15 7/7/15 27/6/15
f 30/5/16 11/8/16 10/30/16 31/41/16
f 34/42/17 20/43/17 19/11/17 35/10/17
f 38/9/18 22/12/18 24/18/18 39/17/18
f 5/1/19 3/4/19 2/44/19 6/45/19
f 23/2/20 5/1/20 4/19/20 24/18/20
f 14/13/21 9/16/21 8/29/21 15/33/21
f 9/16/22 12/15/22 11/46/22 7/47/22
f 17/14/23 14/13/23 13/48/23 18/49/23
f 12/15/24 17/14/24 16/34/24 10/30/24
f 3/4/25 21/3/25 20/37/25 1/25/25
f 21/3/26 23/2/26 22/50/26 19/51/26
f 18/52/27 37/53/27 40/54/27 16/34/27
f 37/53/28 38/9/28 39/17/28 40/54/28
f 15/55/29 33/56/29 36/57/29 13/58/29
f 33/56/30 34/42/30 35/10/30 36/57/30
f 6/59/31 29/60/31 32/20/31 4/19/31
f 29/60/32 30/5/32 31/41/32 32/20/32
f 1/61/33 25/62/33 28/63/33 2/64/33
f 25/62/34 26/39/34 27/6/34 28/63/34
f 15/65/6 8/66/6 26/67/6 33/68/6
f 33/68/6 26/67/6 25/22/6 34/21/6
f 16/34/35 40/54/35 31/41/35 10/30/35
f 40/54/36 39/17/36 32/20/36 31/41/36
f 18/52/37 13/58/37 36/57/37 37/53/37
f 37/53/38 36/57/38 35/10/38 38/9/38
f 6/59/2 2/64/2 28/63/2 29/60/2
f 29/60/39 28/63/39 27/6/39 30/5/39

View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://bc4otwcwsiu2m"
path="res://.godot/imported/sofa_bottom_cushion.obj-53455774d3eb6d03a3ba0b141be85073.mesh"
[deps]
files=["res://.godot/imported/sofa_bottom_cushion.obj-53455774d3eb6d03a3ba0b141be85073.mesh"]
source_file="res://assets/props/sofa/sofa_bottom_cushion.obj"
dest_files=["res://.godot/imported/sofa_bottom_cushion.obj-53455774d3eb6d03a3ba0b141be85073.mesh", "res://.godot/imported/sofa_bottom_cushion.obj-53455774d3eb6d03a3ba0b141be85073.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@ -0,0 +1,12 @@
# Blender 4.3.2 MTL File: 'sofa_parts.blend'
# www.blender.org
newmtl Frame_Material
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 2

View File

@ -0,0 +1,220 @@
# Blender 4.3.2
# www.blender.org
mtllib sofa_frame.mtl
o Frame
v 1.040000 -0.500000 -0.600000
v 1.040000 -0.500000 0.600000
v -1.040000 -0.500000 -0.600000
v -1.040000 -0.500000 0.600000
v 1.040000 -0.300000 -0.300000
v -1.040000 -0.300000 -0.300000
v -1.040000 0.300000 -0.510000
v -1.040000 0.300000 -0.600000
v 1.040000 0.300000 -0.600000
v 1.040000 0.300000 -0.510000
v 1.090000 -0.350000 0.600000
v 1.040000 -0.300000 0.550000
v -1.040000 -0.300000 0.550000
v -1.090000 -0.350000 0.600000
v 1.250000 -0.500000 -0.600000
v 1.300000 -0.500000 -0.550000
v 1.300000 -0.500000 0.550000
v 1.250000 -0.500000 0.600000
v -1.250000 -0.500000 0.600000
v -1.300000 -0.500000 0.550000
v -1.300000 -0.500000 -0.550000
v -1.250000 -0.500000 -0.600000
v 1.040000 0.050000 0.550000
v 1.090000 0.050000 0.600000
v 1.090000 0.100000 0.550000
v -1.040000 0.050000 -0.600000
v -1.090000 0.100000 -0.550000
v 1.090000 0.100000 -0.550000
v 1.040000 0.050000 -0.600000
v -1.040000 0.050000 0.550000
v -1.090000 0.100000 0.550000
v -1.090000 0.050000 0.600000
v 1.300000 0.050000 0.550000
v 1.250000 0.100000 0.550000
v 1.250000 0.050000 0.600000
v -1.300000 0.050000 -0.550000
v -1.250000 0.100000 -0.550000
v -1.250000 0.050000 -0.600000
v 1.300000 0.050000 -0.550000
v 1.250000 0.050000 -0.600000
v 1.250000 0.100000 -0.550000
v -1.300000 0.050000 0.550000
v -1.250000 0.050000 0.600000
v -1.250000 0.100000 0.550000
v 1.040000 0.050000 -0.422500
v -1.040000 0.050000 -0.422500
vn -0.0000 -0.0000 1.0000
vn -0.0000 -0.0000 -1.0000
vn -0.0000 1.0000 -0.0000
vn -1.0000 -0.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -1.0000 -0.0000
vn -0.0000 0.3304 0.9439
vn -0.5774 0.5774 0.5773
vn 0.5774 0.5774 0.5773
vn 0.5774 0.5773 0.5774
vn -0.5774 0.5773 -0.5774
vn 0.5774 0.5773 -0.5774
vn -0.5774 0.5773 0.5774
vn -0.0000 0.7071 0.7071
vn -0.7071 0.7071 -0.0000
vn 0.7071 0.7071 -0.0000
vn -0.0000 0.7071 -0.7071
vn -0.7071 -0.0000 0.7071
vn 0.7071 -0.0000 -0.7071
vn 0.7071 -0.0000 0.7071
vn -0.7071 -0.0000 -0.7071
vt 0.031250 0.710938
vt 0.109375 0.742188
vt 0.000000 0.742188
vt 0.609375 0.054688
vt 0.609375 0.015625
vt 0.718750 0.015625
vt 0.718750 0.054688
vt 0.109375 0.250000
vt 0.109375 0.281250
vt 0.031250 0.281250
vt 0.617188 0.546875
vt 0.617188 0.960938
vt 0.601562 0.960938
vt 0.601562 0.546875
vt 0.609375 0.468750
vt 0.765625 0.054688
vt 0.765625 0.468750
vt 0.718750 0.468750
vt 0.664062 0.515625
vt 0.671875 0.546875
vt 0.617188 0.531250
vt 0.226562 0.210938
vt 0.226562 0.015625
vt 0.296875 0.039062
vt 0.296875 0.210938
vt 0.937500 0.054688
vt 0.937500 0.468750
vt 0.773438 0.468750
vt 0.773438 0.054688
vt 0.140625 0.226562
vt 0.140625 0.031250
vt 0.210938 0.031250
vt 0.210938 0.203125
vt 0.000000 0.234375
vt 0.000000 0.015625
vt 0.109375 0.015625
vt 0.109375 0.234375
vt 0.593750 0.007812
vt 0.601562 0.015625
vt 0.601562 0.054688
vt 0.367188 0.054688
vt 0.367188 0.015625
vt 0.375000 0.007812
vt 0.601562 0.468750
vt 0.601562 0.507812
vt 0.593750 0.515625
vt 0.375000 0.515625
vt 0.367188 0.507812
vt 0.367188 0.468750
vt 0.125000 0.710938
vt 0.343750 0.710938
vt 0.343750 0.742188
vt 0.125000 0.742188
vt 0.000000 0.289062
vt 0.000000 0.703125
vt 0.742188 0.546875
vt 0.742188 0.960938
vt 0.671875 0.960938
vt 0.125000 0.281250
vt 0.125000 0.250000
vt 0.343750 0.250000
vt 0.343750 0.281250
vt 0.000000 0.976562
vt 0.000000 0.757812
vt 0.109375 0.757812
vt 0.109375 0.976562
vt 0.117188 0.296875
vt 0.117188 0.695312
vt 0.109375 0.710938
vt 0.117188 0.234375
vt 0.351562 0.757812
vt 0.359375 0.742188
vt 0.351562 0.234375
vt 0.359375 0.250000
vt 0.117188 0.757812
vt 0.953125 0.046875
vt 0.953125 0.476562
vt 0.320312 0.296875
vt 0.125000 0.296875
vt 0.351562 0.296875
vt 0.125000 0.695312
vt 0.320312 0.695312
vt 0.351562 0.695312
vt 0.125000 0.015625
vt 0.125000 0.234375
vt 0.125000 0.757812
vt 0.125000 0.976562
vt 0.359375 0.289062
vt 0.359375 0.703125
vt 0.304688 0.226562
vt 0.226562 0.226562
vt 0.000000 0.000000
vt 0.109375 0.000000
vt 0.000000 0.250000
vt 0.140625 0.015625
vt 0.218750 0.015625
vt 0.109375 0.992188
vt 0.000000 0.992188
vt 0.664062 0.992188
vt 0.617188 0.976562
vt 0.609375 0.507812
vt 0.718750 0.507812
s 0
usemtl Frame_Material
f 14/1/1 43/2/1 19/3/1
f 3/4/2 22/5/2 38/6/2 26/7/2
f 35/8/1 24/9/1 11/10/1
f 7/11/3 10/12/3 9/13/3 8/14/3
f 1/15/2 3/4/2 26/7/2 8/16/2 9/17/2 29/18/2
f 26/19/4 46/20/4 7/11/4 8/21/4
f 23/22/4 45/23/4 5/24/4 12/25/4
f 13/26/3 12/27/3 5/28/3 6/29/3
f 46/30/5 30/31/5 13/32/5 6/33/5
f 17/34/5 16/35/5 39/36/5 33/37/5
f 21/38/6 22/39/6 3/40/6 4/41/6 19/42/6 20/43/6
f 1/44/6 15/45/6 16/46/6 17/47/6 18/48/6 2/49/6
f 31/50/3 27/51/3 37/52/3 44/53/3
f 2/54/1 11/10/1 14/1/1 4/55/1
f 6/56/7 5/57/7 45/58/7 10/12/7 7/11/7 46/20/7
f 25/59/3 34/60/3 41/61/3 28/62/3
f 21/63/4 20/64/4 42/65/4 36/66/4
f 3/40/6 1/44/6 2/49/6 4/41/6
f 23/67/8 24/9/8 25/59/8
f 30/68/9 31/50/9 32/69/9
f 33/70/10 34/60/10 35/8/10
f 36/71/11 37/52/11 38/72/11
f 39/73/12 40/74/12 41/61/12
f 42/75/13 43/2/13 44/53/13
f 12/27/14 13/26/14 14/76/14 11/77/14
f 45/78/15 23/79/15 25/59/15 28/62/15 29/80/15
f 31/50/16 30/81/16 46/82/16 26/83/16 27/51/16
f 41/84/16 34/85/16 33/37/16 39/36/16
f 44/86/15 37/87/15 36/66/15 42/65/15
f 40/74/17 29/88/17 28/62/17 41/61/17
f 24/9/14 35/8/14 34/60/14 25/59/14
f 37/52/17 27/51/17 26/89/17 38/72/17
f 31/50/14 44/53/14 43/2/14 32/69/14
f 11/90/18 24/91/18 23/22/18 12/25/18
f 39/36/19 16/35/19 15/92/19 40/93/19
f 35/8/20 18/94/20 17/34/20 33/37/20
f 13/32/20 30/31/20 32/95/20 14/96/20
f 42/65/18 20/64/18 19/3/18 43/2/18
f 38/97/21 22/98/21 21/63/21 36/66/21
f 45/58/5 29/99/5 9/100/5 10/12/5
f 15/101/2 1/15/2 29/18/2 40/102/2
f 19/3/1 4/55/1 14/1/1
f 14/1/1 32/69/1 43/2/1
f 11/10/1 2/54/1 18/94/1
f 18/94/1 35/8/1 11/10/1

View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://vb5cxt1113xr"
path="res://.godot/imported/sofa_frame.obj-f87f60fc5f094b1938fb864d31e6949f.mesh"
[deps]
files=["res://.godot/imported/sofa_frame.obj-f87f60fc5f094b1938fb864d31e6949f.mesh"]
source_file="res://assets/props/sofa/sofa_frame.obj"
dest_files=["res://.godot/imported/sofa_frame.obj-f87f60fc5f094b1938fb864d31e6949f.mesh", "res://.godot/imported/sofa_frame.obj-f87f60fc5f094b1938fb864d31e6949f.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@ -0,0 +1,12 @@
# Blender 4.3.2 MTL File: 'sofa_parts.blend'
# www.blender.org
newmtl Frame_Material
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 2

View File

@ -0,0 +1,53 @@
# Blender 4.3.2
# www.blender.org
mtllib sofa_frame_back.mtl
o FrameBack
v 1.040000 -0.500000 -0.600000
v -1.040000 -0.500000 -0.600000
v 1.040000 -0.300000 -0.300000
v -1.040000 -0.300000 -0.300000
v -1.040000 0.300000 -0.510000
v -1.040000 0.300000 -0.600000
v 1.040000 0.300000 -0.600000
v 1.040000 0.300000 -0.510000
v -1.040000 0.050000 -0.600000
v 1.040000 0.050000 -0.600000
v 1.040000 0.050000 -0.422500
v -1.040000 0.050000 -0.422500
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn -1.0000 -0.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 0.3304 0.9439
vn -0.0000 -0.8321 0.5547
vt 0.617188 0.546875
vt 0.617188 0.960938
vt 0.601562 0.960938
vt 0.601562 0.546875
vt 0.609375 0.468750
vt 0.609375 0.054688
vt 0.718750 0.054688
vt 0.765625 0.054688
vt 0.765625 0.468750
vt 0.718750 0.468750
vt 0.773438 0.054688
vt 0.671875 0.960938
vt 0.773438 0.468750
vt 0.742188 0.546875
vt 0.742188 0.960938
vt 0.671875 0.546875
vt 0.601562 0.054688
s 0
usemtl Frame_Material
f 5/1/1 8/2/1 7/3/1 6/4/1
f 1/5/2 2/6/2 9/7/2 6/8/2 7/9/2 10/10/2
f 9/7/3 2/6/3 4/11/3
f 10/10/4 11/12/4 3/13/4
f 10/10/4 7/9/4 8/2/4
f 4/14/5 3/15/5 11/12/5 8/2/5 5/1/5 12/16/5
f 12/16/3 5/1/3 9/7/3
f 4/11/6 2/17/6 1/5/6 3/13/6
f 4/11/3 12/16/3 9/7/3
f 3/13/4 1/5/4 10/10/4
f 10/10/4 8/2/4 11/12/4
f 5/1/3 6/8/3 9/7/3

View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://p5abgc2c764"
path="res://.godot/imported/sofa_frame_back.obj-daa20e12fe932de857b90d19a05f57b4.mesh"
[deps]
files=["res://.godot/imported/sofa_frame_back.obj-daa20e12fe932de857b90d19a05f57b4.mesh"]
source_file="res://assets/props/sofa/sofa_frame_back.obj"
dest_files=["res://.godot/imported/sofa_frame_back.obj-daa20e12fe932de857b90d19a05f57b4.mesh", "res://.godot/imported/sofa_frame_back.obj-daa20e12fe932de857b90d19a05f57b4.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@ -0,0 +1,12 @@
# Blender 4.3.2 MTL File: 'sofa_parts.blend'
# www.blender.org
newmtl Frame_Material
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 2

View File

@ -0,0 +1,51 @@
# Blender 4.3.2
# www.blender.org
mtllib sofa_frame_base.mtl
o FrameBase
v 1.040000 -0.500000 -0.600000
v 1.040000 -0.500000 0.600000
v -1.040000 -0.500000 -0.600000
v -1.040000 -0.500000 0.600000
v 1.040000 -0.300000 -0.300000
v -1.040000 -0.300000 -0.300000
v 1.040000 -0.350000 0.600000
v 1.040000 -0.300000 0.550000
v -1.040000 -0.300000 0.550000
v -1.040000 -0.350000 0.600000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 0.8321 -0.5547
vn -0.0000 -0.0000 1.0000
vn -0.0000 -1.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 0.7071 0.7071
vt 0.773438 0.054688
vt 0.367188 0.054688
vt 0.937500 0.054688
vt 0.937500 0.468750
vt 0.773438 0.468750
vt 0.609375 0.054688
vt 0.609375 0.468750
vt 0.742188 0.546875
vt 0.000000 0.289062
vt 0.031250 0.281250
vt 0.031250 0.710938
vt 0.000000 0.703125
vt 0.601562 0.054688
vt 0.601562 0.468750
vt 0.367188 0.468750
vt 0.953125 0.046875
vt 0.953125 0.476562
s 0
usemtl Frame_Material
f 6/1/1 4/2/1 9/3/1
f 9/3/2 8/4/2 5/5/2 6/1/2
f 3/6/1 4/2/1 6/1/1
f 5/5/3 1/7/3 3/6/3 6/8/3
f 2/9/4 7/10/4 10/11/4 4/12/4
f 3/13/5 1/14/5 2/15/5 4/2/5
f 5/5/6 8/4/6 2/15/6
f 8/4/7 9/3/7 10/16/7 7/17/7
f 2/15/6 1/7/6 5/5/6
f 4/2/1 10/11/1 9/3/1
f 7/10/6 2/15/6 8/4/6

View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://c4iypmwtplmbb"
path="res://.godot/imported/sofa_frame_base.obj-32658da007f3f052dbe8f2e8ff3bfdcc.mesh"
[deps]
files=["res://.godot/imported/sofa_frame_base.obj-32658da007f3f052dbe8f2e8ff3bfdcc.mesh"]
source_file="res://assets/props/sofa/sofa_frame_base.obj"
dest_files=["res://.godot/imported/sofa_frame_base.obj-32658da007f3f052dbe8f2e8ff3bfdcc.mesh", "res://.godot/imported/sofa_frame_base.obj-32658da007f3f052dbe8f2e8ff3bfdcc.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@ -0,0 +1,12 @@
# Blender 4.3.2 MTL File: 'sofa_parts.blend'
# www.blender.org
newmtl Frame_Material
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 2

View File

@ -0,0 +1,81 @@
# Blender 4.3.2
# www.blender.org
mtllib sofa_frame_middle.mtl
o FrameMiddle
v 1.040000 -0.500000 -0.600000
v 1.040000 -0.500000 0.600000
v -1.040000 -0.500000 -0.600000
v -1.040000 -0.500000 0.600000
v 1.040000 -0.300000 -0.300000
v -1.040000 -0.300000 -0.300000
v -1.040000 0.300000 -0.510000
v -1.040000 0.300000 -0.600000
v 1.040000 0.300000 -0.600000
v 1.040000 0.300000 -0.510000
v 1.040000 -0.350000 0.600000
v 1.040000 -0.300000 0.550000
v -1.040000 -0.300000 0.550000
v -1.040000 -0.350000 0.600000
v -1.040000 0.050000 -0.600000
v 1.040000 0.050000 -0.600000
v 1.040000 0.050000 -0.422500
v -1.040000 0.050000 -0.422500
vn -1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 1.0000
vn -0.0000 0.3304 0.9439
vn -0.0000 -1.0000 -0.0000
vn -0.0000 0.7071 0.7071
vt 0.773438 0.054688
vt 0.367188 0.054688
vt 0.937500 0.054688
vt 0.617188 0.546875
vt 0.617188 0.960938
vt 0.601562 0.960938
vt 0.601562 0.546875
vt 0.609375 0.468750
vt 0.609375 0.054688
vt 0.718750 0.054688
vt 0.765625 0.054688
vt 0.765625 0.468750
vt 0.718750 0.468750
vt 0.937500 0.468750
vt 0.773438 0.468750
vt 0.671875 0.960938
vt 0.000000 0.289062
vt 0.031250 0.281250
vt 0.031250 0.710938
vt 0.000000 0.703125
vt 0.742188 0.546875
vt 0.742188 0.960938
vt 0.671875 0.546875
vt 0.601562 0.054688
vt 0.601562 0.468750
vt 0.367188 0.468750
vt 0.953125 0.046875
vt 0.953125 0.476562
s 0
usemtl Frame_Material
f 6/1/1 4/2/1 13/3/1
f 7/4/2 10/5/2 9/6/2 8/7/2
f 1/8/3 3/9/3 15/10/3 8/11/3 9/12/3 16/13/3
f 15/10/1 3/9/1 6/1/1
f 13/3/2 12/14/2 5/15/2 6/1/2
f 3/9/1 4/2/1 6/1/1
f 16/13/4 17/16/4 5/15/4
f 16/13/4 9/12/4 10/5/4
f 2/17/5 11/18/5 14/19/5 4/20/5
f 6/21/6 5/22/6 17/16/6 10/5/6 7/4/6 18/23/6
f 3/24/7 1/25/7 2/26/7 4/2/7
f 18/23/1 7/4/1 15/10/1
f 5/15/4 12/14/4 2/26/4
f 12/14/8 13/3/8 14/27/8 11/28/8
f 2/26/4 1/8/4 5/15/4
f 4/2/1 14/19/1 13/3/1
f 11/18/4 2/26/4 12/14/4
f 6/1/1 18/23/1 15/10/1
f 5/15/4 1/8/4 16/13/4
f 16/13/4 10/5/4 17/16/4
f 7/4/1 8/11/1 15/10/1

View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://dpvf0k6w8dvvk"
path="res://.godot/imported/sofa_frame_middle.obj-ff4d918d56fe72b8485db34fce12a392.mesh"
[deps]
files=["res://.godot/imported/sofa_frame_middle.obj-ff4d918d56fe72b8485db34fce12a392.mesh"]
source_file="res://assets/props/sofa/sofa_frame_middle.obj"
dest_files=["res://.godot/imported/sofa_frame_middle.obj-ff4d918d56fe72b8485db34fce12a392.mesh", "res://.godot/imported/sofa_frame_middle.obj-ff4d918d56fe72b8485db34fce12a392.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@ -0,0 +1,12 @@
# Blender 4.3.2 MTL File: 'sofa_parts.blend'
# www.blender.org
newmtl Frame_Material
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 2

View File

@ -0,0 +1,134 @@
# Blender 4.3.2
# www.blender.org
mtllib sofa_top_cushion.mtl
o TopCushion
v 0.294733 -0.216543 0.119762
v 0.294733 -0.246275 0.034815
v 0.339733 -0.231409 0.077289
v 0.294733 -0.273882 0.092154
v -0.294733 -0.216543 0.119762
v -0.294733 -0.246275 0.034815
v -0.294733 -0.273882 0.092155
v -0.339733 -0.231409 0.077289
v -0.294733 0.270939 -0.098533
v -0.294733 0.243331 -0.041193
v -0.294733 0.213599 -0.126141
v -0.339733 0.228465 -0.083667
v 0.294733 0.243331 -0.041194
v 0.339733 0.228465 -0.083667
v 0.294733 0.213599 -0.126141
v 0.294733 0.270939 -0.098533
v 0.098244 0.220468 -0.125977
v -0.098244 0.220468 -0.125977
v -0.098244 0.250200 -0.036001
v 0.098244 0.250200 -0.036002
v 0.098244 -0.273882 0.105239
v -0.098244 -0.273882 0.105239
v -0.098244 -0.246275 0.044506
v 0.098244 -0.246275 0.044506
v 0.098244 -0.216543 0.134481
v -0.098244 -0.216543 0.134481
v -0.098244 0.277807 -0.096735
v 0.098244 0.277807 -0.096735
vn -0.0295 -0.3366 -0.9412
vn 0.0535 0.3363 0.9402
vn 0.5774 -0.3542 0.7357
vn 0.5773 -0.7357 -0.3542
vn -0.5773 -0.3542 0.7357
vn -0.5774 -0.7357 -0.3542
vn -0.5774 0.7357 0.3542
vn -0.5774 0.3542 -0.7357
vn 0.5774 0.7357 0.3542
vn 0.5774 0.3542 -0.7357
vn 0.7071 -0.2336 -0.6674
vn 0.0111 0.4441 -0.8959
vn 0.0392 0.9051 0.4233
vn 0.0245 -0.9056 -0.4235
vn -0.0633 -0.4433 0.8942
vn -0.7071 0.2336 0.6674
vn -0.7071 -0.2336 -0.6674
vn 0.7071 0.2336 0.6674
vn 0.0633 -0.4433 0.8942
vn -0.0000 -0.4543 0.8908
vn -0.0245 -0.9056 -0.4235
vn -0.0000 -0.9104 -0.4138
vn -0.0392 0.9051 0.4233
vn -0.0000 0.9104 0.4138
vn -0.0111 0.4441 -0.8959
vn -0.0000 0.4543 -0.8908
vn -0.0535 0.3363 0.9402
vn -0.0000 0.3431 0.9393
vn 0.0295 -0.3366 -0.9412
vn -0.0000 -0.3431 -0.9393
vt 0.343750 0.859375
vt 0.304688 0.859375
vt 0.304688 0.765625
vt 0.343750 0.765625
vt 0.343750 0.882812
vt 0.343750 0.976562
vt 0.304688 0.976562
vt 0.304688 0.882812
vt 0.296875 0.976562
vt 0.304688 0.984375
vt 0.289062 0.976562
vt 0.296875 0.984375
vt 0.421875 0.984375
vt 0.421875 0.976562
vt 0.429688 0.976562
vt 0.437500 0.976562
vt 0.429688 0.984375
vt 0.421875 0.875000
vt 0.429688 0.882812
vt 0.421875 0.882812
vt 0.437500 0.882812
vt 0.429688 0.875000
vt 0.304688 0.875000
vt 0.296875 0.882812
vt 0.289062 0.882812
vt 0.296875 0.875000
vt 0.343750 0.875000
vt 0.382812 0.984375
vt 0.421875 1.000000
vt 0.382812 1.000000
vt 0.382812 0.976562
vt 0.343750 0.984375
vt 0.343750 1.000000
vt 0.304688 1.000000
vt 0.382812 0.882812
vt 0.382812 0.875000
vt 0.382812 0.859375
vt 0.421875 0.859375
vt 0.382812 0.765625
vt 0.421875 0.765625
s 0
usemtl Frame_Material
f 17/1/1 15/2/1 2/3/1 24/4/1
f 20/5/2 25/6/2 1/7/2 13/8/2
f 3/9/3 1/7/3 4/10/3
f 2/11/4 3/9/4 4/12/4
f 7/13/5 5/14/5 8/15/5
f 6/16/6 7/17/6 8/15/6
f 9/18/7 12/19/7 10/20/7
f 11/21/8 12/19/8 9/22/8
f 16/23/9 13/8/9 14/24/9
f 14/24/10 15/25/10 16/26/10
f 14/24/11 3/9/11 2/11/11 15/25/11
f 28/27/12 16/23/12 15/2/12 17/1/12
f 20/5/13 13/8/13 16/23/13 28/27/13
f 22/28/14 7/13/14 6/29/14 23/30/14
f 26/31/15 5/14/15 7/13/15 22/28/15
f 12/19/16 8/15/16 5/14/16 10/20/16
f 8/15/17 12/19/17 11/21/17 6/16/17
f 3/9/18 14/24/18 13/8/18 1/7/18
f 1/7/19 25/6/19 21/32/19 4/10/19
f 25/6/20 26/31/20 22/28/20 21/32/20
f 4/10/21 21/32/21 24/33/21 2/34/21
f 21/32/22 22/28/22 23/30/22 24/33/22
f 10/20/23 19/35/23 27/36/23 9/18/23
f 19/35/24 20/5/24 28/27/24 27/36/24
f 9/18/25 27/36/25 18/37/25 11/38/25
f 27/36/26 28/27/26 17/1/26 18/37/26
f 10/20/27 5/14/27 26/31/27 19/35/27
f 19/35/28 26/31/28 25/6/28 20/5/28
f 11/38/29 18/37/29 23/39/29 6/40/29
f 18/37/30 17/1/30 24/4/30 23/39/30

View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://drr1wn0wmt5bi"
path="res://.godot/imported/sofa_top_cushion.obj-4653d502e73ad4501fb84791db9575a5.mesh"
[deps]
files=["res://.godot/imported/sofa_top_cushion.obj-4653d502e73ad4501fb84791db9575a5.mesh"]
source_file="res://assets/props/sofa/sofa_top_cushion.obj"
dest_files=["res://.godot/imported/sofa_top_cushion.obj-4653d502e73ad4501fb84791db9575a5.mesh", "res://.godot/imported/sofa_top_cushion.obj-4653d502e73ad4501fb84791db9575a5.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@ -83,6 +83,9 @@ INTERACTIVE_SWITCH_VERB,use
INTERACTIVE_WORLDITEM_VERB,"pick up"
INTERACTIVE_TANK_LABEL,"Grunk Tank"
INTERACTIVE_TANK_VERB,deposit
INTERACTIVE_LIFT_ASCEND_LABEL,ascend
INTERACTIVE_LIFT_DESCEND_LABEL,descend
INTERACTIVE_LIFT_BRAKE_LABEL,brake
,
ITEM_EYEBALLS_NAME,Eyeballs
ITEM_EYEBALLS_DESCRIPTION,"A pair of eyeballs, formerly belonging to the shift supervisor. Could be used with a retinal scanner."
@ -90,3 +93,4 @@ ITEM_EYEBALLS_DESCRIPTION,"A pair of eyeballs, formerly belonging to the shift s
SWITCH_BULKHEAD_LABEL,"Bulkhead Control"
SWITCH_QUARANTINE_LABEL,"Quarantine Override"
SWITCH_CARGOBAY_LABEL,"Cargo Bay Security Override"
SWITCH_CARGO_LIFT_LABEL,"Cargo Lift Control"

1 keys en
83 INTERACTIVE_WORLDITEM_VERB pick up
84 INTERACTIVE_TANK_LABEL Grunk Tank
85 INTERACTIVE_TANK_VERB deposit
86 INTERACTIVE_LIFT_ASCEND_LABEL ascend
87 INTERACTIVE_LIFT_DESCEND_LABEL descend
88 INTERACTIVE_LIFT_BRAKE_LABEL brake
89
90 ITEM_EYEBALLS_NAME Eyeballs
91 ITEM_EYEBALLS_DESCRIPTION A pair of eyeballs, formerly belonging to the shift supervisor. Could be used with a retinal scanner.
93 SWITCH_BULKHEAD_LABEL Bulkhead Control
94 SWITCH_QUARANTINE_LABEL Quarantine Override
95 SWITCH_CARGOBAY_LABEL Cargo Bay Security Override
96 SWITCH_CARGO_LIFT_LABEL Cargo Lift Control

File diff suppressed because one or more lines are too long

View File

@ -400,9 +400,9 @@ transform = Transform3D(0.866025, 0, 0.5, 0, 1, 0, -0.5, 0, 0.866025, 3.33603, 0
collision_layer = 67
collision_mask = 73
mass = 200.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="Props/CrateLong"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
mesh = ExtResource("22_ug240")
surface_material_override/0 = SubResource("StandardMaterial3D_2ybo5")
@ -419,9 +419,9 @@ transform = Transform3D(0.612372, 0.612373, 0.5, -0.707107, 0.707106, 1.98952e-1
collision_layer = 67
collision_mask = 73
mass = 200.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="Props/CrateLong2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
mesh = ExtResource("22_ug240")
surface_material_override/0 = SubResource("StandardMaterial3D_2ybo5")

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,52 @@
class_name CargoLift extends Node3D
signal at_limit
const SPEED_SMOOTHING := 1.618
const LIMIT_BRAKE_BUFFER := 0.25
const LIMIT_BRAKE_FACTOR := 0.2
@export var progress := 0.0:
set = _set_progress
@export var speed := 0.0
@export var target_speed := 0.0
@export var max_speed := 0.04
@onready var elevator_path_follow: PathFollow3D = %ElevatorPathFollow
func _set_progress(value: float) -> void:
progress = clampf(value, 0.0, 1.0)
if progress != value:
speed = 0
target_speed = 0
at_limit.emit()
if elevator_path_follow:
elevator_path_follow.progress_ratio = progress
func _physics_process(delta: float) -> void:
var weight := 1 - exp(-SPEED_SMOOTHING * delta)
var a := 2 * progress - 1
var b := clampf(1 - a * a, 0, LIMIT_BRAKE_FACTOR) / LIMIT_BRAKE_FACTOR
var limit_factor := max_speed * remap(b, 0, 1, LIMIT_BRAKE_BUFFER, 1)
speed = clampf(lerpf(speed, target_speed, weight), -limit_factor, limit_factor)
progress += speed * delta
func set_target_speed(value: float) -> void:
target_speed = clampf(value, -max_speed, max_speed)
func serialize() -> Dictionary:
var state := {"progress": progress}
return state
func deserialize(state: Dictionary) -> void:
@warning_ignore("unsafe_cast")
progress = state["progress"] as float

View File

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

View File

@ -0,0 +1,140 @@
[gd_scene load_steps=15 format=3 uid="uid://b21fp0ko055os"]
[ext_resource type="Script" uid="uid://ppfu4vq3ocwk" path="res://levels/ghost_ship/level/cargo_bay/elevator/cargo_lift.gd" id="1_extwr"]
[ext_resource type="ArrayMesh" uid="uid://cpspkxu1ntdv7" path="res://levels/ghost_ship/level/cargo_bay/elevator_shaft.obj" id="2_1wrn3"]
[ext_resource type="Texture2D" uid="uid://bd52xpmm3oqw" path="res://assets/props/bulkhead/bulkhead_door_C.png" id="3_yvqws"]
[ext_resource type="Texture2D" uid="uid://dk4sm780p6jfc" path="res://assets/props/bulkhead/bulkhead_door_N.png" id="4_m31fx"]
[ext_resource type="Texture2D" uid="uid://rjuyd20y2ov1" path="res://assets/props/bulkhead/bulkhead_door_R.png" id="5_ej4kt"]
[ext_resource type="Script" uid="uid://dr4s44i63h1nw" path="res://levels/ghost_ship/level/cargo_bay/elevator/rumble_zone.gd" id="6_il20m"]
[ext_resource type="PackedScene" uid="uid://ctm84yms40858" path="res://src/props/railing/railing.tscn" id="7_esw7b"]
[ext_resource type="PackedScene" uid="uid://bbmi28batmn0p" path="res://levels/ghost_ship/level/cargo_bay/elevator/elevator_control.tscn" id="8_g20so"]
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_extwr"]
data = PackedVector3Array(0, 3, 0, 0, -0.0001, 0, 0, 3, -9.0002, 0, 3, -9.0002, 0, -0.0001, 0, 0, -0.0001, -9.0002, 0, -0.0001, -9.0002, 0, -0.0001, -11.0002, 0, 3, -9.0002, 0, -0.0001, 0, 0, -24.0003, -25, 0, -0.0001, -9.0002, 0, -0.0001, -9.0002, 0, -24.0003, -25, 0, -0.0001, -11.0002, 0, -24.0003, -16.0002, 0, -24.0003, -25, 0, -0.0001, 0, 0, -0.0001, -11.0002, 0, -24.0003, -25, 0, -15.0001, -21.0002, 0, -15.0001, -21.0002, 0, -24.0003, -25, 0, -21.0002, -25, 0, -15.0001, -25, 0, -15.0001, -21.0002, 0, -21.0002, -25, 0, -24.0003, -16.0002, 0, -0.0001, 0, -6, -24.0003, -16.0002, -6, -24.0003, -16.0002, 0, -0.0001, 0, -6, -15.0001, -10, -6, -15.0001, -10, 0, -0.0001, 0, -6, -0.0001, 0, 0, -24.0003, -16.0002, -6, -24.0003, -16.0002, 0, -25.2, -16.0002, 0, -25.2, -16.0002, -6, -24.0003, -16.0002, -6, -25.2, -16.0002, -6, -0.0001, 0, -6, -0.0001, -9.0002, -6, -15.0001, -10, -6, -15.0001, -10, -6, -0.0001, -9.0002, -6, -15.0001, -16.0002, -6, -15.0001, -16.0002, -6, -24.0003, -16.0002, -6, -15.0001, -10, -6, -15.0001, -16.0002, -6, -0.0001, -9.0002, -6, -15.0001, -21.0002, -6, -15.0001, -21.0002, -6, -0.0001, -9.0002, -6, -0.0001, -11.0002, -6, -0.0001, -9.0002, -6, 3, -9.0002, -6, -0.0001, -11.0002, 0, -25.2, -22.0001, 0, -25.2, -16.0002, -6, -25.2, -22.0001, -6, -25.2, -22.0001, 0, -25.2, -16.0002, -6, -25.2, -16.0002, -6, -24.0003, -25, 0, -24.0003, -25, -6, -25.2, -22.0001, -6, -25.2, -22.0001, 0, -24.0003, -25, 0, -25.2, -22.0001, -6, -24.0003, -16.0002, -6, -24.0003, -25, -6, -25.2, -16.0002, -6, -25.2, -16.0002, -6, -24.0003, -25, -6, -25.2, -22.0001, 0, -24.0003, -25, 0, -24.0003, -16.0002, 0, -25.2, -22.0001, 0, -25.2, -22.0001, 0, -24.0003, -16.0002, 0, -25.2, -16.0002, -6, -15.0001, -21.0002, -6, -0.0001, -11.0002, 0, -15.0001, -21.0002, 0, -15.0001, -21.0002, -6, -0.0001, -11.0002, 0, -0.0001, -11.0002, 0, -0.0001, -11.0002, -6, -0.0001, -11.0002, 0, 3, -9.0002, 0, 3, -9.0002, -6, -0.0001, -11.0002, -6, 3, -9.0002)
[sub_resource type="Curve3D" id="Curve3D_54or8"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -24, 0),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"]
albedo_texture = ExtResource("3_yvqws")
metallic = 1.0
metallic_texture = ExtResource("3_yvqws")
roughness_texture = ExtResource("5_ej4kt")
normal_enabled = true
normal_texture = ExtResource("4_m31fx")
uv1_scale = Vector3(9, 6, 1)
texture_filter = 2
[sub_resource type="BoxMesh" id="BoxMesh_qo5rw"]
material = SubResource("StandardMaterial3D_54or8")
size = Vector3(6, 1, 6)
[sub_resource type="BoxShape3D" id="BoxShape3D_wg450"]
size = Vector3(6, 1, 6)
[sub_resource type="BoxShape3D" id="BoxShape3D_egxej"]
size = Vector3(6, 0.2, 6)
[node name="CargoLift" type="Node3D" groups=["Persistent"]]
script = ExtResource("1_extwr")
[node name="Shaft" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 4.5, 0, -3)
mesh = ExtResource("2_1wrn3")
[node name="StaticBody3D" type="StaticBody3D" parent="Shaft"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Shaft/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_extwr")
[node name="ElevatorPath" type="Path3D" parent="."]
curve = SubResource("Curve3D_54or8")
[node name="ElevatorPathFollow" type="PathFollow3D" parent="ElevatorPath"]
unique_name_in_owner = true
transform = Transform3D(-1.62921e-07, -0.83205, 0.5547, 0, 0.5547, 0.83205, -1, 1.35558e-07, -9.03721e-08, 0, 0, 0)
loop = false
[node name="ElevatorPlatform" type="Node3D" parent="ElevatorPath/ElevatorPathFollow"]
transform = Transform3D(-1.62921e-07, 0, -1, -0.83205, 0.5547, 1.35558e-07, 0.5547, 0.83205, -9.03721e-08, 0, 0, 0)
[node name="MeshInstance3D" type="MeshInstance3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, -0.5, 0)
gi_mode = 0
mesh = SubResource("BoxMesh_qo5rw")
skeleton = NodePath("../../../..")
[node name="AnimatableBody3D" type="AnimatableBody3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D"]
transform = Transform3D(1, -7.0682e-27, -2.71051e-20, 4.06422e-26, 1, 0, 0, 1.69407e-21, 1, 0, 0, 0)
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/AnimatableBody3D"]
shape = SubResource("BoxShape3D_wg450")
[node name="RemoteTransform3D" type="RemoteTransform3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D"]
remote_path = NodePath("../AnimatableBody3D")
[node name="RumbleZone" type="Area3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0)
collision_layer = 0
collision_mask = 8
script = ExtResource("6_il20m")
[node name="CollisionShape3D" type="CollisionShape3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/RumbleZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0)
shape = SubResource("BoxShape3D_egxej")
[node name="Railing" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform" instance=ExtResource("7_esw7b")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, 1.5)
gi_mode = 0
skeleton = NodePath("../../../..")
[node name="Railing2" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform" instance=ExtResource("7_esw7b")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.5, 0.5, -1.5)
gi_mode = 0
skeleton = NodePath("../../../..")
[node name="ControlConsole" type="Node3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0.5, -1.4)
[node name="ConsoleBase" type="CSGCombiner3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole"]
gi_mode = 0
use_collision = true
collision_layer = 5
collision_mask = 0
[node name="BaseBox" type="CSGBox3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ConsoleBase"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.55)
gi_mode = 0
use_collision = true
size = Vector3(1, 1, 2.1)
[node name="ControlPanel" type="CSGBox3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ConsoleBase"]
transform = Transform3D(0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1, -0.6, 0.6, 0)
gi_mode = 0
operation = 2
[node name="SlideNotch" type="CSGBox3D" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ConsoleBase"]
transform = Transform3D(0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1, -0.269205, 0.330795, 0)
gi_mode = 0
operation = 2
size = Vector3(0.4, 0.2, 0.02)
[node name="ElevatorControl" parent="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole" instance=ExtResource("8_g20so")]
transform = Transform3D(0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1, -0.225, 0.285, 0)
[node name="Railing" parent="." instance=ExtResource("7_esw7b")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0.5, 3)
[connection signal="at_limit" from="." to="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" method="on_set_mid"]
[connection signal="body_exited" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/RumbleZone" to="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/MeshInstance3D/RumbleZone" method="_on_body_exited"]
[connection signal="set_high" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" to="." method="set_target_speed" binds= [-1.0]]
[connection signal="set_low" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" to="." method="set_target_speed" binds= [1.0]]
[connection signal="set_mid" from="ElevatorPath/ElevatorPathFollow/ElevatorPlatform/ControlConsole/ElevatorControl" to="." method="set_target_speed" binds= [0.0]]

View File

@ -0,0 +1,46 @@
extends Node3D
signal set_low
signal set_mid
signal set_high
enum State {
LOW,
MID,
HIGH,
}
const TWEEN_TIME := 1.618
@export var state := State.MID
@onready var control_slide_path_follow: PathFollow3D = %ControlSlidePathFollow
func tween_slide_position(pct: float) -> Tween:
var tween := create_tween()
(
tween
. tween_property(control_slide_path_follow, "progress_ratio", pct, TWEEN_TIME)
. set_trans(Tween.TRANS_BACK)
. set_ease(Tween.EASE_IN_OUT)
)
return tween
func on_set_high() -> void:
if state != State.HIGH:
state = State.HIGH
tween_slide_position(1).tween_callback(set_high.emit)
func on_set_mid() -> void:
if state != State.MID:
state = State.MID
tween_slide_position(0.5).tween_callback(set_mid.emit)
func on_set_low() -> void:
if state != State.LOW:
state = State.LOW
tween_slide_position(0).tween_callback(set_low.emit)

View File

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

View File

@ -0,0 +1,89 @@
[gd_scene load_steps=8 format=3 uid="uid://bbmi28batmn0p"]
[ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="1_4m3mp"]
[ext_resource type="Script" uid="uid://dsh2jckqof1lh" path="res://levels/ghost_ship/level/cargo_bay/elevator/elevator_control.gd" id="1_rhd4r"]
[sub_resource type="Curve3D" id="Curve3D_wg450"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 0),
"tilts": PackedFloat32Array(0, 0)
}
point_count = 2
[sub_resource type="BoxMesh" id="BoxMesh_wg450"]
size = Vector3(0.06, 0.06, 0.2)
[sub_resource type="BoxShape3D" id="BoxShape3D_ho6u3"]
size = Vector3(0.15, 0.1, 0.3)
[sub_resource type="BoxShape3D" id="BoxShape3D_egxej"]
size = Vector3(0.15, 0.1, 0.3)
[sub_resource type="BoxShape3D" id="BoxShape3D_jgw86"]
size = Vector3(0.15, 0.1, 0.3)
[node name="ElevatorControl" type="Node3D"]
script = ExtResource("1_rhd4r")
[node name="ControlSlidePath" type="Path3D" parent="."]
curve = SubResource("Curve3D_wg450")
[node name="ControlSlidePathFollow" type="PathFollow3D" parent="ControlSlidePath"]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
progress = 0.2
loop = false
[node name="ControlSlide" type="MeshInstance3D" parent="ControlSlidePath/ControlSlidePathFollow"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0)
gi_mode = 0
mesh = SubResource("BoxMesh_wg450")
skeleton = NodePath("../../../..")
[node name="HighInteractor" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, 2.38419e-07, 0)
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="HighInteractor"]
shape = SubResource("BoxShape3D_ho6u3")
[node name="Interactive" type="Node" parent="HighInteractor"]
script = ExtResource("1_4m3mp")
enabled = true
label = "SWITCH_CARGO_LIFT_LABEL"
verb = "INTERACTIVE_LIFT_ASCEND_LABEL"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="MidInteractor" type="StaticBody3D" parent="."]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="MidInteractor"]
shape = SubResource("BoxShape3D_egxej")
[node name="Interactive" type="Node" parent="MidInteractor"]
script = ExtResource("1_4m3mp")
enabled = true
label = "SWITCH_CARGO_LIFT_LABEL"
verb = "INTERACTIVE_LIFT_BRAKE_LABEL"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="LowInteractor" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, 2.38419e-07, 0)
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="LowInteractor"]
shape = SubResource("BoxShape3D_jgw86")
[node name="Interactive" type="Node" parent="LowInteractor"]
script = ExtResource("1_4m3mp")
enabled = true
label = "SWITCH_CARGO_LIFT_LABEL"
verb = "INTERACTIVE_LIFT_DESCEND_LABEL"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[connection signal="activated" from="HighInteractor/Interactive" to="." method="on_set_high"]
[connection signal="activated" from="MidInteractor/Interactive" to="." method="on_set_mid"]
[connection signal="activated" from="LowInteractor/Interactive" to="." method="on_set_low"]

View File

@ -0,0 +1,22 @@
extends Area3D
@export var rumble_factor := 0.1
@onready var cargo_lift := owner as CargoLift
func _process(_delta: float) -> void:
if not has_overlapping_bodies():
return
var player := get_overlapping_bodies()[0] as Player
if not player:
return
player.camera_rumble = rumble_factor * abs(cargo_lift.speed)
func _on_body_exited(body: Node3D) -> void:
var player := body as Player
if player:
player.camera_rumble = 0

View File

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

View File

@ -0,0 +1,2 @@
# Blender 4.3.2 MTL File: 'elevator_shaft.blend'
# www.blender.org

View File

@ -0,0 +1,96 @@
# Blender 4.3.2
# www.blender.org
mtllib elevator_shaft.mtl
o Geometry
v 0.000000 0.000000 0.000000
v -0.000000 3.000000 0.000000
v 0.000000 0.000000 -9.000000
v -0.000000 3.000000 -9.000000
v -6.000000 0.000000 0.000000
v -6.000000 0.000000 -9.000000
v -6.000000 3.000000 -9.000000
v 0.000000 -24.000000 -16.000000
v -0.000000 -21.000000 -25.000000
v -6.000000 -24.000000 -16.000000
v -6.000000 -15.000000 -16.000000
v 0.000000 -24.000000 -25.000000
v -6.000000 -15.000000 -21.000000
v -6.000000 -15.000000 -10.000000
v -0.000000 -15.000000 -21.000000
v -6.000000 -24.000000 -25.000000
v 0.000000 -25.200001 -22.000000
v 0.000000 -25.200001 -16.000000
v -6.000000 -25.200001 -22.000000
v -6.000000 -25.200001 -16.000000
v -0.000000 -15.000000 -25.000000
v -0.000000 0.000000 -11.000000
v -6.000000 0.000000 -11.000000
v -6.000000 -15.000000 -22.000000
v -0.000000 -15.000000 -22.000000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 0.5547 -0.8321
vn -0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 0.9285 0.3714
vn -0.0000 -0.5547 0.8321
vn -0.0000 -1.0000 -0.0000
vt 0.000193 0.065669
vt 0.043844 0.000193
vt 0.240271 0.131145
vt 0.196620 0.196620
vt 0.568422 0.756802
vt 0.568422 0.000193
vt 0.725806 0.000193
vt 0.725806 0.283921
vt 0.725806 0.756802
vt 0.240271 0.225721
vt 0.726192 0.813096
vt 0.726192 0.655712
vt 0.757669 0.655712
vt 0.757669 0.813096
vt 0.524385 0.625850
vt 0.327958 0.756802
vt 0.327958 0.283921
vt 0.458909 0.196620
vt 0.568036 0.123869
vt 0.568036 0.596750
vt 0.196620 0.953229
vt 0.000193 0.822278
vt 0.240271 0.698601
vt 0.240271 0.887753
vt 0.915053 0.655712
vt 0.915053 0.813096
vt 0.999807 0.655712
vt 0.999807 0.813096
vt 0.780616 0.900773
vt 0.768925 0.871547
vt 0.780616 0.568036
vt 0.768925 0.597261
vt 0.327958 0.000193
vt 0.283921 0.727701
vt 0.327572 0.756802
vt 0.568036 0.691326
vt 0.883576 0.094769
vt 0.883576 0.567650
vt 0.726192 0.567650
vt 0.726192 0.094769
vt 0.726192 0.000193
vt 0.883576 0.000193
vt 0.000000 0.000000
s 0
f 1/1/1 2/2/1 4/3/1 3/4/1
f 1/5/2 8/6/2 10/7/2 14/8/2 5/9/2
f 22/10/1 3/4/1 4/3/1
f 10/11/3 8/12/3 18/13/3 20/14/3
f 6/15/4 5/16/4 14/17/4 11/18/4 13/19/4 23/20/4
f 12/21/1 8/22/1 1/1/1 3/4/1 22/10/1 15/23/1 9/24/1
f 18/13/5 17/25/5 19/26/5 20/14/5
f 12/27/6 16/28/6 19/26/6 17/25/6
f 16/28/4 10/29/4 20/30/4 19/26/4
f 8/31/1 12/27/1 17/25/1 18/32/1
f 10/33/4 11/18/4 14/17/4
f 15/23/1 25/34/1 21/35/1 9/24/1
f 7/36/4 6/15/4 23/20/4
f 23/37/7 13/38/7 15/39/7 22/40/7 4/41/7 7/42/7
f 25/34/8 15/23/8 13/38/8 24/43/8

View File

@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://cpspkxu1ntdv7"
path="res://.godot/imported/elevator_shaft.obj-0a9730006b9c6be02074b42bd7e7d5da.mesh"
[deps]
files=["res://.godot/imported/elevator_shaft.obj-0a9730006b9c6be02074b42bd7e7d5da.mesh"]
source_file="res://levels/ghost_ship/level/cargo_bay/elevator_shaft.obj"
dest_files=["res://.godot/imported/elevator_shaft.obj-0a9730006b9c6be02074b42bd7e7d5da.mesh", "res://.godot/imported/elevator_shaft.obj-0a9730006b9c6be02074b42bd7e7d5da.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@ -127,12 +127,15 @@ source_gunk_material = ExtResource("5_hwbyh")
[node name="PhysCrateLong" parent="Hallway1" instance=ExtResource("4_vc8nj")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.25, -5.9)
sleeping = true
[node name="PhysCrateLong2" parent="Hallway1" instance=ExtResource("4_vc8nj")]
transform = Transform3D(0.258819, -0.965926, 0, 0.965926, 0.258819, 0, 0, 0, 1, 1.2, 0.426927, -3.9)
sleeping = true
[node name="PhysCrateLong3" parent="Hallway1" instance=ExtResource("4_vc8nj")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.75, -5.9)
sleeping = true
[node name="FloatingDust" parent="Hallway1" instance=ExtResource("8_t14hf")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
@ -259,6 +262,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -1.5)
[node name="PhysCrateLong" parent="Hallway3" instance=ExtResource("4_vc8nj")]
transform = Transform3D(-4.37114e-08, -0.965926, 0.258819, 1.77636e-15, 0.258819, 0.965926, -1, 4.2222e-08, -1.13133e-08, 1.06072, 0.789149, 6.6)
sleeping = true
[node name="T-Junction2" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -27, 0, -7.5)

View File

@ -1,9 +1,8 @@
[gd_scene load_steps=38 format=4 uid="uid://6mggsi84ok1n"]
[gd_scene load_steps=48 format=4 uid="uid://6mggsi84ok1n"]
[ext_resource type="ArrayMesh" uid="uid://c4klxlj1oop7t" path="res://assets/level/hallway/hallway_4.mesh" id="1_ka7sa"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="2_osdhu"]
[ext_resource type="PackedScene" uid="uid://30o8ltnnxpxo" path="res://src/effects/floating_dust.tscn" id="3_osdhu"]
[ext_resource type="PackedScene" uid="uid://rykf34p8n8x6" path="res://src/props/overhead_light/burnout_light.tscn" id="4_6qtqj"]
[ext_resource type="Material" uid="uid://cqjr3cbxtfg2j" path="res://assets/materials/gunk.material" id="4_650i1"]
[ext_resource type="Material" uid="uid://b8xdnogrfefvf" path="res://levels/ghost_ship/guide_sign/mess_hall_sign.material" id="5_650i1"]
[ext_resource type="Texture2D" uid="uid://duvfb656uahuu" path="res://assets/level/guide_signs/guide_sign_mess_hall_C.png" id="6_o070x"]
@ -13,13 +12,19 @@
[ext_resource type="Texture2D" uid="uid://cjm8vlxnejx3w" path="res://assets/props/guide_sign/guide_sign_R.png" id="10_ikww0"]
[ext_resource type="Material" uid="uid://dutkfm4ek0ysh" path="res://assets/materials/gunk_bright.material" id="11_iefrw"]
[ext_resource type="PackedScene" uid="uid://bpsiwx1517pk1" path="res://src/props/tarp_crate/tarp_crate.tscn" id="12_vtfca"]
[ext_resource type="ArrayMesh" uid="uid://cqd0a7ousx01n" path="res://assets/level/hallway/hallway_1.mesh" id="13_q6b8v"]
[ext_resource type="ArrayMesh" uid="uid://b17naqcl4ie21" path="res://assets/level/floor/floor_1.mesh" id="14_ihtb8"]
[ext_resource type="PackedScene" uid="uid://d2feet02a603e" path="res://src/props/overhead_light/overhead_light.tscn" id="14_tgb37"]
[ext_resource type="Material" uid="uid://dt73a25l7h8if" path="res://levels/ghost_ship/guide_sign/crew_quarters_sign.material" id="15_ygcwo"]
[ext_resource type="ArrayMesh" uid="uid://b3f5p4o7qr1mf" path="res://assets/level/t-junction/t-junction_2.mesh" id="16_0fxnd"]
[ext_resource type="ArrayMesh" uid="uid://dbgk0kdg1vufk" path="res://assets/level/ceiling/ceiling_1.mesh" id="16_cnewm"]
[ext_resource type="ArrayMesh" uid="uid://c785n3j3aq4sf" path="res://assets/level/wall/wall_1.mesh" id="17_ka7sa"]
[ext_resource type="Material" uid="uid://c1vy4bkwb1g5m" path="res://assets/materials/gunk_lowrez.material" id="17_wqkax"]
[ext_resource type="PackedScene" uid="uid://drm5dspi48pf5" path="res://src/props/crate_long/phys_crate_long.tscn" id="19_j48oc"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/listener.tscn" id="22_arxka"]
[ext_resource type="ArrayMesh" uid="uid://d0sdsir1hqnbu" path="res://assets/level/wall/wall_4.mesh" id="23_7ox1u"]
[ext_resource type="PackedScene" uid="uid://dgeg3kkogm71m" path="res://src/world/mechanics/alarm/gunk_alarm.tscn" id="23_osdhu"]
[ext_resource type="PackedScene" uid="uid://2yqi5u5eo025" path="res://src/world/gunk_node/grunk_nodule.tscn" id="24_6qtqj"]
[ext_resource type="PackedScene" uid="uid://bttust5ohud8e" path="res://src/world/mechanics/relay/gunk_relay.tscn" id="25_osdhu"]
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ruwlj"]
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
@ -108,6 +113,18 @@ texture_filter = 4
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ft6k"]
data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_arxka"]
data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_osdhu"]
data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_6qtqj"]
data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_650i1"]
data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5)
[sub_resource type="ArrayMesh" id="ArrayMesh_fkhf3"]
_surfaces = [{
"aabb": AABB(-0.7, -0.28, -0.14, 1.4, 0.28, 0.28),
@ -142,6 +159,23 @@ shadow_mesh = SubResource("ArrayMesh_fkhf3")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_7ctwk"]
data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14)
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_ihtb8"]
emission_shape_offset = Vector3(0, 0, 1.5)
emission_shape = 3
emission_box_extents = Vector3(1.5, 1.5, 3)
direction = Vector3(0, -1, 0)
spread = 100.0
initial_velocity_min = 0.05
initial_velocity_max = 0.15
gravity = Vector3(0, 0, 0)
scale_curve = SubResource("CurveTexture_5ac7v")
color_ramp = SubResource("GradientTexture1D_08px8")
alpha_curve = SubResource("CurveTexture_mcskc")
turbulence_enabled = true
turbulence_noise_strength = 0.1
turbulence_noise_scale = 0.3
turbulence_influence_min = 0.0
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_if0c2"]
data = PackedVector3Array(-1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 3, -1.5, -1.5, 3, -1.5, -1.5, 0, 1.5, -1.5, 3, 1.5, -1.5, 0, 1.5, -1.5, 0, -1.5, 1.5, 0, 1.5, 1.5, 0, 1.5, -1.5, 0, -1.5, 1.5, 0, -1.5, 1.5, 3, 1.5, 1.5, 3, -1.5, -1.5, 3, 1.5, -1.5, 3, 1.5, 1.5, 3, -1.5, -1.5, 3, -1.5)
@ -172,7 +206,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visibility_aabb = AABB(-1.5, -1.5, -6, 3, 3, 12)
process_material = SubResource("ParticleProcessMaterial_6giaa")
[node name="BurnoutLight" parent="Hallway1" instance=ExtResource("4_6qtqj")]
[node name="OverheadLight" parent="Hallway1" instance=ExtResource("14_tgb37")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -1.2)
[node name="MessHallSign" type="MeshInstance3D" parent="Hallway1"]
@ -197,49 +231,100 @@ source_gunk_material = ExtResource("11_iefrw")
[node name="TarpCrate" parent="Hallway1" instance=ExtResource("12_vtfca")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0.8, -0.33)
[node name="Hallway2" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 7.5, 0, -12)
mesh = ExtResource("13_q6b8v")
skeleton = NodePath("")
[node name="ShortHallway6" type="Node3D" parent="."]
transform = Transform3D(1, 0, 1.06581e-14, 0, 1, 0, -1.06581e-14, 0, 1, 3, 0, -12)
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway2"]
[node name="Floor" type="MeshInstance3D" parent="ShortHallway6"]
mesh = ExtResource("14_ihtb8")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway6/Floor"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Hallway2/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_ruwlj")
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway6/Floor/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_arxka")
[node name="Gunkable" parent="Hallway2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
[node name="Gunkable" parent="ShortHallway6/Floor/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("4_650i1")
source_gunk_material = ExtResource("17_wqkax")
[node name="FloatingDust" parent="Hallway2" instance=ExtResource("3_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visibility_aabb = AABB(-1.5, -1.5, -6, 3, 3, 12)
process_material = SubResource("ParticleProcessMaterial_6giaa")
[node name="Ceiling" type="MeshInstance3D" parent="ShortHallway6"]
transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 3, 0)
mesh = ExtResource("16_cnewm")
skeleton = NodePath("../..")
[node name="OverheadLight" parent="Hallway2" instance=ExtResource("14_tgb37")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 3, -1.5)
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway6/Ceiling"]
collision_layer = 5
collision_mask = 0
[node name="CrewQuartersSign" type="MeshInstance3D" parent="Hallway2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -4.5)
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway6/Ceiling/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_osdhu")
[node name="Gunkable" parent="ShortHallway6/Ceiling/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("17_wqkax")
[node name="Wall" type="MeshInstance3D" parent="ShortHallway6"]
transform = Transform3D(-1, -8.74228e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, 0, 1.5, 1.5)
mesh = ExtResource("17_ka7sa")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway6/Wall"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway6/Wall/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_6qtqj")
[node name="Gunkable" parent="ShortHallway6/Wall/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("17_wqkax")
[node name="Wall2" type="MeshInstance3D" parent="ShortHallway6"]
transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, 0, 1.5, -1.5)
mesh = ExtResource("17_ka7sa")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway6/Wall2"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway6/Wall2/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_650i1")
[node name="Gunkable" parent="ShortHallway6/Wall2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("17_wqkax")
[node name="CrewQuartersSign" type="MeshInstance3D" parent="ShortHallway6"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 3, 0)
gi_mode = 2
mesh = SubResource("ArrayMesh_f0psm")
[node name="StaticBody3D" type="StaticBody3D" parent="Hallway2/CrewQuartersSign"]
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway6/CrewQuartersSign"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Hallway2/CrewQuartersSign/StaticBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway6/CrewQuartersSign/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_7ctwk")
[node name="Gunkable" parent="Hallway2/CrewQuartersSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
[node name="Gunkable" parent="ShortHallway6/CrewQuartersSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
mask_dim = 32
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("11_iefrw")
[node name="FloatingDust" parent="ShortHallway6" instance=ExtResource("3_osdhu")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 1.5, 0)
visibility_aabb = AABB(-1.5, -1.5, -1.52, 3, 3, 6)
process_material = SubResource("ParticleProcessMaterial_ihtb8")
[node name="T-Junction1" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, -12)
mesh = ExtResource("16_0fxnd")
@ -260,9 +345,11 @@ source_gunk_material = ExtResource("17_wqkax")
[node name="PhysCrateLong" parent="T-Junction1" instance=ExtResource("19_j48oc")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.6, 0.25, 1)
sleeping = true
[node name="PhysCrateLong2" parent="T-Junction1" instance=ExtResource("19_j48oc")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.599998, 0.75, 1)
sleeping = true
[node name="EndCap" type="MeshInstance3D" parent="."]
transform = Transform3D(2.98023e-08, 1, 0, 4.37114e-08, -1.3027e-15, -1, -1, 2.98023e-08, -4.37114e-08, -1.5, 1.5, -12)
@ -281,3 +368,367 @@ mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("17_wqkax")
[node name="Trap1" type="Node3D" parent="."]
[node name="Listener" parent="Trap1" instance=ExtResource("22_arxka")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 1.5, -13.5)
[node name="Listener2" parent="Trap1" instance=ExtResource("22_arxka")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 1.47059, 2.39896, -13.5)
[node name="Listener3" parent="Trap1" instance=ExtResource("22_arxka")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 2.99441, 0.534727, -13.5)
[node name="GunkAlarm" parent="Trap1" instance=ExtResource("23_osdhu")]
transform = Transform3D(-0.924466, -0.381264, 0, 0.381264, -0.924466, 0, 0, 0, 1, -0.281292, 2.80475, -3.80331)
[node name="GrunkNodule" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.129091, 0.93947, -1.28869, 1.54309, -0.252938, -0.338969, -0.402756, -1.2702, -0.885646, 1.15611, 0.592172, -8.1)
durability = 4.8
value = 3200.0
[node name="GrunkNodule2" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(0.385051, -0.367708, -0.276634, 0.0941193, 0.416023, -0.421979, 0.450419, 0.227412, 0.324664, -1.24459, 0.592172, -8.1)
durability = 1.8
value = 1200.0
[node name="GrunkNodule4" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.284492, -0.0939734, -0.0152782, -0.0237271, 0.116604, -0.275392, 0.0922033, -0.259947, -0.118008, -0.846056, 0.0316244, -7.2448)
durability = 0.9
value = 600.0
[node name="GrunkNodule5" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.389736, -0.092174, -0.446777, -0.00582302, -0.586572, 0.126094, -0.456149, 0.086242, 0.380119, -1.50946, 0.0316244, -1.99769)
durability = 1.8
value = 1200.0
[node name="GrunkNodule12" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(0.0589638, -0.0959031, 0.165305, -0.108771, 0.1254, 0.11155, -0.157137, -0.12279, -0.0151872, -1.33773, 0.0316244, -1.42569)
durability = 0.6
value = 400.0
[node name="GrunkNodule14" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(0.0589638, -0.0959031, 0.165305, -0.108771, 0.1254, 0.11155, -0.157137, -0.12279, -0.0151872, -1.33773, 0.0316244, -1.42569)
durability = 0.6
value = 400.0
[node name="GrunkNodule13" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(0.0998845, -0.15746, -0.0723155, 0.168988, 0.0700808, 0.0808183, -0.0382885, -0.101465, 0.168044, -0.930789, 0.0316244, -1.79292)
durability = 0.6
value = 400.0
[node name="GrunkNodule15" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.060409, 0.0370967, 0.187015, 0.169431, -0.0795144, 0.0705018, 0.0874288, 0.179726, -0.00740981, -0.981067, 0.0316244, -1.3948)
durability = 0.6
value = 400.0
[node name="GrunkNodule6" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(0.287188, -0.0651365, -0.0572728, -0.0461396, 0.0530116, -0.291652, 0.0734444, 0.288005, 0.0407298, -1.50946, 0.713218, -2.46436)
durability = 0.9
value = 600.0
[node name="GrunkNodule7" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.398309, 0.0320241, -0.0180094, -0.0184959, -0.00536085, 0.399536, 0.0317456, 0.39868, 0.00681897, -1.50946, 1.22011, -3.20858)
durability = 1.2
value = 800.0
[node name="GrunkNodule16" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.148598, -0.317132, 0.356855, 0.0692841, 0.35546, 0.344743, -0.472354, 0.151905, -0.0616971, -1.50946, 1.76531, -3.49092)
durability = 1.5
[node name="GrunkNodule17" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.244401, 0.173869, 0.00615572, -0.117969, -0.173418, 0.214499, 0.127874, 0.172325, 0.209648, -1.50946, 1.19883, -2.61776)
durability = 0.9
value = 600.0
[node name="GrunkNodule8" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(0.0374856, 0.246553, -0.166753, -0.0719251, -0.155586, -0.246211, -0.288828, 0.0707435, 0.0396704, -1.50946, 1.65213, -2.56332)
durability = 0.9
value = 600.0
[node name="GrunkNodule9" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.230447, -0.180496, -0.0656895, -0.190865, 0.20367, 0.10995, -0.0215555, 0.126252, -0.271286, -1.50946, 2.22459, -3.33432)
durability = 0.9
value = 600.0
[node name="GrunkNodule10" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.202786, -0.53721, -0.17402, -0.5422, 0.236898, -0.0994915, 0.157788, 0.12363, -0.565525, -1.50946, 2.01752, -4.15855)
durability = 1.8
value = 1200.0
[node name="GrunkNodule11" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(0.68553, 0.0234689, -0.139635, -0.139196, -0.0147913, -0.685861, -0.0259454, 0.69945, -0.00981866, -1.50946, 2.87161, -4.7118)
durability = 2.1
value = 1400.0
[node name="GrunkNodule3" parent="Trap1" instance=ExtResource("24_6qtqj")]
transform = Transform3D(-0.347612, -0.299678, 0.386469, -0.464305, 0.351136, -0.145343, -0.153579, -0.383271, -0.435335, -1.48004, 0.385754, -6.9758)
durability = 1.8
value = 1200.0
[node name="Network1" type="Node3D" parent="Trap1"]
[node name="GunkRelay" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -13.0493)
[node name="GunkRelay2" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.85262, 0, -12.7507)
[node name="GunkRelay3" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.27987, 0, -11.4839)
[node name="GunkRelay4" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.268677, 0, -12.323)
[node name="GunkRelay8" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.27745, -1.19209e-07, -13.057)
[node name="GunkRelay21" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.384, 0.309133, -13.5)
[node name="GunkRelay22" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.330972, 0.986112, -13.5)
[node name="GunkRelay5" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3429, 0, -11.2099)
[node name="GunkRelay6" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.431018, 0, -10.5269)
[node name="GunkRelay7" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.537845, 0, -9.98025)
[node name="GunkRelay9" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.26043, 0, -9.56178)
[node name="GunkRelay10" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0.759, -9.198)
[node name="GunkRelay11" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 1.29208, -8.85326)
[node name="GunkRelay12" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 1.89174, -9.22073)
[node name="GunkRelay13" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 2.14446, -8.31113)
[node name="GunkRelay14" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 2.70379, -8.9493)
[node name="GunkRelay15" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.05392, 3, -8.31037)
[node name="GunkRelay16" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.484272, 3, -7.24079)
[node name="GunkRelay17" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.887744, 3, -6.33582)
[node name="GunkRelay18" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.231388, 3, -5.51369)
[node name="GunkRelay19" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.638371, 3, -4.817)
[node name="GunkRelay20" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.788889, 3, -4.15846)
[node name="GunkRelay23" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.936548, 2.6204, -13.5)
[node name="GunkRelay24" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.431, 3, -13.2849)
[node name="GunkRelay25" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.678505, 3, -12.693)
[node name="GunkRelay26" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17098, 3, -12.2293)
[node name="GunkRelay27" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.535468, 3, -11.6208)
[node name="GunkRelay28" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00709021, 3, -11.1268)
[node name="GunkRelay29" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0654619, 3, -10.516)
[node name="GunkRelay30" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.527468, 3, -10.0217)
[node name="GunkRelay31" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0718373, 3, -9.34992)
[node name="GunkRelay32" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.36067, 3, -8.70837)
[node name="GunkRelay33" parent="Trap1/Network1" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0406086, 3, -7.8855)
[node name="Network2" type="Node3D" parent="Trap1"]
[node name="Listener4" parent="Trap1/Network2" instance=ExtResource("22_arxka")]
transform = Transform3D(-1, -8.74228e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, 2.99441, 2.03473, -10.5)
[node name="Listener5" parent="Trap1/Network2" instance=ExtResource("22_arxka")]
transform = Transform3D(0.642788, -5.61943e-08, 0.766044, -8.74228e-08, -1, 0, 0.766044, -6.69697e-08, -0.642788, 2.394, 3, -11.4)
[node name="GunkRelay" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.4, 1.8, -10.5)
[node name="GunkRelay2" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.9468, 2.20441, -10.5)
[node name="GunkRelay3" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 2.439, -10.5)
[node name="GunkRelay6" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 1.95311, -9.94349)
[node name="GunkRelay7" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 2.66209, -9.60859)
[node name="GunkRelay8" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 2.26142, -9.00992)
[node name="GunkRelay9" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 2.85489, -8.75561)
[node name="GunkRelay10" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 2.51554, -8.0789)
[node name="GunkRelay11" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.22256, 3, -7.669)
[node name="GunkRelay12" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 2.82179, -7.16496)
[node name="GunkRelay13" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.780132, 3, -6.70057)
[node name="GunkRelay14" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.03799, 3, -5.95411)
[node name="GunkRelay15" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.423339, 3, -5.52302)
[node name="GunkRelay16" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.601251, 3, -4.94205)
[node name="GunkRelay17" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25412, 2.77946, -4.05418)
[node name="GunkRelay4" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08106, 2.68771, -10.5)
[node name="GunkRelay5" parent="Trap1/Network2" instance=ExtResource("25_osdhu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.73178, 3, -10.8571)
[connection signal="triggered" from="Trap1/Listener" to="Trap1/Network1/GunkRelay22" method="trigger"]
[connection signal="triggered" from="Trap1/Listener2" to="Trap1/Network1/GunkRelay23" method="trigger"]
[connection signal="triggered" from="Trap1/Listener3" to="Trap1/Network1/GunkRelay" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay" to="Trap1/Network1/GunkRelay2" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay" to="Trap1/Network1/GunkRelay2" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay2" to="Trap1/Network1/GunkRelay3" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay2" to="Trap1/Network1/GunkRelay3" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay3" to="Trap1/Network1/GunkRelay5" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay3" to="Trap1/Network1/GunkRelay5" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay4" to="Trap1/Network1/GunkRelay5" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay4" to="Trap1/Network1/GunkRelay5" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay8" to="Trap1/Network1/GunkRelay4" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay8" to="Trap1/Network1/GunkRelay4" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay21" to="Trap1/Network1/GunkRelay8" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay21" to="Trap1/Network1/GunkRelay8" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay22" to="Trap1/Network1/GunkRelay21" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay22" to="Trap1/Network1/GunkRelay21" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay5" to="Trap1/Network1/GunkRelay6" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay5" to="Trap1/Network1/GunkRelay6" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay6" to="Trap1/Network1/GunkRelay7" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay6" to="Trap1/Network1/GunkRelay7" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay7" to="Trap1/Network1/GunkRelay9" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay7" to="Trap1/Network1/GunkRelay9" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay9" to="Trap1/Network1/GunkRelay10" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay9" to="Trap1/Network1/GunkRelay10" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay10" to="Trap1/Network1/GunkRelay11" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay10" to="Trap1/Network1/GunkRelay11" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay11" to="Trap1/Network1/GunkRelay12" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay11" to="Trap1/Network1/GunkRelay12" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay12" to="Trap1/Network1/GunkRelay13" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay12" to="Trap1/Network1/GunkRelay13" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay13" to="Trap1/Network1/GunkRelay14" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay13" to="Trap1/Network1/GunkRelay14" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay14" to="Trap1/Network1/GunkRelay15" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay14" to="Trap1/Network1/GunkRelay15" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay15" to="Trap1/Network1/GunkRelay16" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay15" to="Trap1/Network1/GunkRelay16" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay16" to="Trap1/Network1/GunkRelay17" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay16" to="Trap1/Network1/GunkRelay17" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay17" to="Trap1/Network1/GunkRelay18" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay17" to="Trap1/Network1/GunkRelay18" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay18" to="Trap1/Network1/GunkRelay19" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay18" to="Trap1/Network1/GunkRelay19" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay19" to="Trap1/Network1/GunkRelay20" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay19" to="Trap1/Network1/GunkRelay20" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay20" to="Trap1/GunkAlarm" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay20" to="Trap1/GunkAlarm" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay23" to="Trap1/Network1/GunkRelay24" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay23" to="Trap1/Network1/GunkRelay24" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay24" to="Trap1/Network1/GunkRelay25" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay24" to="Trap1/Network1/GunkRelay25" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay25" to="Trap1/Network1/GunkRelay26" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay25" to="Trap1/Network1/GunkRelay26" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay26" to="Trap1/Network1/GunkRelay27" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay26" to="Trap1/Network1/GunkRelay27" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay27" to="Trap1/Network1/GunkRelay28" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay27" to="Trap1/Network1/GunkRelay28" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay28" to="Trap1/Network1/GunkRelay29" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay28" to="Trap1/Network1/GunkRelay29" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay29" to="Trap1/Network1/GunkRelay30" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay29" to="Trap1/Network1/GunkRelay30" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay30" to="Trap1/Network1/GunkRelay31" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay30" to="Trap1/Network1/GunkRelay31" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay31" to="Trap1/Network1/GunkRelay32" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay31" to="Trap1/Network1/GunkRelay32" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay32" to="Trap1/Network1/GunkRelay33" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay32" to="Trap1/Network1/GunkRelay33" method="trigger"]
[connection signal="pulsed" from="Trap1/Network1/GunkRelay33" to="Trap1/Network1/GunkRelay16" method="pulse"]
[connection signal="triggered" from="Trap1/Network1/GunkRelay33" to="Trap1/Network1/GunkRelay16" method="trigger"]
[connection signal="triggered" from="Trap1/Network2/Listener4" to="Trap1/Network2/GunkRelay" method="trigger"]
[connection signal="triggered" from="Trap1/Network2/Listener5" to="Trap1/Network2/GunkRelay5" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay" to="Trap1/Network2/GunkRelay2" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay" to="Trap1/Network2/GunkRelay2" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay2" to="Trap1/Network2/GunkRelay3" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay2" to="Trap1/Network2/GunkRelay3" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay3" to="Trap1/Network2/GunkRelay6" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay3" to="Trap1/Network2/GunkRelay6" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay6" to="Trap1/Network2/GunkRelay7" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay6" to="Trap1/Network2/GunkRelay7" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay7" to="Trap1/Network2/GunkRelay8" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay7" to="Trap1/Network2/GunkRelay8" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay8" to="Trap1/Network2/GunkRelay9" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay8" to="Trap1/Network2/GunkRelay9" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay9" to="Trap1/Network2/GunkRelay10" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay9" to="Trap1/Network2/GunkRelay10" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay10" to="Trap1/Network2/GunkRelay11" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay10" to="Trap1/Network2/GunkRelay11" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay11" to="Trap1/Network2/GunkRelay12" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay11" to="Trap1/Network2/GunkRelay12" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay12" to="Trap1/Network2/GunkRelay13" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay12" to="Trap1/Network2/GunkRelay13" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay13" to="Trap1/Network2/GunkRelay14" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay13" to="Trap1/Network2/GunkRelay14" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay14" to="Trap1/Network2/GunkRelay15" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay14" to="Trap1/Network2/GunkRelay15" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay15" to="Trap1/Network2/GunkRelay16" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay15" to="Trap1/Network2/GunkRelay16" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay16" to="Trap1/Network2/GunkRelay17" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay16" to="Trap1/Network2/GunkRelay17" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay17" to="Trap1/GunkAlarm" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay17" to="Trap1/GunkAlarm" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay4" to="Trap1/Network2/GunkRelay3" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay4" to="Trap1/Network2/GunkRelay3" method="trigger"]
[connection signal="pulsed" from="Trap1/Network2/GunkRelay5" to="Trap1/Network2/GunkRelay4" method="pulse"]
[connection signal="triggered" from="Trap1/Network2/GunkRelay5" to="Trap1/Network2/GunkRelay4" method="trigger"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=44 format=4 uid="uid://cnqvb6q8tyxmd"]
[gd_scene load_steps=45 format=4 uid="uid://cnqvb6q8tyxmd"]
[ext_resource type="ArrayMesh" uid="uid://cqd0a7ousx01n" path="res://assets/level/hallway/hallway_1.mesh" id="1_ediv7"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="2_rvc24"]
@ -18,6 +18,7 @@
[ext_resource type="ArrayMesh" uid="uid://bx00qgk2dyjrw" path="res://assets/level/wall/wall_2.mesh" id="15_l3gxc"]
[ext_resource type="Material" uid="uid://dva6ivs2hap53" path="res://levels/ghost_ship/guide_sign/medbay_sign.material" id="16_rn74a"]
[ext_resource type="Material" uid="uid://bo81yn72cb0bq" path="res://levels/ghost_ship/guide_sign/cargo_bay_sign.material" id="17_13shf"]
[ext_resource type="ArrayMesh" uid="uid://b17naqcl4ie21" path="res://assets/level/floor/floor_1.mesh" id="18_rvc24"]
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ruwlj"]
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
@ -632,7 +633,7 @@ source_gunk_material = ExtResource("6_8pwhd")
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 15, 0, 15)
[node name="Floor" type="MeshInstance3D" parent="ShortHallway6"]
mesh = ExtResource("12_i8gqp")
mesh = ExtResource("18_rvc24")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway6/Floor"]
collision_layer = 5
@ -699,19 +700,90 @@ body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("9_57qp5")
[node name="CargoBaySign" type="MeshInstance3D" parent="ShortHallway6"]
[node name="ShortHallway7" type="Node3D" parent="."]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 18, 0, 15)
[node name="Floor" type="MeshInstance3D" parent="ShortHallway7"]
mesh = ExtResource("12_i8gqp")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway7/Floor"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway7/Floor/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_kp5n7")
[node name="Gunkable" parent="ShortHallway7/Floor/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("9_57qp5")
[node name="Ceiling" type="MeshInstance3D" parent="ShortHallway7"]
transform = Transform3D(1, 0, 0, 0, -1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 3, 0)
mesh = ExtResource("13_ieqou")
skeleton = NodePath("../../..")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway7/Ceiling"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway7/Ceiling/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_u2hqf")
[node name="Gunkable" parent="ShortHallway7/Ceiling/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("9_57qp5")
[node name="Wall" type="MeshInstance3D" parent="ShortHallway7"]
transform = Transform3D(-1, -8.74228e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, 0, 1.5, 1.5)
mesh = ExtResource("14_x3ljk")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway7/Wall"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway7/Wall/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_6nvhk")
[node name="Gunkable" parent="ShortHallway7/Wall/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("9_57qp5")
[node name="Wall2" type="MeshInstance3D" parent="ShortHallway7"]
transform = Transform3D(1, 1.74846e-07, -7.64274e-15, 0, -4.37114e-08, -1, -1.74846e-07, 1, -4.37114e-08, 0, 1.5, -1.5)
mesh = ExtResource("14_x3ljk")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway7/Wall2"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway7/Wall2/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_ncghj")
[node name="Gunkable" parent="ShortHallway7/Wall2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("9_57qp5")
[node name="CargoBaySign" type="MeshInstance3D" parent="ShortHallway7"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 3, 0)
gi_mode = 2
mesh = SubResource("ArrayMesh_rigxx")
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway6/CargoBaySign"]
[node name="StaticBody3D" type="StaticBody3D" parent="ShortHallway7/CargoBaySign"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway6/CargoBaySign/StaticBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="ShortHallway7/CargoBaySign/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_np3w4")
[node name="Gunkable" parent="ShortHallway6/CargoBaySign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
[node name="Gunkable" parent="ShortHallway7/CargoBaySign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 32
body = NodePath("..")
mesh_instance = NodePath("../..")

File diff suppressed because one or more lines are too long

View File

@ -101,7 +101,7 @@ size = Vector3(0.8, 2.5, 3)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ybo5"]
data = PackedVector3Array(-0.4, 1.25, 1.5, 0.4, 1.25, 1.5, -0.4, -1.25, 1.5, 0.4, 1.25, 1.5, 0.4, -1.25, 1.5, -0.4, -1.25, 1.5, 0.4, 1.25, -1.5, -0.4, 1.25, -1.5, 0.4, -1.25, -1.5, -0.4, 1.25, -1.5, -0.4, -1.25, -1.5, 0.4, -1.25, -1.5, 0.4, 1.25, 1.5, 0.4, 1.25, -1.5, 0.4, -1.25, 1.5, 0.4, 1.25, -1.5, 0.4, -1.25, -1.5, 0.4, -1.25, 1.5, -0.4, 1.25, -1.5, -0.4, 1.25, 1.5, -0.4, -1.25, -1.5, -0.4, 1.25, 1.5, -0.4, -1.25, 1.5, -0.4, -1.25, -1.5, 0.4, 1.25, 1.5, -0.4, 1.25, 1.5, 0.4, 1.25, -1.5, -0.4, 1.25, 1.5, -0.4, 1.25, -1.5, 0.4, 1.25, -1.5, -0.4, -1.25, 1.5, 0.4, -1.25, 1.5, -0.4, -1.25, -1.5, 0.4, -1.25, 1.5, 0.4, -1.25, -1.5, -0.4, -1.25, -1.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_loej8"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yvs0w"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -127,7 +127,7 @@ _surfaces = [{
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_5abrm"]
[sub_resource type="ArrayMesh" id="ArrayMesh_jnjru"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -136,7 +136,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_loej8"),
"material": SubResource("StandardMaterial3D_yvs0w"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -146,7 +146,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t0ymk"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bnexv"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -157,7 +157,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_glbip"]
[sub_resource type="ArrayMesh" id="ArrayMesh_p5an5"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -166,7 +166,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_t0ymk"),
"material": SubResource("StandardMaterial3D_bnexv"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -176,7 +176,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nqwfe"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1syyw"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -187,7 +187,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_h56f5"]
[sub_resource type="ArrayMesh" id="ArrayMesh_loej8"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -196,7 +196,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_nqwfe"),
"material": SubResource("StandardMaterial3D_1syyw"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -206,7 +206,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gem8k"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5abrm"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -217,7 +217,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_wr3ux"]
[sub_resource type="ArrayMesh" id="ArrayMesh_t0ymk"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -226,7 +226,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_gem8k"),
"material": SubResource("StandardMaterial3D_5abrm"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -236,7 +236,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a7woh"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_glbip"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -247,7 +247,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_l1qst"]
[sub_resource type="ArrayMesh" id="ArrayMesh_nqwfe"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -256,7 +256,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_a7woh"),
"material": SubResource("StandardMaterial3D_glbip"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -266,7 +266,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8ifew"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h56f5"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -277,7 +277,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_klyoq"]
[sub_resource type="ArrayMesh" id="ArrayMesh_gem8k"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -286,7 +286,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_8ifew"),
"material": SubResource("StandardMaterial3D_h56f5"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -296,7 +296,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jmnef"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wr3ux"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -307,7 +307,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_7ip0j"]
[sub_resource type="ArrayMesh" id="ArrayMesh_a7woh"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -316,7 +316,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_jmnef"),
"material": SubResource("StandardMaterial3D_wr3ux"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -326,7 +326,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w6w82"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_l1qst"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -337,7 +337,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_eorl6"]
[sub_resource type="ArrayMesh" id="ArrayMesh_8ifew"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -346,7 +346,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_w6w82"),
"material": SubResource("StandardMaterial3D_l1qst"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -356,7 +356,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ckuu8"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_klyoq"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -367,7 +367,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_65pvg"]
[sub_resource type="ArrayMesh" id="ArrayMesh_jmnef"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -376,7 +376,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_ckuu8"),
"material": SubResource("StandardMaterial3D_klyoq"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -386,7 +386,7 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n3yb1"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7ip0j"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_glbip")
metallic = 1.0
@ -397,7 +397,7 @@ normal_texture = ExtResource("15_h56f5")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_1m2rw"]
[sub_resource type="ArrayMesh" id="ArrayMesh_w6w82"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
@ -406,7 +406,7 @@ _surfaces = [{
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_n3yb1"),
"material": SubResource("StandardMaterial3D_7ip0j"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
@ -1218,12 +1218,15 @@ shape = SubResource("ConcavePolygonShape3D_2qkxu")
[node name="PhysMedCart" parent="Props" instance=ExtResource("11_g8qvw")]
transform = Transform3D(-0.24869, 0, 0.968583, 0, 1, 0, -0.968583, 0, -0.24869, -1.8, 0.5, 0)
sleeping = true
[node name="PhysMedCart2" parent="Props" instance=ExtResource("11_g8qvw")]
transform = Transform3D(0.00523592, -0.866025, 0.499973, -0.999945, -4.2222e-08, 0.0104718, -0.00906879, -0.5, -0.865978, -5.7, 0.356264, 3.6)
sleeping = true
[node name="PhysMedCart3" parent="Props" instance=ExtResource("11_g8qvw")]
transform = Transform3D(0.996195, 0, -0.0871557, 0, 1, 0, 0.0871557, 0, 0.996195, -3.9, 0.5, 3.8)
sleeping = true
[node name="StaticMedCart" parent="Props" instance=ExtResource("10_loej8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4, 0.5, 3.8)
@ -1231,12 +1234,15 @@ skeleton = NodePath("")
[node name="PhysMedCart4" parent="Props" instance=ExtResource("11_g8qvw")]
transform = Transform3D(0.5, 0, 0.866026, 0, 1, 0, -0.866026, 0, 0.5, -5.1, 0.5, -0.399998)
sleeping = true
[node name="PhysMedCart5" parent="Props" instance=ExtResource("11_g8qvw")]
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, 3.72243, 0.5, -11.3763)
sleeping = true
[node name="PhysMedCart6" parent="Props" instance=ExtResource("11_g8qvw")]
transform = Transform3D(-2.53565e-08, -0.965926, -0.258819, 1, -4.2222e-08, 0, -6.85015e-08, -0.258819, 0.965926, 2.22243, 0.35, -11.3763)
sleeping = true
[node name="MonitorCart" type="MeshInstance3D" parent="Props"]
transform = Transform3D(0.866025, 0, 0.5, 0, 1, 0, -0.5, 0, 0.866025, 0.9, 0.6, -2.7)
@ -1349,46 +1355,47 @@ skeleton = NodePath("")
[node name="CrateLong" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.749907, 0.25, 4.05009)
mesh = SubResource("ArrayMesh_5abrm")
mesh = SubResource("ArrayMesh_jnjru")
[node name="PhysCrateLong" parent="Props" instance=ExtResource("19_yvs0w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0.25, -3.6)
sleeping = true
[node name="CrateLong2" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.749907, 0.75, 4.05009)
mesh = SubResource("ArrayMesh_glbip")
mesh = SubResource("ArrayMesh_p5an5")
[node name="CrateLong3" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(-4.37114e-08, 0.707107, -0.707107, 0, 0.707107, 0.707107, 1, 3.09086e-08, -3.09086e-08, 0.599813, 0.75, 4.05009)
mesh = SubResource("ArrayMesh_h56f5")
mesh = SubResource("ArrayMesh_loej8")
[node name="CrateLong5" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(1, 0, -7.45058e-08, 0, 1, 0, 7.45058e-08, 0, 1, 3.93256, 0.25, -2.54991)
mesh = SubResource("ArrayMesh_wr3ux")
mesh = SubResource("ArrayMesh_t0ymk")
[node name="CrateLong10" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(1, 0, -7.45058e-08, 0, 1, 0, 7.45058e-08, 0, 1, 3.93256, 0.25, -1.04991)
mesh = SubResource("ArrayMesh_l1qst")
mesh = SubResource("ArrayMesh_nqwfe")
[node name="CrateLong6" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 0.75, -2.54991)
mesh = SubResource("ArrayMesh_klyoq")
mesh = SubResource("ArrayMesh_gem8k")
[node name="CrateLong11" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 0.75, -1.04991)
mesh = SubResource("ArrayMesh_7ip0j")
mesh = SubResource("ArrayMesh_a7woh")
[node name="CrateLong7" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 1.25, -2.54991)
mesh = SubResource("ArrayMesh_eorl6")
mesh = SubResource("ArrayMesh_8ifew")
[node name="CrateLong8" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 1.75, -2.54991)
mesh = SubResource("ArrayMesh_65pvg")
mesh = SubResource("ArrayMesh_jmnef")
[node name="CrateLong9" parent="Props" instance=ExtResource("12_t0ymk")]
transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 2.25, -2.54991)
mesh = SubResource("ArrayMesh_1m2rw")
mesh = SubResource("ArrayMesh_w6w82")
[node name="FloatingDust" parent="." instance=ExtResource("17_wr3ux")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 1.5, -4.5)

View File

@ -503,6 +503,7 @@ surface_material_override/0 = SubResource("StandardMaterial3D_mdsoq")
[node name="PhysTrashCan" parent="Props" instance=ExtResource("15_pmhe8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.9, 0.5, 9)
sleeping = true
[node name="FloatingDust" parent="." instance=ExtResource("15_87puh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 1.5, 5)

View File

@ -45,7 +45,7 @@ normal_texture = ExtResource("12_ukiad")
uv1_scale = Vector3(3, 1, 1)
texture_filter = 4
[sub_resource type="ArrayMesh" id="ArrayMesh_76qng"]
[sub_resource type="ArrayMesh" id="ArrayMesh_cx8lh"]
_surfaces = [{
"aabb": AABB(-4.5, 0, -1.5, 9, 1e-05, 3),
"format": 34896613377,
@ -74,7 +74,7 @@ _surfaces = [{
"vertex_data": PackedByteArray(255, 255, 0, 0, 255, 255, 255, 191, 0, 0, 0, 0, 255, 255, 255, 191, 255, 255, 0, 0, 0, 0, 255, 191, 0, 0, 0, 0, 0, 0, 255, 191, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127)
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_76qng")
shadow_mesh = SubResource("ArrayMesh_cx8lh")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ffr5l"]
data = PackedVector3Array(4.5, 0, 1.5, -4.5, 0, 1.5, 4.5, 0, -1.5, 4.5, 0, -1.5, -4.5, 0, 1.5, -4.5, 0, -1.5)
@ -1420,12 +1420,15 @@ shape = SubResource("ConcavePolygonShape3D_c6n8b")
[node name="PhysCrateLong" parent="Props" instance=ExtResource("16_cx8lh")]
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, 3.50191, -2.75, -12.4451)
sleeping = true
[node name="PhysCrateLong2" parent="Props" instance=ExtResource("16_cx8lh")]
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, 3.50191, -2.25, -12.4451)
sleeping = true
[node name="PhysCrateLong3" parent="Props" instance=ExtResource("16_cx8lh")]
transform = Transform3D(0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, 0.707107, 2.42044, -2.75, -12.1553)
sleeping = true
[node name="FloatingDust" parent="." instance=ExtResource("20_82gsa")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, -4.5)

View File

@ -307,17 +307,12 @@ surface_material_override/0 = SubResource("StandardMaterial3D_xpsdy")
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_nafoa")
[node name="TankInteractor" type="StaticBody3D" parent="."]
unique_name_in_owner = true
[node name="TankInteractBody" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.85, 1.35, 4.5)
collision_layer = 2
collision_mask = 0
script = ExtResource("6_e4hmc")
label = "INTERACTIVE_TANK_LABEL"
verb = "INTERACTIVE_TANK_VERB"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="GrunkPumpSFX" type="AudioStreamPlayer3D" parent="TankInteractor"]
[node name="GrunkPumpSFX" type="AudioStreamPlayer3D" parent="TankInteractBody"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.6)
stream = SubResource("AudioStreamRandomizer_53iah")
@ -325,9 +320,16 @@ volume_db = -4.0
unit_size = 3.0
pitch_scale = 0.7
[node name="CollisionShape3D" type="CollisionShape3D" parent="TankInteractor"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="TankInteractBody"]
shape = SubResource("SphereShape3D_e4hmc")
[node name="TankInteractor" type="Node" parent="TankInteractBody"]
unique_name_in_owner = true
script = ExtResource("6_e4hmc")
label = "INTERACTIVE_TANK_LABEL"
verb = "INTERACTIVE_TANK_VERB"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="LiquidOffset" type="Node3D" parent="."]
transform = Transform3D(0.95, 0, 0, 0, 0.95, 0, 0, 0, 0.95, 0, -2.8, 6)
@ -420,6 +422,6 @@ volume_db = -16.0
unit_size = 4.0
bus = &"SFX"
[connection signal="activated" from="TankInteractor" to="." method="deposit_grunk"]
[connection signal="activated" from="TankInteractBody/TankInteractor" to="." method="deposit_grunk"]
[connection signal="body_entered" from="DoorArea" to="DoorArea" method="_on_body_entered"]
[connection signal="body_exited" from="DoorArea" to="DoorArea" method="_on_body_exited"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=43 format=3 uid="uid://dc4tts6342cuj"]
[gd_scene load_steps=44 format=3 uid="uid://dc4tts6342cuj"]
[ext_resource type="Script" uid="uid://dmbdkydqnbyqv" path="res://levels/prop_test/prop_test.gd" id="1_ibd1t"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_ml0ka"]
@ -7,7 +7,7 @@
[ext_resource type="Environment" uid="uid://iqhvx1couqcf" path="res://levels/prop_test/debug_environment.tres" id="3_mvw32"]
[ext_resource type="PackedScene" uid="uid://cubwniraol1qn" path="res://src/props/bulkhead/bulkhead.tscn" id="4_g7cgy"]
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="5_y13lv"]
[ext_resource type="PackedScene" uid="uid://cvx5u0ttmri4q" path="res://src/props/sofa/sofa.tscn" id="6_kccq3"]
[ext_resource type="PackedScene" uid="uid://cvx5u0ttmri4q" path="res://src/props/sofa/static_sofa.tscn" id="6_kccq3"]
[ext_resource type="PackedScene" uid="uid://ca7b5gjl3ri0p" path="res://src/props/cafe_table/cafe_table.tscn" id="6_tm4v6"]
[ext_resource type="PackedScene" uid="uid://cppd3scvxf3eg" path="res://src/props/crate_long/static_crate_long.tscn" id="7_4jlf1"]
[ext_resource type="PackedScene" uid="uid://bpsiwx1517pk1" path="res://src/props/tarp_crate/tarp_crate.tscn" id="7_xlkhi"]
@ -24,6 +24,7 @@
[ext_resource type="PackedScene" uid="uid://ctm84yms40858" path="res://src/props/railing/railing.tscn" id="16_kccq3"]
[ext_resource type="PackedScene" uid="uid://ctr56p23cvupu" path="res://src/props/retinal_scanner/retinal_scanner.tscn" id="17_r8upy"]
[ext_resource type="PackedScene" uid="uid://cjqayfrj2oxyr" path="res://src/props/tarp_crate/tarp_crate_logo.tscn" id="20_pfhf5"]
[ext_resource type="PackedScene" uid="uid://c55n6h3ydi32e" path="res://src/props/sofa/phys_sofa.tscn" id="21_4q7ty"]
[ext_resource type="PackedScene" uid="uid://cklppdtyaadlo" path="res://src/props/trash_can/static_trash_can.tscn" id="21_wgtci"]
[ext_resource type="PackedScene" uid="uid://dtus42gmb1kqq" path="res://src/props/vending_machine/vending_machine.tscn" id="22_6oadn"]
[ext_resource type="Texture2D" uid="uid://d2xq0uvxh2ojk" path="res://assets/props/vending_machine/vending_machine_C.png" id="23_ibd1t"]
@ -226,6 +227,9 @@ skeleton = NodePath("../..")
[node name="RetinalScanner" parent="Props" instance=ExtResource("17_r8upy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 1.3, -12)
[node name="PhysSofa" parent="Props" instance=ExtResource("21_4q7ty")]
transform = Transform3D(-0.984808, 0, -0.173648, 0, 1, 0, 0.173648, 0, -0.984808, 33, 0.5, -8.4)
[node name="Sofa" parent="Props" instance=ExtResource("6_kccq3")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33, 0.5, -12)
skeleton = NodePath("../SwitchPodium")
@ -241,6 +245,7 @@ skeleton = NodePath("../..")
[node name="StaticTrashCan" parent="Props" instance=ExtResource("21_wgtci")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 42, 0.5, -12)
skeleton = NodePath("../..")
surface_material_override/0 = null
[node name="PhysTrashCan" parent="Props" instance=ExtResource("25_8eukv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 42.9, 0.5, -10.8)
@ -251,18 +256,20 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 1.5654, -12)
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_u3x5h")
[node name="Interactive" type="StaticBody3D" parent="Props/VendingMachine"]
[node name="InteractiveBody" type="StaticBody3D" parent="Props/VendingMachine"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/VendingMachine/InteractiveBody"]
shape = SubResource("BoxShape3D_ibd1t")
[node name="Interactive" type="Node" parent="Props/VendingMachine/InteractiveBody"]
script = ExtResource("28_ibd1t")
enabled = true
label = "Vending Machine"
verb = "toggle"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/VendingMachine/Interactive"]
shape = SubResource("BoxShape3D_ibd1t")
[node name="CleanPodium" type="StaticBody3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4, 1, 0)
@ -280,18 +287,20 @@ text = "Clean"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0.25)
mesh = SubResource("SphereMesh_ibd1t")
[node name="Interactive" type="StaticBody3D" parent="CleanPodium/ButtonMesh"]
[node name="InteractiveBody" type="StaticBody3D" parent="CleanPodium/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="CleanPodium/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_mvw32")
[node name="Interactive" type="Node" parent="CleanPodium/ButtonMesh/InteractiveBody"]
script = ExtResource("28_ibd1t")
enabled = true
label = "Level"
verb = "clean all"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="CleanPodium/ButtonMesh/Interactive"]
shape = SubResource("SphereShape3D_mvw32")
[node name="ResetPodium" type="StaticBody3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4, 1, 1.5)
@ -309,18 +318,20 @@ text = "Reload"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0.25)
mesh = SubResource("SphereMesh_ibd1t")
[node name="Interactive" type="StaticBody3D" parent="ResetPodium/ButtonMesh"]
[node name="InteractiveBody" type="StaticBody3D" parent="ResetPodium/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="ResetPodium/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_mvw32")
[node name="Interactive" type="Node" parent="ResetPodium/ButtonMesh/InteractiveBody"]
script = ExtResource("28_ibd1t")
enabled = true
label = "Level"
verb = "reload"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="ResetPodium/ButtonMesh/Interactive"]
shape = SubResource("SphereShape3D_mvw32")
[node name="GameEnvPodium" type="StaticBody3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, 1, 0)
@ -340,18 +351,20 @@ Environment
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0.25)
mesh = SubResource("SphereMesh_ibd1t")
[node name="Interactive" type="StaticBody3D" parent="GameEnvPodium/ButtonMesh"]
[node name="InteractiveBody" type="StaticBody3D" parent="GameEnvPodium/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="GameEnvPodium/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_mvw32")
[node name="Interactive" type="Node" parent="GameEnvPodium/ButtonMesh/InteractiveBody"]
script = ExtResource("28_ibd1t")
enabled = true
label = "Game Environment"
verb = "enable"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="GameEnvPodium/ButtonMesh/Interactive"]
shape = SubResource("SphereShape3D_mvw32")
[node name="DebugEnvPodium" type="StaticBody3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, 1, 1.5)
@ -371,18 +384,20 @@ Environment
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0.25)
mesh = SubResource("SphereMesh_ibd1t")
[node name="Interactive" type="StaticBody3D" parent="DebugEnvPodium/ButtonMesh"]
[node name="InteractiveBody" type="StaticBody3D" parent="DebugEnvPodium/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="DebugEnvPodium/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_mvw32")
[node name="Interactive" type="Node" parent="DebugEnvPodium/ButtonMesh/InteractiveBody"]
script = ExtResource("28_ibd1t")
enabled = true
label = "Debug Environment"
verb = "enable"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="DebugEnvPodium/ButtonMesh/Interactive"]
shape = SubResource("SphereShape3D_mvw32")
[node name="PostProcessingPodium" type="StaticBody3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, 1, 3)
@ -401,18 +416,20 @@ Postprocessing"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0.25)
mesh = SubResource("SphereMesh_ibd1t")
[node name="Interactive" type="StaticBody3D" parent="PostProcessingPodium/ButtonMesh"]
[node name="InteractiveBody" type="StaticBody3D" parent="PostProcessingPodium/ButtonMesh"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="PostProcessingPodium/ButtonMesh/InteractiveBody"]
shape = SubResource("SphereShape3D_mvw32")
[node name="Interactive" type="Node" parent="PostProcessingPodium/ButtonMesh/InteractiveBody"]
script = ExtResource("28_ibd1t")
enabled = true
label = "Post-processing"
verb = "toggle"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="PostProcessingPodium/ButtonMesh/Interactive"]
shape = SubResource("SphereShape3D_mvw32")
[node name="PostProcessing" parent="." instance=ExtResource("30_qnhar")]
unique_name_in_owner = true
visible = false
@ -423,9 +440,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
[connection signal="animation_finished" from="Props/Bulkhead" to="Props/SwitchPodium/OpenSwitch" method="enable"]
[connection signal="activated" from="Props/SwitchPodium/OpenSwitch" to="Props/Bulkhead" method="toggle"]
[connection signal="activated" from="Props/SwitchPodium/OpenSwitch" to="Props/SwitchPodium/OpenSwitch" method="disable"]
[connection signal="activated" from="Props/VendingMachine/Interactive" to="." method="toggle_vending_machine"]
[connection signal="activated" from="CleanPodium/ButtonMesh/Interactive" to="." method="clean_all_props"]
[connection signal="activated" from="ResetPodium/ButtonMesh/Interactive" to="." method="reset_level"]
[connection signal="activated" from="GameEnvPodium/ButtonMesh/Interactive" to="." method="set_game_environment"]
[connection signal="activated" from="DebugEnvPodium/ButtonMesh/Interactive" to="." method="set_debug_environment"]
[connection signal="activated" from="PostProcessingPodium/ButtonMesh/Interactive" to="." method="toggle_postprocessing"]
[connection signal="activated" from="Props/VendingMachine/InteractiveBody/Interactive" to="." method="toggle_vending_machine"]
[connection signal="activated" from="CleanPodium/ButtonMesh/InteractiveBody/Interactive" to="." method="clean_all_props"]
[connection signal="activated" from="ResetPodium/ButtonMesh/InteractiveBody/Interactive" to="." method="reset_level"]
[connection signal="activated" from="GameEnvPodium/ButtonMesh/InteractiveBody/Interactive" to="." method="set_game_environment"]
[connection signal="activated" from="DebugEnvPodium/ButtonMesh/InteractiveBody/Interactive" to="." method="set_debug_environment"]
[connection signal="activated" from="PostProcessingPodium/ButtonMesh/InteractiveBody/Interactive" to="." method="toggle_postprocessing"]

File diff suppressed because one or more lines are too long

View File

@ -91,6 +91,7 @@ LurkPoint="Point which a lurking beast may wander to."
BeastSpawnPoint="Spawn point for a grunkbeast"
GrunkBeast="GrunkBeast instances."
Persistent="Nodes which implement save and load methods"
Bulkheads=""
[importer_defaults]

View File

@ -5,7 +5,7 @@
[ext_resource type="Script" uid="uid://c5o1d2shq2qig" path="res://src/world/game_sound/game_sound_emitter.gd" id="3_rikqc"]
[sub_resource type="SphereShape3D" id="SphereShape3D_yaakk"]
radius = 2.0
radius = 7.0
[node name="SpraySFX" type="AudioStreamPlayer3D"]
stream = ExtResource("1_575yt")

View File

@ -13,11 +13,12 @@ const AMBIENT_BUS_IDX = 3
func _ready() -> void:
World.instance.manager.mp3_collected.connect(_on_mp3_collected)
if World.instance:
World.instance.manager.mp3_collected.connect(_on_mp3_collected)
func unlocked() -> bool:
return World.instance.manager.mp3_player_unlocked
return World.instance and World.instance.manager.mp3_player_unlocked
func fire() -> void:

View File

@ -18,7 +18,7 @@ func _spray() -> void:
func _fire() -> void:
rumbler.intensity = RUMBLE_INTENSITY
if World.instance.manager.is_tank_full():
if World.instance and World.instance.manager.is_tank_full():
Player.instance.hud.play_tank_full_alert()
idle()
return

View File

@ -39,7 +39,7 @@ func _import_stickers() -> void:
func unlocked() -> bool:
return World.instance.manager.stickers_unlocked
return World.instance and World.instance.manager.stickers_unlocked
func get_selected_sticker() -> Texture2D:

View File

@ -12,7 +12,7 @@ const BRUSH_SCALE := 0.2
func unlocked() -> bool:
return World.instance.manager.toothbrush_unlocked
return World.instance and World.instance.manager.toothbrush_unlocked
func _fire() -> void:

View File

@ -1,6 +1,9 @@
extends Node3D
class_name HoldComponent extends Node3D
## Component for managing physics object holding
signal held
signal dropped
## Held object position lerp acceleration.
@export var hold_accel := 20.0
@ -43,6 +46,8 @@ func attach(prop: RigidBody3D, hold_distance: float) -> void:
_original_collision_mask = prop.collision_mask
prop.collision_mask = hold_collision_physics
held.emit()
func drop() -> void:
_held_object.linear_damp = _original_damping
@ -50,6 +55,8 @@ func drop() -> void:
_held_object.collision_mask = _original_collision_mask
_held_object = null
dropped.emit()
func holding_object() -> bool:
return !!_held_object
@ -57,17 +64,11 @@ func holding_object() -> bool:
func _physics_process(delta: float) -> void:
# Object hold action logic
if Input.is_action_just_pressed("interact"):
if _held_object:
drop()
elif interact_ray.is_colliding():
var body := interact_ray.get_collider() as RigidBody3D
var hold_component := Holdable.get_component(body)
if hold_component:
attach(body, hold_component.hold_distance)
if holding_object() and Input.is_action_just_pressed("interact"):
drop()
# Held object logic
if not _held_object:
if not holding_object():
return
var diff := hold_point.global_position - (_held_object.global_position)

View File

@ -0,0 +1,35 @@
extends RayCast3D
## Component for interacting with Interactive things.
var _selected: Object
@onready var parent := owner as Player
func _deselect() -> void:
if _selected and is_instance_valid(_selected):
_selected.emit_signal(Interactive.DESELECT_SIGNAL)
_selected = null
func _process(_delta: float) -> void:
var collider := self.get_collider()
if not collider:
_deselect()
return
if collider.has_user_signal(Interactive.SELECT_SIGNAL):
if collider != _selected:
if not _selected and is_instance_valid(_selected):
_selected.emit_signal(Interactive.DESELECT_SIGNAL)
_selected = collider
collider.emit_signal(Interactive.SELECT_SIGNAL)
else:
_deselect()
if (
parent.activity_enabled
and Input.is_action_just_pressed("interact")
and collider.has_user_signal(Interactive.ACTIVATE_SIGNAL)
):
collider.emit_signal(Interactive.ACTIVATE_SIGNAL)

View File

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

View File

@ -45,7 +45,6 @@ var gravity: Vector3 = (
* ProjectSettings.get_setting("physics/3d/default_gravity_vector")
)
var selected_interactive: Interactive
var firing := false
var sneaking := false
@ -56,8 +55,6 @@ var _was_on_floor := false
@onready var camera_pivot: CameraController = %CameraPivot
@onready var cam_rumbler: Rumbler3D = %CamRumbler
@onready var interact_ray: RayCast3D = %InteractRay
@onready var tool_mount: ToolMount = %ToolMount
@onready var point_spray: PointSpray = %PointSpray
@onready var wide_spray: WideSpray = %WideSpray
@ -65,6 +62,8 @@ var _was_on_floor := false
@onready var mp3_player: Tool = %MP3Player
@onready var sticker_pack: Tool = %StickerPack
@onready var hold_component: HoldComponent = %HoldComponent
@onready var crouch_head_area: Area3D = %CrouchHeadArea
@onready var crouch_animation: AnimationPlayer = %CrouchAnimation
@onready var grab_animation: AnimationPlayer = %GrabAnimation
@ -80,7 +79,8 @@ static var instance: Player
func _ready() -> void:
World.instance.manager.milestone_reached.connect(_on_milestone)
if World.instance:
World.instance.manager.milestone_reached.connect(_on_milestone)
instance = self
@ -188,17 +188,7 @@ func _signal_death() -> void:
func _physics_process(delta: float) -> void:
# Will be null if no valid interactor is selected.
var interactive := interact_ray.get_collider() as Interactive
hud.select_interactive(interactive)
if interactive:
interactive.select()
if activity_enabled:
# World interaction
if Input.is_action_just_pressed("interact") and interactive:
interactive.activate()
# Tool selection
if Input.is_action_just_pressed("select_next_tool"):
tool_mount.set_active_relative(1)
@ -215,16 +205,18 @@ func _physics_process(delta: float) -> void:
elif Input.is_action_just_pressed("select_stickers"):
tool_mount.set_active(sticker_pack)
# Tool use
if Input.is_action_pressed("fire"):
get_tool().fire()
firing = true
else:
get_tool().idle()
firing = false
var tool := get_tool()
firing = false
if tool:
# Tool use
if Input.is_action_pressed("fire"):
tool.fire()
firing = true
else:
tool.idle()
if Input.is_action_just_pressed("switch_mode"):
get_tool().switch_mode()
if Input.is_action_just_pressed("switch_mode"):
tool.switch_mode()
# Two sneaking modes -- hold and toggle
if Game.settings.hold_to_sneak:

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=67 format=3 uid="uid://bwe2jdmvinhqd"]
[gd_scene load_steps=68 format=3 uid="uid://bwe2jdmvinhqd"]
[ext_resource type="Script" uid="uid://buwh0g1ga2aka" path="res://src/player/player.gd" id="1_npueo"]
[ext_resource type="Script" uid="uid://cx1yt0drthpw3" path="res://src/player/camera_controller.gd" id="2_veeqv"]
@ -13,6 +13,7 @@
[ext_resource type="PackedScene" uid="uid://cmnokjbv3vuqt" path="res://src/equipment/sticker_pack/sticker_pack.tscn" id="8_xmpm3"]
[ext_resource type="Script" uid="uid://ecrhsueph7at" path="res://src/player/footsteps/footstep_controller.gd" id="9_hja65"]
[ext_resource type="Script" uid="uid://brqa2wbtaspw4" path="res://src/player/footsteps/foot_controller.gd" id="9_l271a"]
[ext_resource type="Script" uid="uid://hnxv1ii8hm0" path="res://src/player/interact_ray.gd" id="10_4ptlo"]
[ext_resource type="AudioStream" uid="uid://di0e1l1l6l3qc" path="res://assets/sfx/footsteps/metal/metal1.wav" id="10_jcdrv"]
[ext_resource type="Script" uid="uid://pkk1qg3bqjhj" path="res://src/player/hold_component.gd" id="11_h0enb"]
[ext_resource type="AudioStream" uid="uid://bv00dudic2mvp" path="res://assets/sfx/footsteps/metal/metal3.wav" id="11_hja65"]
@ -650,7 +651,8 @@ current = true
[node name="InteractRay" type="RayCast3D" parent="CameraPosition/CameraPivot/TransformedPosition/CamRumbler/Camera3D"]
unique_name_in_owner = true
target_position = Vector3(0, 0, -1.5)
collision_mask = 2
collision_mask = 35
script = ExtResource("10_4ptlo")
[node name="FarLight" type="OmniLight3D" parent="CameraPosition/CameraPivot/TransformedPosition/CamRumbler/Camera3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.1)
@ -683,6 +685,7 @@ parameters/timescale/scale = false
script = ExtResource("7_x42xx")
[node name="HoldComponent" type="Node3D" parent="CameraPosition/CameraPivot/TransformedPosition/CamRumbler/Camera3D"]
unique_name_in_owner = true
script = ExtResource("11_h0enb")
hold_accel = 40.0
hold_speed = 20.0

View File

@ -8,11 +8,27 @@ var _active: Tool
func _ready() -> void:
set_active(initial_tool)
_deferred_init.call_deferred()
func _deferred_init() -> void:
Player.instance.hold_component.dropped.connect(show_tool)
Player.instance.hold_component.held.connect(hide_tool)
func hide_tool() -> void:
# TODO maybe animate?
visible = false
func show_tool() -> void:
# TODO maybe animate?
visible = true
## Returns the currently-active tool.
func get_active() -> Tool:
return _active
return _active if visible else null
## Sets the given tool as active.

View File

@ -281,7 +281,7 @@ _data = {
&"spray": SubResource("Animation_88qrs")
}
[node name="Bulkhead" groups=["Persistent"] instance=ExtResource("1_77udb")]
[node name="Bulkhead" groups=["Bulkheads", "Persistent"] instance=ExtResource("1_77udb")]
script = ExtResource("2_hknvo")
[node name="Frame" parent="." index="0"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=3 uid="uid://drm5dspi48pf5"]
[gd_scene load_steps=12 format=3 uid="uid://drm5dspi48pf5"]
[ext_resource type="Script" uid="uid://sksndhqyo2bn" path="res://src/props/physics/persistent_prop.gd" id="1_q4djj"]
[ext_resource type="ArrayMesh" uid="uid://cd7vwjss7qytk" path="res://assets/props/crate_long/crate_long.obj" id="1_sao54"]
@ -10,9 +10,6 @@
[ext_resource type="Material" uid="uid://c1vy4bkwb1g5m" path="res://assets/materials/gunk_lowrez.material" id="7_rlyiq"]
[ext_resource type="Script" uid="uid://040xta01xqxd" path="res://src/props/physics/holdable.gd" id="8_p8srg"]
[sub_resource type="BoxShape3D" id="BoxShape3D_p8srg"]
size = Vector3(0.75, 0.5, 1.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8j27j"]
albedo_texture = ExtResource("2_rlyiq")
metallic = 1.0
@ -23,8 +20,8 @@ normal_texture = ExtResource("4_q4djj")
ao_enabled = true
texture_filter = 2
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p8srg"]
data = PackedVector3Array(0.375, -0.15, 0.75, 0.275, -0.25, 0.75, 0.375, 0.15, 0.75, 0.375, 0.15, 0.75, 0.275, -0.25, 0.75, 0.275, 0.25, 0.75, 0.275, 0.25, 0.75, 0.275, -0.25, 0.75, -0.275, 0.25, 0.75, -0.275, 0.25, 0.75, 0.275, -0.25, 0.75, -0.375, 0.15, 0.75, -0.375, 0.15, 0.75, 0.275, -0.25, 0.75, -0.375, -0.15, 0.75, -0.375, -0.15, 0.75, 0.275, -0.25, 0.75, -0.275, -0.25, 0.75, 0.375, 0.15, -0.75, 0.375, -0.15, -0.75, 0.375, 0.15, 0.75, 0.375, 0.15, 0.75, 0.375, -0.15, -0.75, 0.375, -0.15, 0.75, -0.275, 0.25, -0.75, 0.275, 0.25, -0.75, -0.275, 0.25, 0.75, -0.275, 0.25, 0.75, 0.275, 0.25, -0.75, 0.275, 0.25, 0.75, -0.375, 0.15, 0.75, -0.375, -0.15, 0.75, -0.375, 0.15, -0.75, -0.375, 0.15, -0.75, -0.375, -0.15, 0.75, -0.375, -0.15, -0.75, -0.375, -0.15, -0.75, -0.275, -0.25, -0.75, -0.375, 0.15, -0.75, -0.375, 0.15, -0.75, -0.275, -0.25, -0.75, -0.275, 0.25, -0.75, -0.275, 0.25, -0.75, -0.275, -0.25, -0.75, 0.275, 0.25, -0.75, 0.275, 0.25, -0.75, -0.275, -0.25, -0.75, 0.375, 0.15, -0.75, 0.375, 0.15, -0.75, -0.275, -0.25, -0.75, 0.375, -0.15, -0.75, 0.375, -0.15, -0.75, -0.275, -0.25, -0.75, 0.275, -0.25, -0.75, -0.275, -0.25, 0.75, -0.275, -0.25, -0.75, -0.375, -0.15, 0.75, -0.375, -0.15, 0.75, -0.275, -0.25, -0.75, -0.375, -0.15, -0.75, -0.275, 0.25, -0.75, -0.275, 0.25, 0.75, -0.375, 0.15, -0.75, -0.375, 0.15, -0.75, -0.275, 0.25, 0.75, -0.375, 0.15, 0.75, 0.275, -0.25, -0.75, 0.275, -0.25, 0.75, 0.375, -0.15, -0.75, 0.375, -0.15, -0.75, 0.275, -0.25, 0.75, 0.375, -0.15, 0.75, 0.275, 0.25, 0.75, 0.275, 0.25, -0.75, 0.375, 0.15, 0.75, 0.375, 0.15, 0.75, 0.275, 0.25, -0.75, 0.375, 0.15, -0.75, 0.275, -0.25, -0.75, -0.275, -0.25, -0.75, 0.275, -0.25, 0.75, 0.275, -0.25, 0.75, -0.275, -0.25, -0.75, -0.275, -0.25, 0.75)
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_q4djj"]
points = PackedVector3Array(0.375, 0.149961, 0.75, 0.375, -0.15001, 0.75, 0.375, 0.149961, -0.75, 0.274936, 0.25, 0.75, 0.274936, -0.25, 0.75, 0.375, -0.15001, -0.75, 0.274936, 0.25, -0.75, -0.275083, 0.25, 0.75, -0.275083, -0.25, 0.75, 0.274936, -0.25, -0.75, -0.275083, 0.25, -0.75, -0.375, 0.149961, 0.75, -0.375, -0.15001, 0.75, -0.275083, -0.25, -0.75, -0.375, 0.149961, -0.75, -0.375, -0.15001, -0.75)
[node name="PhysCrateLong" type="RigidBody3D" groups=["Persistent", "PlasticMaterial"]]
collision_layer = 67
@ -32,24 +29,17 @@ collision_mask = 73
mass = 200.0
script = ExtResource("1_q4djj")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("BoxShape3D_p8srg")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = ExtResource("1_sao54")
surface_material_override/0 = SubResource("StandardMaterial3D_8j27j")
[node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D"]
collision_layer = 4
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("ConvexPolygonShape3D_q4djj")
[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_p8srg")
[node name="Gunkable" parent="MeshInstance3D/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("6_064yj")]
[node name="Gunkable" parent="." node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("6_064yj")]
mask_dim = 128
body = NodePath("..")
mesh_instance = NodePath("../..")
mesh_instance = NodePath("../MeshInstance3D")
source_gunk_material = ExtResource("7_rlyiq")
[node name="Holdable" type="Node" parent="."]

View File

@ -1,31 +1,39 @@
class_name Interactive extends StaticBody3D
class_name Interactive extends Node
## Props the player can interact with.
signal activated
signal selected
const SELECT_SIGNAL := "selected"
const DESELECT_SIGNAL := "deselected"
const ACTIVATE_SIGNAL := "activated"
@export var enabled := false
@export var label := ""
@export var verb := "use"
var _is_selected := false
var _selected_this_frame := false
var controller: Node
var is_selected := false
func _ready() -> void:
controller = get_parent()
controller.add_user_signal(SELECT_SIGNAL)
controller.connect(SELECT_SIGNAL, select)
controller.add_user_signal(DESELECT_SIGNAL)
controller.connect(DESELECT_SIGNAL, deselect)
controller.add_user_signal(ACTIVATE_SIGNAL)
controller.connect(ACTIVATE_SIGNAL, activate)
func select() -> void:
Player.instance.hud.interact_hud.set_interactive(self)
func deselect() -> void:
Player.instance.hud.interact_hud.set_interactive(null)
func activate() -> void:
if enabled:
activated.emit()
# TODO: bonk
func select() -> void:
if not _is_selected:
selected.emit()
_is_selected = true
_selected_this_frame = true
func _process(_delta: float) -> void:
if not _selected_this_frame:
_is_selected = false
_selected_this_frame = false

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=3 uid="uid://cv6sxj04rrkt2"]
[gd_scene load_steps=14 format=3 uid="uid://cv6sxj04rrkt2"]
[ext_resource type="Script" uid="uid://sksndhqyo2bn" path="res://src/props/physics/persistent_prop.gd" id="1_3jm8i"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="1_fu1y0"]
@ -10,8 +10,11 @@
[ext_resource type="Texture2D" uid="uid://bcnsofhrfxyjk" path="res://assets/props/med_cart/med_cart_R.png" id="7_2wjh0"]
[ext_resource type="Script" uid="uid://040xta01xqxd" path="res://src/props/physics/holdable.gd" id="8_8v7ae"]
[sub_resource type="BoxShape3D" id="BoxShape3D_fu1y0"]
size = Vector3(0.7, 1, 1.2)
[sub_resource type="BoxShape3D" id="BoxShape3D_3jm8i"]
size = Vector3(0.7, 0.06, 1.2)
[sub_resource type="BoxShape3D" id="BoxShape3D_r1b3g"]
size = Vector3(0.7, 1, 0.06)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xx4to"]
transparency = 2
@ -34,14 +37,28 @@ collision_mask = 73
mass = 40.0
script = ExtResource("1_3jm8i")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("BoxShape3D_fu1y0")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0)
shape = SubResource("BoxShape3D_3jm8i")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.3, 0)
shape = SubResource("BoxShape3D_3jm8i")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.56)
shape = SubResource("BoxShape3D_r1b3g")
[node name="CollisionShape3D5" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.56)
shape = SubResource("BoxShape3D_r1b3g")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = ExtResource("3_3jm8i")
surface_material_override/0 = SubResource("StandardMaterial3D_xx4to")
[node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D"]
visible = false
collision_layer = 4
collision_mask = 0

View File

@ -2,10 +2,34 @@ class_name Holdable extends Node
## Component for holdable elements
@export var hold_distance := 1.0
@export var controller: RigidBody3D
static func get_component(o: Object) -> Holdable:
var n := o as Node
if n and n.has_node("Holdable"):
return n.get_node_or_null("Holdable") as Holdable
return null
func _ready() -> void:
if not controller:
controller = _default_controller()
assert(controller, "Holdable %s has no valid controller!" % str(self))
controller.add_user_signal(Interactive.SELECT_SIGNAL)
controller.connect(Interactive.SELECT_SIGNAL, select)
controller.add_user_signal(Interactive.DESELECT_SIGNAL)
controller.connect(Interactive.DESELECT_SIGNAL, deselect)
controller.add_user_signal(Interactive.ACTIVATE_SIGNAL)
controller.connect(Interactive.ACTIVATE_SIGNAL, activate)
func _default_controller() -> RigidBody3D:
return get_parent() as RigidBody3D
func select() -> void:
Player.instance.hud.hold_hud.select_prop()
func deselect() -> void:
Player.instance.hud.hold_hud.deselect()
func activate() -> void:
if not Player.instance.hold_component.holding_object():
Player.instance.hold_component.attach(controller, hold_distance)

View File

@ -23,17 +23,18 @@ Scanner"
font_size = 96
outline_size = 24
[node name="Interactive" type="StaticBody3D" parent="."]
unique_name_in_owner = true
[node name="InteractiveBody" type="StaticBody3D" parent="."]
collision_layer = 3
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractiveBody"]
shape = SubResource("BoxShape3D_5bfyo")
[node name="Interactive" type="Node" parent="InteractiveBody"]
unique_name_in_owner = true
script = ExtResource("1_ldtbm")
label = "INTERACTIVE_SCANNER_LABEL"
verb = "INTERACTIVE_SCANNER_VERB"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactive"]
shape = SubResource("BoxShape3D_5bfyo")
[connection signal="activated" from="Interactive" to="." method="_activate"]
[connection signal="selected" from="Interactive" to="." method="_on_interactive_selected"]
[connection signal="activated" from="InteractiveBody/Interactive" to="." method="_activate"]

View File

@ -0,0 +1,237 @@
[gd_scene load_steps=19 format=3 uid="uid://c55n6h3ydi32e"]
[ext_resource type="ArrayMesh" uid="uid://vb5cxt1113xr" path="res://assets/props/sofa/sofa_frame.obj" id="2_txvha"]
[ext_resource type="Texture2D" uid="uid://c7wa2igxm2vta" path="res://assets/props/sofa/sofa_C.png" id="3_twcgi"]
[ext_resource type="Texture2D" uid="uid://bdutuchsgsudg" path="res://assets/props/sofa/sofa_M.png" id="4_pr1sr"]
[ext_resource type="Texture2D" uid="uid://c0fmlt2f7h0l7" path="res://assets/props/sofa/sofa_N.png" id="5_p1o88"]
[ext_resource type="Texture2D" uid="uid://bgedr6qe65yve" path="res://assets/props/sofa/sofa_R.png" id="6_xa6g3"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="7_twcgi"]
[ext_resource type="Material" uid="uid://cqjr3cbxtfg2j" path="res://assets/materials/gunk.material" id="8_pr1sr"]
[ext_resource type="ArrayMesh" uid="uid://bc4otwcwsiu2m" path="res://assets/props/sofa/sofa_bottom_cushion.obj" id="9_p1o88"]
[ext_resource type="Script" uid="uid://040xta01xqxd" path="res://src/props/physics/holdable.gd" id="10_xa6g3"]
[ext_resource type="ArrayMesh" uid="uid://drr1wn0wmt5bi" path="res://assets/props/sofa/sofa_top_cushion.obj" id="11_yib26"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yib26"]
albedo_texture = ExtResource("3_twcgi")
metallic = 1.0
metallic_texture = ExtResource("4_pr1sr")
roughness_texture = ExtResource("6_xa6g3")
normal_enabled = true
normal_texture = ExtResource("5_p1o88")
texture_filter = 2
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_txvha"]
data = PackedVector3Array(-1.25, 0.05, 0.6, -1.09, -0.35, 0.6, -1.25, -0.5, 0.6, -1.09, 0.05, 0.6, -1.09, -0.35, 0.6, -1.25, 0.05, 0.6, -1.04, -0.5, 0.6, -1.25, -0.5, 0.6, -1.09, -0.35, 0.6, -1.09, -0.35, 0.6, 1.04, -0.5, 0.6, -1.04, -0.5, 0.6, 1.09, -0.35, 0.6, 1.04, -0.5, 0.6, -1.09, -0.35, 0.6, 1.04, -0.5, 0.6, 1.09, -0.35, 0.6, 1.25, -0.5, 0.6, 1.25, 0.05, 0.6, 1.25, -0.5, 0.6, 1.09, -0.35, 0.6, 1.09, 0.05, 0.6, 1.25, 0.05, 0.6, 1.09, -0.35, 0.6, -1.25, -0.5, -0.6, -1.04, -0.5, -0.6, -1.25, 0.05, -0.6, -1.25, 0.05, -0.6, -1.04, -0.5, -0.6, -1.04, 0.05, -0.6, -1.04, -0.5, -0.6, 1.04, -0.5, -0.6, -1.04, 0.05, -0.6, -1.04, 0.05, -0.6, 1.04, -0.5, -0.6, -1.04, 0.3, -0.6, -1.04, 0.3, -0.6, 1.04, -0.5, -0.6, 1.04, 0.3, -0.6, 1.04, 0.3, -0.6, 1.04, -0.5, -0.6, 1.04, 0.05, -0.6, 1.04, -0.5, -0.6, 1.25, -0.5, -0.6, 1.04, 0.05, -0.6, 1.04, 0.05, -0.6, 1.25, -0.5, -0.6, 1.25, 0.05, -0.6, 1.04, 0.3, -0.51, -1.04, 0.3, -0.51, 1.04, 0.3, -0.6, 1.04, 0.3, -0.6, -1.04, 0.3, -0.51, -1.04, 0.3, -0.6, -1.04, 0.05, -0.4225, -1.04, 0.05, -0.6, -1.04, 0.3, -0.51, -1.04, 0.3, -0.51, -1.04, 0.05, -0.6, -1.04, 0.3, -0.6, 1.04, 0.05, -0.4225, 1.04, 0.05, 0.55, 1.04, -0.3, -0.3, 1.04, -0.3, -0.3, 1.04, 0.05, 0.55, 1.04, -0.3, 0.55, 1.04, -0.3, 0.55, -1.04, -0.3, 0.55, 1.04, -0.3, -0.3, 1.04, -0.3, -0.3, -1.04, -0.3, 0.55, -1.04, -0.3, -0.3, -1.04, 0.05, 0.55, -1.04, 0.05, -0.4225, -1.04, -0.3, 0.55, -1.04, -0.3, 0.55, -1.04, 0.05, -0.4225, -1.04, -0.3, -0.3, 1.3, -0.5, -0.55, 1.3, -0.5, 0.55, 1.3, 0.05, -0.55, 1.3, 0.05, -0.55, 1.3, -0.5, 0.55, 1.3, 0.05, 0.55, -1.25, -0.5, -0.6, -1.3, -0.5, -0.55, -1.04, -0.5, -0.6, -1.25, -0.5, 0.6, -1.3, -0.5, -0.55, -1.3, -0.5, 0.55, -1.04, -0.5, 0.6, -1.3, -0.5, -0.55, -1.25, -0.5, 0.6, -1.04, -0.5, -0.6, -1.3, -0.5, -0.55, -1.04, -0.5, 0.6, 1.04, -0.5, 0.6, -1.04, -0.5, -0.6, -1.04, -0.5, 0.6, 1.04, -0.5, -0.6, -1.04, -0.5, -0.6, 1.04, -0.5, 0.6, 1.25, -0.5, 0.6, 1.04, -0.5, -0.6, 1.04, -0.5, 0.6, 1.3, -0.5, 0.55, 1.04, -0.5, -0.6, 1.25, -0.5, 0.6, 1.3, -0.5, -0.55, 1.04, -0.5, -0.6, 1.3, -0.5, 0.55, 1.25, -0.5, -0.6, 1.04, -0.5, -0.6, 1.3, -0.5, -0.55, -1.09, 0.1, -0.55, -1.09, 0.1, 0.55, -1.25, 0.1, -0.55, -1.25, 0.1, -0.55, -1.09, 0.1, 0.55, -1.25, 0.1, 0.55, 1.04, -0.3, -0.3, -1.04, -0.3, -0.3, 1.04, 0.05, -0.4225, 1.04, 0.05, -0.4225, -1.04, -0.3, -0.3, 1.04, 0.3, -0.51, 1.04, 0.3, -0.51, -1.04, -0.3, -0.3, -1.04, 0.3, -0.51, -1.04, 0.3, -0.51, -1.04, -0.3, -0.3, -1.04, 0.05, -0.4225, 1.25, 0.1, 0.55, 1.09, 0.1, 0.55, 1.25, 0.1, -0.55, 1.25, 0.1, -0.55, 1.09, 0.1, 0.55, 1.09, 0.1, -0.55, -1.3, -0.5, 0.55, -1.3, -0.5, -0.55, -1.3, 0.05, 0.55, -1.3, 0.05, 0.55, -1.3, -0.5, -0.55, -1.3, 0.05, -0.55, 1.09, 0.05, 0.6, 1.04, 0.05, 0.55, 1.09, 0.1, 0.55, -1.09, 0.1, 0.55, -1.04, 0.05, 0.55, -1.09, 0.05, 0.6, 1.25, 0.1, 0.55, 1.3, 0.05, 0.55, 1.25, 0.05, 0.6, -1.25, 0.1, -0.55, -1.3, 0.05, -0.55, -1.25, 0.05, -0.6, 1.25, 0.05, -0.6, 1.3, 0.05, -0.55, 1.25, 0.1, -0.55, -1.25, 0.05, 0.6, -1.3, 0.05, 0.55, -1.25, 0.1, 0.55, -1.04, -0.3, 0.55, 1.04, -0.3, 0.55, -1.09, -0.35, 0.6, -1.09, -0.35, 0.6, 1.04, -0.3, 0.55, 1.09, -0.35, 0.6, 1.04, 0.05, 0.55, 1.04, 0.05, -0.4225, 1.09, 0.1, 0.55, 1.09, 0.1, 0.55, 1.04, 0.05, -0.4225, 1.09, 0.1, -0.55, 1.09, 0.1, -0.55, 1.04, 0.05, -0.4225, 1.04, 0.05, -0.6, -1.04, 0.05, 0.55, -1.09, 0.1, 0.55, -1.04, 0.05, -0.4225, -1.04, 0.05, -0.4225, -1.09, 0.1, 0.55, -1.04, 0.05, -0.6, -1.04, 0.05, -0.6, -1.09, 0.1, 0.55, -1.09, 0.1, -0.55, 1.25, 0.1, 0.55, 1.25, 0.1, -0.55, 1.3, 0.05, 0.55, 1.3, 0.05, 0.55, 1.25, 0.1, -0.55, 1.3, 0.05, -0.55, -1.25, 0.1, -0.55, -1.25, 0.1, 0.55, -1.3, 0.05, -0.55, -1.3, 0.05, -0.55, -1.25, 0.1, 0.55, -1.3, 0.05, 0.55, 1.04, 0.05, -0.6, 1.25, 0.05, -0.6, 1.09, 0.1, -0.55, 1.09, 0.1, -0.55, 1.25, 0.05, -0.6, 1.25, 0.1, -0.55, 1.25, 0.05, 0.6, 1.09, 0.05, 0.6, 1.25, 0.1, 0.55, 1.25, 0.1, 0.55, 1.09, 0.05, 0.6, 1.09, 0.1, 0.55, -1.09, 0.1, -0.55, -1.25, 0.1, -0.55, -1.04, 0.05, -0.6, -1.04, 0.05, -0.6, -1.25, 0.1, -0.55, -1.25, 0.05, -0.6, -1.25, 0.1, 0.55, -1.09, 0.1, 0.55, -1.25, 0.05, 0.6, -1.25, 0.05, 0.6, -1.09, 0.1, 0.55, -1.09, 0.05, 0.6, 1.09, 0.05, 0.6, 1.09, -0.35, 0.6, 1.04, 0.05, 0.55, 1.04, 0.05, 0.55, 1.09, -0.35, 0.6, 1.04, -0.3, 0.55, 1.3, -0.5, -0.55, 1.3, 0.05, -0.55, 1.25, -0.5, -0.6, 1.25, -0.5, -0.6, 1.3, 0.05, -0.55, 1.25, 0.05, -0.6, 1.25, -0.5, 0.6, 1.25, 0.05, 0.6, 1.3, -0.5, 0.55, 1.3, -0.5, 0.55, 1.25, 0.05, 0.6, 1.3, 0.05, 0.55, -1.04, 0.05, 0.55, -1.04, -0.3, 0.55, -1.09, 0.05, 0.6, -1.09, 0.05, 0.6, -1.04, -0.3, 0.55, -1.09, -0.35, 0.6, -1.3, -0.5, 0.55, -1.3, 0.05, 0.55, -1.25, -0.5, 0.6, -1.25, -0.5, 0.6, -1.3, 0.05, 0.55, -1.25, 0.05, 0.6, -1.25, -0.5, -0.6, -1.25, 0.05, -0.6, -1.3, -0.5, -0.55, -1.3, -0.5, -0.55, -1.25, 0.05, -0.6, -1.3, 0.05, -0.55, 1.04, 0.05, -0.6, 1.04, 0.05, -0.4225, 1.04, 0.3, -0.6, 1.04, 0.3, -0.6, 1.04, 0.05, -0.4225, 1.04, 0.3, -0.51)
[sub_resource type="BoxShape3D" id="BoxShape3D_twcgi"]
size = Vector3(0.26, 0.6, 1.2)
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_pr1sr"]
points = PackedVector3Array(-1.04, -0.5, -0.6, -1.04, -0.30002, -0.3, 1.04, -0.5, -0.6, -1.04, -0.5, 0.6, -1.04, -0.30002, 0.549961, 1.04, -0.30002, -0.3, 1.04, -0.5, 0.6, -1.04, -0.35, 0.6, 1.04, -0.30002, 0.549961, 1.04, -0.35, 0.6)
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_p1o88"]
points = PackedVector3Array(1.04, 0.3, -0.510024, 1.04, 0.3, -0.6, -1.04, 0.3, -0.510024, 1.04, -0.300078, -0.3, 1.04, -0.5, -0.6, -1.04, 0.3, -0.6, -1.04, -0.300078, -0.3, -1.04, -0.5, -0.6)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xa6g3"]
albedo_texture = ExtResource("3_twcgi")
metallic = 1.0
metallic_texture = ExtResource("4_pr1sr")
roughness_texture = ExtResource("6_xa6g3")
normal_enabled = true
normal_texture = ExtResource("5_p1o88")
texture_filter = 2
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_yib26"]
points = PackedVector3Array(0.345722, 0.0288206, -0.401557, 0.300713, 0.0738257, -0.402183, 0.288666, 0.0738257, 0.407649, 0.333607, 0.0288206, 0.408364, 0.345722, -0.0311811, -0.401557, 0.301322, 0.0288206, -0.447263, 0.108292, 0.0796687, -0.405134, 0.0957707, 0.0796687, 0.412747, 0.287989, 0.0288206, 0.452639, 0.333607, -0.0311811, 0.408364, 0.288666, -0.076171, 0.407649, 0.300713, -0.076171, -0.402183, 0.301322, -0.0311811, -0.447263, 0.108969, 0.0329245, -0.450125, -0.0958384, 0.0796687, -0.408086, -0.10836, 0.0796687, 0.409885, 0.0950938, 0.0329245, 0.457827, 0.287989, -0.0311811, 0.452639, 0.0957707, -0.076171, 0.412747, 0.108292, -0.076171, -0.405134, -0.288057, -0.0311811, -0.455939, 0.108969, -0.0294267, -0.450125, -0.288057, 0.0288206, -0.455939, -0.0951615, 0.0329245, -0.453077, -0.288733, 0.0738257, -0.410948, -0.300781, 0.0738257, 0.398883, -0.301458, 0.0288206, 0.443874, -0.109036, 0.0329245, 0.454875, 0.0950938, -0.0294267, 0.457827, -0.10836, -0.076171, 0.409885, -0.288733, -0.076171, -0.410948, -0.333675, -0.0311811, -0.411664, -0.333675, 0.0288206, -0.411664, -0.345722, 0.0288206, 0.398257, -0.301458, -0.0311811, 0.443874, -0.109036, -0.0294267, 0.454875, -0.300781, -0.076171, 0.398883, -0.345722, -0.0311811, 0.398257)
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_s5bq7"]
points = PackedVector3Array(0.0982352, 0.277807, -0.0967521, 0.0982352, 0.220456, -0.125988, -0.0983018, 0.277807, -0.0967521, 0.0982352, 0.250158, -0.0360101, 0.294706, 0.270895, -0.0985379, 0.294706, 0.213544, -0.126141, -0.0983018, 0.220456, -0.125988, -0.0983018, 0.250158, -0.0360101, -0.294772, 0.270895, -0.0985379, 0.0982352, -0.216585, 0.134455, 0.294706, 0.243299, -0.0412143, 0.339733, 0.228449, -0.0836904, 0.294706, -0.246287, 0.0348089, -0.294772, 0.213544, -0.126141, -0.294772, 0.243299, -0.0412143, -0.0983018, -0.216585, 0.134455, -0.339733, 0.228449, -0.0836904, 0.0982352, -0.273882, 0.10522, 0.294706, -0.273882, 0.0921325, 0.294706, -0.216585, 0.119736, 0.339733, -0.231436, 0.077285, -0.294772, -0.246287, 0.0348089, -0.339733, -0.231436, 0.077285, -0.294772, -0.216585, 0.119736, -0.0983018, -0.273882, 0.10522, -0.294772, -0.273882, 0.0921325)
[node name="PhysSofa" type="Node3D"]
[node name="SofaFrame" type="RigidBody3D" parent="."]
collision_layer = 98
collision_mask = 73
mass = 500.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="SofaFrame"]
mesh = ExtResource("2_txvha")
surface_material_override/0 = SubResource("StandardMaterial3D_yib26")
[node name="StaticBody3D" type="StaticBody3D" parent="SofaFrame/MeshInstance3D"]
collision_layer = 4
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="SofaFrame/MeshInstance3D/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_txvha")
[node name="Gunkable" parent="SofaFrame/MeshInstance3D/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("7_twcgi")]
mask_dim = 196
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("8_pr1sr")
[node name="ArmLCollision" type="CollisionShape3D" parent="SofaFrame"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.17, -0.2, 0)
shape = SubResource("BoxShape3D_twcgi")
[node name="ArmRCollision" type="CollisionShape3D" parent="SofaFrame"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17, -0.2, 0)
shape = SubResource("BoxShape3D_twcgi")
[node name="BaseCollision" type="CollisionShape3D" parent="SofaFrame"]
shape = SubResource("ConvexPolygonShape3D_pr1sr")
[node name="BackCollision" type="CollisionShape3D" parent="SofaFrame"]
shape = SubResource("ConvexPolygonShape3D_p1o88")
[node name="BottomCushion" type="RigidBody3D" parent="."]
transform = Transform3D(0.999999, 0, -0.00153589, 0, 1, 0, 0.00153589, 0, 0.999999, 0, -0.224, 0.153)
collision_layer = 70
collision_mask = 73
mass = 30.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="BottomCushion"]
mesh = ExtResource("9_p1o88")
surface_material_override/0 = SubResource("StandardMaterial3D_xa6g3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="BottomCushion"]
shape = SubResource("ConvexPolygonShape3D_yib26")
[node name="Gunkable" parent="BottomCushion" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("7_twcgi")]
mask_dim = 196
body = NodePath("..")
mesh_instance = NodePath("../MeshInstance3D")
source_gunk_material = ExtResource("8_pr1sr")
[node name="Holdable" type="Node" parent="BottomCushion"]
script = ExtResource("10_xa6g3")
hold_distance = 1.2
metadata/_custom_type_script = "uid://040xta01xqxd"
[node name="BottomCushion3" type="RigidBody3D" parent="."]
transform = Transform3D(0.999822, 0.00228604, -0.0187437, -0.00228638, 0.999997, 3.51163e-06, 0.0187437, 3.93442e-05, 0.999824, 0.688976, -0.224, 0.17095)
collision_layer = 70
collision_mask = 73
mass = 30.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="BottomCushion3"]
mesh = ExtResource("9_p1o88")
surface_material_override/0 = SubResource("StandardMaterial3D_xa6g3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="BottomCushion3"]
shape = SubResource("ConvexPolygonShape3D_yib26")
[node name="Gunkable" parent="BottomCushion3" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("7_twcgi")]
mask_dim = 196
body = NodePath("..")
mesh_instance = NodePath("../MeshInstance3D")
source_gunk_material = ExtResource("8_pr1sr")
[node name="Holdable" type="Node" parent="BottomCushion3"]
script = ExtResource("10_xa6g3")
hold_distance = 1.2
metadata/_custom_type_script = "uid://040xta01xqxd"
[node name="BottomCushion2" type="RigidBody3D" parent="."]
transform = Transform3D(0.999913, 0, 0.0131594, 0, 1, 0, -0.0131594, 0, 0.999913, -0.690142, -0.223657, 0.154269)
collision_layer = 70
collision_mask = 73
mass = 30.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="BottomCushion2"]
mesh = ExtResource("9_p1o88")
surface_material_override/0 = SubResource("StandardMaterial3D_xa6g3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="BottomCushion2"]
shape = SubResource("ConvexPolygonShape3D_yib26")
[node name="Gunkable" parent="BottomCushion2" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("7_twcgi")]
mask_dim = 196
body = NodePath("..")
mesh_instance = NodePath("../MeshInstance3D")
source_gunk_material = ExtResource("8_pr1sr")
[node name="Holdable" type="Node" parent="BottomCushion2"]
script = ExtResource("10_xa6g3")
hold_distance = 1.2
metadata/_custom_type_script = "uid://040xta01xqxd"
[node name="TopCushion" type="RigidBody3D" parent="."]
transform = Transform3D(0.999895, 0.0133165, 0.00570669, -0.0133163, 0.999911, -7.59997e-05, -0.0057072, -7.27493e-12, 0.999984, -0.689198, 0.077623, -0.380305)
collision_layer = 70
collision_mask = 73
mass = 30.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="TopCushion"]
mesh = ExtResource("11_yib26")
surface_material_override/0 = SubResource("StandardMaterial3D_xa6g3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="TopCushion"]
shape = SubResource("ConvexPolygonShape3D_s5bq7")
[node name="Gunkable" parent="TopCushion" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("7_twcgi")]
mask_dim = 196
body = NodePath("..")
mesh_instance = NodePath("../MeshInstance3D")
source_gunk_material = ExtResource("8_pr1sr")
[node name="Holdable" type="Node" parent="TopCushion"]
script = ExtResource("10_xa6g3")
hold_distance = 1.2
metadata/_custom_type_script = "uid://040xta01xqxd"
[node name="TopCushion2" type="RigidBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000443935, 0.0780895, -0.380305)
collision_layer = 70
collision_mask = 73
mass = 30.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="TopCushion2"]
mesh = ExtResource("11_yib26")
surface_material_override/0 = SubResource("StandardMaterial3D_xa6g3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="TopCushion2"]
shape = SubResource("ConvexPolygonShape3D_s5bq7")
[node name="Gunkable" parent="TopCushion2" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("7_twcgi")]
mask_dim = 196
body = NodePath("..")
mesh_instance = NodePath("../MeshInstance3D")
source_gunk_material = ExtResource("8_pr1sr")
[node name="Holdable" type="Node" parent="TopCushion2"]
script = ExtResource("10_xa6g3")
hold_distance = 1.2
metadata/_custom_type_script = "uid://040xta01xqxd"
[node name="TopCushion3" type="RigidBody3D" parent="."]
transform = Transform3D(0.999759, -0.00898652, -0.0200525, 0.00898832, 0.99996, 0, 0.0200517, -0.000180238, 0.999799, 0.691321, 0.0831664, -0.380305)
collision_layer = 70
collision_mask = 73
mass = 30.0
sleeping = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="TopCushion3"]
mesh = ExtResource("11_yib26")
surface_material_override/0 = SubResource("StandardMaterial3D_xa6g3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="TopCushion3"]
shape = SubResource("ConvexPolygonShape3D_s5bq7")
[node name="Gunkable" parent="TopCushion3" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("7_twcgi")]
mask_dim = 196
body = NodePath("..")
mesh_instance = NodePath("../MeshInstance3D")
source_gunk_material = ExtResource("8_pr1sr")
[node name="Holdable" type="Node" parent="TopCushion3"]
script = ExtResource("10_xa6g3")
hold_distance = 1.2
metadata/_custom_type_script = "uid://040xta01xqxd"

File diff suppressed because one or more lines are too long

View File

@ -10,8 +10,8 @@
[ext_resource type="Material" uid="uid://c1vy4bkwb1g5m" path="res://assets/materials/gunk_lowrez.material" id="7_7amwm"]
[ext_resource type="Script" uid="uid://040xta01xqxd" path="res://src/props/physics/holdable.gd" id="9_kxk5h"]
[sub_resource type="BoxShape3D" id="BoxShape3D_kxk5h"]
size = Vector3(0.305, 1, 0.739)
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_kxk5h"]
points = PackedVector3Array(-0.4, -0.5, -7.83205e-05, -0.28285, -0.5, -0.28285, -0.28285, -0.5, 0.282772, -0.4, 0.399961, -7.83205e-05, -7.83205e-05, -0.5, -0.4, -0.28285, 0.399961, -0.28285, -7.83205e-05, -0.5, 0.4, -0.28285, 0.399961, 0.282772, -0.350196, 0.5, -7.83205e-05, 0.282772, -0.5, -0.28285, -7.83205e-05, 0.399961, -0.4, -0.247612, 0.5, -0.247612, -7.83205e-05, 0.5, -0.350196, 0.282772, -0.5, 0.282772, -7.83205e-05, 0.399961, 0.4, -0.247612, 0.5, 0.247533, 0.4, -0.5, -7.83205e-05, 0.282772, 0.399961, -0.28285, 0.247533, 0.5, -0.247612, 0.282772, 0.399961, 0.282772, 0.247533, 0.5, 0.247533, -7.83205e-05, 0.5, 0.350039, 0.4, 0.399961, -7.83205e-05, 0.350039, 0.5, -7.83205e-05)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2hi74"]
albedo_texture = ExtResource("2_g7pab")
@ -32,20 +32,7 @@ mass = 40.0
script = ExtResource("1_g7pab")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(0.92388, 0, 0.382683, 0, 1, 0, -0.382683, 0, 0.92388, 0, 0, 0)
shape = SubResource("BoxShape3D_kxk5h")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
transform = Transform3D(0.382683, 0, 0.92388, 0, 1, 0, -0.92388, 0, 0.382683, 0, 0, 0)
shape = SubResource("BoxShape3D_kxk5h")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="."]
transform = Transform3D(-0.382683, 0, 0.92388, 0, 1, 0, -0.92388, 0, -0.382683, 0, 0, 0)
shape = SubResource("BoxShape3D_kxk5h")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="."]
transform = Transform3D(-0.923879, 0, 0.382683, 0, 1, 0, -0.382683, 0, -0.923879, 0, 0, 0)
shape = SubResource("BoxShape3D_kxk5h")
shape = SubResource("ConvexPolygonShape3D_kxk5h")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = ExtResource("1_2hi74")

View File

@ -184,7 +184,7 @@ _data = {
}
[sub_resource type="BoxShape3D" id="BoxShape3D_6maql"]
size = Vector3(0.3, 0.4, 0.1)
size = Vector3(0.48, 0.64, 0.2)
[sub_resource type="SphereShape3D" id="SphereShape3D_mxsyy"]
radius = 3.0
@ -240,16 +240,19 @@ libraries = {
}
autoplay = "error_blink"
[node name="Interactive" type="StaticBody3D" parent="." index="4"]
unique_name_in_owner = true
[node name="InteractiveBody" type="StaticBody3D" parent="." index="4"]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractiveBody" index="0"]
shape = SubResource("BoxShape3D_6maql")
[node name="Interactive" type="Node" parent="InteractiveBody" index="1"]
unique_name_in_owner = true
script = ExtResource("10_qw6jt")
label = "INTERACTIVE_SWITCH_LABEL"
verb = "INTERACTIVE_SWITCH_VERB"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactive" index="0"]
shape = SubResource("BoxShape3D_6maql")
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="ActionSFX" type="AudioStreamPlayer3D" parent="." index="5"]
unique_name_in_owner = true
@ -273,6 +276,6 @@ metadata/_custom_type_script = "uid://c5o1d2shq2qig"
shape = SubResource("SphereShape3D_mxsyy")
[connection signal="clear_total_updated" from="StaticBody3D/Gunkable" to="." method="_on_clear_total_updated"]
[connection signal="activated" from="Interactive" to="." method="_activate"]
[connection signal="activated" from="InteractiveBody/Interactive" to="." method="_activate"]
[connection signal="timeout" from="ActionDelay" to="." method="_on_action_delay_timeout"]
[connection signal="timeout" from="ActionDelay" to="WallSwitchGameSoundEmitter" method="emit_sound_here"]

View File

@ -23,18 +23,21 @@ var _base_rumble := 0.0
func _ready() -> void:
World.instance.manager.grunk_collected.connect(on_grunk_collected)
World.instance.manager.grunk_emptied.connect(on_grunk_emptied)
if World.instance:
World.instance.manager.grunk_collected.connect(on_grunk_collected)
World.instance.manager.grunk_emptied.connect(on_grunk_emptied)
func get_target_rotation() -> float:
return remap(
World.instance.manager.grunk_tank,
0,
World.instance.manager.grunk_tank_limit,
NEEDLE_ANGLE_MIN,
NEEDLE_ANGLE_MAX
)
if World.instance:
return remap(
World.instance.manager.grunk_tank,
0,
World.instance.manager.grunk_tank_limit,
NEEDLE_ANGLE_MIN,
NEEDLE_ANGLE_MAX
)
return 0
func on_grunk_collected(_delta: float) -> void:

49
src/ui/hud/hold_hud.gd Normal file
View File

@ -0,0 +1,49 @@
class_name HoldHUD extends Control
enum State {
NONE,
SELECTED,
HELD,
}
var state := State.NONE
@onready var open_hand: Label = %OpenHand
@onready var closed_hand: Label = %ClosedHand
func _ready() -> void:
_deferred_init.call_deferred()
func _deferred_init() -> void:
Player.instance.hold_component.dropped.connect(reset)
Player.instance.hold_component.held.connect(prop_held)
func prop_selected() -> void:
state = State.SELECTED
open_hand.visible = true
closed_hand.visible = false
func prop_held() -> void:
state = State.HELD
open_hand.visible = false
closed_hand.visible = true
func reset() -> void:
state = State.NONE
open_hand.visible = false
closed_hand.visible = false
func select_prop() -> void:
if state == State.NONE:
prop_selected()
func deselect() -> void:
if state == State.SELECTED:
reset()

View File

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

View File

@ -11,6 +11,10 @@ const COLOR_INVISIBLE := Color("#ffffff00")
@onready var interact_verb: Label = %InteractVerb
func _ready() -> void:
_to_invisible()
func _transition_color(color: Color) -> void:
create_tween().tween_property(self, "modulate", color, TRANSITION_TIME).set_trans(
Tween.TRANS_CUBIC
@ -29,7 +33,7 @@ func _to_invisible() -> void:
_transition_color(COLOR_INVISIBLE)
func set_prop(prop: Interactive) -> void:
func set_interactive(prop: Interactive) -> void:
if prop:
interact_name.text = prop.label
interact_verb.text = prop.verb

View File

@ -1,6 +1,7 @@
class_name PlayerHUD extends Control
@onready var interact_hud: InteractHUD = %InteractHUD
@onready var hold_hud: HoldHUD = %HoldHUD
@onready var grunk_alert_player: AnimationPlayer = %GrunkAlertPlayer
@onready var tank_alert_player: AnimationPlayer = %TankAlertPlayer
@ -8,12 +9,9 @@ class_name PlayerHUD extends Control
func _ready() -> void:
World.instance.manager.alert_raised.connect(_on_raise_alert)
World.instance.manager.alert_cleared.connect(_on_clear_alert)
func select_interactive(prop: Interactive) -> void:
interact_hud.set_prop(prop)
if World.instance:
World.instance.manager.alert_raised.connect(_on_raise_alert)
World.instance.manager.alert_cleared.connect(_on_clear_alert)
func _on_raise_alert(_new_value: int) -> void:

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=3 uid="uid://dq1x21tq06dud"]
[gd_scene load_steps=18 format=3 uid="uid://dq1x21tq06dud"]
[ext_resource type="Theme" uid="uid://b07fevr214mmr" path="res://src/ui/hud/hud_theme.tres" id="1_lirk3"]
[ext_resource type="Script" uid="uid://lrsv0185bfu" path="res://src/ui/hud/player_hud.gd" id="2_j6lpx"]
@ -6,6 +6,7 @@
[ext_resource type="FontFile" uid="uid://qadtckvw0t3l" path="res://assets/fonts/fontawesome-free-6.7.2-desktop/otfs/Font Awesome 6 Free-Solid-900.otf" id="4_2q5it"]
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="4_iwjh7"]
[ext_resource type="Script" uid="uid://cjs2fen6jo0g0" path="res://src/ui/rumbler.gd" id="4_ud8na"]
[ext_resource type="Script" uid="uid://ctvu31jkk1un2" path="res://src/ui/hud/hold_hud.gd" id="5_65kmv"]
[ext_resource type="FontFile" uid="uid://oq8ue2qrfijg" path="res://assets/fonts/Silkscreen/Silkscreen-Regular.ttf" id="7_iwjh7"]
[sub_resource type="Animation" id="Animation_iwjh7"]
@ -289,6 +290,60 @@ unique_name_in_owner = true
layout_mode = 2
text = "use"
[node name="HoldHUD" type="Control" parent="."]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 80)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("5_65kmv")
[node name="OpenHand" type="Label" parent="HoldHUD"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -16.0
offset_top = -16.0
offset_right = 16.0
offset_bottom = 16.0
grow_horizontal = 2
grow_vertical = 2
theme_override_fonts/font = ExtResource("4_2q5it")
text = ""
[node name="ClosedHand" type="Label" parent="HoldHUD"]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -13.75
offset_top = -10.012
offset_right = 26.25
offset_bottom = 31.3213
grow_horizontal = 2
grow_vertical = 2
theme_override_fonts/font = ExtResource("4_2q5it")
theme_override_font_sizes/font_size = 33
text = ""
[node name="AlertHUD" type="Control" parent="."]
custom_minimum_size = Vector2(800, 600)
layout_mode = 1
@ -372,10 +427,10 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -21.2937
offset_top = -19.1727
offset_right = -21.2937
offset_bottom = -19.1727
offset_left = -17.6994
offset_top = -20.4734
offset_right = -17.6994
offset_bottom = -20.4734
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("4_ud8na")

View File

@ -105,3 +105,9 @@ func _update_track_list() -> void:
track_list.append(track.track)
World.instance.manager.mp3_collection = track_list
func unlock_doors() -> void:
for node: Node in get_tree().get_nodes_in_group("Bulkheads"):
if node.has_method("open"):
node.call("open")

View File

@ -90,6 +90,10 @@ layout_mode = 2
text = "God mode"
alignment = 2
[node name="UnlockDoors" type="Button" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "Open all doors"
[node name="KillPlayer" type="Button" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "Kill player"
@ -327,6 +331,7 @@ preserve_on_drag = true
[connection signal="pressed" from="MarginContainer/VBoxContainer/Header/CloseButton" to="." method="queue_free"]
[connection signal="toggled" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/GodMode" to="." method="set_god_mode"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/UnlockDoors" to="." method="unlock_doors"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/KillPlayer" to="." method="kill_player"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/SaveButton" to="." method="save_game"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer/LoadButton" to="." method="load_game"]

View File

@ -61,6 +61,8 @@ func _ready() -> void:
# Set material gunk mask to our mask viewport texture
mat_instance.set_shader_parameter("gunk_mask", mask_viewport.get_texture())
# Overlay mesh with gunk material
if mesh_instance.material_overlay:
mat_instance.next_pass = mesh_instance.material_overlay
mesh_instance.material_overlay = mat_instance
_deferred_init.call_deferred()
@ -258,7 +260,7 @@ func _process(_delta: float) -> void:
clear_total_updated.emit(new_total)
# Do not fire signal on first compute after initialization
# This prevents the player from collecting the grunk from the initial mask.
if _prev_clear_total >= 0:
if _prev_clear_total >= 0 and World.instance:
# XXX due to fp error, this will drift from the "true count" over time
# but it probably won't matter :shrug:
World.instance.manager.collect_grunk(delta)

View File

@ -9,17 +9,19 @@ radius = 0.25
[node name="WorldItem" type="MeshInstance3D" groups=["Persistent"]]
script = ExtResource("1_sptcj")
[node name="Interactive" type="StaticBody3D" parent="."]
unique_name_in_owner = true
[node name="InteractiveBody" type="StaticBody3D" parent="."]
collision_layer = 2
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractiveBody"]
unique_name_in_owner = true
shape = SubResource("SphereShape3D_0mein")
[node name="Interactive" type="Node" parent="InteractiveBody"]
unique_name_in_owner = true
script = ExtResource("2_ngll7")
enabled = true
verb = "INTERACTIVE_WORLDITEM_VERB"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactive"]
unique_name_in_owner = true
shape = SubResource("SphereShape3D_0mein")
[connection signal="activated" from="Interactive" to="." method="_on_interactive_activated"]
[connection signal="activated" from="InteractiveBody/Interactive" to="." method="_on_interactive_activated"]

View File

@ -167,8 +167,8 @@
- [ ] wraparound desk
- [ ] etc
- [ ] Make sofa cushions separate physics objects
- [ ] Object hold UX
- [ ] holdable object HUD icon
- [x] Object hold UX
- [x] holdable object HUD icon
- [ ] highlight holdable objects?
- [ ] hide tool UI when holding
- [x] hide tool UI when holding
- [ ] Keep bonus tracks, taco fiesta, maybe stickers in upgrade track. Everything else comes from the [[company store]], as well as upgrades.