class_name Bud extends GridNode signal opened var img_path @export var vine : Vine # Triggers when a bud is hit. Spreads the vine, then removes the bud func _on_opened(): $EnemyHurtbox.monitorable = false $EnemyHurtbox.monitoring = false $AnimatedSprite2D.play("open") opened.emit() spread() await $AnimatedSprite2D.animation_finished for child in get_children(): queue_free() # Spread in all directions where the given vine is not yet present func spread(): for dir in [Vector2.UP, Vector2.DOWN, Vector2.RIGHT, Vector2.LEFT]: if not vine.vine_locations.has(Global.vec_mod(location + dir, Grid.num_collumns, true)): grow_to_next_bud(dir) # Grow a vine func grow_to_next_bud(dir): var target_location = Global.vec_mod(location + dir, Grid.num_collumns, true) var target = GridNode.random_at(target_location) await vine.grow_vine_sequence(self, target, true, false)