-- Вся эта локация от и до выстроена как одна большая битва с боссом. -- В которой вы проходите через его двор, его дом, его святую мастерскую -- перед тем, как встретиться и начать переговоры. 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() 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() 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 } room { nam = 'pavels-under', disp = 'Подвал', enter = [[Вы нашли маленькую дверцу, за которой начиналась лестница в тёмный подвал. Где-то внизу, в конце лестницы, мигал слабый электрический свет.]], decor = [[ Вы спустились в светлую холодную комнату, закрытую белыми плотными шторами. Она была похожа на какой-нибудь командный центр… только не на настоящий военный штаб, которых вы насмотрелись на войне, а на что-то более фантастическое.^^ В центре чистой комнаты с белыми стенами стоял широкий круглый стол. Внутри за рядами приборов и датчиков возвышалось мягкое Главное Кресло. И в кресле сидел {pavel|хозяин дома.} ]], obj = { obj { nam = 'pavel', disp = 'хозяин дома', talk = function() return walk('pavel') end, act = [[ Он смотрел на вас хитрым прищуром заинтересованной кошки. Кошки с пышными усами, которая никуда не спешит. ]] } } } dlg { nam = 'pavel', disp = false, decor = [[ Он смотрел на вас хитрым прищуром заинтересованной кошки. Кошки с пышными усами, которая никуда не спешит. ]], obj = { { '#приветствие', { '[Традиционализм > 50%] Хороший у вас дом. А где же слуги?', -- обсуждение роботов "Слуги? А, вы про роботов. Мне они не нужны." } --[[ { -- осуждение дома function() local out = [[Как у вас чисто. Наверное, вы заманиваете сюда маленьких ] ] out = out..gendered('мальчиков', 'девочек', 'ребят', 'ребят') out = out..[[, а потом показываете им обучающие фильмы про ] ] if char.war == "earth" then out = out..'Триумф Войны' end if char.war == "moon" then out = out..'Землян-Победителей' end out = out..'. Идеальное убежище посреди нигде.' return out end }]] { '<Молча обойти стол и посмотреть на приборы>', -- передача инициативы в диалоге [[Вы медленно обходите стол, осматривая приборы на нём. Мониторы, которые до этого были закрыты от вас, показывают видео с камер наблюдения. Снаружи дома, внутри гостиной. Одна из камер направлена на вас.^^ -- Вы сами по себе или из компании?]], next = '#гарантия' } { -- заткнись и дай пройти мой квест 'Мне нужна твоя мастерская. Сейчас.', } } { '#гарантия', { [[Гарантийный вызов.]], function() walk('pavel-warranty') end, }, { 'Вы давно видели свободных ремонтников? Мастерские стоят дорого, а без них вы ничего не сможете сделать.', function() walk('pavel-warranty') end, }, { 'Правильное слово - корпорации. Транспланетной корпорации.', function() walk('pavel-warranty') end, } } { '#начало', { 'И при чём же здесь военная служба? Зачем выпытывать роту?' } } } } dlg { nam = 'pavel-warranty', disp = false, decor = [[-- Боевой опыт и квалификация. Редкая птица в этих краях.]] obj = { { { 'Кстати, про боевой опыт. В какой роте сам служил?', 'Четвёртый мехапехотный, пятнадцать выбросов.' } } } }