完善抓药游戏

This commit is contained in:
cakipaul 2025-07-23 17:07:20 +08:00
parent ae702123bd
commit e83482ec6d
30 changed files with 859 additions and 93 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2i5cqfwnabc"
path="res://.godot/imported/底图.png-85914ea1b842b552fc8a23ae13dbd8af.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/little_game/c03_药车游戏/底图.png"
dest_files=["res://.godot/imported/底图.png-85914ea1b842b552fc8a23ae13dbd8af.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b02vrycgotcfe"
path="res://.godot/imported/标签.png-79240f7e8af69a09f7e264f3ed9dc32e.ctex"
path="res://.godot/imported/标签_中文.png-6e1725f7c13216a151a40a194ab9928d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/little_game/c03_药车游戏/标签.png"
dest_files=["res://.godot/imported/标签.png-79240f7e8af69a09f7e264f3ed9dc32e.ctex"]
source_file="res://asset/art/little_game/c03_药车游戏/标签_中文.png"
dest_files=["res://.godot/imported/标签_中文.png-6e1725f7c13216a151a40a194ab9928d.ctex"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bknyukxevd2lw"
path="res://.godot/imported/标签_英文.png-d8e5b3330b7185c6fc3934d361427627.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/little_game/c03_药车游戏/标签_英文.png"
dest_files=["res://.godot/imported/标签_英文.png-d8e5b3330b7185c6fc3934d361427627.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://5qrlqm1moo3s"
path="res://.godot/imported/石臼前侧.png-c5c3e94bd89da7e16b00c1ecb2572f5d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/little_game/c03_药车游戏/石臼前侧.png"
dest_files=["res://.godot/imported/石臼前侧.png-c5c3e94bd89da7e16b00c1ecb2572f5d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dlvxxvcx7ga3w"
path="res://.godot/imported/amb_第二章结尾.ogg-5b3e4bbb5af26683d4c49855c1c00d2d.oggvorbisstr"
[deps]
source_file="res://asset/audio/sfx/环境音/第二章/amb_第二章结尾.ogg"
dest_files=["res://.godot/imported/amb_第二章结尾.ogg-5b3e4bbb5af26683d4c49855c1c00d2d.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@ -17,6 +17,7 @@ c03_f2_madman_runaway: 0:初始化 1:跑开_纸人挡路 2:消除纸人
c03_invite_xchan_supper=3 -> c03_f2_madman_runaway=2
c03_before_mahjong_game: 0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏
c03_mahjong_game: 0:麻将理牌 1:麻将出千 2:麻将结束
c03_durg_game: 0:初始化 1:获得药方 2:获得药包
c03_li_paperwoman: 0:初始化隐藏 1:显示纸人 2:纸舌头完成 3:给药完成
=> END

View File

@ -1,5 +1,7 @@
keys,zh_CN,_character,_notes,_tags,zh_SH,en
prop_下半部的舌头,下半部的舌头,,,[#texture=c03/ux_下半部的舌头.png],,
prop_2013钥匙,2013钥匙,,,[#texture=c03/2013钥匙.png],,
prop_2013钥匙_说明,看起来较新的钥匙标着「2013」的房间号码,,,,,
index_新游戏,新游戏,,,,,New Game
index_继续游戏,继续游戏,,,,,Continue
index_退出游戏,退出游戏,,,,,Exit Game
@ -47,6 +49,11 @@ input_拼凑信件,点击选择信件碎片方向键移动E 旋碎片转
input_书架游戏,点击书本可选中或交换Q 退出,,,,,"Click books to select or swap, Q to exit"
input_麻将游戏_麻将不足,还缺一块麻将,,,,,
input_麻将游戏_操作规则,依次点击两块麻将可进行交换,,,,,
ui_center_notify_c03药车缺少物品,缺少药引,,,,,
ui_center_notify_c03药车不能再取药材,同种药材只能取出一份,,,,,
ui_center_notify_c03放到碗中或原处,药材只能放到碗中或原处,,,,,
ui_center_notify_c03碗口放入药材,从碗口处放入药材,,,,,
ui_center_notify_c03准备研磨,已准备好研磨,,,,,
ui_获得道具,获得道具,,,,,Item Obtained
ui_获得重要物品,重要物品,,,,,Important Item
ui_退出,退出,,,,,Exit
@ -97,7 +104,7 @@ prop_粘鼠板_说明,自制的捕鼠工具,纸上面有黏黏的浆糊,,,,,Ho
prop_一把香,一把香,,,[#texture=c03/一把香.png][#inspect=c03/一把香.png],,Bundle of Incense
prop_一把香_说明,三炷细香捆成一束,香头微微发黑,散发着淡淡的檀木气息,,,,,
prop_麻将2,麻将(二),,,[#texture=c03/麻将2.png][#inspect=c03/ux_麻将2.png],,
prop_麻将2_说明,这块麻将上刻着幺鸡,边角已被摸得光滑,,,,,
prop_麻将2_说明,上面的幺鸡图是鸟和鸡的组合,幺字在南方的方言中有一的意思,,,,,
prop_一碗浆糊,一碗浆糊,,,[#texture=c03/一碗浆糊.png][#inspect=c03/ux_一碗浆糊.png],,
prop_一碗浆糊_说明,用面粉调制的黏糊糊的浆液,表面已经结了一层薄膜,,,,,
prop_纸舌头,纸舌头,,,[#texture=c03/下半部的舌头.png][#inspect=c03/ux_下半部的舌头.png],,
@ -105,7 +112,7 @@ prop_纸舌头_说明,用红纸剪成的舌头形状,边缘参差不齐,像
prop_刀把,刀把,,,[#texture=c03/刀把.png][#inspect=c03/ux_刀把.png],,
prop_刀把_说明,木质刀柄,表面磨得发亮,刀身不知去向,,,,,
prop_剪下的辫子,剪下的辫子,,,[#texture=c03/剪下的辫子.png][#inspect=c03/ux_剪下的辫子.png],,
prop_剪下的辫子_说明,一束乌黑的长辫,发丝柔顺,似乎刚被剪下不久,,,,,
prop_剪下的辫子_说明,王守义的辫子,是他极其宝贝之物,油亮浓密,没生虱子,,,,,
prop_沾血的纸条,沾血的纸条,,,[#texture=c03/沾血的纸条.png][#inspect=c03/ux_沾血的纸条.png],,
prop_沾血的纸条_说明,薄薄的纸片上有暗红色的斑点,字迹已经模糊不清,,,,,
prop_纸铜钱1,纸铜钱,,,[#texture=c03/纸铜钱1.png][#inspect=c03/ux_纸铜钱1.png],,
@ -122,8 +129,8 @@ prop_菜刀,菜刀,,,[#texture=c03/菜刀.png][#inspect=c03/ux_菜刀.png],,
prop_菜刀_说明,厨房里常见的菜刀,刀刃锋利,刀身微微泛着寒光,,,,,
prop_1015钥匙,1015钥匙,,,[#texture=c03/1015钥匙.png],,
prop_1015钥匙_说明,铜制钥匙上面刻着「1015」的数字,,,,,
prop_2013钥匙,2013钥匙,,,[#texture=c03/2013钥匙.png],,
prop_2013钥匙_说明,看起来较新的钥匙标着「2013」的房间号码,,,,,
prop_3012钥匙,3012钥匙,,,[#texture=c03/3012钥匙.png],,
prop_3012钥匙_说明,3012钥匙说明,,,,,
prop_胖子的钥匙,胖子的钥匙,,,[#texture=c03/胖子的钥匙.png],,
prop_胖子的钥匙_说明,一把普通的房门钥匙,钥匙环上还挂着个小铃铛,,,,,
prop_药方,药方,,,[#texture=c03/药方.png][#inspect=c03/ux_药方.png],,
@ -140,6 +147,8 @@ prop_单只小鞋子,一只小鞋子,,,[#texture=c02/小鞋子1.png],,A Single S
prop_单只小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩。{br}鞋不成双,祸事难防。,,,,,"This small shoe once belonged to a girl with bound feet.{br}When shoes don't come in pairs, misfortune is hard to prevent."
prop_邀请信,邀请信,,,[#texture=c03/邀请信.png][#inspect=c03/ux_邀请信.png],,
prop_邀请信_说明,邀请信说明,,,,,
prop_两个麻将,麻将,,,[#texture=c03/两个麻将.png],,
prop_两个麻将_说明,王守义出老千时用的麻将{br}我听说,那会儿赌场由黑帮控制,秩序混乱,赌徒设局被抓后,往往下场凄惨,只有极少数人能够全身而退。,,,,,
c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍吧。,,ID格式 prop_xx_说明,,,I feel like I've forgotten something. Let me go back and check again.
c01_s07_需要报纸,书店还没开门。,,,,,The bookstore isn't open yet.
c01_s08_书店工作,老板交代的工作还没做完,不能偷懒。,,,,,I haven't finished the work the boss assigned. I can't slack off.
@ -242,3 +251,4 @@ c03_s03_获得剪刀纸舌头,?✂️纸人,,,,,
c03_s03_桌子,?桌子,,,,,
c03_s03_洗头盆,?洗头盆,,,,,
c03_s03_演出结束,?演出结束,刚刚他们?,,,,,
c03_药方内容,生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服,,,,,

1 keys zh_CN _character _notes _tags zh_SH en
2 prop_下半部的舌头 下半部的舌头 [#texture=c03/ux_下半部的舌头.png]
3 prop_2013钥匙 2013钥匙 [#texture=c03/2013钥匙.png]
4 prop_2013钥匙_说明 看起来较新的钥匙,标着「2013」的房间号码
5 index_新游戏 新游戏 New Game
6 index_继续游戏 继续游戏 Continue
7 index_退出游戏 退出游戏 Exit Game
49 input_书架游戏 点击书本可选中或交换,Q 退出 Click books to select or swap, Q to exit
50 input_麻将游戏_麻将不足 还缺一块麻将
51 input_麻将游戏_操作规则 依次点击两块麻将可进行交换
52 ui_center_notify_c03药车缺少物品 缺少药引
53 ui_center_notify_c03药车不能再取药材 同种药材只能取出一份
54 ui_center_notify_c03放到碗中或原处 药材只能放到碗中或原处
55 ui_center_notify_c03碗口放入药材 从碗口处放入药材
56 ui_center_notify_c03准备研磨 已准备好研磨
57 ui_获得道具 获得道具 Item Obtained
58 ui_获得重要物品 重要物品 Important Item
59 ui_退出 退出 Exit
104 prop_一把香 一把香 [#texture=c03/一把香.png][#inspect=c03/一把香.png] Bundle of Incense
105 prop_一把香_说明 三炷细香捆成一束,香头微微发黑,散发着淡淡的檀木气息
106 prop_麻将2 麻将(二) [#texture=c03/麻将2.png][#inspect=c03/ux_麻将2.png]
107 prop_麻将2_说明 这块麻将上刻着幺鸡,边角已被摸得光滑 上面的幺鸡图是鸟和鸡的组合,幺字在南方的方言中有一的意思
108 prop_一碗浆糊 一碗浆糊 [#texture=c03/一碗浆糊.png][#inspect=c03/ux_一碗浆糊.png]
109 prop_一碗浆糊_说明 用面粉调制的黏糊糊的浆液,表面已经结了一层薄膜
110 prop_纸舌头 纸舌头 [#texture=c03/下半部的舌头.png][#inspect=c03/ux_下半部的舌头.png]
112 prop_刀把 刀把 [#texture=c03/刀把.png][#inspect=c03/ux_刀把.png]
113 prop_刀把_说明 木质刀柄,表面磨得发亮,刀身不知去向
114 prop_剪下的辫子 剪下的辫子 [#texture=c03/剪下的辫子.png][#inspect=c03/ux_剪下的辫子.png]
115 prop_剪下的辫子_说明 一束乌黑的长辫,发丝柔顺,似乎刚被剪下不久 王守义的辫子,是他极其宝贝之物,油亮浓密,没生虱子
116 prop_沾血的纸条 沾血的纸条 [#texture=c03/沾血的纸条.png][#inspect=c03/ux_沾血的纸条.png]
117 prop_沾血的纸条_说明 薄薄的纸片上有暗红色的斑点,字迹已经模糊不清
118 prop_纸铜钱1 纸铜钱 [#texture=c03/纸铜钱1.png][#inspect=c03/ux_纸铜钱1.png]
129 prop_菜刀_说明 厨房里常见的菜刀,刀刃锋利,刀身微微泛着寒光
130 prop_1015钥匙 1015钥匙 [#texture=c03/1015钥匙.png]
131 prop_1015钥匙_说明 铜制钥匙,上面刻着「1015」的数字
132 prop_2013钥匙 prop_3012钥匙 2013钥匙 3012钥匙 [#texture=c03/2013钥匙.png] [#texture=c03/3012钥匙.png]
133 prop_2013钥匙_说明 prop_3012钥匙_说明 看起来较新的钥匙,标着「2013」的房间号码 3012钥匙说明
134 prop_胖子的钥匙 胖子的钥匙 [#texture=c03/胖子的钥匙.png]
135 prop_胖子的钥匙_说明 一把普通的房门钥匙,钥匙环上还挂着个小铃铛
136 prop_药方 药方 [#texture=c03/药方.png][#inspect=c03/ux_药方.png]
147 prop_单只小鞋子_说明 这只小鞋子曾经属于一个裹了小脚的女孩。{br}鞋不成双,祸事难防。 This small shoe once belonged to a girl with bound feet.{br}When shoes don't come in pairs, misfortune is hard to prevent.
148 prop_邀请信 邀请信 [#texture=c03/邀请信.png][#inspect=c03/ux_邀请信.png]
149 prop_邀请信_说明 邀请信说明
150 prop_两个麻将 麻将 [#texture=c03/两个麻将.png]
151 prop_两个麻将_说明 王守义出老千时用的麻将{br}我听说,那会儿赌场由黑帮控制,秩序混乱,赌徒设局被抓后,往往下场凄惨,只有极少数人能够全身而退。
152 c01_s05_检查院长房间 好像忘记了什么事情,再回去检查一遍吧。 ID格式: prop_xx_说明 I feel like I've forgotten something. Let me go back and check again.
153 c01_s07_需要报纸 书店还没开门。 The bookstore isn't open yet.
154 c01_s08_书店工作 老板交代的工作还没做完,不能偷懒。 I haven't finished the work the boss assigned. I can't slack off.
251 c03_s03_桌子 ?桌子
252 c03_s03_洗头盆 ?洗头盆
253 c03_s03_演出结束 ?演出结束,刚刚他们?
254 c03_药方内容 生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服

View File

@ -57,9 +57,11 @@
# c03
还缺一块麻将 [ID:input_麻将游戏_麻将不足]
依次点击两块麻将可进行交换 [ID:input_麻将游戏_操作规则]
缺少药引 [ID:ui_center_notify_c03药车缺少物品]
同种药材只能取出一份 [ID:ui_center_notify_c03药车不能再取药材]
药材只能放到碗中或原处 [ID:ui_center_notify_c03放到碗中或原处]
从碗口处放入药材 [ID:ui_center_notify_c03碗口放入药材]
已准备好研磨 [ID:ui_center_notify_c03准备研磨]
获得道具 [ID:ui_获得道具]
@ -334,6 +336,8 @@
?桌子 [ID:c03_s03_桌子]
?洗头盆 [ID:c03_s03_洗头盆]
?演出结束,刚刚他们? [ID:c03_s03_演出结束]
# 抓药游戏
生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服 [ID:c03_药方内容]
# s04 李癞房间
# s05 肉铺
# s06 胖子卧室

View File

@ -222,12 +222,16 @@ debugging={
[internationalization]
locale/translation_remaps={
"res://asset/art/little_game/c03_药车游戏/标签_英文.png": PackedStringArray("res://asset/art/little_game/c03_药车游戏/标签_中文.png:zh"),
"res://asset/art/ui/note/c02_slices.png": PackedStringArray("res://asset/art/ui/note/c02_slices_en.png:en")
}
locale/translations=PackedStringArray("res://asset/dialogue/c01.zh_CN.translation", "res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/inspect_content.zh_CN.translation", "res://asset/dialogue/item_description.zh_CN.translation", "res://asset/dialogue/names.zh_CN.translation", "res://asset/dialogue/npc.zh_CN.translation", "res://asset/dialogue/c01.zh_SH.translation", "res://asset/dialogue/c01.en.translation", "res://asset/dialogue/c03.zh_CN.translation", "res://asset/dialogue/c04.zh_CN.translation", "res://asset/dialogue/c05.zh_CN.translation", "res://asset/dialogue/c06.zh_CN.translation", "res://asset/dialogue/item_description.en.translation", "res://asset/dialogue/item_description.zh_SH.translation", "res://asset/dialogue/c02.zh_SH.translation", "res://asset/dialogue/npc.zh_SH.translation", "res://asset/dialogue/c02.en.translation", "res://asset/dialogue/inspect_content.en.translation", "res://asset/dialogue/names.en.translation", "res://asset/dialogue/npc.en.translation", "res://asset/dialogue/线索笔记.en.translation", "res://asset/dialogue/线索笔记.zh_CN.translation")
locale/translations_pot_files=PackedStringArray("res://asset/dialogue/item_description.dialogue", "res://asset/dialogue/c01.dialogue", "res://asset/dialogue/c02.dialogue", "res://asset/dialogue/inspect_content.dialogue", "res://asset/dialogue/npc.dialogue", "res://asset/dialogue/c03.dialogue", "res://asset/dialogue/c04.dialogue", "res://asset/dialogue/c05.dialogue", "res://asset/dialogue/c06.dialogue", "res://asset/dialogue/event_stage.dialogue")
locale/test="zh-Hans"
locale/fallback="zh"
locale/language_filter=["cmn", "en", "eo", "es", "it", "ja", "ko", "tr", "uk", "zh"]
locale/locale_filter_mode=1
locale/country_filter=["CN", "DE", "ES", "EU", "FR", "GB", "HK", "IT", "JP", "KR", "NO", "NZ", "TR", "TW", "US"]
[layer_names]

View File

@ -32,7 +32,6 @@
[ext_resource type="Texture2D" uid="uid://0x7cl2cmcs6l" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕2.png" id="11_g0qhj"]
[ext_resource type="Script" uid="uid://3p6e8f385kow" path="res://scene/ground/script/c02/event_2d_xchan_run_after_got_pliers.gd" id="11_lq23y"]
[ext_resource type="SpriteFrames" uid="uid://di43shn22n5ph" path="res://asset/art/gif/c00_通用动作/c00_通用动作_frames.tres" id="11_o1qbs"]
[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="12_2b6vx"]
[ext_resource type="Texture2D" uid="uid://c8b80a75k3qw6" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_院子地上纸钱.png" id="14_qqdxs"]
[ext_resource type="Texture2D" uid="uid://douwcahbhr1wt" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群.png" id="18_crgo6"]
[ext_resource type="Texture2D" uid="uid://dqd645v3k4yar" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人.png" id="19_vddfx"]
@ -56,6 +55,7 @@
[ext_resource type="Texture2D" uid="uid://bcc7ni57tohwb" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕6.png" id="35_o1qbs"]
[ext_resource type="PackedScene" uid="uid://0sofmhrl358m" path="res://scene/entity/npc.tscn" id="35_plfv5"]
[ext_resource type="Texture2D" uid="uid://uh2ruegr3d7v" path="res://asset/art/gif/c02_一楼火灾/7-最左木箱 烧痕.png" id="36_rnk1v"]
[ext_resource type="Script" uid="uid://chgyivvdw22cw" path="res://scene/ground/script/c02/s03_event_2d抓药游戏.gd" id="38_g0s7j"]
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="39_rnk1v"]
[ext_resource type="PackedScene" uid="uid://cpxt082my5yac" path="res://scene/ground/script/c02/s03_closeup抓药游戏.tscn" id="45_fxne6"]
[ext_resource type="AudioStream" uid="uid://broetvd8vuc05" path="res://asset/audio/peiyin/c02/c02_8小男孩童谣.ogg" id="46_qqdxs"]
@ -652,18 +652,18 @@ z_index = 11
position = Vector2(1025, 27)
texture = ExtResource("22_3y5s5")
[node name="Closeup抓药游戏" parent="Ground/DeployLayer" index="24" instance=ExtResource("23_81juy")]
[node name="Event2D抓药游戏" type="Node2D" parent="Ground/DeployLayer" index="24"]
script = ExtResource("38_g0s7j")
event_name = &"c03_durg_game"
event_stages = Array[int]([1])
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
[node name="Closeup抓药游戏" parent="Ground/DeployLayer/Event2D抓药游戏" instance=ExtResource("23_81juy")]
position = Vector2(1058, 24)
packed_scene = ExtResource("45_fxne6")
action_key = 3
collision_width_and_x = Vector2(40, 0)
[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Closeup抓药游戏"]
script = ExtResource("12_2b6vx")
updater_event = &"current_chapter_stage"
updater_stage_mode = "exclude"
updater_stages = Array[int]([0, 1, 2])
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="25" instance=ExtResource("23_81juy")]
position = Vector2(466, 3)
packed_scene = ExtResource("24_0o4rt")

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=43 format=3 uid="uid://cp8d3ag5nbjq0"]
[gd_scene load_steps=44 format=3 uid="uid://cp8d3ag5nbjq0"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_6w6et"]
[ext_resource type="Script" uid="uid://dydpmjpcvt3v1" path="res://scene/ground/scene/c02/s05_一楼内侧楼道.gd" id="2_70lf6"]
@ -30,6 +30,7 @@
[ext_resource type="AudioStream" uid="uid://bhaws2ungqaf5" path="res://asset/audio/sfx/交互/角色/sfx_哼歌.ogg" id="24_7mq0m"]
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="25_4k6pw"]
[ext_resource type="PackedScene" uid="uid://decfqoe5v0y6n" path="res://scene/effect/dizzy_shader.tscn" id="29_74b3r"]
[ext_resource type="Script" uid="uid://bkkiyk5jkdw4d" path="res://manager/event_manager/event2d.gd" id="30_23jkv"]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_n48fn"]
@ -341,6 +342,11 @@ metadata/_custom_type_script = "uid://wapo47a1oddf"
position = Vector2(528, 57)
hook_method = "update_1l_map"
[node name="Event2D抓药演出" type="Node2D" parent="Ground/DeployLayer" index="22"]
position = Vector2(353, 0)
script = ExtResource("30_23jkv")
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(41, 98)
player_movement_rect = Rect2(23, -158, 677, 316)

View File

@ -3,9 +3,11 @@ extends CanvasLayer
@warning_ignore("unused_signal")
signal exit(arg)
@onready var animation_player: AnimationPlayer = %AnimationPlayer
@onready var slot_bowl: Marker2D = %DropSlotBowl
@onready var drawers: Array[HoverLightClickArea] = [
%Drawer1, %Drawer2, %Drawer3, %Drawer4, %Drawer5, %Drawer6
%Drawer1, %Drawer2, %Drawer3, %Drawer4, %Drawer5, %Drawer6, %"Hover蟋蟀", %"Hover粉末"
]
@onready var draggables: Array[DraggableRigid] = [
%DraggableRigid1,
@ -13,28 +15,50 @@ signal exit(arg)
%DraggableRigid3,
%DraggableRigid4,
%DraggableRigid5,
%DraggableRigid6
%DraggableRigid6,
%DraggableRigid7,
%DraggableRigid8
]
@onready var sfx_picked = $SfxPicked as AudioStreamPlayer
@onready var sfx_invalid_drop = $SfxInvalidDrop as AudioStreamPlayer
@onready var sfx_dropped = $SfxDropped as AudioStreamPlayer
@onready var sfx_ready_to_grind = $SfxReadyToGrind as AudioStreamPlayer
@onready var sfx_picked = $SfxPicked as Sfx
@onready var sfx_invalid_drop = $SfxInvalidDrop as Sfx
@onready var sfx_dropped = $SfxDropped as Sfx
@onready var sfx_ready_to_grind = $SfxReadyToGrind as Sfx
@onready var sfx_ingredients_ready = $SfxIngredientsReady as Sfx
@onready var sfx_toggle_grinder = $SfxToggleGrinder as Sfx
@onready var sfx_grinding = $SfxGrinding as Sfx
@onready var sfx_packing = $SfxPacking as Sfx
@onready var inspect_content = %"InspectContent" as Control
@onready var hover_spec = %"Hover药方" as HoverLightClickArea
@onready var hover_grinder = %"Hover石臼棒" as HoverLightClickArea
@onready var hover_finished_powder = %"Hover完成的药粉" as HoverLightClickArea
const correct_ingredients = [0, 4, 6] # 生姜,竹叶,甘蔗
const correct_ingredients = [0, 3, 5, 6, 7] # 生姜,竹叶,甘蔗, 蟋蟀, 粉末
var picked_ingredients: Array[int] = []
var holding_ingredient := -1
var all_picked = false
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
for i in 6:
for i in drawers.size():
toggle_draggable_visible(i, false)
var drawer = drawers[i]
drawer.interacted.connect(_on_drawer_interacted.bind(i))
var drag = draggables[i]
drag.picked.connect(_on_picked.bind(i))
drag.dropped.connect(_on_dropped.bind(i))
hover_spec.interacted.connect(_on_spec_interacted)
if not SceneManager.has_prop("prop_剪下的辫子"):
_freezing_drawers()
SceneManager.pop_center_notification("ui_center_notify_c03药车缺少物品")
func _on_spec_interacted() -> void:
hover_spec.hide()
inspect_content.show()
func toggle_draggable_freeze(freezing := true):
@ -54,6 +78,7 @@ var has_notified_put_to_bowl = false
func _on_drawer_interacted(id: int):
if picked_ingredients.has(id) or holding_ingredient > 0:
$SfxPickFailed.play()
drawers[id].invalid_blink()
SceneManager.pop_center_notification("ui_center_notify_c03药车不能再取药材")
else:
if not has_notified_put_to_bowl:
@ -68,7 +93,12 @@ func _on_drawer_interacted(id: int):
func _on_picked(_node: DraggableRigid, id: int):
$SfxPicked.play()
if holding_ingredient > 0 and holding_ingredient != id:
printerr("DraggableRigid _on_picked: holding_ingredient=", holding_ingredient, " but picked id=", id)
printerr(
"DraggableRigid _on_picked: holding_ingredient=",
holding_ingredient,
" but picked id=",
id
)
picked_ingredients.erase(id)
holding_ingredient = id
@ -79,13 +109,14 @@ func _on_dropped(node: DraggableRigid, id: int):
if dropping_position.x < 210:
dropped = true
picked_ingredients.append(id)
if GlobalConfig.DEBUG:
print("picked_ingredients updated:", picked_ingredients)
else:
# 判断是否对应到 slots 在 limit_squared 范围内
var drawer = drawers[id]
if drawer.is_focused():
holding_ingredient = -1
dropped = true
node.update_position(drawer.global_position)
toggle_draggable_visible(id, false)
else:
for d in drawers:
@ -104,7 +135,7 @@ func _on_dropped(node: DraggableRigid, id: int):
if all_picked:
print(picked_ingredients)
# 全部插入stage 进入下一阶段
sfx_ready_to_grind.play()
sfx_ingredients_ready.play()
_setup_on_ready_to_grind()
else:
sfx_dropped.play()
@ -115,8 +146,60 @@ func _on_dropped(node: DraggableRigid, id: int):
sfx_invalid_drop.play()
func _setup_on_ready_to_grind() -> void:
toggle_draggable_freeze(true)
func _freezing_drawers() -> void:
# 禁用 drawer
for d in drawers:
d.freezing = true
func _setup_on_ready_to_grind() -> void:
toggle_draggable_freeze(true)
_freezing_drawers()
_process_grinding()
var p = get_parent() as Closeup2D
if p:
p.hold_cancel_before_exit()
func _process_grinding() -> void:
hover_spec.freezing = true
hover_spec.show()
inspect_content.hide()
SceneManager.pop_center_notification("ui_center_notify_c03准备研磨")
sfx_ready_to_grind.play()
hover_grinder.freezing = false
await hover_grinder.interacted
hover_grinder.freezing = true
animation_player.play("intro_grinding")
sfx_toggle_grinder.play()
await animation_player.animation_finished
hover_finished_powder.freezing = false
hover_finished_powder.interacted.connect(_on_finished_powder_interacted, CONNECT_ONE_SHOT)
func _on_finished_powder_interacted() -> void:
var packing_paper = $"洞中药纸"
sfx_packing.play()
var tween = create_tween()
tween.tween_property(packing_paper, "modulate:a", 0.0, 1.0)
tween = create_tween()
tween.tween_interval(0.5)
tween.tween_property(hover_finished_powder, "modulate:a", 0.0, 0.5)
tween.tween_callback(SceneManager.enable_prop_item.bind("prop_药包"))
tween.tween_callback(exit.emit.bind(true))
func ingredients_fading_out() -> void:
var tween = create_tween()
tween.tween_interval(0.01)
for i in drawers.size():
tween.parallel().tween_property(draggables[i], "modulate:a", 0.0, 3.0)
for i in drawers.size():
tween.tween_callback(draggables[i].queue_free)
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("cancel") and inspect_content.visible:
get_viewport().set_input_as_handled()
hover_spec.show()
inspect_content.hide()

View File

@ -1,26 +1,220 @@
[gd_scene load_steps=31 format=3 uid="uid://cpxt082my5yac"]
[gd_scene load_steps=59 format=3 uid="uid://cpxt082my5yac"]
[ext_resource type="Script" uid="uid://dj2b4f3soxki5" path="res://scene/ground/script/c02/s03_closeup抓药游戏.gd" id="1_0wbm3"]
[ext_resource type="Texture2D" uid="uid://c1704t86t55cr" path="res://asset/art/little_game/c03_药车游戏/参考图.png" id="2_0wbm3"]
[ext_resource type="Texture2D" uid="uid://bs4npq7fnwjhw" path="res://asset/art/little_game/c03_药车游戏/背景底图.png" id="2_5ts1i"]
[ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_wtw10"]
[ext_resource type="Texture2D" uid="uid://c78ox8ynkdvdx" path="res://asset/art/little_game/c03_药车游戏/石臼单独.png" id="3_dv1g7"]
[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_h2dug"]
[ext_resource type="Texture2D" uid="uid://nil1tps2bcwg" path="res://asset/art/little_game/c03_药车游戏/碗完整.png" id="3_nugkd"]
[ext_resource type="Texture2D" uid="uid://c5q0o3aiiwg86" path="res://asset/art/little_game/c03_药车游戏/捣药棒竖.png" id="4_8leof"]
[ext_resource type="Texture2D" uid="uid://dm44hxapmdael" path="res://asset/art/little_game/c03_药车游戏/捣药棒(石臼中).png" id="4_j2sy5"]
[ext_resource type="Texture2D" uid="uid://bagdbej72i006" path="res://asset/art/little_game/c03_药车游戏/竹筐蟋蟀.png" id="5_6mqrq"]
[ext_resource type="Texture2D" uid="uid://5qrlqm1moo3s" path="res://asset/art/little_game/c03_药车游戏/石臼前侧.png" id="5_ctou3"]
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_qafag"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="6_0wbm3"]
[ext_resource type="AudioStream" uid="uid://bbe0mq32pms3v" path="res://asset/audio/effect/impact/impactPlank_medium_002.ogg" id="6_aqv3v"]
[ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="6_y0m4i"]
[ext_resource type="AudioStream" uid="uid://cx3dugjvb4142" path="res://asset/audio/effect/impact/impactWood_light_001.ogg" id="7_flc3m"]
[ext_resource type="PackedScene" uid="uid://c3gesto3ijcyq" path="res://scene/little_game/general/draggable_rigid.tscn" id="7_lv3nw"]
[ext_resource type="Texture2D" uid="uid://bykchi6rjrl4a" path="res://asset/art/little_game/c03_药车游戏/药方.png" id="7_otneu"]
[ext_resource type="Texture2D" uid="uid://b6oh1cyi1fb54" path="res://asset/art/little_game/c03_药车游戏/框内黑色粉末.png" id="8_kbm4v"]
[ext_resource type="Texture2D" uid="uid://hsignnm14m86" path="res://asset/art/little_game/c03_药车游戏/生姜.png" id="8_lv3nw"]
[ext_resource type="AudioStream" uid="uid://0i2xcuon17va" path="res://asset/audio/effect/impact/impactBell_heavy_002.ogg" id="9_8lx66"]
[ext_resource type="Texture2D" uid="uid://g6i61gj85w66" path="res://asset/art/little_game/c03_药车游戏/第1格.png" id="9_i3023"]
[ext_resource type="Texture2D" uid="uid://kmjw6xi8sufe" path="res://asset/art/little_game/c03_药车游戏/茯苓.png" id="9_igyl7"]
[ext_resource type="AudioStream" uid="uid://gxoubqjqpuks" path="res://asset/audio/sfx/交互/序章/04_书店内_点击书本.ogg" id="10_aqv3v"]
[ext_resource type="Texture2D" uid="uid://da5gf0n8qgyq0" path="res://asset/art/little_game/c03_药车游戏/黄岑.png" id="10_nugkd"]
[ext_resource type="Texture2D" uid="uid://c5j4i6lkuqh3x" path="res://asset/art/little_game/c03_药车游戏/第2格.png" id="10_wvyjr"]
[ext_resource type="Texture2D" uid="uid://xkf7pjxngrkc" path="res://asset/art/little_game/c03_药车游戏/竹叶.png" id="11_bmmll"]
[ext_resource type="AudioStream" uid="uid://i744r3cpknpe" path="res://asset/audio/effect/impact/impactBell_heavy_000.ogg" id="11_jwgdn"]
[ext_resource type="Texture2D" uid="uid://eikp4cro2dug" path="res://asset/art/little_game/c03_药车游戏/第3格.png" id="11_pcsd2"]
[ext_resource type="Texture2D" uid="uid://bxmbmtmndc656" path="res://asset/art/little_game/c03_药车游戏/金银花.png" id="12_12r3p"]
[ext_resource type="Texture2D" uid="uid://nv8312yg3gx3" path="res://asset/art/little_game/c03_药车游戏/第4格.png" id="12_gf0xj"]
[ext_resource type="Texture2D" uid="uid://cc10kf65rd5br" path="res://asset/art/little_game/c03_药车游戏/第5格.png" id="13_26hqw"]
[ext_resource type="Texture2D" uid="uid://phb40d686c16" path="res://asset/art/little_game/c03_药车游戏/甘蔗.png" id="13_x7amv"]
[ext_resource type="Texture2D" uid="uid://dli2dahffsmk6" path="res://asset/art/little_game/c03_药车游戏/第6格.png" id="14_wdf7x"]
[ext_resource type="Texture2D" uid="uid://ci5u7n7ws07ws" path="res://asset/art/little_game/c03_药车游戏/ux_碗前遮挡_扩张.png" id="15_nugkd"]
[ext_resource type="Texture2D" uid="uid://bknyukxevd2lw" path="res://asset/art/little_game/c03_药车游戏/标签_英文.png" id="15_wvyjr"]
[ext_resource type="PackedScene" uid="uid://bkk1rxx36ghrl" path="res://scene/entity/ux/hover_light_click_area.tscn" id="20_8lx66"]
[ext_resource type="AudioStream" uid="uid://b1ka1gwskwqa6" path="res://asset/audio/effect/impact/impactGeneric_light_004.ogg" id="24_vnme8"]
[ext_resource type="Texture2D" uid="uid://r2idykchn6re" path="res://asset/art/prop/c03/ux_药方.png" id="25_gonyp"]
[ext_resource type="AudioStream" uid="uid://44slgncnt6sj" path="res://asset/audio/sfx/交互/第一章/sfx_手交互成功.ogg" id="25_vnme8"]
[ext_resource type="AudioStream" uid="uid://bs3hohq8pftc7" path="res://asset/audio/effect/impact/fire_impact_short.ogg" id="26_ctou3"]
[ext_resource type="Texture2D" uid="uid://e4q2o6x1gtvo" path="res://asset/art/little_game/c03_药车游戏/完成药粉.png" id="29_26hqw"]
[ext_resource type="Texture2D" uid="uid://due28st4b4e01" path="res://asset/art/little_game/c03_药车游戏/洞中药纸.png" id="30_8leof"]
[ext_resource type="Texture2D" uid="uid://b5ibixjn6oikx" path="res://asset/art/little_game/c03_药车游戏/黑色粉末单独.png" id="32_gf0xj"]
[ext_resource type="Texture2D" uid="uid://bq1ilitkvodnr" path="res://asset/art/little_game/c03_药车游戏/蟋蟀单独.png" id="33_26hqw"]
[sub_resource type="Animation" id="Animation_wdf7x"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Hover石臼棒:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(205, 58)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Hover石臼棒:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Hover石臼棒:z_index")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SfxGrinding:playing")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("完成的药粉:modulate")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("洞中药纸:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("SfxPacking:playing")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_26hqw"]
resource_name = "intro_grinding"
length = 8.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Hover石臼棒:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.7, 1.36667, 2, 3, 3.33333, 3.8, 4.33333, 4.66667, 5.26667, 5.93333, 6.46667, 7, 7.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(205, 58), Vector2(170, 33), Vector2(169, 9), Vector2(132, 53), Vector2(134, 113), Vector2(131, 78), Vector2(132, 53), Vector2(134, 113), Vector2(131, 78), Vector2(132, 53), Vector2(134, 113), Vector2(131, 51), Vector2(171, -3.99999), Vector2(203, 57)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Hover石臼棒:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.7, 7, 7.73333),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [0.0, -0.614241, -0.614241, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Hover石臼棒:z_index")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1.4, 7.1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 1, 0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SfxGrinding:playing")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(2.8, 4.2, 5.73333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, true, true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("完成的药粉:modulate")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(3.2, 5.9),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/5/type = "method"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath(".")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(3.33333),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"ingredients_fading_out"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wdf7x"]
_data = {
&"RESET": SubResource("Animation_wdf7x"),
&"intro_grinding": SubResource("Animation_26hqw")
}
[sub_resource type="Gradient" id="Gradient_aqv3v"]
offsets = PackedFloat32Array(0.0291971, 0.782482, 1)
@ -52,8 +246,22 @@ radius = 14.0
[sub_resource type="CircleShape2D" id="CircleShape2D_8lx66"]
radius = 15.0
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ctou3"]
radius = 7.0
height = 29.0
[sub_resource type="CircleShape2D" id="CircleShape2D_ujbuy"]
radius = 15.0
[node name="Closeup抓药游戏" type="CanvasLayer"]
script = ExtResource("1_0wbm3")
metadata/_edit_horizontal_guides_ = [143.0]
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_wdf7x")
}
[node name="BG" type="TextureRect" parent="."]
light_mask = 5
@ -62,12 +270,115 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_0wbm3")
texture = ExtResource("2_5ts1i")
[node name="碗完整" type="Sprite2D" parent="BG"]
visible = false
position = Vector2(142, 187)
[node name="石臼" type="Sprite2D" parent="."]
position = Vector2(117, 62)
texture = ExtResource("3_dv1g7")
centered = false
[node name="竹筐蟋蟀" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(9, 38)
texture = ExtResource("5_6mqrq")
centered = false
[node name="Hover石臼棒" parent="." instance=ExtResource("20_8lx66")]
unique_name_in_owner = true
position = Vector2(205, 58)
freezing = true
[node name="PointLight2D" type="PointLight2D" parent="Hover石臼棒"]
position = Vector2(-13, 7)
energy = 2.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("4_j2sy5")
[node name="石杵" type="Sprite2D" parent="Hover石臼棒"]
light_mask = 5
position = Vector2(2, -36)
rotation = 0.571752
texture = ExtResource("4_8leof")
centered = false
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover石臼棒"]
show_behind_parent = true
position = Vector2(-49, -31)
polygon = PackedVector2Array(69, 0.2, 67, 0, 45, 0, 43, 3, 41, 3, 41, 14.3, 0, 69, 0, 75, 38.6, 75, 44.9, 68, 46.2, 68, 64, 32.5, 64, 30.8, 71.7, 24, 72, 4.4, 69, 2)
[node name="石臼前侧" type="Sprite2D" parent="."]
position = Vector2(117, 62)
texture = ExtResource("5_ctou3")
centered = false
[node name="Hover药方" parent="." instance=ExtResource("20_8lx66")]
unique_name_in_owner = true
position = Vector2(328, 218)
[node name="PointLight2D" type="PointLight2D" parent="Hover药方"]
position = Vector2(-6, 10)
energy = 0.6
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("7_otneu")
[node name="药方" type="Sprite2D" parent="Hover药方"]
light_mask = 5
position = Vector2(-111, -65)
texture = ExtResource("7_otneu")
centered = false
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover药方"]
position = Vector2(-111, -65)
polygon = PackedVector2Array(210, 0, 156.6, 0, 154, 0.1, 154, 0.9, 124, 0, 54, 0, 54, 0.7, 20, 105.7, 20, 107.5, 4, 141.6, 4, 142.7, 0, 144.7, 0, 150, 168.8, 150, 181.9, 136, 183.2, 136, 193.2, 117, 194.7, 117, 198, 97.2, 198, 87.6, 201.1, 83, 202.3, 83, 203.4, 80.5, 200, 77.1, 200, 76, 202, 69.3, 202, 67.1, 205, 65.1, 205, 60.9, 202, 58.9, 202, 55, 203, 55, 203, 47.2, 205.5, 46, 209.2, 46, 205, 37.5, 205, 35, 210, 35, 210, 32.5, 207, 26.5, 207, 24.2, 210, 14.6)
[node name="碗" type="Sprite2D" parent="."]
position = Vector2(38, 124.5)
texture = ExtResource("3_nugkd")
centered = false
[node name="柜格1" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(259, 36)
texture = ExtResource("9_i3023")
centered = false
[node name="柜格2" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(364, 35)
texture = ExtResource("10_wvyjr")
centered = false
[node name="柜格3" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(467, 36)
texture = ExtResource("11_pcsd2")
centered = false
[node name="柜格4" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(259, 96)
texture = ExtResource("12_gf0xj")
centered = false
[node name="柜格5" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(361, 98)
texture = ExtResource("13_26hqw")
centered = false
[node name="柜格6" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(465, 98)
texture = ExtResource("14_wdf7x")
centered = false
[node name="标签" type="Sprite2D" parent="."]
light_mask = 5
position = Vector2(293, 56)
texture = ExtResource("15_wvyjr")
centered = false
[node name="SfxPicked" type="AudioStreamPlayer" parent="."]
stream = ExtResource("7_flc3m")
@ -93,12 +404,36 @@ bus = &"game_sfx"
script = ExtResource("6_0wbm3")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxIngredientsReady" type="AudioStreamPlayer" parent="."]
stream = ExtResource("11_jwgdn")
bus = &"game_sfx"
script = ExtResource("6_0wbm3")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxReadyToGrind" type="AudioStreamPlayer" parent="."]
stream = ExtResource("11_jwgdn")
bus = &"game_sfx"
script = ExtResource("6_0wbm3")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxToggleGrinder" type="AudioStreamPlayer" parent="."]
stream = ExtResource("24_vnme8")
bus = &"game_sfx"
script = ExtResource("6_0wbm3")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxGrinding" type="AudioStreamPlayer" parent="."]
stream = ExtResource("26_ctou3")
bus = &"game_sfx"
script = ExtResource("6_0wbm3")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxPacking" type="AudioStreamPlayer" parent="."]
stream = ExtResource("25_vnme8")
bus = &"game_sfx"
script = ExtResource("6_0wbm3")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="DropSlotBowl" type="Marker2D" parent="."]
unique_name_in_owner = true
position = Vector2(135, 141)
@ -187,12 +522,50 @@ texture = SubResource("GradientTexture2D_jwgdn")
position = Vector2(0.5, -0.5)
shape = SubResource("RectangleShape2D_aqv3v")
[node name="DraggableRigid1" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
[node name="Hover蟋蟀" parent="." instance=ExtResource("20_8lx66")]
unique_name_in_owner = true
position = Vector2(56, 61)
[node name="PointLight2D" type="PointLight2D" parent="Hover蟋蟀"]
position = Vector2(10, 2)
energy = 2.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("33_26hqw")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover蟋蟀"]
show_behind_parent = true
position = Vector2(-47, -23)
polygon = PackedVector2Array(92, 0, 74.8, 0, 71.5, 2, 69.1, 2, 59, 14.3, 45, 20.7, 38.8, 22, 34.5, 22, 25.5, 17, 23.1, 17, 17, 24.3, 17, 25.7, 10.5, 29, 8, 29, 1, 38, 0, 38, 0, 43.3, 3.4, 53.4, 83, 54, 87.7, 50, 89.6, 50, 91, 43.2, 91, 37.1, 83, 30.1, 83, 28.7, 70.3, 23.2, 80, 17.1, 93, 14, 93, 3.9, 80.9, 7, 78.9, 7, 79, 6.4, 89.3, 3, 91.9, 3)
[node name="Hover粉末" parent="." instance=ExtResource("20_8lx66")]
unique_name_in_owner = true
position = Vector2(478, 209)
[node name="PointLight2D" type="PointLight2D" parent="Hover粉末"]
position = Vector2(4, 6)
energy = 2.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("8_kbm4v")
[node name="头发粉末" type="Sprite2D" parent="Hover粉末"]
light_mask = 5
position = Vector2(-79, -49)
texture = ExtResource("8_kbm4v")
centered = false
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover粉末"]
position = Vector2(-79, -49)
polygon = PackedVector2Array(107.4, 0, 79.8, 0, 64.4, 10, 62.2, 10, 50, 22.2, 50, 22.9, 0, 59.5, 0, 70, 2.7, 71, 9.9, 71, 11, 72.6, 11, 74.2, 23.5, 81, 28, 81, 32, 86, 37.3, 86, 56.4, 99, 58.1, 99, 67.4, 110, 84.7, 110, 110, 94.1, 115.3, 93, 116.5, 93, 152.5, 74, 154.9, 74, 161.9, 66, 163.4, 66, 166, 58.2, 166, 34.9, 162, 29.3, 162, 27, 138, 9, 138, 7, 122.5, 7)
[node name="DraggableRigid1" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(314, 69)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("8_lv3nw")
limit_rect = Rect2(65, 30, 460, 100)
limit_polygon = NodePath("../LimitPolygon2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid1"]
shape = SubResource("CircleShape2D_nugkd")
@ -202,12 +575,13 @@ shape = SubResource("CircleShape2D_nugkd")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid1/Area2D"]
polygon = PackedVector2Array(23, -19, -1.8, -19, -14.5, -14, -20.7, -14, -29.7, -7, -30, 6.5, -15.1, 19, 11.5, 19, 30, 6.4, 30, -11.7, 23, -17.9)
[node name="DraggableRigid2" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
[node name="DraggableRigid2" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(413, 67)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("9_igyl7")
limit_rect = Rect2(65, 30, 460, 100)
limit_polygon = NodePath("../LimitPolygon2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid2"]
shape = SubResource("CircleShape2D_bmmll")
@ -217,12 +591,13 @@ shape = SubResource("CircleShape2D_bmmll")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid2/Area2D"]
polygon = PackedVector2Array(16, -16.5, -9.5, -16.5, -17.5, -12.5, -18, 10, -15, 12.4, -15, 13.7, -10.1, 16.5, 11.6, 16.5, 17.9, 9.5, 18, -14, 16, -15.5)
[node name="DraggableRigid3" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
[node name="DraggableRigid3" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(518, 68)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("10_nugkd")
limit_rect = Rect2(65, 30, 460, 100)
limit_polygon = NodePath("../LimitPolygon2D")
[node name="Area2D" type="Area2D" parent="DraggableRigid3"]
@ -232,12 +607,13 @@ polygon = PackedVector2Array(15, -18.5, -6.2, -18.5, -9.5, -16.5, -11.9, -16.5,
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid3"]
shape = SubResource("CircleShape2D_12r3p")
[node name="DraggableRigid4" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
[node name="DraggableRigid4" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(312, 126)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("11_bmmll")
limit_rect = Rect2(65, 30, 460, 100)
limit_polygon = NodePath("../LimitPolygon2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid4"]
shape = SubResource("CircleShape2D_x7amv")
@ -247,12 +623,13 @@ shape = SubResource("CircleShape2D_x7amv")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid4/Area2D"]
polygon = PackedVector2Array(-7.3, -24.4, -14, -24.5, -20.6, -18.7, -22, -20.5, -25.3, -20.5, -29.3, -11.5, -31, -11.5, -31, -9.2, -29, -1.5, -30.2, 1.5, -31, 1.5, -31, 5.9, -30, 7.9, -31, 8.3, -31, 17.6, -27.8, 18.9, -29, 22.1, -29, 24.5, -21.2, 24.5, -15, 22.2, -12, 23.7, -12, 24.5, 7.7, 24.5, 11, 20.2, 22.3, 16.5, 27.8, 16.5, 31, 13.3, 31, 10.4, 28.3, 8.8, 30.3, 8.5, 31, 8.5, 31, -2.6, 30.1, -6.5, 31, -6.5, 31, -19, 26.7, -17.5, 21.7, -17.5, 13, -24.5, -6.5, -24.5)
[node name="DraggableRigid5" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
[node name="DraggableRigid5" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(413, 124)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("12_12r3p")
limit_rect = Rect2(65, 30, 460, 100)
limit_polygon = NodePath("../LimitPolygon2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid5"]
shape = SubResource("CircleShape2D_flc3m")
@ -262,12 +639,13 @@ shape = SubResource("CircleShape2D_flc3m")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid5/Area2D"]
polygon = PackedVector2Array(-2, -28, -20, -28, -20, -23.5, -16.7, -17.7, -30.2, -16, -32, -16, -32, -12, -26, -3.5, -32, 0.6, -32, 11.1, -26.4, 7, -23, 15.4, -23, 17.4, -20.3, 18.4, -15, 11.7, -15, 11, -13.5, 11, -11, 19.2, -11, 28, 5.5, 28, 9, 23.7, 9, 21.5, 12, 20.8, 13.2, 22, 17.6, 22, 19, 15.2, 19, 13.8, 31.1, 13, 32, 13, 32, 7.2, 29.4, 3.1, 32, 1.4, 32, -11.1, 23.7, -13.9, 22, -22.4, 22, -24.3, 19.7, -25.4, 15.4, -21.9, 16, -26.9, 16, -28, 6.2, -28, 3, -24.8, -1, -23.4, -2, -27)
[node name="DraggableRigid6" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
[node name="DraggableRigid6" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(515, 124)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("13_x7amv")
limit_rect = Rect2(65, 30, 460, 100)
limit_polygon = NodePath("../LimitPolygon2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid6"]
position = Vector2(-6, 3)
@ -278,22 +656,129 @@ shape = SubResource("CircleShape2D_8lx66")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid6/Area2D"]
polygon = PackedVector2Array(-9, -26, -16.7, -20, -19.1, -20, -24, -12.6, -24, -7.5, -28, -6.1, -28, 26, 0.4, 26, 2, 23.6, 2, 23, 3.3, 24, 16.4, 24, 27.4, 19, 28, 19, 28, -5.8, 24.8, -9, 14.6, -9, 16, -13.7, 16, -18.8, 9, -25.8)
[node name="DraggableRigid7" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(66, 63)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("33_26hqw")
limit_polygon = NodePath("../LimitPolygon2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid7"]
position = Vector2(-6, 6)
rotation = 0.883805
shape = SubResource("CapsuleShape2D_ctou3")
[node name="Area2D" type="Area2D" parent="DraggableRigid7"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid7/Area2D"]
polygon = PackedVector2Array(35, -25, 17.8, -25, 14.5, -23, 12.1, -23, 2, -10.7, -15.6, -2.5, -30, -6.5, -30, -7.3, -32.5, -8.4, -35.8, -5, -36, 7.7, -28.1, 14.9, -29, 16.4, -29, 20.8, -26, 23.8, -26, 25, -9.8, 25, -7.8, 21.5, -5.8, 25, -0.299999, 25, 1.1, 23, 3.7, 23, 0.799999, 13.3, 1.3, 12.6, 12, 16.4, 12, 17.3, 14.5, 18.4, 16.8, 16, 18.3, 16, 19.4, 13.7, 13.2, 6.5, 17, 2.8, 17, -0.4, 13.4, -1.9, 23, -7.9, 35.4, -11, 36, -11, 36, -21, 29.3, -21, 32.3, -22, 34.9, -22)
[node name="DraggableRigid8" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
unique_name_in_owner = true
position = Vector2(474, 216)
angular_damp = 1.0
replaced_area_monitor = NodePath("Area2D")
texture = ExtResource("32_gf0xj")
limit_polygon = NodePath("../LimitPolygon2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid8"]
position = Vector2(4, 4)
shape = SubResource("CircleShape2D_ujbuy")
[node name="Area2D" type="Area2D" parent="DraggableRigid8"]
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid8/Area2D"]
position = Vector2(-37, -10)
polygon = PackedVector2Array(51.1, 0, 24.5, 0, 6.6, 8, 4.1, 8, 0, 12.9, 0, 25, 3.8, 26, 59.7, 26, 66.9, 18, 67, 12.8, 63, 8.2, 63, 6.9)
[node name="LimitPolygon2D" type="Polygon2D" parent="."]
visible = false
polygon = PackedVector2Array(51, 33, 51, 120, 78, 166, 127, 175, 173, 174, 205, 160, 219, 141, 243, 137, 357, 164, 429, 235, 553, 235, 552, 33)
[node name="Hover完成的药粉" parent="." instance=ExtResource("20_8lx66")]
unique_name_in_owner = true
position = Vector2(134, 166)
freezing = true
[node name="PointLight2D" type="PointLight2D" parent="Hover完成的药粉"]
position = Vector2(3, 8.5)
energy = 2.0
range_layer_max = 10
range_item_cull_mask = 4
texture = ExtResource("29_26hqw")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover完成的药粉"]
position = Vector2(-82, -34)
polygon = PackedVector2Array(100, 0, 67.8, 0, 65.8, 1.3, 62.4, 0, 59.4, 0, 55, 2.9, 46.2, 3, 43.1, 6, 41.6, 5, 37.3, 5, 26.9, 12.5, 25, 10, 21.4, 10, 0.4, 25, 0, 50.7, 36, 77.9, 36, 79.5, 53.7, 85, 111.2, 85, 131.4, 81, 133.8, 81, 166.8, 49, 168.4, 49, 170, 45, 170, 25, 164.5, 25, 140.5, 13, 141.1, 12, 142.3, 12, 143.4, 9.5, 141, 7.1, 141, 3.8, 136.5, 6, 133.6, 6, 128, 1.9, 128, 0, 125.6, 0, 118.8, 2, 117.7, 2, 116, 0.9, 116, 0, 111, 0, 108.5, 1, 104.1, 1)
[node name="完成的药粉" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0)
light_mask = 5
position = Vector2(52, 132)
texture = ExtResource("29_26hqw")
centered = false
[node name="StaticBodyBowl" type="StaticBody2D" parent="."]
position = Vector2(132, 178)
collision_layer = 4
collision_mask = 4
[node name="碗前侧" type="Sprite2D" parent="StaticBodyBowl"]
z_index = 1
position = Vector2(150, -20)
texture = ExtResource("15_nugkd")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="StaticBodyBowl"]
show_behind_parent = true
polygon = PackedVector2Array(-94, -7, -72, 14, -53, 22, -22, 25, 20, 24, 49, 22, 74, 15, 97, -1, 109, -8, 126, -16, 456, -18, 460, 87, 24, 90, -160, 86, -162, -30, -142, -63, -102, -30)
[node name="ContentInspector" parent="." instance=ExtResource("3_h2dug")]
[node name="洞中药纸" type="Sprite2D" parent="."]
z_index = 1
position = Vector2(14, 198)
texture = ExtResource("30_8leof")
centered = false
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
[node name="遮罩" type="TextureRect" parent="."]
light_mask = 5
z_index = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 1.0
offset_top = 17.0
offset_right = 1.0
offset_bottom = 17.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
texture = ExtResource("2_wtw10")
[node name="InspectContent" type="Control" parent="."]
unique_name_in_owner = true
visible = false
z_index = 1
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="药方" type="TextureRect" parent="InspectContent"]
layout_mode = 0
offset_left = -14.0
offset_top = -10.0
offset_right = 562.0
offset_bottom = 306.0
mouse_filter = 2
texture = ExtResource("25_gonyp")
[node name="ContentInspector" parent="InspectContent" instance=ExtResource("3_h2dug")]
layout_mode = 1
[node name="遮罩" type="TextureRect" parent="InspectContent/ContentInspector"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -303,7 +788,7 @@ grow_vertical = 2
mouse_filter = 2
texture = ExtResource("5_qafag")
[node name="Label" type="Label" parent="ContentInspector/遮罩"]
[node name="Label" type="Label" parent="InspectContent/ContentInspector/遮罩"]
custom_minimum_size = Vector2(180, 0)
layout_mode = 1
anchors_preset = 8
@ -317,7 +802,7 @@ offset_right = 60.0
offset_bottom = 15.5
grow_horizontal = 2
grow_vertical = 2
text = "safasf"
vertical_alignment = 1
autowrap_mode = 3
script = ExtResource("6_y0m4i")
translation_key = "c03_药方内容"

View File

@ -0,0 +1,31 @@
@tool
extends Event2D
# var prev_stage := 0
# var stage := 0
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_global_stage_updated(e: StringName, s: int):
super._on_global_stage_updated(e, s)
func _on_ground_ready(_ground: Ground2D):
$"Closeup抓药游戏".exit.connect(
func (arg):
if arg:
EventManager.set_stage_if_greater("c03_durg_game", 2)
)
func _on_pre_stage_updated():
pass
func _on_stage_updated():
pass

View File

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

View File

@ -48,8 +48,6 @@ polygon = PackedVector2Array(13.5, -10, 4, -10, -1.5, -7.8, -4, -9, -11.6, -9, -
[node name="EventBinder" type="Node" parent="BG折起来/HoverLight钥匙"]
script = ExtResource("6_aen5b")
memo = "c03_s06_hole_key=[0] 时,显示: [钥匙]
[钥匙] interacted 时: c03_s06_hole_key=1(greater)"
updater_event = &"c03_s06_hole_key"
updater_mode = "shower"
updater_ease_duration = 0.0
@ -79,8 +77,6 @@ polygon = PackedVector2Array(-17.6, -11.5, -30.9, -6.5, -31.5, -6.5, -31.5, 9.9,
[node name="EventBinder" type="Node" parent="BG折起来/HoverLight刀柄"]
script = ExtResource("6_aen5b")
memo = "c03_s06_hole_knife_handle=[0] 时,显示: [刀柄]
[刀柄] interacted 时: c03_s06_hole_knife_handle=1(greater)"
updater_event = &"c03_s06_hole_knife_handle"
updater_mode = "shower"
updater_ease_duration = 0.0
@ -121,7 +117,6 @@ texture = ExtResource("2_wpl64")
[node name="ContentInspector" parent="." instance=ExtResource("3_mkmvg")]
visible = false
mouse_filter = 2
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
layout_mode = 1

View File

@ -19,7 +19,6 @@ signal dropped(node: DraggableRigid)
@export var freezing := false:
set(val):
freezing = val
refresh_gravity_and_collision()
if freezing:
if holding:
_drop()
@ -31,15 +30,16 @@ signal dropped(node: DraggableRigid)
texture = val
if is_node_ready():
sprite.texture = texture
@export var limit_rect := Rect2(Vector2.ZERO, Vector2(564, 316))
@export var limit_polygon: Polygon2D
@onready var sprite: Sprite2D = $Sprite2D
# Whether the item is currently being held by the player
var holding := false:
set(val):
holding = val
refresh_gravity_and_collision()
if holding != val:
holding = val
freeze = val
var touching := false
# 静态变量优化:避免频繁的字符串比较
@ -58,17 +58,12 @@ const HUD_FADE_DURATION := 0.3
var _mouse_event_source: Node
var _outline_tween: Tween
var _shake_tween: Tween
var default_gravity_scale: float
var default_collision_layer: int
func _ready() -> void:
sprite.texture = texture
sprite.offset = sprite_offset
if Engine.is_editor_hint():
return
default_gravity_scale = gravity_scale
default_collision_layer = collision_layer
# 初始化隐藏白边
sprite.material.set_shader_parameter("thickness", 0.0)
@ -81,15 +76,6 @@ func _ready() -> void:
_mouse_event_source.mouse_exited.connect(_on_mouse_exited)
func refresh_gravity_and_collision() -> void:
if holding or freezing:
gravity_scale = 0.0
default_collision_layer = 0
else:
gravity_scale = default_gravity_scale
collision_layer = default_collision_layer
func is_focused() -> bool:
return current_focusing_node == self
@ -145,20 +131,17 @@ func _unhandled_input(event: InputEvent) -> void:
elif holding:
get_viewport().set_input_as_handled()
_drop()
elif holding and event is InputEventMouseMotion:
_update_pos_to_mouse()
func _update_pos_to_mouse() -> void:
var mouse_pos := get_global_mouse_position()
mouse_pos = mouse_pos.clamp(limit_rect.position, limit_rect.end)
update_position(mouse_pos)
func update_position(pos: Vector2) -> void:
PhysicsServer2D.body_set_state(
get_rid(), PhysicsServer2D.BODY_STATE_TRANSFORM, Transform2D.IDENTITY.translated(pos)
)
func _physics_process(_delta: float) -> void:
if holding:
var target = get_global_mouse_position()
if limit_polygon:
target = Util.get_closest_point_on_polygon(target, limit_polygon.polygon)
# PhysicsServer2D.body_set_state(
# get_rid(), PhysicsServer2D.BODY_STATE_TRANSFORM, Transform2D.IDENTITY.translated(target)
# )
global_position = target
func _try_pick() -> void:
@ -166,7 +149,6 @@ func _try_pick() -> void:
return
_toggle_outline(false)
holding = true
_update_pos_to_mouse()
picked.emit(self)
@ -208,7 +190,6 @@ func force_hold() -> void:
_toggle_outline(false)
current_focusing_node = self
holding = true
_update_pos_to_mouse()
picked.emit(self)

View File

@ -459,11 +459,9 @@ func _on_mouse_exited() -> void:
func _mouse_moved_on_listening(unfold_scroll := false) -> void:
if unfold_scroll:
_toggle_scroll(false)
if not displaying:
_toggle_details(true)
return
timer.start(display_time)
@ -475,7 +473,6 @@ func _on_timer_timeout() -> void:
func _unhandled_input(event: InputEvent) -> void:
if locked or not listening_hotkey:
return
if event.is_action_pressed("prop_left"):
on_left_pressed()
get_viewport().set_input_as_handled()
@ -497,7 +494,6 @@ func _unhandled_input(event: InputEvent) -> void:
func _input(event: InputEvent) -> void:
if locked:
return
if listen_mouse and (event is InputEventMouseMotion or event is InputEventScreenTouch):
_mouse_moved_on_listening()

View File

@ -29,6 +29,7 @@ offset_top = 4.0
offset_right = 608.0
offset_bottom = 504.0
scale = Vector2(0.3, 0.3)
mouse_filter = 1
script = ExtResource("1_bbv0a")
[node name="VBoxContainer" type="VBoxContainer" parent="."]

View File

@ -1,6 +1,7 @@
@tool
extends Node
#### Timer
func wait(duration: float) -> void:
if duration <= 0:
@ -58,3 +59,49 @@ func generate_lines(content: String) -> Array:
var text = "~ title\n" + content + "\n=> END"
var res = DialogueManager.create_resource_from_text(text)
return await get_lines(res, "title")
#### Geometry
# This function finds the closest point on the boundary or inside of a polygon
# to a given point.
#
# @param point: The Vector2 point to test against.
# @param polygon_vertices: A PackedVector2Array defining the polygon.
# @return: The Vector2 coordinate of the closest point.
func get_closest_point_on_polygon(point: Vector2, polygon_vertices: PackedVector2Array) -> Vector2:
var vertex_count = polygon_vertices.size()
if vertex_count == 0:
return Vector2.ZERO # Or handle error appropriately
if vertex_count == 1:
return polygon_vertices[0]
# First, check if the point is already inside the polygon.
# If so, the point itself is the answer.
if Geometry2D.is_point_in_polygon(point, polygon_vertices):
return point
# If the point is outside, we need to find the closest point on its edges.
var closest_point_so_far: Vector2
var min_dist_sq = INF # Use infinity as the initial maximum distance
# Iterate through each edge of the polygon.
for i in range(vertex_count):
# An edge is a segment between the current vertex and the next one.
# The modulo operator (%) handles the last edge connecting the last vertex to the first.
var p1 = polygon_vertices[i]
var p2 = polygon_vertices[(i + 1) % vertex_count]
# Get the closest point on the current line segment.
var closest_point_on_segment = Geometry2D.get_closest_point_to_segment(point, p1, p2)
# Calculate the squared distance. This is more efficient than using sqrt().
var dist_sq = point.distance_squared_to(closest_point_on_segment)
# If this point is closer than any we've seen before, update our variables.
if dist_sq < min_dist_sq:
min_dist_sq = dist_sq
closest_point_so_far = closest_point_on_segment
return closest_point_so_far