完善第二章全流程
This commit is contained in:
parent
b38692ed58
commit
df47ccd56b
BIN
asset/art/scene/c03/s00_院子与其他/e_运尸车.png
Normal file
BIN
asset/art/scene/c03/s00_院子与其他/e_运尸车.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
34
asset/art/scene/c03/s00_院子与其他/e_运尸车.png.import
Normal file
34
asset/art/scene/c03/s00_院子与其他/e_运尸车.png.import
Normal file
@ -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
|
BIN
asset/art/scene/c03/s00_院子与其他/e_运尸车2.png
Normal file
BIN
asset/art/scene/c03/s00_院子与其他/e_运尸车2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
34
asset/art/scene/c03/s00_院子与其他/e_运尸车2.png.import
Normal file
34
asset/art/scene/c03/s00_院子与其他/e_运尸车2.png.import
Normal file
@ -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
|
BIN
asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg
Normal file
BIN
asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg
Normal file
Binary file not shown.
19
asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg.import
Normal file
19
asset/audio/sfx/交互/第二章/amb_灰姑演出.ogg.import
Normal file
@ -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
|
BIN
asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg
Normal file
BIN
asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg
Normal file
Binary file not shown.
19
asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg.import
Normal file
19
asset/audio/sfx/交互/第二章/sfx_灰姑出场.ogg.import
Normal file
@ -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
|
Binary file not shown.
@ -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
|
Binary file not shown.
@ -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
|
@ -62,3 +62,4 @@ c03_肉铺账本6,二十日 卖三〇三三 猪肉一斤,,,,
|
||||
c03_肉铺账本7,二十五日 新货到 米肉二十斤 自留 米肉五斤,,,,
|
||||
c03_肉铺账本8,二十六日 赠远山兄 米肉二斤,,,,
|
||||
c03_肉铺账本9,二十七日 卖三〇一二 米肉一斤,,,,
|
||||
c03_s04_柜子照片,吾唯一至亲 李二弟,,,,
|
||||
|
|
@ -86,3 +86,7 @@
|
||||
二十六日 赠远山兄 米肉二斤 [ID:c03_肉铺账本8]
|
||||
二十七日 卖三〇一二 米肉一斤 [ID:c03_肉铺账本9]
|
||||
=> END
|
||||
|
||||
~ c03_其他特写等内容
|
||||
吾唯一至亲 李二弟 [ID:c03_s04_柜子照片]
|
||||
=> END
|
||||
|
@ -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.
|
||||
|
|
@ -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放到碗中或原处]
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
||||
|
@ -64,4 +64,4 @@ func _post_meat_picked() -> void:
|
||||
$"Sfx门板敲门声".play()
|
||||
|
||||
func eavesdrop_plank() -> void:
|
||||
$"Sfx门板敲门声".easing_kill()
|
||||
$"Sfx门板敲门声".loop = false
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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"]
|
||||
|
@ -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")
|
||||
|
@ -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"
|
||||
|
@ -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()
|
||||
|
||||
|
||||
|
@ -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"]
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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")
|
||||
# 交互完成,退出
|
||||
|
@ -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")
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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"]
|
||||
|
@ -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:
|
||||
|
@ -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_瞎子理发店/鬼母子神/"
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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():
|
||||
|
Loading…
Reference in New Issue
Block a user