From 538c3d8d695dda7bb8b18389375174f72b9ce28e Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Fri, 18 Apr 2025 21:55:40 -0600 Subject: [PATCH] Slutch meet-spook --- levels/ghost_ship/ghost_ship_level.tscn | 18 +++++++++++++----- levels/meet_spook_test/meet_spook_test.tscn | 4 ++-- src/ui/hud/player_hud.tscn | 8 ++++---- .../actions/update_stalking_target.gd | 1 + src/world/grunk_beast/grunk_beast.tscn | 4 ++-- .../meet_spook_slutch/meet_spook_slutch.gd | 12 ++++++++++++ .../meet_spook_slutch/meet_spook_slutch.gd.uid | 1 + .../meet_spook_slutch/meet_spook_slutch.tscn | 12 ++++++++++++ src/world/meet_spook/meet_spook_mob.gd | 2 +- 9 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd create mode 100644 src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd.uid create mode 100644 src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.tscn diff --git a/levels/ghost_ship/ghost_ship_level.tscn b/levels/ghost_ship/ghost_ship_level.tscn index 4f7c1e6..b4641a0 100644 --- a/levels/ghost_ship/ghost_ship_level.tscn +++ b/levels/ghost_ship/ghost_ship_level.tscn @@ -73,9 +73,9 @@ [ext_resource type="Script" uid="uid://cvx514gdjd5ev" path="res://src/world/meet_spook/meet_spook.gd" id="49_dxmep"] [ext_resource type="Material" uid="uid://dva6ivs2hap53" path="res://levels/ghost_ship/guide_sign/medbay_sign.material" id="50_h1nog"] [ext_resource type="Texture2D" uid="uid://23uupxc78b8n" path="res://assets/level/floor/floor_1_R.png" id="50_ii88q"] -[ext_resource type="PackedScene" uid="uid://8m6kh4f6pily" path="res://levels/meet_spook_test/debug_mob.tscn" id="51_4akax"] [ext_resource type="Material" uid="uid://bo81yn72cb0bq" path="res://levels/ghost_ship/guide_sign/cargo_bay_sign.material" id="51_pifep"] [ext_resource type="Script" uid="uid://cisuvlqvqfqgo" path="res://src/world/meet_spook/meet_spook_spawner.gd" id="52_4akax"] +[ext_resource type="PackedScene" uid="uid://cmmx0j4md4c5p" path="res://src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.tscn" id="56_vt4uw"] [ext_resource type="Texture2D" uid="uid://dc3k6nnaddy0c" path="res://assets/props/railing/railing_C.png" id="69_7ctwk"] [ext_resource type="Texture2D" uid="uid://dgyk61lmv3q66" path="res://assets/props/railing/railing_M.png" id="70_v4tkv"] [ext_resource type="PackedScene" uid="uid://h2gswdcxyotk" path="res://src/props/med_cart/med_cart.tscn" id="70_wqqoq"] @@ -1770,6 +1770,7 @@ shape = SubResource("ConcavePolygonShape3D_if0c2") [node name="MessHallMeetSpookSpawner" type="Marker3D" parent="BeastNav/Corridor1/T-Junction2"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/Corridor1/T-Junction2/MessHallMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.90735e-06, 0, 21) @@ -2281,12 +2282,13 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.02038, 0.918166, 3.76037) [node name="MessHallMeetSpook" type="Marker3D" parent="BeastNav/MessHall" node_paths=PackedStringArray("spawners") groups=["MeetSpookSource"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 1.5, 5.1) script = ExtResource("49_dxmep") -mob_scene = ExtResource("51_4akax") +mob_scene = ExtResource("56_vt4uw") spawners = [NodePath("../../Corridor1/T-Junction2/MessHallMeetSpookSpawner"), NodePath("../../Corridor2/T-Junction1/MessHallMeetSpookSpawner"), NodePath("../../Medbay/MessHallMeetSpookSpawner")] [node name="MedbayMeetSpookSpawner" type="Marker3D" parent="BeastNav/MessHall"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 1.5, 2.1) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/MessHall/MedbayMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6) @@ -2387,6 +2389,7 @@ mesh = SubResource("ArrayMesh_48a1a") [node name="MessHallMeetSpookSpawner" type="Marker3D" parent="BeastNav/Corridor2/T-Junction1"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/Corridor2/T-Junction1/MessHallMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12) @@ -2394,6 +2397,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12) [node name="CrewQuartersMeetSpookSpawner" type="Marker3D" parent="BeastNav/Corridor2/T-Junction1"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/Corridor2/T-Junction1/CrewQuartersMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0) @@ -3121,7 +3125,7 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -3, 3, [node name="CrewQuartersMeetSpook" type="Marker3D" parent="BeastNav/CrewQuarters" node_paths=PackedStringArray("spawners") groups=["MeetSpookSource"]] script = ExtResource("49_dxmep") -mob_scene = ExtResource("51_4akax") +mob_scene = ExtResource("56_vt4uw") spawners = [NodePath("../../Corridor2/T-Junction1/CrewQuartersMeetSpookSpawner"), NodePath("../../Corridor3/T-Junction1/CrewQuartersMeetSpookSpawner")] metadata/_custom_type_script = "uid://cvx514gdjd5ev" @@ -3213,6 +3217,7 @@ shape = SubResource("ConcavePolygonShape3D_if0c2") [node name="CrewQuartersMeetSpookSpawner" type="Marker3D" parent="BeastNav/Corridor3/T-Junction1"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/Corridor3/T-Junction1/CrewQuartersMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.62268e-06, 0, -30) @@ -3220,6 +3225,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.62268e-06, 0, -30) [node name="OpsMeetSpookSpawner" type="Marker3D" parent="BeastNav/Corridor3/T-Junction1"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/Corridor3/T-Junction1/OpsMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0) @@ -3287,6 +3293,7 @@ shape = SubResource("ConcavePolygonShape3D_if0c2") [node name="MedbayMeetSpookSpawner" type="Marker3D" parent="BeastNav/Corridor3/T-Junction3"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.38419e-07, 1.5, 0) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/Corridor3/T-Junction3/MedbayMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.14722e-06, 0, 42) @@ -4058,13 +4065,14 @@ outline_size = 24 [node name="MessHallMeetSpookSpawner" type="Marker3D" parent="BeastNav/Medbay"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.5, -12) script = ExtResource("52_4akax") +mob_lifespan = 3.0 [node name="Target" type="Marker3D" parent="BeastNav/Medbay/MessHallMeetSpookSpawner"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 15) [node name="MedbayMeetSpook" type="Marker3D" parent="BeastNav/Medbay" node_paths=PackedStringArray("spawners") groups=["MeetSpookSource"]] script = ExtResource("49_dxmep") -mob_scene = ExtResource("51_4akax") +mob_scene = ExtResource("56_vt4uw") spawners = [NodePath("../../MessHall/MedbayMeetSpookSpawner"), NodePath("../../Corridor3/T-Junction3/MedbayMeetSpookSpawner")] metadata/_custom_type_script = "uid://cvx514gdjd5ev" @@ -5032,7 +5040,7 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 3, [node name="OpsMeetSpook" type="Marker3D" parent="BeastNav/OpsCenter" groups=["MeetSpookSource"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4.5) script = ExtResource("49_dxmep") -mob_scene = ExtResource("51_4akax") +mob_scene = ExtResource("56_vt4uw") metadata/_custom_type_script = "uid://cvx514gdjd5ev" [node name="CargoBay" type="Node3D" parent="BeastNav"] diff --git a/levels/meet_spook_test/meet_spook_test.tscn b/levels/meet_spook_test/meet_spook_test.tscn index a3c5ff5..88a85cd 100644 --- a/levels/meet_spook_test/meet_spook_test.tscn +++ b/levels/meet_spook_test/meet_spook_test.tscn @@ -3,7 +3,7 @@ [ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_f3l4i"] [ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="2_eywuc"] [ext_resource type="Script" uid="uid://cvx514gdjd5ev" path="res://src/world/meet_spook/meet_spook.gd" id="4_b6st5"] -[ext_resource type="PackedScene" uid="uid://8m6kh4f6pily" path="res://levels/meet_spook_test/debug_mob.tscn" id="5_cr4pm"] +[ext_resource type="PackedScene" uid="uid://cmmx0j4md4c5p" path="res://src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.tscn" id="4_cr4pm"] [ext_resource type="Script" uid="uid://cisuvlqvqfqgo" path="res://src/world/meet_spook/meet_spook_spawner.gd" id="5_tak24"] [ext_resource type="Script" uid="uid://c1gy2b2wcq127" path="res://levels/meet_spook_test/tween_debug.gd" id="6_cr4pm"] @@ -69,7 +69,7 @@ text = "GET SCARED" [node name="MeetSpook" type="Marker3D" parent="." node_paths=PackedStringArray("spawners")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.5, 0) script = ExtResource("4_b6st5") -mob_scene = ExtResource("5_cr4pm") +mob_scene = ExtResource("4_cr4pm") spawners = [NodePath("../MeetSpookSpawner"), NodePath("../MeetSpookSpawner2")] metadata/_custom_type_script = "uid://cvx514gdjd5ev" diff --git a/src/ui/hud/player_hud.tscn b/src/ui/hud/player_hud.tscn index e18ba6f..77b72e8 100644 --- a/src/ui/hud/player_hud.tscn +++ b/src/ui/hud/player_hud.tscn @@ -214,10 +214,10 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = -401.541 -offset_top = -299.173 -offset_right = -401.541 -offset_bottom = -299.173 +offset_left = -400.393 +offset_top = -300.207 +offset_right = -400.393 +offset_bottom = -300.207 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("4_ud8na") diff --git a/src/world/grunk_beast/behaviors/actions/update_stalking_target.gd b/src/world/grunk_beast/behaviors/actions/update_stalking_target.gd index 220b4d6..8ba2005 100644 --- a/src/world/grunk_beast/behaviors/actions/update_stalking_target.gd +++ b/src/world/grunk_beast/behaviors/actions/update_stalking_target.gd @@ -9,6 +9,7 @@ const DEST_KEY := "stalking_target" func tick(_actor: Node, blackboard: Blackboard) -> int: + @warning_ignore("unsafe_cast") var target := blackboard.get_value(SOURCE_KEY) as Node3D if not is_instance_valid(target): return FAILURE diff --git a/src/world/grunk_beast/grunk_beast.tscn b/src/world/grunk_beast/grunk_beast.tscn index a950a51..416a075 100644 --- a/src/world/grunk_beast/grunk_beast.tscn +++ b/src/world/grunk_beast/grunk_beast.tscn @@ -218,7 +218,7 @@ metadata/_custom_type_script = "uid://om57w2acvgb7" script = ExtResource("11_mbqcc") mean_time = 4.0 st_dev_time = 0.6 -wait_time = 4.72586 +wait_time = 3.52038 metadata/_custom_type_script = "uid://beyk2xtbjrsg4" [node name="RandomStalkingBehavior" type="Node" parent="GrunkBeastBehavior/StateSelector/StalkingSequence/RandomDelay"] @@ -264,7 +264,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x" script = ExtResource("11_mbqcc") mean_time = 5.0 st_dev_time = 1.0 -wait_time = 4.0544 +wait_time = 5.84132 metadata/_custom_type_script = "uid://beyk2xtbjrsg4" [node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkSequence/RandomDelay"] diff --git a/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd b/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd new file mode 100644 index 0000000..062ec5c --- /dev/null +++ b/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd @@ -0,0 +1,12 @@ +extends MeetSpookMob + +@onready var model: SlutchBeast = %SlutchBeast + + +func _process(_delta: float) -> void: + if not is_instance_valid(Player.instance): + return + + var face_target := target if state == State.MOVING else Player.instance + var to_target := face_target.global_position - global_position + model.set_target_rotation(atan2(to_target.x, to_target.z)) diff --git a/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd.uid b/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd.uid new file mode 100644 index 0000000..edfb7e9 --- /dev/null +++ b/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd.uid @@ -0,0 +1 @@ +uid://ceoi26fevwugu diff --git a/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.tscn b/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.tscn new file mode 100644 index 0000000..a5d2964 --- /dev/null +++ b/src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://cmmx0j4md4c5p"] + +[ext_resource type="Script" uid="uid://ceoi26fevwugu" path="res://src/world/grunk_beast/slutch_beast/meet_spook_slutch/meet_spook_slutch.gd" id="1_peqio"] +[ext_resource type="PackedScene" uid="uid://cvq81xegbwv87" path="res://src/world/grunk_beast/slutch_beast/slutch_beast.tscn" id="2_i6sb8"] + +[node name="MeetSpookSlutch" type="Node3D"] +script = ExtResource("1_peqio") +metadata/_custom_type_script = "uid://1trqaximxxmx" + +[node name="SlutchBeast" parent="." instance=ExtResource("2_i6sb8")] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0) diff --git a/src/world/meet_spook/meet_spook_mob.gd b/src/world/meet_spook/meet_spook_mob.gd index 0424bda..b835cc1 100644 --- a/src/world/meet_spook/meet_spook_mob.gd +++ b/src/world/meet_spook/meet_spook_mob.gd @@ -3,7 +3,7 @@ class_name MeetSpookMob extends Node3D enum State { WAITING, FREEZE, MOVING } -const BASE_SPEED := 4.0 +const BASE_SPEED := 3.0 @export var source: MeetSpook @export var target: Node3D