2025-07-23 09:07:20 +00:00
|
|
|
@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)
|
|
|
|
|
|
|
|
|
2025-07-23 13:48:47 +00:00
|
|
|
@onready var boss_sprite = $"药车_老板/药铺老板" as AnimatedSprite2D
|
|
|
|
@onready var interactable = $"药车_老板/Interactable抓药道具" as Interactable2D
|
|
|
|
@onready var closeup = $"药车_老板/Closeup抓药游戏"
|
|
|
|
|
2025-07-23 09:07:20 +00:00
|
|
|
func _on_ground_ready(_ground: Ground2D):
|
2025-07-23 13:48:47 +00:00
|
|
|
interactable.interacted.connect(_boss_interacted)
|
|
|
|
interactable.interact_mismatch_failed.connect(_boss_interacted.bind(false))
|
2025-08-13 17:15:39 +00:00
|
|
|
if interactable.interacted_times >= 4:
|
2025-07-23 13:48:47 +00:00
|
|
|
closeup.enabled = true
|
|
|
|
boss_sprite.hide()
|
|
|
|
|
|
|
|
|
|
|
|
func _boss_interacted(valid := true) -> void:
|
|
|
|
if valid:
|
2025-08-13 17:15:39 +00:00
|
|
|
if interactable.interacted_times >= 4:
|
2025-07-23 13:48:47 +00:00
|
|
|
SceneManager.lock_player()
|
|
|
|
boss_sprite.play("抓药游戏_老板做药")
|
|
|
|
var camera = SceneManager.get_camera_marker()
|
|
|
|
# TODO 惊悚的音效
|
|
|
|
SceneManager.pop_debug_dialog_info("音效", "老板开始制药,稍后魂被吸走")
|
2025-08-08 07:46:07 +00:00
|
|
|
$"Sfx2D药车铃铛声_左".play()
|
2025-07-23 13:48:47 +00:00
|
|
|
var tween = create_tween()
|
|
|
|
tween.tween_interval(1.0)
|
2025-08-08 07:46:07 +00:00
|
|
|
tween.tween_property(camera, "force_offset:x", -400.0, 3.0)
|
|
|
|
tween.tween_interval(5.0)
|
|
|
|
await tween.finished
|
|
|
|
# 运镜过去后,开始播放老板红光
|
|
|
|
var amb_light = $"老板红光" as PointLight2D
|
|
|
|
$"Sfx2D药车铃铛声_右".play()
|
|
|
|
tween = create_tween()
|
|
|
|
tween.tween_property(amb_light, "energy" , 1.5, 3.0)
|
|
|
|
tween.tween_callback($"Sfx药车鬼影擦肩".play)
|
|
|
|
tween.tween_property(amb_light, "energy" , 0.8, 0.5)
|
|
|
|
tween.tween_property(amb_light, "energy" , 1.5, 1.5)
|
|
|
|
tween.tween_interval(2.0)
|
|
|
|
tween.tween_property(amb_light, "energy" , 0.0, 2.0)
|
|
|
|
tween.parallel().tween_property(boss_sprite, "modulate:a" , 0.0, 2.0)
|
2025-07-23 13:48:47 +00:00
|
|
|
tween.tween_interval(2.0)
|
2025-08-08 07:46:07 +00:00
|
|
|
tween.tween_callback(func():
|
|
|
|
SceneManager.unlock_player()
|
|
|
|
SceneManager.pop_os_with_str("c03_老板被吸走")
|
|
|
|
)
|
|
|
|
# 运镜回来
|
|
|
|
tween = create_tween()
|
|
|
|
tween.tween_interval(1.0)
|
|
|
|
tween.tween_property(camera, "force_offset:x", 0.0, 3.0)
|
2025-07-23 13:48:47 +00:00
|
|
|
await tween.finished
|
2025-08-08 07:46:07 +00:00
|
|
|
# 不使用被吸入,而是使用红色光效
|
|
|
|
# boss_sprite.play("抓药游戏_老板魂魄吸入")
|
|
|
|
# await boss_sprite.animation_finished
|
2025-07-23 13:48:47 +00:00
|
|
|
closeup.enabled = true
|
|
|
|
else:
|
|
|
|
var current_prop = SceneManager.get_current_prop()
|
|
|
|
if current_prop == "prop_纸铜钱1" or current_prop == "prop_2个纸铜钱":
|
|
|
|
SceneManager.pop_os_with_str("c03_抓药铜钱不足")
|
2025-07-23 09:07:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
func _on_pre_stage_updated():
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
func _on_stage_updated():
|
|
|
|
pass
|