diff --git a/asset/art/gif/c02_二楼/frames.tres b/asset/art/gif/c02_二楼/frames.tres index a0e7ada8..4dcdda25 100644 --- a/asset/art/gif/c02_二楼/frames.tres +++ b/asset/art/gif/c02_二楼/frames.tres @@ -1,4 +1,4 @@ -[gd_resource type="SpriteFrames" load_steps=19 format=3 uid="uid://c8dl7c68f1yb0"] +[gd_resource type="SpriteFrames" load_steps=17 format=3 uid="uid://c8dl7c68f1yb0"] [ext_resource type="Texture2D" uid="uid://c0a8gd6jo2ov3" path="res://asset/art/gif/c02_二楼/疯子跑动/0.png" id="1_63k7g"] [ext_resource type="Texture2D" uid="uid://b1c1c3i0yw2ec" path="res://asset/art/gif/c02_二楼/疯子撞墙/0.png" id="1_hj708"] @@ -14,8 +14,6 @@ [ext_resource type="Texture2D" uid="uid://cni6i40kn1b8b" path="res://asset/art/gif/c02_二楼/疯子撞墙/7.png" id="8_mvc2t"] [ext_resource type="Texture2D" uid="uid://ci2r63i3a6l6h" path="res://asset/art/gif/c02_二楼/疯子撞墙/8.png" id="9_dko4h"] [ext_resource type="Texture2D" uid="uid://blcgp2qwfjn3b" path="res://asset/art/gif/c02_二楼/疯子撞墙/9.png" id="10_rxt3q"] -[ext_resource type="Texture2D" uid="uid://ctw3thae0tvfw" path="res://asset/art/gif/c02_二楼/疯子跪下/0.png" id="15_dko4h"] -[ext_resource type="Texture2D" uid="uid://djgrd7y0vvvh4" path="res://asset/art/gif/c02_二楼/疯子跪下/1.png" id="16_rxt3q"] [ext_resource type="Texture2D" uid="uid://ccdpsykfnhik8" path="res://asset/art/gif/c02_二楼/疯子跪下/2.png" id="17_7v1rg"] [ext_resource type="Texture2D" uid="uid://8g5rukqap3w8" path="res://asset/art/gif/c02_二楼/疯子跪下/3.png" id="18_ox23s"] @@ -75,12 +73,6 @@ animations = [{ }, { "frames": [{ "duration": 3.0, -"texture": ExtResource("15_dko4h") -}, { -"duration": 3.0, -"texture": ExtResource("16_rxt3q") -}, { -"duration": 3.0, "texture": ExtResource("17_7v1rg") }, { "duration": 3.0, diff --git a/asset/dialogue/c06.dialogue b/asset/dialogue/c06.dialogue new file mode 100644 index 00000000..626a4593 --- /dev/null +++ b/asset/dialogue/c06.dialogue @@ -0,0 +1,11 @@ +~ this_is_a_node_title +Nathan: [[Hi|Hello|Howdy]], this is some dialogue. +Nathan: Here are some choices. +- First one + Nathan: You picked the first one. +- Second one + Nathan: You picked the second one. +- Start again => this_is_a_node_title +- End the conversation => END +Nathan: For more information see the online documentation. +=> END \ No newline at end of file diff --git a/asset/dialogue/c06.dialogue.import b/asset/dialogue/c06.dialogue.import new file mode 100644 index 00000000..742b1f22 --- /dev/null +++ b/asset/dialogue/c06.dialogue.import @@ -0,0 +1,15 @@ +[remap] + +importer="dialogue_manager_compiler_14" +type="Resource" +uid="uid://c1bkhblw88ls0" +path="res://.godot/imported/c06.dialogue-f47fb4a55575ee069ed7231cadcef83f.tres" + +[deps] + +source_file="res://asset/dialogue/c06.dialogue" +dest_files=["res://.godot/imported/c06.dialogue-f47fb4a55575ee069ed7231cadcef83f.tres"] + +[params] + +defaults=true diff --git a/asset/dialogue/inspect_content.csv b/asset/dialogue/inspect_content.csv index f4584a9f..881691d4 100644 --- a/asset/dialogue/inspect_content.csv +++ b/asset/dialogue/inspect_content.csv @@ -5,10 +5,16 @@ c01_信件全文,"小蝶: t89c0f4a8de,x年,,,, t356af5308e,下午一点,,,, t344c97cf2c,据闻奉贤县分水墩又有七人染受鼠疫,病状可怖,闻医官药治无用,免职。,,,, -tdb119a3714,有地方人称鼠疫为妖邪作祟,甚为惊骇,一时人心惶惶,竟有聚众滋闹之事,政府以防疫事宜关系紧要,拟赴分水墩一带调查防疫事宜云。,,,, +公寓告示正文_1,公寓告示正文,,,, +c02_保卫科花名册,花名册内容,,,, +c01_飘落的寻人启事1,"【飘落的寻人启事文案】 +...",,,, +tdb119a3714,据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。,,,, ta750647b12,《申报》,,,, t736cca4563,民国五年一月十三日,,,, -公寓告示正文_1,公寓告示正文,,,, -c02_海报1,海报1内容,,,, -c02_海报2,海报2内容,,,, -c02_保卫科花名册,花名册内容,,,, +c02_海报1,战胜北方鼠疫之二杰,,,, +c02_海报2,剪辮懸樑上偵探奇聞,,,, +c02_海报3,大舞台,,,, +c02_海报4,二月初三夜,二等正厅,三等包厢,,,, +c02_保卫科花名册1,芦昌公寓居民登记簿(黄国栋记),,,, +c02_保卫科花名册2,...,,,, diff --git a/asset/dialogue/inspect_content.dialogue b/asset/dialogue/inspect_content.dialogue index 80974e45..d67787d5 100644 --- a/asset/dialogue/inspect_content.dialogue +++ b/asset/dialogue/inspect_content.dialogue @@ -1,5 +1,5 @@ ~ c01_飘落的寻人启事 -寻人启事 [ID:c01_飘落的寻人启事1] +【飘落的寻人启事文案】\n... [ID:c01_飘落的寻人启事1] => END ~ c02_鼠疫海报 diff --git a/config/animation/entity_sprite_frames.tres b/config/animation/entity_sprite_frames.tres index e44aba2b..51bc87f7 100644 --- a/config/animation/entity_sprite_frames.tres +++ b/config/animation/entity_sprite_frames.tres @@ -2450,7 +2450,7 @@ animations = [{ "duration": 1.0, "texture": ExtResource("141_7m3gv") }], -"loop": true, +"loop": false, "name": &"c02_吕萍_匍匐起身蹲着窥视", "speed": 7.0 }, { diff --git a/project.godot b/project.godot index ac616440..c906b208 100644 --- a/project.godot +++ b/project.godot @@ -175,7 +175,7 @@ space={ [internationalization] locale/translations=PackedStringArray("res://asset/dialogue/c01.en.translation", "res://asset/dialogue/c02.en.translation", "res://asset/dialogue/item_description.en.translation", "res://asset/dialogue/names.en.translation", "res://asset/dialogue/inspect_content.en.translation", "res://asset/dialogue/npc.en.translation", "res://asset/dialogue/c01.zh_CN.translation", "res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/inspect_content.zh_CN.translation", "res://asset/dialogue/item_description.zh_CN.translation", "res://asset/dialogue/names.zh_CN.translation", "res://asset/dialogue/npc.zh_CN.translation") -locale/translations_pot_files=PackedStringArray("res://asset/dialogue/item_description.dialogue", "res://asset/dialogue/c01.dialogue", "res://asset/dialogue/c02.dialogue", "res://asset/dialogue/inspect_content.dialogue", "res://asset/dialogue/npc.dialogue", "res://asset/dialogue/c03.dialogue", "res://asset/dialogue/c04.dialogue", "res://asset/dialogue/c05.dialogue") +locale/translations_pot_files=PackedStringArray("res://asset/dialogue/item_description.dialogue", "res://asset/dialogue/c01.dialogue", "res://asset/dialogue/c02.dialogue", "res://asset/dialogue/inspect_content.dialogue", "res://asset/dialogue/npc.dialogue", "res://asset/dialogue/c03.dialogue", "res://asset/dialogue/c04.dialogue", "res://asset/dialogue/c05.dialogue", "res://asset/dialogue/c06.dialogue") locale/test="zh-Hans" locale/fallback="zh" @@ -199,6 +199,7 @@ locale/fallback="zh" [rendering] textures/canvas_textures/default_texture_filter=0 +viewport/transparent_background=true [statistics] diff --git a/scene/entity/ambush.gd b/scene/entity/ambush.gd index 17ace9f9..7183a566 100644 --- a/scene/entity/ambush.gd +++ b/scene/entity/ambush.gd @@ -21,7 +21,7 @@ signal triggered var hook_animation = "" @export var lock_player_on_playing_dialogue = true @export var hook_os_key := "" -@export_enum("c01", "c02", "c03", "c04", "c05") var hook_dialogue_res = "c01": +@export_enum("c01", "c02", "c03", "c04", "c05", "c06") var hook_dialogue_res = "c01": set(val): hook_dialogue_res = val match val: @@ -35,6 +35,8 @@ var hook_animation = "" dialogue_res = dialogue_c04 "c05": dialogue_res = dialogue_c05 + "c06": + dialogue_res = dialogue_c06 if is_node_ready() and Engine.is_editor_hint(): notify_property_list_changed() var hook_dialogue_title := "" @@ -45,6 +47,7 @@ var dialogue_c02 = preload("res://asset/dialogue/c02.dialogue") var dialogue_c03 = preload("res://asset/dialogue/c03.dialogue") var dialogue_c04 = preload("res://asset/dialogue/c04.dialogue") var dialogue_c05 = preload("res://asset/dialogue/c05.dialogue") +var dialogue_c06 = preload("res://asset/dialogue/c06.dialogue") var dialogue_res = dialogue_c01 var played_time := 0.0 diff --git a/scene/entity/local_inspectable.gd b/scene/entity/local_inspectable.gd index 6211f8ba..98154373 100644 --- a/scene/entity/local_inspectable.gd +++ b/scene/entity/local_inspectable.gd @@ -13,7 +13,7 @@ enum { STATUS_NORAML, STATUS_TRANSITIONING, STATUS_INSPECTING_COVER, STATUS_INSP # @export var entity_name: String = "" @export var content_centered: bool = false @export var texture_cover: Texture2D -@export_enum("none", "c01", "c02", "c03", "c04", "c05") var editor_filter := "none": +@export_enum("none", "c01", "c02", "c03", "c04", "c05", "c06") var editor_filter := "none": set(val): editor_filter = val if is_node_ready() and Engine.is_editor_hint(): diff --git a/scene/entity/note.gd b/scene/entity/note.gd index e804efac..95691eb3 100644 --- a/scene/entity/note.gd +++ b/scene/entity/note.gd @@ -10,7 +10,7 @@ signal read_note sign_mark.enabled = val @export var action := 4 #3为none; 4为lookup_wall; 之后为其他动作,请参考 PlayerAnimationConfig @export_enum("os", "ballon") var mode = "os" -@export_enum("items", "c01", "c02", "c03", "c04", "c05") var dialogue := "items": +@export_enum("items", "c01", "c02", "c03", "c04", "c05", "c06") var dialogue := "items": set(val): dialogue = val match dialogue: @@ -26,6 +26,8 @@ signal read_note dialogue_res = dialogue_c04 "c05": dialogue_res = dialogue_c05 + "c06": + dialogue_res = dialogue_c06 if is_node_ready() and Engine.is_editor_hint(): notify_property_list_changed() var note_key := "" @@ -45,6 +47,7 @@ var dialogue_c02 = preload("res://asset/dialogue/c02.dialogue") var dialogue_c03 = preload("res://asset/dialogue/c03.dialogue") var dialogue_c04 = preload("res://asset/dialogue/c04.dialogue") var dialogue_c05 = preload("res://asset/dialogue/c05.dialogue") +var dialogue_c06 = preload("res://asset/dialogue/c06.dialogue") var dialogue_res = dialogue_items var interacting = false diff --git a/scene/entity/partical/particals_ash_vertical.tscn b/scene/entity/partical/particals_ash_vertical.tscn index a378184a..f0dd35b5 100644 --- a/scene/entity/partical/particals_ash_vertical.tscn +++ b/scene/entity/partical/particals_ash_vertical.tscn @@ -3,8 +3,7 @@ [ext_resource type="Texture2D" uid="uid://6vh5m2p3v0t3" path="res://asset/art/scene/c01/s07_书店外/e_纸钱.png" id="1_hsa64"] [sub_resource type="Gradient" id="Gradient_rwi0m"] -offsets = PackedFloat32Array(0, 0.99, 1) -colors = PackedColorArray(1, 1, 1, 0.466667, 1, 1, 1, 0.965333, 1, 1, 1, 1) +colors = PackedColorArray(0.856067, 0.856067, 0.856067, 1, 1, 1, 1, 1) [sub_resource type="GradientTexture1D" id="GradientTexture1D_5cty7"] gradient = SubResource("Gradient_rwi0m") diff --git a/scene/ground/scene/animation_root.gd b/scene/ground/scene/animation_root.gd index bf7e0093..07d28243 100644 --- a/scene/ground/scene/animation_root.gd +++ b/scene/ground/scene/animation_root.gd @@ -8,6 +8,7 @@ var dialogue_c02 := preload("res://asset/dialogue/c02.dialogue") as DialogueReso var dialogue_c03 := preload("res://asset/dialogue/c03.dialogue") as DialogueResource var dialogue_c04 := preload("res://asset/dialogue/c04.dialogue") as DialogueResource var dialogue_c05 := preload("res://asset/dialogue/c05.dialogue") as DialogueResource +var dialogue_c06 := preload("res://asset/dialogue/c06.dialogue") as DialogueResource @export var data = { # 首次进入场景时触发 diff --git a/scene/ground/scene/c01/s12_书店外_诡异版.tscn b/scene/ground/scene/c01/s12_书店外_诡异版.tscn index 1eca5b96..cdc1da44 100644 --- a/scene/ground/scene/c01/s12_书店外_诡异版.tscn +++ b/scene/ground/scene/c01/s12_书店外_诡异版.tscn @@ -144,7 +144,7 @@ bus = &"game_sfx" script = ExtResource("10_1tspp") [node name="飘动的寻人启事" parent="Ground/DeployLayer" index="6" instance=ExtResource("11_pwu7i")] -z_index = 1 +z_index = 6 position = Vector2(1021, -48) [node name="陆仁舞刀" parent="Ground/DeployLayer" index="7" instance=ExtResource("14_ct084")] diff --git a/scene/ground/scene/c02/s03_animation.gd b/scene/ground/scene/c02/s03_animation.gd index 018c3796..080a63ed 100644 --- a/scene/ground/scene/c02/s03_animation.gd +++ b/scene/ground/scene/c02/s03_animation.gd @@ -62,6 +62,9 @@ func _on_ground_ready() -> void: madman_npc.visible = true madman_npc.get_node("StaticBody2D/CollisionShape2D").disabled = false + if ArchiveManager.get_global_value("c02_the_blind_room_entered"): + _setup_mourning_couplet() + bully_layer = $"../DeployLayer/霸凌" burning_layer = $"../DeployLayer/火灾" @@ -109,6 +112,9 @@ func cg_end() -> void: func _on_gate_interacted() -> void: gate.get_node("Wall/CollisionShape2D").disabled = true +func _setup_mourning_couplet() -> void: + # TODO 奠字 + pass func eavesdrop() -> void: if ArchiveManager.get_global_value("c02_eavesdrop_finished", false): diff --git a/scene/ground/scene/c02/s03_院子.tscn b/scene/ground/scene/c02/s03_院子.tscn index c42a05dd..bd6ff418 100644 --- a/scene/ground/scene/c02/s03_院子.tscn +++ b/scene/ground/scene/c02/s03_院子.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=67 format=3 uid="uid://djc2uaefhmu7"] +[gd_scene load_steps=65 format=3 uid="uid://djc2uaefhmu7"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_0dylx"] [ext_resource type="Script" uid="uid://dsp5plrdkrsd7" path="res://scene/ground/scene/c02/s03_animation.gd" id="2_dt5aj"] @@ -12,7 +12,6 @@ [ext_resource type="Texture2D" uid="uid://bs8bdad5ak0m0" path="res://asset/art/scene/c02/s03_公寓一楼院子/铁门/关闭状态.png" id="7_gd6xp"] [ext_resource type="Texture2D" uid="uid://cjmsn0saowwbo" path="res://asset/art/scene/c02/s03_公寓一楼院子/小鞋子2特写.png" id="8_plfv5"] [ext_resource type="PackedScene" uid="uid://cw3q5pvciumil" path="res://scene/entity/interactable.tscn" id="8_xt8j0"] -[ext_resource type="Texture2D" uid="uid://b343nvvbtpglb" path="res://asset/art/ui/互动提示符/ui 像素版_纯白.png" id="9_c36u3"] [ext_resource type="Texture2D" uid="uid://bgpf35bhrkl86" path="res://asset/art/scene/c02/s03_公寓一楼院子/铁门/打开 底层.png" id="9_liq0c"] [ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="10_jme4f"] [ext_resource type="Texture2D" uid="uid://dooaferyy44rs" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_前侧楼梯.png" id="10_ud2jg"] @@ -228,10 +227,6 @@ _data = { &"镜头上下运动": SubResource("Animation_7ey5t") } -[sub_resource type="AtlasTexture" id="AtlasTexture_0o4rt"] -atlas = ExtResource("9_c36u3") -region = Rect2(498, 555, 51, 54) - [sub_resource type="RectangleShape2D" id="RectangleShape2D_er6ob"] resource_local_to_scene = true size = Vector2(40, 70) @@ -389,7 +384,6 @@ texture = ExtResource("6_1tart") [node name="Interactable铁门" parent="Ground/DeployLayer" index="8" instance=ExtResource("8_xt8j0")] position = Vector2(1212, 28) texture = ExtResource("7_gd6xp") -matched_sign_texture = SubResource("AtlasTexture_0o4rt") interacted_texture = ExtResource("9_liq0c") prop_key = "prop_老虎钳" diff --git a/scene/ground/scene/c02/s06_animation.gd b/scene/ground/scene/c02/s06_animation.gd index 18d027df..a3690317 100644 --- a/scene/ground/scene/c02/s06_animation.gd +++ b/scene/ground/scene/c02/s06_animation.gd @@ -61,16 +61,13 @@ func _on_mice_hole_interacted(): ArchiveManager.set_global_entry("c02_mouse_follow_player", false) $"../DeployLayer/自动跟随的老鼠".flush_right_and_disable() - SceneManager.pop_debug_dialog_info("美术", "疯子从左侧过来撞墙") var sprite = $"../DeployLayer/疯子撞墙" - sprite.visible = true - sprite.play("疯子撞墙") - await get_tree().create_timer(5.0).timeout - + sprite.play("疯子跑动") + play("疯子撞墙") + SceneManager.pop_debug_dialog_info("音效", "待补充撞墙音效") SceneManager.release_player() - func boys_ball_game() -> void: # 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束 var stage = ArchiveManager.get_global_value("c02_ball_game_stage", 0) diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn index f0ae7aa1..5758ea8d 100644 --- a/scene/ground/scene/c02/s06_二楼.tscn +++ b/scene/ground/scene/c02/s06_二楼.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=24 format=3 uid="uid://cootarwb44vvh"] +[gd_scene load_steps=27 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"] +[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="3_djvme"] [ext_resource type="Texture2D" uid="uid://6ol2om68cd1q" path="res://asset/art/scene/c02/s06_二楼楼道/bg_背景.png" id="3_och2w"] +[ext_resource type="AudioStream" uid="uid://ce3p55nnts4v5" path="res://asset/audio/effect/action/cloth2.ogg" id="4_58e26"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_haidv"] [ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="5_3p5ta"] [ext_resource type="Texture2D" uid="uid://crev0svowqla" path="res://asset/art/scene/c02/s06_二楼楼道/前景.png" id="5_26mqt"] @@ -93,6 +95,54 @@ tracks/5/keys = { "update": 0, "values": [2.0] } +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("DeployLayer/疯子撞墙:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("DeployLayer/疯子撞墙:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(221, 4)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("DeployLayer/疯子撞墙:animation") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"疯子跑动"] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("AnimationPlayer/疯子撞墙Sfx:playing") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} [sub_resource type="Animation" id="Animation_ciatp"] resource_name = "c02_final_show" @@ -184,10 +234,63 @@ tracks/6/keys = { "values": [0.0, 2.0] } +[sub_resource type="Animation" id="Animation_p6da7"] +resource_name = "疯子撞墙" +length = 6.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DeployLayer/疯子撞墙:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DeployLayer/疯子撞墙:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 3.66667), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(221, 0), Vector2(600, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DeployLayer/疯子撞墙:animation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(3.66667), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"疯子跪下"] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("AnimationPlayer/疯子撞墙Sfx:playing") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(3.46667), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] _data = { &"RESET": SubResource("Animation_k01ve"), -&"c02_final_show": SubResource("Animation_ciatp") +&"c02_final_show": SubResource("Animation_ciatp"), +&"疯子撞墙": SubResource("Animation_p6da7") } [sub_resource type="Gradient" id="Gradient_och2w"] @@ -219,6 +322,10 @@ data = { } oneshot_animation = "" +[node name="疯子撞墙Sfx" parent="Ground/AnimationPlayer" index="0" instance=ExtResource("3_djvme")] +stream = ExtResource("4_58e26") +file = "" + [node name="BGSprite2D" parent="Ground" index="2"] light_mask = 5 position = Vector2(0, -2) @@ -284,17 +391,9 @@ sprite_frames = ExtResource("10_och2w") animation = &"疯子跑动" autostart = false action_configs = Array[Dictionary]([{ -"animation_intro": &"疯子跑动", -&"animation_next": "疯子跪下", -&"intro_loop": 9 -}, { "animation_intro": "疯子跪下", &"animation_next": "疯子撞墙" }]) -move_configs = Array[Dictionary]([{ -"animation": "疯子跑动", -"velocity": Vector2(120, 0) -}]) [node name="Ambush三男孩" parent="Ground/DeployLayer" index="9" instance=ExtResource("14_k01ve")] visible = false @@ -361,8 +460,9 @@ texture = ExtResource("5_26mqt") points = PackedVector2Array(37, 150, 900, 150) [node name="DirectionalLight2D" parent="Ground" index="9"] -visible = false energy = 0.9 blend_mode = 1 +[connection signal="finished" from="Ground/AnimationPlayer/疯子撞墙Sfx" to="Ground/AnimationPlayer/疯子撞墙Sfx" method="play"] + [editable path="Ground"] diff --git a/scene/ground/scene/c02/s08_animation.gd b/scene/ground/scene/c02/s08_animation.gd index 0232639d..1d01cdb3 100644 --- a/scene/ground/scene/c02/s08_animation.gd +++ b/scene/ground/scene/c02/s08_animation.gd @@ -4,7 +4,7 @@ extends AnimationRoot # 覆盖该方法 func _default_data() -> Dictionary: - return {} + return {"hole_interacted_times": 0} func _ready() -> void: @@ -13,26 +13,65 @@ func _ready() -> void: return -var light: DirectionalLight2D +var color_mask: ColorRect func _on_ground_ready() -> void: - light = $"../DirectionalLight2D" - if $"../DeployLayer/Ambush出隧道".played: + color_mask = $"../BGSprite2D/ColorMask" + # 0默认 1拿了麻将 2偷听结束 3已爬出 + if data.hole_interacted_times >= 3: setup_rect_after_entered() else: - # 如果没有出隧道,则设置镜头右侧 limit + 500 - SceneManager.get_camera_marker().limit_right += 500 + color_mask.color.a = 1.0 + # # 如果没有出隧道,则设置镜头右侧 limit + 500 + # SceneManager.get_camera_marker().limit_right += 500 + + +var interacting = false + + +func hole_interacted(): + if interacting: + return + interacting = true + # 第一次获得麻将,第二次偷听,第三次出去 + var times = data["hole_interacted_times"] + set_data("hole_interacted_times", times + 1) + if GlobalConfig.DEBUG: + print("hole_interacted_times=", times) + interacting = false + if times == 0: + SceneManager.enable_prop_item("prop_麻将") + elif times == 1: + eavesdrop_start() + else: + enter_room() func eavesdrop_start() -> void: - play("偷听瞎子小蝉对话") - SceneManager.freeze_player(0) - DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_05_瞎子与小蝉") - - -func eavesdrop_end() -> void: + SceneManager.freeze_player(0, 5) + var sprite = $"../DeployLayer/瞎子小蝉对话" as AnimatedSprite2D + sprite.visible = true + sprite.play() + # 偷听动作 + await get_tree().create_timer(2.0).timeout + # 动作后先出声音 + DialogueManager.show_dialogue_balloon( + dialogue_c02, "c02_05_瞎子与小蝉" + ) + var tween = create_tween() + tween.tween_property(color_mask, "color:a", 0.0, 6.0) + # 运镜查看 + var camera = SceneManager.get_camera_marker() + tween.parallel().tween_property(camera, "force_offset", Vector2(-450, 0), 4.0) + await DialogueManager.dialogue_ended + tween = create_tween() + tween.tween_property(camera, "force_offset", Vector2(0, 0), 4.0) + tween.parallel().tween_property(color_mask, "color:a", 1.0, 2.0) + await tween.finished + sprite.visible = false SceneManager.release_player() + interacting = false var room_camera_r_limit = 550 @@ -40,32 +79,33 @@ var room_camera_r_limit = 550 # 钻出隧道,进入房间 func enter_room() -> void: + ArchiveManager.set_global_entry("c02_the_blind_room_entered", true) + var player = SceneManager.get_player() as MainPlayer + var player_x = 513.0 + SceneManager.freeze_player(0) var camera = SceneManager.get_camera_marker() var tween = create_tween() # 镜头右侧 limit 设置到 room_camera_r_limit tween.tween_property(camera, "limit_right", room_camera_r_limit, 1.5) # 关闭黑暗效果 - tween.parallel().tween_property(light, "energy", 0.0, 2.0) - - SceneManager.freeze_player(0) - var player = SceneManager.get_player() as MainPlayer - player.visible = false + tween.parallel().tween_property(color_mask, "color:a", 0.0, 2.0) + # 光源跟随丝滑移动 + tween.parallel().tween_property(player, "position:x", player_x, 2.0) + player.hide_sprite = true var sprite = $"../DeployLayer/吕萍钻出" as AnimatedSprite2D sprite.visible = true sprite.frame = 0 sprite.play() - await sprite.animation_finished - sprite.visible = false - player.position.x = 513.0 + await tween.finished + player.position.x = player_x setup_rect_after_entered() - player.visible = true + sprite.visible = false + player.hide_sprite = false SceneManager.release_player() - # - ArchiveManager.set_global_entry("c02_the_blind_room_entered", true) + interacting = false func setup_rect_after_entered() -> void: - light.energy = 0.0 var player = SceneManager.get_player() as MainPlayer player.character = "吕萍" SceneManager.get_ground().player_y = 70 diff --git a/scene/ground/scene/c02/s08_瞎子卧室.tscn b/scene/ground/scene/c02/s08_瞎子卧室.tscn index 3afefe8b..64d1b951 100644 --- a/scene/ground/scene/c02/s08_瞎子卧室.tscn +++ b/scene/ground/scene/c02/s08_瞎子卧室.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=21 format=3 uid="uid://ce2vyyg2reg52"] +[gd_scene load_steps=15 format=3 uid="uid://ce2vyyg2reg52"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_judx3"] [ext_resource type="Script" uid="uid://hbbgymjs5xte" path="res://scene/ground/scene/c02/s08_animation.gd" id="2_m4uw8"] @@ -6,11 +6,6 @@ [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_1ws4i"] [ext_resource type="Texture2D" uid="uid://b2o75ahjqq0yg" path="res://asset/art/临时草稿/瞎子小蝉谈话.png" id="4_f7817"] [ext_resource type="Texture2D" uid="uid://vqyhgyka3sfo" path="res://asset/art/scene/c02/s08_瞎子卧室/瞎子卧室前景.png" id="4_gx8oy"] -[ext_resource type="PackedScene" uid="uid://dsa6frlw6e6gg" path="res://scene/entity/pickable.tscn" id="5_f7817"] -[ext_resource type="Texture2D" uid="uid://b86f85kunqpeb" path="res://asset/art/prop/c02/麻将.png" id="6_u7aew"] -[ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="7_rn30l"] -[ext_resource type="Texture2D" uid="uid://ch6uf4qi1i0h2" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕3.png" id="8_f6mma"] -[ext_resource type="Texture2D" uid="uid://dtmd13ktss5hk" path="res://asset/art/scene/c02/s03_公寓一楼院子/地面物品反光/地反光5.png" id="9_bp5fr"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="10_f6mma"] [ext_resource type="Texture2D" uid="uid://b7gyapghy3tsy" path="res://asset/art/neutral_point_light.png" id="11_kwj7c"] [ext_resource type="SpriteFrames" uid="uid://j5lpwxe8woew" path="res://asset/art/scene/c02/s02_大门过道/火苗.gif" id="12_t3h08"] @@ -42,53 +37,22 @@ tracks/1/keys = { "update": 0, "values": [Vector2(0, 0)] } - -[sub_resource type="Animation" id="Animation_gx8oy"] -resource_name = "偷听瞎子小蝉对话" -length = 15.0 -tracks/0/type = "method" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AnimationPlayer") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(9.03333), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"eavesdrop_end" -}] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("DeployLayer/瞎子小蝉对话:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0.166667, 10.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("CameraFocusMarker:force_offset") +tracks/2/path = NodePath("BGSprite2D/ColorMask:color") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(0, 2.3, 7.6, 9.86667), -"transitions": PackedFloat32Array(1, 1, 1, 1), +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(0, 0), Vector2(-500, 0), Vector2(-500, 0), Vector2(0, 0)] +"values": [Color(0, 0, 0, 0)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_f7817"] _data = { -&"RESET": SubResource("Animation_f6mma"), -&"偷听瞎子小蝉对话": SubResource("Animation_gx8oy") +&"RESET": SubResource("Animation_f6mma") } [sub_resource type="SpriteFrames" id="SpriteFrames_u7aew"] @@ -102,7 +66,7 @@ animations = [{ "speed": 5.0 }] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_t3h08"] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_kwj7c"] resource_local_to_scene = true size = Vector2(10, 70) @@ -111,17 +75,30 @@ size = Vector2(10, 70) [node name="Ground" parent="." instance=ExtResource("1_judx3")] scene_name = "c02_s08" default_portal = "right" +footstep_type = "crawling" [node name="AnimationPlayer" parent="Ground" index="0"] libraries = { &"": SubResource("AnimationLibrary_f7817") } script = ExtResource("2_m4uw8") +data = { +"hole_interacted_times": 0, +"oneshot_animation_played": false +} oneshot_animation = "" [node name="BGSprite2D" parent="Ground" index="2"] texture = ExtResource("3_iares") +[node name="ColorMask" type="ColorRect" parent="Ground/BGSprite2D" index="0"] +z_index = 10 +offset_left = -63.0 +offset_top = -135.0 +offset_right = 537.0 +offset_bottom = 165.0 +color = Color(0, 0, 0, 0) + [node name="portal_left" parent="Ground/DeployLayer" index="0"] position = Vector2(66, 17) target_scene = "c02_s06" @@ -162,40 +139,23 @@ scale = Vector2(0.3, 0.3) sprite_frames = ExtResource("12_t3h08") animation = &"gif" -[node name="Pickable麻将" parent="Ground/DeployLayer" index="4" instance=ExtResource("5_f7817")] -position = Vector2(442, 78) -prop_key = "prop_麻将" - -[node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer/Pickable麻将"] -rotation = -0.862373 -scale = Vector2(0.2, 0.2) -texture = ExtResource("6_u7aew") - -[node name="煤油灯" parent="Ground/DeployLayer" index="5" instance=ExtResource("7_rn30l")] -position = Vector2(168, 34) -hide_texture = true -gaslight_texture = ExtResource("8_f6mma") -ground_light_texture = ExtResource("9_bp5fr") - -[node name="Ambush出隧道" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_f6mma")] -position = Vector2(555, 55) +[node name="Ambush偷听" parent="Ground/DeployLayer" index="4" instance=ExtResource("10_f6mma")] +position = Vector2(571, 28) trigger_mode = "interact" -hook_method = "enter_room" +one_shot = false +hook_method = "hole_interacted" -[node name="Sign" parent="Ground/DeployLayer/Ambush出隧道" index="0"] -light_mask = 5 +[node name="Sign" parent="Ground/DeployLayer/Ambush偷听" index="0"] +offset_left = -17.0 +offset_top = 5.0 +offset_right = -17.0 +offset_bottom = 5.0 +display_sign = true -[node name="Sprite2D" parent="Ground/DeployLayer/Ambush出隧道/Sign/TextureContainer" index="0"] -light_mask = 0 +[node name="CollisionShape2D" parent="Ground/DeployLayer/Ambush偷听/Area2D" index="0"] +shape = SubResource("RectangleShape2D_kwj7c") -[node name="CollisionShape2D" parent="Ground/DeployLayer/Ambush出隧道/Area2D" index="0"] -shape = SubResource("RectangleShape2D_t3h08") - -[node name="Ambush偷听" parent="Ground/DeployLayer" index="7" instance=ExtResource("10_f6mma")] -position = Vector2(619, 59) -hook_method = "eavesdrop_start" - -[node name="吕萍钻出" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="8"] +[node name="吕萍钻出" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="5"] visible = false position = Vector2(534, 0) sprite_frames = ExtResource("13_t3h08") @@ -213,12 +173,11 @@ position = Vector2(11, 148) texture = ExtResource("4_gx8oy") [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] -points = PackedVector2Array(560, 150, 690, 150) +points = PackedVector2Array(580, 150, 690, 150) [node name="DirectionalLight2D" parent="Ground" index="9"] energy = 0.9 blend_mode = 1 [editable path="Ground"] -[editable path="Ground/DeployLayer/Ambush出隧道"] -[editable path="Ground/DeployLayer/Ambush出隧道/Sign"] +[editable path="Ground/DeployLayer/Ambush偷听"] diff --git a/scene/ground/scene/c02/s09_裂缝.tscn b/scene/ground/scene/c02/s09_裂缝.tscn index 4d74f981..e1776e4d 100644 --- a/scene/ground/scene/c02/s09_裂缝.tscn +++ b/scene/ground/scene/c02/s09_裂缝.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=15 format=3 uid="uid://ryups1dnwdto"] +[gd_scene load_steps=16 format=3 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_animation.gd" id="2_34a6f"] [ext_resource type="Texture2D" uid="uid://rfhf4usybjdc" path="res://asset/art/scene/c02/s09_裂缝/红色场景/背景.png" id="3_6xql4"] +[ext_resource type="Resource" uid="uid://c1bkhblw88ls0" path="res://asset/dialogue/c06.dialogue" id="3_bio82"] [ext_resource type="Texture2D" uid="uid://cbvf6bfjprl8t" path="res://asset/art/scene/c02/s09_裂缝/红色场景/大麻绳.png" id="4_34a6f"] [ext_resource type="Texture2D" uid="uid://ddcburr57lb75" path="res://asset/art/scene/c02/旧版/s12_1014诡异版/bg_衔接阴影.png" id="5_5ow41"] [ext_resource type="Texture2D" uid="uid://cufmquyduq804" path="res://asset/art/scene/c02/s09_裂缝/红色场景/小床上.png" id="5_nmucy"] @@ -40,9 +41,11 @@ animations = [{ [node name="Ground" parent="." instance=ExtResource("1_o0m5w")] scene_name = "c02_s09" default_portal = "right" +footstep_type = "crawling" [node name="AnimationPlayer" parent="Ground" index="0"] script = ExtResource("2_34a6f") +data = ExtResource("3_bio82") oneshot_animation = "" [node name="BGSprite2D" parent="Ground" index="2"] diff --git a/scene/ground/script/c01/s01_自动枯萎的花朵.gd b/scene/ground/script/c01/s01_自动枯萎的花朵.gd index 35a0cda7..eb4c4751 100644 --- a/scene/ground/script/c01/s01_自动枯萎的花朵.gd +++ b/scene/ground/script/c01/s01_自动枯萎的花朵.gd @@ -36,7 +36,7 @@ func _ready() -> void: continue flowers.append(f) if f.global_position.y > 98: #98 玩家 - f.z_index = 6 + f.z_index = 7 elif f.global_position.y > 88: # 背景小孩 f.z_index = 1 diff --git a/scene/ground/script/c01/s12_飘动的寻人启事.gd b/scene/ground/script/c01/s12_飘动的寻人启事.gd index 17f0f0b9..89f25726 100644 --- a/scene/ground/script/c01/s12_飘动的寻人启事.gd +++ b/scene/ground/script/c01/s12_飘动的寻人启事.gd @@ -69,7 +69,9 @@ func _on_interacted() -> void: _set_current_x_as_interacted_x() $SfxOpen.play() var inspect_texture = preload("res://asset/art/scene/c01/s07_书店外/纸片_正面.png") - SceneManager.get_inspector().pop_prop_inspection("", inspect_texture, true) + # SceneManager.get_inspector().pop_prop_inspection("", inspect_texture, true) + var note = tr("c01_飘落的寻人启事1") + SceneManager.get_inspector().pop_standard_inspection(inspect_texture, null, note, true) func _set_current_x_as_interacted_x() -> void: diff --git a/scene/ground/script/c01/s12_飘动的寻人启事.tscn b/scene/ground/script/c01/s12_飘动的寻人启事.tscn index 5fb2a715..51867d56 100644 --- a/scene/ground/script/c01/s12_飘动的寻人启事.tscn +++ b/scene/ground/script/c01/s12_飘动的寻人启事.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=10 format=3 uid="uid://cn1ypquvs07wx"] +[gd_scene load_steps=9 format=3 uid="uid://cn1ypquvs07wx"] [ext_resource type="Script" uid="uid://bm5qxyu84rd3e" path="res://scene/ground/script/c01/s12_飘动的寻人启事.gd" id="1_like6"] [ext_resource type="Shader" uid="uid://dksa483a8v7g4" path="res://asset/shader/rotation_displacement_vertex.gdshader" id="2_2w1m2"] [ext_resource type="AudioStream" uid="uid://duxo1jopqqf0q" path="res://asset/audio/sfx/交互/序章/04_书店内_移动书本.wav" id="2_ycl7d"] [ext_resource type="Texture2D" uid="uid://bul7j3lqvlxp7" path="res://asset/art/scene/c01/s07_书店外/纸片_正面.png" id="3_dl751"] [ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_5dshd"] -[ext_resource type="Texture2D" uid="uid://b343nvvbtpglb" path="res://asset/art/ui/互动提示符/ui 像素版_纯白.png" id="5_tf5lq"] +[ext_resource type="Texture2D" uid="uid://gui0ubwlwoi0" path="res://asset/art/ui/action_mark/UI手.png" id="6_ycl7d"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_q4vn8"] shader = ExtResource("2_2w1m2") @@ -13,10 +13,6 @@ shader_parameter/center = Vector2(25, 25) shader_parameter/amplitude = 0.15 shader_parameter/frequency = 1.5 -[sub_resource type="AtlasTexture" id="AtlasTexture_lhyxr"] -atlas = ExtResource("5_tf5lq") -region = Rect2(498, 555, 51, 54) - [sub_resource type="RectangleShape2D" id="RectangleShape2D_btxl6"] size = Vector2(20, 10) @@ -43,8 +39,8 @@ offset_right = 4.0 offset_bottom = 11.0 [node name="Sprite2D" parent="Node2D/Sign/TextureContainer" index="0"] -position = Vector2(-25, -162.5) -texture = SubResource("AtlasTexture_lhyxr") +position = Vector2(-50, -250) +texture = ExtResource("6_ycl7d") [node name="Area2D" type="Area2D" parent="Node2D"] diff --git a/scene/player/player_animation_config.gd b/scene/player/player_animation_config.gd index 1a91b771..49eb06bb 100644 --- a/scene/player/player_animation_config.gd +++ b/scene/player/player_animation_config.gd @@ -53,6 +53,7 @@ var ANIMATION_CONFIG = { MOVEMENT_IDLE: [&"c02_吕萍_爬行_idle_l", &"c02_吕萍_爬行_idle_r"], MOVEMENT_WALKING: [&"c02_吕萍_爬行_left", &"c02_吕萍_爬行_right"], MOVEMENT_RUNNING: [&"c02_吕萍_爬行_left", &"c02_吕萍_爬行_right"], + 5: [&"c02_吕萍_匍匐起身蹲着窥视", Vector2.ONE, Vector2(0, -37)], }, "吕萍带小猫": { diff --git a/scene/prop/prop_inspector.gd b/scene/prop/prop_inspector.gd index 7c190d16..8b9196d4 100644 --- a/scene/prop/prop_inspector.gd +++ b/scene/prop/prop_inspector.gd @@ -72,7 +72,7 @@ func _blink_label(init := true): blinking_tween.tween_property(tip_label, "modulate:a", 0.5, 1.0) blinking_tween.tween_callback(_blink_label.bind(true)) - +# 如果没有 notes_texture,自动使用黑色遮罩 func pop_standard_inspection(cover_texture, notes_texture, inspection_note, centered := false): if centered: content_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER