Что скажешь, ГрАнд?
Уже достаточно изменений накопилось, по-моему...
Неактивен
- VampirE - написал:
Попробывал реализовать атаку гоблина топором. В итоге вообще ничего не выводит. Странно. Просто пустая строка, ни ошибки, ничего. Если определять атаку гоблина в объекте топора, то все окей. Но логичнее вроде как использовать прямой объект.
До метода doAttackWith вообще дело не доходит, хотя верефикатор переопределен.Код:
goblin : Actor location = startroom sdesc = "гоблин" rdesc = "гоблина" ddesc = "гоблину" vdesc = "гоблина" tdesc = "гоблином" pdesc = "гоблине" noun = 'гоблин' 'гоблина' 'гоблину' 'гоблином' 'гоблине' 'гоблину#d' 'гоблином#t' ldesc = "Это маленький зеленый гоблин." isHim = true verDoAttackWith(actor,io) = {} doAttackWith(actor,io) = {"Уй-я! - кричит гоблин и убегает."; return nil;} ; topor : item location = Me sdesc = "топор" rdesc = "топора" ddesc = "топору" vdesc = "топор" tdesc = "топором" pdesc = "топоре" noun = 'топор' 'топора' 'топору' 'топором' 'топоре' 'топору#d' 'топором#t' ldesc = "Это топор." isHim = true verIoAttackWith(actor) = {} ;
Порядок вызова: прямой объект.verDoAttackWith -> косвенный объект.verIoAttackWith -> косвенный объект.ioAttackWith. doAttackWith (для команд с косвенным объектом) автоматом никогда не вызывается, его вызов надо явно прописать в игре. Т. е. для топора укажи
ioAttackWith(actor, dobj)={dobj.doAttackWith(actor, self);
Неактивен