diff --git a/asset/art/scene/c03/s00_院子与其他/e_运尸车.png b/asset/art/scene/c03/s00_院子与其他/e_运尸车.png new file mode 100644 index 00000000..732bd8bd Binary files /dev/null and b/asset/art/scene/c03/s00_院子与其他/e_运尸车.png differ diff --git a/asset/art/scene/c03/s00_院子与其他/e_运尸车.png.import b/asset/art/scene/c03/s00_院子与其他/e_运尸车.png.import new file mode 100644 index 00000000..53ef7f71 --- /dev/null +++ b/asset/art/scene/c03/s00_院子与其他/e_运尸车.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjdy0o0qngukl" +path="res://.godot/imported/e_运尸车.png-b127083281dd80f3eacd524cca30cf0d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c03/s00_院子与其他/e_运尸车.png" +dest_files=["res://.godot/imported/e_运尸车.png-b127083281dd80f3eacd524cca30cf0d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/asset/art/scene/c03/s00_院子与其他/e_运尸车2.png b/asset/art/scene/c03/s00_院子与其他/e_运尸车2.png new file mode 100644 index 00000000..f3076877 Binary files /dev/null and b/asset/art/scene/c03/s00_院子与其他/e_运尸车2.png differ diff --git a/asset/art/scene/c03/s00_院子与其他/e_运尸车2.png.import b/asset/art/scene/c03/s00_院子与其他/e_运尸车2.png.import new file mode 100644 index 00000000..7d45ff2c --- /dev/null +++ b/asset/art/scene/c03/s00_院子与其他/e_运尸车2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3ndu71hc20d4" +path="res://.godot/imported/e_运尸车2.png-93a0d5713c6be3535a894bbcb867240f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c03/s00_院子与其他/e_运尸车2.png" +dest_files=["res://.godot/imported/e_运尸车2.png-93a0d5713c6be3535a894bbcb867240f.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/audio/sfx/交互/第二章/amb_灰姑演出.ogg b/asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg new file mode 100644 index 00000000..e1fef457 Binary files /dev/null and b/asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg differ diff --git a/asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg.import b/asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg.import new file mode 100644 index 00000000..9bed65d5 --- /dev/null +++ b/asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b08ps5rke143i" +path="res://.godot/imported/amb_灰姑演出.ogg-82eba2dd124b32d60c219b76d37a3150.oggvorbisstr" + +[deps] + +source_file="res://asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg" +dest_files=["res://.godot/imported/amb_灰姑演出.ogg-82eba2dd124b32d60c219b76d37a3150.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg b/asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg new file mode 100644 index 00000000..9cbac730 Binary files /dev/null and b/asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg differ diff --git a/asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg.import b/asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg.import new file mode 100644 index 00000000..4237369d --- /dev/null +++ b/asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bx2l0xus8u1em" +path="res://.godot/imported/sfx_灰姑出场.ogg-093659c3fdc5195c9b61a35ceff17e4c.oggvorbisstr" + +[deps] + +source_file="res://asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg" +dest_files=["res://.godot/imported/sfx_灰姑出场.ogg-093659c3fdc5195c9b61a35ceff17e4c.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑出场.ogg b/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑出场.ogg deleted file mode 100644 index e7441300..00000000 Binary files a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑出场.ogg and /dev/null differ diff --git a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑出场.ogg.import b/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑出场.ogg.import deleted file mode 100644 index 0e95c588..00000000 --- a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑出场.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://4vhd263cfr2o" -path="res://.godot/imported/sfx瞎子卧室灰姑出场.ogg-5422b62cb38584ac7ba2b89b789359f9.oggvorbisstr" - -[deps] - -source_file="res://asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑出场.ogg" -dest_files=["res://.godot/imported/sfx瞎子卧室灰姑出场.ogg-5422b62cb38584ac7ba2b89b789359f9.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑氛围.ogg b/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑氛围.ogg deleted file mode 100644 index e7441300..00000000 Binary files a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑氛围.ogg and /dev/null differ diff --git a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑氛围.ogg.import b/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑氛围.ogg.import deleted file mode 100644 index 0151c8ad..00000000 --- a/asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑氛围.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://dwgmsimffey73" -path="res://.godot/imported/sfx瞎子卧室灰姑氛围.ogg-3ee28d2fddf8bb28120d1047ba19437d.oggvorbisstr" - -[deps] - -source_file="res://asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑氛围.ogg" -dest_files=["res://.godot/imported/sfx瞎子卧室灰姑氛围.ogg-3ee28d2fddf8bb28120d1047ba19437d.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/asset/dialogue/inspect_content.csv b/asset/dialogue/inspect_content.csv index d37cd090..d4e6e0eb 100644 --- a/asset/dialogue/inspect_content.csv +++ b/asset/dialogue/inspect_content.csv @@ -62,3 +62,4 @@ c03_肉铺账本6,二十日 卖三〇三三 猪肉一斤,,,, c03_肉铺账本7,二十五日 新货到 米肉二十斤 自留 米肉五斤,,,, c03_肉铺账本8,二十六日 赠远山兄 米肉二斤,,,, c03_肉铺账本9,二十七日 卖三〇一二 米肉一斤,,,, +c03_s04_柜子照片,吾唯一至亲 李二弟,,,, diff --git a/asset/dialogue/inspect_content.dialogue b/asset/dialogue/inspect_content.dialogue index c48575bf..f7376f99 100644 --- a/asset/dialogue/inspect_content.dialogue +++ b/asset/dialogue/inspect_content.dialogue @@ -86,3 +86,7 @@ 二十六日 赠远山兄 米肉二斤 [ID:c03_肉铺账本8] 二十七日 卖三〇一二 米肉一斤 [ID:c03_肉铺账本9] => END + +~ c03_其他特写等内容 +吾唯一至亲 李二弟 [ID:c03_s04_柜子照片] +=> END diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index 3a33424c..60d97e33 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -1,6 +1,7 @@ keys,zh_CN,_character,_notes,_tags,zh_SH,en prop_下半部的舌头,下半部的舌头,,,[#texture=c03/ux_下半部的舌头.png],, input_麻将游戏_操作规则,依次点击两块麻将可进行交换,,,,, +ui_center_notify_c03纸人求药,给我药,,,,, index_新游戏,新游戏,,,,,New Game index_继续游戏,继续游戏,,,,,Continue index_退出游戏,退出游戏,,,,,Exit Game @@ -53,7 +54,7 @@ input_麻将整理游戏_开始方式,取出「三筒」开启整理,,,,, input_麻将游戏_交换规则,依次点击两块麻将可进行交换,,,,, input_麻将游戏_回合开始,回合开始,正确换牌后将自动打出,,,,, ui_center_notify_c03纸人浆糊舌头,帮我粘舌头,,,,, -ui_center_notify_c03纸人求药,给我药,,,,, +给我药 [ID:],给我药 [ID:],,,,, ui_center_notify_c03药车缺少物品,缺少药引,,,,, ui_center_notify_c03药车不能再取药材,同种药材只能取出一份,,,,, ui_center_notify_c03放到碗中或原处,药材只能放到碗中或原处,,,,, @@ -170,7 +171,7 @@ prop_邀请信_说明,邀请信说明,,,,, prop_两个麻将,麻将,,,[#texture=c03/两个麻将.png],, prop_两个麻将_说明,王守义出老千时用的麻将{br}我听说,那会儿赌场由黑帮控制,秩序混乱,赌徒设局被抓后,往往下场凄惨,只有极少数人能够全身而退。,,,,, prop_符纸,符纸,,,[#texture=c03/符纸纸条.png][#inspect=c03/ux_符纸纸条.png],, -prop_符纸_说明,符纸说明,,,,, +prop_符纸_说明,切记将符纸布于墙面和棺体,等候七日,在水中滴入髫年血,待其于水中凝固,后浇洒于棺体,事成将髫年尸首交于我,方能保你日后平安。,,,,, prop_沾血的纸条,沾血的纸条,,,[#texture=c03/沾血的纸条.png][#inspect=c03/ux_沾血的纸条.png],, prop_沾血的纸条_说明,文开,近日几条丘八又上门,娘仍未告诉他们你在何处,如今世道乱,苟活不耻,保命为上,盼望与儿早日重逢。,,,,, c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍吧。,,ID格式: prop_xx_说明,,,I feel like I've forgotten something. Let me go back and check again. diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index 9a94f912..fc65a5d6 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -61,7 +61,7 @@ 依次点击两块麻将可进行交换 [ID:input_麻将游戏_交换规则] 回合开始,正确换牌后将自动打出 [ID:input_麻将游戏_回合开始] 帮我粘舌头 [ID:ui_center_notify_c03纸人浆糊舌头] -给我药 [ID:ui_center_notify_c03纸人求药] +给我药 [ID:] 缺少药引 [ID:ui_center_notify_c03药车缺少物品] 同种药材只能取出一份 [ID:ui_center_notify_c03药车不能再取药材] 药材只能放到碗中或原处 [ID:ui_center_notify_c03放到碗中或原处] diff --git a/scene/entity/audio/sfx2d.gd b/scene/entity/audio/sfx2d.gd index f9117721..bce99a15 100644 --- a/scene/entity/audio/sfx2d.gd +++ b/scene/entity/audio/sfx2d.gd @@ -14,7 +14,6 @@ class_name Sfx2D extends AudioStreamPlayer2D @export_tool_button("调试停止") var debug_stop := func(): timer.stop() stop() - var timer: Timer var default_db := 0.0 @@ -70,12 +69,12 @@ func global_play() -> void: func easing_kill(duration: float = 2.0) -> Tween: - timer.stop() + if timer: + timer.stop() if not playing: return # stop with easing var tween = create_tween() - tween.bind_node(self) if playing: tween.tween_property(self, "volume_linear", 0.01, duration) tween.tween_callback(stop) diff --git a/scene/ground/scene/c02/s03_院子.tscn b/scene/ground/scene/c02/s03_院子.tscn index 67fad2da..99cc2b9f 100644 --- a/scene/ground/scene/c02/s03_院子.tscn +++ b/scene/ground/scene/c02/s03_院子.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=100 format=3 uid="uid://djc2uaefhmu7"] +[gd_scene load_steps=101 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_院子.gd" id="2_dt5aj"] @@ -74,6 +74,7 @@ [ext_resource type="Script" uid="uid://cphfob11f7atx" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.gd" id="67_h2lyo"] [ext_resource type="Script" uid="uid://cts4fvgir2lur" path="res://scene/ground/script/c02/s03_event_2d第二章结束井边演出.gd" id="72_18q2p"] [ext_resource type="Script" uid="uid://bkkiyk5jkdw4d" path="res://manager/event_manager/event2d.gd" id="73_lt8c0"] +[ext_resource type="Texture2D" uid="uid://bjdy0o0qngukl" path="res://asset/art/scene/c03/s00_院子与其他/e_运尸车.png" id="74_f5g0l"] [sub_resource type="Animation" id="Animation_rt2lh"] length = 0.001 @@ -772,6 +773,7 @@ texture = ExtResource("65_rgrem") texture_scale = 0.3 [node name="药铺老板" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event2D抓药游戏/药车_老板"] +z_index = 6 position = Vector2(1049, 20) sprite_frames = ExtResource("40_h2lyo") animation = &"抓药游戏_老板出现" @@ -1170,6 +1172,14 @@ position = Vector2(1771, 39) title_filter = "c02" note_key = "c02_柜子可放置区域" +[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Note柜子可放置区域"] +script = ExtResource("12_2b6vx") +updater_event = &"current_chapter_stage" +updater_mode = "shower" +updater_ease_duration = 0.0 +updater_stages = Array[int]([1, 2]) +metadata/_custom_type_script = "uid://0wjaho6qkg6s" + [node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="35"] visible = false @@ -1347,6 +1357,17 @@ updater_stage_mode = "exclude" updater_stages = Array[int]([0]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" +[node name="Event2D李氏运尸车" type="Node2D" parent="Ground/DeployLayer" index="40"] +position = Vector2(1858, 24) +script = ExtResource("73_lt8c0") +event_name = &"c03_li_paperwoman" +event_stages = Array[int]([3]) +metadata/_custom_type_script = "uid://bkkiyk5jkdw4d" + +[node name="运尸车" type="Sprite2D" parent="Ground/DeployLayer/Event2D李氏运尸车"] +position = Vector2(-22, 25) +texture = ExtResource("74_f5g0l") + [node name="PointLight2D" type="PointLight2D" parent="Ground/AmbientLayer" index="0"] light_mask = 4 position = Vector2(2189, -142) diff --git a/scene/ground/scene/c03/s02_瞎子新卧室.tscn b/scene/ground/scene/c03/s02_瞎子新卧室.tscn index 4a04c9de..459524f7 100644 --- a/scene/ground/scene/c03/s02_瞎子新卧室.tscn +++ b/scene/ground/scene/c03/s02_瞎子新卧室.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=38 format=3 uid="uid://ctwy1ubhm68la"] +[gd_scene load_steps=39 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"] [ext_resource type="AudioStream" uid="uid://6gttowdwmado" path="res://asset/audio/sfx/环境音/第一章/房间内部场景1.ogg" id="3_5cqb4"] [ext_resource type="Texture2D" uid="uid://vc2hn6t5bedg" path="res://asset/art/scene/c03/s02_瞎子新卧室/bg_瞎子新卧室.png" id="4_hehhg"] -[ext_resource type="AudioStream" uid="uid://d3yc0gbgivrjb" path="res://asset/audio/sfx/交互/第二章/sfx瞎子卧室灰姑.ogg" id="5_5cqb4"] [ext_resource type="Texture2D" uid="uid://7ay1ttob8qwm" path="res://asset/art/scene/c02/s08_瞎子卧室/e_床板.png" id="5_xifhb"] [ext_resource type="Texture2D" uid="uid://bgtxwxerl2dxh" path="res://asset/art/scene/c02/s08_瞎子卧室/十字架.png" id="6_hehhg"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_jad6f"] @@ -30,6 +29,8 @@ [ext_resource type="Texture2D" uid="uid://ct02nauw1f5v5" path="res://asset/art/prop/c03/1015钥匙.png" id="24_ac6iq"] [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"] +[ext_resource type="AudioStream" uid="uid://b08ps5rke143i" path="res://asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg" id="26_kesv8"] +[ext_resource type="AudioStream" uid="uid://bx2l0xus8u1em" path="res://asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg" id="27_jchds"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] @@ -181,9 +182,10 @@ position = Vector2(264.5, 69) texture = ExtResource("5_xifhb") [node name="portal_left" parent="Ground/DeployLayer" index="0"] -position = Vector2(17, 20) +position = Vector2(16, 20) target_scene = "c03_s03" target_portal = "right" +status = "opened" [node name="portal_right" parent="Ground/DeployLayer" index="1"] position = Vector2(873, 15) @@ -217,7 +219,7 @@ note_key = "c03_s02_小蝉寻人启事" [node name="Note带血的手帕" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_v3seo")] unique_name_in_owner = true -position = Vector2(139, 72) +position = Vector2(221, 72) texture = ExtResource("11_j2h7r") sign_mark_offset = Vector2(1, -7) title_filter = "c03" @@ -330,8 +332,14 @@ sprite_frames = ExtResource("10_2hv3f") animation = &"姑散开" autoplay = "姑呼吸帧" -[node name="Sfx灰姑出场" type="AudioStreamPlayer" parent="Ground/DeployLayer/Event2D偷听陆仁对话后"] -stream = ExtResource("5_5cqb4") +[node name="Sfx灰姑amb" type="AudioStreamPlayer" parent="Ground/DeployLayer/Event2D偷听陆仁对话后"] +stream = ExtResource("26_kesv8") +bus = &"game_sfx" +script = ExtResource("23_qq2pn") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="Sfx灰姑sfx" type="AudioStreamPlayer" parent="Ground/DeployLayer/Event2D偷听陆仁对话后"] +stream = ExtResource("27_jchds") bus = &"game_sfx" script = ExtResource("23_qq2pn") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" diff --git a/scene/ground/scene/c03/s03_瞎子理发店.tscn b/scene/ground/scene/c03/s03_瞎子理发店.tscn index 4dd4dc92..ca92b5d0 100644 --- a/scene/ground/scene/c03/s03_瞎子理发店.tscn +++ b/scene/ground/scene/c03/s03_瞎子理发店.tscn @@ -54,8 +54,8 @@ metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="Sfx2d癞子呼吸声" parent="Ground/AnimationPlayer" index="1" instance=ExtResource("5_cdaxx")] position = Vector2(343, 42) stream = ExtResource("6_xevnq") -volume_db = -4.0 -max_distance = 1000.0 +volume_db = -7.0 +max_distance = 700.0 attenuation = 3.0 loop = true @@ -82,6 +82,7 @@ status = "opened" position = Vector2(538, 33) target_scene = "c03_s02" target_portal = "left" +status = "opened" [node name="Closeup镜子特写" parent="Ground/DeployLayer" index="2" instance=ExtResource("5_d40x1")] unique_name_in_owner = true @@ -198,6 +199,8 @@ catty_light_energy = 0.5 player_movement_rect = Rect2(35, -158, 506, 316) facing_direction = Vector2(1, 0) +[node name="AudioListener2D" type="AudioListener2D" parent="Ground/MainPlayer" index="6"] + [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] position = Vector2(9, 0) texture = ExtResource("5_irgvj") diff --git a/scene/ground/scene/c03/s04_李癞房间.tscn b/scene/ground/scene/c03/s04_李癞房间.tscn index 5a70abd1..341f613b 100644 --- a/scene/ground/scene/c03/s04_李癞房间.tscn +++ b/scene/ground/scene/c03/s04_李癞房间.tscn @@ -99,11 +99,7 @@ quit_closeup_on_cancel = false on_display_changed_volumn_db = -20.0 enabled = false -[node name="Pickable胖子钥匙" parent="Ground/DeployLayer" index="5" instance=ExtResource("9_m8bf2")] -position = Vector2(537, 55) -prop_key = "prop_2013钥匙" - -[node name="Event李氏纸人相关" type="Node2D" parent="Ground/DeployLayer" index="6"] +[node name="Event李氏纸人相关" type="Node2D" parent="Ground/DeployLayer" index="5"] script = ExtResource("11_4umel") event_name = &"c03_li_paperwoman" event_stages = Array[int]([3]) @@ -156,7 +152,7 @@ max_distance = 1000.0 attenuation = 3.0 loop = true -[node name="Closeup李氏纸人" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_dbkw8")] +[node name="Closeup李氏纸人" parent="Ground/DeployLayer" index="6" instance=ExtResource("6_dbkw8")] unique_name_in_owner = true position = Vector2(372, 40) texture = ExtResource("11_7d7lv") @@ -172,7 +168,7 @@ updater_stage_mode = "exclude" updater_stages = Array[int]([0]) metadata/_custom_type_script = "uid://0wjaho6qkg6s" -[node name="Closeup柜子" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_dbkw8")] +[node name="Closeup柜子" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_dbkw8")] unique_name_in_owner = true position = Vector2(64, 45) packed_scene = ExtResource("23_q7jtk") @@ -184,6 +180,9 @@ catty_light_energy = 0.5 player_movement_rect = Rect2(20, -158, 608, 316) facing_direction = Vector2(1, 0) +[node name="AudioListener2D" type="AudioListener2D" parent="Ground/MainPlayer" index="6"] +current = true + [node name="CameraFocusMarker" parent="Ground" index="6"] limit_right = 648 diff --git a/scene/ground/scene/c03/s05_肉铺.gd b/scene/ground/scene/c03/s05_肉铺.gd index 878bc340..1149560b 100644 --- a/scene/ground/scene/c03/s05_肉铺.gd +++ b/scene/ground/scene/c03/s05_肉铺.gd @@ -64,4 +64,4 @@ func _post_meat_picked() -> void: $"Sfx门板敲门声".play() func eavesdrop_plank() -> void: - $"Sfx门板敲门声".easing_kill() + $"Sfx门板敲门声".loop = false diff --git a/scene/ground/scene/c03/s05_肉铺.tscn b/scene/ground/scene/c03/s05_肉铺.tscn index 7d6f8c7a..077d61c4 100644 --- a/scene/ground/scene/c03/s05_肉铺.tscn +++ b/scene/ground/scene/c03/s05_肉铺.tscn @@ -105,7 +105,7 @@ volume_db = -10.0 bus = &"game_sfx" script = ExtResource("6_trckl") loop = true -loop_round_time = 0.7 +loop_round_time = 0.9 metadata/_custom_type_script = "uid://wapo47a1oddf" [node name="BGSprite2D" parent="Ground" index="2"] @@ -186,6 +186,9 @@ catty_light_energy = 0.5 player_movement_rect = Rect2(54, -158, 491, 316) facing_direction = Vector2(1, 0) +[node name="AudioListener2D" type="AudioListener2D" parent="Ground/MainPlayer" index="6"] +current = true + [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] position = Vector2(-58, 0) texture = ExtResource("5_l22xv") diff --git a/scene/ground/scene/c03/s07_屠宰间.gd b/scene/ground/scene/c03/s07_屠宰间.gd index 0ff79654..3db10b47 100644 --- a/scene/ground/scene/c03/s07_屠宰间.gd +++ b/scene/ground/scene/c03/s07_屠宰间.gd @@ -28,7 +28,7 @@ func _on_ground_ready() -> void: # c03_meat_grinder: 0:初始化 1:已装转盘 2:绞肉机演出 3:演出结束 var grinder_stage = EventManager.get_stage("c03_meat_grinder") if grinder_stage == 1: - _setup_monster() + _transport_to_the_fatty_story() elif grinder_stage == 2: # 进入演出 var portal_2_x = $"../DeployLayer/portal_2".global_position.x @@ -39,22 +39,27 @@ func _on_ground_ready() -> void: func _on_grinder_exited(_arg) -> void: var stage = EventManager.get_stage("c03_meat_grinder") if stage == 1: - SceneManager.lock_player() - await Util.wait(1.0) - SceneManager.dizzy_effect(3.0) - SceneManager.player_action(17, true) - Util.timer(1.0, _setup_monster) - await SceneManager.get_player().animation_finished - await Util.wait(3.0) - SceneManager.unlock_player() - SceneManager.get_ground_loader().transition_to_scene("c03_s10", "left") + _transport_to_the_fatty_story() + + +func _transport_to_the_fatty_story() -> void: + SceneManager.get_camera_marker().shake_camera(3.0) + SceneManager.lock_player() + await Util.wait(1.0) + SceneManager.dizzy_effect(3.0) + SceneManager.player_action(17, true) + Util.timer(1.0, _setup_monster) + await SceneManager.get_player().animation_finished + await Util.wait(2.0) + SceneManager.unlock_player() + SceneManager.get_ground_loader().transition_to_scene("c03_s10", "left") func _setup_monster() -> void: var monster = $"../DeployLayer/棺材怪切肉" monster.show() monster.play() - + func _grinder_show() -> void: # 胖子从屠宰间桌子左侧的上方掉落,站起看向右侧 @@ -64,3 +69,7 @@ func _grinder_show() -> void: # 小蝉站在绞肉机前,玩家走近后小蝉消失。 # TODO 演出 closeup绞肉机.display() + + +func _on_monster_chopping_animation_looped() -> void: + SceneManager.get_camera_marker().shake_camera(1.5) diff --git a/scene/ground/scene/c03/s07_屠宰间.tscn b/scene/ground/scene/c03/s07_屠宰间.tscn index 98ff58c1..d165aabd 100644 --- a/scene/ground/scene/c03/s07_屠宰间.tscn +++ b/scene/ground/scene/c03/s07_屠宰间.tscn @@ -174,6 +174,7 @@ visible = false energy = 0.8 blend_mode = 1 +[connection signal="animation_looped" from="Ground/DeployLayer/棺材怪切肉" to="Ground/AnimationPlayer" method="_on_monster_chopping_animation_looped"] [connection signal="animation_looped" from="Ground/DeployLayer/棺材怪切肉" to="Ground/DeployLayer/棺材怪切肉/Sfx棺材怪切肉" method="play"] [editable path="Ground"] diff --git a/scene/ground/scene/c03/s08_囚室.tscn b/scene/ground/scene/c03/s08_囚室.tscn index 8c68033b..2d05377b 100644 --- a/scene/ground/scene/c03/s08_囚室.tscn +++ b/scene/ground/scene/c03/s08_囚室.tscn @@ -218,7 +218,7 @@ hook_dialogue_title = "c03_s08_囚室偷听" [node name="Interactable囚室尸体" parent="Ground/DeployLayer" index="7" instance=ExtResource("13_hfnke")] unique_name_in_owner = true -position = Vector2(205, -6) +position = Vector2(205, -13) offset = Vector2(0, -50) first_interact_os_key = "c03_s08_囚室绳子" interacted_texture = ExtResource("15_jdv4a") diff --git a/scene/ground/scene/c03/s09_棺材房.tscn b/scene/ground/scene/c03/s09_棺材房.tscn index 412ca162..b01a2069 100644 --- a/scene/ground/scene/c03/s09_棺材房.tscn +++ b/scene/ground/scene/c03/s09_棺材房.tscn @@ -434,8 +434,8 @@ texture = ExtResource("15_rcrkk") [node name="Sfx2D棺材叫儿" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Pro棺材怪2"] position = Vector2(39, 9) stream = SubResource("AudioStreamInteractive_qkb2a") -max_distance = 500.0 -attenuation = 2.5 +max_distance = 700.0 +attenuation = 2.0 bus = &"game_sfx" script = ExtResource("10_htuhx") metadata/_custom_type_script = "uid://wapo47a1oddf" diff --git a/scene/ground/scene/c03/s10_胖子游戏1.gd b/scene/ground/scene/c03/s10_胖子游戏1.gd index 43296d65..27c84a4f 100644 --- a/scene/ground/scene/c03/s10_胖子游戏1.gd +++ b/scene/ground/scene/c03/s10_胖子游戏1.gd @@ -12,6 +12,7 @@ func _ready() -> void: if Engine.is_editor_hint(): return +var player: MainPlayer #region node_reference var sfx_meat_hill: Sfx @@ -25,6 +26,7 @@ var range_of_stages := PackedVector2Array() # 读取设置变量名 func _setup_node_reference() -> void: + player = SceneManager.get_player() sfx_meat_hill = $"Sfx肉山掉落" chop_timer = $"../DeployLayer/ChopTimer" meat_hill = $"../DeployLayer/肉山Transform" @@ -42,7 +44,6 @@ func _setup_node_reference() -> void: func _on_ground_ready() -> void: _enter_scene() # 设置相机范围 - var player = SceneManager.get_player() var right_x = player.player_movement_rect.size.x var rect := Rect2i(0, -158, int(right_x) + 50, 316) SceneManager.get_camera_marker().apply_limits(rect) @@ -52,13 +53,12 @@ func _on_ground_ready() -> void: #0: 初始化; 1-3 三关 var current_stage := 0 -var aiming_duration := 2.0 +var aiming_duration := 1.5 # 1.0s 一次 func _on_chop_timer_timeout() -> void: # 限制在 range_of_stages 范围内 var s_range = range_of_stages[current_stage - 1] - var player = SceneManager.get_player() var player_pos = player.global_position if player_pos.x < s_range.x or player_pos.x > s_range.y: print("棺材怪 chop out of range, s_range=", s_range, "player_pos.x=", player_pos.x) @@ -69,30 +69,30 @@ func _on_chop_timer_timeout() -> void: # monster.chop_right(aiming_duration) elif current_stage == 2: monster.chop_right(aiming_duration) - var next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(-20.0, 30.0) + var next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(10.0, 50.0) monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y) - await Util.wait(1.0) - next_x = player_pos.x + player.velocity.x + randf_range(0.0, 100.0) + await Util.wait(0.5) + next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(50.0, 200.0) monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y) elif current_stage == 3: # 越来越快 - aiming_duration = clampf(aiming_duration - 0.2, 1.0, 3.0) + aiming_duration = clampf(aiming_duration - 0.1, 1.0, 3.0) chop_timer.wait_time = aiming_duration + 0.5 monster.chop_right(aiming_duration) - var next_x = player_pos.x + player.velocity.x * aiming_duration + var next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(0.0, 50.0) monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y) - await Util.wait(1.0) - next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(-30.0, 50.0) + await Util.wait(0.5) + next_x = player_pos.x + player.velocity.x * aiming_duration + randf_range(30.0, 100.0) monster_target.global_position.x = clampf(next_x, s_range.x, s_range.y) if GlobalConfig.DEBUG: print("棺材怪 chop next_x=", monster_target.global_position.x, "s_range=", s_range) + func drop_meat_hill_1() -> void: monster.hand_mode = 0 var ambush = $"../DeployLayer/Ambush肉山1" ambush.enabled = false - var x = ambush.global_position.x - _drop_meat_hill(x) + _drop_meat_hill() current_stage = 1 monster_target.global_position.x = range_of_stages[0].x + 300.0 monster.refresh_position() @@ -102,8 +102,7 @@ func drop_meat_hill_2() -> void: monster.hand_mode = 1 var ambush = $"../DeployLayer/Ambush肉山2" ambush.enabled = false - var x = ambush.global_position.x - _drop_meat_hill(x) + _drop_meat_hill() # 进入第二关: 动态显示砍 monster.mute = false monster_target.global_position.x = range_of_stages[1].x + 300.0 @@ -114,12 +113,12 @@ func drop_meat_hill_2() -> void: current_stage = 2 ) + func drop_meat_hill_3() -> void: monster.hand_mode = 1 var ambush = $"../DeployLayer/Ambush肉山3" ambush.enabled = false - var x = ambush.global_position.x - _drop_meat_hill(x) + _drop_meat_hill() # 进入第三关: 动态隐藏砍 # monster.mute = false var tween = create_tween() @@ -127,7 +126,7 @@ func drop_meat_hill_3() -> void: tween.tween_callback(func(): monster_target.global_position.x = range_of_stages[2].x + 300.0 monster.refresh_position() - monster.MOVE_SPEED = 280.0 + monster.MOVE_PLUS_SPEED = 800.0 monster.mute = true current_stage = 3 ) @@ -137,15 +136,16 @@ func _on_monster_restart() -> void: var ambush_node = get_node("../DeployLayer/Ambush肉山" + str(current_stage)) ArchiveManager.archive.player_global_position_x = ambush_node.global_position.x - 50.0 - +const MEAT_MIN_DISTANCE = 100.0 # 天上掉肉 -func _drop_meat_hill(ambush_x: float) -> void: +func _drop_meat_hill() -> void: var camera = SceneManager.get_camera_marker() var tween = create_tween() var start_y = -200.0 - var target_y = SceneManager.get_player().global_position.y - meat_hill.global_position = Vector2(ambush_x - 120.0, start_y) + var target_y = player.global_position.y + var x = player.global_position.x - MEAT_MIN_DISTANCE + meat_hill.global_position = Vector2(x, start_y) # 伪自由落体(2.0 s),从 start_y tween 到 target_y tween.tween_method(_drop.bind(start_y, target_y), 0.0, 1.0, 0.8) tween.tween_callback(sfx_meat_hill.play) @@ -158,17 +158,19 @@ func _drop(progress: float, start_y: float, target_y: float) -> void: progress = progress * progress * progress var y = start_y + (target_y - start_y) * progress meat_hill.global_position.y = y + var max_x = player.global_position.x - MEAT_MIN_DISTANCE + meat_hill.global_position.x = min(max_x, meat_hill.global_position.x) func _enter_scene() -> void: var portal_x = $"../DeployLayer/portal_left".global_position.x - var player_x = SceneManager.get_player().global_position.x + var player_x = player.global_position.x if GlobalConfig.DEBUG and player_x > 100: return - SceneManager.get_player().global_position.x = portal_x + player.global_position.x = portal_x SceneManager.lock_player(0, 5, true) SceneManager.pause_and_hide_player_sprite(1.5) - await SceneManager.get_player().animation_finished + await player.animation_finished SceneManager.unlock_player() diff --git a/scene/ground/scene/c03/s10_胖子游戏1.tscn b/scene/ground/scene/c03/s10_胖子游戏1.tscn index 70ceb8d2..ffa1d226 100644 --- a/scene/ground/scene/c03/s10_胖子游戏1.tscn +++ b/scene/ground/scene/c03/s10_胖子游戏1.tscn @@ -214,7 +214,7 @@ rotation = 0.0182861 texture = ExtResource("12_jcaoy") [node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/肉山"] -position = Vector2(-6, -38) +position = Vector2(-19, -38) shape = SubResource("CircleShape2D_lljm3") [node name="肉山Transform" type="RemoteTransform2D" parent="Ground/DeployLayer" index="9"] @@ -257,7 +257,7 @@ position = Vector2(4562, -10) position = Vector2(7820, -14) [node name="ChopTimer" type="Timer" parent="Ground/DeployLayer" index="19"] -wait_time = 2.0 +wait_time = 2.5 autostart = true [node name="被砍断的文字" type="Label" parent="Ground/DeployLayer" index="20"] diff --git a/scene/ground/script/c02/s03_closeup抓药游戏.tscn b/scene/ground/script/c02/s03_closeup抓药游戏.tscn index ca625a23..be82d6de 100644 --- a/scene/ground/script/c02/s03_closeup抓药游戏.tscn +++ b/scene/ground/script/c02/s03_closeup抓药游戏.tscn @@ -702,7 +702,7 @@ polygon = PackedVector2Array(51.1, 0, 24.5, 0, 6.6, 8, 4.1, 8, 0, 12.9, 0, 25, 3 [node name="LimitPolygon2D" type="Polygon2D" parent="."] visible = false -polygon = PackedVector2Array(51, 33, 51, 120, 78, 166, 127, 175, 173, 174, 205, 160, 219, 141, 243, 137, 357, 164, 429, 235, 553, 235, 552, 33) +polygon = PackedVector2Array(51, 33, 52, 121, 79, 134, 122, 130, 168, 130, 201, 135, 219, 141, 256, 143, 357, 164, 429, 235, 553, 235, 552, 33) [node name="Hover完成的药粉" parent="." instance=ExtResource("20_8lx66")] unique_name_in_owner = true @@ -753,10 +753,6 @@ z_index = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = 1.0 -offset_top = 17.0 -offset_right = 1.0 -offset_bottom = 17.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 diff --git a/scene/ground/script/c02/s06_event_2d疯子跑开.gd b/scene/ground/script/c02/s06_event_2d疯子跑开.gd index 23f25eb1..49cf781f 100644 --- a/scene/ground/script/c02/s06_event_2d疯子跑开.gd +++ b/scene/ground/script/c02/s06_event_2d疯子跑开.gd @@ -44,7 +44,7 @@ func _on_stage_updated(): if stage == 1: $"../左侧纸人".visible = true # 显示纸人的时候阻塞通道 - $"../portal_left".enabled = false + # $"../portal_left".enabled = false else: $"../左侧纸人".visible = false - $"../portal_left".enabled = true + # $"../portal_left".enabled = true diff --git a/scene/ground/script/c02/刮海报.gd b/scene/ground/script/c02/刮海报.gd index af87d504..1666f156 100644 --- a/scene/ground/script/c02/刮海报.gd +++ b/scene/ground/script/c02/刮海报.gd @@ -21,8 +21,7 @@ func _ready() -> void: SceneManager.pop_center_notification("ui_left_mouse_shave") if exit_on_shaven_fulfilled: shaven_fulfilled.connect(exit.emit.bind(true)) - %"Draggable纸钱".picked.connect(GlobalFunctor.c03_get_paper_coin) - + var exiting = false diff --git a/scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd b/scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd index 0cade005..645d3208 100644 --- a/scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd +++ b/scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd @@ -22,6 +22,8 @@ func _ready() -> void: func _on_global_stage_updated(e: StringName, s: int): super._on_global_stage_updated(e, s) +@onready var sfx_amb: Sfx = $"Sfx灰姑amb" +@onready var sfx_sfx: Sfx = $"Sfx灰姑sfx" func _on_ground_ready(_ground: Ground2D): # 邀请小蝉晚饭 @@ -30,6 +32,7 @@ func _on_ground_ready(_ground: Ground2D): SceneManager.get_player().set_facing_direction(Vector2.RIGHT) SceneManager.get_player().global_position.x = 63.0 + sfx_amb.play() # 等待玩家看到画面,再开始对话 await Util.wait(2.5) # Part1: 上半段对话1&抽烟 @@ -41,7 +44,6 @@ func _on_ground_ready(_ground: Ground2D): # Part2: 下半段对话2&灯忽闪 animation_player.play("light_flipping") SceneManager.pop_debug_dialog_info("音效", "老鼠叫声+悉悉索索老鼠走路钻洞声") - $"Sfx灰姑出场".play() DialogueManager.show_dialogue_balloon(c03_dialogue, "c03_s02_邀请小蝉与瞎子对话2") await DialogueManager.dialogue_ended # TODO @@ -70,7 +72,7 @@ func light_flipping_darkest_point(darkest_step: int) -> void: if GlobalConfig.DEBUG: print("darkest_step: " + str(darkest_step)) if darkest_step == 1: - #TODO + sfx_sfx.play() SceneManager.pop_debug_dialog_info("音效", "女人诡异吹气声,灰姑的老鼠叫,猫咪害怕的声音响起") the_blind.hide() xxdie.hide() @@ -102,6 +104,7 @@ func light_flipping_darkest_point(darkest_step: int) -> void: await Util.wait(1.0) # 最后一闪,在最暗时调整场景状态 SceneManager.unlock_player() + sfx_amb.easing_kill() func player_walk_right() -> void: diff --git a/scene/ground/script/c03/s04_closeup李氏纸人.gd b/scene/ground/script/c03/s04_closeup李氏纸人.gd index f1ba8e43..af3e7477 100644 --- a/scene/ground/script/c03/s04_closeup李氏纸人.gd +++ b/scene/ground/script/c03/s04_closeup李氏纸人.gd @@ -69,6 +69,7 @@ func _unhandled_input(event: InputEvent) -> void: current_stage = 3 EventManager.set_stage_if_greater("c03_li_paperwoman", 3) EventManager.set_stage_if_greater("c03_pangzi_pull_xchan", 1) + SceneManager.disable_prop_item("prop_药包") SceneManager.enable_prop_item("prop_2013钥匙") animation_player.play("RESET") # 交互完成,退出 diff --git a/scene/ground/script/c03/s06_closeup柜子后的洞.gd b/scene/ground/script/c03/s06_closeup柜子后的洞.gd index b80f9eab..167391a8 100644 --- a/scene/ground/script/c03/s06_closeup柜子后的洞.gd +++ b/scene/ground/script/c03/s06_closeup柜子后的洞.gd @@ -21,7 +21,7 @@ func _ready() -> void: ) # 使用 event binder 控制道具状态 hover_key.interacted.connect(func(): - _on_prop_picked("prop_2013钥匙") + _on_prop_picked("prop_3012钥匙") ) hover_handle.interacted.connect(func(): _on_prop_picked("prop_刀把") @@ -32,7 +32,7 @@ func _on_prop_picked(prop_key: String) -> void: SceneManager.enable_prop_item(prop_key) # 当两个道具都拿到时,触发被胖子打晕演出 if ( - (prop_key == "prop_2013钥匙" and EventManager.get_stage(&"c03_s06_hole_knife_handle") > 0) + (prop_key == "prop_3012钥匙" and EventManager.get_stage(&"c03_s06_hole_knife_handle") > 0) or (prop_key == "prop_刀把" and EventManager.get_stage(&"c03_s06_hole_key") > 0) ): await SceneManager.get_inspector().quit_and_hidden @@ -44,5 +44,7 @@ func _on_prop_picked(prop_key: String) -> void: # 画面抖动变红,玩家被打晕,画面变黑 $AnimationPlayer.play("bleeding_red") Util.shake_layer(self, 1.0) - await Util.wait(1.0) + # 拉长黑幕时长 + SceneManager.black_transition(2.0, 3.0) + await Util.wait(5.0) SceneManager.get_ground_loader().transition_to_scene("c03_s08", "1") diff --git a/scene/ground/script/c03/s07_closeup绞肉机.gd b/scene/ground/script/c03/s07_closeup绞肉机.gd index ae9852ad..3f12b6b0 100644 --- a/scene/ground/script/c03/s07_closeup绞肉机.gd +++ b/scene/ground/script/c03/s07_closeup绞肉机.gd @@ -83,8 +83,10 @@ func _hold_parent_cancel() -> void: func _wheel_placed_and_show() -> void: wheel_sprite.show() + await Util.wait(0.5) Util.shake_layer(self, 1.5) await Util.wait(1.5) + SceneManager.get_player().set_facing_direction(Vector2.LEFT) #演出,结束后传送到胖子游戏 exit.emit() diff --git a/scene/ground/script/c03/s08_closeup符纸.tscn b/scene/ground/script/c03/s08_closeup符纸.tscn index dad96b2b..9102fc20 100644 --- a/scene/ground/script/c03/s08_closeup符纸.tscn +++ b/scene/ground/script/c03/s08_closeup符纸.tscn @@ -1,7 +1,6 @@ -[gd_scene load_steps=7 format=3 uid="uid://jyi40p8ylsj1"] +[gd_scene load_steps=6 format=3 uid="uid://jyi40p8ylsj1"] [ext_resource type="Script" uid="uid://daaqd8nn6wfc" path="res://scene/ground/script/c03/s08_closeup符纸.gd" id="1_ubjcd"] -[ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_l0qq8"] [ext_resource type="Texture2D" uid="uid://dd8c7x4x8xo56" path="res://asset/art/scene/c03/s08_囚室/ux_囚室符纸.png" id="2_ubjcd"] [ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_3foag"] [ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_eic1e"] @@ -10,6 +9,15 @@ [node name="Closeup符纸" type="CanvasLayer"] script = ExtResource("1_ubjcd") +[node name="遮罩" type="TextureRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("5_eic1e") + [node name="BG" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 @@ -19,15 +27,6 @@ grow_vertical = 2 texture = ExtResource("2_ubjcd") stretch_mode = 3 -[node name="遮罩" type="TextureRect" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -texture = ExtResource("2_l0qq8") - [node name="ContentInspector" parent="." instance=ExtResource("3_3foag")] [node name="遮罩" type="TextureRect" parent="ContentInspector"] diff --git a/scene/ground/script/c03/胖子游戏棺材怪.gd b/scene/ground/script/c03/胖子游戏棺材怪.gd index 668a8131..7a04b933 100644 --- a/scene/ground/script/c03/胖子游戏棺材怪.gd +++ b/scene/ground/script/c03/胖子游戏棺材怪.gd @@ -2,7 +2,8 @@ extends AnimatedSprite2D signal before_restart -var MOVE_SPEED := 180.0 +# 在玩家移速基础上增加的速度 +var MOVE_PLUS_SPEED := 300.0 const RESET_Y := -300.0 @export var mute := false: @@ -25,13 +26,17 @@ const RESET_Y := -300.0 @onready var remote_right_side = $"右侧" as RemoteTransform2D @onready var remote_left_shadow = $"左落点" as RemoteTransform2D @onready var remote_right_shadow = $"右落点" as RemoteTransform2D +var player: MainPlayer var left_hand_x_offset: float var right_hand_x_offset: float var chopped_safe_period := false var finished := false + func _ready() -> void: + await SceneManager.ground_ready + player = SceneManager.get_player() left_hand_x_offset = remote_left_shadow.position.x right_hand_x_offset = remote_right_shadow.position.x left_area.body_entered.connect(_on_player_chopped) @@ -76,7 +81,7 @@ func chop_left(aiming_duration := AIMING_DURATION) -> void: if aiming_duration > 0.0: tween.tween_property(remote_left_shadow, "scale", Vector2.ONE, aiming_duration) tween.tween_callback(left_side_sprite.play) - tween.tween_property(remote_left_side, "position:y", 0.0, 0.2) + tween.tween_property(remote_left_side, "position:y", 0.0, 0.15) if aiming_duration <= 0.0: tween.parallel().tween_property(remote_left_shadow, "scale", Vector2.ONE, 0.3) tween.tween_callback(chop_sfx.play) @@ -84,8 +89,8 @@ func chop_left(aiming_duration := AIMING_DURATION) -> void: tween.tween_callback(shake) tween.tween_callback(func(): aiming -= 1) tween.tween_interval(0.1) - tween.tween_property(remote_left_shadow, "scale", Vector2.ZERO, 0.4) - tween.parallel().tween_property(remote_left_side, "position:y", RESET_Y, 0.5) + tween.tween_property(remote_left_shadow, "scale", Vector2(0.2, 0.2), 0.2) + tween.parallel().tween_property(remote_left_side, "position:y", RESET_Y, 0.4) tween.tween_callback(toggle_safe_period.bind(false)) @@ -99,7 +104,7 @@ func chop_right(aiming_duration := AIMING_DURATION) -> void: if aiming_duration > 0.0: tween.tween_property(remote_right_shadow, "scale", Vector2.ONE, aiming_duration) tween.tween_callback(right_side_sprite.play) - tween.tween_property(remote_right_side, "position:y", 0.0, 0.2) + tween.tween_property(remote_right_side, "position:y", 0.0, 0.15) if aiming_duration <= 0.0: tween.parallel().tween_property(remote_right_shadow, "scale", Vector2.ONE, 0.3) tween.tween_callback(chop_sfx.play) @@ -107,8 +112,8 @@ func chop_right(aiming_duration := AIMING_DURATION) -> void: tween.tween_callback(shake) tween.tween_callback(func(): aiming -= 1) tween.tween_interval(0.1) - tween.tween_property(remote_right_shadow, "scale", Vector2.ZERO, 0.4) - tween.parallel().tween_property(remote_right_side, "position:y", RESET_Y, 0.5) + tween.tween_property(remote_right_shadow, "scale", Vector2(0.2, 0.2), 0.2) + tween.parallel().tween_property(remote_right_side, "position:y", RESET_Y, 0.4) tween.tween_callback(toggle_safe_period.bind(false)) @@ -125,7 +130,7 @@ func shake() -> void: func _on_player_chopped(_body) -> void: if chopped_safe_period: return - if finished: + if finished: return finished = true SceneManager.lock_player() @@ -138,6 +143,8 @@ func _on_player_chopped(_body) -> void: func _physics_process(delta: float) -> void: + if not player: + return var target_x = move_target.global_position.x if hand_mode == 0: target_x -= left_hand_x_offset @@ -149,9 +156,10 @@ func _physics_process(delta: float) -> void: if footstep_sfx.playing: footstep_sfx.stop() else: - var speed = MOVE_SPEED - # if aiming: - # speed *= 0.6 + var speed = MOVE_PLUS_SPEED + speed += abs(player.velocity.x) + if aiming: + speed *= 0.3 global_position.x = move_toward(x, target_x, delta * speed) # if Time.get_ticks_msec() % 100 == 0: # prints(x, target_x) @@ -159,6 +167,7 @@ func _physics_process(delta: float) -> void: footstep_sfx.play() _checkout_hand_animation() + func _checkout_hand_animation(is_move := true) -> void: var target_animation = "" if is_move: diff --git a/scene/ground/script/c03/鬼母子游戏.gd b/scene/ground/script/c03/鬼母子游戏.gd index 1fe29ff6..a138fbf5 100644 --- a/scene/ground/script/c03/鬼母子游戏.gd +++ b/scene/ground/script/c03/鬼母子游戏.gd @@ -7,7 +7,7 @@ var freezing := true: for i in range(1, 5): var node = get_node("kid" + str(i)) # 注意 4 号 kid 的 freeze 状态取决于 c03_s03_papercoin3 - if i == 4 and EventManager.get_stage("c03_papercoin3") != 1: + if i == 4 and EventManager.get_stage("c03_s03_papercoin3") < 1: node.freezing = true else: node.freezing = val @@ -25,6 +25,8 @@ var states: Array = [0, 0, 0, 2]: var success_states: Array = [2, 1, 3, 0] func _ready() -> void: + EventManager.stage_updated.connect(_on_stage_updated) + $"../Draggable纸钱".picked.connect(GlobalFunctor.c03_get_paper_coin) $"倒塌/Props/纸舌头".interacted.connect(SceneManager.enable_prop_item.bind("prop_纸舌头")) $"../刮刮乐".visible = true @@ -49,6 +51,11 @@ func _on_shaven_fulfilled(): freezing = false +func _on_stage_updated(event_name: StringName, stage: int) -> void: + if event_name == "c03_s03_papercoin3": + get_node("kid4").freezing = freezing or stage < 1 + + var texture_dir = "res://asset/art/scene/c03/s03_瞎子理发店/鬼母子神/" diff --git a/scene/notification/notification.tscn b/scene/notification/notification.tscn index 0f23a54c..189f18c0 100644 --- a/scene/notification/notification.tscn +++ b/scene/notification/notification.tscn @@ -62,6 +62,7 @@ unique_name_in_owner = true layout_mode = 2 text = "互动提示" label_settings = SubResource("LabelSettings_ycsas") +horizontal_alignment = 1 [node name="MarginContainer3" type="MarginContainer" parent="."] layout_mode = 1 diff --git a/ui/text_helper.gd b/ui/text_helper.gd index d39bb5e3..684e69f3 100644 --- a/ui/text_helper.gd +++ b/ui/text_helper.gd @@ -42,6 +42,8 @@ func refresh(): new_text += c + "\n" msg = new_text set(property_name, msg) + if GlobalConfig.DEBUG: + print("Translation for %s: %s" % [translation_key, msg]) func _get_tr_content():