diff --git a/asset/art/prop/c01/信件碎片.png b/asset/art/prop/c01/信件碎片.png
old mode 100755
new mode 100644
index 4e75f923..ec00bf81
Binary files a/asset/art/prop/c01/信件碎片.png and b/asset/art/prop/c01/信件碎片.png differ
diff --git a/asset/art/prop/c01/院长的信.png b/asset/art/prop/c01/院长的信.png
index 790369b4..994f5ab2 100644
Binary files a/asset/art/prop/c01/院长的信.png and b/asset/art/prop/c01/院长的信.png differ
diff --git a/asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png b/asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png
new file mode 100644
index 00000000..a1114902
Binary files /dev/null and b/asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png differ
diff --git a/asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png.import b/asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png.import
new file mode 100644
index 00000000..0b7fcfd0
--- /dev/null
+++ b/asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ca3km2f6ncrqo"
+path="res://.godot/imported/e_小蝉偷看.png-be6958103c78585802bcfef240eff388.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png"
+dest_files=["res://.godot/imported/e_小蝉偷看.png-be6958103c78585802bcfef240eff388.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/scene/c02/s06_二楼楼道/小蝉偷看.png.import b/asset/art/scene/c02/s06_二楼楼道/小蝉偷看.png.import
new file mode 100644
index 00000000..4ea2ffc0
--- /dev/null
+++ b/asset/art/scene/c02/s06_二楼楼道/小蝉偷看.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cwa3hlkld05lu"
+path="res://.godot/imported/小蝉偷看.png-525b25a4dd1af5873e6e5e60507df15c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://asset/art/scene/c02/s06_二楼楼道/小蝉偷看.png"
+dest_files=["res://.godot/imported/小蝉偷看.png-525b25a4dd1af5873e6e5e60507df15c.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/ui/prop_and_bag/特写通用遮罩.png b/asset/art/ui/prop_and_bag/特写通用遮罩.png
index 4246d954..223073b5 100644
Binary files a/asset/art/ui/prop_and_bag/特写通用遮罩.png and b/asset/art/ui/prop_and_bag/特写通用遮罩.png differ
diff --git a/asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav b/asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav
new file mode 100755
index 00000000..00845cc8
Binary files /dev/null and b/asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav differ
diff --git a/asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav.import b/asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav.import
new file mode 100644
index 00000000..ba7c6347
--- /dev/null
+++ b/asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://slb4jd8n207c"
+path="res://.godot/imported/小孩从近到远跑步.wav-0bd313abfb25bb06b3eb5dee0526bf49.sample"
+
+[deps]
+
+source_file="res://asset/audio/sfx/game/弹珠游戏/小孩从近到远跑步.wav"
+dest_files=["res://.godot/imported/小孩从近到远跑步.wav-0bd313abfb25bb06b3eb5dee0526bf49.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 2d84b40e..81c265f4 100644
--- a/asset/dialogue/item_description.csv
+++ b/asset/dialogue/item_description.csv
@@ -56,11 +56,11 @@ ui_夜行船6,夜行船,,,,,
prop_空手,空手,,,,,
prop_空手_说明,空空如也,,,,,
prop_信碎片1,信碎片(一),,,[#texture=c01/信件左上.png],,
-prop_信碎片1_说明,浦育院院长秦阳,民国21年,11月20日,,,,,
+prop_信碎片1_说明,浦育院院长秦阳,,,,,
prop_信碎片2,信碎片(二),,,[#texture=c01/信件右上.png],,
-prop_信碎片2_说明,...,,,,,
+prop_信碎片2_说明,民国21年,11月20日,,,,,
prop_银元,银元,,,[#texture=c01/银元.png],,
-prop_银元_说明,一枚“袁大头”银元,中華民國十年造。,,,,,
+prop_银元_说明,一枚“袁大头”银元,中华民国十年造。,,,,,
prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,
prop_院长的信_说明,浦育院院长秦阳
民国21年11月20日
致吕萍:
你现下境况如何?
你虽离开浦育院已久,但我始终没有忘记为你祈祷。
愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。
你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。
若有闲暇,欢迎你回浦育院看看。
院长童玉君
民国十九年十月十五日
公寓地址 芦昌路26弄3号,,,,,
prop_火柴,火柴,,,[#texture=c02/火柴.png],,
@@ -129,7 +129,7 @@ c01_s07_获得报纸,这是什么?,,,,,
c01_s07_书店展柜,院长说,读一百本书,就可以成为无所不能的大人。
如果我再大一些,没准可以求店长把我留下,我会干很多活,也能吃苦...,,,,,
c01_s08_书架游戏完成,这些书都被老鼠啃坏了,连木头架子都没放过。,,,,,
c01_s08_获得袁大头后,工钱还在老地方。,,,,,
-c02_海报_剪辫子侦探,剪辮懸樑上偵探奇聞,,,,,
+c02_海报_剪辫子侦探,剪辫悬梁上侦探奇闻,,,,,
c02_海报_戏法班,朱连魁全班戏法——「各有幻女...演技新奇」,,,,,
c02_芦昌路26,芦昌路26弄3号,我父母真的住在这里吗...,,,,,
c02_s01_下黄包车,院长在信里提到的就是这里,,,,,
@@ -167,7 +167,7 @@ c02_二楼楼梯杂物堆,堆满了杂物,看样子没办法从这里上去了
c02_二楼水盆,盆里的水很清澈,看上去像是刚盛的。,,,,,
c02_二楼老鼠洞,到处都是老鼠洞,怕不是整栋楼都被老鼠打通了。,,,,,
c02_二楼血脚印,又是这种小小尖尖的血脚印...,,,,,
-c02_离开红色演出,刚才的那两个人...是幻觉吗,,,,,
+c02_离开红色演出,刚才那些...到底是怎么回事?,,,,,
c02_瞎子卧室_八卦图,「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」
咦,这口诀是谁教我的来着...,,,,,
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
c02_瞎子卧室_十字架,院长房间里也有一个类似的十字架。,,,,,
diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue
index aa04905e..e2fc2ce5 100644
--- a/asset/dialogue/item_description.dialogue
+++ b/asset/dialogue/item_description.dialogue
@@ -164,7 +164,7 @@
这些书都被老鼠啃坏了,连木头架子都没放过。 [ID:c01_s08_书架游戏完成]
工钱还在老地方。 [ID:c01_s08_获得袁大头后]
# c02
-剪辮懸樑上偵探奇聞 [ID:c02_海报_剪辫子侦探]
+剪辫悬梁上侦探奇闻 [ID:c02_海报_剪辫子侦探]
朱连魁全班戏法——「各有幻女...演技新奇」 [ID:c02_海报_戏法班]
# c02-s01 街道
芦昌路26弄3号,我父母真的住在这里吗... [ID:c02_芦昌路26]
diff --git a/config/default_bus_layout.tres b/config/default_bus_layout.tres
index eeedcf93..aa23e98a 100644
--- a/config/default_bus_layout.tres
+++ b/config/default_bus_layout.tres
@@ -1,17 +1,16 @@
[gd_resource type="AudioBusLayout" format=3 uid="uid://d3rxegy32deki"]
[resource]
-bus/0/volume_db = -0.030508
-bus/0/send = &"music"
+bus/0/volume_db = 0.173916
bus/1/name = &"dialog"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
-bus/1/volume_db = -0.00828743
+bus/1/volume_db = -0.106054
bus/1/send = &"game_sfx"
bus/2/name = &"game_sfx"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
-bus/2/volume_db = -0.00606537
+bus/2/volume_db = -0.00828743
bus/2/send = &"Master"
diff --git a/manager/config_manager/global_config.gd b/manager/config_manager/global_config.gd
index aba374df..10469703 100644
--- a/manager/config_manager/global_config.gd
+++ b/manager/config_manager/global_config.gd
@@ -72,9 +72,9 @@ signal auto_save_seconds_changed
@export var window_fullscreen := false
@export var window_top := true
# sound
-@export var db_master := linear_to_db(1.0) # default
-@export var db_dialog := linear_to_db(0.7) # default
-@export var db_game_sfx := linear_to_db(0.7) # default
+@export var db_master := -3.0 # default
+@export var db_dialog := -7.0 # default
+@export var db_game_sfx := 3.0 # default
# language
# -1 null; 0 zh_CN; 1 zh_SH; 2 en
@export var language := 0
diff --git a/manager/config_manager/global_config_manager.gd b/manager/config_manager/global_config_manager.gd
index 053843e4..6ba97cb7 100644
--- a/manager/config_manager/global_config_manager.gd
+++ b/manager/config_manager/global_config_manager.gd
@@ -29,6 +29,12 @@ func _set_config(val: GlobalConfig) -> void:
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), config.db_master)
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("game_sfx"), config.db_game_sfx)
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("dialog"), config.db_dialog)
+ prints(
+ "config load volume_db settings (master, sfx, dialog): ",
+ config.db_master,
+ config.db_game_sfx,
+ config.db_dialog
+ )
func _on_timer_timeout():
diff --git a/manager/scene/global_functor.gd b/manager/scene/global_functor.gd
index 4ee91168..84369d56 100644
--- a/manager/scene/global_functor.gd
+++ b/manager/scene/global_functor.gd
@@ -42,15 +42,15 @@ func c02_fire_count_down_try_start():
c02_fire_count_down_timer = Timer.new()
c02_fire_count_down_timer.autostart = true
if GlobalConfig.DEBUG:
- SceneManager.pop_debug_dialog_info("debug", "当前为测试模式,倒计时 10s;正式模式倒计时 60s")
- c02_fire_count_down_timer.wait_time = 10
+ SceneManager.pop_debug_dialog_info("debug", "当前为测试模式,倒计时 15s;正式模式倒计时 60s")
+ c02_fire_count_down_timer.wait_time = 15
else:
c02_fire_count_down_timer.wait_time = 60
c02_fire_count_down_timer.one_shot = false
c02_fire_count_down_timer.timeout.connect(_on_c02_fire_count_down_timeout)
add_child(c02_fire_count_down_timer)
SceneManager.pop_debug_dialog_info("音效", "霸凌救小蝉倒计时")
- AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx)
+ AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx, 5)
func _on_c02_fire_count_down_timeout():
@@ -66,7 +66,7 @@ func _on_c02_fire_count_down_timeout():
# res://asset/audio/BGM/心跳背景音.mp3
await get_tree().create_timer(3.0).timeout
SceneManager.pop_debug_dialog_info("音效", "霸凌救小蝉倒计时")
- AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx)
+ AudioManager.loop_bgm_music("霸凌救小蝉倒计时", c02_fire_count_down_sfx, 5)
c02_fire_count_down_timer.start()
diff --git a/manager/scene/scene_manager.gd b/manager/scene/scene_manager.gd
index 508b4e91..7127a137 100644
--- a/manager/scene/scene_manager.gd
+++ b/manager/scene/scene_manager.gd
@@ -120,10 +120,10 @@ func freeze_and_play(lock_time: float, animation := "", auto_quit := false) -> v
printerr("Player node not found")
-func release_player():
+func release_player(force_clear:=false):
var player = get_player()
if player:
- player.release_player()
+ player.release_player(force_clear)
else:
printerr("Player node not found")
diff --git a/scene/character/main_player.gd b/scene/character/main_player.gd
index 6e26386e..8457cf8e 100644
--- a/scene/character/main_player.gd
+++ b/scene/character/main_player.gd
@@ -62,8 +62,7 @@ signal animation_finished
if is_node_ready():
_check_character_runtime_status()
if val > 3:
- freeze_player(0, val, true)
- release_player()
+ freeze_player(1, val, true)
# 使用 new,方便在 editor 中刷新新值
var current_animation_config: Dictionary
@@ -298,14 +297,14 @@ func player_action(action_code: int, auto_quit: bool):
sprite.animation_finished.connect(_play_animation, CONNECT_ONE_SHOT)
-var lock_mutex = Mutex.new()
+var freeze_counter := 0
var release_timer: SceneTreeTimer
# 自动解除对应 animation 的 loop 状态
# 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_code: int, auto_quit: bool) -> void:
- lock_mutex.lock()
+ freeze_counter += 1
action_freezed = true
player_action(action_code, auto_quit)
if lock_time:
@@ -314,15 +313,24 @@ func freeze_player(lock_time: float, action_code: int, auto_quit: bool) -> void:
else:
release_timer = get_tree().create_timer(lock_time)
release_timer.timeout.connect(release_player)
- lock_mutex.unlock()
-func release_player():
+# force_clear 强制清零计数器
+func release_player(force_clear := false):
release_timer = null
- lock_mutex.lock()
- action_freezed = false
+ freeze_counter -= 1
+ if force_clear:
+ if freeze_counter != 0 and GlobalConfig.DEBUG:
+ printerr(
+ "release_player force_clear=True worked. freeze_counter before: %s" % freeze_counter
+ )
+ freeze_counter = 0
+ if freeze_counter == 0:
+ action_freezed = false
+ elif freeze_counter < 0:
+ action_freezed = false
+ printerr("release_player called with freeze_counter < 0, this should not happen.")
# velocity_ratio = 1.0
- lock_mutex.unlock()
# _play_animation()
diff --git a/scene/character/main_player.tscn b/scene/character/main_player.tscn
index 3a811c50..028e8e14 100644
--- a/scene/character/main_player.tscn
+++ b/scene/character/main_player.tscn
@@ -42,12 +42,13 @@ size = Vector2(15, 180)
z_index = 5
collision_mask = 2
script = ExtResource("1_3a78y")
+catty_light_energy = 0.3
running_locked = true
metadata/_edit_vertical_guides_ = [-15.0, -3.0]
[node name="PointLight2D" type="PointLight2D" parent="."]
position = Vector2(0, -60)
-energy = 0.8
+energy = 1.2
range_item_cull_mask = 15
shadow_enabled = true
texture = SubResource("GradientTexture2D_gk3xo")
diff --git a/scene/entity/closeup.tscn b/scene/entity/closeup.tscn
index 7df7ff87..b9de4f83 100644
--- a/scene/entity/closeup.tscn
+++ b/scene/entity/closeup.tscn
@@ -45,7 +45,6 @@ shape = SubResource("RectangleShape2D_ogin7")
[node name="SignSnapper" type="Marker2D" parent="."]
unique_name_in_owner = true
script = ExtResource("7_dnubm")
-release_player_on_arrived = false
radius = 3.0
delay_arrived = 0.1
action_on_arrived = 4
diff --git a/scene/entity/npc.tscn b/scene/entity/npc.tscn
index 7b5dfefe..0ef251e5 100644
--- a/scene/entity/npc.tscn
+++ b/scene/entity/npc.tscn
@@ -181,7 +181,6 @@ shape = SubResource("RectangleShape2D_4fuic")
[node name="SignSnapper" type="Marker2D" parent="."]
unique_name_in_owner = true
script = ExtResource("8_7lwt5")
-release_player_on_arrived = false
radius = 20.0
walk_to_edge = true
delay_arrived = 0.1
diff --git a/scene/ground/scene/c02/s04_保卫科.tscn b/scene/ground/scene/c02/s04_保卫科.tscn
index eeff419b..6de7d98f 100644
--- a/scene/ground/scene/c02/s04_保卫科.tscn
+++ b/scene/ground/scene/c02/s04_保卫科.tscn
@@ -85,6 +85,7 @@ packed_scene = ExtResource("7_fvlg0")
first_interact_os_key = "c02_保卫科祭台os"
[node name="Closeup老鼠精" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_66gue")]
+light_mask = 5
position = Vector2(207.5, -40.5)
texture = ExtResource("11_ffvrp")
packed_scene = ExtResource("8_cm3g6")
diff --git a/scene/ground/scene/c02/s05_一楼内侧楼道.tscn b/scene/ground/scene/c02/s05_一楼内侧楼道.tscn
index f45bafc6..bbd29404 100644
--- a/scene/ground/scene/c02/s05_一楼内侧楼道.tscn
+++ b/scene/ground/scene/c02/s05_一楼内侧楼道.tscn
@@ -252,8 +252,9 @@ animation = &"奇怪的肉被拖进去动画"
visible = false
position = Vector2(668, 85)
texture = ExtResource("18_bk7rf")
-sign_mark_offset = Vector2(0, -9.86)
+sign_mark_offset = Vector2(-2.98, -9.86)
enabled = false
+collision_width_and_x = Vector2(43.96, 0)
prop_key = "prop_奇怪的肉"
[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="14"]
diff --git a/scene/ground/scene/c02/s06_animation.gd b/scene/ground/scene/c02/s06_animation.gd
index 61a9f83c..e5bc2aec 100644
--- a/scene/ground/scene/c02/s06_animation.gd
+++ b/scene/ground/scene/c02/s06_animation.gd
@@ -63,6 +63,14 @@ func _on_ground_ready() -> void:
ball_game_boys_ambush.enabled = true
ball_game_boys_ambush.visible = true
+ if $"../DeployLayer/Ambush小蝉偷看".played:
+ $"../DeployLayer/Ambush小蝉偷看".visible = false
+
+# 小蝉偷看
+func glimpse_hide_out():
+ $"../DeployLayer/Ambush小蝉偷看".visible = false
+ $"Sfx偷看关门".play()
+
func _on_mice_hole_interacted():
mice_hole.enabled = false
diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn
index a1f49792..54e48423 100644
--- a/scene/ground/scene/c02/s06_二楼.tscn
+++ b/scene/ground/scene/c02/s06_二楼.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=49 format=3 uid="uid://cootarwb44vvh"]
+[gd_scene load_steps=51 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"]
@@ -12,6 +12,7 @@
[ext_resource type="AudioStream" uid="uid://cljr4g0sivpdh" path="res://asset/audio/sfx/交互/sfx_煤油灯点燃成功.wav" id="5_wywax"]
[ext_resource type="Texture2D" uid="uid://b78jbthcfkod7" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光3.png" id="6_vbvbc"]
[ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="7_0d746"]
+[ext_resource type="AudioStream" uid="uid://5jk88e0cncy8" path="res://asset/audio/sfx/交互/序章/04_书店内_关门.wav" id="7_7kxvk"]
[ext_resource type="Texture2D" uid="uid://f7yd3xpr1utp" path="res://asset/art/scene/c02/s06_二楼楼道/e_楼梯杂物堆.png" id="7_v3hjg"]
[ext_resource type="Texture2D" uid="uid://b7uo33bdiwpl3" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光4.png" id="8_7x2h6"]
[ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/c02_公寓过道_frames.tres" id="8_nh8we"]
@@ -36,6 +37,7 @@
[ext_resource type="PackedScene" uid="uid://ci5anaxsa1apl" path="res://scene/entity/inspectable.tscn" id="32_4ndyv"]
[ext_resource type="Texture2D" uid="uid://day38kany2gmr" path="res://asset/art/scene/c02/小蝉寻人启事/e_寻人启事完整.png" id="33_h3h1a"]
[ext_resource type="Texture2D" uid="uid://ce3d785v5lxg2" path="res://asset/art/scene/c02/小蝉寻人启事/ux_寻人启事完整.png" id="34_3u30v"]
+[ext_resource type="Texture2D" uid="uid://ca3km2f6ncrqo" path="res://asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png" id="37_osg51"]
[sub_resource type="Animation" id="Animation_k01ve"]
length = 0.001
@@ -866,6 +868,12 @@ bus = &"game_sfx"
script = ExtResource("4_2e08x")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
+[node name="Sfx偷看关门" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="3"]
+stream = ExtResource("7_7kxvk")
+bus = &"game_sfx"
+script = ExtResource("4_2e08x")
+metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
+
[node name="BGSprite2D" parent="Ground" index="1"]
light_mask = 5
position = Vector2(0, -2)
@@ -1129,8 +1137,14 @@ texture = ExtResource("33_h3h1a")
texture_cover = ExtResource("34_3u30v")
content_key = "c02_寻人启事_完整"
+[node name="Ambush小蝉偷看" parent="Ground/DeployLayer" index="19" instance=ExtResource("14_k01ve")]
+position = Vector2(553, -5)
+texture = ExtResource("37_osg51")
+collision_width_and_x = Vector2(150, 0)
+hook_method = "glimpse_hide_out"
+
[node name="MainPlayer" parent="Ground" index="4"]
-position = Vector2(650, 98)
+position = Vector2(63, 95)
catty_light_energy = 0.5
facing_direction = Vector2(1, 0)
diff --git a/scene/ground/script/c02/敲门游戏.gd b/scene/ground/script/c02/敲门游戏.gd
index 93caa802..dc351f0b 100644
--- a/scene/ground/script/c02/敲门游戏.gd
+++ b/scene/ground/script/c02/敲门游戏.gd
@@ -18,14 +18,14 @@ func _ready() -> void:
button.pressed.connect(_on_button_pressed)
fail_time = Time.get_ticks_msec()
button.disabled = true
- DialogueManager.show_dialogue_balloon(dialogue, "c02_s03_敲门游戏intro")
- await DialogueManager.dialogue_ended
- if (
- # not ArchiveManager.get_global_value("c02_eavesdrop_finished", false) or
- # ArchiveManager.get_global_value("c02_meat_dropping", false) or
+ if not ArchiveManager.get_global_value("c02_meat_door_interacted", false):
+ ArchiveManager.set_global_entry("c02_meat_door_interacted", true)
+ DialogueManager.show_dialogue_balloon(dialogue, "c02_s03_敲门游戏intro")
+ await DialogueManager.dialogue_ended
+ if ArchiveManager.get_global_value("c02_meat_given", false):
+ # not ArchiveManager.get_global_value("c02_eavesdrop_finished", false) or
+ # ArchiveManager.get_global_value("c02_meat_dropping", false) or
# 敲门成功,则禁用
- ArchiveManager.get_global_value("c02_meat_given", false)
- ):
button.disabled = true
else:
button.disabled = false
diff --git a/scene/ground/script/c02/老鼠精画像.tscn b/scene/ground/script/c02/老鼠精画像.tscn
index b33bcf87..cd1ef17d 100644
--- a/scene/ground/script/c02/老鼠精画像.tscn
+++ b/scene/ground/script/c02/老鼠精画像.tscn
@@ -19,6 +19,7 @@ texture = ExtResource("2_eyynm")
[node name="ContentInspector" parent="." instance=ExtResource("3_lpmq3")]
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
+visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
diff --git a/scene/little_game/弹珠游戏/balls_falling.tscn b/scene/little_game/弹珠游戏/balls_falling.tscn
index 953466b7..e3ef5815 100644
--- a/scene/little_game/弹珠游戏/balls_falling.tscn
+++ b/scene/little_game/弹珠游戏/balls_falling.tscn
@@ -40,9 +40,6 @@ gravity = Vector3(0, 98, 0)
scale_min = 0.35
scale_max = 0.4
scale_over_velocity_curve = SubResource("CurveTexture_jw8nx")
-collision_mode = 1
-collision_friction = 0.5
-collision_bounce = 0.0
[node name="BallsFalling" type="Node2D"]
y_sort_enabled = true
diff --git a/scene/little_game/弹珠游戏/弹珠游戏.gd b/scene/little_game/弹珠游戏/弹珠游戏.gd
index fcb70251..1d2e46b1 100644
--- a/scene/little_game/弹珠游戏/弹珠游戏.gd
+++ b/scene/little_game/弹珠游戏/弹珠游戏.gd
@@ -6,7 +6,6 @@ signal exit(success)
@onready var pivot = $Pivot as Node2D
@onready var hand_pivot = $Pivot/HandPivot as Node2D
@onready var label = %RichTextLabel as RichTextLabel
-@onready var audio_player = %AudioStreamPlayer as AudioStreamPlayer
# ogg文件:丢球(drop 地面明显碰撞声)+球碰球(hit 响亮)+细碎滚动声(loop)三个部分
@onready var sfx_hit = $SfxHit as Sfx
@@ -244,6 +243,7 @@ func game_win() -> void:
print("game_win 弹珠游戏胜利")
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
ArchiveManager.set_global_entry("c02_ball_game_stage", 3)
+ %"Sfx结尾小孩跑".play()
# 弹珠雨
$BallsFalling.emitting = true
pivot.visible = false
diff --git a/scene/little_game/弹珠游戏/弹珠游戏.tscn b/scene/little_game/弹珠游戏/弹珠游戏.tscn
index 692525a6..ea04da38 100644
--- a/scene/little_game/弹珠游戏/弹珠游戏.tscn
+++ b/scene/little_game/弹珠游戏/弹珠游戏.tscn
@@ -1,6 +1,7 @@
-[gd_scene load_steps=24 format=3 uid="uid://cjx7o685ox8c1"]
+[gd_scene load_steps=25 format=3 uid="uid://cjx7o685ox8c1"]
[ext_resource type="Script" uid="uid://c5s4giu182isu" path="res://scene/little_game/弹珠游戏/弹珠游戏.gd" id="1_p2trd"]
+[ext_resource type="AudioStream" uid="uid://cra6rqbs6r1qd" path="res://asset/audio/sfx/旧版/child/小孩从近到远跑步.wav" id="2_aqxy0"]
[ext_resource type="Texture2D" uid="uid://bvf8b057baglw" path="res://asset/art/little_game/弹珠/bg_弹珠游戏.png" id="2_bm1k0"]
[ext_resource type="Texture2D" uid="uid://bs4tp4amd1kkm" path="res://asset/art/little_game/弹珠/抱手.png" id="3_3kvx4"]
[ext_resource type="AudioStream" uid="uid://bb6njoaxi2hbx" path="res://asset/audio/sfx/game/弹珠游戏/hit.ogg" id="3_co06r"]
@@ -255,6 +256,13 @@ radius = 300.0
[node name="弹珠游戏" type="CanvasLayer"]
script = ExtResource("1_p2trd")
+[node name="Sfx结尾小孩跑" type="AudioStreamPlayer" parent="."]
+unique_name_in_owner = true
+stream = ExtResource("2_aqxy0")
+bus = &"game_sfx"
+script = ExtResource("4_co06r")
+metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
+
[node name="TextureRect" type="TextureRect" parent="."]
z_index = -1
offset_left = -4.0
@@ -292,9 +300,6 @@ text = "[wave amp=10.0 freq=5.0][shake rate=4.0 level=3] 弹珠拿出来"
fit_content = true
horizontal_alignment = 1
-[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="MarginContainer"]
-unique_name_in_owner = true
-
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_fk3jp")
diff --git a/scene/settings/settings.gd b/scene/settings/settings.gd
index 916ceb0e..59a549d4 100644
--- a/scene/settings/settings.gd
+++ b/scene/settings/settings.gd
@@ -14,8 +14,27 @@ extends CanvasLayer
@onready var gallery_btn = %GalleryBtn as Button
# 音量 DB 偏移
-var sfx_db_offset := 6.0
-var dialog_db_offset := -20.0
+const sfx_db_offset := 6.0
+const dialog_db_offset := -10.0
+
+
+static func _init() -> void:
+ AudioServer.set_bus_volume_db(
+ AudioServer.get_bus_index("Master"), GlobalConfigManager.config.db_master
+ )
+ AudioServer.set_bus_volume_db(
+ AudioServer.get_bus_index("game_sfx"), GlobalConfigManager.config.db_game_sfx
+ )
+ AudioServer.set_bus_volume_db(
+ AudioServer.get_bus_index("dialog"), GlobalConfigManager.config.db_dialog
+ )
+ if GlobalConfig.DEBUG:
+ prints(
+ "_init setup volume_db (master, sfx, dialog): ",
+ GlobalConfigManager.config.db_master,
+ GlobalConfigManager.config.db_game_sfx,
+ GlobalConfigManager.config.db_dialog
+ )
func _ready():