Объекты, связанные с другими объектами
Объекты тоже могут содержать в себе атрибут 'obj' (или конструкцию 'with'). При этом, при выводе объектов, INSTEAD будет разворачивать списки последовательно. Такая техника может использоваться для создания объектов-контейнеров или просто для связывания нескольких описаний вместе. Например, поместим на стол яблоко.
obj {
nam = 'яблоко';
dsc = [[На столе лежит {яблоко}.]];
act = 'Взять что ли?';
};
obj {
nam = 'стол';
dsc = [[В комнате стоит {стол}.]];
act = 'Гм... Просто стол...';
obj = { 'яблоко' };
};
room {
nam = 'Дом';
obj = { 'стол' };
}При этом, в описании сцены мы увидим описание объектов 'стол' и 'яблоко', так как 'яблоко' -- связанный со столом объект и движок при выводе объекта 'стол' вслед за его 'dsc' выведет последовательно ''dsc'' всех вложенных в него объектов.
Также, следует отметить, что, оперируя объектом 'стол' (например, перемещая его из комнаты в комнату), мы автоматически будем перемещать и вложенный в него объект 'яблоко'.
Конечно, данный пример мог бы быть написан и по-другому, например, так:
room {
nam = 'Дом';
}:with {
obj {
nam = 'стол';
dsc = [[В комнате стоит {стол}.]];
act = 'Гм... Просто стол...';
}: with {
obj {
nam = 'яблоко';
dsc = [[На столе лежит {яблоко}.]];
act = 'Взять что ли?';
};
}
}Выбирайте тот способ, который для вас понятней.