146
правок
Изменения
Перейти к навигации
Перейти к поиску
→Неочевидные приемы: - Реализация частей тела
;
</pre>
Ещё один способ - вставить в строку с двойными кавычками вызов изменяемого свойства. Например:
negoyai:=dToS(actor,rdesc);
// функция dToS перехватывает вывод на экран "двукавычного"
// свойства rdesc и присваевает присваивает переменной negoyai
pass doDrop;
}
Здесь мы превратили свойство rdesc действующего актера из строки с двойными кавычками в строку с одинарными и записали в объекте. Это свойство мы можем менять по ходу всей игры, и это будет менять описание. В данном случае - виновника происшествия.
'''Как реализовать части тела или объекта?'''
Как пример сложной фразы часто приводят примеры из серии:
врезать/ударить/стукнуть/пнуть ногой/хвостом/ёжиком (по) лбу/ноге/хребтине/ягодицам/сенсорам монстра/робота/тети Клавы
На самом деле, это реализуется довольно просто:
<pre>
class bodypart: fixeditem
dobjGen(actor, verb, indirectobj, proposition) =
{
self.location.dobjGen(actor, verb, indirectobj, proposition);
}
iobjGen(actor, verb, directobj, proposition) =
{
self.location.iobjGen(actor, verb, directobj, proposition);
}
;
zhvala : bodypart
location = megaant
desc = 'жвала/2'
adjective = 'муравья' 'муравья#r' 'муравью' 'муравью#r'
ldesc = "Большие страшные жвала. "
;
</p>
Теперь "ударить муравья по жвалам палкой" будет равнозначно "ударить муравья палкой".
Если вы хотите сделать отличную от такой реакцию, то напишите исключние для конкретных значений параметра verb.
==Усложнение принимаемых фраз==