Compare commits

..

No commits in common. "main" and "v0.0.6" have entirely different histories.
main ... v0.0.6

95 changed files with 419 additions and 1700 deletions

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

Binary file not shown.

36
assets/black.png.import Normal file
View File

@ -0,0 +1,36 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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)

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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)

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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)

Binary file not shown.

View File

@ -1,34 +0,0 @@
[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,27 +3,25 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b0vorb12h2idg"
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"
path="res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://assets/props/overhead_light/overhead_light_burnout_E.png"
dest_files=["res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.s3tc.ctex", "res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.etc2.ctex"]
dest_files=["res://.godot/imported/overhead_light_burnout_E.png-ce71c7290fb299e0f7b60d0a9c7d4505.ctex"]
[params]
compress/mode=2
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=true
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@ -33,4 +31,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=0
detect_3d/compress_to=1

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=70 format=3 uid="uid://cwhmn3w8hoads"]
[gd_scene load_steps=71 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,8 +81,11 @@ texture_filter = 4
material = SubResource("StandardMaterial3D_kp5n7")
size = Vector2(3.5, 3)
[sub_resource type="BoxShape3D" id="BoxShape3D_wnav5"]
size = Vector3(3.5, 3, 0.1)
[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="StandardMaterial3D" id="StandardMaterial3D_f0xh4"]
resource_local_to_scene = true
@ -100,8 +103,8 @@ texture_filter = 4
material = SubResource("StandardMaterial3D_f0xh4")
size = Vector2(2, 0.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_cxsgl"]
size = Vector3(2, 0.5, 0.1)
[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="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)
@ -260,24 +263,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.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")
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.75, 0, 4.5)
shape = SubResource("ConcavePolygonShape3D_gim1e")
[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.55)
shape = SubResource("BoxShape3D_cxsgl")
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.25, 4.5)
shape = SubResource("ConcavePolygonShape3D_smvh1")
[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_a8b6q"]
[sub_resource type="ArrayMesh" id="ArrayMesh_20ek7"]
_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_a8b6q")
shadow_mesh = SubResource("ArrayMesh_20ek7")
[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 = 64
mask_dim = 32
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 = 64
mask_dim = 32
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/gunk_listener.tscn" id="22_arxka"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/listener.tscn" id="22_arxka"]
[ext_resource type="ArrayMesh" uid="uid://d0sdsir1hqnbu" path="res://assets/level/wall/wall_4.mesh" id="23_7ox1u"]
[ext_resource type="PackedScene" uid="uid://dgeg3kkogm71m" path="res://src/world/mechanics/alarm/gunk_alarm.tscn" id="23_osdhu"]
[ext_resource type="PackedScene" uid="uid://2yqi5u5eo025" path="res://src/world/gunk_node/grunk_nodule.tscn" id="24_6qtqj"]
@ -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 = 64
mask_dim = 32
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 = 64
mask_dim = 32
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 = 64
mask_dim = 32
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 = 64
mask_dim = 32
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 = 64
mask_dim = 32
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 = 64
mask_dim = 32
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/gunk_listener.tscn" id="10_4ybca"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/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,7 +1467,52 @@ 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, 3.8, -3, -4.7)
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)
[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)
@ -1841,6 +1886,89 @@ 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)
@ -2057,6 +2185,92 @@ 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

@ -1,226 +0,0 @@
[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.156165, -0.00400145, 0.124885, -0.0674853, 0.165533, 0.0896924, -0.105157, -0.112174, 0.127902, 0.192554, 2.76956, -1.03145)
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)
chitter = true
durability = 0.6
value = 400.0

View File

@ -1,20 +1,12 @@
[gd_scene load_steps=53 format=3 uid="uid://oowut88kr2ox"]
[gd_scene load_steps=43 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"]
@ -30,24 +22,6 @@
[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")
@ -77,6 +51,14 @@ 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
@ -90,31 +72,30 @@ 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/uv_scale = Vector2(2, 2)
shader_parameter/pan_speed = Vector2(0, 0)
shader_parameter/time_scale = 0.2
shader_parameter/fresnel_color = Color(0.25, 0.88, 1, 1)
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/normal_scale = 1.0
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/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/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)
@ -310,9 +291,6 @@ 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")
@ -322,9 +300,6 @@ 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")
@ -332,7 +307,6 @@ 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="."]
@ -368,10 +342,9 @@ 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.85878, 0)
light_color = Color(1, 1, 0.956863, 1)
light_indirect_energy = 16.0
shadow_enabled = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.9, 0)
light_energy = 2.0
light_indirect_energy = 8.0
omni_range = 10.0
[node name="TerminalCable" type="CSGPolygon3D" parent="."]
@ -450,11 +423,6 @@ 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,9 +91,6 @@ 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)
@ -246,9 +243,6 @@ 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/gunk_listener.tscn" id="13_awnx0"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/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/gunk_listener.tscn" id="12_e8utx"]
[ext_resource type="PackedScene" uid="uid://kctp5erogwcb" path="res://src/world/mechanics/listener/listener.tscn" id="12_e8utx"]
[sub_resource type="ArrayMesh" id="ArrayMesh_ix0jw"]
_surfaces = [{

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=65 format=4 uid="uid://dc4tts6342cuj"]
[gd_scene load_steps=61 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,7 +35,6 @@
[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"]
@ -67,40 +66,6 @@ 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)
@ -409,24 +374,6 @@ 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=10.0
gameplay/beast/anger_noise_near=30.0
gameplay/beast/provocation_range=5.5
gameplay/beast/anger_alarm=60.0
gameplay/beast/anger_alarm_extra=60.0
@ -123,8 +123,6 @@ 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,8 +28,32 @@ func _process(_delta: float) -> void:
(c as Node3D).global_position = child_pos
var collider: Object = get_collider()
if is_instance_valid(collider):
_connect_gunkable(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
)
laser_dust.emitting = true
@ -37,26 +61,3 @@ 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.5
const BRUSH_SCALE := 0.2
@export var damage := 0.0063 # ~8 seconds to destroy standard nodule

View File

@ -77,6 +77,7 @@ 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,9 +28,6 @@ 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
@ -111,7 +108,6 @@ func _process_hold_controls() -> void:
drop()
elif Input.is_action_just_pressed("fire"):
throw()
just_threw_object = true
func _physics_process(delta: float) -> void:
@ -119,10 +115,6 @@ 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,8 +216,7 @@ func _physics_process(delta: float) -> void:
firing = false
if tool:
# Tool use
# Lockout fire input after throwing an object until input is released.
if Input.is_action_pressed("fire") and not hold_component.just_threw_object:
if Input.is_action_pressed("fire"):
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: hint_default_black, filter_linear_mipmap_anisotropic, repeat_disable;
uniform sampler2D gunk_mask;
#endif
@ -72,26 +72,6 @@ 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,12 +5,6 @@ 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);
@ -19,32 +13,16 @@ void fragment() {
EMISSION = base_emission(UV, value);
SPECULAR = base_specular();
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;
// 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;
// add fresnel
vec3 world_normal = mat3(TANGENT, BINORMAL, NORMAL) * nmap;
EMISSION += rim_glow(
world_normal,
VIEW,

View File

@ -1,36 +0,0 @@
[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

@ -1,29 +0,0 @@
[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,30 +1,9 @@
[gd_resource type="Theme" load_steps=3 format=3 uid="uid://b07fevr214mmr"]
[gd_resource type="Theme" load_steps=2 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,5 +23,4 @@ func play_tank_full_alert() -> void:
func _on_clear_alert() -> void:
if World.instance.manager.alert_level >= 2:
alert_clear_player.play("alert_clear")
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.7219
offset_top = -16.7788
offset_right = -20.7219
offset_bottom = -16.7788
offset_left = -20.2593
offset_top = -19.6536
offset_right = -20.2593
offset_bottom = -19.6536
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("4_ud8na")

View File

@ -13,8 +13,6 @@ 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
@ -32,11 +30,6 @@ 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)
@ -145,7 +138,3 @@ 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,12 +205,6 @@ 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
@ -385,7 +379,6 @@ 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_GAME_TUTORIAL_HEADING"
text = "SETTINGS_TUTORIAL_HEADING"
[node name="HSeparator" type="HSeparator" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/TutorialHeading"]
layout_mode = 2

View File

@ -1,13 +1,10 @@
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,5 +14,4 @@ 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

@ -1,11 +0,0 @@
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

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

View File

@ -109,7 +109,6 @@ 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
@ -196,10 +195,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, "(+", GrunkBeast.anger_noise, ")")
print_debug("Beast heard something from ", source)
anger_level += GrunkBeast.anger_noise
if source.distance_to(self.global_position) <= GrunkBeast.provocation_range:
print_debug("... And it was close, too! (+", GrunkBeast.anger_noise_near, ")")
print_debug("... And it was close, too!")
anger_level += GrunkBeast.anger_noise_near
sound_detection_cooldown.start()
# TODO animation?
@ -225,11 +224,11 @@ func _on_alarm_triggered(source: GunkAlarm) -> void:
if root_block.is_blocked():
return
print_debug("The beast was angered by the alarm! (+", GrunkBeast.anger_alarm, ")")
print_debug("The beast was angered by the 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! (+", GrunkBeast.anger_alarm_extra, ")")
print_debug("The beast got extra-angry!")
anger_level += GrunkBeast.anger_alarm_extra
@ -238,6 +237,6 @@ func _on_touch(_body: Node3D) -> void:
return
if touch_cooldown.is_stopped():
print_debug("Touched the beast! (+", GrunkBeast.anger_touch, ")")
print_debug("Touched the beast!")
anger_level += GrunkBeast.anger_touch
touch_cooldown.start()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=46 format=3 uid="uid://ehf5sg3ahvbf"]
[gd_scene load_steps=45 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,7 +36,6 @@
[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]
@ -50,7 +49,7 @@ radius = 0.4
radius = 9.0
[sub_resource type="SphereShape3D" id="SphereShape3D_1cnlk"]
radius = 1.7
radius = 2.0
[sub_resource type="SphereShape3D" id="SphereShape3D_3gbao"]
radius = 1.4
@ -159,7 +158,7 @@ one_shot = true
[node name="TouchCooldown" type="Timer" parent="."]
unique_name_in_owner = true
wait_time = 0.8
wait_time = 0.5
one_shot = true
[node name="AngerDecay" type="Timer" parent="."]
@ -390,7 +389,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x"
script = ExtResource("11_mbqcc")
mean_time = 4.0
st_dev_time = 0.6
wait_time = 4.22028
wait_time = 4.75634
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomInvestigationTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/TrackingMode/ActionSelector/InvestigateAction/AlwaysSucceedDecorator/InvestigateSequence/RandomDelay"]
@ -484,7 +483,7 @@ metadata/_custom_type_script = "uid://bogt3htgqe12s"
script = ExtResource("11_mbqcc")
mean_time = 9.0
st_dev_time = 1.0
wait_time = 9.39944
wait_time = 9.92344
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkingMode/RandomDelay"]
@ -510,7 +509,6 @@ 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=14 format=3 uid="uid://d2664rpg4losx"]
[gd_scene load_steps=16 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,6 +7,7 @@
[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"]
@ -17,6 +18,14 @@ 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
@ -26,60 +35,48 @@ height = 32
depth = 128
noise = SubResource("FastNoiseLite_7fplw")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ren1j"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vvw1q"]
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/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/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/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_7gi2a"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ml8dd"]
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/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/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/jitter_magnitude = 0.1
shader_parameter/jitter_time_scale = 0.6
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
@ -96,10 +93,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_ren1j")
surface_material_override/0 = SubResource("ShaderMaterial_vvw1q")
[node name="Leg" parent="Armature/Skeleton3D" index="1"]
surface_material_override/0 = SubResource("ShaderMaterial_7gi2a")
surface_material_override/0 = SubResource("ShaderMaterial_ml8dd")
[node name="FrontLeftLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="2"]
root_bone = &"Leg1.F.L"

View File

@ -59,7 +59,6 @@ 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")
@ -438,7 +437,6 @@ 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,12 +22,6 @@ 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] = []
@ -74,22 +68,6 @@ 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,134 +1,13 @@
[gd_scene load_steps=31 format=3 uid="uid://kctp5erogwcb"]
[gd_scene load_steps=17 format=3 uid="uid://kctp5erogwcb"]
[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://bde7cglaqobkd" path="res://src/world/mechanics/listener/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]
@ -186,7 +65,7 @@ radius = 0.125
height = 0.1
radius = 0.175
[node name="GunkListener" type="StaticBody3D" groups=["Persistent"]]
[node name="Listener" type="StaticBody3D" groups=["Persistent"]]
collision_layer = 36
collision_mask = 0
script = ExtResource("1_htscg")
@ -251,14 +130,10 @@ 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.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)
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)
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"
@ -283,7 +158,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.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)
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)
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://bov4ok76woyc" path="res://levels/ghost_ship/ghost_ship.tscn" id="4_5kmgb"]
[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://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,10 +147,4 @@
- author: Peter Hull
- license: OFL 1.1
- retrieved from https://fonts.google.com/specimen/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
- assets/fonts/VT323