demo 0.1.2.3 优化
@ -1,25 +1,74 @@
|
||||
[gd_resource type="SpriteFrames" load_steps=17 format=3 uid="uid://c8dl7c68f1yb0"]
|
||||
[gd_resource type="SpriteFrames" load_steps=28 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"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/0.png" id="1_wsslv"]
|
||||
[ext_resource type="Texture2D" uid="uid://bfngukedof1y5" path="res://asset/art/gif/c02_二楼/疯子撞墙/1.png" id="2_1du44"]
|
||||
[ext_resource type="Texture2D" uid="uid://cbasvdgqr8446" path="res://asset/art/gif/c02_二楼/疯子跑动/1.png" id="2_22fhs"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/1.png" id="2_226pc"]
|
||||
[ext_resource type="Texture2D" uid="uid://cj6cjxjsi6v1o" path="res://asset/art/gif/c02_二楼/疯子跑动/2.png" id="3_jh047"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/2.png" id="3_ki3d0"]
|
||||
[ext_resource type="Texture2D" uid="uid://cwt2h0rs4olgx" path="res://asset/art/gif/c02_二楼/疯子撞墙/2.png" id="3_lhftd"]
|
||||
[ext_resource type="Texture2D" uid="uid://85ws4e51p7xd" path="res://asset/art/gif/c02_二楼/疯子跑动/3.png" id="4_0umtp"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/3.png" id="4_222li"]
|
||||
[ext_resource type="Texture2D" uid="uid://cah0u1r1etyit" path="res://asset/art/gif/c02_二楼/疯子撞墙/3.png" id="4_mg204"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/4.png" id="5_cylr4"]
|
||||
[ext_resource type="Texture2D" uid="uid://dvjfqwhwfyhbd" path="res://asset/art/gif/c02_二楼/疯子撞墙/4.png" id="5_f5uit"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/5.png" id="6_3dyjx"]
|
||||
[ext_resource type="Texture2D" uid="uid://ch1xvskmqros" path="res://asset/art/gif/c02_二楼/疯子撞墙/5.png" id="6_m5vcj"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/6.png" id="7_7hwpj"]
|
||||
[ext_resource type="Texture2D" uid="uid://b72c8cfitylg8" path="res://asset/art/gif/c02_二楼/疯子撞墙/6.png" id="7_1671v"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/7.png" id="8_ffct7"]
|
||||
[ext_resource type="Texture2D" uid="uid://cni6i40kn1b8b" path="res://asset/art/gif/c02_二楼/疯子撞墙/7.png" id="8_mvc2t"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/8.png" id="9_82f58"]
|
||||
[ext_resource type="Texture2D" uid="uid://ci2r63i3a6l6h" path="res://asset/art/gif/c02_二楼/疯子撞墙/8.png" id="9_dko4h"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/9.png" id="10_b4lti"]
|
||||
[ext_resource type="Texture2D" uid="uid://blcgp2qwfjn3b" path="res://asset/art/gif/c02_二楼/疯子撞墙/9.png" id="10_rxt3q"]
|
||||
[ext_resource type="Texture2D" path="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/10.png" id="11_opiqg"]
|
||||
[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"]
|
||||
|
||||
[resource]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("1_wsslv")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("2_226pc")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("3_ki3d0")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("4_222li")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("5_cylr4")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("6_3dyjx")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("7_7hwpj")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("8_ffct7")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("9_82f58")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("10_b4lti")
|
||||
}, {
|
||||
"duration": 6.0,
|
||||
"texture": ExtResource("11_opiqg")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"叼纸小猫坐着呼吸",
|
||||
"speed": 30.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("1_hj708")
|
||||
}, {
|
||||
|
BIN
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸.gif
Normal file
After Width: | Height: | Size: 3.7 KiB |
14
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸.gif.import
Normal file
@ -0,0 +1,14 @@
|
||||
[remap]
|
||||
|
||||
importer="gif.animated.texture.plugin"
|
||||
type="SpriteFrames"
|
||||
uid="uid://ca5dpfgp7qt6m"
|
||||
path="res://.godot/imported/叼纸小猫坐着呼吸.gif-ebf8f8899f6012e57cb36a0cbc20c0aa.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸.gif"
|
||||
dest_files=["res://.godot/imported/叼纸小猫坐着呼吸.gif-ebf8f8899f6012e57cb36a0cbc20c0aa.tres"]
|
||||
|
||||
[params]
|
||||
|
BIN
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/0.png
Normal file
After Width: | Height: | Size: 605 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/0.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c236epftux1w2"
|
||||
path="res://.godot/imported/0.png-922aee4d362cd8bc880e41a7e186d37f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/0.png"
|
||||
dest_files=["res://.godot/imported/0.png-922aee4d362cd8bc880e41a7e186d37f.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/gif/c02_二楼/叼纸小猫坐着呼吸/1.png
Normal file
After Width: | Height: | Size: 570 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/1.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://beqqq2s3pjwed"
|
||||
path="res://.godot/imported/1.png-b92d00f4ace5ead0469124bfdea6ae58.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/1.png"
|
||||
dest_files=["res://.godot/imported/1.png-b92d00f4ace5ead0469124bfdea6ae58.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/gif/c02_二楼/叼纸小猫坐着呼吸/10.png
Normal file
After Width: | Height: | Size: 590 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/10.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cblt1arfn4lov"
|
||||
path="res://.godot/imported/10.png-eea90f0c222a833753cc40b7b9a43588.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/10.png"
|
||||
dest_files=["res://.godot/imported/10.png-eea90f0c222a833753cc40b7b9a43588.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/gif/c02_二楼/叼纸小猫坐着呼吸/2.png
Normal file
After Width: | Height: | Size: 590 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/2.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1buxuxtjilqk"
|
||||
path="res://.godot/imported/2.png-d5793bc1252058454127de975fb2981b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/2.png"
|
||||
dest_files=["res://.godot/imported/2.png-d5793bc1252058454127de975fb2981b.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/gif/c02_二楼/叼纸小猫坐着呼吸/3.png
Normal file
After Width: | Height: | Size: 592 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/3.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1u5chw5en7tw"
|
||||
path="res://.godot/imported/3.png-509b591c5554c88a9dba8d233b6cb5fb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/3.png"
|
||||
dest_files=["res://.godot/imported/3.png-509b591c5554c88a9dba8d233b6cb5fb.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/gif/c02_二楼/叼纸小猫坐着呼吸/4.png
Normal file
After Width: | Height: | Size: 577 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/4.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://yrt55cq06fe"
|
||||
path="res://.godot/imported/4.png-ded117d8988392b6d67bd8c69f35ba1d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/4.png"
|
||||
dest_files=["res://.godot/imported/4.png-ded117d8988392b6d67bd8c69f35ba1d.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/gif/c02_二楼/叼纸小猫坐着呼吸/5.png
Normal file
After Width: | Height: | Size: 565 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/5.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cwlexhsxfg88o"
|
||||
path="res://.godot/imported/5.png-18cb5808969f3ed699deda90b9065adb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/5.png"
|
||||
dest_files=["res://.godot/imported/5.png-18cb5808969f3ed699deda90b9065adb.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/gif/c02_二楼/叼纸小猫坐着呼吸/6.png
Normal file
After Width: | Height: | Size: 588 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/6.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cbckomfskxykj"
|
||||
path="res://.godot/imported/6.png-1bdd54a7f2ad072dfb65d9bf297bd8a8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/6.png"
|
||||
dest_files=["res://.godot/imported/6.png-1bdd54a7f2ad072dfb65d9bf297bd8a8.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/gif/c02_二楼/叼纸小猫坐着呼吸/7.png
Normal file
After Width: | Height: | Size: 565 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/7.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cj2hmg3cnripa"
|
||||
path="res://.godot/imported/7.png-13b26bd998a8b9041876718098906d90.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/7.png"
|
||||
dest_files=["res://.godot/imported/7.png-13b26bd998a8b9041876718098906d90.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/gif/c02_二楼/叼纸小猫坐着呼吸/8.png
Normal file
After Width: | Height: | Size: 577 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/8.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://br2u1ia6gs0vv"
|
||||
path="res://.godot/imported/8.png-5c8f07ac5e310e04b8996773df71213b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/8.png"
|
||||
dest_files=["res://.godot/imported/8.png-5c8f07ac5e310e04b8996773df71213b.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/gif/c02_二楼/叼纸小猫坐着呼吸/9.png
Normal file
After Width: | Height: | Size: 592 B |
34
asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/9.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b5ph1p5cp7dyg"
|
||||
path="res://.godot/imported/9.png-783e520bf611e5ccde008a69e8321917.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/gif/c02_二楼/叼纸小猫坐着呼吸/9.png"
|
||||
dest_files=["res://.godot/imported/9.png-783e520bf611e5ccde008a69e8321917.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/prop/c02/小猫纸条.png
Normal file
After Width: | Height: | Size: 52 KiB |
34
asset/art/prop/c02/小猫纸条.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b5kolhax7pf4u"
|
||||
path="res://.godot/imported/小猫纸条.png-2bb3dea64dd13aca468eb7e6755e754e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/art/prop/c02/小猫纸条.png"
|
||||
dest_files=["res://.godot/imported/小猫纸条.png-2bb3dea64dd13aca468eb7e6755e754e.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
|
11
asset/dialogue/event_stage.dialogue
Normal file
@ -0,0 +1,11 @@
|
||||
~ EventStage
|
||||
# 0:关闭 1:打开 2:放入小蝉人偶 3:全部放置正确_可摇手柄 4:已播放完成
|
||||
c02_musicbox_stage
|
||||
# 1:已交互疯子 2:小鞋已掉落
|
||||
c02_madman_interacted
|
||||
# 0:默认 1:寻找弹珠_老虎钳可以换弹珠 2:给出弹珠 3:游戏结束_小猫纸片 4:游戏结束_小猫离开
|
||||
c02_ball_game_stage
|
||||
=> END
|
||||
|
||||
~ ArchiveStage
|
||||
=> END
|
16
asset/dialogue/event_stage.dialogue.import
Normal file
@ -0,0 +1,16 @@
|
||||
[remap]
|
||||
|
||||
importer="dialogue_manager"
|
||||
importer_version=15
|
||||
type="Resource"
|
||||
uid="uid://dohpsb4jttuv1"
|
||||
path="res://.godot/imported/event_stage.dialogue-6d96900dfc739f5d1bb21542d623179e.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://asset/dialogue/event_stage.dialogue"
|
||||
dest_files=["res://.godot/imported/event_stage.dialogue-6d96900dfc739f5d1bb21542d623179e.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
@ -1,45 +1,22 @@
|
||||
keys,zh_CN,_character,_notes,_tags,zh_SH,en
|
||||
重要物品示例,重要物品示例,,,,,
|
||||
1,1,,,,,
|
||||
2,2,,,,,
|
||||
3,3,,,,,
|
||||
4,4,,,,,
|
||||
c02_杂物堆,杂物堵住了,,,,,
|
||||
prop_新鲜的肉,新鲜的肉,,,[#texture=c02/新鲜的肉.png],,
|
||||
c02_小蝉寻人启事_脸部破碎,寻人启事...画像和字迹都看不清。,,,,,
|
||||
小猫玩具发光,嗯?玩具在发光,,,,,
|
||||
setting_画册,画册(G),,,,,
|
||||
notes_干掉的血迹,干掉的血迹,,,,,
|
||||
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
|
||||
bag_tab_日志,笔记,,,,,
|
||||
ux_panel_退出,退出,,,,,
|
||||
setting_主界面,回到主界面,,,,,Back to Menu
|
||||
setting_退出,保存并退出,,,,,Save & Exit
|
||||
setting_日志,笔记(B),,,,,Open the Log
|
||||
setting_记忆,记忆(G),,,,,
|
||||
setting_全屏游戏,全屏游戏,,,,,Full Screen
|
||||
setting_窗口置顶,窗口置顶,,,,,Top Window
|
||||
ux_panel_笔记,线索,,,,,
|
||||
c02_小手其他交易,...还有什么东西能跟它交换呢?,,,,,
|
||||
这是什么鬼东西,它是在讨要什么 [ID:],这是什么鬼东西,它是在讨要什么 [ID:],,,,,
|
||||
index_新游戏,新游戏,,,,,New Game
|
||||
index_继续游戏,继续游戏,,,,,Resume
|
||||
index_退出游戏,退出游戏,,,,,Exit
|
||||
index_新游戏,新游戏,,,,,
|
||||
index_继续游戏,继续游戏,,,,,
|
||||
index_退出游戏,退出游戏,,,,,
|
||||
ux_panel_继续,继续,,,,,
|
||||
ux_panel_线索笔记,线索,,,,,
|
||||
ux_panel_设置,设置,,,,,
|
||||
ux_panel_返回主菜单,返回主菜单,,,,,
|
||||
ux_panel_退出游戏,退出游戏,,,,,
|
||||
setting_总音量,总音量,,,,,Main Volume
|
||||
setting_音效音量,音效音量,,,,,SFX Volume
|
||||
setting_对话音量,对话音量,,,,,Dialogue Volume
|
||||
setting_语言,语言(Lang),,,,,Language
|
||||
setting_总音量,总音量,,,,,
|
||||
setting_音效音量,音效音量,,,,,
|
||||
setting_对话音量,对话音量,,,,,
|
||||
setting_语言,语言(Lang),,,,,
|
||||
setting_字幕,字幕,,,,,
|
||||
setting_气泡文字自动结束,气泡文字自动结束,,,,,
|
||||
setting_气泡等待时长,气泡停留,,,,,
|
||||
setting_全屏,全屏游戏,,,,,
|
||||
setting_置顶,窗口置顶,,,,,
|
||||
setting_自动保存,自动保存,,,,,Auto Save
|
||||
setting_自动保存,自动保存,,,,,
|
||||
ui_秒,秒,,,,,S
|
||||
setting_返回,返回,,,,,
|
||||
bag_tab_笔记,线索,,,,,
|
||||
@ -111,6 +88,8 @@ prop_木头人偶_说明,略显粗糙的木头玩偶,能依稀辨认出是个
|
||||
prop_小蝉人偶_说明,小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花,,,,,
|
||||
prop_粘鼠板,粘鼠板,,,[#texture=c02/粘鼠板特写.png],,
|
||||
prop_粘鼠板_说明,自制的捕鼠工具,纸上面有黏黏的浆糊,,,,,
|
||||
prop_小猫纸条,小猫纸条,,,[#texture=c02/小猫纸条.png],,
|
||||
prop_小猫纸条_说明,「大哥,今晚老地方见 /井\」,,,,,
|
||||
prop_一把香,一把香,,,[#texture=c02/一把香.png],,
|
||||
prop_2014钥匙,2014钥匙,,,[#texture=c02/1012钥匙物品.png],,
|
||||
prop_重要物品示例,重要物品示例,,,[#texture=c01/银元.png],,
|
||||
@ -123,16 +102,8 @@ c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍
|
||||
c01_s07_需要报纸,书店还没开门。,,,,,
|
||||
c01_s08_书店工作,老板交代的工作还没做完,不能偷懒。,,,,,
|
||||
c01_s08_书店工钱,这个月的工钱还没拿。,,,,,
|
||||
c02_杂物堆堵住,杂物堵住了,,,,,
|
||||
notes_纸条,纸条,,,,,
|
||||
notes_锁住了,锁住了,,,,,
|
||||
notes_打不开,打不开,,,,,
|
||||
notes_无法通过,无法通过,,,,,
|
||||
notes_有什么东西,有什么东西,,,,,
|
||||
notes_无法触碰,无法触碰,,,,,
|
||||
notes_挂画,挂画,,,,,
|
||||
notes_相框,相框,,,,,
|
||||
notes_寻人启事,寻人启事,,,,,
|
||||
mem_偷听对话,偷听对话,,,,,
|
||||
mem_疯子看井,疯子看井,,,,,
|
||||
c01_鸡毛掸子,这是鸡毛掸子吗?,,,,,
|
||||
c01_院长书桌,桌上放着一本《圣经》。<br>「得著生命的,將要失喪生命...」,,,,,
|
||||
c01_院长床,这本书已经看过了。<br>...那些句子是什么意思呢?,,,,,
|
||||
@ -205,5 +176,3 @@ c02_小蝉恨他们,我恨他们!,,,,,
|
||||
c02_火灾等待准备,还没准备好点火呢,,,,,
|
||||
c02_霸凌救小蝉开始,啊!我得想办法帮帮她...,,,,,
|
||||
c02_点火前阻止右移,没时间浪费了!想想办法救出小蝉...,,,,,
|
||||
g_偷听对话,偷听对话,,,,,
|
||||
g_疯子看井,疯子看井,,,,,
|
||||
|
|
@ -108,6 +108,8 @@
|
||||
小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花 [ID:prop_小蝉人偶_说明]
|
||||
粘鼠板 [#texture=c02/粘鼠板特写.png] [ID:prop_粘鼠板]
|
||||
自制的捕鼠工具,纸上面有黏黏的浆糊[ID:prop_粘鼠板_说明]
|
||||
小猫纸条 [#texture=c02/小猫纸条.png] [ID:prop_小猫纸条]
|
||||
「大哥,今晚老地方见 /井\」[ID:prop_小猫纸条_说明]
|
||||
|
||||
# 未使用
|
||||
一把香 [#texture=c02/一把香.png] [ID:prop_一把香]
|
||||
@ -134,24 +136,20 @@
|
||||
|
||||
|
||||
~ HoldingReason
|
||||
# c01
|
||||
好像忘记了什么事情,再回去检查一遍吧。 [ID:c01_s05_检查院长房间]
|
||||
书店还没开门。 [ID:c01_s07_需要报纸]
|
||||
老板交代的工作还没做完,不能偷懒。 [ID:c01_s08_书店工作]
|
||||
这个月的工钱还没拿。 [ID:c01_s08_书店工钱]
|
||||
杂物堵住了 [ID:c02_杂物堆堵住]
|
||||
# c02
|
||||
=> END
|
||||
|
||||
~ Notes
|
||||
# 通用
|
||||
纸条 [ID:notes_纸条]
|
||||
锁住了 [ID:notes_锁住了]
|
||||
打不开 [ID:notes_打不开]
|
||||
无法通过 [ID:notes_无法通过]
|
||||
有什么东西 [ID:notes_有什么东西]
|
||||
无法触碰 [ID:notes_无法触碰]
|
||||
挂画 [ID:notes_挂画]
|
||||
相框 [ID:notes_相框]
|
||||
寻人启事 [ID:notes_寻人启事]
|
||||
~ Memory
|
||||
偷听对话[ID:mem_偷听对话]
|
||||
疯子看井[ID:mem_疯子看井]
|
||||
=> END
|
||||
|
||||
~ Notes_c01
|
||||
# c01-s05 院长房间
|
||||
这是鸡毛掸子吗? [ID:c01_鸡毛掸子]
|
||||
桌上放着一本《圣经》。<br>「得著生命的,將要失喪生命...」 [ID:c01_院长书桌]
|
||||
@ -172,6 +170,9 @@
|
||||
# c01-s08 书店
|
||||
这些书都被老鼠啃坏了,连木头架子都没放过。 [ID:c01_s08_书架游戏完成]
|
||||
工钱还在老地方。 [ID:c01_s08_获得袁大头后]
|
||||
=> END
|
||||
|
||||
~ Notes_c02
|
||||
# c02
|
||||
剪辫悬梁上侦探奇闻 [ID:c02_海报_剪辫子侦探]
|
||||
朱连魁全班戏法——「各有幻女...演技新奇」 [ID:c02_海报_戏法班]
|
||||
@ -190,7 +191,7 @@
|
||||
看着唬人,这尺寸只是给孩子们戴着玩的 [ID:c02_s02_大头娃娃头套]
|
||||
自制的八音盒,这么用心的小玩意,怎么会被人扔在这里呢? [ID:c02_s02_八音盒]
|
||||
别出心裁的小机关,缺了点东西,暂时还不能用 [ID:c02_s02_八音盒缺人偶]
|
||||
# c02 院子
|
||||
#院子
|
||||
这地方有些不对劲,最好先找个人问问 [ID:c02_院子_保卫科旁]
|
||||
血迹看上去干了很久,血脚印有大有小,咦,还有个特别小的... [ID:c02_s03_干掉的血迹]
|
||||
算命的摊位? [ID:c02_院子_算命摊位]
|
||||
@ -199,17 +200,17 @@
|
||||
被铁链锁住了 [ID:c02_s03_铁门]
|
||||
三快三慢?是和那个肉铺老板交流的暗号吗? [ID:c02_偷听李癞对话后]
|
||||
这里之前放着的东西好像被人挪走了? [ID:c02_柜子可放置区域]
|
||||
# c02 保卫科
|
||||
#保卫科
|
||||
登记簿?<br>刚才那个小孩在上面写了些什么 [ID:c02_保卫科花名册os]
|
||||
3012?上面有我的名字,看来确实是这里... <br>先去三楼看看吧[ID:c02_保卫科花名册首次互动结束]
|
||||
祭台是专门供奉这只大老鼠的? [ID:c02_保卫科祭台os]
|
||||
鼠歌 <br><br>天地小如喉,<br>红轮自吞吐。<br>多少世间人,<br>都被红轮误。 [ID:c02_保卫科老鼠精]
|
||||
# c02 小手
|
||||
#小手
|
||||
...还有什么东西能跟它交换呢? [ID:c02_小手还能换什么]
|
||||
?! [ID:c02_小手出现摔倒]
|
||||
这是什么鬼东西,它是在讨要什么 [ID:c02_小手是什么鬼]
|
||||
又来一个! [ID:c02_小手再次出现]
|
||||
# c02 内侧楼道
|
||||
#内侧楼道
|
||||
被挡住了 [ID:c02_一楼楼道被挡住]
|
||||
盖着布的木头架子...用来做什么的呢 [ID:c02_一楼戏台]
|
||||
桶是空的,飘着一股血气,又酸又腥。 [ID:c02_描述垃圾通道]
|
||||
@ -217,14 +218,14 @@
|
||||
这里原来放着什么? [ID:c02_一楼粘鼠板]
|
||||
老鼠被粘住死掉了。 [ID:c02_一楼死老鼠]
|
||||
怎么回事...头...好痛 [ID:c02_获得木头人偶]
|
||||
|
||||
# c02 空房间
|
||||
#空房间
|
||||
我的头,又开始痛了 [ID:c02_获得小猫玩具]
|
||||
吕萍阿姨,我不想死,求你...帮帮我 [ID:c02_小蝉头套文字]
|
||||
# c02 敲门_老鼠叼肉
|
||||
!!![ID:c02_互动小蝉头套]
|
||||
#敲门_老鼠叼肉
|
||||
楼道有东西掉下来了? [ID:c02_敲门_肉掉落]
|
||||
刚刚这里有块肉不见了? [ID:c02_敲门_老鼠叼肉]
|
||||
# c02 二楼
|
||||
#二楼
|
||||
另一只小鞋子。 [ID:c02_锡箔换小鞋子]
|
||||
去三楼的路被堵住了,要不先看看别的地方吧。 [ID:c02_二楼楼梯杂物堆]
|
||||
盆里的水很清澈,看上去像是刚盛的。 [ID:c02_二楼水盆]
|
||||
@ -232,19 +233,31 @@
|
||||
又是这种小小尖尖的血脚印... [ID:c02_二楼血脚印]
|
||||
那女孩为什么要我引开这个疯男人?[ID:c02_老鼠叼鞋引开疯子]
|
||||
我要去找洞里的小手把弹珠拿回来。 [ID:c02_小手换回弹珠]
|
||||
# c02 瞎子卧室
|
||||
#瞎子卧室
|
||||
刚才那些...到底是怎么回事? [ID:c02_离开红色演出]
|
||||
「乾三连,坤六断;震仰盂,艮覆碗;离中虚,坎中满;兑上缺,巽下断」<br>咦,这口诀是谁教我的来着... [ID:c02_瞎子卧室_八卦图]
|
||||
院长房间里也有一个类似的十字架。[ID:c02_瞎子卧室_十字架]
|
||||
我会在盒子里一直陪着你 :3 [ID:c02_小蝉盒子特写]
|
||||
我恨他们![ID:c02_小蝉恨他们]
|
||||
# c02 火灾
|
||||
#火灾
|
||||
还没准备好点火呢 [ID:c02_火灾等待准备]
|
||||
啊!我得想办法帮帮她... [ID:c02_霸凌救小蝉开始]
|
||||
没时间浪费了!想想办法救出小蝉... [ID:c02_点火前阻止右移]
|
||||
=> END
|
||||
|
||||
~ Memory
|
||||
偷听对话[ID:g_偷听对话]
|
||||
疯子看井[ID:g_疯子看井]
|
||||
~ Notes_c03
|
||||
# s01
|
||||
# s02
|
||||
# s03
|
||||
# s04
|
||||
# s05
|
||||
=> END
|
||||
|
||||
~ Notes_c04
|
||||
=> END
|
||||
|
||||
~ Notes_c05
|
||||
=> END
|
||||
|
||||
~ Notes_c06
|
||||
=> END
|
||||
|
@ -1,31 +1,51 @@
|
||||
@tool
|
||||
extends Node2D
|
||||
class_name Event2D
|
||||
|
||||
# 前置依赖事件,为空时意味着无前置事件
|
||||
@export var pre_event: String
|
||||
# 当前事件
|
||||
@export var event: String
|
||||
@export var event: StringName
|
||||
@export var hide_if_on_stage: Array[int] = []
|
||||
# 前置依赖事件,为空时意味着无前置事件
|
||||
@export var pre_event: StringName
|
||||
@export var hide_if_pre_on_stage: Array[int] = []
|
||||
@export_tool_button("创建脚本") var create_script := _create_script
|
||||
|
||||
var prev_stage := 0
|
||||
var stage := 0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
if event == &"":
|
||||
printerr("[Event2D] event is not set. continue processing...")
|
||||
stage = EventManager.get_stage(event)
|
||||
if pre_event:
|
||||
prev_stage = EventManager.get_stage(pre_event)
|
||||
refresh_visibility()
|
||||
SceneManager.ground_ready.connect(_on_ground_ready)
|
||||
EventManager.stage_updated.connect(_on_global_stage_updated)
|
||||
|
||||
|
||||
func refresh_visibility() -> void:
|
||||
var should_show = not stage in hide_if_on_stage and not prev_stage in hide_if_pre_on_stage
|
||||
if visible != should_show:
|
||||
visible = should_show
|
||||
|
||||
|
||||
func _on_global_stage_updated(e: StringName, s: int):
|
||||
var updated = false
|
||||
var pre_updated = false
|
||||
if e == pre_event:
|
||||
pre_updated = prev_stage != s
|
||||
prev_stage = s
|
||||
print("[Event2D] Pre-event stage updated: %s, stage: %s" % [pre_event, prev_stage])
|
||||
_on_pre_stage_updated()
|
||||
elif e == event:
|
||||
updated = stage != s
|
||||
stage = s
|
||||
print("[Event2D] Event stage updated: %s, stage: %s" % [event, stage])
|
||||
refresh_visibility()
|
||||
if pre_updated:
|
||||
_on_pre_stage_updated()
|
||||
if updated:
|
||||
_on_stage_updated()
|
||||
|
||||
|
||||
@ -39,3 +59,31 @@ func _on_pre_stage_updated():
|
||||
|
||||
func _on_stage_updated():
|
||||
pass
|
||||
|
||||
|
||||
###### TOOL BUTTON
|
||||
|
||||
var script_template = preload("uid://bmxsei74o3pyw") as Script
|
||||
|
||||
|
||||
func _create_script():
|
||||
var script = script_template.duplicate(true) as Script
|
||||
var ground = get_node("..")
|
||||
while ground and not ground is Ground2D:
|
||||
ground = ground.get_node("..")
|
||||
if not ground:
|
||||
printerr("[Event2D] _create_script Ground2D not found.")
|
||||
return
|
||||
var chapter = ground.scene_name.substr(0, 3)
|
||||
if len(chapter) != 3:
|
||||
printerr("[Event2D] _create_script chapter name error: %s" % ground.scene_name)
|
||||
return
|
||||
var file_name = name.to_snake_case() + ".gd"
|
||||
var path = "res://scene/ground/script/" + chapter + "/" + file_name
|
||||
if FileAccess.file_exists(path):
|
||||
print("file exists, reattach the script to node: %s" % path)
|
||||
set_script(load(path))
|
||||
return
|
||||
ResourceSaver.save(script, path)
|
||||
set_script(load(path))
|
||||
print("[Event2D] Script created: %s" % path)
|
||||
|
@ -222,7 +222,7 @@ panel={
|
||||
[internationalization]
|
||||
|
||||
locale/translations=PackedStringArray("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", "res://asset/dialogue/c01.zh_SH.translation", "res://asset/dialogue/纯中文_无需本地化.zh_CN.translation", "res://asset/dialogue/c01.en.translation", "res://asset/dialogue/c03.zh_CN.translation", "res://asset/dialogue/c04.zh_CN.translation", "res://asset/dialogue/c05.zh_CN.translation", "res://asset/dialogue/c06.zh_CN.translation", "res://asset/dialogue/item_description.en.translation", "res://asset/dialogue/item_description.zh_SH.translation", "res://asset/dialogue/c02.zh_SH.translation", "res://asset/dialogue/npc.zh_SH.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", "res://asset/dialogue/c06.dialogue", "res://asset/dialogue/纯中文_无需本地化.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", "res://asset/dialogue/纯中文_无需本地化.dialogue", "res://asset/dialogue/event_stage.dialogue")
|
||||
locale/test="zh-Hans"
|
||||
locale/fallback="zh"
|
||||
|
||||
|
@ -12,6 +12,8 @@ shader_parameter/samples = 4
|
||||
shader_parameter/angle_spread = 2.0
|
||||
|
||||
[node name="DizzyShader" type="CanvasLayer"]
|
||||
layer = 0
|
||||
visible = false
|
||||
script = ExtResource("1_t0l4c")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="."]
|
||||
|
@ -101,23 +101,26 @@ func _ready() -> void:
|
||||
ground_archive = ArchiveManager.archive.ground_archive()
|
||||
played = ground_archive.get_value(name, "played", false)
|
||||
played_time = 0.0
|
||||
_check_sign_status()
|
||||
if on_first_enter_tree:
|
||||
_do_trigger.call_deferred()
|
||||
if played:
|
||||
if GlobalConfig.DEBUG:
|
||||
print("Ambush has played, name=", name, " one_shot=", one_shot)
|
||||
if interacted_sign_texture:
|
||||
sign_mark.sprite2d.texture = interacted_sign_texture
|
||||
if one_shot:
|
||||
return
|
||||
sign_mark.interacted.connect(_interacted)
|
||||
area2d.body_entered.connect(_entered)
|
||||
area2d.area_entered.connect(_area_entered)
|
||||
if on_first_enter_tree:
|
||||
_do_trigger.call_deferred()
|
||||
visibility_changed.connect(_visibility_changed)
|
||||
_check_sign_status()
|
||||
|
||||
|
||||
func _visibility_changed():
|
||||
_check_sign_status()
|
||||
|
||||
|
||||
func _check_sign_status():
|
||||
sign_mark.enabled = enabled and (not played or not one_shot)
|
||||
sign_mark.enabled = visible and enabled and (not played or not one_shot)
|
||||
sign_mark.display_sign = trigger_mode == "interact"
|
||||
|
||||
|
||||
|
@ -6,6 +6,7 @@ signal interacted
|
||||
signal interacted_with_key(key)
|
||||
# 交互 prop 不匹配
|
||||
signal interact_mismatch_failed
|
||||
signal canceled
|
||||
|
||||
signal sign_mark_offset_updated
|
||||
|
||||
@ -71,15 +72,15 @@ func _ready() -> void:
|
||||
area2d.position.x = collision_width_and_x.y
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
area2d.body_entered.connect(_reset)
|
||||
area2d.body_exited.connect(_on_cancel)
|
||||
area2d.body_entered.connect(_on_entered)
|
||||
area2d.body_exited.connect(_on_exited)
|
||||
sign_snapper.action_on_arrived = action_key
|
||||
if enable_snapper:
|
||||
sign_snapper.arrived.connect(_pre_interacted)
|
||||
else:
|
||||
sign_snapper.enabled = false
|
||||
sign_mark.interacted.connect(_pre_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
sign_mark.cancel.connect(canceled.emit)
|
||||
# setup default value
|
||||
ground_archive = ArchiveManager.archive.ground_archive()
|
||||
icount = ground_archive.get_value(name, "icount", 0)
|
||||
@ -87,13 +88,20 @@ func _ready() -> void:
|
||||
if interacted_times and interacted_texture:
|
||||
texture = interacted_texture
|
||||
_check_sign_status()
|
||||
visibility_changed.connect(_visibility_changed)
|
||||
|
||||
|
||||
func _visibility_changed():
|
||||
_check_sign_status()
|
||||
|
||||
|
||||
func _check_sign_status():
|
||||
sign_mark.enabled = enabled and (not one_shot or interacted_times < one_shot_max_times)
|
||||
sign_mark.enabled = (
|
||||
visible and enabled and (not one_shot or interacted_times < one_shot_max_times)
|
||||
)
|
||||
|
||||
|
||||
func _reset(_body = null) -> void:
|
||||
func _on_entered(_body = null) -> void:
|
||||
_reset_sign_testure_to_prop()
|
||||
var prop_hud = SceneManager.get_prop_hud() as PropHud
|
||||
if not prop_hud.current_item_changed.is_connected(_set_sign_texture_to_prop):
|
||||
@ -118,7 +126,8 @@ func _set_sign_texture_to_prop(_key):
|
||||
# else:
|
||||
# sign_mark.sprite2d.texture = unmatched_sign_texture
|
||||
|
||||
func _on_cancel(_body = null) -> void:
|
||||
|
||||
func _on_exited(_body = null) -> void:
|
||||
# disconnect signal
|
||||
var prop_hud = SceneManager.get_prop_hud() as PropHud
|
||||
if prop_hud and prop_hud.current_item_changed.is_connected(_set_sign_texture_to_prop):
|
||||
@ -142,13 +151,14 @@ func is_key_matched(key) -> bool:
|
||||
|
||||
|
||||
func _pre_interacted() -> void:
|
||||
SceneManager.player_action(action_key)
|
||||
SceneManager.lock_player(0, action_key)
|
||||
if icount == 0 and first_interact_os_key:
|
||||
sign_mark.display_sign = false
|
||||
SceneManager.pop_os_with_str(first_interact_os_key)
|
||||
await SceneManager.get_player().os_finished
|
||||
sign_mark.display_sign = true
|
||||
_on_interacted()
|
||||
SceneManager.unlock_player()
|
||||
|
||||
|
||||
func _on_interacted() -> void:
|
||||
|
@ -13,7 +13,7 @@ signal sign_mark_offset_updated
|
||||
set(val):
|
||||
enabled = val
|
||||
if is_node_ready():
|
||||
sign_mark.enabled = val
|
||||
sign_mark.enabled = enabled and visible
|
||||
@export var collision_width_and_x := Vector2(20.0, 0):
|
||||
set(val):
|
||||
collision_width_and_x = val
|
||||
@ -44,7 +44,7 @@ signal sign_mark_offset_updated
|
||||
if is_node_ready() and Engine.is_editor_hint():
|
||||
notify_property_list_changed()
|
||||
var note_key := ""
|
||||
@export_enum("none", "notes", "c01", "c02", "c03", "c04", "c05") var title_filter := "none":
|
||||
@export_enum("c01", "c02", "c03", "c04", "c05", "c06") var title_filter := "c01":
|
||||
set(val):
|
||||
title_filter = val
|
||||
if is_node_ready() and Engine.is_editor_hint():
|
||||
@ -63,7 +63,6 @@ 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
|
||||
var mutex = Mutex.new()
|
||||
|
||||
var ground_archive: GroundArchive
|
||||
@ -83,20 +82,18 @@ func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
notify_property_list_changed()
|
||||
return
|
||||
area2d.body_entered.connect(_reset)
|
||||
area2d.body_exited.connect(_on_cancel)
|
||||
sign_mark.interacted.connect(_on_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
sign_mark.enabled = enabled
|
||||
|
||||
# setup default value
|
||||
ground_archive = ArchiveManager.archive.ground_archive()
|
||||
icount = ground_archive.get_value(name, "icount", 0)
|
||||
visibility_changed.connect(_visibility_changed)
|
||||
|
||||
|
||||
func _visibility_changed():
|
||||
sign_mark.enabled = enabled and visible
|
||||
|
||||
|
||||
func _on_interacted() -> void:
|
||||
if interacting:
|
||||
return
|
||||
if not note_key:
|
||||
printerr("Note key is not set")
|
||||
return
|
||||
@ -119,14 +116,8 @@ func _on_interacted() -> void:
|
||||
|
||||
|
||||
func _show_os():
|
||||
interacting = true
|
||||
create_tween().tween_property(sign_mark, "modulate:a", 0.0, 0.3)
|
||||
SceneManager.pop_os_with_str(note_key)
|
||||
SceneManager.player_action(action)
|
||||
await SceneManager.get_player().os_finished
|
||||
var tween = create_tween()
|
||||
tween.tween_property(sign_mark, "modulate:a", 1.0, 0.3)
|
||||
interacting = false
|
||||
|
||||
|
||||
func _show_balloon(res, title):
|
||||
@ -135,13 +126,11 @@ func _show_balloon(res, title):
|
||||
# note viewing animation
|
||||
if GlobalConfig.DEBUG:
|
||||
print("[" + name + "] call lock")
|
||||
SceneManager.freeze_player(0, action)
|
||||
interacting = true
|
||||
SceneManager.lock_player(0, action)
|
||||
await DialogueManager.dialogue_ended
|
||||
if GlobalConfig.DEBUG:
|
||||
print("[" + name + "] call lock")
|
||||
SceneManager.release_player()
|
||||
interacting = false
|
||||
SceneManager.unlock_player()
|
||||
|
||||
|
||||
func _set(property: StringName, value: Variant) -> bool:
|
||||
@ -165,7 +154,8 @@ func _get_property_list() -> Array[Dictionary]:
|
||||
if Engine.is_editor_hint():
|
||||
var title_arr = []
|
||||
if dialogue == "items":
|
||||
var id = dialogue_items.titles["Notes"]
|
||||
var title = "Notes_" + title_filter
|
||||
var id = dialogue_items.titles[title]
|
||||
var current_line = dialogue_items.lines[id]
|
||||
while current_line:
|
||||
if current_line.has("translation_key"):
|
||||
@ -175,11 +165,7 @@ func _get_property_list() -> Array[Dictionary]:
|
||||
current_line = dialogue_items.lines[current_line.next_id]
|
||||
else:
|
||||
title_arr = dialogue_res.get_ordered_titles()
|
||||
if title_filter and title_filter != "none":
|
||||
var filted_titles = title_arr.filter(_filter_property)
|
||||
titles = ",".join(filted_titles)
|
||||
else:
|
||||
titles = ",".join(title_arr)
|
||||
titles = ",".join(title_arr)
|
||||
return [
|
||||
{
|
||||
"name": "note_key",
|
||||
@ -188,15 +174,3 @@ func _get_property_list() -> Array[Dictionary]:
|
||||
"hint_string": titles
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
func _filter_property(property: StringName) -> bool:
|
||||
return property.find(title_filter) >= 0
|
||||
|
||||
|
||||
func _on_cancel(_body = null):
|
||||
interacting = false
|
||||
|
||||
|
||||
func _reset(_body):
|
||||
interacting = false
|
||||
|
@ -73,7 +73,11 @@ func _ready() -> void:
|
||||
if GlobalConfig.DEBUG:
|
||||
print("Prop has picked, name=", name, " key=", prop_key)
|
||||
sign_snapper.arrived.connect(_interacted)
|
||||
sign_mark.enabled = enabled
|
||||
_check_display()
|
||||
visibility_changed.connect(_visibility_changed)
|
||||
|
||||
|
||||
func _visibility_changed():
|
||||
_check_display()
|
||||
|
||||
|
||||
@ -82,7 +86,7 @@ func _check_display():
|
||||
visible = false
|
||||
elif visible_follow_enabled:
|
||||
visible = enabled
|
||||
sign_mark.enabled = enabled
|
||||
sign_mark.enabled = enabled and visible
|
||||
|
||||
|
||||
func _get_animation_player() -> AnimationPlayer:
|
||||
|
@ -81,6 +81,7 @@ var icount: int:
|
||||
icount = val
|
||||
ground_archive.set_pair(name, "icount", val)
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
name = "portal_" + portal_name
|
||||
@ -101,6 +102,11 @@ func _ready() -> void:
|
||||
area2d.body_exited.connect(_on_cancel)
|
||||
sign_snapper.arrived.connect(_on_interacted)
|
||||
sign_mark.cancel.connect(_on_cancel)
|
||||
visibility_changed.connect(_visibility_changed)
|
||||
|
||||
|
||||
func _visibility_changed():
|
||||
_check_sign_mark_and_texture()
|
||||
|
||||
|
||||
func _reload_items() -> void:
|
||||
@ -118,7 +124,7 @@ func _reload_items() -> void:
|
||||
|
||||
func _check_sign_mark_and_texture():
|
||||
if not is_node_ready():
|
||||
return
|
||||
return
|
||||
# 切换自身 texture
|
||||
if status == "opened" and opened_texture:
|
||||
texture = opened_texture
|
||||
|
@ -13,6 +13,7 @@ var dialogue_c06 := preload("res://asset/dialogue/c06.dialogue") as DialogueReso
|
||||
# 首次进入场景时触发
|
||||
"oneshot_animation_played": false
|
||||
}
|
||||
@export_tool_button("reset 存档") var reset_archive = _reset_archive
|
||||
# event 也混合其中
|
||||
@export var debug_global_data: Dictionary[String, Variant] = {
|
||||
"enabled_items": ["prop_火柴", "prop_院长的信", "prop_银元"],
|
||||
@ -21,7 +22,6 @@ var dialogue_c06 := preload("res://asset/dialogue/c06.dialogue") as DialogueReso
|
||||
@export var debug_ground_data: Dictionary[String, Variant] = {}
|
||||
|
||||
@export var auto_reset_on_debug_restarting := false
|
||||
@export_tool_button("reset 存档") var reset_archive = _reset_archive
|
||||
|
||||
var oneshot_animation := ""
|
||||
var ground_archive: GroundArchive
|
||||
@ -65,95 +65,6 @@ func _ready() -> void:
|
||||
ready.connect(_on_ready)
|
||||
|
||||
|
||||
func _reset_archive() -> void:
|
||||
var archive = (
|
||||
ResourceLoader.load("user://data/archives/save000.tres", "AssembledArchive")
|
||||
as AssembledArchive
|
||||
)
|
||||
archive.player_global_position_x = debug_global_data.get_or_add("player_x", 30.0)
|
||||
# 重置全局变量
|
||||
var prop_arr = archive.prop_inventory.default_enabled_items
|
||||
if get_node("../MainPlayer").character.begins_with("吕萍"):
|
||||
prop_arr = archive.prop_inventory.xdie_enabled_items
|
||||
elif get_node("../MainPlayer").character.begins_with("小小蝶"):
|
||||
prop_arr = archive.prop_inventory.xxdie_enabled_items
|
||||
elif get_node("../MainPlayer").character.begins_with("小小小蝶"):
|
||||
prop_arr = archive.prop_inventory.xxxdie_enabled_items
|
||||
for prop in debug_global_data["enabled_items"]:
|
||||
if not prop_arr.has(prop):
|
||||
prop_arr.append(prop)
|
||||
# 从 code 中找到 set_global_entry/get_global_value 方法中第一个 property
|
||||
var code = get_script().source_code
|
||||
# set_global_entry(property: StringName, value)
|
||||
# get_global_value(property: StringName, default = null)
|
||||
var setter_regx = RegEx.create_from_string(r'set_global_entry\(.?"(.+)"') as RegEx
|
||||
var getter_regx = RegEx.create_from_string(r'get_global_value\(.?"(.+)"') as RegEx
|
||||
var properties = {}
|
||||
for setter_match in setter_regx.search_all(code):
|
||||
properties[(setter_match as RegExMatch).get_string(1)] = true
|
||||
for getter_match in getter_regx.search_all(code):
|
||||
properties[(getter_match as RegExMatch).get_string(1)] = true
|
||||
for p in properties.keys():
|
||||
if debug_global_data.get(p) == null:
|
||||
debug_global_data[p] = 0
|
||||
# archive.set_global_entry(p, new_data[p])
|
||||
archive.global_data_dict[p] = debug_global_data[p]
|
||||
# 重置 ground_archive
|
||||
if not archive.ground_archives.has(ground.scene_name):
|
||||
archive.ground_archives[ground.scene_name] = GroundArchive.new()
|
||||
archive.ground_archives[ground.scene_name].scene_name = ground.scene_name
|
||||
# setup
|
||||
_setup_ground_data(debug_ground_data, ground)
|
||||
archive.ground_archives[ground.scene_name].data = debug_ground_data
|
||||
# 重置 event 状态
|
||||
# EventManager.set_stage(&"c02_burning_end", 2)
|
||||
# EventManager.set_stage_if_greater("handnote_stage", 5)
|
||||
var event_setter_regx = RegEx.create_from_string(r'EventManager.set_stage\(.?"(.+)"') as RegEx
|
||||
var event_getter_regx = RegEx.create_from_string(r'EventManager.get_stage\(.?"(.+)"') as RegEx
|
||||
var event_set_greater_regx = (
|
||||
RegEx.create_from_string(r'set_stage_if_greater\(.?"(.+)"') as RegEx
|
||||
)
|
||||
var events = {}
|
||||
for event_match in event_setter_regx.search_all(code):
|
||||
events[(event_match as RegExMatch).get_string(1)] = true
|
||||
for event_match in event_set_greater_regx.search_all(code):
|
||||
events[(event_match as RegExMatch).get_string(1)] = true
|
||||
for event_match in event_getter_regx.search_all(code):
|
||||
events[(event_match as RegExMatch).get_string(1)] = true
|
||||
# 遍历 ".." 下所有节点,找到属于 Event2D 的节点
|
||||
_find_event2d(events, ground)
|
||||
for e in events.keys():
|
||||
if debug_global_data.get(e) == null:
|
||||
debug_global_data[e] = 0
|
||||
archive.event_stage[e] = debug_global_data[e]
|
||||
print("reset archive data success")
|
||||
ResourceSaver.save(archive)
|
||||
notify_property_list_changed()
|
||||
|
||||
|
||||
func _setup_ground_data(g_data: Dictionary[String, Variant], node: Node):
|
||||
if not node:
|
||||
return
|
||||
for child in node.get_children():
|
||||
if child is Ambush2D and not g_data.has(child.name):
|
||||
g_data[child.name] = {"played": false}
|
||||
elif child is Interactable2D and not g_data.has(child.name):
|
||||
g_data[child.name] = {"interacted_times": 0}
|
||||
elif child is Pickable2D and not g_data.has(child.name):
|
||||
g_data[child.name] = {"picked": false}
|
||||
elif child is AnimationRoot and not g_data.has(child.name):
|
||||
g_data[child.name] = child.data
|
||||
_setup_ground_data(g_data, child)
|
||||
|
||||
|
||||
func _find_event2d(events: Dictionary, node: Node) -> void:
|
||||
if not node:
|
||||
return
|
||||
for child in node.get_children():
|
||||
if child is Event2D:
|
||||
events[child.event] = true
|
||||
_find_event2d(events, child)
|
||||
|
||||
|
||||
func _on_ground_ready() -> void:
|
||||
pass
|
||||
@ -219,3 +130,98 @@ func _get_property_list() -> Array[Dictionary]:
|
||||
"hint_string": ",".join(get_animation_list()),
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
###### TOOL BUTTON
|
||||
|
||||
func _reset_archive() -> void:
|
||||
var archive = (
|
||||
ResourceLoader.load("user://data/archives/save000.tres", "AssembledArchive")
|
||||
as AssembledArchive
|
||||
)
|
||||
archive.player_global_position_x = debug_global_data.get_or_add("player_x", 30.0)
|
||||
# 重置全局变量
|
||||
var prop_arr = archive.prop_inventory.default_enabled_items
|
||||
if get_node("../MainPlayer").character.begins_with("吕萍"):
|
||||
prop_arr = archive.prop_inventory.xdie_enabled_items
|
||||
elif get_node("../MainPlayer").character.begins_with("小小蝶"):
|
||||
prop_arr = archive.prop_inventory.xxdie_enabled_items
|
||||
elif get_node("../MainPlayer").character.begins_with("小小小蝶"):
|
||||
prop_arr = archive.prop_inventory.xxxdie_enabled_items
|
||||
for prop in debug_global_data["enabled_items"]:
|
||||
if not prop_arr.has(prop):
|
||||
prop_arr.append(prop)
|
||||
# 从 code 中找到 set_global_entry/get_global_value 方法中第一个 property
|
||||
var code = get_script().source_code
|
||||
# set_global_entry(property: StringName, value)
|
||||
# get_global_value(property: StringName, default = null)
|
||||
var setter_regx = RegEx.create_from_string(r'set_global_entry\(.?"(.+)"') as RegEx
|
||||
var getter_regx = RegEx.create_from_string(r'get_global_value\(.?"(.+)"') as RegEx
|
||||
var properties = {}
|
||||
for setter_match in setter_regx.search_all(code):
|
||||
properties[(setter_match as RegExMatch).get_string(1)] = true
|
||||
for getter_match in getter_regx.search_all(code):
|
||||
properties[(getter_match as RegExMatch).get_string(1)] = true
|
||||
for p in properties.keys():
|
||||
if debug_global_data.get(p) == null:
|
||||
debug_global_data[p] = false
|
||||
# archive.set_global_entry(p, new_data[p])
|
||||
archive.global_data_dict[p] = debug_global_data[p]
|
||||
# 重置 ground_archive
|
||||
if not archive.ground_archives.has(ground.scene_name):
|
||||
archive.ground_archives[ground.scene_name] = GroundArchive.new()
|
||||
archive.ground_archives[ground.scene_name].scene_name = ground.scene_name
|
||||
# setup
|
||||
_setup_ground_data(debug_ground_data, ground)
|
||||
archive.ground_archives[ground.scene_name].data = debug_ground_data
|
||||
# 重置 event 状态
|
||||
# EventManager.set_stage(&"c02_burning_end_stage", 2)
|
||||
# EventManager.set_stage_if_greater("handnote_stage", 5)
|
||||
var event_setter_regx = RegEx.create_from_string(r'EventManager.set_stage\(.?"(.+)"') as RegEx
|
||||
var event_getter_regx = RegEx.create_from_string(r'EventManager.get_stage\(.?"(.+)"') as RegEx
|
||||
var event_set_greater_regx = (
|
||||
RegEx.create_from_string(r'set_stage_if_greater\(.?"(.+)"') as RegEx
|
||||
)
|
||||
var events = {}
|
||||
for event_match in event_setter_regx.search_all(code):
|
||||
events[(event_match as RegExMatch).get_string(1)] = true
|
||||
for event_match in event_set_greater_regx.search_all(code):
|
||||
events[(event_match as RegExMatch).get_string(1)] = true
|
||||
for event_match in event_getter_regx.search_all(code):
|
||||
events[(event_match as RegExMatch).get_string(1)] = true
|
||||
# 遍历 ".." 下所有节点,找到属于 Event2D 的节点
|
||||
_find_event2d(events, ground)
|
||||
for e in events.keys():
|
||||
if debug_global_data.get(e) == null:
|
||||
debug_global_data[e] = 0
|
||||
archive.event_stage[e] = debug_global_data[e]
|
||||
print("reset archive data success")
|
||||
ResourceSaver.save(archive)
|
||||
notify_property_list_changed()
|
||||
|
||||
|
||||
func _setup_ground_data(g_data: Dictionary[String, Variant], node: Node):
|
||||
if not node:
|
||||
return
|
||||
for child in node.get_children():
|
||||
if child is Ambush2D and not g_data.has(child.name):
|
||||
g_data[child.name] = {"played": false}
|
||||
elif child is Interactable2D and not g_data.has(child.name):
|
||||
g_data[child.name] = {"interacted_times": 0}
|
||||
elif child is Pickable2D and not g_data.has(child.name):
|
||||
g_data[child.name] = {"picked": false}
|
||||
elif child is AnimationRoot and not g_data.has(child.name):
|
||||
g_data[child.name] = child.data
|
||||
_setup_ground_data(g_data, child)
|
||||
|
||||
|
||||
func _find_event2d(events: Dictionary, node: Node) -> void:
|
||||
if not node:
|
||||
return
|
||||
for child in node.get_children():
|
||||
if child is Event2D:
|
||||
if child.event != &"":
|
||||
events[child.event] = true
|
||||
if child.pre_event != &"":
|
||||
events[child.pre_event] = true
|
||||
_find_event2d(events, child)
|
||||
|
@ -6,6 +6,11 @@ var paper_man: Ambush2D
|
||||
var music_box: Closeup2D
|
||||
var flyer
|
||||
|
||||
# 用于 reset 存档
|
||||
# ArchiveManager.get_global_value(&"c02_musicbox_pic_taken")
|
||||
# ArchiveManager.get_global_value(&"c02_musicbox_danzhu_taken")
|
||||
# ArchiveManager.get_global_value(&"c02_musicbox_xiaomao_taken")
|
||||
# ArchiveManager.get_global_value(&"c02_musicbox_xiaochan_taken")
|
||||
|
||||
# 覆盖该方法
|
||||
func _default_data() -> Dictionary:
|
||||
@ -28,7 +33,8 @@ func _on_ground_ready() -> void:
|
||||
else:
|
||||
_oneshot_wind.call_deferred()
|
||||
paper_man = $"../DeployLayer/Ambush纸人"
|
||||
if 5 <= ArchiveManager.get_global_value(&"c02_musicbox_stage", 0):
|
||||
# 0:关闭 1:打开 2:放入小蝉人偶 3:全部放置正确_可摇手柄 4:已播放完成
|
||||
if 4 <= EventManager.get_stage(&"c02_musicbox_stage"):
|
||||
_display_paper_man(false)
|
||||
else:
|
||||
paper_man.get_node("wall/CollisionShape2D").disabled = true
|
||||
@ -102,7 +108,7 @@ func _on_blink_finished(blink_sprite):
|
||||
|
||||
|
||||
func _on_music_box_exited(_arg):
|
||||
if 5 <= ArchiveManager.get_global_value(&"c02_musicbox_stage"):
|
||||
if 4 <= EventManager.get_stage(&"c02_musicbox_stage"):
|
||||
_display_paper_man(false)
|
||||
# _display_paper_man(true)
|
||||
|
||||
|
@ -63,7 +63,52 @@ data = {
|
||||
"oneshot_animation_played": false
|
||||
}
|
||||
debug_global_data = Dictionary[String, Variant]({
|
||||
"enabled_items": ["prop_火柴", "prop_院长的信", "prop_银元"]
|
||||
"c02_musicbox_danzhu_taken": false,
|
||||
"c02_musicbox_pic_taken": false,
|
||||
"c02_musicbox_stage": 0,
|
||||
"c02_musicbox_xiaochan_taken": false,
|
||||
"c02_musicbox_xiaomao_taken": false,
|
||||
"c02_s02_mouse_push_shoe": false,
|
||||
"enabled_items": ["prop_火柴", "prop_木头人偶", "prop_银元"],
|
||||
"player_x": 530.0
|
||||
})
|
||||
debug_ground_data = Dictionary[String, Variant]({
|
||||
"Ambush太暗了": {
|
||||
"played": false
|
||||
},
|
||||
"Ambush小蝉闪现": {
|
||||
"played": false
|
||||
},
|
||||
"Ambush推小鞋子": {
|
||||
"played": false
|
||||
},
|
||||
"Ambush杂物堆": {
|
||||
"played": false
|
||||
},
|
||||
"Ambush纸人": {
|
||||
"played": false
|
||||
},
|
||||
"AnimationPlayer": {
|
||||
"display_paper_man": false,
|
||||
"first_enter": false,
|
||||
"flyer_shaven": false,
|
||||
"oneshot_animation_played": false
|
||||
},
|
||||
"Closeup八音盒": {
|
||||
"interacted_times": 0
|
||||
},
|
||||
"Closeup刮海报": {
|
||||
"interacted_times": 0
|
||||
},
|
||||
"InteractableLeftPortal": {
|
||||
"interacted_times": 0
|
||||
},
|
||||
"Interactable小鞋子": {
|
||||
"interacted_times": 0
|
||||
},
|
||||
"煤油灯": {
|
||||
"interacted_times": 0
|
||||
}
|
||||
})
|
||||
oneshot_animation = ""
|
||||
|
||||
|
@ -48,7 +48,7 @@ func _on_ground_ready() -> void:
|
||||
if not ArchiveManager.get_global_value(&"c02_burning"):
|
||||
# 点燃前
|
||||
counter.enabled = true
|
||||
elif EventManager.get_stage(&"c02_burning_end") == 2:
|
||||
elif EventManager.get_stage(&"c02_burning_end_stage") == 2:
|
||||
# 离开后
|
||||
counter.visible = false
|
||||
|
||||
@ -56,7 +56,7 @@ func _on_ground_ready() -> void:
|
||||
# 点燃后~离开前
|
||||
if (
|
||||
ArchiveManager.get_global_value(&"c02_burning")
|
||||
and not EventManager.get_stage(&"c02_burning_end") == 2
|
||||
and not EventManager.get_stage(&"c02_burning_end_stage") == 2
|
||||
):
|
||||
new_bg.modulate.a = 1.0
|
||||
# 火灾开始后,无需 enable
|
||||
@ -68,7 +68,7 @@ func _on_ground_ready() -> void:
|
||||
madman_npc.visible = false
|
||||
# c02_madman_hitwall 之后, c02_ball_game_stage==3(游戏结束) 之前;同时 eavesdrop_finished
|
||||
if (
|
||||
ArchiveManager.get_global_value(&"c02_ball_game_stage", 0) < 3
|
||||
EventManager.get_stage(&"c02_ball_game_stage") < 3
|
||||
# and ArchiveManager.get_global_value(&"c02_eavesdrop_finished")
|
||||
):
|
||||
if not ArchiveManager.get_global_value("c02_watched_the_well"):
|
||||
@ -111,7 +111,7 @@ func _on_ground_ready() -> void:
|
||||
|
||||
bully_layer = $"../DeployLayer/霸凌"
|
||||
burning_layer = $"../DeployLayer/火灾"
|
||||
if ArchiveManager.get_global_value(&"c02_ball_game_stage", 0) >= 3:
|
||||
if EventManager.get_stage(&"c02_ball_game_stage") >= 3:
|
||||
_setup_bully_or_burning(true)
|
||||
|
||||
|
||||
@ -194,7 +194,7 @@ func _setup_bully_or_burning(reenter_scene := false):
|
||||
# 弹珠游戏结束后就开始霸凌,此时禁止偷听。第一章结束后(火灾结束),第二章再偷听
|
||||
$"../DeployLayer/Ambush偷听对话".enabled = false
|
||||
eavesdrop_window.visible = false
|
||||
if EventManager.get_stage(&"c02_burning_end") == 2:
|
||||
if EventManager.get_stage(&"c02_burning_end_stage") == 2:
|
||||
# 火灾演出完全结束
|
||||
burning_layer.visible = false
|
||||
bully_layer.visible = false
|
||||
@ -328,6 +328,6 @@ func run_away():
|
||||
tween.tween_property(node, "global_position:x", 20.0, 18.0)
|
||||
await tween.finished
|
||||
# 1: 牵手跑结束; 2: 谢幕演出结束
|
||||
EventManager.set_stage(&"c02_burning_end", 1)
|
||||
EventManager.set_stage(&"c02_burning_end_stage", 1)
|
||||
camera.force_offset.x = 0.0
|
||||
SceneManager.get_ground_loader().transition_to_scene("c02_s06", "right")
|
||||
|
@ -288,11 +288,11 @@ data = {
|
||||
debug_global_data = Dictionary[String, Variant]({
|
||||
"c02_ball_game_stage": 1,
|
||||
"c02_burning": false,
|
||||
"c02_burning_end": 0,
|
||||
"c02_burning_end_stage": 0,
|
||||
"c02_counter_pushed_out": false,
|
||||
"c02_eavesdrop_finished": false,
|
||||
"c02_madman_hitwall": false,
|
||||
"c02_madman_interacted": false,
|
||||
"c02_madman_interacted": 0,
|
||||
"c02_open_gate_first_failed": false,
|
||||
"c02_ready_to_fire": false,
|
||||
"c02_the_blind_room_unlocked": false,
|
||||
@ -584,7 +584,7 @@ texture = ExtResource("8_plfv5")
|
||||
[node name="Event2D小蝉哼歌" type="Node2D" parent="Ground/DeployLayer" index="15"]
|
||||
position = Vector2(800, -173)
|
||||
script = ExtResource("26_o1qbs")
|
||||
event = "c02_madman_interacted"
|
||||
event = &"c02_madman_interacted"
|
||||
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
|
||||
|
||||
[node name="Sfx2D小蝉哼歌" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Event2D小蝉哼歌"]
|
||||
|
@ -331,6 +331,7 @@ autoplay = "default"
|
||||
position = Vector2(627.8, 66.8)
|
||||
color = Color(0.999971, 0.912551, 0.842208, 1)
|
||||
energy = 1.2
|
||||
blend_mode = 2
|
||||
texture = ExtResource("22_laquj")
|
||||
texture_scale = 0.3
|
||||
|
||||
@ -351,7 +352,7 @@ flip_h = true
|
||||
[node name="Event2D小蝉哼歌" type="Node2D" parent="Ground/DeployLayer" index="18"]
|
||||
position = Vector2(92, 38)
|
||||
script = ExtResource("23_4c54f")
|
||||
event = "c02_madman_interacted"
|
||||
event = &"c02_madman_interacted"
|
||||
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
|
||||
|
||||
[node name="Sfx2D小蝉哼歌" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Event2D小蝉哼歌"]
|
||||
@ -366,8 +367,6 @@ loop = true
|
||||
metadata/_custom_type_script = "uid://wapo47a1oddf"
|
||||
|
||||
[node name="DizzyShader" parent="Ground/DeployLayer" index="19" instance=ExtResource("29_74b3r")]
|
||||
layer = 0
|
||||
visible = false
|
||||
|
||||
[node name="MainPlayer" parent="Ground" index="5"]
|
||||
position = Vector2(41, 98)
|
||||
|
@ -25,7 +25,7 @@ func _on_ground_ready() -> void:
|
||||
if (
|
||||
ArchiveManager.get_global_value(&"c02_burning")
|
||||
# 1: 牵手跑结束; 2: 谢幕演出结束
|
||||
and EventManager.get_stage(&"c02_burning_end") == 1
|
||||
and EventManager.get_stage(&"c02_burning_end_stage") == 1
|
||||
):
|
||||
# 禁止再回到瞎子卧室
|
||||
ArchiveManager.set_global_entry(&"c02_the_blind_room_unlocked", false)
|
||||
@ -57,10 +57,10 @@ func _on_ground_ready() -> void:
|
||||
$"../DeployLayer/portal_1".status = "opened"
|
||||
|
||||
ball_game_boys_ambush = $"../DeployLayer/Ambush三男孩"
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3/4:游戏结束
|
||||
if (
|
||||
ArchiveManager.get_global_value(&"c02_the_blind_room_unlocked", false)
|
||||
and ArchiveManager.get_global_value(&"c02_ball_game_stage", 0) < 3
|
||||
and EventManager.get_stage(&"c02_ball_game_stage") < 3
|
||||
):
|
||||
# 进入瞎子卧室后,可开始弹珠游戏
|
||||
ball_game_boys_ambush.enabled = true
|
||||
@ -105,9 +105,9 @@ func _on_mice_hole_interacted():
|
||||
|
||||
func boys_ball_game() -> void:
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
|
||||
var stage = ArchiveManager.get_global_value(&"c02_ball_game_stage", 0)
|
||||
var stage = EventManager.get_stage(&"c02_ball_game_stage")
|
||||
if stage == 0:
|
||||
ArchiveManager.set_global_entry(&"c02_ball_game_stage", 1)
|
||||
EventManager.set_stage(&"c02_ball_game_stage", 1)
|
||||
ArchiveManager.set_global_entry(&"c02_pliers_to_ball", true)
|
||||
SceneManager.lock_player()
|
||||
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s05_三男孩弹珠游戏1")
|
||||
@ -175,7 +175,7 @@ func _on_exit_final_show(_arg):
|
||||
c02_final_layer.queue_free()
|
||||
SceneManager.release_player()
|
||||
# 1: 牵手跑结束; 2: 谢幕演出结束
|
||||
EventManager.set_stage(&"c02_burning_end", 2)
|
||||
EventManager.set_stage(&"c02_burning_end_stage", 2)
|
||||
EventManager.set_stage_if_greater("handnote_stage", 5)
|
||||
# TODO 小蝉上楼后开启第二章
|
||||
ArchiveManager.archive.set_chapter_if_greater(3)
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=49 format=3 uid="uid://cootarwb44vvh"]
|
||||
[gd_scene load_steps=51 format=3 uid="uid://cootarwb44vvh"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qkymk"]
|
||||
[ext_resource type="Script" uid="uid://cbt0ubygchxvv" path="res://scene/ground/scene/c02/s06_二楼.gd" id="2_4dg6u"]
|
||||
@ -34,6 +34,8 @@
|
||||
[ext_resource type="AudioStream" uid="uid://bxp3f263aaqkp" path="res://asset/audio/sfx/脚步/02_室外_1.wav" id="29_tqnu8"]
|
||||
[ext_resource type="AudioStream" uid="uid://d3h0xe0qtai18" path="res://asset/audio/sfx/脚步/02_室外_2.wav" id="30_r7b2r"]
|
||||
[ext_resource type="AudioStream" uid="uid://dwa7xdvg5o0i" path="res://asset/audio/sfx/脚步/02_室外_3.wav" id="31_rpn6g"]
|
||||
[ext_resource type="Script" uid="uid://cny3n681h2588" path="res://scene/ground/script/c02/event_2d叼纸小猫.gd" id="35_h3h1a"]
|
||||
[ext_resource type="PackedScene" uid="uid://dsa6frlw6e6gg" path="res://scene/entity/pickable.tscn" id="36_3u30v"]
|
||||
[ext_resource type="Texture2D" uid="uid://ca3km2f6ncrqo" path="res://asset/art/scene/c02/s06_二楼楼道/e_小蝉偷看.png" id="37_osg51"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_k01ve"]
|
||||
@ -847,16 +849,17 @@ libraries = {
|
||||
}
|
||||
script = ExtResource("2_4dg6u")
|
||||
debug_global_data = Dictionary[String, Variant]({
|
||||
"c02_ball_game_stage": 1,
|
||||
"c02_burning": true,
|
||||
"c02_burning_end": 1,
|
||||
"c02_ball_game_stage": 2,
|
||||
"c02_burning": false,
|
||||
"c02_burning_end_stage": 1,
|
||||
"c02_madman_hitwall": false,
|
||||
"c02_mouse_follow_player": false,
|
||||
"c02_pliers_to_ball": false,
|
||||
"c02_s02_mouse_push_shoe": false,
|
||||
"c02_the_blind_room_unlocked": true,
|
||||
"enabled_items": ["prop_火柴", "prop_院长的信", "prop_银元"],
|
||||
"handnote_stage": 0
|
||||
"enabled_items": ["prop_火柴", "prop_院长的信", "prop_弹珠"],
|
||||
"handnote_stage": 0,
|
||||
"player_x": 30.0
|
||||
})
|
||||
debug_ground_data = Dictionary[String, Variant]({
|
||||
"Ambush三男孩": {
|
||||
@ -865,6 +868,9 @@ debug_ground_data = Dictionary[String, Variant]({
|
||||
"Ambush小蝉偷看": {
|
||||
"played": true
|
||||
},
|
||||
"AnimationPlayer": {
|
||||
"oneshot_animation_played": false
|
||||
},
|
||||
"Closeup弹珠游戏": {
|
||||
"interacted_times": 0
|
||||
},
|
||||
@ -877,6 +883,9 @@ debug_ground_data = Dictionary[String, Variant]({
|
||||
"Interactable老鼠洞": {
|
||||
"interacted_times": 0
|
||||
},
|
||||
"Pickable小猫纸条": {
|
||||
"picked": false
|
||||
},
|
||||
"煤油灯": {
|
||||
"interacted_times": 0
|
||||
},
|
||||
@ -933,10 +942,9 @@ status = "locked"
|
||||
[node name="portal_2" parent="Ground/DeployLayer" index="3" instance=ExtResource("4_haidv")]
|
||||
position = Vector2(222, 14)
|
||||
debug_note = "瞎子理发店"
|
||||
enabled = false
|
||||
portal_name = "2"
|
||||
target_scene = "c03_s01"
|
||||
holding = true
|
||||
holding_reason_key = "c02_杂物堆堵住"
|
||||
prop_key = "prop_2014钥匙"
|
||||
|
||||
[node name="楼道杂物堆" type="Sprite2D" parent="Ground/DeployLayer" index="4"]
|
||||
@ -969,12 +977,6 @@ position = Vector2(616, -14)
|
||||
ground_light_texture = ExtResource("8_7x2h6")
|
||||
ground_height_offset = 15.0
|
||||
|
||||
[node name="SfxInvalid" parent="Ground/DeployLayer/煤油灯" index="0"]
|
||||
process_mode = 0
|
||||
|
||||
[node name="SfxSuccess" parent="Ground/DeployLayer/煤油灯" index="1"]
|
||||
process_mode = 0
|
||||
|
||||
[node name="CollisionShape2D" parent="Ground/DeployLayer/煤油灯/Area2D" index="0"]
|
||||
shape = SubResource("RectangleShape2D_lh55k")
|
||||
|
||||
@ -996,12 +998,6 @@ disable_prop_after_interacted = true
|
||||
prop_key = "prop_小鞋子1"
|
||||
prop_key2 = "prop_小鞋子2"
|
||||
|
||||
[node name="SfxInvalid" parent="Ground/DeployLayer/Interactable老鼠洞" index="0"]
|
||||
process_mode = 0
|
||||
|
||||
[node name="SfxSuccess" parent="Ground/DeployLayer/Interactable老鼠洞" index="1"]
|
||||
process_mode = 0
|
||||
|
||||
[node name="CollisionShape2D" parent="Ground/DeployLayer/Interactable老鼠洞/Area2D" index="0"]
|
||||
shape = SubResource("RectangleShape2D_7kxvk")
|
||||
|
||||
@ -1035,6 +1031,7 @@ action_configs = Array[Dictionary]([{
|
||||
}])
|
||||
|
||||
[node name="疯子撞墙Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/疯子撞墙"]
|
||||
process_mode = 1
|
||||
position = Vector2(5, 28)
|
||||
stream = SubResource("AudioStreamRandomizer_wywax")
|
||||
volume_db = 10.0
|
||||
@ -1160,6 +1157,7 @@ move_configs = Array[Dictionary]([{
|
||||
debug_mov_animation = "方瞎子走路-左"
|
||||
|
||||
[node name="Sfx2D脚步声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/c02_final/瞎子"]
|
||||
process_mode = 1
|
||||
position = Vector2(-39, -20)
|
||||
stream = SubResource("AudioStreamRandomizer_4ndyv")
|
||||
bus = &"game_sfx"
|
||||
@ -1187,6 +1185,23 @@ texture = ExtResource("37_osg51")
|
||||
collision_width_and_x = Vector2(150, 0)
|
||||
hook_method = "glimpse_hide_out"
|
||||
|
||||
[node name="Event2D叼纸小猫" type="Node2D" parent="Ground/DeployLayer" index="19"]
|
||||
position = Vector2(164, 42)
|
||||
script = ExtResource("35_h3h1a")
|
||||
event = &"c02_ball_game_stage"
|
||||
hide_if_on_stage = Array[int]([0, 1, 2, 4])
|
||||
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Ground/DeployLayer/Event2D叼纸小猫"]
|
||||
position = Vector2(0, 15)
|
||||
sprite_frames = ExtResource("10_och2w")
|
||||
animation = &"叼纸小猫坐着呼吸"
|
||||
autoplay = "叼纸小猫坐着呼吸"
|
||||
|
||||
[node name="Pickable小猫纸条" parent="Ground/DeployLayer/Event2D叼纸小猫" instance=ExtResource("36_3u30v")]
|
||||
position = Vector2(-3, 2)
|
||||
prop_key = "prop_小猫纸条"
|
||||
|
||||
[node name="MainPlayer" parent="Ground" index="5"]
|
||||
position = Vector2(63, 95)
|
||||
catty_light_energy = 0.5
|
||||
|
@ -112,16 +112,17 @@ func _on_xiao_chan_interacted() -> void:
|
||||
wood_puppet.enabled = true
|
||||
wood_puppet.modulate.a = 0
|
||||
# 小蝉丢下木头人偶并消失
|
||||
SceneManager.freeze_player(0)
|
||||
SceneManager.lock_player()
|
||||
xiao_chan_sprite.play()
|
||||
var tween = create_tween()
|
||||
tween.tween_interval(1.0)
|
||||
tween.tween_property(wood_puppet, "modulate:a", 1.0, 1.0)
|
||||
await xiao_chan_sprite.animation_finished
|
||||
tween = create_tween()
|
||||
tween.tween_property(xiao_chan_sprite, "modulate:a", 0.0, 1.0)
|
||||
counter.enabled = true
|
||||
SceneManager.release_player()
|
||||
await tween.finished
|
||||
SceneManager.unlock_player()
|
||||
xiao_chan_sprite.animation_finished.connect(func():
|
||||
create_tween().tween_property(xiao_chan_sprite, "modulate:a", 0.0, 1.0)
|
||||
counter.enabled = true
|
||||
)
|
||||
|
||||
|
||||
func _on_pick_wood_puppet() -> void:
|
||||
@ -135,9 +136,13 @@ func _on_leave_room():
|
||||
SceneManager.pop_debug_dialog_info("美术", "玩家将箱子推出房间")
|
||||
|
||||
|
||||
var pushing_counter = false
|
||||
var pushing_counter = false:
|
||||
set(value):
|
||||
pushing_counter = value
|
||||
if GlobalConfig.DEBUG:
|
||||
print("pushing_counter:", pushing_counter)
|
||||
var counter_pushed_out = false
|
||||
|
||||
var walking = false
|
||||
|
||||
func _on_counter_interacted():
|
||||
var player = SceneManager.get_player() as MainPlayer
|
||||
@ -154,10 +159,12 @@ func _on_counter_interacted():
|
||||
var x = counter.global_position.x - player_pull_offset_x
|
||||
# 走到左侧,自动 freeze/release
|
||||
player.walk_to_x(x).tween_callback(func():
|
||||
walking = false
|
||||
player.character = "吕萍推柜子"
|
||||
player.lock_move_right = true
|
||||
SceneManager.pop_center_notification(tr("ui_press_q_to_exit"))
|
||||
)
|
||||
walking = true
|
||||
player.position_updated.connect(on_player_moved_counter)
|
||||
pushing_counter = !pushing_counter
|
||||
|
||||
@ -170,9 +177,9 @@ func on_player_moved_counter(global_pos: Vector2):
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("cancel") and pushing_counter:
|
||||
_on_counter_interacted()
|
||||
if event.is_action_pressed("cancel") and not walking and pushing_counter:
|
||||
get_viewport().set_input_as_handled()
|
||||
_on_counter_interacted()
|
||||
|
||||
|
||||
# 柜子移动后,检查是否展示后面的洞
|
||||
@ -210,6 +217,7 @@ func _on_pick_catty_head() -> void:
|
||||
await SceneManager.get_inspector().quit_and_hidden
|
||||
SceneManager.pop_os_with_str("c02_获得小猫玩具")
|
||||
$"Sfx头痛耳鸣".play()
|
||||
$"../DizzyShader".dizzy()
|
||||
SceneManager.player_action(17, true)
|
||||
await SceneManager.get_player().animation_finished
|
||||
SceneManager.unlock_player()
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=33 format=3 uid="uid://dny21yhtuteap"]
|
||||
[gd_scene load_steps=34 format=3 uid="uid://dny21yhtuteap"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_w7j0m"]
|
||||
[ext_resource type="Script" uid="uid://dkkey7qillk15" path="res://scene/ground/scene/c02/s10_空房间.gd" id="2_egtqi"]
|
||||
@ -25,6 +25,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://ce3kclg1i81l3" path="res://asset/art/scene/c02/s02_大门过道/e_头套(场景中).png" id="17_6uftv"]
|
||||
[ext_resource type="PackedScene" uid="uid://bffqprfmpt0bx" path="res://scene/ground/script/c02/空房间小蝉头套.tscn" id="18_5t4pt"]
|
||||
[ext_resource type="PackedScene" uid="uid://dqkxiqbq83cmq" path="res://scene/entity/closeup.tscn" id="18_8cwaw"]
|
||||
[ext_resource type="PackedScene" uid="uid://decfqoe5v0y6n" path="res://scene/effect/dizzy_shader.tscn" id="26_3kyh4"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_chbaa"]
|
||||
atlas = ExtResource("15_kqj5r")
|
||||
@ -91,7 +92,8 @@ debug_global_data = Dictionary[String, Variant]({
|
||||
"c02_counter_pushed_out": false,
|
||||
"c02_counter_x": -1.0,
|
||||
"c02_the_blind_room_unlocked": false,
|
||||
"enabled_items": ["prop_火柴", "prop_无头小猫玩具", "prop_木头人偶"]
|
||||
"enabled_items": ["prop_火柴", "prop_无头小猫玩具", "prop_木头人偶"],
|
||||
"player_x": 30.0
|
||||
})
|
||||
debug_ground_data = Dictionary[String, Variant]({
|
||||
"Ambush首次进入血脚印": {
|
||||
@ -186,6 +188,7 @@ frame_progress = 0.72851
|
||||
position = Vector2(271, 60.1423)
|
||||
color = Color(0.999971, 0.912551, 0.842208, 1)
|
||||
energy = 1.2
|
||||
blend_mode = 2
|
||||
texture = ExtResource("15_e24j0")
|
||||
texture_scale = 0.3
|
||||
|
||||
@ -213,6 +216,7 @@ position = Vector2(344, -39)
|
||||
texture = ExtResource("17_6uftv")
|
||||
packed_scene = ExtResource("18_5t4pt")
|
||||
sign_mark_offset = Vector2(4.37, 46.38)
|
||||
first_interact_os_key = "c02_互动小蝉头套"
|
||||
|
||||
[node name="Interactable柜子" parent="Ground/DeployLayer" index="8" instance=ExtResource("5_ylhfc")]
|
||||
position = Vector2(364, 55)
|
||||
@ -308,4 +312,6 @@ visible = false
|
||||
energy = 0.9
|
||||
blend_mode = 1
|
||||
|
||||
[node name="DizzyShader" parent="Ground" instance=ExtResource("26_3kyh4")]
|
||||
|
||||
[editable path="Ground"]
|
||||
|
30
scene/ground/script/c02/event_2d叼纸小猫.gd
Normal file
@ -0,0 +1,30 @@
|
||||
@tool
|
||||
extends Event2D
|
||||
|
||||
# var prev_stage := 0
|
||||
# var stage := 0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
|
||||
|
||||
func _on_global_stage_updated(e: StringName, s: int):
|
||||
super._on_global_stage_updated(e, s)
|
||||
|
||||
|
||||
func _on_ground_ready(ground: Ground2D):
|
||||
if $"Pickable小猫纸条".picked:
|
||||
EventManager.set_stage(event, 4)
|
||||
# else:
|
||||
# $"Pickable小猫纸条".triggered.connect(EventManager.set_stage.bind(event, 4))
|
||||
|
||||
|
||||
func _on_pre_stage_updated():
|
||||
pass
|
||||
|
||||
|
||||
func _on_stage_updated():
|
||||
pass
|
1
scene/ground/script/c02/event_2d叼纸小猫.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cny3n681h2588
|
@ -41,11 +41,11 @@ var draggables: Array[Draggable2D] = []
|
||||
@onready var sfx_close_lid = $CloseLid as AudioStreamPlayer
|
||||
@onready var sfx_open_drawer = $OpenDrawer as AudioStreamPlayer
|
||||
|
||||
# 1关闭 2打开 3放入小蝉人偶 4全部放置正确(可摇手柄) 5已播放完成
|
||||
var stage := 1:
|
||||
# 0:关闭 1:打开 2:放入小蝉人偶 3:全部放置正确_可摇手柄 4:已播放完成
|
||||
var stage := 0:
|
||||
set(value):
|
||||
stage = value
|
||||
ArchiveManager.set_global_entry(&"c02_musicbox_stage", value)
|
||||
EventManager.set_stage(&"c02_musicbox_stage", value)
|
||||
|
||||
# 父,母,蝶,蝉
|
||||
var playing_step_sec := 0.5
|
||||
@ -57,7 +57,7 @@ func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
# 读取、配置参数
|
||||
stage = ArchiveManager.get_global_value(&"c02_musicbox_stage", 1)
|
||||
stage = EventManager.get_stage(&"c02_musicbox_stage")
|
||||
playing_step_sec = audio_manual.get_length() / playing_steps
|
||||
|
||||
handle_wheel.rotated.connect(_on_wheel_rotated)
|
||||
@ -105,8 +105,8 @@ func _toggle_side_handle_outline(display: bool):
|
||||
func _on_box_picked(_node):
|
||||
sfx_open_lid.play()
|
||||
# 1关闭 2打开 3放入小蝉人偶 4全部放置正确(可摇手柄) 5已播放完成
|
||||
if stage == 1:
|
||||
_chechout_stage(2)
|
||||
if stage == 0:
|
||||
_chechout_stage(1)
|
||||
else:
|
||||
box_closed.hide()
|
||||
box_broken.show()
|
||||
@ -174,7 +174,7 @@ func post_plugged():
|
||||
if all_plugged:
|
||||
# 全部插入,stage 进入下一阶段
|
||||
sfx_plugged_finish.play()
|
||||
_chechout_stage(stage + 1)
|
||||
_chechout_stage(3)
|
||||
else:
|
||||
sfx_plugged.play()
|
||||
|
||||
@ -187,7 +187,7 @@ var continue_playing := false
|
||||
|
||||
|
||||
func _on_wheel_rotated(radiant: float) -> void:
|
||||
if stage != 4 or accumulated_steps >= playing_steps:
|
||||
if stage != 3 or accumulated_steps >= playing_steps:
|
||||
return
|
||||
accumulated_radiant += radiant
|
||||
if abs(accumulated_radiant) > deg_to_rad(playing_step_degree):
|
||||
@ -201,7 +201,7 @@ func _on_wheel_rotated(radiant: float) -> void:
|
||||
sfx_music.play()
|
||||
else:
|
||||
sfx_music.stream_paused = false
|
||||
Util.timer(playing_step_sec, _on_playing_step_finished)
|
||||
Util.timer(playing_step_sec, _on_playing_step_finished)
|
||||
|
||||
|
||||
func _on_playing_step_finished():
|
||||
@ -212,7 +212,7 @@ func _on_playing_step_finished():
|
||||
return
|
||||
if continue_playing:
|
||||
continue_playing = false
|
||||
Util.timer(playing_step_sec, _on_playing_step_finished)
|
||||
Util.timer(playing_step_sec, _on_playing_step_finished)
|
||||
else:
|
||||
playing = false
|
||||
sfx_music.stream_paused = true
|
||||
@ -227,14 +227,13 @@ func _checkout_auto_play():
|
||||
# var audio_len = audio_auto.get_length()
|
||||
# 音效 9.5 秒时关闭盒子
|
||||
var audio_len = 9.5
|
||||
Util.timer(audio_len, _on_auto_play_finished)
|
||||
Util.timer(audio_len, _on_auto_play_finished)
|
||||
|
||||
|
||||
func _on_auto_play_finished():
|
||||
side_handle.pause()
|
||||
stage = 5
|
||||
# 不播放关闭音效,因为自动播放时已经播放过了
|
||||
_chechout_stage(5, false)
|
||||
_chechout_stage(4, false)
|
||||
# 抖动效果,逐渐减弱
|
||||
var tween = create_tween()
|
||||
var fps := 10.0
|
||||
@ -261,16 +260,16 @@ func _hide_all():
|
||||
|
||||
|
||||
func _chechout_stage(s: int, play_sfx := true) -> void:
|
||||
stage = s
|
||||
_hide_all()
|
||||
var display_handle_outline = false
|
||||
# 1关闭 2打开 3放入小蝉人偶 4全部放置正确(可摇手柄) 5已播放完成
|
||||
stage = s
|
||||
match s:
|
||||
1:
|
||||
0:
|
||||
box_closed.visible = true
|
||||
if play_sfx:
|
||||
sfx_close_lid.play()
|
||||
2:
|
||||
1:
|
||||
if not ArchiveManager.get_global_value(&"c02_musicbox_has_opened"):
|
||||
ArchiveManager.set_global_entry(&"c02_musicbox_has_opened", false)
|
||||
SceneManager.pop_center_notification(tr("c02_s02_八音盒缺人偶"))
|
||||
@ -282,7 +281,7 @@ func _chechout_stage(s: int, play_sfx := true) -> void:
|
||||
pic.visible = true
|
||||
if play_sfx:
|
||||
sfx_open_lid.play()
|
||||
3:
|
||||
2:
|
||||
d4.visible = true
|
||||
d4.modulate.a = 0
|
||||
create_tween().tween_property(d4, "modulate:a", 1.0, 1.0)
|
||||
@ -291,7 +290,7 @@ func _chechout_stage(s: int, play_sfx := true) -> void:
|
||||
pic.visible = true
|
||||
if play_sfx:
|
||||
sfx_open_lid.play()
|
||||
4:
|
||||
3:
|
||||
box_opened.visible = true
|
||||
d4.visible = true
|
||||
if pic:
|
||||
@ -300,7 +299,7 @@ func _chechout_stage(s: int, play_sfx := true) -> void:
|
||||
display_handle_outline = true
|
||||
if play_sfx:
|
||||
sfx_open_lid.play()
|
||||
5:
|
||||
4:
|
||||
box_closed.visible = true
|
||||
_toggle_side_handle_outline(display_handle_outline)
|
||||
|
||||
@ -314,14 +313,14 @@ func _settle_plug_positions():
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("interact") and stage == 2:
|
||||
if event.is_action_pressed("interact") and stage == 1:
|
||||
get_viewport().set_input_as_handled()
|
||||
# 尝试使用道具
|
||||
var hud = SceneManager.get_prop_hud() as PropHud
|
||||
var key = SceneManager.get_current_prop(false)
|
||||
if key == "prop_木头人偶":
|
||||
SceneManager.disable_prop_item(key)
|
||||
_chechout_stage(3)
|
||||
_chechout_stage(2)
|
||||
else:
|
||||
# hud 无效shaking
|
||||
hud.on_toggle_invalid_prop()
|
||||
@ -347,4 +346,4 @@ func _on_pick_catty():
|
||||
SceneManager.enable_prop_item("prop_小猫玩具完整")
|
||||
# 八音盒中看不到 os
|
||||
# await inspector.quit_and_hidden
|
||||
# SceneManager.pop_os_with_str("c02_获得小猫玩具")
|
||||
# SceneManager.pop_os_with_str("c02_获得小猫玩具")
|
||||
|
@ -268,6 +268,7 @@ position = Vector2(294, 177)
|
||||
position = Vector2(340, 178)
|
||||
|
||||
[node name="BrokenBox" type="Sprite2D" parent="All"]
|
||||
visible = false
|
||||
position = Vector2(-48, 38)
|
||||
texture = ExtResource("24_rriyt")
|
||||
centered = false
|
||||
|
@ -12,7 +12,6 @@ signal exit(success)
|
||||
@onready var sfx_shoot = $SfxShoot as Sfx
|
||||
@onready var sfx_dispatch = $SfxDispatch as Sfx
|
||||
|
||||
|
||||
var dialogue_c02 = preload("res://asset/dialogue/c02.dialogue")
|
||||
|
||||
var balls_scene_dict = {
|
||||
@ -21,18 +20,22 @@ var balls_scene_dict = {
|
||||
2: preload("uid://dr0rwr0xjgnjw"),
|
||||
}
|
||||
|
||||
var debug_directly_win = false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
|
||||
hand_pivot.modulate.a = 0
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
|
||||
if ArchiveManager.get_global_value(&"c02_ball_game_stage", 0) == 2:
|
||||
# checkout_round(2)
|
||||
checkout_round(0)
|
||||
else:
|
||||
intro()
|
||||
label.modulate.a = 0
|
||||
# game_win()
|
||||
if GlobalConfig.DEBUG and debug_directly_win:
|
||||
game_win()
|
||||
else:
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束(小猫纸片) 4:游戏结束(小猫离开)
|
||||
if EventManager.get_stage(&"c02_ball_game_stage") == 2:
|
||||
# checkout_round(2)
|
||||
checkout_round(0)
|
||||
else:
|
||||
intro()
|
||||
|
||||
|
||||
func intro():
|
||||
@ -49,9 +52,9 @@ func intro():
|
||||
|
||||
func intro_finished():
|
||||
SceneManager.disable_prop_item("prop_弹珠")
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束(小猫纸片) 4:游戏结束(小猫离开)
|
||||
# 放入弹珠,开始游戏
|
||||
ArchiveManager.set_global_entry(&"c02_ball_game_stage", 2)
|
||||
EventManager.set_stage(&"c02_ball_game_stage", 2)
|
||||
var ball = pivot.get_child(0) as RigidBody2D
|
||||
ball.angular_velocity = 20
|
||||
animation_player.play("give_ball")
|
||||
@ -242,9 +245,9 @@ func _on_hit_boundary():
|
||||
|
||||
func game_win() -> void:
|
||||
print("game_win 弹珠游戏胜利")
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
|
||||
ArchiveManager.set_global_entry(&"c02_ball_game_stage", 3)
|
||||
%"Sfx结尾小孩跑".play()
|
||||
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束(小猫纸片) 4:游戏结束(小猫离开)
|
||||
EventManager.set_stage(&"c02_ball_game_stage", 3)
|
||||
$"Sfx结尾小孩跑_耳鸣".global_play()
|
||||
Util.shake_layer(self, 2.0)
|
||||
# 弹珠雨
|
||||
$BallsFalling.emitting = true
|
||||
|
@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=25 format=3 uid="uid://cjx7o685ox8c1"]
|
||||
[gd_scene load_steps=27 format=3 uid="uid://cjx7o685ox8c1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c5s4giu182isu" path="res://scene/little_game/弹珠游戏/弹珠游戏.gd" id="1_p2trd"]
|
||||
[ext_resource type="AudioStream" uid="uid://cra6rqbs6r1qd" path="res://asset/audio/sfx/旧版/child/小孩从近到远跑步.wav" id="2_aqxy0"]
|
||||
[ext_resource type="Texture2D" uid="uid://bvf8b057baglw" path="res://asset/art/little_game/弹珠/bg_弹珠游戏.png" id="2_bm1k0"]
|
||||
[ext_resource type="AudioStream" uid="uid://b8sbtn3l37uh" path="res://asset/audio/sfx/旧版/c02/红屏.mp3" id="2_w5xa1"]
|
||||
[ext_resource type="Texture2D" uid="uid://bs4tp4amd1kkm" path="res://asset/art/little_game/弹珠/抱手.png" id="3_3kvx4"]
|
||||
[ext_resource type="AudioStream" uid="uid://bb6njoaxi2hbx" path="res://asset/audio/sfx/game/弹珠游戏/hit.ogg" id="3_co06r"]
|
||||
[ext_resource type="FontFile" uid="uid://bnxdsxp7dst7f" path="res://asset/font/锐字太空混元像素简繁-闪 超黑_mianfeiziti.com.ttf" id="3_ctokx"]
|
||||
@ -18,6 +19,13 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dr0rwr0xjgnjw" path="res://scene/little_game/弹珠游戏/balls_2.tscn" id="7_oii6q"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbpy56epwth0j" path="res://scene/little_game/弹珠游戏/balls_falling.tscn" id="8_fk3jp"]
|
||||
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_33cpb"]
|
||||
stream_count = 2
|
||||
stream_0/stream = ExtResource("2_w5xa1")
|
||||
stream_0/volume = 0.0
|
||||
stream_1/stream = ExtResource("2_aqxy0")
|
||||
stream_1/volume = 5.0
|
||||
|
||||
[sub_resource type="Animation" id="Animation_fk3jp"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@ -256,9 +264,8 @@ radius = 300.0
|
||||
[node name="弹珠游戏" type="CanvasLayer"]
|
||||
script = ExtResource("1_p2trd")
|
||||
|
||||
[node name="Sfx结尾小孩跑" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("2_aqxy0")
|
||||
[node name="Sfx结尾小孩跑_耳鸣" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource("AudioStreamSynchronized_33cpb")
|
||||
bus = &"game_sfx"
|
||||
script = ExtResource("4_co06r")
|
||||
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||
|
@ -79,42 +79,42 @@ columns = 2
|
||||
[node name="MemoryItem" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem2" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
||||
[node name="MemoryItem3" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem4" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
||||
[node name="MemoryItem5" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem6" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
||||
[node name="MemoryItem7" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem8" parent="Mem/GridContainer" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
||||
[node name="GridContainer2" type="GridContainer" parent="Mem"]
|
||||
z_index = 10
|
||||
@ -130,39 +130,39 @@ columns = 2
|
||||
[node name="MemoryItem" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem2" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
||||
[node name="MemoryItem3" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem4" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
||||
[node name="MemoryItem5" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem6" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
||||
[node name="MemoryItem7" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("5_7f8pt")
|
||||
title = "g_偷听对话"
|
||||
title = "mem_偷听对话"
|
||||
|
||||
[node name="MemoryItem8" parent="Mem/GridContainer2" instance=ExtResource("4_6dhhp")]
|
||||
layout_mode = 2
|
||||
packed_scene = ExtResource("6_dp1y4")
|
||||
title = "g_疯子看井"
|
||||
title = "mem_疯子看井"
|
||||
|
@ -151,7 +151,6 @@ expand_mode = 1
|
||||
|
||||
[node name="Event2D" type="Node2D" parent="Bag/Book"]
|
||||
script = SubResource("GDScript_7vpan")
|
||||
event = "handnote_stage"
|
||||
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
|
||||
|
||||
[node name="Tabs" parent="Bag" node_paths=PackedStringArray("root") instance=ExtResource("4_7vpan")]
|
||||
|
@ -1,3 +1,4 @@
|
||||
@tool
|
||||
extends Event2D
|
||||
|
||||
# var prev_stage := 0
|
||||
@ -6,7 +7,8 @@ extends Event2D
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
|
||||
func _on_global_stage_updated(e: StringName, s: int):
|
||||
super._on_global_stage_updated(e, s)
|
||||
|