class_name GrabCondition extends ConditionLeaf func tick(actor: Node, blackboard: Blackboard) -> int: if actor.action_points < 1 or actor.playerboard_is_full(): return FAILURE # Check current position first var current_cell = Vector3i(actor.current_position.x, 1, actor.current_position.y) if actor.enhanced_gridmap.get_cell_item(current_cell) in actor.goals: blackboard.set_value("grab_position", actor.current_position) return SUCCESS # Check adjacent cells var neighbors = actor.enhanced_gridmap.get_neighbors(actor.current_position, 1) for neighbor in neighbors: var cell = Vector3i(neighbor.position.x, 1, neighbor.position.y) if actor.enhanced_gridmap.get_cell_item(cell) in actor.goals: blackboard.set_value("grab_position", neighbor.position) return SUCCESS return FAILURE