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():