demo 0.2.0.3 hotfix 红色裂缝;谢幕演出标题位置与蜡烛点燃等细节;时间日志等

This commit is contained in:
cakipaul 2025-07-05 02:01:02 +08:00
parent c4d6422dec
commit d0ae1d1f71
22 changed files with 216 additions and 121 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -19,12 +19,12 @@ c02_青岛啤酒详情,系最好最廉之酒,并且每星期有新货到埠,,,
tdb119a3714,据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。,,,
ta750647b12,《申报》,,,
t736cca4563,民国五年一月十三日,,,
c02_保卫科花名册1,一一四 空,,,
c02_保卫科花名册2,一零一五王守义 李兰,,,
c02_保卫科花名册3,二零一二 张文开,,,
c02_保卫科花名册4,二零一三 方启钊 方小蝉,,,
c02_保卫科花名册5,三一二 吕萍,,,
c02_保卫科花名册6,三零一三(看不清),,,
c02_保卫科花名册1,一一四 空,,,
c02_保卫科花名册2,一〇一五 王守义 李兰,,,
c02_保卫科花名册3,二〇一三 张文开,,,
c02_保卫科花名册4,二〇一五 方启钊 方小蝉,,,
c02_保卫科花名册5,三一二 吕萍,,,
c02_保卫科花名册6,三〇一三 (看不清),,,
c02_保卫科花名册7,把我的鞋子拿给老鼠,老鼠会引开那个疯男人,,,
c02_保卫科花名册8,不要相信墙里的东西!,,,
c02_小猫纸条,大哥!今晚老地方见 /井\,,,

1 keys zh_CN _character _notes _tags
19 tdb119a3714 据闻奉贤县分水墩有两人染受鼠疫毙命,医官拟将死者尸骸解剖以观受病之原因及其情状,竟未得死者家属之同意,以该处风气闭塞,闻解剖之说,地方人民甚为惊骇,闻已有聚众滋闹之事,并闻医官已被人殴打,政府以防疫事宜关系紧要拟改令赴沪南区一带调查防疫事宜云。
20 ta750647b12 《申报》
21 t736cca4563 民国五年一月十三日
22 c02_保卫科花名册1 一零一四 空 一〇一四 空
23 c02_保卫科花名册2 一零一五王守义 李兰 一〇一五 王守义 李兰
24 c02_保卫科花名册3 二零一二 张文开 二〇一三 张文开
25 c02_保卫科花名册4 二零一三 方启钊 方小蝉 二〇一五 方启钊 方小蝉
26 c02_保卫科花名册5 三零一二 吕萍 三〇一二 吕萍
27 c02_保卫科花名册6 三零一三(看不清) 三〇一三 (看不清)
28 c02_保卫科花名册7 把我的鞋子拿给老鼠,老鼠会引开那个疯男人
29 c02_保卫科花名册8 不要相信墙里的东西!
30 c02_小猫纸条 大哥!今晚老地方见 /井\

View File

@ -32,13 +32,13 @@
~ c02_保卫科花名册
一四 空 [ID:c02_保卫科花名册1]
零一五王守义 李兰 [ID:c02_保卫科花名册2]
零一二 张文开 [ID:c02_保卫科花名册3]
零一三 方启钊 方小蝉 [ID:c02_保卫科花名册4]
一四 空 [ID:c02_保卫科花名册1]
〇一五 王守义 李兰 [ID:c02_保卫科花名册2]
〇一三 张文开 [ID:c02_保卫科花名册3]
〇一五 方启钊 方小蝉 [ID:c02_保卫科花名册4]
一二 吕萍 [ID:c02_保卫科花名册5]
零一三(看不清) [ID:c02_保卫科花名册6]
一二 吕萍 [ID:c02_保卫科花名册5]
〇一三 (看不清) [ID:c02_保卫科花名册6]
把我的鞋子拿给老鼠,老鼠会引开那个疯男人 [ID:c02_保卫科花名册7]
不要相信墙里的东西! [ID:c02_保卫科花名册8]
=> END

View File

@ -5,6 +5,7 @@ prop_小猫纸条,小猫纸条,,,[#texture=c02/小猫纸条.png],,
prop_小猫纸条_说明,「大哥,今晚老地方见 /井\」,,,,,
prop_眼镜,眼镜,,,[#texture=c02/眼镜.png],,
prop_眼镜_说明,这副眼镜对我很重要。<br>记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。<br>院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。<br>随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。,,,,,
prop_小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩,鞋不成双,祸事难防。,,,,,
index_新游戏,新游戏,,,,,
index_继续游戏,继续游戏,,,,,
index_退出游戏,退出游戏,,,,,
@ -108,8 +109,8 @@ prop_眼镜盒,眼镜盒,,,[#texture=c02/眼镜盒.png],,
prop_眼镜盒_说明,这副眼镜对我很重要。<br>记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。<br>院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。<br>随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。,,,,,
prop_小蝉人偶,小蝉人偶,,,[#texture=c02/小蝉人偶.png],,
prop_小蝉人偶_说明,小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花。,,,,,
prop_单只小鞋子,只小鞋子,,,[#texture=c02/小鞋子1.png],,
prop_小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩鞋不成双,祸事难防。,,,,,
prop_单只小鞋子,只小鞋子,,,[#texture=c02/小鞋子1.png],,
prop_单只小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩。<br>鞋不成双,祸事难防。,,,,,
c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍吧。,,ID格式 prop_xx_说明,,,
c01_s07_需要报纸,书店还没开门。,,,,,
c01_s08_书店工作,老板交代的工作还没做完,不能偷懒。,,,,,

1 keys zh_CN _character _notes _tags zh_SH en
5 prop_小猫纸条_说明 「大哥,今晚老地方见 /井\」
6 prop_眼镜 眼镜 [#texture=c02/眼镜.png]
7 prop_眼镜_说明 这副眼镜对我很重要。<br>记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。<br>院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。<br>随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。
8 prop_小鞋子_说明 这只小鞋子曾经属于一个裹了小脚的女孩,鞋不成双,祸事难防。
9 index_新游戏 新游戏
10 index_继续游戏 继续游戏
11 index_退出游戏 退出游戏
109 prop_眼镜盒_说明 这副眼镜对我很重要。<br>记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。<br>院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。<br>随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。
110 prop_小蝉人偶 小蝉人偶 [#texture=c02/小蝉人偶.png]
111 prop_小蝉人偶_说明 小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花。
112 prop_单只小鞋子 单只小鞋子 一只小鞋子 [#texture=c02/小鞋子1.png]
113 prop_小鞋子_说明 prop_单只小鞋子_说明 这只小鞋子曾经属于一个裹了小脚的女孩,鞋不成双,祸事难防。 这只小鞋子曾经属于一个裹了小脚的女孩。<br>鞋不成双,祸事难防。
114 c01_s05_检查院长房间 好像忘记了什么事情,再回去检查一遍吧。 ID格式: prop_xx_说明
115 c01_s07_需要报纸 书店还没开门。
116 c01_s08_书店工作 老板交代的工作还没做完,不能偷懒。

View File

@ -135,8 +135,8 @@
这副眼镜对我很重要。<br>记得小时候在浦育院的日子,我经常会在半夜时听到奇怪的说话声,还时不时能看见其他小孩子看不见的东西。<br>院长不知从哪儿找来了这样一副眼镜,戴上它后那些怪事就很少发生。<br>随着年龄增长,我几乎已用不到这副眼镜。现在它对我来说似乎有了新的意义。[ID:prop_眼镜盒_说明]
小蝉人偶[#texture=c02/小蝉人偶.png] [ID:prop_小蝉人偶]
小小的人儿,小小的鞋子,小小的友情啊——像蝶依偎着花。 [ID:prop_小蝉人偶_说明]
只小鞋子 [#texture=c02/小鞋子1.png] [ID:prop_单只小鞋子]
这只小鞋子曾经属于一个裹了小脚的女孩,鞋不成双,祸事难防。[ID:prop_小鞋子_说明]
只小鞋子 [#texture=c02/小鞋子1.png] [ID:prop_单只小鞋子]
这只小鞋子曾经属于一个裹了小脚的女孩。<br>鞋不成双,祸事难防。[ID:prop_单只小鞋子_说明]
=> END
#~ prop说明

View File

@ -21,6 +21,6 @@ c02_议论文字19,你们在说什么妖怪?,,,
c02_议论文字20,谁家有妖怪?,,,
c02_议论文字21,啥妖怪,,,
c02_议论文字22,真的假的妖怪,,,
c02_议论文字23,3014那家有妖怪,,,
c02_议论文字23,三〇一二那家有妖怪,,,
c02_议论文字24,要死了,,,
c02_议论文字25,养妖怪,,,

1 keys zh_CN _character _notes _tags
21 c02_议论文字20 谁家有妖怪?
22 c02_议论文字21 啥妖怪
23 c02_议论文字22 真的假的妖怪
24 c02_议论文字23 3014那家有妖怪 三〇一二那家有妖怪
25 c02_议论文字24 要死了
26 c02_议论文字25 养妖怪

View File

@ -21,7 +21,7 @@
谁家有妖怪? [ID:c02_议论文字20]
啥妖怪 [ID:c02_议论文字21]
真的假的妖怪 [ID:c02_议论文字22]
3014那家有妖怪 [ID:c02_议论文字23]
三〇一二那家有妖怪 [ID:c02_议论文字23]
要死了 [ID:c02_议论文字24]
养妖怪 [ID:c02_议论文字25]
=> END

View File

@ -22,9 +22,8 @@ class_name AssembledArchive extends Resource
# 只有在 >=0 的情况下才会生效
@export var player_global_position_x := -100.0
@export var player_direction := Vector2(0, 0)
# game total seconds
@export var game_seconds_all := 0
@export var game_seconds_current := 0
# game seconds
@export var game_seconds := 0
# created time
@export var created_time := "2024-12-24 00:00:00"

View File

@ -62,38 +62,29 @@ func update_locale(lang_id: int, caption_id: int):
TranslationServer.set_locale(lang)
var _on_timer_timeout_counter := 0
func _on_timer_timeout():
var archive = ArchiveManager.archive
if archive:
archive.game_seconds_all += 5
archive.game_seconds_current += 5
if config:
if archive and config:
archive.game_seconds += 5
config.game_total_seconds += 5
func pack_current_time():
var packed_time = PackedTime.new()
packed_time.time = Time.get_datetime_string_from_system(false, true)
var archive = ArchiveManager.archive
if archive:
packed_time.chapter = archive.current_chapter
packed_time.section = archive.current_section
packed_time.game_archive_id = archive.archive_id
packed_time.game_seconds_all = archive.game_seconds_all
packed_time.game_seconds_current = archive.game_seconds_current
# 30s 打印一次
if _on_timer_timeout_counter % 6 == 0:
var time = get_concise_timemark(archive)
prints("[timemark]", Time.get_datetime_string_from_system(), time)
_on_timer_timeout_counter += 1
# for log use
func get_concise_timemark() -> String:
var archive = ArchiveManager.archive
if not archive:
return "r0_c0_s0 00:00:00"
var hour = archive.game_seconds_current / 3600 as int
var minute = (archive.game_seconds_current % 3600) / 60 as int
var second = archive.game_seconds_current % 60
func get_concise_timemark(archive) -> String:
var hour = archive.game_seconds / 3600 as int
var minute = (archive.game_seconds % 3600) / 60 as int
var second = archive.game_seconds % 60
return (
"r"
+ str(ArchiveManager.current_archive_id)
+ str(config.game_rounds)
+ "_c"
+ str(archive.current_chapter)
+ " "

View File

@ -5,8 +5,7 @@ class_name PackedTime extends Resource
@export var game_archive_id := 0
@export var game_rounds := 0
@export var timestamp := "2024-12-20 08:00:00" #system
@export var game_seconds_all := 0 #game seconds since current archive start
@export var game_seconds_current := 0 #game seconds since last chapter
@export var game_seconds := 0 #game seconds since last chapter
@export var chapter := 0 #chapter id
@export var section := 0 #section id

View File

@ -270,6 +270,7 @@ func pop_center_texture(texture: Texture2D, duration := 3.5) -> void:
var chapter_sfx = preload("uid://qku3yk82g364")
func pop_chapter_notification(id: int) -> void:
AudioManager.play_sfx(chapter_sfx)
var texture
@ -381,7 +382,8 @@ func show_settings() -> void:
#### 游戏场景树暂停计数器设置、memory、bag 等菜单都会导致 pause
var pause_counter := 0
var pause_counter_mutex := Mutex.new()
var pause_counter_mutex := Mutex.new()
func toggle_pause_counter(plus := true) -> void:
# 若不 lock会导致快速切换菜单时出现并发问题pause_counter 成为负数)
@ -393,6 +395,12 @@ func toggle_pause_counter(plus := true) -> void:
func quit_game() -> void:
# 防止 await 阻塞导致 bug
get_inspector().quit_and_hidden.emit()
DialogueManager.dialogue_ended.emit(null)
get_player().os_finished.emit("")
get_player().animation_finished.emit()
ArchiveManager.save_all()
var ground_loader = get_ground_loader() as GroundLoader
if ground_loader:

View File

@ -90,7 +90,7 @@ func _check_display():
if picked:
visible = false
elif visible_follow_enabled:
visible = enabled
modulate.a = 1.0 if enabled else 0.0
sign_mark.enabled = enabled and is_visible_in_tree()

View File

@ -291,7 +291,7 @@ speed = 90.0
position = Vector2(1241, -1)
sprite_frames = ExtResource("2_l4axy")
animation = &"秋千"
frame = 3
frame = 5
[node name="Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/秋千"]
process_mode = 1
@ -321,7 +321,7 @@ position = Vector2(1358, 0)
sprite_frames = ExtResource("2_l4axy")
animation = &"跷跷板"
autoplay = "跷跷板"
frame = 5
frame = 3
[node name="Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/跷跷板"]
process_mode = 1
@ -370,6 +370,7 @@ action_configs = Array[Dictionary]([{
position = Vector2(43, -44.5)
sprite_frames = ExtResource("7_dsj2r")
animation = &"【画画男孩-1】呼吸"
frame = 1
action_configs = Array[Dictionary]([{
"animation_intro": "【画画男孩-1】呼吸",
"animation_next": "【画画男孩-1】画画",
@ -425,6 +426,7 @@ one_shot = false
position = Vector2(1558, -12)
sprite_frames = ExtResource("7_dsj2r")
animation = &"【站立小孩-3】呼吸"
frame = 1
action_configs = Array[Dictionary]([{
"animation_intro": &"【站立小孩-3】转身",
"animation_next": "【站立小孩-3】走路",
@ -745,6 +747,7 @@ position = Vector2(377, 18)
scale = Vector2(0.9, 0.9)
sprite_frames = ExtResource("2_l4axy")
animation = &"中蓝衣小孩呼吸"
frame = 2
[node name="门口_右绿衣男孩" parent="Ground/ParallaxForeground/BGParallaxLayer" index="3" instance=ExtResource("8_ouldg")]
position = Vector2(408, 3)
@ -756,7 +759,6 @@ light_mask = 2
position = Vector2(333, 9.5)
sprite_frames = ExtResource("2_l4axy")
animation = &"红衣姑娘呼吸"
frame = 2
action_configs = Array[Dictionary]([{
"animation_intro": &"红衣姑娘抬头",
"animation_next": "红衣姑娘呼吸",
@ -777,6 +779,7 @@ texture_scale = 0.5
position = Vector2(301, 8.5)
sprite_frames = ExtResource("2_l4axy")
animation = &"院长呼吸"
frame = 1
action_configs = Array[Dictionary]([{
"animation_intro": "院长翻书",
"animation_next": "院长呼吸",
@ -810,7 +813,6 @@ scale = Vector2(0.8, 0.8)
sprite_frames = ExtResource("15_wtosl")
animation = &"gif"
autoplay = "gif"
frame = 1
centered = false
offset = Vector2(0, -159)

View File

@ -432,6 +432,7 @@ position = Vector2(953, 42)
sprite_frames = ExtResource("11_o1qbs")
animation = &"c00_头套小婵_run"
autoplay = "c00_头套小婵_idle"
frame = 3
move_configs = Array[Dictionary]([{
"animation": "c00_头套小婵_run",
"animation_next": "",
@ -785,6 +786,7 @@ position = Vector2(29, -3)
sprite_frames = ExtResource("34_1tart")
animation = &"小婵_被霸凌"
autoplay = "小婵_被霸凌"
frame = 1
[node name="f1" parent="Ground/DeployLayer/霸凌" instance=ExtResource("33_ycojw")]
z_index = 10
@ -792,7 +794,7 @@ position = Vector2(-11, 1)
sprite_frames = ExtResource("34_1tart")
animation = &"霸凌1"
autoplay = "霸凌1"
frame = 6
frame = 4
[node name="Sfx2D霸凌童谣" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/霸凌/f1"]
process_mode = 1
@ -810,7 +812,7 @@ position = Vector2(23, 11)
sprite_frames = ExtResource("34_1tart")
animation = &"霸凌2"
autoplay = "霸凌2"
frame = 4
frame = 9
[node name="f3" parent="Ground/DeployLayer/霸凌" instance=ExtResource("33_ycojw")]
z_index = 10
@ -818,7 +820,7 @@ position = Vector2(57, 7)
sprite_frames = ExtResource("34_1tart")
animation = &"霸凌3"
autoplay = "霸凌3"
frame = 1
frame = 2
[node name="Ambush点火游戏阻挡右移" parent="Ground/DeployLayer/霸凌" instance=ExtResource("25_iyaiw")]
position = Vector2(-116, -13)
@ -1007,7 +1009,6 @@ position = Vector2(2229, 41)
sprite_frames = ExtResource("34_1tart")
animation = &"霸凌3-发抖"
autoplay = "霸凌3-发抖"
frame = 1
[node name="Pro小孩喊着火啦3" parent="Ground/DeployLayer/火灾" instance=ExtResource("33_ycojw")]
z_index = 9
@ -1066,6 +1067,7 @@ z_index = 5
position = Vector2(17, -11)
sprite_frames = ExtResource("39_rnk1v")
animation = &"吕萍牵手动作"
frame = 3
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/火灾/牵手跑"]
shape = SubResource("RectangleShape2D_vddfx")

View File

@ -138,9 +138,24 @@ func _on_ball_game_exit(success = null):
ball_game_boys_ambush.enabled = false
ball_game_boys_ambush.visible = false
func _toggle_candles(show: bool) -> void:
var candles = $"../DeployLayer/楼梯蜡烛"
var lights = candles.get_children()
if show:
var tween = create_tween()
tween.tween_property(candles, "modulate:a", 1.0, 1.0)
for light in lights:
tween.parallel().tween_property(light, "energy", 1.2, 1.0)
else:
candles.modulate.a = 0.0
for light in lights:
light.energy = 0.0
# 第一章火灾结束,尾声演出
func _c02_final_show():
_toggle_candles(false)
var player = SceneManager.get_player()
player.set_facing_direction(Vector2(-1, 0))
player.update_x_with_camera_followed(650.0)
@ -172,16 +187,18 @@ func _on_exit_final_show(_arg):
c02_final_layer.get_node("小蝉").play("小婵捂脸")
c02_final_layer.get_node("胖子").play("胖子呼吸")
c02_final_layer.get_node("瞎子").play("方瞎子呼吸-右")
await get_tree().create_timer(1.0).timeout
await get_tree().create_timer(3.0).timeout
$"../DeployLayer/c02_final/瞎子/Sfx2D脚步声".play()
await animation_finished
c02_final_layer.queue_free()
_toggle_candles(true)
await Util.wait(0.5)
# 小蝉上楼后开启第二章
var xxdie = $"../DeployLayer/Pro小小蝶上楼" as AnimatedSprite2D
xxdie.play("小小小蝶动画(跑)")
xxdie.get_node("Sfx2D脚步声").play()
#跑
await xxdie.animation_changed
SceneManager.get_player().set_facing_direction(Vector2.RIGHT)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=63 format=3 uid="uid://cootarwb44vvh"]
[gd_scene load_steps=65 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"]
@ -26,6 +26,7 @@
[ext_resource type="SpriteFrames" uid="uid://c218xrr85jdc7" path="res://asset/art/gif/c03_小小小蝶上楼道/c03_小小小蝶上楼道_frames.tres" id="13_6iuix"]
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="14_7x2h6"]
[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="14_k01ve"]
[ext_resource type="AudioStream" uid="uid://oya48ab6e3ye" path="res://asset/audio/sfx/旧版/child/小孩从远到近跑步.wav" id="14_lipxo"]
[ext_resource type="SpriteFrames" uid="uid://3nas025c2c5u" path="res://asset/art/gif/c02_杂项/c02_杂项_frames.tres" id="14_och2w"]
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="15_k01ve"]
[ext_resource type="Texture2D" uid="uid://1pr32tkx4ttl" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_煤油灯座.png" id="16_osg51"]
@ -835,6 +836,10 @@ animations = [{
"speed": 10.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2rktm"]
resource_local_to_scene = true
size = Vector2(20, 400)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_lh55k"]
resource_local_to_scene = true
size = Vector2(20, 70)
@ -895,7 +900,7 @@ script = ExtResource("2_4dg6u")
debug_global_data = Dictionary[String, Variant]({
"c02_2f_xchan_run_away": 0,
"c02_ball_game_stage": 1,
"c02_burning_end_stage": 2,
"c02_burning_end_stage": 1,
"c02_madman_hitwall": false,
"c02_mouse_follow_player": false,
"c02_pliers_to_ball": false,
@ -1006,62 +1011,62 @@ prop_key = "prop_2014钥匙"
[node name="楼梯蜡烛" type="Node2D" parent="Ground/DeployLayer" index="5"]
[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"]
self_modulate = Color(0.611765, 0.611765, 0.611765, 1)
position = Vector2(777.8, -35.3828)
sprite_frames = SubResource("SpriteFrames_lipxo")
autoplay = "default"
[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛"]
position = Vector2(0, -12.8172)
[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"]
position = Vector2(777.8, -48.2)
color = Color(0.999971, 0.912551, 0.842208, 1)
energy = 1.2
blend_mode = 2
texture = ExtResource("11_2rktm")
texture_scale = 0.3
[node name="小蜡烛2" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"]
[node name="小蜡烛" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D"]
self_modulate = Color(0.611765, 0.611765, 0.611765, 1)
position = Vector2(823, -6)
position = Vector2(0, 12.8172)
sprite_frames = SubResource("SpriteFrames_lipxo")
autoplay = "default"
[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛2"]
position = Vector2(0, -12.8172)
[node name="小蜡烛PointLight2D2" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"]
position = Vector2(823, -18.8172)
color = Color(0.999971, 0.912551, 0.842208, 1)
energy = 1.2
blend_mode = 2
texture = ExtResource("11_2rktm")
texture_scale = 0.3
[node name="小蜡烛3" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"]
[node name="小蜡烛2" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D2"]
self_modulate = Color(0.611765, 0.611765, 0.611765, 1)
position = Vector2(774, 3)
position = Vector2(0, 12.8172)
sprite_frames = SubResource("SpriteFrames_lipxo")
autoplay = "default"
[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛3"]
position = Vector2(0, -12.8172)
[node name="小蜡烛PointLight2D3" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"]
position = Vector2(774, -9.8172)
color = Color(0.999971, 0.912551, 0.842208, 1)
energy = 1.2
blend_mode = 2
texture = ExtResource("11_2rktm")
texture_scale = 0.3
[node name="小蜡烛4" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛"]
[node name="小蜡烛3" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D3"]
self_modulate = Color(0.611765, 0.611765, 0.611765, 1)
position = Vector2(824, 56)
position = Vector2(0, 12.8172)
sprite_frames = SubResource("SpriteFrames_lipxo")
autoplay = "default"
[node name="小蜡烛PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛4"]
position = Vector2(0, -12.8172)
[node name="小蜡烛PointLight2D4" type="PointLight2D" parent="Ground/DeployLayer/楼梯蜡烛"]
position = Vector2(824, 43.1828)
color = Color(0.999971, 0.912551, 0.842208, 1)
energy = 1.2
blend_mode = 2
texture = ExtResource("11_2rktm")
texture_scale = 0.3
[node name="小蜡烛4" type="AnimatedSprite2D" parent="Ground/DeployLayer/楼梯蜡烛/小蜡烛PointLight2D4"]
self_modulate = Color(0.611765, 0.611765, 0.611765, 1)
position = Vector2(0, 12.8172)
sprite_frames = SubResource("SpriteFrames_lipxo")
autoplay = "default"
[node name="Pro小小蝶上楼" parent="Ground/DeployLayer" index="6" instance=ExtResource("10_p6da7")]
position = Vector2(953, 30)
sprite_frames = ExtResource("13_6iuix")
@ -1078,13 +1083,28 @@ move_configs = Array[Dictionary]([{
}])
debug_mov_animation = "小小小蝶动画(跑)"
[node name="Sfx2D脚步声" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/Pro小小蝶上楼"]
process_mode = 1
stream = ExtResource("14_lipxo")
max_distance = 1000.0
attenuation = 1.31951
bus = &"game_sfx"
script = ExtResource("14_7x2h6")
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="Note楼梯杂物堆" parent="Ground/DeployLayer" index="7" instance=ExtResource("10_h3h1a")]
position = Vector2(801, -77)
texture = ExtResource("7_v3hjg")
sign_mark_offset = Vector2(0, 12.34)
sign_mark_offset = Vector2(0, 1.47)
title_filter = "c02"
note_key = "c02_二楼楼梯杂物堆"
[node name="Sign" parent="Ground/DeployLayer/Note楼梯杂物堆" index="1"]
sign_mark_offset = Vector2(0, 1.47)
[node name="CollisionShape2D" parent="Ground/DeployLayer/Note楼梯杂物堆/Area2D" index="0"]
shape = SubResource("RectangleShape2D_2rktm")
[node name="煤油灯" parent="Ground/DeployLayer" index="8" instance=ExtResource("5_3p5ta")]
position = Vector2(616, -14)
ground_light_texture = ExtResource("8_7x2h6")
@ -1220,8 +1240,7 @@ autostart = false
action_configs = Array[Dictionary]([{
"animation_intro": &"胖子呼吸",
&"animation_next": "胖子走路",
"animation_wait_time": 0.0,
&"intro_loop": 6
&"intro_loop": 5
}])
move_configs = Array[Dictionary]([{
"animation": "胖子走路",
@ -1248,14 +1267,11 @@ animation = &"小婵捂脸"
autostart = false
action_configs = Array[Dictionary]([{
"animation_intro": "小婵捂脸",
&"animation_next": "小婵呼吸",
"animation_wait_time": 0.0,
"intro_loop": 1
&"animation_next": "小婵呼吸"
}, {
"animation_intro": &"小婵呼吸",
&"animation_next": "小婵走路",
"animation_wait_time": 0.0,
&"intro_loop": 8
&"intro_loop": 7
}])
move_configs = Array[Dictionary]([{
"animation": "小婵走路",
@ -1276,8 +1292,7 @@ autostart = false
action_configs = Array[Dictionary]([{
"animation_intro": &"方瞎子呼吸-右",
&"animation_next": "方瞎子走路-左",
"animation_wait_time": 0.0,
&"intro_loop": 7
&"intro_loop": 6
}])
move_configs = Array[Dictionary]([{
"animation": "方瞎子走路-左",
@ -1394,5 +1409,6 @@ energy = 0.9
blend_mode = 1
[editable path="Ground"]
[editable path="Ground/DeployLayer/Note楼梯杂物堆"]
[editable path="Ground/DeployLayer/煤油灯"]
[editable path="Ground/DeployLayer/Interactable老鼠洞"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=56 format=4 uid="uid://ryups1dnwdto"]
[gd_scene load_steps=58 format=4 uid="uid://ryups1dnwdto"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_o0m5w"]
[ext_resource type="Script" uid="uid://beqnywn1dlnax" path="res://scene/ground/scene/c02/s09_裂缝.gd" id="2_34a6f"]
@ -170,6 +170,18 @@ fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 1)
[sub_resource type="Gradient" id="Gradient_dv46s"]
offsets = PackedFloat32Array(0, 0.713622, 1)
colors = PackedColorArray(1, 1, 1, 1, 0.831373, 0.831373, 0.831373, 0, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_4uwnc"]
gradient = SubResource("Gradient_dv46s")
width = 200
height = 200
fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 1)
[node name="S09" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-120.0]
@ -184,7 +196,7 @@ debug_global_data = Dictionary[String, Variant]({
"c02_counter_pushed_out": false,
"c02_counter_x": 100.0,
"enabled_items": {},
"player_x": 4500.0
"player_x": 2000.0
})
debug_ground_data = Dictionary[String, Variant]({
"Ambush剪影指天": {
@ -731,7 +743,7 @@ texture = ExtResource("16_7mvsg")
position = Vector2(637.5, -19)
sprite_frames = ExtResource("21_kpfk1")
animation = &"剪影人物床_呼吸"
frame = 3
frame = 2
action_configs = Array[Dictionary]([{
"animation_intro": "剪影人物床_指天",
&"animation_next": "剪影人物床_指天呼吸",
@ -857,45 +869,73 @@ energy = 1.7
range_item_cull_mask = 5
texture = SubResource("GradientTexture2D_xbdgx")
[node name="PointLight2D锅打光" type="PointLight2D" parent="Ground/AmbientLayer" index="7"]
[node name="PointLight2D周边眼睛打光" type="PointLight2D" parent="Ground/AmbientLayer" index="7"]
position = Vector2(1893, -66)
color = Color(0.955664, 0.335062, 0.346781, 1)
energy = 0.7
range_item_cull_mask = 5
texture = SubResource("GradientTexture2D_4uwnc")
[node name="PointLight2D周边眼睛打光2" type="PointLight2D" parent="Ground/AmbientLayer" index="8"]
position = Vector2(1684, -30)
color = Color(0.955664, 0.335062, 0.346781, 1)
energy = 0.7
range_item_cull_mask = 5
texture = SubResource("GradientTexture2D_4uwnc")
[node name="PointLight2D周边眼睛打光3" type="PointLight2D" parent="Ground/AmbientLayer" index="9"]
position = Vector2(1425, -29)
color = Color(0.955664, 0.335062, 0.346781, 1)
energy = 0.7
range_item_cull_mask = 5
texture = SubResource("GradientTexture2D_4uwnc")
[node name="PointLight2D周边眼睛打光4" type="PointLight2D" parent="Ground/AmbientLayer" index="10"]
position = Vector2(1217, -49)
color = Color(0.955664, 0.335062, 0.346781, 1)
energy = 0.7
range_item_cull_mask = 5
texture = SubResource("GradientTexture2D_4uwnc")
[node name="PointLight2D锅打光" type="PointLight2D" parent="Ground/AmbientLayer" index="11"]
position = Vector2(2447, -69)
range_item_cull_mask = 2
texture = ExtResource("32_dv46s")
texture_scale = 1.5
[node name="PointLight2D独立打光" type="PointLight2D" parent="Ground/AmbientLayer" index="8"]
[node name="PointLight2D独立打光" type="PointLight2D" parent="Ground/AmbientLayer" index="12"]
position = Vector2(2440, -45)
color = Color(0.854488, 0.195138, 0.240125, 1)
range_item_cull_mask = 32
texture = ExtResource("32_dv46s")
[node name="PointLight2D独立打光3" type="PointLight2D" parent="Ground/AmbientLayer" index="9"]
[node name="PointLight2D独立打光3" type="PointLight2D" parent="Ground/AmbientLayer" index="13"]
position = Vector2(669, -45)
color = Color(0.854488, 0.195138, 0.240125, 1)
energy = 1.9
range_item_cull_mask = 5
texture = ExtResource("32_dv46s")
[node name="PointLight2D独立打光4" type="PointLight2D" parent="Ground/AmbientLayer" index="10"]
[node name="PointLight2D独立打光4" type="PointLight2D" parent="Ground/AmbientLayer" index="14"]
position = Vector2(318, -36)
color = Color(0.854488, 0.195138, 0.240125, 1)
energy = 2.5
range_item_cull_mask = 5
texture = ExtResource("32_dv46s")
[node name="ParticalsAsh" parent="Ground/AmbientLayer" index="11" instance=ExtResource("7_4a1t6")]
[node name="ParticalsAsh" parent="Ground/AmbientLayer" index="15" instance=ExtResource("7_4a1t6")]
position = Vector2(1091, 1)
[node name="ParticalsAsh2" parent="Ground/AmbientLayer" index="12" instance=ExtResource("7_4a1t6")]
[node name="ParticalsAsh2" parent="Ground/AmbientLayer" index="16" instance=ExtResource("7_4a1t6")]
position = Vector2(1715, 5)
[node name="ParticalsAsh3" parent="Ground/AmbientLayer" index="13" instance=ExtResource("7_4a1t6")]
[node name="ParticalsAsh3" parent="Ground/AmbientLayer" index="17" instance=ExtResource("7_4a1t6")]
position = Vector2(2622, -9)
[node name="ParticalsAsh5" parent="Ground/AmbientLayer" index="14" instance=ExtResource("7_4a1t6")]
[node name="ParticalsAsh5" parent="Ground/AmbientLayer" index="18" instance=ExtResource("7_4a1t6")]
position = Vector2(2782, -7)
[node name="ParticalsAsh4" parent="Ground/AmbientLayer" index="15" instance=ExtResource("7_4a1t6")]
[node name="ParticalsAsh4" parent="Ground/AmbientLayer" index="19" instance=ExtResource("7_4a1t6")]
position = Vector2(2987, -12)
[node name="MainPlayer" parent="Ground" index="5"]
@ -927,7 +967,6 @@ position = Vector2(3421, 25)
points = PackedVector2Array(80, 150, 4500.93, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false
energy = 0.7
blend_mode = 1

View File

@ -63,9 +63,14 @@ animation = &"猫钻进盒子"
[node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(232, 71)
character = "盒子猫"
player_movement_rect = Rect2(37, -158, 363, 316)
facing_direction = Vector2(1, 0)
[node name="CameraFocusMarker" parent="Ground" index="6"]
limit_left = 0
limit_top = -158
limit_right = 564
limit_bottom = 158
force_offset = Vector2(-20, 0)
[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"]
@ -75,6 +80,7 @@ position = Vector2(3584, -7)
points = PackedVector2Array(37, 150, 400, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"]
energy = 0.7
blend_mode = 1
[node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("4_vv3sh")]

View File

@ -32,8 +32,7 @@ func _on_area_entered(_body):
var tween = create_tween()
tween.tween_property(label, "position:y", 3.0, 0.6).set_trans(Tween.TRANS_BOUNCE)
tween.tween_property(label, "position:y", 0.0, 0.6).set_trans(Tween.TRANS_BOUNCE)
tween.set_loops(10)
create_tween().tween_property(label, "modulate:a", 0.0, 8.0)
tween.set_loops(1000)
func _update_text():
label.text = "[pulse ease=2.0 freq=2 color=#000000cf] " + tr(key)

View File

@ -2,8 +2,8 @@
extends RigidBody2D
signal hit_ball
signal hit_ball_callback
signal hit_ball_touched
signal hit_ball_finished
signal hit_boundary
@export_enum("1", "2", "3", "4", "5", "6", "7") var id := "1":
@ -61,6 +61,7 @@ func hide_away():
visible = false
collision_shape.disabled = true
func ease_out():
collision_shape.disabled = true
create_tween().tween_property(self, "modulate:a", 0.0, 0.5)
@ -77,27 +78,39 @@ func _set_up_texture():
sprite2d.texture = texture_dict[id]
var recycling = false
var shoot_count := 0
var shooted_instances = {}
func _on_body_entered(node: Node):
if GlobalConfig.DEBUG:
print("[debug] hit node", node.get_path())
if recycling or not is_shooter:
if not is_shooter:
return
recycling = true
var tween = create_tween()
var tween
if node is StaticBody2D:
tween.tween_property(self, "modulate:a", 0.0, 1.0)
tween.tween_callback(hit_boundary.emit)
tween.tween_callback(queue_free)
if shoot_count == 0:
tween = create_tween()
tween.tween_property(self, "modulate:a", 0.0, 1.0)
tween.tween_callback(hit_boundary.emit)
tween.tween_callback(queue_free)
return
hit_ball.emit()
# 过滤抖动/重复碰撞
var instance_id = node.get_instance_id()
if shooted_instances.has(instance_id):
return
print("[debug] first hit node", node.get_path())
shooted_instances[instance_id] = true
shoot_count += 1
hit_ball_touched.emit()
tween = create_tween()
tween.tween_property(self, "modulate:a", 0.0, 1.5)
tween.parallel().tween_property(node, "modulate:a", 0.0, 1.5)
tween.tween_callback(hit_ball_callback.emit)
tween.tween_callback(hit_ball_finished.emit)
tween.tween_callback(node.queue_free)
tween.tween_callback(queue_free)
print("[ball] shoot count: ", shoot_count)
if shoot_count >= 3:
#TODO 连续射中三个成就
pass
func _process(_delta: float) -> void:

View File

@ -128,8 +128,8 @@ func reload_hand_ball() -> void:
pivot.move_child(ball, 0)
ball.name = "Ball"
# ball.rand_id()
ball.hit_ball.connect(_on_hit_ball)
ball.hit_ball_callback.connect(_on_hit_ball_callback)
ball.hit_ball_touched.connect(_on_hit_ball)
ball.hit_ball_finished.connect(_on_hit_ball_finished)
ball.hit_boundary.connect(_on_hit_boundary)
@ -198,7 +198,7 @@ func _on_hit_ball():
sfx_shoot.stop()
func _on_hit_ball_callback():
func _on_hit_ball_finished():
reload_hand_ball()
hit_count += 1
if round_id == 0:

View File

@ -48,3 +48,6 @@ func tween_vignette(ratio := 0.5, duration := 0.3, color := Color.RED):
vignette_tween.parallel().tween_property(
vignette.material, "shader_parameter/vignette_rgb", color, duration
)