Описание доработанной системы растений

© Тхэнн

14 января 2005 года

Почитав некоторое время тот текст, я посчитал его не подходящим в качестве документации. Там скорее «проект к реализации», написанный КАПом, и по которому я делал поддержку растений. И решил написать с нуля.

Данная система очень гибка. Ей можно описать всё, от одиночного кактуса в горшке, до грядки или лесной земли, на которой бы росли деревья. Вся группа функций «растение» состоит из трех частей — само растение, шаблон, и семя.

Начну с шаблона, это две функции:
«растение_шаблон» — просто флаг, указывающий, что данный объект является шаблоном для плодов или чего подобного.
«растение_время» — время в часах, сколько должен расти объект, описываемый данным шаблоном. После завершения шаблона, он не появится в руках или на полу, а сразу добавится в список шаблонов.

Пример:
название = ягода смородины,ягоды смородины,ягоде смородины,ягоду смородины,ягодой смородины,ягоде смородины
род = женский
описание = Ягода черной смородины.
вес = 0.004
объем = 0.001
материал = черная смородина (food/berry/currant_black)
растение_шаблон = да
растение_время = 1440

Семя - это объект, который можно посадить. Описывается тремя функциями:
«растение_семя» — список шаблонов того, что может вырасти из этого «семени». при посадке выбирается одно случайное значение из списка.
«растение_семя_число» и «растение_семя_шанс» — сколько штук может вырасти из одного данного семени, и шанс прорастания каждого из них (от 0 до 1).

Пример (шаблон, который можно посадить, чтоб вырос сам шаблон, хитрая штука):
название = клубень картофеля,клубня картофеля,клубню картофеля,клубень картофеля,клубнем картофеля,клубне картофеля
род = мужской
описание = Клубень картофеля.
вес = 0.05
объем = 0.02
материал = картофель (food/vegetable/potatoes)
растение_шаблон = да
растение_время = 1920
растение_семя = клубень картофеля
растение_семя_шанс = 0.6
растение_семя_число = 5

И наконец самое главное... Само растение. :) Самая сложная, пожалуй, на данный момент, группа функций, сложнее намного, чем дверь. Но далеко не все функции нужно заполнять вручную.

«растение» — просто флаг, что данный объект нужно обработать как растение.
«растение_место» - два варианта значения, "растение" или "место", в зависимости от которого совершенно по разному воспринимаются все следующие функции.

В случае «растение»:
Сам по себе данный объект является растением, и ничего на нем не растет. Единственный смысл, это что он требует воды и может засохнуть, если не поливать. Простейший тамагочи, :))) Требует (но не обязательно) следующие функции:
«растение_вода_минимум» — сколько литров воды нужно растению на год (0 - воды не требует).
«растение_вода_максимум» — сколько максимум можно налить воды.
«растение_смерть» — при каком уровне воды растение погибает (обычно минусовое значение).

В случае «место»:
Данный объект является местом, где растут другие объекты.
«растение_список» — список шаблонов того, что может здесь расти.
«растение_цель» — где будут появляться выросшие объекты (сумма флагов). При указании нескольких вариантов, будет выбран случайный.(1 - В локации; 2 - ЗАКОПАН В локации; 4 - НА предмете (поверхность); 8 - В предмете (контейнер); 16 - ПОД предметом (подповерхность); 32 - В(НА, ПОД) каким-либо другим объектом;
«растение_цель_объект» — ссылка на другой объект, если в пред.функции есть флаг 32.
«растение_опадение» — шанс (от 0 до 1) в час, что уже выросшие объекты опадут.
«растение_вместимость» — максимальное число объектов в месте-цели.
«растение_размер» — максимальное число одновременно растущих объектов.
«растение_плоды» и «растение_массив» — массивы того что растет, вручную трогать не рекомендуется.
«растение_рождение» — шанс (от 0 до 1) в час, что зародится новый объект.
«растение_вода» — текущий уровень воды, вручную трогать не рекомендуется.
«растение_вода_минимум» — сколько воды нужно на время созревания одного объекта.
«растение_вода_максимум» — максимальный уровень воды.
«растение_смерть» — при каком уровне воды растение погибает (обычно минусовое значение).
«растение_посадка» — флаг, что здесь можно садить.