//============================================================================= // настройка меню собеседника //============================================================================= %Вы играете за Петю и можете поговорить с Васей и Вовой. %_ %Нумеровать строки меню? class собеседник { if(input("да/нет?>")=="да") this.menu_num = да //ставим автонумерацию для меню } //============================================================================= // синонимы для строк меню //============================================================================= "1"="один"="первое" "2"="два"="второе" "3"="три"="третье" "4"="четыре"="четвертое" "5"="пять"="пятое" //============================================================================= // локация и 2 персонажа //============================================================================= location Комната { this.description="в комнате {item} Для начала разговора введите 'говорить с Васей' или 'говорить с Вовой'.{menu()}" OnEnter() //покажем локацию { % %{title} %{description} } unique Вася { cls = собеседник title="Вас%; МрЕчОдСи; Ип; Зп=ь; Зп=я; Ип=я; Рп=и; Дп=е; Вп=ю; Тп=ей; Пп=е;" } unique Вова { cls = собеседник title="Вов%; МрЕчОдСи; Ип; Зп=; Зп=а; Ип=а; Рп=ы; Дп=е; Вп=у; Тп=ой; Пп=е;" } unique Петя { cls = собеседник title="Пет%; МрЕчОдСи; Ип; Зп=ь; Зп=я; Ип=я; Рп=и; Дп=е; Вп=ю; Тп=ей; Пп=е;" pers=this } } //============================================================================= // парсерная составляющая диалога //============================================================================= action Поговорить { pat="поговорить=говорить=поговори=говори с @с_кем:собеседник*Тп" pat="спросить=спроси @с_кем:собеседник*Вп" с_кем(с_кем) { if(с_кем==actor) return "будет несколько странно, если {actor} начнет говорить с {actor*Тп}^^^" } } Петя.Поговорить(с_кем) { %для выбора меню введите номер строки, начальные буквы строки, или начало любого слова в меню. this > "Слушай, {с_кем*Зп}, давно тебя хотел спросить^^^" %{с_кем.menu()} this.is_not_recognized = "{menu_object} тебя не понял." //это вместо "Это предложение не понятно." с_кем.menu_name="Продолжаем разговор c {menu_object*Тп}: ___" } //============================================================================= // менюшная составляющая диалога //============================================================================= class собеседник { //настройки меню this.menu_name="Разговор с {this*Тп}: ___" this.menu_separator = " //между строками меню перенос строки с отступом ___" //при разговоре с любым собеседником должна быть опция выхода из меню: menu_item("{досвиданья()}",1000) //всегда в конце меню { pers > "Пока {menu_object}, было приятно поболтать." this > "Пока {pers}." pers.is_not_recognized = null loc.OnEnter() //покажем локацию } досвиданья() { switch(rnd(5)) case(1) return "досвиданья" case(2) return "пока" case(3) return "прощай" case(4) return "счастливо" case(5) return "еще увидимся" } } unique Вася { //формируем меню для разговора с Васей menu_item("про рыбалку") { pers > "Вася, а как ты относишься к рыбалке?" this > "Да не рыбак я совсем^^^" pers > "Жаль, очень жаль." %{menu()} //в конце вызываем меню для продолжения диалога } } unique Вова { //формируем меню для разговора с Вовой menu_item("про рыбалку") { this.говорили_про_рыбалку = да pers > "Вова, а как ты относишься к рыбалке?" this > "Вчера я поймал вот такую (разводит руки в стороны) рыбу!" pers > "Да ну! Ты просто супер-рыбак!" %{menu()} //в конце вызываем меню для продолжения диалога } } //отдельная тема сокровищ mental ПроСокровища //помещаем тему в разговор с Васей { menu_item("а где ты хранишь свои сокровища?") { Вася - ПроСокровища //2й раз про сокровища спросить не судьба Вася + ПроКлюч //добавляем тему ключа pers > "А где ты хранишь свои сокровища?" menu_object > "В тумбочке стола^^^" pers > "Спасибо, ты мне очень помог!" %{menu_object.menu()} } Вася + this } //отдельная тема ключа mental ПроКлюч { menu_item("эээ^^^ тумбочка закрыта, где ключ?") { Вася - ПроКлюч //2й раз про ключ не спрашиваем Вова + ПроКлюч2 //становится известно что ключ у Вовы pers > "Эээ^^^ тумбочка закрыта, где ключ??" menu_object > "Ключ у Вовы." pers > "Спасибо, ты мне снова помог!" %{menu_object.menu()} } } mental ПроКлюч2 { menu_item("Вова! Вася сказал что у тебя есть ключ от тумбочки!") { Вова - ПроКлюч2 //2й раз про ключ не спрашиваем pers > "Вова! Вася сказал что у тебя есть ключ от тумбочки!" if(Вова.говорили_про_рыбалку) { menu_object > "На, держи! (отдает ключ)" pers > "Спасибо, ты меня выручил!" } else { menu_object > "Ключ, ключ^^^ А зачем он тебе?" pers > "Ну так^^^ нужен для одного дела^^^" } %{menu_object.menu()} } }