@code_tooltip_harvest = `harvest()`
Harvests the entity under the drone. 
If you harvest an entity that can't be harvested, it will be destroyed.

returns `True` if an entity was removed, `False` otherwise.

takes the time of `200` operations to execute if an entity was removed, `1` operation otherwise.

example usage:
`harvest()`
@code_tooltip_can_harvest = `can_harvest()`
Used to find out if plants are fully grown.

returns `True` if there is an entity under the drone that is ready to be harvested, `False` otherwise.

takes the time of `1` operation to execute.

example usage:
`if can_harvest():
    harvest()`
@code_tooltip_range = `range()`
Generates a sequence of numbers.

overloads:
`range(end)` returns a sequence of numbers from `0`(inclusive) to `end`(exclusive).
`range(start,end)` returns a sequence of numbers from `start`(inclusive) to `end`(exclusive).
`range(start,end,step)` returns a sequence of numbers from `start`(inclusive) to `end`(exclusive) in steps of size `step`

takes the time of `1` operation to execute.

example usage:
`for i in range(10):
    print(i)

for i in range(2,6):
    print(i)

for i in range(10, 0, -1):
    print(i)`
@code_tooltip_plant = `plant(entity)` 
Plants the specified `entity` under the drone if it can be planted.
Otherwise it just does nothing.

returns `True` if it succeeded, `False` otherwise.

takes the time of `200` operations to execute if it succeeded, `1` operation otherwise.

example usage:
`plant(Entities.Bush)`
@code_tooltip_move = `move(direction)`
Moves the drone into the specified `direction` by one tile.
If the drone moves over the edge of the farm it wraps back to the other side of the farm.

`East `  =  right
`West `  =  left
`North`  =  up
`South`  =  down

returns `True` if the drone has moved, `False` otherwise.

takes the time of `200` operations to execute if the drone has moved, `1` operation otherwise.

example usage:
`move(North)`
@code_tooltip_swap = `swap(direction)`
Swaps the entity under the drone with the entity next to the drone in the specified `direction`.
Doesn't work on all entities.
Also works if one (or both) of the entities are `None`.

returns `True` if it succeeded, `False` otherwise.

takes the time of `200` operations to execute on success, `1` operation otherwise.

example usage:
`swap(North)`
@code_tooltip_till = `till()` 
Tills the ground under the drone into `Grounds.Soil`. If it's already soil it will change the ground back to `Grounds.Turf`.

returns `None`

takes the time of `200` operations to execute.

example usage:
`till()`
@code_tooltip_get_pos_x = `get_pos_x()` 
Gets the current x position of the drone.
The x position starts at `0` in the `West` and increases in the `East` direction.

returns a number representing the current x coordinate of the drone.

takes the time of `1` operation to execute.

example usage:
`x, y = get_pos_x(), get_pos_y()`
@code_tooltip_get_pos_y = `get_pos_y()` 
Gets the current y position of the drone.
The y position starts at `0` in the `South` and increases in the `North` direction.

returns a number representing the current y coordinate of the drone.

takes the time of `1` operation to execute.

example usage:
`x, y = get_pos_x(), get_pos_y()`
@code_tooltip_get_world_size = `get_world_size()` 
Get the current size of the farm.

returns the side length of the grid in the north to south direction.

takes the time of `1` operation to execute.

example usage:
`for i in range(get_world_size()):
    move(North)`
@code_tooltip_get_entity_type = `get_entity_type()` 
Find out what kind of entity is under the drone.

returns `None` if the tile is empty, otherwise returns the type of the entity under the drone.

takes the time of `1` operation to execute.

example usage:
`if get_entity_type() == Entities.Grass:
    harvest()`
@code_tooltip_get_ground_type = `get_ground_type()` 
Find out what kind of ground is under the drone.

returns the type of the ground under the drone.

takes the time of `1` operation to execute.

example usage:
`if get_ground_type() != Grounds.Soil:
    till()`
@code_tooltip_get_time = `get_time()` 
Get the current game time.

returns the time in seconds since the start of the game.

takes the time of `1` operation to execute.

example usage:
`start = get_time()

do_something()

time_passed = get_time() - start`
@code_tooltip_get_op_count = `get_op_count()`
Used to measure the number of operations performed.

returns the number of operations performed since the start of execution.

takes the time of `1` operation to execute.

example usage:
`do_something()

print(get_op_count())`
@code_tooltip_trade = `trade(item)` 
Tries to buy the specified `item`.
If the `item` cannot be bought or you don't have the required resources it simply does nothing.

overloads:
`trade(item)`: Buy the `item` once.
`trade(item, n)`: If `Unlocks.Multi_Trade` is unlocked, this will buy the `item` `n` times immediately. If you can't afford all `n` items, it won't buy any at all. If `Unlocks.Multi_Trade` is not unlocked, it throws an error.

returns `True` if it was able to buy the items, `False` otherwise.

takes the time of `200` operations to execute if it succeeded, `1` operation otherwise.

example usage:
`if num_unlocked(Unlocks.Multi_Trade) > 0:
    trade(Items.Carrot_Seed, 10)
else:
    for i in range(10):
        trade(Items.Carrot_Seed)`
@code_tooltip_use_item = `use_item(item)` 
Attempts to use the specified `item`. Can only be used with some items including `Items.Water_Tank`, `Items.Fertilizer` and `Items.Egg`.

returns `True` if an item was used, `False` otherwise.

takes the time of `200` operations to execute if it succeeded, `1` operation otherwise.

example usage:
`use_item(Items.Fertilizer)`
@code_tooltip_get_water = `get_water()` 
Get the current water level under the drone.

returns the water level under the drone as a number between `0` and `1`.

takes the time of `1` operation to execute.

example usage:
`if get_water() < 0.5:
    use_item(Items.Water_Tank)`
@code_tooltip_do_a_flip = `do_a_flip()` 
Makes the drone do a flip! This action is not affected by speed upgrades.

returns `None`

takes 1s to execute.

example usage:
`while True:
    do_a_flip()`
@code_tooltip_print = `print(something)` 
Prints `something` into the air above the drone using smoke. This action is not affected by speed upgrades.
Multiple values can be printed at once.

returns `None`

takes 1s to execute.

example usage:
`print("ground:", get_ground_type())`
@code_tooltip_len = `len(collection)` 
Get the number of elements in a list, set, dict or tuple.

returns the length of the `collection`.

takes the time of `1` operation to execute.

example usage:
`for i in range(len(list)):
    list[i] += 1`
@code_tooltip_list = `list()`
Creates a new list.

overloads:
`list(collection)`: Creates a list with the elements of an existing list, set, dict or tuple.

returns a list.

takes the time of `1 + len(collection)` operations to execute.

example usage:
`new_list = list((1,2,3))`
@code_tooltip_dict = `dict()`
Creates a new dictionary.

overloads:
`dict(dictionary)`: Creates a copy of `dictionary`.

returns a dictionary.

takes the time of `1 + len(dictionary)` operations to execute.

example usage:
`new_dict = dict()`
@code_tooltip_set = `set()`
Creates a new set.

overloads:
`set(collection)`: Creates a set with the elements of an existing list, set, dict or tuple.

returns a set.

takes the time of `1 + len(collection)` operations to execute.

example usage:
`new_set = set((1,2,3))`
@code_tooltip_set_execution_speed = `set_execution_speed(speed)`
Limits the speed at which the program is executed to better see what's happening.

A `speed` of `1` is the speed the drone has without any speed upgrades.
A `speed` of `10` makes the code execute `10` times faster and corresponds to the speed of the drone after `9` speed upgrades.
A `speed` of `0.5` makes the code execute at half of the speed without speed upgrades. This can be useful to see what the code is doing.

If `speed` is faster than the execution can currently go it will just go at max speed.

If `speed` is `0` or negative, the speed is changed back to max speed.
The effect will also stop when the execution stops.

returns `None`

takes the time of `200` operations to execute.

example usage:
`set_execution_speed(1)`
@code_tooltip_set_farm_size = `set_farm_size(size)`
Limits the size of the farm to better see what's happening.
Also clears the farm and resets the drone position.
Sets the farm to a `size` x `size` grid.
The smallest `size` possible is `3`.
A `size` smaller than `3` will change the grid back to its full size.
The effect will also stop when the execution stops.

returns `None`

takes the time of `200` operations to execute.

example usage:
`set_farm_size(5)`
@code_tooltip_num_items = `num_items(item)` 
Find out how much of `item` you currently have.

returns the number of `item` currently in your inventory.

takes the time of `1` operation to execute.

example usage:
`if num_items(Items.Fertilizer) == 0:
    trade(Items.Fertilizer)`
@code_tooltip_get_cost = `get_cost(thing)` 
Gets the cost of a `thing`

If `thing` is an item get the cost of buying it when using `trade(item)`.
If `thing` is an entity get the seed needed to plant it.
If `thing` is an unlock get the cost of unlocking it.

returns a dictionary with items as keys and numbers as values. Each item is mapped to how much of it is needed.
returns `None` when used on an upgradeable unlock that is already at the max level.

takes the time of `1` operation to execute.

example usage:
`cost = get_cost(Unlocks.Carrots)
for item in cost:
    if num_items(item) < cost[item]:
        print("not enough items to unlock carrots")`
@code_tooltip_clear = `clear()` 
Removes everything from the farm, and moves the drone back to position `(0,0)`.

returns `None`

takes the time of `200` operations to execute.

example usage:
`clear()`
@code_tooltip_get_companion = `get_companion()` 
Get the companion preference of the plant under the drone.

returns a list of the form `[companion_type, companion_x_position, companion_y_position]`

takes the time of `1` operation to execute.

example usage:
`companion = get_companion()
if companion != None:
	print(companion)`
@code_tooltip_unlock = `unlock(unlock)` 
Has exactly the same effect as clicking the button corresponding to `unlock` in the research tree.

returns `True` if the unlock was successful, `False` otherwise.

takes the time of `200` operations to execute if it succeeded, `1` operation otherwise.

example usage:
`unlock(Unlocks.Carrots)`
@code_tooltip_num_unlocked = `num_unlocked(thing)`
Used to check if an unlock, entity, ground or item is already unlocked.

returns `1` plus the number of times `thing` has been upgraded if `thing` is upgradable. Otherwise returns `1` if `thing` is unlocked, `0` otherwise.

takes the time of `1` operation to execute.

example usage:
`if num_unlocked(Unlocks.Multi_Trade) > 0:
    trade(Items.Carrot_Seed, 10)
else:
    for i in range(10):
        trade(Items.Carrot_Seed)`
@code_tooltip_reset = `reset()` 
Resets the farm back to a 1x1 square, removes all resources and locks most unlocks.
It doesn't remove any of your code.

returns `None`

takes the time of `200` operations to execute.

example usage:
`reset()`
@code_tooltip_measure = `measure()` 
Can measure some values on some entities. The effect of this depends on the entity.

overloads:
`measure()` measures the entity under the drone.
`measure(direction)` measures the neighboring entity in the `direction` of the drone.

returns the number of petals of a sunflower.
returns the next position for a treasure.
returns the size of a cactus.
returns the number corresponding to the type of a dinosaur.
returns `None` for all other entities.

takes the time of `1` operation to execute.

example usage:
`num_petals = measure()`
@code_tooltip_timed_reset = `timed_reset()`
Starts a timed run for the leaderboard. Saves the game before the run and then loads that save afterwards so you can't gain any items during the run.

returns `None`

takes the time of `200` operations to execute.

example usage:
`timed_reset()`
@code_tooltip_quick_print = `quick_print()`
Prints a value just like `print()` but it doesn't stop to write it into the air so it can only be found on the output page.

returns `None`

takes the time of `1` operations to execute.

example usage:
`quick_print("hi mom")`
@code_tooltip_max = `max(a,b)`
Gets the maximum of a sequence of elements or several passed arguments.
Can be used on numbers and strings.

overloads:
`max(a,b,c)`: Returns the maximum of the passed arguments.
`max(sequence)`: Returns the maximum of all values in a sequence.

takes the time of #comparisons operations to execute.

example usage:
`max([3,6,34,16])`
@code_tooltip_min = `min(a,b)`
Gets the minimum of a sequence of elements or several passed arguments.
Can be used on numbers and strings.

overloads:
`min(a,b,c)`: Returns the minimum of the passed arguments.
`min(sequence)`: Returns the minimum of all values in a sequence.

execution time depends on the input.

example usage:
`min([3,6,34,16])`
@code_tooltip_abs = `abs(number)`
Computes the absolute value of a `number`.

returns `number` if `number` is positive, `-number` otherwise.

takes the time of #comparisons operations to execute.

example usage:
`abs(-69)`
@code_tooltip_random = `random()`
Samples a random number between 0 (inclusive) and 1 (exclusive).

returns the random number.

takes the time of `1` operations to execute.

example usage:
`def random_elem(list):
	index = random() * len(list) // 1
	return list[index]`
@code_tooltip_append = `list.append(element)` 
Adds `element` to the end of the `list`.

returns `None`

takes the time of `1` operations to execute.

example usage:
`list = []
list.append(1)`
@code_tooltip_add = `set.add(element)` 
Adds `element` to the `set`.

returns `None`

takes the time of `1` operations to execute.

example usage:
`set = {0}
set.add(1)`
@code_tooltip_remove = `collection.remove(element)` 
Removes the first occurrence of `element` from the `collection`.

returns `None`

takes the time of `1` operation to execute on a set, #comparisions operations on a list.

example usage:
`list = [True, False, None]
list.remove(False)`
@code_tooltip_pop = `collection.pop()` 
Removes the last element from a list or the specified element from a dictionary.
`list.pop(i)` removes the element at the index `i` from the `list`.

returns the removed element

takes the time of `1` operation to execute on a dictionary, `len(list) - i + 1` operations on a list.

example usage:
`list = [True, False, None]
list.pop(0)`
@code_tooltip_insert = `list.insert(i, element)` 
Inserts `element` into the `list` at index `i`.

returns `None`

takes the time of `len(list) - i + 1` operations.

example usage:
`list = [1,2]
list.insert(0, 0)`
@code_tooltip_Items = Contains all items that can be in the inventory. Can be iterated with a `for` loop.
@code_tooltip_Entities = Contains all plants and other entities that can be on a ground tile of the farm. Can be iterated with a `for` loop.
@code_tooltip_Grounds = Contains all possible ground tiles. Can be iterated with a `for` loop.
@code_tooltip_Unlocks = Contains all the unlocks and upgrades in the research menu. Can be iterated with a `for` loop.
@code_tooltip_for = A loop that iterates over all elements of a sequence. Some languages call this a "foreach" loop.
@code_tooltip_while = Loops until the condition is false.
@code_tooltip_def = Defines a function.
@code_tooltip_True = A boolean value that is always true.
@code_tooltip_False = A boolean value that is always false.
@code_tooltip_if = Executes code if the condition is `True`.
@code_tooltip_None = A value representing that there is no value.
@code_tooltip_continue = Immediately continue with the next loop iteration. If there are nested loops, this will always affect the innermost loop.
@code_tooltip_break = Break out of a loop and continue executing the statements after the loop. If there are nested loops, this will always affect the innermost loop.