Compare commits

...

17 Commits
v0.0.6 ... main

Author SHA1 Message Date
9298bd427e Fixed incorrect game settings translation key
All checks were successful
linting & formatting / build (push) Successful in 34s
2025-09-08 22:05:16 -06:00
fa4900c1f1 Beast tweaks & debugging
All checks were successful
linting & formatting / build (push) Successful in 31s
itch.io publish action / build (linux64, x86_64) (push) Successful in 2m13s
itch.io publish action / build (osx, app) (push) Successful in 2m21s
itch.io publish action / build (win64, exe) (push) Successful in 2m29s
2025-09-08 22:00:54 -06:00
f60a00dd5e Fixed linting error
All checks were successful
linting & formatting / build (push) Successful in 34s
2025-09-08 20:36:27 -06:00
13f9ab1407 Disabled beast spawns on upper floors of crew hab
Some checks failed
linting & formatting / build (push) Failing after 29s
itch.io publish action / build (linux64, x86_64) (push) Successful in 2m18s
itch.io publish action / build (osx, app) (push) Successful in 2m22s
itch.io publish action / build (win64, exe) (push) Successful in 2m29s
2025-09-08 20:34:56 -06:00
e36771c96d Fixed weird nodule in mess hall 2025-09-08 20:25:49 -06:00
07a6da7d32 The shambler spawn rift is temporarily exempt from global illumination.
Would be really nice to have this in the future when we switch to
VoxelGI. The extreme emission can produce very incorrect results with
SDFGI.
2025-09-08 20:23:11 -06:00
f9c62e02aa Null check in laser-cast ID association
Some checks failed
linting & formatting / build (push) Failing after 32s
2025-09-08 19:59:59 -06:00
22de43fa6f More player ship materials 2025-09-08 19:53:24 -06:00
1dc441ed7b Toothbrush is very slightly more powerful
Some checks failed
linting & formatting / build (push) Failing after 31s
2025-09-08 18:03:17 -06:00
92a516577b Player HUD clear alert should only play when the alert level was in the danger zone 2025-09-08 17:59:46 -06:00
34dab35917 Raised gunk mask resolution for overhead signs
Some checks failed
linting & formatting / build (push) Failing after 39s
2025-09-08 17:39:36 -06:00
b90bd93f61 Gunk mask filtering & related shader uniform settings 2025-09-08 17:15:51 -06:00
c38502d351 Gunkable props blend the underlying normal map where possible 2025-09-08 16:28:31 -06:00
f3f8f874f0 Player ship materials 2025-09-07 15:56:40 -06:00
df8cf07708 Fixed linting errors 2025-09-07 14:41:47 -06:00
2ca0b05105 Changed Listener to GunkListener to match naming scheme for other mechanics nodes 2025-09-07 13:41:44 -06:00
24d34235ee Prevent tool from auto-firing after object is thrown 2025-09-07 13:31:23 -06:00
95 changed files with 1700 additions and 419 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/black.png (Stored with Git LFS)

Binary file not shown.

View File

@ -1,36 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cm1jrvx7ftx4c"
path.s3tc="res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.s3tc.ctex"
path.etc2="res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/black.png"
dest_files=["res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.s3tc.ctex", "res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.etc2.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/level/player_ship/player_ship_tank_C.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dupdt58lfmd85"
path="res://.godot/imported/player_ship_tank_C.png-2e28f4e40d6659b147f8774c8f00a92c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/level/player_ship/player_ship_tank_C.png"
dest_files=["res://.godot/imported/player_ship_tank_C.png-2e28f4e40d6659b147f8774c8f00a92c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/level/player_ship/player_ship_tank_M.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dmcdypipuh3gc"
path="res://.godot/imported/player_ship_tank_M.png-038b169c5185b0df793fe61b4a39d2a5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/level/player_ship/player_ship_tank_M.png"
dest_files=["res://.godot/imported/player_ship_tank_M.png-038b169c5185b0df793fe61b4a39d2a5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/level/player_ship/player_ship_tank_N.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bux766vwb1rrc"
path="res://.godot/imported/player_ship_tank_N.png-e252c9c00a914aed6a656535d06377a5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/level/player_ship/player_ship_tank_N.png"
dest_files=["res://.godot/imported/player_ship_tank_N.png-e252c9c00a914aed6a656535d06377a5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://assets/level/player_ship/player_ship_tank_N.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/level/player_ship/player_ship_tank_R.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3swdihtwt7n0"
path="res://.godot/imported/player_ship_tank_R.png-dcde35e7c6dcee74b85671e215b7b04c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/level/player_ship/player_ship_tank_R.png"
dest_files=["res://.godot/imported/player_ship_tank_R.png-dcde35e7c6dcee74b85671e215b7b04c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/metal_plate_02/metal_plate_02_ao.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bqbn7jqwg8xog"
path="res://.godot/imported/metal_plate_02_ao.png-bf552b9ec5614af376549ade2c6fa3fa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/metal_plate_02/metal_plate_02_ao.png"
dest_files=["res://.godot/imported/metal_plate_02_ao.png-bf552b9ec5614af376549ade2c6fa3fa.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=8
roughness/src_normal="res://assets/materials/metal_plate_02/metal_plate_02_normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/metal_plate_02/metal_plate_02_arm.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4alj64mpkmbn"
path="res://.godot/imported/metal_plate_02_arm.png-9ab5b2c741188045e0d3c27804585cba.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/metal_plate_02/metal_plate_02_arm.png"
dest_files=["res://.godot/imported/metal_plate_02_arm.png-9ab5b2c741188045e0d3c27804585cba.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/metal_plate_02/metal_plate_02_diff.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bnub5w8l7oqi4"
path="res://.godot/imported/metal_plate_02_diff.png-e6e1d781abc4ece5066e87bb0b75d2dc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/metal_plate_02/metal_plate_02_diff.png"
dest_files=["res://.godot/imported/metal_plate_02_diff.png-e6e1d781abc4ece5066e87bb0b75d2dc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://assets/materials/metal_plate_02/metal_plate_02_diff.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/metal_plate_02/metal_plate_02_disp.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c5glfbn5pljec"
path="res://.godot/imported/metal_plate_02_disp.png-64a7284ed65ad6be4016bea99e56e48f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/metal_plate_02/metal_plate_02_disp.png"
dest_files=["res://.godot/imported/metal_plate_02_disp.png-64a7284ed65ad6be4016bea99e56e48f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/metal_plate_02/metal_plate_02_metal.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bs42aw8m1ljl0"
path="res://.godot/imported/metal_plate_02_metal.png-8460c10472df28043b4eae487824ebd7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/metal_plate_02/metal_plate_02_metal.png"
dest_files=["res://.godot/imported/metal_plate_02_metal.png-8460c10472df28043b4eae487824ebd7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/metal_plate_02/metal_plate_02_normal.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmg4jvcy6wfgg"
path="res://.godot/imported/metal_plate_02_normal.png-61f4a5d4256e92c5a0cd23e1ade29e2f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/metal_plate_02/metal_plate_02_normal.png"
dest_files=["res://.godot/imported/metal_plate_02_normal.png-61f4a5d4256e92c5a0cd23e1ade29e2f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://assets/materials/metal_plate_02/metal_plate_02_normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/metal_plate_02/metal_plate_02_rough.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3pbh06yskfoe"
path="res://.godot/imported/metal_plate_02_rough.png-f469e5e75e571426bacf0f8b34677644.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/metal_plate_02/metal_plate_02_rough.png"
dest_files=["res://.godot/imported/metal_plate_02_rough.png-f469e5e75e571426bacf0f8b34677644.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/rubber/rubber_diff.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvoptcnbonqlo"
path="res://.godot/imported/rubber_diff.png-469fd7609d1247b88bcd26e134dc9309.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/rubber/rubber_diff.png"
dest_files=["res://.godot/imported/rubber_diff.png-469fd7609d1247b88bcd26e134dc9309.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/rubber/rubber_gasket_C.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://btq7agwq1vdqk"
path="res://.godot/imported/rubber_gasket_C.png-f41f0d91b6d4589d1b2b860b032a91a6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/rubber/rubber_gasket_C.png"
dest_files=["res://.godot/imported/rubber_gasket_C.png-f41f0d91b6d4589d1b2b860b032a91a6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/rubber/rubber_gasket_N.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d0oxo3u6ts6k5"
path="res://.godot/imported/rubber_gasket_N.png-df9be035eb688efd2f5cd3ede8b86ab4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/rubber/rubber_gasket_N.png"
dest_files=["res://.godot/imported/rubber_gasket_N.png-df9be035eb688efd2f5cd3ede8b86ab4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://assets/materials/rubber/rubber_gasket_N.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/rubber/rubber_gasket_R.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ktr5niaf6psx"
path="res://.godot/imported/rubber_gasket_R.png-95bd053e083c213a09a8e6fc6195ac52.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/rubber/rubber_gasket_R.png"
dest_files=["res://.godot/imported/rubber_gasket_R.png-95bd053e083c213a09a8e6fc6195ac52.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/rubber/rubber_normal.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bqsg8wo432heo"
path="res://.godot/imported/rubber_normal.png-f2bba016f2b97da408f58c02df181bac.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/rubber/rubber_normal.png"
dest_files=["res://.godot/imported/rubber_normal.png-f2bba016f2b97da408f58c02df181bac.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://assets/materials/rubber/rubber_normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
assets/materials/rubber/rubber_rough.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkmym84u7hdq0"
path="res://.godot/imported/rubber_rough.png-d808e9bf5f003c56bfa12f7990dfd856.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/materials/rubber/rubber_rough.png"
dest_files=["res://.godot/imported/rubber_rough.png-d808e9bf5f003c56bfa12f7990dfd856.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@ -3,25 +3,27 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b0vorb12h2idg"
path="res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.ctex"
path.s3tc="res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.s3tc.ctex"
path.etc2="res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.etc2.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/props/overhead_light/overhead_light_burnout_E.png"
dest_files=["res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.ctex"]
dest_files=["res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.s3tc.ctex", "res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.etc2.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@ -31,4 +33,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=71 format=3 uid="uid://cwhmn3w8hoads"]
[gd_scene load_steps=70 format=3 uid="uid://cwhmn3w8hoads"]
[ext_resource type="ArrayMesh" uid="uid://dpr5cgq743f4s" path="res://assets/level/floor/floor_9x9.mesh" id="1_isxnv"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="2_si4vj"]
@ -81,11 +81,8 @@ texture_filter = 4
material = SubResource("StandardMaterial3D_kp5n7")
size = Vector2(3.5, 3)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_gim1e"]
data = PackedVector3Array(1.75, -1.5, 0, -1.75, -1.5, 0, 1.75, 1.5, 0, -1.75, -1.5, 0, -1.75, 1.5, 0, 1.75, 1.5, 0)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_6giaa"]
data = PackedVector3Array(1.75, -1.5, 0, -1.75, -1.5, 0, 1.75, 1.5, 0, -1.75, -1.5, 0, -1.75, 1.5, 0, 1.75, 1.5, 0)
[sub_resource type="BoxShape3D" id="BoxShape3D_wnav5"]
size = Vector3(3.5, 3, 0.1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f0xh4"]
resource_local_to_scene = true
@ -103,8 +100,8 @@ texture_filter = 4
material = SubResource("StandardMaterial3D_f0xh4")
size = Vector2(2, 0.5)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_smvh1"]
data = PackedVector3Array(1, -0.25, 0, -1, -0.25, 0, 1, 0.25, 0, -1, -0.25, 0, -1, 0.25, 0, 1, 0.25, 0)
[sub_resource type="BoxShape3D" id="BoxShape3D_cxsgl"]
size = Vector3(2, 0.5, 0.1)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p11ap"]
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)
@ -263,24 +260,24 @@ transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.75,
mesh = SubResource("QuadMesh_kcek3")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Bounds/SimpleWalls"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.75, 0, 4.5)
shape = SubResource("ConcavePolygonShape3D_gim1e")
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.75, 0, 4.55)
shape = SubResource("BoxShape3D_wnav5")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="Bounds/SimpleWalls"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.75, 0, 4.55)
shape = SubResource("BoxShape3D_wnav5")
[node name="MeshInstance3D4" type="MeshInstance3D" parent="Bounds/SimpleWalls"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.75, 0, 4.5)
mesh = SubResource("QuadMesh_kcek3")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="Bounds/SimpleWalls"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.75, 0, 4.5)
shape = SubResource("ConcavePolygonShape3D_6giaa")
[node name="MeshInstance3D7" type="MeshInstance3D" parent="Bounds/SimpleWalls"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.25, 4.5)
mesh = SubResource("QuadMesh_1njh5")
[node name="CollisionShape3D5" type="CollisionShape3D" parent="Bounds/SimpleWalls"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.25, 4.5)
shape = SubResource("ConcavePolygonShape3D_smvh1")
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.25, 4.55)
shape = SubResource("BoxShape3D_cxsgl")
[node name="FarWall" type="Node3D" parent="Bounds"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4.5)

View File

@ -66,7 +66,7 @@ turbulence_noise_strength = 0.1
turbulence_noise_scale = 0.3
turbulence_influence_min = 0.0
[sub_resource type="ArrayMesh" id="ArrayMesh_20ek7"]
[sub_resource type="ArrayMesh" id="ArrayMesh_a8b6q"]
_surfaces = [{
"aabb": AABB(-1, -0.4, -0.2, 2, 0.4, 0.4),
"format": 34896613377,
@ -95,7 +95,7 @@ _surfaces = [{
"vertex_data": PackedByteArray("AAD///////8AAAAA/3///wAA//8AAP//AAD//wAAsvIAAAAA/3+y8v////8AALLy//8AAP9/svL/////AAD/v///AAD/f/+//////////7////////8mwv//AAD/fybCAAD/////JsIAAAAA/38mwgAA//8AAFTV/////wAAVNUAAP////9U1f///////1TV/z//f/8//3//P/9/PjnAxj45wMY+OcDGPjnAxv9/AAD/fwAA/38AAIYUeOuGFHjrhhR464YUeOtU1aoqVNWqKlTVqipU1aoq")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_20ek7")
shadow_mesh = SubResource("ArrayMesh_a8b6q")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ojd88"]
data = PackedVector3Array(-1, 0, 0.2, -1, -0.4, 0, -1, 0, -0.2, -1, 0, -0.2, -1, -0.4, 0, 1, 0, -0.2, 1, 0, -0.2, -1, -0.4, 0, 1, -0.4, 0, 1, 0, -0.2, 1, -0.4, 0, 1, 0, 0.2, 1, 0, 0.2, 1, -0.4, 0, -1, 0, 0.2, -1, 0, 0.2, 1, -0.4, 0, -1, -0.4, 0, -1, 0, -0.2, 1, 0, -0.2, -1, 0, 0.2, -1, 0, 0.2, 1, 0, -0.2, 1, 0, 0.2)
@ -175,7 +175,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_ojd88")
[node name="Gunkable" parent="Hallway1/AirlockSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("3_s4vba")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("11_i2ry3")
@ -378,7 +378,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_mgo71")
[node name="Gunkable" parent="Hallway4/MessHallSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("3_s4vba")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("11_i2ry3")

View File

@ -21,7 +21,7 @@
[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/grunk_overlays/lowrez_overlay.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="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/gunk_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"]
@ -238,7 +238,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_2ft6k")
[node name="Gunkable" parent="Hallway1/MessHallSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("11_iefrw")
@ -341,7 +341,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_7ctwk")
[node name="Gunkable" parent="ShortHallway6/CrewQuartersSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_osdhu")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("11_iefrw")

View File

@ -267,7 +267,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_dxmep")
[node name="Gunkable" parent="Hallway/CrewQuartersSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_8pwhd")
@ -309,7 +309,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_0ij5m")
[node name="Gunkable" parent="Hallway2/OpsSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_8pwhd")
@ -640,7 +640,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_wqqoq")
[node name="Gunkable" parent="ShortHallway3/MedbaySign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_8pwhd")
@ -800,7 +800,7 @@ collision_mask = 0
shape = SubResource("ConcavePolygonShape3D_np3w4")
[node name="Gunkable" parent="ShortHallway7/CargoBaySign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("2_rvc24")]
mask_dim = 32
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_8pwhd")

View File

@ -9,7 +9,7 @@
[ext_resource type="PackedScene" uid="uid://30o8ltnnxpxo" path="res://src/effects/floating_dust.tscn" id="7_smsfc"]
[ext_resource type="ArrayMesh" uid="uid://b17naqcl4ie21" path="res://assets/level/floor/floor_1.mesh" id="8_vt83f"]
[ext_resource type="ArrayMesh" uid="uid://dbgk0kdg1vufk" path="res://assets/level/ceiling/ceiling_1.mesh" id="9_ga3kk"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/listener.tscn" id="10_4ybca"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/gunk_listener.tscn" id="10_4ybca"]
[ext_resource type="PackedScene" uid="uid://ctm84yms40858" path="res://src/props/railing/railing.tscn" id="10_b82y2"]
[ext_resource type="PackedScene" uid="uid://bttust5ohud8e" path="res://src/world/mechanics/relay/gunk_relay.tscn" id="11_ct7ya"]
[ext_resource type="PackedScene" uid="uid://c55n6h3ydi32e" path="res://src/props/sofa/phys_sofa.tscn" id="11_vt83f"]
@ -1467,52 +1467,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, -1.2)
shape = SubResource("BoxShape3D_mxi1m")
[node name="FloorSpawner" parent="CommonArea/BeastSpawnZone" instance=ExtResource("25_xbtal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.2, 0, 0.3)
[node name="UpperFloorSpawner" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.2, 0, 0.3)
[node name="UpperFloorSpawner2" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2, 0, 0.3)
[node name="UpperFloorSpawner3" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2, 0, 0.3)
[node name="UpperFloorSpawner4" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8, 0, 0.3)
[node name="UpperFloorSpawner5" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8, 0, 0.3)
[node name="UpperFloorSpawner6" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7, 0, 0.3)
[node name="UpperFloorSpawner7" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 0, 0.3)
[node name="UpperFloorSpawner8" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, 0.3)
[node name="UpperFloorSpawner9" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.3, 0, 0.3)
[node name="UpperFloorSpawner10" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.3, 0, 0.3)
[node name="UpperFloorSpawner11" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.8, 0, 0.3)
[node name="UpperFloorSpawner12" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8, 0, 3.3)
[node name="UpperFloorSpawner13" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2, 0, 3.3)
[node name="UpperFloorSpawner14" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2, 0, 1.8)
[node name="UpperFloorSpawner15" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8, 0, 1.8)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8, -3, -4.7)
[node name="LowerFloorSpawner" parent="CommonArea/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.8, -3, -5.7)
@ -1886,89 +1841,6 @@ process_material = SubResource("ParticleProcessMaterial_wvfch")
[node name="OverheadLight" parent="Room1" instance=ExtResource("24_or2wh")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -3, 3, 0)
[node name="BeastSpawnZone" parent="Room1" instance=ExtResource("25_5rwfs")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room1/BeastSpawnZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.5, -3)
shape = SubResource("BoxShape3D_xbtal")
[node name="FloorSpawner" parent="Room1/BeastSpawnZone" instance=ExtResource("25_xbtal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -6)
[node name="TransientFloorSpawner" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
[node name="TransientFloorSpawner8" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 0)
[node name="TransientFloorSpawner9" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9, 0, 0)
[node name="TransientFloorSpawner10" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.38419e-07, 0, -1.5)
[node name="TransientFloorSpawner11" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -1.5)
[node name="TransientFloorSpawner12" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -1.5)
[node name="TransientFloorSpawner13" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -1.5)
[node name="TransientFloorSpawner14" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -3)
[node name="TransientFloorSpawner15" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -3)
[node name="TransientFloorSpawner16" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -4.5)
[node name="TransientFloorSpawner17" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.4, 0, -3.3)
[node name="TransientFloorSpawner18" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.899999, 0, -3.3)
[node name="TransientFloorSpawner19" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -0.6)
[node name="TransientFloorSpawner20" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.3, 0, -0.6)
[node name="TransientFloorSpawner21" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -0.6)
[node name="TransientFloorSpawner22" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.1, 0, -2.4)
[node name="TransientFloorSpawner23" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19209e-06, 0, -2.4)
[node name="TransientFloorSpawner24" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19209e-06, 0, -0.6)
[node name="TransientFloorSpawner25" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -5.4)
[node name="TransientFloorSpawner2" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0)
[node name="TransientFloorSpawner3" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, 0)
[node name="TransientFloorSpawner4" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -3)
[node name="TransientFloorSpawner5" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -3)
[node name="TransientFloorSpawner6" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.38419e-07, 0, -3)
[node name="TransientFloorSpawner7" parent="Room1/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -6)
[node name="Room2" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.8, 0, 9.3)
@ -2185,92 +2057,6 @@ process_material = SubResource("ParticleProcessMaterial_wvfch")
[node name="OverheadLight" parent="Room2" instance=ExtResource("24_or2wh")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -3, 3, 0)
[node name="BeastSpawnZone" parent="Room2" instance=ExtResource("25_5rwfs")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room2/BeastSpawnZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.5, -3)
shape = SubResource("BoxShape3D_xbtal")
[node name="FloorSpawner" parent="Room2/BeastSpawnZone" instance=ExtResource("25_xbtal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -6)
[node name="TransientFloorSpawner" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
[node name="TransientFloorSpawner8" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 0)
[node name="TransientFloorSpawner9" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9, 0, 0)
[node name="TransientFloorSpawner10" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.38419e-07, 0, -1.5)
[node name="TransientFloorSpawner11" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -1.5)
[node name="TransientFloorSpawner12" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -1.5)
[node name="TransientFloorSpawner13" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -1.5)
[node name="TransientFloorSpawner14" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -3)
[node name="TransientFloorSpawner15" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -1.8)
[node name="TransientFloorSpawner17" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.4, 0, -3.3)
[node name="TransientFloorSpawner18" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -0.6)
[node name="TransientFloorSpawner19" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -0.6)
[node name="TransientFloorSpawner20" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.3, 0, -0.6)
[node name="TransientFloorSpawner21" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -0.6)
[node name="TransientFloorSpawner22" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.1, 0, -2.4)
[node name="TransientFloorSpawner23" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 0, -2.4)
[node name="TransientFloorSpawner24" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19209e-06, 0, -0.6)
[node name="TransientFloorSpawner2" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0)
[node name="TransientFloorSpawner3" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, 0)
[node name="TransientFloorSpawner4" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -3)
[node name="TransientFloorSpawner5" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -3)
[node name="TransientFloorSpawner6" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0)
[node name="TransientFloorSpawner26" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.599999, 0, -1.8)
[node name="TransientFloorSpawner7" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -6)
[node name="TransientFloorSpawner25" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -5.4)
[node name="TransientFloorSpawner16" parent="Room2/BeastSpawnZone" instance=ExtResource("26_mxi1m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -4.5)
[node name="Room3" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2, -3, 9.3)

View File

@ -0,0 +1,226 @@
[gd_scene load_steps=5 format=3 uid="uid://covuxcwb25yeo"]
[ext_resource type="PackedScene" uid="uid://dxm83cmpppqxr" path="res://src/world/grunk_beast/beast_spawner/beast_spawn_zone/beast_spawn_zone.tscn" id="1_t70on"]
[ext_resource type="PackedScene" uid="uid://c8vbjgol5nenc" path="res://src/world/grunk_beast/beast_spawner/floor_spawner.tscn" id="2_s2562"]
[ext_resource type="PackedScene" uid="uid://5vh7mnjavlle" path="res://src/world/grunk_beast/beast_spawner/transient_floor_spawner.tscn" id="3_aixto"]
[sub_resource type="BoxShape3D" id="BoxShape3D_xbtal"]
size = Vector3(6, 3, 12)
[node name="DisabledSpawns" type="Node3D"]
[node name="BeastSpawnZone" parent="." instance=ExtResource("1_t70on")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2, 0, 9.3)
[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastSpawnZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.5, -3)
shape = SubResource("BoxShape3D_xbtal")
[node name="FloorSpawner" parent="BeastSpawnZone" instance=ExtResource("2_s2562")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -6)
[node name="TransientFloorSpawner" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
[node name="TransientFloorSpawner8" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 0)
[node name="TransientFloorSpawner9" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9, 0, 0)
[node name="TransientFloorSpawner10" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.38419e-07, 0, -1.5)
[node name="TransientFloorSpawner11" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -1.5)
[node name="TransientFloorSpawner12" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -1.5)
[node name="TransientFloorSpawner13" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -1.5)
[node name="TransientFloorSpawner14" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -3)
[node name="TransientFloorSpawner15" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -3)
[node name="TransientFloorSpawner16" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -4.5)
[node name="TransientFloorSpawner17" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.4, 0, -3.3)
[node name="TransientFloorSpawner18" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.899999, 0, -3.3)
[node name="TransientFloorSpawner19" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -0.6)
[node name="TransientFloorSpawner20" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.3, 0, -0.6)
[node name="TransientFloorSpawner21" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -0.6)
[node name="TransientFloorSpawner22" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.1, 0, -2.4)
[node name="TransientFloorSpawner23" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19209e-06, 0, -2.4)
[node name="TransientFloorSpawner24" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19209e-06, 0, -0.6)
[node name="TransientFloorSpawner25" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -5.4)
[node name="TransientFloorSpawner2" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0)
[node name="TransientFloorSpawner3" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, 0)
[node name="TransientFloorSpawner4" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -3)
[node name="TransientFloorSpawner5" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -3)
[node name="TransientFloorSpawner6" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.38419e-07, 0, -3)
[node name="TransientFloorSpawner7" parent="BeastSpawnZone" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -6)
[node name="BeastSpawnZone2" parent="." instance=ExtResource("1_t70on")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.8, 0, 9.3)
[node name="CollisionShape3D" type="CollisionShape3D" parent="BeastSpawnZone2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.5, -3)
shape = SubResource("BoxShape3D_xbtal")
[node name="FloorSpawner" parent="BeastSpawnZone2" instance=ExtResource("2_s2562")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -6)
[node name="TransientFloorSpawner" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
[node name="TransientFloorSpawner8" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 0)
[node name="TransientFloorSpawner9" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9, 0, 0)
[node name="TransientFloorSpawner10" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.38419e-07, 0, -1.5)
[node name="TransientFloorSpawner11" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -1.5)
[node name="TransientFloorSpawner12" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -1.5)
[node name="TransientFloorSpawner13" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -1.5)
[node name="TransientFloorSpawner14" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -3)
[node name="TransientFloorSpawner15" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -1.8)
[node name="TransientFloorSpawner17" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.4, 0, -3.3)
[node name="TransientFloorSpawner18" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -0.6)
[node name="TransientFloorSpawner19" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -0.6)
[node name="TransientFloorSpawner20" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.3, 0, -0.6)
[node name="TransientFloorSpawner21" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, -0.6)
[node name="TransientFloorSpawner22" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.1, 0, -2.4)
[node name="TransientFloorSpawner23" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 0, -2.4)
[node name="TransientFloorSpawner24" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19209e-06, 0, -0.6)
[node name="TransientFloorSpawner2" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0)
[node name="TransientFloorSpawner3" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.8, 0, 0)
[node name="TransientFloorSpawner4" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -3)
[node name="TransientFloorSpawner5" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -3)
[node name="TransientFloorSpawner6" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0)
[node name="TransientFloorSpawner26" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.599999, 0, -1.8)
[node name="TransientFloorSpawner7" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -6)
[node name="TransientFloorSpawner25" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -5.4)
[node name="TransientFloorSpawner16" parent="BeastSpawnZone2" instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -4.5)
[node name="UpperFloorSpawner" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.2, 0, 0.3)
[node name="UpperFloorSpawner2" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2, 0, 0.3)
[node name="UpperFloorSpawner3" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2, 0, 0.3)
[node name="UpperFloorSpawner4" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8, 0, 0.3)
[node name="UpperFloorSpawner5" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8, 0, 0.3)
[node name="UpperFloorSpawner6" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7, 0, 0.3)
[node name="UpperFloorSpawner7" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7, 0, 0.3)
[node name="UpperFloorSpawner8" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, 0.3)
[node name="UpperFloorSpawner9" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.3, 0, 0.3)
[node name="UpperFloorSpawner10" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.3, 0, 0.3)
[node name="UpperFloorSpawner11" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.8, 0, 0.3)
[node name="UpperFloorSpawner12" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8, 0, 3.3)
[node name="UpperFloorSpawner13" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2, 0, 3.3)
[node name="UpperFloorSpawner14" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2, 0, 1.8)
[node name="UpperFloorSpawner15" parent="." instance=ExtResource("3_aixto")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8, 0, 1.8)

View File

@ -1134,7 +1134,7 @@ durability = 0.6
value = 400.0
[node name="GrunkNodule34" parent="Traps/Trap3" instance=ExtResource("20_hl3fx")]
transform = Transform3D(-0.181119, -0.0770963, -0.0353836, -0.0814267, 0.181397, 0.0215609, 0.023781, 0.0339313, -0.195661, 0.392554, 2.76956, -0.631451)
transform = Transform3D(0.156165, -0.00400145, 0.124885, -0.0674853, 0.165533, 0.0896924, -0.105157, -0.112174, 0.127902, 0.192554, 2.76956, -1.03145)
chitter = true
durability = 0.6
value = 400.0

View File

@ -1,12 +1,20 @@
[gd_scene load_steps=43 format=3 uid="uid://oowut88kr2ox"]
[gd_scene load_steps=53 format=3 uid="uid://oowut88kr2ox"]
[ext_resource type="Script" uid="uid://lfd36ps52xgk" path="res://levels/ghost_ship/player_ship/player_ship.gd" id="1_0r2ng"]
[ext_resource type="ArrayMesh" uid="uid://dq4aj5ph31rce" path="res://assets/level/player_ship/player_ship.obj" id="1_nafoa"]
[ext_resource type="Texture2D" uid="uid://cg6dpd6dhcowu" path="res://assets/level/player_ship/tank_facade_C.png" id="2_xgclp"]
[ext_resource type="Material" uid="uid://x1h5m3w0m0g7" path="res://assets/materials/metal_plate_02/metal_plate_02.material" id="3_0e0pl"]
[ext_resource type="Texture2D" uid="uid://duo8ph784g4gd" path="res://assets/level/player_ship/tank_facade_M.png" id="3_e4hmc"]
[ext_resource type="Texture2D" uid="uid://ccnk8eicahcw8" path="res://assets/level/player_ship/tank_facade_N.png" id="4_0r2ng"]
[ext_resource type="Texture2D" uid="uid://dupdt58lfmd85" path="res://assets/level/player_ship/player_ship_tank_C.png" id="4_66f7e"]
[ext_resource type="Texture2D" uid="uid://btq7agwq1vdqk" path="res://assets/materials/rubber/rubber_gasket_C.png" id="4_veot7"]
[ext_resource type="Texture2D" uid="uid://dv2876ywyq6rf" path="res://assets/level/player_ship/tank_facade_R.png" id="5_22nd2"]
[ext_resource type="Texture2D" uid="uid://dmcdypipuh3gc" path="res://assets/level/player_ship/player_ship_tank_M.png" id="5_eicqe"]
[ext_resource type="Texture2D" uid="uid://d0oxo3u6ts6k5" path="res://assets/materials/rubber/rubber_gasket_N.png" id="5_qj4yg"]
[ext_resource type="Texture2D" uid="uid://bux766vwb1rrc" path="res://assets/level/player_ship/player_ship_tank_N.png" id="6_8v6o6"]
[ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="6_e4hmc"]
[ext_resource type="Texture2D" uid="uid://ktr5niaf6psx" path="res://assets/materials/rubber/rubber_gasket_R.png" id="6_ny71l"]
[ext_resource type="Texture2D" uid="uid://3swdihtwt7n0" path="res://assets/level/player_ship/player_ship_tank_R.png" id="7_rfxeu"]
[ext_resource type="ArrayMesh" uid="uid://djgqnuxrja1mo" path="res://assets/level/player_ship/player_ship_tank_facade.obj" id="8_2mvif"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk/gunk.gdshader" id="8_al8ma"]
[ext_resource type="ArrayMesh" uid="uid://bc8457r4rxpey" path="res://assets/level/player_ship/grunk_liquid.obj" id="8_xuj2g"]
@ -22,6 +30,24 @@
[ext_resource type="AudioStream" uid="uid://b601aiv71ddra" path="res://assets/sfx/space_door.wav" id="20_3rulp"]
[ext_resource type="AudioStream" uid="uid://bckqqojs6pcu1" path="res://assets/sfx/space_door_close.wav" id="21_bmg36"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rts36"]
albedo_texture = ExtResource("4_66f7e")
metallic = 1.0
metallic_texture = ExtResource("5_eicqe")
roughness_texture = ExtResource("7_rfxeu")
normal_enabled = true
normal_texture = ExtResource("6_8v6o6")
texture_filter = 2
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_66f7e"]
albedo_color = Color(0.281187, 0.281187, 0.281187, 1)
albedo_texture = ExtResource("4_veot7")
roughness_texture = ExtResource("6_ny71l")
normal_enabled = true
normal_texture = ExtResource("5_qj4yg")
uv1_scale = Vector3(1.37, 1.37, 1.37)
texture_filter = 2
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xpsdy"]
transparency = 1
albedo_texture = ExtResource("2_xgclp")
@ -51,14 +77,6 @@ seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("10_2mvif")
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_fk1xc"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("10_2mvif")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_7fplw"]
frequency = 0.0703
@ -72,30 +90,31 @@ noise = SubResource("FastNoiseLite_7fplw")
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("8_al8ma")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/fresnel_color = Color(0.25, 0.88, 1, 1)
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/pan_speed = Vector2(0, 0)
shader_parameter/time_scale = 0.2
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/normal_scale = 1.0
shader_parameter/bump_strength = 10.0
shader_parameter/fresnel_color = Color(0.25, 0.88, 1, 1)
shader_parameter/fresnel_power = 4.0
shader_parameter/fresnel_intensity = 0.0
shader_parameter/bump_strength = 10.0
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/pan_speed = Vector2(0, 0)
shader_parameter/time_scale = 0.2
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/iridescence_color = Color(1, 1, 1, 1)
shader_parameter/iridescence_power = 4.0
shader_parameter/iridescence_intensity = 0.0
shader_parameter/overlay_emission_scale = 1.0
shader_parameter/jitter_magnitude = 0.1
shader_parameter/jitter_time_scale = 0.1
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
shader_parameter/overlay_emission_scale = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i4yi7"]
albedo_color = Color(0.243137, 0.231373, 0.219608, 1)
@ -291,6 +310,9 @@ size = Vector3(1.25, 2.5, 0.1)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_0e0pl"]
data = PackedVector3Array(-0.625, 1.25, 0.05, 0.625, 1.25, 0.05, -0.625, -1.25, 0.05, 0.625, 1.25, 0.05, 0.625, -1.25, 0.05, -0.625, -1.25, 0.05, 0.625, 1.25, -0.05, -0.625, 1.25, -0.05, 0.625, -1.25, -0.05, -0.625, 1.25, -0.05, -0.625, -1.25, -0.05, 0.625, -1.25, -0.05, 0.625, 1.25, 0.05, 0.625, 1.25, -0.05, 0.625, -1.25, 0.05, 0.625, 1.25, -0.05, 0.625, -1.25, -0.05, 0.625, -1.25, 0.05, -0.625, 1.25, -0.05, -0.625, 1.25, 0.05, -0.625, -1.25, -0.05, -0.625, 1.25, 0.05, -0.625, -1.25, 0.05, -0.625, -1.25, -0.05, 0.625, 1.25, 0.05, -0.625, 1.25, 0.05, 0.625, 1.25, -0.05, -0.625, 1.25, 0.05, -0.625, 1.25, -0.05, 0.625, 1.25, -0.05, -0.625, -1.25, 0.05, 0.625, -1.25, 0.05, -0.625, -1.25, -0.05, 0.625, -1.25, 0.05, 0.625, -1.25, -0.05, -0.625, -1.25, -0.05)
[sub_resource type="FogMaterial" id="FogMaterial_66f7e"]
density = -8.0
[node name="PlayerShip" type="Node3D"]
script = ExtResource("1_0r2ng")
@ -300,6 +322,9 @@ collision_layer = 5
[node name="PlayerShipMesh" type="MeshInstance3D" parent="StaticBody3D"]
sorting_offset = 3.0
mesh = ExtResource("1_nafoa")
surface_material_override/0 = ExtResource("3_0e0pl")
surface_material_override/1 = SubResource("StandardMaterial3D_rts36")
surface_material_override/2 = SubResource("StandardMaterial3D_66f7e")
[node name="TankFacadeMesh" type="MeshInstance3D" parent="StaticBody3D"]
mesh = ExtResource("8_2mvif")
@ -307,6 +332,7 @@ skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_xpsdy")
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
visible = false
shape = SubResource("ConcavePolygonShape3D_nafoa")
[node name="TankInteractBody" type="StaticBody3D" parent="."]
@ -342,9 +368,10 @@ skeleton = NodePath("../..")
surface_material_override/0 = SubResource("ShaderMaterial_3trrp")
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.9, 0)
light_energy = 2.0
light_indirect_energy = 8.0
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.85878, 0)
light_color = Color(1, 1, 0.956863, 1)
light_indirect_energy = 16.0
shadow_enabled = true
omni_range = 10.0
[node name="TerminalCable" type="CSGPolygon3D" parent="."]
@ -423,6 +450,11 @@ volume_db = -8.0
unit_size = 4.0
bus = &"SFX"
[node name="NegativeFog" type="FogVolume" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, 1.5)
size = Vector3(6, 3.5, 12)
material = SubResource("FogMaterial_66f7e")
[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

@ -91,6 +91,9 @@ shader_parameter/iridescence_intensity = 0.1
shader_parameter/overlay_emission_scale = 1.0
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("3_3t4ks")
shader_parameter/base_uv_scale = Vector3(1, 1, 1)
shader_parameter/base_normal_scale = 1.0
shader_parameter/normal_blend = 1.0
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_gpcv6"]
data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5)
@ -243,6 +246,9 @@ shader_parameter/iridescence_intensity = 0.0
shader_parameter/overlay_emission_scale = 1.0
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("31_753oq")
shader_parameter/base_uv_scale = Vector3(1, 1, 1)
shader_parameter/base_normal_scale = 1.0
shader_parameter/normal_blend = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k52xx"]
resource_local_to_scene = true

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@
[ext_resource type="PackedScene" uid="uid://cfqirm2o3uo4k" path="res://levels/testing/mechanic_test/prop_test.tscn" id="10_xrfi2"]
[ext_resource type="PackedScene" uid="uid://dbabcsp38wmid" path="res://levels/testing/mechanic_test/item_test.tscn" id="11_8natv"]
[ext_resource type="ArrayMesh" uid="uid://dpr5cgq743f4s" path="res://assets/level/floor/floor_9x9.mesh" id="13_aix42"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/listener.tscn" id="13_awnx0"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/gunk_listener.tscn" id="13_awnx0"]
[ext_resource type="PackedScene" uid="uid://c8vbjgol5nenc" path="res://src/world/grunk_beast/beast_spawner/floor_spawner.tscn" id="13_cgmn0"]
[ext_resource type="PackedScene" uid="uid://5vh7mnjavlle" path="res://src/world/grunk_beast/beast_spawner/transient_floor_spawner.tscn" id="15_6frcc"]
[ext_resource type="PackedScene" uid="uid://drm5dspi48pf5" path="res://src/props/crate_long/phys_crate_long.tscn" id="15_aix42"]

View File

@ -7,7 +7,7 @@
[ext_resource type="PackedScene" uid="uid://bttust5ohud8e" path="res://src/world/mechanics/relay/gunk_relay.tscn" id="9_d4a3d"]
[ext_resource type="PackedScene" uid="uid://dgeg3kkogm71m" path="res://src/world/mechanics/alarm/gunk_alarm.tscn" id="10_l8xa5"]
[ext_resource type="PackedScene" uid="uid://d0j20q65wnqsr" path="res://src/world/mechanics/heart/gunk_heart.tscn" id="11_tfbib"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/listener.tscn" id="12_e8utx"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/gunk_listener.tscn" id="12_e8utx"]
[sub_resource type="ArrayMesh" id="ArrayMesh_ix0jw"]
_surfaces = [{

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=61 format=4 uid="uid://dc4tts6342cuj"]
[gd_scene load_steps=65 format=4 uid="uid://dc4tts6342cuj"]
[ext_resource type="Script" uid="uid://dmbdkydqnbyqv" path="res://levels/testing/prop_test/prop_test.gd" id="1_ibd1t"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_ml0ka"]
@ -35,6 +35,7 @@
[ext_resource type="Texture2D" uid="uid://gbvtbiurxrop" path="res://assets/props/vending_machine/vending_machine_R.png" id="27_8a67w"]
[ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="28_ibd1t"]
[ext_resource type="PackedScene" uid="uid://d1kacn4b60ucy" path="res://src/ui/post_processing.tscn" id="30_qnhar"]
[ext_resource type="Material" uid="uid://dmolqtdktqdsl" path="res://levels/ghost_ship/guide_sign/airlock_sign.material" id="34_rl4wl"]
[ext_resource type="PackedScene" uid="uid://bfm80tqsw22qc" path="res://src/props/wire_shelves/wire_shelves.tscn" id="36_hb05j"]
[ext_resource type="Material" uid="uid://dutkfm4ek0ysh" path="res://assets/materials/grunk_overlays/bright_overlay.material" id="37_00w3i"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="40_6kdm2"]
@ -66,6 +67,40 @@ texture_filter = 2
[sub_resource type="BoxShape3D" id="BoxShape3D_ibd1t"]
size = Vector3(2.35, 3.1, 1.5)
[sub_resource type="ArrayMesh" id="ArrayMesh_20ek7"]
_surfaces = [{
"aabb": AABB(-1, -0.4, -0.2, 2, 0.4, 0.4),
"format": 34896613377,
"index_count": 24,
"index_data": PackedByteArray("AAABAAIAAAADAAEAAgABAAQAAgAEAAAABAABAAMABQADAAAABAADAAUAAAAEAAUA"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 6,
"vertex_data": PackedByteArray("AAD/////AAAAAAAA/38AAAAA//8AAAAA//8AAP9/AAD/////AAAAAP///////wAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_bbjgc"]
_surfaces = [{
"aabb": AABB(-1, -0.4, -0.2, 2, 0.4, 0.4),
"attribute_data": PackedByteArray("AAD/I/8RAAD/I/8j/yP/I/9N/yP/I//b/03/2/8j/9v/Ef//AAD/2/93/9v/Tf/b/3f/I/9N/yP/I/8j/yP/2wAA/yMAAP/b"),
"format": 34896613399,
"index_count": 24,
"index_data": PackedByteArray("AAABAAIAAwAEAAUABQAEAAYABwAIAAkACgALAAwADAALAA0ADgAPABAAEAAPABEA"),
"material": ExtResource("34_rl4wl"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 18,
"vertex_data": PackedByteArray("AAD///////8AAAAA/3///wAA//8AAP//AAD//wAAsvIAAAAA/3+y8v////8AALLy//8AAP9/svL/////AAD/v///AAD/f/+//////////7////////8mwv//AAD/fybCAAD/////JsIAAAAA/38mwgAA//8AAFTV/////wAAVNUAAP////9U1f///////1TV/z//f/8//3//P/9/PjnAxj45wMY+OcDGPjnAxv9/AAD/fwAA/38AAIYUeOuGFHjrhhR464YUeOtU1aoqVNWqKlTVqipU1aoq")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_20ek7")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_pyppt"]
data = PackedVector3Array(-1, 0, 0.2, -1, -0.4, 0, -1, 0, -0.2, -1, 0, -0.2, -1, -0.4, 0, 1, 0, -0.2, 1, 0, -0.2, -1, -0.4, 0, 1, -0.4, 0, 1, 0, -0.2, 1, -0.4, 0, 1, 0, 0.2, 1, 0, 0.2, 1, -0.4, 0, -1, 0, 0.2, -1, 0, 0.2, 1, -0.4, 0, -1, -0.4, 0, -1, 0, -0.2, 1, 0, -0.2, -1, 0, 0.2, -1, 0, 0.2, 1, 0, -0.2, 1, 0, 0.2)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hb05j"]
albedo_color = Color(0.866667, 0.109804, 0.101961, 1)
@ -374,6 +409,24 @@ label = "Vending Machine"
verb = "toggle"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="AirlockSign" type="MeshInstance3D" parent="Props"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -9.06159, 3, -7.29323)
gi_mode = 2
mesh = SubResource("ArrayMesh_bbjgc")
[node name="StaticBody3D" type="StaticBody3D" parent="Props/AirlockSign"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="Props/AirlockSign/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_pyppt")
[node name="Gunkable" parent="Props/AirlockSign/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("40_6kdm2")]
mask_dim = 64
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("37_00w3i")
[node name="CleanPodium" type="StaticBody3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4, 1, 0)

View File

@ -107,7 +107,7 @@ gameplay/beast/anger_min=0.0
gameplay/beast/anger_max=150.0
gameplay/beast/anger_decay_rate=1.0
gameplay/beast/anger_noise=10.0
gameplay/beast/anger_noise_near=30.0
gameplay/beast/anger_noise_near=10.0
gameplay/beast/provocation_range=5.5
gameplay/beast/anger_alarm=60.0
gameplay/beast/anger_alarm_extra=60.0
@ -123,6 +123,8 @@ gameplay/beast/anger_threshold_pursuit=80.0
gameplay/beast/anger_start_tracking=4.0
gameplay/beast/anger_extra_alert_level=4
gameplay/beast/anger_threshold_pounce=140.0
debug/show_beast_info=false
debug/show_beast_info.editor_runtime=true
[global_group]

View File

@ -28,32 +28,8 @@ func _process(_delta: float) -> void:
(c as Node3D).global_position = child_pos
var collider: Object = get_collider()
var new_gunk_id: int = collider.get_instance_id()
if new_gunk_id != gunk_id:
gunk_id = new_gunk_id
if gunkable:
# Disconnect old signals to avoid emitting from previous node and accumulating connections
if gunkable.painted_at_point.is_connected(grunk_dust._on_gunkable_painted_at_point):
gunkable.painted_at_point.disconnect(grunk_dust._on_gunkable_painted_at_point)
if gunkable.clear_total_updated.is_connected(
grunk_dust._on_gunkable_clear_total_updated
):
gunkable.clear_total_updated.disconnect(
grunk_dust._on_gunkable_clear_total_updated
)
gunkable = Gunkable.get_component(collider)
if gunkable:
# Connect signals of new gunkable to our gunk dust
if !gunkable.painted_at_point.is_connected(
grunk_dust._on_gunkable_painted_at_point
):
gunkable.painted_at_point.connect(grunk_dust._on_gunkable_painted_at_point)
if !gunkable.clear_total_updated.is_connected(
grunk_dust._on_gunkable_clear_total_updated
):
gunkable.clear_total_updated.connect(
grunk_dust._on_gunkable_clear_total_updated
)
if is_instance_valid(collider):
_connect_gunkable(collider)
laser_dust.emitting = true
@ -61,3 +37,26 @@ func _process(_delta: float) -> void:
else:
laser_dust.emitting = false
glow_light.visible = false
func _connect_gunkable(collider: Object) -> void:
var new_gunk_id: int = collider.get_instance_id()
if new_gunk_id != gunk_id:
gunk_id = new_gunk_id
if gunkable:
# Disconnect old signals to avoid emitting from previous node and accumulating connections
if gunkable.painted_at_point.is_connected(grunk_dust._on_gunkable_painted_at_point):
gunkable.painted_at_point.disconnect(grunk_dust._on_gunkable_painted_at_point)
if gunkable.clear_total_updated.is_connected(
grunk_dust._on_gunkable_clear_total_updated
):
gunkable.clear_total_updated.disconnect(grunk_dust._on_gunkable_clear_total_updated)
gunkable = Gunkable.get_component(collider)
if gunkable:
# Connect signals of new gunkable to our gunk dust
if !gunkable.painted_at_point.is_connected(grunk_dust._on_gunkable_painted_at_point):
gunkable.painted_at_point.connect(grunk_dust._on_gunkable_painted_at_point)
if !gunkable.clear_total_updated.is_connected(
grunk_dust._on_gunkable_clear_total_updated
):
gunkable.clear_total_updated.connect(grunk_dust._on_gunkable_clear_total_updated)

View File

@ -2,7 +2,7 @@ extends SurfaceSnapTool
# the wimpy toothbrush
const PAINT_COLOR := Color(1, 0, 0, 0.3)
const BRUSH_SCALE := 0.2
const BRUSH_SCALE := 0.5
@export var damage := 0.0063 # ~8 seconds to destroy standard nodule

View File

@ -77,7 +77,6 @@ collision_mask = 4
hit_from_inside = true
[node name="BeamPassthroughArea" type="Area3D" parent="Raycast"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
collision_layer = 128
collision_mask = 0

View File

@ -28,6 +28,9 @@ const THROW_TUTORIAL_DELAY := 6.0
## Temporary collision mask.
@export_flags_3d_physics var hold_collision_physics := 0b01000001
## This is set when an object is thrown and released when the mouse button is released
var just_threw_object := false
## The object currently being held.
var _held_object: RigidBody3D
@ -108,6 +111,7 @@ func _process_hold_controls() -> void:
drop()
elif Input.is_action_just_pressed("fire"):
throw()
just_threw_object = true
func _physics_process(delta: float) -> void:
@ -115,6 +119,10 @@ func _physics_process(delta: float) -> void:
if holding_object():
_process_hold_controls()
# Release held object lockout as soon as possible
if not Input.is_action_pressed("fire"):
just_threw_object = false
# Held object logic
if not holding_object():
return

View File

@ -216,7 +216,8 @@ func _physics_process(delta: float) -> void:
firing = false
if tool:
# Tool use
if Input.is_action_pressed("fire"):
# Lockout fire input after throwing an object until input is released.
if Input.is_action_pressed("fire") and not hold_component.just_threw_object:
tool.fire()
firing = true
else:

View File

@ -40,7 +40,7 @@ uniform float overlay_emission_scale = 1.0;
#if defined(USE_MASK)
group_uniforms gunk_mask;
uniform float edge_bleed = 0.25;
uniform sampler2D gunk_mask;
uniform sampler2D gunk_mask: hint_default_black, filter_linear_mipmap_anisotropic, repeat_disable;
#endif
@ -72,6 +72,26 @@ float hardstep(float value) {
return 0.5 * tanh( (20.0 * x - 10.0) * inversesqrt(x - x * x) ) + 0.5;
}
vec3 slerp(vec3 a, vec3 b, float t) {
vec3 v0 = normalize(a);
vec3 v1 = normalize(b);
float cos_theta = clamp(dot(v0, v1), -1.0, 1.0);
// use lerp for small angles to avoid division by small sine
const float epsilon = 1e-6;
if (1.0 - abs(cos_theta) < epsilon) {
return normalize(mix(v0, v1, t));
}
float theta = acos(cos_theta);
float sin_theta = sin(theta);
float w0 = sin((1.0 - t) * theta) / sin_theta;
float w1 = sin(t * theta) / sin_theta;
return w0 * v0 + w1 * v1;
}
vec3 swirl_uvt(vec3 uvt) {
uvt.x += sin(uvt.y * 1.54 * PI + uvt.z) * cos(uvt.y * 1.31 * PI + uvt.z) * 0.2;
uvt.y += cos(uvt.x * 1.74 * PI + uvt.z) * -sin(uvt.y * 1.64 * PI + uvt.z) * 0.2;

View File

@ -5,6 +5,12 @@ render_mode depth_prepass_alpha;
#define USE_MASK
#include "common.gdshaderinc"
group_uniforms base_material;
uniform vec3 base_uv_scale = vec3(1.0);
uniform sampler2D base_normal_map: hint_normal, filter_linear;
uniform float base_normal_scale = 0.8;
uniform float normal_blend = 1.0;
void fragment() {
vec3 uvt = scale_uvt(UV, TIME);
float value = sample_noise(uvt);
@ -13,16 +19,32 @@ void fragment() {
EMISSION = base_emission(UV, value);
SPECULAR = base_specular();
// vec3 nmap = minimal_convolution(UV, uvt);
// vec3 nmap = cross_convolution(UV, uvt);
vec3 nmap = sobel_convolution(UV, uvt);
// vec3 nmap = sobel_5x5_convolution(UV, uvt);
// vec3 nmap = scharr_convolution(UV, uvt);
// vec3 nmap = godot_convolution(UV, uvt);
NORMAL_MAP = nmap / 2.0 + 0.5;
mat3 TBN = mat3(TANGENT, BINORMAL, NORMAL);
mat3 inv_TBN = transpose(TBN);
vec3 base_nmap = textureLod(base_normal_map, UV * base_uv_scale.xy, 0).rgb * 2.0 - 1.0;
vec3 base_world_normal = TBN * base_nmap;
vec3 gunk_nmap = sobel_convolution(UV, uvt);
vec3 gunk_world_normal = TBN * gunk_nmap;
// Unity blending
// see https://blog.selfshadow.com/publications/blending-in-detail/
// note that there are actually cheaper alternatives to this, if needed
vec3 n = base_nmap * vec3(1.0, 1.0, 1.0 / base_normal_scale);
vec3 n2 = gunk_nmap;
mat3 basis = mat3(
vec3(n.z, n.y, -n.x),
vec3(n.x, n.z, -n.y),
vec3(n.x, n.y, n.z)
);
vec3 nmap = normalize(n2.x * basis[0] + n2.y * basis[1] + n2.z * basis[2]);
// UDN blending
// vec3 nmap = normalize(vec3(base_nmap.xy + gunk_nmap.xy, base_nmap.z));
vec3 world_normal = TBN * nmap;
NORMAL_MAP = nmap / 2.0 + 0.5;
// add fresnel
vec3 world_normal = mat3(TANGENT, BINORMAL, NORMAL) * nmap;
EMISSION += rim_glow(
world_normal,
VIEW,

View File

@ -0,0 +1,36 @@
[gd_scene load_steps=2 format=3 uid="uid://bju72ap41tg6j"]
[ext_resource type="Theme" uid="uid://b07fevr214mmr" path="res://src/ui/hud/hud_theme.tres" id="1_h04vq"]
[node name="AdvisoryPanel" type="MarginContainer"]
custom_minimum_size = Vector2(560, 140)
offset_right = 532.0
offset_bottom = 137.0
theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 4
theme_override_constants/margin_bottom = 4
[node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 2
theme = ExtResource("1_h04vq")
theme_type_variation = &"AdvisoryPanelContainer"
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
size_flags_horizontal = 4
alignment = 1
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"AdvisoryHeading"
text = "HEADING"
horizontal_alignment = 1
[node name="Label2" type="Label" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"AdvisoryText"
text = "Sub-Heading Text"
horizontal_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]

View File

@ -0,0 +1,29 @@
[gd_scene load_steps=3 format=3 uid="uid://5pky6tgbjyb"]
[ext_resource type="Theme" uid="uid://b07fevr214mmr" path="res://src/ui/hud/hud_theme.tres" id="1_jrjp2"]
[ext_resource type="PackedScene" uid="uid://bju72ap41tg6j" path="res://src/ui/hud/alert_advisory/advisory_panel.tscn" id="2_v20c2"]
[node name="AlertAdvisory" type="Control"]
custom_minimum_size = Vector2(600, 800)
layout_mode = 3
anchors_preset = 0
theme = ExtResource("1_jrjp2")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="AdvisoryPanel" parent="VBoxContainer" instance=ExtResource("2_v20c2")]
layout_mode = 2
[node name="Label" parent="VBoxContainer/AdvisoryPanel/PanelContainer/VBoxContainer" index="0"]
text = "LOW"
[node name="Label2" parent="VBoxContainer/AdvisoryPanel/PanelContainer/VBoxContainer" index="1"]
text = "Low Risk of Anti-Psionic Cataclysm"
[editable path="VBoxContainer/AdvisoryPanel"]

View File

@ -1,9 +1,30 @@
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://b07fevr214mmr"]
[gd_resource type="Theme" load_steps=3 format=3 uid="uid://b07fevr214mmr"]
[ext_resource type="FontFile" uid="uid://oq8ue2qrfijg" path="res://assets/fonts/Silkscreen/Silkscreen-Regular.ttf" id="1_qb3fo"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qb3fo"]
content_margin_left = 12.0
content_margin_top = 12.0
content_margin_right = 12.0
content_margin_bottom = 12.0
bg_color = Color(0, 0, 0, 1)
draw_center = false
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0, 0, 0, 0.423529)
corner_detail = 1
anti_aliasing = false
[resource]
default_font = ExtResource("1_qb3fo")
AdvisoryHeading/base_type = &"Label"
AdvisoryHeading/font_sizes/font_size = 48
AdvisoryPanelContainer/base_type = &"PanelContainer"
AdvisoryPanelContainer/styles/panel = SubResource("StyleBoxFlat_qb3fo")
AdvisoryText/base_type = &"Label"
AdvisoryText/font_sizes/font_size = 18
AlertLabel/base_type = &"Label"
AlertLabel/colors/font_color = Color(1, 0, 0, 1)
AlertLabel/colors/font_outline_color = Color(0, 0, 0, 1)

View File

@ -23,4 +23,5 @@ func play_tank_full_alert() -> void:
func _on_clear_alert() -> void:
alert_clear_player.play("alert_clear")
if World.instance.manager.alert_level >= 2:
alert_clear_player.play("alert_clear")

View File

@ -458,10 +458,10 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.2593
offset_top = -19.6536
offset_right = -20.2593
offset_bottom = -19.6536
offset_left = -20.7219
offset_top = -16.7788
offset_right = -20.7219
offset_bottom = -16.7788
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("4_ud8na")

View File

@ -13,6 +13,8 @@ var _track_list_dirty := false
@onready var alert_level_label: Label = %AlertLevelLabel
@onready var show_beast_info: CheckButton = %ShowBeastInfo
@onready var tracks_collected_list: VBoxContainer = %TracksCollectedList
@onready var append_target: Panel = %AppendTarget
@ -30,6 +32,11 @@ func _ready() -> void:
_build_track_list()
_update_alert_level()
@warning_ignore("unsafe_cast")
show_beast_info.set_pressed_no_signal(
ProjectSettings.get_setting_with_override("game/debug/show_beast_info") as bool
)
func _build_track_list() -> void:
tracks_collected_list.remove_child(append_target)
@ -138,3 +145,7 @@ func spawn_beast() -> void:
func kill_beasts() -> void:
for c: Node in get_tree().get_nodes_in_group(GrunkBeast.GROUP):
c.queue_free()
func set_show_beast_info(toggled_on: bool) -> void:
ProjectSettings.set_setting("game/debug/show_beast_info", toggled_on)

View File

@ -205,6 +205,12 @@ text = "Spawn grunkbeast"
layout_mode = 2
text = "Despawn all grunkbeasts"
[node name="ShowBeastInfo" type="CheckButton" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer8"]
unique_name_in_owner = true
layout_mode = 2
text = "Show beast info"
alignment = 2
[node name="HBoxContainer6" type="HBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 16
@ -379,6 +385,7 @@ preserve_on_drag = true
[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer7/ResetAlertLevel" to="." method="reset_alert_level"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer8/SpawnBeast" to="." method="spawn_beast"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer8/KillBeasts" to="." method="kill_beasts"]
[connection signal="toggled" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer8/ShowBeastInfo" to="." method="set_show_beast_info"]
[connection signal="child_entered_tree" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList" to="." method="_on_track_list_changed" unbinds=1]
[connection signal="child_exiting_tree" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList" to="." method="_on_track_list_changed" unbinds=1]
[connection signal="child_order_changed" from="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/HBoxContainer6/TracksCollectedColumn/TracksCollected/MarginContainer/ScrollContainer/MarginContainer/TracksCollectedList" to="." method="_on_track_list_changed"]

View File

@ -191,7 +191,7 @@ layout_mode = 2
[node name="Label" type="Label" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/TutorialHeading"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "SETTINGS_TUTORIAL_HEADING"
text = "SETTINGS_GAME_TUTORIAL_HEADING"
[node name="HSeparator" type="HSeparator" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/TutorialHeading"]
layout_mode = 2

View File

@ -1,10 +1,13 @@
class_name FloorSpawner extends BeastSpawner
## Beast spawner on the floor
@export var y_offset: float = 1.0
func do_spawn() -> void:
var instance: GrunkBeast = instantiate()
add_sibling(instance)
instance.global_transform = global_transform
instance.global_position.y += y_offset
instance.start_spawn()

View File

@ -14,4 +14,5 @@ func tick(_actor: Node, blackboard: Blackboard) -> int:
blackboard.set_value(
GrunkBeast.ANGER_KEY, clampf(value + d, GrunkBeast.anger_min, GrunkBeast.anger_max)
)
print_debug("Beast anger increased by ", d, " by action ", name)
return SUCCESS

View File

@ -10,7 +10,7 @@ class_name PursueTarget extends ActionLeaf
@onready var nav_agent: NavigationAgent3D = %NavAgent
func tick(actor: Node, blackboard: Blackboard) -> int:
func tick(_actor: Node, blackboard: Blackboard) -> int:
if not blackboard.has_value(blackboard_key):
return FAILURE

View File

@ -14,7 +14,7 @@ class_name SetNavTarget extends ActionLeaf
@onready var navigation_update_cooldown: Timer = %NavigationUpdateCooldown
func tick(actor: Node, blackboard: Blackboard) -> int:
func tick(_actor: Node, blackboard: Blackboard) -> int:
if not blackboard.has_value(blackboard_key):
return FAILURE

View File

@ -0,0 +1,11 @@
extends CanvasLayer
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
ProjectSettings.settings_changed.connect(_check_setting)
_check_setting()
func _check_setting() -> void:
visible = ProjectSettings.get_setting_with_override("game/debug/show_beast_info")

View File

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

View File

@ -109,6 +109,7 @@ func _ready() -> void:
func start_spawn() -> void:
apply_floor_snap()
model.play_spawn_animation()
root_block.await_signal(model.spawn_animation_finished)
# Set point of interest to spawn point
@ -195,10 +196,10 @@ func on_sound_detected(source: Vector3) -> void:
point_of_interest = source
if sound_detection_cooldown.is_stopped():
print_debug("Beast heard something from ", source)
print_debug("Beast heard something from ", source, "(+", GrunkBeast.anger_noise, ")")
anger_level += GrunkBeast.anger_noise
if source.distance_to(self.global_position) <= GrunkBeast.provocation_range:
print_debug("... And it was close, too!")
print_debug("... And it was close, too! (+", GrunkBeast.anger_noise_near, ")")
anger_level += GrunkBeast.anger_noise_near
sound_detection_cooldown.start()
# TODO animation?
@ -224,11 +225,11 @@ func _on_alarm_triggered(source: GunkAlarm) -> void:
if root_block.is_blocked():
return
print_debug("The beast was angered by the alarm!")
print_debug("The beast was angered by the alarm! (+", GrunkBeast.anger_alarm, ")")
point_of_interest = source.global_position
anger_level += GrunkBeast.anger_alarm
if World.instance.manager.alert_level >= GrunkBeast.anger_extra_alert_level:
print_debug("The beast got extra-angry!")
print_debug("The beast got extra-angry! (+", GrunkBeast.anger_alarm_extra, ")")
anger_level += GrunkBeast.anger_alarm_extra
@ -237,6 +238,6 @@ func _on_touch(_body: Node3D) -> void:
return
if touch_cooldown.is_stopped():
print_debug("Touched the beast!")
print_debug("Touched the beast! (+", GrunkBeast.anger_touch, ")")
anger_level += GrunkBeast.anger_touch
touch_cooldown.start()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=45 format=3 uid="uid://ehf5sg3ahvbf"]
[gd_scene load_steps=46 format=3 uid="uid://ehf5sg3ahvbf"]
[ext_resource type="Script" uid="uid://b5loa2u6s5l5c" path="res://src/player/rigid_body_physics.gd" id="2_4alar"]
[ext_resource type="PackedScene" uid="uid://brrd33217oplv" path="res://src/world/grunk_beast/shambler/shambler.tscn" id="2_csisu"]
@ -36,6 +36,7 @@
[ext_resource type="Script" uid="uid://o625e667ig2e" path="res://src/world/grunk_beast/behaviors/conditions/point_in_range.gd" id="34_vbkm0"]
[ext_resource type="Script" uid="uid://dsf3a8vlolhx8" path="res://addons/beehave/nodes/decorators/succeeder.gd" id="35_4alar"]
[ext_resource type="Script" uid="uid://c7n3lak5yhrpv" path="res://src/world/grunk_beast/behaviors/decorators/random_chance.gd" id="36_uy7at"]
[ext_resource type="Script" uid="uid://dw3t84dfacj2a" path="res://src/world/grunk_beast/debug_canvas_layer.gd" id="37_uy7at"]
[sub_resource type="Curve" id="Curve_sm756"]
_limits = [0.0, 10.0, 0.0, 150.0]
@ -49,7 +50,7 @@ radius = 0.4
radius = 9.0
[sub_resource type="SphereShape3D" id="SphereShape3D_1cnlk"]
radius = 2.0
radius = 1.7
[sub_resource type="SphereShape3D" id="SphereShape3D_3gbao"]
radius = 1.4
@ -158,7 +159,7 @@ one_shot = true
[node name="TouchCooldown" type="Timer" parent="."]
unique_name_in_owner = true
wait_time = 0.5
wait_time = 0.8
one_shot = true
[node name="AngerDecay" type="Timer" parent="."]
@ -389,7 +390,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x"
script = ExtResource("11_mbqcc")
mean_time = 4.0
st_dev_time = 0.6
wait_time = 4.75634
wait_time = 4.22028
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomInvestigationTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/TrackingMode/ActionSelector/InvestigateAction/AlwaysSucceedDecorator/InvestigateSequence/RandomDelay"]
@ -483,7 +484,7 @@ metadata/_custom_type_script = "uid://bogt3htgqe12s"
script = ExtResource("11_mbqcc")
mean_time = 9.0
st_dev_time = 1.0
wait_time = 9.92344
wait_time = 9.39944
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkingMode/RandomDelay"]
@ -509,6 +510,7 @@ metadata/_custom_type_script = "uid://dme5f24l0edsf"
[node name="DebugCanvasLayer" type="CanvasLayer" parent="."]
unique_name_in_owner = true
layer = 10
script = ExtResource("37_uy7at")
[node name="MarginContainer" type="MarginContainer" parent="DebugCanvasLayer"]
offset_right = 40.0

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=16 format=3 uid="uid://d2664rpg4losx"]
[gd_scene load_steps=14 format=3 uid="uid://d2664rpg4losx"]
[ext_resource type="PackedScene" uid="uid://bi5mxt5s4aq1a" path="res://assets/npc/grunk_beast/grunk_beast.gltf" id="1_hoss2"]
[ext_resource type="Script" uid="uid://dkll8s6kwb41r" path="res://src/world/grunk_beast/procedural_grunk_beast/start_ik.gd" id="2_qic24"]
@ -7,7 +7,6 @@
[ext_resource type="Script" uid="uid://7is3sa00qejh" path="res://src/world/grunk_beast/procedural_grunk_beast/ik_target.gd" id="4_3gbao"]
[ext_resource type="Script" uid="uid://bpyovjodpxjpb" path="res://src/world/grunk_beast/procedural_grunk_beast/step_ray.gd" id="4_faau1"]
[ext_resource type="Script" uid="uid://c1gitpy7s78ev" path="res://src/world/grunk_beast/procedural_grunk_beast/target_container.gd" id="5_wffas"]
[ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="5_xuag8"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_mbqcc"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2roq2"]
@ -18,14 +17,6 @@ seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("6_mbqcc")
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_fk1xc"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("6_mbqcc")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_7fplw"]
frequency = 0.0703
@ -35,48 +26,60 @@ height = 32
depth = 128
noise = SubResource("FastNoiseLite_7fplw")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vvw1q"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ren1j"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_0gxpq")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/pan_speed = Vector2(0, 0)
shader_parameter/time_scale = 0.2
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/time_scale = 0.2
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("5_xuag8")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/bump_strength = 1.0
shader_parameter/fresnel_color = Color(1, 1, 1, 1)
shader_parameter/fresnel_power = 4.0
shader_parameter/fresnel_intensity = 0.0
shader_parameter/iridescence_color = Color(1, 1, 1, 1)
shader_parameter/iridescence_power = 4.0
shader_parameter/iridescence_intensity = 0.0
shader_parameter/overlay_emission_scale = 1.0
shader_parameter/jitter_magnitude = 0.3
shader_parameter/jitter_time_scale = 0.6
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ml8dd"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7gi2a"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_0gxpq")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/pan_speed = Vector2(0, 0)
shader_parameter/time_scale = 0.2
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/time_scale = 0.2
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("5_xuag8")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/bump_strength = 1.0
shader_parameter/fresnel_color = Color(1, 1, 1, 1)
shader_parameter/fresnel_power = 4.0
shader_parameter/fresnel_intensity = 0.0
shader_parameter/iridescence_color = Color(1, 1, 1, 1)
shader_parameter/iridescence_power = 4.0
shader_parameter/iridescence_intensity = 0.0
shader_parameter/overlay_emission_scale = 1.0
shader_parameter/jitter_magnitude = 0.1
shader_parameter/jitter_time_scale = 0.6
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
@ -93,10 +96,10 @@ transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0,
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
[node name="Body" parent="Armature/Skeleton3D" index="0"]
surface_material_override/0 = SubResource("ShaderMaterial_vvw1q")
surface_material_override/0 = SubResource("ShaderMaterial_ren1j")
[node name="Leg" parent="Armature/Skeleton3D" index="1"]
surface_material_override/0 = SubResource("ShaderMaterial_ml8dd")
surface_material_override/0 = SubResource("ShaderMaterial_7gi2a")
[node name="FrontLeftLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="2"]
root_bone = &"Leg1.F.L"

View File

@ -59,6 +59,7 @@ animation = &"walk_front"
animation = &"walk_rear"
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_nayyt"]
graph_offset = Vector2(-1297.66, 69.5868)
nodes/anim_scale/node = SubResource("AnimationNodeTimeScale_s7rwx")
nodes/anim_scale/position = Vector2(280, 140)
nodes/emerge_floor/node = SubResource("AnimationNodeAnimation_vmxrd")
@ -437,6 +438,7 @@ draw_pass_1 = SubResource("QuadMesh_10hsf")
[node name="SpawnRift" type="MeshInstance3D" parent="SpawnEffects" index="3"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0.01, -0.385)
visible = false
gi_mode = 0
mesh = SubResource("PlaneMesh_xlxrx")
skeleton = NodePath("../..")

View File

@ -22,6 +22,12 @@ const MASK_THRESHOLD := 0.5
@export var source_gunk_material: ShaderMaterial
@export_group("Base Materials")
@export var base_material_index := 0
@export var base_uv_scale := Vector3.ONE
@export var base_normal_map: Texture2D
@export var base_normal_blend := 0.6
var meshtool := MeshDataTool.new()
var _polyline_buffer: Array[Vector2] = []
@ -68,6 +74,22 @@ func _ready() -> void:
mat_instance.next_pass = mesh_instance.material_overlay
mesh_instance.material_overlay = mat_instance
# Extract what we can from a base material, if we can find one.
var base_material: Material = mesh_instance.get_surface_override_material(base_material_index)
if not base_material:
base_material = mesh_instance.mesh.surface_get_material(base_material_index)
var standard_base_mat: StandardMaterial3D = base_material as StandardMaterial3D
if not base_normal_map and standard_base_mat:
base_normal_map = standard_base_mat.normal_texture
base_uv_scale = standard_base_mat.uv1_scale
if base_normal_map:
mat_instance.set_shader_parameter("base_normal_map", base_normal_map)
mat_instance.set_shader_parameter("normal_blend", base_normal_blend)
mat_instance.set_shader_parameter("base_uv_scale", base_uv_scale)
_deferred_init.call_deferred()
# Initialize meshtool

View File

@ -1,13 +1,134 @@
[gd_scene load_steps=17 format=3 uid="uid://kctp5erogwcb"]
[gd_scene load_steps=31 format=3 uid="uid://kctp5erogwcb"]
[ext_resource type="Script" uid="uid://bde7cglaqobkd" path="res://src/world/mechanics/listener/listener.gd" id="1_htscg"]
[ext_resource type="Script" uid="uid://bde7cglaqobkd" path="res://src/world/mechanics/listener/gunk_listener.gd" id="1_htscg"]
[ext_resource type="Script" uid="uid://cfsiyhhrcua6o" path="res://src/world/game_sound/game_sound_listener.gd" id="2_htscg"]
[ext_resource type="PackedScene" uid="uid://c2c0ooj1re3dk" path="res://src/world/mechanics/listener/listener_model.tscn" id="3_r42ft"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk/gunk.gdshader" id="4_gt631"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="5_gg3ey"]
[ext_resource type="Texture2D" uid="uid://bl1aniu87mioa" path="res://assets/particles/light_02.png" id="7_pp7wn"]
[sub_resource type="SphereShape3D" id="SphereShape3D_2ibh1"]
radius = 1.0
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2roq2"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("5_gg3ey")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_7fplw"]
frequency = 0.0703
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_omayi"]
width = 32
height = 32
depth = 128
noise = SubResource("FastNoiseLite_7fplw")
[sub_resource type="Gradient" id="Gradient_ih22n"]
offsets = PackedFloat32Array(0, 0.001, 0.05)
colors = PackedColorArray(0, 0, 0, 1, 0.25098, 0.878431, 1, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_v2pcm"]
gradient = SubResource("Gradient_ih22n")
fill = 1
fill_from = Vector2(0.5, 0.5)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_4io3x"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_gt631")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/pan_speed = Vector2(0, 0)
shader_parameter/time_scale = 0.2
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/bump_strength = 10.0
shader_parameter/fresnel_color = Color(0.25, 0.88, 1, 1)
shader_parameter/fresnel_power = 4.0
shader_parameter/fresnel_intensity = 0.0
shader_parameter/iridescence_color = Color(1, 1, 1, 1)
shader_parameter/iridescence_power = 4.0
shader_parameter/iridescence_intensity = 0.0
shader_parameter/overlay_emission = SubResource("GradientTexture2D_v2pcm")
shader_parameter/overlay_emission_scale = 0.02
shader_parameter/jitter_magnitude = 0.4
shader_parameter/jitter_time_scale = 0.1
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_pp7wn"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("5_gg3ey")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_c5snp"]
frequency = 0.0703
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_q7kpl"]
width = 32
height = 32
depth = 128
noise = SubResource("FastNoiseLite_c5snp")
[sub_resource type="Gradient" id="Gradient_mkgnp"]
resource_local_to_scene = true
offsets = PackedFloat32Array(0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008)
colors = PackedColorArray(0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_l8xpq"]
resource_local_to_scene = true
gradient = SubResource("Gradient_mkgnp")
width = 32
height = 32
fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 1)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_n7js6"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_gt631")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_pp7wn")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.66, 0.943333, 1, 1)
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/pan_speed = Vector2(0, 0)
shader_parameter/time_scale = 0.2
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.2
shader_parameter/bump_strength = 10.0
shader_parameter/fresnel_color = Color(0.25, 0.88, 1, 1)
shader_parameter/fresnel_power = 4.0
shader_parameter/fresnel_intensity = 0.0
shader_parameter/iridescence_color = Color(1, 1, 1, 1)
shader_parameter/iridescence_power = 4.0
shader_parameter/iridescence_intensity = 0.0
shader_parameter/overlay_emission = SubResource("GradientTexture2D_l8xpq")
shader_parameter/overlay_emission_scale = 6.0
shader_parameter/jitter_magnitude = 0.4
shader_parameter/jitter_time_scale = 0.1
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_q7kpl")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="Curve" id="Curve_pp7wn"]
_limits = [0.0, 0.3, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 1.51554, 0, 0, Vector2(0.101629, 0.115028), 0.436038, 0.436038, 0, 0, Vector2(0.421742, 0.0779494), 0.21293, 0.21293, 0, 0, Vector2(1, 0), -0.0537925, 0.0, 0, 0]
@ -65,7 +186,7 @@ radius = 0.125
height = 0.1
radius = 0.175
[node name="Listener" type="StaticBody3D" groups=["Persistent"]]
[node name="GunkListener" type="StaticBody3D" groups=["Persistent"]]
collision_layer = 36
collision_mask = 0
script = ExtResource("1_htscg")
@ -130,10 +251,14 @@ bones/38/rotation = Quaternion(0.247978, -1.26717e-07, -3.12779e-07, 0.968766)
bones/39/rotation = Quaternion(0.148338, 2.72959e-08, 3.46469e-07, 0.988937)
bones/40/rotation = Quaternion(0.237284, 5.07144e-06, -1.68211e-06, 0.97144)
[node name="Listener" parent="ListenerModel/Armature/Skeleton3D" index="0"]
surface_material_override/0 = SubResource("ShaderMaterial_4io3x")
surface_material_override/1 = SubResource("ShaderMaterial_n7js6")
[node name="PhysicalBoneSimulator3D" type="PhysicalBoneSimulator3D" parent="ListenerModel/Armature/Skeleton3D" index="6"]
[node name="PhysicalBone3D" type="PhysicalBone3D" parent="ListenerModel/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
transform = Transform3D(0.323524, 1.2631e-06, 1.20741, -3.57116e-07, 1.25, -1.21197e-06, -1.20741, -3.12658e-08, 0.323524, -4.8128e-06, 0.800007, -1.25657e-06)
transform = Transform3D(0.323527, 1.2631e-06, 1.20741, -3.57116e-07, 1.25, -1.21197e-06, -1.20741, -3.12629e-08, 0.323527, -4.8128e-06, 0.800007, -1.25658e-06)
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.38539e-08, -5.72204e-06, 3.9816e-06)
body_offset = Transform3D(1.25, 3.57626e-07, -3.57628e-07, -3.57627e-07, 1.25, -1.22189e-06, 3.57628e-07, 1.22189e-06, 1.25, -2.98139e-08, 7.15256e-06, -4.97699e-06)
bone_name = "Stem5"
@ -158,7 +283,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.14, 0)
shape = SubResource("CylinderShape3D_dqq13")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
transform = Transform3D(0.258814, 1.01046e-06, 0.96591, -2.85687e-07, 0.999981, -9.69562e-07, -0.965905, -2.50121e-08, 0.258815, -3.61278e-06, 0.875006, -1.01113e-06)
transform = Transform3D(0.258816, 1.01046e-06, 0.965909, -2.85686e-07, 0.999981, -9.69562e-07, -0.965904, -2.50099e-08, 0.258817, -3.61278e-06, 0.875006, -1.01114e-06)
shape = SubResource("CylinderShape3D_r42ft")
[node name="CooldownTimer" type="Timer" parent="."]

View File

@ -4,7 +4,7 @@
[ext_resource type="Resource" uid="uid://tgac5tnfx56r" path="res://src/world/world_manager.tres" id="2_5kmgb"]
[ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="2_6fy3g"]
[ext_resource type="Resource" uid="uid://0i72bf8ip1lx" path="res://src/world/spook_manager.tres" id="3_l0av5"]
[ext_resource type="PackedScene" uid="uid://ogcjwuvqo5rc" path="res://levels/testing/beast_spawner_test/beast_spawner_test.tscn" id="4_5kmgb"]
[ext_resource type="PackedScene" uid="uid://bov4ok76woyc" path="res://levels/ghost_ship/ghost_ship.tscn" id="4_5kmgb"]
[ext_resource type="PackedScene" uid="uid://c0uitm5cg88h1" path="res://src/ui/menus/kill_screen/kill_screen.tscn" id="6_l0av5"]
[ext_resource type="PackedScene" uid="uid://brknr57xc2cp0" path="res://src/ui/elements/save_icon/save_icon.tscn" id="7_5kmgb"]

View File

@ -147,4 +147,10 @@
- author: Peter Hull
- license: OFL 1.1
- retrieved from https://fonts.google.com/specimen/VT323
- assets/fonts/VT323
- assets/fonts/VT323
- Materials
- metal_plate_02
- author: Rob Tuytel
- license: CC0
- retrieved from https://polyhaven.com/a/metal_plate_02
- assets/materials/metal_plate_02