diff --git a/asset/art/animation/c00_吕萍_拉大柜子呼吸/0.png.import b/asset/art/animation/c00_吕萍_拉大柜子呼吸/0.png.import index 8ca3e46e..2529244f 100644 --- a/asset/art/animation/c00_吕萍_拉大柜子呼吸/0.png.import +++ b/asset/art/animation/c00_吕萍_拉大柜子呼吸/0.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bjcwam373niuj" +uid="uid://d2a8v65x8u64h" path="res://.godot/imported/0.png-1aab378c87b04304d8dcec5a1190dca2.ctex" metadata={ "vram_texture": false diff --git a/asset/art/animation/c00_吕萍_拉大柜子呼吸/1.png.import b/asset/art/animation/c00_吕萍_拉大柜子呼吸/1.png.import index a8e11991..df73552a 100644 --- a/asset/art/animation/c00_吕萍_拉大柜子呼吸/1.png.import +++ b/asset/art/animation/c00_吕萍_拉大柜子呼吸/1.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://u3b8f8uxit1g" +uid="uid://6cxyqj3wwx21" path="res://.godot/imported/1.png-a7156a0b94ca43df335798200a0fb921.ctex" metadata={ "vram_texture": false diff --git a/asset/art/prop/c03/ux_药方.png b/asset/art/prop/c03/ux_药方.png new file mode 100644 index 00000000..1dae64d0 Binary files /dev/null and b/asset/art/prop/c03/ux_药方.png differ diff --git a/asset/art/prop/c03/ux_药方.png.import b/asset/art/prop/c03/ux_药方.png.import new file mode 100644 index 00000000..7ea78d9b --- /dev/null +++ b/asset/art/prop/c03/ux_药方.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://r2idykchn6re" +path="res://.godot/imported/ux_药方.png-d11665237e651df0b7eba60183e92fb9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/prop/c03/ux_药方.png" +dest_files=["res://.godot/imported/ux_药方.png-d11665237e651df0b7eba60183e92fb9.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/prop/c03/药方.png b/asset/art/prop/c03/药方.png new file mode 100644 index 00000000..6db94f25 Binary files /dev/null and b/asset/art/prop/c03/药方.png differ diff --git a/asset/art/prop/c03/药方.png.import b/asset/art/prop/c03/药方.png.import new file mode 100644 index 00000000..b17e91ee --- /dev/null +++ b/asset/art/prop/c03/药方.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7nqae67exhj8" +path="res://.godot/imported/药方.png-e9b34c566bd79c8ab8d1647f22ea2884.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/prop/c03/药方.png" +dest_files=["res://.godot/imported/药方.png-e9b34c566bd79c8ab8d1647f22ea2884.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/dialogue/event_stage.csv b/asset/dialogue/event_stage.csv index 1d119a39..5d336ce3 100644 --- a/asset/dialogue/event_stage.csv +++ b/asset/dialogue/event_stage.csv @@ -1,6 +1,6 @@ keys,zh_CN,_character,_notes,_tags -c03_invite_xchan_supper=2 & c03_laizi_braid=2 ~ c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_laizi_braid=2 ~ c03_f2_madman_runaway=2,,, -c03_invite_xchan_supper=2 & c03_laizi_braid=2 -> c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_laizi_braid=2 -> c03_f2_madman_runaway=2,,, +c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 ~ c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 ~ c03_f2_madman_runaway=2,,, +c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 -> c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 -> c03_f2_madman_runaway=2,,, 0:demo 1:release,0:demo 1:release,release_stage,, 1:序章 2:第一章 3:第二章 4:第三章 5:第四章 6:尾声,1:序章 2:第一章 3:第二章 4:第三章 5:第四章 6:尾声,current_chapter_stage,, 0:初始化_关闭 1:打开 2:放入小蝉人偶 3:全部放置正确_可摇手柄 4:已播放完成,0:初始化_关闭 1:打开 2:放入小蝉人偶 3:全部放置正确_可摇手柄 4:已播放完成,c02_musicbox_stage,, @@ -8,8 +8,8 @@ c03_invite_xchan_supper=2 & c03_laizi_braid=2 -> c03_f2_madman_runaway=2,c03_inv 0:初始化 1:寻找弹珠_老虎钳可以换弹珠 2:给出弹珠 3:游戏结束_小猫纸片 4:游戏结束_小猫离开,0:初始化 1:寻找弹珠_老虎钳可以换弹珠 2:给出弹珠 3:游戏结束_小猫纸片 4:游戏结束_小猫离开,c02_ball_game_stage,, 0:初始化 1:已放肉,0:初始化 1:已放肉,c03_s01_meat_put,, 0:初始化 1:已偷听_需邀请 2:完成邀请,0:初始化 1:已偷听_需邀请 2:完成邀请,c03_invite_xchan_supper,, -0:初始化 1:已使用剪刀 2:已剪下,0:初始化 1:已使用剪刀 2:已剪下,c03_laizi_braid,, +0:初始化 1:已使用剪刀 2:已剪下,0:初始化 1:已使用剪刀 2:已剪下,c03_s03_laizi_braid,, 0:初始化 1:跑开_纸人挡路 2:消除纸人,0:初始化 1:跑开_纸人挡路 2:消除纸人,c03_f2_madman_runaway,, -c03_invite_xchan_supper=2 & c03_laizi_braid=2 & c03_mahjong_game=1 -> c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_laizi_braid=2 & c03_mahjong_game=1 -> c03_f2_madman_runaway=2,,, +c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 & c03_mahjong_game=1 -> c03_f2_madman_runaway=2,c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 & c03_mahjong_game=1 -> c03_f2_madman_runaway=2,,, 0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏,0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏,c03_before_mahjong_game,, 0:麻将理牌 1:麻将出千 2:麻将结束 3:演出结束,0:麻将理牌 1:麻将出千 2:麻将结束 3:演出结束,c03_mahjong_game,, diff --git a/asset/dialogue/event_stage.dialogue b/asset/dialogue/event_stage.dialogue index 442a6df9..8112f67a 100644 --- a/asset/dialogue/event_stage.dialogue +++ b/asset/dialogue/event_stage.dialogue @@ -12,9 +12,9 @@ c02_ball_game_stage: 0:初始化 1:寻找弹珠_老虎钳可以换弹珠 2:给 ~ EventStage_c03 c03_s01_meat_put: 0:初始化 1:已放肉 c03_invite_xchan_supper: 0:初始化 1:已偷听_需邀请 2:完成邀请 -c03_laizi_braid: 0:初始化 1:已使用剪刀 2:已剪下 +c03_s03_laizi_braid: 0:初始化 1:已使用剪刀 2:已剪下 c03_f2_madman_runaway: 0:初始化 1:跑开_纸人挡路 2:消除纸人 -c03_invite_xchan_supper=2 & c03_laizi_braid=2 -> c03_f2_madman_runaway=2 +c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 -> c03_f2_madman_runaway=2 c03_before_mahjong_game: 0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏 c03_mahjong_game: 0:麻将理牌 1:麻将出千 2:麻将结束 3:演出结束 => END diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index f612ca7a..791c3243 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -124,6 +124,8 @@ prop_2013钥匙,2013钥匙,,,[#texture=c03/2013钥匙.png],, prop_2013钥匙_说明,说明,,,,, prop_胖子的钥匙,胖子的钥匙,,,[#texture=c03/胖子的钥匙.png],, prop_胖子的钥匙_说明,说明,,,,, +prop_药方,药方,,,[#texture=c03/药方.png][#inspect=c03/ux_药方.png],, +prop_药方_说明,说明,,,,, prop_院长的信,院长的信,,,[#texture=c01/院长的信物品.png][#inspect=c01/院长的信.png],,Director's Letter prop_院长的信_说明,小萍:{br}你现下境况如何?{br}你虽离开浦育院已久,但我始终没有忘记为你祈祷。{br}愿上帝保佑你走向真正光明的道路。我相信这也是当年你父亲将你托付给我时的殷切愿景。{br}你既已成人,无论你的父母出于何种理由选择与你分离,你都应当拥有知晓真相的权利,所以我将公寓地址附在了信后,除此之外,我亦知之甚少。{br}若有闲暇,欢迎你回浦育院看看。{br}院长童玉君{br}民国二十一年十月十五日{br}公寓地址 芦昌路26弄3号,,,,,"Xiao Ping:{br}How are you faring now?{br}Though you left Puyu Orphanage long ago, I have never forgotten to pray for you.{br}May God bless you to walk the path of true enlightenment. I believe this was also your father's earnest wish when he entrusted you to my care.{br}Now that you are grown, regardless of whatever reasons your parents had for separating from you, you deserve the right to know the truth. I have attached the apartment address to this letter, though I know little beyond this.{br}If you have time, you are welcome to visit Puyu Orphanage.{br}Director Tong Yujun{br}October 15th, Year 21 of the Republic{br}Apartment Address: No. 3, Lane 26, Luchang Road" prop_船票,船票,,,[#texture=c02/船票.png],,Boat Ticket @@ -229,6 +231,9 @@ c03_s01_偷听完3012,......,,,,,..... c03_s02_note_key_coverer,太暗了看不清,,,,, c03_s02_未点灯,?打不开,,,,, c03_s02_通风管道,?打不开,,,,, -c03_s02_小蝉的床,小蝉的床,,,,, +c03_s02_小蝉的床,?小蝉的床,,,,, +c03_s02_带血的手帕,?带血的手帕,,,,, +c03_s02_小蝉寻人启事,?小蝉寻人启事,,,,, c03_s03_获得剪刀纸舌头,?✂️纸人,,,,, +c03_s03_桌子,?桌子,,,,, c03_s03_洗头盆,?洗头盆,,,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index f5f1d3e7..138e3248 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -147,6 +147,8 @@ 说明 [ID:prop_2013钥匙_说明] 胖子的钥匙 [#texture=c03/胖子的钥匙.png] [ID:prop_胖子的钥匙] 说明 [ID:prop_胖子的钥匙_说明] +药方 [#texture=c03/药方.png][#inspect=c03/ux_药方.png] [ID:prop_药方] +说明 [ID:prop_药方_说明] # 旧版 diff --git a/manager/event_manager/event_manager.gd b/manager/event_manager/event_manager.gd index 3dd2abe7..a1d768df 100644 --- a/manager/event_manager/event_manager.gd +++ b/manager/event_manager/event_manager.gd @@ -39,7 +39,7 @@ func _load_and_parse_formulas() -> void: # 解析单行规则,构建公式并添加到字典中。 -# 示例: "c03_invite_xchan_supper=2 & c03_laizi_braid=2 -> c03_f2_madman_runaway=2" +# 示例: "c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2 -> c03_f2_madman_runaway=2" func _build_and_add_formula(line_text: String) -> void: var parts: PackedStringArray = line_text.split("->") if parts.size() != 2: @@ -73,7 +73,7 @@ func _build_and_add_formula(line_text: String) -> void: # 构建条件 Callable。重构为迭代,而不是递归,以提高清晰度和健壮性。 -# 示例: "c03_invite_xchan_supper=2 & c03_laizi_braid=2" +# 示例: "c03_invite_xchan_supper=2 & c03_s03_laizi_braid=2" func _build_condition(text: String, r_condition_events: Array[StringName]) -> Callable: var condition_text := text.strip_edges() if condition_text.is_empty(): @@ -218,17 +218,24 @@ func prop_interacted(e_name, prop_key, interacted_times) -> void: # event_name -> {stages:PackedStringArray, update_time:int} var _debug_event_stage_dict := {} - +var _event_stage_map_update_time := 0 +var _event_stage_map_mutex := Mutex.new() # return: stages func get_event_stage_map_array(event_name: StringName) -> PackedStringArray: if not Engine.is_editor_hint(): return PackedStringArray() var current_dict = _debug_event_stage_dict.get(event_name) - var time_msec = Time.get_ticks_msec() + var time_msec := Time.get_ticks_msec() # 3秒更新 - if current_dict and time_msec - current_dict["update_time"] < 3000: - return current_dict["stages"] + _event_stage_map_mutex.lock() + if time_msec - _event_stage_map_update_time < 3000: + _event_stage_map_mutex.unlock() + if current_dict: + return current_dict["stages"] + else: + return PackedStringArray() + _event_stage_map_update_time = time_msec # 文件: res://asset/dialogue/event_stage.dialogue var event_stage_resource = load("uid://dohpsb4jttuv1") as DialogueResource print("[EventManager] get_event_stage_map_array refreshing...") @@ -254,8 +261,8 @@ func get_event_stage_map_array(event_name: StringName) -> PackedStringArray: stages[id] = str(id) _debug_event_stage_dict[e_name] = { "stages": stages, - "update_time": time_msec, } + _event_stage_map_mutex.unlock() if _debug_event_stage_dict.has(event_name): prints("reload", event_name, "stages:", _debug_event_stage_dict[event_name]["stages"]) return _debug_event_stage_dict[event_name]["stages"] diff --git a/scene/entity/closeup.gd b/scene/entity/closeup.gd index 2c468bc0..4ff09c07 100644 --- a/scene/entity/closeup.gd +++ b/scene/entity/closeup.gd @@ -9,6 +9,8 @@ signal exit(arg) @export var packed_scene: PackedScene @export var quit_closeup_on_cancel := true @export_tool_button("新建特写场景") var create_closeup_scene = _create_scene_with_script +# 在 exit 信号前,禁用 cancel +var _holding_cancel_before_exit := false var current_child: Node @@ -19,6 +21,10 @@ func _ready() -> void: return interacted.connect(display) +func hold_cancel_before_exit() -> void: + _holding_cancel_before_exit = true + + # 可以直接调用 func display() -> void: @@ -47,14 +53,15 @@ func _exit(arg = null): exit.emit(arg) # 退出时,恢复 sign_mark 的输入 sign_mark.pass_unhandled_input = false - + # exit 信号后,恢复处理 cancel 事件 + _holding_cancel_before_exit = false func _unhandled_input(event: InputEvent) -> void: if not current_child: return if event.is_action_pressed("cancel"): get_viewport().set_input_as_handled() - if quit_closeup_on_cancel: + if quit_closeup_on_cancel and not _holding_cancel_before_exit: _exit() # 在有特写界面时,阻塞 interact 输入 elif event.is_action_pressed("interact"): diff --git a/scene/ground/scene/c02/s06_二楼.gd b/scene/ground/scene/c02/s06_二楼.gd index b41603f3..1e3430e1 100644 --- a/scene/ground/scene/c02/s06_二楼.gd +++ b/scene/ground/scene/c02/s06_二楼.gd @@ -22,8 +22,8 @@ var c02_final_layer func _on_ground_ready() -> void: c02_final_layer = $"../DeployLayer/c02_final" - if EventManager.get_stage("c02_burning_end_stage") > 0: - # 进入收尾阶段时,隐藏杂物堆,增加传送 + if EventManager.get_stage("c02_burning_end_stage") > 0 or EventManager.get_chapter_stage() >= 3: + # 进入收尾阶段 / 第二章时,隐藏杂物堆,增加传送 $"../DeployLayer/Note楼梯杂物堆".queue_free() $"../DeployLayer/portal_3".enabled = true diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn index f3301e33..0cf4fca4 100644 --- a/scene/ground/scene/c02/s06_二楼.tscn +++ b/scene/ground/scene/c02/s06_二楼.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=68 format=3 uid="uid://cootarwb44vvh"] +[gd_scene load_steps=69 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"] @@ -17,6 +17,7 @@ [ext_resource type="SpriteFrames" uid="uid://blij4obvhb1vf" path="res://asset/art/gif/c02_公寓过道/c02_公寓过道_frames.tres" id="8_nh8we"] [ext_resource type="PackedScene" uid="uid://8frowlq301" path="res://scene/ground/script/c02/s00_跟随的老鼠.tscn" id="9_58d45"] [ext_resource type="Texture2D" uid="uid://bp84w8keuelyj" path="res://asset/art/scene/c02/s10_空房间/e_蜡烛-sheet.png" id="10_6iuix"] +[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="10_e5pbx"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="10_h3h1a"] [ext_resource type="SpriteFrames" uid="uid://c8dl7c68f1yb0" path="res://asset/art/gif/c02_二楼/c02_二楼_frames.tres" id="10_och2w"] [ext_resource type="PackedScene" uid="uid://b50n0hvs4yh75" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.tscn" id="10_p6da7"] @@ -968,8 +969,19 @@ position = Vector2(554, 7) debug_note = "胖子房间" enabled = false portal_name = "4" -target_scene = "c03_s01" -target_portal = "right" +target_scene = "c03_s06" +target_portal = "left" +status = "locked" +prop_key = "prop_胖子的钥匙" + +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/portal_4"] +script = ExtResource("10_e5pbx") +memo = "current_chapter_stage!=[0:0|1:序章|2:第一章] 时,启用: [_4] +" +updater_event = &"current_chapter_stage" +updater_stage_mode = "exclude" +updater_stages = Array[int]([0, 1, 2]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" [node name="左侧纸人" type="Sprite2D" parent="Ground/DeployLayer" index="6"] visible = false @@ -1411,6 +1423,7 @@ texture = ExtResource("5_26mqt") points = PackedVector2Array(26, 150, 900, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] +visible = false energy = 0.9 blend_mode = 1 diff --git a/scene/ground/scene/c03/s02_瞎子新卧室.gd b/scene/ground/scene/c03/s02_瞎子新卧室.gd index 4c0c4792..4edb89f0 100644 --- a/scene/ground/scene/c03/s02_瞎子新卧室.gd +++ b/scene/ground/scene/c03/s02_瞎子新卧室.gd @@ -56,6 +56,8 @@ func _gaslight_up() -> void: func _set_notes_coverer(coverer: String) -> void: note小蝉的床.note_key_coverer = coverer note通风管道.note_key_coverer = coverer + note小蝉的寻人启事.note_key_coverer = coverer + note带血的手帕.note_key_coverer = coverer func scratching_cat_interacted() -> void: diff --git a/scene/ground/scene/c03/s02_瞎子新卧室.tscn b/scene/ground/scene/c03/s02_瞎子新卧室.tscn index 2bbb9a3c..4bea74ef 100644 --- a/scene/ground/scene/c03/s02_瞎子新卧室.tscn +++ b/scene/ground/scene/c03/s02_瞎子新卧室.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://ctwy1ubhm68la"] +[gd_scene load_steps=33 format=3 uid="uid://ctwy1ubhm68la"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_jad6f"] [ext_resource type="Script" uid="uid://tk4wg0i4payx" path="res://scene/ground/scene/c03/s02_瞎子新卧室.gd" id="2_y504i"] @@ -24,11 +24,23 @@ [ext_resource type="Texture2D" uid="uid://c86bfer5qwp2g" path="res://asset/art/scene/c03/s02_瞎子新卧室/桌上放着邀请信.png" id="13_yl4ee"] [ext_resource type="Texture2D" uid="uid://l7cuvw1k5xc1" path="res://asset/art/scene/c03/s02_瞎子新卧室/洋糕点和符纸.png" id="18_t8u8e"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="23_6show"] +[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="23_qq2pn"] [ext_resource type="Texture2D" uid="uid://ct02nauw1f5v5" path="res://asset/art/prop/c03/1015钥匙.png" id="24_ac6iq"] [ext_resource type="SpriteFrames" uid="uid://c8dl7c68f1yb0" path="res://asset/art/gif/c02_二楼/c02_二楼_frames.tres" id="24_omt0s"] +[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="24_oquyy"] +[ext_resource type="Texture2D" uid="uid://cylsq5cvhlp18" path="res://asset/art/tool/point_light.png" id="24_t3gtq"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] +[sub_resource type="Gradient" id="Gradient_oquyy"] +offsets = PackedFloat32Array(1) +colors = PackedColorArray(1, 1, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_5cqb4"] +gradient = SubResource("Gradient_oquyy") +width = 600 +height = 300 + [node name="S02" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -178,6 +190,28 @@ action_configs = Array[Dictionary]([{ "intro_loop": 1 }]) +[node name="Sfx老鼠精" type="AudioStreamPlayer" parent="Ground/DeployLayer/Event2D偷听陆仁对话后"] +bus = &"game_sfx" +script = ExtResource("23_qq2pn") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="灯光" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event2D偷听陆仁对话后"] +position = Vector2(167, 17) +scale = Vector2(0.3, 0.3) +sprite_frames = ExtResource("24_oquyy") +animation = &"火苗" +autoplay = "火苗" + +[node name="LightAdder" type="PointLight2D" parent="Ground/DeployLayer/Event2D偷听陆仁对话后"] +position = Vector2(174, 20) +texture = ExtResource("24_t3gtq") + +[node name="LightSubtracter" type="PointLight2D" parent="Ground/DeployLayer/Event2D偷听陆仁对话后"] +position = Vector2(272, -3) +energy = 0.0 +blend_mode = 1 +texture = SubResource("GradientTexture2D_5cqb4") + [node name="Ambush小猫挠墙" parent="Ground/DeployLayer" index="13" instance=ExtResource("23_6show")] unique_name_in_owner = true position = Vector2(507, 49) @@ -224,7 +258,6 @@ scale = Vector2(1.1, 1.1) points = PackedVector2Array(17, 150, 509, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] -visible = false energy = 0.8 blend_mode = 1 diff --git a/scene/ground/scene/c03/s03_瞎子理发店.gd b/scene/ground/scene/c03/s03_瞎子理发店.gd index bc4a83bf..e753a071 100644 --- a/scene/ground/scene/c03/s03_瞎子理发店.gd +++ b/scene/ground/scene/c03/s03_瞎子理发店.gd @@ -42,5 +42,8 @@ func _check_if_flyer_shaven(_arg = false) -> void: func _on_laizi_exit(_arg = false) -> void: if _arg: + SceneManager.lock_player() # TODO SceneManager.pop_debug_dialog_info("美术&音效", "剪辫子演出") + await Util.wait(2.0) + SceneManager.unlock_player() diff --git a/scene/ground/scene/c03/s04_李癞房间.tscn b/scene/ground/scene/c03/s04_李癞房间.tscn index 8005c7a4..398cf8a4 100644 --- a/scene/ground/scene/c03/s04_李癞房间.tscn +++ b/scene/ground/scene/c03/s04_李癞房间.tscn @@ -35,9 +35,9 @@ metadata/_custom_type_script = "uid://cpejxlfni6n52" [node name="EventBinder" type="Node" parent="Ground/AnimationPlayer" index="1"] script = ExtResource("4_35fjj") -memo = "c03_laizi_braid=[0:初始化] 时,显示: [animationplayer] +memo = "c03_s03_laizi_braid=[0:初始化] 时,显示: [animationplayer] " -updater_event = &"c03_laizi_braid" +updater_event = &"c03_s03_laizi_braid" updater_mode = "shower" updater_ease_duration = 0.0 updater_stages = Array[int]([0]) diff --git a/scene/ground/script/c03/s03_closeup癞子纸人.gd b/scene/ground/script/c03/s03_closeup癞子纸人.gd index dadfc0f3..8433f58b 100644 --- a/scene/ground/script/c03/s03_closeup癞子纸人.gd +++ b/scene/ground/script/c03/s03_closeup癞子纸人.gd @@ -15,10 +15,9 @@ func _ready() -> void: _check_if_notify_to_use_prop() # 如果用过剪刀,则直接展示后脑勺 # 0:初始化 1:已使用剪刀 2:已剪下 - if EventManager.get_stage("c03_laizi_braid") > 0: + if EventManager.get_stage("c03_s03_laizi_braid") > 0: $"头".hide() $"头受伤".hide() - $"后脑勺".show() func _on_paper_coin_picked(_node = null) -> void: if GlobalFunctor.c03_get_paper_coin(): @@ -26,15 +25,19 @@ func _on_paper_coin_picked(_node = null) -> void: _check_if_notify_to_use_prop() func _on_braid_interacted() -> void: + var closeup = get_parent() as Closeup2D + # 禁用 cancel to quit + closeup.hold_cancel_before_exit() SceneManager.enable_prop_item("prop_剪下的辫子") await SceneManager.get_inspector().quit_and_hidden + await Util.wait(1.0) # 退出,播放剪辫子演出 exit.emit(true) func _check_if_notify_to_use_prop() -> void: - if EventManager.get_stage("c03_papercoin1") > 0 and EventManager.get_stage("c03_papercoin2") > 0: - if EventManager.get_stage("c03_laizi_braid") > 0: + if EventManager.get_stage("c03_s03_papercoin1") > 0 and EventManager.get_stage("c03_s03_papercoin2") > 0: + if EventManager.get_stage("c03_s03_laizi_braid") > 0: return elif SceneManager.has_prop("prop_剪刀"): SceneManager.pop_center_notification("ui_center_notify_use_prop") @@ -52,7 +55,7 @@ var using_scissors = false # 尝试使用剪刀进行互动 func _try_interact() -> void: # 纸钱还没拿完 - if EventManager.get_stage("c03_papercoin1") == 0 or EventManager.get_stage("c03_papercoin2") == 0: + if EventManager.get_stage("c03_s03_papercoin1") == 0 or EventManager.get_stage("c03_s03_papercoin2") == 0: return if SceneManager.get_current_prop() != "prop_剪刀": SceneManager.get_prop_hud().on_toggle_invalid_prop() @@ -60,12 +63,10 @@ func _try_interact() -> void: if using_scissors: return using_scissors = true - # $"头".hide() # TODO SceneManager.pop_debug_dialog_info("音效", "使用剪刀(惊悚)") $"头".hide() await Util.wait(1.5) $"头受伤".hide() - $"后脑勺".show() SceneManager.disable_prop_item("prop_剪刀") - EventManager.set_stage("c03_laizi_braid", 1) + EventManager.set_stage("c03_s03_laizi_braid", 1) diff --git a/scene/ground/script/c03/s03_closeup癞子纸人.tscn b/scene/ground/script/c03/s03_closeup癞子纸人.tscn index 8ab5fc89..563a4852 100644 --- a/scene/ground/script/c03/s03_closeup癞子纸人.tscn +++ b/scene/ground/script/c03/s03_closeup癞子纸人.tscn @@ -4,7 +4,7 @@ [ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_uenj0"] [ext_resource type="Texture2D" uid="uid://e88x3ihvhetd" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/背景.png" id="2_xao0c"] [ext_resource type="Texture2D" uid="uid://cxlwpf82sqc8p" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/1辫子没剪开.png" id="3_abwb2"] -[ext_resource type="Texture2D" uid="uid://b7s25rgph0111" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/辫子散了.png" id="3_jijuh"] +[ext_resource type="Texture2D" uid="uid://cpri1f3b2blfw" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/1辫子散开.png" id="3_jijuh"] [ext_resource type="Texture2D" uid="uid://c12xhretrdxs6" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/1大头.png" id="4_8yx5x"] [ext_resource type="Texture2D" uid="uid://doqxrw48g45iy" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子特写/伤口_头.png" id="4_c581m"] [ext_resource type="PackedScene" uid="uid://bkk1rxx36ghrl" path="res://scene/entity/ux/hover_light_click_area.tscn" id="4_nc54a"] @@ -62,17 +62,17 @@ texture = ExtResource("5_jijuh") [node name="EventBinder" type="Node" parent="后脑勺/HoverBraid"] script = ExtResource("6_uenj0") -memo = "[hoverbraid] interacted 时: c03_laizi_braid=2:已剪下(greater)" -trigger_event = &"c03_laizi_braid" +memo = "[hoverbraid] interacted 时: c03_s03_laizi_braid=2:已剪下(greater)" +trigger_event = &"c03_s03_laizi_braid" trigger_mode = "interacted" trigger_stage = 2 metadata/_custom_type_script = "uid://0wjaho6qkg6s" [node name="EventBinder" type="Node" parent="后脑勺"] script = ExtResource("6_uenj0") -memo = "c03_laizi_braid=[1:已使用剪刀] 时,显示: [后脑勺] +memo = "c03_s03_laizi_braid=[1:已使用剪刀] 时,显示: [后脑勺] " -updater_event = &"c03_laizi_braid" +updater_event = &"c03_s03_laizi_braid" updater_mode = "shower" updater_ease_duration = 0.0 metadata/_custom_type_script = "uid://0wjaho6qkg6s" @@ -105,13 +105,13 @@ texture = ExtResource("5_kcw8x") [node name="EventBinder" type="Node" parent="头/Draggable纸钱2"] script = ExtResource("6_uenj0") -memo = "c03_papercoin2=[0] 时,显示: [纸钱2] -[纸钱2] picked 时: c03_papercoin2=1(greater)" -updater_event = &"c03_papercoin2" +memo = "c03_s03_papercoin2=[0] 时,显示: [纸钱2] +[纸钱2] picked 时: c03_s03_papercoin2=1(greater)" +updater_event = &"c03_s03_papercoin2" updater_mode = "shower" updater_ease_duration = 0.0 updater_stages = Array[int]([0]) -trigger_event = &"c03_papercoin2" +trigger_event = &"c03_s03_papercoin2" trigger_mode = "picked" metadata/_custom_type_script = "uid://0wjaho6qkg6s" @@ -126,13 +126,13 @@ texture = ExtResource("7_kcw8x") [node name="EventBinder" type="Node" parent="头/Draggable纸钱1"] script = ExtResource("6_uenj0") -memo = "c03_papercoin1=[0] 时,显示: [纸钱1] -[纸钱1] picked 时: c03_papercoin1=1(greater)" -updater_event = &"c03_papercoin1" +memo = "c03_s03_papercoin1=[0] 时,显示: [纸钱1] +[纸钱1] picked 时: c03_s03_papercoin1=1(greater)" +updater_event = &"c03_s03_papercoin1" updater_mode = "shower" updater_ease_duration = 0.0 updater_stages = Array[int]([0]) -trigger_event = &"c03_papercoin1" +trigger_event = &"c03_s03_papercoin1" trigger_mode = "picked" metadata/_custom_type_script = "uid://0wjaho6qkg6s"