Popping grunk nodules!
Some checks failed
linting & formatting / build (push) Failing after 5s

This commit is contained in:
Rob Kelly 2025-03-12 00:18:27 -06:00
parent 0a6c9807ec
commit e39066e978
25 changed files with 537 additions and 6 deletions

Binary file not shown.

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

Binary file not shown.

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

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cm1jrvx7ftx4c"
path.s3tc="res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/black.png"
dest_files=["res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.s3tc.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.

Binary file not shown.

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

Binary file not shown.

View File

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

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

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgwgmxwjgwbwr"
path="res://.godot/imported/splatter_2.png-9990293bc035c8e51b6c307a177f51f7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/particles/splatter_2.png"
dest_files=["res://.godot/imported/splatter_2.png-9990293bc035c8e51b6c307a177f51f7.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=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
levels/ghost_ship/airlock/floor_mask.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dthjo3ymo7say"
path.s3tc="res://.godot/imported/floor_mask.png-1a0b0eeca154b970656cd809641fb147.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://levels/ghost_ship/airlock/floor_mask.png"
dest_files=["res://.godot/imported/floor_mask.png-1a0b0eeca154b970656cd809641fb147.s3tc.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

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=110 format=4 uid="uid://crydi5cjgfwe5"] [gd_scene load_steps=112 format=4 uid="uid://crydi5cjgfwe5"]
[ext_resource type="PackedScene" uid="uid://oowut88kr2ox" path="res://levels/ghost_ship/player_ship/player_ship.tscn" id="1_2pyr1"] [ext_resource type="PackedScene" uid="uid://oowut88kr2ox" path="res://levels/ghost_ship/player_ship/player_ship.tscn" id="1_2pyr1"]
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="2_2egij"] [ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="2_2egij"]
[ext_resource type="Texture2D" uid="uid://c0a6flcoixsr2" path="res://assets/level/floor/floor_1_C.png" id="3_1chi6"] [ext_resource type="Texture2D" uid="uid://c0a6flcoixsr2" path="res://assets/level/floor/floor_1_C.png" id="3_1chi6"]
[ext_resource type="Texture2D" uid="uid://dthjo3ymo7say" path="res://levels/ghost_ship/airlock/floor_mask.png" id="3_35kna"]
[ext_resource type="Texture2D" uid="uid://dxuxhlycaamcy" path="res://assets/level/floor/floor_1_M.png" id="4_3ryvr"] [ext_resource type="Texture2D" uid="uid://dxuxhlycaamcy" path="res://assets/level/floor/floor_1_M.png" id="4_3ryvr"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="5_1njh5"] [ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="5_1njh5"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_3kphg"] [ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_3kphg"]
@ -21,6 +22,7 @@
[ext_resource type="Texture2D" uid="uid://ckgmc6j7r0rh1" path="res://assets/level/t-junction/t-junction_2_C.png" id="18_qu6vm"] [ext_resource type="Texture2D" uid="uid://ckgmc6j7r0rh1" path="res://assets/level/t-junction/t-junction_2_C.png" id="18_qu6vm"]
[ext_resource type="Texture2D" uid="uid://cjbem2fg50idh" path="res://assets/level/t-junction/t-junction_1_C.png" id="18_sqa4l"] [ext_resource type="Texture2D" uid="uid://cjbem2fg50idh" path="res://assets/level/t-junction/t-junction_1_C.png" id="18_sqa4l"]
[ext_resource type="Texture2D" uid="uid://cgsvlb8qc5yml" path="res://assets/level/t-junction/t-junction_1_M.png" id="19_17ivy"] [ext_resource type="Texture2D" uid="uid://cgsvlb8qc5yml" path="res://assets/level/t-junction/t-junction_1_M.png" id="19_17ivy"]
[ext_resource type="PackedScene" uid="uid://2yqi5u5eo025" path="res://src/world/gunk_node/grunk_nodule.tscn" id="19_ji5cn"]
[ext_resource type="Texture2D" uid="uid://ckhslm3gb3xsk" path="res://assets/level/t-junction/t-junction_2_M.png" id="19_v8y1j"] [ext_resource type="Texture2D" uid="uid://ckhslm3gb3xsk" path="res://assets/level/t-junction/t-junction_2_M.png" id="19_v8y1j"]
[ext_resource type="Texture2D" uid="uid://c3nw2htq0gmit" path="res://assets/level/t-junction/t-junction_2_N.png" id="20_54or8"] [ext_resource type="Texture2D" uid="uid://c3nw2htq0gmit" path="res://assets/level/t-junction/t-junction_2_N.png" id="20_54or8"]
[ext_resource type="Texture2D" uid="uid://dt4olb3vehawo" path="res://assets/level/t-junction/t-junction_1_N.png" id="20_ji5cn"] [ext_resource type="Texture2D" uid="uid://dt4olb3vehawo" path="res://assets/level/t-junction/t-junction_1_N.png" id="20_ji5cn"]
@ -68,6 +70,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d1yty"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d1yty"]
resource_local_to_scene = true resource_local_to_scene = true
@ -132,6 +138,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qu6vm"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qu6vm"]
resource_local_to_scene = true resource_local_to_scene = true
@ -231,6 +241,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"]
resource_local_to_scene = true resource_local_to_scene = true
@ -294,6 +308,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ruwlj"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ruwlj"]
resource_local_to_scene = true resource_local_to_scene = true
@ -340,6 +358,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_rlaob"] [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_rlaob"]
load_path = "res://.godot/imported/hallway_1_C.png-9a126edbc39655070332e0af1a5ee780.ctex" load_path = "res://.godot/imported/hallway_1_C.png-9a126edbc39655070332e0af1a5ee780.ctex"
@ -414,6 +436,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_okeuk"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_okeuk"]
albedo_texture = ExtResource("18_sqa4l") albedo_texture = ExtResource("18_sqa4l")
@ -476,6 +502,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_j0yby"] [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_j0yby"]
load_path = "res://.godot/imported/hallway_3_C.png-9b45a5b023d4947b4c559574fc3e621c.ctex" load_path = "res://.godot/imported/hallway_3_C.png-9b45a5b023d4947b4c559574fc3e621c.ctex"
@ -547,6 +577,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lfacn"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lfacn"]
albedo_texture = SubResource("CompressedTexture2D_rlaob") albedo_texture = SubResource("CompressedTexture2D_rlaob")
@ -606,6 +640,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54end"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54end"]
transparency = 2 transparency = 2
@ -687,6 +725,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_ji5cn") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_ji5cn")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_35kna") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_35kna")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_4a0u4") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_4a0u4")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sqa4l"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sqa4l"]
resource_local_to_scene = true resource_local_to_scene = true
@ -750,6 +792,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_2h3rs"] [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_2h3rs"]
load_path = "res://.godot/imported/hallway_2_C.png-368e035781dbfc292f80210e8377e1f9.ctex" load_path = "res://.godot/imported/hallway_2_C.png-368e035781dbfc292f80210e8377e1f9.ctex"
@ -812,6 +858,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.75)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12)
[node name="Floor" parent="Airlock" instance=ExtResource("2_2egij")] [node name="Floor" parent="Airlock" instance=ExtResource("2_2egij")]
initial_mask = ExtResource("3_35kna")
source_gunk_material = SubResource("ShaderMaterial_sqa4l") source_gunk_material = SubResource("ShaderMaterial_sqa4l")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Floor"] [node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Floor"]
@ -822,7 +869,8 @@ skeleton = NodePath("../..")
shape = SubResource("ConcavePolygonShape3D_yvipw") shape = SubResource("ConcavePolygonShape3D_yvipw")
[node name="Ceiling" parent="Airlock" instance=ExtResource("2_2egij")] [node name="Ceiling" parent="Airlock" instance=ExtResource("2_2egij")]
transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 3, 0) transform = Transform3D(-1, -7.64274e-15, 8.74228e-08, 0, -1, -8.74228e-08, 8.74228e-08, -8.74228e-08, 1, 0, 3, 0)
initial_mask = ExtResource("3_35kna")
source_gunk_material = SubResource("ShaderMaterial_17ivy") source_gunk_material = SubResource("ShaderMaterial_17ivy")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Ceiling"] [node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Ceiling"]
@ -923,6 +971,16 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 1.5, 0.1)
[node name="Bulkhead" parent="Airlock/FarWall" instance=ExtResource("18_17ivy")] [node name="Bulkhead" parent="Airlock/FarWall" instance=ExtResource("18_17ivy")]
[node name="GrunkNodule" parent="Airlock" instance=ExtResource("19_ji5cn")]
transform = Transform3D(1, 0, 0, 0, 0.866026, -0.5, 0, 0.5, 0.866026, -2.05, 0.15, -4.5)
value = 4000.0
[node name="GrunkNodule2" parent="Airlock" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353554, 0, -0.353554, 0.353553, -1.1, 0.15, -4.3)
[node name="GrunkNodule3" parent="Airlock" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353554, 0, -0.353554, 0.353553, 1.4, 2.65, -4.3)
[node name="Corridor1" type="Node3D" parent="."] [node name="Corridor1" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -22.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -22.5)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=44 format=4 uid="uid://16ds4fvv72xk"] [gd_scene load_steps=45 format=4 uid="uid://16ds4fvv72xk"]
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="1_a67lu"] [ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="1_a67lu"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_h436a"] [ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_h436a"]
@ -9,6 +9,7 @@
[ext_resource type="ArrayMesh" uid="uid://5jt7xxr05lw3" path="res://assets/level/hallway/hallway_2.mesh" id="8_hrvvi"] [ext_resource type="ArrayMesh" uid="uid://5jt7xxr05lw3" path="res://assets/level/hallway/hallway_2.mesh" id="8_hrvvi"]
[ext_resource type="ArrayMesh" uid="uid://o6k7ebet848p" path="res://assets/level/hallway/hallway_3.mesh" id="9_2roq2"] [ext_resource type="ArrayMesh" uid="uid://o6k7ebet848p" path="res://assets/level/hallway/hallway_3.mesh" id="9_2roq2"]
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="9_p27ol"] [ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="9_p27ol"]
[ext_resource type="PackedScene" uid="uid://2yqi5u5eo025" path="res://src/world/gunk_node/grunk_nodule.tscn" id="10_2roq2"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_cj8bk"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_cj8bk"]
@ -70,6 +71,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_powch"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_powch"]
albedo_color = Color(1, 0.403922, 1, 1) albedo_color = Color(1, 0.403922, 1, 1)
@ -126,6 +131,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2h3rs"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2h3rs"]
albedo_color = Color(1, 0.403922, 1, 1) albedo_color = Color(1, 0.403922, 1, 1)
@ -184,6 +193,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0psug"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0psug"]
albedo_color = Color(1, 0.403922, 1, 1) albedo_color = Color(1, 0.403922, 1, 1)
@ -240,6 +253,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hrvvi"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hrvvi"]
albedo_color = Color(1, 0.403922, 1, 1) albedo_color = Color(1, 0.403922, 1, 1)
@ -298,6 +315,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p1wtp"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p1wtp"]
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6) data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
@ -320,6 +341,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2l4r6"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2l4r6"]
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6) data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
@ -342,6 +367,10 @@ shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi") shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2") shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc") shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_tmxet"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_tmxet"]
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6) data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
@ -473,3 +502,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0834363, 3.98781, -0.965698
light_energy = 8.0 light_energy = 8.0
shadow_enabled = true shadow_enabled = true
omni_range = 20.0 omni_range = 20.0
[node name="GrunkNodule" parent="." instance=ExtResource("10_2roq2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 1, -1)
[node name="GrunkNodule2" parent="." instance=ExtResource("10_2roq2")]
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, -6, 1, 1)

View File

@ -0,0 +1,112 @@
[gd_scene load_steps=17 format=3 uid="uid://xlt78xc1tmkl"]
[ext_resource type="Texture2D" uid="uid://cgwgmxwjgwbwr" path="res://assets/particles/splatter_2.png" id="1_5xu2x"]
[ext_resource type="Texture2D" uid="uid://bhoai6xv53tqm" path="res://assets/particles/splatter_1.png" id="2_bt63p"]
[sub_resource type="Gradient" id="Gradient_5xu2x"]
offsets = PackedFloat32Array(0, 0.291304, 0.526087, 1)
colors = PackedColorArray(2, 2, 2, 1, 0, 0.101961, 0.301961, 1, 0, 0.0313726, 0.101961, 1, 0, 0, 0, 0)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bt63p"]
gradient = SubResource("Gradient_5xu2x")
use_hdr = true
[sub_resource type="Curve" id="Curve_y6klh"]
_data = [Vector2(0.148438, 0.19687), 0.0, 0.0, 0, 0, Vector2(0.339844, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_t00bd"]
curve = SubResource("Curve_y6klh")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_5xu2x"]
lifetime_randomness = 0.57
angle_min = 1.07288e-05
angle_max = 360.0
direction = Vector3(0, 0, 0)
spread = 180.0
initial_velocity_min = 8.0
initial_velocity_max = 8.0
scale_curve = SubResource("CurveTexture_t00bd")
color_ramp = SubResource("GradientTexture1D_bt63p")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bt63p"]
transparency = 1
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("1_5xu2x")
texture_filter = 2
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_y6klh"]
material = SubResource("StandardMaterial3D_bt63p")
size = Vector2(0.5, 0.5)
[sub_resource type="Curve" id="Curve_bt63p"]
_limits = [0.0, 0.7, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.199219, 0.7), -0.414907, -0.414907, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_2iem1"]
curve = SubResource("Curve_bt63p")
[sub_resource type="Curve" id="Curve_t00bd"]
_data = [Vector2(0, 0), 0.0, 1.334, 0, 0, Vector2(1, 1), -0.0498424, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_72g1e"]
curve = SubResource("Curve_t00bd")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_2iem1"]
lifetime_randomness = 0.55
emission_shape = 1
emission_sphere_radius = 0.9
angle_min = 1.07288e-05
angle_max = 360.0
direction = Vector3(0, 1, 0)
spread = 0.0
initial_velocity_max = 0.05
gravity = Vector3(0, -0.3, 0)
scale_curve = SubResource("CurveTexture_72g1e")
color = Color(0.9, 0.983333, 1, 1)
alpha_curve = SubResource("CurveTexture_2iem1")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ckw5w"]
transparency = 1
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("2_bt63p")
texture_filter = 2
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_6adkd"]
material = SubResource("StandardMaterial3D_ckw5w")
size = Vector2(2, 2)
[node name="GrunkSplatter" type="GPUParticles3D"]
amount = 32
lifetime = 0.3
explosiveness = 1.0
process_material = SubResource("ParticleProcessMaterial_5xu2x")
draw_pass_1 = SubResource("QuadMesh_y6klh")
[node name="SubSplatter" type="GPUParticles3D" parent="."]
amount = 4
lifetime = 0.3
explosiveness = 0.82
interpolate = false
fract_delta = false
process_material = SubResource("ParticleProcessMaterial_2iem1")
draw_pass_1 = SubResource("QuadMesh_6adkd")
[node name="FreeTimer" type="Timer" parent="."]
wait_time = 0.3
one_shot = true
autostart = true
[connection signal="timeout" from="FreeTimer" to="." method="queue_free"]

View File

@ -19,6 +19,8 @@ func _fire() -> void:
(collider as GunkBody).paint_continuous( (collider as GunkBody).paint_continuous(
point, laser.get_collision_normal(), point_scale point, laser.get_collision_normal(), point_scale
) )
if collider is GunkNode:
(collider as GunkNode).hit()
spray_effect.visible = true spray_effect.visible = true
beam_particles_1.emitting = true beam_particles_1.emitting = true

View File

@ -19,8 +19,9 @@ func _fire() -> void:
for laser: LaserCast in spray_casts.get_children(): for laser: LaserCast in spray_casts.get_children():
if laser.is_colliding(): if laser.is_colliding():
var target := laser.get_collider() as GunkBody var collider := laser.get_collider()
if target: if collider is GunkBody:
var target := collider as GunkBody
var point := laser.get_collision_point() var point := laser.get_collision_point()
var normal := laser.get_collision_normal() var normal := laser.get_collision_normal()
@ -34,6 +35,8 @@ func _fire() -> void:
prev_target = target prev_target = target
prev_point = point prev_point = point
prev_normal = normal prev_normal = normal
elif collider is GunkNode:
(collider as GunkNode).hit()
spray_effect.visible = true spray_effect.visible = true
beam_particles_1.emitting = true beam_particles_1.emitting = true

View File

@ -1,6 +1,7 @@
shader_type spatial; shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_disabled, diffuse_burley, specular_schlick_ggx, sss_mode_skin; render_mode diffuse_burley, specular_schlick_ggx, sss_mode_skin;
group_uniforms gunk_material;
uniform vec3 color_1: source_color = vec3(0.0, 0.03, 0.1); uniform vec3 color_1: source_color = vec3(0.0, 0.03, 0.1);
uniform vec3 color_2: source_color = vec3(0.0, 0.1, 0.3); uniform vec3 color_2: source_color = vec3(0.0, 0.1, 0.3);
uniform vec3 emission_color: source_color = vec3(0.25, 0.88, 1.0); uniform vec3 emission_color: source_color = vec3(0.25, 0.88, 1.0);
@ -24,6 +25,24 @@ uniform sampler2D gunk_mask;
uniform highp sampler3D gunk_noise; uniform highp sampler3D gunk_noise;
uniform highp sampler3D gunk_normal_map; uniform highp sampler3D gunk_normal_map;
group_uniforms jitter;
uniform mediump float jitter_magnitude = 0.0;
uniform lowp float jitter_time_scale = 0.1;
uniform highp sampler3D jitter_noise;
group_uniforms inflation;
uniform highp float vertex_inflation = 0.0;
uniform highp float inflation_pixellation = 10.0;
void vertex() {
float mixer = VERTEX.x + 0.553 * VERTEX.z + 1.618 * VERTEX.y;
float local_time = floor(TIME * jitter_time_scale * time_pixellation) / time_pixellation;
float sample = texture(jitter_noise, vec3(cos(mixer), sin(mixer), local_time)).r;
float inflation = floor(vertex_inflation * inflation_pixellation) / inflation_pixellation;
float jitter = jitter_magnitude * (sample - 0.5 + inflation);
VERTEX *= 1.0 + jitter;
}
float hardstep(float value) { float hardstep(float value) {
float x = clamp(value, 0.0, 1.0); float x = clamp(value, 0.0, 1.0);

View File

@ -0,0 +1,17 @@
/* The shuddererrrrrrrr
*/
shader_type spatial;
uniform mediump float jitter_magnitude = 0.1;
uniform mediump float time_scale = 0.1;
uniform lowp float time_pixellation = 100.0;
uniform highp sampler3D jitter_noise;
void vertex() {
float mixer = VERTEX.x + 0.553 * VERTEX.z + 1.618 * VERTEX.y;
float local_time = floor(TIME * time_scale * time_pixellation) / time_pixellation;
float sample = texture(jitter_noise, vec3(cos(mixer), sin(mixer), local_time)).r;
float jitter = jitter_magnitude * (sample - 0.5);
VERTEX *= 1.0 + jitter;
}

View File

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

View File

@ -0,0 +1,22 @@
extends GunkNode
@export var jitter_scale_factor := 0.02
@export var jitter_inflation_factor := 1.0
@export var splatter_scene: PackedScene
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D
func _process(_delta: float) -> void:
var shader: ShaderMaterial = mesh_instance.mesh.surface_get_material(0)
var value := _sustained_damage / durability
shader.set_shader_parameter("jitter_time_scale", value * jitter_scale_factor)
shader.set_shader_parameter("vertex_inflation", value * jitter_inflation_factor)
func _destroy() -> void:
var splatter: GPUParticles3D = splatter_scene.instantiate()
add_sibling(splatter)
splatter.global_position = global_position
splatter.emitting = true

View File

@ -0,0 +1 @@
uid://07t7yhijru8f

View File

@ -0,0 +1,55 @@
[gd_scene load_steps=7 format=4 uid="uid://2yqi5u5eo025"]
[ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_m8r0a"]
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="2_530fq"]
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_iyr82"]
[sub_resource type="ArrayMesh" id="ArrayMesh_24j8i"]
_surfaces = [{
"aabb": AABB(-0.894425, -1, -0.85064, 1.78885, 2, 1.70128),
"format": 34896613377,
"index_count": 60,
"index_data": PackedByteArray("AAABAAIAAgABAAMAAQAAAAQAAwABAAUABQABAAQABAAAAAYABQAEAAcABwAEAAYAAwAFAAgACAAFAAcAAgADAAkACQADAAgAAAACAAoACgACAAkABgAAAAoACAAHAAsABwAGAAsACQAIAAsABgAKAAsACgAJAAsA"),
"name": "Icosphere",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 12,
"vertex_data": PackedByteArray("jOfBRhrPAAD/fwAA/38AAHJYwUb//wAAAADBRv9/AACM58FG5DAAAHJYwUYAAAAA//89uf9/AACMpz25AAAAAHIYPbnkMAAAchg9uRrPAACMpz25//8AAP9/////fwAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_iyr82"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.894425, -1, -0.85064, 1.78885, 2, 1.70128),
"attribute_data": PackedByteArray("0UWv14su//9FF6/XFl3//9FFr9dcdK/X//+v17no//9z0a/Xc9Gv1y26///ooq/X6KKv16KL//9cdK/XXHSv19FFr9cWXWCv0UWv10UXr9eLLmCv//+v13PRr9e56GCvc9Gv1+iir9ctumCv6KKv11x0r9eii2CvFl1gr9FFr9eLLmCviy5gr0UXr9cAAGCvuehgr3PRr9ctumCvLbpgr+iir9eii2Cvootgr1x0r9cWXWCvFl1gr4suYK/RRRGHiy5grwAAYK9FFxGHuehgry26YK9z0RGHLbpgr6KLYK/oohGHootgrxZdYK9cdBGH"),
"format": 34896613399,
"index_count": 60,
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsA"),
"material": ExtResource("2_530fq"),
"name": "Icosphere",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 60,
"vertex_data": PackedByteArray("jOfBRhrPZaf/fwAA/39lp3JYwUb//2Wn/38AAP9/DciM58FGGs8NyIznwUbkMA3IcljBRv//nLT/fwAA/3+ctAAAwUb/f5y0AADBRv9/2N3/fwAA/3/Y3XJYwUYAANjdcljBRgAAiPT/fwAA/3+I9IznwUbkMIj0jOfBRuQwW8CM58FGGs9bwP//Pbn/f1vAjOfBRhrP6Y5yWMFG///pjoynPbn//+mOcljBRv//GacAAMFG/38Zp3IYPbkazxmnAADBRv9/yNlyWMFGAADI2XIYPbnkMMjZcljBRgAAQfOM58FG5DBB84ynPbkAAEHz//89uf9/GaeM58FGGs8Zp4ynPbn//xmnjKc9uf//6Y5yWMFG///pjnIYPbkaz+mOchg9uRrPW8AAAMFG/39bwHIYPbnkMFvAchg9ueQwQfNyWMFGAABB84ynPbkAAEHzjKc9uQAAyNmM58FG5DDI2f//Pbn/f8jZ//89uf9/nLSMpz25//+ctP9/////f5y0jKc9uf//ZadyGD25Gs9lp/9/////f2Wnchg9uRrPDchyGD255DANyP9/////fw3Ichg9ueQwiPSMpz25AACI9P9/////f4j0jKc9uQAA2N3//z25/3/Y3f9/////f9jdbylFZG8pRWRvKUVkLWCkPy1gpD8tYKQ/7DOZzewzmc3sM5nNSkmH7UpJh+1KSYftn3mdLp95nS6feZ0uz3VfFM91XxTPdV8UzFJcNMxSXDTMUlw092Nt7fdjbe33Y23t/2+Y+v9vmPr/b5j6RH6lDER+pQxEfqUMB5yREgeckRIHnJESMq2iyzKtossyraLLL4qf6y+Kn+svip/ruoFZ87qBWfO6gVnz/49mBf+PZgX/j2YFEsxlMhLMZTISzGUyj9a5m4/WuZuP1rmb0Z9awNGfWsDRn1rAX4Zh0V+GYdFfhmHRtLZ3ErS2dxK0tncS")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_24j8i")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_530fq"]
data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0.8506, 0, -1, 0, 0.7236, -0.4472, 0.5257, 0.7236, -0.4472, -0.5257, -0.2764, -0.4472, 0.8506, 0, -1, 0, -0.8944, -0.4472, 0, -0.8944, -0.4472, 0, 0, -1, 0, -0.2764, -0.4472, -0.8506, -0.2764, -0.4472, -0.8506, 0, -1, 0, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, 0.5257, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, -0.2764, -0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.8944, -0.4472, 0, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.2764, -0.4472, -0.8506, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, 0.2764, 0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.7236, 0.4472, -0.5257, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.8944, 0.4472, 0, 0.8944, 0.4472, 0, 0.2764, 0.4472, 0.8506, 0, 1, 0, 0.2764, 0.4472, 0.8506, -0.7236, 0.4472, 0.5257, 0, 1, 0, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, -0.5257, 0, 1, 0, -0.7236, 0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0, 1, 0, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0, 1, 0)
[node name="GrunkNodule" type="StaticBody3D"]
collision_layer = 5
script = ExtResource("1_m8r0a")
splatter_scene = ExtResource("2_iyr82")
durability = 3.0
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
unique_name_in_owner = true
sorting_offset = 1.0
mesh = SubResource("ArrayMesh_iyr82")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("ConcavePolygonShape3D_530fq")

View File

@ -0,0 +1,54 @@
class_name GunkNode extends StaticBody3D
## A static body which can be destroyed and collected by the player.
## Emitted immediately after this node has been destroyed by the player,
## but before it's removed from the scene tree
signal destroyed
const JITTER_FADE_RATE := 0.6
## Time in seconds the player must hit this node with a sustained beam before it's destroyed.
@export var durability := 1.0
## Value added to the player's grunk total on destruction.
@export var value := 1000.0
var _sustained_damage := 0.0
var _hit_this_frame := false
## Called each frame this node takes a hit.
##
## Derived types should override `_hit()` as a lifecycle method.
func hit() -> void:
_hit_this_frame = true
_hit()
func _hit() -> void:
pass # Implemented in derived type
func _physics_process(delta: float) -> void:
if _hit_this_frame:
_sustained_damage += delta
else:
_sustained_damage *= JITTER_FADE_RATE
_hit_this_frame = false
if _sustained_damage >= durability:
destroy()
## Destroy this node. Called automatically when this node sustains damage beyond its durability.
##
## Derived types should override `_destroy` as a lifecycle method.
func destroy() -> void:
Game.manager.collect_grunk(value)
_destroy()
destroyed.emit()
queue_free()
func _destroy() -> void:
pass # Implemented in derived type

View File

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