细节调整
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png
Executable file
After Width: | Height: | Size: 56 KiB |
34
asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d05pqud4yoxx3"
|
||||
path="res://.godot/imported/bg_公寓门口.png-5b96fed8c17c1ee89574cd626a23f2fe.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png"
|
||||
dest_files=["res://.godot/imported/bg_公寓门口.png-5b96fed8c17c1ee89574cd626a23f2fe.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
|
@ -1,11 +1,7 @@
|
||||
~ c01_s05_院长房间_开场
|
||||
~ c01_s05_院长房间_看不清了
|
||||
???: ...后面看不清了。 [ID:c01_1小小蝶_开头阅读2]
|
||||
=> END
|
||||
|
||||
#~ c01_s05_院长房间_开场_sh
|
||||
#???: ...后面看不清了。 [ID:c01_1小小蝶_开头阅读2]
|
||||
#=> END
|
||||
|
||||
~ c01_s06_走廊前对话
|
||||
老师: 昨天认的字,现在全忘了? [ID:c01_2老师1]
|
||||
老师: (唉呀)黄鱼脑子! [ID:c01_2老师2]
|
||||
@ -152,6 +148,9 @@
|
||||
车夫: 读书?读书好呀。打您一上车,我就能感觉到那什么...书香气,对对对,书香气! [ID:c01_9车夫_17]
|
||||
车夫: 您将来一定大有可为! [ID:c01_9车夫_18]
|
||||
吕萍: 那就借师傅吉言了。 [ID:c01_9小蝶_8]
|
||||
=> END
|
||||
|
||||
~ c01_s11_车夫对话5
|
||||
车夫: 到地方喽——您看好自己的东西再下车! [ID:c01_9车夫_19]
|
||||
吕萍: 谢谢。 [ID:c01_9小蝶_9]
|
||||
=> END
|
@ -224,7 +224,7 @@ c02_4小蝉_1,啊?,,方小蝉,,
|
||||
c02_4小蝉_2,...「死」是什么意思?,,方小蝉,,
|
||||
c02_4瞎子_2,每个人就像一个封起来的盒子,人死了,就是打开盒盖,把里面的灵魂放走了。,,方启钊,,
|
||||
c02_4小蝉_3,然后呢?,,方小蝉,,
|
||||
c02_4小蝉_4,方小蝉:那个盒子怎么样了?,,,,
|
||||
c02_4小蝉_4,那个盒子怎么样了?,,方小蝉,,
|
||||
c02_4瞎子_3,一个空盒子而已,没人会在乎这个。,,方启钊,,
|
||||
c02_4小蝉_5,...那你死了之后,也会变成空盒子吗?我可以住进空盒子里陪着你。,,方小蝉,,
|
||||
c02_4瞎子_4,你不明白。人死了,就意味着...,,方启钊,,
|
||||
@ -237,9 +237,9 @@ c02_4瞎子_9,你还小,不需要知道这么多。,,方启钊,,
|
||||
c02_4小蝉_7,...但是你不要死,爸爸。,,方小蝉,,
|
||||
c02_4瞎子_10,生死哪由人。,,方启钊,,
|
||||
c02_4瞎子_11,走吧。,,方启钊,,
|
||||
c02_11肉铺敲门_1,理发二楼,看病三楼!,,???,,
|
||||
c02_11肉铺敲门_2,敲什么敲!,,???,,
|
||||
c02_11肉铺敲门_3,不做生意赶紧滚!,,???,,
|
||||
c02_11肉铺敲门_1,理发二楼,看病三楼!,,???,,
|
||||
c02_11肉铺敲门_2,敲什么敲!,,???,,
|
||||
c02_11肉铺敲门_3,不做生意赶紧滚!,,???,,
|
||||
c02_5小男孩_1,大姐姐,等一下!你玩过打弹珠没有?,,小男孩,,
|
||||
c02_5小男孩_2,你赢了的话,我们就认你当老大,听你的吩咐办事!,,小男孩,,
|
||||
c02_5小男孩_3,你得有弹珠才能跟我们玩儿!,,,,
|
||||
|
|
@ -1,8 +1,3 @@
|
||||
~ c02_s01_门口
|
||||
芦昌路26弄3号 [ID:c02_芦昌路26]
|
||||
=> END
|
||||
|
||||
|
||||
~ c02_04_李氏癞子
|
||||
#[#anonymous]
|
||||
李兰: 真的假的?你钻进去啦,你这个体型进得去哒? [ID:c02_6偷听对话_李氏_1]
|
||||
@ -45,12 +40,12 @@
|
||||
=> END
|
||||
|
||||
~ c02_s03_敲门游戏intro
|
||||
???: 理发二楼,看病三楼! [ID:c02_11肉铺敲门_1]
|
||||
???: 理发二楼,看病三楼! [ID:c02_11肉铺敲门_1]
|
||||
=> END
|
||||
|
||||
~ c02_s03_敲门游戏
|
||||
???: 敲什么敲! [ID:c02_11肉铺敲门_2]
|
||||
???: 不做生意赶紧滚! [ID:c02_11肉铺敲门_3]
|
||||
???: 敲什么敲! [ID:c02_11肉铺敲门_2]
|
||||
???: 不做生意赶紧滚! [ID:c02_11肉铺敲门_3]
|
||||
=> END
|
||||
|
||||
# 寻找弹珠
|
||||
@ -117,7 +112,7 @@
|
||||
#【未完成拯救小蝉的游戏】
|
||||
#小蝉: 再见了,大姐姐。
|
||||
|
||||
~ c02_s11_谢幕交谈
|
||||
~ c02_s11_谢幕交谈1
|
||||
吕萍: 小姑娘,你认识我,对不对? [ID:c02_10小蝶_1]
|
||||
方小蝉: 嗯。 [ID:c02_10小蝉_1]
|
||||
吕萍: 我能感觉到,从我踏进这里的那一刻,你就在盯着我。 [ID:c02_10小蝶_2]
|
||||
|
@ -1,27 +1,27 @@
|
||||
~ c01_院长座钟
|
||||
x年 [ID:t89c0f4a8de]
|
||||
下午一点 [ID:t356af5308e]
|
||||
~ c01_飘落的寻人启事
|
||||
寻人启事 [ID:c01_飘落的寻人启事1]
|
||||
=> END
|
||||
|
||||
~ c02_鼠疫海报
|
||||
据闻奉贤县分水墩又有七人染受鼠疫,病状可怖,闻医官药治无用,免职。 [ID:t344c97cf2c]
|
||||
有地方人称鼠疫为妖邪作祟,甚为惊骇,一时人心惶惶,竟有聚众滋闹之事,政府以防疫事宜关系紧要,拟赴分水墩一带调查防疫事宜云。 [ID:tdb119a3714]
|
||||
据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。[ID:tdb119a3714]
|
||||
《申报》 [ID:ta750647b12]
|
||||
民国五年一月十三日 [ID:t736cca4563]
|
||||
=> END
|
||||
|
||||
~ c02_公寓告示
|
||||
公寓告示正文 [ID:公寓告示正文_1]
|
||||
=> END
|
||||
|
||||
~ c02_海报1
|
||||
海报1内容 [ID:c02_海报1]
|
||||
战胜北方鼠疫之二杰 [ID:c02_海报1]
|
||||
=> END
|
||||
|
||||
~ c02_海报2
|
||||
海报2内容 [ID:c02_海报2]
|
||||
剪辮懸樑上偵探奇聞 [ID:c02_海报2]
|
||||
=> END
|
||||
|
||||
~ c02_海报3
|
||||
大舞台 [ID:c02_海报3]
|
||||
二月初三夜,二等正厅,三等包厢 [ID:c02_海报4]
|
||||
=> END
|
||||
|
||||
~ c02_保卫科花名册
|
||||
花名册内容 [ID:c02_保卫科花名册]
|
||||
芦昌公寓居民登记簿(黄国栋记) [ID:c02_保卫科花名册1]
|
||||
... [ID:c02_保卫科花名册2]
|
||||
=> END
|
||||
|
@ -4,6 +4,42 @@ ui_press_b,按 B 打开背包,,,
|
||||
5,5,,,
|
||||
院长的信...,院长的信...,,,
|
||||
prop_小鞋子,小鞋子,,,[#texture=c02/小鞋子.png]
|
||||
c02_绳子剪刀,绳子和剪刀,,,
|
||||
c02_玩具缺脑袋,这个玩具缺了个脑袋,,,
|
||||
c02_又是寻人启示,又是那张寻人启示,,,
|
||||
c02_墙上的海报被撕掉了,墙上的海报被撕掉了,,,
|
||||
c02_井臭,井里有一股臭味,,,
|
||||
c02_中药材,车上放了一些中药材,,,
|
||||
c02_排队,排队的人堵住了上楼的路,,,
|
||||
c02_不要出去,最好还是先不要出去,,,
|
||||
c02_太阳,太阳快落山了,,,
|
||||
c02_民国六年1015,民国六年十月十五日,,,
|
||||
c02_一个洞,一个洞,里面好像还有空间,,,
|
||||
c02_工具箱,工具箱,,,
|
||||
c02_找到有用的东西,应该能找到有用的东西,,,
|
||||
c02_公寓告示,公寓告示,,,
|
||||
c02_通往里间的门,通往里间的门,,,
|
||||
c02_花名册,花名册,,,
|
||||
c02_罪,罪,,,
|
||||
c02_门上有什么东西,门上有什么东西,,,
|
||||
c02_奠,奠,,,
|
||||
c02_寻夏小蝉,失踪的小孩名叫夏小蝉,,,
|
||||
c02_小猫干尸,小猫的尸体已经干了,,,
|
||||
c02_几块大洋,几块大洋,,,
|
||||
c02_死老鼠,死掉的老鼠,,,
|
||||
c02_石缝开花,石缝里开了几束花,,,
|
||||
c02_石壁空间,石壁另一头好像还有空间,,,
|
||||
c02_民国六年1221,民国六年十二月二十一日,,,
|
||||
c02_患者感谢信,一些患者的感谢信,,,
|
||||
c02_被撕掉的书,一本被撕掉的书,,,
|
||||
c02_里面有什么东西,里面有什么东西,,,
|
||||
c02_戏台上的诗,戏台上面刻了一首诗,,,
|
||||
c02_锁开了,锁开了,,,
|
||||
c02_口袋里有东西,口袋里有东西,,,
|
||||
c02_雾太大,雾太大了,看不清路,,,
|
||||
c02_八音盒,是个八音盒,,,
|
||||
c02_祝女儿早日康复,祝女儿早日康复,,,
|
||||
c02_图案一样,这图案和我手臂上的一摸一样,,,
|
||||
index_新游戏,新游戏,,,
|
||||
index_继续游戏,继续游戏,,,
|
||||
index_退出游戏,退出游戏,,,
|
||||
@ -31,9 +67,9 @@ ui_阅读,阅读,,,
|
||||
ui_检阅,检阅,,,
|
||||
ui_收起,收起,,,
|
||||
ui_夜行船1,百岁光阴一梦蝶。,,,
|
||||
ui_夜行船2,重回⾸往事堪嗟。,,,
|
||||
ui_夜行船3,今⽇春来。,,,
|
||||
ui_夜行船4,今⽇春来,明朝花谢。,,,
|
||||
ui_夜行船2,重回首往事堪嗟。,,,
|
||||
ui_夜行船3,今日春来。,,,
|
||||
ui_夜行船4,今日春来,明朝花谢。,,,
|
||||
ui_夜行船5,急罚盏夜阑灯灭。,,,
|
||||
ui_夜行船6,夜行船,,,
|
||||
prop_空手,空手,,,
|
||||
@ -108,48 +144,17 @@ c01_s07_书店展柜,"院长说,读一百本书,就可以成为无所不能
|
||||
如果我再大一些,没准可以求店长把我留下,我会干很多活,也能吃苦...",,,
|
||||
c01_s08_书架游戏完成,这些书都被老鼠啃坏了,连木头架子都没放过。,,,
|
||||
c01_s08_获得袁大头后,工钱还在老地方。,,,
|
||||
c02_小蝉寻人启事_脸部破碎,"似乎是一张寻人启事
|
||||
脸的部分被撕掉了,看不清",,,
|
||||
c02_小蝉寻人启事_脸部破碎,寻人启事...画像和字迹都看不清。,,,
|
||||
c02_芦昌路26,芦昌路26弄3号,就是这里了。,,,
|
||||
c02_冷飕飕的,冷飕飕的...,,,
|
||||
c02_太暗了,太暗了,找找能照明的东西吧。,,,
|
||||
c02_陈旧的煤油灯,上了年头的煤油灯,似乎很久没用过了。,,,
|
||||
c02_使用煤油灯,呼,那股阴冷的感觉也消失了。,,,
|
||||
c02_卫生宣传画,几张卫生宣传画,,,
|
||||
c02_老鼠洞,"一个老鼠洞
|
||||
在这种楼里挺常见的",,,
|
||||
c02_十几年前的报纸,十几年前的报纸,,,
|
||||
c02_一楼楼道被挡住,被挡住了,,,
|
||||
c02_火灾等待准备,还没准备好点火呢,,,
|
||||
小猫玩具发光,嗯?玩具在发光,,,
|
||||
c02_点火前阻止右移,没时间浪费了!想想办法救出小蝉...,,,
|
||||
c02_绳子剪刀,绳子和剪刀,,,
|
||||
c02_玩具缺脑袋,这个玩具缺了个脑袋,,,
|
||||
c02_又是寻人启示,又是那张寻人启示,,,
|
||||
c02_墙上的海报被撕掉了,墙上的海报被撕掉了,,,
|
||||
c02_井臭,井里有一股臭味,,,
|
||||
c02_中药材,车上放了一些中药材,,,
|
||||
c02_排队,排队的人堵住了上楼的路,,,
|
||||
c02_不要出去,最好还是先不要出去,,,
|
||||
c02_太阳,太阳快落山了,,,
|
||||
c02_民国六年1015,民国六年十月十五日,,,
|
||||
c02_一个洞,一个洞,里面好像还有空间,,,
|
||||
c02_工具箱,工具箱,,,
|
||||
c02_找到有用的东西,应该能找到有用的东西,,,
|
||||
c02_公寓告示,公寓告示,,,
|
||||
c02_通往里间的门,通往里间的门,,,
|
||||
c02_花名册,花名册,,,
|
||||
c02_罪,罪,,,
|
||||
c02_门上有什么东西,门上有什么东西,,,
|
||||
c02_奠,奠,,,
|
||||
c02_寻夏小蝉,失踪的小孩名叫夏小蝉,,,
|
||||
c02_小猫干尸,小猫的尸体已经干了,,,
|
||||
c02_几块大洋,几块大洋,,,
|
||||
c02_死老鼠,死掉的老鼠,,,
|
||||
c02_石缝开花,石缝里开了几束花,,,
|
||||
c02_石壁空间,石壁另一头好像还有空间,,,
|
||||
c02_民国六年1221,民国六年十二月二十一日,,,
|
||||
c02_患者感谢信,一些患者的感谢信,,,
|
||||
c02_被撕掉的书,一本被撕掉的书,,,
|
||||
c02_里面有什么东西,里面有什么东西,,,
|
||||
c02_戏台上的诗,戏台上面刻了一首诗,,,
|
||||
c02_锁开了,锁开了,,,
|
||||
c02_口袋里有东西,口袋里有东西,,,
|
||||
c02_雾太大,雾太大了,看不清路,,,
|
||||
c02_八音盒,是个八音盒,,,
|
||||
c02_祝女儿早日康复,祝女儿早日康复,,,
|
||||
c02_图案一样,这图案和我手臂上的一摸一样,,,
|
||||
|
|
@ -33,9 +33,9 @@
|
||||
|
||||
|
||||
百岁光阴一梦蝶。 [ID:ui_夜行船1]
|
||||
重回⾸往事堪嗟。 [ID:ui_夜行船2]
|
||||
今⽇春来。 [ID:ui_夜行船3]
|
||||
今⽇春来,明朝花谢。 [ID:ui_夜行船4]
|
||||
重回首往事堪嗟。 [ID:ui_夜行船2]
|
||||
今日春来。 [ID:ui_夜行船3]
|
||||
今日春来,明朝花谢。 [ID:ui_夜行船4]
|
||||
急罚盏夜阑灯灭。 [ID:ui_夜行船5]
|
||||
夜行船 [ID:ui_夜行船6]
|
||||
=> END
|
||||
@ -149,16 +149,21 @@
|
||||
工钱还在老地方。 [ID:c01_s08_获得袁大头后]
|
||||
# c02
|
||||
# c02-s01 街道
|
||||
似乎是一张寻人启事\n脸的部分被撕掉了,看不清 [ID:c02_小蝉寻人启事_脸部破碎]
|
||||
寻人启事...画像和字迹都看不清。 [ID:c02_小蝉寻人启事_脸部破碎]
|
||||
芦昌路26弄3号,就是这里了。 [ID:c02_芦昌路26]
|
||||
# c02-s02 走道
|
||||
冷飕飕的... [ID:c02_冷飕飕的]
|
||||
太暗了,找找能照明的东西吧。 [ID:c02_太暗了]
|
||||
上了年头的煤油灯,似乎很久没用过了。 [ID:c02_陈旧的煤油灯]
|
||||
呼,那股阴冷的感觉也消失了。 [ID:c02_使用煤油灯]
|
||||
几张卫生宣传画 [ID:c02_卫生宣传画]
|
||||
一个老鼠洞\n在这种楼里挺常见的 [ID:c02_老鼠洞]
|
||||
十几年前的报纸 [ID:c02_十几年前的报纸]
|
||||
# c02 内侧楼道
|
||||
被挡住了 [ID:c02_一楼楼道被挡住]
|
||||
|
||||
# c02 火灾
|
||||
还没准备好点火呢 [ID:c02_火灾等待准备]
|
||||
嗯?玩具在发光 [ID:小猫玩具发光]
|
||||
没时间浪费了!想想办法救出小蝉... [ID:c02_点火前阻止右移]
|
||||
|
||||
|
||||
|
@ -1970,6 +1970,24 @@ animations = [{
|
||||
"texture": ExtResource("147_jn0hd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("146_glua7")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("147_jn0hd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("146_glua7")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("147_jn0hd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("146_glua7")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("147_jn0hd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("148_gtwc1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
@ -2812,7 +2830,7 @@ animations = [{
|
||||
"speed": 6.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"duration": 12.0,
|
||||
"texture": ExtResource("227_n073l")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
|
@ -2,18 +2,18 @@
|
||||
|
||||
[resource]
|
||||
bus/0/volume_db = -0.030508
|
||||
bus/1/name = &"game_sfx"
|
||||
bus/1/name = &"dialog"
|
||||
bus/1/solo = false
|
||||
bus/1/mute = false
|
||||
bus/1/bypass_fx = false
|
||||
bus/1/volume_db = 0.0
|
||||
bus/1/send = &"Master"
|
||||
bus/2/name = &"dialog"
|
||||
bus/1/volume_db = -0.00828743
|
||||
bus/1/send = &"game_sfx"
|
||||
bus/2/name = &"game_sfx"
|
||||
bus/2/solo = false
|
||||
bus/2/mute = false
|
||||
bus/2/bypass_fx = false
|
||||
bus/2/volume_db = 0.0
|
||||
bus/2/send = &"game_sfx"
|
||||
bus/2/volume_db = -0.00606537
|
||||
bus/2/send = &"Master"
|
||||
bus/3/name = &"music"
|
||||
bus/3/solo = false
|
||||
bus/3/mute = false
|
||||
|
@ -80,7 +80,6 @@ func unlock_player():
|
||||
# return true
|
||||
# return player.operational
|
||||
|
||||
|
||||
# func set_player_operational(val := true):
|
||||
# var player = get_player() as MainPlayer
|
||||
# if player:
|
||||
@ -157,6 +156,7 @@ func get_current_prop(must_selected: bool) -> String:
|
||||
return prop_hud.inventory.current_item_key()
|
||||
return ""
|
||||
|
||||
|
||||
# 静默增加 prop,一般用于提前保存数据,确保数据一致性(防止在 await 时退出等导致丢数据)
|
||||
func enable_prop_item_silently(prop_key: String) -> void:
|
||||
var prop_hud = get_prop_hud()
|
||||
@ -165,6 +165,7 @@ func enable_prop_item_silently(prop_key: String) -> void:
|
||||
else:
|
||||
printerr("enable_prop_item_silently PropHud node not found")
|
||||
|
||||
|
||||
func enable_prop_item(prop_key: String) -> void:
|
||||
var prop_hud = get_prop_hud()
|
||||
if prop_hud:
|
||||
@ -177,6 +178,7 @@ func enable_important_item(prop_key: String) -> void:
|
||||
var prop_hud = get_prop_hud()
|
||||
if prop_hud:
|
||||
prop_hud.inventory.enable_important_item(prop_key)
|
||||
SceneManager.pop_center_notification(tr("ui_important_item_update"))
|
||||
else:
|
||||
printerr("enable_important_item PropHud node not found")
|
||||
|
||||
@ -189,14 +191,20 @@ func disable_prop_item(prop_key: String) -> void:
|
||||
printerr("disable_prop_item PropHud node not found")
|
||||
|
||||
|
||||
func pop_os(lines := []):
|
||||
var player = get_player()
|
||||
func pop_os(lines := [], auto_freeze := true, auto_release := true):
|
||||
var player = get_player() as MainPlayer
|
||||
if player:
|
||||
player.pop_os(lines)
|
||||
player.pop_os(lines, auto_freeze, auto_release)
|
||||
else:
|
||||
printerr("Player node not found")
|
||||
|
||||
|
||||
func pop_os_with_str(translation_key: String, auto_freeze := true, auto_release := true):
|
||||
var msg = tr(translation_key)
|
||||
var lines = await DialogueUtil.generate_lines(msg)
|
||||
SceneManager.pop_os(lines, auto_freeze, auto_release)
|
||||
|
||||
|
||||
func pop_notification(msg: String, number := 1) -> void:
|
||||
var notification_node = get_node_or_null("/root/Main/UILayer/Notification")
|
||||
if notification_node:
|
||||
|
@ -165,7 +165,6 @@ mouse_filter = 1
|
||||
text = "Response example"
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
volume_db = -20.0
|
||||
bus = &"dialog"
|
||||
|
||||
[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"]
|
||||
|
@ -20,6 +20,7 @@ signal triggered
|
||||
@export var freeze_time := 5.0
|
||||
var hook_animation = ""
|
||||
@export var lock_player_on_playing_dialogue = true
|
||||
@export var hook_os_key := ""
|
||||
@export_enum("c01", "c02", "c03", "c04", "c05") var hook_dialogue_res = "c01":
|
||||
set(val):
|
||||
hook_dialogue_res = val
|
||||
@ -151,6 +152,9 @@ func _do_trigger():
|
||||
SceneManager.freeze_player(0.0)
|
||||
DialogueManager.show_dialogue_balloon(dialogue_res, hook_dialogue_title)
|
||||
DialogueManager.dialogue_ended.connect(_on_dialogue_ended, CONNECT_ONE_SHOT)
|
||||
# hook_os
|
||||
if hook_os_key:
|
||||
SceneManager.pop_os_with_str(hook_os_key)
|
||||
if hook_method:
|
||||
var animation_player = _get_animation_player()
|
||||
if animation_player:
|
||||
|
@ -62,6 +62,7 @@ var tried_times: int:
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
notify_property_list_changed()
|
||||
return
|
||||
area2d.body_entered.connect(_reset)
|
||||
area2d.body_exited.connect(_on_cancel)
|
||||
@ -100,7 +101,7 @@ func _on_interacted() -> void:
|
||||
|
||||
func _show_os(res, title):
|
||||
var lines = await DialogueUtil.get_lines(res, title)
|
||||
SceneManager.pop_os(lines)
|
||||
SceneManager.pop_os(lines, false, false)
|
||||
interacting = true
|
||||
var player = SceneManager.get_player()
|
||||
if player:
|
||||
|
@ -131,10 +131,7 @@ func _on_interacted() -> void:
|
||||
tried_times += 1
|
||||
if holding:
|
||||
if holding_reason_key:
|
||||
var reason = tr(holding_reason_key)
|
||||
if reason:
|
||||
var lines = await DialogueUtil.generate_lines(reason)
|
||||
SceneManager.pop_os(lines)
|
||||
SceneManager.pop_os_with_str(holding_reason_key)
|
||||
return
|
||||
if target_portal == "none" or not enabled:
|
||||
return
|
||||
|
@ -6,9 +6,9 @@
|
||||
[ext_resource type="Texture2D" uid="uid://dtyg0nugb2tnf" path="res://asset/art/ui/action_mark/UI探索.png" id="2_fr7ak"]
|
||||
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="3_6khux"]
|
||||
[ext_resource type="Texture2D" uid="uid://bc8sn2v4t1yta" path="res://asset/art/ui/action_mark/UI开锁.png" id="3_fr7ak"]
|
||||
[ext_resource type="AudioStream" uid="uid://bghyinc16m1nx" path="res://asset/audio/sfx/交互/收起背包.wav" id="4_p48ld"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_ty1ds"]
|
||||
[ext_resource type="AudioStream" uid="uid://ccng5y2fip6mc" path="res://asset/audio/sfx/ui/开锁声.mp3" id="5_l48hy"]
|
||||
[ext_resource type="AudioStream" uid="uid://dqdjxy04ge0r5" path="res://asset/audio/sfx/旧版/c02/场景转场.mp3" id="6_1sj6c"]
|
||||
[ext_resource type="AudioStream" uid="uid://c1eftumrd4mgw" path="res://asset/audio/sfx/交互/开门.wav" id="6_p48ld"]
|
||||
[ext_resource type="AudioStream" uid="uid://inmdv5gqqius" path="res://asset/audio/sfx/ui/门锁互动.mp3" id="7_bjcty"]
|
||||
|
||||
@ -27,7 +27,7 @@ prop_key = ""
|
||||
|
||||
[node name="SfxDefault" parent="." instance=ExtResource("3_6khux")]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("4_p48ld")
|
||||
stream = ExtResource("6_1sj6c")
|
||||
file = ""
|
||||
|
||||
[node name="SfxOpen" parent="." instance=ExtResource("3_6khux")]
|
||||
|
@ -87,6 +87,7 @@ func _ready() -> void:
|
||||
# %ColorRectTop.visible = true
|
||||
# %ColorRectBottom.visible = true
|
||||
# 如果 debug 模式下不通过 GroundLoader 启动,则插入到 main 以下
|
||||
_setup_player_light()
|
||||
|
||||
|
||||
func _restart_from_main():
|
||||
@ -160,3 +161,11 @@ func move_player_to_portal(portal_name: String) -> void:
|
||||
printerr("move_player_to_portal player not ready")
|
||||
# 传送后,重置 camera 位置
|
||||
camera_focus_marker.reset_position_immediately()
|
||||
|
||||
func _setup_player_light():
|
||||
# 设置角色身上光源
|
||||
if directional_light.blend_mode == Light2D.BLEND_MODE_SUB and directional_light.energy > 0.6:
|
||||
player.enable_light = true
|
||||
else:
|
||||
player.enable_light = false
|
||||
print("_setup_player_light player.enable_light=", player.enable_light)
|
||||
|
@ -60,7 +60,9 @@ func _ready() -> void:
|
||||
if not ignore_archive:
|
||||
_load_save()
|
||||
if current_scene and entrance_portal:
|
||||
transition_to_scene(current_scene, entrance_portal, 0.0)
|
||||
# 首次进入渐隐效果
|
||||
transition_to_scene(current_scene, entrance_portal)
|
||||
# transition_to_scene(current_scene, entrance_portal, 0.0)
|
||||
|
||||
|
||||
func _load_save():
|
||||
|
@ -6,26 +6,26 @@ var frame: Note2D
|
||||
var paper: Interactable2D
|
||||
var right_door: Portal2D
|
||||
var piano: Interactable2D
|
||||
var bed_reading: AnimatedSprite2D
|
||||
|
||||
|
||||
# 覆盖该方法
|
||||
func _default_data() -> Dictionary:
|
||||
return {
|
||||
"frame_relocated": false
|
||||
}
|
||||
return {"frame_relocated": false}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
oneshot_animation_finished.connect(show_interact_help)
|
||||
|
||||
func intro_start():
|
||||
SceneManager.freeze_player(0)
|
||||
await animation_finished
|
||||
SceneManager.release_player()
|
||||
$"../DeployLayer/床".enabled = true
|
||||
|
||||
func play_intro_dialogue():
|
||||
# 播放开场对话
|
||||
# DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s05_院长房间_开场")
|
||||
# 直接使用 sfx,防止下方字幕与全屏文字重复
|
||||
$intro_audio_player.play()
|
||||
SceneManager.pop_debug_dialog_info("音效", "开场念诵声等")
|
||||
|
||||
|
||||
func _on_ground_ready() -> void:
|
||||
@ -34,8 +34,8 @@ func _on_ground_ready() -> void:
|
||||
paper = $"../DeployLayer/oneshot纸片"
|
||||
right_door = $"../DeployLayer/portal_right"
|
||||
piano = $"../DeployLayer/钢琴"
|
||||
bed_reading = $"../DeployLayer/小小蝶看书"
|
||||
bed_reading.frame_changed.connect(_on_bed_reading_frame_changed)
|
||||
if data["oneshot_animation_played"]:
|
||||
$"../DeployLayer/床".enabled = true
|
||||
# 画框是否已经正位
|
||||
data.frame_relocated = ambush.played and ambush.one_shot
|
||||
# 禁用鸡毛掸子
|
||||
@ -74,18 +74,8 @@ func _on_ground_ready() -> void:
|
||||
$"环境音".finished.connect($"环境音".play)
|
||||
|
||||
|
||||
var intro_dialog_played = false
|
||||
|
||||
func _on_bed_reading_frame_changed():
|
||||
if bed_reading.animation == "c01_小小蝶_床上看书":
|
||||
if bed_reading.frame == 5 and not intro_dialog_played:
|
||||
intro_dialog_played = true
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s05_院长房间_开场")
|
||||
elif bed_reading.frame == 10:
|
||||
# 播放结束,0.5s 后释放角色
|
||||
get_tree().create_timer(0.5).timeout.connect(SceneManager.release_player)
|
||||
$"../DeployLayer/床".enabled = true
|
||||
|
||||
func cant_read():
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s05_院长房间_看不清了")
|
||||
|
||||
|
||||
func _on_note_read():
|
||||
@ -112,15 +102,7 @@ func _on_paper_interacted():
|
||||
paper.visible = false
|
||||
paper.enabled = false
|
||||
SceneManager.enable_prop_item("prop_信碎片1")
|
||||
SceneManager.enable_important_item("prop_信碎片1")
|
||||
right_door.holding = false
|
||||
# SceneManager.pop_debug_dialog_info("音效", "开门声")
|
||||
var inspector = SceneManager.get_inspector() as PropInspector
|
||||
if inspector:
|
||||
# 显示互动提示
|
||||
inspector.quit_and_hidden.connect(
|
||||
SceneManager.pop_center_notification.bind(tr("ui_important_item_update")), CONNECT_ONE_SHOT
|
||||
)
|
||||
|
||||
|
||||
# 钢琴音效,每次按下播放不同音符
|
||||
@ -145,6 +127,7 @@ var piano_streams = [
|
||||
preload("res://asset/audio/sfx/交互/序章/01_院长房间_钢琴_13.wav"),
|
||||
]
|
||||
|
||||
|
||||
func _on_piano_interacted():
|
||||
# 钢琴音符最大编号
|
||||
var piano_id_max := piano_streams.size()
|
||||
|
@ -79,163 +79,163 @@ tracks/3/keys = {
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("MainPlayer:visible")
|
||||
tracks/4/path = NodePath("DeployLayer/画框:rotation")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
"update": 0,
|
||||
"values": [-0.179769]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("DeployLayer/画框:rotation")
|
||||
tracks/5/path = NodePath("Intro:visible")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-0.179769]
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Intro:visible")
|
||||
tracks/6/path = NodePath("Intro:modulate")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("Intro:modulate")
|
||||
tracks/7/path = NodePath("MainPlayer:position")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
"values": [Vector2(26, 88)]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("MainPlayer:position")
|
||||
tracks/8/path = NodePath("DeployLayer/小小蝶看书:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(26, 88)]
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("DeployLayer/小小蝶看书:visible")
|
||||
tracks/9/path = NodePath("DeployLayer/小小蝶看书:frame")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
"values": [10]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("DeployLayer/小小蝶看书:frame")
|
||||
tracks/10/path = NodePath("DeployLayer/oneshot纸片/Area2D:position")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [10]
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("DeployLayer/oneshot纸片/Area2D:position")
|
||||
tracks/11/path = NodePath("DeployLayer/oneshot纸片/AnimatedSprite2D:frame")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
"update": 1,
|
||||
"values": [9]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("DeployLayer/oneshot纸片/AnimatedSprite2D:frame")
|
||||
tracks/12/path = NodePath("DeployLayer/oneshot纸片/Sign:display_sign")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [9]
|
||||
"values": [true]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("DeployLayer/oneshot纸片/Sign:display_sign")
|
||||
tracks/13/path = NodePath("DeployLayer/oneshot纸片/Sign:position")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
"update": 0,
|
||||
"values": [Vector2(3, -4)]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("DeployLayer/oneshot纸片/Sign:position")
|
||||
tracks/14/path = NodePath("CameraFocusMarker:zoom_ratio")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(3, -4)]
|
||||
"values": [1.0]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("CameraFocusMarker:zoom_ratio")
|
||||
tracks/15/path = NodePath("CameraFocusMarker:force_offset")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [1.0]
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
tracks/16/type = "value"
|
||||
tracks/16/imported = false
|
||||
tracks/16/enabled = true
|
||||
tracks/16/path = NodePath("CameraFocusMarker:force_offset")
|
||||
tracks/16/path = NodePath("AnimationPlayer/扶正相框:playing")
|
||||
tracks/16/interp = 1
|
||||
tracks/16/loop_wrap = true
|
||||
tracks/16/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/17/type = "value"
|
||||
tracks/17/imported = false
|
||||
tracks/17/enabled = true
|
||||
tracks/17/path = NodePath("AnimationPlayer/扶正相框:playing")
|
||||
tracks/17/path = NodePath("AnimationPlayer/下床音效:playing")
|
||||
tracks/17/interp = 1
|
||||
tracks/17/loop_wrap = true
|
||||
tracks/17/keys = {
|
||||
@ -247,7 +247,7 @@ tracks/17/keys = {
|
||||
tracks/18/type = "value"
|
||||
tracks/18/imported = false
|
||||
tracks/18/enabled = true
|
||||
tracks/18/path = NodePath("AnimationPlayer/下床音效:playing")
|
||||
tracks/18/path = NodePath("MainPlayer:hide_sprite")
|
||||
tracks/18/interp = 1
|
||||
tracks/18/loop_wrap = true
|
||||
tracks/18/keys = {
|
||||
@ -256,10 +256,34 @@ tracks/18/keys = {
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/19/type = "value"
|
||||
tracks/19/imported = false
|
||||
tracks/19/enabled = true
|
||||
tracks/19/path = NodePath("AnimationPlayer/intro_audio_player:volume_db")
|
||||
tracks/19/interp = 1
|
||||
tracks/19/loop_wrap = true
|
||||
tracks/19/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [-20.0]
|
||||
}
|
||||
tracks/20/type = "value"
|
||||
tracks/20/imported = false
|
||||
tracks/20/enabled = true
|
||||
tracks/20/path = NodePath("Intro/HBoxContainer:modulate")
|
||||
tracks/20/interp = 1
|
||||
tracks/20/loop_wrap = true
|
||||
tracks/20/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_7k2c8"]
|
||||
resource_name = "intro"
|
||||
length = 7.0
|
||||
length = 24.0
|
||||
capture_included = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
@ -268,7 +292,7 @@ tracks/0/path = NodePath("Intro:visible")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 4.63333),
|
||||
"times": PackedFloat32Array(0, 18.4333),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
@ -280,7 +304,7 @@ tracks/1/path = NodePath("Intro:modulate")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 4.4, 4.63333),
|
||||
"times": PackedFloat32Array(0, 15.5333, 18.4333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
|
||||
@ -292,7 +316,7 @@ tracks/2/path = NodePath("MainPlayer:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(3.93333),
|
||||
"times": PackedFloat32Array(17.7333),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(87, 88)]
|
||||
@ -300,93 +324,109 @@ tracks/2/keys = {
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("MainPlayer:visible")
|
||||
tracks/3/path = NodePath("DeployLayer/小小蝶看书:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 6.63333),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("DeployLayer/小小蝶看书:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 6.66667),
|
||||
"times": PackedFloat32Array(0, 23.8667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("DeployLayer/小小蝶看书:frame")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = false
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(18.4, 23.8667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 2,
|
||||
"values": [0, 16]
|
||||
}
|
||||
tracks/5/type = "method"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("MainPlayer")
|
||||
tracks/5/path = NodePath("AnimationPlayer")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [0.0, -1, false],
|
||||
"method": &"freeze_player"
|
||||
}]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("DeployLayer/小小蝶看书:frame")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = false
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(4.56667, 6.66667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 2,
|
||||
"values": [0, 10]
|
||||
}
|
||||
tracks/7/type = "method"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("AnimationPlayer")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0.133333),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"times": PackedFloat32Array(0, 1.93333, 19.1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"intro_start"
|
||||
}, {
|
||||
"args": [],
|
||||
"method": &"play_intro_dialogue"
|
||||
}, {
|
||||
"args": [],
|
||||
"method": &"cant_read"
|
||||
}]
|
||||
}
|
||||
tracks/8/type = "method"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("Intro")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(4.76667),
|
||||
tracks/6/type = "method"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Intro")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(18.5667),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("AnimationPlayer/下床音效:playing")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(5.33333),
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("AnimationPlayer/下床音效:playing")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(21.7667),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("MainPlayer:hide_sprite")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 23.8667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("AnimationPlayer/intro_audio_player:volume_db")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0, 5.5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [-10.0, 0.0]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("Intro/HBoxContainer:modulate")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0, 3.1),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_il8ov"]
|
||||
resource_name = "使用鸡毛掸子"
|
||||
@ -458,34 +498,22 @@ tracks/4/keys = {
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("MainPlayer:visible")
|
||||
tracks/5/path = NodePath("DeployLayer/ambush鸡毛掸子:visible")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0.88, 3.96),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("DeployLayer/ambush鸡毛掸子:visible")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0.02, 1.48, 3.42),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false, true]
|
||||
}
|
||||
tracks/7/type = "method"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("MainPlayer")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
tracks/6/type = "method"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("MainPlayer")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0.08),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
@ -493,42 +521,54 @@ tracks/7/keys = {
|
||||
"method": &"walk_to"
|
||||
}]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("CameraFocusMarker:zoom_ratio")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("CameraFocusMarker:zoom_ratio")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 1.22, 3.1, 4.1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [1.0, 1.3, 1.3, 1.0]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("CameraFocusMarker:force_offset")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("CameraFocusMarker:force_offset")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 4.08),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, -20), Vector2(0, -20)]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("AnimationPlayer/扶正相框:playing")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("AnimationPlayer/扶正相框:playing")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0, 2.28),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("MainPlayer:hide_sprite")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0.94, 3.98),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ocf0o"]
|
||||
resource_name = "纸片飘落"
|
||||
@ -642,7 +682,8 @@ oneshot_animation = "intro"
|
||||
|
||||
[node name="intro_audio_player" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
|
||||
stream = ExtResource("3_sluu3")
|
||||
bus = &"game_sfx"
|
||||
volume_db = -20.0
|
||||
bus = &"dialog"
|
||||
|
||||
[node name="piano_player" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
|
||||
bus = &"game_sfx"
|
||||
@ -707,10 +748,10 @@ title_filter = "c01"
|
||||
note_key = "c01_倾斜的洋相片"
|
||||
|
||||
[node name="Sign" parent="Ground/DeployLayer/画框" index="1"]
|
||||
offset_left = 3.0
|
||||
offset_top = -7.0
|
||||
offset_right = 86.0
|
||||
offset_bottom = 73.0
|
||||
offset_left = 2.77355
|
||||
offset_top = 7.10178
|
||||
offset_right = 85.7736
|
||||
offset_bottom = 87.1018
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="CollisionShape2D" parent="Ground/DeployLayer/画框/Area2D" index="0"]
|
||||
@ -785,10 +826,10 @@ stream = null
|
||||
file = ""
|
||||
|
||||
[node name="Sign" parent="Ground/DeployLayer/钢琴" index="2"]
|
||||
offset_left = -1.0
|
||||
offset_top = -8.0
|
||||
offset_right = -1.0
|
||||
offset_bottom = -8.0
|
||||
offset_left = 4.0
|
||||
offset_top = -18.0
|
||||
offset_right = 4.0
|
||||
offset_bottom = -18.0
|
||||
|
||||
[node name="CollisionShape2D" parent="Ground/DeployLayer/钢琴/Area2D" index="0"]
|
||||
shape = SubResource("RectangleShape2D_5s1ih")
|
||||
@ -807,6 +848,7 @@ height = 50.0
|
||||
|
||||
[node name="MainPlayer" parent="Ground" index="5"]
|
||||
position = Vector2(26, 88)
|
||||
enable_light = false
|
||||
character = "小小蝶"
|
||||
|
||||
[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"]
|
||||
@ -971,4 +1013,3 @@ texture = ExtResource("3_7u4bh")
|
||||
[editable path="Ground/DeployLayer/oneshot纸片"]
|
||||
[editable path="Ground/DeployLayer/oneshot纸片/Sign"]
|
||||
[editable path="Ground/DeployLayer/钢琴"]
|
||||
[editable path="Ground/DeployLayer/钢琴/Sign"]
|
||||
|
@ -92,13 +92,8 @@ func _on_pre_game_intro_finished(_res):
|
||||
# 重置镜头
|
||||
SceneManager.focus_player_and_reset_zoom(2.5)
|
||||
await get_tree().create_timer(1.5).timeout
|
||||
var lines = await DialogueUtil.generate_lines(tr("c01_s06_熟悉的墙画"))
|
||||
var player = SceneManager.get_player() as MainPlayer
|
||||
player.pop_os(lines)
|
||||
player.os_finished.connect(pre_game_os_finished, CONNECT_ONE_SHOT)
|
||||
SceneManager.pop_os_with_str("c01_s06_熟悉的墙画", false, true)
|
||||
|
||||
func pre_game_os_finished():
|
||||
SceneManager.release_player()
|
||||
|
||||
func game_intro() -> void:
|
||||
standing_kid1.get_node("对话1ambush").enabled = false
|
||||
@ -147,17 +142,21 @@ func _game_counting_down(_res = null):
|
||||
func talk1():
|
||||
_on_talked()
|
||||
|
||||
|
||||
# 与小孩 2 对话
|
||||
func talk2():
|
||||
_on_talked()
|
||||
|
||||
|
||||
# 与残疾小孩对话
|
||||
func talk3():
|
||||
_on_talked()
|
||||
|
||||
|
||||
# 玩家与三个小孩的互动计数
|
||||
var talk_count := 0
|
||||
|
||||
|
||||
func _on_talked():
|
||||
talk_count += 1
|
||||
if talk_count == 3:
|
||||
@ -165,10 +164,7 @@ func _on_talked():
|
||||
await DialogueManager.dialogue_ended
|
||||
SceneManager.freeze_player(0)
|
||||
await get_tree().create_timer(1.0).timeout
|
||||
var lines = await DialogueUtil.generate_lines(tr("c01_s06_四小孩对话结束"))
|
||||
var player = SceneManager.get_player() as MainPlayer
|
||||
player.pop_os(lines)
|
||||
player.os_finished.connect(SceneManager.release_player, CONNECT_ONE_SHOT)
|
||||
SceneManager.pop_os_with_str("c01_s06_四小孩对话结束", false, true)
|
||||
|
||||
|
||||
var kid_run_tween
|
||||
|
@ -89,9 +89,7 @@ func seller_interacted():
|
||||
ArchiveManager.archive.prop_inventory.enable_item("prop_信碎片2")
|
||||
await get_tree().create_timer(1.5).timeout
|
||||
$"报童音效".play()
|
||||
var msg = tr("c01_s07_获得报纸")
|
||||
var lines = await DialogueUtil.generate_lines(msg)
|
||||
SceneManager.pop_os(lines)
|
||||
SceneManager.pop_os_with_str("c01_s07_获得报纸")
|
||||
# 播放获得动画
|
||||
await get_tree().create_timer(2.0).timeout
|
||||
SceneManager.enable_prop_item("prop_信碎片2")
|
||||
|
@ -155,9 +155,8 @@ func _on_fall_off_finished() -> void:
|
||||
# 最后释放玩家
|
||||
SceneManager.release_player()
|
||||
SceneManager.get_player().visible = true
|
||||
var lines = await DialogueUtil.generate_lines(tr("c01_s08_书架游戏完成"))
|
||||
var callback = SceneManager.pop_os.bind(lines)
|
||||
get_tree().create_timer(1.0).timeout.connect(callback)
|
||||
await get_tree().create_timer(1.2).timeout
|
||||
SceneManager.pop_os_with_str("c01_s08_书架游戏完成")
|
||||
|
||||
func _setup_weird_bookstore() -> void:
|
||||
# 切换背景音效
|
||||
@ -169,6 +168,7 @@ func _setup_weird_bookstore() -> void:
|
||||
ladder.enabled = false
|
||||
manager.visible = false
|
||||
mice.visible = true
|
||||
$"../DirectionalLight2D".energy = 0.7
|
||||
$"../BGSprite2D".texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/bg_书店夜晚.png")
|
||||
$"../ParallaxForeground/FGParallaxLayer/FGSprite2D".texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/fg_书店夜晚前景.png")
|
||||
ladder.texture = preload("res://asset/art/scene/c01/s08_书店/夜晚版/e_梯子 夜晚.png")
|
||||
@ -205,6 +205,4 @@ func pay_off_wage() -> void:
|
||||
_check_portal()
|
||||
|
||||
func _on_quit_inspect_coin() -> void:
|
||||
var msg = tr("c01_s08_获得袁大头后")
|
||||
var lines = await DialogueUtil.generate_lines(msg)
|
||||
SceneManager.pop_os(lines)
|
||||
SceneManager.pop_os_with_str("c01_s08_获得袁大头后")
|
||||
|
@ -184,6 +184,10 @@ offset = Vector2(0, 40)
|
||||
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
|
||||
points = PackedVector2Array(30, 150, 545, 150)
|
||||
|
||||
[node name="DirectionalLight2D" parent="Ground" index="9"]
|
||||
energy = 0.0
|
||||
blend_mode = 1
|
||||
|
||||
[node name="参考" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
modulate = Color(1, 1, 1, 0.580392)
|
||||
|
@ -4,16 +4,15 @@ extends AnimationRoot
|
||||
var footstep_sfx: Sfx
|
||||
var chapter_sfx: Sfx
|
||||
var main_character: AnimatedSprite2D
|
||||
# 2:33 ~ 3:44, 71s
|
||||
var duration := 67.0
|
||||
var duration := 90.0
|
||||
var target_x := 10750.0
|
||||
var building_duration := 30.0
|
||||
var building_y := 450.0
|
||||
var building_duration := 10.0
|
||||
var building_y := 350.0
|
||||
|
||||
var title_1 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png")
|
||||
var title_2 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png")
|
||||
var title_3 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png")
|
||||
var chapter_title = preload("res://asset/art/scene/c01/s04_旧版序章/f_第一章标题.png")
|
||||
var title_1 = preload("uid://snm3q333tqhl")
|
||||
var title_2 = preload("uid://d4laekws15ap6")
|
||||
var title_3 = preload("uid://5oln8axxcfep")
|
||||
var chapter_title = preload("uid://bvjt8iyliunfs")
|
||||
|
||||
|
||||
# 覆盖该方法
|
||||
@ -45,15 +44,15 @@ func _on_ground_ready() -> void:
|
||||
|
||||
|
||||
func pop_title_1():
|
||||
SceneManager.pop_center_texture(title_1)
|
||||
SceneManager.pop_center_texture(title_1, 6.0)
|
||||
|
||||
|
||||
func pop_title_2():
|
||||
SceneManager.pop_center_texture(title_2)
|
||||
SceneManager.pop_center_texture(title_2, 10.5)
|
||||
|
||||
|
||||
func pop_title_3():
|
||||
SceneManager.pop_center_texture(title_3)
|
||||
SceneManager.pop_center_texture(title_3, 4)
|
||||
|
||||
|
||||
# 又是这个梦.. 12句
|
||||
@ -97,17 +96,15 @@ func dialog3() -> void:
|
||||
dialogue_c01, "c01_s11_车夫对话3", [GlobalConfig.DIALOG_IGNORE_INPUT]
|
||||
)
|
||||
|
||||
func dialog4() -> void:
|
||||
DialogueManager.show_dialogue_balloon(
|
||||
dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT]
|
||||
)
|
||||
|
||||
|
||||
func _on_finished():
|
||||
var camera = SceneManager.get_camera_marker()
|
||||
footstep_sfx.stop()
|
||||
# 吕萍: “是到了吗,师傅”
|
||||
# 车夫: “到了,芦昌路26弄3号,就是这里”
|
||||
# 6句
|
||||
# 车夫: “嗯,钱正好,那么我先跑了”
|
||||
DialogueManager.show_dialogue_balloon(
|
||||
dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT]
|
||||
)
|
||||
# 运镜 marker
|
||||
var marker = Node2D.new()
|
||||
get_parent().add_child(marker)
|
||||
@ -117,11 +114,17 @@ func _on_finished():
|
||||
camera.focus_node(marker, 0.0)
|
||||
# 运镜,上下打量公寓楼
|
||||
var tween = create_tween()
|
||||
tween.tween_interval(3.0)
|
||||
tween.tween_interval(1.0)
|
||||
tween.tween_callback(camera.tween_zoom.bind(0.7, 3.0))
|
||||
tween.tween_callback(final_dialog)
|
||||
tween.tween_property(marker, "global_position:y", target_y, building_duration)
|
||||
tween.tween_callback(_show_chapter)
|
||||
|
||||
func final_dialog():
|
||||
await get_tree().create_timer(2.0).timeout
|
||||
DialogueManager.show_dialogue_balloon(
|
||||
dialogue_c01, "c01_s11_车夫对话5", [GlobalConfig.DIALOG_IGNORE_INPUT]
|
||||
)
|
||||
|
||||
# 展示章节转场
|
||||
func _show_chapter():
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=28 format=3 uid="uid://coiumaaenimbc"]
|
||||
[gd_scene load_steps=31 format=3 uid="uid://coiumaaenimbc"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_1sveo"]
|
||||
[ext_resource type="Script" uid="uid://dcn7u7v3fsscj" path="res://scene/ground/scene/c01/s11_animation.gd" id="2_espm6"]
|
||||
@ -9,7 +9,9 @@
|
||||
[ext_resource type="Texture2D" uid="uid://qbwh5si2owve" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景3.png" id="4_1flr0"]
|
||||
[ext_resource type="AudioStream" uid="uid://qku3yk82g364" path="res://asset/audio/sfx/交互/标题出现音效.wav" id="5_amglq"]
|
||||
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_3k8jj"]
|
||||
[ext_resource type="AudioStream" uid="uid://b8rg7adnnkjll" path="res://asset/audio/BGM/戏曲声.wav" id="6_68ynl"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://bk54qlc8dr5xr" path="res://asset/art/gif/c01_黄包车长场景/frames.tres" id="7_wo6md"]
|
||||
[ext_resource type="AudioStream" uid="uid://bi6gm533oqsa" path="res://asset/audio/BGM/街道背景音.wav" id="7_yajus"]
|
||||
[ext_resource type="Script" uid="uid://dvmw38syi54l3" path="res://scene/ground/script/c01/s11_路灯序列.gd" id="9_6p5hp"]
|
||||
[ext_resource type="Texture2D" uid="uid://cg1ey0l55acvs" path="res://asset/art/scene/c01/s09_黄包车长场景/e_单个路灯.png" id="9_u6881"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgsq1im2q63f8" path="res://asset/art/scene/c01/s09_黄包车长场景/e_路灯灯芯.png" id="11_2w2ir"]
|
||||
@ -122,6 +124,13 @@ _data = {
|
||||
&"intro": SubResource("Animation_blie8")
|
||||
}
|
||||
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_s11la"]
|
||||
stream_count = 2
|
||||
stream_0/stream = ExtResource("6_68ynl")
|
||||
stream_0/volume = 5.0
|
||||
stream_1/stream = ExtResource("7_yajus")
|
||||
stream_1/volume = -3.0
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_b0oon"]
|
||||
size = Vector2(200, 100)
|
||||
|
||||
@ -159,6 +168,11 @@ bus = &"game_sfx"
|
||||
script = ExtResource("3_vx53v")
|
||||
file = ""
|
||||
|
||||
[node name="背景音" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
|
||||
stream = SubResource("AudioStreamSynchronized_s11la")
|
||||
volume_db = -3.0
|
||||
autoplay = true
|
||||
|
||||
[node name="BGSprite2D" parent="Ground" index="2"]
|
||||
position = Vector2(-12, 2)
|
||||
offset = Vector2(0, -646)
|
||||
@ -191,19 +205,20 @@ autoplay = "车夫静止"
|
||||
shape = SubResource("RectangleShape2D_b0oon")
|
||||
|
||||
[node name="小孩捡球" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="3"]
|
||||
position = Vector2(461, 80)
|
||||
modulate = Color(0, 0, 0, 1)
|
||||
position = Vector2(460, 69)
|
||||
sprite_frames = ExtResource("3_hnnuc")
|
||||
animation = &"c01_捡球男孩_关键帧"
|
||||
|
||||
[node name="ambush_title1" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_3k8jj")]
|
||||
position = Vector2(1553, 15)
|
||||
position = Vector2(1365, 4)
|
||||
trigger_mode = "area_enter"
|
||||
one_shot = false
|
||||
freeze_time = 1.0
|
||||
hook_method = "pop_title_1"
|
||||
|
||||
[node name="ambush_title2" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_3k8jj")]
|
||||
position = Vector2(3012, 4)
|
||||
position = Vector2(2870, -10)
|
||||
trigger_mode = "area_enter"
|
||||
one_shot = false
|
||||
hook_method = "pop_title_2"
|
||||
@ -215,17 +230,23 @@ one_shot = false
|
||||
hook_method = "pop_title_3"
|
||||
|
||||
[node name="ambush_dialog2" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_3k8jj")]
|
||||
position = Vector2(1956, 5)
|
||||
position = Vector2(866, 5)
|
||||
trigger_mode = "area_enter"
|
||||
one_shot = false
|
||||
hook_method = "dialog2"
|
||||
|
||||
[node name="ambush_dialog3" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_3k8jj")]
|
||||
position = Vector2(5009, -15)
|
||||
position = Vector2(3448, -8)
|
||||
trigger_mode = "area_enter"
|
||||
one_shot = false
|
||||
hook_method = "dialog3"
|
||||
|
||||
[node name="ambush_dialog4" parent="Ground/DeployLayer" index="9" instance=ExtResource("6_3k8jj")]
|
||||
position = Vector2(5305, -2)
|
||||
trigger_mode = "area_enter"
|
||||
one_shot = false
|
||||
hook_method = "dialog4"
|
||||
|
||||
[node name="路灯序列1" type="Node2D" parent="Ground/AmbientLayer" index="0"]
|
||||
position = Vector2(405, 10)
|
||||
script = ExtResource("9_6p5hp")
|
||||
|
@ -279,14 +279,12 @@ texture = ExtResource("17_nta2f")
|
||||
position = Vector2(41, 98)
|
||||
character = "小小蝶"
|
||||
|
||||
[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"]
|
||||
texture = null
|
||||
|
||||
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
|
||||
points = PackedVector2Array(37, 150, 3050, 150)
|
||||
|
||||
[node name="DirectionalLight2D" parent="Ground" index="9"]
|
||||
visible = false
|
||||
energy = 0.4
|
||||
blend_mode = 1
|
||||
|
||||
[node name="参考" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
|
@ -1,15 +1,15 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bbs7yy5aofw1v"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_gdcov"]
|
||||
[ext_resource type="Texture2D" uid="uid://dibfvlmarlkg6" path="res://asset/art/scene/c02/旧版/s01_街道/bg_公寓入口.png" id="2_ni1a4"]
|
||||
[ext_resource type="Script" uid="uid://jkselt4d5q4r" path="res://scene/ground/scene/c02/s01_animation.gd" id="2_uuwn3"]
|
||||
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="3_6lnxd"]
|
||||
[ext_resource type="Texture2D" uid="uid://d05pqud4yoxx3" path="res://asset/art/scene/c02/s01_公寓门口/bg_公寓门口.png" id="3_a5loe"]
|
||||
|
||||
[node name="S01" type="Node2D"]
|
||||
|
||||
[node name="Ground" parent="." instance=ExtResource("1_gdcov")]
|
||||
scene_name = "c02_s01"
|
||||
player_y = 55
|
||||
player_y = 60
|
||||
|
||||
[node name="AnimationPlayer" parent="Ground" index="0"]
|
||||
script = ExtResource("2_uuwn3")
|
||||
@ -20,7 +20,7 @@ data = {
|
||||
oneshot_animation = ""
|
||||
|
||||
[node name="BGSprite2D" parent="Ground" index="2"]
|
||||
texture = ExtResource("2_ni1a4")
|
||||
texture = ExtResource("3_a5loe")
|
||||
|
||||
[node name="portal_left" parent="Ground/DeployLayer" index="0"]
|
||||
position = Vector2(78, 27)
|
||||
@ -28,25 +28,23 @@ immediately = true
|
||||
matched_sign_texture = null
|
||||
|
||||
[node name="portal_right" parent="Ground/DeployLayer" index="1"]
|
||||
position = Vector2(392, 2)
|
||||
position = Vector2(371, 2)
|
||||
target_scene = "c02_s02"
|
||||
target_portal = "left"
|
||||
matched_sign_texture = null
|
||||
|
||||
[node name="Note寻人启事" parent="Ground/DeployLayer" index="2" instance=ExtResource("3_6lnxd")]
|
||||
position = Vector2(250, -22)
|
||||
position = Vector2(230, -24)
|
||||
title_filter = "c02"
|
||||
note_key = "c02_小蝉寻人启事_脸部破碎"
|
||||
|
||||
[node name="Note门口" parent="Ground/DeployLayer" index="3" instance=ExtResource("3_6lnxd")]
|
||||
position = Vector2(311, -27)
|
||||
mode = "ballon"
|
||||
dialogue = "c02"
|
||||
position = Vector2(290, -20)
|
||||
title_filter = "c02"
|
||||
note_key = "c02_s01_门口"
|
||||
note_key = "c02_芦昌路26"
|
||||
|
||||
[node name="MainPlayer" parent="Ground" index="5"]
|
||||
position = Vector2(78, 103)
|
||||
position = Vector2(78, 98)
|
||||
|
||||
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
|
||||
points = PackedVector2Array(37, 150, 720, 150)
|
||||
|
@ -8,7 +8,9 @@ var music_box: Closeup2D
|
||||
|
||||
# 覆盖该方法
|
||||
func _default_data() -> Dictionary:
|
||||
return {}
|
||||
return {
|
||||
"first_enter": false
|
||||
}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@ -19,7 +21,10 @@ func _ready() -> void:
|
||||
|
||||
func _on_ground_ready() -> void:
|
||||
wind_blows = $"../DeployLayer/WindBlows"
|
||||
wind_blows.visible = false
|
||||
if data.first_enter:
|
||||
wind_blows.visible = false
|
||||
else:
|
||||
_oneshot_wind.call_deferred()
|
||||
paper_man = $"../DeployLayer/Ambush纸人"
|
||||
if 5 <= ArchiveManager.get_global_value("c02_musicbox_stage", 0):
|
||||
_display_paper_man(false)
|
||||
@ -32,25 +37,22 @@ func _on_ground_ready() -> void:
|
||||
|
||||
|
||||
func _oneshot_wind():
|
||||
SceneManager.get_player().global_position.x = 53
|
||||
SceneManager.get_player().set_facing_direction(Vector2.RIGHT)
|
||||
var player = %MainPlayer as MainPlayer
|
||||
SceneManager.freeze_player(0)
|
||||
%MainPlayer.visible = false
|
||||
player.hide_sprite = true
|
||||
player.set_facing_direction(Vector2.RIGHT)
|
||||
player.global_position.x = 53.0
|
||||
wind_blows.visible = true
|
||||
wind_blows.play()
|
||||
wind_blows.animation_finished.connect(_on_wind_finished, CONNECT_ONE_SHOT)
|
||||
|
||||
|
||||
func _on_wind_finished():
|
||||
%MainPlayer.visible = true
|
||||
set_data("first_enter", true)
|
||||
%MainPlayer.hide_sprite = false
|
||||
wind_blows.visible = false
|
||||
#TODO 使用气泡文字
|
||||
# DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s02_天冷")
|
||||
DialogueManager.dialogue_ended.connect(_on_dialogue_ended, CONNECT_ONE_SHOT)
|
||||
|
||||
|
||||
func _on_dialogue_ended(_res):
|
||||
SceneManager.release_player()
|
||||
# 使用气泡文字
|
||||
SceneManager.pop_os_with_str("c02_冷飕飕的", false, true)
|
||||
|
||||
|
||||
func lumber_interacted():
|
||||
|
@ -1,17 +1,18 @@
|
||||
[gd_scene load_steps=30 format=3 uid="uid://brck77w81fhvc"]
|
||||
[gd_scene load_steps=28 format=3 uid="uid://brck77w81fhvc"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_wrr6r"]
|
||||
[ext_resource type="Script" uid="uid://bfrgnmde3hjn0" path="res://scene/ground/scene/c02/s02_animation.gd" id="2_5p8ev"]
|
||||
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="3_fy0o1"]
|
||||
[ext_resource type="Texture2D" uid="uid://5428j51dwarc" path="res://asset/art/scene/c02/s02_大门过道/bg_过道背景.png" id="3_gjwum"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="4_wbif8"]
|
||||
[ext_resource type="Texture2D" uid="uid://ceijv5l0prppa" path="res://asset/art/prop/c02/海报(小)/除鼠双杰.png" id="6_gjwum"]
|
||||
[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://5pl1b7cor715" path="res://asset/art/scene/c02/旧版/s02_走道/e_纸人.png" id="7_xsghn"]
|
||||
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="8_52as8"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtpn7k468vcjb" path="res://asset/art/prop/c02/海报(小)/大舞台.png" id="8_jg8g0"]
|
||||
[ext_resource type="Texture2D" uid="uid://dut11vxri2hy5" path="res://asset/art/prop/c02/海报特写/剪辫子侦探.png" id="9_jg8g0"]
|
||||
[ext_resource type="Texture2D" uid="uid://7nudp635g54o" path="res://asset/art/prop/c02/海报特写/大舞台.png" id="9_m1xet"]
|
||||
[ext_resource type="Texture2D" uid="uid://bt37pw8hhgsec" path="res://asset/art/prop/c02/海报(小)/剪辫子侦探.png" id="8_m1xet"]
|
||||
[ext_resource type="PackedScene" uid="uid://beleib3mmu0af" path="res://scene/little_game/八音盒/八音盒.tscn" id="10_ifae7"]
|
||||
[ext_resource type="Texture2D" uid="uid://dut11vxri2hy5" path="res://asset/art/prop/c02/海报特写/剪辫子侦探.png" id="10_jg8g0"]
|
||||
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="10_pelha"]
|
||||
[ext_resource type="AudioStream" uid="uid://dq2ndg5yd3rps" path="res://asset/audio/sfx/旧版/c02/出现.mp3" id="11_u68d7"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/local_inspectable.tscn" id="12_0fckv"]
|
||||
@ -22,43 +23,7 @@
|
||||
[ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/frames.tres" id="19_q0axc"]
|
||||
[ext_resource type="Texture2D" uid="uid://6x6mmg2hig5j" path="res://asset/art/scene/c02/s02_大门过道/e-八音盒(场景中).png" id="22_jg8g0"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_abofy"]
|
||||
resource_name = "oneshot_天冷"
|
||||
length = 3.0
|
||||
tracks/0/type = "method"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("AnimationPlayer")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"_oneshot_wind"
|
||||
}]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fjkfm"]
|
||||
_data = {
|
||||
&"oneshot_天冷": SubResource("Animation_abofy")
|
||||
}
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_p6da7"]
|
||||
interpolation_mode = 2
|
||||
interpolation_color_space = 1
|
||||
offsets = PackedFloat32Array(0, 0.177305, 0.43617, 0.684397, 0.989362)
|
||||
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0.294118, 1.01176, 1.01176, 1.01176, 0.12549, 1, 1, 1, 0.00520623, 1, 1, 1, 0)
|
||||
|
||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_m1xet"]
|
||||
gradient = SubResource("Gradient_p6da7")
|
||||
width = 512
|
||||
height = 512
|
||||
use_hdr = true
|
||||
fill = 1
|
||||
fill_from = Vector2(0.5, 0.5)
|
||||
fill_to = Vector2(1, 1)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_dwg0o"]
|
||||
resource_local_to_scene = true
|
||||
@ -93,9 +58,10 @@ libraries = {
|
||||
script = ExtResource("2_5p8ev")
|
||||
data = {
|
||||
"display_paper_man": false,
|
||||
"first_enter": false,
|
||||
"oneshot_animation_played": false
|
||||
}
|
||||
oneshot_animation = "oneshot_天冷"
|
||||
oneshot_animation = ""
|
||||
|
||||
[node name="BGSprite2D" parent="Ground" index="2"]
|
||||
self_modulate = Color(0.831373, 0.886275, 0.956863, 1)
|
||||
@ -105,7 +71,7 @@ texture = ExtResource("3_gjwum")
|
||||
offset = Vector2(0, -240)
|
||||
|
||||
[node name="portal_left" parent="Ground/DeployLayer" index="0"]
|
||||
position = Vector2(32, 15)
|
||||
position = Vector2(28, 21)
|
||||
target_scene = "c02_s01"
|
||||
target_portal = "right"
|
||||
matched_sign_texture = null
|
||||
@ -121,35 +87,35 @@ unique_name_in_owner = true
|
||||
position = Vector2(394, 23)
|
||||
sprite_frames = ExtResource("4_wbif8")
|
||||
animation = &"c02_吕萍_风吹过"
|
||||
frame = 10
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/WindBlows"]
|
||||
position = Vector2(-341, 18)
|
||||
energy = 0.5
|
||||
range_item_cull_mask = 15
|
||||
texture = SubResource("GradientTexture2D_m1xet")
|
||||
height = 10.0
|
||||
[node name="Ambush太暗了" parent="Ground/DeployLayer" index="3" instance=ExtResource("8_52as8")]
|
||||
position = Vector2(177, 42)
|
||||
hook_os_key = "c02_太暗了"
|
||||
|
||||
[node name="海报1" parent="Ground/DeployLayer" index="3" instance=ExtResource("12_0fckv")]
|
||||
position = Vector2(255, -11)
|
||||
[node name="海报1" parent="Ground/DeployLayer" index="4" instance=ExtResource("12_0fckv")]
|
||||
position = Vector2(223, -28)
|
||||
texture = ExtResource("6_gjwum")
|
||||
content_centered = true
|
||||
texture_cover = ExtResource("9_jg8g0")
|
||||
texture_cover = ExtResource("7_jg8g0")
|
||||
content_key = "c02_海报1"
|
||||
|
||||
[node name="海报2" parent="Ground/DeployLayer" index="4" instance=ExtResource("12_0fckv")]
|
||||
position = Vector2(319, -17)
|
||||
texture = ExtResource("8_jg8g0")
|
||||
[node name="海报2" parent="Ground/DeployLayer" index="5" instance=ExtResource("12_0fckv")]
|
||||
position = Vector2(314, -26)
|
||||
texture = ExtResource("8_m1xet")
|
||||
content_centered = true
|
||||
texture_cover = ExtResource("9_m1xet")
|
||||
texture_cover = ExtResource("10_jg8g0")
|
||||
content_key = "c02_海报2"
|
||||
|
||||
[node name="鼠疫海报" parent="Ground/DeployLayer" index="5" instance=ExtResource("12_0fckv")]
|
||||
[node name="鼠疫海报" parent="Ground/DeployLayer" index="6" instance=ExtResource("12_0fckv")]
|
||||
position = Vector2(441, -14)
|
||||
texture_cover = ExtResource("7_wdwbi")
|
||||
content_key = "c02_鼠疫海报"
|
||||
|
||||
[node name="Ambush纸人" parent="Ground/DeployLayer" index="6" instance=ExtResource("8_52as8")]
|
||||
[node name="Ambush纸人" parent="Ground/DeployLayer" index="7" instance=ExtResource("8_52as8")]
|
||||
visible = false
|
||||
position = Vector2(113, 53)
|
||||
position = Vector2(113, 44)
|
||||
texture = ExtResource("7_xsghn")
|
||||
flip_h = true
|
||||
enabled = false
|
||||
@ -182,13 +148,13 @@ stream = ExtResource("11_u68d7")
|
||||
dir = "c02"
|
||||
file = "出现.mp3"
|
||||
|
||||
[node name="Ambush杂物堆" parent="Ground/DeployLayer" index="7" instance=ExtResource("8_52as8")]
|
||||
[node name="Ambush杂物堆" parent="Ground/DeployLayer" index="8" instance=ExtResource("8_52as8")]
|
||||
position = Vector2(387, 66)
|
||||
trigger_mode = "interact"
|
||||
freeze_time = 1.0
|
||||
hook_method = "lumber_interacted"
|
||||
|
||||
[node name="杂物眨眼睛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="8"]
|
||||
[node name="杂物眨眼睛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="9"]
|
||||
visible = false
|
||||
light_mask = 5
|
||||
position = Vector2(269, 38)
|
||||
@ -201,35 +167,35 @@ energy = 3.0
|
||||
range_item_cull_mask = 4
|
||||
texture = ExtResource("17_m1xet")
|
||||
|
||||
[node name="Note老鼠洞" parent="Ground/DeployLayer" index="9" instance=ExtResource("3_fy0o1")]
|
||||
[node name="Note老鼠洞" parent="Ground/DeployLayer" index="10" instance=ExtResource("3_fy0o1")]
|
||||
position = Vector2(507, 64)
|
||||
title_filter = "c02"
|
||||
note_key = "c02_老鼠洞"
|
||||
|
||||
[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="10"]
|
||||
[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="11"]
|
||||
visible = false
|
||||
position = Vector2(498, 0)
|
||||
sprite_frames = ExtResource("19_q0axc")
|
||||
animation = &"老鼠托小鞋子"
|
||||
|
||||
[node name="Interactable小鞋子" parent="Ground/DeployLayer" index="11" instance=ExtResource("13_ck13g")]
|
||||
[node name="Interactable小鞋子" parent="Ground/DeployLayer" index="12" instance=ExtResource("13_ck13g")]
|
||||
position = Vector2(498, 65)
|
||||
enabled = false
|
||||
mute_when_interacted = true
|
||||
|
||||
[node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="12" instance=ExtResource("8_52as8")]
|
||||
[node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="13" instance=ExtResource("8_52as8")]
|
||||
position = Vector2(537, 54)
|
||||
one_shot = false
|
||||
freeze_time = 1.0
|
||||
hook_method = "check_if_show_shoes"
|
||||
|
||||
[node name="煤油灯" parent="Ground/DeployLayer" index="13" instance=ExtResource("17_mpkj1")]
|
||||
[node name="煤油灯" parent="Ground/DeployLayer" index="14" instance=ExtResource("17_mpkj1")]
|
||||
position = Vector2(122, -15)
|
||||
gaslight_energy = 2.0
|
||||
gaslight_ground_energy = 2.0
|
||||
debug_light_switch = true
|
||||
|
||||
[node name="Closeup八音盒" parent="Ground/DeployLayer" index="14" instance=ExtResource("19_6wwyd")]
|
||||
[node name="Closeup八音盒" parent="Ground/DeployLayer" index="15" instance=ExtResource("19_6wwyd")]
|
||||
position = Vector2(533, 67)
|
||||
packed_scene = ExtResource("10_ifae7")
|
||||
|
||||
@ -250,6 +216,7 @@ texture = SubResource("GradientTexture2D_fvldj")
|
||||
|
||||
[node name="MainPlayer" parent="Ground" index="5"]
|
||||
position = Vector2(53, 98)
|
||||
facing_direction = Vector2(1, 0)
|
||||
|
||||
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
|
||||
points = PackedVector2Array(37, 150, 670, 150)
|
||||
|
@ -121,7 +121,7 @@ func eavesdrop() -> void:
|
||||
await get_tree().create_timer(1.0).timeout
|
||||
# TODO 对话替换
|
||||
DialogueManager.show_dialogue_balloon(
|
||||
dialogue_c02, "c02_04_李氏王赖子", [GlobalConfig.DIALOG_IGNORE_INPUT]
|
||||
dialogue_c02, "c02_04_李氏癞子", [GlobalConfig.DIALOG_IGNORE_INPUT]
|
||||
)
|
||||
await animation_finished
|
||||
SceneManager.release_player()
|
||||
@ -164,16 +164,13 @@ func bully_ambush():
|
||||
|
||||
func bully_end():
|
||||
SceneManager.release_player()
|
||||
# 小猫玩具微亮
|
||||
#TODO 小猫玩具微亮
|
||||
SceneManager.pop_debug_dialog_info("美术", "手中小猫玩具微亮")
|
||||
#TODO 使用气泡文字
|
||||
# DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_玩具发光")
|
||||
SceneManager.pop_os_with_str("小猫玩具发光", true, true)
|
||||
|
||||
|
||||
func block_right_move():
|
||||
var msg = tr("c02_点火前阻止右移")
|
||||
var lines = await DialogueUtil.generate_lines(msg)
|
||||
SceneManager.pop_os(lines)
|
||||
SceneManager.pop_os_with_str("c02_点火前阻止右移")
|
||||
|
||||
|
||||
# var count_down_tween:Tween
|
||||
@ -187,9 +184,7 @@ func block_right_move():
|
||||
|
||||
func _on_counter_interacted():
|
||||
if not ArchiveManager.get_global_value("c02_ready_to_fire"):
|
||||
var msg = tr("c02_火灾等待准备")
|
||||
var lines = await DialogueUtil.generate_lines(msg)
|
||||
SceneManager.pop_os(lines)
|
||||
SceneManager.pop_os_with_str("c02_火灾等待准备")
|
||||
return
|
||||
counter.enabled = false
|
||||
if not ArchiveManager.get_global_value("c02_burning"):
|
||||
|
@ -112,7 +112,11 @@ func _c02_final_show():
|
||||
# WARN: 如果不延时,开场直接显示 dialog 可能会显示失败(无报错提示)
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
player.global_position.x = 650
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈")
|
||||
# 和小蝉对话
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈1")
|
||||
await DialogueManager.dialogue_ended
|
||||
# 瞎子打断
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈2")
|
||||
|
||||
|
||||
func _c02_final_show_end():
|
||||
|
@ -361,6 +361,7 @@ texture = ExtResource("5_26mqt")
|
||||
points = PackedVector2Array(37, 150, 900, 150)
|
||||
|
||||
[node name="DirectionalLight2D" parent="Ground" index="9"]
|
||||
visible = false
|
||||
energy = 0.9
|
||||
blend_mode = 1
|
||||
|
||||
|
@ -142,6 +142,7 @@ func _quit_communicating() -> void:
|
||||
# 重置动画
|
||||
SceneManager.get_player().set_facing_direction(Vector2.ONE)
|
||||
animated_sprite.visible = true
|
||||
animated_sprite.play("小手_纸杯_show")
|
||||
|
||||
|
||||
var interacting := false:
|
||||
|
@ -134,7 +134,6 @@ func _post_success():
|
||||
# 不显示文本,让玩家在重要物品栏去看(提示)
|
||||
# var tween = create_tween()
|
||||
# tween.tween_property(content_rect, "modulate:a", 1.0, 1.0)
|
||||
SceneManager.pop_center_notification(tr("ui_important_item_update"))
|
||||
var texture = preload("res://asset/art/prop/c01/院长的信.png")
|
||||
var inspector = SceneManager.get_inspector()
|
||||
inspector.pop_standard_inspection(texture, null, tr("prop_院长的信_说明"))
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
[ext_resource type="Script" uid="uid://b2aixse6e2l86" path="res://scene/notification/notification.gd" id="1_j0g80"]
|
||||
[ext_resource type="FontFile" uid="uid://dr8bp6p7byb37" path="res://asset/font/字体/方正楷体简体.TTF" id="2_eh7gu"]
|
||||
[ext_resource type="Texture2D" uid="uid://b0f00retoqxyc" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png" id="3_wqejl"]
|
||||
[ext_resource type="Texture2D" uid="uid://d4laekws15ap6" path="res://asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-08.png" id="3_otkdq"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_ycsas"]
|
||||
font = ExtResource("2_eh7gu")
|
||||
@ -64,9 +64,15 @@ label_settings = SubResource("LabelSettings_ycsas")
|
||||
|
||||
[node name="MarginContainer3" type="MarginContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -150.0
|
||||
offset_top = -150.0
|
||||
offset_right = 150.0
|
||||
offset_bottom = 150.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
@ -79,6 +85,6 @@ theme_override_constants/margin_bottom = 64
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("3_wqejl")
|
||||
expand_mode = 1
|
||||
texture = ExtResource("3_otkdq")
|
||||
expand_mode = 3
|
||||
stretch_mode = 5
|
||||
|
@ -7,6 +7,11 @@ signal position_updated(global_pos: Vector2)
|
||||
signal os_finished
|
||||
signal animation_finished
|
||||
|
||||
@export var hide_sprite := false:
|
||||
set(val):
|
||||
hide_sprite = val
|
||||
if is_node_ready():
|
||||
sprite.visible = not hide_sprite
|
||||
@export var enable_light := true:
|
||||
set(val):
|
||||
enable_light = val
|
||||
@ -76,6 +81,7 @@ var current_animation_config := (
|
||||
# # animation -> {frame -> {shadow polygon}}
|
||||
# var animation_shadow_polygons = {}
|
||||
func _ready() -> void:
|
||||
sprite.visible = not hide_sprite
|
||||
light.enabled = enable_light
|
||||
os_contaner.modulate.a = 0.0
|
||||
# set up animated sprite
|
||||
@ -240,6 +246,9 @@ func _tweak_camera_marker():
|
||||
|
||||
|
||||
func set_catty_light(enable := false):
|
||||
# 如果没有允许光照,那么 catty 的光也不添加
|
||||
if not enable_light:
|
||||
return
|
||||
var tween = create_tween()
|
||||
if enable:
|
||||
tween.tween_property(catty_light, "energy", catty_light_energy, 0.5)
|
||||
@ -361,26 +370,53 @@ func _reset_os_and_shadow_position():
|
||||
|
||||
|
||||
var os_tween: Tween
|
||||
var os_pausing_timer: SceneTreeTimer
|
||||
|
||||
|
||||
func pop_os(lines := []):
|
||||
func pop_os(lines := [], auto_freeze := true, auto_release := true):
|
||||
if os_tween:
|
||||
os_tween.kill()
|
||||
if auto_freeze:
|
||||
freeze_player(0, 3, false)
|
||||
os_tween = create_tween()
|
||||
os_label.text = ""
|
||||
os_tween.tween_property(os_contaner, "modulate:a", 1.0, 0.2)
|
||||
for line in lines:
|
||||
var duration = max(min(4.0, line.text.length() * 0.2), 2.0)
|
||||
var duration = max(min(4.0, line.text.length() * 0.2), 2.0) + 0.2
|
||||
# var duration = max(min(4.0, line.text.length() * 0.2), 2.0) - 0.4
|
||||
os_tween.tween_callback(_os_load_line.bind(line))
|
||||
os_tween.tween_callback(os_label.type_out)
|
||||
os_tween.tween_interval(duration)
|
||||
os_tween.tween_callback(_os_load_line.bind(line, duration))
|
||||
os_tween.tween_interval(0.1)
|
||||
os_tween.tween_callback(os_finished.emit)
|
||||
os_tween.tween_property(os_contaner, "modulate:a", 0.0, 0.2)
|
||||
if auto_release:
|
||||
os_tween.tween_callback(release_player)
|
||||
|
||||
|
||||
func _os_load_line(line):
|
||||
func _os_load_line(line, duration):
|
||||
os_label.dialogue_line = line
|
||||
os_label.type_out()
|
||||
os_tween.pause()
|
||||
if os_pausing_timer and os_pausing_timer.timeout.is_connected(os_tween.play):
|
||||
os_pausing_timer.timeout.disconnect(os_tween.play)
|
||||
os_pausing_timer = get_tree().create_timer(duration)
|
||||
os_pausing_timer.timeout.connect(_on_os_line_timeout, CONNECT_ONE_SHOT)
|
||||
|
||||
|
||||
func _on_os_line_timeout(naturally := true):
|
||||
if not naturally:
|
||||
if os_pausing_timer.timeout.is_connected(_on_os_line_timeout):
|
||||
os_pausing_timer.timeout.disconnect(_on_os_line_timeout)
|
||||
if os_tween.is_valid():
|
||||
os_label.text = ""
|
||||
os_tween.play()
|
||||
os_pausing_timer = null
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("interact"):
|
||||
if os_pausing_timer and os_pausing_timer.time_left > 0:
|
||||
_on_os_line_timeout(false)
|
||||
get_viewport().set_input_as_handled()
|
||||
|
||||
|
||||
# animation -> offset_y
|
||||
|
@ -13,6 +13,9 @@ signal exited
|
||||
@onready var exit_btn = %ExitBtn as Button
|
||||
@onready var diary_btn = %DiaryBtn as Button
|
||||
|
||||
# 音量 DB 偏移
|
||||
var sfx_db_offset := 6.0
|
||||
var dialog_db_offset := -20.0
|
||||
|
||||
func _ready():
|
||||
layer = GlobalConfig.CANVAS_LAYER_SETTINGS
|
||||
@ -22,10 +25,10 @@ func _ready():
|
||||
AudioServer.get_bus_volume_db(AudioServer.get_bus_index("Master"))
|
||||
)
|
||||
sfx_bus_slider.value = db_to_linear(
|
||||
AudioServer.get_bus_volume_db(AudioServer.get_bus_index("game_sfx"))
|
||||
AudioServer.get_bus_volume_db(AudioServer.get_bus_index("game_sfx")) - sfx_db_offset
|
||||
)
|
||||
dialog_bus_slider.value = db_to_linear(
|
||||
AudioServer.get_bus_volume_db(AudioServer.get_bus_index("dialog"))
|
||||
AudioServer.get_bus_volume_db(AudioServer.get_bus_index("dialog")) - dialog_db_offset
|
||||
)
|
||||
master_bus_slider.value_changed.connect(_on_master_bus_slider_value_changed)
|
||||
sfx_bus_slider.value_changed.connect(_on_sfx_bus_slider_value_changed)
|
||||
@ -69,13 +72,13 @@ func _on_master_bus_slider_value_changed(value: float) -> void:
|
||||
|
||||
|
||||
func _on_sfx_bus_slider_value_changed(value: float) -> void:
|
||||
var db_value = linear_to_db(value)
|
||||
var db_value = linear_to_db(value) + sfx_db_offset
|
||||
GlobalConfigManager.config.db_game_sfx = db_value
|
||||
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("game_sfx"), db_value)
|
||||
|
||||
|
||||
func _on_dialog_bus_slider_value_changed(value: float) -> void:
|
||||
var db_value = linear_to_db(value)
|
||||
var db_value = linear_to_db(value) + dialog_db_offset
|
||||
GlobalConfigManager.config.db_dialog = db_value
|
||||
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("dialog"), db_value)
|
||||
|
||||
|