demo 优化 v0.1.1

This commit is contained in:
cakipaul 2025-06-26 01:53:16 +08:00
parent 5af20d5bfe
commit 934b6ca360
93 changed files with 1202 additions and 491 deletions

View File

@ -1,6 +1,8 @@
[gd_resource type="SpriteFrames" load_steps=26 format=3 uid="uid://blij4obvhb1vf"] [gd_resource type="SpriteFrames" load_steps=28 format=3 uid="uid://blij4obvhb1vf"]
[ext_resource type="Texture2D" uid="uid://8otjg8gn0m6p" path="res://asset/art/gif/c02_公寓过道/眨眼睛/0.png" id="1_dcr3n"] [ext_resource type="Texture2D" uid="uid://8otjg8gn0m6p" path="res://asset/art/gif/c02_公寓过道/眨眼睛/0.png" id="1_dcr3n"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_公寓过道/头套小蝉呼吸/0.png" id="1_wvj6u"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_公寓过道/头套小蝉呼吸/1.png" id="2_lqlhi"]
[ext_resource type="Texture2D" uid="uid://h67dk77cktlg" path="res://asset/art/gif/c02_公寓过道/眨眼睛/1.png" id="2_thlvb"] [ext_resource type="Texture2D" uid="uid://h67dk77cktlg" path="res://asset/art/gif/c02_公寓过道/眨眼睛/1.png" id="2_thlvb"]
[ext_resource type="Texture2D" uid="uid://6po3pxrwx1vd" path="res://asset/art/gif/c02_公寓过道/眨眼睛/2.png" id="3_wvj6u"] [ext_resource type="Texture2D" uid="uid://6po3pxrwx1vd" path="res://asset/art/gif/c02_公寓过道/眨眼睛/2.png" id="3_wvj6u"]
[ext_resource type="Texture2D" uid="uid://d3856wm1qo7kv" path="res://asset/art/gif/c02_公寓过道/眨眼睛/3.png" id="4_lqlhi"] [ext_resource type="Texture2D" uid="uid://d3856wm1qo7kv" path="res://asset/art/gif/c02_公寓过道/眨眼睛/3.png" id="4_lqlhi"]
@ -29,6 +31,17 @@
[resource] [resource]
animations = [{ animations = [{
"frames": [{ "frames": [{
"duration": 1.0,
"texture": ExtResource("1_wvj6u")
}, {
"duration": 1.0,
"texture": ExtResource("2_lqlhi")
}],
"loop": true,
"name": &"头套小蝉呼吸",
"speed": 1.5
}, {
"frames": [{
"duration": 6.0, "duration": 6.0,
"texture": ExtResource("1_dcr3n") "texture": ExtResource("1_dcr3n")
}, { }, {

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://dgysufpkl5pdp"
path="res://.godot/imported/头套小蝉呼吸.gif-ada0c526340ead17a8bfd36de468f05f.tres"
[deps]
source_file="res://asset/art/gif/c02_公寓过道/头套小蝉呼吸.gif"
dest_files=["res://.godot/imported/头套小蝉呼吸.gif-ada0c526340ead17a8bfd36de468f05f.tres"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxo0l3d3blmc5"
path="res://.godot/imported/0.png-9c663fa7b539a22de5cbe437f0c29f08.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c02_公寓过道/头套小蝉呼吸/0.png"
dest_files=["res://.godot/imported/0.png-9c663fa7b539a22de5cbe437f0c29f08.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkus208xyxsu2"
path="res://.godot/imported/1.png-925ae896e4be31cc91bdcb9d5f5b882e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c02_公寓过道/头套小蝉呼吸/1.png"
dest_files=["res://.godot/imported/1.png-925ae896e4be31cc91bdcb9d5f5b882e.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

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://c1uu7y472nve7" uid="uid://c1uu7y472nve7"
path="res://.godot/imported/小鞋子.png-71a48c9981772cf5b76631ba47f96a90.ctex" path="res://.godot/imported/小鞋子1.png-07f38ab5e9aa0dcb595079e127f9ec83.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://asset/art/prop/c02/小鞋子.png" source_file="res://asset/art/prop/c02/小鞋子1.png"
dest_files=["res://.godot/imported/小鞋子.png-71a48c9981772cf5b76631ba47f96a90.ctex"] dest_files=["res://.godot/imported/小鞋子1.png-07f38ab5e9aa0dcb595079e127f9ec83.ctex"]
[params] [params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://qg746w5sm43y"
path="res://.godot/imported/小鞋子2.png-378267ab790014bba61d65cdcbda8e35.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/prop/c02/小鞋子2.png"
dest_files=["res://.godot/imported/小鞋子2.png-378267ab790014bba61d65cdcbda8e35.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8b80a75k3qw6"
path="res://.godot/imported/e_院子地上纸钱.png-3ac4dc930cd6b835c9f032ef5f1440ec.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c02/s03_公寓一楼院子/e_院子地上纸钱.png"
dest_files=["res://.godot/imported/e_院子地上纸钱.png-3ac4dc930cd6b835c9f032ef5f1440ec.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dfosrexfvxsn0"
path="res://.godot/imported/老鼠洞通用.png-5c4bd59aa07625b2ea6a405d785874be.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c02/杂物/老鼠洞通用.png"
dest_files=["res://.godot/imported/老鼠洞通用.png-5c4bd59aa07625b2ea6a405d785874be.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

View File

@ -1,4 +1,8 @@
keys,zh_CN,_character,_notes,_tags,zh_SH,en keys,zh_CN,_character,_notes,_tags,zh_SH,en
c01_6卖艺小孩A_1,您、您行行好,给点...,小丁,,,,
c01_6卖艺小孩B_1,祝恁身子骨儿杠赛来,吃嘛嘛香木个病,一年更比一年行!,蛋蛋,,,,
c01_6卖艺小孩C_1,宾安哗在,有才有财!,沫儿,,,,
c01_6幼年陆仁_1,这帮孩子们太苦了,前些天又摔坏了一个,您行行好...,陆仁,,,,
c01_1小小蝶_开头阅读2,...后面看不清了。,,,,, c01_1小小蝶_开头阅读2,...后面看不清了。,,,,,
c01_2老师1,昨天认的字,现在全忘了?,老师,,,昨日刚刚教过你们,全忘记特了?,Have you forgotten all the characters you learned yesterday? c01_2老师1,昨天认的字,现在全忘了?,老师,,,昨日刚刚教过你们,全忘记特了?,Have you forgotten all the characters you learned yesterday?
c01_2老师2,(唉呀)黄鱼脑子!,老师,,,(哪能?)都黄鱼脑子啊?,"(Aw, c'mon!) You're acting silly!" c01_2老师2,(唉呀)黄鱼脑子!,老师,,,(哪能?)都黄鱼脑子啊?,"(Aw, c'mon!) You're acting silly!"
@ -28,10 +32,6 @@ c01_5胖小孩倒数_1,一!,小胖孩,,[#wait=2],,
c01_6监督小孩_1,瞧一瞧,看一看,动动各位的发财手,老爷夫人别急走,什么把戏咱都有...,监督小孩,,,, c01_6监督小孩_1,瞧一瞧,看一看,动动各位的发财手,老爷夫人别急走,什么把戏咱都有...,监督小孩,,,,
c01_6监督小孩_2,不要千、不要万,只求一顿温饱饭,又集福、又集善,亲戚儿孙中状元!,监督小孩,,,, c01_6监督小孩_2,不要千、不要万,只求一顿温饱饭,又集福、又集善,亲戚儿孙中状元!,监督小孩,,,,
c01_6监督小孩_3,儿孙坐在那金銮殿,荣华富贵顶上天!,监督小孩,,,, c01_6监督小孩_3,儿孙坐在那金銮殿,荣华富贵顶上天!,监督小孩,,,,
c01_6卖艺小孩A_1,您、您行行好,给点...,小丁,,,,
c01_6卖艺小孩B_1,祝恁身子骨儿杠赛来,吃嘛嘛香木个病,一年更比一年行!,蛋蛋,,,,
c01_6卖艺小孩C_1,宾安哗在,有才有财!,沫儿,,,,
c01_6幼年陆仁_1,这帮孩子们太苦了,前些天又摔坏了一个,您行行好...,陆仁,,,,
c01_7老板_1,报纸放这边。,书店老板,,,, c01_7老板_1,报纸放这边。,书店老板,,,,
c01_7老板_2,哦,对了,还有封寄给你的信。,书店老板,,,, c01_7老板_2,哦,对了,还有封寄给你的信。,书店老板,,,,
c01_7老板_3,蛮奇怪的,这么久也没见你有亲戚过来。,书店老板,,,, c01_7老板_3,蛮奇怪的,这么久也没见你有亲戚过来。,书店老板,,,,

1 keys zh_CN _character _notes _tags zh_SH en
2 c01_6卖艺小孩A_1 您、您行行好,给点... 小丁
3 c01_6卖艺小孩B_1 祝恁身子骨儿杠赛来,吃嘛嘛香木个病,一年更比一年行! 蛋蛋
4 c01_6卖艺小孩C_1 宾安哗在,有才有财! 沫儿
5 c01_6幼年陆仁_1 这帮孩子们太苦了,前些天又摔坏了一个,您行行好... 陆仁
6 c01_1小小蝶_开头阅读2 ...后面看不清了。 ???
7 c01_2老师1 昨天认的字,现在全忘了? 老师 昨日刚刚教过你们,全忘记特了? Have you forgotten all the characters you learned yesterday?
8 c01_2老师2 (唉呀)黄鱼脑子! 老师 (哪能?)都黄鱼脑子啊? (Aw, c'mon!) You're acting silly!
32 c01_6监督小孩_1 瞧一瞧,看一看,动动各位的发财手,老爷夫人别急走,什么把戏咱都有... 监督小孩
33 c01_6监督小孩_2 不要千、不要万,只求一顿温饱饭,又集福、又集善,亲戚儿孙中状元! 监督小孩
34 c01_6监督小孩_3 儿孙坐在那金銮殿,荣华富贵顶上天! 监督小孩
c01_6卖艺小孩A_1 您、您行行好,给点... 小丁
c01_6卖艺小孩B_1 祝恁身子骨儿杠赛来,吃嘛嘛香木个病,一年更比一年行! 蛋蛋
c01_6卖艺小孩C_1 宾安哗在,有才有财! 沫儿
c01_6幼年陆仁_1 这帮孩子们太苦了,前些天又摔坏了一个,您行行好... 陆仁
35 c01_7老板_1 报纸放这边。 书店老板
36 c01_7老板_2 哦,对了,还有封寄给你的信。 书店老板
37 c01_7老板_3 蛮奇怪的,这么久也没见你有亲戚过来。 书店老板

View File

@ -69,7 +69,7 @@ c02_10小蝉_1,嗯。,方小蝉,,[#ban_skip]
c02_10小蝶_2,我能感觉到,从我一进来,你就在盯着我。,吕萍,,[#ban_skip] c02_10小蝶_2,我能感觉到,从我一进来,你就在盯着我。,吕萍,,[#ban_skip]
c02_10小蝉_2,...你不记得我了。,方小蝉,,[#ban_skip] c02_10小蝉_2,...你不记得我了。,方小蝉,,[#ban_skip]
c02_10小蝶_3,...我更好奇另一件事。,吕萍,,[#ban_skip] c02_10小蝶_3,...我更好奇另一件事。,吕萍,,[#ban_skip]
c02_10小蝶_4,你...是怎么死的?,吕萍,, c02_10小蝶_4,你...是怎么死的?,吕萍,,[#ban_skip]
c02_10瞎子_1,小蝉,该回家了。,方启钊,, c02_10瞎子_1,小蝉,该回家了。,方启钊,,
c02_10瞎子_2,你胖叔叔带了鲜肉过来,要给咱们露一手呢。,方启钊,, c02_10瞎子_2,你胖叔叔带了鲜肉过来,要给咱们露一手呢。,方启钊,,
c02_10瞎子_3,还不快点过来谢谢人家?,方启钊,, c02_10瞎子_3,还不快点过来谢谢人家?,方启钊,,

1 keys zh_CN _character _notes _tags
69 c02_10小蝶_2 我能感觉到,从我一进来,你就在盯着我。 吕萍 [#ban_skip]
70 c02_10小蝉_2 ...你不记得我了。 方小蝉 [#ban_skip]
71 c02_10小蝶_3 ...我更好奇另一件事。 吕萍 [#ban_skip]
72 c02_10小蝶_4 你...是怎么死的? 吕萍 [#ban_skip]
73 c02_10瞎子_1 小蝉,该回家了。 方启钊
74 c02_10瞎子_2 你胖叔叔带了鲜肉过来,要给咱们露一手呢。 方启钊
75 c02_10瞎子_3 还不快点过来谢谢人家? 方启钊

View File

@ -10,15 +10,15 @@ keys,zh_CN,_character,_notes,_tags
c01_飘落的寻人启事1,寻人(看不清)年八岁。,,, c01_飘落的寻人启事1,寻人(看不清)年八岁。,,,
c01_飘落的寻人启事2,由(看不清)步行外出,至今未回,遍找无踪。,,, c01_飘落的寻人启事2,由(看不清)步行外出,至今未回,遍找无踪。,,,
c01_飘落的寻人启事3,如有知其下落者(看不清)备有重谢,绝不失言。,,, c01_飘落的寻人启事3,如有知其下落者(看不清)备有重谢,绝不失言。,,,
c02_寻人启事_残破,寻人启事...画像和字迹都看不清。,,, c02_寻人启事_残破,画像和字迹都看不清了,,,
c02_寻人启事_完整1,寻人,方小蝉,年八岁。,,, c02_寻人启事_完整1,寻人,方小蝉,年八岁。,,,
c02_寻人启事_完整2,于十月二十五日下午五时由芦昌路26弄3号步行外出至今未回遍找无踪。,,, c02_寻人启事_完整2,于十月二十五日下午五时由芦昌路26弄3号步行外出至今未回遍找无踪。,,,
c02_寻人启事_完整3,如有知其下落者请赐信,备有重谢,绝不失言。,,, c02_寻人启事_完整3,如有知其下落者请赐信,备有重谢,绝不失言。,,,
c02_海报1,战胜北方鼠疫之二杰,,,
c02_青岛啤酒详情,系最好最廉之酒,并且每星期有新货到埠,,, c02_青岛啤酒详情,系最好最廉之酒,并且每星期有新货到埠,,,
tdb119a3714,据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。,,, tdb119a3714,据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。,,,
ta750647b12,《申报》,,, ta750647b12,《申报》,,,
t736cca4563,民国五年一月十三日,,, t736cca4563,民国五年一月十三日,,,
c02_海报1,战胜北方鼠疫之二杰,,,
c02_保卫科花名册1,一零一四 空,,, c02_保卫科花名册1,一零一四 空,,,
c02_保卫科花名册2,一零一五王守义 李兰,,, c02_保卫科花名册2,一零一五王守义 李兰,,,
c02_保卫科花名册3,二零一二 张文开,,, c02_保卫科花名册3,二零一二 张文开,,,

1 keys zh_CN _character _notes _tags
10 c01_飘落的寻人启事1 寻人(看不清)年八岁。
11 c01_飘落的寻人启事2 由(看不清)步行外出,至今未回,遍找无踪。
12 c01_飘落的寻人启事3 如有知其下落者(看不清)备有重谢,绝不失言。
13 c02_寻人启事_残破 寻人启事...画像和字迹都看不清。 画像和字迹都看不清了
14 c02_寻人启事_完整1 寻人,方小蝉,年八岁。
15 c02_寻人启事_完整2 于十月二十五日下午五时,由芦昌路26弄3号步行外出,至今未回,遍找无踪。
16 c02_寻人启事_完整3 如有知其下落者请赐信,备有重谢,绝不失言。
17 c02_海报1 战胜北方鼠疫之二杰
18 c02_青岛啤酒详情 系最好最廉之酒,并且每星期有新货到埠
19 tdb119a3714 据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。
20 ta750647b12 《申报》
21 t736cca4563 民国五年一月十三日
c02_海报1 战胜北方鼠疫之二杰
22 c02_保卫科花名册1 一零一四 空
23 c02_保卫科花名册2 一零一五王守义 李兰
24 c02_保卫科花名册3 二零一二 张文开

View File

@ -6,7 +6,7 @@
=> END => END
~ c02_寻人启事_残破 ~ c02_寻人启事_残破
寻人启事...画像和字迹都看不清。 [ID:c02_寻人启事_残破] 画像和字迹都看不清了 [ID:c02_寻人启事_残破]
=> END => END
~ c02_寻人启事_完整 ~ c02_寻人启事_完整

View File

@ -9,6 +9,7 @@ prop_新鲜的肉,新鲜的肉,,,[#texture=c02/新鲜的肉.png],,
c02_小蝉寻人启事_脸部破碎,寻人启事...画像和字迹都看不清。,,,,, c02_小蝉寻人启事_脸部破碎,寻人启事...画像和字迹都看不清。,,,,,
小猫玩具发光,嗯?玩具在发光,,,,, 小猫玩具发光,嗯?玩具在发光,,,,,
setting_画册,画册G,,,,, setting_画册,画册G,,,,,
notes_干掉的血迹,干掉的血迹,,,,,
index_新游戏,新游戏,,,,,New Game index_新游戏,新游戏,,,,,New Game
index_继续游戏,继续游戏,,,,,Resume index_继续游戏,继续游戏,,,,,Resume
index_退出游戏,退出游戏,,,,,Exit index_退出游戏,退出游戏,,,,,Exit
@ -29,7 +30,8 @@ bag_tab_记忆,记忆,,,,,
ui_saved_all,已保存所有数据,,,,,All the data have been saved ui_saved_all,已保存所有数据,,,,,All the data have been saved
ui_new_archive,已创建新存档,,,,,A new archive has been created ui_new_archive,已创建新存档,,,,,A new archive has been created
ui_auto_saved,自动保存成功,,,,,Auto save successful ui_auto_saved,自动保存成功,,,,,Auto save successful
ui_press_e,按 E 与场景互动,,,,,Press E to interact ui_intro_press_e,按 E 可与场景互动,,,,,
ui_press_e,按 E 可互动,,,,,Press E to interact
ui_press_q_to_exit,按 Q 可退出,,,,, ui_press_q_to_exit,按 Q 可退出,,,,,
ui_use_prop,按 E 使用道具,,,,,Press E to use prop ui_use_prop,按 E 使用道具,,,,,Press E to use prop
ui_right_click_prop,右键点击可检阅道具,,,,, ui_right_click_prop,右键点击可检阅道具,,,,,
@ -62,20 +64,34 @@ prop_银元_说明,一枚“袁大头”银元,中華民國十年造。,,,,,
prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],, prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,
prop_院长的信_说明,浦育院院长秦阳<br>民国21年11月20日<br>致吕萍:<br>你现下境况如何?<br>你虽离开浦育院已久,但我始终没有忘记为你祈祷。<br>愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。<br>你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。<br>若有闲暇,欢迎你回浦育院看看。<br>院长童玉君<br>民国十九年十月十五日<br>公寓地址 芦昌路26弄3号,,,,, prop_院长的信_说明,浦育院院长秦阳<br>民国21年11月20日<br>致吕萍:<br>你现下境况如何?<br>你虽离开浦育院已久,但我始终没有忘记为你祈祷。<br>愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。<br>你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。<br>若有闲暇,欢迎你回浦育院看看。<br>院长童玉君<br>民国十九年十月十五日<br>公寓地址 芦昌路26弄3号,,,,,
prop_火柴,火柴,,,[#texture=c02/火柴.png],, prop_火柴,火柴,,,[#texture=c02/火柴.png],,
prop_火柴_说明,火柴_说明,,,[#texture=c02/火柴.png],,
prop_小猫玩具的脑袋,小猫玩具的脑袋,,,[#texture=c02/新小猫头.png],, prop_小猫玩具的脑袋,小猫玩具的脑袋,,,[#texture=c02/新小猫头.png],,
prop_小猫玩具的脑袋_说明,,,,,,
prop_无头小猫玩具,无头小猫玩具,,,[#texture=c02/新小猫身体.png][#inspect=c02/新小猫身体_特写.png],, prop_无头小猫玩具,无头小猫玩具,,,[#texture=c02/新小猫身体.png][#inspect=c02/新小猫身体_特写.png],,
prop_无头小猫玩具_说明,没有脑袋的小猫玩偶,针脚歪歪扭扭,不甚熟练,,,,,
prop_小猫玩具完整,小猫玩具,,,[#texture=c02/新小猫全身.png],, prop_小猫玩具完整,小猫玩具,,,[#texture=c02/新小猫全身.png],,
prop_小猫玩具完整_说明,这玩具看久了还蛮可爱的,,,,,
prop_撕下的照片上,撕下的照片(上),,,[#texture=c02/照片_上.png],, prop_撕下的照片上,撕下的照片(上),,,[#texture=c02/照片_上.png],,
prop_撕下的照片上_说明,女儿生辰纪念 于 民国元年,,,,,
prop_老虎钳,老虎钳,,,[#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png],, prop_老虎钳,老虎钳,,,[#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png],,
prop_老虎钳_说明,...,,,,, prop_老虎钳_说明,「虎头牌」钳子,家家户户常备,,,,,
prop_锡箔元宝,锡箔元宝,,,[#texture=c02/锡箔元宝.png],, prop_锡箔元宝,锡箔元宝,,,[#texture=c02/锡箔元宝.png],,
prop_小鞋子1,小鞋子1,,,[#texture=c02/小鞋子.png],, prop_锡箔元宝_说明,人们一般将其叠成元宝形状,用以供奉逝者、祭拜鬼神。,,,,,
prop_小鞋子2,小鞋子2,,,[#texture=c02/小鞋子.png],, prop_小鞋子1,小鞋子(一),,,[#texture=c02/小鞋子1.png],,
prop_小鞋子1_说明,尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓,,,,,
prop_小鞋子2,小鞋子(二),,,[#texture=c02/小鞋子2.png],,
prop_小鞋子2_说明,尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓,,,,,
prop_麻将,麻将,,,[#texture=c02/麻将.png],, prop_麻将,麻将,,,[#texture=c02/麻将.png],,
prop_麻将_说明,这块麻将上雕着一朵圆形的花,,,,,
prop_奇怪的肉,奇怪的肉,,,[#texture=c02/奇怪的肉.png],, prop_奇怪的肉,奇怪的肉,,,[#texture=c02/奇怪的肉.png],,
prop_奇怪的肉_说明,,,,,,
prop_弹珠,弹珠,,,[#texture=c02/弹珠.png],, prop_弹珠,弹珠,,,[#texture=c02/弹珠.png],,
prop_弹珠_说明,一种玻璃小球,孩子们常用它来进行弹子游戏,,,,,
prop_木头人偶,木头人偶,,,[#texture=c02/小蝉人偶.png],, prop_木头人偶,木头人偶,,,[#texture=c02/小蝉人偶.png],,
prop_木头人偶_说明,略显粗糙的木头玩偶,能依稀辨认出是个小女孩的模样,,,,,
prop_小蝉人偶_说明,小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花,,,,,
prop_粘鼠板,粘鼠板,,,[#texture=c02/粘鼠板特写.png],, prop_粘鼠板,粘鼠板,,,[#texture=c02/粘鼠板特写.png],,
prop_粘鼠板_说明,自制的捕鼠工具,纸上面有黏黏的浆糊,,,,,
prop_一把香,一把香,,,[#texture=c02/一把香.png],, prop_一把香,一把香,,,[#texture=c02/一把香.png],,
prop_2014钥匙,2014钥匙,,,[#texture=c02/1012钥匙物品.png],, prop_2014钥匙,2014钥匙,,,[#texture=c02/1012钥匙物品.png],,
prop_重要物品示例,重要物品示例,,,[#texture=c01/银元.png],, prop_重要物品示例,重要物品示例,,,[#texture=c01/银元.png],,
@ -93,7 +109,6 @@ notes_纸条,纸条,,,,,
notes_锁住了,锁住了,,,,, notes_锁住了,锁住了,,,,,
notes_打不开,打不开,,,,, notes_打不开,打不开,,,,,
notes_无法通过,无法通过,,,,, notes_无法通过,无法通过,,,,,
notes_干掉的血迹,干掉的血迹,,,,,
notes_有什么东西,有什么东西,,,,, notes_有什么东西,有什么东西,,,,,
notes_无法触碰,无法触碰,,,,, notes_无法触碰,无法触碰,,,,,
notes_挂画,挂画,,,,, notes_挂画,挂画,,,,,
@ -116,26 +131,48 @@ c01_s08_书架游戏完成,这些书都被老鼠啃坏了,连木头架子都
c01_s08_获得袁大头后,工钱还在老地方。,,,,, c01_s08_获得袁大头后,工钱还在老地方。,,,,,
c02_海报_剪辫子侦探,剪辮懸樑上偵探奇聞,,,,, c02_海报_剪辫子侦探,剪辮懸樑上偵探奇聞,,,,,
c02_海报_戏法班,朱连魁全班戏法——「各有幻女...演技新奇」,,,,, c02_海报_戏法班,朱连魁全班戏法——「各有幻女...演技新奇」,,,,,
c02_芦昌路26,芦昌路26弄3号就是这里了。,,,,, c02_芦昌路26,芦昌路26弄3号我父母真的住在这里吗...,,,,,
c02_s01_下黄包车,院长在信里提到的就是这里,,,,,
c02_s01_寻人启事,寻人启事...,,,,,
c02_冷飕飕的,冷飕飕的...,,,,, c02_冷飕飕的,冷飕飕的...,,,,,
c02_太暗了,太暗了,找找能照明的东西吧。,,,,, c02_太暗了,太暗了,找找能照明的东西吧。,,,,,
c02_陈旧的煤油灯,上了年头的煤油灯,似乎很久没用过了。,,,,, c02_陈旧的煤油灯,上了年头的煤油灯,似乎很久没用过了。,,,,,
c02_使用煤油灯,呼,那股阴冷的感觉也消失了。,,,,, c02_使用煤油灯,呼,那股阴冷的感觉也消失了。,,,,,
c02_卫生宣传画,几张卫生宣传画,,,,, c02_卫生宣传画,几张卫生宣传画,,,,,
c02_老鼠洞,一个老鼠洞<br>在这种楼里挺常见的,,,,, c02_老鼠洞,墙角的老鼠洞...还是不要凑近看了,,,,,
c02_十几年前的报纸,十几年前的报纸,,,,, c02_十几年前的报纸,十几年前的报纸,,,,,
c02_s02_大头娃娃头套,看着唬人,这尺寸只是给孩子们戴着玩的,,,,,
c02_s02_八音盒,自制的八音盒,这么用心的小玩意,怎么会被人扔在这里呢?,,,,,
c02_s02_八音盒缺人偶,别出心裁的小机关,缺了点东西,暂时还不能用,,,,,
c02_s03_干掉的血迹,血迹看上去干了很久,血脚印有大有小,咦,还有个特别小的...,,,,,
c02_院子_算命摊位,算命的摊位?,,,,, c02_院子_算命摊位,算命的摊位?,,,,,
c02_院子_要下雨,好像要下雨了?,,,,, c02_院子_要下雨,好像要下雨了?,,,,,
c02_s03_掉鞋子,怎么天上掉了个小鞋子下来?,,,,,
c02_s03_铁门,通往后院的铁门,锁住了,,,,,
c02_保卫科花名册os,芦昌公寓居民登记簿,黄国栋记。,,,,, c02_保卫科花名册os,芦昌公寓居民登记簿,黄国栋记。,,,,,
c02_保卫科祭台os,祭台是专门供奉这只大老鼠的?,,,,,
c02_小手出现摔倒,,,,,,
c02_小手其他交易,...还有什么东西能跟它交换呢?,,,,,
c02_保卫科老鼠精,鼠歌 <br><br>天地小如喉,<br>红轮自吞吐。<br>多少世间人,<br>都被红轮误。,,,,,
c02_一楼楼道被挡住,被挡住了,,,,, c02_一楼楼道被挡住,被挡住了,,,,,
c02_描述垃圾通道,飘着一股血气,又酸又腥。,,,,, c02_一楼戏台,盖着布的木头架子...用来做什么的呢,,,,,
c02_描述垃圾通道,桶是空的,飘着一股血气,又酸又腥。,,,,,
c02_一楼疯子互动后,这人有点不正常...最好离他远点。,,,,,
c02_一楼粘鼠板,这里原来放着什么?,,,,,
c02_获得小猫玩具,小猫玩具亮起来了,这光...竟有一丝暖意,,,,,
c02_敲门_肉掉落,楼道有东西掉下来了?,,,,, c02_敲门_肉掉落,楼道有东西掉下来了?,,,,,
c02_敲门_老鼠叼肉,刚刚这里有块肉不见了?,,,,, c02_敲门_老鼠叼肉,刚刚这里有块肉不见了?,,,,,
c02_锡箔换小鞋子,另一只小鞋子。,,,,,
c02_二楼楼梯杂物堆,堆满了杂物,看样子没办法从这里上去了。,,,,,
c02_二楼水盆,盆里的水很清澈,看上去像是刚盛的。,,,,,
c02_二楼老鼠洞,到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。,,,,,
c02_二楼血脚印,又是这种小小尖尖的血脚印...,,,,,
c02_离开红色演出,刚才的那两个人...是幻觉吗,,,,,
c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着...,,,,, c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着...,,,,,
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,, c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,, c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,,
c02_火灾等待准备,还没准备好点火呢,,,,, c02_火灾等待准备,还没准备好点火呢,,,,,
c02_霸凌救小蝉开始,啊!我得赶紧想办法救小蝉...,,,,, c02_霸凌救小蝉开始,啊!我得想办法帮帮那个小女孩...,,,,,
c02_点火前阻止右移,没时间浪费了!想想办法救出小蝉...,,,,, c02_点火前阻止右移,没时间浪费了!想想办法救出小蝉...,,,,,
g_偷听对话,偷听对话,,,,, g_偷听对话,偷听对话,,,,,
g_疯子看井,疯子看井,,,,, g_疯子看井,疯子看井,,,,,

1 keys zh_CN _character _notes _tags zh_SH en
9 c02_小蝉寻人启事_脸部破碎 寻人启事...画像和字迹都看不清。
10 小猫玩具发光 嗯?玩具在发光
11 setting_画册 画册(G)
12 notes_干掉的血迹 干掉的血迹
13 index_新游戏 新游戏 New Game
14 index_继续游戏 继续游戏 Resume
15 index_退出游戏 退出游戏 Exit
30 ui_saved_all 已保存所有数据 All the data have been saved
31 ui_new_archive 已创建新存档 A new archive has been created
32 ui_auto_saved 自动保存成功 Auto save successful
33 ui_press_e ui_intro_press_e 按 E 与场景互动 按 E 可与场景互动 Press E to interact
34 ui_press_e 按 E 可互动 Press E to interact
35 ui_press_q_to_exit 按 Q 可退出
36 ui_use_prop 按 E 使用道具 Press E to use prop
37 ui_right_click_prop 右键点击可检阅道具
64 prop_院长的信 院长的信 [#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png]
65 prop_院长的信_说明 浦育院院长秦阳<br>民国21年11月20日<br>致吕萍:<br>你现下境况如何?<br>你虽离开浦育院已久,但我始终没有忘记为你祈祷。<br>愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。<br>你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。<br>若有闲暇,欢迎你回浦育院看看。<br>院长童玉君<br>民国十九年十月十五日<br>公寓地址 芦昌路26弄3号
66 prop_火柴 火柴 [#texture=c02/火柴.png]
67 prop_火柴_说明 火柴_说明 [#texture=c02/火柴.png]
68 prop_小猫玩具的脑袋 小猫玩具的脑袋 [#texture=c02/新小猫头.png]
69 prop_小猫玩具的脑袋_说明
70 prop_无头小猫玩具 无头小猫玩具 [#texture=c02/新小猫身体.png][#inspect=c02/新小猫身体_特写.png]
71 prop_无头小猫玩具_说明 没有脑袋的小猫玩偶,针脚歪歪扭扭,不甚熟练
72 prop_小猫玩具完整 小猫玩具 [#texture=c02/新小猫全身.png]
73 prop_小猫玩具完整_说明 这玩具看久了还蛮可爱的
74 prop_撕下的照片上 撕下的照片(上) [#texture=c02/照片_上.png]
75 prop_撕下的照片上_说明 女儿生辰纪念 于 民国元年
76 prop_老虎钳 老虎钳 [#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png]
77 prop_老虎钳_说明 ... 「虎头牌」钳子,家家户户常备
78 prop_锡箔元宝 锡箔元宝 [#texture=c02/锡箔元宝.png]
79 prop_小鞋子1 prop_锡箔元宝_说明 小鞋子1 人们一般将其叠成元宝形状,用以供奉逝者、祭拜鬼神。 [#texture=c02/小鞋子.png]
80 prop_小鞋子2 prop_小鞋子1 小鞋子2 小鞋子(一) [#texture=c02/小鞋子.png] [#texture=c02/小鞋子1.png]
81 prop_小鞋子1_说明 尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓
82 prop_小鞋子2 小鞋子(二) [#texture=c02/小鞋子2.png]
83 prop_小鞋子2_说明 尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓
84 prop_麻将 麻将 [#texture=c02/麻将.png]
85 prop_麻将_说明 这块麻将上雕着一朵圆形的花
86 prop_奇怪的肉 奇怪的肉 [#texture=c02/奇怪的肉.png]
87 prop_奇怪的肉_说明
88 prop_弹珠 弹珠 [#texture=c02/弹珠.png]
89 prop_弹珠_说明 一种玻璃小球,孩子们常用它来进行弹子游戏
90 prop_木头人偶 木头人偶 [#texture=c02/小蝉人偶.png]
91 prop_木头人偶_说明 略显粗糙的木头玩偶,能依稀辨认出是个小女孩的模样
92 prop_小蝉人偶_说明 小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花
93 prop_粘鼠板 粘鼠板 [#texture=c02/粘鼠板特写.png]
94 prop_粘鼠板_说明 自制的捕鼠工具,纸上面有黏黏的浆糊
95 prop_一把香 一把香 [#texture=c02/一把香.png]
96 prop_2014钥匙 2014钥匙 [#texture=c02/1012钥匙物品.png]
97 prop_重要物品示例 重要物品示例 [#texture=c01/银元.png]
109 notes_锁住了 锁住了
110 notes_打不开 打不开
111 notes_无法通过 无法通过
notes_干掉的血迹 干掉的血迹
112 notes_有什么东西 有什么东西
113 notes_无法触碰 无法触碰
114 notes_挂画 挂画
131 c01_s08_获得袁大头后 工钱还在老地方。
132 c02_海报_剪辫子侦探 剪辮懸樑上偵探奇聞
133 c02_海报_戏法班 朱连魁全班戏法——「各有幻女...演技新奇」
134 c02_芦昌路26 芦昌路26弄3号,就是这里了。 芦昌路26弄3号,我父母真的住在这里吗...
135 c02_s01_下黄包车 院长在信里提到的就是这里
136 c02_s01_寻人启事 寻人启事...
137 c02_冷飕飕的 冷飕飕的...
138 c02_太暗了 太暗了,找找能照明的东西吧。
139 c02_陈旧的煤油灯 上了年头的煤油灯,似乎很久没用过了。
140 c02_使用煤油灯 呼,那股阴冷的感觉也消失了。
141 c02_卫生宣传画 几张卫生宣传画
142 c02_老鼠洞 一个老鼠洞<br>在这种楼里挺常见的 墙角的老鼠洞...还是不要凑近看了
143 c02_十几年前的报纸 十几年前的报纸
144 c02_s02_大头娃娃头套 看着唬人,这尺寸只是给孩子们戴着玩的
145 c02_s02_八音盒 自制的八音盒,这么用心的小玩意,怎么会被人扔在这里呢?
146 c02_s02_八音盒缺人偶 别出心裁的小机关,缺了点东西,暂时还不能用
147 c02_s03_干掉的血迹 血迹看上去干了很久,血脚印有大有小,咦,还有个特别小的...
148 c02_院子_算命摊位 算命的摊位?
149 c02_院子_要下雨 好像要下雨了?
150 c02_s03_掉鞋子 怎么天上掉了个小鞋子下来?
151 c02_s03_铁门 通往后院的铁门,锁住了
152 c02_保卫科花名册os 芦昌公寓居民登记簿,黄国栋记。
153 c02_保卫科祭台os 祭台是专门供奉这只大老鼠的?
154 c02_小手出现摔倒 ?!
155 c02_小手其他交易 ...还有什么东西能跟它交换呢?
156 c02_保卫科老鼠精 鼠歌 <br><br>天地小如喉,<br>红轮自吞吐。<br>多少世间人,<br>都被红轮误。
157 c02_一楼楼道被挡住 被挡住了
158 c02_描述垃圾通道 c02_一楼戏台 飘着一股血气,又酸又腥。 盖着布的木头架子...用来做什么的呢
159 c02_描述垃圾通道 桶是空的,飘着一股血气,又酸又腥。
160 c02_一楼疯子互动后 这人有点不正常...最好离他远点。
161 c02_一楼粘鼠板 这里原来放着什么?
162 c02_获得小猫玩具 小猫玩具亮起来了,这光...竟有一丝暖意
163 c02_敲门_肉掉落 楼道有东西掉下来了?
164 c02_敲门_老鼠叼肉 刚刚这里有块肉不见了?
165 c02_锡箔换小鞋子 另一只小鞋子。
166 c02_二楼楼梯杂物堆 堆满了杂物,看样子没办法从这里上去了。
167 c02_二楼水盆 盆里的水很清澈,看上去像是刚盛的。
168 c02_二楼老鼠洞 到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。
169 c02_二楼血脚印 又是这种小小尖尖的血脚印...
170 c02_离开红色演出 刚才的那两个人...是幻觉吗
171 c02_瞎子卧室_八卦图 「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着...
172 c02_瞎子卧室_血脚印 这画上的脚印和刚刚看到的一样。
173 c02_瞎子卧室_十字架 院长房间里也有一个类似的十字架。
174 c02_火灾等待准备 还没准备好点火呢
175 c02_霸凌救小蝉开始 啊!我得赶紧想办法救小蝉... 啊!我得想办法帮帮那个小女孩...
176 c02_点火前阻止右移 没时间浪费了!想想办法救出小蝉...
177 g_偷听对话 偷听对话
178 g_疯子看井 疯子看井

View File

@ -24,7 +24,8 @@
已创建新存档 [ID:ui_new_archive] 已创建新存档 [ID:ui_new_archive]
自动保存成功 [ID:ui_auto_saved] 自动保存成功 [ID:ui_auto_saved]
按 E 与场景互动 [ID:ui_press_e] 按 E 可与场景互动 [ID:ui_intro_press_e]
按 E 可互动 [ID:ui_press_e]
按 Q 可退出 [ID:ui_press_q_to_exit] 按 Q 可退出 [ID:ui_press_q_to_exit]
按 E 使用道具 [ID:ui_use_prop] 按 E 使用道具 [ID:ui_use_prop]
右键点击可检阅道具 [ID:ui_right_click_prop] 右键点击可检阅道具 [ID:ui_right_click_prop]
@ -72,20 +73,33 @@
火柴 [#texture=c02/火柴.png] [ID:prop_火柴] 火柴 [#texture=c02/火柴.png] [ID:prop_火柴]
火柴_说明 [#texture=c02/火柴.png] [ID:prop_火柴_说明] 火柴_说明 [#texture=c02/火柴.png] [ID:prop_火柴_说明]
小猫玩具的脑袋 [#texture=c02/新小猫头.png] [ID:prop_小猫玩具的脑袋] 小猫玩具的脑袋 [#texture=c02/新小猫头.png] [ID:prop_小猫玩具的脑袋]
[ID:prop_小猫玩具的脑袋_说明]
无头小猫玩具 [#texture=c02/新小猫身体.png] [#inspect=c02/新小猫身体_特写.png] [ID:prop_无头小猫玩具] 无头小猫玩具 [#texture=c02/新小猫身体.png] [#inspect=c02/新小猫身体_特写.png] [ID:prop_无头小猫玩具]
没有脑袋的小猫玩偶,针脚歪歪扭扭,不甚熟练 [ID:prop_无头小猫玩具_说明]
小猫玩具 [#texture=c02/新小猫全身.png] [ID:prop_小猫玩具完整] 小猫玩具 [#texture=c02/新小猫全身.png] [ID:prop_小猫玩具完整]
这玩具看久了还蛮可爱的[ID:prop_小猫玩具完整_说明]
撕下的照片(上) [#texture=c02/照片_上.png] [ID:prop_撕下的照片上] 撕下的照片(上) [#texture=c02/照片_上.png] [ID:prop_撕下的照片上]
女儿生辰纪念 于 民国元年 [ID:prop_撕下的照片上_说明]
老虎钳 [#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png] [ID:prop_老虎钳] 老虎钳 [#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png] [ID:prop_老虎钳]
... [ID:prop_老虎钳_说明] 「虎头牌」钳子,家家户户常备 [ID:prop_老虎钳_说明]
锡箔元宝 [#texture=c02/锡箔元宝.png] [ID:prop_锡箔元宝] 锡箔元宝 [#texture=c02/锡箔元宝.png] [ID:prop_锡箔元宝]
小鞋子1 [#texture=c02/小鞋子.png] [ID:prop_小鞋子1] 人们一般将其叠成元宝形状,用以供奉逝者、祭拜鬼神。[ID:prop_锡箔元宝_说明]
小鞋子2 [#texture=c02/小鞋子.png] [ID:prop_小鞋子2] 小鞋子(一) [#texture=c02/小鞋子1.png] [ID:prop_小鞋子1]
尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓[ID:prop_小鞋子1_说明]
小鞋子(二)[#texture=c02/小鞋子2.png] [ID:prop_小鞋子2]
尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓[ID:prop_小鞋子2_说明]
麻将 [#texture=c02/麻将.png] [ID:prop_麻将] 麻将 [#texture=c02/麻将.png] [ID:prop_麻将]
这块麻将上雕着一朵圆形的花[ID:prop_麻将_说明]
#新鲜的肉 [#texture=c02/新鲜的肉.png] [ID:prop_新鲜的肉] #新鲜的肉 [#texture=c02/新鲜的肉.png] [ID:prop_新鲜的肉]
奇怪的肉 [#texture=c02/奇怪的肉.png] [ID:prop_奇怪的肉] 奇怪的肉 [#texture=c02/奇怪的肉.png] [ID:prop_奇怪的肉]
[ID:prop_奇怪的肉_说明]
弹珠 [#texture=c02/弹珠.png] [ID:prop_弹珠] 弹珠 [#texture=c02/弹珠.png] [ID:prop_弹珠]
一种玻璃小球,孩子们常用它来进行弹子游戏[ID:prop_弹珠_说明]
木头人偶 [#texture=c02/小蝉人偶.png] [ID:prop_木头人偶] 木头人偶 [#texture=c02/小蝉人偶.png] [ID:prop_木头人偶]
略显粗糙的木头玩偶,能依稀辨认出是个小女孩的模样 [ID:prop_木头人偶_说明]
小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花 [ID:prop_小蝉人偶_说明]
粘鼠板 [#texture=c02/粘鼠板特写.png] [ID:prop_粘鼠板] 粘鼠板 [#texture=c02/粘鼠板特写.png] [ID:prop_粘鼠板]
自制的捕鼠工具,纸上面有黏黏的浆糊[ID:prop_粘鼠板_说明]
# 未使用 # 未使用
一把香 [#texture=c02/一把香.png] [ID:prop_一把香] 一把香 [#texture=c02/一把香.png] [ID:prop_一把香]
@ -125,7 +139,6 @@
锁住了 [ID:notes_锁住了] 锁住了 [ID:notes_锁住了]
打不开 [ID:notes_打不开] 打不开 [ID:notes_打不开]
无法通过 [ID:notes_无法通过] 无法通过 [ID:notes_无法通过]
干掉的血迹 [ID:notes_干掉的血迹]
有什么东西 [ID:notes_有什么东西] 有什么东西 [ID:notes_有什么东西]
无法触碰 [ID:notes_无法触碰] 无法触碰 [ID:notes_无法触碰]
挂画 [ID:notes_挂画] 挂画 [ID:notes_挂画]
@ -155,33 +168,57 @@
剪辮懸樑上偵探奇聞 [ID:c02_海报_剪辫子侦探] 剪辮懸樑上偵探奇聞 [ID:c02_海报_剪辫子侦探]
朱连魁全班戏法——「各有幻女...演技新奇」 [ID:c02_海报_戏法班] 朱连魁全班戏法——「各有幻女...演技新奇」 [ID:c02_海报_戏法班]
# c02-s01 街道 # c02-s01 街道
芦昌路26弄3号就是这里了。 [ID:c02_芦昌路26] 芦昌路26弄3号我父母真的住在这里吗... [ID:c02_芦昌路26]
院长在信里提到的就是这里 [ID:c02_s01_下黄包车]
寻人启事... [ID:c02_s01_寻人启事]
# c02-s02 走道 # c02-s02 走道
冷飕飕的... [ID:c02_冷飕飕的] 冷飕飕的... [ID:c02_冷飕飕的]
太暗了,找找能照明的东西吧。 [ID:c02_太暗了] 太暗了,找找能照明的东西吧。 [ID:c02_太暗了]
上了年头的煤油灯,似乎很久没用过了。 [ID:c02_陈旧的煤油灯] 上了年头的煤油灯,似乎很久没用过了。 [ID:c02_陈旧的煤油灯]
呼,那股阴冷的感觉也消失了。 [ID:c02_使用煤油灯] 呼,那股阴冷的感觉也消失了。 [ID:c02_使用煤油灯]
几张卫生宣传画 [ID:c02_卫生宣传画] 几张卫生宣传画 [ID:c02_卫生宣传画]
一个老鼠洞<br>在这种楼里挺常见的 [ID:c02_老鼠洞] 墙角的老鼠洞...还是不要凑近看了 [ID:c02_老鼠洞]
十几年前的报纸 [ID:c02_十几年前的报纸] 十几年前的报纸 [ID:c02_十几年前的报纸]
看着唬人,这尺寸只是给孩子们戴着玩的 [ID:c02_s02_大头娃娃头套]
自制的八音盒,这么用心的小玩意,怎么会被人扔在这里呢? [ID:c02_s02_八音盒]
别出心裁的小机关,缺了点东西,暂时还不能用 [ID:c02_s02_八音盒缺人偶]
# c02 院子 # c02 院子
血迹看上去干了很久,血脚印有大有小,咦,还有个特别小的... [ID:c02_s03_干掉的血迹]
算命的摊位? [ID:c02_院子_算命摊位] 算命的摊位? [ID:c02_院子_算命摊位]
好像要下雨了? [ID:c02_院子_要下雨] 好像要下雨了? [ID:c02_院子_要下雨]
怎么天上掉了个小鞋子下来? [ID:c02_s03_掉鞋子]
通往后院的铁门,锁住了 [ID:c02_s03_铁门]
# c02 保卫科 # c02 保卫科
芦昌公寓居民登记簿,黄国栋记。 [ID:c02_保卫科花名册os] 芦昌公寓居民登记簿,黄国栋记。 [ID:c02_保卫科花名册os]
祭台是专门供奉这只大老鼠的? [ID:c02_保卫科祭台os]
[ID:c02_小手出现摔倒]
...还有什么东西能跟它交换呢? [ID:c02_小手其他交易]
鼠歌 <br><br>天地小如喉,<br>红轮自吞吐。<br>多少世间人,<br>都被红轮误。 [ID:c02_保卫科老鼠精]
# c02 内侧楼道 # c02 内侧楼道
被挡住了 [ID:c02_一楼楼道被挡住] 被挡住了 [ID:c02_一楼楼道被挡住]
飘着一股血气,又酸又腥。 [ID:c02_描述垃圾通道] 盖着布的木头架子...用来做什么的呢 [ID:c02_一楼戏台]
桶是空的,飘着一股血气,又酸又腥。 [ID:c02_描述垃圾通道]
这人有点不正常...最好离他远点。 [ID:c02_一楼疯子互动后]
这里原来放着什么? [ID:c02_一楼粘鼠板]
# c02 小猫玩具
小猫玩具亮起来了,这光...竟有一丝暖意 [ID:c02_获得小猫玩具]
# c02 敲门_老鼠叼肉 # c02 敲门_老鼠叼肉
楼道有东西掉下来了? [ID:c02_敲门_肉掉落] 楼道有东西掉下来了? [ID:c02_敲门_肉掉落]
刚刚这里有块肉不见了? [ID:c02_敲门_老鼠叼肉] 刚刚这里有块肉不见了? [ID:c02_敲门_老鼠叼肉]
# 瞎子卧室 # c02 二楼
另一只小鞋子。 [ID:c02_锡箔换小鞋子]
堆满了杂物,看样子没办法从这里上去了。 [ID:c02_二楼楼梯杂物堆]
盆里的水很清澈,看上去像是刚盛的。 [ID:c02_二楼水盆]
到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。 [ID:c02_二楼老鼠洞]
又是这种小小尖尖的血脚印... [ID:c02_二楼血脚印]
# c02 瞎子卧室
刚才的那两个人...是幻觉吗 [ID:c02_离开红色演出]
「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着... [ID:c02_瞎子卧室_八卦图] 「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着... [ID:c02_瞎子卧室_八卦图]
这画上的脚印和刚刚看到的一样。 [ID:c02_瞎子卧室_血脚印] 这画上的脚印和刚刚看到的一样。 [ID:c02_瞎子卧室_血脚印]
院长房间里也有一个类似的十字架。[ID:c02_瞎子卧室_十字架] 院长房间里也有一个类似的十字架。[ID:c02_瞎子卧室_十字架]
# c02 火灾 # c02 火灾
还没准备好点火呢 [ID:c02_火灾等待准备] 还没准备好点火呢 [ID:c02_火灾等待准备]
啊!我得赶紧想办法救小蝉... [ID:c02_霸凌救小蝉开始] 啊!我得想办法帮帮那个小女孩... [ID:c02_霸凌救小蝉开始]
没时间浪费了!想想办法救出小蝉... [ID:c02_点火前阻止右移] 没时间浪费了!想想办法救出小蝉... [ID:c02_点火前阻止右移]
=> END => END

View File

@ -1,8 +1,15 @@
@tool
extends Node extends Node
var vibe_group_collection := preload("uid://bfhwn1v0c2io7") as VibeGroupCollection
@export_tool_button("重载vibe groups") var reload_groups = _reload_groups
static var VIBE_GROUPS := [] as Array[String]
# random players # random players
var sfx_players = [] as Array[AudioStreamPlayer] var sfx_players = [] as Array[AudioStreamPlayer]
var idx = 0 var sfx_players_idx = 0
# bgm player # bgm player
var bgm_dict = {} var bgm_dict = {}
# vibe player # vibe player
@ -14,25 +21,24 @@ func _ready() -> void:
sfx_players.append(sfx_player) sfx_players.append(sfx_player)
sfx_player.bus = "game_sfx" sfx_player.bus = "game_sfx"
add_child(sfx_player) add_child(sfx_player)
if Engine.is_editor_hint():
_reload_groups()
# 初始化基础播放器
_base_player = AudioStreamPlayer.new()
_base_player.name = "BaseAmbiencePlayer"
add_child(_base_player)
# 初始化点缀音播放器池 func _reload_groups():
for i in range(_EMBELLISHMENT_PLAYER_POOL_SIZE): VIBE_GROUPS.clear()
var player = AudioStreamPlayer.new() for group in vibe_group_collection.groups:
player.name = "EmbellishmentPlayer_" + str(i) if group and group.group_name:
add_child(player) VIBE_GROUPS.append(group.group_name)
_embellishment_players.append(player) else:
printerr("VibeGroup has no name: ", group)
func play_sfx(sfx: AudioStream, db := 1.0) -> void: func play_sfx(sfx: AudioStream, db := 1.0) -> void:
sfx_players[idx].stream = sfx sfx_players[sfx_players_idx].stream = sfx
sfx_players[idx].volume_db = db sfx_players[sfx_players_idx].volume_db = db
sfx_players[idx].play() sfx_players[sfx_players_idx].play()
idx = wrapi(idx + 1, 0, 5) sfx_players_idx = wrapi(sfx_players_idx + 1, 0, 5)
# 挂载并循环播放 bgm 音效 # 挂载并循环播放 bgm 音效
@ -40,7 +46,7 @@ func loop_bgm_music(music_name: StringName, stream: AudioStream, db := 0.0, loop
var audio_player = bgm_dict.get(music_name) as AudioStreamPlayer var audio_player = bgm_dict.get(music_name) as AudioStreamPlayer
if audio_player: if audio_player:
if audio_player.playing: if audio_player.playing:
print("bgm music already playing: ", music_name) print("bgm music is already playing: ", music_name)
return return
bgm_dict.erase(music_name) bgm_dict.erase(music_name)
audio_player.stop() audio_player.stop()
@ -50,7 +56,7 @@ func loop_bgm_music(music_name: StringName, stream: AudioStream, db := 0.0, loop
bgm_dict[music_name] = audio_player bgm_dict[music_name] = audio_player
audio_player.stream = stream audio_player.stream = stream
audio_player.volume_db = db audio_player.volume_db = db
audio_player.bus = "game_music" audio_player.bus = "game_sfx"
audio_player.play() audio_player.play()
if loop and stream.get_length() > 0: if loop and stream.get_length() > 0:
audio_player.finished.connect(audio_player.play) audio_player.finished.connect(audio_player.play)
@ -75,92 +81,37 @@ func stop_bgm_music(music_name: StringName, ease_duration := 3.0) -> void:
## 负责实际创建 AudioStreamPlayer 节点并播放、管理 VibeGroup。 ## 负责实际创建 AudioStreamPlayer 节点并播放、管理 VibeGroup。
# 当前正在播放的音轨组资源 # 当前正在播放的音轨组资源
var current_vibe_group: VibeGroup = null var vibe_player_dict:Dictionary[StringName,VibeGroupPlayer] = {}
# 用于播放基础环境音的播放器 func _find_group_by_name(group_name: StringName) -> VibeGroup:
var _base_player: AudioStreamPlayer for group in vibe_group_collection.groups:
# 用于播放点缀音的播放器池。使用池可以处理多个点缀音同时播放的情况。 if group.group_name == group_name:
var _embellishment_players: Array[AudioStreamPlayer] = [] return group
# 用于管理点缀音播放间隔的计时器 return null
var _embellishment_timers: Array[Timer] = []
const _EMBELLISHMENT_PLAYER_POOL_SIZE = 8 # 点缀音播放器池的大小,可根据需求调整
## 核心方法:播放一个指定的 VibeGroup ## 核心方法:播放一个指定的 VibeGroup
func play_group(group: VibeGroup): func play_group(group_name: StringName):
var group = _find_group_by_name(group_name)
if not is_instance_valid(group): if not is_instance_valid(group):
printerr("VibeManager: VibeGroup is not valid.") printerr("VibeManager: VibeGroup is not valid. group_name:", group_name)
stop_all()
return return
# 如果请求播放的是当前已在播放的组,则忽略 # 如果请求播放的是当前已在播放的组,则忽略
if group == current_vibe_group: if vibe_player_dict.has(group_name):
return return
var vibe_player = VibeGroupPlayer.new(group)
stop_all() vibe_player.name = group_name
current_vibe_group = group add_child(vibe_player)
vibe_player_dict[group_name] = vibe_player
# 播放基础环境音 vibe_player.play()
if is_instance_valid(current_vibe_group.base_sound):
_base_player.stream = current_vibe_group.base_sound
# TODO 设置循环
if _base_player.stream is AudioStreamOggVorbis:
(_base_player.stream as AudioStreamOggVorbis).loop = true
# 注意WAV 默认导入设置中需要勾选 loop
_base_player.volume_db = current_vibe_group.group_db + current_vibe_group.base_sound_db
_base_player.play()
# 设置并启动所有点缀音的计时器
for embellishment in current_vibe_group.embellishments:
if not is_instance_valid(embellishment) or not is_instance_valid(embellishment.sound):
continue
var timer = Timer.new()
timer.one_shot = true
# 使用 lambda 函数或 bind 将点缀音数据传递给超时处理函数
timer.timeout.connect(_on_embellishment_timer_timeout.bind(embellishment, timer))
add_child(timer)
_embellishment_timers.append(timer)
# 首次启动计时器
var random_wait_time = randf_range(embellishment.min_interval, embellishment.max_interval)
timer.start(random_wait_time)
## 停止所有当前播放的音效和计时器 func stop_group(group_name: StringName):
func stop_all(): if is_queued_for_deletion():
_base_player.stop() return
if not vibe_player_dict.has(group_name):
for player in _embellishment_players: return
player.stop() var vibe_player = vibe_player_dict[group_name]
vibe_player_dict.erase(group_name)
for timer in _embellishment_timers: remove_child(vibe_player)
timer.queue_free() vibe_player.stop_and_free()
_embellishment_timers.clear()
current_vibe_group = null
# 当某个点缀音的计时器到期时调用
func _on_embellishment_timer_timeout(embellishment: Embellishment, timer: Timer):
# 寻找一个空闲的点缀音播放器
var player = _get_available_embellishment_player()
if is_instance_valid(player):
player.stream = embellishment.sound
player.volume_db = current_vibe_group.group_db + embellishment.db
player.play()
# 重新启动计时器,实现循环随机播放
var random_wait_time = randf_range(embellishment.min_interval, embellishment.max_interval)
timer.start(random_wait_time)
# 从池中获取一个当前未在播放的播放器
func _get_available_embellishment_player() -> AudioStreamPlayer:
for player in _embellishment_players:
if not player.playing:
return player
# 如果所有播放器都在忙可以考虑返回null或者动态创建新的播放器不推荐可能导致节点泄漏
printerr("VibeManager: No available embellishment player in the pool.")
return null

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://br07tacnfq216"]
[ext_resource type="Script" uid="uid://dwae8qisko2qp" path="res://manager/audio_manager/audio_manager.gd" id="1_8y63p"]
[node name="AudioManager" type="Node"]
script = ExtResource("1_8y63p")

View File

@ -14,11 +14,15 @@ extends Resource
# 0 表示不变, 负数表示减小音量, 正数表示增大音量。 # 0 表示不变, 负数表示减小音量, 正数表示增大音量。
@export_range(-60, 6, 0.1, "dB") var db: float = 0.0 @export_range(-60, 6, 0.1, "dB") var db: float = 0.0
# 如果 loop则 min_interval 与 max_interval 无效
@export var loop := false
# 播放此点缀音的最小随机间隔时间(秒)。 # 播放此点缀音的最小随机间隔时间(秒)。
@export_range(0.1, 300.0, 0.1, "s") var min_interval: float = 5.0 @export_range(0.0, 300.0, 0.1, "s") var min_interval: float = 5.0
# 播放此点缀音的最大随机间隔时间(秒)。 # 播放此点缀音的最大随机间隔时间(秒)。
@export_range(0.1, 300.0, 0.1, "s") var max_interval: float = 10.0 @export_range(0.0, 300.0, 0.1, "s") var max_interval: float = 10.0
func _init(): func _init():
# 确保 min <= max # 确保 min <= max

View File

@ -6,12 +6,11 @@ extends Resource
## 定义一个“音轨组”的数据结构。 ## 定义一个“音轨组”的数据结构。
## 这是一个核心资源,包含了完整的环境音效配置方案。 ## 这是一个核心资源,包含了完整的环境音效配置方案。
## 你可以创建如 "forest_day.tres", "dungeon_terror.tres" 等资源文件。 ## 你可以创建如 "forest_day.tres", "dungeon_terror.tres" 等资源文件。
@export var group_name := "" @export var group_name := &""
# 该音轨组的全局音量调整dB。会影响到其下所有的声音。 # 该音轨组的全局音量调整dB。会影响到其下所有的声音。
@export_range(-60, 6, 0.1, "dB") var group_db: float = 0.0 @export_range(-60, 6, 0.1, "dB") var group_db: float = 0.0
@export_group("Base Ambience", "base_") @export_group("Base Ambience", "base_")
# 基础环境音(白噪音),要求是无缝循环的音频文件。 # 基础环境音(白噪音),要求是无缝循环的音频文件。
@export var base_sound: AudioStream @export var base_sound: AudioStream
@ -19,8 +18,22 @@ extends Resource
# 基础环境音的独立音量调整dB # 基础环境音的独立音量调整dB
@export_range(-60, 6, 0.1, "dB") var base_sound_db: float = 0.0 @export_range(-60, 6, 0.1, "dB") var base_sound_db: float = 0.0
@export_group("Embellishments", "embellishment_")
# 点缀音效列表。可以从库中拖入预设好的 Embellishment.tres 资源。 # 点缀音效列表。可以从库中拖入预设好的 Embellishment.tres 资源。
# 你也可以直接在这里新建 Embellishment 资源实现“特制wav”的需求。 # 你也可以直接在这里新建 Embellishment 资源实现“特制wav”的需求。
@export var embellishments: Array[Embellishment] @export var embellishments: Array[Embellishment]
# func _init() -> void:
# if not Engine.is_editor_hint():
# return
# var root = EditorInterface.get_edited_scene_root()
# if not root:
# return
# var ground = root.get_node_or_null("Ground") as Ground2D
# if not ground:
# return
# var scene_name = ground.scene_name
# # 检查 group_name 是否以 scene_name 开头
# if not group_name.begins_with(scene_name):
# group_name = scene_name + "_" + group_name
# print("VibeGroup: Auto-prefixed group_name to %s" % group_name)

View File

@ -0,0 +1,5 @@
@tool
class_name VibeGroupCollection
extends Resource
@export var groups: Array[VibeGroup] = []

View File

@ -0,0 +1 @@
uid://bo8gxwe8hfs01

View File

@ -0,0 +1,99 @@
[gd_resource type="Resource" script_class="VibeGroupCollection" load_steps=21 format=3 uid="uid://bfhwn1v0c2io7"]
[ext_resource type="Script" uid="uid://cy1ngx5no67v" path="res://manager/audio_manager/vibe_group.gd" id="1_0bbao"]
[ext_resource type="Script" uid="uid://bo8gxwe8hfs01" path="res://manager/audio_manager/vibe_group_collection.gd" id="2_h4hph"]
[ext_resource type="AudioStream" uid="uid://c2xr0rfmo60gn" path="res://asset/audio/sfx/环境音/白噪音/白噪声书店外.wav" id="2_uwtc1"]
[ext_resource type="Script" uid="uid://eydkufjbf7n6" path="res://manager/audio_manager/embellishment.gd" id="3_scrw7"]
[ext_resource type="AudioStream" uid="uid://b2mudqvq1dmng" path="res://asset/audio/sfx/环境音/白噪音/白噪声房间里1.wav" id="4_f75a1"]
[ext_resource type="AudioStream" uid="uid://o57tyriodr0c" path="res://asset/audio/sfx/环境音/白噪音/白噪声房间里2.wav" id="5_pgee5"]
[ext_resource type="AudioStream" uid="uid://dvc2emnfcmabx" path="res://asset/audio/sfx/环境音/白噪音/白噪声楼道1.wav" id="6_u0i77"]
[ext_resource type="AudioStream" uid="uid://6oc0cgc3mbqb" path="res://asset/audio/sfx/环境音/白噪音/白噪声楼道2.wav" id="7_kxpku"]
[ext_resource type="AudioStream" uid="uid://c6ehv3lgway26" path="res://asset/audio/sfx/环境音/白噪音/白噪声诡异室外.wav" id="8_ehphf"]
[ext_resource type="AudioStream" uid="uid://bal423qlb3jp2" path="res://asset/audio/sfx/环境音/点缀音/sfx_夜晚虫鸣.wav" id="9_tydt5"]
[ext_resource type="AudioStream" uid="uid://s7uigovfp5g3" path="res://asset/audio/sfx/环境音/第一章/火灾演出.wav" id="10_bxcxa"]
[sub_resource type="Resource" id="Resource_bjndi"]
script = ExtResource("1_0bbao")
group_name = &"c01_书店外"
group_db = 0.0
base_sound = ExtResource("2_uwtc1")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[sub_resource type="Resource" id="Resource_chrc1"]
script = ExtResource("1_0bbao")
group_name = &"c02_房间里1"
group_db = 0.0
base_sound = ExtResource("4_f75a1")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[sub_resource type="Resource" id="Resource_7c7wx"]
script = ExtResource("1_0bbao")
group_name = &"c02_房间里2"
group_db = 0.0
base_sound = ExtResource("5_pgee5")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[sub_resource type="Resource" id="Resource_an5bn"]
script = ExtResource("1_0bbao")
group_name = &"c02_楼道1"
group_db = 0.0
base_sound = ExtResource("6_u0i77")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[sub_resource type="Resource" id="Resource_egnaw"]
script = ExtResource("1_0bbao")
group_name = &"c02_楼道2"
group_db = 0.0
base_sound = ExtResource("7_kxpku")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[sub_resource type="Resource" id="Resource_e3r3f"]
script = ExtResource("1_0bbao")
group_name = &"c02_诡异室外"
group_db = 0.0
base_sound = ExtResource("8_ehphf")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[sub_resource type="Resource" id="Resource_s3jju"]
script = ExtResource("3_scrw7")
sound = ExtResource("9_tydt5")
db = 0.0
loop = false
min_interval = 5.0
max_interval = 10.0
metadata/_custom_type_script = "uid://eydkufjbf7n6"
[sub_resource type="Resource" id="Resource_n45nr"]
script = ExtResource("1_0bbao")
group_name = &"c02_楼道虫鸣"
group_db = 0.0
base_sound = ExtResource("6_u0i77")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([SubResource("Resource_s3jju")])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[sub_resource type="Resource" id="Resource_j0xlt"]
script = ExtResource("1_0bbao")
group_name = &"c02_火灾"
group_db = 0.0
base_sound = ExtResource("10_bxcxa")
base_sound_db = 0.0
embellishments = Array[ExtResource("3_scrw7")]([])
metadata/_custom_type_script = "uid://cy1ngx5no67v"
[resource]
script = ExtResource("2_h4hph")
groups = Array[ExtResource("1_0bbao")]([SubResource("Resource_bjndi"), SubResource("Resource_chrc1"), SubResource("Resource_7c7wx"), SubResource("Resource_an5bn"), SubResource("Resource_egnaw"), SubResource("Resource_e3r3f"), SubResource("Resource_n45nr"), SubResource("Resource_j0xlt")])
metadata/_custom_type_script = "uid://bo8gxwe8hfs01"

View File

@ -0,0 +1,89 @@
@tool
class_name VibeGroupPlayer
extends Node
var vibe_group: VibeGroup
var _base_player: AudioStreamPlayer
var _embellishment_players = [] as Array[AudioStreamPlayer]
var _embellishment_timers = [] as Array[Timer]
func _init(group: VibeGroup):
vibe_group = group
# 初始化基础播放器
_base_player = AudioStreamPlayer.new()
_base_player.name = "BasePlayer"
_base_player.bus = "game_sfx"
_base_player.stream = group.base_sound
_base_player.volume_db = group.group_db + group.base_sound_db
# 循环播放
if vibe_group.base_sound.get_length() > 0:
_base_player.finished.connect(_base_player.play)
add_child(_base_player)
_embellishment_players.resize(group.embellishments.size())
_embellishment_timers.resize(group.embellishments.size())
# 初始化点缀音播放器池
for i in range(group.embellishments.size()):
if group.embellishments[i] == null:
continue
var player = AudioStreamPlayer.new()
player.name = "EPlayer" + str(i)
player.bus = "game_sfx"
player.stream = group.embellishments[i].sound
add_child(player)
_embellishment_players.append(player)
var timer = Timer.new()
timer.one_shot = true
timer.name = "ETimer" + str(i)
timer.autostart = false
add_child(timer)
_embellishment_timers.append(timer)
timer.timeout.connect(_on_embellishment_timer_timeout.bind(i))
func _on_embellishment_timer_timeout(id: int):
var embellishment = vibe_group.embellishments[id] as Embellishment
if not embellishment:
return
var player = _embellishment_players[id] as AudioStreamPlayer
var timer = _embellishment_timers[id] as Timer
# 增加随机性
timer.wait_time = randf_range(embellishment.min_interval, embellishment.max_interval)
timer.start()
player.volume_db = (vibe_group.group_db + embellishment.db) * randf_range(0.8, 1.2)
player.pitch_scale = randf_range(0.8, 1.2)
player.play()
func _ready():
if Engine.is_editor_hint():
return
func play():
_base_player.play()
# 设置并启动所有点缀音的计时器
for i in range(vibe_group.embellishments.size()):
var embellishment = vibe_group.embellishments[i]
if not is_instance_valid(embellishment) or not is_instance_valid(embellishment.sound):
continue
var timer = _embellishment_timers[i]
# 如果 loop则 min_interval 与 max_interval 无效
if embellishment.loop:
var player = _embellishment_players[i]
player.volume_db = vibe_group.group_db + embellishment.db
if player.stream:
player.play()
player.finished.connect(player.play)
else:
# 首次启动计时器
var random_wait_time = randf_range(
embellishment.min_interval, embellishment.max_interval
)
timer.start(random_wait_time)
func stop_and_free():
if not is_queued_for_deletion():
queue_free()

View File

@ -0,0 +1 @@
uid://bswwg088lnvub

View File

@ -2,52 +2,89 @@
class_name VibeSfx class_name VibeSfx
extends Node extends Node
@export_tool_button("播放") var _play = _debug_play.bind(true)
@export_tool_button("停止") var _stop = _debug_play.bind(false)
## VibeSfx.gd ## VibeSfx.gd
## 场景中的环境音效控制器节点(“遥控器”)。 ## 场景中的环境音效控制器节点(“遥控器”)。
## 你可以将此节点放置在任何场景中,用于配置和触发不同的 VibeGroup。 ## 你可以将此节点放置在任何场景中,用于配置和触发不同的 VibeGroup。
## 它通过调用全局的 VibeManager 来实现功能。 ## 它通过调用全局的 VibeManager 来实现功能。
# VibeGroup 库。使用字典可以方便地通过名称(如 "default", "battle")来引用不同的音轨组。 var autoplay_group: StringName
# 你可以在 Inspector 中配置这个字典,将名称映射到 VibeGroup.tres 资源文件。
@export var vibe_groups: Dictionary[String, VibeGroup] = {"default": null}
# 当此节点进入场景树时,是否自动播放指定的 VibeGroup。
@export var autoplay: bool = true
const autoplay_group_name := &"default"
func _ready(): func _ready():
# 仅在游戏运行时执行 # 仅在游戏运行时执行
if Engine.is_editor_hint(): if Engine.is_editor_hint():
return return
if autoplay_group:
switch_to(autoplay_group)
if autoplay:
if vibe_groups.has(autoplay_group_name): # var debug_audio_manager: AudioManager
switch_to(autoplay_group_name)
func _debug_play(play: bool):
# if not debug_audio_manager:
# debug_audio_manager = AudioManager.new()
# add_child(debug_audio_manager)
# if play:
# debug_audio_manager.play_group(autoplay_group)
# else:
# debug_audio_manager.stop_group(autoplay_group)
if play:
AudioManager.play_group(autoplay_group)
else: else:
printerr( AudioManager.stop_group(autoplay_group)
(
"VibeSfx: Autoplay group '%s' not found in vibe_groups dictionary."
% autoplay_group_name var current_group: StringName
)
)
## 公共方法:切换到指定的 VibeGroup。 ## 公共方法:切换到指定的 VibeGroup。
## 可以在其他脚本(如过场动画控制器、区域触发器)中调用此方法。 ## 可以在其他脚本(如过场动画控制器、区域触发器)中调用此方法。
## example: $VibeSfx.switch_to("event_1_vibe") ## example: $VibeSfx.switch_to("event_1_vibe")
func switch_to(group_name: StringName): func switch_to(group_name: StringName):
if vibe_groups.has(group_name): if current_group:
var group_resource: VibeGroup = vibe_groups[group_name] AudioManager.stop_group(current_group)
if is_instance_valid(group_resource): current_group = group_name
AudioManager.play_group(group_resource) AudioManager.play_group(group_name)
else:
printerr("VibeSfx: Resource for group '%s' is null or invalid." % group_name)
else:
printerr("VibeSfx: Group name '%s' not found." % group_name)
## 公共方法:停止所有由 VibeManager 控制的环境音。
func stop(): func stop():
AudioManager.stop_all() if current_group:
AudioManager.stop_group(current_group)
func _exit_tree() -> void:
stop()
func _get(property: StringName) -> Variant:
if property == "autoplay_group":
return autoplay_group
return null
func _set(property: StringName, value: Variant) -> bool:
if property == "autoplay_group":
if current_group:
AudioManager.stop_group(current_group)
current_group = ""
autoplay_group = value
return true
return false
func _get_property_list() -> Array[Dictionary]:
var hint_str = ""
if is_node_ready():
hint_str = ",".join(AudioManager.VIBE_GROUPS)
return [
{
"name": "autoplay_group",
"type": TYPE_STRING,
"hint": PROPERTY_HINT_ENUM_SUGGESTION,
"hint_string": hint_str
}
]

View File

@ -26,7 +26,7 @@ const CANVAS_LAYER_GROUND_MASK = 14
const CANVAS_LAYER_EFFECT = 11 const CANVAS_LAYER_EFFECT = 11
# 全屏 shading # 全屏 shading
const CANVAS_LAYER_SHADING = 10 const CANVAS_LAYER_SHADING = 10
# 小游戏 # 小游戏与特写
const CANVAS_LAYER_LITTLE_GAME = 5 const CANVAS_LAYER_LITTLE_GAME = 5
# 前景层 # 前景层
const CANVAS_LAYER_FG = 2 const CANVAS_LAYER_FG = 2

View File

@ -94,7 +94,7 @@ func unlock_player():
# player.operational = val # player.operational = val
func player_action(action_code : int, auto_quit := false): func player_action(action_code: int, auto_quit := false):
var player = get_player() var player = get_player()
if player: if player:
player.player_action(action_code, auto_quit) player.player_action(action_code, auto_quit)
@ -332,6 +332,14 @@ func _jump_back_to_index_and_quit_main():
get_tree().paused = false get_tree().paused = false
func enter_main_scene():
# 从 index 进入 main
# get_tree().change_scene_to_packed.call_deferred(main_scene)
get_tree().change_scene_to_file.call_deferred("res://scene/main.tscn")
pause_counter = 0
get_tree().paused = false
var prop_bag_scene = preload("res://scene/prop/prop_bag.tscn") var prop_bag_scene = preload("res://scene/prop/prop_bag.tscn")

View File

@ -44,8 +44,8 @@ buses/default_bus_layout="res://config/default_bus_layout.tres"
DebugMenu="*res://addons/debug_menu/debug_menu.tscn" DebugMenu="*res://addons/debug_menu/debug_menu.tscn"
GlobalConfigManager="*res://manager/config_manager/global_config_manager.gd" GlobalConfigManager="*res://manager/config_manager/global_config_manager.gd"
ArchiveManager="*res://manager/archive_manager/archive_manager.gd" ArchiveManager="*res://manager/archive_manager/archive_manager.gd"
AudioManager="*res://manager/audio_manager/audio_manager.tscn"
SceneManager="*res://manager/scene/scene_manager.gd" SceneManager="*res://manager/scene/scene_manager.gd"
AudioManager="*res://manager/audio_manager/audio_manager.gd"
EventManager="*res://manager/event_manager/event_manager.gd" EventManager="*res://manager/event_manager/event_manager.gd"
DialogueManager="*res://addons/dialogue_manager/dialogue_manager.gd" DialogueManager="*res://addons/dialogue_manager/dialogue_manager.gd"
GlobalFunctor="*res://manager/scene/global_functor.gd" GlobalFunctor="*res://manager/scene/global_functor.gd"

View File

@ -5,8 +5,6 @@ class_name Sfx extends AudioStreamPlayer
set(value): set(value):
mode = value mode = value
notify_property_list_changed() notify_property_list_changed()
# 默认 stream 会变成 default 值
@export var audio_dict: Dictionary[String, AudioStream]
# 当前播放状态注册;节点销毁前卸载 # 当前播放状态注册;节点销毁前卸载
# TODO BGM 过程抑制场景音效;场景音效随玩家运动呼吸 (结合 Sfx2D) # TODO BGM 过程抑制场景音效;场景音效随玩家运动呼吸 (结合 Sfx2D)
@ -23,29 +21,10 @@ func _ready() -> void:
bus = &"game_sfx" bus = &"game_sfx"
default_db = volume_db default_db = volume_db
if Engine.is_editor_hint(): if Engine.is_editor_hint():
audio_dict.erase("default")
return return
if stream:
audio_dict["default"] = stream
finished.connect(_on_finished) finished.connect(_on_finished)
func switch_stream(stream_name: String, play_next:= false, easing_duration := 1.0):
if not audio_dict.has(stream_name):
printerr("Audio stream not found in audio_dict: ", stream_name)
return
if easing_duration > 0:
easing_kill(easing_duration).tween_callback(func():
stream = audio_dict[stream_name]
if play_next:
play()
)
else:
stream = audio_dict[stream_name]
if play_next:
play()
func _on_finished() -> void: func _on_finished() -> void:
if mode == "场景背景音" and scene_loop: if mode == "场景背景音" and scene_loop:
play() play()

View File

@ -25,23 +25,27 @@ func _ready() -> void:
timer = Timer.new() timer = Timer.new()
timer.autostart = autoplay and loop and loop_round_time > 0.0 and not Engine.is_editor_hint() timer.autostart = autoplay and loop and loop_round_time > 0.0 and not Engine.is_editor_hint()
timer.one_shot = false timer.one_shot = false
timer.wait_time = max(1.0, loop_round_time) timer.wait_time = max(0.1, loop_round_time)
timer.timeout.connect(play) timer.timeout.connect(_on_timer_timeout)
add_child(timer) add_child(timer)
func _on_timer_timeout() -> void:
if not loop or loop_round_time <= 0.0:
timer.stop()
return
play()
func _on_finished() -> void: func _on_finished() -> void:
if not loop: if not loop:
timer.stop() timer.stop()
elif loop_round_time <= 0: else:
if loop_round_time <= 0:
timer.stop()
play() play()
func start_timer():
if timer.wait_time > 0:
timer.start()
# queue free 导致 sfx 无法播放,使用全局声源 # queue free 导致 sfx 无法播放,使用全局声源
func global_play() -> void: func global_play() -> void:
if stream: if stream:

View File

@ -6,9 +6,6 @@ class_name Closeup2D
# 退出信号,默认 arg 为 null可能是一个 bool 值,从 packed_scene 的 exit 信号中传递过来 # 退出信号,默认 arg 为 null可能是一个 bool 值,从 packed_scene 的 exit 信号中传递过来
signal exit(arg) signal exit(arg)
@export var action_key := 4
# 第一次交互时的气泡文字unrevealed -> revealed 如果为空则跳过
@export var first_interact_os_key := ""
@export var packed_scene: PackedScene @export var packed_scene: PackedScene
@export var quit_closeup_on_escape := true @export var quit_closeup_on_escape := true
var current_child: Node var current_child: Node
@ -18,19 +15,7 @@ func _ready() -> void:
super._ready() super._ready()
if Engine.is_editor_hint(): if Engine.is_editor_hint():
return return
interacted.connect(_close_up_interacted) interacted.connect(display)
func _close_up_interacted() -> void:
if interacted_times == 1 and first_interact_os_key:
SceneManager.freeze_player(0, action_key)
sign_mark.display_sign = false
var tween = await SceneManager.pop_os_with_str(first_interact_os_key)
tween.tween_callback(display)
tween.tween_callback(func(): sign_mark.display_sign = true)
else:
SceneManager.freeze_player(0, action_key)
display()
# 可以直接调用 # 可以直接调用

View File

@ -14,7 +14,6 @@ size = Vector2(25, 70)
[node name="Closeup" type="Sprite2D"] [node name="Closeup" type="Sprite2D"]
script = ExtResource("1_tvfr1") script = ExtResource("1_tvfr1")
enable_snapper = null
collision_width_and_x = Vector2(25, 0) collision_width_and_x = Vector2(25, 0)
unrevealed_sign_texture = ExtResource("2_dnubm") unrevealed_sign_texture = ExtResource("2_dnubm")
unmatched_sign_texture = ExtResource("3_dnubm") unmatched_sign_texture = ExtResource("3_dnubm")

View File

@ -22,6 +22,8 @@ enum { STATUS_NORAML, STATUS_TRANSITIONING, STATUS_INSPECTING_COVER, STATUS_INSP
sign_mark_offset = val sign_mark_offset = val
sign_mark_offset_updated.emit(val) sign_mark_offset_updated.emit(val)
# @export var entity_name: String = "" # @export var entity_name: String = ""
# 第一次交互时的气泡文字unrevealed -> revealed 如果为空则跳过
@export var first_interact_os_key := ""
@export var content_centered: bool = false @export var content_centered: bool = false
@export var action_key := 4 @export var action_key := 4
@export var collision_width_and_x := Vector2(20.0, 0): @export var collision_width_and_x := Vector2(20.0, 0):
@ -110,6 +112,20 @@ func _get_tr_content():
func _on_interacted() -> void: func _on_interacted() -> void:
if STATUS_TRANSITIONING == status:
return
if tried_times == 0 and first_interact_os_key:
SceneManager.freeze_player(0, action_key)
sign_mark.display_sign = false
var tween = await SceneManager.pop_os_with_str(first_interact_os_key)
tween.tween_callback(_do_action)
tween.tween_callback(func(): sign_mark.display_sign = true)
else:
SceneManager.freeze_player(0, action_key)
_do_action()
func _do_action() -> void:
if STATUS_TRANSITIONING == status: if STATUS_TRANSITIONING == status:
return return
if status == STATUS_NORAML: if status == STATUS_NORAML:

View File

@ -20,6 +20,7 @@ signal sign_mark_offset_updated
if is_node_ready(): if is_node_ready():
_check_sign_display() _check_sign_display()
@export var enable_snapper := true @export var enable_snapper := true
@export var action_key := 4
@export var collision_width_and_x := Vector2(20.0, 0): @export var collision_width_and_x := Vector2(20.0, 0):
set(val): set(val):
collision_width_and_x = val collision_width_and_x = val
@ -27,6 +28,8 @@ signal sign_mark_offset_updated
var shape = area2d.get_node("CollisionShape2D").shape var shape = area2d.get_node("CollisionShape2D").shape
shape.size.x = collision_width_and_x.x shape.size.x = collision_width_and_x.x
area2d.position.x = collision_width_and_x.y area2d.position.x = collision_width_and_x.y
# 第一次交互时的气泡文字unrevealed -> revealed 如果为空则跳过
@export var first_interact_os_key := ""
@export var unrevealed_sign_texture: Texture2D @export var unrevealed_sign_texture: Texture2D
@export var unmatched_sign_texture: Texture2D @export var unmatched_sign_texture: Texture2D
@export var matched_sign_texture: Texture2D @export var matched_sign_texture: Texture2D
@ -71,10 +74,10 @@ func _ready() -> void:
area2d.body_entered.connect(_reset) area2d.body_entered.connect(_reset)
area2d.body_exited.connect(_on_cancel) area2d.body_exited.connect(_on_cancel)
if enable_snapper: if enable_snapper:
sign_snapper.arrived.connect(_on_interacted) sign_snapper.arrived.connect(_pre_interacted)
else: else:
sign_snapper.enabled = false sign_snapper.enabled = false
sign_mark.interacted.connect(_on_interacted) sign_mark.interacted.connect(_pre_interacted)
sign_mark.cancel.connect(_on_cancel) sign_mark.cancel.connect(_on_cancel)
sign_mark.enabled = enabled sign_mark.enabled = enabled
# setup default value # setup default value
@ -138,6 +141,17 @@ func is_key_matched(key) -> bool:
) )
func _pre_interacted() -> void:
SceneManager.player_action(action_key)
if tried_times == 0 and first_interact_os_key:
sign_mark.display_sign = false
var tween = await SceneManager.pop_os_with_str(first_interact_os_key)
tween.tween_callback(_on_interacted)
tween.tween_callback(func(): sign_mark.display_sign = true)
else:
_on_interacted()
func _on_interacted() -> void: func _on_interacted() -> void:
interact_mutex.lock() interact_mutex.lock()
tried_times += 1 tried_times += 1

View File

@ -77,6 +77,5 @@ script = ExtResource("12_bxihn")
release_player_on_arrived = false release_player_on_arrived = false
radius = 10.0 radius = 10.0
delay_arrived = 0.1 delay_arrived = 0.1
action_on_arrived = 4
delay_after_action = 0.4 delay_after_action = 0.4
metadata/_custom_type_script = "uid://cnt01hiw52bmn" metadata/_custom_type_script = "uid://cnt01hiw52bmn"

View File

@ -0,0 +1,52 @@
extends Control
class_name ContentInspector
signal exit
@onready var label = $TipContainer/Label as Label
var tip_can_show = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_阅读")
var tip_can_hide = "Q: " + tr("ui_退出") + " " + "E: " + tr("ui_收起")
var displaying = false
var blinking_tween: Tween
func _ready() -> void:
_setup_content()
func _setup_content():
for c in get_children():
if c.name == "TipContainer":
continue
c.visible = displaying
# reset_tips
if displaying:
label.text = tip_can_hide
else:
label.text = tip_can_show
if blinking_tween and blinking_tween.is_valid():
blinking_tween.kill()
# tween tips
blinking_tween = create_tween()
blinking_tween.tween_property(label, "modulate:a", 0.8, 2.0)
blinking_tween.tween_property(label, "modulate:a", 1.0, 2.0)
blinking_tween.set_loops(100000)
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("interact"):
if not visible:
visible = true
displaying = false
_setup_content()
else:
displaying = not displaying
_setup_content()
get_viewport().set_input_as_handled()
# elif event.is_action_pressed("cancel"):
# exit.emit()
# visible = false
# get_viewport().set_input_as_handled()

View File

@ -0,0 +1 @@
uid://0dcbk75cd5pl

View File

@ -0,0 +1,31 @@
[gd_scene load_steps=3 format=3 uid="uid://dmysq4sxx8iqh"]
[ext_resource type="Script" uid="uid://0dcbk75cd5pl" path="res://scene/entity/ux/content_inspector.gd" id="1_4n727"]
[ext_resource type="FontVariation" uid="uid://1ryw42kej6lv" path="res://config/font_ui.tres" id="2_mtwgq"]
[node name="ContentInspector" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_4n727")
[node name="TipContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -20.0
offset_top = -40.0
offset_right = 20.0
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_bottom = 46
[node name="Label" type="Label" parent="TipContainer"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_mtwgq")

View File

@ -57,6 +57,8 @@ func _ready() -> void:
mask.color.a = 0.0 mask.color.a = 0.0
ground = get_node_or_null("Ground") as Ground2D ground = get_node_or_null("Ground") as Ground2D
if ground: if ground:
print("GroundLoader remove old ground:", ground.scene_name)
# remove_child(ground)
ground.queue_free() ground.queue_free()
# load save # load save
if not ignore_archive: if not ignore_archive:
@ -126,6 +128,7 @@ func _update_archive():
func _do_transition(scene_name: String) -> void: func _do_transition(scene_name: String) -> void:
# SceneManager.freeze_player(0) # SceneManager.freeze_player(0)
print("GroundLoader Transition to scene:", scene_name, "portal:", entrance_portal)
ground = get_node_or_null("Ground") as Ground2D ground = get_node_or_null("Ground") as Ground2D
if ground: if ground:
# 防止命名冲突 # 防止命名冲突

View File

@ -4,6 +4,7 @@
[node name="GroundLoader" type="Node2D"] [node name="GroundLoader" type="Node2D"]
script = ExtResource("1_6mjre") script = ExtResource("1_6mjre")
current_scene = "c01_s05"
[node name="BGLayer" type="CanvasLayer" parent="."] [node name="BGLayer" type="CanvasLayer" parent="."]
layer = -1 layer = -1

View File

@ -148,4 +148,4 @@ func _on_piano_interacted():
func show_interact_help(): func show_interact_help():
SceneManager.pop_center_notification(tr("ui_press_e")) SceneManager.pop_center_notification(tr("ui_intro_press_e"))

View File

@ -405,7 +405,7 @@ tracks/9/keys = {
"times": PackedFloat32Array(0, 5.5), "times": PackedFloat32Array(0, 5.5),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 0,
"values": [-10.0, 0.0] "values": [-20.0, -10.0]
} }
tracks/10/type = "value" tracks/10/type = "value"
tracks/10/imported = false tracks/10/imported = false

View File

@ -161,7 +161,6 @@ func _on_fall_off_finished() -> void:
func _setup_weird_bookstore() -> void: func _setup_weird_bookstore() -> void:
# 切换背景音效 # 切换背景音效
# $"写字声".stop()
$"环境音".stop() $"环境音".stop()
$"诡异环境音".play() $"诡异环境音".play()

View File

@ -22,6 +22,6 @@ func _on_ground_ready() -> void:
func _on_animation_finished(): func _on_animation_finished():
# 鬼差眼睛 # 鬼差眼睛
var ghost = $"../S10鬼差探头" var ghost = $"../DeployLayer/Closeup鬼差探头" as Closeup2D
ghost.play() ghost.display()
$"背景音效".easing_kill() $"背景音效".easing_kill()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=10 format=3 uid="uid://be57l2o3vxxtm"] [gd_scene load_steps=11 format=3 uid="uid://be57l2o3vxxtm"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_hhs2q"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_hhs2q"]
[ext_resource type="Script" uid="uid://cu74s33qyiax7" path="res://scene/ground/scene/c01/s10_animation.gd" id="2_4kx83"] [ext_resource type="Script" uid="uid://cu74s33qyiax7" path="res://scene/ground/scene/c01/s10_animation.gd" id="2_4kx83"]
@ -9,6 +9,7 @@
[ext_resource type="Script" uid="uid://bbg4vopj4apl6" path="res://scene/entity/audio/bgm_control.gd" id="5_2jx0x"] [ext_resource type="Script" uid="uid://bbg4vopj4apl6" path="res://scene/entity/audio/bgm_control.gd" id="5_2jx0x"]
[ext_resource type="PackedScene" uid="uid://bf6oxxe2e6vxj" path="res://scene/ground/script/c01/s10_鬼差探头.tscn" id="5_dnd0r"] [ext_resource type="PackedScene" uid="uid://bf6oxxe2e6vxj" path="res://scene/ground/script/c01/s10_鬼差探头.tscn" id="5_dnd0r"]
[ext_resource type="PackedScene" uid="uid://svvlohuicvhf" path="res://scene/entity/ambient/light.tscn" id="5_rw4mf"] [ext_resource type="PackedScene" uid="uid://svvlohuicvhf" path="res://scene/entity/ambient/light.tscn" id="5_rw4mf"]
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="8_2jx0x"]
[node name="S10" type="Node2D"] [node name="S10" type="Node2D"]
@ -45,6 +46,10 @@ sprite_frames = ExtResource("4_bhb7e")
animation = &"小蝶探头" animation = &"小蝶探头"
autoplay = "小蝶探头" autoplay = "小蝶探头"
[node name="Closeup鬼差探头" parent="Ground/DeployLayer" index="3" instance=ExtResource("8_2jx0x")]
packed_scene = ExtResource("5_dnd0r")
quit_closeup_on_escape = false
[node name="Light" parent="Ground/AmbientLayer" index="0" instance=ExtResource("5_rw4mf")] [node name="Light" parent="Ground/AmbientLayer" index="0" instance=ExtResource("5_rw4mf")]
position = Vector2(123, -20) position = Vector2(123, -20)
texture = null texture = null
@ -58,12 +63,8 @@ character = "小小蝶"
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 665, 150) points = PackedVector2Array(37, 150, 665, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
energy = 0.6 energy = 0.6
blend_mode = 1 blend_mode = 1
[node name="S10鬼差探头" parent="Ground" instance=ExtResource("5_dnd0r")]
modulate = Color(1, 1, 1, 0)
position = Vector2(33, -154)
[editable path="Ground"] [editable path="Ground"]

View File

@ -20,7 +20,7 @@ func _ready() -> void:
func _on_ground_ready() -> void: func _on_ground_ready() -> void:
pass SceneManager.pop_os_with_str("c02_s01_下黄包车")
# func _give_letter() -> void: # func _give_letter() -> void:

View File

@ -1,9 +1,8 @@
[gd_scene load_steps=10 format=3 uid="uid://bbs7yy5aofw1v"] [gd_scene load_steps=9 format=3 uid="uid://bbs7yy5aofw1v"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_c4tdi"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_c4tdi"]
[ext_resource type="Script" uid="uid://jkselt4d5q4r" path="res://scene/ground/scene/c02/s01_animation.gd" id="2_jfumy"] [ext_resource type="Script" uid="uid://jkselt4d5q4r" path="res://scene/ground/scene/c02/s01_animation.gd" id="2_jfumy"]
[ext_resource type="AudioStream" uid="uid://c2wgvynhg3mec" path="res://asset/audio/sfx/环境音/第一章/室外院子1.wav" id="3_engrn"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_bhi7l"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_vc2dw"]
[ext_resource type="Texture2D" uid="uid://d05pqud4yoxx3" path="res://asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png" id="5_j2ctx"] [ext_resource type="Texture2D" uid="uid://d05pqud4yoxx3" path="res://asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png" id="5_j2ctx"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="6_bhi7l"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="6_bhi7l"]
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/inspectable.tscn" id="7_vc2dw"] [ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/inspectable.tscn" id="7_vc2dw"]
@ -24,16 +23,10 @@ data = {
} }
oneshot_animation = "" oneshot_animation = ""
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("3_engrn") script = ExtResource("3_bhi7l")
autoplay = true autoplay_group = &"c02_楼道1"
bus = &"game_sfx" metadata/_custom_type_script = "uid://cpejxlfni6n52"
script = ExtResource("4_vc2dw")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("5_j2ctx") texture = ExtResource("5_j2ctx")
@ -57,6 +50,7 @@ note_key = "c02_芦昌路26"
[node name="Local寻人启事" parent="Ground/DeployLayer" index="3" instance=ExtResource("7_vc2dw")] [node name="Local寻人启事" parent="Ground/DeployLayer" index="3" instance=ExtResource("7_vc2dw")]
position = Vector2(236, -33) position = Vector2(236, -33)
texture = ExtResource("8_j2ctx") texture = ExtResource("8_j2ctx")
first_interact_os_key = "c02_s01_寻人启事"
texture_cover = ExtResource("9_bhi7l") texture_cover = ExtResource("9_bhi7l")
content_key = "c02_寻人启事_残破" content_key = "c02_寻人启事_残破"

View File

@ -37,6 +37,8 @@ func _on_ground_ready() -> void:
$"../DeployLayer/InteractableLeftPortal".interacted.connect(_on_try_exit) $"../DeployLayer/InteractableLeftPortal".interacted.connect(_on_try_exit)
if $"../DeployLayer/Ambush小蝉闪现".played:
$"../DeployLayer/Ambush小蝉闪现/小蝉".visible = false
flyer = $"../DeployLayer/Closeup刮海报" flyer = $"../DeployLayer/Closeup刮海报"
if data.flyer_shaven: if data.flyer_shaven:
@ -61,6 +63,12 @@ func _oneshot_wind():
$"冷飕飕Sfx".play() $"冷飕飕Sfx".play()
func xiaochan_disappear():
var xc = $"../DeployLayer/Ambush小蝉闪现/小蝉" as AnimatedSprite2D
xc.play()
create_tween().tween_property(xc, "modulate:a", 0.0, 3.0)
func _on_flyer_exit(arg): func _on_flyer_exit(arg):
if arg: if arg:
$"../DeployLayer/青岛啤酒".enabled = true $"../DeployLayer/青岛啤酒".enabled = true
@ -110,6 +118,7 @@ func _display_paper_man(play_sfx := true):
paper_man.get_node("Sfx").play() paper_man.get_node("Sfx").play()
paper_man.get_node("wall/CollisionShape2D").disabled = false paper_man.get_node("wall/CollisionShape2D").disabled = false
func _on_try_exit(): func _on_try_exit():
SceneManager.freeze_player(0) SceneManager.freeze_player(0)
# 退出公寓? # 退出公寓?
@ -117,6 +126,7 @@ func _on_try_exit():
await DialogueManager.dialogue_ended await DialogueManager.dialogue_ended
SceneManager.release_player() SceneManager.release_player()
func display_music_box(): func display_music_box():
# 展示八音盒 # 展示八音盒
music_box.visible = true music_box.visible = true
@ -124,6 +134,7 @@ func display_music_box():
# TODO 打开音效 # TODO 打开音效
SceneManager.pop_debug_dialog_info("音效", "显示八音盒") SceneManager.pop_debug_dialog_info("音效", "显示八音盒")
func check_if_show_shoes(): func check_if_show_shoes():
# 不论是否推出,都需要 enable 调整为 false # 不论是否推出,都需要 enable 调整为 false
$"../DeployLayer/Ambush推小鞋子".enabled = false $"../DeployLayer/Ambush推小鞋子".enabled = false

View File

@ -7,8 +7,8 @@
[ext_resource type="Texture2D" uid="uid://5428j51dwarc" path="res://asset/art/scene/c02/s02_大门过道/bg_过道背景.png" id="3_gjwum"] [ext_resource type="Texture2D" uid="uid://5428j51dwarc" path="res://asset/art/scene/c02/s02_大门过道/bg_过道背景.png" id="3_gjwum"]
[ext_resource type="AudioStream" uid="uid://o7fj0r0fbm1h" path="res://asset/audio/sfx/交互/第一章/sfx_冷飕飕.wav" id="4_36l5t"] [ext_resource type="AudioStream" uid="uid://o7fj0r0fbm1h" path="res://asset/audio/sfx/交互/第一章/sfx_冷飕飕.wav" id="4_36l5t"]
[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="4_wbif8"] [ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="4_wbif8"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="5_36l5t"]
[ext_resource type="Texture2D" uid="uid://r0n7qy4kr3w2" path="res://asset/art/ui/action_mark/UI场景切换.png" id="5_m1xet"] [ext_resource type="Texture2D" uid="uid://r0n7qy4kr3w2" path="res://asset/art/ui/action_mark/UI场景切换.png" id="5_m1xet"]
[ext_resource type="AudioStream" uid="uid://bew3slewru6j0" path="res://asset/audio/sfx/环境音/第一章/02_进门过道.wav" id="6_36l5t"]
[ext_resource type="Texture2D" uid="uid://b8pcnqvdddo5g" path="res://asset/art/prop/c02/海报特写/除鼠二杰.png" id="7_jg8g0"] [ext_resource type="Texture2D" uid="uid://b8pcnqvdddo5g" path="res://asset/art/prop/c02/海报特写/除鼠二杰.png" id="7_jg8g0"]
[ext_resource type="Texture2D" uid="uid://cvgw2mxrlr6io" path="res://asset/art/scene/c02/旧版/s02_走道/ux_进门鼠疫海报yz.png" id="7_wdwbi"] [ext_resource type="Texture2D" uid="uid://cvgw2mxrlr6io" path="res://asset/art/scene/c02/旧版/s02_走道/ux_进门鼠疫海报yz.png" id="7_wdwbi"]
[ext_resource type="Texture2D" uid="uid://5pl1b7cor715" path="res://asset/art/scene/c02/旧版/s02_走道/e_纸人.png" id="7_xsghn"] [ext_resource type="Texture2D" uid="uid://5pl1b7cor715" path="res://asset/art/scene/c02/旧版/s02_走道/e_纸人.png" id="7_xsghn"]
@ -68,16 +68,10 @@ oneshot_animation = ""
stream = ExtResource("4_36l5t") stream = ExtResource("4_36l5t")
mode = "交互与效果音" mode = "交互与效果音"
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="1"]
stream = ExtResource("6_36l5t") script = ExtResource("5_36l5t")
autoplay = true autoplay_group = &"c02_楼道1"
bus = &"game_sfx" metadata/_custom_type_script = "uid://cpejxlfni6n52"
script = ExtResource("14_jg8g0")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
self_modulate = Color(0.831373, 0.886275, 0.956863, 1) self_modulate = Color(0.831373, 0.886275, 0.956863, 1)
@ -127,9 +121,8 @@ content_key = "c02_海报1"
[node name="Closeup刮海报" parent="Ground/DeployLayer" index="6" instance=ExtResource("19_6wwyd")] [node name="Closeup刮海报" parent="Ground/DeployLayer" index="6" instance=ExtResource("19_6wwyd")]
position = Vector2(253, -31) position = Vector2(253, -31)
texture = ExtResource("10_jg8g0") texture = ExtResource("10_jg8g0")
first_interact_os_key = "c02_海报_剪辫子侦探"
packed_scene = ExtResource("11_jg8g0") packed_scene = ExtResource("11_jg8g0")
enable_snapper = true first_interact_os_key = "c02_海报_剪辫子侦探"
[node name="青岛啤酒" parent="Ground/DeployLayer" index="7" instance=ExtResource("12_0fckv")] [node name="青岛啤酒" parent="Ground/DeployLayer" index="7" instance=ExtResource("12_0fckv")]
position = Vector2(253, -31) position = Vector2(253, -31)
@ -138,7 +131,7 @@ texture_cover = ExtResource("16_vqhm5")
content_key = "c02_青岛啤酒" content_key = "c02_青岛啤酒"
[node name="鼠疫海报" parent="Ground/DeployLayer" index="8" instance=ExtResource("12_0fckv")] [node name="鼠疫海报" parent="Ground/DeployLayer" index="8" instance=ExtResource("12_0fckv")]
position = Vector2(439, -29) position = Vector2(442, -30)
texture_cover = ExtResource("7_wdwbi") texture_cover = ExtResource("7_wdwbi")
[node name="Ambush纸人" parent="Ground/DeployLayer" index="9" instance=ExtResource("8_52as8")] [node name="Ambush纸人" parent="Ground/DeployLayer" index="9" instance=ExtResource("8_52as8")]
@ -168,8 +161,9 @@ bus = &"game_sfx"
script = ExtResource("14_jg8g0") script = ExtResource("14_jg8g0")
[node name="Ambush杂物堆" parent="Ground/DeployLayer" index="10" instance=ExtResource("8_52as8")] [node name="Ambush杂物堆" parent="Ground/DeployLayer" index="10" instance=ExtResource("8_52as8")]
position = Vector2(387, 66) position = Vector2(358, 50)
trigger_mode = "interact" trigger_mode = "interact"
collision_width_and_x = Vector2(23.86, 0)
freeze_time = 1.0 freeze_time = 1.0
hook_method = "lumber_interacted" hook_method = "lumber_interacted"
@ -191,37 +185,40 @@ position = Vector2(507, 64)
title_filter = "c02" title_filter = "c02"
note_key = "c02_老鼠洞" note_key = "c02_老鼠洞"
[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="13"] [node name="Note大头娃娃" parent="Ground/DeployLayer" index="13" instance=ExtResource("3_fy0o1")]
position = Vector2(418, 41)
collision_width_and_x = Vector2(18.02, 0)
title_filter = "c02"
note_key = "c02_s02_大头娃娃头套"
[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="14"]
visible = false visible = false
position = Vector2(498, 0) position = Vector2(498, 0)
sprite_frames = ExtResource("19_q0axc") sprite_frames = ExtResource("19_q0axc")
animation = &"老鼠托小鞋子" animation = &"老鼠托小鞋子"
[node name="Interactable小鞋子" parent="Ground/DeployLayer" index="14" instance=ExtResource("13_ck13g")] [node name="Interactable小鞋子" parent="Ground/DeployLayer" index="15" instance=ExtResource("13_ck13g")]
position = Vector2(498, 65) position = Vector2(498, 65)
enabled = false enabled = false
mute_when_interacted = true mute_when_interacted = true
[node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="15" instance=ExtResource("8_52as8")] [node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="16" instance=ExtResource("8_52as8")]
position = Vector2(525, 61) position = Vector2(525, 61)
one_shot = false one_shot = false
freeze_time = 1.0 freeze_time = 1.0
hook_method = "check_if_show_shoes" hook_method = "check_if_show_shoes"
[node name="煤油灯" parent="Ground/DeployLayer" index="16" instance=ExtResource("17_mpkj1")] [node name="煤油灯" parent="Ground/DeployLayer" index="17" instance=ExtResource("17_mpkj1")]
position = Vector2(122, -15) position = Vector2(122, -15)
gaslight_energy = 2.0 gaslight_energy = 2.0
gaslight_ground_energy = 0.0 gaslight_ground_energy = 0.0
collision_width_and_x = true
one_shot = false one_shot = false
one_shot_max_times = true disable_prop_after_interacted = true
disable_prop_after_interacted = 1
interacted_texture = false
[node name="Closeup八音盒" parent="Ground/DeployLayer" index="17" instance=ExtResource("19_6wwyd")] [node name="Closeup八音盒" parent="Ground/DeployLayer" index="18" instance=ExtResource("19_6wwyd")]
position = Vector2(533, 65) position = Vector2(533, 65)
packed_scene = ExtResource("10_ifae7") packed_scene = ExtResource("10_ifae7")
enable_snapper = true first_interact_os_key = "c02_s02_八音盒"
[node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer/Closeup八音盒"] [node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer/Closeup八音盒"]
visible = false visible = false
@ -229,6 +226,17 @@ show_behind_parent = true
position = Vector2(0, 11) position = Vector2(0, 11)
texture = ExtResource("22_jg8g0") texture = ExtResource("22_jg8g0")
[node name="Ambush小蝉闪现" parent="Ground/DeployLayer" index="19" instance=ExtResource("8_52as8")]
position = Vector2(301, 52)
hook_method = "xiaochan_disappear"
[node name="小蝉" type="AnimatedSprite2D" parent="Ground/DeployLayer/Ambush小蝉闪现"]
position = Vector2(279, 10)
sprite_frames = ExtResource("19_q0axc")
animation = &"头套小蝉呼吸"
autoplay = "头套小蝉呼吸"
frame_progress = 0.346017
[node name="PointLight2D" type="PointLight2D" parent="Ground/AmbientLayer" index="0"] [node name="PointLight2D" type="PointLight2D" parent="Ground/AmbientLayer" index="0"]
position = Vector2(-124, 135) position = Vector2(-124, 135)
rotation = -0.405717 rotation = -0.405717

View File

@ -32,6 +32,7 @@ func _on_ground_ready() -> void:
if gate.interacted_times > 0: if gate.interacted_times > 0:
gate.get_node("Wall/CollisionShape2D").disabled = true gate.get_node("Wall/CollisionShape2D").disabled = true
else: else:
gate.interact_mismatch_failed.connect(_on_gate_failed)
gate.interacted.connect(_on_gate_interacted) gate.interacted.connect(_on_gate_interacted)
eavesdrop_window = $"../DeployLayer/李氏赖子房间人影" eavesdrop_window = $"../DeployLayer/李氏赖子房间人影"
@ -61,7 +62,7 @@ func _on_ground_ready() -> void:
new_bg.modulate.a = 1.0 new_bg.modulate.a = 1.0
# 火灾开始后,无需 enable # 火灾开始后,无需 enable
counter.get_node("点燃").modulate.a = 1.0 counter.get_node("点燃").modulate.a = 1.0
$"背景音效".switch_stream("火灾") $VibeSfx.switch_to("c02_火灾")
$"../DirectionalLight2D".energy = 0 $"../DirectionalLight2D".energy = 0
madman_npc = $"../DeployLayer/Npc井边疯子" madman_npc = $"../DeployLayer/Npc井边疯子"
@ -98,6 +99,7 @@ func _on_ground_ready() -> void:
await tween.finished await tween.finished
# 落地音效 # 落地音效
$"Sfx小鞋落地".play() $"Sfx小鞋落地".play()
SceneManager.pop_os_with_str("c02_s03_掉鞋子", false, false)
tween = create_tween() tween = create_tween()
tween.tween_property(fg, "modulate:a", 0.0, 1.5) tween.tween_property(fg, "modulate:a", 0.0, 1.5)
await tween.finished await tween.finished
@ -128,6 +130,12 @@ func cg_end() -> void:
create_tween().tween_property(fg, "modulate:a", 1.0, 1.5) create_tween().tween_property(fg, "modulate:a", 1.0, 1.5)
func _on_gate_failed() -> void:
if not ArchiveManager.get_global_value("c02_open_gate_first_failed"):
ArchiveManager.set_global_entry("c02_open_gate_first_failed", true)
SceneManager.pop_os_with_str("c02_s03_铁门")
func _on_gate_interacted() -> void: func _on_gate_interacted() -> void:
gate.get_node("Wall/CollisionShape2D").disabled = true gate.get_node("Wall/CollisionShape2D").disabled = true
@ -203,7 +211,7 @@ func _setup_bully_or_burning(reenter_scene := false):
$"../DeployLayer/霸凌/f1/Sfx2D霸凌童谣".play() $"../DeployLayer/霸凌/f1/Sfx2D霸凌童谣".play()
else: else:
bully_layer.visible = false bully_layer.visible = false
$"背景音效".switch_stream("火灾", true) $VibeSfx.switch_to("c02_火灾")
$"../DeployLayer/霸凌/f1/Sfx2D霸凌童谣".easing_kill() $"../DeployLayer/霸凌/f1/Sfx2D霸凌童谣".easing_kill()
bully_layer.get_node("Ambush点火游戏阻挡右移").enabled = false bully_layer.get_node("Ambush点火游戏阻挡右移").enabled = false
bully_layer.get_node("wall/CollisionShape2D").disabled = true bully_layer.get_node("wall/CollisionShape2D").disabled = true

View File

@ -2,14 +2,13 @@
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_0dylx"] [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_animation.gd" id="2_dt5aj"] [ext_resource type="Script" uid="uid://dsp5plrdkrsd7" path="res://scene/ground/scene/c02/s03_animation.gd" id="2_dt5aj"]
[ext_resource type="AudioStream" uid="uid://lp46utp018ac" path="res://asset/audio/sfx/环境音/第一章/03_一楼院子.wav" id="3_2y8cu"]
[ext_resource type="Texture2D" uid="uid://b3odt4ojsvu5n" path="res://asset/art/scene/c02/s03_公寓一楼院子/bg_一楼.png" id="3_sqv8l"] [ext_resource type="Texture2D" uid="uid://b3odt4ojsvu5n" path="res://asset/art/scene/c02/s03_公寓一楼院子/bg_一楼.png" id="3_sqv8l"]
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="4_gd6xp"] [ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="4_gd6xp"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_ygnci"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_ygnci"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="5_00b7a"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="5_00b7a"]
[ext_resource type="AudioStream" uid="uid://s7uigovfp5g3" path="res://asset/audio/sfx/环境音/第一章/火灾演出.wav" id="5_ygnci"]
[ext_resource type="Texture2D" uid="uid://f8yjp5ggr8qw" path="res://asset/art/scene/c02/s03_公寓一楼院子/算卦布.png" id="6_1tart"] [ext_resource type="Texture2D" uid="uid://f8yjp5ggr8qw" path="res://asset/art/scene/c02/s03_公寓一楼院子/算卦布.png" id="6_1tart"]
[ext_resource type="Texture2D" uid="uid://0uh6qaalhqju" path="res://asset/art/scene/c02/s11_一楼火灾/总背景/bg_院子1楼火灾.png" id="6_d7h4s"] [ext_resource type="Texture2D" uid="uid://0uh6qaalhqju" path="res://asset/art/scene/c02/s11_一楼火灾/总背景/bg_院子1楼火灾.png" id="6_d7h4s"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="6_lq23y"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="6_t48d1"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="6_t48d1"]
[ext_resource type="AudioStream" uid="uid://civuwccn6v6yk" path="res://asset/audio/sfx/交互/第一章/sfx_闷雷声.wav" id="6_vddfx"] [ext_resource type="AudioStream" uid="uid://civuwccn6v6yk" path="res://asset/audio/sfx/交互/第一章/sfx_闷雷声.wav" id="6_vddfx"]
[ext_resource type="Texture2D" uid="uid://bxqetnlx0bpv4" path="res://asset/art/scene/c02/门_贴图/1012保卫科.png" id="6_ygnci"] [ext_resource type="Texture2D" uid="uid://bxqetnlx0bpv4" path="res://asset/art/scene/c02/门_贴图/1012保卫科.png" id="6_ygnci"]
@ -31,6 +30,7 @@
[ext_resource type="Texture2D" uid="uid://d33jmss6vlhk7" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光2.png" id="12_ni5ro"] [ext_resource type="Texture2D" uid="uid://d33jmss6vlhk7" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光2.png" id="12_ni5ro"]
[ext_resource type="Texture2D" uid="uid://ch6uf4qi1i0h2" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕3.png" id="13_hw832"] [ext_resource type="Texture2D" uid="uid://ch6uf4qi1i0h2" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕3.png" id="13_hw832"]
[ext_resource type="Texture2D" uid="uid://b78jbthcfkod7" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光3.png" id="14_7pq5y"] [ext_resource type="Texture2D" uid="uid://b78jbthcfkod7" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光3.png" id="14_7pq5y"]
[ext_resource type="Texture2D" uid="uid://c8b80a75k3qw6" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_院子地上纸钱.png" id="14_qqdxs"]
[ext_resource type="Texture2D" uid="uid://douwcahbhr1wt" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群.png" id="18_crgo6"] [ext_resource type="Texture2D" uid="uid://douwcahbhr1wt" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群.png" id="18_crgo6"]
[ext_resource type="Texture2D" uid="uid://dqd645v3k4yar" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人.png" id="19_vddfx"] [ext_resource type="Texture2D" uid="uid://dqd645v3k4yar" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人.png" id="19_vddfx"]
[ext_resource type="Texture2D" uid="uid://dy55syw4my0qo" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_水井.png" id="21_4n8vm"] [ext_resource type="Texture2D" uid="uid://dy55syw4my0qo" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_水井.png" id="21_4n8vm"]
@ -287,32 +287,23 @@ data = {
} }
oneshot_animation = "" oneshot_animation = ""
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] [node name="Sfx闷雷" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("3_2y8cu")
autoplay = true
bus = &"game_sfx"
script = ExtResource("4_ygnci")
mode = "场景背景音"
audio_dict = Dictionary[String, AudioStream]({
"火灾": ExtResource("5_ygnci")
})
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx闷雷" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
stream = ExtResource("6_vddfx") stream = ExtResource("6_vddfx")
bus = &"game_sfx" bus = &"game_sfx"
script = ExtResource("4_ygnci") script = ExtResource("4_ygnci")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx小鞋落地" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"] [node name="Sfx小鞋落地" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
stream = ExtResource("7_df1yo") stream = ExtResource("7_df1yo")
bus = &"game_sfx" bus = &"game_sfx"
script = ExtResource("4_ygnci") script = ExtResource("4_ygnci")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="2"]
script = ExtResource("6_lq23y")
autoplay_group = &"c02_楼道2"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
light_mask = 5 light_mask = 5
texture = ExtResource("3_sqv8l") texture = ExtResource("3_sqv8l")
@ -378,7 +369,8 @@ matched_sign_texture = null
[node name="Note血迹" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_t48d1")] [node name="Note血迹" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_t48d1")]
position = Vector2(523, 78) position = Vector2(523, 78)
note_key = "notes_干掉的血迹" title_filter = "c02"
note_key = "c02_s03_干掉的血迹"
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Ground/DeployLayer/Note血迹"] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Ground/DeployLayer/Note血迹"]
self_modulate = Color(0.255659, 0.255659, 0.255659, 1) self_modulate = Color(0.255659, 0.255659, 0.255659, 1)
@ -435,7 +427,12 @@ energy = 0.7
texture = SubResource("GradientTexture2D_kyfht") texture = SubResource("GradientTexture2D_kyfht")
[node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="10"] [node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="10"]
visible = false
[node name="地上纸钱" type="Sprite2D" parent="Ground/DeployLayer/新背景_奠"]
z_index = -4
position = Vector2(0, -120)
texture = ExtResource("14_qqdxs")
centered = false
[node name="奠1" type="Sprite2D" parent="Ground/DeployLayer/新背景_奠"] [node name="奠1" type="Sprite2D" parent="Ground/DeployLayer/新背景_奠"]
position = Vector2(199.5, -3) position = Vector2(199.5, -3)
@ -535,11 +532,8 @@ texture = ExtResource("6_1tart")
position = Vector2(290, 1) position = Vector2(290, 1)
gaslight_energy = 1.5 gaslight_energy = 1.5
gaslight_ground_energy = 0.7 gaslight_ground_energy = 0.7
collision_width_and_x = true
mute_when_interacted = false mute_when_interacted = false
one_shot = false
disable_prop_after_interacted = true disable_prop_after_interacted = true
interacted_texture = false
[node name="煤油灯2" parent="Ground/DeployLayer" index="17" instance=ExtResource("10_jme4f")] [node name="煤油灯2" parent="Ground/DeployLayer" index="17" instance=ExtResource("10_jme4f")]
position = Vector2(610, 1) position = Vector2(610, 1)
@ -547,11 +541,8 @@ gaslight_texture = ExtResource("11_g0qhj")
ground_light_texture = ExtResource("12_ni5ro") ground_light_texture = ExtResource("12_ni5ro")
gaslight_energy = 1.5 gaslight_energy = 1.5
gaslight_ground_energy = 0.7 gaslight_ground_energy = 0.7
collision_width_and_x = true
mute_when_interacted = false mute_when_interacted = false
one_shot = false
disable_prop_after_interacted = true disable_prop_after_interacted = true
interacted_texture = false
[node name="煤油灯3" parent="Ground/DeployLayer" index="18" instance=ExtResource("10_jme4f")] [node name="煤油灯3" parent="Ground/DeployLayer" index="18" instance=ExtResource("10_jme4f")]
position = Vector2(857, 1) position = Vector2(857, 1)
@ -559,11 +550,8 @@ gaslight_texture = ExtResource("13_hw832")
ground_light_texture = ExtResource("14_7pq5y") ground_light_texture = ExtResource("14_7pq5y")
gaslight_energy = 1.5 gaslight_energy = 1.5
gaslight_ground_energy = 0.7 gaslight_ground_energy = 0.7
collision_width_and_x = true
mute_when_interacted = false mute_when_interacted = false
one_shot = false
disable_prop_after_interacted = true disable_prop_after_interacted = true
interacted_texture = false
[node name="井" type="Sprite2D" parent="Ground/DeployLayer" index="19"] [node name="井" type="Sprite2D" parent="Ground/DeployLayer" index="19"]
self_modulate = Color(0.739288, 0.739288, 0.739288, 1) self_modulate = Color(0.739288, 0.739288, 0.739288, 1)
@ -581,14 +569,12 @@ texture = ExtResource("22_3y5s5")
[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="21" instance=ExtResource("23_81juy")] [node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="21" instance=ExtResource("23_81juy")]
position = Vector2(466, 3) position = Vector2(466, 3)
packed_scene = ExtResource("24_0o4rt") packed_scene = ExtResource("24_0o4rt")
enable_snapper = true
collision_width_and_x = Vector2(40, 0) collision_width_and_x = Vector2(40, 0)
[node name="Closeup井" parent="Ground/DeployLayer" index="22" instance=ExtResource("23_81juy")] [node name="Closeup井" parent="Ground/DeployLayer" index="22" instance=ExtResource("23_81juy")]
z_index = 6 z_index = 6
position = Vector2(2063, 50) position = Vector2(2063, 50)
packed_scene = ExtResource("26_yy4fp") packed_scene = ExtResource("26_yy4fp")
enable_snapper = true
[node name="Ambush惊悚闪电" parent="Ground/DeployLayer" index="23" instance=ExtResource("25_iyaiw")] [node name="Ambush惊悚闪电" parent="Ground/DeployLayer" index="23" instance=ExtResource("25_iyaiw")]
position = Vector2(1319, 40) position = Vector2(1319, 40)
@ -693,6 +679,7 @@ shape = SubResource("RectangleShape2D_d7h4s")
disabled = true disabled = true
[node name="火灾" type="Node2D" parent="Ground/DeployLayer" index="28"] [node name="火灾" type="Node2D" parent="Ground/DeployLayer" index="28"]
visible = false
[node name="右窗" type="AnimatedSprite2D" parent="Ground/DeployLayer/火灾"] [node name="右窗" type="AnimatedSprite2D" parent="Ground/DeployLayer/火灾"]
position = Vector2(1586, -21) position = Vector2(1586, -21)

View File

@ -24,18 +24,20 @@ func _on_ground_ready() -> void:
little_hand = $"../DeployLayer/小手讨东西" little_hand = $"../DeployLayer/小手讨东西"
if little_hand.tried_times == 0: if little_hand.tried_times == 0:
little_hand.interacted.connect(_on_little_hand_first_interacted, CONNECT_ONE_SHOT) little_hand.interacted.connect(
_on_little_hand_first_interacted.call_deferred, CONNECT_ONE_SHOT
)
func _on_little_hand_first_interacted() -> void: func _on_little_hand_first_interacted() -> void:
# 9 小手交互,吓摔倒 # 9 小手交互,吓摔倒
little_hand.enabled = false little_hand.enabled = false
var duration = 3.0 var duration = 3.0
SceneManager.pop_os_with_str(tr("c02_小手出现摔倒"), false, false)
SceneManager.freeze_player(duration, 9) SceneManager.freeze_player(duration, 9)
get_tree().create_timer(1.5).timeout.connect($"Sfx摔倒".play) get_tree().create_timer(1.5).timeout.connect($"Sfx摔倒".play)
await get_tree().create_timer(duration).timeout await get_tree().create_timer(duration).timeout
SceneManager.release_player() SceneManager.release_player()
little_hand.enabled = true little_hand.enabled = true

View File

@ -3,10 +3,10 @@
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_2jej0"] [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_animation.gd" id="2_jyere"] [ext_resource type="Script" uid="uid://dmhh4g47bdxxy" path="res://scene/ground/scene/c02/s04_animation.gd" id="2_jyere"]
[ext_resource type="Texture2D" uid="uid://7jvg2flkapj3" path="res://asset/art/scene/c02/s04_保卫科/bg_保卫科.png" id="3_66gue"] [ext_resource type="Texture2D" uid="uid://7jvg2flkapj3" path="res://asset/art/scene/c02/s04_保卫科/bg_保卫科.png" id="3_66gue"]
[ext_resource type="AudioStream" uid="uid://6gttowdwmado" path="res://asset/audio/sfx/环境音/第一章/房间内部场景1.wav" id="3_dlq1i"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_ffvrp"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_ffvrp"]
[ext_resource type="SpriteFrames" uid="uid://c2sjavnptjn" path="res://asset/art/gif/c02_保卫科/c02_保卫科_frames.tres" id="4_svuj3"] [ext_resource type="SpriteFrames" uid="uid://c2sjavnptjn" path="res://asset/art/gif/c02_保卫科/c02_保卫科_frames.tres" id="4_svuj3"]
[ext_resource type="Texture2D" uid="uid://bnyf8m63ltgh0" path="res://asset/art/scene/c02/s04_保卫科/l_香.png" id="5_cy26p"] [ext_resource type="Texture2D" uid="uid://bnyf8m63ltgh0" path="res://asset/art/scene/c02/s04_保卫科/l_香.png" id="5_cy26p"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="5_g8amr"]
[ext_resource type="AudioStream" uid="uid://c26x8f18w6is0" path="res://asset/audio/sfx/旧版/c02/撞到柜子.mp3" id="5_xy3nq"] [ext_resource type="AudioStream" uid="uid://c26x8f18w6is0" path="res://asset/audio/sfx/旧版/c02/撞到柜子.mp3" id="5_xy3nq"]
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="6_66gue"] [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="6_66gue"]
[ext_resource type="PackedScene" uid="uid://b8i6tqwdvvddy" path="res://scene/ground/script/c02/花名册.tscn" id="6_fvlg0"] [ext_resource type="PackedScene" uid="uid://b8i6tqwdvvddy" path="res://scene/ground/script/c02/花名册.tscn" id="6_fvlg0"]
@ -39,23 +39,17 @@ data = {
} }
oneshot_animation = "" oneshot_animation = ""
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] [node name="Sfx摔倒" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("3_dlq1i")
autoplay = true
bus = &"game_sfx"
script = ExtResource("4_ffvrp")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx摔倒" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
stream = ExtResource("5_xy3nq") stream = ExtResource("5_xy3nq")
bus = &"game_sfx" bus = &"game_sfx"
script = ExtResource("4_ffvrp") script = ExtResource("4_ffvrp")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="1"]
script = ExtResource("5_g8amr")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
light_mask = 5 light_mask = 5
position = Vector2(47, 2) position = Vector2(47, 2)
@ -88,19 +82,17 @@ texture = ExtResource("6_gk1h4")
[node name="Closeup折锡纸" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_66gue")] [node name="Closeup折锡纸" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_66gue")]
position = Vector2(189, 15) position = Vector2(189, 15)
packed_scene = ExtResource("7_fvlg0") packed_scene = ExtResource("7_fvlg0")
enable_snapper = null first_interact_os_key = "c02_保卫科祭台os"
[node name="Closeup老鼠精" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_66gue")] [node name="Closeup老鼠精" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_66gue")]
position = Vector2(207.5, -40.5) position = Vector2(207.5, -40.5)
texture = ExtResource("11_ffvrp") texture = ExtResource("11_ffvrp")
packed_scene = ExtResource("8_cm3g6") packed_scene = ExtResource("8_cm3g6")
enable_snapper = null
[node name="Closeup花名册" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_66gue")] [node name="Closeup花名册" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_66gue")]
position = Vector2(351, 31) position = Vector2(351, 31)
first_interact_os_key = "c02_保卫科花名册os"
packed_scene = ExtResource("6_fvlg0") packed_scene = ExtResource("6_fvlg0")
enable_snapper = null first_interact_os_key = "c02_保卫科花名册os"
[node name="煤油灯" parent="Ground/DeployLayer" index="6" instance=ExtResource("8_wpvss")] [node name="煤油灯" parent="Ground/DeployLayer" index="6" instance=ExtResource("8_wpvss")]
position = Vector2(370, 39) position = Vector2(370, 39)
@ -108,7 +100,6 @@ animation_low_mode = true
hide_texture = true hide_texture = true
gaslight_texture = ExtResource("9_a43aq") gaslight_texture = ExtResource("9_a43aq")
ground_light_texture = ExtResource("10_svuj3") ground_light_texture = ExtResource("10_svuj3")
enable_snapper = null
[node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"] [node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"]
shape = SubResource("RectangleShape2D_gk1h4") shape = SubResource("RectangleShape2D_gk1h4")

View File

@ -58,7 +58,11 @@ func mouse_pick_meat() -> void:
func _on_madman_interacted() -> void: func _on_madman_interacted() -> void:
if ArchiveManager.get_global_value("c02_madman_interacted"):
return
ArchiveManager.set_global_entry("c02_madman_interacted", true) ArchiveManager.set_global_entry("c02_madman_interacted", true)
await DialogueManager.dialogue_ended
SceneManager.pop_os_with_str(tr("c02_一楼疯子互动后"))
func wood_puppet() -> void: func wood_puppet() -> void:

View File

@ -1,10 +1,9 @@
[gd_scene load_steps=36 format=3 uid="uid://cp8d3ag5nbjq0"] [gd_scene load_steps=35 format=3 uid="uid://cp8d3ag5nbjq0"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_6w6et"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_6w6et"]
[ext_resource type="Script" uid="uid://dydpmjpcvt3v1" path="res://scene/ground/scene/c02/s05_animation.gd" id="2_70lf6"] [ext_resource type="Script" uid="uid://dydpmjpcvt3v1" path="res://scene/ground/scene/c02/s05_animation.gd" id="2_70lf6"]
[ext_resource type="AudioStream" uid="uid://r5b8qi54asdk" path="res://asset/audio/sfx/环境音/第一章/楼道场景4.wav" id="3_kpaw8"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_laquj"]
[ext_resource type="Texture2D" uid="uid://dbtepltemtmy2" path="res://asset/art/scene/c02/s05_一楼内侧楼道/bg_楼道背景.png" id="3_rcuxq"] [ext_resource type="Texture2D" uid="uid://dbtepltemtmy2" path="res://asset/art/scene/c02/s05_一楼内侧楼道/bg_楼道背景.png" id="3_rcuxq"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_20mbg"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_tueh3"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_tueh3"]
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="7_mrltr"] [ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="7_mrltr"]
[ext_resource type="Texture2D" uid="uid://bn47plsx5coug" path="res://asset/art/scene/c02/s05_一楼内侧楼道/l_煤油灯光效.png" id="8_mrltr"] [ext_resource type="Texture2D" uid="uid://bn47plsx5coug" path="res://asset/art/scene/c02/s05_一楼内侧楼道/l_煤油灯光效.png" id="8_mrltr"]
@ -111,16 +110,10 @@ data = {
} }
oneshot_animation = "" oneshot_animation = ""
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("3_kpaw8") script = ExtResource("3_laquj")
autoplay = true autoplay_group = &"c02_楼道1"
bus = &"game_sfx" metadata/_custom_type_script = "uid://cpejxlfni6n52"
script = ExtResource("4_20mbg")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
light_mask = 5 light_mask = 5
@ -204,7 +197,7 @@ texture = ExtResource("8_mrltr")
[node name="Closeup戏台" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_2yvhw")] [node name="Closeup戏台" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_2yvhw")]
position = Vector2(320, 23) position = Vector2(320, 23)
packed_scene = ExtResource("11_2yvhw") packed_scene = ExtResource("11_2yvhw")
enable_snapper = null first_interact_os_key = "c02_一楼戏台"
[node name="Note一楼内侧通道" parent="Ground/DeployLayer" index="7" instance=ExtResource("10_8t4w6")] [node name="Note一楼内侧通道" parent="Ground/DeployLayer" index="7" instance=ExtResource("10_8t4w6")]
position = Vector2(394, 26) position = Vector2(394, 26)
@ -222,7 +215,7 @@ texture = ExtResource("15_s2g5k")
[node name="Interactable粘鼠板" parent="Ground/DeployLayer" index="10" instance=ExtResource("13_uj0pt")] [node name="Interactable粘鼠板" parent="Ground/DeployLayer" index="10" instance=ExtResource("13_uj0pt")]
position = Vector2(604, 81) position = Vector2(604, 81)
enable_snapper = null first_interact_os_key = "c02_一楼粘鼠板"
disable_prop_after_interacted = true disable_prop_after_interacted = true
interacted_texture = ExtResource("16_jknyg") interacted_texture = ExtResource("16_jknyg")
prop_key = "prop_粘鼠板" prop_key = "prop_粘鼠板"

View File

@ -40,7 +40,13 @@ func _on_ground_ready() -> void:
mice_hole.enabled = true mice_hole.enabled = true
else: else:
mice_hole.enabled = false mice_hole.enabled = false
gas_light_upon_hole.lighted.connect(func(): mice_hole.enabled = true) gas_light_upon_hole.lighted.connect(func():
mice_hole.enabled = true
get_tree().create_timer(1.5).timeout.connect(
SceneManager.pop_os_with_str.bind(tr("c02_二楼血脚印"))
)
)
closeup_ball = $"../DeployLayer/Closeup弹珠游戏" as Closeup2D closeup_ball = $"../DeployLayer/Closeup弹珠游戏" as Closeup2D

View File

@ -4,7 +4,6 @@
[ext_resource type="Script" uid="uid://cbt0ubygchxvv" path="res://scene/ground/scene/c02/s06_animation.gd" id="2_4dg6u"] [ext_resource type="Script" uid="uid://cbt0ubygchxvv" path="res://scene/ground/scene/c02/s06_animation.gd" id="2_4dg6u"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_h3h1a"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_h3h1a"]
[ext_resource type="Texture2D" uid="uid://6ol2om68cd1q" path="res://asset/art/scene/c02/s06_二楼楼道/bg_背景.png" id="3_och2w"] [ext_resource type="Texture2D" uid="uid://6ol2om68cd1q" path="res://asset/art/scene/c02/s06_二楼楼道/bg_背景.png" id="3_och2w"]
[ext_resource type="AudioStream" uid="uid://dvc2emnfcmabx" path="res://asset/audio/sfx/环境音/白噪音/白噪声楼道1.wav" id="3_tqnu8"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_2e08x"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_2e08x"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_haidv"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_haidv"]
[ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="5_3p5ta"] [ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="5_3p5ta"]
@ -17,6 +16,7 @@
[ext_resource type="Texture2D" uid="uid://b7uo33bdiwpl3" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光4.png" id="8_7x2h6"] [ext_resource type="Texture2D" uid="uid://b7uo33bdiwpl3" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光4.png" id="8_7x2h6"]
[ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/c02_公寓过道_frames.tres" id="8_nh8we"] [ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/c02_公寓过道_frames.tres" id="8_nh8we"]
[ext_resource type="PackedScene" uid="uid://8frowlq301" path="res://scene/ground/script/c02/s00_跟随的老鼠.tscn" id="9_58d45"] [ext_resource type="PackedScene" uid="uid://8frowlq301" path="res://scene/ground/script/c02/s00_跟随的老鼠.tscn" id="9_58d45"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="10_h3h1a"]
[ext_resource type="SpriteFrames" uid="uid://c8dl7c68f1yb0" path="res://asset/art/gif/c02_二楼/c02_二楼_frames.tres" id="10_och2w"] [ext_resource type="SpriteFrames" uid="uid://c8dl7c68f1yb0" path="res://asset/art/gif/c02_二楼/c02_二楼_frames.tres" id="10_och2w"]
[ext_resource type="PackedScene" uid="uid://b50n0hvs4yh75" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.tscn" id="10_p6da7"] [ext_resource type="PackedScene" uid="uid://b50n0hvs4yh75" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.tscn" id="10_p6da7"]
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="11_owxx3"] [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="11_owxx3"]
@ -851,27 +851,16 @@ oneshot_animation = ""
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"] [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
script = ExtResource("3_h3h1a") script = ExtResource("3_h3h1a")
autoplay_group = &"c02_楼道2"
metadata/_custom_type_script = "uid://cpejxlfni6n52" metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] [node name="Sfx翻找东西" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
stream = ExtResource("3_tqnu8")
volume_db = -3.0
autoplay = true
bus = &"game_sfx"
script = ExtResource("4_2e08x")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx翻找东西" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
stream = ExtResource("5_lh55k") stream = ExtResource("5_lh55k")
bus = &"game_sfx" bus = &"game_sfx"
script = ExtResource("4_2e08x") script = ExtResource("4_2e08x")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx擦亮火柴" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"] [node name="Sfx擦亮火柴" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
stream = ExtResource("5_wywax") stream = ExtResource("5_wywax")
bus = &"game_sfx" bus = &"game_sfx"
script = ExtResource("4_2e08x") script = ExtResource("4_2e08x")
@ -902,8 +891,8 @@ status = "locked"
matched_sign_texture = null matched_sign_texture = null
[node name="portal_2" parent="Ground/DeployLayer" index="3" instance=ExtResource("4_haidv")] [node name="portal_2" parent="Ground/DeployLayer" index="3" instance=ExtResource("4_haidv")]
position = Vector2(797, 17) position = Vector2(222, 14)
debug_note = "瞎子卧室" debug_note = "瞎子理发店"
portal_name = "2" portal_name = "2"
target_scene = "c03_s01" target_scene = "c03_s01"
holding = true holding = true
@ -915,7 +904,13 @@ prop_key = "prop_2014钥匙"
position = Vector2(802, -76) position = Vector2(802, -76)
texture = ExtResource("7_v3hjg") texture = ExtResource("7_v3hjg")
[node name="Pro小蝉上楼" parent="Ground/DeployLayer" index="5" instance=ExtResource("10_p6da7")] [node name="Note楼梯杂物堆" parent="Ground/DeployLayer" index="5" instance=ExtResource("10_h3h1a")]
position = Vector2(801, 46)
sign_mark_offset = Vector2(0, -100)
title_filter = "c02"
note_key = "c02_二楼楼梯杂物堆"
[node name="Pro小蝉上楼" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_p6da7")]
visible = false visible = false
position = Vector2(646, 63) position = Vector2(646, 63)
sprite_frames = ExtResource("23_2e08x") sprite_frames = ExtResource("23_2e08x")
@ -930,12 +925,10 @@ move_configs = Array[Dictionary]([{
}]) }])
debug_mov_animation = "小小小蝶动画(跑)" debug_mov_animation = "小小小蝶动画(跑)"
[node name="煤油灯" parent="Ground/DeployLayer" index="6" instance=ExtResource("5_3p5ta")] [node name="煤油灯" parent="Ground/DeployLayer" index="7" instance=ExtResource("5_3p5ta")]
position = Vector2(616, -14) position = Vector2(616, -14)
ground_light_texture = ExtResource("8_7x2h6") ground_light_texture = ExtResource("8_7x2h6")
ground_height_offset = 15.0 ground_height_offset = 15.0
enable_snapper = null
one_shot = false
disable_prop_after_interacted = true disable_prop_after_interacted = true
[node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"] [node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"]
@ -945,37 +938,34 @@ shape = SubResource("RectangleShape2D_lh55k")
position = Vector2(0, 15) position = Vector2(0, 15)
texture = ExtResource("8_7x2h6") texture = ExtResource("8_7x2h6")
[node name="煤油灯2" parent="Ground/DeployLayer" index="7" instance=ExtResource("5_3p5ta")] [node name="煤油灯2" parent="Ground/DeployLayer" index="8" instance=ExtResource("5_3p5ta")]
position = Vector2(329, -14) position = Vector2(329, -14)
ground_light_texture = ExtResource("6_vbvbc") ground_light_texture = ExtResource("6_vbvbc")
gaslight_energy = 2.0 gaslight_energy = 2.0
ground_height_offset = 15.0 ground_height_offset = 15.0
enable_snapper = null
one_shot = false
disable_prop_after_interacted = true disable_prop_after_interacted = true
[node name="Interactable老鼠洞" parent="Ground/DeployLayer" index="8" instance=ExtResource("7_0d746")] [node name="Interactable老鼠洞" parent="Ground/DeployLayer" index="9" instance=ExtResource("7_0d746")]
position = Vector2(610, 50) position = Vector2(610, 50)
enabled = false enabled = false
enable_snapper = null
one_shot_max_times = 2 one_shot_max_times = 2
disable_prop_after_interacted = true disable_prop_after_interacted = true
prop_key = "prop_小鞋子1" prop_key = "prop_小鞋子1"
prop_key2 = "prop_小鞋子2" prop_key2 = "prop_小鞋子2"
[node name="小老鼠拖鞋子" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="9"] [node name="小老鼠拖鞋子" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="10"]
visible = false visible = false
position = Vector2(608, -15) position = Vector2(608, -15)
sprite_frames = ExtResource("8_nh8we") sprite_frames = ExtResource("8_nh8we")
animation = &"老鼠托小鞋子" animation = &"老鼠托小鞋子"
speed_scale = -1.0 speed_scale = -1.0
[node name="自动跟随的老鼠" parent="Ground/DeployLayer" index="10" instance=ExtResource("9_58d45")] [node name="自动跟随的老鼠" parent="Ground/DeployLayer" index="11" instance=ExtResource("9_58d45")]
position = Vector2(4, 73) position = Vector2(4, 73)
action_area = Vector2(920, 40) action_area = Vector2(920, 40)
distance_to_player_range = Vector2(20, 150) distance_to_player_range = Vector2(20, 150)
[node name="疯子撞墙" parent="Ground/DeployLayer" index="11" instance=ExtResource("10_p6da7")] [node name="疯子撞墙" parent="Ground/DeployLayer" index="12" instance=ExtResource("10_p6da7")]
visible = false visible = false
position = Vector2(221, 4) position = Vector2(221, 4)
sprite_frames = ExtResource("10_och2w") sprite_frames = ExtResource("10_och2w")
@ -1000,7 +990,7 @@ loop = true
loop_round_time = 1.0 loop_round_time = 1.0
metadata/_custom_type_script = "uid://wapo47a1oddf" metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="Ambush三男孩" parent="Ground/DeployLayer" index="12" instance=ExtResource("14_k01ve")] [node name="Ambush三男孩" parent="Ground/DeployLayer" index="13" instance=ExtResource("14_k01ve")]
visible = false visible = false
position = Vector2(167, 38) position = Vector2(167, 38)
enabled = false enabled = false
@ -1017,25 +1007,23 @@ autoplay = "f3"
frame = 6 frame = 6
frame_progress = 0.121203 frame_progress = 0.121203
[node name="Closeup弹珠游戏" parent="Ground/DeployLayer" index="13" instance=ExtResource("11_owxx3")] [node name="Closeup弹珠游戏" parent="Ground/DeployLayer" index="14" instance=ExtResource("11_owxx3")]
position = Vector2(322, -269) position = Vector2(322, -269)
packed_scene = ExtResource("12_intre") packed_scene = ExtResource("12_intre")
quit_closeup_on_escape = false quit_closeup_on_escape = false
enable_snapper = null
[node name="Closeup水盆" parent="Ground/DeployLayer" index="14" instance=ExtResource("11_owxx3")] [node name="Closeup水盆" parent="Ground/DeployLayer" index="15" instance=ExtResource("11_owxx3")]
position = Vector2(289, 16) position = Vector2(289, 16)
packed_scene = ExtResource("16_p6da7") packed_scene = ExtResource("16_p6da7")
enable_snapper = null first_interact_os_key = "c02_二楼水盆"
[node name="Closeup谢幕演出" parent="Ground/DeployLayer" index="15" instance=ExtResource("11_owxx3")] [node name="Closeup谢幕演出" parent="Ground/DeployLayer" index="16" instance=ExtResource("11_owxx3")]
position = Vector2(518, -272) position = Vector2(518, -272)
action_key = 3
packed_scene = ExtResource("25_m28ab") packed_scene = ExtResource("25_m28ab")
quit_closeup_on_escape = false quit_closeup_on_escape = false
enable_snapper = null action_key = 3
[node name="c02_final" type="Node2D" parent="Ground/DeployLayer" index="16"] [node name="c02_final" type="Node2D" parent="Ground/DeployLayer" index="17"]
visible = false visible = false
[node name="胖子" parent="Ground/DeployLayer/c02_final" instance=ExtResource("10_p6da7")] [node name="胖子" parent="Ground/DeployLayer/c02_final" instance=ExtResource("10_p6da7")]
@ -1137,7 +1125,7 @@ color = Color(0.895506, 0.638359, 0.208885, 1)
energy = 0.0 energy = 0.0
texture = SubResource("GradientTexture2D_p6da7") texture = SubResource("GradientTexture2D_p6da7")
[node name="Local寻人启事" parent="Ground/DeployLayer" index="17" instance=ExtResource("32_4ndyv")] [node name="Local寻人启事" parent="Ground/DeployLayer" index="18" instance=ExtResource("32_4ndyv")]
position = Vector2(749, -2) position = Vector2(749, -2)
texture = ExtResource("33_h3h1a") texture = ExtResource("33_h3h1a")
texture_cover = ExtResource("34_3u30v") texture_cover = ExtResource("34_3u30v")

View File

@ -1,11 +1,10 @@
[gd_scene load_steps=14 format=3 uid="uid://t4xjt774ngwh"] [gd_scene load_steps=15 format=3 uid="uid://t4xjt774ngwh"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_oao56"] [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_animation.gd" id="2_t0s64"] [ext_resource type="Script" uid="uid://cnjdxjni5v3cs" path="res://scene/ground/scene/c02/s07_animation.gd" id="2_t0s64"]
[ext_resource type="AudioStream" uid="uid://m6av0abbhyco" path="res://asset/audio/sfx/环境音/第一章/楼道场景3.wav" id="3_s75vl"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_geise"]
[ext_resource type="Texture2D" uid="uid://u7rp66mboqq4" path="res://asset/art/scene/c02/s07_二楼内侧楼道/bg_背景.png" id="3_t0s64"] [ext_resource type="Texture2D" uid="uid://u7rp66mboqq4" path="res://asset/art/scene/c02/s07_二楼内侧楼道/bg_背景.png" id="3_t0s64"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_5krke"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_5krke"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_sv27p"]
[ext_resource type="Texture2D" uid="uid://bim6w1xp1a4bg" path="res://asset/art/scene/c02/s07_二楼内侧楼道/锡箔墙面涂鸦提示.png" id="5_6ivku"] [ext_resource type="Texture2D" uid="uid://bim6w1xp1a4bg" path="res://asset/art/scene/c02/s07_二楼内侧楼道/锡箔墙面涂鸦提示.png" id="5_6ivku"]
[ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="5_u2dyp"] [ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="5_u2dyp"]
[ext_resource type="PackedScene" uid="uid://xovlfee503a4" path="res://scene/ground/script/c02/小手讨东西.tscn" id="6_5krke"] [ext_resource type="PackedScene" uid="uid://xovlfee503a4" path="res://scene/ground/script/c02/小手讨东西.tscn" id="6_5krke"]
@ -13,6 +12,8 @@
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="9_6ivku"] [ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="9_6ivku"]
[ext_resource type="Texture2D" uid="uid://be0fw5y3yipr4" path="res://asset/art/prop/c02/海报(小)/戏法班.png" id="10_6ivku"] [ext_resource type="Texture2D" uid="uid://be0fw5y3yipr4" path="res://asset/art/prop/c02/海报(小)/戏法班.png" id="10_6ivku"]
[ext_resource type="PackedScene" uid="uid://cj2snkcyjhcb7" path="res://scene/ground/script/c02/刮海报_二楼内侧.tscn" id="11_vxng8"] [ext_resource type="PackedScene" uid="uid://cj2snkcyjhcb7" path="res://scene/ground/script/c02/刮海报_二楼内侧.tscn" id="11_vxng8"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="13_s75vl"]
[ext_resource type="Texture2D" uid="uid://dfosrexfvxsn0" path="res://asset/art/scene/c02/杂物/老鼠洞通用.png" id="14_sv27p"]
[node name="S07" type="Node2D"] [node name="S07" type="Node2D"]
@ -28,16 +29,10 @@ data = {
} }
oneshot_animation = "" oneshot_animation = ""
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("3_s75vl") script = ExtResource("3_geise")
autoplay = true autoplay_group = &"c02_楼道2"
bus = &"game_sfx" metadata/_custom_type_script = "uid://cpejxlfni6n52"
script = ExtResource("4_sv27p")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_t0s64") texture = ExtResource("3_t0s64")
@ -81,8 +76,15 @@ position = Vector2(-5, 78)
[node name="Closeup刮海报" parent="Ground/DeployLayer" index="7" instance=ExtResource("9_6ivku")] [node name="Closeup刮海报" parent="Ground/DeployLayer" index="7" instance=ExtResource("9_6ivku")]
position = Vector2(292, -11) position = Vector2(292, -11)
texture = ExtResource("10_6ivku") texture = ExtResource("10_6ivku")
first_interact_os_key = "c02_海报_戏法班"
packed_scene = ExtResource("11_vxng8") packed_scene = ExtResource("11_vxng8")
first_interact_os_key = "c02_海报_戏法班"
[node name="Note老鼠洞" parent="Ground/DeployLayer" index="8" instance=ExtResource("13_s75vl")]
position = Vector2(207, 69)
texture = ExtResource("14_sv27p")
sign_mark_offset = Vector2(0, -7.38)
title_filter = "c02"
note_key = "c02_二楼老鼠洞"
[node name="MainPlayer" parent="Ground" index="4"] [node name="MainPlayer" parent="Ground" index="4"]
position = Vector2(41, 98) position = Vector2(41, 98)

View File

@ -4,7 +4,10 @@ extends AnimationRoot
# 覆盖该方法 # 覆盖该方法
func _default_data() -> Dictionary: func _default_data() -> Dictionary:
return {"hole_interacted_times": 0} return {
"hole_interacted_times": 0,
"first_entered": true
}
func _ready() -> void: func _ready() -> void:
@ -57,6 +60,10 @@ func _on_ground_ready() -> void:
boxcat_portal.get_node("Sprite2D").texture = preload("uid://b8sv81cw7mcn4") # e_墙上纸张_blood boxcat_portal.get_node("Sprite2D").texture = preload("uid://b8sv81cw7mcn4") # e_墙上纸张_blood
$"../DeployLayer/Note画上脚印".enabled = true $"../DeployLayer/Note画上脚印".enabled = true
if data["first_entered"]:
set_data("first_entered", false)
SceneManager.pop_os_with_str("c02_离开红色演出")
var interacting = false: var interacting = false:
set(val): set(val):

View File

@ -3,10 +3,10 @@
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_judx3"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_judx3"]
[ext_resource type="Script" uid="uid://hbbgymjs5xte" path="res://scene/ground/scene/c02/s08_animation.gd" id="2_m4uw8"] [ext_resource type="Script" uid="uid://hbbgymjs5xte" path="res://scene/ground/scene/c02/s08_animation.gd" id="2_m4uw8"]
[ext_resource type="Texture2D" uid="uid://v3sj36aijq5b" path="res://asset/art/scene/c02/s08_瞎子卧室/bg_瞎子卧室.png" id="3_iares"] [ext_resource type="Texture2D" uid="uid://v3sj36aijq5b" path="res://asset/art/scene/c02/s08_瞎子卧室/bg_瞎子卧室.png" id="3_iares"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_quq80"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_t3h08"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_t3h08"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_1ws4i"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_1ws4i"]
[ext_resource type="Texture2D" uid="uid://vqyhgyka3sfo" path="res://asset/art/scene/c02/s08_瞎子卧室/瞎子卧室前景.png" id="4_gx8oy"] [ext_resource type="Texture2D" uid="uid://vqyhgyka3sfo" path="res://asset/art/scene/c02/s08_瞎子卧室/瞎子卧室前景.png" id="4_gx8oy"]
[ext_resource type="AudioStream" uid="uid://dthm5gd1sc16" path="res://asset/audio/sfx/环境音/第一章/房间内部场景2.wav" id="4_vjjde"]
[ext_resource type="AudioStream" uid="uid://dk3e1w3n2snur" path="res://asset/audio/sfx/旧版/c02/纸人出现.mp3" id="5_0qeqe"] [ext_resource type="AudioStream" uid="uid://dk3e1w3n2snur" path="res://asset/audio/sfx/旧版/c02/纸人出现.mp3" id="5_0qeqe"]
[ext_resource type="Texture2D" uid="uid://b5pwb4fm46sad" path="res://asset/art/scene/c02/s08_瞎子卧室/e_墙上纸张.png" id="5_f6mma"] [ext_resource type="Texture2D" uid="uid://b5pwb4fm46sad" path="res://asset/art/scene/c02/s08_瞎子卧室/e_墙上纸张.png" id="5_f6mma"]
[ext_resource type="Texture2D" uid="uid://7ay1ttob8qwm" path="res://asset/art/scene/c02/s08_瞎子卧室/e_床板.png" id="5_vjjde"] [ext_resource type="Texture2D" uid="uid://7ay1ttob8qwm" path="res://asset/art/scene/c02/s08_瞎子卧室/e_床板.png" id="5_vjjde"]
@ -76,11 +76,11 @@ _data = {
[sub_resource type="RectangleShape2D" id="RectangleShape2D_a48k2"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_a48k2"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(5, 70) size = Vector2(20, 70)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_kwj7c"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_kwj7c"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(10, 70) size = Vector2(25, 70)
[sub_resource type="Gradient" id="Gradient_f6mma"] [sub_resource type="Gradient" id="Gradient_f6mma"]
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1) colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1)
@ -112,21 +112,16 @@ libraries = {
} }
script = ExtResource("2_m4uw8") script = ExtResource("2_m4uw8")
data = { data = {
"first_entered": true,
"hole_interacted_times": 0, "hole_interacted_times": 0,
"oneshot_animation_played": false "oneshot_animation_played": false
} }
oneshot_animation = "" oneshot_animation = ""
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("4_vjjde") script = ExtResource("3_quq80")
autoplay = true autoplay_group = &"c02_房间里2"
bus = &"game_sfx" metadata/_custom_type_script = "uid://cpejxlfni6n52"
script = ExtResource("3_t3h08")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = 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_0qeqe") stream = ExtResource("5_0qeqe")
@ -380,7 +375,7 @@ texture = ExtResource("4_gx8oy")
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(580, 150, 690, 150) points = PackedVector2Array(580, 150, 690, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
visible = false visible = false
energy = 0.9 energy = 0.9
blend_mode = 1 blend_mode = 1

View File

@ -903,12 +903,12 @@ position = Vector2(3421, 25)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(80, 150, 4500.93, 150) points = PackedVector2Array(80, 150, 4500.93, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
visible = false visible = false
energy = 0.7 energy = 0.7
blend_mode = 1 blend_mode = 1
[node name="UIPointLight2D" parent="Ground" index="10"] [node name="UIPointLight2D" parent="Ground" index="9"]
position = Vector2(7016, -4) position = Vector2(7016, -4)
[editable path="Ground"] [editable path="Ground"]

View File

@ -188,6 +188,8 @@ func _on_pick_catty_head() -> void:
await sprite.animation_finished await sprite.animation_finished
sprite.visible = false sprite.visible = false
SceneManager.enable_prop_item("prop_小猫玩具完整") SceneManager.enable_prop_item("prop_小猫玩具完整")
await SceneManager.get_inspector().quit_and_hidden
SceneManager.pop_os_with_str(tr("c02_获得小猫玩具"))
# 进过瞎子卧室后,通道关闭 # 进过瞎子卧室后,通道关闭
if not ArchiveManager.get_global_value("c02_the_blind_room_unlocked"): if not ArchiveManager.get_global_value("c02_the_blind_room_unlocked"):
portal_note.enabled = true portal_note.enabled = true

View File

@ -1,10 +1,9 @@
[gd_scene load_steps=26 format=3 uid="uid://dny21yhtuteap"] [gd_scene load_steps=25 format=3 uid="uid://dny21yhtuteap"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_w7j0m"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_w7j0m"]
[ext_resource type="Script" uid="uid://dkkey7qillk15" path="res://scene/ground/scene/c02/s10_animation.gd" id="2_egtqi"] [ext_resource type="Script" uid="uid://dkkey7qillk15" path="res://scene/ground/scene/c02/s10_animation.gd" id="2_egtqi"]
[ext_resource type="AudioStream" uid="uid://6gttowdwmado" path="res://asset/audio/sfx/环境音/第一章/房间内部场景1.wav" id="3_chbaa"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_kqj5r"]
[ext_resource type="Texture2D" uid="uid://molvyfyy63ik" path="res://asset/art/scene/c02/s10_空房间/bg_空房间.png" id="3_ox8et"] [ext_resource type="Texture2D" uid="uid://molvyfyy63ik" path="res://asset/art/scene/c02/s10_空房间/bg_空房间.png" id="3_ox8et"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_chbaa"]
[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="5_ylhfc"] [ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="5_ylhfc"]
[ext_resource type="PackedScene" uid="uid://dsa6frlw6e6gg" path="res://scene/entity/pickable.tscn" id="6_27dvh"] [ext_resource type="PackedScene" uid="uid://dsa6frlw6e6gg" path="res://scene/entity/pickable.tscn" id="6_27dvh"]
[ext_resource type="Texture2D" uid="uid://cuno8okh8ytw2" path="res://asset/art/scene/c02/s10_空房间/柜子.png" id="6_mty8e"] [ext_resource type="Texture2D" uid="uid://cuno8okh8ytw2" path="res://asset/art/scene/c02/s10_空房间/柜子.png" id="6_mty8e"]
@ -83,16 +82,10 @@ data = {
} }
oneshot_animation = "" oneshot_animation = ""
[node name="背景音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("3_chbaa") script = ExtResource("3_kqj5r")
autoplay = true autoplay_group = &"c02_房间里1"
bus = &"game_sfx" metadata/_custom_type_script = "uid://cpejxlfni6n52"
script = ExtResource("4_chbaa")
mode = "场景背景音"
"自动开始" = true
"循环播放" = true
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
position = Vector2(26, 0) position = Vector2(26, 0)
@ -188,13 +181,9 @@ texture = ExtResource("12_27dvh")
position = Vector2(373, -13.8031) position = Vector2(373, -13.8031)
gaslight_energy = 2.0 gaslight_energy = 2.0
gaslight_ground_energy = 2.0 gaslight_ground_energy = 2.0
enable_snapper = null
collision_width_and_x = true
mute_when_interacted = false mute_when_interacted = false
one_shot = false one_shot = false
one_shot_max_times = true disable_prop_after_interacted = true
disable_prop_after_interacted = 1
interacted_texture = false
[node name="拼接小猫玩具" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"] [node name="拼接小猫玩具" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"]
visible = false visible = false

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=3 uid="uid://da4cuf2i3nwpj"] [gd_scene load_steps=9 format=3 uid="uid://da4cuf2i3nwpj"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ngo77"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ngo77"]
[ext_resource type="Script" uid="uid://cyd1xo106unfk" path="res://scene/ground/scene/c02/s12_animation.gd" id="2_7ah3n"] [ext_resource type="Script" uid="uid://cyd1xo106unfk" path="res://scene/ground/scene/c02/s12_animation.gd" id="2_7ah3n"]
@ -6,6 +6,7 @@
[ext_resource type="Texture2D" uid="uid://yn00uls1kvn3" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_初始.png" id="3_oskpk"] [ext_resource type="Texture2D" uid="uid://yn00uls1kvn3" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_初始.png" id="3_oskpk"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_r3hvb"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_r3hvb"]
[ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="4_vv3sh"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="4_vv3sh"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="5_72mc1"]
[ext_resource type="SpriteFrames" uid="uid://b85gyfhk1mg6r" path="res://asset/art/gif/c02_盒子猫/c02_盒子猫_frames.tres" id="5_ycgng"] [ext_resource type="SpriteFrames" uid="uid://b85gyfhk1mg6r" path="res://asset/art/gif/c02_盒子猫/c02_盒子猫_frames.tres" id="5_ycgng"]
[node name="S12" type="Node2D"] [node name="S12" type="Node2D"]
@ -26,6 +27,11 @@ bus = &"game_sfx"
script = ExtResource("4_r3hvb") script = ExtResource("4_r3hvb")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="1"]
script = ExtResource("5_72mc1")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_oskpk") texture = ExtResource("3_oskpk")
offset = Vector2(0, -103.7) offset = Vector2(0, -103.7)
@ -58,7 +64,7 @@ position = Vector2(3584, -7)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 400, 150) points = PackedVector2Array(37, 150, 400, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
blend_mode = 1 blend_mode = 1
[node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("4_vv3sh")] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("4_vv3sh")]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=3 uid="uid://bvjutch6jex0v"] [gd_scene load_steps=13 format=3 uid="uid://bvjutch6jex0v"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_71lma"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_71lma"]
[ext_resource type="Script" uid="uid://28ujp27cbdh2" path="res://scene/ground/scene/c02/s13_animation.gd" id="2_w5nqu"] [ext_resource type="Script" uid="uid://28ujp27cbdh2" path="res://scene/ground/scene/c02/s13_animation.gd" id="2_w5nqu"]
@ -7,6 +7,7 @@
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_yywsi"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="4_yywsi"]
[ext_resource type="AudioStream" uid="uid://b8sbtn3l37uh" path="res://asset/audio/sfx/旧版/c02/红屏.mp3" id="5_yywsi"] [ext_resource type="AudioStream" uid="uid://b8sbtn3l37uh" path="res://asset/audio/sfx/旧版/c02/红屏.mp3" id="5_yywsi"]
[ext_resource type="Texture2D" uid="uid://csrfyvaufo1wb" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/l_瞎子理发店光.png" id="6_gge8e"] [ext_resource type="Texture2D" uid="uid://csrfyvaufo1wb" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/l_瞎子理发店光.png" id="6_gge8e"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="6_kmk38"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_yywsi"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_yywsi"]
[ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="7_u2fv1"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="7_u2fv1"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="9_yywsi"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="9_yywsi"]
@ -36,6 +37,11 @@ bus = &"game_sfx"
script = ExtResource("4_yywsi") script = ExtResource("4_yywsi")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="2"]
script = ExtResource("6_kmk38")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_miykx") texture = ExtResource("3_miykx")
offset = Vector2(0, -102) offset = Vector2(0, -102)

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=7 format=3 uid="uid://d0p4x5st2r315"] [gd_scene load_steps=8 format=3 uid="uid://d0p4x5st2r315"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_cr1hi"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_cr1hi"]
[ext_resource type="Script" uid="uid://bjisuntcem2lv" path="res://scene/ground/scene/c02/s14_animation.gd" id="2_o47bv"] [ext_resource type="Script" uid="uid://bjisuntcem2lv" path="res://scene/ground/scene/c02/s14_animation.gd" id="2_o47bv"]
[ext_resource type="Texture2D" uid="uid://y0e47513ca22" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_二楼内侧楼道粉笔画.png" id="3_cr1hi"] [ext_resource type="Texture2D" uid="uid://y0e47513ca22" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_二楼内侧楼道粉笔画.png" id="3_cr1hi"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_idisw"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_o47bv"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_o47bv"]
[ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="5_cr1hi"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="5_cr1hi"]
[ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="5_o47bv"] [ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="5_o47bv"]
@ -19,6 +20,11 @@ footstep_type = "盒子猫"
script = ExtResource("2_o47bv") script = ExtResource("2_o47bv")
oneshot_animation = "" oneshot_animation = ""
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
script = ExtResource("3_idisw")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_cr1hi") texture = ExtResource("3_cr1hi")
offset = Vector2(0, -102) offset = Vector2(0, -102)
@ -49,7 +55,7 @@ character = "盒子猫"
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(101, 150, 660, 150) points = PackedVector2Array(101, 150, 660, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
blend_mode = 1 blend_mode = 1
[node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("5_cr1hi")] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("5_cr1hi")]

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=6 format=3 uid="uid://b21p53g42j2nt"] [gd_scene load_steps=7 format=3 uid="uid://b21p53g42j2nt"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qxg0l"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qxg0l"]
[ext_resource type="Script" uid="uid://ebaq235h32fd" path="res://scene/ground/scene/c02/s15_animation.gd" id="2_etqjj"] [ext_resource type="Script" uid="uid://ebaq235h32fd" path="res://scene/ground/scene/c02/s15_animation.gd" id="2_etqjj"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_etqjj"]
[ext_resource type="Texture2D" uid="uid://c4eb71kdnqy3y" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_一楼内侧楼道粉笔画.png" id="3_qxg0l"] [ext_resource type="Texture2D" uid="uid://c4eb71kdnqy3y" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_一楼内侧楼道粉笔画.png" id="3_qxg0l"]
[ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="5_isic3"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="5_isic3"]
[ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="6_etqjj"] [ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="6_etqjj"]
@ -18,6 +19,11 @@ footstep_type = "盒子猫"
script = ExtResource("2_etqjj") script = ExtResource("2_etqjj")
oneshot_animation = "" oneshot_animation = ""
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
script = ExtResource("3_etqjj")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_qxg0l") texture = ExtResource("3_qxg0l")
offset = Vector2(0, -102) offset = Vector2(0, -102)
@ -46,7 +52,7 @@ position = Vector2(-1, -15)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(125, 150, 660, 150) points = PackedVector2Array(125, 150, 660, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
visible = false visible = false
blend_mode = 1 blend_mode = 1

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=8 format=3 uid="uid://22hc3oe8t0id"] [gd_scene load_steps=9 format=3 uid="uid://22hc3oe8t0id"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_umyae"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_umyae"]
[ext_resource type="Script" uid="uid://dx2w5v1erjyls" path="res://scene/ground/scene/c02/s16_animation.gd" id="2_tmnwc"] [ext_resource type="Script" uid="uid://dx2w5v1erjyls" path="res://scene/ground/scene/c02/s16_animation.gd" id="2_tmnwc"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_r8qm5"]
[ext_resource type="Texture2D" uid="uid://by4ymjhnma8c6" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼内侧楼道粉笔画.png" id="3_tmnwc"] [ext_resource type="Texture2D" uid="uid://by4ymjhnma8c6" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼内侧楼道粉笔画.png" id="3_tmnwc"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_qkv3g"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_qkv3g"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="5_qkv3g"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="5_qkv3g"]
@ -20,6 +21,11 @@ footstep_type = "盒子猫"
script = ExtResource("2_tmnwc") script = ExtResource("2_tmnwc")
oneshot_animation = "" oneshot_animation = ""
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
script = ExtResource("3_r8qm5")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_tmnwc") texture = ExtResource("3_tmnwc")
offset = Vector2(0, -102) offset = Vector2(0, -102)
@ -58,7 +64,7 @@ position = Vector2(3584, -7)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 655, 150) points = PackedVector2Array(37, 150, 655, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
visible = false visible = false
blend_mode = 1 blend_mode = 1

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=8 format=3 uid="uid://cbr6gbgrl2wb1"] [gd_scene load_steps=9 format=3 uid="uid://cbr6gbgrl2wb1"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_e436a"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_e436a"]
[ext_resource type="Script" uid="uid://bkkhxiyblu2lo" path="res://scene/ground/scene/c02/s17_animation.gd" id="2_e436a"] [ext_resource type="Script" uid="uid://bkkhxiyblu2lo" path="res://scene/ground/scene/c02/s17_animation.gd" id="2_e436a"]
[ext_resource type="Texture2D" uid="uid://iyeqjguyrhog" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼楼道粉笔画.png" id="3_e436a"] [ext_resource type="Texture2D" uid="uid://iyeqjguyrhog" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼楼道粉笔画.png" id="3_e436a"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_uua76"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_e436a"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_e436a"]
[ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="4_n3bxc"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="4_n3bxc"]
[ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="6_pfgbg"] [ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="6_pfgbg"]
@ -20,6 +21,11 @@ footstep_type = "盒子猫"
script = ExtResource("2_e436a") script = ExtResource("2_e436a")
oneshot_animation = "" oneshot_animation = ""
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
script = ExtResource("3_uua76")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_e436a") texture = ExtResource("3_e436a")
offset = Vector2(0, -102) offset = Vector2(0, -102)
@ -61,7 +67,7 @@ position = Vector2(3584, -7)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 860, 150) points = PackedVector2Array(37, 150, 860, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
visible = false visible = false
blend_mode = 1 blend_mode = 1

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=7 format=3 uid="uid://d27gv3pbkn4b8"] [gd_scene load_steps=8 format=3 uid="uid://d27gv3pbkn4b8"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_4bsvj"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_4bsvj"]
[ext_resource type="Script" uid="uid://b3mak700k2qwt" path="res://scene/ground/scene/c02/s18_animation.gd" id="2_4bsvj"] [ext_resource type="Script" uid="uid://b3mak700k2qwt" path="res://scene/ground/scene/c02/s18_animation.gd" id="2_4bsvj"]
[ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_4bsvj"]
[ext_resource type="Texture2D" uid="uid://ttocw3erg8jv" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_一楼楼道粉笔画.png" id="3_owpnf"] [ext_resource type="Texture2D" uid="uid://ttocw3erg8jv" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_一楼楼道粉笔画.png" id="3_owpnf"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="5_emyx1"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="5_emyx1"]
[ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="6_xoyld"] [ext_resource type="PackedScene" uid="uid://dewbg4phd8c17" path="res://scene/ground/script/c02/追猫猪头怪.tscn" id="6_xoyld"]
@ -19,6 +20,11 @@ footstep_type = "盒子猫"
script = ExtResource("2_4bsvj") script = ExtResource("2_4bsvj")
oneshot_animation = "" oneshot_animation = ""
[node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"]
script = ExtResource("3_4bsvj")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="BGSprite2D" parent="Ground" index="1"] [node name="BGSprite2D" parent="Ground" index="1"]
texture = ExtResource("3_owpnf") texture = ExtResource("3_owpnf")
offset = Vector2(0, -102) offset = Vector2(0, -102)
@ -75,7 +81,7 @@ position = Vector2(3584, -7)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 860, 150) points = PackedVector2Array(37, 150, 860, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="7"]
visible = false visible = false
blend_mode = 1 blend_mode = 1

View File

@ -1,21 +1,33 @@
extends Node2D extends CanvasLayer
var dialogue_c01 := preload("res://asset/dialogue/c01.dialogue") as DialogueResource var dialogue_c01 := preload("res://asset/dialogue/c01.dialogue") as DialogueResource
func play():
var tween = create_tween() func _ready() -> void:
tween.tween_property(self, "modulate:a", 1.0, 0.5) layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
# self.modulate = Color.BLACK
# var tween = create_tween()
# tween.tween_property(self, "modulate", Color.WHITE, 0.5)
$Sfx.play() $Sfx.play()
var animation_player = $AnimationPlayer as AnimationPlayer var animation_player = $AnimationPlayer as AnimationPlayer
animation_player.play("鬼差探头") animation_player.play("鬼差探头")
animation_player.animation_finished.connect(_on_animation_finished) animation_player.animation_finished.connect(_on_finished)
func play_bgm(): func play_bgm():
# 音效 # 音效
var stream = $"背景音".stream var stream = $"背景音".stream
AudioManager.loop_bgm_music("黄包车背景音效", stream) AudioManager.loop_bgm_music("黄包车背景音效", stream)
func _on_animation_finished(_name):
func pre_finished():
# 在 animation player 结束前 1 秒调用
var camera = SceneManager.get_camera_marker()
camera.limit_top -= 20
camera.limit_bottom += 20
camera.limit_left -= 20
camera.limit_right += 20
camera.shake_camera(8.0, 2.0)
# debug 模式允许跳过 # debug 模式允许跳过
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1") DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1")
@ -23,5 +35,8 @@ func _on_animation_finished(_name):
DialogueManager.show_dialogue_balloon( DialogueManager.show_dialogue_balloon(
dialogue_c01, "c01_s11_车夫对话1", [GlobalConfig.DIALOG_IGNORE_INPUT] dialogue_c01, "c01_s11_车夫对话1", [GlobalConfig.DIALOG_IGNORE_INPUT]
) )
func _on_finished(_a):
# 跳转场景 # 跳转场景
SceneManager.get_ground_loader().transition_to_scene("c01_s11", "left") SceneManager.get_ground_loader().transition_to_scene("c01_s11", "left")

View File

@ -58,11 +58,14 @@ tracks/1/path = NodePath(".")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(6.56667), "times": PackedFloat32Array(5.03333, 6.7),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1),
"values": [{ "values": [{
"args": [], "args": [],
"method": &"play_bgm" "method": &"play_bgm"
}, {
"args": [],
"method": &"pre_finished"
}] }]
} }
tracks/2/type = "value" tracks/2/type = "value"
@ -91,7 +94,7 @@ stream_0/volume = 5.0
stream_1/stream = ExtResource("8_vputk") stream_1/stream = ExtResource("8_vputk")
stream_1/volume = -4.0 stream_1/volume = -4.0
[node name="S10鬼差探头" type="Node2D"] [node name="S10鬼差探头" type="CanvasLayer"]
script = ExtResource("1_pvnth") script = ExtResource("1_pvnth")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]

View File

@ -71,6 +71,13 @@ func _ready() -> void:
func _on_mismatch(): func _on_mismatch():
if not ArchiveManager.get_global_value("c02_gaslight_first_failed"):
ArchiveManager.set_global_entry("c02_gaslight_first_failed", true)
var scene = ArchiveManager.archive.current_scene
if scene == "c02_s02" or scene == "c02_s03":
SceneManager.pop_os_with_str(tr("c02_陈旧的煤油灯"))
# 如果有道具,则提示玩家可以使用道具
elif SceneManager.get_current_prop(false):
SceneManager.pop_center_notification(tr("ui_switch_prop")) SceneManager.pop_center_notification(tr("ui_switch_prop"))
@ -116,6 +123,7 @@ func _switch_gaslight(state := true, gradually := false):
point_light_ground.energy = engrgy2 point_light_ground.energy = engrgy2
light_sprite2d.modulate.a = 1.0 light_sprite2d.modulate.a = 1.0
) )
_check_sign_display()
@ -132,3 +140,9 @@ func _gaslight_interacted():
await get_tree().create_timer(1.0).timeout await get_tree().create_timer(1.0).timeout
_switch_gaslight(true, true) _switch_gaslight(true, true)
lighted.emit() lighted.emit()
if not ArchiveManager.get_global_value("c02_gaslight_first_lighted"):
ArchiveManager.set_global_entry("c02_gaslight_first_lighted", true)
var scene = ArchiveManager.archive.current_scene
if scene == "c02_s02" or scene == "c02_s03":
await get_tree().create_timer(1.0).timeout
SceneManager.pop_os_with_str(tr("c02_使用煤油灯"))

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=15 format=3 uid="uid://cxw5rovg5mu1a"] [gd_scene load_steps=17 format=3 uid="uid://cxw5rovg5mu1a"]
[ext_resource type="Script" uid="uid://c8vsfqoeu26gk" path="res://scene/ground/script/c02/s00_煤油灯.gd" id="1_0aa53"] [ext_resource type="Script" uid="uid://c8vsfqoeu26gk" path="res://scene/ground/script/c02/s00_煤油灯.gd" id="1_0aa53"]
[ext_resource type="Texture2D" uid="uid://b3qgmrfslj135" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕1.png" id="2_uusov"] [ext_resource type="Texture2D" uid="uid://b3qgmrfslj135" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕1.png" id="2_uusov"]
@ -18,12 +18,22 @@
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(20, 70) size = Vector2(20, 70)
[sub_resource type="Gradient" id="Gradient_l338h"]
offsets = PackedFloat32Array(0, 0.67029, 1)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_ivr1s"]
gradient = SubResource("Gradient_l338h")
width = 200
height = 200
fill = 1
fill_from = Vector2(0.5, 0.5)
[node name="煤油灯" type="Sprite2D"] [node name="煤油灯" type="Sprite2D"]
script = ExtResource("1_0aa53") script = ExtResource("1_0aa53")
gaslight_texture = ExtResource("2_uusov") gaslight_texture = ExtResource("2_uusov")
ground_light_texture = ExtResource("3_y2gsk") ground_light_texture = ExtResource("3_y2gsk")
debug_light_switch = true debug_light_switch = true
enable_snapper = null
unrevealed_sign_texture = ExtResource("4_abb1f") unrevealed_sign_texture = ExtResource("4_abb1f")
unmatched_sign_texture = ExtResource("5_l338h") unmatched_sign_texture = ExtResource("5_l338h")
matched_sign_texture = ExtResource("6_ivr1s") matched_sign_texture = ExtResource("6_ivr1s")
@ -54,6 +64,11 @@ shape = SubResource("RectangleShape2D_h0ajm")
color = Color(1, 0.882353, 0.705882, 1) color = Color(1, 0.882353, 0.705882, 1)
texture = ExtResource("2_uusov") texture = ExtResource("2_uusov")
[node name="PointLight2D范围" type="PointLight2D" parent="PointLight2D"]
visible = false
energy = 0.7
texture = SubResource("GradientTexture2D_ivr1s")
[node name="PointLightGround2D" type="PointLight2D" parent="."] [node name="PointLightGround2D" type="PointLight2D" parent="."]
range_item_cull_mask = 4 range_item_cull_mask = 4
texture = ExtResource("3_y2gsk") texture = ExtResource("3_y2gsk")

View File

@ -30,6 +30,8 @@ var random_directions: Array[Vector2] = []
var random_positions: Array[Vector2] = [] var random_positions: Array[Vector2] = []
var player var player
@onready var sfx = $"mouse1/Sfx2D老鼠叫" as Sfx2D
func _ready() -> void: func _ready() -> void:
if Engine.is_editor_hint(): if Engine.is_editor_hint():
@ -40,6 +42,9 @@ func _ready() -> void:
return return
# 自动跟随的老鼠 c02_mouse_follow_player # 自动跟随的老鼠 c02_mouse_follow_player
visible = ArchiveManager.get_global_value("c02_mouse_follow_player", false) visible = ArchiveManager.get_global_value("c02_mouse_follow_player", false)
if visible:
# 播放老鼠叫 sfx
sfx.play()
func _on_visibility_changed() -> void: func _on_visibility_changed() -> void:
@ -53,6 +58,8 @@ func _enter_tree() -> void:
func flush_right_and_disable(_res = null) -> void: func flush_right_and_disable(_res = null) -> void:
sfx.loop = false
sfx.stop()
enabled = false enabled = false
var tween = create_tween() var tween = create_tween()
for i in range(mice.size()): for i in range(mice.size()):

View File

@ -1,7 +1,9 @@
[gd_scene load_steps=6 format=3 uid="uid://8frowlq301"] [gd_scene load_steps=8 format=3 uid="uid://8frowlq301"]
[ext_resource type="Script" uid="uid://biphnbirwpwv" path="res://scene/ground/script/c02/s00_跟随的老鼠.gd" id="1_5gnxj"] [ext_resource type="Script" uid="uid://biphnbirwpwv" path="res://scene/ground/script/c02/s00_跟随的老鼠.gd" id="1_5gnxj"]
[ext_resource type="Texture2D" uid="uid://bebirk1fwldg2" path="res://asset/art/scene/c01/s00/老鼠.png" id="2_16usl"] [ext_resource type="Texture2D" uid="uid://bebirk1fwldg2" path="res://asset/art/scene/c01/s00/老鼠.png" id="2_16usl"]
[ext_resource type="AudioStream" uid="uid://7q03rss2vlcn" path="res://asset/audio/sfx/环境音/点缀音/sfx_老鼠叫.wav" id="3_otpwt"]
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="4_otpwt"]
[sub_resource type="AtlasTexture" id="AtlasTexture_5gnxj"] [sub_resource type="AtlasTexture" id="AtlasTexture_5gnxj"]
atlas = ExtResource("2_16usl") atlas = ExtResource("2_16usl")
@ -26,6 +28,17 @@ position = Vector2(121.52, 5.04537)
scale = Vector2(0.86, 0.86) scale = Vector2(0.86, 0.86)
texture = SubResource("AtlasTexture_5gnxj") texture = SubResource("AtlasTexture_5gnxj")
[node name="Sfx2D老鼠叫" type="AudioStreamPlayer2D" parent="mouse1"]
position = Vector2(-141.302, -5.86671)
scale = Vector2(1.16279, 1.16279)
stream = ExtResource("3_otpwt")
max_distance = 1000.0
bus = &"game_sfx"
script = ExtResource("4_otpwt")
loop = true
loop_round_time = 20.0
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="mouse2" type="Sprite2D" parent="."] [node name="mouse2" type="Sprite2D" parent="."]
position = Vector2(258.874, 22.6854) position = Vector2(258.874, 22.6854)
scale = Vector2(0.86, 0.86) scale = Vector2(0.86, 0.86)

View File

@ -3,6 +3,7 @@ extends CanvasLayer
signal exit signal exit
@onready var flyer = $"刮刮乐" @onready var flyer = $"刮刮乐"
@onready var sfx = $"Sfx撕海报"
func _ready() -> void: func _ready() -> void:
@ -20,8 +21,9 @@ func _on_shaven(progress: float):
if progress >= 0.7: if progress >= 0.7:
exiting = true exiting = true
print("刮开 70% 以上!") print("刮开 70% 以上!")
sfx.global_play()
var tween = create_tween() var tween = create_tween()
tween.tween_property(flyer, "modulate:a", 0.0, 1.0) tween.tween_property(flyer, "modulate:a", 0.0, 1.0)
tween.tween_callback(exit.emit.bind(true)) tween.tween_callback(exit.emit.bind(true))
elif GlobalConfig.DEBUG: # elif GlobalConfig.DEBUG:
print("刮开进度:", progress) # print("刮开进度:", progress)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -157,6 +157,7 @@ var communicating = false
func _on_interacted() -> void: func _on_interacted() -> void:
if interacting: if interacting:
print("小手 interacting 锁定中") print("小手 interacting 锁定中")
SceneManager.release_player()
return return
interacting = true interacting = true
interacted.emit() interacted.emit()
@ -164,6 +165,7 @@ func _on_interacted() -> void:
if tried_times == 1: if tried_times == 1:
do_first_interact(false) do_first_interact(false)
interacting = false interacting = false
SceneManager.release_player()
return return
if holding_prop != "": if holding_prop != "":
# 手持物品时,交互直接给玩家物品 # 手持物品时,交互直接给玩家物品
@ -171,6 +173,7 @@ func _on_interacted() -> void:
holding_prop = "" holding_prop = ""
animated_sprite.play("小手_show") animated_sprite.play("小手_show")
interacting = false interacting = false
SceneManager.release_player()
return return
if is_holding_cup: if is_holding_cup:
@ -193,7 +196,7 @@ func _on_interacted() -> void:
var key = SceneManager.get_current_prop(false) var key = SceneManager.get_current_prop(false)
var interacted_success = false var interacted_success = false
SceneManager.freeze_player(0) SceneManager.freeze_player(0, 4)
# accept_tin_coin # accept_tin_coin
if key == "prop_锡箔元宝": if key == "prop_锡箔元宝":
@ -201,6 +204,8 @@ func _on_interacted() -> void:
sfx_success.play() sfx_success.play()
SceneManager.disable_prop_item("prop_锡箔元宝") SceneManager.disable_prop_item("prop_锡箔元宝")
if id == 1: if id == 1:
SceneManager.enable_prop_item_silently("prop_小鞋子1")
ArchiveManager.set_global_entry("c02_mouse_follow_player", true)
# 叠成纸杯电话 # 叠成纸杯电话
animated_sprite.play("小手_锡箔_hide") animated_sprite.play("小手_锡箔_hide")
is_holding_cup = true is_holding_cup = true
@ -208,7 +213,8 @@ func _on_interacted() -> void:
await get_tree().create_timer(2).timeout await get_tree().create_timer(2).timeout
# 稍等片刻再给小鞋子 # 稍等片刻再给小鞋子
SceneManager.enable_prop_item("prop_小鞋子1") SceneManager.enable_prop_item("prop_小鞋子1")
ArchiveManager.set_global_entry("c02_mouse_follow_player", true) await SceneManager.get_inspector().quit_and_hidden
SceneManager.pop_os_with_str("c02_锡箔换小鞋子")
var node = get_node("../自动跟随的老鼠") as Node2D var node = get_node("../自动跟随的老鼠") as Node2D
if node: if node:
node.visible = true node.visible = true

View File

@ -120,6 +120,7 @@ texture = ExtResource("10_47cqy")
[node name="SignSnapper" type="Marker2D" parent="."] [node name="SignSnapper" type="Marker2D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
script = ExtResource("15_lr23o") script = ExtResource("15_lr23o")
release_player_on_arrived = false
delay_arrived = 0.1 delay_arrived = 0.1
action_on_arrived = 4 action_on_arrived = 4
delay_after_action = 0.4 delay_after_action = 0.4

View File

@ -1,7 +1,9 @@
[gd_scene load_steps=3 format=3 uid="uid://cdf2qe8l7323i"] [gd_scene load_steps=5 format=3 uid="uid://cdf2qe8l7323i"]
[ext_resource type="Script" uid="uid://dnrql1t0j6v8i" path="res://scene/ground/script/c02/通用特写脚本.gd" id="1_lpmq3"] [ext_resource type="Script" uid="uid://dnrql1t0j6v8i" path="res://scene/ground/script/c02/通用特写脚本.gd" id="1_lpmq3"]
[ext_resource type="Texture2D" uid="uid://d1xr7g5huv5or" path="res://asset/art/scene/c02/s04_保卫科/ux_老鼠画像特写.png" id="2_eyynm"] [ext_resource type="Texture2D" uid="uid://d1xr7g5huv5or" path="res://asset/art/scene/c02/s04_保卫科/ux_老鼠画像特写.png" id="2_eyynm"]
[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_lpmq3"]
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/prop/inspect背景遮罩.png" id="4_l77sh"]
[node name="老鼠精画像" type="CanvasLayer"] [node name="老鼠精画像" type="CanvasLayer"]
script = ExtResource("1_lpmq3") script = ExtResource("1_lpmq3")
@ -13,3 +15,34 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
texture = ExtResource("2_eyynm") texture = ExtResource("2_eyynm")
[node name="ContentInspector" parent="." instance=ExtResource("3_lpmq3")]
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_l77sh")
expand_mode = 5
stretch_mode = 5
[node name="Label" type="Label" parent="ContentInspector/遮罩"]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -50.0
offset_top = -7.0
offset_right = 50.0
offset_bottom = 7.0
grow_horizontal = 2
grow_vertical = 2
horizontal_alignment = 1
autowrap_mode = 3

View File

@ -3,3 +3,4 @@ extends CanvasLayer
func _ready() -> void: func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
%Label.text = tr("c02_保卫科老鼠精").replace("<br>", "\n")

View File

@ -2,7 +2,6 @@ extends Control
# var main_scene := preload("res://scene/main.tscn") as PackedScene # var main_scene := preload("res://scene/main.tscn") as PackedScene
@onready var settings = $Settings
@onready var animation_player = $AnimationPlayer as AnimationPlayer @onready var animation_player = $AnimationPlayer as AnimationPlayer
@onready var animation_root = $AnimationRoot as Control @onready var animation_root = $AnimationRoot as Control
@onready var sfx = %Sfx as Sfx @onready var sfx = %Sfx as Sfx
@ -60,8 +59,7 @@ func _on_resume_pressed():
func _enter_main_scene(): func _enter_main_scene():
# get_tree().change_scene_to_packed.call_deferred(main_scene) SceneManager.enter_main_scene()
get_tree().change_scene_to_file.call_deferred("res://scene/main.tscn")
func _on_quit_pressed(): func _on_quit_pressed():
@ -78,6 +76,3 @@ func _unhandled_input(event: InputEvent) -> void:
animation_player.stop() animation_player.stop()
animation_root.visible = false animation_root.visible = false
animation_finished = true animation_finished = true
else:
# 设置菜单
settings.visible = true

View File

@ -1,10 +1,9 @@
[gd_scene load_steps=12 format=3 uid="uid://c4ycvdsabi7lw"] [gd_scene load_steps=11 format=3 uid="uid://c4ycvdsabi7lw"]
[ext_resource type="Script" uid="uid://b4rw4hk7ns4m8" path="res://scene/index_page.gd" id="1_c7y7r"] [ext_resource type="Script" uid="uid://b4rw4hk7ns4m8" path="res://scene/index_page.gd" id="1_c7y7r"]
[ext_resource type="Texture2D" uid="uid://bcc0bk34l5gbc" path="res://asset/art/ui/index_menu/菜单背景1.png" id="1_jxn4k"] [ext_resource type="Texture2D" uid="uid://bcc0bk34l5gbc" path="res://asset/art/ui/index_menu/菜单背景1.png" id="1_jxn4k"]
[ext_resource type="AudioStream" uid="uid://cvttds81trcoc" path="res://asset/audio/sfx/UI/click.wav" id="2_te6ya"] [ext_resource type="AudioStream" uid="uid://cvttds81trcoc" path="res://asset/audio/sfx/UI/click.wav" id="2_te6ya"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_5oc6i"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_5oc6i"]
[ext_resource type="PackedScene" uid="uid://beok2r6fgburn" path="res://scene/settings/settings.tscn" id="4_5m37n"]
[sub_resource type="Animation" id="Animation_8kiap"] [sub_resource type="Animation" id="Animation_8kiap"]
resource_name = "default" resource_name = "default"
@ -122,16 +121,3 @@ theme_override_styles/hover = SubResource("StyleBoxFlat_q8n5c")
theme_override_styles/pressed = SubResource("StyleBoxFlat_scxsv") theme_override_styles/pressed = SubResource("StyleBoxFlat_scxsv")
theme_override_styles/normal = SubResource("StyleBoxEmpty_vyh3d") theme_override_styles/normal = SubResource("StyleBoxEmpty_vyh3d")
text = "index_退出游戏" text = "index_退出游戏"
[node name="Settings" parent="." instance=ExtResource("4_5m37n")]
visible = false
[node name="ColorRect" type="ColorRect" parent="Settings"]
z_index = -1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0, 0, 0, 0.862745)

View File

@ -270,6 +270,10 @@ func _chechout_stage(s: int, play_sfx := true) -> void:
if play_sfx: if play_sfx:
sfx_close_lid.play() sfx_close_lid.play()
2: 2:
if not ArchiveManager.get_global_value("c02_musicbox_has_opened"):
ArchiveManager.set_global_entry("c02_musicbox_has_opened", false)
SceneManager.pop_center_notification(tr("c02_s02_八音盒缺人偶"))
else:
SceneManager.pop_center_notification(tr("ui_use_prop")) SceneManager.pop_center_notification(tr("ui_use_prop"))
box_opened.visible = true box_opened.visible = true
d4.visible = false d4.visible = false
@ -328,11 +332,11 @@ func _unhandled_input(event: InputEvent) -> void:
func _on_pick_catty(): func _on_pick_catty():
if not SceneManager.has_prop("prop_小猫玩具的脑袋"): if not SceneManager.has_prop("prop_小猫玩具的脑袋"):
return return
var inspector = SceneManager.get_inspector()
# 将小猫头与身子合并 # 将小猫头与身子合并
SceneManager.disable_prop_item("prop_小猫玩具的脑袋") SceneManager.disable_prop_item("prop_小猫玩具的脑袋")
SceneManager.disable_prop_item("prop_无头小猫玩具") SceneManager.disable_prop_item("prop_无头小猫玩具")
SceneManager.enable_prop_item_silently("prop_小猫玩具完整") SceneManager.enable_prop_item_silently("prop_小猫玩具完整")
var inspector = SceneManager.get_inspector()
await inspector.quit_and_hidden await inspector.quit_and_hidden
var sprite = $"拼接小猫玩具" var sprite = $"拼接小猫玩具"
sprite.visible = true sprite.visible = true
@ -340,3 +344,6 @@ func _on_pick_catty():
await sprite.animation_finished await sprite.animation_finished
sprite.visible = false sprite.visible = false
SceneManager.enable_prop_item("prop_小猫玩具完整") SceneManager.enable_prop_item("prop_小猫玩具完整")
# 八音盒中看不到 os
# await inspector.quit_and_hidden
# SceneManager.pop_os_with_str(tr("c02_获得小猫玩具"))

View File

@ -15,7 +15,6 @@ environment = ExtResource("9_jsof5")
[node name="GroundLoader" parent="." instance=ExtResource("10_8rc5n")] [node name="GroundLoader" parent="." instance=ExtResource("10_8rc5n")]
position = Vector2(1, 0) position = Vector2(1, 0)
current_scene = "c01_s05"
entrance_portal = "right" entrance_portal = "right"
[node name="PropInspector" parent="." instance=ExtResource("5_ux0rw")] [node name="PropInspector" parent="." instance=ExtResource("5_ux0rw")]