囚室与肉铺流程

This commit is contained in:
cakipaul 2025-07-31 00:43:27 +08:00
parent 87963405d4
commit d01a58bb31
13 changed files with 405 additions and 41 deletions

View File

@ -37,7 +37,6 @@ ui_center_notify_a_d_to_move,按 A/D 可左右移动,,,,,Press A/D to Move
ui_center_notify_press_e_to_interact,按 E 可与场景互动,,,,,Press E to interact
ui_center_notify_press_q_to_exit,按 Q 可退出,,,,,Press Q to exit
ui_center_notify_use_prop,按 E 使用道具,,,,,Press E to use item
ui_center_notify_lack_of_scissor,需要剪刀,,,,,
ui_center_notify_check_note,按 N 查看线索笔记,,,,,Press N to check clue notes
ui_center_notify_check_bag,按 B 查看重要物品,,,,,Press B to check important items
ui_center_notify_right_click_prop,右键点击可检阅道具,,,,,Right-click to examine item
@ -48,6 +47,7 @@ ui_press_shift,按住 Shift 奔跑,,,,,Hold Shift to run
ui_boxcat_press_s,按住 S 躲藏,,,,,Hold S to hide
input_拼凑信件,点击选择信件碎片方向键移动E 旋碎片转Q 退出,,,,,"Click to select letter fragments, arrow keys to move, E to rotate, Q to exit"
input_书架游戏,点击书本可选中或交换Q 退出,,,,,"Click books to select or swap, Q to exit"
ui_center_notify_lack_of_scissor,需要剪刀,,,,,
input_麻将游戏_麻将不足,还缺一块麻将,,,,,
input_麻将整理游戏_开始方式,取出「三筒」开启整理,,,,,
input_麻将游戏_交换规则,依次点击两块麻将可进行交换,,,,,
@ -59,7 +59,9 @@ ui_center_notify_c03药车不能再取药材,同种药材只能取出一份,,,,,
ui_center_notify_c03放到碗中或原处,药材只能放到碗中或原处,,,,,
ui_center_notify_c03碗口放入药材,从碗口处放入药材,,,,,
ui_center_notify_c03准备研磨,已准备好研磨,,,,,
ui_center_notify_c03绞肉机缺少转轮,缺少转轮,按 E 使用道具,,,,,
ui_获得道具,获得道具,,,,,Item Obtained
ui_获得重要物品,重要物品,,,,,
ui_退出,退出,,,,,Exit
ui_阅读,阅读,,,,,Read
ui_检阅,检阅,,,,,Examine
@ -137,10 +139,12 @@ prop_2013钥匙,2013钥匙,,,[#texture=c03/胖子的钥匙.png],,
prop_2013钥匙_说明,一把普通的房门钥匙,钥匙环上还挂着个小铃铛,,,,,
prop_药方,药方,,,[#texture=c03/药方.png][#inspect=c03/ux_药方.png],,
prop_药方_说明,发黄的纸张上写着密密麻麻的药名,字迹工整却略显潦草,,,,,
prop_符纸,符纸,,,[#texture=c03/符纸纸条.png][#inspect=c03/ux_符纸纸条.png],,
prop_符纸_说明,符纸说明,,,,,
prop_转轮,转轮,,,[#texture=c03/转轮.png],,
prop_转轮_说明,转轮说明,,,,,
prop_新鲜的肉,新鲜的肉,,,[#texture=c03/新鲜的肉.png],,
prop_新鲜的肉_说明,新鲜的肉说明,,,,,
prop_符纸钥匙,符纸钥匙,,,[#texture=c03/符纸钥匙.png][#inspect=c03/ux_符纸钥匙.png],,
prop_符纸钥匙_说明,符纸钥匙说明,,,,,
prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,Director's Letter
prop_院长的信_说明,小萍:{br}你现下境况如何?{br}你虽离开浦育院已久,但我始终没有忘记为你祈祷。{br}愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。{br}你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。{br}若有闲暇,欢迎你回浦育院看看。{br}院长童玉君{br}民国二十一年十月十五日{br}公寓地址 芦昌路26弄3号,,,,,"Xiao Ping:{br}How are you faring now?{br}Though you left Puyu Orphanage long ago, I have never forgotten to pray for you.{br}May God bless you to walk the path of true enlightenment. I believe this was also your father's earnest wish when he entrusted you to my care.{br}Now that you are grown, regardless of whatever reasons your parents had for separating from you, you deserve the right to know the truth. I have attached the apartment address to this letter, though I know little beyond this.{br}If you have time, you are welcome to visit Puyu Orphanage.{br}Director Tong Yujun{br}October 15th, Year 21 of the Republic{br}Apartment Address: No. 3, Lane 26, Luchang Road"
prop_船票,船票,,,[#texture=c02/船票.png],,Boat Ticket
@ -155,6 +159,8 @@ prop_邀请信,邀请信,,,[#texture=c03/邀请信.png][#inspect=c03/ux_邀请
prop_邀请信_说明,邀请信说明,,,,,
prop_两个麻将,麻将,,,[#texture=c03/两个麻将.png],,
prop_两个麻将_说明,王守义出老千时用的麻将{br}我听说,那会儿赌场由黑帮控制,秩序混乱,赌徒设局被抓后,往往下场凄惨,只有极少数人能够全身而退。,,,,,
prop_符纸,符纸,,,[#texture=c03/符纸纸条.png][#inspect=c03/ux_符纸纸条.png],,
prop_符纸_说明,符纸说明,,,,,
prop_沾血的纸条,沾血的纸条,,,[#texture=c03/沾血的纸条.png][#inspect=c03/ux_沾血的纸条.png],,
prop_沾血的纸条_说明,文开,近日几条丘八又上门,娘仍未告诉他们你在何处,如今世道乱,苟活不耻,保命为上,盼望与儿早日重逢。,,,,,
c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍吧。,,ID格式 prop_xx_说明,,,I feel like I've forgotten something. Let me go back and check again.
@ -264,4 +270,6 @@ c03_抓药铜钱不足,钱还没准备够...牌子上讲需要三文,,,,,
c03_药方内容,生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服,,,,,
c03_s06_没贴的寻人启事,没贴的寻人启事,,,,,
c03_s08_囚室绳子,绑得很死,直接解不开绳子。,,,,,
c03_s08_囚室醒过来,?这里是,,,,,
c03_s08_囚室看到脚印,?又是脚印,,,,,
c03_s08_囚室符纸,妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。,,,,,

1 keys zh_CN _character _notes _tags zh_SH en
37 ui_center_notify_press_e_to_interact 按 E 可与场景互动 Press E to interact
38 ui_center_notify_press_q_to_exit 按 Q 可退出 Press Q to exit
39 ui_center_notify_use_prop 按 E 使用道具 Press E to use item
ui_center_notify_lack_of_scissor 需要剪刀
40 ui_center_notify_check_note 按 N 查看线索笔记 Press N to check clue notes
41 ui_center_notify_check_bag 按 B 查看重要物品 Press B to check important items
42 ui_center_notify_right_click_prop 右键点击可检阅道具 Right-click to examine item
47 ui_boxcat_press_s 按住 S 躲藏 Hold S to hide
48 input_拼凑信件 点击选择信件碎片,方向键移动,E 旋碎片转,Q 退出 Click to select letter fragments, arrow keys to move, E to rotate, Q to exit
49 input_书架游戏 点击书本可选中或交换,Q 退出 Click books to select or swap, Q to exit
50 ui_center_notify_lack_of_scissor 需要剪刀
51 input_麻将游戏_麻将不足 还缺一块麻将
52 input_麻将整理游戏_开始方式 取出「三筒」开启整理
53 input_麻将游戏_交换规则 依次点击两块麻将可进行交换
59 ui_center_notify_c03放到碗中或原处 药材只能放到碗中或原处
60 ui_center_notify_c03碗口放入药材 从碗口处放入药材
61 ui_center_notify_c03准备研磨 已准备好研磨
62 ui_center_notify_c03绞肉机缺少转轮 缺少转轮,按 E 使用道具
63 ui_获得道具 获得道具 Item Obtained
64 ui_获得重要物品 重要物品
65 ui_退出 退出 Exit
66 ui_阅读 阅读 Read
67 ui_检阅 检阅 Examine
139 prop_2013钥匙_说明 一把普通的房门钥匙,钥匙环上还挂着个小铃铛
140 prop_药方 药方 [#texture=c03/药方.png][#inspect=c03/ux_药方.png]
141 prop_药方_说明 发黄的纸张上写着密密麻麻的药名,字迹工整却略显潦草
prop_符纸 符纸 [#texture=c03/符纸纸条.png][#inspect=c03/ux_符纸纸条.png]
prop_符纸_说明 符纸说明
142 prop_转轮 转轮 [#texture=c03/转轮.png]
143 prop_转轮_说明 转轮说明
144 prop_新鲜的肉 新鲜的肉 [#texture=c03/新鲜的肉.png]
145 prop_新鲜的肉_说明 新鲜的肉说明
146 prop_符纸钥匙 符纸钥匙 [#texture=c03/符纸钥匙.png][#inspect=c03/ux_符纸钥匙.png]
147 prop_符纸钥匙_说明 符纸钥匙说明
148 prop_院长的信 院长的信 [#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png] Director's Letter
149 prop_院长的信_说明 小萍:{br}你现下境况如何?{br}你虽离开浦育院已久,但我始终没有忘记为你祈祷。{br}愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。{br}你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。{br}若有闲暇,欢迎你回浦育院看看。{br}院长童玉君{br}民国二十一年十月十五日{br}公寓地址 芦昌路26弄3号 Xiao Ping:{br}How are you faring now?{br}Though you left Puyu Orphanage long ago, I have never forgotten to pray for you.{br}May God bless you to walk the path of true enlightenment. I believe this was also your father's earnest wish when he entrusted you to my care.{br}Now that you are grown, regardless of whatever reasons your parents had for separating from you, you deserve the right to know the truth. I have attached the apartment address to this letter, though I know little beyond this.{br}If you have time, you are welcome to visit Puyu Orphanage.{br}Director Tong Yujun{br}October 15th, Year 21 of the Republic{br}Apartment Address: No. 3, Lane 26, Luchang Road
150 prop_船票 船票 [#texture=c02/船票.png] Boat Ticket
159 prop_邀请信_说明 邀请信说明
160 prop_两个麻将 麻将 [#texture=c03/两个麻将.png]
161 prop_两个麻将_说明 王守义出老千时用的麻将{br}我听说,那会儿赌场由黑帮控制,秩序混乱,赌徒设局被抓后,往往下场凄惨,只有极少数人能够全身而退。
162 prop_符纸 符纸 [#texture=c03/符纸纸条.png][#inspect=c03/ux_符纸纸条.png]
163 prop_符纸_说明 符纸说明
164 prop_沾血的纸条 沾血的纸条 [#texture=c03/沾血的纸条.png][#inspect=c03/ux_沾血的纸条.png]
165 prop_沾血的纸条_说明 文开,近日几条丘八又上门,娘仍未告诉他们你在何处,如今世道乱,苟活不耻,保命为上,盼望与儿早日重逢。
166 c01_s05_检查院长房间 好像忘记了什么事情,再回去检查一遍吧。 ID格式: prop_xx_说明 I feel like I've forgotten something. Let me go back and check again.
270 c03_药方内容 生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服
271 c03_s06_没贴的寻人启事 没贴的寻人启事
272 c03_s08_囚室绳子 绑得很死,直接解不开绳子。
273 c03_s08_囚室醒过来 ?这里是
274 c03_s08_囚室看到脚印 ?又是脚印
275 c03_s08_囚室符纸 妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。

View File

@ -356,6 +356,8 @@
# s07 屠宰间
绑得很死,直接解不开绳子。 [ID:c03_s08_囚室绳子]
# s08 囚室
?这里是 [ID:c03_s08_囚室醒过来]
?又是脚印 [ID:c03_s08_囚室看到脚印]
妖物者,本自造化而生,具灵识,知求生,与万类本无别。人言有异,是以别之。 [ID:c03_s08_囚室符纸]
# s09 棺材房
=> END

View File

@ -9,3 +9,4 @@
[resource]
script = ExtResource("5_urhav")
audios = Array[AudioStream]([ExtResource("1_6m3uo"), ExtResource("2_e530w"), ExtResource("3_u6hi2"), ExtResource("4_cpnk0")])
db = 0

View File

@ -23,8 +23,6 @@ var default_linear := 1.0
func _ready() -> void:
bus = &"game_sfx"
process_mode = Node.PROCESS_MODE_INHERIT
if Engine.is_editor_hint():
return
default_db = volume_db
default_linear = volume_linear
timer = Timer.new()
@ -34,6 +32,8 @@ func _ready() -> void:
timer.timeout.connect(_on_timer_timeout)
add_child(timer)
finished.connect(_on_finished)
if Engine.is_editor_hint():
return
# ground 退出时process mode 切换为 alwaysease out
SceneManager.ground_transition_pre_paused.connect(_on_ground_transition_pre_paused)

View File

@ -14,17 +14,54 @@ func _ready() -> void:
#region node_reference
var ambush偷听门板: Ambush2D
var pickable新鲜的肉: Pickable2D
var bloody_footstep: AnimatedSprite2D
#endregion
# 读取设置变量名
func _setup_node_reference() -> void:
pass
ambush偷听门板 = $"../DeployLayer/Ambush偷听门板"
pickable新鲜的肉 = $"../DeployLayer/Pickable新鲜的肉"
bloody_footstep = $"../DeployLayer/血脚印"
func _on_ground_ready() -> void:
pass
# TODO 血脚印 小蝉给钥匙
# 之后 Ambush偷听门板 附近出现轻微敲门声
# 启用 Ambush偷听门板
pickable新鲜的肉.triggered.connect(_on_meat_picked)
if pickable新鲜的肉.picked:
bloody_footstep.frame = 8
_post_meat_picked()
func _on_meat_picked() -> void:
# 小蝉给钥匙,先静默给,再真给
SceneManager.enable_prop_item_silently("prop_符纸钥匙")
SceneManager.lock_player()
await SceneManager.get_inspector().quit_and_hidden
bloody_footstep.play()
SceneManager.pop_debug_dialog_info("音效", "小蝉血脚印出现,给钥匙")
$"Sfx小蝉给钥匙".play()
await bloody_footstep.animation_finished
var xchan = $"../DeployLayer/小蝉给钥匙" as AnimatedSprite2D
var tween = create_tween()
tween.tween_property(xchan, "modulate:a", 1.0, 1.0)
tween.tween_callback(xchan.play)
tween.tween_callback(SceneManager.get_player().set_facing_direction.bind(Vector2.LEFT))
await xchan.animation_finished
tween = create_tween()
tween.tween_property(xchan, "modulate:a", 0.0, 1.0)
SceneManager.enable_prop_item("prop_符纸钥匙")
SceneManager.unlock_player()
_post_meat_picked()
func _post_meat_picked() -> void:
# 血脚印 小蝉给钥匙 后 Ambush偷听门板 附近出现轻微敲门声
ambush偷听门板.enabled = true
if not ambush偷听门板.played:
$"Sfx门板敲门声".play()
func eavesdrop_plank() -> void:
$"Sfx门板敲门声".easing_kill()

View File

@ -1,15 +1,21 @@
[gd_scene load_steps=23 format=3 uid="uid://6ehb3ux2kilu"]
[gd_scene load_steps=30 format=3 uid="uid://6ehb3ux2kilu"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ip0og"]
[ext_resource type="Script" uid="uid://brncw0d41f427" path="res://scene/ground/scene/c03/s05_肉铺.gd" id="2_l22xv"]
[ext_resource type="AudioStream" uid="uid://b2mudqvq1dmng" path="res://asset/audio/sfx/环境音/白噪音/白噪声房间里1.ogg" id="3_l22xv"]
[ext_resource type="Texture2D" uid="uid://ccl8ud5hbuq1r" path="res://asset/art/scene/c03/s05_肉铺/bg_肉铺内背景.png" id="4_ip0og"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_r4bhp"]
[ext_resource type="AudioStream" uid="uid://dfni8aakmmp00" path="res://asset/audio/sfx/旧版/c02/红色印记出现.ogg" id="5_cbx3n"]
[ext_resource type="Texture2D" uid="uid://c5oth3mdxrnby" path="res://asset/art/scene/c03/s05_肉铺/fg_肉铺内前景.png" id="5_l22xv"]
[ext_resource type="AudioStream" uid="uid://yujyahxjawp4" path="res://asset/audio/effect/impact/impactPlank_medium_000.ogg" id="6_pw825"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_r4bhp"]
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="6_trckl"]
[ext_resource type="AudioStream" uid="uid://cv5yskhl1gsch" path="res://asset/audio/effect/impact/impactPlank_medium_001.ogg" id="7_rb4r8"]
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="7_vtje3"]
[ext_resource type="PackedScene" uid="uid://iacb6tfxwbhc" path="res://scene/ground/script/c03/s05_closeup肉铺账簿.tscn" id="8_12how"]
[ext_resource type="AudioStream" uid="uid://bbe0mq32pms3v" path="res://asset/audio/effect/impact/impactPlank_medium_002.ogg" id="8_31dsv"]
[ext_resource type="Texture2D" uid="uid://b68xl7547rkqr" path="res://asset/art/scene/c03/s05_肉铺/账簿.png" id="8_mv54a"]
[ext_resource type="AudioStream" uid="uid://bisi1i5u4yyql" path="res://asset/audio/effect/impact/impactPlank_medium_003.ogg" id="9_ic4up"]
[ext_resource type="PackedScene" uid="uid://dsa6frlw6e6gg" path="res://scene/entity/pickable.tscn" id="10_ma57s"]
[ext_resource type="SpriteFrames" uid="uid://cwes55ajc3rd4" path="res://asset/art/gif/c02_空房间/c02_空房间_frames.tres" id="11_5dpcv"]
[ext_resource type="Texture2D" uid="uid://baijw7fcllwlf" path="res://asset/art/scene/c03/s05_肉铺/角落的血迹.png" id="11_y1pbi"]
@ -19,6 +25,13 @@
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_n65gt"]
streams_count = 4
stream_0/stream = ExtResource("6_pw825")
stream_1/stream = ExtResource("7_rb4r8")
stream_2/stream = ExtResource("8_31dsv")
stream_3/stream = ExtResource("9_ic4up")
[sub_resource type="AtlasTexture" id="AtlasTexture_chbaa"]
atlas = ExtResource("13_rt6kj")
region = Rect2(0, 0, 6, 14)
@ -79,6 +92,22 @@ mode = "场景背景音"
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx小蝉给钥匙" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
stream = ExtResource("5_cbx3n")
bus = &"game_sfx"
script = ExtResource("4_r4bhp")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx门板敲门声" type="AudioStreamPlayer2D" parent="Ground/AnimationPlayer" index="2"]
position = Vector2(362, 23)
stream = SubResource("AudioStreamRandomizer_n65gt")
volume_db = -10.0
bus = &"game_sfx"
script = ExtResource("6_trckl")
loop = true
loop_round_time = 0.7
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="BGSprite2D" parent="Ground" index="2"]
light_mask = 5
position = Vector2(8.5, 0)
@ -99,12 +128,14 @@ target_portal = "left"
status = "opened"
[node name="Ambush偷听门板" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_r4bhp")]
unique_name_in_owner = true
position = Vector2(363, 40)
enabled = false
trigger_mode = "interact"
collision_width_and_x = Vector2(48.8, 0)
hook_dialogue_res = "c03"
hook_dialogue_title = "c03_s05_肉铺隔门板偷听"
hook_method = "eavesdrop_plank"
[node name="Closeup肉铺账簿" parent="Ground/DeployLayer" index="3" instance=ExtResource("7_vtje3")]
position = Vector2(424, 41)
@ -114,6 +145,7 @@ on_display_hide_hud = true
sign_mark_offset = Vector2(-2.6, -7.28)
[node name="Pickable新鲜的肉" parent="Ground/DeployLayer" index="4" instance=ExtResource("10_ma57s")]
unique_name_in_owner = true
position = Vector2(220, 37)
prop_key = "prop_新鲜的肉"
@ -126,8 +158,6 @@ flip_h = true
position = Vector2(116, 39)
sprite_frames = ExtResource("11_5dpcv")
animation = &"空房间血脚印"
frame = 8
frame_progress = 1.0
flip_h = true
[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="7"]
@ -145,7 +175,7 @@ texture = ExtResource("14_cbx3n")
texture_scale = 0.3
[node name="小蝉给钥匙" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="9"]
self_modulate = Color(0.611765, 0.611765, 0.611765, 1)
modulate = Color(1, 1, 1, 0)
position = Vector2(41, 54)
sprite_frames = ExtResource("15_rt6kj")
animation = &"c03_小婵_give_抬手"

View File

@ -129,8 +129,6 @@ metadata/_custom_type_script = "uid://dt8cfnm2og4h"
unique_name_in_owner = true
position = Vector2(419, 21)
packed_scene = ExtResource("15_48a3r")
quit_closeup_on_cancel = false
on_display_hide_hud = null
[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Closeup绞肉机"]
script = ExtResource("17_e1lvl")

View File

@ -14,6 +14,9 @@ func _ready() -> void:
#region node_reference
var ambush血脚印: Ambush2D
var pickable转轮: Pickable2D
var interactable囚室尸体: Interactable2D
var closeup符纸: Closeup2D
var interactable_body: Interactable2D
var body_sprite: AnimatedSprite2D
@ -23,6 +26,9 @@ var closeup囚室门锁: Closeup2D
# 读取设置变量名
func _setup_node_reference() -> void:
ambush血脚印 = $"../DeployLayer/Ambush血脚印"
pickable转轮 = $"../DeployLayer/Interactable囚室尸体/Pickable转轮"
interactable囚室尸体 = $"../DeployLayer/Interactable囚室尸体"
closeup符纸 = $"../DeployLayer/Closeup符纸"
interactable_body = $"../DeployLayer/Interactable囚室尸体"
body_sprite = $"../DeployLayer/Interactable囚室尸体/尸体动画"
@ -36,6 +42,8 @@ func _on_ground_ready() -> void:
closeup符纸.show()
if interactable_body.interacted_times > 0:
body_sprite.frame = 3
if ambush血脚印.played:
ambush血脚印.get_node("血脚印").frame = 8
_check_first_enter()
@ -51,6 +59,7 @@ func _check_first_enter() -> void:
await Util.wait(3.0)
# c02_吕萍_背靠起身
await player.player_action(19, true)
await SceneManager.pop_os_with_str("c03_s08_囚室醒过来")
set_data("has_entered", true)
SceneManager.unlock_player()
@ -69,3 +78,11 @@ func _on_body_interacted(success: bool) -> void:
SceneManager.unlock_player()
# SceneManager.enable_prop_item("prop_转轮")
# await SceneManager.get_inspector().quit_and_hidden
func play_footstep() -> void:
SceneManager.lock_player()
var sprite = ambush血脚印.get_node("血脚印")
sprite.play()
await sprite.animation_finished
await SceneManager.pop_os_with_str("c03_s08_囚室看到脚印")
SceneManager.unlock_player()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=23 format=3 uid="uid://bixdbbyhroepi"]
[gd_scene load_steps=31 format=3 uid="uid://bixdbbyhroepi"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_fusj3"]
[ext_resource type="Script" uid="uid://ddrlpkqfabx6d" path="res://scene/ground/scene/c03/s08_囚室.gd" id="2_fusj3"]
@ -19,6 +19,9 @@
[ext_resource type="PackedScene" uid="uid://dsa6frlw6e6gg" path="res://scene/entity/pickable.tscn" id="16_7eou8"]
[ext_resource type="PackedScene" uid="uid://jyi40p8ylsj1" path="res://scene/ground/script/c03/s08_closeup符纸.tscn" id="17_06t0x"]
[ext_resource type="Texture2D" uid="uid://bpjqwfihjol7t" path="res://asset/art/scene/c03/s08_囚室/符纸.png" id="17_7eou8"]
[ext_resource type="SpriteFrames" uid="uid://cwes55ajc3rd4" path="res://asset/art/gif/c02_空房间/c02_空房间_frames.tres" id="19_cnbie"]
[ext_resource type="Texture2D" uid="uid://bp84w8keuelyj" path="res://asset/art/scene/c02/s10_空房间/e_蜡烛-sheet.png" id="20_vu7oc"]
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="21_cvhc1"]
[sub_resource type="Animation" id="Animation_7eou8"]
length = 0.001
@ -92,6 +95,42 @@ _data = {
&"drop_wizardpaper": SubResource("Animation_a5pph")
}
[sub_resource type="AtlasTexture" id="AtlasTexture_chbaa"]
atlas = ExtResource("20_vu7oc")
region = Rect2(0, 0, 6, 14)
[sub_resource type="AtlasTexture" id="AtlasTexture_th1ek"]
atlas = ExtResource("20_vu7oc")
region = Rect2(6, 0, 6, 14)
[sub_resource type="AtlasTexture" id="AtlasTexture_to1d1"]
atlas = ExtResource("20_vu7oc")
region = Rect2(12, 0, 6, 14)
[sub_resource type="AtlasTexture" id="AtlasTexture_nx6jy"]
atlas = ExtResource("20_vu7oc")
region = Rect2(18, 0, 6, 14)
[sub_resource type="SpriteFrames" id="SpriteFrames_qiw1x"]
animations = [{
"frames": [{
"duration": 3.0,
"texture": SubResource("AtlasTexture_chbaa")
}, {
"duration": 3.0,
"texture": SubResource("AtlasTexture_th1ek")
}, {
"duration": 3.0,
"texture": SubResource("AtlasTexture_to1d1")
}, {
"duration": 3.0,
"texture": SubResource("AtlasTexture_nx6jy")
}],
"loop": true,
"name": &"default",
"speed": 10.0
}]
[node name="S08" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0]
@ -209,6 +248,31 @@ rotation = -0.698132
scale = Vector2(0.3, 0.3)
texture = ExtResource("17_7eou8")
[node name="Ambush血脚印" parent="Ground/DeployLayer" index="9" instance=ExtResource("12_73c8v")]
unique_name_in_owner = true
position = Vector2(287, 63)
hook_method = "play_footstep"
[node name="血脚印" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush血脚印"]
position = Vector2(-64, -25)
sprite_frames = ExtResource("19_cnbie")
animation = &"空房间血脚印"
flip_h = true
[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush血脚印"]
self_modulate = Color(0.611765, 0.611765, 0.611765, 1)
position = Vector2(-83.2, 7.6172)
sprite_frames = SubResource("SpriteFrames_qiw1x")
autoplay = "default"
[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Ambush血脚印"]
position = Vector2(-83.2, -5.2)
color = Color(0.999971, 0.912551, 0.842208, 1)
energy = 1.2
blend_mode = 2
texture = ExtResource("21_cvhc1")
texture_scale = 0.3
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(63, 95)
catty_light_energy = 0.5

View File

@ -4,7 +4,7 @@ extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
return {"monster_woken": false}
func _ready() -> void:
@ -14,23 +14,42 @@ func _ready() -> void:
#region node_reference
var sfx_2d棺材呼吸声monster: Sfx2D
var sfx_2d棺材呼吸声closeup: Sfx2D
var sfx_2d棺材呼吸声: Sfx2D
var closeup棺材特写: Closeup2D
#endregion
# 读取设置变量名
func _setup_node_reference() -> void:
sfx_2d棺材呼吸声monster = $"../DeployLayer/AnimatableBody棺材怪/Sfx2D棺材呼吸声Monster"
sfx_2d棺材呼吸声closeup = $"../DeployLayer/Closeup棺材特写/Sfx2D棺材呼吸声Closeup"
sfx_2d棺材呼吸声 = $"../DeployLayer/Sfx2D棺材呼吸声"
closeup棺材特写 = $"../DeployLayer/Closeup棺材特写"
func _on_ground_ready() -> void:
_coffin_monster_climb_out()
closeup棺材特写.exit.connect(_on_coffin_exit)
if data["monster_woken"]:
closeup棺材特写.hide()
sfx_2d棺材呼吸声.stop()
func _on_coffin_exit(arg) -> void:
if arg:
set_data("monster_woken", true)
_coffin_monster_climb_out()
func _coffin_monster_climb_out() -> void:
sfx_2d棺材呼吸声closeup.easing_kill(0.5)
sfx_2d棺材呼吸声closeup.play()
await Util.wait(2.0)
# play("monster_climbing")
SceneManager.lock_player()
play("monster_first_contact")
SceneManager.pop_debug_dialog_info("音效", "棺材怪对峙amb+爬行sfx")
await animation_finished
SceneManager.unlock_player()
func monster_disappear_ambush() -> void:
sfx_2d棺材呼吸声.easing_kill()
var monster = $"../DeployLayer/Pro棺材怪2"
var tween = create_tween()
tween.tween_property(monster, "modulate:a", 0.0, 0.4)
SceneManager.pop_debug_dialog_info("音效", "棺材怪突然消失sfx")

View File

@ -10,26 +10,199 @@
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="7_f663s"]
[ext_resource type="Texture2D" uid="uid://bokcuqf4oist4" path="res://asset/art/scene/c03/s09_棺材房/棺材.png" id="7_kdfpp"]
[ext_resource type="PackedScene" uid="uid://btmen4wc4uhhj" path="res://scene/ground/script/c03/s09_closeup棺材特写.tscn" id="7_klnhf"]
[ext_resource type="AudioStream" uid="uid://mff0udi3glb4" path="res://asset/audio/sfx/交互/第一章/瞎子房间癞子呼吸.ogg" id="9_alans"]
[ext_resource type="SpriteFrames" uid="uid://cvjl0m6b5oc6f" path="res://asset/art/gif/c03_棺材怪/c03_棺材怪_frames.tres" id="9_mpel5"]
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="10_htuhx"]
[ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="10_t7o3d"]
[ext_resource type="AudioStream" uid="uid://cfsx6yqrw5gp4" path="res://asset/audio/sfx/交互/第二章/棺材怪呼吸.ogg" id="11_qr48f"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="13_alans"]
[ext_resource type="Texture2D" uid="uid://d3rl4pyal4bao" path="res://asset/art/scene/c03/s09_棺材房/角落胖子干尸.png" id="14_htuhx"]
[ext_resource type="AudioStream" uid="uid://b8gsppgtp8tdk" path="res://asset/audio/sfx/旧版/lvping/footstep_earth_left.ogg" id="15_qr48f"]
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="15_rcrkk"]
[sub_resource type="Animation" id="Animation_htuhx"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/Pro棺材怪/呼吸声跟随1:remote_path")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [NodePath("")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("%Sfx2D棺材怪移动声:playing")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Sfx2D棺材呼吸声:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(341, 45)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DeployLayer/Pro棺材怪:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(611, -65)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DeployLayer/Pro棺材怪2:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(-88, 12)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("DeployLayer/Pro棺材怪2/呼吸声跟随2:remote_path")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [NodePath("")]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("DeployLayer/Pro棺材怪2:animation")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"棺材怪走路"]
}
[sub_resource type="Animation" id="Animation_alans"]
resource_name = "monster_climbing"
length = 2.0
resource_name = "monster_first_contact"
length = 7.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("DeployLayer/Pro棺材怪/呼吸声跟随1:remote_path")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3.5),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [NodePath("../../Sfx2D棺材呼吸声"), NodePath("")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DeployLayer/Pro棺材怪:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 2.33333, 3.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(453, -100), Vector2(453, -100), Vector2(-100, -100)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DeployLayer/Pro棺材怪2:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 3.93333, 5.53333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(-88, 12), Vector2(-88, 12), Vector2(50, 12)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DeployLayer/Pro棺材怪2/呼吸声跟随2:remote_path")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 3.56667),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [NodePath(""), NodePath("../../Sfx2D棺材呼吸声")]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("%Sfx2D棺材怪移动声:playing")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(2.37),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/5/type = "method"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("MainPlayer")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 2.7),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [Vector2(1, 0)],
"method": &"set_facing_direction"
}, {
"args": [Vector2(-1, 0)],
"method": &"set_facing_direction"
}]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("DeployLayer/Pro棺材怪2:animation")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(5.83333),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"棺材怪受惊"]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"]
_data = {
&"RESET": SubResource("Animation_htuhx"),
&"monster_climbing": SubResource("Animation_alans")
&"monster_first_contact": SubResource("Animation_alans")
}
[node name="S09" type="Node2D"]
@ -81,17 +254,16 @@ position = Vector2(420, 56)
sign_mark_offset = Vector2(27.55, 0)
action = 3
[node name="呼吸声跟随" type="RemoteTransform2D" parent="Ground/DeployLayer" index="4"]
position = Vector2(338, 47)
[node name="Sfx2D棺材呼吸声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/呼吸声跟随"]
[node name="Sfx2D棺材呼吸声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer" index="4"]
unique_name_in_owner = true
position = Vector2(341, 45)
stream = ExtResource("11_qr48f")
autoplay = true
max_distance = 1000.0
attenuation = 2.0
bus = &"game_sfx"
script = ExtResource("10_htuhx")
loop = true
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="Closeup棺材特写" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_tmrc4")]
@ -103,21 +275,23 @@ collision_width_and_x = Vector2(100.52, 0)
[node name="Pro棺材怪" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="6"]
light_mask = 3
position = Vector2(650, -76)
position = Vector2(611, -65)
sprite_frames = ExtResource("9_mpel5")
animation = &"墙上呼吸帧"
autoplay = "爬墙循环动画"
autoplay = "墙上呼吸帧"
script = ExtResource("10_t7o3d")
metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Sfx2D棺材怪移动声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Pro棺材怪"]
unique_name_in_owner = true
position = Vector2(15, -22)
stream = ExtResource("9_alans")
stream = ExtResource("15_qr48f")
volume_db = 10.0
max_distance = 1000.0
attenuation = 2.0
bus = &"game_sfx"
script = ExtResource("10_htuhx")
loop = true
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Pro棺材怪"]
@ -125,18 +299,21 @@ position = Vector2(-19, -27)
range_item_cull_mask = 2
texture = ExtResource("15_rcrkk")
[node name="呼吸声跟随1" type="RemoteTransform2D" parent="Ground/DeployLayer/Pro棺材怪"]
[node name="Pro棺材怪2" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="7"]
light_mask = 3
position = Vector2(-88, 12)
sprite_frames = ExtResource("9_mpel5")
animation = &"棺材怪受惊"
autoplay = "棺材怪受惊"
animation = &"棺材怪走路"
autoplay = "棺材怪走路"
flip_h = true
script = ExtResource("10_t7o3d")
autostart = false
metadata/_custom_type_script = "uid://cphfob11f7atx"
[node name="Ambush棺材怪消失" parent="Ground/DeployLayer/Pro棺材怪2" instance=ExtResource("13_alans")]
position = Vector2(121, 40)
position = Vector2(155, 45)
enabled = false
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Pro棺材怪2"]
@ -144,6 +321,8 @@ position = Vector2(-20, 4)
range_item_cull_mask = 2
texture = ExtResource("15_rcrkk")
[node name="呼吸声跟随2" type="RemoteTransform2D" parent="Ground/DeployLayer/Pro棺材怪2"]
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(325, 98)
catty_light_energy = 0.5

View File

@ -22,9 +22,13 @@ func _ready() -> void:
SceneManager.pop_center_notification("ui_center_notify_c03绞肉机缺少转轮")
wheel_sprite.hide()
elif stage == 1:
_hold_parent_cancel()
SceneManager.toggle_hud_display(false)
# 演出并传送到胖子游戏
_wheel_placed_and_show()
elif stage == 2:
_hold_parent_cancel()
SceneManager.toggle_hud_display(false)
SceneManager.pop_center_notification("ui_center_notify_drag_to_rotate")
wheel_sprite.show()
# 需连接转动信号
@ -66,6 +70,12 @@ func _on_wheel_rotated(_radiant: float) -> void:
c03_mem.start_show()
func _hold_parent_cancel() -> void:
var p = get_parent() as Closeup2D
if p:
p.hold_cancel_before_exit()
func _wheel_placed_and_show() -> void:
wheel_sprite.show()
Util.shake_layer(self, 1.5)

View File

@ -11,7 +11,6 @@ func _ready() -> void:
# 退出阅读马上进入横版,出现棺材怪爬墙活动的声音
func _read() -> void:
SceneManager.pop_debug_dialog_info("音效", "棺材怪呼吸的声音A")
SceneManager.pop_debug_dialog_info("音效", "棺材怪爬墙活动的声音B")