From ee0eae7452dd2ee6b2ffafa64d93f06d2d61243b Mon Sep 17 00:00:00 2001 From: cakipaul Date: Tue, 1 Jul 2025 19:40:30 +0800 Subject: [PATCH] =?UTF-8?q?demo0.1.2.1=20=E6=8C=89=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asset/art/little_game/八音盒/新小猫身体.png | Bin 6690 -> 5766 bytes .../c02/s03_公寓一楼院子/f_院子内墙上文字.png | Bin 5700 -> 0 bytes .../f_院子内墙上文字与柜子痕迹.png | Bin 0 -> 3007 bytes ....png.import => f_院子内墙上文字与柜子痕迹.png.import} | 6 +- .../scene/c02/s04_保卫科/花名册/翻开页.png | Bin 21326 -> 20967 bytes asset/dialogue/item_description.csv | 15 +- asset/dialogue/item_description.dialogue | 16 +- asset/dialogue/npc.dialogue | 7 +- asset/shader/vignette.gdshader | 12 +- manager/archive_manager/assembled_archive.gd | 15 +- .../config_manager/global_config_manager.gd | 2 - scene/ground/ground_loader.gd | 53 +++--- scene/ground/scene/c01/s05_院长房间.gd | 1 + scene/ground/scene/c01/s05_院长房间.tscn | 1 - .../ground/scene/c01/s06_孤儿院长廊围墙.tscn | 7 +- scene/ground/scene/c01/s07_书店外.gd | 1 + scene/ground/scene/c01/s08_书店.tscn | 2 - scene/ground/scene/c01/s09_公寓楼外.tscn | 1 - scene/ground/scene/c01/s11_黄包车演出.tscn | 6 - scene/ground/scene/c01/s12_书店外_诡异版.tscn | 3 - scene/ground/scene/c02/s01_公寓门口.tscn | 2 - scene/ground/scene/c02/s02_过道.tscn | 7 - scene/ground/scene/c02/s03_院子.gd | 5 +- scene/ground/scene/c02/s03_院子.tscn | 93 +++++----- scene/ground/scene/c02/s04_保卫科.gd | 8 + scene/ground/scene/c02/s04_保卫科.tscn | 8 +- scene/ground/scene/c02/s05_一楼内侧楼道.tscn | 6 - scene/ground/scene/c02/s06_二楼.gd | 22 ++- scene/ground/scene/c02/s06_二楼.tscn | 21 ++- scene/ground/scene/c02/s07_二楼内侧楼道.tscn | 3 - scene/ground/scene/c02/s08_瞎子卧室.tscn | 14 +- scene/ground/scene/c02/s09_裂缝.tscn | 4 - scene/ground/scene/c02/s10_空房间.tscn | 3 - scene/ground/scene/c02/s13_盒子猫二楼.tscn | 4 - .../ground/scene/c02/s16_盒子猫三楼内侧.tscn | 1 - scene/ground/scene/c02/s17_盒子猫三楼.tscn | 1 - scene/ground/scene/c02/s18_盒子猫一楼.tscn | 4 - scene/ground/scene/c03/s01_瞎子理发店.gd | 17 ++ scene/ground/scene/c03/s01_瞎子理发店.gd.uid | 1 + scene/ground/scene/c03/s01_瞎子理发店.tscn | 164 ++++++++++++++++++ scene/ground/script/c02/s00_煤油灯.gd | 1 + scene/ground/script/c02/小手讨东西.gd | 3 +- scene/little_game/书架/书架.gd | 84 +++++---- scene/little_game/书架/书架.tscn | 14 +- scene/little_game/八音盒/八音盒.tscn | 4 +- scene/little_game/弹珠游戏/弹珠游戏.tscn | 4 - scene/main.gd | 17 ++ scene/main.tscn | 22 ++- scene/ux/memory/clips/clip2.gd | 2 +- 49 files changed, 455 insertions(+), 232 deletions(-) delete mode 100644 asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png create mode 100644 asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字与柜子痕迹.png rename asset/art/scene/c02/s03_公寓一楼院子/{f_院子内墙上文字.png.import => f_院子内墙上文字与柜子痕迹.png.import} (69%) create mode 100644 scene/ground/scene/c03/s01_瞎子理发店.gd create mode 100644 scene/ground/scene/c03/s01_瞎子理发店.gd.uid create mode 100644 scene/ground/scene/c03/s01_瞎子理发店.tscn diff --git a/asset/art/little_game/八音盒/新小猫身体.png b/asset/art/little_game/八音盒/新小猫身体.png index e2eeb7a89535c81079106b6bc38def739b4ebdd7..c8add38d3e62c706395766e709fa073bdf70b829 100644 GIT binary patch delta 3171 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 diff --git a/asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png b/asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png deleted file mode 100644 index 4a56558c4f4990452d8da67121f609b67e741514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5700 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 literal 0 HcmV?d00001 diff --git a/asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png.import b/asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字与柜子痕迹.png.import similarity index 69% rename from asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png.import rename to asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字与柜子痕迹.png.import index 46a88b67..73787c0e 100644 --- a/asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png.import +++ b/asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字与柜子痕迹.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://diuh52qo2o6pa" -path="res://.godot/imported/f_院子内墙上文字.png-107caa7c643223d1c6850711ee51240a.ctex" +path="res://.godot/imported/f_院子内墙上文字与柜子痕迹.png-0cef3994ff5def82c7145639956c0415.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png" -dest_files=["res://.godot/imported/f_院子内墙上文字.png-107caa7c643223d1c6850711ee51240a.ctex"] +source_file="res://asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字与柜子痕迹.png" +dest_files=["res://.godot/imported/f_院子内墙上文字与柜子痕迹.png-0cef3994ff5def82c7145639956c0415.ctex"] [params] diff --git a/asset/art/scene/c02/s04_保卫科/花名册/翻开页.png b/asset/art/scene/c02/s04_保卫科/花名册/翻开页.png index a39728000a11aab862662ec59f3c5608882c3253..99ac0837c59375d0e6aa32e58a45b21c7c8b0594 100644 GIT binary patch delta 18359 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
天地小如喉,
红轮自吞吐。
多少世间人,
都被红轮误。,,,,, -c02_小手其他交易,...还有什么东西能跟它交换呢?,,,,, +c02_小手还能换什么,...还有什么东西能跟它交换呢?,,,,, c02_小手出现摔倒,?!,,,,, -这是什么鬼东西,它是在讨要什么 [ID:],这是什么鬼东西,它是在讨要什么 [ID:],,,,, +c02_小手是什么鬼,这是什么鬼东西,它是在讨要什么,,,,, c02_小手再次出现,又来一个!,,,,, c02_一楼楼道被挡住,被挡住了,,,,, c02_一楼戏台,盖着布的木头架子...用来做什么的呢,,,,, @@ -187,6 +190,8 @@ c02_二楼楼梯杂物堆,堆满了杂物,看样子没办法从这里上去了 c02_二楼水盆,盆里的水很清澈,看上去像是刚盛的。,,,,, c02_二楼老鼠洞,到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。,,,,, c02_二楼血脚印,又是这种小小尖尖的血脚印...,,,,, +c02_老鼠叼鞋引开疯子,那女孩为什么要我引开这个疯男人?,,,,, +c02_小手换回弹珠,我要去找洞里的小手把弹珠拿回来。,,,,, c02_离开红色演出,刚才那些...到底是怎么回事?,,,,, c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」
咦,这口诀是谁教我的来着...,,,,, c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index aa207df1..b2ded54e 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -85,7 +85,7 @@ 无头小猫玩具 [#texture=c02/新小猫身体.png] [#inspect=c02/新小猫身体_特写.png] [ID:prop_无头小猫玩具] 没有脑袋的小猫玩偶,针脚歪歪扭扭,不甚熟练 [ID:prop_无头小猫玩具_说明] 小猫玩具 [#texture=c02/新小猫全身.png] [ID:prop_小猫玩具完整] -这玩具看久了还蛮可爱的[ID:prop_小猫玩具完整_说明] +这个玩具看久了有些眼熟[ID:prop_小猫玩具完整_说明] 撕下的照片(上) [#texture=c02/照片_上.png] [ID:prop_撕下的照片上] 女儿生辰纪念 于 民国元年 [ID:prop_撕下的照片上_说明] 老虎钳 [#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png] [ID:prop_老虎钳] @@ -180,7 +180,7 @@ 院长在信里提到的就是这里 [ID:c02_s01_下黄包车] 寻人启事... [ID:c02_s01_寻人启事] # c02-s02 走道 -冷飕飕的... [ID:c02_冷飕飕的] +船明天就开了,今晚来这或许是我最后的机会。 [ID:c02_冷飕飕的] 太暗了,找找能照明的东西吧。 [ID:c02_太暗了] 上了年头的煤油灯,似乎很久没用过了。 [ID:c02_陈旧的煤油灯] 呼,那股阴冷的感觉也消失了。 [ID:c02_使用煤油灯] @@ -191,19 +191,23 @@ 自制的八音盒,这么用心的小玩意,怎么会被人扔在这里呢? [ID:c02_s02_八音盒] 别出心裁的小机关,缺了点东西,暂时还不能用 [ID:c02_s02_八音盒缺人偶] # c02 院子 +好像要下雨了? [ID:c02_院子_保卫科旁] 血迹看上去干了很久,血脚印有大有小,咦,还有个特别小的... [ID:c02_s03_干掉的血迹] 算命的摊位? [ID:c02_院子_算命摊位] 好像要下雨了? [ID:c02_院子_要下雨] 怎么天上掉了个小鞋子下来? [ID:c02_s03_掉鞋子] -锁住了 [ID:c02_s03_铁门] +被铁链锁住了 [ID:c02_s03_铁门] +三快三慢?是和那个肉铺老板交流的暗号吗? [ID:c02_偷听李癞对话后] +这里之前放着的东西好像被人挪走了? [ID:c02_柜子可放置区域] # c02 保卫科 芦昌公寓居民登记簿,黄国栋记。 [ID:c02_保卫科花名册os] +3012?上面有我的名字,看来确实是这里... [ID:c02_保卫科花名册首次互动结束] 祭台是专门供奉这只大老鼠的? [ID:c02_保卫科祭台os] 鼠歌

天地小如喉,
红轮自吞吐。
多少世间人,
都被红轮误。 [ID:c02_保卫科老鼠精] # c02 小手 -...还有什么东西能跟它交换呢? [ID:] +...还有什么东西能跟它交换呢? [ID:c02_小手还能换什么] ?! [ID:c02_小手出现摔倒] -这是什么鬼东西,它是在讨要什么 [ID:] +这是什么鬼东西,它是在讨要什么 [ID:c02_小手是什么鬼] 又来一个! [ID:c02_小手再次出现] # c02 内侧楼道 被挡住了 [ID:c02_一楼楼道被挡住] @@ -223,6 +227,8 @@ 盆里的水很清澈,看上去像是刚盛的。 [ID:c02_二楼水盆] 到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。 [ID:c02_二楼老鼠洞] 又是这种小小尖尖的血脚印... [ID:c02_二楼血脚印] +那女孩为什么要我引开这个疯男人?[ID:c02_老鼠叼鞋引开疯子] +我要去找洞里的小手把弹珠拿回来。 [ID:c02_小手换回弹珠] # c02 瞎子卧室 刚才那些...到底是怎么回事? [ID:c02_离开红色演出] 「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」
咦,这口诀是谁教我的来着... [ID:c02_瞎子卧室_八卦图] diff --git a/asset/dialogue/npc.dialogue b/asset/dialogue/npc.dialogue index c083a6c9..3ee91fbf 100644 --- a/asset/dialogue/npc.dialogue +++ b/asset/dialogue/npc.dialogue @@ -24,12 +24,13 @@ ???: 这是我家,我的东西,我的宝贝,听到没有?!别吵了...都出去! [#anonymous] [ID:c02_2疯子_3] => END -~ c02_s11_井边疯子对话 +~ c02_看井对话 ???: 囡囡看,月亮掉进水里喽! [ID:c02_3疯子_1] ???: 不对、不对,连月亮也骗我! [ID:c02_3疯子_2] ???: 月牙儿,不吉利,圆圆的,一块也不能缺... [ID:c02_3疯子_3] -#=> END -#~ c02_疯子对话圆月亮 +=> END + +~ c02_井边疯子对话 ???: 你看见没有?这月亮够不够圆? [ID:c02_疯子对话圆月亮1] ???: 杆子细又高、灯火照一照、庙里影子绕、大家哈哈笑... [ID:c02_疯子对话圆月亮2] ???: 扁担长,板凳宽,板凳没有扁担长,扁担没有板凳宽...一担挑啊,一担挑! [ID:c02_疯子对话圆月亮3] diff --git a/asset/shader/vignette.gdshader b/asset/shader/vignette.gdshader index 7393d3da..9bdaeb2f 100644 --- a/asset/shader/vignette.gdshader +++ b/asset/shader/vignette.gdshader @@ -1,7 +1,8 @@ shader_type canvas_item; -uniform float vignette_intensity : hint_range(0.0, 4.0) = 0.4; -uniform vec4 vignette_rgb : source_color = vec4(0.247, 0.149, 0.192, 1.0); +uniform float vignette_ratio : hint_range(0.0, 1.0) = 0.4; +uniform float vignette_intensity : hint_range(0.0, 4.0) = 0.3; +uniform vec3 vignette_rgb : source_color = vec3(0.753, 0.0, 0.0); uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap; float vignette(vec2 uv){ @@ -12,8 +13,7 @@ float vignette(vec2 uv){ void fragment(){ vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV); - vec4 text = texture(TEXTURE, UV); - text.rgba *= (vignette_rgb.rgba); - text.rgba *= (1.0 - vignette(UV)); - COLOR = vec4((text.rgb)*color.rgb, text.a); + float a = 1.0 - vignette(UV); + vec3 rgb = vignette_ratio * vignette_rgb + (1.0 - vignette_ratio) * color.rgb; + COLOR = vec4(rgb, a); } \ No newline at end of file diff --git a/manager/archive_manager/assembled_archive.gd b/manager/archive_manager/assembled_archive.gd index e507e545..41c60cdc 100644 --- a/manager/archive_manager/assembled_archive.gd +++ b/manager/archive_manager/assembled_archive.gd @@ -10,17 +10,14 @@ class_name AssembledArchive extends Resource if val and val.length() != 7: printerr("[AssembledArchive] current_scene is not valid: " + val) return - current_chapter = int(val.substr(1, 2)) - current_section = int(val.substr(5)) # 尝试后台预先加载该场景 if GroundLoader.GROUND_SCENE_PATH_DICT.has(val): var path = GroundLoader.GROUND_SCENE_PATH_DICT[val] if GlobalConfig.DEBUG: print("[AssembledArchive] preload scene: " + path) ResourceLoader.load_threaded_request(path, "PackedScene") -# current_chapter and current_section are derived from current_scene +# 0:未开始游戏;1:序章;2-5:一~四章;6:结尾 @export var current_chapter := 0 -@export var current_section := 0 # player's info # 只有在 >=0 的情况下才会生效 @export var player_global_position_x := -100.0 @@ -71,3 +68,13 @@ func set_global_entry(property: StringName, value) -> void: func get_global_value(property: StringName) -> Variant: return global_data_dict.get(property) + +func set_chapter_if_greater(c : int) -> void: + # 1:序章;2-5:一~四章;6:结尾 + if c < 1 or c > 6: + printerr("[AssembledArchive] set_chapter: invalid chapter value: " + str(c)) + return + if current_chapter >= c: + return + print("[AssembledArchive] set_chapter_if_greater: " + str(c)) + current_chapter = c \ No newline at end of file diff --git a/manager/config_manager/global_config_manager.gd b/manager/config_manager/global_config_manager.gd index 1cb8b351..5f89906e 100644 --- a/manager/config_manager/global_config_manager.gd +++ b/manager/config_manager/global_config_manager.gd @@ -96,8 +96,6 @@ func get_concise_timemark() -> String: + str(ArchiveManager.current_archive_id) + "_c" + str(archive.current_chapter) - + "_s" - + str(archive.current_section) + " " + str(hour) + ":" diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index 5fc031ff..ffc578fe 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -21,32 +21,33 @@ var ground: Ground2D # 场景名字映射到路径 static var GROUND_SCENE_PATH_DICT = { - "c01_s05": "res://scene/ground/scene/c01/s05_院长房间.tscn", - "c01_s06": "res://scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn", - "c01_s07": "res://scene/ground/scene/c01/s07_书店外.tscn", - "c01_s08": "res://scene/ground/scene/c01/s08_书店.tscn", - "c01_s09": "res://scene/ground/scene/c01/s09_公寓楼外.tscn", - "c01_s10": "res://scene/ground/scene/c01/s10_公寓楼道.tscn", - "c01_s11": "res://scene/ground/scene/c01/s11_黄包车演出.tscn", - "c01_s12": "res://scene/ground/scene/c01/s12_书店外_诡异版.tscn", - "c02_s01": "res://scene/ground/scene/c02/s01_公寓门口.tscn", - "c02_s02": "res://scene/ground/scene/c02/s02_过道.tscn", - "c02_s03": "res://scene/ground/scene/c02/s03_院子.tscn", - "c02_s04": "res://scene/ground/scene/c02/s04_保卫科.tscn", - "c02_s05": "res://scene/ground/scene/c02/s05_一楼内侧楼道.tscn", - "c02_s06": "res://scene/ground/scene/c02/s06_二楼.tscn", - "c02_s07": "res://scene/ground/scene/c02/s07_二楼内侧楼道.tscn", - "c02_s08": "res://scene/ground/scene/c02/s08_瞎子卧室.tscn", - "c02_s09": "res://scene/ground/scene/c02/s09_裂缝.tscn", - "c02_s10": "res://scene/ground/scene/c02/s10_空房间.tscn", - "c02_s11": "res://scene/ground/scene/c02/s11_一楼火灾.tscn", # 注:该场景合并在了 c02_s03 院子中 - "c02_s12": "res://scene/ground/scene/c02/s12_盒子猫.tscn", - "c02_s13": "res://scene/ground/scene/c02/s13_盒子猫二楼.tscn", - "c02_s14": "res://scene/ground/scene/c02/s14_盒子猫二楼内侧.tscn", - "c02_s15": "res://scene/ground/scene/c02/s15_盒子猫一楼内侧.tscn", - "c02_s16": "res://scene/ground/scene/c02/s16_盒子猫三楼内侧.tscn", - "c02_s17": "res://scene/ground/scene/c02/s17_盒子猫三楼.tscn", - "c02_s18": "res://scene/ground/scene/c02/s18_盒子猫一楼.tscn", + "c01_s05": "uid://dlx5xxbg53rb8", + "c01_s06": "uid://bx16c8nn32f40", + "c01_s07": "uid://ds2iyfndwamiy", + "c01_s08": "uid://cwu4dhayra8pg", + "c01_s09": "uid://c777lv8mjojcw", + "c01_s10": "uid://be57l2o3vxxtm", + "c01_s11": "uid://coiumaaenimbc", + "c01_s12": "uid://bol5hl68pbpgq", + "c02_s01": "uid://bbs7yy5aofw1v", + "c02_s02": "uid://brck77w81fhvc", + "c02_s03": "uid://djc2uaefhmu7", + "c02_s04": "uid://bivc5cdap370p", + "c02_s05": "uid://cp8d3ag5nbjq0", + "c02_s06": "uid://cootarwb44vvh", + "c02_s07": "uid://t4xjt774ngwh", + "c02_s08": "uid://ce2vyyg2reg52", + "c02_s09": "uid://ryups1dnwdto", + "c02_s10": "uid://dny21yhtuteap", + "c02_s11": "uid://dq41rvwl5hyrk", # 注:该场景合并在了 c02_s03 院子中 + "c02_s12": "uid://da4cuf2i3nwpj", + "c02_s13": "uid://bvjutch6jex0v", + "c02_s14": "uid://d0p4x5st2r315", + "c02_s15": "uid://b21p53g42j2nt", + "c02_s16": "uid://22hc3oe8t0id", + "c02_s17": "uid://cbr6gbgrl2wb1", + "c02_s18": "uid://d27gv3pbkn4b8", + "c03_s01": "uid://dlrbhfvnd3cs0", # 瞎子理发店 } diff --git a/scene/ground/scene/c01/s05_院长房间.gd b/scene/ground/scene/c01/s05_院长房间.gd index aa1063d4..b17735a0 100644 --- a/scene/ground/scene/c01/s05_院长房间.gd +++ b/scene/ground/scene/c01/s05_院长房间.gd @@ -30,6 +30,7 @@ func play_intro_dialogue(): func _on_ground_ready() -> void: + ArchiveManager.archive.set_chapter_if_greater(1) ambush = $"../DeployLayer/ambush鸡毛掸子" frame = $"../DeployLayer/画框" paper = $"../DeployLayer/oneshot纸片" diff --git a/scene/ground/scene/c01/s05_院长房间.tscn b/scene/ground/scene/c01/s05_院长房间.tscn index 4a4a783c..81488023 100644 --- a/scene/ground/scene/c01/s05_院长房间.tscn +++ b/scene/ground/scene/c01/s05_院长房间.tscn @@ -754,7 +754,6 @@ unique_name_in_owner = true position = Vector2(270, 23.5) texture = ExtResource("12_jtglg") trigger_mode = "interact" -lock_player_on_playing_dialogue = null hook_animation = "使用鸡毛掸子" hook_method = "lock_on_use_stick" diff --git a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn index 944058ef..6a715e41 100644 --- a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn +++ b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn @@ -230,7 +230,7 @@ hook_dialogue_title = "c01_s06_走廊前对话" position = Vector2(308, 43) one_shot = false cooldown_time = 3.0 -lock_player_on_playing_dialogue = null +lock_player_on_playing_dialogue = false hook_animation = "门口_观望" [node name="踢球男孩" parent="Ground/DeployLayer" index="6" instance=ExtResource("5_erliv")] @@ -425,7 +425,6 @@ move_configs = Array[Dictionary]([{ position = Vector2(1, 65) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "obstacles_ambush1_triggered" [node name="Area2D" parent="Ground/DeployLayer/【站立小孩-1】/桌椅ambush1" index="1"] @@ -491,7 +490,6 @@ position = Vector2(78, 43) position = Vector2(1, 65) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "obstacles_ambush2_triggered" [node name="Area2D" parent="Ground/DeployLayer/【站立小孩-2】/桌椅ambush2" index="1"] @@ -533,7 +531,6 @@ bus = &"game_sfx" position = Vector2(1809, 56) one_shot = false cooldown_time = 1.0 -lock_player_on_playing_dialogue = null hook_method = "game_intro" [node name="【胖小孩背着残疾小孩】" parent="Ground/DeployLayer" index="18" instance=ExtResource("8_ouldg")] @@ -574,7 +571,6 @@ move_configs = Array[Dictionary]([{ position = Vector2(1, 65) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "obstacles_ambush3_triggered" [node name="Area2D" parent="Ground/DeployLayer/【胖小孩背着残疾小孩】/桌椅ambush3" index="1"] @@ -637,7 +633,6 @@ hook_method = "talk3" position = Vector2(4546, 45) one_shot = false cooldown_time = 0.1 -lock_player_on_playing_dialogue = null hook_method = "game_succeed" [node name="Fog" parent="Ground/DeployLayer/猫鼠游戏胜利ambush" instance=ExtResource("14_d5def")] diff --git a/scene/ground/scene/c01/s07_书店外.gd b/scene/ground/scene/c01/s07_书店外.gd index a07dc05a..2170437f 100644 --- a/scene/ground/scene/c01/s07_书店外.gd +++ b/scene/ground/scene/c01/s07_书店外.gd @@ -23,6 +23,7 @@ var ambush_seller: Ambush2D var bookstore_portal: Portal2D func _on_ground_ready() -> void: + ArchiveManager.archive.set_chapter_if_greater(2) luren = $"../DeployLayer/陆仁舞刀" as ProAnimatedSprite2D fog = $"../DeployLayer/portal_1/Fog" as Fog2D if data.fog_disappeared: diff --git a/scene/ground/scene/c01/s08_书店.tscn b/scene/ground/scene/c01/s08_书店.tscn index 17e4bf26..8737dae7 100644 --- a/scene/ground/scene/c01/s08_书店.tscn +++ b/scene/ground/scene/c01/s08_书店.tscn @@ -131,7 +131,6 @@ texture = ExtResource("5_tnrke") trigger_mode = "interact" one_shot = false cooldown_time = 1.0 -lock_player_on_playing_dialogue = null hook_method = "play_shelf_game" [node name="Interactable信件书桌" parent="Ground/DeployLayer" index="3" instance=ExtResource("7_fue0t")] @@ -175,7 +174,6 @@ position = Vector2(537, 21) enabled = false trigger_mode = "interact" cooldown_time = 1.0 -lock_player_on_playing_dialogue = null hook_method = "pay_off_wage" [node name="老板" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="8"] diff --git a/scene/ground/scene/c01/s09_公寓楼外.tscn b/scene/ground/scene/c01/s09_公寓楼外.tscn index 5d8a565a..b4847fbf 100644 --- a/scene/ground/scene/c01/s09_公寓楼外.tscn +++ b/scene/ground/scene/c01/s09_公寓楼外.tscn @@ -148,7 +148,6 @@ position = Vector2(-119, 13) position = Vector2(96, 20) one_shot = false cooldown_time = 0.1 -lock_player_on_playing_dialogue = null hook_method = "player_been_passed" [node name="脚步声2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Ghost"] diff --git a/scene/ground/scene/c01/s11_黄包车演出.tscn b/scene/ground/scene/c01/s11_黄包车演出.tscn index 93db4747..a14755a8 100644 --- a/scene/ground/scene/c01/s11_黄包车演出.tscn +++ b/scene/ground/scene/c01/s11_黄包车演出.tscn @@ -216,42 +216,36 @@ position = Vector2(1365, 4) trigger_mode = "area_enter" one_shot = false cooldown_time = 1.0 -lock_player_on_playing_dialogue = null hook_method = "pop_title_1" [node name="ambush_title2" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_3k8jj")] position = Vector2(2870, -10) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "pop_title_2" [node name="ambush_title3" parent="Ground/DeployLayer" index="6" instance=ExtResource("6_3k8jj")] position = Vector2(6341, 3) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "pop_title_3" [node name="ambush_dialog2" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_3k8jj")] position = Vector2(866, 5) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "dialog2" [node name="ambush_dialog3" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_3k8jj")] position = Vector2(3448, -8) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "dialog3" [node name="ambush_dialog4" parent="Ground/DeployLayer" index="9" instance=ExtResource("6_3k8jj")] position = Vector2(5305, -2) trigger_mode = "area_enter" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "dialog4" [node name="路灯序列1" type="Node2D" parent="Ground/AmbientLayer" index="0"] diff --git a/scene/ground/scene/c01/s12_书店外_诡异版.tscn b/scene/ground/scene/c01/s12_书店外_诡异版.tscn index 1ed25392..2fe62f8a 100644 --- a/scene/ground/scene/c01/s12_书店外_诡异版.tscn +++ b/scene/ground/scene/c01/s12_书店外_诡异版.tscn @@ -159,7 +159,6 @@ position = Vector2(1127, 28) enabled = false one_shot = false cooldown_time = 0.1 -lock_player_on_playing_dialogue = null hook_method = "player_been_catched" [node name="脚步声2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Ghost"] @@ -227,7 +226,6 @@ action_configs = Array[Dictionary]([{ [node name="Ambush举碗小孩" parent="Ground/DeployLayer/举碗小孩" instance=ExtResource("9_nqlku")] position = Vector2(0, 53) trigger_mode = "interact" -lock_player_on_playing_dialogue = null hook_method = "ambush_begger_interacted" [node name="Interactable碗" parent="Ground/DeployLayer/举碗小孩" instance=ExtResource("5_6jrnc")] @@ -249,7 +247,6 @@ position = Vector2(0, 92) enabled = false one_shot = false cooldown_time = 1.0 -lock_player_on_playing_dialogue = null hook_method = "player_run_away" [node name="Light" parent="Ground/AmbientLayer" index="0" instance=ExtResource("5_kywnm")] diff --git a/scene/ground/scene/c02/s01_公寓门口.tscn b/scene/ground/scene/c02/s01_公寓门口.tscn index 4980c156..bdfd964f 100644 --- a/scene/ground/scene/c02/s01_公寓门口.tscn +++ b/scene/ground/scene/c02/s01_公寓门口.tscn @@ -37,13 +37,11 @@ texture = ExtResource("5_j2ctx") [node name="portal_left" parent="Ground/DeployLayer" index="0"] position = Vector2(78, 27) immediately = true -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(368, 4) target_scene = "c02_s02" target_portal = "left" -matched_sign_texture = null [node name="Note门口" parent="Ground/DeployLayer" index="2" instance=ExtResource("6_bhi7l")] position = Vector2(285, -20) diff --git a/scene/ground/scene/c02/s02_过道.tscn b/scene/ground/scene/c02/s02_过道.tscn index 188066c0..c4fcc8f8 100644 --- a/scene/ground/scene/c02/s02_过道.tscn +++ b/scene/ground/scene/c02/s02_过道.tscn @@ -86,13 +86,11 @@ position = Vector2(-25, 24) enabled = false target_scene = "c02_s01" target_portal = "right" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(676, 6) target_scene = "c02_s03" target_portal = "left" -matched_sign_texture = null [node name="InteractableLeftPortal" parent="Ground/DeployLayer" index="2" instance=ExtResource("13_ck13g")] position = Vector2(28, -24) @@ -110,7 +108,6 @@ frame_progress = 1.0 [node name="Ambush太暗了" parent="Ground/DeployLayer" index="4" instance=ExtResource("8_52as8")] position = Vector2(177, 42) -lock_player_on_playing_dialogue = null hook_os_key = "c02_太暗了" [node name="海报1" parent="Ground/DeployLayer" index="5" instance=ExtResource("12_0fckv")] @@ -147,7 +144,6 @@ enabled = false trigger_mode = "interact" one_shot = false cooldown_time = 0.0 -lock_player_on_playing_dialogue = null [node name="wall" type="StaticBody2D" parent="Ground/DeployLayer/Ambush纸人"] position = Vector2(3, 4) @@ -169,7 +165,6 @@ position = Vector2(358, 50) trigger_mode = "interact" collision_width_and_x = Vector2(23.86, 0) cooldown_time = 1.0 -lock_player_on_playing_dialogue = null hook_method = "lumber_interacted" [node name="杂物眨眼睛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="11"] @@ -211,7 +206,6 @@ mute_when_interacted = true position = Vector2(525, 61) one_shot = false cooldown_time = 1.0 -lock_player_on_playing_dialogue = null hook_method = "check_if_show_shoes" [node name="煤油灯" parent="Ground/DeployLayer" index="17" instance=ExtResource("17_mpkj1")] @@ -232,7 +226,6 @@ texture = ExtResource("22_jg8g0") [node name="Ambush小蝉闪现" parent="Ground/DeployLayer" index="19" instance=ExtResource("8_52as8")] position = Vector2(388, 47) -lock_player_on_playing_dialogue = null hook_method = "xiaochan_disappear" [node name="小蝉" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush小蝉闪现"] diff --git a/scene/ground/scene/c02/s03_院子.gd b/scene/ground/scene/c02/s03_院子.gd index 9b913bac..a83073dc 100644 --- a/scene/ground/scene/c02/s03_院子.gd +++ b/scene/ground/scene/c02/s03_院子.gd @@ -43,6 +43,7 @@ func _on_ground_ready() -> void: counter = $"../DeployLayer/Interactable柜子" as Interactable2D counter.interacted.connect(_on_counter_interacted) if ArchiveManager.get_global_value(&"c02_counter_pushed_out"): + counter.get_node("../Note柜子可放置区域").enable = false counter.visible = true if not ArchiveManager.get_global_value(&"c02_burning"): # 点燃前 @@ -185,7 +186,9 @@ func eavesdrop() -> void: SceneManager.player_action(14, true) ArchiveManager.set_global_entry(&"c02_eavesdrop_finished", true) await Util.wait(1.5) + SceneManager.pop_os_with_str("c02_偷听李癞对话后") SceneManager.unlock_player() + func _setup_bully_or_burning(reenter_scene := false): @@ -258,7 +261,6 @@ func bully_end(): func block_right_move(): SceneManager.pop_os_with_str("c02_点火前阻止右移") - # var count_down_tween:Tween # func count_down(): @@ -276,6 +278,7 @@ func _on_counter_interacted(): SceneManager.pop_os_with_str("c02_火灾等待准备") return counter.enabled = false + counter.get_node("../Note柜子可放置区域").enable = false if not ArchiveManager.get_global_value(&"c02_burning"): GlobalFunctor.c02_fire_count_down_stop() # 6: 低位点火 diff --git a/scene/ground/scene/c02/s03_院子.tscn b/scene/ground/scene/c02/s03_院子.tscn index 12197a85..f88b035a 100644 --- a/scene/ground/scene/c02/s03_院子.tscn +++ b/scene/ground/scene/c02/s03_院子.tscn @@ -22,7 +22,7 @@ [ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="8_xt8j0"] [ext_resource type="Texture2D" uid="uid://bgpf35bhrkl86" path="res://asset/art/scene/c02/s03_公寓一楼院子/铁门/打开 底层.png" id="9_liq0c"] [ext_resource type="Texture2D" uid="uid://cvtbiefbffjd7" path="res://asset/art/scene/c02/门_贴图/1015房间.png" id="9_vddfx"] -[ext_resource type="Texture2D" uid="uid://diuh52qo2o6pa" path="res://asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字.png" id="10_3nako"] +[ext_resource type="Texture2D" uid="uid://diuh52qo2o6pa" path="res://asset/art/scene/c02/s03_公寓一楼院子/f_院子内墙上文字与柜子痕迹.png" id="10_3nako"] [ext_resource type="PackedScene" uid="uid://dnbutraty2285" path="res://scene/entity/partical/particals_ash_vertical.tscn" id="10_c3f8o"] [ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="10_jme4f"] [ext_resource type="Texture2D" uid="uid://dooaferyy44rs" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_前侧楼梯.png" id="10_ud2jg"] @@ -290,21 +290,18 @@ data = { oneshot_animation = "" [node name="Sfx闷雷" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] -process_mode = 1 stream = ExtResource("6_vddfx") bus = &"game_sfx" script = ExtResource("4_ygnci") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx小鞋落地" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] -process_mode = 1 stream = ExtResource("7_df1yo") bus = &"game_sfx" script = ExtResource("4_ygnci") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx小蝉哼歌" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"] -process_mode = 1 stream = ExtResource("6_jhod7") volume_db = 16.0 bus = &"game_sfx" @@ -331,55 +328,53 @@ autoplay = "一楼二楼外侧楼道拼接-晃脚动画" position = Vector2(25, 11) target_scene = "c02_s02" target_portal = "right" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(2286, 16) -matched_sign_texture = null -[node name="火灾背景" type="Sprite2D" parent="Ground/DeployLayer" index="2"] +[node name="Ambush保卫科旁边os" parent="Ground/DeployLayer" index="2" instance=ExtResource("25_iyaiw")] +position = Vector2(138, 47) +hook_os_key = "c02_院子_保卫科旁" + +[node name="火灾背景" type="Sprite2D" parent="Ground/DeployLayer" index="3"] modulate = Color(1, 1, 1, 0) position = Vector2(1189, 0) texture = ExtResource("6_d7h4s") -[node name="禁火等墙面文字" type="Sprite2D" parent="Ground/DeployLayer" index="3"] +[node name="禁火等墙面文字" type="Sprite2D" parent="Ground/DeployLayer" index="4"] position = Vector2(955, 5) texture = ExtResource("10_3nako") -[node name="portal_1" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_00b7a")] +[node name="portal_1" parent="Ground/DeployLayer" index="5" instance=ExtResource("5_00b7a")] position = Vector2(200, 10) debug_note = "1012保卫科" portal_name = "1" target_scene = "c02_s04" target_portal = "left" status = "opened" -matched_sign_texture = null -[node name="portal_2" parent="Ground/DeployLayer" index="5" instance=ExtResource("5_00b7a")] +[node name="portal_2" parent="Ground/DeployLayer" index="6" instance=ExtResource("5_00b7a")] position = Vector2(928, 7) debug_note = "一楼内侧过道 " portal_name = "2" target_scene = "c02_s05" target_portal = "left" -matched_sign_texture = null -[node name="portal_3" parent="Ground/DeployLayer" index="6" instance=ExtResource("5_00b7a")] +[node name="portal_3" parent="Ground/DeployLayer" index="7" instance=ExtResource("5_00b7a")] position = Vector2(1704, 14) debug_note = "空房间 1014" portal_name = "3" target_scene = "c02_s10" target_portal = "left" status = "opened" -matched_sign_texture = null -[node name="portal_4" parent="Ground/DeployLayer" index="7" instance=ExtResource("5_00b7a")] +[node name="portal_4" parent="Ground/DeployLayer" index="8" instance=ExtResource("5_00b7a")] position = Vector2(1876, 49) debug_note = "霸凌传送点" portal_name = "4" -matched_sign_texture = null -[node name="Note血迹" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_t48d1")] +[node name="Note血迹" parent="Ground/DeployLayer" index="9" instance=ExtResource("6_t48d1")] position = Vector2(523, 78) title_filter = "c02" note_key = "c02_s03_干掉的血迹" @@ -391,7 +386,7 @@ position = Vector2(132, 10) sprite_frames = ExtResource("4_gd6xp") animation = &"肉铺门口血迹" -[node name="灯笼" type="Node2D" parent="Ground/DeployLayer" index="9"] +[node name="灯笼" type="Node2D" parent="Ground/DeployLayer" index="10"] [node name="灯笼" type="Sprite2D" parent="Ground/DeployLayer/灯笼"] position = Vector2(1644, -86) @@ -441,7 +436,7 @@ energy = 0.7 texture = SubResource("GradientTexture2D_kyfht") texture_scale = 2.2 -[node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="10"] +[node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="11"] visible = false [node name="地上纸钱" type="Sprite2D" parent="Ground/DeployLayer/新背景_奠"] @@ -476,12 +471,11 @@ position = Vector2(898, -162) z_index = 15 position = Vector2(1964, -209) -[node name="闷雷_纸人闪现" type="Node2D" parent="Ground/DeployLayer" index="11"] +[node name="闷雷_纸人闪现" type="Node2D" parent="Ground/DeployLayer" index="12"] visible = false [node name="Ambush闷雷纸人" parent="Ground/DeployLayer/闷雷_纸人闪现" instance=ExtResource("25_iyaiw")] position = Vector2(1353, 33) -lock_player_on_playing_dialogue = null hook_method = "shocking_lighting" [node name="排队常人" type="Sprite2D" parent="Ground/DeployLayer/闷雷_纸人闪现"] @@ -504,12 +498,11 @@ range_layer_max = 2 range_item_cull_mask = 4 texture = SubResource("GradientTexture2D_3nako") -[node name="Ambush要下雨了" parent="Ground/DeployLayer" index="12" instance=ExtResource("25_iyaiw")] +[node name="Ambush要下雨了" parent="Ground/DeployLayer" index="13" instance=ExtResource("25_iyaiw")] position = Vector2(1611, 46) -lock_player_on_playing_dialogue = null hook_os_key = "c02_院子_要下雨" -[node name="Pickable小鞋子" parent="Ground/DeployLayer" index="13" instance=ExtResource("7_em2ma")] +[node name="Pickable小鞋子" parent="Ground/DeployLayer" index="14" instance=ExtResource("7_em2ma")] position = Vector2(809, 75) sign_mark_offset = Vector2(0, -16.88) enabled = false @@ -520,7 +513,7 @@ position = Vector2(0, -7) scale = Vector2(0.15, 0.15) texture = ExtResource("8_plfv5") -[node name="Event2D小蝉哼歌" type="Node2D" parent="Ground/DeployLayer" index="14"] +[node name="Event2D小蝉哼歌" type="Node2D" parent="Ground/DeployLayer" index="15"] position = Vector2(800, -173) script = ExtResource("26_o1qbs") event = "c02_madman_interacted" @@ -536,7 +529,7 @@ bus = &"game_sfx" script = ExtResource("54_o1qbs") metadata/_custom_type_script = "uid://wapo47a1oddf" -[node name="Interactable铁门" parent="Ground/DeployLayer" index="15" instance=ExtResource("8_xt8j0")] +[node name="Interactable铁门" parent="Ground/DeployLayer" index="16" instance=ExtResource("8_xt8j0")] light_mask = 5 position = Vector2(1222, 28) texture = ExtResource("7_gd6xp") @@ -545,6 +538,12 @@ action_key = 3 interacted_texture = ExtResource("9_liq0c") prop_key = "prop_老虎钳" +[node name="SfxInvalid" parent="Ground/DeployLayer/Interactable铁门" index="0"] +process_mode = 0 + +[node name="SfxSuccess" parent="Ground/DeployLayer/Interactable铁门" index="1"] +process_mode = 0 + [node name="CollisionShape2D" parent="Ground/DeployLayer/Interactable铁门/Area2D" index="0"] shape = SubResource("RectangleShape2D_er6ob") @@ -556,7 +555,7 @@ collision_mask = 0 [node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/Interactable铁门/Wall"] shape = SubResource("RectangleShape2D_mdix7") -[node name="Note算命摊位" parent="Ground/DeployLayer" index="16" instance=ExtResource("6_t48d1")] +[node name="Note算命摊位" parent="Ground/DeployLayer" index="17" instance=ExtResource("6_t48d1")] position = Vector2(725, 45) note_key = "c02_院子_算命摊位" @@ -564,13 +563,13 @@ note_key = "c02_院子_算命摊位" position = Vector2(0, 18) texture = ExtResource("6_1tart") -[node name="煤油灯" parent="Ground/DeployLayer" index="17" instance=ExtResource("10_jme4f")] +[node name="煤油灯" parent="Ground/DeployLayer" index="18" instance=ExtResource("10_jme4f")] position = Vector2(290, 1) gaslight_energy = 1.5 gaslight_ground_energy = 0.7 mute_when_interacted = false -[node name="煤油灯2" parent="Ground/DeployLayer" index="18" instance=ExtResource("10_jme4f")] +[node name="煤油灯2" parent="Ground/DeployLayer" index="19" instance=ExtResource("10_jme4f")] position = Vector2(610, 1) gaslight_texture = ExtResource("11_g0qhj") ground_light_texture = ExtResource("12_ni5ro") @@ -578,7 +577,7 @@ gaslight_energy = 1.5 gaslight_ground_energy = 0.7 mute_when_interacted = false -[node name="煤油灯3" parent="Ground/DeployLayer" index="19" instance=ExtResource("10_jme4f")] +[node name="煤油灯3" parent="Ground/DeployLayer" index="20" instance=ExtResource("10_jme4f")] position = Vector2(857, 1) gaslight_texture = ExtResource("13_hw832") ground_light_texture = ExtResource("14_7pq5y") @@ -586,49 +585,47 @@ gaslight_energy = 1.5 gaslight_ground_energy = 0.7 mute_when_interacted = false -[node name="井" type="Sprite2D" parent="Ground/DeployLayer" index="20"] +[node name="井" type="Sprite2D" parent="Ground/DeployLayer" index="21"] self_modulate = Color(0.739288, 0.739288, 0.739288, 1) light_mask = 5 z_index = 10 position = Vector2(2062, 60) texture = ExtResource("21_4n8vm") -[node name="药车" type="Sprite2D" parent="Ground/DeployLayer" index="21"] +[node name="药车" type="Sprite2D" parent="Ground/DeployLayer" index="22"] light_mask = 5 z_index = 10 position = Vector2(1025, 27) texture = ExtResource("22_3y5s5") -[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="22" instance=ExtResource("23_81juy")] +[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="23" instance=ExtResource("23_81juy")] position = Vector2(466, 3) packed_scene = ExtResource("24_0o4rt") collision_width_and_x = Vector2(40, 0) -[node name="Closeup井" parent="Ground/DeployLayer" index="23" instance=ExtResource("23_81juy")] +[node name="Closeup井" parent="Ground/DeployLayer" index="24" instance=ExtResource("23_81juy")] z_index = 6 position = Vector2(2063, 50) packed_scene = ExtResource("26_yy4fp") action_key = 3 -[node name="Ambush惊悚闪电" parent="Ground/DeployLayer" index="24" instance=ExtResource("25_iyaiw")] +[node name="Ambush惊悚闪电" parent="Ground/DeployLayer" index="25" instance=ExtResource("25_iyaiw")] position = Vector2(1319, 40) -lock_player_on_playing_dialogue = null hook_method = "shocking_lighting" -[node name="Ambush偷听对话" parent="Ground/DeployLayer" index="25" instance=ExtResource("25_iyaiw")] +[node name="Ambush偷听对话" parent="Ground/DeployLayer" index="26" instance=ExtResource("25_iyaiw")] position = Vector2(1836, 7) trigger_mode = "interact" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "eavesdrop" -[node name="李氏赖子房间人影" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="26"] +[node name="李氏赖子房间人影" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="27"] position = Vector2(1835, -16) sprite_frames = SubResource("SpriteFrames_0o4rt") autoplay = "default" frame_progress = 0.643855 -[node name="Npc井边疯子" parent="Ground/DeployLayer" index="27" instance=ExtResource("35_plfv5")] +[node name="Npc井边疯子" parent="Ground/DeployLayer" index="28" instance=ExtResource("35_plfv5")] z_index = 10 position = Vector2(2037, 67) sprite_frames = ExtResource("4_gd6xp") @@ -640,7 +637,7 @@ sign_mark_height = 11.0 speaking_sign_height = 49.0 sign_x_offset = -2.0 collision_width_and_x = Vector2(37.08, 0) -dialogue_title = "c02_s11_井边疯子对话" +dialogue_title = "c02_井边疯子对话" [node name="StaticBody2D" type="StaticBody2D" parent="Ground/DeployLayer/Npc井边疯子"] position = Vector2(11, 7) @@ -651,7 +648,7 @@ position = Vector2(-11, -3) shape = SubResource("RectangleShape2D_bbhbr") disabled = true -[node name="霸凌" type="Node2D" parent="Ground/DeployLayer" index="28"] +[node name="霸凌" type="Node2D" parent="Ground/DeployLayer" index="29"] visible = false position = Vector2(2154, 60) @@ -659,7 +656,6 @@ position = Vector2(2154, 60) position = Vector2(-185, -10) enabled = false one_shot = false -lock_player_on_playing_dialogue = null hook_method = "bully_ambush" [node name="小蝉" parent="Ground/DeployLayer/霸凌" instance=ExtResource("33_ycojw")] @@ -706,7 +702,6 @@ position = Vector2(-116, -13) enabled = false one_shot = false cooldown_time = 4.0 -lock_player_on_playing_dialogue = null hook_method = "block_right_move" [node name="wall" type="StaticBody2D" parent="Ground/DeployLayer/霸凌"] @@ -718,7 +713,7 @@ collision_mask = 0 shape = SubResource("RectangleShape2D_d7h4s") disabled = true -[node name="火灾" type="Node2D" parent="Ground/DeployLayer" index="29"] +[node name="火灾" type="Node2D" parent="Ground/DeployLayer" index="30"] visible = false [node name="右窗" type="AnimatedSprite2D" parent="Ground/DeployLayer/火灾"] @@ -924,7 +919,6 @@ sign_mark_offset = Vector2(13.57, -39.84) enabled = false trigger_mode = "interact" one_shot = false -lock_player_on_playing_dialogue = null [node name="小婵呼吸" type="AnimatedSprite2D" parent="Ground/DeployLayer/火灾/Ambush等待的小蝉"] z_index = 9 @@ -961,7 +955,7 @@ script = ExtResource("54_o1qbs") loop = true metadata/_custom_type_script = "uid://wapo47a1oddf" -[node name="Interactable柜子" parent="Ground/DeployLayer" index="30" instance=ExtResource("8_xt8j0")] +[node name="Interactable柜子" parent="Ground/DeployLayer" index="31" instance=ExtResource("8_xt8j0")] visible = false position = Vector2(1772, 48) texture = ExtResource("32_cpifc") @@ -977,6 +971,11 @@ animation = &"箱子着火" autoplay = "箱子着火" frame_progress = 0.453645 +[node name="Note柜子可放置区域" parent="Ground/DeployLayer" index="32" instance=ExtResource("6_t48d1")] +position = Vector2(1771, 39) +title_filter = "c02" +note_key = "c02_柜子可放置区域" + [node name="PointLight2D" type="PointLight2D" parent="Ground/AmbientLayer" index="0"] light_mask = 4 position = Vector2(2189, -142) diff --git a/scene/ground/scene/c02/s04_保卫科.gd b/scene/ground/scene/c02/s04_保卫科.gd index 230be9d5..f9ba39d8 100644 --- a/scene/ground/scene/c02/s04_保卫科.gd +++ b/scene/ground/scene/c02/s04_保卫科.gd @@ -21,6 +21,10 @@ func _on_ground_ready() -> void: closeup_tin_coin = $"../DeployLayer/Closeup折锡纸" as Closeup2D if not ArchiveManager.get_global_value(&"c02_tin_coin_taken"): closeup_tin_coin.exit.connect(_on_closeup_tin_coin_exited) + + var closeup_book = $"../DeployLayer/Closeup花名册" as Closeup2D + if closeup_book.icount == 0: + closeup_book.exit.connect(_on_first_read, CONNECT_ONE_SHOT) func _on_closeup_tin_coin_exited(arg = null): @@ -29,3 +33,7 @@ func _on_closeup_tin_coin_exited(arg = null): SceneManager.enable_prop_item_silently("prop_锡箔元宝") await Util.wait(0.5) SceneManager.enable_prop_item("prop_锡箔元宝") + + +func _on_first_read(_arg) -> void: + SceneManager.pop_os_with_str("c02_保卫科花名册首次互动结束") diff --git a/scene/ground/scene/c02/s04_保卫科.tscn b/scene/ground/scene/c02/s04_保卫科.tscn index 5bc1bf67..77a12519 100644 --- a/scene/ground/scene/c02/s04_保卫科.tscn +++ b/scene/ground/scene/c02/s04_保卫科.tscn @@ -64,11 +64,9 @@ texture = ExtResource("5_cy26p") position = Vector2(67, 29) target_scene = "c02_s03" target_portal = "1" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(551, 22) -matched_sign_texture = null [node name="涂鸦提示" type="Sprite2D" parent="Ground/DeployLayer" index="2"] position = Vector2(275, 13) @@ -97,6 +95,12 @@ hide_texture = true gaslight_texture = ExtResource("9_a43aq") ground_light_texture = ExtResource("10_svuj3") +[node name="SfxInvalid" parent="Ground/DeployLayer/煤油灯" index="0"] +process_mode = 0 + +[node name="SfxSuccess" parent="Ground/DeployLayer/煤油灯" index="1"] +process_mode = 0 + [node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"] shape = SubResource("RectangleShape2D_gk1h4") diff --git a/scene/ground/scene/c02/s05_一楼内侧楼道.tscn b/scene/ground/scene/c02/s05_一楼内侧楼道.tscn index 7fdc0c68..58560bb2 100644 --- a/scene/ground/scene/c02/s05_一楼内侧楼道.tscn +++ b/scene/ground/scene/c02/s05_一楼内侧楼道.tscn @@ -129,11 +129,9 @@ offset = Vector2(0, -240) position = Vector2(24, 8) target_scene = "c02_s03" target_portal = "2" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(734, 33) -matched_sign_texture = null [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_tueh3")] position = Vector2(513, 37) @@ -141,7 +139,6 @@ debug_note = "通往 1012 房间" portal_name = "1" target_scene = "c02_s07" target_portal = "right" -matched_sign_texture = null [node name="Npc疯子" parent="Ground/DeployLayer" index="3" instance=ExtResource("9_8t4w6")] light_mask = 7 @@ -164,7 +161,6 @@ texture = SubResource("GradientTexture2D_2yvhw") position = Vector2(177, 50) enabled = false trigger_mode = "interact" -lock_player_on_playing_dialogue = null hook_method = "wood_puppet" [node name="火苗" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="5"] @@ -252,7 +248,6 @@ note_key = "c02_一楼死老鼠" position = Vector2(585, 80) enabled = false one_shot = false -lock_player_on_playing_dialogue = null hook_method = "mouse_pick_meat" [node name="老鼠叼肉" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"] @@ -288,7 +283,6 @@ visible = false visibility_layer = 5 position = Vector2(394, 53) enabled = false -lock_player_on_playing_dialogue = null hook_method = "xiaochan_disappear" [node name="ProSprite" parent="Ground/DeployLayer/Ambush小蝉消失" instance=ExtResource("22_heq1x")] diff --git a/scene/ground/scene/c02/s06_二楼.gd b/scene/ground/scene/c02/s06_二楼.gd index 225cff94..e6b47948 100644 --- a/scene/ground/scene/c02/s06_二楼.gd +++ b/scene/ground/scene/c02/s06_二楼.gd @@ -27,6 +27,8 @@ func _on_ground_ready() -> void: # 1: 牵手跑结束; 2: 谢幕演出结束 and EventManager.get_stage(&"c02_burning_end") == 1 ): + # 禁止再回到瞎子卧室 + ArchiveManager.set_global_entry(&"c02_the_blind_room_unlocked", false) # 第一章火灾结束,尾声演出 _c02_final_show.call_deferred() else: @@ -49,7 +51,6 @@ func _on_ground_ready() -> void: ) ) - closeup_ball = $"../DeployLayer/Closeup弹珠游戏" as Closeup2D if ArchiveManager.get_global_value(&"c02_the_blind_room_unlocked"): @@ -75,15 +76,14 @@ func glimpse_hide_out(): func _on_mice_hole_interacted(): - mice_hole.enabled = false - SceneManager.freeze_player(0) + SceneManager.lock_player() var animated_sprite = $"../DeployLayer/小老鼠拖鞋子" as AnimatedSprite2D animated_sprite.visible = true animated_sprite.frame = 8 animated_sprite.play() await animated_sprite.animation_finished animated_sprite.visible = false - mice_hole.enabled = true + SceneManager.unlock_player() if mice_hole.interacted_times >= 2: # 触发疯子撞墙,疯子在一楼内侧过道中消失 @@ -97,9 +97,10 @@ func _on_mice_hole_interacted(): var sprite = $"../DeployLayer/疯子撞墙" sprite.play("疯子跑动") play("疯子撞墙") + await Util.wait(3.5) + SceneManager.pop_os_with_str("c02_老鼠叼鞋引开疯子") SceneManager.pop_debug_dialog_info("音效", "待补充撞墙音效") - SceneManager.release_player() func boys_ball_game() -> void: @@ -108,12 +109,13 @@ func boys_ball_game() -> void: if stage == 0: ArchiveManager.set_global_entry(&"c02_ball_game_stage", 1) ArchiveManager.set_global_entry(&"c02_pliers_to_ball", true) - SceneManager.freeze_player(0) + SceneManager.lock_player() DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s05_三男孩弹珠游戏1") await DialogueManager.dialogue_ended - SceneManager.release_player() + SceneManager.pop_os_with_str("c02_小手换回弹珠") + SceneManager.unlock_player() elif stage == 1 or stage == 2: - SceneManager.freeze_player(0) + SceneManager.lock_player() if stage == 1 and SceneManager.get_current_prop(false) != "prop_弹珠": var hud = SceneManager.get_prop_hud() as PropHud hud.on_toggle_invalid_prop() @@ -124,7 +126,7 @@ func boys_ball_game() -> void: closeup_ball.exit.connect(_on_ball_game_exit, CONNECT_ONE_SHOT) closeup_ball.display() # closeup_ball.enabled = false - SceneManager.release_player() + SceneManager.unlock_player() func _on_ball_game_exit(success = null): @@ -175,3 +177,5 @@ func _on_exit_final_show(_arg): # 1: 牵手跑结束; 2: 谢幕演出结束 EventManager.set_stage(&"c02_burning_end", 2) EventManager.set_stage_if_greater("handnote_stage", 5) + # TODO 小蝉上楼后开启第二章 + ArchiveManager.archive.set_chapter_if_greater(3) diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn index 32e1c123..23fe7d0f 100644 --- a/scene/ground/scene/c02/s06_二楼.tscn +++ b/scene/ground/scene/c02/s06_二楼.tscn @@ -858,21 +858,18 @@ autoplay_group = &"c02_楼道2" metadata/_custom_type_script = "uid://cpejxlfni6n52" [node name="Sfx翻找东西" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] -process_mode = 1 stream = ExtResource("5_lh55k") bus = &"game_sfx" script = ExtResource("4_2e08x") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx擦亮火柴" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"] -process_mode = 1 stream = ExtResource("5_wywax") bus = &"game_sfx" script = ExtResource("4_2e08x") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx偷看关门" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"] -process_mode = 1 stream = ExtResource("7_7kxvk") bus = &"game_sfx" script = ExtResource("4_2e08x") @@ -887,11 +884,9 @@ texture = ExtResource("3_och2w") position = Vector2(34, 8) target_scene = "c02_s07" target_portal = "1" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(873, 15) -matched_sign_texture = null [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_haidv")] position = Vector2(108, 14) @@ -900,7 +895,6 @@ portal_name = "1" target_scene = "c02_s08" target_portal = "left" status = "locked" -matched_sign_texture = null [node name="portal_2" parent="Ground/DeployLayer" index="3" instance=ExtResource("4_haidv")] position = Vector2(222, 14) @@ -909,7 +903,6 @@ portal_name = "2" target_scene = "c03_s01" holding = true holding_reason_key = "c02_杂物堆堵住" -matched_sign_texture = null prop_key = "prop_2014钥匙" [node name="楼道杂物堆" type="Sprite2D" parent="Ground/DeployLayer" index="4"] @@ -942,6 +935,12 @@ position = Vector2(616, -14) ground_light_texture = ExtResource("8_7x2h6") ground_height_offset = 15.0 +[node name="SfxInvalid" parent="Ground/DeployLayer/煤油灯" index="0"] +process_mode = 0 + +[node name="SfxSuccess" parent="Ground/DeployLayer/煤油灯" index="1"] +process_mode = 0 + [node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"] shape = SubResource("RectangleShape2D_lh55k") @@ -963,6 +962,12 @@ disable_prop_after_interacted = true prop_key = "prop_小鞋子1" prop_key2 = "prop_小鞋子2" +[node name="SfxInvalid" parent="Ground/DeployLayer/Interactable老鼠洞" index="0"] +process_mode = 0 + +[node name="SfxSuccess" parent="Ground/DeployLayer/Interactable老鼠洞" index="1"] +process_mode = 0 + [node name="CollisionShape2D" parent="Ground/DeployLayer/Interactable老鼠洞/Area2D" index="0"] shape = SubResource("RectangleShape2D_7kxvk") @@ -1015,7 +1020,6 @@ enabled = false trigger_mode = "interact" one_shot = false cooldown_time = 0.1 -lock_player_on_playing_dialogue = null hook_method = "boys_ball_game" [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush三男孩"] @@ -1149,7 +1153,6 @@ texture = SubResource("GradientTexture2D_h3h1a") position = Vector2(553, -5) texture = ExtResource("37_osg51") collision_width_and_x = Vector2(150, 0) -lock_player_on_playing_dialogue = null hook_method = "glimpse_hide_out" [node name="MainPlayer" parent="Ground" index="5"] diff --git a/scene/ground/scene/c02/s07_二楼内侧楼道.tscn b/scene/ground/scene/c02/s07_二楼内侧楼道.tscn index f2157861..ddd54ff4 100644 --- a/scene/ground/scene/c02/s07_二楼内侧楼道.tscn +++ b/scene/ground/scene/c02/s07_二楼内侧楼道.tscn @@ -39,14 +39,12 @@ texture = ExtResource("3_t0s64") [node name="portal_left" parent="Ground/DeployLayer" index="0"] position = Vector2(40, 11) -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(589, 18) debug_note = "下到一楼内侧楼道" target_scene = "c02_s05" target_portal = "1" -matched_sign_texture = null [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_5krke")] position = Vector2(374, 17) @@ -55,7 +53,6 @@ debug_note = "二楼过道 portal_name = "1" target_scene = "c02_s06" target_portal = "left" -matched_sign_texture = null [node name="涂鸦提示" type="Sprite2D" parent="Ground/DeployLayer" index="3"] position = Vector2(272, 15) diff --git a/scene/ground/scene/c02/s08_瞎子卧室.tscn b/scene/ground/scene/c02/s08_瞎子卧室.tscn index 9ad9b9c2..392b4bc9 100644 --- a/scene/ground/scene/c02/s08_瞎子卧室.tscn +++ b/scene/ground/scene/c02/s08_瞎子卧室.tscn @@ -125,7 +125,6 @@ autoplay_group = &"c02_房间里2" metadata/_custom_type_script = "uid://cpejxlfni6n52" [node name="Sfx癞子对视惊吓" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] -process_mode = 1 stream = ExtResource("5_0qeqe") volume_db = 2.0 bus = &"game_sfx" @@ -133,14 +132,12 @@ script = ExtResource("3_t3h08") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx摔倒" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"] -process_mode = 1 stream = ExtResource("6_nnqdd") bus = &"game_sfx" script = ExtResource("3_t3h08") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx吹灭蜡烛" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"] -process_mode = 1 stream = ExtResource("7_quq80") bus = &"game_sfx" script = ExtResource("3_t3h08") @@ -168,11 +165,9 @@ position = Vector2(68, 17) target_scene = "c02_s06" target_portal = "1" status = "locked" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(676, 63) -matched_sign_texture = null [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_1ws4i")] position = Vector2(214, 31) @@ -184,7 +179,6 @@ target_portal = "left" status = "opened" default_sign_texture = ExtResource("8_dkqw0") opened_sign_texture = ExtResource("8_dkqw0") -matched_sign_texture = null [node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer/portal_1"] show_behind_parent = true @@ -221,6 +215,12 @@ animation_low_mode = true hide_texture = true gaslight_energy = 2.0 +[node name="SfxInvalid" parent="Ground/DeployLayer/灯座Sprite2D/煤油灯" index="0"] +process_mode = 0 + +[node name="SfxSuccess" parent="Ground/DeployLayer/灯座Sprite2D/煤油灯" index="1"] +process_mode = 0 + [node name="CollisionShape2D" parent="Ground/DeployLayer/灯座Sprite2D/煤油灯/Area2D" index="0"] shape = SubResource("RectangleShape2D_a48k2") @@ -265,7 +265,6 @@ texture_scale = 1.5 position = Vector2(571, 28) trigger_mode = "interact" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "hole_interacted" [node name="Sign" parent="Ground/DeployLayer/Ambush偷听" index="0"] @@ -308,7 +307,6 @@ metadata/_custom_type_script = "uid://wapo47a1oddf" position = Vector2(522, 31) enabled = false trigger_mode = "interact" -lock_player_on_playing_dialogue = null hook_method = "look_back_hole" [node name="Note十字架" parent="Ground/DeployLayer" index="11" instance=ExtResource("14_1ws4i")] diff --git a/scene/ground/scene/c02/s09_裂缝.tscn b/scene/ground/scene/c02/s09_裂缝.tscn index 4fd3312c..c9ec9589 100644 --- a/scene/ground/scene/c02/s09_裂缝.tscn +++ b/scene/ground/scene/c02/s09_裂缝.tscn @@ -325,11 +325,9 @@ texture = ExtResource("13_4alth") position = Vector2(74, 87) target_scene = "c02_s08" target_portal = "right" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(4361, 61) -matched_sign_texture = null [node name="黑影" type="Sprite2D" parent="Ground/DeployLayer" index="2"] visible = false @@ -701,7 +699,6 @@ texture = ExtResource("17_drmtd") [node name="Ambush老鼠" parent="Ground/DeployLayer" index="11" instance=ExtResource("6_6xql4")] position = Vector2(3822.5, 60.5) -lock_player_on_playing_dialogue = null hook_method = "mouse_animation" [node name="老鼠衔大洋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"] @@ -728,7 +725,6 @@ action_configs = Array[Dictionary]([{ [node name="Ambush剪影指天" parent="Ground/DeployLayer/小床人物" instance=ExtResource("6_6xql4")] position = Vector2(93, 81) -lock_player_on_playing_dialogue = null hook_method = "point_to_the_moon" [node name="黑手" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="15"] diff --git a/scene/ground/scene/c02/s10_空房间.tscn b/scene/ground/scene/c02/s10_空房间.tscn index 9a62b0bc..587cd6f2 100644 --- a/scene/ground/scene/c02/s10_空房间.tscn +++ b/scene/ground/scene/c02/s10_空房间.tscn @@ -123,11 +123,9 @@ position = Vector2(97, 28.5923) target_scene = "c02_s03" target_portal = "3" status = "opened" -matched_sign_texture = null [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(510, 20.7047) -matched_sign_texture = null [node name="Note进入隧道询问" parent="Ground/DeployLayer" index="2" instance=ExtResource("7_th1ek")] position = Vector2(362, 20) @@ -242,7 +240,6 @@ texture = ExtResource("15_e24j0") [node name="Ambush首次进入血脚印" parent="Ground/DeployLayer" index="13" instance=ExtResource("14_3ftnp")] position = Vector2(192, 38.4517) cooldown_time = 0.1 -lock_player_on_playing_dialogue = null hook_method = "first_enter_ambush" [node name="PointLight2D" type="PointLight2D" parent="Ground/AmbientLayer" index="0"] diff --git a/scene/ground/scene/c02/s13_盒子猫二楼.tscn b/scene/ground/scene/c02/s13_盒子猫二楼.tscn index a72c4382..5d782d84 100644 --- a/scene/ground/scene/c02/s13_盒子猫二楼.tscn +++ b/scene/ground/scene/c02/s13_盒子猫二楼.tscn @@ -72,7 +72,6 @@ texture = ExtResource("6_gge8e") position = Vector2(214, 11) trigger_mode = "interact" one_shot = false -lock_player_on_playing_dialogue = null hook_method = "knock_light_door" [node name="Ambush猫咪敲门互动" parent="Ground/DeployLayer" index="5" instance=ExtResource("9_yywsi")] @@ -80,7 +79,6 @@ position = Vector2(103, 6) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="Ambush猫咪敲门互动2" parent="Ground/DeployLayer" index="6" instance=ExtResource("9_yywsi")] @@ -88,7 +86,6 @@ position = Vector2(539, 6) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="Ambush猫咪敲门互动3" parent="Ground/DeployLayer" index="7" instance=ExtResource("9_yywsi")] @@ -96,7 +93,6 @@ position = Vector2(663, 5) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="追猫猪头怪_左侧" parent="Ground/DeployLayer" index="8" instance=ExtResource("10_kmk38")] diff --git a/scene/ground/scene/c02/s16_盒子猫三楼内侧.tscn b/scene/ground/scene/c02/s16_盒子猫三楼内侧.tscn index 64ab82a4..67a0fbd5 100644 --- a/scene/ground/scene/c02/s16_盒子猫三楼内侧.tscn +++ b/scene/ground/scene/c02/s16_盒子猫三楼内侧.tscn @@ -49,7 +49,6 @@ position = Vector2(105, 16) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="追猫猪头怪" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_fjtlb")] diff --git a/scene/ground/scene/c02/s17_盒子猫三楼.tscn b/scene/ground/scene/c02/s17_盒子猫三楼.tscn index 322f0c92..e8c06e75 100644 --- a/scene/ground/scene/c02/s17_盒子猫三楼.tscn +++ b/scene/ground/scene/c02/s17_盒子猫三楼.tscn @@ -52,7 +52,6 @@ position = Vector2(106, 6) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="追猫猪头怪" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_pfgbg")] diff --git a/scene/ground/scene/c02/s18_盒子猫一楼.tscn b/scene/ground/scene/c02/s18_盒子猫一楼.tscn index fbc58f33..7b007885 100644 --- a/scene/ground/scene/c02/s18_盒子猫一楼.tscn +++ b/scene/ground/scene/c02/s18_盒子猫一楼.tscn @@ -44,7 +44,6 @@ position = Vector2(661, 6) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="Ambush猫咪敲门互动3" parent="Ground/DeployLayer" index="3" instance=ExtResource("5_emyx1")] @@ -52,7 +51,6 @@ position = Vector2(538, 6) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="Ambush猫咪敲门互动2" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_emyx1")] @@ -60,7 +58,6 @@ position = Vector2(104, 6) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="Ambush猫咪敲门互动4" parent="Ground/DeployLayer" index="5" instance=ExtResource("5_emyx1")] @@ -68,7 +65,6 @@ position = Vector2(219, 6) trigger_mode = "interact" one_shot = false cooldown_time = 1.5 -lock_player_on_playing_dialogue = null global_method = "c02_cat_play_with_door" [node name="追猫猪头怪" parent="Ground/DeployLayer" index="6" instance=ExtResource("6_xoyld")] diff --git a/scene/ground/scene/c03/s01_瞎子理发店.gd b/scene/ground/scene/c03/s01_瞎子理发店.gd new file mode 100644 index 00000000..68319f6f --- /dev/null +++ b/scene/ground/scene/c03/s01_瞎子理发店.gd @@ -0,0 +1,17 @@ +@tool +extends AnimationRoot + + +# 覆盖该方法 +func _default_data() -> Dictionary: + return {} + + +func _ready() -> void: + super._ready() + if Engine.is_editor_hint(): + return + + +func _on_ground_ready() -> void: + pass diff --git a/scene/ground/scene/c03/s01_瞎子理发店.gd.uid b/scene/ground/scene/c03/s01_瞎子理发店.gd.uid new file mode 100644 index 00000000..139ca0a0 --- /dev/null +++ b/scene/ground/scene/c03/s01_瞎子理发店.gd.uid @@ -0,0 +1 @@ +uid://cim5bqm2nayls diff --git a/scene/ground/scene/c03/s01_瞎子理发店.tscn b/scene/ground/scene/c03/s01_瞎子理发店.tscn new file mode 100644 index 00000000..6e6c5f21 --- /dev/null +++ b/scene/ground/scene/c03/s01_瞎子理发店.tscn @@ -0,0 +1,164 @@ +[gd_scene load_steps=10 format=3 uid="uid://dlrbhfvnd3cs0"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_eb2op"] +[ext_resource type="Script" uid="uid://cim5bqm2nayls" path="res://scene/ground/scene/c03/s01_瞎子理发店.gd" id="2_jxanq"] +[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_lb1oo"] +[ext_resource type="Texture2D" uid="uid://6ol2om68cd1q" path="res://asset/art/scene/c02/s06_二楼楼道/bg_背景.png" id="7_tfw8r"] +[ext_resource type="Texture2D" uid="uid://crev0svowqla" path="res://asset/art/scene/c02/s06_二楼楼道/fg_前景.png" id="24_oel41"] + +[sub_resource type="Animation" id="Animation_k01ve"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DirectionalLight2D:energy") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.9] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MainPlayer:hide_sprite") +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("MainPlayer:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_lh55k"] +resource_name = "c02_final_show_end" +length = 14.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MainPlayer:hide_sprite") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 3.8), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MainPlayer:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_ciatp"] +resource_name = "c02_final_show_join" +length = 12.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DirectionalLight2D:energy") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 12.1, 12.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [1.0, 1.0, 0.9] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MainPlayer:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] +_data = { +&"RESET": SubResource("Animation_k01ve"), +&"c02_final_show_end": SubResource("Animation_lh55k"), +&"c02_final_show_join": SubResource("Animation_ciatp") +} + +[node name="S01" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_eb2op")] +scene_name = "c03_s01" +player_y = 60 + +[node name="AnimationPlayer" parent="Ground" index="0"] +libraries = { +&"": SubResource("AnimationLibrary_k01ve") +} +script = ExtResource("2_jxanq") +data = { +"c02_final_show": false, +"oneshot_animation_played": false +} +oneshot_animation = "" + +[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"] +script = ExtResource("3_lb1oo") +autoplay_group = &"c02_楼道2" +metadata/_custom_type_script = "uid://cpejxlfni6n52" + +[node name="BGSprite2D" parent="Ground" index="2"] +light_mask = 5 +position = Vector2(0, -2) +texture = ExtResource("7_tfw8r") + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(34, 8) +target_scene = "c02_s07" +target_portal = "1" + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +position = Vector2(873, 15) + +[node name="MainPlayer" parent="Ground" index="5"] +position = Vector2(63, 95) +catty_light_energy = 0.5 +facing_direction = Vector2(1, 0) + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(0, -5) +scale = Vector2(1.1, 1.1) +texture = ExtResource("24_oel41") + +[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] +points = PackedVector2Array(26, 150, 900, 150) + +[node name="DirectionalLight2D" parent="Ground" index="8"] +visible = false +energy = 0.9 +blend_mode = 1 + +[editable path="Ground"] diff --git a/scene/ground/script/c02/s00_煤油灯.gd b/scene/ground/script/c02/s00_煤油灯.gd index 57bcd800..f85e6a19 100644 --- a/scene/ground/script/c02/s00_煤油灯.gd +++ b/scene/ground/script/c02/s00_煤油灯.gd @@ -43,6 +43,7 @@ signal lighted if Engine.is_editor_hint() and is_node_ready(): _switch_gaslight(debug_light_switch) + @onready var point_light = $PointLight2D as PointLight2D @onready var point_light_ground = $PointLightGround2D as PointLight2D @onready var light_sprite2d = $"灯光" as AnimatedSprite2D diff --git a/scene/ground/script/c02/小手讨东西.gd b/scene/ground/script/c02/小手讨东西.gd index 37ee1973..d646fce1 100644 --- a/scene/ground/script/c02/小手讨东西.gd +++ b/scene/ground/script/c02/小手讨东西.gd @@ -68,6 +68,7 @@ var icount: int: SceneManager.pop_os_with_str("c02_小手出现摔倒") Util.timer(1.5, $"Sfx摔倒".play) await SceneManager.get_player().animation_finished + SceneManager.pop_os_with_str("c02_小手是什么鬼") SceneManager.unlock_player() elif stage == 1: # 第二次交互小手 @@ -213,7 +214,7 @@ func _on_interacted() -> void: await Util.wait(1.5) coin.visible = true if not ArchiveManager.get_global_value(&"c02_little_hand_dropped_tin"): - SceneManager.pop_os_with_str("c02_小手其他交易") + SceneManager.pop_os_with_str("c02_小手还能换什么") ArchiveManager.set_global_entry(&"c02_little_hand_dropped_tin", true) # 是否允许老虎钳换弹珠 diff --git a/scene/little_game/书架/书架.gd b/scene/little_game/书架/书架.gd index 7d1bb6a5..a7fc469c 100644 --- a/scene/little_game/书架/书架.gd +++ b/scene/little_game/书架/书架.gd @@ -35,6 +35,7 @@ var selected_book := NON_SELECTED: if value != NON_SELECTED: _toggle_book(true, value[0], value[1]) selected_book = value +var row_correct_status = [false, false, false] var gameover = false @@ -48,10 +49,12 @@ func _ready() -> void: # shuffle at the end _shuffle_books() + func _enter_tree() -> void: if not Engine.is_editor_hint(): SceneManager.pop_center_notification(tr("input_书架游戏")) + func _init_answer_and_connect_signals() -> void: current_answer.clear() for row in range(3): @@ -83,8 +86,8 @@ func _shuffle_books() -> void: selected_book = NON_SELECTED suffling = true rand_from_seed(Time.get_ticks_usec()) - # 猫 4 次 - var shuffle_times = 4 + # 猫 2 次 + var shuffle_times = 2 var r_size = current_answer[0].size() for _i in range(shuffle_times): var col_1 = randi() % r_size @@ -92,8 +95,8 @@ func _shuffle_books() -> void: selected_book = [0, col_1] _interchange_book(0, col_2, false) _relocate_books(0) - # 其他 1 次 - shuffle_times = 1 + # 其他 2 次 + shuffle_times = 2 r_size = current_answer[1].size() for _i in range(shuffle_times): var col_1 = randi() % r_size @@ -114,7 +117,7 @@ func _shuffle_books() -> void: func _on_book_pressed(row: int, id: int) -> void: - if gameover: + if gameover or row_correct_status[row]: return var col = current_answer[row].find(id) if selected_book == NON_SELECTED: @@ -186,37 +189,53 @@ func _relocate_books(row: int) -> void: func _check_answer() -> void: # 第一行需要顺序排列 - var row1 = current_answer[0] - for col in range(row1.size()): - if row1[col] != col: - return + if not row_correct_status[0]: + var row_success = true + var row1 = current_answer[0] + for col in range(row1.size()): + if row1[col] != col: + row_success = false + break + if row_success: + row_correct_status[0] = true + $SfxRowSuccess.play() + # 第二行需要正序排列 - var row2 = current_answer[1] - var size2 = row2.size() - if row2[0] == 0: + if not row_correct_status[1]: + var row_success = true + var row2 = current_answer[1] # 正序 - for col in range(1, size2): + for col in range(row2.size()): if row2[col] != col: - return - else: - return - # # 倒序 - # for col in range(size2): - # if row2[col] != size2 - 1 - col: - # return + row_success = false + break + if row_success: + row_correct_status[1] = true + $SfxRowSuccess.play() # 第三行正序或者倒序都可以 - var _row3 = current_answer[2] - var _size3 = _row3.size() - if _row3[0] == 0: - # 正序 - for col in range(1, _size3): - if _row3[col] != col: - return - else: - # 倒序 - for col in range(_size3): - if _row3[col] != _size3 - 1 - col: - return + if not row_correct_status[2]: + var row_success = true + var _row3 = current_answer[2] + var _size3 = _row3.size() + if _row3[0] == 0: + # 正序 + for col in range(1, _size3): + if _row3[col] != col: + row_success = false + break + else: + # 倒序 + for col in range(_size3): + if _row3[col] != _size3 - 1 - col: + row_success = false + break + if row_success: + row_correct_status[2] = true + $SfxRowSuccess.play() + # 检查是否成功 + if row_correct_status[0] and row_correct_status[1] and row_correct_status[2]: + _success() + # # 最后一行按色块排列;0-6 蓝色(7个)在一起,7-11 红色(5个)在一起,12-17 黄色(6个)在一起 # var row3 = current_answer[2] # # 0: blue, 1: red, 2: yellow @@ -234,7 +253,6 @@ func _check_answer() -> void: # if visited[color] == 0: # visiting_init = true # success - _success() # 0: blue, 1: red, 2: yellow diff --git a/scene/little_game/书架/书架.tscn b/scene/little_game/书架/书架.tscn index bbbe29c3..a069c1da 100644 --- a/scene/little_game/书架/书架.tscn +++ b/scene/little_game/书架/书架.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=52 format=3 uid="uid://fwfr0b2sylwx"] +[gd_scene load_steps=53 format=3 uid="uid://fwfr0b2sylwx"] [ext_resource type="Script" uid="uid://b7iavnqno6e3s" path="res://scene/little_game/书架/书架.gd" id="1_8af23"] [ext_resource type="AudioStream" uid="uid://6v8oqjaj01nj" path="res://asset/audio/sfx/交互/序章/04_书店内_书本掉落.wav" id="2_c6xiu"] @@ -9,6 +9,7 @@ [ext_resource type="PackedScene" uid="uid://bl5pohc77hi43" path="res://scene/little_game/书架/生死簿.tscn" id="6_mhajy"] [ext_resource type="SpriteFrames" uid="uid://bmwm400w8r4ju" path="res://asset/art/gif/c01_书店/c01_书店_frames.tres" id="6_nyh8c"] [ext_resource type="Texture2D" uid="uid://bbskja06j74v0" path="res://asset/art/little_game/书架_生死簿/书架合并.png" id="6_pxxx5"] +[ext_resource type="AudioStream" uid="uid://bg3imaloeq3ev" path="res://asset/audio/effect/action/bookPlace2.ogg" id="7_e380y"] [ext_resource type="Texture2D" uid="uid://bp3ffg8knb8j5" path="res://asset/art/little_game/书架_生死簿/书架 书合并本.png" id="8_5brf2"] [sub_resource type="AtlasTexture" id="AtlasTexture_6hdac"] @@ -180,33 +181,36 @@ layer = 5 script = ExtResource("1_8af23") [node name="Sfx书本掉落" type="AudioStreamPlayer" parent="."] -process_mode = 1 stream = ExtResource("2_c6xiu") bus = &"game_sfx" script = ExtResource("3_5brf2") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx扶正书本" type="AudioStreamPlayer" parent="."] -process_mode = 1 stream = ExtResource("3_o6bsw") bus = &"game_sfx" script = ExtResource("3_5brf2") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="SfxInterchange" type="AudioStreamPlayer" parent="."] -process_mode = 1 stream = ExtResource("3_c6xiu") bus = &"game_sfx" script = ExtResource("3_5brf2") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="SfxSelect" type="AudioStreamPlayer" parent="."] -process_mode = 1 stream = ExtResource("3_pfav2") bus = &"game_sfx" script = ExtResource("3_5brf2") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="SfxRowSuccess" type="AudioStreamPlayer" parent="."] +stream = ExtResource("7_e380y") +volume_db = -5.0 +bus = &"game_sfx" +script = ExtResource("3_5brf2") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="Shelf" type="Sprite2D" parent="."] position = Vector2(283, 160) texture = SubResource("AtlasTexture_6hdac") diff --git a/scene/little_game/八音盒/八音盒.tscn b/scene/little_game/八音盒/八音盒.tscn index 659c9920..c18b891c 100644 --- a/scene/little_game/八音盒/八音盒.tscn +++ b/scene/little_game/八音盒/八音盒.tscn @@ -296,7 +296,6 @@ position = Vector2(6.4373e-06, -9.53674e-07) polygon = PackedVector2Array(31.5, -37.5, 29.7, -38, 18.4, -38, -19.7, -28.9, -26, -32, -30.7, -32, -32.5, -28.4, -32.5, -23.2, -24.5, -15.2, -24.5, -9.6, -20.5, -8.3, -20.5, 4.5, -17.7, 10, -14.5, 30.3, -14.5, 32, -10.5, 35, -10.5, 37, 3.3, 37, 4.5, 26.1, 6.2, 25, 9.3, 25, 7.5, 19.6, 10.6, 14, 13.1, 14, 10.5, 4, 10.5, 3.2, 21, -2, 23.6, -2, 31.6, -14, 32.5, -14, 32.5, -22.4, 31.5, -28.3) [node name="Drawer" type="Node2D" parent="All"] -visible = false position = Vector2(20.5, 0) [node name="BoxDrawer" type="Sprite2D" parent="All/Drawer"] @@ -324,8 +323,7 @@ texture = ExtResource("31_wq2wm") limit_rect = Rect2(150, 150, 220, 70) [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="All/Drawer/Draggable2"] -position = Vector2(-1.99999, 0.999999) -polygon = PackedVector2Array(46.8, -40.3, 44, -39.5, 44, -38.3, 42, -37.2, 42, -30, 31.2, -30, 30, -32.5, 30, -34.3, 27.5, -35.4, 26.2, -34, 22.8, -34, 20, -36.8, 20, -38.3, 17.5, -39.4, 15.2, -37, 13.8, -37, 12.7, -35, 15.7, -30, 13.5, -30, 12, -35, 12, -37.3, 9.5, -38.4, 5, -33.8, -4, -31.6, -4, -30, -15.9, -30, -17, -31.7, -17, -33.6, -26.8, -36, -28.8, -36, -33.8, -31, -35.6, -31, -43, 4.8, -43, 10.4, -45.4, 9, -46.9, 9, -50.9, 3, -51, -12.3, -50.3, -12, -46.9, -12, -44.9, -15, -42.7, -15, -44, -25, -44, -28.9, -51, -34.9, -51, -37.2, -62.2, -36, -64.9, -36, -72.9, -27, -74.6, -27, -78.5, -11, -80.1, -11, -79, 14.1, -79, 20.6, -73, 30.5, -73, 33, -63, 40.9, -63, 42.4, -58.3, 44, -42.4, 44, -40, 50.4, -40, 53.1, -35, 56.1, -35, 57.8, -25.1, 59, 12.8, 59, 16, 55.8, 16, 48.4, 23.2, 46, 25.2, 48, 33.8, 48, 38.8, 58, 61, 58, 64, 54, 68, 54, 77, 41.7, 77, 28.4, 73.1, 22, 72, 13, 72, 3.2, 69, 0.199997, 69, -20.7, 56, -36.9, 56, -38.5, 53.1, -39.3, 50.4, -35) +polygon = PackedVector2Array(5.5, -37.9, 3, -36.8, 3, -35.8, 1, -34.7, 1, -30.5, 2.2, -29.6, 1.2, -28.1, -4.2, -33.5, -6.8, -33.5, -10, -30.3, -10, -27.5, -12.7, -25.5, -14.2, -25.5, -15, -31.5, -15, -35.5, -24.3, -31.5, -26.3, -31.5, -27.4, -29, -24, -25.7, -24, -23.3, -24.8, -22.5, -26.6, -22.5, -27.5, -18.8, -35, -26.3, -35, -28.5, -43.8, -28.5, -52.8, -19.5, -54.7, -19.5, -56.7, -7.5, -58.1, -7.5, -57, 10.6, -57, 16.1, -53, 22.1, -53, 24.5, -44, 31.4, -44, 33.5, -31.1, 33.5, -27, 40.1, -27, 42.3, -19, 43.2, -19, 44.5, 10.1, 44.5, 15.5, 35.8, 18.8, 36.5, 22.9, 36.5, 26.8, 43.5, 42.8, 43.5, 45.8, 40.5, 49.1, 40.5, 55.1, 31.5, 57.4, 31.5, 48, -20.9, 48, -22.3, 38, -32.3, 38, -34.5, 28.4, -34.5, 27, -28.7, 27, -25.6, 25.4, -24.6, 23, -26.5, 23, -27.8, 20.5, -28.9, 17.4, -25.9) [node name="Draggable3" parent="All/Drawer" instance=ExtResource("16_h88gi")] position = Vector2(368.5, 175) diff --git a/scene/little_game/弹珠游戏/弹珠游戏.tscn b/scene/little_game/弹珠游戏/弹珠游戏.tscn index 6cd834ff..ea04da38 100644 --- a/scene/little_game/弹珠游戏/弹珠游戏.tscn +++ b/scene/little_game/弹珠游戏/弹珠游戏.tscn @@ -258,7 +258,6 @@ script = ExtResource("1_p2trd") [node name="Sfx结尾小孩跑" type="AudioStreamPlayer" parent="."] unique_name_in_owner = true -process_mode = 1 stream = ExtResource("2_aqxy0") bus = &"game_sfx" script = ExtResource("4_co06r") @@ -307,21 +306,18 @@ libraries = { } [node name="SfxHit" type="AudioStreamPlayer" parent="."] -process_mode = 1 stream = ExtResource("3_co06r") bus = &"game_sfx" script = ExtResource("4_co06r") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="SfxShoot" type="AudioStreamPlayer" parent="."] -process_mode = 1 stream = SubResource("AudioStreamInteractive_aqxy0") bus = &"game_sfx" script = ExtResource("4_co06r") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="SfxDispatch" type="AudioStreamPlayer" parent="."] -process_mode = 1 stream = ExtResource("6_ctokx") bus = &"game_sfx" script = ExtResource("4_co06r") diff --git a/scene/main.gd b/scene/main.gd index f4ff9b16..778c26e5 100644 --- a/scene/main.gd +++ b/scene/main.gd @@ -5,6 +5,8 @@ extends Node2D # TranslationServer.set_locale(val) # locale = val +@onready var vignette = %Vignette as ColorRect + func _ready() -> void: %UILayer.layer = GlobalConfig.CANVAS_LAYER_UI @@ -31,3 +33,18 @@ func _unhandled_input(event: InputEvent) -> void: elif event.is_action_pressed("panel"): get_viewport().set_input_as_handled() SceneManager.show_panel() + + +var vignette_tween: Tween + + +func tween_vignette(ratio := 0.5, duration := 0.3, color := Color.RED): + if vignette_tween and vignette_tween.is_valid(): + vignette_tween.kill() + vignette_tween = create_tween() + vignette_tween.tween_property( + vignette.material, "shader_parameter/vignette_ratio", ratio, duration + ) + vignette_tween.parallel().tween_property( + vignette.material, "shader_parameter/vignette_rgb", color, duration + ) diff --git a/scene/main.tscn b/scene/main.tscn index 2b6d5227..15234956 100644 --- a/scene/main.tscn +++ b/scene/main.tscn @@ -1,12 +1,19 @@ -[gd_scene load_steps=7 format=3 uid="uid://dygvcmykn02n8"] +[gd_scene load_steps=9 format=3 uid="uid://dygvcmykn02n8"] [ext_resource type="Script" uid="uid://jn2alpdl4eal" path="res://scene/main.gd" id="1_pks84"] [ext_resource type="PackedScene" uid="uid://dc778gsjfr3ky" path="res://scene/ux/prop_hud.tscn" id="4_t7gb2"] [ext_resource type="PackedScene" uid="uid://5g07x6q7wwr1" path="res://scene/notification/notification.tscn" id="5_3gg5t"] [ext_resource type="PackedScene" uid="uid://cekhj65axie0p" path="res://scene/ux/prop_inspector.tscn" id="5_ux0rw"] +[ext_resource type="Shader" uid="uid://do181iuabeoom" path="res://asset/shader/vignette.gdshader" id="7_p1hux"] [ext_resource type="Environment" uid="uid://c6ri8tn5qt6fe" path="res://scene/ground/environment.tres" id="9_jsof5"] [ext_resource type="PackedScene" uid="uid://clxgkj80yin2" path="res://scene/ground/ground_loader.tscn" id="10_8rc5n"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_of57s"] +shader = ExtResource("7_p1hux") +shader_parameter/vignette_ratio = 0.0 +shader_parameter/vignette_intensity = 0.3 +shader_parameter/vignette_rgb = Color(0.753, 0, 0, 1) + [node name="Main" type="Node2D"] script = ExtResource("1_pks84") @@ -24,6 +31,19 @@ unique_name_in_owner = true unique_name_in_owner = true layer = 12 +[node name="Vignette" type="ColorRect" parent="UILayer"] +unique_name_in_owner = true +material = SubResource("ShaderMaterial_of57s") +custom_minimum_size = Vector2(564, 240) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 38.0 +offset_bottom = -38.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + [node name="ColorRectTop" type="ColorRect" parent="UILayer"] unique_name_in_owner = true custom_minimum_size = Vector2(564, 38.5) diff --git a/scene/ux/memory/clips/clip2.gd b/scene/ux/memory/clips/clip2.gd index 58571784..d1710b56 100644 --- a/scene/ux/memory/clips/clip2.gd +++ b/scene/ux/memory/clips/clip2.gd @@ -13,7 +13,7 @@ func run_clip(card_mode: bool): if not card_mode: await Util.wait(3.0) # 增加配音 - dialog_node = DialogueManager.show_dialogue_balloon(dialogue_res, "c02_s11_井边疯子对话") + dialog_node = DialogueManager.show_dialogue_balloon(dialogue_res, "c02_井边疯子对话") dialog_node.process_mode = Node.PROCESS_MODE_ALWAYS await DialogueManager.dialogue_ended display_finished.emit()