diff --git a/asset/art/little_game/八音盒/新版贴图/八音盒底碎裂.png b/asset/art/little_game/八音盒/新版贴图/八音盒底碎裂.png index 50889772..06c0ff25 100644 Binary files a/asset/art/little_game/八音盒/新版贴图/八音盒底碎裂.png and b/asset/art/little_game/八音盒/新版贴图/八音盒底碎裂.png differ diff --git a/asset/art/little_game/八音盒/新版贴图/八音盒打开.png b/asset/art/little_game/八音盒/新版贴图/八音盒打开.png index 0b87ca24..5a53cd49 100644 Binary files a/asset/art/little_game/八音盒/新版贴图/八音盒打开.png and b/asset/art/little_game/八音盒/新版贴图/八音盒打开.png differ diff --git a/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-07.png b/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-07.png index 8ccae441..d3b12428 100644 Binary files a/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-07.png and b/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-07.png differ diff --git a/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-08.png b/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-08.png index 972a25ff..86cc6e05 100644 Binary files a/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-08.png and b/asset/art/scene/c01/s09_黄包车长场景/动画字幕/动画字幕-08.png differ diff --git a/manager/archive_manager/archive_manager.gd b/manager/archive_manager/archive_manager.gd index 8fdc4582..c4fffcdc 100644 --- a/manager/archive_manager/archive_manager.gd +++ b/manager/archive_manager/archive_manager.gd @@ -231,7 +231,9 @@ func load_config() -> void: func load_archive() -> void: _check_dirs_and_archives() - var selected_id = GlobalConfigManager.config.current_selected_archive_id + var selected_id = 0 + if GlobalConfigManager.config: + selected_id = GlobalConfigManager.config.current_selected_archive_id # if archive and selected_id == archive.archive_id: # return print("load_archive ", selected_id) diff --git a/scene/ground/ground.gd b/scene/ground/ground.gd index bc8d447c..b1007b82 100644 --- a/scene/ground/ground.gd +++ b/scene/ground/ground.gd @@ -155,6 +155,7 @@ func _set_camera_and_player_boundary(): # set_player_boundary get_player().player_movement_rect = player_rect + func _load_footstep_audio(): # foot step sound footstep_audio.audio_collections.clear() diff --git a/scene/ground/scene/animation_root.gd b/scene/ground/scene/animation_root.gd index b21f7ca5..b8a5dd91 100644 --- a/scene/ground/scene/animation_root.gd +++ b/scene/ground/scene/animation_root.gd @@ -1,4 +1,4 @@ -# @tool +@tool class_name AnimationRoot extends AnimationPlayer # 在继承 AnimationRoot 的各场景内的脚本中,可以直接调用 DialogueResource @@ -13,6 +13,15 @@ var dialogue_c06 := preload("res://asset/dialogue/c06.dialogue") as DialogueReso # 首次进入场景时触发 "oneshot_animation_played": false } +# event 也混合其中 +@export var debug_global_data: Dictionary[String, Variant] = { + "enabled_items": ["prop_火柴", "prop_院长的信", "prop_银元"], +} +@export var debug_ground_data: Dictionary[String, Variant] = {} + +@export var auto_reset_on_debug_restarting := true +@export_tool_button("reset 存档") var reset_archive = _reset_archive + var oneshot_animation := "" var ground_archive: GroundArchive var ground: Ground2D @@ -30,6 +39,9 @@ func _ready() -> void: printerr("ground not found") return if ground.restarting: + print("auto reset archive=", auto_reset_on_debug_restarting) + if auto_reset_on_debug_restarting: + _reset_archive() print("restarting: skip animation root _ready()") return data.merge(_default_data(), true) @@ -52,6 +64,92 @@ func _ready() -> void: ready.connect(_on_ready) +func _reset_archive() -> void: + var archive = ( + ResourceLoader.load("user://data/archives/save000.tres", "AssembledArchive") + as AssembledArchive + ) + # 重置全局变量 + var prop_arr = archive.prop_inventory.default_enabled_items + if get_node("../MainPlayer").character.begins_with("吕萍"): + prop_arr = archive.prop_inventory.xdie_enabled_items + elif get_node("../MainPlayer").character.begins_with("小小蝶"): + prop_arr = archive.prop_inventory.xxdie_enabled_items + elif get_node("../MainPlayer").character.begins_with("小小小蝶"): + prop_arr = archive.prop_inventory.xxxdie_enabled_items + for prop in debug_global_data["enabled_items"]: + if not prop_arr.has(prop): + prop_arr.append(prop) + # 从 code 中找到 set_global_entry/get_global_value 方法中第一个 property + var code = get_script().source_code + # set_global_entry(property: StringName, value) + # get_global_value(property: StringName, default = null) + var setter_regx = RegEx.create_from_string(r'set_global_entry\(.?"(.+)"') as RegEx + var getter_regx = RegEx.create_from_string(r'get_global_value\(.?"(.+)"') as RegEx + var properties = {} + for setter_match in setter_regx.search_all(code): + properties[(setter_match as RegExMatch).get_string(1)] = true + for getter_match in getter_regx.search_all(code): + properties[(getter_match as RegExMatch).get_string(1)] = true + for p in properties.keys(): + if debug_global_data.get(p) == null: + debug_global_data[p] = 0 + # archive.set_global_entry(p, new_data[p]) + archive.global_data_dict[p] = debug_global_data[p] + # 重置 ground_archive + if not archive.ground_archives.has(ground.scene_name): + archive.ground_archives[ground.scene_name] = GroundArchive.new() + archive.ground_archives[ground.scene_name].scene_name = ground.scene_name + # setup + _setup_ground_data(debug_ground_data, ground) + archive.ground_archives[ground.scene_name].data = debug_ground_data + # 重置 event 状态 + # EventManager.set_stage(&"c02_burning_end", 2) + # EventManager.set_stage_if_greater("handnote_stage", 5) + var event_setter_regx = RegEx.create_from_string(r'EventManager.set_stage\(.?"(.+)"') as RegEx + var event_getter_regx = RegEx.create_from_string(r'EventManager.get_stage\(.?"(.+)"') as RegEx + var event_set_greater_regx = ( + RegEx.create_from_string(r'set_stage_if_greater\(.?"(.+)"') as RegEx + ) + var events = {} + for event_match in event_setter_regx.search_all(code): + events[(event_match as RegExMatch).get_string(1)] = true + for event_match in event_set_greater_regx.search_all(code): + events[(event_match as RegExMatch).get_string(1)] = true + for event_match in event_getter_regx.search_all(code): + events[(event_match as RegExMatch).get_string(1)] = true + # 遍历 ".." 下所有节点,找到属于 Event2D 的节点 + _find_event2d(events, ground) + for e in events.keys(): + if debug_global_data.get(e) == null: + debug_global_data[e] = 0 + archive.event_stage[e] = debug_global_data[e] + print("reset archive data success") + ResourceSaver.save(archive) + notify_property_list_changed() + +func _setup_ground_data(g_data: Dictionary[String, Variant], node: Node): + if not node: + return + for child in node.get_children(): + if child is Ambush2D and not g_data.has(child.name): + g_data[child.name] = {"played": false} + elif child is Interactable2D and not g_data.has(child.name): + g_data[child.name] = {"interacted_times": 0} + elif child is Pickable2D and not g_data.has(child.name): + g_data[child.name] = {"picked": false} + _setup_ground_data(g_data, child) + + +func _find_event2d(events: Dictionary, node: Node) -> void: + if not node: + return + for child in node.get_children(): + if child is Event2D: + events[child.event] = true + _find_event2d(events, child) + + func _on_ground_ready() -> void: pass @@ -84,11 +182,11 @@ func set_data(property: StringName, value: Variant) -> bool: func set_global_entry(property: StringName, value: Variant) -> void: - ArchiveManager.archive.set_global_entry(property, value) + ArchiveManager.set_global_entry(property, value) func get_global_value(property: StringName, default_value = null) -> Variant: - var val = ArchiveManager.archive.get_global_value(property) + var val = ArchiveManager.get_global_value(property) if val == null: return default_value return val diff --git a/scene/ground/scene/c01/s08_书店.gd b/scene/ground/scene/c01/s08_书店.gd index 6a7b8fb2..f97791f6 100644 --- a/scene/ground/scene/c01/s08_书店.gd +++ b/scene/ground/scene/c01/s08_书店.gd @@ -52,7 +52,7 @@ func _on_ground_ready() -> void: counter.interacted.connect(assign_tasks, CONNECT_ONE_SHOT) ladder.enabled = false envolope_table.enabled = false - envelope_game_success = ArchiveManager.archive.get_global_value(&"envelope_game_success") + envelope_game_success = ArchiveManager.get_global_value(&"envelope_game_success") if envelope_game_success: envolope_table.enabled = false else: @@ -62,7 +62,7 @@ func _on_ground_ready() -> void: envolope_table.prop_key2 = "" envolope_table.interacted.connect(_on_envolope_table_interacted) # 书架工作 - shelf_game_success = ArchiveManager.archive.get_global_value(&"c01_shelf_game_success") + shelf_game_success = ArchiveManager.get_global_value(&"c01_shelf_game_success") if shelf_game_success: _setup_weird_bookstore() else: @@ -131,7 +131,7 @@ var fall_off func _on_shelf_game_success() -> void: - ArchiveManager.archive.set_global_entry(&"c01_shelf_game_success", true) + ArchiveManager.set_global_entry(&"c01_shelf_game_success", true) shelf_game_success = true _setup_weird_bookstore() var player = SceneManager.get_player() as MainPlayer @@ -197,7 +197,7 @@ func _on_envelope_game_success() -> void: SceneManager.release_player() envolope_table.enabled = false create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0) - ArchiveManager.archive.set_global_entry(&"envelope_game_success", true) + ArchiveManager.set_global_entry(&"envelope_game_success", true) envelope_game_success = true _check_portal() diff --git a/scene/ground/scene/c02/s02_过道.gd b/scene/ground/scene/c02/s02_过道.gd index ca1caeb1..f3534ef0 100644 --- a/scene/ground/scene/c02/s02_过道.gd +++ b/scene/ground/scene/c02/s02_过道.gd @@ -128,7 +128,7 @@ func check_if_show_shoes(): # 不论是否推出,都需要 enable 调整为 false $"../DeployLayer/Ambush推小鞋子".enabled = false # 检查是否显示鞋子 - if not ArchiveManager.get_global_value(&"c02_s02_mouse_push_shoe1", false): + if not ArchiveManager.get_global_value(&"c02_s02_mouse_push_shoe", false): return var interactable = $"../DeployLayer/Interactable小鞋子" if interactable.interacted_times > 0: diff --git a/scene/ground/scene/c02/s06_二楼.gd b/scene/ground/scene/c02/s06_二楼.gd index e6b47948..de8c6660 100644 --- a/scene/ground/scene/c02/s06_二楼.gd +++ b/scene/ground/scene/c02/s06_二楼.gd @@ -88,7 +88,7 @@ func _on_mice_hole_interacted(): if mice_hole.interacted_times >= 2: # 触发疯子撞墙,疯子在一楼内侧过道中消失 ArchiveManager.set_global_entry(&"c02_madman_hitwall", true) - ArchiveManager.set_global_entry(&"c02_s02_mouse_push_shoe1", true) + ArchiveManager.set_global_entry(&"c02_s02_mouse_push_shoe", true) # 老鼠散开并不再跟随 ArchiveManager.set_global_entry(&"c02_mouse_follow_player", false) diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn index 23fe7d0f..c4b15342 100644 --- a/scene/ground/scene/c02/s06_二楼.tscn +++ b/scene/ground/scene/c02/s06_二楼.tscn @@ -846,10 +846,44 @@ libraries = { &"": SubResource("AnimationLibrary_k01ve") } script = ExtResource("2_4dg6u") -data = { -"c02_final_show": false, -"oneshot_animation_played": false +debug_global_data = Dictionary[String, Variant]({ +"c02_ball_game_stage": 1, +"c02_burning": true, +"c02_burning_end": 1, +"c02_madman_hitwall": false, +"c02_mouse_follow_player": false, +"c02_pliers_to_ball": false, +"c02_s02_mouse_push_shoe": false, +"c02_the_blind_room_unlocked": true, +"enabled_items": ["prop_火柴", "prop_院长的信", "prop_银元"], +"handnote_stage": 0 +}) +debug_ground_data = Dictionary[String, Variant]({ +"Ambush三男孩": { +"played": false +}, +"Ambush小蝉偷看": { +"played": true +}, +"Closeup弹珠游戏": { +"interacted_times": 0 +}, +"Closeup水盆": { +"interacted_times": 0 +}, +"Closeup谢幕演出": { +"interacted_times": 0 +}, +"Interactable老鼠洞": { +"interacted_times": 0 +}, +"煤油灯": { +"interacted_times": 0 +}, +"煤油灯2": { +"interacted_times": 0 } +}) oneshot_animation = "" [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"] diff --git a/scene/ground/scene/c02/s10_空房间.gd b/scene/ground/scene/c02/s10_空房间.gd index b74aa99a..da4014e5 100644 --- a/scene/ground/scene/c02/s10_空房间.gd +++ b/scene/ground/scene/c02/s10_空房间.gd @@ -20,6 +20,7 @@ const default_counter_x := 364.0 # player x=315.0 counter x=364.0 const player_pull_offset_x := 49.0 +var head_cover_closeup: Closeup2D var xiao_chan_sprite: AnimatedSprite2D var xiao_chan_interactable: Interactable2D var counter: Interactable2D @@ -50,11 +51,24 @@ func _on_ground_ready() -> void: catty_head.triggered.connect(_on_pick_catty_head) - if not $"../DeployLayer/Ambush首次进入血脚印".played: - xiao_chan_sprite.modulate.a = 0 - $"../DeployLayer/血脚印".frame = 0 + $"../DeployLayer/血脚印".frame = 8 if $"../DeployLayer/Ambush首次进入血脚印".played else 0 + + # 先设置 closeup,再设置 xiaochan sprite 与 interactable + head_cover_closeup = $"../DeployLayer/Closeup头套" + if head_cover_closeup.interacted_times > 0: + head_cover_closeup.hide() + head_cover_closeup.enabled = false + xiao_chan_sprite.visible = true else: - $"../DeployLayer/血脚印".frame = 8 + xiao_chan_interactable.enabled = false + xiao_chan_sprite.visible = false + head_cover_closeup.exit.connect(func(): + head_cover_closeup.hide() + head_cover_closeup.enabled = false + xiao_chan_interactable.enabled = true + xiao_chan_sprite.visible = true + ) + if xiao_chan_interactable.interacted_times > 0: xiao_chan_sprite.visible = false counter.enabled = true diff --git a/scene/ground/scene/c02/s10_空房间.tscn b/scene/ground/scene/c02/s10_空房间.tscn index 587cd6f2..0d567993 100644 --- a/scene/ground/scene/c02/s10_空房间.tscn +++ b/scene/ground/scene/c02/s10_空房间.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=30 format=3 uid="uid://dny21yhtuteap"] +[gd_scene load_steps=33 format=3 uid="uid://dny21yhtuteap"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_w7j0m"] [ext_resource type="Script" uid="uid://dkkey7qillk15" path="res://scene/ground/scene/c02/s10_空房间.gd" id="2_egtqi"] @@ -21,6 +21,9 @@ [ext_resource type="SpriteFrames" uid="uid://cwes55ajc3rd4" path="res://asset/art/gif/c02_空房间/c02_空房间_frames.tres" id="15_2j5dr"] [ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="15_e24j0"] [ext_resource type="Texture2D" uid="uid://bp84w8keuelyj" path="res://asset/art/scene/c02/s10_空房间/e_蜡烛-sheet.png" id="15_kqj5r"] +[ext_resource type="Texture2D" uid="uid://ce3kclg1i81l3" path="res://asset/art/scene/c02/s02_大门过道/e_头套(场景中).png" id="17_6uftv"] +[ext_resource type="PackedScene" uid="uid://bffqprfmpt0bx" path="res://scene/ground/script/c02/空房间小蝉头套.tscn" id="18_5t4pt"] +[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="18_8cwaw"] [sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_apn51"] stream_count = 2 @@ -99,7 +102,6 @@ autoplay_group = &"c02_房间里1" metadata/_custom_type_script = "uid://cpejxlfni6n52" [node name="Sfx小蝉出现" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] -process_mode = 1 stream = SubResource("AudioStreamSynchronized_apn51") volume_db = 12.0 bus = &"game_sfx" @@ -107,7 +109,6 @@ script = ExtResource("6_6uftv") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx脚印出现" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="2"] -process_mode = 1 stream = ExtResource("7_5t4pt") volume_db = 10.0 bus = &"game_sfx" @@ -168,7 +169,13 @@ rotation = -1.51912 scale = Vector2(0.34, 0.34) texture = ExtResource("8_3ftnp") -[node name="Interactable柜子" parent="Ground/DeployLayer" index="7" instance=ExtResource("5_ylhfc")] +[node name="Closeup头套" parent="Ground/DeployLayer" index="7" instance=ExtResource("18_8cwaw")] +position = Vector2(344, -39) +texture = ExtResource("17_6uftv") +packed_scene = ExtResource("18_5t4pt") +sign_mark_offset = Vector2(4.37, 46.38) + +[node name="Interactable柜子" parent="Ground/DeployLayer" index="8" instance=ExtResource("5_ylhfc")] position = Vector2(364, 55) texture = ExtResource("6_mty8e") enabled = false @@ -176,20 +183,20 @@ enable_snapper = false mute_when_interacted = true one_shot = false -[node name="大头小蝉" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="8"] +[node name="大头小蝉" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="9"] self_modulate = Color(0.80687, 0.80687, 0.80687, 1) position = Vector2(351, 29.5782) scale = Vector2(0.9, 0.9) sprite_frames = ExtResource("15_2j5dr") animation = &"坐箱子小婵丢人偶" -[node name="Interactable小蝉" parent="Ground/DeployLayer" index="9" instance=ExtResource("5_ylhfc")] +[node name="Interactable小蝉" parent="Ground/DeployLayer" index="10" instance=ExtResource("5_ylhfc")] position = Vector2(350, 15.7751) mute_when_interacted = true disable_prop_after_interacted = true prop_key = "prop_木头人偶" -[node name="Pickable木头人偶" parent="Ground/DeployLayer" index="10" instance=ExtResource("6_27dvh")] +[node name="Pickable木头人偶" parent="Ground/DeployLayer" index="11" instance=ExtResource("6_27dvh")] z_index = 7 position = Vector2(423, 97.6081) sign_mark_offset = Vector2(0, -7.09) @@ -202,13 +209,13 @@ rotation = -1.19178 scale = Vector2(0.25, 0.25) texture = ExtResource("12_27dvh") -[node name="煤油灯" parent="Ground/DeployLayer" index="11" instance=ExtResource("13_27dvh")] +[node name="煤油灯" parent="Ground/DeployLayer" index="12" instance=ExtResource("13_27dvh")] position = Vector2(373, -13.8031) gaslight_energy = 2.0 gaslight_ground_energy = 2.0 mute_when_interacted = false -[node name="拼接小猫玩具" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="12"] +[node name="拼接小猫玩具" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="13"] visible = false light_mask = 32 z_index = 10 @@ -237,7 +244,7 @@ position = Vector2(3, -0.98594) range_item_cull_mask = 32 texture = ExtResource("15_e24j0") -[node name="Ambush首次进入血脚印" parent="Ground/DeployLayer" index="13" instance=ExtResource("14_3ftnp")] +[node name="Ambush首次进入血脚印" parent="Ground/DeployLayer" index="14" instance=ExtResource("14_3ftnp")] position = Vector2(192, 38.4517) cooldown_time = 0.1 hook_method = "first_enter_ambush" diff --git a/scene/ground/scene/c02/s12_盒子猫.gd b/scene/ground/scene/c02/s12_盒子猫.gd index 6a964760..bff09b65 100644 --- a/scene/ground/scene/c02/s12_盒子猫.gd +++ b/scene/ground/scene/c02/s12_盒子猫.gd @@ -38,4 +38,4 @@ func _on_ground_ready() -> void: print("[盒子猫] intro end") anim.visible = false SceneManager.pop_center_notification(tr("ui_boxcat_press_s")) - ArchiveManager.archive.set_global_entry(&"c02_boxcat_skip_intro", true) + ArchiveManager.set_global_entry(&"c02_boxcat_skip_intro", true) diff --git a/scene/ground/scene/c03/s01_瞎子理发店.tscn b/scene/ground/scene/c03/s01_瞎子理发店.tscn index 6e6c5f21..33dceaaf 100644 --- a/scene/ground/scene/c03/s01_瞎子理发店.tscn +++ b/scene/ground/scene/c03/s01_瞎子理发店.tscn @@ -119,10 +119,6 @@ libraries = { &"": SubResource("AnimationLibrary_k01ve") } script = ExtResource("2_jxanq") -data = { -"c02_final_show": false, -"oneshot_animation_played": false -} oneshot_animation = "" [node name="VibeSfx" type="Node" parent="Ground/AnimationPlayer" index="0"] diff --git a/scene/ground/script/c02/空房间小蝉头套.gd b/scene/ground/script/c02/空房间小蝉头套.gd new file mode 100644 index 00000000..5b9c9b50 --- /dev/null +++ b/scene/ground/script/c02/空房间小蝉头套.gd @@ -0,0 +1,5 @@ +extends CanvasLayer + + +func _ready() -> void: + layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME diff --git a/scene/ground/script/c02/空房间小蝉头套.gd.uid b/scene/ground/script/c02/空房间小蝉头套.gd.uid new file mode 100644 index 00000000..66566769 --- /dev/null +++ b/scene/ground/script/c02/空房间小蝉头套.gd.uid @@ -0,0 +1 @@ +uid://criy10vfyc262 diff --git a/scene/ground/script/c02/空房间小蝉头套.tscn b/scene/ground/script/c02/空房间小蝉头套.tscn new file mode 100644 index 00000000..601d13fc --- /dev/null +++ b/scene/ground/script/c02/空房间小蝉头套.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=5 format=3 uid="uid://bffqprfmpt0bx"] + +[ext_resource type="Script" uid="uid://criy10vfyc262" path="res://scene/ground/script/c02/空房间小蝉头套.gd" id="1_yumf6"] +[ext_resource type="Texture2D" uid="uid://ce3kclg1i81l3" path="res://asset/art/scene/c02/s02_大门过道/e_头套(场景中).png" id="2_4w5ks"] +[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_64wgd"] +[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/inspect/inspect背景遮罩.png" id="4_v60v3"] + +[node name="老鼠精画像" type="CanvasLayer"] +script = ExtResource("1_yumf6") + +[node name="TextureRect" type="TextureRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -1143.0 +offset_top = -1012.0 +offset_right = -1143.0 +offset_bottom = -1012.0 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(5, 5) +texture = ExtResource("2_4w5ks") +expand_mode = 1 +stretch_mode = 5 + +[node name="ContentInspector" parent="." instance=ExtResource("3_64wgd")] + +[node name="遮罩" type="TextureRect" parent="ContentInspector"] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_v60v3") +expand_mode = 5 +stretch_mode = 5 + +[node name="Label" type="Label" parent="ContentInspector/遮罩"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -50.0 +offset_top = -7.0 +offset_right = 50.0 +offset_bottom = 7.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "???" +horizontal_alignment = 1 +autowrap_mode = 3 diff --git a/scene/ground/script/c02/追猫猪头怪.gd b/scene/ground/script/c02/追猫猪头怪.gd index f7597355..4753c608 100644 --- a/scene/ground/script/c02/追猫猪头怪.gd +++ b/scene/ground/script/c02/追猫猪头怪.gd @@ -66,7 +66,7 @@ func _on_ground_ready(): queue_free() return # c02_s13 开始追逐; call_deferred 延时设置 - ArchiveManager.archive.set_global_entry.call_deferred( + ArchiveManager.set_global_entry.call_deferred( "c02_boxcat_chasing_started", true ) elif not chasing_started: diff --git a/scene/little_game/八音盒/八音盒.tscn b/scene/little_game/八音盒/八音盒.tscn index c18b891c..38e7ea3e 100644 --- a/scene/little_game/八音盒/八音盒.tscn +++ b/scene/little_game/八音盒/八音盒.tscn @@ -199,7 +199,6 @@ position = Vector2(2.99999, -33.5) polygon = PackedVector2Array(123, -48, -102, -48, -102, -45.8, -104.8, -43, -106.3, -43, -147.3, 42, -149.3, 42, -139, 110.3, -139, 112.5, -135, 119.4, -135, 120, 155.1, 120, 157.4, 114, 158.7, 114, 167.7, 55, 169, 55, 169, 43.5, 123, -45.6) [node name="OpenedBox" type="Sprite2D" parent="All"] -visible = false position = Vector2(-48, 38) texture = ExtResource("16_dtoml") centered = false @@ -296,6 +295,7 @@ position = Vector2(6.4373e-06, -9.53674e-07) polygon = PackedVector2Array(31.5, -37.5, 29.7, -38, 18.4, -38, -19.7, -28.9, -26, -32, -30.7, -32, -32.5, -28.4, -32.5, -23.2, -24.5, -15.2, -24.5, -9.6, -20.5, -8.3, -20.5, 4.5, -17.7, 10, -14.5, 30.3, -14.5, 32, -10.5, 35, -10.5, 37, 3.3, 37, 4.5, 26.1, 6.2, 25, 9.3, 25, 7.5, 19.6, 10.6, 14, 13.1, 14, 10.5, 4, 10.5, 3.2, 21, -2, 23.6, -2, 31.6, -14, 32.5, -14, 32.5, -22.4, 31.5, -28.3) [node name="Drawer" type="Node2D" parent="All"] +visible = false position = Vector2(20.5, 0) [node name="BoxDrawer" type="Sprite2D" parent="All/Drawer"] diff --git a/scene/ux/prop_inventory_resource.gd b/scene/ux/prop_inventory_resource.gd index 691c9c1b..2ed7ff89 100644 --- a/scene/ux/prop_inventory_resource.gd +++ b/scene/ux/prop_inventory_resource.gd @@ -14,24 +14,24 @@ signal current_item_changed(prop_key: String) else: current_item_changed.emit("") # 重要物品,不可丢弃,在背包可见 -@export var important_items := [] +@export var important_items := [] as Array[String] # 未查看的重要物品,红点效果 -@export var unviewed_important_items := [] +@export var unviewed_important_items := [] as Array[String] -@export var default_enabled_items := [] -@export var xdie_enabled_items := [] -@export var xxdie_enabled_items := [] -@export var xxxdie_enabled_items := [] -var enabled_items := [] +@export var default_enabled_items := [] as Array[String] +@export var xdie_enabled_items := [] as Array[String] +@export var xxdie_enabled_items := [] as Array[String] +@export var xxxdie_enabled_items := [] as Array[String] +var enabled_items := [] as Array[String] func checkout(character: String): # @export_enum("吕萍", "吕萍爬行", "吕萍带小猫", "吕萍推柜子", "小小蝶", "盒子猫", "小小小蝶") var character := "吕萍": - if character == "小小蝶": + if character.begins_with("小小小蝶"): enabled_items = xxdie_enabled_items - elif character == "小小小蝶": + elif character.begins_with("小小蝶"): enabled_items = xxxdie_enabled_items - elif character.substr(0, 2) == "吕萍": + elif character.begins_with("吕萍"): enabled_items = xdie_enabled_items else: enabled_items = default_enabled_items