from __builtins__ import * world_size = get_world_size() def move_to(x, y): while x > get_pos_x(): move(East) while x < get_pos_x(): move(West) while y > get_pos_y(): move(North) while y < get_pos_y(): move(South) # Plant a square of the given list of entities. # # If the water level is below waterBelow, # it will water the tile. If requireSoil is true, it will till the tile if it's not soil. # plantWith - list of entities to plant. The entities will alternate if repeated. # # Parameters: # width (int): The number of columns in the grid. # height (int): The number of rows in the grid. # plantWith (list): A list of entities to plant. # waterBelow (float): The water level below which the tile will be watered. # requireSoil (bool): If true, the tile will be tilled if it's not soil. # # Returns: # None # # Important: # plant_grid_returns_measurements uses identical logic but has added needed measurement calls. Any logic changes here # Any changes to this function should be reflected in plant_grid_returns_measurements as well. def plant_grid(width, height, plantWith, waterBelow, requireSoil): res = {} x = get_pos_x() y = get_pos_y() gridSize = get_world_size() if (x + width) > gridSize: width = gridSize - x if (y + height) > gridSize: height = gridSize - y tracker = 0 others = {East: West, West: East} sideDir = East # first pass over, checking if anything can be harvested. if so, harvest. # then check what type of ground is down, if it's not soil then till. # then if it's below 75% water and i have some water, give it some. # then plant a pumpkin. for row in range(height): for col in range(width): if can_harvest(): harvest() if requireSoil: if get_ground_type() != Grounds.Soil: till() while get_water() < waterBelow: if not use_item(Items.Water): break index = tracker % len(plantWith) tracker += 1 plant(plantWith[index]) # if it's not the last pass, then move if col < width - 1: move(sideDir) if row < height - 1: sideDir = others[sideDir] move(North) return res # Plant a square of the given list of entities. # # If the water level is below waterBelow, # it will water the tile. If requireSoil is true, it will till the tile if it's not soil. # plantWith - list of entities to plant. The entities will alternate if repeated. # # Parameters: # width (int): The number of columns in the grid. # height (int): The number of rows in the grid. # plantWith (list): A list of entities to plant. # waterBelow (float): The water level below which the tile will be watered. # requireSoil (bool): If true, the tile will be tilled if it's not soil. # # Returns: # None # # Important: # plant_grid uses identical logic but has added needed measurement calls. Any logic changes here # Any changes to this function should be reflected in plant_grid as well. def plant_grid_return_measurements(width, height, plantWith, waterBelow, requireSoil): res = {} x = get_pos_x() y = get_pos_y() gridSize = get_world_size() if (x + width) > gridSize: width = gridSize - x if (y + height) > gridSize: height = gridSize - y tracker = 0 others = {East:West, West:East} sideDir = East # first pass over, checking if anything can be harvested. if so, harvest. # then check what type of ground is down, if it's not soil then till. # then if it's below 75% water and i have some water, give it some. # then plant a pumpkin. for row in range(height): for col in range(width): if can_harvest(): harvest() if requireSoil: if get_ground_type() != Grounds.Soil: till() while get_water() < waterBelow: if not use_item(Items.Water): break index = tracker % len(plantWith) tracker += 1 plant(plantWith[index]) measurement = measure() if measurement not in res: res[measurement] = [] res[measurement].append((get_pos_x(), get_pos_y())) # if it's not the last pass, then move if col < width - 1: move(sideDir) if row < height - 1: sideDir = others[sideDir] move(North) return res