class_name GrabStep extends Node2D signal step_succeeded signal step_failed @export var is_skipped = false @export_node_path("BatExtractionBat") var grabbing_target_path: NodePath var feedback_canvas_modulate: FeedbackCanvasModulate var bat_dropoff: BatDropoff var patience_bar: ProgressBar var grabbing_target: BatExtractionBat var pliers: Pliers func _ready(): grabbing_target = get_node(grabbing_target_path) as BatExtractionBat pliers = get_tree().get_first_node_in_group("grabber") as Pliers bat_dropoff = get_tree().get_first_node_in_group("bat_dropoff") as BatDropoff feedback_canvas_modulate = get_tree().get_first_node_in_group("effects") as FeedbackCanvasModulate patience_bar = get_tree().get_first_node_in_group("patience_bar") as ProgressBar pliers.pliers_used.connect(_on_pliers_used) func _on_pliers_used(top_area: Area2D): if not grabbing_target.is_grabbed and top_area == grabbing_target.grab_area: _target_grabbed() elif grabbing_target.is_grabbed and top_area == bat_dropoff.dropoff_area: _target_dropped() else: _hurt() func _target_grabbed(): grabbing_target.grab_bat() func _target_dropped(): print("Test") grabbing_target.drop_bat() step_succeeded.emit() func _hurt(): feedback_canvas_modulate.show_hurt_feedback() patience_bar.value = clampi(patience_bar.value - 10, 0, 100)