diff --git a/asset/art/ui/标题字/标题字-12.png b/asset/art/ui/标题字/标题字-12.png index 8e3be798..8bddd760 100644 Binary files a/asset/art/ui/标题字/标题字-12.png and b/asset/art/ui/标题字/标题字-12.png differ diff --git a/asset/dialogue/inspect_content.csv b/asset/dialogue/inspect_content.csv index 821e8ed6..d550beb8 100644 --- a/asset/dialogue/inspect_content.csv +++ b/asset/dialogue/inspect_content.csv @@ -19,12 +19,12 @@ c02_青岛啤酒详情,系最好最廉之酒,并且每星期有新货到埠,,, tdb119a3714,据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。,,, ta750647b12,《申报》,,, t736cca4563,民国五年一月十三日,,, -c02_保卫科花名册1,一零一四 空,,, -c02_保卫科花名册2,一零一五王守义 李兰,,, -c02_保卫科花名册3,二零一二 张文开,,, -c02_保卫科花名册4,二零一三 方启钊 方小蝉,,, -c02_保卫科花名册5,三零一二 吕萍,,, -c02_保卫科花名册6,三零一三(看不清),,, +c02_保卫科花名册1,一〇一四 空,,, +c02_保卫科花名册2,一〇一五 王守义 李兰,,, +c02_保卫科花名册3,二〇一三 张文开,,, +c02_保卫科花名册4,二〇一五 方启钊 方小蝉,,, +c02_保卫科花名册5,三〇一二 吕萍,,, +c02_保卫科花名册6,三〇一三 (看不清),,, c02_保卫科花名册7,把我的鞋子拿给老鼠,老鼠会引开那个疯男人,,, c02_保卫科花名册8,不要相信墙里的东西!,,, c02_小猫纸条,大哥!今晚老地方见 /井\,,, diff --git a/asset/dialogue/inspect_content.dialogue b/asset/dialogue/inspect_content.dialogue index fd5d88bf..460db3e7 100644 --- a/asset/dialogue/inspect_content.dialogue +++ b/asset/dialogue/inspect_content.dialogue @@ -32,13 +32,13 @@ ~ c02_保卫科花名册 -一零一四 空 [ID:c02_保卫科花名册1] -一零一五王守义 李兰 [ID:c02_保卫科花名册2] -二零一二 张文开 [ID:c02_保卫科花名册3] -二零一三 方启钊 方小蝉 [ID:c02_保卫科花名册4] +一〇一四 空 [ID:c02_保卫科花名册1] +一〇一五 王守义 李兰 [ID:c02_保卫科花名册2] +二〇一三 张文开 [ID:c02_保卫科花名册3] +二〇一五 方启钊 方小蝉 [ID:c02_保卫科花名册4] -三零一二 吕萍 [ID:c02_保卫科花名册5] -三零一三(看不清) [ID:c02_保卫科花名册6] +三〇一二 吕萍 [ID:c02_保卫科花名册5] +三〇一三 (看不清) [ID:c02_保卫科花名册6] 把我的鞋子拿给老鼠,老鼠会引开那个疯男人 [ID:c02_保卫科花名册7] 不要相信墙里的东西! [ID:c02_保卫科花名册8] => END diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index d94371cb..d7e9610e 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -5,6 +5,7 @@ prop_小猫纸条,小猫纸条,,,[#texture=c02/小猫纸条.png],, prop_小猫纸条_说明,「大哥,今晚老地方见 /井\」,,,,, prop_眼镜,眼镜,,,[#texture=c02/眼镜.png],, prop_眼镜_说明,这副眼镜对我很重要。
记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。
院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。
随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。,,,,, +prop_小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩,鞋不成双,祸事难防。,,,,, index_新游戏,新游戏,,,,, index_继续游戏,继续游戏,,,,, index_退出游戏,退出游戏,,,,, @@ -108,8 +109,8 @@ prop_眼镜盒,眼镜盒,,,[#texture=c02/眼镜盒.png],, prop_眼镜盒_说明,这副眼镜对我很重要。
记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。
院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。
随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。,,,,, prop_小蝉人偶,小蝉人偶,,,[#texture=c02/小蝉人偶.png],, prop_小蝉人偶_说明,小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花。,,,,, -prop_单只小鞋子,单只小鞋子,,,[#texture=c02/小鞋子1.png],, -prop_小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩,鞋不成双,祸事难防。,,,,, +prop_单只小鞋子,一只小鞋子,,,[#texture=c02/小鞋子1.png],, +prop_单只小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩。
鞋不成双,祸事难防。,,,,, c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍吧。,,ID格式: prop_xx_说明,,, c01_s07_需要报纸,书店还没开门。,,,,, c01_s08_书店工作,老板交代的工作还没做完,不能偷懒。,,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index da92b140..13ec28d9 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -135,8 +135,8 @@ 这副眼镜对我很重要。
记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。
院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。
随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。[ID:prop_眼镜盒_说明] 小蝉人偶[#texture=c02/小蝉人偶.png] [ID:prop_小蝉人偶] 小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花。 [ID:prop_小蝉人偶_说明] -单只小鞋子 [#texture=c02/小鞋子1.png] [ID:prop_单只小鞋子] -这只小鞋子曾经属于一个裹了小脚的女孩,鞋不成双,祸事难防。[ID:prop_小鞋子_说明] +一只小鞋子 [#texture=c02/小鞋子1.png] [ID:prop_单只小鞋子] +这只小鞋子曾经属于一个裹了小脚的女孩。
鞋不成双,祸事难防。[ID:prop_单只小鞋子_说明] => END #~ prop说明 diff --git a/asset/dialogue/纯中文_无需本地化.csv b/asset/dialogue/纯中文_无需本地化.csv index a47470cb..43415b89 100644 --- a/asset/dialogue/纯中文_无需本地化.csv +++ b/asset/dialogue/纯中文_无需本地化.csv @@ -21,6 +21,6 @@ c02_议论文字19,你们在说什么妖怪?,,, c02_议论文字20,谁家有妖怪?,,, c02_议论文字21,啥妖怪,,, c02_议论文字22,真的假的妖怪,,, -c02_议论文字23,3014那家有妖怪,,, +c02_议论文字23,三〇一二那家有妖怪,,, c02_议论文字24,要死了,,, c02_议论文字25,养妖怪,,, diff --git a/asset/dialogue/纯中文_无需本地化.dialogue b/asset/dialogue/纯中文_无需本地化.dialogue index f2b5daf4..b82847a3 100644 --- a/asset/dialogue/纯中文_无需本地化.dialogue +++ b/asset/dialogue/纯中文_无需本地化.dialogue @@ -21,7 +21,7 @@ 谁家有妖怪? [ID:c02_议论文字20] 啥妖怪 [ID:c02_议论文字21] 真的假的妖怪 [ID:c02_议论文字22] -3014那家有妖怪 [ID:c02_议论文字23] +三〇一二那家有妖怪 [ID:c02_议论文字23] 要死了 [ID:c02_议论文字24] 养妖怪 [ID:c02_议论文字25] => END \ No newline at end of file diff --git a/manager/archive_manager/assembled_archive.gd b/manager/archive_manager/assembled_archive.gd index aa8163b5..582d301f 100644 --- a/manager/archive_manager/assembled_archive.gd +++ b/manager/archive_manager/assembled_archive.gd @@ -22,9 +22,8 @@ class_name AssembledArchive extends Resource # 只有在 >=0 的情况下才会生效 @export var player_global_position_x := -100.0 @export var player_direction := Vector2(0, 0) -# game total seconds -@export var game_seconds_all := 0 -@export var game_seconds_current := 0 +# game seconds +@export var game_seconds := 0 # created time @export var created_time := "2024-12-24 00:00:00" diff --git a/manager/config_manager/global_config_manager.gd b/manager/config_manager/global_config_manager.gd index 5f89906e..7259fee4 100644 --- a/manager/config_manager/global_config_manager.gd +++ b/manager/config_manager/global_config_manager.gd @@ -62,38 +62,29 @@ func update_locale(lang_id: int, caption_id: int): TranslationServer.set_locale(lang) +var _on_timer_timeout_counter := 0 + + func _on_timer_timeout(): var archive = ArchiveManager.archive - if archive: - archive.game_seconds_all += 5 - archive.game_seconds_current += 5 - if config: + if archive and config: + archive.game_seconds += 5 config.game_total_seconds += 5 - - -func pack_current_time(): - var packed_time = PackedTime.new() - packed_time.time = Time.get_datetime_string_from_system(false, true) - var archive = ArchiveManager.archive - if archive: - packed_time.chapter = archive.current_chapter - packed_time.section = archive.current_section - packed_time.game_archive_id = archive.archive_id - packed_time.game_seconds_all = archive.game_seconds_all - packed_time.game_seconds_current = archive.game_seconds_current + # 30s 打印一次 + if _on_timer_timeout_counter % 6 == 0: + var time = get_concise_timemark(archive) + prints("[timemark]", Time.get_datetime_string_from_system(), time) + _on_timer_timeout_counter += 1 # for log use -func get_concise_timemark() -> String: - var archive = ArchiveManager.archive - if not archive: - return "r0_c0_s0 00:00:00" - var hour = archive.game_seconds_current / 3600 as int - var minute = (archive.game_seconds_current % 3600) / 60 as int - var second = archive.game_seconds_current % 60 +func get_concise_timemark(archive) -> String: + var hour = archive.game_seconds / 3600 as int + var minute = (archive.game_seconds % 3600) / 60 as int + var second = archive.game_seconds % 60 return ( "r" - + str(ArchiveManager.current_archive_id) + + str(config.game_rounds) + "_c" + str(archive.current_chapter) + " " diff --git a/manager/config_manager/packed_time.gd b/manager/config_manager/packed_time.gd index 89d8b431..2f076fa0 100644 --- a/manager/config_manager/packed_time.gd +++ b/manager/config_manager/packed_time.gd @@ -5,8 +5,7 @@ class_name PackedTime extends Resource @export var game_archive_id := 0 @export var game_rounds := 0 @export var timestamp := "2024-12-20 08:00:00" #system -@export var game_seconds_all := 0 #game seconds since current archive start -@export var game_seconds_current := 0 #game seconds since last chapter +@export var game_seconds := 0 #game seconds since last chapter @export var chapter := 0 #chapter id @export var section := 0 #section id diff --git a/manager/scene/scene_manager.gd b/manager/scene/scene_manager.gd index 3971155b..521eba6c 100644 --- a/manager/scene/scene_manager.gd +++ b/manager/scene/scene_manager.gd @@ -270,6 +270,7 @@ func pop_center_texture(texture: Texture2D, duration := 3.5) -> void: var chapter_sfx = preload("uid://qku3yk82g364") + func pop_chapter_notification(id: int) -> void: AudioManager.play_sfx(chapter_sfx) var texture @@ -381,7 +382,8 @@ func show_settings() -> void: #### 游戏场景树暂停计数器,设置、memory、bag 等菜单都会导致 pause var pause_counter := 0 -var pause_counter_mutex := Mutex.new() +var pause_counter_mutex := Mutex.new() + func toggle_pause_counter(plus := true) -> void: # 若不 lock,会导致快速切换菜单时出现并发问题(pause_counter 成为负数) @@ -393,6 +395,12 @@ func toggle_pause_counter(plus := true) -> void: func quit_game() -> void: + # 防止 await 阻塞导致 bug + get_inspector().quit_and_hidden.emit() + DialogueManager.dialogue_ended.emit(null) + get_player().os_finished.emit("") + get_player().animation_finished.emit() + ArchiveManager.save_all() var ground_loader = get_ground_loader() as GroundLoader if ground_loader: diff --git a/scene/entity/pickable.gd b/scene/entity/pickable.gd index 3c45e351..ecbb7788 100644 --- a/scene/entity/pickable.gd +++ b/scene/entity/pickable.gd @@ -90,7 +90,7 @@ func _check_display(): if picked: visible = false elif visible_follow_enabled: - visible = enabled + modulate.a = 1.0 if enabled else 0.0 sign_mark.enabled = enabled and is_visible_in_tree() diff --git a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn index d86ae0d8..d30f12cf 100644 --- a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn +++ b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn @@ -291,7 +291,7 @@ speed = 90.0 position = Vector2(1241, -1) sprite_frames = ExtResource("2_l4axy") animation = &"秋千" -frame = 3 +frame = 5 [node name="Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/秋千"] process_mode = 1 @@ -321,7 +321,7 @@ position = Vector2(1358, 0) sprite_frames = ExtResource("2_l4axy") animation = &"跷跷板" autoplay = "跷跷板" -frame = 5 +frame = 3 [node name="Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/跷跷板"] process_mode = 1 @@ -370,6 +370,7 @@ action_configs = Array[Dictionary]([{ position = Vector2(43, -44.5) sprite_frames = ExtResource("7_dsj2r") animation = &"【画画男孩-1】呼吸" +frame = 1 action_configs = Array[Dictionary]([{ "animation_intro": "【画画男孩-1】呼吸", "animation_next": "【画画男孩-1】画画", @@ -425,6 +426,7 @@ one_shot = false position = Vector2(1558, -12) sprite_frames = ExtResource("7_dsj2r") animation = &"【站立小孩-3】呼吸" +frame = 1 action_configs = Array[Dictionary]([{ "animation_intro": &"【站立小孩-3】转身", "animation_next": "【站立小孩-3】走路", @@ -745,6 +747,7 @@ position = Vector2(377, 18) scale = Vector2(0.9, 0.9) sprite_frames = ExtResource("2_l4axy") animation = &"中蓝衣小孩呼吸" +frame = 2 [node name="门口_右绿衣男孩" parent="Ground/ParallaxForeground/BGParallaxLayer" index="3" instance=ExtResource("8_ouldg")] position = Vector2(408, 3) @@ -756,7 +759,6 @@ light_mask = 2 position = Vector2(333, 9.5) sprite_frames = ExtResource("2_l4axy") animation = &"红衣姑娘呼吸" -frame = 2 action_configs = Array[Dictionary]([{ "animation_intro": &"红衣姑娘抬头", "animation_next": "红衣姑娘呼吸", @@ -777,6 +779,7 @@ texture_scale = 0.5 position = Vector2(301, 8.5) sprite_frames = ExtResource("2_l4axy") animation = &"院长呼吸" +frame = 1 action_configs = Array[Dictionary]([{ "animation_intro": "院长翻书", "animation_next": "院长呼吸", @@ -810,7 +813,6 @@ scale = Vector2(0.8, 0.8) sprite_frames = ExtResource("15_wtosl") animation = &"gif" autoplay = "gif" -frame = 1 centered = false offset = Vector2(0, -159) diff --git a/scene/ground/scene/c02/s03_院子.tscn b/scene/ground/scene/c02/s03_院子.tscn index d361af35..6d2dea1f 100644 --- a/scene/ground/scene/c02/s03_院子.tscn +++ b/scene/ground/scene/c02/s03_院子.tscn @@ -432,6 +432,7 @@ position = Vector2(953, 42) sprite_frames = ExtResource("11_o1qbs") animation = &"c00_头套小婵_run" autoplay = "c00_头套小婵_idle" +frame = 3 move_configs = Array[Dictionary]([{ "animation": "c00_头套小婵_run", "animation_next": "", @@ -785,6 +786,7 @@ position = Vector2(29, -3) sprite_frames = ExtResource("34_1tart") animation = &"小婵_被霸凌" autoplay = "小婵_被霸凌" +frame = 1 [node name="f1" parent="Ground/DeployLayer/霸凌" instance=ExtResource("33_ycojw")] z_index = 10 @@ -792,7 +794,7 @@ position = Vector2(-11, 1) sprite_frames = ExtResource("34_1tart") animation = &"霸凌1" autoplay = "霸凌1" -frame = 6 +frame = 4 [node name="Sfx2D霸凌童谣" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/霸凌/f1"] process_mode = 1 @@ -810,7 +812,7 @@ position = Vector2(23, 11) sprite_frames = ExtResource("34_1tart") animation = &"霸凌2" autoplay = "霸凌2" -frame = 4 +frame = 9 [node name="f3" parent="Ground/DeployLayer/霸凌" instance=ExtResource("33_ycojw")] z_index = 10 @@ -818,7 +820,7 @@ position = Vector2(57, 7) sprite_frames = ExtResource("34_1tart") animation = &"霸凌3" autoplay = "霸凌3" -frame = 1 +frame = 2 [node name="Ambush点火游戏阻挡右移" parent="Ground/DeployLayer/霸凌" instance=ExtResource("25_iyaiw")] position = Vector2(-116, -13) @@ -1007,7 +1009,6 @@ position = Vector2(2229, 41) sprite_frames = ExtResource("34_1tart") animation = &"霸凌3-发抖" autoplay = "霸凌3-发抖" -frame = 1 [node name="Pro小孩喊着火啦3" parent="Ground/DeployLayer/火灾" instance=ExtResource("33_ycojw")] z_index = 9 @@ -1066,6 +1067,7 @@ z_index = 5 position = Vector2(17, -11) sprite_frames = ExtResource("39_rnk1v") animation = &"吕萍牵手动作" +frame = 3 [node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/火灾/牵手跑"] shape = SubResource("RectangleShape2D_vddfx") diff --git a/scene/ground/scene/c02/s06_二楼.gd b/scene/ground/scene/c02/s06_二楼.gd index 97231759..5a93824d 100644 --- a/scene/ground/scene/c02/s06_二楼.gd +++ b/scene/ground/scene/c02/s06_二楼.gd @@ -138,9 +138,24 @@ func _on_ball_game_exit(success = null): ball_game_boys_ambush.enabled = false ball_game_boys_ambush.visible = false +func _toggle_candles(show: bool) -> void: + var candles = $"../DeployLayer/楼梯蜡烛" + var lights = candles.get_children() + if show: + var tween = create_tween() + tween.tween_property(candles, "modulate:a", 1.0, 1.0) + for light in lights: + tween.parallel().tween_property(light, "energy", 1.2, 1.0) + else: + candles.modulate.a = 0.0 + for light in lights: + light.energy = 0.0 + + # 第一章火灾结束,尾声演出 func _c02_final_show(): + _toggle_candles(false) var player = SceneManager.get_player() player.set_facing_direction(Vector2(-1, 0)) player.update_x_with_camera_followed(650.0) @@ -172,16 +187,18 @@ func _on_exit_final_show(_arg): c02_final_layer.get_node("小蝉").play("小婵捂脸") c02_final_layer.get_node("胖子").play("胖子呼吸") c02_final_layer.get_node("瞎子").play("方瞎子呼吸-右") - await get_tree().create_timer(1.0).timeout + await get_tree().create_timer(3.0).timeout $"../DeployLayer/c02_final/瞎子/Sfx2D脚步声".play() await animation_finished c02_final_layer.queue_free() + _toggle_candles(true) await Util.wait(0.5) # 小蝉上楼后开启第二章 var xxdie = $"../DeployLayer/Pro小小蝶上楼" as AnimatedSprite2D xxdie.play("小小小蝶动画(跑)") + xxdie.get_node("Sfx2D脚步声").play() #跑 await xxdie.animation_changed SceneManager.get_player().set_facing_direction(Vector2.RIGHT) diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn index d83e106a..31fbf682 100644 --- a/scene/ground/scene/c02/s06_二楼.tscn +++ b/scene/ground/scene/c02/s06_二楼.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=63 format=3 uid="uid://cootarwb44vvh"] +[gd_scene load_steps=65 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_二楼.gd" id="2_4dg6u"] @@ -26,6 +26,7 @@ [ext_resource type="SpriteFrames" uid="uid://c218xrr85jdc7" path="res://asset/art/gif/c03_小小小蝶上楼道/c03_小小小蝶上楼道_frames.tres" id="13_6iuix"] [ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="14_7x2h6"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="14_k01ve"] +[ext_resource type="AudioStream" uid="uid://oya48ab6e3ye" path="res://asset/audio/sfx/旧版/child/小孩从远到近跑步.wav" id="14_lipxo"] [ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="14_och2w"] [ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="15_k01ve"] [ext_resource type="Texture2D" uid="uid://1pr32tkx4ttl" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_煤油灯座.png" id="16_osg51"] @@ -835,6 +836,10 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_2rktm"] +resource_local_to_scene = true +size = Vector2(20, 400) + [sub_resource type="RectangleShape2D" id="RectangleShape2D_lh55k"] resource_local_to_scene = true size = Vector2(20, 70) @@ -895,7 +900,7 @@ script = ExtResource("2_4dg6u") debug_global_data = Dictionary[String, Variant]({ "c02_2f_xchan_run_away": 0, "c02_ball_game_stage": 1, -"c02_burning_end_stage": 2, +"c02_burning_end_stage": 1, "c02_madman_hitwall": false, "c02_mouse_follow_player": false, "c02_pliers_to_ball": false, @@ -1006,62 +1011,62 @@ prop_key = "prop_2014钥匙" [node name="楼梯蜡烛" type="Node2D" parent="Ground/DeployLayer" index="5"] -[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"] -self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(777.8, -35.3828) -sprite_frames = SubResource("SpriteFrames_lipxo") -autoplay = "default" - -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛"] -position = Vector2(0, -12.8172) +[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"] +position = Vector2(777.8, -48.2) color = Color(0.999971, 0.912551, 0.842208, 1) energy = 1.2 blend_mode = 2 texture = ExtResource("11_2rktm") texture_scale = 0.3 -[node name="小蜡烛2" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"] +[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D"] self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(823, -6) +position = Vector2(0, 12.8172) sprite_frames = SubResource("SpriteFrames_lipxo") autoplay = "default" -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛2"] -position = Vector2(0, -12.8172) +[node name="小蜡烛PointLight2D2" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"] +position = Vector2(823, -18.8172) color = Color(0.999971, 0.912551, 0.842208, 1) energy = 1.2 blend_mode = 2 texture = ExtResource("11_2rktm") texture_scale = 0.3 -[node name="小蜡烛3" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"] +[node name="小蜡烛2" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D2"] self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(774, 3) +position = Vector2(0, 12.8172) sprite_frames = SubResource("SpriteFrames_lipxo") autoplay = "default" -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛3"] -position = Vector2(0, -12.8172) +[node name="小蜡烛PointLight2D3" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"] +position = Vector2(774, -9.8172) color = Color(0.999971, 0.912551, 0.842208, 1) energy = 1.2 blend_mode = 2 texture = ExtResource("11_2rktm") texture_scale = 0.3 -[node name="小蜡烛4" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"] +[node name="小蜡烛3" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D3"] self_modulate = Color(0.611765, 0.611765, 0.611765, 1) -position = Vector2(824, 56) +position = Vector2(0, 12.8172) sprite_frames = SubResource("SpriteFrames_lipxo") autoplay = "default" -[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛4"] -position = Vector2(0, -12.8172) +[node name="小蜡烛PointLight2D4" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"] +position = Vector2(824, 43.1828) color = Color(0.999971, 0.912551, 0.842208, 1) energy = 1.2 blend_mode = 2 texture = ExtResource("11_2rktm") texture_scale = 0.3 +[node name="小蜡烛4" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D4"] +self_modulate = Color(0.611765, 0.611765, 0.611765, 1) +position = Vector2(0, 12.8172) +sprite_frames = SubResource("SpriteFrames_lipxo") +autoplay = "default" + [node name="Pro小小蝶上楼" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_p6da7")] position = Vector2(953, 30) sprite_frames = ExtResource("13_6iuix") @@ -1078,13 +1083,28 @@ move_configs = Array[Dictionary]([{ }]) debug_mov_animation = "小小小蝶动画(跑)" +[node name="Sfx2D脚步声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Pro小小蝶上楼"] +process_mode = 1 +stream = ExtResource("14_lipxo") +max_distance = 1000.0 +attenuation = 1.31951 +bus = &"game_sfx" +script = ExtResource("14_7x2h6") +metadata/_custom_type_script = "uid://wapo47a1oddf" + [node name="Note楼梯杂物堆" parent="Ground/DeployLayer" index="7" instance=ExtResource("10_h3h1a")] position = Vector2(801, -77) texture = ExtResource("7_v3hjg") -sign_mark_offset = Vector2(0, 12.34) +sign_mark_offset = Vector2(0, 1.47) title_filter = "c02" note_key = "c02_二楼楼梯杂物堆" +[node name="Sign" parent="Ground/DeployLayer/Note楼梯杂物堆" index="1"] +sign_mark_offset = Vector2(0, 1.47) + +[node name="CollisionShape2D" parent="Ground/DeployLayer/Note楼梯杂物堆/Area2D" index="0"] +shape = SubResource("RectangleShape2D_2rktm") + [node name="煤油灯" parent="Ground/DeployLayer" index="8" instance=ExtResource("5_3p5ta")] position = Vector2(616, -14) ground_light_texture = ExtResource("8_7x2h6") @@ -1220,8 +1240,7 @@ autostart = false action_configs = Array[Dictionary]([{ "animation_intro": &"胖子呼吸", &"animation_next": "胖子走路", -"animation_wait_time": 0.0, -&"intro_loop": 6 +&"intro_loop": 5 }]) move_configs = Array[Dictionary]([{ "animation": "胖子走路", @@ -1248,14 +1267,11 @@ animation = &"小婵捂脸" autostart = false action_configs = Array[Dictionary]([{ "animation_intro": "小婵捂脸", -&"animation_next": "小婵呼吸", -"animation_wait_time": 0.0, -"intro_loop": 1 +&"animation_next": "小婵呼吸" }, { "animation_intro": &"小婵呼吸", &"animation_next": "小婵走路", -"animation_wait_time": 0.0, -&"intro_loop": 8 +&"intro_loop": 7 }]) move_configs = Array[Dictionary]([{ "animation": "小婵走路", @@ -1276,8 +1292,7 @@ autostart = false action_configs = Array[Dictionary]([{ "animation_intro": &"方瞎子呼吸-右", &"animation_next": "方瞎子走路-左", -"animation_wait_time": 0.0, -&"intro_loop": 7 +&"intro_loop": 6 }]) move_configs = Array[Dictionary]([{ "animation": "方瞎子走路-左", @@ -1394,5 +1409,6 @@ energy = 0.9 blend_mode = 1 [editable path="Ground"] +[editable path="Ground/DeployLayer/Note楼梯杂物堆"] [editable path="Ground/DeployLayer/煤油灯"] [editable path="Ground/DeployLayer/Interactable老鼠洞"] diff --git a/scene/ground/scene/c02/s09_裂缝.tscn b/scene/ground/scene/c02/s09_裂缝.tscn index 94a49742..28b7a157 100644 --- a/scene/ground/scene/c02/s09_裂缝.tscn +++ b/scene/ground/scene/c02/s09_裂缝.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=56 format=4 uid="uid://ryups1dnwdto"] +[gd_scene load_steps=58 format=4 uid="uid://ryups1dnwdto"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_o0m5w"] [ext_resource type="Script" uid="uid://beqnywn1dlnax" path="res://scene/ground/scene/c02/s09_裂缝.gd" id="2_34a6f"] @@ -170,6 +170,18 @@ fill = 1 fill_from = Vector2(0.5, 0.5) fill_to = Vector2(1, 1) +[sub_resource type="Gradient" id="Gradient_dv46s"] +offsets = PackedFloat32Array(0, 0.713622, 1) +colors = PackedColorArray(1, 1, 1, 1, 0.831373, 0.831373, 0.831373, 0, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_4uwnc"] +gradient = SubResource("Gradient_dv46s") +width = 200 +height = 200 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 1) + [node name="S09" type="Node2D"] metadata/_edit_horizontal_guides_ = [-120.0] @@ -184,7 +196,7 @@ debug_global_data = Dictionary[String, Variant]({ "c02_counter_pushed_out": false, "c02_counter_x": 100.0, "enabled_items": {}, -"player_x": 4500.0 +"player_x": 2000.0 }) debug_ground_data = Dictionary[String, Variant]({ "Ambush剪影指天": { @@ -731,7 +743,7 @@ texture = ExtResource("16_7mvsg") position = Vector2(637.5, -19) sprite_frames = ExtResource("21_kpfk1") animation = &"剪影人物床_呼吸" -frame = 3 +frame = 2 action_configs = Array[Dictionary]([{ "animation_intro": "剪影人物床_指天", &"animation_next": "剪影人物床_指天呼吸", @@ -857,45 +869,73 @@ energy = 1.7 range_item_cull_mask = 5 texture = SubResource("GradientTexture2D_xbdgx") -[node name="PointLight2D锅打光" type="PointLight2D" parent="Ground/AmbientLayer" index="7"] +[node name="PointLight2D周边眼睛打光" type="PointLight2D" parent="Ground/AmbientLayer" index="7"] +position = Vector2(1893, -66) +color = Color(0.955664, 0.335062, 0.346781, 1) +energy = 0.7 +range_item_cull_mask = 5 +texture = SubResource("GradientTexture2D_4uwnc") + +[node name="PointLight2D周边眼睛打光2" type="PointLight2D" parent="Ground/AmbientLayer" index="8"] +position = Vector2(1684, -30) +color = Color(0.955664, 0.335062, 0.346781, 1) +energy = 0.7 +range_item_cull_mask = 5 +texture = SubResource("GradientTexture2D_4uwnc") + +[node name="PointLight2D周边眼睛打光3" type="PointLight2D" parent="Ground/AmbientLayer" index="9"] +position = Vector2(1425, -29) +color = Color(0.955664, 0.335062, 0.346781, 1) +energy = 0.7 +range_item_cull_mask = 5 +texture = SubResource("GradientTexture2D_4uwnc") + +[node name="PointLight2D周边眼睛打光4" type="PointLight2D" parent="Ground/AmbientLayer" index="10"] +position = Vector2(1217, -49) +color = Color(0.955664, 0.335062, 0.346781, 1) +energy = 0.7 +range_item_cull_mask = 5 +texture = SubResource("GradientTexture2D_4uwnc") + +[node name="PointLight2D锅打光" type="PointLight2D" parent="Ground/AmbientLayer" index="11"] position = Vector2(2447, -69) range_item_cull_mask = 2 texture = ExtResource("32_dv46s") texture_scale = 1.5 -[node name="PointLight2D独立打光" type="PointLight2D" parent="Ground/AmbientLayer" index="8"] +[node name="PointLight2D独立打光" type="PointLight2D" parent="Ground/AmbientLayer" index="12"] position = Vector2(2440, -45) color = Color(0.854488, 0.195138, 0.240125, 1) range_item_cull_mask = 32 texture = ExtResource("32_dv46s") -[node name="PointLight2D独立打光3" type="PointLight2D" parent="Ground/AmbientLayer" index="9"] +[node name="PointLight2D独立打光3" type="PointLight2D" parent="Ground/AmbientLayer" index="13"] position = Vector2(669, -45) color = Color(0.854488, 0.195138, 0.240125, 1) energy = 1.9 range_item_cull_mask = 5 texture = ExtResource("32_dv46s") -[node name="PointLight2D独立打光4" type="PointLight2D" parent="Ground/AmbientLayer" index="10"] +[node name="PointLight2D独立打光4" type="PointLight2D" parent="Ground/AmbientLayer" index="14"] position = Vector2(318, -36) color = Color(0.854488, 0.195138, 0.240125, 1) energy = 2.5 range_item_cull_mask = 5 texture = ExtResource("32_dv46s") -[node name="ParticalsAsh" parent="Ground/AmbientLayer" index="11" instance=ExtResource("7_4a1t6")] +[node name="ParticalsAsh" parent="Ground/AmbientLayer" index="15" instance=ExtResource("7_4a1t6")] position = Vector2(1091, 1) -[node name="ParticalsAsh2" parent="Ground/AmbientLayer" index="12" instance=ExtResource("7_4a1t6")] +[node name="ParticalsAsh2" parent="Ground/AmbientLayer" index="16" instance=ExtResource("7_4a1t6")] position = Vector2(1715, 5) -[node name="ParticalsAsh3" parent="Ground/AmbientLayer" index="13" instance=ExtResource("7_4a1t6")] +[node name="ParticalsAsh3" parent="Ground/AmbientLayer" index="17" instance=ExtResource("7_4a1t6")] position = Vector2(2622, -9) -[node name="ParticalsAsh5" parent="Ground/AmbientLayer" index="14" instance=ExtResource("7_4a1t6")] +[node name="ParticalsAsh5" parent="Ground/AmbientLayer" index="18" instance=ExtResource("7_4a1t6")] position = Vector2(2782, -7) -[node name="ParticalsAsh4" parent="Ground/AmbientLayer" index="15" instance=ExtResource("7_4a1t6")] +[node name="ParticalsAsh4" parent="Ground/AmbientLayer" index="19" instance=ExtResource("7_4a1t6")] position = Vector2(2987, -12) [node name="MainPlayer" parent="Ground" index="5"] @@ -927,7 +967,6 @@ position = Vector2(3421, 25) points = PackedVector2Array(80, 150, 4500.93, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] -visible = false energy = 0.7 blend_mode = 1 diff --git a/scene/ground/scene/c02/s12_盒子猫.tscn b/scene/ground/scene/c02/s12_盒子猫.tscn index 94e9210c..a8a6d282 100644 --- a/scene/ground/scene/c02/s12_盒子猫.tscn +++ b/scene/ground/scene/c02/s12_盒子猫.tscn @@ -63,9 +63,14 @@ animation = &"猫钻进盒子" [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(232, 71) character = "盒子猫" +player_movement_rect = Rect2(37, -158, 363, 316) facing_direction = Vector2(1, 0) [node name="CameraFocusMarker" parent="Ground" index="6"] +limit_left = 0 +limit_top = -158 +limit_right = 564 +limit_bottom = 158 force_offset = Vector2(-20, 0) [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] @@ -75,6 +80,7 @@ position = Vector2(3584, -7) points = PackedVector2Array(37, 150, 400, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] +energy = 0.7 blend_mode = 1 [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("4_vv3sh")] diff --git a/scene/ground/script/c02/裂缝议论文字.gd b/scene/ground/script/c02/裂缝议论文字.gd index d6730d7b..95a54b52 100644 --- a/scene/ground/script/c02/裂缝议论文字.gd +++ b/scene/ground/script/c02/裂缝议论文字.gd @@ -32,8 +32,7 @@ func _on_area_entered(_body): var tween = create_tween() tween.tween_property(label, "position:y", 3.0, 0.6).set_trans(Tween.TRANS_BOUNCE) tween.tween_property(label, "position:y", 0.0, 0.6).set_trans(Tween.TRANS_BOUNCE) - tween.set_loops(10) - create_tween().tween_property(label, "modulate:a", 0.0, 8.0) + tween.set_loops(1000) func _update_text(): label.text = "[pulse ease=2.0 freq=2 color=#000000cf] " + tr(key) diff --git a/scene/little_game/弹珠游戏/ball.gd b/scene/little_game/弹珠游戏/ball.gd index dede1c72..e59d2b09 100644 --- a/scene/little_game/弹珠游戏/ball.gd +++ b/scene/little_game/弹珠游戏/ball.gd @@ -2,8 +2,8 @@ extends RigidBody2D -signal hit_ball -signal hit_ball_callback +signal hit_ball_touched +signal hit_ball_finished signal hit_boundary @export_enum("1", "2", "3", "4", "5", "6", "7") var id := "1": @@ -61,6 +61,7 @@ func hide_away(): visible = false collision_shape.disabled = true + func ease_out(): collision_shape.disabled = true create_tween().tween_property(self, "modulate:a", 0.0, 0.5) @@ -77,27 +78,39 @@ func _set_up_texture(): sprite2d.texture = texture_dict[id] -var recycling = false +var shoot_count := 0 +var shooted_instances = {} func _on_body_entered(node: Node): - if GlobalConfig.DEBUG: - print("[debug] hit node", node.get_path()) - if recycling or not is_shooter: + if not is_shooter: return - recycling = true - var tween = create_tween() + var tween if node is StaticBody2D: - tween.tween_property(self, "modulate:a", 0.0, 1.0) - tween.tween_callback(hit_boundary.emit) - tween.tween_callback(queue_free) + if shoot_count == 0: + tween = create_tween() + tween.tween_property(self, "modulate:a", 0.0, 1.0) + tween.tween_callback(hit_boundary.emit) + tween.tween_callback(queue_free) return - hit_ball.emit() + # 过滤抖动/重复碰撞 + var instance_id = node.get_instance_id() + if shooted_instances.has(instance_id): + return + print("[debug] first hit node", node.get_path()) + shooted_instances[instance_id] = true + shoot_count += 1 + hit_ball_touched.emit() + tween = create_tween() tween.tween_property(self, "modulate:a", 0.0, 1.5) tween.parallel().tween_property(node, "modulate:a", 0.0, 1.5) - tween.tween_callback(hit_ball_callback.emit) + tween.tween_callback(hit_ball_finished.emit) tween.tween_callback(node.queue_free) tween.tween_callback(queue_free) + print("[ball] shoot count: ", shoot_count) + if shoot_count >= 3: + #TODO 连续射中三个成就 + pass func _process(_delta: float) -> void: diff --git a/scene/little_game/弹珠游戏/弹珠游戏.gd b/scene/little_game/弹珠游戏/弹珠游戏.gd index 782fb3e0..bff2e1fa 100644 --- a/scene/little_game/弹珠游戏/弹珠游戏.gd +++ b/scene/little_game/弹珠游戏/弹珠游戏.gd @@ -128,8 +128,8 @@ func reload_hand_ball() -> void: pivot.move_child(ball, 0) ball.name = "Ball" # ball.rand_id() - ball.hit_ball.connect(_on_hit_ball) - ball.hit_ball_callback.connect(_on_hit_ball_callback) + ball.hit_ball_touched.connect(_on_hit_ball) + ball.hit_ball_finished.connect(_on_hit_ball_finished) ball.hit_boundary.connect(_on_hit_boundary) @@ -198,7 +198,7 @@ func _on_hit_ball(): sfx_shoot.stop() -func _on_hit_ball_callback(): +func _on_hit_ball_finished(): reload_hand_ball() hit_count += 1 if round_id == 0: diff --git a/scene/main.gd b/scene/main.gd index 778c26e5..9201e109 100644 --- a/scene/main.gd +++ b/scene/main.gd @@ -48,3 +48,6 @@ func tween_vignette(ratio := 0.5, duration := 0.3, color := Color.RED): vignette_tween.parallel().tween_property( vignette.material, "shader_parameter/vignette_rgb", color, duration ) + + +