Tests and fixes for beast spawning

This commit is contained in:
Rob Kelly 2025-09-06 16:26:35 -06:00
parent ccc93072f0
commit 850127ba85
9 changed files with 791 additions and 7 deletions

View File

@ -0,0 +1,27 @@
extends Level
@onready var alert_level_label: Label = %AlertLevelLabel
@onready var gunk_alarm: GunkAlarm = %GunkAlarm
func _ready() -> void:
if is_instance_valid(World.instance):
World.instance.manager.alert_raised.connect(_on_alert_level_raised)
World.instance.manager.alert_cleared.connect(_on_alert_level_cleared)
func _on_alert_level_raised(new_level: int) -> void:
alert_level_label.text = str(new_level)
func _on_alert_level_cleared() -> void:
alert_level_label.text = str(WorldManager.CLEAR_LEVEL)
func _unhandled_key_input(event: InputEvent) -> void:
if event.is_action_pressed("ui_page_up"):
if is_instance_valid(gunk_alarm):
gunk_alarm.trigger()
if event.is_action_pressed("ui_page_down"):
if is_instance_valid(World.instance):
World.instance.manager.clear_alert()

View File

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

View File

@ -0,0 +1,746 @@
[gd_scene load_steps=26 format=3 uid="uid://ogcjwuvqo5rc"]
[ext_resource type="Script" uid="uid://dir6earo8ftlp" path="res://levels/testing/beast_spawner_test/beast_spawner_test.gd" id="1_a4s6t"]
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="2_pn3sm"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_yvl8h"]
[ext_resource type="ArrayMesh" uid="uid://dpr5cgq743f4s" path="res://assets/level/floor/floor_9x9.mesh" id="3_o2peg"]
[ext_resource type="PackedScene" uid="uid://drm5dspi48pf5" path="res://src/props/crate_long/phys_crate_long.tscn" id="5_8vexl"]
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="5_a41r8"]
[ext_resource type="Material" uid="uid://cqjr3cbxtfg2j" path="res://assets/materials/grunk_overlays/gunk_overlay.material" id="6_m3rwh"]
[ext_resource type="PackedScene" uid="uid://dxm83cmpppqxr" path="res://src/world/grunk_beast/beast_spawner/beast_spawn_zone/beast_spawn_zone.tscn" id="7_m3rwh"]
[ext_resource type="PackedScene" uid="uid://oipf3w7hm5gf" path="res://src/props/operating_table/operating_table.tscn" id="9_nhuoi"]
[ext_resource type="PackedScene" uid="uid://dgeg3kkogm71m" path="res://src/world/mechanics/alarm/gunk_alarm.tscn" id="10_a4s6t"]
[ext_resource type="PackedScene" uid="uid://5vh7mnjavlle" path="res://src/world/grunk_beast/beast_spawner/transient_floor_spawner.tscn" id="11_cuw52"]
[ext_resource type="PackedScene" uid="uid://c55n6h3ydi32e" path="res://src/props/sofa/phys_sofa.tscn" id="12_fshdk"]
[ext_resource type="PackedScene" uid="uid://dtus42gmb1kqq" path="res://src/props/vending_machine/vending_machine.tscn" id="12_y2hej"]
[ext_resource type="Texture2D" uid="uid://d2xq0uvxh2ojk" path="res://assets/props/vending_machine/vending_machine_C.png" id="13_fshdk"]
[ext_resource type="Texture2D" uid="uid://d0xe37qm3k7d8" path="res://assets/props/vending_machine/vending_machine_E.png" id="14_avb8e"]
[ext_resource type="Texture2D" uid="uid://dkilg200w8x4y" path="res://assets/props/vending_machine/vending_machine_M.png" id="15_jafew"]
[ext_resource type="Texture2D" uid="uid://8v7jta2qdvut" path="res://assets/props/vending_machine/vending_machine_N.png" id="16_smofw"]
[ext_resource type="Texture2D" uid="uid://gbvtbiurxrop" path="res://assets/props/vending_machine/vending_machine_R.png" id="17_ks403"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_hda7d"]
[sub_resource type="Sky" id="Sky_pka60"]
sky_material = SubResource("ProceduralSkyMaterial_hda7d")
[sub_resource type="Environment" id="Environment_nl4kk"]
background_mode = 2
sky = SubResource("Sky_pka60")
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_6j7vt"]
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_pn3sm"]
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)
[sub_resource type="BoxShape3D" id="BoxShape3D_m3rwh"]
size = Vector3(18, 5.1, 28.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mo4ho"]
resource_local_to_scene = true
albedo_texture = ExtResource("13_fshdk")
metallic = 1.0
metallic_texture = ExtResource("15_jafew")
roughness_texture = ExtResource("17_ks403")
emission_enabled = true
emission_energy_multiplier = 0.0
emission_texture = ExtResource("14_avb8e")
normal_enabled = true
normal_texture = ExtResource("16_smofw")
texture_filter = 2
[node name="BeastSpawnerTest" type="Node3D"]
script = ExtResource("1_a4s6t")
id = "beast_spawner_test"
pretty_name = "Beast Spawner Testing Sandbox"
[node name="TestInfo" type="CanvasLayer" parent="."]
layer = 10
[node name="MarginContainer" type="MarginContainer" parent="TestInfo"]
offset_right = 40.0
offset_bottom = 40.0
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="VBoxContainer" type="VBoxContainer" parent="TestInfo/MarginContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="TestInfo/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="TestInfo/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "Alarm level:"
[node name="AlertLevelLabel" type="Label" parent="TestInfo/MarginContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "0"
[node name="HBoxContainer2" type="HBoxContainer" parent="TestInfo/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="InputPrompt" parent="TestInfo/MarginContainer/VBoxContainer/HBoxContainer2" instance=ExtResource("2_pn3sm")]
layout_mode = 2
text = "❓"
action = &"ui_page_up"
show_name = false
[node name="Label" type="Label" parent="TestInfo/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
text = " to trigger the alarm"
[node name="HBoxContainer3" type="HBoxContainer" parent="TestInfo/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="InputPrompt" parent="TestInfo/MarginContainer/VBoxContainer/HBoxContainer3" instance=ExtResource("2_pn3sm")]
layout_mode = 2
text = "❓"
action = &"ui_page_down"
show_name = false
[node name="Label" type="Label" parent="TestInfo/MarginContainer/VBoxContainer/HBoxContainer3"]
layout_mode = 2
text = " to clear the alert level"
[node name="Player" parent="." instance=ExtResource("2_yvl8h")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.866025, -0.156955, -0.474726, 0.5, 0.271854, 0.82225, 0, -0.949453, 0.31391, 0, 0, 0)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_nl4kk")
[node name="WorldFloor" type="StaticBody3D" parent="." groups=["PlasticMaterial"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3)
collision_layer = 5
[node name="MeshInstance3D" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D4" type="MeshInstance3D" parent="WorldFloor"]
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D5" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 0)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D6" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 0, 0)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D7" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D8" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 0)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D9" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D10" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 0)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D11" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 36, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D12" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 36, 0, 0)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D13" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D14" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 0, 0)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D15" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 54, 0, -9)
mesh = ExtResource("3_o2peg")
[node name="MeshInstance3D16" type="MeshInstance3D" parent="WorldFloor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 54, 0, 0)
mesh = ExtResource("3_o2peg")
[node name="CollisionShape3D" type="CollisionShape3D" parent="WorldFloor"]
visible = false
shape = SubResource("WorldBoundaryShape3D_6j7vt")
[node name="PhysCrateLong" parent="." instance=ExtResource("5_8vexl")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0.9, -6)
[node name="OperatingTable" parent="." instance=ExtResource("9_nhuoi")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12, 0.5, 0)
[node name="GunkAlarm" parent="OperatingTable" instance=ExtResource("10_a4s6t")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.52, 0)
[node name="SpawnRegion1" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0.1, -19.5)
[node name="Floor" type="MeshInstance3D" parent="SpawnRegion1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -4.5)
mesh = ExtResource("3_o2peg")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="SpawnRegion1/Floor"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="SpawnRegion1/Floor/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_pn3sm")
[node name="Gunkable" parent="SpawnRegion1/Floor/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("5_a41r8")]
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_m3rwh")
[node name="Floor2" type="MeshInstance3D" parent="SpawnRegion1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, -4.5)
mesh = ExtResource("3_o2peg")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="SpawnRegion1/Floor2"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="SpawnRegion1/Floor2/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_pn3sm")
[node name="Gunkable" parent="SpawnRegion1/Floor2/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("5_a41r8")]
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_m3rwh")
[node name="Floor3" type="MeshInstance3D" parent="SpawnRegion1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 4.5)
mesh = ExtResource("3_o2peg")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="SpawnRegion1/Floor3"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="SpawnRegion1/Floor3/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_pn3sm")
[node name="Gunkable" parent="SpawnRegion1/Floor3/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("5_a41r8")]
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_m3rwh")
[node name="Floor4" type="MeshInstance3D" parent="SpawnRegion1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 4.5)
mesh = ExtResource("3_o2peg")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="SpawnRegion1/Floor4"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="SpawnRegion1/Floor4/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_pn3sm")
[node name="Gunkable" parent="SpawnRegion1/Floor4/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("5_a41r8")]
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_m3rwh")
[node name="BeastSpawnZone" parent="SpawnRegion1" instance=ExtResource("7_m3rwh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.001, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="SpawnRegion1/BeastSpawnZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.45, 5.25)
shape = SubResource("BoxShape3D_m3rwh")
[node name="TransientFloorSpawner" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, -7.5)
[node name="TransientFloorSpawner2" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -7.5)
[node name="TransientFloorSpawner3" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -7.5)
[node name="TransientFloorSpawner4" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -7.5)
[node name="TransientFloorSpawner5" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, -7.5)
[node name="TransientFloorSpawner6" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -7.5)
[node name="TransientFloorSpawner7" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -7.5)
[node name="TransientFloorSpawner8" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.5)
[node name="TransientFloorSpawner9" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -7.5)
[node name="TransientFloorSpawner10" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -7.5)
[node name="TransientFloorSpawner11" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, -7.5)
[node name="TransientFloorSpawner12" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, -4.5)
[node name="TransientFloorSpawner13" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -4.5)
[node name="TransientFloorSpawner14" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -4.5)
[node name="TransientFloorSpawner15" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -4.5)
[node name="TransientFloorSpawner16" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, -4.5)
[node name="TransientFloorSpawner17" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -4.5)
[node name="TransientFloorSpawner18" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -4.5)
[node name="TransientFloorSpawner19" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4.5)
[node name="TransientFloorSpawner20" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -4.5)
[node name="TransientFloorSpawner21" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -4.5)
[node name="TransientFloorSpawner22" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, -4.5)
[node name="TransientFloorSpawner23" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, -1.5)
[node name="TransientFloorSpawner24" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -1.5)
[node name="TransientFloorSpawner25" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -1.5)
[node name="TransientFloorSpawner26" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -1.5)
[node name="TransientFloorSpawner27" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, -1.5)
[node name="TransientFloorSpawner28" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -1.5)
[node name="TransientFloorSpawner29" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -1.5)
[node name="TransientFloorSpawner30" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.5)
[node name="TransientFloorSpawner31" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -1.5)
[node name="TransientFloorSpawner32" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -1.5)
[node name="TransientFloorSpawner33" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, -1.5)
[node name="TransientFloorSpawner34" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, 1.5)
[node name="TransientFloorSpawner35" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 1.5)
[node name="TransientFloorSpawner36" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 1.5)
[node name="TransientFloorSpawner37" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 1.5)
[node name="TransientFloorSpawner38" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 1.5)
[node name="TransientFloorSpawner39" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 1.5)
[node name="TransientFloorSpawner40" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 1.5)
[node name="TransientFloorSpawner41" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.5)
[node name="TransientFloorSpawner42" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 1.5)
[node name="TransientFloorSpawner43" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 1.5)
[node name="TransientFloorSpawner44" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 1.5)
[node name="TransientFloorSpawner45" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, 4.5)
[node name="TransientFloorSpawner46" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 4.5)
[node name="TransientFloorSpawner47" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 4.5)
[node name="TransientFloorSpawner48" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 4.5)
[node name="TransientFloorSpawner49" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 4.5)
[node name="TransientFloorSpawner50" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 4.5)
[node name="TransientFloorSpawner51" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 4.5)
[node name="TransientFloorSpawner52" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4.5)
[node name="TransientFloorSpawner53" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 4.5)
[node name="TransientFloorSpawner54" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 4.5)
[node name="TransientFloorSpawner55" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 4.5)
[node name="TransientFloorSpawner56" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, 7.5)
[node name="TransientFloorSpawner57" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 7.5)
[node name="TransientFloorSpawner58" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 7.5)
[node name="TransientFloorSpawner59" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 7.5)
[node name="TransientFloorSpawner60" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 7.5)
[node name="TransientFloorSpawner61" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 7.5)
[node name="TransientFloorSpawner62" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 7.5)
[node name="TransientFloorSpawner63" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7.5)
[node name="TransientFloorSpawner64" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 7.5)
[node name="TransientFloorSpawner65" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 7.5)
[node name="TransientFloorSpawner66" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 7.5)
[node name="TransientFloorSpawner67" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, -6)
[node name="TransientFloorSpawner68" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -6)
[node name="TransientFloorSpawner69" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -6)
[node name="TransientFloorSpawner70" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -6)
[node name="TransientFloorSpawner71" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, -6)
[node name="TransientFloorSpawner72" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -6)
[node name="TransientFloorSpawner73" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -6)
[node name="TransientFloorSpawner74" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -6)
[node name="TransientFloorSpawner75" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -6)
[node name="TransientFloorSpawner76" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -6)
[node name="TransientFloorSpawner77" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, -6)
[node name="TransientFloorSpawner78" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, -3)
[node name="TransientFloorSpawner79" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, -3)
[node name="TransientFloorSpawner80" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, -3)
[node name="TransientFloorSpawner81" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -3)
[node name="TransientFloorSpawner82" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, -3)
[node name="TransientFloorSpawner83" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -3)
[node name="TransientFloorSpawner84" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, -3)
[node name="TransientFloorSpawner85" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -3)
[node name="TransientFloorSpawner86" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, -3)
[node name="TransientFloorSpawner87" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -3)
[node name="TransientFloorSpawner88" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, -3)
[node name="TransientFloorSpawner89" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, 0)
[node name="TransientFloorSpawner90" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 0)
[node name="TransientFloorSpawner91" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 0)
[node name="TransientFloorSpawner92" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 0)
[node name="TransientFloorSpawner93" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 0)
[node name="TransientFloorSpawner94" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0)
[node name="TransientFloorSpawner95" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0)
[node name="TransientFloorSpawner96" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
[node name="TransientFloorSpawner97" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0)
[node name="TransientFloorSpawner98" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0)
[node name="TransientFloorSpawner99" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 0)
[node name="TransientFloorSpawner100" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, 3)
[node name="TransientFloorSpawner101" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 3)
[node name="TransientFloorSpawner102" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 3)
[node name="TransientFloorSpawner103" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 3)
[node name="TransientFloorSpawner104" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 3)
[node name="TransientFloorSpawner105" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 3)
[node name="TransientFloorSpawner106" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 3)
[node name="TransientFloorSpawner107" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3)
[node name="TransientFloorSpawner108" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 3)
[node name="TransientFloorSpawner109" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 3)
[node name="TransientFloorSpawner110" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 3)
[node name="TransientFloorSpawner111" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0, 6)
[node name="TransientFloorSpawner112" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 6)
[node name="TransientFloorSpawner113" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 6)
[node name="TransientFloorSpawner114" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 6)
[node name="TransientFloorSpawner115" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 6)
[node name="TransientFloorSpawner116" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 6)
[node name="TransientFloorSpawner117" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 6)
[node name="TransientFloorSpawner118" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6)
[node name="TransientFloorSpawner119" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 6)
[node name="TransientFloorSpawner120" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 6)
[node name="TransientFloorSpawner121" parent="SpawnRegion1/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 6)
[node name="SpawnRegion2" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.5, 0.1, -19.5)
[node name="Floor" type="MeshInstance3D" parent="SpawnRegion2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 4.5)
mesh = ExtResource("3_o2peg")
skeleton = NodePath("")
[node name="StaticBody3D" type="StaticBody3D" parent="SpawnRegion2/Floor"]
collision_layer = 5
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="SpawnRegion2/Floor/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_pn3sm")
[node name="Gunkable" parent="SpawnRegion2/Floor/StaticBody3D" node_paths=PackedStringArray("body", "mesh_instance") instance=ExtResource("5_a41r8")]
body = NodePath("..")
mesh_instance = NodePath("../..")
source_gunk_material = ExtResource("6_m3rwh")
[node name="BeastSpawnZone" parent="SpawnRegion2" instance=ExtResource("7_m3rwh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.001, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="SpawnRegion2/BeastSpawnZone"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.45, 5.25)
shape = SubResource("BoxShape3D_m3rwh")
[node name="TransientFloorSpawner37" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 1.5)
[node name="TransientFloorSpawner38" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 1.5)
[node name="TransientFloorSpawner42" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 1.5)
[node name="TransientFloorSpawner43" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 1.5)
[node name="TransientFloorSpawner44" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 1.5)
[node name="TransientFloorSpawner48" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 4.5)
[node name="TransientFloorSpawner49" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 4.5)
[node name="TransientFloorSpawner53" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 4.5)
[node name="TransientFloorSpawner54" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 4.5)
[node name="TransientFloorSpawner55" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 4.5)
[node name="TransientFloorSpawner59" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 7.5)
[node name="TransientFloorSpawner60" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 7.5)
[node name="TransientFloorSpawner64" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 7.5)
[node name="TransientFloorSpawner65" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 7.5)
[node name="TransientFloorSpawner66" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 7.5)
[node name="TransientFloorSpawner103" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 3)
[node name="TransientFloorSpawner104" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 3)
[node name="TransientFloorSpawner108" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 3)
[node name="TransientFloorSpawner109" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 3)
[node name="TransientFloorSpawner110" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 3)
[node name="TransientFloorSpawner114" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 6)
[node name="TransientFloorSpawner115" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0, 6)
[node name="TransientFloorSpawner119" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 6)
[node name="TransientFloorSpawner120" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 6)
[node name="TransientFloorSpawner121" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("11_cuw52")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0, 6)
[node name="PhysSofa" parent="SpawnRegion2/BeastSpawnZone" instance=ExtResource("12_fshdk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40.5, 0.499, 13.5)
[node name="VendingMachine" parent="." instance=ExtResource("12_y2hej")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, -6)
surface_material_override/0 = SubResource("StandardMaterial3D_mo4ho")

View File

@ -1,7 +1,8 @@
class_name SceneTools extends Object class_name SceneTools extends Object
## Tools for specialized operations in a scene ## Tools for specialized operations in a scene
const RAY_MASK := 0b00100101 # const RAY_MASK := 0b00100101
const RAY_MASK := 1
## Get the Node3D in the given group which is spatially closest to the target node. ## Get the Node3D in the given group which is spatially closest to the target node.

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=4 format=3 uid="uid://5vh7mnjavlle"] [gd_scene load_steps=5 format=3 uid="uid://5vh7mnjavlle"]
[ext_resource type="Script" uid="uid://cqildi0gndwp2" path="res://src/world/grunk_beast/beast_spawner/floor_spawner.gd" id="1_42oks"] [ext_resource type="Script" uid="uid://cqildi0gndwp2" path="res://src/world/grunk_beast/beast_spawner/floor_spawner.gd" id="1_42oks"]
[ext_resource type="PackedScene" uid="uid://ehf5sg3ahvbf" path="res://src/world/grunk_beast/grunk_beast.tscn" id="2_e5rh0"] [ext_resource type="PackedScene" uid="uid://ehf5sg3ahvbf" path="res://src/world/grunk_beast/grunk_beast.tscn" id="2_e5rh0"]
@ -7,6 +7,11 @@
height = 0.02 height = 0.02
radius = 1.2 radius = 1.2
[sub_resource type="CylinderMesh" id="CylinderMesh_e5rh0"]
top_radius = 1.2
bottom_radius = 1.2
height = 0.02
[node name="TransientFloorSpawner" type="Node3D" groups=["BeastSpawnPoint"]] [node name="TransientFloorSpawner" type="Node3D" groups=["BeastSpawnPoint"]]
script = ExtResource("1_42oks") script = ExtResource("1_42oks")
beast_scene = ExtResource("2_e5rh0") beast_scene = ExtResource("2_e5rh0")
@ -21,4 +26,7 @@ collision_mask = 128
shape = SubResource("CylinderShape3D_42oks") shape = SubResource("CylinderShape3D_42oks")
debug_color = Color(0.980392, 0.854902, 0, 1) debug_color = Color(0.980392, 0.854902, 0, 1)
[node name="MeshInstance3D" type="MeshInstance3D" parent="Area3D"]
mesh = SubResource("CylinderMesh_e5rh0")
[connection signal="area_entered" from="Area3D" to="." method="queue_free" unbinds=1] [connection signal="area_entered" from="Area3D" to="." method="queue_free" unbinds=1]

View File

@ -384,7 +384,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x"
script = ExtResource("11_mbqcc") script = ExtResource("11_mbqcc")
mean_time = 4.0 mean_time = 4.0
st_dev_time = 0.6 st_dev_time = 0.6
wait_time = 4.8888 wait_time = 4.58991
metadata/_custom_type_script = "uid://beyk2xtbjrsg4" metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomInvestigationTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/TrackingMode/ActionSelector/InvestigateAction/AlwaysSucceedDecorator/InvestigateSequence/RandomDelay"] [node name="PickRandomInvestigationTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/TrackingMode/ActionSelector/InvestigateAction/AlwaysSucceedDecorator/InvestigateSequence/RandomDelay"]
@ -478,7 +478,7 @@ metadata/_custom_type_script = "uid://bogt3htgqe12s"
script = ExtResource("11_mbqcc") script = ExtResource("11_mbqcc")
mean_time = 9.0 mean_time = 9.0
st_dev_time = 1.0 st_dev_time = 1.0
wait_time = 8.24845 wait_time = 10.1664
metadata/_custom_type_script = "uid://beyk2xtbjrsg4" metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkingMode/RandomDelay"] [node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkingMode/RandomDelay"]

View File

@ -135,7 +135,8 @@ func on_alert_cleared() -> void:
b.queue_free() b.queue_free()
# And spawn one back in, if needed # And spawn one back in, if needed
if World.instance.manager.alert_level >= 2: # TODO should this maybe be an instance member of WorldManager?
if WorldManager.CLEAR_LEVEL >= 2:
spawn_beast_near_player() spawn_beast_near_player()

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="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="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="Resource" uid="uid://0i72bf8ip1lx" path="res://src/world/spook_manager.tres" id="3_l0av5"]
[ext_resource type="PackedScene" uid="uid://b8rv6dg4tgaeb" path="res://levels/testing/mechanic_test/mechanic_test.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://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"] [ext_resource type="PackedScene" uid="uid://brknr57xc2cp0" path="res://src/ui/elements/save_icon/save_icon.tscn" id="7_5kmgb"]

View File

@ -27,7 +27,7 @@ signal mp3_collected(mp3_track: MP3Track)
signal player_dead signal player_dead
const MAX_ALERT := 6 const MAX_ALERT := 6
const CLEAR_LEVEL := 2 const CLEAR_LEVEL := 1
const BASE_TANK_LIMIT := 96000 const BASE_TANK_LIMIT := 96000
const BIG_TANK_LIMIT := 198000 const BIG_TANK_LIMIT := 198000