细节优化

This commit is contained in:
cakipaul 2025-06-15 13:11:41 +08:00
parent 6ce8c474bb
commit 19dce1da27
51 changed files with 449 additions and 154 deletions

View File

@ -1,4 +1,4 @@
[gd_resource type="SpriteFrames" load_steps=105 format=3 uid="uid://3nas025c2c5u"]
[gd_resource type="SpriteFrames" load_steps=110 format=3 uid="uid://3nas025c2c5u"]
[ext_resource type="Texture2D" uid="uid://dwhh5uck24og4" path="res://asset/art/gif/c02_杂项/听纸杯/0.png" id="1_jpxok"]
[ext_resource type="Texture2D" uid="uid://b7gqorave0ung" path="res://asset/art/gif/c02_杂项/f3/0.png" id="1_o3ytw"]
@ -101,6 +101,11 @@
[ext_resource type="Texture2D" uid="uid://dyp0q0a6lcswk" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/57.png" id="74_csbcu"]
[ext_resource type="Texture2D" uid="uid://dsom0pwipi4gm" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/58.png" id="75_kdvnj"]
[ext_resource type="Texture2D" uid="uid://bdhj86py8gca7" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/59.png" id="76_0647m"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_杂项/火苗/0.png" id="87_tgdu0"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_杂项/火苗/1.png" id="88_i5ln4"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_杂项/火苗/2.png" id="89_eshku"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_杂项/火苗/3.png" id="90_j06p0"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_杂项/火苗/4.png" id="91_7cwcn"]
[ext_resource type="Texture2D" uid="uid://cy4ewvsa44qn0" path="res://asset/art/gif/c02_杂项/瞎子谈话_一起/瞎子谈话z1.png" id="91_v5jul"]
[ext_resource type="Texture2D" uid="uid://dv2leuis2bvgv" path="res://asset/art/gif/c02_杂项/瞎子谈话_一起/瞎子谈话z2.png" id="92_vajth"]
[ext_resource type="Texture2D" uid="uid://cjth2u1ovlt2h" path="res://asset/art/scene/c02/s03_公寓一楼院子/血迹(肉铺门).png" id="94_vajth"]
@ -391,6 +396,26 @@ animations = [{
"speed": 30.0
}, {
"frames": [{
"duration": 3.0,
"texture": ExtResource("87_tgdu0")
}, {
"duration": 3.0,
"texture": ExtResource("88_i5ln4")
}, {
"duration": 3.0,
"texture": ExtResource("89_eshku")
}, {
"duration": 3.0,
"texture": ExtResource("90_j06p0")
}, {
"duration": 3.0,
"texture": ExtResource("91_7cwcn")
}],
"loop": true,
"name": &"火苗",
"speed": 30.0
}, {
"frames": [{
"duration": 13.5,
"texture": ExtResource("31_t5bwu")
}, {

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://j5lpwxe8woew"
path="res://.godot/imported/火苗.gif-ebc4fd6c5cfbd8787f76553a6aeba514.tres"
[deps]
source_file="res://asset/art/gif/c02_杂项/火苗.gif"
dest_files=["res://.godot/imported/火苗.gif-ebc4fd6c5cfbd8787f76553a6aeba514.tres"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

View File

@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://boo54bqwgrgqf"
path="res://.godot/imported/楼道刮海报特写.png-535ab5a759d3182a0e8dcdf51406d3f1.ctex"
uid="uid://bkfxnc8jc6ad"
path="res://.godot/imported/0.png-0cfd1d440c8e247ef356d19a308b6ed4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c02/s02_大门过道/楼道刮海报特写.png"
dest_files=["res://.godot/imported/楼道刮海报特写.png-535ab5a759d3182a0e8dcdf51406d3f1.ctex"]
source_file="res://asset/art/gif/c02_杂项/火苗/0.png"
dest_files=["res://.godot/imported/0.png-0cfd1d440c8e247ef356d19a308b6ed4.ctex"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dw1abmepuchpf"
path="res://.godot/imported/1.png-c874caac3ee7500c9be30269fa149065.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c02_杂项/火苗/1.png"
dest_files=["res://.godot/imported/1.png-c874caac3ee7500c9be30269fa149065.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: 202 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ixgcovre8mwg"
path="res://.godot/imported/2.png-882de7bd3bcd386150d7043288f8cbc4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c02_杂项/火苗/2.png"
dest_files=["res://.godot/imported/2.png-882de7bd3bcd386150d7043288f8cbc4.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: 210 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://kmh5o86bl4nv"
path="res://.godot/imported/3.png-87bed99b66d0c2b1eb0a3a4a275b2608.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c02_杂项/火苗/3.png"
dest_files=["res://.godot/imported/3.png-87bed99b66d0c2b1eb0a3a4a275b2608.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: 200 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4ktgdyxw72g8"
path="res://.godot/imported/4.png-c1196611e8733e042a5fc5cf449139a5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c02_杂项/火苗/4.png"
dest_files=["res://.godot/imported/4.png-c1196611e8733e042a5fc5cf449139a5.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: 137 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://du1gfsc8mp0q0"
path="res://.godot/imported/ux_过道面板.png-96c350c07c8768e8d63c011ae3c063d5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c02/s02_大门过道/ux_过道面板.png"
dest_files=["res://.godot/imported/ux_过道面板.png-96c350c07c8768e8d63c011ae3c063d5.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: 127 KiB

View File

@ -1,14 +0,0 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://j5lpwxe8woew"
path="res://.godot/imported/火苗.gif-c3855063107f526b644bdc81d71b4744.tres"
[deps]
source_file="res://asset/art/scene/c02/s02_大门过道/火苗.gif"
dest_files=["res://.godot/imported/火苗.gif-c3855063107f526b644bdc81d71b4744.tres"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ca5tpfxmeh5q8"
path="res://.godot/imported/ux_二楼过道内侧.png-a70db011ea01fb2f9ac7d7cceb64f44d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c02/s07_二楼内侧楼道/ux_二楼过道内侧.png"
dest_files=["res://.godot/imported/ux_二楼过道内侧.png-a70db011ea01fb2f9ac7d7cceb64f44d.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: 403 B

After

Width:  |  Height:  |  Size: 325 B

View File

@ -6,8 +6,8 @@ c02_11肉铺敲门_3,不做生意赶紧滚!,,,
摔倒了、哭⿐头、⼩脚上面出血了 [ID:],摔倒了、哭⿐头、⼩脚上面出血了 [ID:],,,
哭⿐头、哭⿐头~⼩脚⼩孩哭⿐头... [ID:],哭⿐头、哭⿐头~⼩脚⼩孩哭⿐头... [ID:],,,
c02_纸人互动_离开公寓1,你要离开公寓吗?,,,
c02_纸人互动_离开公寓2,我现在要离开公寓,(response),,
c02_纸人互动_离开公寓3,我想留下再看看...,(response),,
c02_纸人互动_离开公寓2,离开,(response),,
c02_纸人互动_离开公寓3,留下,(response),,
c02_6偷听对话_李氏_1_fx,真的假的?你钻进去啦,你这个体型进得去哒?,李兰,,
c02_6偷听对话_癞子_1_fx,小声点,让人听见了倒惹麻烦。,王守义,,
c02_6偷听对话_李氏_2_fx,那你说说,都看到什么啦?,李兰,,

1 keys zh_CN _character _notes _tags
6 摔倒了、哭⿐头、⼩脚上面出血了 [ID:] 摔倒了、哭⿐头、⼩脚上面出血了 [ID:]
7 哭⿐头、哭⿐头~⼩脚⼩孩哭⿐头... [ID:] 哭⿐头、哭⿐头~⼩脚⼩孩哭⿐头... [ID:]
8 c02_纸人互动_离开公寓1 你要离开公寓吗?
9 c02_纸人互动_离开公寓2 我现在要离开公寓 离开 (response)
10 c02_纸人互动_离开公寓3 我想留下再看看... 留下 (response)
11 c02_6偷听对话_李氏_1_fx 真的假的?你钻进去啦,你这个体型进得去哒? 李兰
12 c02_6偷听对话_癞子_1_fx 小声点,让人听见了倒惹麻烦。 王守义
13 c02_6偷听对话_李氏_2_fx 那你说说,都看到什么啦? 李兰

View File

@ -1,8 +1,8 @@
~ c02_纸人互动_离开公寓
你要离开公寓吗? [ID:c02_纸人互动_离开公寓1]
- 我现在要离开公寓 [ID:c02_纸人互动_离开公寓2]
- 离开 [ID:c02_纸人互动_离开公寓2]
do SceneManager.checkout_index_page()
- 我想留下再看看... [ID:c02_纸人互动_离开公寓3]
- 留下 [ID:c02_纸人互动_离开公寓3]
=> END
~ c02_04_李氏癞子

View File

@ -22,8 +22,10 @@ ui_saved_all,已保存所有数据,,,,,All the data have been saved
ui_new_archive,已创建新存档,,,,,A new archive has been created
ui_auto_saved,自动保存成功,,,,,Auto save successful
ui_press_e,按 E 与场景互动,,,,,Press E to interact
ui_press_q_to_exit,按 Q 可退出,,,,,
ui_use_prop,按 E 使用道具,,,,,Press E to use prop
ui_important_item_update,重要物品已更新(按 B 打开背包),,,,,
ui_switch_prop,点击图标可切换道具(或按 Z/C,,,,,
ui_press_shift,按住 Shift 奔跑,,,,,
input_拼凑信件,点击选择信件碎片,方向键移动,按 E 旋转,,,,,
ui_获得,获得,,,,,
@ -38,10 +40,11 @@ ui_夜行船4,今日春来,明朝花谢。,,,,,
ui_夜行船5,急罚盏夜阑灯灭。,,,,,
ui_夜行船6,夜行船,,,,,
prop_空手,空手,,,,,
prop_空手_说明,空空如也,,,,,
prop_信碎片1,信碎片(一),,,[#texture=c01/信件左上.png],,
prop_信碎片1_说明,浦育院院长秦阳民国21年11月20日,,,,,
prop_信碎片2,信碎片(二),,,[#texture=c01/信件右上.png],,
prop_信碎片2_说明,信碎片(二)说明,,,,,
prop_信碎片2_说明,...,,,,,
prop_银元,银元,,,[#texture=c01/银元.png],,
prop_银元_说明,一枚“袁大头”银元,中華民國十年造。,,,,,
prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,

1 keys zh_CN _character _notes _tags zh_SH en
22 ui_new_archive 已创建新存档 A new archive has been created
23 ui_auto_saved 自动保存成功 Auto save successful
24 ui_press_e 按 E 与场景互动 Press E to interact
25 ui_press_q_to_exit 按 Q 可退出
26 ui_use_prop 按 E 使用道具 Press E to use prop
27 ui_important_item_update 重要物品已更新(按 B 打开背包)
28 ui_switch_prop 点击图标可切换道具(或按 Z/C)
29 ui_press_shift 按住 Shift 奔跑
30 input_拼凑信件 点击选择信件碎片,方向键移动,按 E 旋转
31 ui_获得 获得
40 ui_夜行船5 急罚盏夜阑灯灭。
41 ui_夜行船6 夜行船
42 prop_空手 空手
43 prop_空手_说明 空空如也
44 prop_信碎片1 信碎片(一) [#texture=c01/信件左上.png]
45 prop_信碎片1_说明 浦育院院长秦阳,民国21年,11月20日
46 prop_信碎片2 信碎片(二) [#texture=c01/信件右上.png]
47 prop_信碎片2_说明 信碎片(二)说明 ...
48 prop_银元 银元 [#texture=c01/银元.png]
49 prop_银元_说明 一枚“袁大头”银元,中華民國十年造。
50 prop_院长的信 院长的信 [#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png]

View File

@ -21,8 +21,10 @@
自动保存成功 [ID:ui_auto_saved]
按 E 与场景互动 [ID:ui_press_e]
按 Q 可退出 [ID:ui_press_q_to_exit]
按 E 使用道具 [ID:ui_use_prop]
重要物品已更新(按 B 打开背包) [ID:ui_important_item_update]
点击图标可切换道具(或按 Z/C [ID:ui_switch_prop]
按住 Shift 奔跑 [ID:ui_press_shift]
点击选择信件碎片,方向键移动,按 E 旋转 [ID:input_拼凑信件]
@ -50,7 +52,7 @@
信碎片(一) [#texture=c01/信件左上.png] [ID:prop_信碎片1]
浦育院院长秦阳民国21年11月20日 [ID:prop_信碎片1_说明]
信碎片(二) [#texture=c01/信件右上.png] [ID:prop_信碎片2]
[ID:prop_信碎片2_说明]
... [ID:prop_信碎片2_说明]
银元 [#texture=c01/银元.png] [ID:prop_银元]
一枚“袁大头”银元,中華民國十年造。 [ID:prop_银元_说明]

View File

@ -5,17 +5,17 @@
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_o674m"]
texture = ExtResource("2_iui7n")
texture_margin_left = 8.0
texture_margin_top = 8.0
texture_margin_right = 8.0
texture_margin_bottom = 8.0
texture_margin_left = 5.0
texture_margin_top = 5.0
texture_margin_right = 5.0
texture_margin_bottom = 5.0
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_pndlu"]
texture = ExtResource("2_iui7n")
texture_margin_left = 8.0
texture_margin_top = 8.0
texture_margin_right = 8.0
texture_margin_bottom = 8.0
texture_margin_left = 5.0
texture_margin_top = 5.0
texture_margin_right = 5.0
texture_margin_bottom = 5.0
expand_margin_left = 2.0
expand_margin_top = 2.0
expand_margin_right = 2.0
@ -23,31 +23,32 @@ expand_margin_bottom = 2.0
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_8kglp"]
texture = ExtResource("2_iui7n")
texture_margin_left = 8.0
texture_margin_top = 8.0
texture_margin_right = 8.0
texture_margin_bottom = 8.0
texture_margin_left = 5.0
texture_margin_top = 5.0
texture_margin_right = 5.0
texture_margin_bottom = 5.0
modulate_color = Color(0.888425, 0.888425, 0.888425, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_fhhiq"]
texture = ExtResource("2_iui7n")
texture_margin_left = 8.0
texture_margin_top = 8.0
texture_margin_right = 8.0
texture_margin_bottom = 8.0
texture_margin_left = 5.0
texture_margin_top = 5.0
texture_margin_right = 5.0
texture_margin_bottom = 5.0
modulate_color = Color(0.599199, 0.599199, 0.599199, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_6ojpb"]
texture = ExtResource("2_iui7n")
texture_margin_left = 8.0
texture_margin_top = 8.0
texture_margin_right = 8.0
texture_margin_bottom = 8.0
texture_margin_left = 5.0
texture_margin_top = 5.0
texture_margin_right = 5.0
texture_margin_bottom = 5.0
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_jydvi"]
[resource]
default_font_size = 12
default_font = ExtResource("1_iui7n")
default_font_size = 9
Button/font_sizes/font_size = 9
Button/fonts/font = ExtResource("1_iui7n")
Button/styles/disabled = SubResource("StyleBoxTexture_o674m")

View File

@ -296,9 +296,9 @@ func checkout_index_page(transition := true):
func _jump_back_to_index_and_quit_main():
var packed_index_page := preload("res://scene/index_page.tscn")
get_tree().change_scene_to_packed.call_deferred(packed_index_page)
var main = get_node_or_null("/root/Main")
if main:
main.queue_free()
# var main = get_node_or_null("/root/Main")
# if main:
# main.queue_free()
var prop_bag = preload("res://scene/prop/prop_bag.tscn")

View File

@ -184,12 +184,17 @@ func apply_dialogue_line() -> void:
# Wait for input
if dialogue_line.responses.size() > 0:
# 有 response 时标题字体大小调大
dialogue_label.set("theme_override_font_sizes/normal_font_size", 11.0)
# 设置为橙色
dialogue_label.text = "[color=orange]" + dialogue_label.text + "[/color]"
balloon.focus_mode = Control.FOCUS_NONE
responses_menu.show()
is_waiting_for_input = true
balloon.focus_mode = Control.FOCUS_ALL
balloon.grab_focus()
return
dialogue_label.set("theme_override_font_sizes/normal_font_size", null)
is_waiting_for_input = true
balloon.focus_mode = Control.FOCUS_ALL

View File

@ -1,10 +1,9 @@
[gd_scene load_steps=6 format=3 uid="uid://cb4s8y1y600og"]
[gd_scene load_steps=5 format=3 uid="uid://cb4s8y1y600og"]
[ext_resource type="Script" uid="uid://814s3vawnw0e" path="res://scene/dialog/balloon.gd" id="1_36de5"]
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_a8ve6"]
[ext_resource type="Theme" uid="uid://dlrwa60futc45" path="res://config/balloon_theme.tres" id="2_b3fpn"]
[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="3_72ixx"]
[ext_resource type="FontVariation" uid="uid://1ryw42kej6lv" path="res://config/font_ui.tres" id="3_b3fpn"]
[node name="Balloon" type="CanvasLayer"]
layer = 12
@ -58,8 +57,6 @@ mouse_filter = 2
theme_override_colors/font_shadow_color = Color(0.305882, 0.305882, 0.305882, 0.388235)
theme_override_constants/shadow_offset_y = 1
theme_override_constants/shadow_offset_x = 1
theme_override_fonts/normal_font = ExtResource("3_b3fpn")
theme_override_font_sizes/normal_font_size = 9
bbcode_enabled = true
text = "Charagcter"
fit_content = true
@ -75,8 +72,6 @@ size_flags_vertical = 0
theme_override_colors/font_shadow_color = Color(0.306923, 0.306923, 0.306923, 0.388235)
theme_override_constants/shadow_offset_y = 1
theme_override_constants/shadow_offset_x = 1
theme_override_fonts/normal_font = ExtResource("3_b3fpn")
theme_override_font_sizes/normal_font_size = 9
text = "Dialogue..."
autowrap_mode = 0
seconds_per_step = 0.005
@ -86,7 +81,7 @@ seconds_per_pause_step = 0.1
layout_mode = 2
mouse_filter = 2
theme_override_constants/margin_left = 0
theme_override_constants/margin_top = -4
theme_override_constants/margin_top = -2
theme_override_constants/margin_right = 0
theme_override_constants/margin_bottom = 6
@ -94,7 +89,7 @@ theme_override_constants/margin_bottom = 6
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 8
theme_override_constants/separation = 4
theme_override_constants/separation = 8
alignment = 1
script = ExtResource("3_72ixx")
response_template = NodePath("ResponseExample")
@ -103,13 +98,11 @@ response_template = NodePath("ResponseExample")
layout_mode = 2
size_flags_horizontal = 4
mouse_filter = 1
theme_override_fonts/font = ExtResource("3_b3fpn")
text = "Response example"
[node name="ResponseExample2" type="Button" parent="Balloon/VBoxContainer/Responses/ResponsesMenu"]
layout_mode = 2
mouse_filter = 1
theme_override_fonts/font = ExtResource("3_b3fpn")
text = "Response example"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]

View File

@ -23,7 +23,9 @@ func _ready() -> void:
func _close_up_interacted() -> void:
if interacted_times == 1 and first_interact_os_key:
SceneManager.pop_os_with_str(first_interact_os_key)
var tween = await SceneManager.pop_os_with_str(first_interact_os_key)
tween.tween_interval(0.5)
tween.tween_callback(display)
else:
display()

View File

@ -4,6 +4,8 @@ class_name Interactable2D extends Sprite2D
# interacted_times 增加后,再发出信号
signal interacted
signal interacted_with_key(key)
# 交互 prop 不匹配
signal interact_mismatch_failed
signal sign_mark_offset_updated
@ -133,6 +135,7 @@ func _on_interacted() -> void:
sign_mark.invalid_shake(matched_sign_texture, unmatched_sign_texture)
# SceneManager.on_toggle_invalid_prop()
interact_mutex.unlock()
interact_mismatch_failed.emit()
return
if not mute_when_interacted:
sfx_success.play()

View File

@ -794,6 +794,8 @@ frame = 9
position = Vector2(414, 51)
texture = ExtResource("8_mnduo")
sign_mark_offset = Vector2(0.95, -1.35)
mute_when_interacted = true
mute_when_invalid = true
one_shot = false
[node name="PointLight墙" type="PointLight2D" parent="Ground/AmbientLayer" index="0"]

View File

@ -92,7 +92,7 @@ bus = &"game_sfx"
script = ExtResource("4_p6k3c")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="2"]
[node name="BGSprite2D" parent="Ground" index="1"]
material = SubResource("ShaderMaterial_ddd5v")
texture = ExtResource("3_322m4")
offset = Vector2(0, -158)
@ -182,7 +182,7 @@ energy = 0.4
texture = ExtResource("9_i4dqp")
offset = Vector2(317, 0)
[node name="MainPlayer" parent="Ground" index="5"]
[node name="MainPlayer" parent="Ground" index="4"]
position = Vector2(437, 98)
character = "小小蝶"
@ -194,7 +194,7 @@ offset = Vector2(0, 40)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(30, 150, 545, 150)
[node name="DirectionalLight2D" parent="Ground" index="9"]
[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.0
blend_mode = 1

View File

@ -32,8 +32,12 @@ func _on_ground_ready() -> void:
_display_paper_man(false)
else:
paper_man.get_node("wall/CollisionShape2D").disabled = true
paper_man.enabled = false
# paper_man.enabled = false
paper_man.visible = false
$"../DeployLayer/InteractableLeftPortal".interacted.connect(_on_try_exit)
flyer = $"../DeployLayer/Closeup刮海报"
if data.flyer_shaven:
flyer.enabled = false
@ -97,19 +101,19 @@ func _on_music_box_exited(_arg):
func _display_paper_man(play_sfx := true):
paper_man.visible = true
paper_man.enabled = true
# 不启用
# paper_man.enabled = true
if play_sfx:
paper_man.get_node("Sfx").play()
paper_man.get_node("wall/CollisionShape2D").disabled = false
func paper_man_interacted():
func _on_try_exit():
SceneManager.freeze_player(0)
# 退出公寓?
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_纸人互动_离开公寓")
await DialogueManager.dialogue_ended
SceneManager.release_player()
func display_music_box():
# 展示八音盒
music_box.visible = true

View File

@ -1,10 +1,11 @@
[gd_scene load_steps=27 format=3 uid="uid://brck77w81fhvc"]
[gd_scene load_steps=28 format=3 uid="uid://brck77w81fhvc"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_wrr6r"]
[ext_resource type="Script" uid="uid://bfrgnmde3hjn0" path="res://scene/ground/scene/c02/s02_animation.gd" id="2_5p8ev"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="3_fy0o1"]
[ext_resource type="Texture2D" uid="uid://5428j51dwarc" path="res://asset/art/scene/c02/s02_大门过道/bg_过道背景.png" id="3_gjwum"]
[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="4_wbif8"]
[ext_resource type="Texture2D" uid="uid://r0n7qy4kr3w2" path="res://asset/art/ui/action_mark/UI场景切换.png" id="5_m1xet"]
[ext_resource type="Texture2D" uid="uid://ceijv5l0prppa" path="res://asset/art/prop/c02/海报(小)/除鼠双杰.png" id="6_gjwum"]
[ext_resource type="Texture2D" uid="uid://b8pcnqvdddo5g" path="res://asset/art/prop/c02/海报特写/除鼠二杰.png" id="7_jg8g0"]
[ext_resource type="Texture2D" uid="uid://cvgw2mxrlr6io" path="res://asset/art/scene/c02/旧版/s02_走道/ux_进门鼠疫海报yz.png" id="7_wdwbi"]
@ -68,7 +69,8 @@ texture = ExtResource("3_gjwum")
offset = Vector2(0, -240)
[node name="portal_left" parent="Ground/DeployLayer" index="0"]
position = Vector2(28, 21)
position = Vector2(-25, 24)
enabled = false
target_scene = "c02_s01"
target_portal = "right"
matched_sign_texture = null
@ -79,7 +81,13 @@ target_scene = "c02_s03"
target_portal = "left"
matched_sign_texture = null
[node name="WindBlows" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="2"]
[node name="InteractableLeftPortal" parent="Ground/DeployLayer" index="2" instance=ExtResource("13_ck13g")]
position = Vector2(28, -24)
unrevealed_sign_texture = ExtResource("5_m1xet")
matched_sign_texture = ExtResource("5_m1xet")
one_shot = false
[node name="WindBlows" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="3"]
unique_name_in_owner = true
position = Vector2(394, 23)
sprite_frames = ExtResource("4_wbif8")
@ -87,11 +95,11 @@ animation = &"c02_吕萍_风吹过"
frame = 10
frame_progress = 1.0
[node name="Ambush太暗了" parent="Ground/DeployLayer" index="3" instance=ExtResource("8_52as8")]
[node name="Ambush太暗了" parent="Ground/DeployLayer" index="4" instance=ExtResource("8_52as8")]
position = Vector2(177, 42)
hook_os_key = "c02_太暗了"
[node name="海报1" parent="Ground/DeployLayer" index="4" instance=ExtResource("12_0fckv")]
[node name="海报1" parent="Ground/DeployLayer" index="5" instance=ExtResource("12_0fckv")]
position = Vector2(211, -33)
texture = ExtResource("6_gjwum")
sign_mark_offset = Vector2(-1.58, 8.6)
@ -99,18 +107,18 @@ content_centered = true
texture_cover = ExtResource("7_jg8g0")
content_key = "c02_海报1"
[node name="Closeup刮海报" parent="Ground/DeployLayer" index="5" instance=ExtResource("19_6wwyd")]
[node name="Closeup刮海报" parent="Ground/DeployLayer" index="6" instance=ExtResource("19_6wwyd")]
position = Vector2(252, -27)
texture = ExtResource("10_jg8g0")
first_interact_os_key = "c02_海报_剪辫子侦探"
packed_scene = ExtResource("11_jg8g0")
[node name="鼠疫海报" parent="Ground/DeployLayer" index="6" instance=ExtResource("12_0fckv")]
[node name="鼠疫海报" parent="Ground/DeployLayer" index="7" instance=ExtResource("12_0fckv")]
position = Vector2(439, -29)
texture_cover = ExtResource("7_wdwbi")
content_key = "c02_鼠疫海报"
[node name="Ambush纸人" parent="Ground/DeployLayer" index="7" instance=ExtResource("8_52as8")]
[node name="Ambush纸人" parent="Ground/DeployLayer" index="8" instance=ExtResource("8_52as8")]
visible = false
position = Vector2(113, 44)
texture = ExtResource("7_xsghn")
@ -120,7 +128,6 @@ enabled = false
trigger_mode = "interact"
one_shot = false
freeze_time = 0.0
hook_method = "paper_man_interacted"
[node name="wall" type="StaticBody2D" parent="Ground/DeployLayer/Ambush纸人"]
position = Vector2(3, 4)
@ -137,13 +144,13 @@ stream = ExtResource("11_u68d7")
bus = &"game_sfx"
script = ExtResource("14_jg8g0")
[node name="Ambush杂物堆" parent="Ground/DeployLayer" index="8" instance=ExtResource("8_52as8")]
[node name="Ambush杂物堆" parent="Ground/DeployLayer" index="9" instance=ExtResource("8_52as8")]
position = Vector2(387, 66)
trigger_mode = "interact"
freeze_time = 1.0
hook_method = "lumber_interacted"
[node name="杂物眨眼睛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="9"]
[node name="杂物眨眼睛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="10"]
visible = false
light_mask = 5
position = Vector2(269, 38)
@ -156,34 +163,34 @@ energy = 3.0
range_item_cull_mask = 4
texture = ExtResource("17_m1xet")
[node name="Note老鼠洞" parent="Ground/DeployLayer" index="10" instance=ExtResource("3_fy0o1")]
[node name="Note老鼠洞" parent="Ground/DeployLayer" index="11" instance=ExtResource("3_fy0o1")]
position = Vector2(507, 64)
title_filter = "c02"
note_key = "c02_老鼠洞"
[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="11"]
[node name="老鼠拖鞋" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"]
visible = false
position = Vector2(498, 0)
sprite_frames = ExtResource("19_q0axc")
animation = &"老鼠托小鞋子"
[node name="Interactable小鞋子" parent="Ground/DeployLayer" index="12" instance=ExtResource("13_ck13g")]
[node name="Interactable小鞋子" parent="Ground/DeployLayer" index="13" instance=ExtResource("13_ck13g")]
position = Vector2(498, 65)
enabled = false
mute_when_interacted = true
[node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="13" instance=ExtResource("8_52as8")]
[node name="Ambush推小鞋子" parent="Ground/DeployLayer" index="14" instance=ExtResource("8_52as8")]
position = Vector2(525, 61)
one_shot = false
freeze_time = 1.0
hook_method = "check_if_show_shoes"
[node name="煤油灯" parent="Ground/DeployLayer" index="14" instance=ExtResource("17_mpkj1")]
[node name="煤油灯" parent="Ground/DeployLayer" index="15" instance=ExtResource("17_mpkj1")]
position = Vector2(122, -15)
gaslight_energy = 2.0
gaslight_ground_energy = 0.0
[node name="Closeup八音盒" parent="Ground/DeployLayer" index="15" instance=ExtResource("19_6wwyd")]
[node name="Closeup八音盒" parent="Ground/DeployLayer" index="16" instance=ExtResource("19_6wwyd")]
position = Vector2(533, 65)
packed_scene = ExtResource("10_ifae7")

View File

@ -85,6 +85,8 @@ func _on_ground_ready() -> void:
if ArchiveManager.get_global_value("c02_madman_interacted", false) and not data.camera_played:
SceneManager.freeze_player(0)
# 等待转场
await get_tree().create_timer(1.0).timeout
small_shoe.enabled = true
var y2 = small_shoe.position.y
var y1 = y2 - 150

View File

@ -379,7 +379,7 @@ position = Vector2(523, 78)
note_key = "notes_干掉的血迹"
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Ground/DeployLayer/Note血迹"]
self_modulate = Color(0.47788, 0.47788, 0.47788, 1)
self_modulate = Color(0.255659, 0.255659, 0.255659, 1)
show_behind_parent = true
position = Vector2(132, 10)
sprite_frames = ExtResource("4_gd6xp")

View File

@ -1,11 +1,10 @@
[gd_scene load_steps=24 format=3 uid="uid://cp8d3ag5nbjq0"]
[gd_scene load_steps=23 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_animation.gd" id="2_70lf6"]
[ext_resource type="Texture2D" uid="uid://dbtepltemtmy2" path="res://asset/art/scene/c02/s05_一楼内侧楼道/bg_楼道背景.png" id="3_rcuxq"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_tueh3"]
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/frames.tres" id="7_mrltr"]
[ext_resource type="SpriteFrames" uid="uid://j5lpwxe8woew" path="res://asset/art/scene/c02/s02_大门过道/火苗.gif" id="7_rcuxq"]
[ext_resource type="Texture2D" uid="uid://bn47plsx5coug" path="res://asset/art/scene/c02/s05_一楼内侧楼道/煤油灯光效.png" id="8_mrltr"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="8_rcuxq"]
[ext_resource type="Texture2D" uid="uid://by506ky6fprab" path="res://asset/art/scene/c02/s07_二楼内侧楼道/fg_前景.png" id="8_tueh3"]
@ -123,9 +122,9 @@ hook_method = "wood_puppet"
light_mask = 5
position = Vector2(239, 52)
scale = Vector2(0.4, 0.4)
sprite_frames = ExtResource("7_rcuxq")
animation = &"gif"
autoplay = "gif"
sprite_frames = ExtResource("7_mrltr")
animation = &"火苗"
autoplay = "火苗"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/火苗"]
position = Vector2(0, 5)

View File

@ -3,7 +3,6 @@
[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_animation.gd" id="2_4dg6u"]
[ext_resource type="Texture2D" uid="uid://6ol2om68cd1q" path="res://asset/art/scene/c02/s06_二楼楼道/bg_背景.png" id="3_och2w"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/general/sfx.gd" id="4_7x2h6"]
[ext_resource type="AudioStream" uid="uid://ce3p55nnts4v5" path="res://asset/audio/effect/action/cloth2.ogg" id="4_58e26"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_haidv"]
[ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="5_3p5ta"]
@ -17,6 +16,7 @@
[ext_resource type="PackedScene" uid="uid://b50n0hvs4yh75" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.tscn" id="10_p6da7"]
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="11_owxx3"]
[ext_resource type="PackedScene" uid="uid://cjx7o685ox8c1" path="res://scene/little_game/弹珠游戏/弹珠游戏.tscn" id="12_intre"]
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/general/sfx2d.gd" id="14_7x2h6"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="14_k01ve"]
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/frames.tres" id="14_och2w"]
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/frames.tres" id="15_k01ve"]
@ -135,7 +135,7 @@ tracks/8/keys = {
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("AnimationPlayer/疯子撞墙Sfx:playing")
tracks/9/path = NodePath("DeployLayer/疯子撞墙/疯子撞墙Sfx2D:playing")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
@ -277,7 +277,7 @@ tracks/2/keys = {
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("AnimationPlayer/疯子撞墙Sfx:playing")
tracks/3/path = NodePath("DeployLayer/疯子撞墙/疯子撞墙Sfx2D:playing")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
@ -323,11 +323,6 @@ data = {
}
oneshot_animation = ""
[node name="疯子撞墙Sfx" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
stream = ExtResource("4_58e26")
bus = &"game_sfx"
script = ExtResource("4_7x2h6")
[node name="BGSprite2D" parent="Ground" index="1"]
light_mask = 5
position = Vector2(0, -2)
@ -397,6 +392,16 @@ action_configs = Array[Dictionary]([{
&"animation_next": "疯子撞墙"
}])
[node name="疯子撞墙Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/疯子撞墙"]
position = Vector2(5, 28)
stream = ExtResource("4_58e26")
max_distance = 600.0
attenuation = 3.0
bus = &"game_sfx"
script = ExtResource("14_7x2h6")
file = ""
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="Ambush三男孩" parent="Ground/DeployLayer" index="9" instance=ExtResource("14_k01ve")]
visible = false
position = Vector2(167, 38)
@ -466,6 +471,6 @@ visible = false
energy = 0.9
blend_mode = 1
[connection signal="finished" from="Ground/AnimationPlayer/疯子撞墙Sfx" to="Ground/AnimationPlayer/疯子撞墙Sfx" method="play"]
[connection signal="finished" from="Ground/DeployLayer/疯子撞墙/疯子撞墙Sfx2D" to="Ground/DeployLayer/疯子撞墙/疯子撞墙Sfx2D" method="play"]
[editable path="Ground"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=26 format=3 uid="uid://ce2vyyg2reg52"]
[gd_scene load_steps=25 format=3 uid="uid://ce2vyyg2reg52"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_judx3"]
[ext_resource type="Script" uid="uid://hbbgymjs5xte" path="res://scene/ground/scene/c02/s08_animation.gd" id="2_m4uw8"]
@ -14,7 +14,6 @@
[ext_resource type="Texture2D" uid="uid://b7gyapghy3tsy" path="res://asset/art/neutral_point_light.png" id="11_kwj7c"]
[ext_resource type="Texture2D" uid="uid://bgtxwxerl2dxh" path="res://asset/art/scene/c02/s08_瞎子卧室/十字架.png" id="11_t3h08"]
[ext_resource type="Texture2D" uid="uid://bmid3iu2ch35o" path="res://asset/art/scene/c02/s08_瞎子卧室/八卦图.png" id="12_1ws4i"]
[ext_resource type="SpriteFrames" uid="uid://j5lpwxe8woew" path="res://asset/art/scene/c02/s02_大门过道/火苗.gif" id="12_t3h08"]
[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="13_t3h08"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="14_1ws4i"]
@ -170,9 +169,9 @@ texture = ExtResource("10_vjjde")
[node name="火苗" type="AnimatedSprite2D" parent="Ground/DeployLayer/瞎子小蝉对话/煤油灯"]
position = Vector2(0, 2)
scale = Vector2(0.3, 0.3)
sprite_frames = ExtResource("12_t3h08")
animation = &"gif"
autoplay = "gif"
sprite_frames = ExtResource("7_j6ltr")
animation = &"火苗"
autoplay = "火苗"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/瞎子小蝉对话/煤油灯"]
color = Color(0.992487, 0.849353, 0.647837, 1)

View File

@ -29,8 +29,12 @@ func _on_ground_ready() -> void:
var half_length = rope_length / 2.0
rope_range.x = rope.global_position.x - half_length
rope_range.y = rope.global_position.x + half_length
var player= %MainPlayer
# 玩家位置更新时,更新麻绳隆起
%MainPlayer.position_updated.connect(_on_player_position_updated)
player.position_updated.connect(_on_player_position_updated)
# 首次更新
_on_player_position_updated(player.global_position)
var rope: MeshInstance2D
@ -43,6 +47,8 @@ func _on_player_position_updated(global_pos: Vector2) -> void:
if x < rope_range.x or x > rope_range.y:
return
var ratio = (x - rope_range.x) / rope_length
# 限制 bulge 最大范围
ratio = clampf(ratio, 0.0, 0.8)
rope.set_bulge(ratio)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=34 format=4 uid="uid://ryups1dnwdto"]
[gd_scene load_steps=35 format=4 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_animation.gd" id="2_34a6f"]
@ -16,11 +16,12 @@
[ext_resource type="Texture2D" uid="uid://dyactkkba6umx" path="res://asset/art/scene/c02/s09_裂缝/红色背景剪影人物床.png" id="10_rbu7p"]
[ext_resource type="Texture2D" uid="uid://bet21rw73moau" path="res://asset/art/scene/c02/s09_裂缝/锅.png" id="15_4ua5q"]
[ext_resource type="Texture2D" uid="uid://bp84w8keuelyj" path="res://asset/art/scene/c02/s10_空房间/e_蜡烛-sheet.png" id="15_f0w8c"]
[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="16_k15h1"]
[ext_resource type="SpriteFrames" uid="uid://cwes55ajc3rd4" path="res://asset/art/gif/c02_空房间/frames.tres" id="17_enajl"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_rbu7p"]
shader = ExtResource("5_0fmdd")
shader_parameter/bulge_position = 1.0
shader_parameter/bulge_position = 0.8
shader_parameter/bulge_height = 0.2
shader_parameter/bulge_width = 0.1
shader_parameter/debug_mode = false
@ -108,8 +109,8 @@ animations = [{
[sub_resource type="Gradient" id="Gradient_f0w8c"]
interpolation_mode = 2
offsets = PackedFloat32Array(0, 0.249216, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1)
offsets = PackedFloat32Array(0, 0.142857, 0.249216, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_26xv7"]
gradient = SubResource("Gradient_f0w8c")
@ -117,17 +118,17 @@ width = 2000
height = 200
fill_to = Vector2(1, 0.143603)
[sub_resource type="Gradient" id="Gradient_rbu7p"]
[sub_resource type="Gradient" id="Gradient_4ua5q"]
interpolation_mode = 2
offsets = PackedFloat32Array(0, 0.0783699, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1)
offsets = PackedFloat32Array(0, 0.0840336, 0.27451, 0.826331, 0.901961, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 0.713726, 1, 1, 1, 1.1262, 1, 1, 1, 0.701961, 1, 1, 1, 0, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_f0w8c"]
gradient = SubResource("Gradient_rbu7p")
width = 5000
gradient = SubResource("Gradient_4ua5q")
width = 2500
height = 200
fill_from = Vector2(0.5, 0)
fill_to = Vector2(0.5, 1)
fill_from = Vector2(0, 0.902062)
fill_to = Vector2(1, 1)
[node name="S09" type="Node2D"]
@ -141,6 +142,7 @@ script = ExtResource("2_34a6f")
oneshot_animation = ""
[node name="BGSprite2D" parent="Ground" index="1"]
light_mask = 33
texture = ExtResource("3_6xql4")
[node name="衔接阴影" type="Sprite2D" parent="Ground/BGSprite2D" index="0"]
@ -150,7 +152,6 @@ texture = ExtResource("5_5ow41")
[node name="麻绳" type="MeshInstance2D" parent="Ground/BGSprite2D" index="1"]
unique_name_in_owner = true
visible = false
z_index = 6
material = SubResource("ShaderMaterial_rbu7p")
position = Vector2(1316, 25)
@ -159,6 +160,7 @@ texture = ExtResource("4_34a6f")
script = ExtResource("7_rbu7p")
[node name="麻绳StaticBody2D" type="StaticBody2D" parent="Ground/BGSprite2D/麻绳"]
visible = false
collision_layer = 16
collision_mask = 16
@ -300,6 +302,13 @@ position = Vector2(3664, -25)
sprite_frames = SubResource("SpriteFrames_qjenp")
autoplay = "default"
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/小蜡烛"]
position = Vector2(0, -12.8172)
color = Color(0.999971, 0.912551, 0.842208, 1)
energy = 1.2
texture = ExtResource("16_k15h1")
texture_scale = 0.3
[node name="血脚印" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="13"]
position = Vector2(3651, -65)
sprite_frames = ExtResource("17_enajl")
@ -307,19 +316,18 @@ animation = &"空房间血脚印"
frame = 8
[node name="PointLight2D" type="PointLight2D" parent="Ground/AmbientLayer" index="0"]
visible = false
position = Vector2(3067, -61)
energy = 0.7
blend_mode = 1
texture = SubResource("GradientTexture2D_26xv7")
[node name="PointLight2D2" type="PointLight2D" parent="Ground/AmbientLayer" index="1"]
position = Vector2(2386, 124)
energy = 0.7
blend_mode = 1
position = Vector2(1325, -65)
range_item_cull_mask = 32
texture = SubResource("GradientTexture2D_f0w8c")
[node name="MainPlayer" parent="Ground" index="4"]
visible = false
position = Vector2(1834, 88)
lock_move_right = true
character = "吕萍爬行"
@ -341,7 +349,8 @@ position = Vector2(3421, 25)
points = PackedVector2Array(80, 150, 3850, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.0
visible = false
energy = 0.7
blend_mode = 1
[node name="UIPointLight2D" parent="Ground" index="10"]

View File

@ -68,6 +68,12 @@ func _ready() -> void:
else:
_switch_gaslight(false)
interacted.connect(_gaslight_interacted)
interact_mismatch_failed.connect(_on_mismatch)
func _on_mismatch():
SceneManager.pop_center_notification(tr("ui_switch_prop"))
# 永久打开煤油灯
func turn_on(gradually := true):

View File

@ -8,8 +8,8 @@
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_w1aco"]
[ext_resource type="Texture2D" uid="uid://xcmvfp72l061" path="res://asset/art/ui/action_mark/UI锁.png" id="5_l338h"]
[ext_resource type="Texture2D" uid="uid://gui0ubwlwoi0" path="res://asset/art/ui/action_mark/UI手.png" id="6_ivr1s"]
[ext_resource type="SpriteFrames" uid="uid://j5lpwxe8woew" path="res://asset/art/scene/c02/s02_大门过道/火苗.gif" id="8_66xfe"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/general/sfx.gd" id="8_abb1f"]
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/frames.tres" id="9_h0ajm"]
[ext_resource type="Texture2D" uid="uid://djfn6ya63emu0" path="res://asset/art/scene/c02/s02_大门过道/e_煤油灯座.png" id="10_h0ajm"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_h0ajm"]
@ -58,9 +58,9 @@ texture = ExtResource("3_y2gsk")
[node name="灯光" type="AnimatedSprite2D" parent="."]
position = Vector2(0, -14)
scale = Vector2(0.4, 0.4)
sprite_frames = ExtResource("8_66xfe")
animation = &"gif"
autoplay = "gif"
sprite_frames = ExtResource("9_h0ajm")
animation = &"火苗"
autoplay = "火苗"
[node name="灯座" type="Sprite2D" parent="."]
position = Vector2(-4.5, 16)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -15,6 +15,8 @@ var animation_finished = false
func _ready():
if GlobalConfig.DEBUG:
print("Index Page Ready")
# 推到 index 时禁用 paused
get_tree().paused = false
newgame_btn.pressed.connect(_on_newgame_pressed)
resume_btn.pressed.connect(_on_resume_pressed)
quit_btn.pressed.connect(_on_quit_pressed)

View File

@ -42,6 +42,7 @@ content_margin_top = 4.0
content_margin_bottom = 4.0
[node name="IndexPage" type="Control"]
process_mode = 3
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0

View File

@ -49,6 +49,8 @@ func _ready() -> void:
# shuffle at the end
_shuffle_books()
func _enter_tree() -> void:
SceneManager.pop_center_notification(tr("ui_press_q_to_exit"))
func _init_answer_and_connect_signals() -> void:
current_answer.clear()

View File

@ -55,6 +55,7 @@ func intro_finished():
var ball = pivot.get_child(0) as RigidBody2D
ball.angular_velocity = 20
animation_player.play("give_ball")
sfx_dispatch.play()
await animation_player.animation_finished
# 开始弹珠游戏
checkout_round(0)
@ -264,10 +265,11 @@ func _unhandled_input(event: InputEvent) -> void:
else:
shoot()
get_viewport().set_input_as_handled()
elif event.is_action_pressed("space"):
if round_id >= 0:
shoot()
get_viewport().set_input_as_handled()
# 为保持 UI 一致性,弹珠游戏不使用 space 键
# elif event.is_action_pressed("space"):
# if round_id >= 0:
# shoot()
# get_viewport().set_input_as_handled()
signal dialogue_ended

View File

@ -29,8 +29,11 @@ func _ready() -> void:
_display_selected()
content_rect.modulate.a = 0.0
content_rect.visible = true
SceneManager.pop_center_notification(tr("input_拼凑信件"))
func _enter_tree() -> void:
SceneManager.pop_center_notification(tr("input_拼凑信件"))
await get_tree().create_timer(4.0).timeout
SceneManager.pop_center_notification(tr("ui_press_q_to_exit"))
func _setup() -> void:
# 保存 whole 中的 4 个 part 的位置,然后从 whole 中移除,添加到 container 中
@ -136,7 +139,7 @@ func _post_success():
# tween.tween_property(content_rect, "modulate:a", 1.0, 1.0)
var texture = preload("res://asset/art/prop/c01/院长的信.png")
var inspector = SceneManager.get_inspector()
inspector.pop_standard_inspection(texture, null, tr("prop_院长的信_说明"))
inspector.pop_standard_inspection(texture, null, tr("prop_院长的信_说明"), false, true)
SceneManager.enable_important_item("prop_院长的信")
whole.visible = false
# 1s 后退出

View File

@ -76,7 +76,7 @@ func _blink_label(init := true):
# 如果没有 notes_texture自动使用黑色遮罩
func pop_standard_inspection(cover_texture, notes_texture, inspection_note, centered := false):
func pop_standard_inspection(cover_texture, notes_texture, inspection_note, centered := false, wide := false):
if centered:
content_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
else:
@ -88,7 +88,13 @@ func pop_standard_inspection(cover_texture, notes_texture, inspection_note, cent
full_texture.texture = cover_texture
texture_cover = cover_texture
texture_notes = notes_texture
content_label.text = inspection_note
if wide:
content_label.custom_minimum_size.x = 250
else:
content_label.custom_minimum_size.x = 150
# # shrink back
# content_label.size.x = 150
content_label.text = inspection_note.replace("<br>", "\n").strip_edges()
SceneManager.freeze_player(0)
var tween = create_tween()
tween.tween_property(full_texture, "modulate:a", 1.0, 0.15)
@ -126,20 +132,22 @@ func pop_prop_inspection(prop_key: String, cover_texture: Texture2D, use_default
text += "[#item]\n"
# 道具的一句话说明
var words_key = prop_key + "_说明"
var words = tr(words_key)
var words = tr(words_key).replace("<br>", "\n").strip_edges()
if words_key != words:
text += words + "\n"
elif GlobalConfig.DEBUG:
text += "[debug] 待补充描述\n"
text += "=> END"
var prop_res = DialogueManager.create_resource_from_text(text)
var balloon = preload("res://scene/dialog/balloon.tscn").instantiate()
# 手动跳过的同时显示下一句
balloon.manually_skipped_line.connect(_show_prop_words)
# # 手动跳过的同时显示下一句
DialogueManager.show_dialogue_balloon_scene(balloon, prop_res, "title")
DialogueManager.dialogue_ended.connect(_on_inspecting_prop_words_ended)
SceneManager.freeze_player(0)
func _on_inspecting_prop_words_ended(_res = null):
_hide()
func _show_prop_words(line_id: String):
# 如果手动退出 ballon同时退出 prop inspector
if line_id == "3":
@ -172,7 +180,7 @@ func _unhandled_input(event: InputEvent) -> void:
tip_label.text = tip_cover
create_tween().tween_property(content_label, "modulate:a", 0.0, 0.2)
elif status == STATUS_INSPECTING_PROP:
# STATUS_INSPECTING_PROP 直接退出
# 因为 input 优先被 ballon 获得,然后被 inspector 获得
# 所以此时必然没有 ballon 存在
# # STATUS_INSPECTING_PROP 直接退出
# # 因为 input 优先被 ballon 获得,然后被 inspector 获得
# # 所以此时必然没有 ballon 存在
_hide()