xiandie/scene/ground/script/c02/s03_event_2d抓药游戏.gd

71 lines
2.0 KiB
GDScript

@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 >= 3:
closeup.enabled = true
boss_sprite.hide()
elif interactable.interacted_times > 0:
boss_sprite.play("抓药游戏_老板出现")
closeup.exit.connect(_on_closeup_exit)
func _on_closeup_exit(win := false) -> void:
if win:
# 完成抓药游戏
EventManager.set_stage_if_greater("c03_drug_game", 2)
func _boss_interacted(valid := true) -> void:
if valid:
if interactable.interacted_times >= 3:
SceneManager.lock_player()
boss_sprite.play("抓药游戏_老板做药")
var camera = SceneManager.get_camera_marker()
# TODO 惊悚的音效
SceneManager.pop_debug_dialog_info("音效", "老板开始制药,稍后魂被吸走")
var tween = create_tween()
tween.tween_interval(1.0)
tween.tween_property(camera, "force_offset:x", -100.0, 1.5)
tween.tween_interval(2.0)
tween.tween_property(camera, "force_offset:x", 0.0, 1.5)
await tween.finished
boss_sprite.play("抓药游戏_老板魂魄吸入")
await boss_sprite.animation_finished
closeup.enabled = true
SceneManager.unlock_player()
elif interactable.interacted_times == 1:
boss_sprite.play("抓药游戏_老板出现")
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