diff --git a/README.md b/README.md
index 81afef80..abe64ed5 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,17 @@ ProAnimatedSprite2D,增强 AnimatedSprite2D 的表现,在其基础上增加
- 正常游戏:Main -> GroundLoader -> Ground
- 开发阶段:直接编辑 Ground
+### 整体说明
+
+GroundLoader 加载/切换 Ground 时,分为上下两段转场:
+- 上半段(旧场景变黑):先暂停旧 ground,即在转场黑屏过程中旧的 ground 会 paused
+- 下半段(新场景出现):先暂停,在完全出现后再运行
+【特殊注意⚠️】
+- AnimationPlayer 的 process_mode 并非 inderited,而是 pausable。这意味着 AnimationPlayer 的 _on_ground_ready 在转场时仍旧可以直接运行。
+- 同样的还有 Sfx/Sfx2D,它们仍旧可以播放音频直到上半段转场结束
+- 一些 npc、player 大运行脚本会被中断。如果想让它们仍旧运行,需设置为 pausable。
+
+
### Ground 说明
#### AnimationPlayer:每个 Ground 都有一个 AnimationPlayer,脚本继承自定义的 AnimationRoot
diff --git a/asset/art/gif/c02_杂项/c02_杂项_frames.tres b/asset/art/gif/c02_杂项/c02_杂项_frames.tres
index 7ded3316..13c82b98 100644
--- a/asset/art/gif/c02_杂项/c02_杂项_frames.tres
+++ b/asset/art/gif/c02_杂项/c02_杂项_frames.tres
@@ -1,4 +1,4 @@
-[gd_resource type="SpriteFrames" load_steps=112 format=3 uid="uid://3nas025c2c5u"]
+[gd_resource type="SpriteFrames" load_steps=119 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"]
@@ -97,10 +97,17 @@
[ext_resource type="Texture2D" uid="uid://bvw60yttop86o" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/53.png" id="70_uepmd"]
[ext_resource type="Texture2D" uid="uid://b84ubyyn183xu" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/54.png" id="71_5y0bi"]
[ext_resource type="Texture2D" uid="uid://dmbrwa48pj377" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/55.png" id="72_2d8k0"]
+[ext_resource type="Texture2D" uid="uid://bodns08vrqosg" path="res://asset/art/gif/c02_杂项/小蝉背对转头/0.png" id="73_6h0n3"]
+[ext_resource type="Texture2D" uid="uid://8rlyfr3fsy2h" path="res://asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png" id="73_aceu7"]
[ext_resource type="Texture2D" uid="uid://cccvhj6lo0hen" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/56.png" id="73_u1khd"]
+[ext_resource type="Texture2D" uid="uid://w27e751y7rj1" path="res://asset/art/gif/c02_杂项/小蝉背对转头/1.png" id="74_1ru8v"]
+[ext_resource type="Texture2D" uid="uid://b8i1d3455t41a" path="res://asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png" id="74_3er7a"]
[ext_resource type="Texture2D" uid="uid://dyp0q0a6lcswk" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/57.png" id="74_csbcu"]
+[ext_resource type="Texture2D" uid="uid://cavhwdgmc3cpb" path="res://asset/art/gif/c02_杂项/小蝉背对转头/2.png" id="75_aceu7"]
[ext_resource type="Texture2D" uid="uid://dsom0pwipi4gm" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/58.png" id="75_kdvnj"]
+[ext_resource type="Texture2D" uid="uid://cacqeynmqya6m" path="res://asset/art/gif/c02_杂项/小蝉背对转头/3.png" id="76_3er7a"]
[ext_resource type="Texture2D" uid="uid://bdhj86py8gca7" path="res://asset/art/gif/c02_杂项/小婵晃脚掉鞋/59.png" id="76_0647m"]
+[ext_resource type="Texture2D" uid="uid://dtt5y6ujnrb1r" path="res://asset/art/gif/c02_杂项/小蝉背对转头/4.png" id="77_10bib"]
[ext_resource type="Texture2D" uid="uid://bkfxnc8jc6ad" path="res://asset/art/gif/c02_杂项/火苗/0.png" id="87_tgdu0"]
[ext_resource type="Texture2D" uid="uid://dw1abmepuchpf" path="res://asset/art/gif/c02_杂项/火苗/1.png" id="88_i5ln4"]
[ext_resource type="Texture2D" uid="uid://ixgcovre8mwg" path="res://asset/art/gif/c02_杂项/火苗/2.png" id="89_eshku"]
@@ -346,6 +353,49 @@ animations = [{
"speed": 30.0
}, {
"frames": [{
+"duration": 1.0,
+"texture": ExtResource("73_aceu7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("74_3er7a")
+}],
+"loop": true,
+"name": &"小蝉背对呼吸帧",
+"speed": 1.7
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("73_6h0n3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("74_1ru8v")
+}, {
+"duration": 1.0,
+"texture": ExtResource("75_aceu7")
+}, {
+"duration": 1.0,
+"texture": ExtResource("76_3er7a")
+}, {
+"duration": 1.0,
+"texture": ExtResource("77_10bib")
+}, {
+"duration": 1.0,
+"texture": ExtResource("76_3er7a")
+}, {
+"duration": 1.0,
+"texture": ExtResource("77_10bib")
+}, {
+"duration": 1.0,
+"texture": ExtResource("76_3er7a")
+}, {
+"duration": 1.0,
+"texture": ExtResource("77_10bib")
+}],
+"loop": false,
+"name": &"小蝉背对转头",
+"speed": 2.0
+}, {
+"frames": [{
"duration": 6.0,
"texture": ExtResource("2_wu63b")
}, {
diff --git a/asset/art/gif/c02_杂项/小蝉背对呼吸帧.gif b/asset/art/gif/c02_杂项/小蝉背对呼吸帧.gif
new file mode 100644
index 00000000..82ded3d8
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对呼吸帧.gif differ
diff --git a/asset/art/gif/c02_杂项/小蝉背对呼吸帧.gif.import b/asset/art/gif/c02_杂项/小蝉背对呼吸帧.gif.import
new file mode 100644
index 00000000..f1ab8baa
--- /dev/null
+++ b/asset/art/gif/c02_杂项/小蝉背对呼吸帧.gif.import
@@ -0,0 +1,14 @@
+[remap]
+
+importer="gif.animated.texture.plugin"
+type="SpriteFrames"
+uid="uid://d2htj1xiwm8ba"
+path="res://.godot/imported/小蝉背对呼吸帧.gif-c49f1c826a8b2834adde29d8c1b21dfe.tres"
+
+[deps]
+
+source_file="res://asset/art/gif/c02_杂项/小蝉背对呼吸帧.gif"
+dest_files=["res://.godot/imported/小蝉背对呼吸帧.gif-c49f1c826a8b2834adde29d8c1b21dfe.tres"]
+
+[params]
+
diff --git a/asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png
new file mode 100644
index 00000000..229643fc
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png differ
diff --git a/asset/art/prop/c01/信件碎片.png.import b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png.import
similarity index 67%
rename from asset/art/prop/c01/信件碎片.png.import
rename to asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png.import
index f53abda5..a7e3f0ff 100644
--- a/asset/art/prop/c01/信件碎片.png.import
+++ b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://oh4e48nxm4j6"
-path="res://.godot/imported/信件碎片.png-148d8c76f1c905d18bd18b04343030cd.ctex"
+uid="uid://8rlyfr3fsy2h"
+path="res://.godot/imported/0.png-4489936c75353f783f2a5f2b08612d0c.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://asset/art/prop/c01/信件碎片.png"
-dest_files=["res://.godot/imported/信件碎片.png-148d8c76f1c905d18bd18b04343030cd.ctex"]
+source_file="res://asset/art/gif/c02_杂项/小蝉背对呼吸帧/0.png"
+dest_files=["res://.godot/imported/0.png-4489936c75353f783f2a5f2b08612d0c.ctex"]
[params]
diff --git a/asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png
new file mode 100644
index 00000000..1e476699
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png differ
diff --git a/asset/art/little_game/拼凑信件/完整信件.png.import b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png.import
similarity index 66%
rename from asset/art/little_game/拼凑信件/完整信件.png.import
rename to asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png.import
index bf55a1b3..0656b803 100644
--- a/asset/art/little_game/拼凑信件/完整信件.png.import
+++ b/asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://glrm37tra7v5"
-path="res://.godot/imported/完整信件.png-cfd076a390551cbdbbaeee723f1d98cc.ctex"
+uid="uid://b8i1d3455t41a"
+path="res://.godot/imported/1.png-c7dd20e965fd4eabf11a16350cd0785c.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://asset/art/little_game/拼凑信件/完整信件.png"
-dest_files=["res://.godot/imported/完整信件.png-cfd076a390551cbdbbaeee723f1d98cc.ctex"]
+source_file="res://asset/art/gif/c02_杂项/小蝉背对呼吸帧/1.png"
+dest_files=["res://.godot/imported/1.png-c7dd20e965fd4eabf11a16350cd0785c.ctex"]
[params]
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头.gif b/asset/art/gif/c02_杂项/小蝉背对转头.gif
new file mode 100644
index 00000000..a8167754
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对转头.gif differ
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头.gif.import b/asset/art/gif/c02_杂项/小蝉背对转头.gif.import
new file mode 100644
index 00000000..fe6618e5
--- /dev/null
+++ b/asset/art/gif/c02_杂项/小蝉背对转头.gif.import
@@ -0,0 +1,14 @@
+[remap]
+
+importer="gif.animated.texture.plugin"
+type="SpriteFrames"
+uid="uid://bi2uhn00cm7tq"
+path="res://.godot/imported/小蝉背对转头.gif-a231e948713f4b3f108ebad70cb8c2a1.tres"
+
+[deps]
+
+source_file="res://asset/art/gif/c02_杂项/小蝉背对转头.gif"
+dest_files=["res://.godot/imported/小蝉背对转头.gif-a231e948713f4b3f108ebad70cb8c2a1.tres"]
+
+[params]
+
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/0.png b/asset/art/gif/c02_杂项/小蝉背对转头/0.png
new file mode 100644
index 00000000..7cddd6da
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对转头/0.png differ
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/0.png.import b/asset/art/gif/c02_杂项/小蝉背对转头/0.png.import
new file mode 100644
index 00000000..e0daddb2
--- /dev/null
+++ b/asset/art/gif/c02_杂项/小蝉背对转头/0.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bodns08vrqosg"
+path="res://.godot/imported/0.png-0117fddf32292cc5931093e4a92929ad.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://asset/art/gif/c02_杂项/小蝉背对转头/0.png"
+dest_files=["res://.godot/imported/0.png-0117fddf32292cc5931093e4a92929ad.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
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/1.png b/asset/art/gif/c02_杂项/小蝉背对转头/1.png
new file mode 100644
index 00000000..645facef
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对转头/1.png differ
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/1.png.import b/asset/art/gif/c02_杂项/小蝉背对转头/1.png.import
new file mode 100644
index 00000000..9341c78a
--- /dev/null
+++ b/asset/art/gif/c02_杂项/小蝉背对转头/1.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://w27e751y7rj1"
+path="res://.godot/imported/1.png-98ab9505ace31c28a77e30c1e7464cf5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://asset/art/gif/c02_杂项/小蝉背对转头/1.png"
+dest_files=["res://.godot/imported/1.png-98ab9505ace31c28a77e30c1e7464cf5.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
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/2.png b/asset/art/gif/c02_杂项/小蝉背对转头/2.png
new file mode 100644
index 00000000..0c2d83d8
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对转头/2.png differ
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/2.png.import b/asset/art/gif/c02_杂项/小蝉背对转头/2.png.import
new file mode 100644
index 00000000..337efad4
--- /dev/null
+++ b/asset/art/gif/c02_杂项/小蝉背对转头/2.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cavhwdgmc3cpb"
+path="res://.godot/imported/2.png-89111e83037db31c51545d8ac4898e77.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://asset/art/gif/c02_杂项/小蝉背对转头/2.png"
+dest_files=["res://.godot/imported/2.png-89111e83037db31c51545d8ac4898e77.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
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/3.png b/asset/art/gif/c02_杂项/小蝉背对转头/3.png
new file mode 100644
index 00000000..c3ad1edc
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对转头/3.png differ
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/3.png.import b/asset/art/gif/c02_杂项/小蝉背对转头/3.png.import
new file mode 100644
index 00000000..bdb27981
--- /dev/null
+++ b/asset/art/gif/c02_杂项/小蝉背对转头/3.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cacqeynmqya6m"
+path="res://.godot/imported/3.png-dd8f6a4cc7b0e3a091c3a2693475c733.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://asset/art/gif/c02_杂项/小蝉背对转头/3.png"
+dest_files=["res://.godot/imported/3.png-dd8f6a4cc7b0e3a091c3a2693475c733.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
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/4.png b/asset/art/gif/c02_杂项/小蝉背对转头/4.png
new file mode 100644
index 00000000..0c2d83d8
Binary files /dev/null and b/asset/art/gif/c02_杂项/小蝉背对转头/4.png differ
diff --git a/asset/art/gif/c02_杂项/小蝉背对转头/4.png.import b/asset/art/gif/c02_杂项/小蝉背对转头/4.png.import
new file mode 100644
index 00000000..2aaf178a
--- /dev/null
+++ b/asset/art/gif/c02_杂项/小蝉背对转头/4.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dtt5y6ujnrb1r"
+path="res://.godot/imported/4.png-a111198b428d3667a44b48b41d711ec5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://asset/art/gif/c02_杂项/小蝉背对转头/4.png"
+dest_files=["res://.godot/imported/4.png-a111198b428d3667a44b48b41d711ec5.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
diff --git a/asset/art/little_game/拼凑信件/信件碎片.png b/asset/art/little_game/拼凑信件/信件碎片.png
old mode 100755
new mode 100644
index 4e75f923..ec00bf81
Binary files a/asset/art/little_game/拼凑信件/信件碎片.png and b/asset/art/little_game/拼凑信件/信件碎片.png differ
diff --git a/asset/art/little_game/拼凑信件/信件碎片.png.import b/asset/art/little_game/拼凑信件/信件碎片.png.import
index 0810c74a..04eafd6f 100644
--- a/asset/art/little_game/拼凑信件/信件碎片.png.import
+++ b/asset/art/little_game/拼凑信件/信件碎片.png.import
@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://duxdnw1uhlpm5"
+uid="uid://oh4e48nxm4j6"
path="res://.godot/imported/信件碎片.png-c35bdb7240fb280003e7b3bca88b316c.ctex"
metadata={
"vram_texture": false
diff --git a/asset/art/little_game/拼凑信件/完整信件.png b/asset/art/little_game/拼凑信件/完整信件.png
deleted file mode 100755
index 8374c772..00000000
Binary files a/asset/art/little_game/拼凑信件/完整信件.png and /dev/null differ
diff --git a/asset/art/prop/c01/信件碎片.png b/asset/art/prop/c01/信件碎片.png
deleted file mode 100644
index ec00bf81..00000000
Binary files a/asset/art/prop/c01/信件碎片.png and /dev/null differ
diff --git a/asset/audio/专用/衔蝶_主菜单music人声版.mp3 b/asset/audio/专用/衔蝶_主菜单music人声版.mp3
new file mode 100644
index 00000000..1be6f197
Binary files /dev/null and b/asset/audio/专用/衔蝶_主菜单music人声版.mp3 differ
diff --git a/asset/audio/专用/衔蝶_主菜单music人声版.mp3.import b/asset/audio/专用/衔蝶_主菜单music人声版.mp3.import
new file mode 100644
index 00000000..829148ed
--- /dev/null
+++ b/asset/audio/专用/衔蝶_主菜单music人声版.mp3.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="mp3"
+type="AudioStreamMP3"
+uid="uid://brs150xgqnyd5"
+path="res://.godot/imported/衔蝶_主菜单music人声版.mp3-b7e65591aa72232d8d0f92d1a8a3714b.mp3str"
+
+[deps]
+
+source_file="res://asset/audio/专用/衔蝶_主菜单music人声版.mp3"
+dest_files=["res://.godot/imported/衔蝶_主菜单music人声版.mp3-b7e65591aa72232d8d0f92d1a8a3714b.mp3str"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/asset/audio/专用/衔蝶_主菜单music人声版.wav b/asset/audio/专用/衔蝶_主菜单music人声版.wav
new file mode 100644
index 00000000..0644f0b0
Binary files /dev/null and b/asset/audio/专用/衔蝶_主菜单music人声版.wav differ
diff --git a/asset/audio/专用/衔蝶_主菜单music人声版.wav.import b/asset/audio/专用/衔蝶_主菜单music人声版.wav.import
new file mode 100644
index 00000000..aab511b6
--- /dev/null
+++ b/asset/audio/专用/衔蝶_主菜单music人声版.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://c200iyw8iv55e"
+path="res://.godot/imported/衔蝶_主菜单music人声版.wav-5ae06fe6ed3e2a9c602f4ae79b107028.sample"
+
+[deps]
+
+source_file="res://asset/audio/专用/衔蝶_主菜单music人声版.wav"
+dest_files=["res://.godot/imported/衔蝶_主菜单music人声版.wav-5ae06fe6ed3e2a9c602f4ae79b107028.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/asset/audio/专用/衔蝶_主菜单music琵琶版.wav b/asset/audio/专用/衔蝶_主菜单music琵琶版.wav
new file mode 100644
index 00000000..7dfdab9d
Binary files /dev/null and b/asset/audio/专用/衔蝶_主菜单music琵琶版.wav differ
diff --git a/asset/audio/专用/衔蝶_主菜单music琵琶版.wav.import b/asset/audio/专用/衔蝶_主菜单music琵琶版.wav.import
new file mode 100644
index 00000000..7f05a2d2
--- /dev/null
+++ b/asset/audio/专用/衔蝶_主菜单music琵琶版.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://bos75l685w3q5"
+path="res://.godot/imported/衔蝶_主菜单music琵琶版.wav-3a558322426c75bbd7f8b9678a4c9187.sample"
+
+[deps]
+
+source_file="res://asset/audio/专用/衔蝶_主菜单music琵琶版.wav"
+dest_files=["res://.godot/imported/衔蝶_主菜单music琵琶版.wav-3a558322426c75bbd7f8b9678a4c9187.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.mp3 b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.mp3
new file mode 100644
index 00000000..95dd6a8e
Binary files /dev/null and b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.mp3 differ
diff --git a/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.mp3.import b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.mp3.import
new file mode 100644
index 00000000..9b660701
--- /dev/null
+++ b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.mp3.import
@@ -0,0 +1,19 @@
+[remap]
+
+importer="mp3"
+type="AudioStreamMP3"
+uid="uid://bkiklof028v51"
+path="res://.godot/imported/衔蝶大结局_摇啊摇_Music Mastered.mp3-4359c1f8cc426c7e7a1aa0d907363b73.mp3str"
+
+[deps]
+
+source_file="res://asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.mp3"
+dest_files=["res://.godot/imported/衔蝶大结局_摇啊摇_Music Mastered.mp3-4359c1f8cc426c7e7a1aa0d907363b73.mp3str"]
+
+[params]
+
+loop=false
+loop_offset=0
+bpm=0
+beat_count=0
+bar_beats=4
diff --git a/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.wav b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.wav
new file mode 100644
index 00000000..6cabb3b7
Binary files /dev/null and b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.wav differ
diff --git a/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.wav.import b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.wav.import
new file mode 100644
index 00000000..93fcd41a
--- /dev/null
+++ b/asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://diucbqquysu0s"
+path="res://.godot/imported/衔蝶大结局_摇啊摇_Music Mastered.wav-9493f885fd6384421abe5ec1da685954.sample"
+
+[deps]
+
+source_file="res://asset/audio/专用/衔蝶大结局_摇啊摇_Music Mastered.wav"
+dest_files=["res://.godot/imported/衔蝶大结局_摇啊摇_Music Mastered.wav-9493f885fd6384421abe5ec1da685954.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv
index 45ff434d..1f1ee4b9 100644
--- a/asset/dialogue/item_description.csv
+++ b/asset/dialogue/item_description.csv
@@ -11,6 +11,7 @@ c02_小蝉寻人启事_脸部破碎,寻人启事...画像和字迹都看不清
setting_画册,画册(G),,,,,
notes_干掉的血迹,干掉的血迹,,,,,
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
+prop_奇怪的肉_说明,,,,,,
index_新游戏,新游戏,,,,,New Game
index_继续游戏,继续游戏,,,,,Resume
index_退出游戏,退出游戏,,,,,Exit
@@ -65,9 +66,9 @@ prop_银元_说明,一枚“袁大头”银元,中华民国十年造。,,,,,
prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,
prop_院长的信_说明,浦育院院长秦阳
民国21年11月20日
致吕萍:
你现下境况如何?
你虽离开浦育院已久,但我始终没有忘记为你祈祷。
愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。
你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。
若有闲暇,欢迎你回浦育院看看。
院长童玉君
民国十九年十月十五日
公寓地址 芦昌路26弄3号,,,,,
prop_火柴,火柴,,,[#texture=c02/火柴.png],,
-prop_火柴_说明,火柴_说明,,,[#texture=c02/火柴.png],,
+prop_火柴_说明,盒里还剩下很多根,稍微有些受潮,,,[#texture=c02/火柴.png],,
prop_小猫玩具的脑袋,小猫玩具的脑袋,,,[#texture=c02/新小猫头.png],,
-prop_小猫玩具的脑袋_说明,,,,,,
+prop_小猫玩具的脑袋_说明,某个玩具的部件,有些眼熟,,,,,
prop_无头小猫玩具,无头小猫玩具,,,[#texture=c02/新小猫身体.png][#inspect=c02/新小猫身体_特写.png],,
prop_无头小猫玩具_说明,没有脑袋的小猫玩偶,针脚歪歪扭扭,不甚熟练,,,,,
prop_小猫玩具完整,小猫玩具,,,[#texture=c02/新小猫全身.png],,
@@ -84,8 +85,7 @@ prop_小鞋子2,小鞋子(二),,,[#texture=c02/小鞋子2.png],,
prop_小鞋子2_说明,尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓,,,,,
prop_麻将,麻将,,,[#texture=c02/麻将.png],,
prop_麻将_说明,这块麻将上雕着一朵圆形的花,,,,,
-prop_奇怪的肉,奇怪的肉,,,[#texture=c02/奇怪的肉.png],,
-prop_奇怪的肉_说明,,,,,,
+prop_奇怪的肉,奇怪的肉 这块肉脂肪黄黄的...[ID:prop_奇怪的肉_说明],,,[#texture=c02/奇怪的肉.png],,
prop_弹珠,弹珠,,,[#texture=c02/弹珠.png],,
prop_弹珠_说明,一种玻璃小球,孩子们常用它来进行弹子游戏,,,,,
prop_木头人偶,木头人偶,,,[#texture=c02/小蝉人偶.png],,
@@ -171,6 +171,7 @@ c02_二楼血脚印,又是这种小小尖尖的血脚印...,,,,,
c02_离开红色演出,刚才那些...到底是怎么回事?,,,,,
c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」
咦,这口诀是谁教我的来着...,,,,,
c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,,
+c02_小蝉盒子特写,我会在盒子里一直陪着你 :3,,,,,
c02_小蝉恨他们,我恨他们!,,,,,
c02_火灾等待准备,还没准备好点火呢,,,,,
c02_霸凌救小蝉开始,啊!我得想办法帮帮那个小女孩...,,,,,
diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue
index c2920bd1..fac5663a 100644
--- a/asset/dialogue/item_description.dialogue
+++ b/asset/dialogue/item_description.dialogue
@@ -70,9 +70,9 @@
# c02
火柴 [#texture=c02/火柴.png] [ID:prop_火柴]
-火柴_说明 [#texture=c02/火柴.png] [ID:prop_火柴_说明]
+盒里还剩下很多根,稍微有些受潮 [#texture=c02/火柴.png] [ID:prop_火柴_说明]
小猫玩具的脑袋 [#texture=c02/新小猫头.png] [ID:prop_小猫玩具的脑袋]
-[ID:prop_小猫玩具的脑袋_说明]
+某个玩具的部件,有些眼熟[ID:prop_小猫玩具的脑袋_说明]
无头小猫玩具 [#texture=c02/新小猫身体.png] [#inspect=c02/新小猫身体_特写.png] [ID:prop_无头小猫玩具]
没有脑袋的小猫玩偶,针脚歪歪扭扭,不甚熟练 [ID:prop_无头小猫玩具_说明]
小猫玩具 [#texture=c02/新小猫全身.png] [ID:prop_小猫玩具完整]
@@ -90,8 +90,7 @@
麻将 [#texture=c02/麻将.png] [ID:prop_麻将]
这块麻将上雕着一朵圆形的花[ID:prop_麻将_说明]
#新鲜的肉 [#texture=c02/新鲜的肉.png] [ID:prop_新鲜的肉]
-奇怪的肉 [#texture=c02/奇怪的肉.png] [ID:prop_奇怪的肉]
-[ID:prop_奇怪的肉_说明]
+奇怪的肉 [#texture=c02/奇怪的肉.png] [ID:prop_奇怪的肉]这块肉脂肪黄黄的...[ID:prop_奇怪的肉_说明]
弹珠 [#texture=c02/弹珠.png] [ID:prop_弹珠]
一种玻璃小球,孩子们常用它来进行弹子游戏[ID:prop_弹珠_说明]
木头人偶 [#texture=c02/小蝉人偶.png] [ID:prop_木头人偶]
@@ -214,6 +213,7 @@
刚才那些...到底是怎么回事? [ID:c02_离开红色演出]
「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」
咦,这口诀是谁教我的来着... [ID:c02_瞎子卧室_八卦图]
院长房间里也有一个类似的十字架。[ID:c02_瞎子卧室_十字架]
+我会在盒子里一直陪着你 :3 [ID:c02_小蝉盒子特写]
我恨他们![ID:c02_小蝉恨他们]
# c02 火灾
还没准备好点火呢 [ID:c02_火灾等待准备]
diff --git a/manager/scene/scene_manager.gd b/manager/scene/scene_manager.gd
index a32c2575..4c63361f 100644
--- a/manager/scene/scene_manager.gd
+++ b/manager/scene/scene_manager.gd
@@ -76,8 +76,11 @@ func get_lock() -> PlayerReenterLock:
return PlayerReenterLock.new()
-func lock_player(duration := 0):
+func lock_player(duration := 0.0, action := 3, auto_quit := false):
get_lock().lock_all(duration)
+ if action != 3:
+ # 先 freeze 再 action,否则会重置 action
+ player_action(action, auto_quit)
func unlock_player():
@@ -94,8 +97,9 @@ func unhold_player():
# lock_time: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
func freeze_player(lock_time: float, action := 3, auto_quit := false) -> void:
- player_action(action, auto_quit)
+ # 先 freeze 再 action,否则会重置 action
get_lock().freeze(lock_time)
+ player_action(action, auto_quit)
func release_player():
diff --git a/scene/character/main_player.gd b/scene/character/main_player.gd
index 1357db65..db64c774 100644
--- a/scene/character/main_player.gd
+++ b/scene/character/main_player.gd
@@ -297,9 +297,12 @@ func _on_first_frozen() -> void:
# duration: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
func freeze_player(duration: float, action_code: int, auto_quit: bool) -> void:
- player_action(action_code, auto_quit)
if reenter_lock:
reenter_lock.freeze(duration)
+ else:
+ push_error("freeze_player reenter_lock is not set.")
+ # 先 freeze 再 action,否则会重置 action
+ player_action(action_code, auto_quit)
func release_player():
diff --git a/scene/entity/audio/sfx.gd b/scene/entity/audio/sfx.gd
index 714a6e37..5f54d48d 100644
--- a/scene/entity/audio/sfx.gd
+++ b/scene/entity/audio/sfx.gd
@@ -20,6 +20,7 @@ var scene_sense_player_mov := false
func _ready() -> void:
bus = &"game_sfx"
default_db = volume_db
+ process_mode = Node.PROCESS_MODE_PAUSABLE
if Engine.is_editor_hint():
return
finished.connect(_on_finished)
diff --git a/scene/entity/audio/sfx2d.gd b/scene/entity/audio/sfx2d.gd
index 92727ff9..731f23d8 100644
--- a/scene/entity/audio/sfx2d.gd
+++ b/scene/entity/audio/sfx2d.gd
@@ -21,6 +21,7 @@ var timer: Timer
func _ready() -> void:
bus = &"game_sfx"
+ process_mode = Node.PROCESS_MODE_PAUSABLE
finished.connect(_on_finished)
timer = Timer.new()
timer.autostart = autoplay and loop and loop_round_time > 0.0 and not Engine.is_editor_hint()
diff --git a/scene/entity/npc.tscn b/scene/entity/npc.tscn
index ebf340c6..bb8765c6 100644
--- a/scene/entity/npc.tscn
+++ b/scene/entity/npc.tscn
@@ -128,7 +128,6 @@ size = Vector2(35, 100)
[node name="Npc" type="AnimatedSprite2D"]
light_mask = 5
script = ExtResource("1_jegr2")
-snap_to_edge = null
collision_width_and_x = Vector2(35, 0)
dialogue_title = ""
@@ -182,7 +181,7 @@ shape = SubResource("RectangleShape2D_4fuic")
[node name="SignSnapper" type="Marker2D" parent="."]
unique_name_in_owner = true
script = ExtResource("8_7lwt5")
-radius = 20.0
+radius = 25.0
walk_to_edge = true
action_on_arrived = 4
metadata/_custom_type_script = "uid://cnt01hiw52bmn"
diff --git a/scene/entity/pickable.tscn b/scene/entity/pickable.tscn
index 35d34492..30d8be46 100644
--- a/scene/entity/pickable.tscn
+++ b/scene/entity/pickable.tscn
@@ -13,7 +13,6 @@ size = Vector2(20, 60)
[node name="Pickable" type="Sprite2D"]
script = ExtResource("1_jk1u0")
-action_key = null
prop_key = ""
[node name="Sfx" type="AudioStreamPlayer" parent="."]
diff --git a/scene/ground/ground.tscn b/scene/ground/ground.tscn
index 7952b7dd..d39d6ba4 100644
--- a/scene/ground/ground.tscn
+++ b/scene/ground/ground.tscn
@@ -19,6 +19,7 @@ height = 500
script = ExtResource("1_0vrlo")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+process_mode = 1
[node name="PlayerReenterLock" type="Node" parent="."]
unique_name_in_owner = true
diff --git a/scene/ground/scene/c01/s07_animation.gd b/scene/ground/scene/c01/s07_animation.gd
index 98768f3a..b40f0b60 100644
--- a/scene/ground/scene/c01/s07_animation.gd
+++ b/scene/ground/scene/c01/s07_animation.gd
@@ -66,7 +66,7 @@ func _on_luren_animation_finished() -> void:
func _knock_door():
# 6 号动作:敲门
- SceneManager.freeze_player(3.5, 6)
+ SceneManager.lock_player(3.5, 6)
await get_tree().create_timer(2.2).timeout
$"敲门音效".play()
await get_tree().create_timer(1.2).timeout
@@ -86,13 +86,15 @@ func _on_fog_disappear() -> void:
func seller_interacted():
bookstore_portal.holding = false
# 报童交互
- SceneManager.freeze_player(3.0)
+ SceneManager.freeze_player(0)
seller.play("报童给报纸")
# 提前写入 prop 中,防止存档 bug,稍后播放获得动画
- ArchiveManager.archive.prop_inventory.enable_item("prop_信碎片2")
+ SceneManager.enable_prop_item_silently("prop_信碎片2")
await get_tree().create_timer(1.5).timeout
$"报童音效".play()
SceneManager.pop_os_with_str("c01_s07_获得报纸")
+ await SceneManager.get_player().os_finished
# 播放获得动画
- await get_tree().create_timer(2.0).timeout
SceneManager.enable_prop_item("prop_信碎片2")
+ SceneManager.release_player()
+
diff --git a/scene/ground/scene/c01/s07_书店外.tscn b/scene/ground/scene/c01/s07_书店外.tscn
index bfd8cdd4..74b36dc6 100644
--- a/scene/ground/scene/c01/s07_书店外.tscn
+++ b/scene/ground/scene/c01/s07_书店外.tscn
@@ -58,7 +58,7 @@ animations = [{
[sub_resource type="RectangleShape2D" id="RectangleShape2D_na2nu"]
resource_local_to_scene = true
-size = Vector2(25, 130)
+size = Vector2(30, 130)
[node name="S07" type="Node2D"]
@@ -75,6 +75,7 @@ data = {
oneshot_animation = ""
[node name="环境音" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
+process_mode = 1
stream = ExtResource("3_na2nu")
volume_db = -4.0
autoplay = true
@@ -87,6 +88,7 @@ mode = "场景背景音"
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="chapter_sfx" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
+process_mode = 1
stream = ExtResource("3_c7jb6")
volume_db = -5.0
bus = &"game_sfx"
@@ -94,6 +96,7 @@ script = ExtResource("4_c7jb6")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="报童音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
+process_mode = 1
stream = ExtResource("5_7sdrt")
volume_db = -5.0
bus = &"game_sfx"
@@ -101,6 +104,7 @@ script = ExtResource("4_c7jb6")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="敲门音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"]
+process_mode = 1
stream = ExtResource("6_hwht7")
volume_db = -2.0
bus = &"game_sfx"
@@ -108,13 +112,14 @@ script = ExtResource("4_c7jb6")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="开门音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="4"]
+process_mode = 1
stream = ExtResource("8_sqlmr")
volume_db = -4.0
bus = &"game_sfx"
script = ExtResource("4_c7jb6")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
-[node name="BGSprite2D" parent="Ground" index="1"]
+[node name="BGSprite2D" parent="Ground" index="2"]
texture = SubResource("AtlasTexture_amurr")
offset = Vector2(0, -158)
@@ -127,7 +132,7 @@ position = Vector2(2233, 13)
target_scene = "c01_s08"
[node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("4_ulvsd")]
-position = Vector2(94, 45)
+position = Vector2(94, 56)
debug_note = "传送来的位置"
portal_name = "1"
@@ -140,7 +145,7 @@ animation = &"default"
frame = 0
[node name="portal_2" parent="Ground/DeployLayer" index="3" instance=ExtResource("4_ulvsd")]
-position = Vector2(1731, 25)
+position = Vector2(1728, 33)
debug_note = "c01_s07 的 2 号门通往书店"
portal_name = "2"
target_scene = "c01_s08"
@@ -150,8 +155,18 @@ holding = true
holding_reason_key = "c01_s07_需要报纸"
[node name="SfxDefault" parent="Ground/DeployLayer/portal_2" index="0"]
+process_mode = 1
volume_db = -2.0
+[node name="SfxOpen" parent="Ground/DeployLayer/portal_2" index="1"]
+process_mode = 1
+
+[node name="SfxEnter" parent="Ground/DeployLayer/portal_2" index="2"]
+process_mode = 1
+
+[node name="SfxLocked" parent="Ground/DeployLayer/portal_2" index="3"]
+process_mode = 1
+
[node name="Sign" parent="Ground/DeployLayer/portal_2" index="4"]
enabled = true
@@ -162,6 +177,9 @@ offset_bottom = -50.0
[node name="CollisionShape2D" parent="Ground/DeployLayer/portal_2/Area2D" index="0"]
shape = SubResource("RectangleShape2D_na2nu")
+[node name="SignSnapper" parent="Ground/DeployLayer/portal_2" index="7"]
+action_on_arrived = 4
+
[node name="背景" type="Sprite2D" parent="Ground/DeployLayer" index="4"]
position = Vector2(1084, 5.5)
texture = ExtResource("4_8do8y")
@@ -188,6 +206,7 @@ action_configs = Array[Dictionary]([{
}])
[node name="Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/陆仁舞刀"]
+process_mode = 1
stream = ExtResource("14_c7jb6")
volume_db = -2.0
autoplay = true
@@ -262,7 +281,7 @@ action = 5
title_filter = "c01"
note_key = "c01_s07_书店展柜"
-[node name="MainPlayer" parent="Ground" index="4"]
+[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(41, 103)
character = "小小蝶"
diff --git a/scene/ground/scene/c01/s08_animation.gd b/scene/ground/scene/c01/s08_animation.gd
index f37d7d7e..a25ce75e 100644
--- a/scene/ground/scene/c01/s08_animation.gd
+++ b/scene/ground/scene/c01/s08_animation.gd
@@ -147,8 +147,8 @@ func _on_shelf_game_success() -> void:
fall_off.visible = true
fall_off.play()
fall_off.animation_finished.connect(_on_fall_off_finished)
- # 从 sfx_生死簿演出 中播放
- # $"摔倒音效".play()
+ # 从 sfx_生死簿演出 中退出时播放不出来,需要在此处播放
+ $"摔倒音效".play()
_check_portal()
func _on_fall_off_finished() -> void:
diff --git a/scene/ground/scene/c01/s08_书店.tscn b/scene/ground/scene/c01/s08_书店.tscn
index 809c6cac..c3bb566c 100644
--- a/scene/ground/scene/c01/s08_书店.tscn
+++ b/scene/ground/scene/c01/s08_书店.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=21 format=3 uid="uid://cwu4dhayra8pg"]
+[gd_scene load_steps=22 format=3 uid="uid://cwu4dhayra8pg"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_b3cca"]
[ext_resource type="Script" uid="uid://6q2pfbqsw10t" path="res://scene/ground/scene/c01/s08_animation.gd" id="2_0lque"]
@@ -13,6 +13,7 @@
[ext_resource type="Texture2D" uid="uid://c3ii6vsja0645" path="res://asset/art/scene/c01/s08_书店/书店参考.png" id="6_l2q02"]
[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="7_fue0t"]
[ext_resource type="SpriteFrames" uid="uid://bmwm400w8r4ju" path="res://asset/art/gif/c01_书店/c01_书店_frames.tres" id="8_hunwx"]
+[ext_resource type="AudioStream" uid="uid://bnjyw5v85s6qe" path="res://asset/audio/sfx/交互/序章/04_书店内_主角摔倒.wav" id="8_p6k3c"]
[ext_resource type="Texture2D" uid="uid://bho8xal4ha50l" path="res://asset/art/scene/c01/s08_书店/l_打光.png" id="9_i4dqp"]
[ext_resource type="AudioStream" uid="uid://cniawn37n8888" path="res://asset/audio/sfx/交互/序章/04_书店内_递交报纸.wav" id="9_lfr41"]
[ext_resource type="Texture2D" uid="uid://bp4y3vujvsl7r" path="res://asset/art/scene/c01/s08_书店/fg_前景.png" id="10_4e3a1"]
@@ -43,7 +44,7 @@ _data = {
[sub_resource type="RectangleShape2D" id="RectangleShape2D_0x288"]
resource_local_to_scene = true
-size = Vector2(10, 70)
+size = Vector2(20, 70)
[node name="S08" type="Node2D"]
position = Vector2(1, 0)
@@ -60,6 +61,7 @@ script = ExtResource("2_0lque")
oneshot_animation = "one_shot"
[node name="环境音" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
+process_mode = 1
stream = ExtResource("3_0x288")
volume_db = -8.0
autoplay = true
@@ -72,6 +74,7 @@ mode = "场景背景音"
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="诡异环境音" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
+process_mode = 1
stream = ExtResource("5_eerhd")
volume_db = -7.0
bus = &"game_sfx"
@@ -83,19 +86,28 @@ mode = "场景背景音"
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="写字声[未启用]" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
+process_mode = 1
stream = ExtResource("4_5j1ov")
bus = &"game_sfx"
script = ExtResource("4_p6k3c")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="放报纸音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"]
+process_mode = 1
stream = ExtResource("9_lfr41")
volume_db = -5.0
bus = &"game_sfx"
script = ExtResource("4_p6k3c")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
-[node name="BGSprite2D" parent="Ground" index="1"]
+[node name="摔倒音效" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="4"]
+process_mode = 1
+stream = ExtResource("8_p6k3c")
+bus = &"game_sfx"
+script = ExtResource("4_p6k3c")
+metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
+
+[node name="BGSprite2D" parent="Ground" index="2"]
material = SubResource("ShaderMaterial_ddd5v")
texture = ExtResource("3_322m4")
offset = Vector2(0, -158)
@@ -151,7 +163,11 @@ scatter_on_start = true
[node name="Interactable报纸柜台" parent="Ground/DeployLayer" index="6" instance=ExtResource("7_fue0t")]
position = Vector2(135, 49)
+[node name="SfxInvalid" parent="Ground/DeployLayer/Interactable报纸柜台" index="0"]
+process_mode = 1
+
[node name="SfxSuccess" parent="Ground/DeployLayer/Interactable报纸柜台" index="1"]
+process_mode = 1
stream = null
[node name="CollisionShape2D" parent="Ground/DeployLayer/Interactable报纸柜台/Area2D" index="0"]
@@ -185,7 +201,7 @@ energy = 0.4
texture = ExtResource("9_i4dqp")
offset = Vector2(317, 0)
-[node name="MainPlayer" parent="Ground" index="4"]
+[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(437, 98)
character = "小小蝶"
@@ -197,7 +213,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="7"]
+[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.0
blend_mode = 1
diff --git a/scene/ground/scene/c02/s03_animation.gd b/scene/ground/scene/c02/s03_animation.gd
index b38aef61..013673d8 100644
--- a/scene/ground/scene/c02/s03_animation.gd
+++ b/scene/ground/scene/c02/s03_animation.gd
@@ -40,6 +40,11 @@ func _on_ground_ready() -> void:
$"../DeployLayer/Ambush偷听对话".enabled = false
eavesdrop_window.visible = false
+ # 小蝉消失
+ var xiaochan = $"../DeployLayer/Ambush小蝉消失" as Ambush2D
+ if xiaochan.played:
+ xiaochan.visible = false
+
$"../DeployLayer/Closeup敲门游戏".exit.connect(_on_knock_exit)
counter = $"../DeployLayer/Interactable柜子" as Interactable2D
@@ -85,7 +90,7 @@ func _on_ground_ready() -> void:
small_shoe = $"../DeployLayer/Pickable小鞋子" as Pickable2D
if ArchiveManager.get_global_value("c02_madman_interacted", false) and not data.camera_played:
- SceneManager.freeze_player(0)
+ SceneManager.lock_player(0)
# 等待转场
await get_tree().create_timer(1.0).timeout
small_shoe.enabled = true
@@ -116,14 +121,19 @@ func _on_ground_ready() -> void:
_setup_bully_or_burning(true)
+func xiaochan_disappear():
+ var xc = $"../DeployLayer/Ambush小蝉消失/ProSprite" as AnimatedSprite2D
+ xc.play("小蝉背对转头")
+ create_tween().tween_property(xc, "modulate:a", 0.0, 2.2)
+
+
func drop_shoe(progress: float, y1: float, y2: float):
var t = ease(progress, 4.0)
small_shoe.position.y = lerp(y1, y2, t)
func cg_end() -> void:
- SceneManager.release_player()
- # prop_小鞋子2
+ SceneManager.unlock_player()
# SceneManager.enable_prop_item("prop_小鞋子2")
set_data("camera_played", true)
$"../CameraFocusMarker".limit_top += 1000
@@ -174,17 +184,19 @@ func shocking_lighting() -> void:
func eavesdrop() -> void:
$"../DeployLayer/Ambush偷听对话".enabled = false
# 12 c00_吕萍_蹲下 13 c00_吕萍_蹲下呼吸 14 c00_吕萍_起立
- SceneManager.freeze_player(0, 12)
+ SceneManager.lock_player(0, 12)
# play("eavesdrop")
await get_tree().create_timer(1.0).timeout
- SceneManager.freeze_player(0, 13)
+ SceneManager.player_action(13)
# 对话
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_04_李氏癞子")
await DialogueManager.dialogue_ended
eavesdrop_window.visible = false
await get_tree().create_timer(1.0).timeout
- SceneManager.freeze_player(1.0, 14, true)
+ SceneManager.player_action(14, true)
ArchiveManager.set_global_entry("c02_eavesdrop_finished", true)
+ await get_tree().create_timer(1.5).timeout
+ SceneManager.unlock_player()
func _setup_bully_or_burning(reenter_scene := false):
@@ -204,11 +216,12 @@ func _setup_bully_or_burning(reenter_scene := false):
bully_layer.get_node("wall/CollisionShape2D").disabled = false
burning_layer.visible = false
bully_layer.visible = true
+ # 霸凌童谣直接播放
+ $"../DeployLayer/霸凌/f1/Sfx2D霸凌童谣".play()
if not ArchiveManager.get_global_value("c02_ready_to_fire"):
bully_layer.get_node("Ambush霸凌").enabled = true
else:
GlobalFunctor.c02_fire_count_down_try_start()
- $"../DeployLayer/霸凌/f1/Sfx2D霸凌童谣".play()
else:
bully_layer.visible = false
$VibeSfx.switch_to("c02_火灾")
diff --git a/scene/ground/scene/c02/s03_院子.tscn b/scene/ground/scene/c02/s03_院子.tscn
index afb86306..53169379 100644
--- a/scene/ground/scene/c02/s03_院子.tscn
+++ b/scene/ground/scene/c02/s03_院子.tscn
@@ -288,12 +288,14 @@ data = {
oneshot_animation = ""
[node name="Sfx闷雷" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
+process_mode = 1
stream = ExtResource("6_vddfx")
bus = &"game_sfx"
script = ExtResource("4_ygnci")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx小鞋落地" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
+process_mode = 1
stream = ExtResource("7_df1yo")
bus = &"game_sfx"
script = ExtResource("4_ygnci")
@@ -379,7 +381,17 @@ position = Vector2(132, 10)
sprite_frames = ExtResource("4_gd6xp")
animation = &"肉铺门口血迹"
-[node name="灯笼" type="Node2D" parent="Ground/DeployLayer" index="9"]
+[node name="Ambush小蝉消失" parent="Ground/DeployLayer" index="9" instance=ExtResource("25_iyaiw")]
+position = Vector2(274, 64)
+hook_method = "xiaochan_disappear"
+
+[node name="ProSprite" parent="Ground/DeployLayer/Ambush小蝉消失" instance=ExtResource("33_ycojw")]
+position = Vector2(211, -7)
+sprite_frames = ExtResource("4_gd6xp")
+animation = &"小蝉背对转头"
+autoplay = "小蝉背对呼吸帧"
+
+[node name="灯笼" type="Node2D" parent="Ground/DeployLayer" index="10"]
[node name="灯笼" type="Sprite2D" parent="Ground/DeployLayer/灯笼"]
position = Vector2(1644, -86)
@@ -426,7 +438,7 @@ color = Color(1, 0.0980392, 0, 1)
energy = 0.7
texture = SubResource("GradientTexture2D_kyfht")
-[node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="10"]
+[node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="11"]
visible = false
[node name="地上纸钱" type="Sprite2D" parent="Ground/DeployLayer/新背景_奠"]
@@ -461,7 +473,7 @@ position = Vector2(898, -162)
z_index = 15
position = Vector2(1964, -209)
-[node name="闷雷_纸人闪现" type="Node2D" parent="Ground/DeployLayer" index="11"]
+[node name="闷雷_纸人闪现" type="Node2D" parent="Ground/DeployLayer" index="12"]
visible = false
[node name="Ambush闷雷纸人" parent="Ground/DeployLayer/闷雷_纸人闪现" instance=ExtResource("25_iyaiw")]
@@ -488,15 +500,14 @@ range_layer_max = 2
range_item_cull_mask = 4
texture = SubResource("GradientTexture2D_3nako")
-[node name="Ambush要下雨了" parent="Ground/DeployLayer" index="12" instance=ExtResource("25_iyaiw")]
+[node name="Ambush要下雨了" parent="Ground/DeployLayer" index="13" instance=ExtResource("25_iyaiw")]
position = Vector2(1611, 46)
hook_os_key = "c02_院子_要下雨"
-[node name="Pickable小鞋子" parent="Ground/DeployLayer" index="13" instance=ExtResource("7_em2ma")]
+[node name="Pickable小鞋子" parent="Ground/DeployLayer" index="14" instance=ExtResource("7_em2ma")]
position = Vector2(809, 75)
sign_mark_offset = Vector2(0, -16.88)
enabled = false
-action_key = 4
prop_key = "prop_小鞋子2"
[node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer/Pickable小鞋子"]
@@ -504,7 +515,7 @@ position = Vector2(0, -7)
scale = Vector2(0.15, 0.15)
texture = ExtResource("8_plfv5")
-[node name="Interactable铁门" parent="Ground/DeployLayer" index="14" instance=ExtResource("8_xt8j0")]
+[node name="Interactable铁门" parent="Ground/DeployLayer" index="15" instance=ExtResource("8_xt8j0")]
light_mask = 5
position = Vector2(1222, 28)
texture = ExtResource("7_gd6xp")
@@ -513,6 +524,12 @@ action_key = 3
interacted_texture = ExtResource("9_liq0c")
prop_key = "prop_老虎钳"
+[node name="SfxInvalid" parent="Ground/DeployLayer/Interactable铁门" index="0"]
+process_mode = 1
+
+[node name="SfxSuccess" parent="Ground/DeployLayer/Interactable铁门" index="1"]
+process_mode = 1
+
[node name="CollisionShape2D" parent="Ground/DeployLayer/Interactable铁门/Area2D" index="0"]
shape = SubResource("RectangleShape2D_er6ob")
@@ -524,7 +541,7 @@ collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/Interactable铁门/Wall"]
shape = SubResource("RectangleShape2D_mdix7")
-[node name="Note算命摊位" parent="Ground/DeployLayer" index="15" instance=ExtResource("6_t48d1")]
+[node name="Note算命摊位" parent="Ground/DeployLayer" index="16" instance=ExtResource("6_t48d1")]
position = Vector2(725, 45)
note_key = "c02_院子_算命摊位"
@@ -532,13 +549,13 @@ note_key = "c02_院子_算命摊位"
position = Vector2(0, 18)
texture = ExtResource("6_1tart")
-[node name="煤油灯" parent="Ground/DeployLayer" index="16" instance=ExtResource("10_jme4f")]
+[node name="煤油灯" parent="Ground/DeployLayer" index="17" instance=ExtResource("10_jme4f")]
position = Vector2(290, 1)
gaslight_energy = 1.5
gaslight_ground_energy = 0.7
mute_when_interacted = false
-[node name="煤油灯2" parent="Ground/DeployLayer" index="17" instance=ExtResource("10_jme4f")]
+[node name="煤油灯2" parent="Ground/DeployLayer" index="18" instance=ExtResource("10_jme4f")]
position = Vector2(610, 1)
gaslight_texture = ExtResource("11_g0qhj")
ground_light_texture = ExtResource("12_ni5ro")
@@ -546,7 +563,7 @@ gaslight_energy = 1.5
gaslight_ground_energy = 0.7
mute_when_interacted = false
-[node name="煤油灯3" parent="Ground/DeployLayer" index="18" instance=ExtResource("10_jme4f")]
+[node name="煤油灯3" parent="Ground/DeployLayer" index="19" instance=ExtResource("10_jme4f")]
position = Vector2(857, 1)
gaslight_texture = ExtResource("13_hw832")
ground_light_texture = ExtResource("14_7pq5y")
@@ -554,46 +571,46 @@ gaslight_energy = 1.5
gaslight_ground_energy = 0.7
mute_when_interacted = false
-[node name="井" type="Sprite2D" parent="Ground/DeployLayer" index="19"]
+[node name="井" type="Sprite2D" parent="Ground/DeployLayer" index="20"]
self_modulate = Color(0.739288, 0.739288, 0.739288, 1)
light_mask = 5
z_index = 10
position = Vector2(2062, 60)
texture = ExtResource("21_4n8vm")
-[node name="药车" type="Sprite2D" parent="Ground/DeployLayer" index="20"]
+[node name="药车" type="Sprite2D" parent="Ground/DeployLayer" index="21"]
light_mask = 5
z_index = 10
position = Vector2(1025, 27)
texture = ExtResource("22_3y5s5")
-[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="21" instance=ExtResource("23_81juy")]
+[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="22" instance=ExtResource("23_81juy")]
position = Vector2(466, 3)
packed_scene = ExtResource("24_0o4rt")
collision_width_and_x = Vector2(40, 0)
-[node name="Closeup井" parent="Ground/DeployLayer" index="22" instance=ExtResource("23_81juy")]
+[node name="Closeup井" parent="Ground/DeployLayer" index="23" instance=ExtResource("23_81juy")]
z_index = 6
position = Vector2(2063, 50)
packed_scene = ExtResource("26_yy4fp")
-[node name="Ambush惊悚闪电" parent="Ground/DeployLayer" index="23" instance=ExtResource("25_iyaiw")]
+[node name="Ambush惊悚闪电" parent="Ground/DeployLayer" index="24" instance=ExtResource("25_iyaiw")]
position = Vector2(1319, 40)
hook_method = "shocking_lighting"
-[node name="Ambush偷听对话" parent="Ground/DeployLayer" index="24" instance=ExtResource("25_iyaiw")]
+[node name="Ambush偷听对话" parent="Ground/DeployLayer" index="25" instance=ExtResource("25_iyaiw")]
position = Vector2(1836, 7)
trigger_mode = "interact"
one_shot = false
hook_method = "eavesdrop"
-[node name="李氏赖子房间人影" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="25"]
+[node name="李氏赖子房间人影" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="26"]
position = Vector2(1835, -16)
sprite_frames = SubResource("SpriteFrames_0o4rt")
autoplay = "default"
frame_progress = 0.643855
-[node name="Npc井边疯子" parent="Ground/DeployLayer" index="26" instance=ExtResource("35_plfv5")]
+[node name="Npc井边疯子" parent="Ground/DeployLayer" index="27" instance=ExtResource("35_plfv5")]
z_index = 10
position = Vector2(2037, 67)
sprite_frames = ExtResource("4_gd6xp")
@@ -614,7 +631,7 @@ position = Vector2(-11, -3)
shape = SubResource("RectangleShape2D_bbhbr")
disabled = true
-[node name="霸凌" type="Node2D" parent="Ground/DeployLayer" index="27"]
+[node name="霸凌" type="Node2D" parent="Ground/DeployLayer" index="28"]
visible = false
position = Vector2(2154, 60)
@@ -640,10 +657,10 @@ animation = &"霸凌1"
autoplay = "霸凌1"
[node name="Sfx2D霸凌童谣" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/霸凌/f1"]
+process_mode = 1
stream = ExtResource("46_qqdxs")
volume_db = -5.0
-max_distance = 1000.0
-attenuation = 3.0
+attenuation = 2.0
bus = &"game_sfx"
script = ExtResource("54_o1qbs")
loop = true
@@ -679,7 +696,7 @@ collision_mask = 0
shape = SubResource("RectangleShape2D_d7h4s")
disabled = true
-[node name="火灾" type="Node2D" parent="Ground/DeployLayer" index="28"]
+[node name="火灾" type="Node2D" parent="Ground/DeployLayer" index="29"]
visible = false
[node name="右窗" type="AnimatedSprite2D" parent="Ground/DeployLayer/火灾"]
@@ -913,6 +930,7 @@ animation = &"吕萍牵手动作"
shape = SubResource("RectangleShape2D_vddfx")
[node name="Sfx2D跑步" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/火灾/牵手跑"]
+process_mode = 1
stream = SubResource("AudioStreamRandomizer_fxne6")
volume_db = 3.0
bus = &"game_sfx"
@@ -920,7 +938,7 @@ script = ExtResource("54_o1qbs")
loop = true
metadata/_custom_type_script = "uid://wapo47a1oddf"
-[node name="Interactable柜子" parent="Ground/DeployLayer" index="29" instance=ExtResource("8_xt8j0")]
+[node name="Interactable柜子" parent="Ground/DeployLayer" index="30" instance=ExtResource("8_xt8j0")]
visible = false
position = Vector2(1772, 48)
texture = ExtResource("32_cpifc")
diff --git a/scene/ground/scene/c02/s06_animation.gd b/scene/ground/scene/c02/s06_animation.gd
index e5bc2aec..b6701be7 100644
--- a/scene/ground/scene/c02/s06_animation.gd
+++ b/scene/ground/scene/c02/s06_animation.gd
@@ -159,7 +159,6 @@ func _c02_final_show():
func _on_exit_final_show(_arg):
# 瞎、胖、蝉三人离开
play("c02_final_show_end")
- SceneManager.freeze_player(0)
# 小蝉动画通过 捂脸-呼吸-移动 来控制
# 胖子与瞎子动画也是如此
await get_tree().create_timer(0.5).timeout
diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn
index 05bf37be..f5bf2850 100644
--- a/scene/ground/scene/c02/s06_二楼.tscn
+++ b/scene/ground/scene/c02/s06_二楼.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=51 format=3 uid="uid://cootarwb44vvh"]
+[gd_scene load_steps=52 format=3 uid="uid://cootarwb44vvh"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qkymk"]
[ext_resource type="Script" uid="uid://cbt0ubygchxvv" path="res://scene/ground/scene/c02/s06_animation.gd" id="2_4dg6u"]
@@ -781,7 +781,7 @@ tracks/3/keys = {
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
-"method": &"start_timer"
+"method": &"play"
}]
}
@@ -797,6 +797,10 @@ _data = {
resource_local_to_scene = true
size = Vector2(20, 70)
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_7kxvk"]
+resource_local_to_scene = true
+size = Vector2(20, 70)
+
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wywax"]
playback_mode = 1
streams_count = 2
@@ -857,18 +861,21 @@ autoplay_group = &"c02_楼道2"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="Sfx翻找东西" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
+process_mode = 1
stream = ExtResource("5_lh55k")
bus = &"game_sfx"
script = ExtResource("4_2e08x")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx擦亮火柴" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
+process_mode = 1
stream = ExtResource("5_wywax")
bus = &"game_sfx"
script = ExtResource("4_2e08x")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx偷看关门" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"]
+process_mode = 1
stream = ExtResource("7_7kxvk")
bus = &"game_sfx"
script = ExtResource("4_2e08x")
@@ -938,6 +945,12 @@ position = Vector2(616, -14)
ground_light_texture = ExtResource("8_7x2h6")
ground_height_offset = 15.0
+[node name="SfxInvalid" parent="Ground/DeployLayer/煤油灯" index="0"]
+process_mode = 1
+
+[node name="SfxSuccess" parent="Ground/DeployLayer/煤油灯" index="1"]
+process_mode = 1
+
[node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"]
shape = SubResource("RectangleShape2D_lh55k")
@@ -959,6 +972,19 @@ disable_prop_after_interacted = true
prop_key = "prop_小鞋子1"
prop_key2 = "prop_小鞋子2"
+[node name="SfxInvalid" parent="Ground/DeployLayer/Interactable老鼠洞" index="0"]
+process_mode = 1
+
+[node name="SfxSuccess" parent="Ground/DeployLayer/Interactable老鼠洞" index="1"]
+process_mode = 1
+
+[node name="CollisionShape2D" parent="Ground/DeployLayer/Interactable老鼠洞/Area2D" index="0"]
+shape = SubResource("RectangleShape2D_7kxvk")
+
+[node name="SignSnapper" parent="Ground/DeployLayer/Interactable老鼠洞" index="4"]
+radius = 15.0
+walk_to_edge = true
+
[node name="小老鼠拖鞋子" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="10"]
visible = false
position = Vector2(608, -15)
@@ -985,6 +1011,7 @@ action_configs = Array[Dictionary]([{
}])
[node name="疯子撞墙Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/疯子撞墙"]
+process_mode = 1
position = Vector2(5, 28)
stream = SubResource("AudioStreamRandomizer_wywax")
volume_db = 10.0
@@ -1110,6 +1137,7 @@ move_configs = Array[Dictionary]([{
debug_mov_animation = "方瞎子走路-左"
[node name="Sfx2D脚步声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/c02_final/瞎子"]
+process_mode = 1
position = Vector2(-39, -20)
stream = SubResource("AudioStreamRandomizer_4ndyv")
bus = &"game_sfx"
@@ -1163,3 +1191,4 @@ blend_mode = 1
[editable path="Ground"]
[editable path="Ground/DeployLayer/煤油灯"]
+[editable path="Ground/DeployLayer/Interactable老鼠洞"]
diff --git a/scene/ground/scene/c02/s08_animation.gd b/scene/ground/scene/c02/s08_animation.gd
index 2de5da23..d7efafdc 100644
--- a/scene/ground/scene/c02/s08_animation.gd
+++ b/scene/ground/scene/c02/s08_animation.gd
@@ -54,6 +54,7 @@ func _on_ground_ready() -> void:
boxcat_portal.get_node("Sprite2D").texture = preload("uid://efhwoqtn21d8") # e_墙上纸张_boxcat
else:
$"../DeployLayer/Closeup画".enabled = true
+ $"../DeployLayer/癞子偷窥/Sfx2D癞子呼吸".play()
if boxcat_played:
$"../DeployLayer/portal_left".status = "opened"
# 玩过小猫游戏,画框内容更新 禁止再进入
@@ -123,7 +124,7 @@ func enter_room() -> void:
ambush_lookback.enabled = false
var player = SceneManager.get_player() as MainPlayer
var player_x = 513.0
- SceneManager.freeze_player(0)
+ SceneManager.lock_player(0)
var camera = SceneManager.get_camera_marker()
var tween = create_tween()
# 镜头右侧 limit 设置到 room_camera_r_limit
@@ -142,7 +143,7 @@ func enter_room() -> void:
setup_rect_after_entered()
sprite.visible = false
player.hide_sprite = false
- SceneManager.release_player()
+ SceneManager.unlock_player()
interacting = false
@@ -161,7 +162,7 @@ func setup_rect_after_entered() -> void:
func look_back_hole():
var darker_light = $"../AmbientLayer/下洞黑化Light" as PointLight2D
- SceneManager.freeze_player(0, 10)
+ SceneManager.lock_player(0, 10)
var laizi = $"../DeployLayer/癞子偷窥"
laizi.visible = true
var camera = SceneManager.get_camera_marker() as CameraFocusMarker
@@ -184,7 +185,7 @@ func look_back_hole():
func _on_shocked():
SceneManager.pop_debug_dialog_info("音效", "惊吓")
- SceneManager.freeze_player(0, 11, true)
+ SceneManager.player_action(11, true)
SceneManager.get_player().animation_finished.connect(_on_shocked_finished, CONNECT_ONE_SHOT)
$"Sfx吹灭蜡烛".play()
await create_tween().tween_interval(0.6).finished
@@ -206,5 +207,5 @@ func _on_shocked():
func _on_shocked_finished():
# 起身位置向左偏移稍许
SceneManager.get_player().position.x -= 12
- SceneManager.release_player()
+ SceneManager.unlock_player()
$"../DeployLayer/癞子偷窥".visible = false
diff --git a/scene/ground/scene/c02/s08_瞎子卧室.tscn b/scene/ground/scene/c02/s08_瞎子卧室.tscn
index 07b1b667..263e98ea 100644
--- a/scene/ground/scene/c02/s08_瞎子卧室.tscn
+++ b/scene/ground/scene/c02/s08_瞎子卧室.tscn
@@ -125,6 +125,7 @@ autoplay_group = &"c02_房间里2"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
[node name="Sfx癞子对视惊吓" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"]
+process_mode = 1
stream = ExtResource("5_0qeqe")
volume_db = 2.0
bus = &"game_sfx"
@@ -132,12 +133,14 @@ script = ExtResource("3_t3h08")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx摔倒" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"]
+process_mode = 1
stream = ExtResource("6_nnqdd")
bus = &"game_sfx"
script = ExtResource("3_t3h08")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx吹灭蜡烛" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"]
+process_mode = 1
stream = ExtResource("7_quq80")
bus = &"game_sfx"
script = ExtResource("3_t3h08")
@@ -218,6 +221,12 @@ animation_low_mode = true
hide_texture = true
gaslight_energy = 2.0
+[node name="SfxInvalid" parent="Ground/DeployLayer/灯座Sprite2D/煤油灯" index="0"]
+process_mode = 1
+
+[node name="SfxSuccess" parent="Ground/DeployLayer/灯座Sprite2D/煤油灯" index="1"]
+process_mode = 1
+
[node name="CollisionShape2D" parent="Ground/DeployLayer/灯座Sprite2D/煤油灯/Area2D" index="0"]
shape = SubResource("RectangleShape2D_a48k2")
@@ -289,6 +298,7 @@ animation = &"c02_王癞子_蹲着呼吸"
autoplay = "c02_王癞子_蹲着呼吸"
[node name="Sfx2D癞子呼吸" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/癞子偷窥"]
+process_mode = 1
stream = ExtResource("20_ujhuc")
volume_db = -5.0
max_distance = 700.0
@@ -332,7 +342,6 @@ texture = ExtResource("12_1ws4i")
position = Vector2(105, 70)
texture = ExtResource("18_dkqw0")
sign_mark_offset = Vector2(0, -9.34)
-action_key = 4
prop_key = "prop_粘鼠板"
[node name="下洞黑化Light" type="PointLight2D" parent="Ground/AmbientLayer" index="0"]
diff --git a/scene/ground/scene/c02/s10_animation.gd b/scene/ground/scene/c02/s10_animation.gd
index f1dfd522..5cac659c 100644
--- a/scene/ground/scene/c02/s10_animation.gd
+++ b/scene/ground/scene/c02/s10_animation.gd
@@ -132,9 +132,8 @@ func _on_counter_interacted():
else:
player.player_movement_rect.position.x += 60
player.player_movement_rect.size.x -= 65
- SceneManager.freeze_player(0)
var x = counter.global_position.x - player_pull_offset_x
- # 走到左侧
+ # 走到左侧,自动 freeze/release
player.walk_to_x(x).tween_callback(func():
player.character = "吕萍推柜子"
player.lock_move_right = true
diff --git a/scene/ground/scene/c02/s10_空房间.tscn b/scene/ground/scene/c02/s10_空房间.tscn
index 7ce7cb28..da74ffbf 100644
--- a/scene/ground/scene/c02/s10_空房间.tscn
+++ b/scene/ground/scene/c02/s10_空房间.tscn
@@ -87,7 +87,7 @@ script = ExtResource("3_kqj5r")
autoplay_group = &"c02_房间里1"
metadata/_custom_type_script = "uid://cpejxlfni6n52"
-[node name="BGSprite2D" parent="Ground" index="1"]
+[node name="BGSprite2D" parent="Ground" index="2"]
position = Vector2(26, 0)
texture = ExtResource("3_ox8et")
@@ -182,7 +182,6 @@ position = Vector2(373, -13.8031)
gaslight_energy = 2.0
gaslight_ground_energy = 2.0
mute_when_interacted = false
-one_shot = false
[node name="拼接小猫玩具" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"]
visible = false
@@ -222,7 +221,7 @@ hook_method = "first_enter_ambush"
position = Vector2(198, -28.5923)
texture = SubResource("GradientTexture2D_3ftnp")
-[node name="MainPlayer" parent="Ground" index="4"]
+[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(315, 98)
facing_direction = Vector2(1, 0)
@@ -233,7 +232,7 @@ position = Vector2(193, 0)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(50, 150, 510, 150)
-[node name="DirectionalLight2D" parent="Ground" index="7"]
+[node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false
energy = 0.9
blend_mode = 1
diff --git a/scene/ground/scene/c02/s12_盒子猫.tscn b/scene/ground/scene/c02/s12_盒子猫.tscn
index b124d113..5871361a 100644
--- a/scene/ground/scene/c02/s12_盒子猫.tscn
+++ b/scene/ground/scene/c02/s12_盒子猫.tscn
@@ -22,6 +22,7 @@ script = ExtResource("2_7ah3n")
oneshot_animation = ""
[node name="Sfx钻盒子演出" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"]
+process_mode = 1
stream = ExtResource("3_72mc1")
bus = &"game_sfx"
script = ExtResource("4_r3hvb")
diff --git a/scene/ground/script/c02/s08_画特写.tscn b/scene/ground/script/c02/s08_画特写.tscn
index e01b9cf9..1b6a69d9 100644
--- a/scene/ground/script/c02/s08_画特写.tscn
+++ b/scene/ground/script/c02/s08_画特写.tscn
@@ -1,8 +1,10 @@
-[gd_scene load_steps=4 format=3 uid="uid://dd8dfoik0ig3y"]
+[gd_scene load_steps=6 format=3 uid="uid://dd8dfoik0ig3y"]
[ext_resource type="Script" uid="uid://dnrql1t0j6v8i" path="res://scene/ground/script/c02/通用特写脚本.gd" id="1_jgyts"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/ux_盒子猫初次特写.png" id="2_jo6o1"]
[ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/prop_and_bag/特写通用遮罩.png" id="3_myoho"]
+[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="4_4p6cc"]
+[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/prop_and_bag/inspect背景遮罩.png" id="5_i34yq"]
[node name="s08_画特写" type="CanvasLayer"]
script = ExtResource("1_jgyts")
@@ -18,3 +20,27 @@ offset_top = -3.0
offset_right = 585.0
offset_bottom = 313.0
texture = ExtResource("3_myoho")
+
+[node name="ContentInspector" parent="." instance=ExtResource("4_4p6cc")]
+
+[node name="遮罩" type="TextureRect" parent="ContentInspector"]
+offset_left = -35.0
+offset_top = -3.0
+offset_right = 585.0
+offset_bottom = 313.0
+texture = ExtResource("5_i34yq")
+
+[node name="Label" type="Label" parent="ContentInspector/遮罩"]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -20.0
+offset_top = -7.0
+offset_right = 20.0
+offset_bottom = 7.0
+grow_horizontal = 2
+grow_vertical = 2
+text = "c02_小蝉盒子特写"
diff --git a/scene/ground/script/c02/s08_画特写2.tscn b/scene/ground/script/c02/s08_画特写2.tscn
index 9ffc3eec..f7803fe4 100644
--- a/scene/ground/script/c02/s08_画特写2.tscn
+++ b/scene/ground/script/c02/s08_画特写2.tscn
@@ -48,6 +48,8 @@ texture = ExtResource("5_75okh")
[node name="ContentInspector" parent="." instance=ExtResource("6_ybyuk")]
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
+visible = false
+layout_mode = 0
offset_left = -35.0
offset_top = -3.0
offset_right = 585.0
diff --git a/scene/ground/script/c02/小手讨东西.tscn b/scene/ground/script/c02/小手讨东西.tscn
index d2c86cdc..37f97c8e 100644
--- a/scene/ground/script/c02/小手讨东西.tscn
+++ b/scene/ground/script/c02/小手讨东西.tscn
@@ -109,6 +109,7 @@ sign_mark_offset = Vector2(0, -5)
[node name="Pickable元宝" parent="." instance=ExtResource("12_6lwlv")]
position = Vector2(44, 103)
sign_mark_offset = Vector2(0, -20.95)
+action_key = 4
prop_key = "prop_锡箔元宝"
[node name="Sprite2D" type="Sprite2D" parent="Pickable元宝"]
diff --git a/scene/ground/script/c02/盒子猫canvas_layer.gd b/scene/ground/script/c02/盒子猫canvas_layer.gd
index 1ac412da..49f2a2ca 100644
--- a/scene/ground/script/c02/盒子猫canvas_layer.gd
+++ b/scene/ground/script/c02/盒子猫canvas_layer.gd
@@ -62,9 +62,10 @@ func _try_toggle_crawl():
crawling_toggle_tween = create_tween()
var crawl = down_pressing
if crawl:
- SceneManager.freeze_player(0, 7)
+ SceneManager.freeze_player(0)
+ SceneManager.player_action(7)
else:
- SceneManager.freeze_player(0, 8, true)
+ SceneManager.player_action(8, true)
crawling_toggle_tween.tween_interval(0.4)
if not crawl:
crawling_toggle_tween.tween_callback(SceneManager.release_player)
diff --git a/scene/ground/script/c02/谢幕演出.tscn b/scene/ground/script/c02/谢幕演出.tscn
index 8956b1ce..8af2851e 100644
--- a/scene/ground/script/c02/谢幕演出.tscn
+++ b/scene/ground/script/c02/谢幕演出.tscn
@@ -396,18 +396,21 @@ script = ExtResource("1_s8k21")
[node name="Root" type="Node2D" parent="."]
[node name="Sfx擦火柴" type="AudioStreamPlayer" parent="Root"]
+process_mode = 1
stream = ExtResource("2_yo1xc")
bus = &"game_sfx"
script = ExtResource("3_r7yca")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx小蝉捂眼后笑声" type="AudioStreamPlayer" parent="Root"]
+process_mode = 1
stream = ExtResource("4_8edqb")
bus = &"game_sfx"
script = ExtResource("3_r7yca")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx小蝉蒙眼" type="AudioStreamPlayer" parent="Root"]
+process_mode = 1
stream = ExtResource("5_kfwxg")
bus = &"game_sfx"
script = ExtResource("3_r7yca")
diff --git a/scene/index_page.gd b/scene/index_page.gd
index f82fe8d1..86a66d96 100644
--- a/scene/index_page.gd
+++ b/scene/index_page.gd
@@ -4,7 +4,7 @@ extends Control
@onready var animation_player = $AnimationPlayer as AnimationPlayer
@onready var animation_root = $AnimationRoot as Control
-@onready var sfx = %Sfx as Sfx
+@onready var sfx_click = %SfxClick as Sfx
@onready var newgame_btn = %NewGame as Button
@onready var resume_btn = %Resume as Button
@onready var quit_btn = %Quit as Button
@@ -39,14 +39,14 @@ func _check_resume_btn():
func _on_newgame_pressed():
- sfx.global_play()
+ sfx_click.global_play()
# 覆盖使用 1 号存档
ArchiveManager.create_and_use_new_archive(1)
_enter_main_scene()
func _on_resume_pressed():
- sfx.global_play()
+ sfx_click.global_play()
# 继续一号存档
if GlobalConfig.DEBUG:
print("Resume")
@@ -64,7 +64,7 @@ func _enter_main_scene():
func _on_quit_pressed():
# 退出时点击音效将无法播放
- #sfx.global_play()
+ #sfx_click.global_play()
SceneManager.quit_game()
diff --git a/scene/index_page.tscn b/scene/index_page.tscn
index e6a1fb17..0caa9359 100644
--- a/scene/index_page.tscn
+++ b/scene/index_page.tscn
@@ -1,9 +1,10 @@
-[gd_scene load_steps=11 format=3 uid="uid://c4ycvdsabi7lw"]
+[gd_scene load_steps=12 format=3 uid="uid://c4ycvdsabi7lw"]
[ext_resource type="Script" uid="uid://b4rw4hk7ns4m8" path="res://scene/index_page.gd" id="1_c7y7r"]
[ext_resource type="Texture2D" uid="uid://bcc0bk34l5gbc" path="res://asset/art/ui/index_menu/菜单背景1.png" id="1_jxn4k"]
[ext_resource type="AudioStream" uid="uid://cvttds81trcoc" path="res://asset/audio/sfx/UI/click.wav" id="2_te6ya"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_5oc6i"]
+[ext_resource type="AudioStream" uid="uid://brs150xgqnyd5" path="res://asset/audio/专用/衔蝶_主菜单music人声版.mp3" id="4_te6ya"]
[sub_resource type="Animation" id="Animation_8kiap"]
resource_name = "default"
@@ -64,13 +65,23 @@ grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
-[node name="Sfx" type="AudioStreamPlayer" parent="."]
+[node name="SfxClick" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("2_te6ya")
volume_db = -8.285
bus = &"game_sfx"
script = ExtResource("3_5oc6i")
+[node name="SfxBGM" type="AudioStreamPlayer" parent="."]
+stream = ExtResource("4_te6ya")
+bus = &"game_sfx"
+script = ExtResource("3_5oc6i")
+mode = "场景背景音"
+"自动开始" = true
+"循环播放" = true
+"感应玩家操作" = false
+metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
+
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = 15
diff --git a/scene/little_game/拼凑信件.tscn b/scene/little_game/拼凑信件.tscn
index 7955d4b6..e74fe97a 100644
--- a/scene/little_game/拼凑信件.tscn
+++ b/scene/little_game/拼凑信件.tscn
@@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://c2y4mpkygrmaf" path="res://asset/art/little_game/拼凑信件/桌面.png" id="2_0fxwt"]
[ext_resource type="AudioStream" uid="uid://cxs1p014bq3bn" path="res://asset/audio/sfx/交互/序章/04_书店内_旋转信纸.wav" id="3_eph5y"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_ifhby"]
-[ext_resource type="Texture2D" uid="uid://duxdnw1uhlpm5" path="res://asset/art/little_game/拼凑信件/信件碎片.png" id="3_mjf3s"]
+[ext_resource type="Texture2D" uid="uid://oh4e48nxm4j6" path="res://asset/art/little_game/拼凑信件/信件碎片.png" id="3_mjf3s"]
[sub_resource type="AtlasTexture" id="AtlasTexture_4e0jv"]
atlas = ExtResource("3_mjf3s")
diff --git a/scene/prop/prop_inspector.tscn b/scene/prop/prop_inspector.tscn
index facc5921..8db4c95a 100644
--- a/scene/prop/prop_inspector.tscn
+++ b/scene/prop/prop_inspector.tscn
@@ -1,9 +1,8 @@
-[gd_scene load_steps=6 format=3 uid="uid://cekhj65axie0p"]
+[gd_scene load_steps=5 format=3 uid="uid://cekhj65axie0p"]
[ext_resource type="Script" uid="uid://1xdb7s1nigv8" path="res://scene/prop/prop_inspector.gd" id="1_2wpwe"]
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/prop_and_bag/inspect背景遮罩.png" id="2_j83lq"]
[ext_resource type="Texture2D" uid="uid://cvgw2mxrlr6io" path="res://asset/art/scene/c02/旧版/s02_走道/ux_进门鼠疫海报yz.png" id="2_wr575"]
-[ext_resource type="Texture2D" uid="uid://dwgxa5j6602vv" path="res://asset/art/ui/prop_and_bag/inspect文本衬底蒙版.png" id="4_hehdd"]
[ext_resource type="FontVariation" uid="uid://1ryw42kej6lv" path="res://config/font_ui.tres" id="4_opug5"]
[node name="PropInspector" type="CanvasLayer"]
@@ -76,7 +75,7 @@ grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
mouse_filter = 2
-texture = ExtResource("4_hehdd")
+texture = ExtResource("2_j83lq")
[node name="MarginContainer2" type="MarginContainer" parent="."]
anchors_preset = 15