extends MovementBehaviour class_name MovementBehaviourSpider @export var max_movement_reach: int = 3 func simulate_move_recursive(start: Vector4i, max_num: int, exclude: Array[Vector4i], map: HexGrid, visited_cells: Array[Vector4i] = []) -> Array[Vector4i]: var visited = visited_cells.duplicate() var possible: Array[Vector4i] = [] #visited.append(start) if max_num < 1: return [start] for neighbour in map.get_empty_neighbours(start): if neighbour in visited: continue if not map.can_reach(start, neighbour, exclude): continue var same_neighbours = map.get_same_neighbours(start, neighbour) for e in exclude: same_neighbours.erase(e) if same_neighbours.size() > 0: visited.append(neighbour) #map.debug_label(neighbour,str(max_movement_reach - (max_num - 1))) possible.append_array(simulate_move_recursive(neighbour, max_num - 1, exclude, map, visited)) return possible func get_available_spaces(pos: Vector4i, map: HexGrid) -> Array[Vector4i]: #map.clear_debug_labels() var possible_places: Array[Vector4i] = [] possible_places = simulate_move_recursive(pos, max_movement_reach, [pos], map) return possible_places