@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) @onready var boss_sprite = $"药车_老板/药铺老板" as AnimatedSprite2D @onready var interactable = $"药车_老板/Interactable抓药道具" as Interactable2D @onready var closeup = $"药车_老板/Closeup抓药游戏" func _on_ground_ready(_ground: Ground2D): interactable.interacted.connect(_boss_interacted) interactable.interact_mismatch_failed.connect(_boss_interacted.bind(false)) if interactable.interacted_times >= 4: closeup.enabled = true boss_sprite.hide() func _boss_interacted(valid := true) -> void: if valid: if interactable.interacted_times >= 4: SceneManager.lock_player() boss_sprite.play("抓药游戏_老板做药") var camera = SceneManager.get_camera_marker() # TODO 惊悚的音效 SceneManager.pop_debug_dialog_info("音效", "老板开始制药,稍后魂被吸走") $"Sfx2D药车铃铛声_左".play() var tween = create_tween() tween.tween_interval(1.0) 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) tween.tween_interval(2.0) 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) await tween.finished # 不使用被吸入,而是使用红色光效 # boss_sprite.play("抓药游戏_老板魂魄吸入") # await boss_sprite.animation_finished 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_抓药铜钱不足") func _on_pre_stage_updated(): pass func _on_stage_updated(): pass