diff --git a/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png new file mode 100644 index 00000000..f306d46c Binary files /dev/null and b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png differ diff --git a/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png.import b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png.import new file mode 100644 index 00000000..23c0b3a5 --- /dev/null +++ b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rsk3dkai37hu" +path="res://.godot/imported/前侧楼梯_楼梯人群_前景.png-9fc74b9bf846fcbf637d0679b6c67eab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png" +dest_files=["res://.godot/imported/前侧楼梯_楼梯人群_前景.png-9fc74b9bf846fcbf637d0679b6c67eab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png new file mode 100644 index 00000000..c32592b4 Binary files /dev/null and b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png differ diff --git a/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png.import b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png.import new file mode 100644 index 00000000..e9406c98 --- /dev/null +++ b/asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mbtx17tg24pl" +path="res://.godot/imported/前侧楼梯_诡异纸人_前景.png-3d2ba39e4cabaf4bf5fcc1c425fa0de3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png" +dest_files=["res://.godot/imported/前侧楼梯_诡异纸人_前景.png-3d2ba39e4cabaf4bf5fcc1c425fa0de3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index 6be60126..41faa36d 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -384,6 +384,7 @@ 理发店的假人好像提到过剪刀... [ID:c03_s04_获得剪刀后] 2013...{br}这是那个肉铺老板家的钥匙。 [ID:c03_s04_获得钥匙后] 病终究还是没治好。 [ID:c03_s04_给药后] +奠 [ID:c03_s04_奠] ...{br}还是别乱碰了 [ID:c03_招魂幡鬼差] # s05 肉铺 这桌上的肉竟然没有腐烂 [ID:c03_s05_长桌] @@ -391,7 +392,7 @@ 这小女孩提到的玩具...{br}不会就是我手上这个吧? [ID:c03_s05_偷听结束] # s06 胖子卧室 肉铺老板居然把一大摞寻人启事藏在家里{br}嗯...还有几张像是从墙上撕下来的。 [ID:c03_s06_没贴的寻人启事] -暗门被锁起来了 [ID:c03_s06_暗门] +锁上的活板门...{br}是通到哪里去的? [ID:c03_s06_暗门] 这柜子后面好像还有东西 [ID:c03_s06_柜子] # s07 屠宰间 一股腐臭的味道 [ID:c03_s07_肉袋] @@ -421,6 +422,9 @@ [wave]又嫩又甜[/wave] [ID:c03_s12_label8] # 李癞胖演出结束 怎么突然出现这么多人?{br}要不跟过去看看?[ID:c03_李癞胖演出结束] +# 小手 +洞里有很浓的血腥味...[ID:c03_小手洞1] +呕,作孽啊...[ID:c03_小手洞2] => END ~ Notes_c04 diff --git a/scene/character/player_animation_config.gd b/scene/character/player_animation_config.gd index 0e2dbb03..dc321237 100644 --- a/scene/character/player_animation_config.gd +++ b/scene/character/player_animation_config.gd @@ -55,6 +55,7 @@ var ANIMATION_CONFIG = { 19: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠起身", &""], 20: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠呼吸", &""], 21: [&"", Vector2.ONE, Vector2(2.5, -48.0), &"c02_吕萍_背靠起身_屠宰间", &""], + 22: [&"", Vector2.ONE, Vector2(341.0, -75.0), &"", &"c02_吕萍_风吹过"], }, "吕萍爬行": { diff --git a/scene/entity/portal.gd b/scene/entity/portal.gd index a21af8b9..c7a2e84f 100644 --- a/scene/entity/portal.gd +++ b/scene/entity/portal.gd @@ -2,6 +2,7 @@ class_name Portal2D extends Sprite2D signal rejected_on_locked +signal unlocked signal before_pre_transport_wait signal sign_mark_offset_updated @@ -191,6 +192,8 @@ func _on_interacted() -> void: interact_mutex.unlock() if rejected: rejected_on_locked.emit() + else: + unlocked.emit() # 开锁尝试后,哪怕开锁成功,也需要下次操作再进入,而不是立即传送 return # 传送,queue free 导致 sfx 无法播放,使用全局声源 diff --git a/scene/ground/scene/c02/s03_院子.gd b/scene/ground/scene/c02/s03_院子.gd index 016675de..fe0ed099 100644 --- a/scene/ground/scene/c02/s03_院子.gd +++ b/scene/ground/scene/c02/s03_院子.gd @@ -88,10 +88,14 @@ func _on_ground_ready() -> void: # 不偷听则不可开门 $"../DeployLayer/portal_5".enabled = false - - if ArchiveManager.get_global_value(&"c02_show_grounded_coins") and EventManager.get_chapter_stage() <= 2: - # 奠字 + 纸钱 - $"../DeployLayer/新背景_奠".visible = true + # 奠字 + 纸钱 + var show_coin_rain := false + if EventManager.get_chapter_stage() <= 2: + show_coin_rain = ArchiveManager.get_global_value(&"c02_show_grounded_coins") + elif EventManager.get_chapter_stage() >= 3: + # 已拿钥匙 + show_coin_rain = EventManager.get_stage("c03_li_paperwoman") >= 5 + $"../DeployLayer/新背景_奠".visible = show_coin_rain small_shoe = $"../DeployLayer/Pickable小鞋子" as Pickable2D diff --git a/scene/ground/scene/c02/s03_院子.tscn b/scene/ground/scene/c02/s03_院子.tscn index 0ef103d0..a5655bc6 100644 --- a/scene/ground/scene/c02/s03_院子.tscn +++ b/scene/ground/scene/c02/s03_院子.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=114 format=3 uid="uid://djc2uaefhmu7"] +[gd_scene load_steps=119 format=3 uid="uid://djc2uaefhmu7"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_0dylx"] [ext_resource type="Script" uid="uid://dsp5plrdkrsd7" path="res://scene/ground/scene/c02/s03_院子.gd" id="2_dt5aj"] @@ -80,11 +80,16 @@ [ext_resource type="Texture2D" uid="uid://bjdy0o0qngukl" path="res://asset/art/scene/c03/s00_院子与其他/e_运尸车.png" id="74_f5g0l"] [ext_resource type="Script" uid="uid://b5to0url3t7h4" path="res://scene/ground/script/c02/s03_event李氏给药完成.gd" id="75_0ek7o"] [ext_resource type="SpriteFrames" uid="uid://cmvr3lbwe3h7p" path="res://asset/art/gif/c03_特写与游戏动画/c03_特写与游戏动画_frames.tres" id="75_allmh"] +[ext_resource type="Texture2D" uid="uid://rsk3dkai37hu" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群_前景.png" id="77_6y26q"] [ext_resource type="Script" uid="uid://3umabu63j1t5" path="res://scene/ground/script/c02/s03_event第三章开幕.gd" id="77_ndc6g"] [ext_resource type="Texture2D" uid="uid://by7ibwt45ndlm" path="res://asset/art/scene/c03/s00_第三章开幕/第三章开场.png" id="77_pyl5w"] [ext_resource type="SpriteFrames" uid="uid://cvjl0m6b5oc6f" path="res://asset/art/gif/c03_棺材怪/c03_棺材怪_frames.tres" id="77_ru58d"] +[ext_resource type="Texture2D" uid="uid://mbtx17tg24pl" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人_前景.png" id="78_5mk2s"] [ext_resource type="Texture2D" uid="uid://cyb7wxwadqhht" path="res://asset/art/scene/c03/s00_第三章开幕/二楼栏杆.png" id="78_ndc6g"] [ext_resource type="Texture2D" uid="uid://0d7afuay7x0k" path="res://asset/art/scene/c03/s00_第三章开幕/三楼栏杆.png" id="79_0ek7o"] +[ext_resource type="Texture2D" uid="uid://iochvxxj4oji" path="res://asset/art/scene/c03/s00_第三章开幕/邻居1.png" id="86_j6i36"] +[ext_resource type="Texture2D" uid="uid://b1omqxct4hws2" path="res://asset/art/scene/c03/s00_第三章开幕/邻居2.png" id="87_y7f1y"] +[ext_resource type="Texture2D" uid="uid://dr222pgv54efg" path="res://asset/art/scene/c03/s00_第三章开幕/邻居3.png" id="88_y7f1y"] [sub_resource type="Animation" id="Animation_rt2lh"] length = 0.001 @@ -513,6 +518,13 @@ target_portal = "1" status = "locked" prop_key = "prop_1015钥匙" +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/portal_5"] +script = ExtResource("12_2b6vx") +updater_event = &"c03_li_paperwoman" +updater_stage_mode = "exclude" +updater_stages = Array[int]([5]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + [node name="Ambush保卫科旁边os" parent="Ground/DeployLayer" index="7" instance=ExtResource("25_iyaiw")] position = Vector2(138, 47) hook_os_key = "c02_院子_保卫科旁" @@ -1418,7 +1430,6 @@ script = ExtResource("4_ygnci") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Event2D第二章_纸人" type="Node2D" parent="Ground/DeployLayer" index="39"] -visible = false script = ExtResource("73_lt8c0") event_name = &"c03_well_show" event_stages = Array[int]([0]) @@ -1428,7 +1439,7 @@ metadata/_custom_type_script = "uid://bkkiyk5jkdw4d" [node name="排队常人" type="Sprite2D" parent="Ground/DeployLayer/Event2D第二章_纸人"] light_mask = 0 -position = Vector2(1227.5, -119) +position = Vector2(1233, -120) texture = ExtResource("18_crgo6") centered = false @@ -1440,9 +1451,14 @@ updater_ease_duration = 0.0 updater_stages = Array[int]([0]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" +[node name="前景" type="Sprite2D" parent="Ground/DeployLayer/Event2D第二章_纸人/排队常人"] +z_index = 21 +texture = ExtResource("77_6y26q") +centered = false + [node name="排队纸人" type="Sprite2D" parent="Ground/DeployLayer/Event2D第二章_纸人"] light_mask = 0 -position = Vector2(1227.5, -119) +position = Vector2(1233, -120) texture = ExtResource("19_vddfx") centered = false @@ -1455,6 +1471,11 @@ updater_stage_mode = "exclude" updater_stages = Array[int]([0]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" +[node name="前景" type="Sprite2D" parent="Ground/DeployLayer/Event2D第二章_纸人/排队纸人"] +z_index = 21 +texture = ExtResource("78_5mk2s") +centered = false + [node name="Event2D李氏给药完成" type="Node2D" parent="Ground/DeployLayer" index="40"] position = Vector2(1858, 24) script = ExtResource("75_0ek7o") @@ -1532,6 +1553,18 @@ z_index = 1 position = Vector2(169, -227.5) texture = ExtResource("79_0ek7o") +[node name="邻居1" type="Sprite2D" parent="Ground/DeployLayer/Event第三章开幕"] +position = Vector2(169, -227.5) +texture = ExtResource("86_j6i36") + +[node name="邻居2" type="Sprite2D" parent="Ground/DeployLayer/Event第三章开幕"] +position = Vector2(169, -227.5) +texture = ExtResource("87_y7f1y") + +[node name="邻居3" type="Sprite2D" parent="Ground/DeployLayer/Event第三章开幕"] +position = Vector2(169, -227.5) +texture = ExtResource("88_y7f1y") + [node name="Pro灰姑黑影" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event第三章开幕"] position = Vector2(169, -227.5) sprite_frames = ExtResource("75_allmh") @@ -1584,6 +1617,17 @@ libraries = { &"": SubResource("AnimationLibrary_0ek7o") } +[node name="Note李癞_奠" parent="Ground/DeployLayer" index="42" instance=ExtResource("6_t48d1")] +position = Vector2(1937, -26) +title_filter = "c03" +note_key = "c03_s04_奠" + +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Note李癞_奠"] +script = ExtResource("12_2b6vx") +updater_event = &"c03_li_paperwoman" +updater_stages = Array[int]([5]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + [node name="PointLight2D" type="PointLight2D" parent="Ground/AmbientLayer" index="0"] light_mask = 4 position = Vector2(2189, -142) @@ -1611,6 +1655,7 @@ scale = Vector2(1.08, 1.08) points = PackedVector2Array(17, 150, 2250, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] +visible = false energy = 0.6 blend_mode = 1 diff --git a/scene/ground/scene/c02/s04_保卫科.tscn b/scene/ground/scene/c02/s04_保卫科.tscn index 865d3aca..f2161ef8 100644 --- a/scene/ground/scene/c02/s04_保卫科.tscn +++ b/scene/ground/scene/c02/s04_保卫科.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=26 format=3 uid="uid://bivc5cdap370p"] +[gd_scene load_steps=27 format=3 uid="uid://bivc5cdap370p"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_2jej0"] [ext_resource type="Script" uid="uid://dmhh4g47bdxxy" path="res://scene/ground/scene/c02/s04_保卫科.gd" id="2_jyere"] @@ -23,6 +23,7 @@ [ext_resource type="SpriteFrames" uid="uid://di43shn22n5ph" path="res://asset/art/gif/c00_通用动作/c00_通用动作_frames.tres" id="20_47ju4"] [ext_resource type="Texture2D" uid="uid://day38kany2gmr" path="res://asset/art/scene/c02/小蝉寻人启事/e_寻人启事完整.png" id="20_g8amr"] [ext_resource type="Texture2D" uid="uid://ce3d785v5lxg2" path="res://asset/art/scene/c02/小蝉寻人启事/ux_寻人启事完整.png" id="21_cq2m4"] +[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="23_8qoej"] [ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="23_cq2m4"] [ext_resource type="Texture2D" uid="uid://dri8e2lyx6wg4" path="res://asset/art/scene/c02/s04_保卫科/e_老鼠精_第二章.png" id="23_vppvs"] @@ -54,7 +55,7 @@ position = Vector2(47, 2) texture = ExtResource("3_66gue") [node name="烟雾" type="AnimatedSprite2D" parent="Ground/BGSprite2D" index="0"] -position = Vector2(162, -29) +position = Vector2(162, -30) sprite_frames = ExtResource("4_svuj3") animation = &"小烟雾2" autoplay = "小烟雾2" @@ -63,6 +64,14 @@ autoplay = "小烟雾2" position = Vector2(1, 28) texture = ExtResource("5_cy26p") +[node name="EventBinder" type="Node" parent="Ground/BGSprite2D/烟雾"] +script = ExtResource("23_cq2m4") +updater_event = &"current_chapter_stage" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stages = Array[int]([0, 1]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + [node name="portal_left" parent="Ground/DeployLayer" index="0"] position = Vector2(67, 29) target_scene = "c02_s03" @@ -131,12 +140,33 @@ texture = ExtResource("9_a43aq") [node name="小手讨东西" parent="Ground/DeployLayer" index="10" instance=ExtResource("10_a43aq")] position = Vector2(295, -6) -[node name="小蝉写字" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="11"] +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/小手讨东西"] +script = ExtResource("23_cq2m4") +updater_event = &"current_chapter_stage" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stages = Array[int]([0, 1]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + +[node name="Note小手洞" parent="Ground/DeployLayer" index="11" instance=ExtResource("23_8qoej")] +title_filter = "c03" +note_key = "c03_小手洞1" + +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Note小手洞"] +script = ExtResource("23_cq2m4") +updater_event = &"current_chapter_stage" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stage_mode = "exclude" +updater_stages = Array[int]([0, 1]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + +[node name="小蝉写字" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"] position = Vector2(351, 51) sprite_frames = ExtResource("20_47ju4") animation = &"c00_头套小婵_write" -[node name="老鼠精_第二章" type="Sprite2D" parent="Ground/DeployLayer" index="12"] +[node name="老鼠精_第二章" type="Sprite2D" parent="Ground/DeployLayer" index="13"] position = Vector2(207.5, -40.5) texture = ExtResource("23_vppvs") diff --git a/scene/ground/scene/c02/s06_二楼.gd b/scene/ground/scene/c02/s06_二楼.gd index f76b5e9b..a76612df 100644 --- a/scene/ground/scene/c02/s06_二楼.gd +++ b/scene/ground/scene/c02/s06_二楼.gd @@ -82,7 +82,11 @@ func _on_ground_ready() -> void: if $"../DeployLayer/Ambush小蝉偷看".played: $"../DeployLayer/Ambush小蝉偷看".queue_free() - + + # 胖子房间 + $"../DeployLayer/portal_4".unlocked.connect(_on_2013_unlocked) + + # 小蝉偷看 func glimpse_hide_out(): $"../DeployLayer/Ambush小蝉偷看".queue_free() @@ -150,6 +154,7 @@ func _on_ball_game_exit(success = null): ball_game_boys_ambush.enabled = false ball_game_boys_ambush.visible = false + func _toggle_candles(show: bool) -> void: var candles = $"../DeployLayer/楼梯蜡烛" var lights = candles.get_children() @@ -165,7 +170,6 @@ func _toggle_candles(show: bool) -> void: light.energy = 0.2 - # 第一章火灾结束,尾声演出 func _c02_final_show(): SceneManager.toggle_hud_display(false) @@ -235,3 +239,27 @@ func unlock_2floor_map(): EventManager.set_stage_if_greater(&"c02_2f_xchan_run_away", 1) EventManager.set_stage_if_greater(&"handnote_c02_map_2", 1) EventManager.set_stage_if_greater(&"handnote_c02_shoe_giveToMouce", 1) + + +func _on_2013_unlocked() -> void: + $"../DeployLayer/煤油灯".hold_off_light() + var l1 = $"../DeployLayer/煤油灯2/PointLight2D" + var l2 = $"../DeployLayer/煤油灯2/地面光" + var tween = create_tween() + # 所有灯和蜡烛火光不规律闪烁后熄灭 + var candles = $"../DeployLayer/楼梯蜡烛" + var lights = candles.get_children() + tween.tween_property(l1, "energy", 0.0, 0.5) + tween.parallel().tween_property(l2, "energy", 0.0, 0.5) + for light in lights: + var energy = randf_range(0.2, 0.4) + tween.parallel().tween_property(light, "energy", energy, 0.5) + tween.tween_interval(0.4) + for light in lights: + var energy = randf_range(0.5, 0.9) + tween.parallel().tween_property(light, "energy", energy, 0.4) + tween.tween_interval(0.3) + for light in lights: + # 默认保持 0.18 亮度,避免 mix 纯黑 + tween.parallel().tween_property(light, "energy", 0.18, 0.3) + # tween.tween_property(candles, "modulate:a", 0.0, 1.0) diff --git a/scene/ground/scene/c02/s07_二楼内侧楼道.gd b/scene/ground/scene/c02/s07_二楼内侧楼道.gd index e6baf458..bc478406 100644 --- a/scene/ground/scene/c02/s07_二楼内侧楼道.gd +++ b/scene/ground/scene/c02/s07_二楼内侧楼道.gd @@ -14,14 +14,20 @@ func _ready() -> void: var flyer: Closeup2D - +var hand func _on_ground_ready() -> void: flyer = $"../DeployLayer/Closeup刮海报" - if data.flyer_shaven: - take_off_flyer(true) + hand = $"../DeployLayer/小手讨东西" + # 只有第一章启用 + if EventManager.get_chapter_stage() <= 2: + if data.flyer_shaven: + take_off_flyer(true) + else: + flyer.exit.connect(_on_flyer_exit) else: - flyer.exit.connect(_on_flyer_exit) + flyer.hide() + hand.hide() func _on_flyer_exit(arg): @@ -40,6 +46,5 @@ func take_off_flyer(immediatelly = false): await tween.finished else: flyer.visible = false - var hand = $"../DeployLayer/小手讨东西" hand.enabled = true diff --git a/scene/ground/scene/c02/s07_二楼内侧楼道.tscn b/scene/ground/scene/c02/s07_二楼内侧楼道.tscn index 80286d45..4d17fb64 100644 --- a/scene/ground/scene/c02/s07_二楼内侧楼道.tscn +++ b/scene/ground/scene/c02/s07_二楼内侧楼道.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=20 format=3 uid="uid://t4xjt774ngwh"] +[gd_scene load_steps=22 format=3 uid="uid://t4xjt774ngwh"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_oao56"] [ext_resource type="Script" uid="uid://cnjdxjni5v3cs" path="res://scene/ground/scene/c02/s07_二楼内侧楼道.gd" id="2_t0s64"] @@ -19,6 +19,8 @@ [ext_resource type="Texture2D" uid="uid://0x7cl2cmcs6l" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕2.png" id="16_uggte"] [ext_resource type="PackedScene" uid="uid://dsa6frlw6e6gg" path="res://scene/entity/pickable.tscn" id="17_uggte"] [ext_resource type="Texture2D" uid="uid://dcot0rove27rd" path="res://asset/art/scene/c02/s08_瞎子卧室/e_粘鼠板.png" id="18_e4bwj"] +[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="20_4anfx"] +[ext_resource type="Texture2D" uid="uid://cawpq7rnho5px" path="res://asset/art/gif/c02_小手/洞.png" id="20_wkpn4"] [node name="S07" type="Node2D"] @@ -78,7 +80,6 @@ position = Vector2(292, -11) texture = ExtResource("10_6ivku") packed_scene = ExtResource("11_vxng8") on_display_hide_hud = true -transition_effect = true first_interact_os_key = "c02_海报_戏法班" [node name="Note老鼠洞" parent="Ground/DeployLayer" index="7" instance=ExtResource("13_s75vl")] @@ -112,6 +113,21 @@ texture = ExtResource("18_e4bwj") sign_mark_offset = Vector2(0, -9.34) prop_key = "prop_粘鼠板" +[node name="Note小手洞" parent="Ground/DeployLayer" index="10" instance=ExtResource("13_s75vl")] +position = Vector2(294, -7) +texture = ExtResource("20_wkpn4") +title_filter = "c03" +note_key = "c03_小手洞2" + +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Note小手洞"] +script = ExtResource("20_4anfx") +updater_event = &"current_chapter_stage" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stage_mode = "exclude" +updater_stages = Array[int]([0, 1]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(41, 98) player_movement_rect = Rect2(37, -158, 573, 316) @@ -126,6 +142,7 @@ position = Vector2(11, -1) points = PackedVector2Array(37, 150, 610, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] +visible = false energy = 0.9 blend_mode = 1 diff --git a/scene/ground/scene/c03/s05_肉铺.gd b/scene/ground/scene/c03/s05_肉铺.gd index 59b522bf..2f185da3 100644 --- a/scene/ground/scene/c03/s05_肉铺.gd +++ b/scene/ground/scene/c03/s05_肉铺.gd @@ -16,8 +16,10 @@ func _ready() -> void: #region node_reference var closeup肉铺账簿: Closeup2D var ambush偷听门板: Ambush2D +var ambush拿钥匙: Ambush2D var pickable新鲜的肉: Pickable2D var bloody_footstep: AnimatedSprite2D +var xchan: AnimatedSprite2D #endregion @@ -26,12 +28,18 @@ func _setup_node_reference() -> void: closeup肉铺账簿 = $"../DeployLayer/Closeup肉铺账簿" ambush偷听门板 = $"../DeployLayer/Ambush偷听门板" pickable新鲜的肉 = $"../DeployLayer/Pickable新鲜的肉" + ambush拿钥匙 = $"../DeployLayer/Ambush拿钥匙" bloody_footstep = $"../DeployLayer/血脚印" + xchan = $"../DeployLayer/小蝉给钥匙" func _on_ground_ready() -> void: pickable新鲜的肉.triggered.connect(_on_meat_picked) if pickable新鲜的肉.picked: + ambush拿钥匙.enabled = true + if not ambush拿钥匙.played: + xchan.modulate.a = 1.0 + xchan.play() bloody_footstep.frame = 8 _post_meat_picked() if closeup肉铺账簿.icount == 0: @@ -43,28 +51,28 @@ func _on_first_exit_book(_arg = null) -> void: func _on_meat_picked() -> void: - # 小蝉给钥匙,先静默给,再真给 - SceneManager.enable_prop_item_silently("prop_符纸钥匙") - + ambush拿钥匙.enabled = true SceneManager.lock_player() await SceneManager.get_inspector().quit_and_hidden bloody_footstep.play() SceneManager.pop_debug_dialog_info("音效", "小蝉血脚印出现,给钥匙") - $"Sfx小蝉给钥匙".play() + $"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 take_key() -> void: + SceneManager.enable_prop_item("prop_符纸钥匙") + var tween = create_tween() + tween.tween_property(xchan, "modulate:a", 0.0, 1.0) + + func _post_meat_picked() -> void: # 血脚印 小蝉给钥匙 后 Ambush偷听门板 附近出现轻微敲门声 ambush偷听门板.enabled = true @@ -82,4 +90,4 @@ func eavesdrop_plank() -> void: await DialogueManager.dialogue_ended SceneManager.player_action(14, true) SceneManager.pop_os_with_str("c03_s05_偷听结束") - SceneManager.unlock_player() \ No newline at end of file + SceneManager.unlock_player() diff --git a/scene/ground/scene/c03/s05_肉铺.tscn b/scene/ground/scene/c03/s05_肉铺.tscn index 9e14b312..e314d266 100644 --- a/scene/ground/scene/c03/s05_肉铺.tscn +++ b/scene/ground/scene/c03/s05_肉铺.tscn @@ -92,7 +92,7 @@ mode = "场景背景音" "感应玩家操作" = false metadata/_custom_type_script = "uid://rq6w1vuhuq1m" -[node name="Sfx小蝉给钥匙" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] +[node name="Sfx小蝉浮现" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] stream = ExtResource("5_cbx3n") bus = &"game_sfx" script = ExtResource("4_r4bhp") @@ -174,13 +174,19 @@ blend_mode = 2 texture = ExtResource("14_cbx3n") texture_scale = 0.3 -[node name="小蝉给钥匙" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="9"] +[node name="Ambush拿钥匙" parent="Ground/DeployLayer" index="9" instance=ExtResource("6_r4bhp")] +position = Vector2(59, 53) +enabled = false +trigger_mode = "interact" +hook_method = "take_key" + +[node name="小蝉给钥匙" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="10"] modulate = Color(1, 1, 1, 0) position = Vector2(41, 54) sprite_frames = ExtResource("15_rt6kj") animation = &"c03_小婵_give_抬手" -[node name="Ambush长桌" parent="Ground/DeployLayer" index="10" instance=ExtResource("6_r4bhp")] +[node name="Ambush长桌" parent="Ground/DeployLayer" index="11" instance=ExtResource("6_r4bhp")] position = Vector2(311, 55) hook_os_key = "c03_s05_长桌" diff --git a/scene/ground/scene/c03/s06_胖子卧室.tscn b/scene/ground/scene/c03/s06_胖子卧室.tscn index 10a88b66..2a10c33a 100644 --- a/scene/ground/scene/c03/s06_胖子卧室.tscn +++ b/scene/ground/scene/c03/s06_胖子卧室.tscn @@ -1,15 +1,17 @@ -[gd_scene load_steps=14 format=3 uid="uid://cxacrp8mrrbry"] +[gd_scene load_steps=16 format=3 uid="uid://cxacrp8mrrbry"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_h8p4n"] [ext_resource type="Script" uid="uid://cxgeon4qs1klv" path="res://scene/ground/scene/c03/s06_胖子卧室.gd" id="2_f527l"] -[ext_resource type="AudioStream" uid="uid://6gttowdwmado" path="res://asset/audio/sfx/环境音/第一章/房间内部场景1.ogg" id="3_fs6xo"] +[ext_resource type="AudioStream" uid="uid://b2mudqvq1dmng" path="res://asset/audio/sfx/环境音/白噪音/白噪声房间里1.ogg" id="3_argdf"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_481tl"] [ext_resource type="Texture2D" uid="uid://c2qdnw8b0rcah" path="res://asset/art/scene/c03/s06_胖子卧室/bg_胖子卧室背景.png" id="4_h8p4n"] [ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="5_6747o"] [ext_resource type="Texture2D" uid="uid://q20myccplwm7" path="res://asset/art/scene/c03/s06_胖子卧室/fg_胖子卧室前景.png" id="5_f527l"] [ext_resource type="AudioStream" uid="uid://owp3occawow5" path="res://asset/audio/sfx/交互/第一章/sfx_拖箱子.ogg" id="5_uibf0"] +[ext_resource type="AudioStream" uid="uid://bhaws2ungqaf5" path="res://asset/audio/sfx/交互/角色/sfx_哼歌.ogg" id="6_argdf"] [ext_resource type="Texture2D" uid="uid://coaugvwesap35" path="res://asset/art/scene/c03/s06_胖子卧室/胖子卧室柜子.png" id="6_wsqdn"] [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="7_wsqdn"] +[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="7_x8gtn"] [ext_resource type="PackedScene" uid="uid://5uqi3c3f4va1" path="res://scene/ground/script/c03/s06_closeup柜子后的洞.tscn" id="8_1qtud"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="10_481tl"] @@ -29,7 +31,7 @@ libraries = { script = ExtResource("2_f527l") [node name="Sfx背景音" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] -stream = ExtResource("3_fs6xo") +stream = ExtResource("3_argdf") volume_db = -5.0 autoplay = true bus = &"game_sfx" @@ -83,15 +85,31 @@ note_key = "c03_s06_没贴的寻人启事" [node name="Note暗门" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_481tl")] position = Vector2(330, 81) +action = 3 title_filter = "c03" note_key = "c03_s06_暗门" +[node name="Sfx2D小蝉哼歌" type="AudioStreamPlayer2D" parent="Ground/AmbientLayer" index="0"] +position = Vector2(331, 100) +stream = ExtResource("6_argdf") +volume_db = 24.0 +autoplay = true +max_distance = 300.0 +attenuation = 3.0 +bus = &"game_sfx" +script = ExtResource("7_x8gtn") +metadata/_custom_type_script = "uid://wapo47a1oddf" + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(418, 98) catty_light_energy = 0.5 player_movement_rect = Rect2(45, -158, 473, 316) facing_direction = Vector2(-1, 0) +[node name="AudioListener2D" type="AudioListener2D" parent="Ground/MainPlayer" index="6"] +position = Vector2(1, -63) +current = true + [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] position = Vector2(26, 0) texture = ExtResource("5_f527l") diff --git a/scene/ground/scene/c03/s08_囚室.gd b/scene/ground/scene/c03/s08_囚室.gd index 34465b36..c18d523f 100644 --- a/scene/ground/scene/c03/s08_囚室.gd +++ b/scene/ground/scene/c03/s08_囚室.gd @@ -86,11 +86,14 @@ func _on_body_interacted(success: bool) -> void: func play_footstep() -> void: SceneManager.lock_player() + var sfx = $"Sfx小蝉哼歌" as Sfx + sfx.play() var sprite = ambush血脚印.get_node("血脚印") sprite.play() await sprite.animation_finished await SceneManager.pop_os_with_str("c03_s08_囚室看到脚印") SceneManager.unlock_player() + Util.timer(3.0, sfx.easing_kill.bind(3.0)) func eavesdrop() -> void: diff --git a/scene/ground/scene/c03/s08_囚室.tscn b/scene/ground/scene/c03/s08_囚室.tscn index 7d9e4e16..c0f5ad8e 100644 --- a/scene/ground/scene/c03/s08_囚室.tscn +++ b/scene/ground/scene/c03/s08_囚室.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=32 format=3 uid="uid://bixdbbyhroepi"] +[gd_scene load_steps=33 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"] [ext_resource type="AudioStream" uid="uid://d0ef0felylt8d" path="res://asset/audio/sfx/环境音/第一章/氛围不受欢迎的存在.ogg" id="3_dovfj"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_2jtaw"] [ext_resource type="Texture2D" uid="uid://c53e7kxlfj8kw" path="res://asset/art/scene/c03/s08_囚室/bg_囚室背景.png" id="4_fusj3"] +[ext_resource type="AudioStream" uid="uid://bhaws2ungqaf5" path="res://asset/audio/sfx/交互/角色/sfx_哼歌.ogg" id="5_cvhc1"] [ext_resource type="Texture2D" uid="uid://dfsqs13fm7urb" path="res://asset/art/scene/c03/s08_囚室/fg_囚室前景.png" id="5_i2s3v"] [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="5_jua84"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_dovfj"] @@ -156,6 +157,13 @@ mode = "场景背景音" "感应玩家操作" = false metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="Sfx小蝉哼歌" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] +stream = ExtResource("5_cvhc1") +volume_db = 20.0 +bus = &"game_sfx" +script = ExtResource("4_2jtaw") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="BGSprite2D" parent="Ground" index="2"] light_mask = 5 position = Vector2(8, 0) diff --git a/scene/ground/scene/c03/s09_棺材房.tscn b/scene/ground/scene/c03/s09_棺材房.tscn index b70d7260..71a6d199 100644 --- a/scene/ground/scene/c03/s09_棺材房.tscn +++ b/scene/ground/scene/c03/s09_棺材房.tscn @@ -170,7 +170,7 @@ tracks/1/keys = { "times": PackedFloat32Array(0, 5.96667), "transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [Vector2(55, -100), Vector2(60, -100)] +"values": [Vector2(80, -62), Vector2(80, -62)] } tracks/2/type = "value" tracks/2/imported = false @@ -399,7 +399,7 @@ clip_1/stream = ExtResource("20_8k23x") clip_1/auto_advance = 0 [node name="S09" type="Node2D"] -metadata/_edit_horizontal_guides_ = [-627.0] +metadata/_edit_horizontal_guides_ = [-627.0, -120.0] [node name="Ground" parent="." instance=ExtResource("1_8vqn6")] scene_name = "c03_s09" @@ -544,6 +544,24 @@ bus = &"game_sfx" script = ExtResource("10_htuhx") metadata/_custom_type_script = "uid://wapo47a1oddf" +[node name="ColorRectLeft" type="ColorRect" parent="Ground/DeployLayer" index="9"] +z_index = 20 +offset_left = -18.0 +offset_top = -164.0 +offset_right = 52.0 +offset_bottom = 186.0 +mouse_filter = 2 +color = Color(0, 0, 0, 1) + +[node name="ColorRectRight" type="ColorRect" parent="Ground/DeployLayer" index="10"] +z_index = 20 +offset_left = 512.0 +offset_top = -180.0 +offset_right = 582.0 +offset_bottom = 170.0 +mouse_filter = 2 +color = Color(0, 0, 0, 1) + [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(325, 98) catty_light_energy = 0.5 diff --git a/scene/ground/scene/c03/s12_胖子游戏3.gd b/scene/ground/scene/c03/s12_胖子游戏3.gd index e26badeb..6ea913ee 100644 --- a/scene/ground/scene/c03/s12_胖子游戏3.gd +++ b/scene/ground/scene/c03/s12_胖子游戏3.gd @@ -100,6 +100,7 @@ func label_ambush3() -> void: func eat_meat() -> void: + $"Sfx小蝉哼歌".play() final_label.show() final_label.modulate.a = 0.0 final_meat_ambush.enabled = false @@ -115,7 +116,7 @@ func eat_meat() -> void: player.reparent_light(light_pivot) play("eat_meat") await animation_finished - # TODO 将 final_label 放置到 transition_layer + # 将 final_label 放置到 transition_layer SceneManager.transition_with_layer(final_label, 2.0, 4.0) await Util.wait(5.0) # c03_meat_grinder: 0:初始化 1:已装转盘 2:胖子游戏结束 3:绞肉机演出 4:演出结束 diff --git a/scene/ground/scene/c03/s12_胖子游戏3.tscn b/scene/ground/scene/c03/s12_胖子游戏3.tscn index 2cb0bfe0..af724012 100644 --- a/scene/ground/scene/c03/s12_胖子游戏3.tscn +++ b/scene/ground/scene/c03/s12_胖子游戏3.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=23 format=3 uid="uid://cxabqg87g4vxc"] +[gd_scene load_steps=24 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"] [ext_resource type="AudioStream" uid="uid://dvc2emnfcmabx" path="res://asset/audio/sfx/环境音/白噪音/白噪声楼道1.ogg" id="3_h404e"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_fjio5"] +[ext_resource type="AudioStream" uid="uid://bhaws2ungqaf5" path="res://asset/audio/sfx/交互/角色/sfx_哼歌.ogg" id="5_47wdn"] [ext_resource type="Texture2D" uid="uid://jimhy0dgkeoi" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/地面.png" id="9_fjio5"] [ext_resource type="Texture2D" uid="uid://b22lmq2qtsmf1" path="res://asset/art/gif/c03_胖子游戏/c03_胖子游戏第一段/最后的背景 循环贴图.png" id="9_mr0pm"] [ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="9_vyyx8"] @@ -138,6 +139,13 @@ bus = &"game_sfx" script = ExtResource("4_fjio5") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="Sfx小蝉哼歌" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"] +stream = ExtResource("5_47wdn") +volume_db = 20.0 +bus = &"game_sfx" +script = ExtResource("4_fjio5") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="BGSprite2D" parent="Ground" index="2"] light_mask = 5 position = Vector2(2797, 0) diff --git a/scene/ground/script/c02/s00_煤油灯.gd b/scene/ground/script/c02/s00_煤油灯.gd index 7c9d6f06..a4324f3f 100644 --- a/scene/ground/script/c02/s00_煤油灯.gd +++ b/scene/ground/script/c02/s00_煤油灯.gd @@ -99,6 +99,14 @@ func turn_on(gradually := true): _check_sign_status() +# 熄灭光线, 并且不可点燃 +func hold_off_light() -> void: + enabled = false + light_sprite2d.hide() + point_light.hide() + point_light_ground.hide() + + func _switch_gaslight(state := true, gradually := false): var engrgy1 = gaslight_energy var engrgy2 = gaslight_ground_energy