@code_tooltip_harvest = `harvest()`
Собирает объект-сущность под дроном.
Если собрать объект, не подлежащий сбору, он будет уничтожен.

Возвращает `True`, если объект удален, в противном случае — `False`.

Выполнение занимает `200` тиков, если объект удален, в противном случае — `1` тик.

Пример:
`harvest()`
@code_tooltip_can_harvest = `can_harvest()`
Используется, чтобы узнать, созрели ли растения.

Возвращает `True`, если под дроном есть объект-сущность, доступный для сбора, в противном случае — `False`.

Выполнение занимает `1` тик.

Пример:
`if can_harvest():
    harvest()`
@code_tooltip_range = `range(start = 0, end, step = 1)`
Создает последовательность чисел, которая начинается с `start` и заканчивается прямо перед `end` (т. е. `end` не включено), с шагом `step`.

Обрати внимание, что `start` по умолчанию равен `0`, и если задан только один аргумент, он будет присвоен `end`. Такая ситуация обычно невозможна.
В Python `range` — конструктор класса, допускающий такое необычное поведение.

Выполнение занимает `1` тик.

Пример:
`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)`
Сажает указанный объект-сущность `entity` под дроном, потратив ресурсы.
Не сработает, если не хватает ресурсов, не подходит тип земли или на этом месте уже что-то растет.

Возвращает `True` в случае успеха, в противном случае — `False`.

Выполнение занимает `200` тиков в случае успеха, в противном случае — `1` тик.

Пример:
`plant(Entities.Bush)`
@code_tooltip_move = `move(direction)`
Перемещает дрон на одну клетку в указанном направлении `direction`.
Если дрон вылетает за пределы фермы, то появляется с ее противоположной стороны.

`East `  =  вправо
`West `  =  влево
`North`  =  вверх
`South`  =  вниз

Возвращает `True`, если дрон переместился, в противном случае — `False`.

Выполнение занимает `200` тиков, если дрон переместился, в противном случае — `1` тик.

Пример:
`move(North)`
@code_tooltip_can_move = `can_move(direction)`
Проверяет, может ли дрон двигаться в указанном направлении `direction`.

Возвращает `True`, если дрон может двигаться, в противном случае — `False`.

Выполнение занимает `1` тик.

Пример:
`if can_move(North):
    move(North)`
@code_tooltip_swap = `swap(direction)`
Меняет местами объект-сущность под дроном с другим, находящимся рядом в указанном направлении `direction`.
Совместимо не со всеми объектами-сущностями.
Также действует, если один из объектов (или оба) — `None`.

Возвращает `True` в случае успеха, в противном случае — `False`.

Выполнение занимает `200` тиков в случае успеха, в противном случае — `1` тик.

Пример:
`swap(North)`
@code_tooltip_till = `till()`
Вскапывает землю под дроном, превращая ее в грядку `Grounds.Soil`. Если там уже грядка, она возвращается в состояние луга `Grounds.Grassland`.

Возвращает `None`.

Выполнение занимает `200` тиков.

Пример:
`till()`
@code_tooltip_get_pos_x = `get_pos_x()`
Получает текущую позицию дрона по оси X.
Значение позиции X начинается с `0` на западе и увеличивается в направлении востока.

Возвращает число, представляющее текущую координату X дрона.

Выполнение занимает `1` тик.

Пример:
`x, y = get_pos_x(), get_pos_y()`
@code_tooltip_get_pos_y = `get_pos_y()`
Получает текущую позицию дрона по оси Y.
Значение позиции Y начинается с `0` на юге и увеличивается в направлении севера.

Возвращает число, представляющее текущую координату Y дрона.

Выполнение занимает `1` тик.

Пример:
`x, y = get_pos_x(), get_pos_y()`
@code_tooltip_get_world_size = `get_world_size()`
Получает текущий размер фермы.

Возвращает длину стороны поля с севера на юг.

Выполнение занимает `1` тик.

Пример:
`for i in range(get_world_size()):
    move(North)`
@code_tooltip_get_entity_type = `get_entity_type()`
Узнает, какой тип объекта-сущности находится под дроном.

Возвращает `None`, если клетка пуста, в противном случае — тип объекта под дроном.

Выполнение занимает `1` тик.

Пример:
`if get_entity_type() == Entities.Grass:
    harvest()`
@code_tooltip_get_ground_type = `get_ground_type()`
Узнает, какой тип земли находится под дроном.

Возвращает тип земли под дроном.

Выполнение занимает `1` тик.

Пример:
`if get_ground_type() != Grounds.Soil:
    till()`
@code_tooltip_get_time = `get_time()`
Получает текущее время в игре.

Возвращает время в секундах с начала игры.

Выполнение занимает `1` тик.

Пример:
`start = get_time()

do_something()

time_passed = get_time() - start`
@code_tooltip_get_tick_count = `get_tick_count()`
Используется для измерения количества выполненных тиков.

Возвращает количество тиков, выполненных с начала запуска.

Выполнение занимает `0` тиков.

Пример:
`do_something()

print(get_tick_count())`
@code_tooltip_use_item = `use_item(item, n=1)`
Пытается использовать указанный предмет `item` `n` раз. Можно использовать только с некоторыми предметами, включая `Items.Water` и `Items.Fertilizer`.

Возвращает `True`, если предмет был использован, в противном случае — `False`.

Выполнение занимает `200` тиков в случае успеха, в противном случае — `1` тик.

Пример:
`use_item(Items.Fertilizer)`
@code_tooltip_get_water = `get_water()`
Получает текущий уровень воды под дроном.

Возвращает уровень воды под дроном в виде числа от `0` до `1`.

Выполнение занимает `1` тик.

Пример:
`if get_water() < 0.5:
    use_item(Items.Water)`
@code_tooltip_do_a_flip = `do_a_flip()`
Заставляет дрон сделать сальто! На это действие не влияет повышение скорости.

Возвращает `None`.

Выполнение занимает 1 секунду.

Пример:
`while True:
    do_a_flip()`
@code_tooltip_pet_the_piggy = `pet_the_piggy()`
Позволяет погладить поросенка! На это действие не влияет повышение скорости.

Возвращает `None`.

Выполнение занимает 1 секунду.

Пример:
`while True:
    pet_the_piggy()`
@code_tooltip_print = `print(*args)`
Выводит все аргументы `args` в воздухе над дроном с помощью дыма. На это действие не влияет повышение скорости.
Можно вывести несколько значений одновременно.

Возвращает `None`.

Выполнение занимает 1 секунду.

Пример:
`print("Земля:", get_ground_type())`
@code_tooltip_len = `len(collection)`
Получает количество элементов в списке, множестве, словаре или кортеже.

Возвращает длину коллекции `collection`.

Выполнение занимает `1` тик.

Пример:
`for i in range(len(list)):
    list[i] += 1`
@code_tooltip_list = `list(collection = None)`
Создает новый список.
Если `collection` равно `None`, создается пустой список.
Если `collection` — какая-либо последовательность, создается новый список с элементами этой последовательности.

Возвращает список.

Выполнение занимает `1 + len(collection)` тиков.

Пример:
`new_list = list((1,2,3))`
@code_tooltip_dict = `dict(dictionary = None)`
Создает новый словарь (dictionary).
Если значение `dictionary` — `None`, создается пустой словарь.
Если `dictionary` содержит значения, создается его копия.

Возвращает словарь.

Выполнение занимает `1 + len(dictionary)` тиков.

Пример:
`new_dict = dict()`
@code_tooltip_set = `set(collection = None)`
Создает новое множество (set).
Если значение `collection` — `None`, создается пустое множество.
Если `collection` содержит значения, создается новое множество с ними.

Возвращает множество.

Выполнение занимает `1 + len(collection)` тиков.

Пример:
`new_set = set((1,2,3))`
@code_tooltip_str = `str(object)`

Представляет объект `object` в виде строки.

Выполнение занимает `1` тик.

Пример:
`string = str(1000)`
@code_tooltip_set_execution_speed = `set_execution_speed(speed)`
Ограничивает скорость выполнения программы, чтобы тебе легче было следить за происходящим.

`speed` со значением `1` — это скорость дрона без повышения.
При `speed` со значением `8` код выполняется в `8` раз быстрее, что соответствует скорости дрона после `3` повышений.
При `speed` со значением `0.5` код выполняется в два раза медленнее по сравнению со скоростью без повышения. Так проще увидеть, что именно происходит во время выполнения кода.

Если значение `speed` выше текущей максимальной скорости выполнения, код выполняется на максимальной скорости.

Если значение `speed` равно `0` или отрицательно, скорость возвращается к максимальному значению.
Эффект также прекращается, когда останавливается выполнение кода.

Возвращает `None`.

Выполнение занимает `200` тиков.

Пример:
`set_execution_speed(1)`
@code_tooltip_set_world_size = `set_world_size(size)`
Ограничивает размер фермы, чтобы тебе легче было следить за происходящим.
При этом очищает ферму и сбрасывает позицию дрона.
Задает площадь фермы в виде поля `size` х `size`.
Минимальное значение `size` — `3`.
Если `size` меньше `3`, возвращает поле к полному размеру.
Эффект также прекращается, когда останавливается выполнение.

Возвращает `None`.

Выполнение занимает `200` тиков.

Пример:
`set_world_size(5)`
@code_tooltip_num_items = `num_items(item)`
Узнает запас предметов `item`.

Возвращает количество `item` в инвентаре.

Выполнение занимает `1` тик.

Пример:
`if num_items(Items.Fertilizer) > 0:
    use_item(Items.Fertilizer)`
@code_tooltip_get_cost = `get_cost(thing)`
Получает стоимость вещи `thing`.

Если `thing` — это объект-сущность, получает стоимость его посадки.
Если `thing` — это технология, получает стоимость ее разблокировки.

Возвращает словарь с предметами в качестве ключей и числами в качестве значений. Каждый предмет сопоставлен с необходимым его количеством.
Возвращает `{}`, если применяется к улучшаемой технологии, достигшей максимального уровня.

Выполнение занимает `1` тик.

Пример:
`cost = get_cost(Unlocks.Carrots)
for item in cost:
    if num_items(item) < cost[item]:
        print("Недостаточно предметов для разблокировки моркови")`
@code_tooltip_clear = `clear()`
Удаляет все с фермы, возвращает дрон на позицию `(0,0)` и меняет шляпу на соломенную.

Возвращает `None`.

Выполнение занимает `200` тиков.

Пример:
`clear()`
@code_tooltip_get_companion = `get_companion()`
Получает предпочтительного компаньона для растения под дроном.

Возвращает кортеж вида `(companion_type, (companion_x_position, companion_y_position))`

Выполнение занимает `1` тик.

Пример:
`companion = get_companion()
if companion != None:
	print(companion)`
@code_tooltip_unlock = `unlock(unlock)`
Имеет тот же эффект, что и нажатие кнопки, соответствующей `unlock` («Разблокировать») в дереве технологий.

Возвращает `True` в случае успешной разблокировки, в противном случае — `False`.

Выполнение занимает `200` тиков в случае успеха, в противном случае — `1` тик.

Пример:
`unlock(Unlocks.Carrots)`
@code_tooltip_num_unlocked = `num_unlocked(thing)`
Используется для проверки, разблокированы ли технология, объект-сущность, земля, предмет или шляпа.

Возвращает `1` плюс количество выполненных улучшений вещи `thing`, если ее можно улучшать. В противном случае возвращает `1`, если `thing` разблокирована, `0` — если нет.

Выполнение занимает `1` тик.

Пример:
`plant(Entities.Bush)
n_substance = get_world_size() * num_unlocked(Unlocks.Mazes)
use_item(Items.Weird_Substance, n_substance)`
@code_tooltip_reset = `reset()`
Сбрасывает ферму до площади 1x1, удаляет все ресурсы и блокирует большинство технологий.
Не удаляет твой код.

Возвращает `None`.

Выполнение занимает `200` тиков.

Пример:
`reset()`
@code_tooltip_measure = `measure(direction = None)`
Может измерять определенные значения некоторых объектов-сущностей. Результат зависит от объекта.

Если значение `direction` не `None`, измеряет соседний объект в указанном направлении.

Возвращает количество лепестков у подсолнуха.
Возвращает следующую позицию для клада или яблока.
Возвращает размер кактуса.
Возвращает загадочное число для тыквы.
Возвращает `None` для всех остальных объектов.

Выполнение занимает `1` тик.

Пример:
`num_petals = measure()`
@code_tooltip_leaderboard_run = `leaderboard_run(leaderboard, file_name, speedup)`
Запускает симуляцию с заданным временем для рейтинга `leaderboard`, используя указанный файл `file_name` в качестве отправной точки.
Параметр `speedup` устанавливает начальное ускорение.

Возвращает `None`

Выполнение занимает `200` тиков.

Пример:
`leaderboard_run(Leaderboards.Fastest_Reset, "full_run", 256)`
@code_tooltip_simulate = `simulate(filename, sim_unlocks, sim_items, sim_globals, seed, speedup)`
Запускает симуляцию для рейтинга, используя указанный файл `filename` в качестве отправной точки.

Параметр `sim_unlocks` — последовательность, содержащая начальные технологии.
Параметр `sim_items` — словарь, сопоставляющий предметы с их количеством. Симуляция начинается с этими предметами.
Параметр `sim_globals` — словарь, сопоставляющий имена переменных со значениями. Симуляция начинается с этими переменными в глобальной области видимости.
Параметр `seed` — начальное значение для генерации случайных чисел в симуляции. Должно быть положительным целым числом.
Параметр `speedup` — начальное ускорение.

Возвращает время, затраченное на запуск симуляции.

Выполнение занимает `200` тиков.

Пример:
`filename = "f1"
sim_unlocks = Unlocks
sim_items = {Items.Carrot : 10000, Items.Hay : 50}
sim_globals = {"a" : 13}
seed = 0
speedup = 64

run_time = simulate(filename, sim_unlocks, sim_items, sim_globals, seed, speedup)`
@code_tooltip_spawn_drone = `spawn_drone(filename)`
На той же позиции, где дрон выполнил команду `spawn_drone(function)`, создает новый дрон. Он начинает выполнять указанную функцию и по завершении автоматически пропадает.

Возвращает идентификатор нового дрона или `None`, если все дроны уже созданы.

Выполнение занимает `200` тиков, если дрон был создан, в противном случае — `1`.

Пример:
`def harvest_column():
    for _ in range(get_world_size()):
        harvest()
        move(North)

while True:
    if spawn_drone(harvest_column):
        move(East)`

@code_tooltip_wait_for = `wait_for(drone)`
Ожидает завершения работы указанного дрона `drone`.

Возвращает значение, которое вернула бы функция, выполнявшаяся `drone`.

Выполнение занимает `1` тик, если ожидаемый `drone` уже завершил работу.

Пример:
`def get_entity_type_in_direction(dir):
    move(dir)
    return get_entity_type()

def zero_arg_wrapper():
    return get_entity_type_in_direction(North)
handle = spawn_drone(zero_arg_wrapper)
print(wait_for(handle))`

@code_tooltip_has_finished = `has_finished(drone)`
Проверяет, завершил ли работу указанный дрон `drone`.

Возвращает `True`, если дрон `drone` завершил работу, в противном случае — `False`.

Выполнение занимает `1` тик.

Пример:
`drone = spawn_drone(function)
while not has_finished(drone):
    do_something_else()
result = wait_for(drone)`

@code_tooltip_max_drones = `max_drones()`

Возвращает максимальное количество дронов, которое может быть на ферме.

Выполнение занимает `1` тик.

Пример:
`while num_drones() < max_drones():
    spawn_drone("название_файла")
    move(East)`

@code_tooltip_num_drones = `num_drones()`

Возвращает текущее количество дронов на ферме.

Выполнение занимает `1` тик.

Пример:
`while num_drones() < max_drones():
    spawn_drone("some_file_name")
    move(East)`

@code_tooltip_quick_print = `quick_print(*args)`
Выводит значение так же, как `print(*args)`, но не останавливается, чтобы написать его в воздухе. Значение можно увидеть только на странице вывода.

Возвращает `None`.

Выполнение занимает `0` тиков.

Пример:
`quick_print("привет, мам")`
@code_tooltip_change_hat = `change_hat(hat)`
Меняет шляпу дрона на `hat`.

Возвращает `None`.

Выполнение занимает `200` тиков.

Пример:
`change_hat(Hats.Dinosaur_Hat)`

@code_tooltip_max = `max(*args)`
Находит наибольшее значение в последовательности элементов или среди нескольких переданных аргументов.
Можно использовать с числами и строками.

`max(a,b,c)`: возвращает наибольшее значение из `a`, `b` и `c`.
`max(sequence)`: возвращает наибольшее из всех значений в последовательности.

Выполнение занимает число тиков, зависящее от числа операций сравнения.

Пример:
`max([3,6,34,16])`
@code_tooltip_min = `min(*args)`
Находит наименьшее значение в последовательности элементов или среди нескольких переданных аргументов.
Можно использовать с числами и строками.

`min(a,b,c)`: возвращает наименьшее значение из `a`, `b` и `c`.
`min(sequence)`: возвращает наименьшее из всех значений в последовательности.

Выполнение занимает число тиков, зависящее от числа операций сравнения.

Пример:
`min([3,6,34,16])`
@code_tooltip_abs = `abs(number)`
Получает абсолютное значение числа.

Возвращает `number`, если оно положительное, в противном случае — `-number`.

Выполнение занимает 1 тик.

Пример:
`abs(-69)`
@code_tooltip_random = `random()`
Выбирает случайное число от 0 (включительно) до 1 (не включено).

Возвращает случайное число.

Выполнение занимает `1` тик.

Пример:
`def random_elem(list):
	index = random() * len(list) // 1
	return list[index]`
@code_tooltip_append = `list.append(element)`
Добавляет элемент `element` в конец списка `list`.

Возвращает `None`.

Выполнение занимает `1` тик.

Пример:
`list = []
list.append(1)`
@code_tooltip_add = `set.add(element)`
Добавляет элемент `element` в множество `set`.

Возвращает `None`.

Выполнение занимает число тиков, зависящее от размера элемента.

Пример:
`set = {0}
set.add(1)`
@code_tooltip_remove = `collection.remove(element)`
Удаляет первое вхождение элемента `element` из коллекции `collection`.

Возвращает `None`.

Выполнение для множества занимает число тиков, зависящее от размера элемента, для списка — от числа операций сравнения и сдвига.

Пример:
`list = [True, False, None]
list.remove(False)`
@code_tooltip_pop = `collection.pop()`
Удаляет последний элемент из списка или указанный элемент из словаря.
Функция `list.pop(i)` удаляет элемент с индексом `i` из `list`.

Возвращает удаленный элемент.

Выполнение для словаря занимает число тиков в зависимости от `key size`, для списка — `len(list) - i + 1` тиков.

Пример:
`list = [True, False, None]
list.pop(0)`
@code_tooltip_insert = `list.insert(i, element)`
Вставляет элемент `element` в список `list` по индексу `i`.

Возвращает `None`.

Выполнение занимает `len(list) - i + 1` тиков.

Пример:
`list = [1,2]
list.insert(0, 0)`
@code_tooltip_Items = Содержит все предметы, которые могут быть в инвентаре. Можно перебирать в цикле `for`.
@code_tooltip_Entities = Содержит все типы растений. Можно перебирать в цикле `for`.
@code_tooltip_Grounds = Содержит все возможные типы земли. Можно перебирать в цикле `for`.
@code_tooltip_Unlocks = Содержит все технологии и улучшения из дерева технологий. Можно перебирать в цикле `for`.
@code_tooltip_Hats = Содержит все типы шляп. Можно перебирать в цикле `for`.
@code_tooltip_Leaderboards = Содержит все категории рейтинга. Можно перебирать в цикле `for`.
@code_tooltip_for = Цикл, перебирающий все элементы последовательности. В некоторых языках программирования он называется `foreach`.
@code_tooltip_while = Цикл выполняется, пока условие истинно.
@code_tooltip_def = Определяет функцию.
@code_tooltip_True = Логическое значение, которое всегда истинно.
@code_tooltip_False = Логическое значение, которое всегда ложно.
@code_tooltip_if = Код выполняется, если условие `True`.
@code_tooltip_else = Код выполняется, если предыдущее условие `if` было `False`.
@code_tooltip_elif = Действует так же, как и:
`else:
    if condition:`
@code_tooltip_None = Значение, представляющее отсутствие значения.
@code_tooltip_continue = Немедленный переход к следующей итерации цикла. Если есть вложенные циклы, всегда действует на самый внутренний цикл.
@code_tooltip_break = Выход из цикла и продолжение выполнения инструкций после цикла. Если есть вложенные циклы, всегда действует на самый внутренний цикл.
@code_tooltip_North = Направление вверх на экране. Если экран не перевернут.
@code_tooltip_East = Направление вправо на экране. Если экран не перевернут.
@code_tooltip_South = Направление вниз на экране. Если экран не перевернут.
@code_tooltip_West = Направление влево на экране. Если экран не перевернут.
@code_tooltip_not = `not True` — это `False`, а `not False` — это `True`.
@code_tooltip_and = Вычисляет первый операнд. Если он ложный (`False`, `0` и пустые коллекции), немедленно возвращает это значение (сокращенное вычисление), в противном случае — вычисляет и возвращает второй операнд.
@code_tooltip_or = Вычисляет первый операнд. Если он истинный (все, кроме `False`, `0` и пустых коллекций), немедленно возвращает это значение (сокращенное вычисление), в противном случае — вычисляет и возвращает второй операнд.
@code_tooltip_return = Используется для возврата значения из функции.
@code_tooltip_pass = Ничего не делает. Может пригодиться, так как пустые блоки кода не допускаются.