Compare commits

...

2 Commits

35 changed files with 555 additions and 417 deletions

View File

@ -814,7 +814,8 @@ func import_translations_from_csv(path: String) -> void:
if tags.has(translation_key):
var tag_str = tags.get(translation_key).strip_edges()
if tag_str:
line_text += " " + tag_str + " "
line_text += tag_str
# line_text += " " + tag_str + " "
lines[i] = (line_text + "[ID:" + translation_key + "]").replace("!ESCAPED_COLON!", ":")
elif DMCompiler.get_line_type(line) == DMConstants.TYPE_RESPONSE:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -59,7 +59,6 @@
书店老板: 手脚麻利点,不要耽误店里的生意。[ID:c01_7老板_7]
=> END
~ c01_s08_书店书架游戏
吕萍: 这些书...好像是按照图案、颜色、高低顺序来整理的。[ID:c01_书架游戏]
=> END

View File

@ -51,7 +51,7 @@ c02_弹珠游戏1,你、你绝对不是第一次玩弹珠,,,,,You... you're defi
c02_弹珠游戏2,这不可能...再来一次!,,,,,This is impossible... one more time!
c02_弹珠游戏3,我没输...你骗人!,,,,,I didn't lose... you're cheating!
c02_弹珠游戏4,这不可能!不不不...,,,,,"This can't be! No, no, no..."
c02_弹珠游戏5,我还有很多弹珠玩到我赢为止!,,,,,I still have lots of marbles. We'll keep playing until I win!
c02_弹珠游戏5,我还有很多弹珠{br}玩到我赢为止!,,,,,I still have lots of marbles. {br}We'll keep playing until I win!
c02_弹珠游戏6,先碰到边界你就输了!,,,,,First one to hit the boundary loses!
c02_尾声霸凌童谣1,下雨了、打烊了、小脚小孩跳舞了,,,,[#wait=4.7],"It's raining, shops are closing, little feet children dancing"
c02_尾声霸凌童谣2,摔倒了、哭鼻头、小脚上面出血了,,,,[#wait=3.8],"Fell down, crying now, little feet are bleeding"

1 keys zh_CN zh_SH _character _notes _tags en
51 c02_弹珠游戏2 这不可能...再来一次! This is impossible... one more time!
52 c02_弹珠游戏3 我没输...你骗人! I didn't lose... you're cheating!
53 c02_弹珠游戏4 这不可能!不不不... This can't be! No, no, no...
54 c02_弹珠游戏5 我还有很多弹珠,玩到我赢为止! 我还有很多弹珠{br}玩到我赢为止! I still have lots of marbles. We'll keep playing until I win! I still have lots of marbles. {br}We'll keep playing until I win!
55 c02_弹珠游戏6 先碰到边界你就输了! First one to hit the boundary loses!
56 c02_尾声霸凌童谣1 下雨了、打烊了、小脚小孩跳舞了 ??? [#wait=4.7] It's raining, shops are closing, little feet children dancing
57 c02_尾声霸凌童谣2 摔倒了、哭鼻头、小脚上面出血了 ??? [#wait=3.8] Fell down, crying now, little feet are bleeding

View File

@ -98,7 +98,7 @@
# 游戏尾声
~ c02_弹珠游戏4
我还有很多弹珠,玩到我赢为止! [ID:c02_弹珠游戏5]
我还有很多弹珠{br}玩到我赢为止![ID:c02_弹珠游戏5]
=> END
# 游戏失败

View File

@ -37,13 +37,16 @@ ui_center_notify_use_prop,按 E 使用道具,,,,,Press E to use item
ui_center_notify_check_note,按 N 查看线索笔记,,,,,Press N to check clue notes
ui_center_notify_check_bag,按 B 查看重要物品,,,,,Press B to check important items
ui_center_notify_right_click_prop,右键点击可检阅道具,,,,,Right-click to examine item
ui_center_notify_drag_to_rotate,按住拖拽可旋转把手,,,,,Hold and drag to rotate the handle
ui_center_notify_drag_to_rotate,鼠标按住顺时针旋转把手,,,,,Hold and drag to rotate the handle
ui_center_notify_drag_to_rotate_screen,顺时针旋转把手,,,,,Hold and drag to rotate the handle
ui_left_mouse_shave,按住拖拽可刮开海报,,,,,Hold and drag to scrape off poster
ui_switch_prop,点击图标可切换道具(或按 Z/C,,,,,Click icon to switch items (or press Z/C)
ui_press_shift,按住 Shift 奔跑,,,,,Hold Shift to run
ui_boxcat_press_s,按住 S 躲藏,,,,,Hold S to hide
input_拼凑信件,点击选择信件碎片方向键移动E 旋碎片Q 退出,,,,,"Click to select letter fragments, arrow keys to move, E to rotate, Q to exit"
input_拼凑信件,点击选择信件碎片方向键移动E 旋碎片Q 退出,,,,,"Click to select letter fragments, arrow keys to move, E to rotate, Q to exit"
input_书架游戏,点击书本可选中或交换Q 退出,,,,,"Click books to select or swap, Q to exit"
ui_click_to_knock_door,鼠标点击可敲门,,,,,Click to knock the door.
ui_click_to_knock_door_screen,点击可敲门,,,,,Click to knock the door.
ui_获得道具,获得道具,,,,,Item Obtained
ui_退出,退出,,,,,Exit
ui_阅读,阅读,,,,,Read
@ -81,7 +84,7 @@ prop_无头小猫玩具_说明,没有脑袋的小猫玩偶,针脚歪歪扭扭
prop_小猫玩具完整,小猫玩具,,,[#texture=c02/新小猫全身.png],,Cat Toy
prop_小猫玩具完整_说明,这个玩具看久了有些眼熟,,,,,This toy looks familiar after staring at it for a while
prop_撕下的照片上,撕下的照片(上),,,[#texture=c02/照片_上.png],,Torn Photo (Upper)
prop_撕下的照片上_说明,女儿生辰纪念 民国元年,,,,,"Daughter's Birthday Memorial, Year 1 of the Republic"
prop_撕下的照片上_说明,女儿生辰纪念 民国元年十月三十日,,,,,"Daughter's Birthday Memorial, October 30th, Year 1 of the Republic(1912)"
prop_老虎钳,老虎钳,,,[#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png],,Pliers
prop_老虎钳_说明,「虎头牌」钳子,家家户户常备,,,,,"'Tiger Head Brand' pliers, common household tool"
prop_锡箔元宝,锡箔元宝,,,[#texture=c02/锡箔元宝.png],,Tin Foil Ingot
@ -124,6 +127,7 @@ c01_s08_书店工作,老板交代的工作还没做完,不能偷懒。,,,,,I h
c01_s08_书店工钱,这个月的工钱还没拿。,,,,,I haven't collected this month's wages yet.
mem_偷听对话,偷听对话,,,,,Eavesdropping
mem_疯子看井,疯子看井,,,,,Madman Guards Well
c01_获得信件1碎片后,这是...{br}我还是快点找院长问问刚才书里的字怎么念吧,,,,,This is... {br} I'd better go and ask the dean right now about how to pronounce the words in that book just now.
c01_小小蝶找假发,我的假发呢?,,,,,Where is my wig?
c01_鸡毛掸子,这是鸡毛掸子吗?,,,,,Is this a feather duster?
c01_院长书桌,桌上放着一本《圣经》。{br}「凡要救自己生命的,必丧掉生命...」,,,,,"There's a Bible on the table.{br}'Whoever wants to save their life will lose it, but whoever loses their life for me will find it...'"
@ -137,7 +141,9 @@ c01_s06_熟悉的墙画,又是他们几个,这次画的东西怎么有些眼
c01_s06_四小孩对话结束,怪人、花...{br}有时候真搞不懂他们在说些什么。,,,,,"Strange people, flowers...{br}Sometimes I really don't understand what they're talking about."
c01_s07_钱碗,碗里只有一枚铜钱。,,,,,There's only one copper coin in the bowl.
c01_s07_获得报纸,这是什么?,,,,,What is this?
c01_s07_获得报纸后,什么...意思?,,,,,What... does that mean?
c01_s07_书店展柜,院长说,读一百本书,就可以成为无所不能的大人。{br}如果我再大一些,没准可以求店长把我留下,我会干很多活,也能吃苦...,,,,,"The director said that reading a hundred books would make me an all-capable adult.{br}If I were a bit older, maybe I could ask the shop owner to keep me. I'd work hard and endure hardship..."
c01_s07_报童,这报童嘴在动,可是为什么没有说话声...,,,,,The newsboy is mumbling, but why is there no sound...
c01_s08_书架游戏完成,{br}刚才那是什么?,,,,,?!{br}What was that just now?
c01_s08_书架游戏恢复记忆,...{br}这是...我之前工作的地方。{br}...{br}现在老板不在了,我也该走了...,,,,,"...{br}This is... where I used to work.{br}...{br}Now that the boss is gone, I should leave too..."
c01_s08_获得袁大头后,工钱还在老地方。,,,,,The wages are still in the usual place.
@ -165,6 +171,7 @@ c02_铁门旁遇到小蝉,又是她...,,,,,It's her again...
c02_s03_铁门,被铁链锁住了,,,,,Locked with iron chains
c02_偷听李癞对话后,三快三慢?是和那个肉铺老板交流的暗号吗?,,,,,"Three fast, three slow? Is that a secret signal for communicating with the butcher shop owner?"
c02_柜子可放置区域,这里之前放着的东西好像被人挪走了?,,,,,Whatever was placed here before seems to have been moved?
c02_弹珠提示,这是小孩子画的涂鸦?{br}...是钳子和...弹珠?,,,,,Is this a scribble drawn by a child? {br}... Are they pliers and... marbles?
c02_保卫科看到小蝉,那是....一个小女孩吗?,,,,,That is... a little girl?
c02_保卫科小蝉消失,诶?,,,,,Huh?
c02_保卫科花名册os,登记簿?{br}刚才那个小孩在上面写了些什么,,,,,A registry book?{br}What did that child write on it just now?
@ -175,6 +182,8 @@ c02_小手还能换什么,...还有什么东西能跟它交换呢?,,,,,...what
c02_小手出现摔倒,,,,,,?!
c02_小手是什么鬼,这是什么鬼东西,它是在讨要什么,,,,,What the hell is this thing? What is it asking for?
c02_小手再次出现,又来一个!{br}这地方到底是怎么回事?,,,,,Another one!{br}What on earth is going on in this place?
c02_小手首次交互纸杯电话,是纸杯电话。,,,,,It's a paper cup phone.
c02_s05_小蝉背后哼歌,...{br}怎么感觉有小孩在我身后哼歌?,,,,,...{br}How come I feel like there's a kid humming behind me?
c02_一楼楼道被挡住,被挡住了,,,,,It's blocked
c02_一楼戏台,盖着布的木头架子...用来做什么的呢,,,,,A wooden frame covered with cloth... what is it used for?
c02_描述垃圾通道,通道是空的,飘着一股血气,又酸又腥。,,,,,"The passage is empty, reeking of blood—sour and fishy."
@ -188,15 +197,19 @@ c02_小蝉头套文字,吕萍阿姨,我不想死,求你...帮帮我,,,,,"Aun
c02_互动小蝉头套,{br}上面怎么有我的名字?!,,,,,!!!{br}Why is my name on it?!
c02_敲门_肉掉落,楼道有东西掉下来了?,,,,,Something fell in the hallway?
c02_敲门_老鼠叼肉,刚刚这里有块肉不见了?,,,,,There was a piece of meat here just now that's gone?
c02_锡箔换小鞋子,另一只小鞋子。,,,,,The other small shoe.
c02_锡箔换小鞋子,小鞋子...{br}登记簿上好像写过,把鞋子给老鼠?,,,,,Small shoes... {br} It seems to be written in the register that the shoes should be given to the mice?
c02_二楼楼梯杂物堆,去三楼的路被堵住了,要不先看看别的地方吧。,,,,,The path to the third floor is blocked. Maybe I should check other places first.
c02_二楼小蝉跑掉,这个小女孩神出鬼没的,她说不定知道上楼的路。,,,,,This little girl appears and disappears like a ghost. She might know the way upstairs.
c02_二楼小蝉跑掉,...{br}这个小女孩神出鬼没的,她说不定知道上楼的路。,,,,,...{br}This little girl appears and disappears like a ghost. She might know the way upstairs.
c02_二楼水盆,盆里的水很清澈,看上去像是刚盛的。,,,,,"The water in the basin is very clear, looks like it was just filled."
c02_二楼老鼠洞,到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。,,,,,Mouse holes everywhere. I'm afraid the mice have tunneled through the entire building.
c02_二楼血脚印,又是这种小小尖尖的血脚印...,,,,,"Those small, pointed bloody footprints again..."
c02_老鼠叼鞋引开疯子,那女孩为什么要我引开这个疯男人?,,,,,Why did that girl want me to lure away this madman?
c02_老鼠叼鞋引开疯子,神经病...吓我一跳{br}那女孩为什么要我引开这个疯男人?,,,,,Psycho... That scared me{br}Why did that girl want me to lure away this madman?
c02_小手换回弹珠,我要去找洞里的小手把弹珠拿回来。,,,,,I need to find the little hand in the hole to get the marble back.
c02_离开红色演出,刚才那些...到底是怎么回事?,,,,,What just happened... what was all that about?
c02_二楼小猫叼纸条,这小猫嘴里叼了张纸条{br}有点可爱,,,,,This little cat is holding a piece of paper in its mouth.{br}It's quite cute.
c02_二楼小蝉头套,是...那个小女孩...{br}方小蝉的头套?,,,,,Is... that little girl...{br}Fang Xiaochan's headgear?
c02_s09_红色场景,...不对劲{br}为什么会有种...熟悉的感觉,,,,,... Something is off.{br}Why does there seem to be a... familiar feeling?
c02_s09_大眼睛处,好吵...,,,,,It's so noisy...
c02_离开红色演出,终于...安静了{br}刚才那些...到底是怎么回事?,,,,,Finally... It's quiet. {br}What just happened... what was all that about?
c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」{br}咦,这口诀是谁教我的来着...,,,,,"'Qian three connected, Kun six broken; Zhen upturned vessel, Gen overturned bowl; Li hollow center, Kan full center; Dui missing above, Xun broken below'{br}Hmm, who taught me this formula..."
c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,,There's a similar cross in the director's room too.
c02_小蝉盒子特写,我会在盒子里一直陪着你 :3,,,,,I'll stay with you in the box forever :3

Can't render this file because it has a wrong number of fields in line 146.

View File

@ -38,7 +38,8 @@
线索笔记已更新[ID:ui_notify_note_update]
回忆已更新[ID:ui_notify_mem_update]
#添加 "_screen" suffix 后pop_center_notification 会检查 `GlobalConfig.TOUCH_SCREEN` 状态
#如果是 true 则使用带有 _screen 后缀的 translation_key
按 A/D 可左右移动[ID:ui_center_notify_a_d_to_move]
按 E 可与场景互动[ID:ui_center_notify_press_e_to_interact]
按 Q 可退出[ID:ui_center_notify_press_q_to_exit]
@ -46,13 +47,16 @@
按 N 查看线索笔记[ID:ui_center_notify_check_note]
按 B 查看重要物品[ID:ui_center_notify_check_bag]
右键点击可检阅道具[ID:ui_center_notify_right_click_prop]
按住拖拽可旋转把手 [ID:ui_center_notify_drag_to_rotate]
鼠标按住顺时针旋转把手[ID:ui_center_notify_drag_to_rotate]
顺时针旋转把手[ID:ui_center_notify_drag_to_rotate_screen]
按住拖拽可刮开海报[ID:ui_left_mouse_shave]
点击图标可切换道具(或按 Z/C[ID:ui_switch_prop]
按住 Shift 奔跑[ID:ui_press_shift]
按住 S 躲藏[ID:ui_boxcat_press_s]
点击选择信件碎片方向键移动E 旋碎片Q 退出 [ID:input_拼凑信件]
点击选择信件碎片方向键移动E 旋碎片Q 退出[ID:input_拼凑信件]
点击书本可选中或交换Q 退出[ID:input_书架游戏]
鼠标点击可敲门[ID:ui_click_to_knock_door]
点击可敲门[ID:ui_click_to_knock_door_screen]
获得道具[ID:ui_获得道具]
退出[ID:ui_退出]
@ -103,7 +107,7 @@
小猫玩具[#texture=c02/新小猫全身.png][ID:prop_小猫玩具完整]
这个玩具看久了有些眼熟[ID:prop_小猫玩具完整_说明]
撕下的照片(上)[#texture=c02/照片_上.png][ID:prop_撕下的照片上]
女儿生辰纪念 于 民国元年 [ID:prop_撕下的照片上_说明]
女儿生辰纪念 民国元年十月三十日[ID:prop_撕下的照片上_说明]
老虎钳[#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png][ID:prop_老虎钳]
「虎头牌」钳子,家家户户常备[ID:prop_老虎钳_说明]
锡箔元宝[#texture=c02/锡箔元宝.png][ID:prop_锡箔元宝]
@ -179,6 +183,7 @@
~ Notes_c01
# c01-s05 院长房间
这是...{br}我还是快点找院长问问刚才书里的字怎么念吧[ID:c01_获得信件1碎片后]
我的假发呢?[ID:c01_小小蝶找假发]
这是鸡毛掸子吗?[ID:c01_鸡毛掸子]
桌上放着一本《圣经》。{br}「凡要救自己生命的,必丧掉生命...」[ID:c01_院长书桌]
@ -195,7 +200,9 @@
# c01-s07 书店外
碗里只有一枚铜钱。[ID:c01_s07_钱碗]
这是什么?[ID:c01_s07_获得报纸]
什么...意思?[ID:c01_s07_获得报纸后]
院长说,读一百本书,就可以成为无所不能的大人。{br}如果我再大一些,没准可以求店长把我留下,我会干很多活,也能吃苦...[ID:c01_s07_书店展柜]
这报童嘴在动,可是为什么没有说话声...[ID:c01_s07_报童]
# c01-s08 书店
{br}刚才那是什么?[ID:c01_s08_书架游戏完成]
...{br}这是...我之前工作的地方。{br}...{br}现在老板不在了,我也该走了...[ID:c01_s08_书架游戏恢复记忆]
@ -232,6 +239,7 @@
三快三慢?是和那个肉铺老板交流的暗号吗?[ID:c02_偷听李癞对话后]
这里之前放着的东西好像被人挪走了?[ID:c02_柜子可放置区域]
#保卫科
这是小孩子画的涂鸦?{br}...是钳子和...弹珠?[ID:c02_弹珠提示]
那是....一个小女孩吗?[ID:c02_保卫科看到小蝉]
诶?[ID:c02_保卫科小蝉消失]
登记簿?{br}刚才那个小孩在上面写了些什么[ID:c02_保卫科花名册os]
@ -243,7 +251,9 @@
[ID:c02_小手出现摔倒]
这是什么鬼东西,它是在讨要什么[ID:c02_小手是什么鬼]
又来一个!{br}这地方到底是怎么回事?[ID:c02_小手再次出现]
是纸杯电话。[ID:c02_小手首次交互纸杯电话]
#内侧楼道
...{br}怎么感觉有小孩在我身后哼歌?[ID:c02_s05_小蝉背后哼歌]
被挡住了[ID:c02_一楼楼道被挡住]
盖着布的木头架子...用来做什么的呢[ID:c02_一楼戏台]
通道是空的,飘着一股血气,又酸又腥。[ID:c02_描述垃圾通道]
@ -260,16 +270,21 @@
楼道有东西掉下来了?[ID:c02_敲门_肉掉落]
刚刚这里有块肉不见了?[ID:c02_敲门_老鼠叼肉]
#二楼
另一只小鞋子。 [ID:c02_锡箔换小鞋子]
小鞋子...{br}登记簿上好像写过,把鞋子给老鼠?[ID:c02_锡箔换小鞋子]
去三楼的路被堵住了,要不先看看别的地方吧。[ID:c02_二楼楼梯杂物堆]
这个小女孩神出鬼没的,她说不定知道上楼的路。 [ID:c02_二楼小蝉跑掉]
...{br}这个小女孩神出鬼没的,她说不定知道上楼的路。[ID:c02_二楼小蝉跑掉]
盆里的水很清澈,看上去像是刚盛的。[ID:c02_二楼水盆]
到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。[ID:c02_二楼老鼠洞]
又是这种小小尖尖的血脚印...[ID:c02_二楼血脚印]
那女孩为什么要我引开这个疯男人?[ID:c02_老鼠叼鞋引开疯子]
神经病...吓我一跳{br}那女孩为什么要我引开这个疯男人?[ID:c02_老鼠叼鞋引开疯子]
我要去找洞里的小手把弹珠拿回来。[ID:c02_小手换回弹珠]
这小猫嘴里叼了张纸条{br}有点可爱[ID:c02_二楼小猫叼纸条]
是...那个小女孩...{br}方小蝉的头套?[ID:c02_二楼小蝉头套]
#裂缝
...不对劲{br}为什么会有种...熟悉的感觉[ID:c02_s09_红色场景]
好吵...[ID:c02_s09_大眼睛处]
#瞎子卧室
刚才那些...到底是怎么回事? [ID:c02_离开红色演出]
终于...安静了{br}刚才那些...到底是怎么回事?[ID:c02_离开红色演出]
「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」{br}咦,这口诀是谁教我的来着...[ID:c02_瞎子卧室_八卦图]
院长房间里也有一个类似的十字架。[ID:c02_瞎子卧室_十字架]
我会在盒子里一直陪着你 :3[ID:c02_小蝉盒子特写]

View File

@ -3,6 +3,11 @@ class_name GlobalConfig extends Resource
static var DEBUG = false
const DEBUG_CHARACTER_PREFIX = "[debug]"
#### TODO 目前恒为 false. 移动端包体打包时需配置为 true
## pop_center_notification 会检查 `GlobalConfig.TOUCH_SCREEN` 状态
## 如果是 true 则使用带有 _screen 后缀的 translation_key
static var TOUCH_SCREEN = false
# .res would be binary encoded, .tres is text encoded
const RES_FILE_FORMAT = ".tres"

View File

@ -295,7 +295,14 @@ func pop_notification(translation_key: String, number := 1) -> void:
func pop_center_notification(translation_key: String, duration := 4.0) -> void:
var notification_node = get_node_or_null("/root/Main/UILayer/Notification")
if notification_node:
notification_node.show_center_notification(tr(translation_key).replace("{br}", "\n"), duration)
var string = tr(translation_key).replace("{br}", "\n")
## 如果是 true 则使用带有 _screen 后缀的 translation_key
if GlobalConfig.TOUCH_SCREEN:
var replaced_key = translation_key + "_screen"
var replaced_string = tr(replaced_key)
if replaced_key != replaced_string:
string = replaced_string.replace("{br}", "\n")
notification_node.show_center_notification(string, duration)
else:
printerr("pop_center_notification: Notification node not found")

View File

@ -10,14 +10,14 @@ func _ready() -> void:
var tween: Tween
func dizzy(duration := 3.5, intensity := 1.5) -> void:
func dizzy(duration := 3.5, intensity := 1.5, ease_in_duration := 0.3, ease_out_duration := 0.3) -> void:
if duration < 0.6:
return
if tween and tween.is_valid():
tween.kill()
show()
tween = create_tween()
tween.tween_property(rect.material, "shader_parameter/intensity", intensity, 0.3)
tween.tween_property(rect.material, "shader_parameter/intensity", intensity, ease_in_duration)
tween.tween_interval(duration - 0.6)
tween.tween_property(rect.material, "shader_parameter/intensity", 0.0, 0.3)
tween.tween_property(rect.material, "shader_parameter/intensity", 0.0, ease_out_duration).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CUBIC)
tween.finished.connect(hide)

View File

@ -5,6 +5,7 @@
[ext_resource type="Script" uid="uid://g32um0mltv5d" path="res://addons/dialogue_manager/dialogue_label.gd" id="2_1bn2y"]
[node name="OSPivot" type="Control"]
z_index = 5
layout_mode = 3
anchors_preset = 0
scale = Vector2(0.33, 0.33)

View File

@ -243,7 +243,7 @@ func _reset_archive() -> void:
RegEx.create_from_string(r'SceneManager.disable_prop_item\(.?"(.+)"') as RegEx
)
var prop_enabler_regx = (
RegEx.create_from_string(r'EventMSceneManageranager.enable_prop_item\(.?"(.+)"') as RegEx
RegEx.create_from_string(r'SceneManager.enable_prop_item\(.?"(.+)"') as RegEx
)
for p_match in prop_disabler_regx.search_all(code):
var key = p_match.get_string(1)

View File

@ -141,6 +141,7 @@ func _on_paper_interacted():
right_door.holding = false
await SceneManager.get_inspector().quit_and_hidden
$"捡起纸片后开门声".play()
await SceneManager.pop_os_with_str("c01_获得信件1碎片后")
SceneManager.pop_center_notification("ui_center_notify_right_click_prop")

View File

@ -85,7 +85,7 @@ func _on_fog_disappear() -> void:
func seller_interacted():
bookstore_portal.holding = false
# 报童交互
SceneManager.freeze_player(0)
SceneManager.lock_player()
seller.play("报童给报纸")
# 提前写入 prop 中,防止存档 bug稍后播放获得动画
SceneManager.enable_prop_item_silently("prop_信碎片2")
@ -94,7 +94,9 @@ func seller_interacted():
await SceneManager.pop_os_with_str("c01_s07_获得报纸")
# 播放获得动画
SceneManager.enable_prop_item("prop_信碎片2")
SceneManager.release_player()
await SceneManager.get_inspector().quit_and_hidden
await SceneManager.pop_os_with_str("c01_s07_获得报纸后")
SceneManager.unlock_player()
func jiandu_dialog_triggered() -> void:

View File

@ -269,6 +269,10 @@ position = Vector2(1681, 32)
action = 5
note_key = "c01_s07_书店展柜"
[node name="Ambush报童说话" parent="Ground/DeployLayer" index="12" instance=ExtResource("9_f61dl")]
position = Vector2(2014, 65)
hook_os_key = "c01_s07_报童"
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(41, 103)
character = "小小蝶"

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=24 format=3 uid="uid://bivc5cdap370p"]
[gd_scene load_steps=25 format=3 uid="uid://bivc5cdap370p"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_2jej0"]
[ext_resource type="Script" uid="uid://dmhh4g47bdxxy" path="res://scene/ground/scene/c02/s04_保卫科.gd" id="2_jyere"]
@ -18,6 +18,7 @@
[ext_resource type="Texture2D" uid="uid://hkrd6dd2nxkv" path="res://asset/art/scene/c02/s04_保卫科/e_小钳子提示.png" id="9_k74x7"]
[ext_resource type="PackedScene" uid="uid://xovlfee503a4" path="res://scene/ground/script/c02/小手讨东西.tscn" id="10_a43aq"]
[ext_resource type="Texture2D" uid="uid://v6q6ao6fiqm1" path="res://asset/art/scene/c02/s04_保卫科/e_老鼠画像横板.png" id="11_ffvrp"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="12_cq2m4"]
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="13_xy3nq"]
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/inspectable.tscn" id="19_k74x7"]
[ext_resource type="SpriteFrames" uid="uid://di43shn22n5ph" path="res://asset/art/gif/c00_通用动作/c00_通用动作_frames.tres" id="20_47ju4"]
@ -80,36 +81,41 @@ unique_name_in_owner = true
position = Vector2(72, 51)
hook_method = "xiaochan_disappear"
[node name="涂鸦提示" type="Sprite2D" parent="Ground/DeployLayer" index="4"]
[node name="Note弹珠提示" parent="Ground/DeployLayer" index="4" instance=ExtResource("12_cq2m4")]
position = Vector2(272, 5)
title_filter = "c02"
note_key = "c02_弹珠提示"
[node name="涂鸦提示" type="Sprite2D" parent="Ground/DeployLayer" index="5"]
position = Vector2(275, 13)
texture = ExtResource("6_gk1h4")
[node name="小钳子提示" type="Sprite2D" parent="Ground/DeployLayer" index="5"]
[node name="小钳子提示" type="Sprite2D" parent="Ground/DeployLayer" index="6"]
position = Vector2(270, -3)
texture = ExtResource("9_k74x7")
[node name="Closeup折锡纸" parent="Ground/DeployLayer" index="6" instance=ExtResource("6_66gue")]
[node name="Closeup折锡纸" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_66gue")]
unique_name_in_owner = true
position = Vector2(189, 15)
packed_scene = ExtResource("7_fvlg0")
on_display_hide_hud = true
first_interact_os_key = "c02_保卫科祭台os"
[node name="Closeup老鼠精" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_66gue")]
[node name="Closeup老鼠精" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_66gue")]
light_mask = 5
position = Vector2(207.5, -40.5)
texture = ExtResource("11_ffvrp")
packed_scene = ExtResource("8_cm3g6")
on_display_hide_hud = true
[node name="Closeup花名册" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_66gue")]
[node name="Closeup花名册" parent="Ground/DeployLayer" index="9" instance=ExtResource("6_66gue")]
unique_name_in_owner = true
position = Vector2(351, 31)
packed_scene = ExtResource("6_fvlg0")
on_display_hide_hud = true
first_interact_os_key = "c02_保卫科花名册os"
[node name="煤油灯" type="Sprite2D" parent="Ground/DeployLayer" index="9"]
[node name="煤油灯" type="Sprite2D" parent="Ground/DeployLayer" index="10"]
position = Vector2(370, 39)
[node name="灯光" type="AnimatedSprite2D" parent="Ground/DeployLayer/煤油灯"]
@ -126,10 +132,10 @@ energy = 2.0
blend_mode = 2
texture = ExtResource("9_a43aq")
[node name="小手讨东西" parent="Ground/DeployLayer" index="10" instance=ExtResource("10_a43aq")]
[node name="小手讨东西" parent="Ground/DeployLayer" index="11" instance=ExtResource("10_a43aq")]
position = Vector2(295, -6)
[node name="小蝉写字" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="11"]
[node name="小蝉写字" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"]
position = Vector2(351, 51)
sprite_frames = ExtResource("20_47ju4")
animation = &"c00_头套小婵_write"

View File

@ -66,6 +66,19 @@ func _on_madman_interacted() -> void:
await DialogueManager.dialogue_ended
EventManager.set_stage("c02_madman_interacted_stage", 1)
SceneManager.pop_os_with_str("c02_一楼疯子互动后")
# 玩家向右走 100px 后出现
_watch_player_move_right_x = SceneManager.get_player().global_position.x + 100
SceneManager.get_player().position_updated.connect(_watch_player_move)
var _watch_player_move_right_x: float
func _watch_player_move(global_pos) -> void:
if global_pos.x > _watch_player_move_right_x:
# 一次性触发,触发后断开信号
SceneManager.get_player().position_updated.disconnect(_watch_player_move)
SceneManager.pop_os_with_str("c02_s05_小蝉背后哼歌")
func xiaochan_disappear():

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=65 format=3 uid="uid://cootarwb44vvh"]
[gd_scene load_steps=68 format=3 uid="uid://cootarwb44vvh"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qkymk"]
[ext_resource type="Script" uid="uid://cbt0ubygchxvv" path="res://scene/ground/scene/c02/s06_二楼.gd" id="2_4dg6u"]
@ -45,6 +45,9 @@
[ext_resource type="Texture2D" uid="uid://b5kolhax7pf4u" path="res://asset/art/scene/c02/s06_二楼楼道/小猫纸条.png" id="37_rjlld"]
[ext_resource type="Script" uid="uid://bnm8wuspfx303" path="res://scene/ground/script/c02/event_2d_xchan_run_away.gd" id="39_t5e0j"]
[ext_resource type="SpriteFrames" uid="uid://di43shn22n5ph" path="res://asset/art/gif/c00_通用动作/c00_通用动作_frames.tres" id="40_7i4w0"]
[ext_resource type="Script" uid="uid://bkkiyk5jkdw4d" path="res://manager/event_manager/event2d.gd" id="44_qoe83"]
[ext_resource type="Texture2D" uid="uid://b7gyapghy3tsy" path="res://asset/art/neutral_point_light.png" id="45_0k27j"]
[ext_resource type="Texture2D" uid="uid://o5uouajglukh" path="res://asset/art/scene/c02/s10_空房间/e_小蝉头套.png" id="45_sqio2"]
[sub_resource type="Animation" id="Animation_k01ve"]
length = 0.001
@ -1296,6 +1299,10 @@ texture = ExtResource("37_osg51")
collision_width_and_x = Vector2(150, 0)
hook_method = "glimpse_hide_out"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Ambush小蝉偷看"]
energy = 0.2
texture = ExtResource("45_0k27j")
[node name="Event_小猫纸条" type="Node2D" parent="Ground/DeployLayer" index="20"]
position = Vector2(164, 42)
script = ExtResource("35_h3h1a")
@ -1314,6 +1321,7 @@ autoplay = "叼纸小猫坐着呼吸"
[node name="Inspectable小猫纸条" parent="Ground/DeployLayer/Event_小猫纸条" instance=ExtResource("37_7kxvk")]
position = Vector2(-2, 3)
global_inspect = true
first_interact_os_key = "c02_二楼小猫叼纸条"
content_centered = true
texture_cover = ExtResource("37_rjlld")
content_key = "c02_小猫纸条"
@ -1322,7 +1330,22 @@ content_key = "c02_小猫纸条"
position = Vector2(748, 47)
hook_method = "unlock_2floor_map"
[node name="Event2D_xchan_run_away" type="Node2D" parent="Ground/DeployLayer" index="22"]
[node name="Event胖子卧室门口小蝉头套" type="Node2D" parent="Ground/DeployLayer" index="22"]
script = ExtResource("44_qoe83")
event_name = &"c02_the_blind_room_stage"
event_stages = Array[int]([1])
pre_event_name = &"current_chapter_stage"
pre_event_stages = Array[int]([2])
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
[node name="Note小蝉的头套" parent="Ground/DeployLayer/Event胖子卧室门口小蝉头套" instance=ExtResource("10_h3h1a")]
position = Vector2(543, 57)
texture = ExtResource("45_sqio2")
sign_mark_offset = Vector2(0, -7.47)
title_filter = "c02"
note_key = "c02_二楼小蝉头套"
[node name="Event2D_xchan_run_away" type="Node2D" parent="Ground/DeployLayer" index="23"]
position = Vector2(9, -4)
script = ExtResource("39_t5e0j")
event_name = &"c02_2f_xchan_run_away"
@ -1348,6 +1371,10 @@ move_configs = Array[Dictionary]([{
}])
debug_mov_animation = "c00_头套小婵_run"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/Event2D_xchan_run_away/AutoplayAnimatedSprite"]
energy = 0.1
texture = ExtResource("45_0k27j")
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(63, 95)
catty_light_energy = 0.5

View File

@ -40,6 +40,8 @@ func take_off_flyer(immediatelly = false):
await tween.finished
else:
flyer.visible = false
# 等 0.5s 再允许交互
await Util.wait(0.5)
var hand = $"../DeployLayer/小手讨东西"
hand.enabled = true

View File

@ -125,6 +125,7 @@ position = Vector2(11, -1)
points = PackedVector2Array(37, 150, 610, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false
energy = 0.9
blend_mode = 1

View File

@ -68,8 +68,8 @@ func _on_ground_ready() -> void:
player.set_facing_direction(Vector2.LEFT)
player.global_position.x = 670
set_data("has_entered", true)
await Util.wait(1.0)
SceneManager.pop_os_with_str("c02_离开红色演出")
Util.timer(3.5, SceneManager.pop_os_with_str.bind("c02_离开红色演出"))
var interacting = false:

View File

@ -62,6 +62,7 @@ func _on_player_position_updated(global_pos: Vector2) -> void:
if not center_eye_opened and global_pos.x < blink_eye_x:
center_eye_opened = true
_start_blinking()
_center_eye_player_reaction()
# 切换 bgm
if not bgm_switched and global_pos.x < switch_bgm_x:
if GlobalConfig.DEBUG:
@ -99,5 +100,15 @@ func mouse_animation() -> void:
$"../DeployLayer/老鼠衔大洋".play()
func point_to_the_moon():
func point_to_the_moon() -> void:
$"../DeployLayer/小床人物".play("剪影人物床_指天")
func _center_eye_player_reaction() -> void:
# 中心眼睛睁开后,玩家 dizzy
await Util.wait(1.5)
SceneManager.lock_player()
$"Sfx耳鸣".play()
$"../DizzyShader".dizzy(3.5, 1.0, 0.5, 1.2)
await Util.wait(5.5)
SceneManager.pop_os_with_str("c02_s09_大眼睛处")
SceneManager.unlock_player()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=58 format=3 uid="uid://ryups1dnwdto"]
[gd_scene load_steps=60 format=3 uid="uid://ryups1dnwdto"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_o0m5w"]
[ext_resource type="Script" uid="uid://beqnywn1dlnax" path="res://scene/ground/scene/c02/s09_裂缝.gd" id="2_34a6f"]
@ -11,7 +11,9 @@
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_6xql4"]
[ext_resource type="Texture2D" uid="uid://dnkqaiugxsegs" path="res://asset/art/scene/c02/s09_裂缝/黑手.png" id="6_71bf1"]
[ext_resource type="Texture2D" uid="uid://cg8nfnd46iwaf" path="res://asset/art/scene/c02/s09_裂缝/bg_背景.png" id="6_87wfh"]
[ext_resource type="PackedScene" uid="uid://decfqoe5v0y6n" path="res://scene/effect/dizzy_shader.tscn" id="6_fgtii"]
[ext_resource type="Texture2D" uid="uid://dpmf4w76ln2uo" path="res://asset/art/scene/c02/旧版/s10_裂缝通道/fg_裂缝通道.png" id="6_nntqg"]
[ext_resource type="AudioStream" uid="uid://b8sbtn3l37uh" path="res://asset/audio/sfx/旧版/c02/红屏.ogg" id="7_3f6hu"]
[ext_resource type="PackedScene" uid="uid://b8ncf4d0jda8r" path="res://scene/entity/partical/particals_ash_horizontal.tscn" id="7_4a1t6"]
[ext_resource type="Texture2D" uid="uid://c2sk7h1648k3i" path="res://asset/art/scene/c02/s09_裂缝/bg_白眼球底板.png" id="7_76qsd"]
[ext_resource type="Script" uid="uid://byabd5jdlbqk4" path="res://scene/ground/script/c02/s09_麻绳.gd" id="7_rbu7p"]
@ -199,6 +201,12 @@ mode = "场景背景音"
"感应玩家操作" = false
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx耳鸣" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
stream = ExtResource("7_3f6hu")
bus = &"game_sfx"
script = ExtResource("4_qjenp")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="2"]
texture = ExtResource("6_87wfh")
@ -793,6 +801,10 @@ texture = ExtResource("10_ow44k")
position = Vector2(0, 21)
shape = SubResource("RectangleShape2D_enajl")
[node name="Ambush红色场景os" parent="Ground/DeployLayer" index="19" instance=ExtResource("6_6xql4")]
position = Vector2(2968, 84)
hook_os_key = "c02_s09_红色场景"
[node name="LightOccluder2D" type="LightOccluder2D" parent="Ground/AmbientLayer" index="0"]
occluder = SubResource("OccluderPolygon2D_dv46s")
occluder_light_mask = 47
@ -918,10 +930,7 @@ update_rotation = false
update_scale = false
[node name="CameraFocusMarker" parent="Ground" index="6"]
limit_left = 0
limit_top = -158
limit_right = 4536
limit_bottom = 158
[node name="前景" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="0"]
position = Vector2(4295, 21)
@ -934,10 +943,14 @@ position = Vector2(3421, 25)
points = PackedVector2Array(80, 150, 4500.93, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false
energy = 0.7
blend_mode = 1
[node name="UIPointLight2D" parent="Ground" index="10"]
position = Vector2(7016, -4)
[node name="DizzyShader" parent="Ground" instance=ExtResource("6_fgtii")]
visible = false
[editable path="Ground"]

View File

@ -63,5 +63,6 @@ func _outtro_show():
await Util.wait(10.0)
# 盒子猫逃脱成功/被抓走,游戏结束,解锁瞎子卧室门
ArchiveManager.set_global_entry(&"c02_the_blind_room_unlocked", true)
EventManager.set_stage("c02_the_blind_room_stage", 1)
SceneManager.unlock_player()
SceneManager.get_ground_loader().transition_to_scene("c02_s08", "1")

View File

@ -27,10 +27,11 @@ func _on_stage_updated():
ambush.enabled = true
var sprite = $"AutoplayAnimatedSprite"
ambush.triggered.connect(func():
sprite.play("c00_头套小婵_run")
SceneManager.lock_player()
SceneManager.pop_os_with_str("c02_二楼小蝉跑掉")
await Util.wait(2.0)
sprite.play("c00_头套小婵_run")
await Util.wait(3.0)
SceneManager.pop_os_with_str("c02_二楼小蝉跑掉")
SceneManager.unlock_player()
EventManager.set_stage(event_name, 2)
)

View File

@ -128,7 +128,6 @@ var interacting := false:
var communicating = false
func _increase_icount():
icount += 1
if icount == 1:
@ -159,6 +158,10 @@ func _on_interacted() -> void:
if icount == 0:
do_first_interact(false)
await _increase_icount()
# 首次交互结束后直接跳过,不使用物品
if icount == 1:
interacting = false
return
if holding_prop != "":
# 手持物品时,交互直接给玩家物品
SceneManager.enable_prop_item(holding_prop)
@ -172,8 +175,13 @@ func _on_interacted() -> void:
if not communicating:
communicating = true
# animated_sprite.visible = false
SceneManager.freeze_player()
# 如果第一次交互,显示 os
if not ArchiveManager.get_global_value("c02_hand_cup_phone_interacted"):
ArchiveManager.set_global_entry("c02_hand_cup_phone_interacted", true)
await SceneManager.pop_os_with_str("c02_小手首次交互纸杯电话")
# 7 拿起纸杯 8 监听纸杯
SceneManager.freeze_player(0, 7)
SceneManager.player_action(7)
# 小手收回 play backwards
animated_sprite.play("小手_纸杯_hide")
await SceneManager.get_player().animation_finished

View File

@ -71,7 +71,7 @@ updater_stage_mode = "exclude"
updater_stages = Array[int]([0, 1, 2])
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
[node name="TextureRect2" type="TextureRect" parent="."]
[node name="遮罩" type="TextureRect" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0

View File

@ -22,12 +22,14 @@ func _ready() -> void:
ArchiveManager.set_global_entry(&"c02_meat_door_interacted", true)
DialogueManager.show_dialogue_balloon(dialogue, "c02_s03_敲门游戏intro")
await DialogueManager.dialogue_ended
if ArchiveManager.get_global_value(&"c02_meat_given", false):
# not ArchiveManager.get_global_value(&"c02_eavesdrop_finished", false) or
# ArchiveManager.get_global_value(&"c02_meat_dropping", false) or
# 敲门成功,则禁用
button.disabled = true
else:
Util.timer(0.5, SceneManager.pop_center_notification.bind("ui_click_to_knock_door"))
button.disabled = false

View File

@ -30,9 +30,13 @@ func start(
## Apply any changes to the balloon given a new [DialogueLine].
func apply_dialogue_line() -> void:
var translation_key = dialogue_line.translation_key
label.text = ("[wave amp=10.0 freq=5.0][shake rate=4.0 level=3]" + tr(translation_key).strip_edges())
label.text = ("[wave amp=10.0 freq=5.0][shake rate=4.0 level=3]" + tr(translation_key).strip_edges().replace("{br}", "\n"))
var tween = create_tween()
tween.tween_property(label, "modulate:a", 1.0, 0.5)
# c02_弹珠游戏5 弹珠游戏最后的一句话显示时长延长
if translation_key == "c02_弹珠游戏5": # 注意是 line ID 而不是 title
tween.tween_interval(5.0)
else:
tween.tween_interval(2.0)
tween.tween_property(label, "modulate:a", 0.0, 0.5)
tween.tween_callback(ball_dialogue_ended.emit)

View File

@ -10,7 +10,7 @@ script = ExtResource("1_7ag4e")
[node name="Sfx红字特效音" type="AudioStreamPlayer" parent="."]
stream = ExtResource("2_10bnx")
volume_db = -8.0
volume_db = -20.0
bus = &"game_sfx"
script = ExtResource("3_l3dto")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
@ -40,7 +40,7 @@ theme_override_constants/margin_top = 100
[node name="RichTextLabel" type="RichTextLabel" parent="Control/Container"]
unique_name_in_owner = true
custom_minimum_size = Vector2(300, 0)
custom_minimum_size = Vector2(322, 0)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
@ -50,7 +50,7 @@ theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_fonts/normal_font = ExtResource("1_5lxgi")
theme_override_font_sizes/normal_font_size = 40
bbcode_enabled = true
text = "[wave amp=10.0 freq=5.0][shake rate=4.0 level=3] 先碰到边界你就输了"
text = "[wave amp=10.0 freq=5.0][shake rate=4.0 level=3] 我还有很多弹珠,玩到我赢为止!"
fit_content = true
autowrap_mode = 1
horizontal_alignment = 1

View File

@ -30,9 +30,10 @@ func _ready() -> void:
if GlobalConfig.DEBUG and debug_directly_win:
game_win()
else:
# checkout_round(2)
# return
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束(小猫纸片) 4:游戏结束(小猫离开)
if EventManager.get_stage(&"c02_ball_game_stage") == 2:
# checkout_round(2)
checkout_round(0)
else:
intro()