-- Вся эта локация от и до выстроена как одна большая битва с боссом. -- В которой вы проходите через его двор, его дом, его святую мастерскую -- перед тем, как встретиться и начать переговоры. room { nam = 'pavels', disp = 'Дом на окраине', way = {'exit_west'}, decor = [[ Вы стояли перед типовым напечатанным одноэтажным домом. Он раскрашен в светло-зелёный с красной крышей. С одной стороны к стене прислонилась маленькая пристройка для дров. С другой стороны — {suit|боевой механизированный костюм.} Возле входной двери горела {call|кнопка домофона.} ]], obj = { obj { nam = 'call'; disp = 'домофон'; act = 'Домофон был включён, хозяин — дома. Достаточно было только поговорить с ним.'; talk = function() return walk('pavels-call') end; take = function() pn "Вам не был нужен домофон или какая-то его деталь." return false end, open = function() pn "Домофон не разбирался." return false end }; obj { nam = 'suit', disp = 'боевой костюм', talk = 'Костюм не принимал ваших команд. Если, конечно, он вообще вас слушал.', take = function() pn "Вам не нужна была боевая машина. Возвращаться в город на своём кабриолете было бы приятнее и быстрее." return false end, act = function() char.saw_suit = true local out = [[ Боевой механизированный костюм высотой 2,7 метров, марка РГ-22. Рассчитан на одного пилота. Вооружён автоматической пушкой калибра 5мм и огнемётом.^^]] if char.war == "earth" then out = out .. [[ Вы чинили эти двуногие танки день и ночь. Лунные мины становились всё изощрённее, и приходилось срочно отлаживать программы починки, а иногда и лезть вручную. Боты никогда не заботились о том, чтобы вычистить остатки пилота из кабины.^^ ]] end if char.war == "moon" then out = out .. [[ Где бы вы ни сражались, эти двуногие твари шли на вас тысячами. Вам приходилось еженедельно изобретать новые мины, чтобы получить хоть какой-то шанс отбиться. Сорок восемь смертельных чертежей против главной уязвимости этой модели — человека в кабине.^^ ]] end out = out..[[Такие штамповались на Земле сотнями тысяч, но после войны оказалось, что большая часть потеряна на поле боя. Конечно, по официальной версии. ]] return out end } } } dlg { nam = 'pavels-call', disp = 'Разговор с домофоном', decor = [[Камера домофона смотрела на вас бесстрастным блеском.]], enter = [[-- Кто там? — спросил неприветливый мужской низкий голос.]], obj = { { { '#robot', 'Здесь не проезжал такой робот…', function() disable('#robot') return [[— Вы не видели, как здесь проезжал робот на автомобиле? Он такой…^^ Домофон отключился. Видимо, нет.]] end }; { '#yours', 'Это ваш РГ-22?', function() disable('#yours') return 'Не продаётся.' end }; { '#repair', cond = function() return char.quests.chos > 0 end, function() disable('#repair') enable('#enter') return fmt.em(plural('Я занимаюсь', 'Мы занимаемся')..' ремонтом для Анжелины; она сказала, что у вас есть своя мастерская и вы можете помочь.') end, [[ -- То есть, ]]..pronoun_2()..' '..plural('чинишь', 'чините')..[[ железяки.^ -- Ну, скорее это больше программаторы, платы управления, ИскИны, роботы.^^ Голос на той стороне замолчал и начал чем-то шуршать.^^ -- В какой роте служил]]..endings()..[[?]], next = '#war' }; { cond = function() return live('kathy') end, fmt.em('<Попросить Катю поговорить с хозяином дома>'), function() local out = [[Здравствуйте, ]]..pronoun_1()..' — '..engineer() .. '.' return out end }; }; { '#war', { function() return plural('Зампотех старший лейтенант', 'Зампотехи старшие лейтенанты')..' третьей мехастрелковой роты, Фронт Обороны Земли.' end, function() char.war = "earth" walk('pavels-inside') return [[-- Старший лейтенант? А по голосу не скажешь. Ну хоть будет о чём поболтать.^^]]..enter_pavels() end }; { function() return plural('Майор', 'Майоры')..' первого ремонтного батальона, Армия Освобождения Луны.' end, function() char.war = "moon" walk('pavels-inside') return [[-- Луны, значит… А по голосу не скажешь. Ладно, что прошло -- то не взлетело.^^]]..enter_pavels() end }; } } } enter_pavels = function() char.quests.chos = 2 return [[ Дверь открылась с громким щелчком.^^ Вы вошли в тёмную гостиную.^ -- Я здесь, внизу! -- раздался голос хозяина. ]]; end room { nam = 'pavels-inside', disp = 'Гостиная', way = {'pavels-under'}, enter = function() find('pavel-call').timer = 0 lifeon('pavel-call') return 'Вы разулись на сером махровом коврике с надписью «Человек человеку добр».' end, decor = [[ Эта комната была большой, но здесь было так мало свободного места, что вам пришлось перепрыгивать через {table|журнальный столик,} чтобы пересечь её. Предметы были разбросаны, как будто из окон пролилась река, внесла эти случайные вещи и ушла, оставив их лежать на дне комнаты.^^ На полу были разбросаны {paper|какие-то бумажки.} За широким письменным столом висели фотокарточки в рамках. На подоконнике слабо светился {aqua|аквариум.} Со стен на вас смотрели красочные {portraits|портреты незнакомых людей.} ]], obj = { obj { nam = 'aqua', disp = 'аквариум', talk = 'Вы ещё не готовы разговаривать с аквариумами.', act = [[ Лазурные водоросли медленно сокращались и расслаблялись в прозрачной воде. Они сокращались и расслаблялись, сокращались и расслаблялись, как будто дышали чем-то ]]..fmt.em('другим.')..[[ Вы заметили мелкие фиолетовые пузырьки, которые всплывали из переплетения водорослей к краям аквариума. ]] }; obj { nam = 'table', disp = 'журнальный столик', talk = 'Вам нечего сказать журнальному столику. Да и он немногословен.', act = [[На столике лежал рисунок карандашом: робот-летописец тянет пишущую руку вверх. В нижней части листа ручкой было написано: «Слава Земле»]] }; obj { nam = 'paper', disp = 'бумаги на полу', talk = 'Бумага может сказать только то, что на ней напечатано.', act = [[Медицинский листок: «Контузия женщина 26 лет передвигала шкаф свалилась внутрь. Сломано два правых ребра, жалобы на боль в плече. Просит найти Хурхэнова.»^ Детским почерком: «Трудный 3-1. Прыжок влево, вправо, Круг, Квадрат, Вверх, Круг, Квадрат.»^ Страница из Горной Энциклопедии, буква Х: Халцедон, Хризолит, Хризопраз.^ Распечатка инструкции по обновлению нейронных сетей пилотов серии РГ.^ Таблица зависимости времени посадки цитрусовых от влажности воздуха. ]] }; obj { nam = 'portraits', disp = 'портреты', talk = 'Портреты молчали, отчего вам стало жутковато.', act = [[ Угрюмый старик в деловом костюме. Грустный мужчина в генеральском кителе. Напряжённая женщина в полосатой блузке с двумя галстуками. Девочка в кабине красного боевого механизированного костюма, почти втрое больше неё.^^ Как будто вы стояли в каком-то музее, куда даже не купили билет. ]] } } } obj { nam = 'pavel-call', timer = 0, life = function(s) s.timer = s.timer + 1 local response = { '-- Спуститесь, пожалуйста.', '-- Вы скоро?', '-- Ничего там не трогать!', '-- Я жду вас внизу.' } if timer % 4 == 1 then return rndstr(response) end end } local tea = function() local out = [[Чёрт с вами. Будете чаю?^^ Стол выдвинулся вперёд и расширился. Справа в нём открылась панель, из которой выехала табуретка. Из-за вашей спины вылетел маленький робот с чайником и чашками. Он быстро выставил приборы и начал подталкивать вас к табуретке.^^]] out = out .. '-- Про вас уже ходят слухи.' if char.reputation > 0 then out = out .. 'Немного, но хорошие.' end if char.reputation < 0 then out = out .. 'Немного, но не очень хорошие.' end out = out .. 'Никто так толком и не знает, что вы такое.' return out end local success = '-- Вот жук же вы. Разбирайте сами. А теперь уходите. Только чай перевожу.' dlg { nam = 'pavels-under', disp = 'Подвал', enter = function() local out = [[Вы нашли маленькую дверцу, за которой начиналась лестница в тёмный подвал. Где-то внизу, в конце лестницы, мигал слабый электрический свет.^^ Вы спустились в светлую холодную комнату, закрытую белыми плотными шторами. В центре за широким круглым столом возвышалось мягкое Главное Кресло. И в кресле сидел хозяин дома.^^]] if char.war == "moon" then out = out .. '-- Добро пожаловать, '..plural('майор', 'майоры').. '. Мне так и называть вас '..plural('Майором', 'Майорами')..'?' end if char.war == "moon" then out = out .. '-- Добро пожаловать, '..plural('старший лейтенант', 'старшие лейтенанты').. '. Мне так и называть вас по званию?' end return out end, decor = [[ Вы стояли в светлой холодной комнате с белыми стенами. Она была похожа на какой-нибудь командный центр… только не на настоящий военный штаб, которых вы насмотрелись на войне, а на что-то более фантастическое.^^ В центре на широком круглом столе стоят ряды приборов и датчиков, из-за которых на вас смотрит {pavel|хозяин дома.} ]], obj = { obj { nam = 'npcpavel', disp = 'хозяин дома', talk = 'Вы уже с ним говорите.', act = [[ Он смотрел на вас хитрым прищуром заинтересованной кошки. Кошки с пышными усами, которая никуда не спешит. ]] }; { { function() return '-- Сейчас больше подходит «'..plural('ремонтник', 'ремонтники')..'», спасибо.' end, tea, next = '#rumours' }; { function() return 'Как хотите, '..pronoun_1()..' здесь ненадолго.' end, tea, next = '#rumours' }; }; { '#rumours', { 'Просто гость из столицы. <сесть за чай>', function() char.tea = true return 'Ну тогда рассказывайте, зачем приехали.' end, next = '#ask' }; { 'Сплетничаем?', '-- Знакомимся.' }; { 'Человек с просьбой.', '-- Я слушаю.', next = '#ask' }; { 'Всегда есть слухи. Может, к делу?', 'Ну, раз так, то я вас слушаю.', next = '#ask' } }; { '#ask', { function() return plural('Мне', 'Нам')..' нужен программатор. Модель ЭУ-77. Вам нужно его описывать?' end, function() local out = [[-- Нет, я знаю что это.^^ Он отвлекается на один из мониторов.]] if char.tea == true then out = out .. 'Вы делаете глоток чая. Терпкий чёрный напиток приятно расслабляет.' end out = out .. [[^^-- Нет такой детали.]] return out end, next = '#detail', }, { 'У Анжелины сломан комбайн, и для починки нужен программатор ЭУ-77. Модель старая, заказ идёт долго. Может, у вас есть?', function() local out = [[-- Ну, раз для соседей…^^ Он отвлекается на один из мониторов.]] if char.tea == true then out = out .. 'Вы делаете глоток чая. Терпкий чёрный напиток приятно расслабляет.' end out = out .. [[^^-- Нет такой детали.]] return out end, next = '#detail', } }; { '#suit-pr', { 'Это всего лишь на время урожая. Потом всё равно заказывать новый программатор.', function() walk('pavels') char.quests.chos = 3 take('programmator') return success end }; { 'Вы же сможете договориться как соседи.', function() walk('pavels') char.quests.chos = 3 take('programmator') return success end } }; { '#detail', { cond = function() return (char.saw_suit == true) end, '-- У вас во дворе стоит РГ-22 с тремя независимыми программаторами этого типа. Вы на нём за хлебом ходите?', function() char.asked_suit = true return [[-- А что если он мне дорог?]] end, next = '#suit-pr' }, { [[Знаете, даже в нашей компании нет базы данных по всем деталям. Вам можно позавидовать.]], [[-- Завидуйте сколько хотите. Детали нет.]], next = '#general' }, }, { '#general', { cond = function() return (char.saw_suit == true and char.asked_suit ~= true) end, '-- У вас во дворе стоит РГ-22 с тремя независимыми программаторами этого типа. Вы на нём за хлебом ходите?', function() char.asked_suit = true end, }; { '#tea', 'Вы всегда угощаете гостей чаем?', function() disable('#tea') return 'Только интересных.' end, }; { '#servants', cond = function() return char.actions > 50 end, '[Традиционализм > 50%] Хороший у вас дом. А где же слуги?', -- обсуждение роботов function() disable('#servants') disable('#servants2') -- не показывать выключенный вариант, если внезапно игрок -- опустил Традиционализм до 50% и меньше return "Слуги? А, вы про роботов. Мне больше нравятся компактные модели. Не так быстро работают, но зато почти незаметны." end }; { '#servants2', cond = function() return char.actions <= 50 end, '{}[Традиционализм > 50%] Хороший у вас дом. А где же слуги?','' }; { 'Ну, спасибо за ваше ничего.', function() walk('pavels') return '-- Заходите в любое время.' end } } } } obj { nam = 'programmator', disp = 'программатор', mech = true, inv = 'Плата управления передвижением искусственного интеллекта. Жутко старая, но рабочая.' }