From 78e87f35bcda58fb7cd65a40346d253b5a5ea6f9 Mon Sep 17 00:00:00 2001 From: cakipaul Date: Thu, 31 Jul 2025 05:24:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=83=96=E5=AD=90=E6=B8=B8=E6=88=8F=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asset/dialogue/item_description.csv | 1 + asset/dialogue/item_description.dialogue | 2 + config/audio/sfx/footstep_胖子游戏.tres | 1 + scene/entity/closeup.gd | 6 +- scene/ground/ground_loader.gd | 1 - scene/ground/scene/c03/s08_囚室.gd | 3 + scene/ground/scene/c03/s09_棺材房.tscn | 3 + scene/ground/scene/c03/s10_胖子游戏1.gd | 3 +- scene/ground/scene/c03/s12_胖子游戏3.gd | 10 +-- scene/ground/scene/c03/s12_胖子游戏3.tscn | 89 ++++++++++++++++++- scene/ground/scene/c03/s13_胖子游戏4.gd | 45 ---------- scene/ground/scene/c03/s13_胖子游戏4.gd.uid | 1 - scene/ground/scene/c03/s13_胖子游戏4.tscn | 2 +- .../script/c03/s06_closeup柜子后的洞.gd | 2 +- .../ground/script/c03/s09_closeup棺材特写.gd | 32 +++---- .../script/c03/s09_closeup棺材特写.tscn | 49 +--------- 16 files changed, 126 insertions(+), 124 deletions(-) delete mode 100644 scene/ground/scene/c03/s13_胖子游戏4.gd delete mode 100644 scene/ground/scene/c03/s13_胖子游戏4.gd.uid diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index 78960ef0..ef8640e8 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -283,3 +283,4 @@ c03_s08_囚室绳子,绑得很死,直接解不开绳子。,,,,, c03_s08_囚室醒过来,?这里是,,,,, c03_s08_囚室看到脚印,?又是脚印,,,,, c03_s08_囚室符纸,妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。,,,,, +c03_s09_胖子干尸,?胖子干尸,,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index bf123576..95970b17 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -371,6 +371,8 @@ ?又是脚印 [ID:c03_s08_囚室看到脚印] 妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。 [ID:c03_s08_囚室符纸] # s09 棺材房 +?胖子干尸 [ID:c03_s09_胖子干尸] + => END ~ Notes_c04 diff --git a/config/audio/sfx/footstep_胖子游戏.tres b/config/audio/sfx/footstep_胖子游戏.tres index 919085d2..d16cef86 100644 --- a/config/audio/sfx/footstep_胖子游戏.tres +++ b/config/audio/sfx/footstep_胖子游戏.tres @@ -7,3 +7,4 @@ [resource] script = ExtResource("3_soveh") audios = Array[AudioStream]([ExtResource("1_vboyp"), ExtResource("2_evogo")]) +db = -7 diff --git a/scene/entity/closeup.gd b/scene/entity/closeup.gd index 7f3c2f2f..e5dce2a4 100644 --- a/scene/entity/closeup.gd +++ b/scene/entity/closeup.gd @@ -76,9 +76,9 @@ func _unhandled_input(event: InputEvent) -> void: if quit_closeup_on_cancel and not _holding_cancel_before_exit: get_viewport().set_input_as_handled() _exit() - # 在有特写界面时,阻塞 interact 输入 - elif event.is_action_pressed("interact"): - get_viewport().set_input_as_handled() + # # 在有特写界面时,不能阻塞 interact 输入,因为可能 inspcet prop + # elif event.is_action_pressed("interact"): + # get_viewport().set_input_as_handled() ###### TOOL BUTTON diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index f56f5da8..d72cd626 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -45,7 +45,6 @@ const GROUND_SCENE_PATH_DICT: Dictionary[String, Dictionary] = { "c03_s10": {"path": "uid://clgwc3jcqarpe", "name": "胖子游戏1"}, "c03_s11": {"path": "uid://shgrg8qcr1cu", "name": "胖子游戏2"}, "c03_s12": {"path": "uid://cxabqg87g4vxc", "name": "胖子游戏3"}, - "c03_s13": {"path": "uid://s6odh172gpbr", "name": "胖子游戏4"}, "c04_s01": {"path": "uid://drjnu33pga6i5", "name": "父母房间"}, } diff --git a/scene/ground/scene/c03/s08_囚室.gd b/scene/ground/scene/c03/s08_囚室.gd index e953a42a..a2515931 100644 --- a/scene/ground/scene/c03/s08_囚室.gd +++ b/scene/ground/scene/c03/s08_囚室.gd @@ -41,6 +41,7 @@ func _on_ground_ready() -> void: if interactable_body.icount > 0: closeup符纸.show() if interactable_body.interacted_times > 0: + pickable转轮.enabled = true body_sprite.frame = 3 if ambush血脚印.played: ambush血脚印.get_node("血脚印").frame = 8 @@ -72,6 +73,8 @@ func _on_body_interacted(success: bool) -> void: await Util.wait(1.0) SceneManager.unlock_player() if success: + SceneManager.disable_prop_item("prop_菜刀") + pickable转轮.enabled = true SceneManager.lock_player() body_sprite.play() await body_sprite.animation_finished diff --git a/scene/ground/scene/c03/s09_棺材房.tscn b/scene/ground/scene/c03/s09_棺材房.tscn index 645b6d2f..10511631 100644 --- a/scene/ground/scene/c03/s09_棺材房.tscn +++ b/scene/ground/scene/c03/s09_棺材房.tscn @@ -278,6 +278,8 @@ texture = ExtResource("14_htuhx") position = Vector2(420, 56) sign_mark_offset = Vector2(27.55, 0) action = 3 +title_filter = "c03" +note_key = "c03_s09_胖子干尸" [node name="Sfx2D棺材呼吸声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer" index="4"] position = Vector2(341, 45) @@ -294,6 +296,7 @@ metadata/_custom_type_script = "uid://wapo47a1oddf" position = Vector2(338, 54) texture = ExtResource("7_kdfpp") packed_scene = ExtResource("7_klnhf") +quit_closeup_on_cancel = false sign_mark_offset = Vector2(0, -21.53) collision_width_and_x = Vector2(100.52, 0) diff --git a/scene/ground/scene/c03/s10_胖子游戏1.gd b/scene/ground/scene/c03/s10_胖子游戏1.gd index 422d0b60..db53cd40 100644 --- a/scene/ground/scene/c03/s10_胖子游戏1.gd +++ b/scene/ground/scene/c03/s10_胖子游戏1.gd @@ -30,5 +30,6 @@ func _check_first_enter() -> void: if not data["has_entered"]: SceneManager.lock_player(0, 5, true) set_data("has_entered", true) - await SceneManager.pause_and_hide_player_sprite(1.5) + SceneManager.pause_and_hide_player_sprite(1.5) + await SceneManager.get_player().animation_finished SceneManager.unlock_player() \ No newline at end of file diff --git a/scene/ground/scene/c03/s12_胖子游戏3.gd b/scene/ground/scene/c03/s12_胖子游戏3.gd index 3742c0ff..730e45cb 100644 --- a/scene/ground/scene/c03/s12_胖子游戏3.gd +++ b/scene/ground/scene/c03/s12_胖子游戏3.gd @@ -21,22 +21,20 @@ func _ready() -> void: func _setup_node_reference() -> void: pass - func _on_ground_ready() -> void: pass func eat_meat() -> void: + var light_pivot = $"../DeployLayer/LightPivot" SceneManager.lock_player() $"../DeployLayer/Ambush吃肉".enabled = false await SceneManager.get_player().walk_to_x(850.0).finished # 第一帧没有瘦子,后面才有 var player = SceneManager.get_player() as MainPlayer - var sprite = $"../DeployLayer/Pro吃肉" as ProAnimatedSprite2D - sprite.play() - sprite.frame = 1 - player.hide_sprite = true - await sprite.animation_finished + player.reparent_light(light_pivot) + play("eat_meat") + await animation_finished SceneManager.unlock_player() # c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束 EventManager.set_stage_if_greater("c03_meat_grinder", 2) diff --git a/scene/ground/scene/c03/s12_胖子游戏3.tscn b/scene/ground/scene/c03/s12_胖子游戏3.tscn index 003d54a0..0dd522e6 100644 --- a/scene/ground/scene/c03/s12_胖子游戏3.tscn +++ b/scene/ground/scene/c03/s12_胖子游戏3.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://cxabqg87g4vxc"] +[gd_scene load_steps=12 format=3 uid="uid://cxabqg87g4vxc"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ly8ge"] [ext_resource type="Script" uid="uid://f4uampm47832" path="res://scene/ground/scene/c03/s12_胖子游戏3.gd" id="2_c01lu"] @@ -9,7 +9,91 @@ [ext_resource type="SpriteFrames" uid="uid://cb3b44a1jpybb" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第四段/c03_胖子游戏第四段_frames.tres" id="10_7x1vi"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="11_sul0a"] +[sub_resource type="Animation" id="Animation_c01lu"] +resource_name = "eat_meat" +length = 10.0 +capture_included = true +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DeployLayer/LightPivot:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.42, 0.7, 3.31, 4.75, 5.79, 9.4, 9.68, 10), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(850, 95), Vector2(875, 75), Vector2(892, 47), Vector2(940, 20), Vector2(944, 21), Vector2(959, 11), Vector2(977, -13), Vector2(977, 13), Vector2(968, 176)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DeployLayer/Pro吃肉:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = false +tracks/1/keys = { +"times": PackedFloat32Array(0, 10), +"transitions": PackedFloat32Array(1, 1), +"update": 2, +"values": [1, 48] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MainPlayer:hide_sprite") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.0333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_ay855"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DeployLayer/LightPivot:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(850, 95)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DeployLayer/Pro吃肉:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MainPlayer:hide_sprite") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] +_data = { +&"RESET": SubResource("Animation_ay855"), +&"eat_meat": SubResource("Animation_c01lu") +} [node name="S12" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -63,6 +147,9 @@ trigger_mode = "interact" one_shot = false hook_method = "eat_meat" +[node name="LightPivot" type="Marker2D" parent="Ground/DeployLayer" index="4"] +position = Vector2(850, 95) + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(69, 95) character = "胖子游戏" diff --git a/scene/ground/scene/c03/s13_胖子游戏4.gd b/scene/ground/scene/c03/s13_胖子游戏4.gd deleted file mode 100644 index 3742c0ff..00000000 --- a/scene/ground/scene/c03/s13_胖子游戏4.gd +++ /dev/null @@ -1,45 +0,0 @@ -@tool -extends AnimationRoot - - -# 覆盖该方法 -func _default_data() -> Dictionary: - return {} - - -func _ready() -> void: - super._ready() - if Engine.is_editor_hint(): - return - - -#region node_reference -#endregion - - -# 读取设置变量名 -func _setup_node_reference() -> void: - pass - - -func _on_ground_ready() -> void: - pass - - -func eat_meat() -> void: - SceneManager.lock_player() - $"../DeployLayer/Ambush吃肉".enabled = false - await SceneManager.get_player().walk_to_x(850.0).finished - # 第一帧没有瘦子,后面才有 - var player = SceneManager.get_player() as MainPlayer - var sprite = $"../DeployLayer/Pro吃肉" as ProAnimatedSprite2D - sprite.play() - sprite.frame = 1 - player.hide_sprite = true - await sprite.animation_finished - SceneManager.unlock_player() - # c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束 - EventManager.set_stage_if_greater("c03_meat_grinder", 2) - SceneManager.get_ground_loader().transition_to_scene("c03_s07", "2") - - diff --git a/scene/ground/scene/c03/s13_胖子游戏4.gd.uid b/scene/ground/scene/c03/s13_胖子游戏4.gd.uid deleted file mode 100644 index 2e1c0359..00000000 --- a/scene/ground/scene/c03/s13_胖子游戏4.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ddawqvg4fjxv6 diff --git a/scene/ground/scene/c03/s13_胖子游戏4.tscn b/scene/ground/scene/c03/s13_胖子游戏4.tscn index fca3c7c1..3e20141b 100644 --- a/scene/ground/scene/c03/s13_胖子游戏4.tscn +++ b/scene/ground/scene/c03/s13_胖子游戏4.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://s6odh172gpbr"] +[gd_scene load_steps=10 format=3 uid="uid://ban8firg4ti5x"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_via7g"] [ext_resource type="Script" uid="uid://f4uampm47832" path="res://scene/ground/scene/c03/s12_胖子游戏3.gd" id="2_f2euj"] diff --git a/scene/ground/script/c03/s06_closeup柜子后的洞.gd b/scene/ground/script/c03/s06_closeup柜子后的洞.gd index 31cc9700..b80f9eab 100644 --- a/scene/ground/script/c03/s06_closeup柜子后的洞.gd +++ b/scene/ground/script/c03/s06_closeup柜子后的洞.gd @@ -13,7 +13,7 @@ signal exit(arg) func _ready() -> void: layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME drag_wizardpaper.picked.connect(func(_a): - SceneManager.enable_important_item("prop_符纸", false) + SceneManager.enable_important_item("prop_符纸") ) drag_newspaper.picked.connect(func(_a): sfx_newspaper.play() diff --git a/scene/ground/script/c03/s09_closeup棺材特写.gd b/scene/ground/script/c03/s09_closeup棺材特写.gd index 206cb6d3..27a566a5 100644 --- a/scene/ground/script/c03/s09_closeup棺材特写.gd +++ b/scene/ground/script/c03/s09_closeup棺材特写.gd @@ -36,38 +36,38 @@ func _on_knife_interacted() -> void: ### TODO 读纸条时,开始准备横版的呼吸声(呼吸声与棺材怪爬墙活动分在两个音频文件) # 退出阅读马上进入横版,出现棺材怪爬墙活动的声音 func _on_note_interacted() -> void: - EventManager.set_stage("c03_coffin", 2) hover_note.hide() - %"沾血的纸条".show() - displaying_bloody_note = true + EventManager.set_stage("c03_coffin", 2) + SceneManager.enable_important_item("prop_沾血的纸条") + await SceneManager.get_inspector().quit_and_hidden + exit.emit(true) -var displaying_bloody_note := false -# 0: 刀柄 1: 浆糊 2: 刀把 +# 0: 需要浆糊 1: 需要刀把 2: 已完成 var knife_state := 0 func _unhandled_input(event: InputEvent) -> void: - if event.is_action_pressed("cancel"): + if event.is_action_pressed("cancel") and coffin_stage == 0: get_viewport().set_input_as_handled() SceneManager.reset_temp_disabled_props() - exit.emit(displaying_bloody_note) - if event.is_action_pressed("interact"): - get_viewport().set_input_as_handled() + exit.emit(false) + if event.is_action_pressed("interact") and coffin_stage == 0: var prop = SceneManager.get_current_prop() - var valid = false if knife_state == 0: - valid = prop == "prop_浆糊" - if valid: + get_viewport().set_input_as_handled() + if prop == "prop_浆糊": knife_state = 1 $"Sfx使用浆糊".play() %"胶水".show() SceneManager.disable_prop_item_temp("prop_浆糊") + else: + SceneManager.get_prop_hud().on_toggle_invalid_prop() elif knife_state == 1: - valid = prop == "prop_刀把" - if valid: + get_viewport().set_input_as_handled() + if prop == "prop_刀把": knife_state = 2 %"刀有柄".show() SceneManager.disable_prop_item_temp("prop_刀把") hover_knife.freezing = false - if not valid: - SceneManager.get_prop_hud().on_toggle_invalid_prop() + else: + SceneManager.get_prop_hud().on_toggle_invalid_prop() diff --git a/scene/ground/script/c03/s09_closeup棺材特写.tscn b/scene/ground/script/c03/s09_closeup棺材特写.tscn index e47b06c7..abc0a064 100644 --- a/scene/ground/script/c03/s09_closeup棺材特写.tscn +++ b/scene/ground/script/c03/s09_closeup棺材特写.tscn @@ -1,16 +1,12 @@ -[gd_scene load_steps=17 format=3 uid="uid://btmen4wc4uhhj"] +[gd_scene load_steps=13 format=3 uid="uid://btmen4wc4uhhj"] [ext_resource type="Script" uid="uid://cj22vg4dn44qk" path="res://scene/ground/script/c03/s09_closeup棺材特写.gd" id="1_6v1ol"] [ext_resource type="Texture2D" uid="uid://d03ja5ujdmyce" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/棺材特写.png" id="2_6xi18"] [ext_resource type="AudioStream" uid="uid://c57eu0dnr821k" path="res://asset/audio/sfx/交互/sfx_检阅道具.ogg" id="2_bgvp8"] [ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_f6kiq"] -[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_6xi18"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_mobd5"] [ext_resource type="AudioStream" uid="uid://has5y3j2yyp7" path="res://asset/audio/sfx/UI/纸条包裹钥匙.ogg" id="4_7k28m"] -[ext_resource type="Texture2D" uid="uid://bihf4gpj0r1jj" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/棺材纸条.png" id="4_bgvp8"] -[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_mobd5"] [ext_resource type="Texture2D" uid="uid://ush0d2g8uj08" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/带血的纸条.png" id="6_ok7al"] -[ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="6_t53mt"] [ext_resource type="PackedScene" uid="uid://bkk1rxx36ghrl" path="res://scene/entity/ux/hover_light_click_area.tscn" id="10_t53mt"] [ext_resource type="Texture2D" uid="uid://bkn0cytl435yw" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/刀.png" id="11_ok7al"] [ext_resource type="Texture2D" uid="uid://cd76oamv0msug" path="res://asset/art/scene/c03/s09_棺材房/棺材互动/胶水.png" id="13_i378g"] @@ -110,46 +106,3 @@ updater_event = &"c03_coffin" updater_mode = "shower" updater_stages = Array[int]([0]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" - -[node name="沾血的纸条" type="TextureRect" parent="."] -unique_name_in_owner = true -visible = false -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -texture = ExtResource("4_bgvp8") - -[node name="ContentInspector" parent="沾血的纸条" instance=ExtResource("3_6xi18")] -layout_mode = 1 - -[node name="遮罩" type="TextureRect" parent="沾血的纸条/ContentInspector"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -texture = ExtResource("5_mobd5") - -[node name="Label" type="Label" parent="沾血的纸条/ContentInspector/遮罩"] -custom_minimum_size = Vector2(180, 0) -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -60.0 -offset_top = -15.5 -offset_right = 60.0 -offset_bottom = 15.5 -grow_horizontal = 2 -grow_vertical = 2 -text = "文开,近日几条丘八又上门,娘仍未告诉他们你在何处,如今世道乱,苟活不耻,保命为上,盼望与儿早日重逢。" -vertical_alignment = 1 -autowrap_mode = 3 -script = ExtResource("6_t53mt") -translation_key = "prop_沾血的纸条_说明"