--$Author:Alexander Yakolev, 2017 --$Version:1.0 require "format" require "dbg" require "dbg-ru" declare "isdebug" (true) require 'ui' require 'tools' declare "char" ({}) format.dash = true format.quotes = true format.para = true -- https://www.google.ru/maps/place/%D0%9C%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B0/@22.8355052,-105.0808555,16z/data=!4m5!3m4!1s0x84043a3b88685353:0xed64b4be6b099811!8m2!3d23.634501!4d-102.552784 -- Необходимые правки стиля перед релизом: -- 1. Убрать курсив от ответов на диалоги, чтобы они просто слились с основным текстом -- 2. Убрать вывод текста ответов на первый из диалогов (выбор обращения) -- 3. Сделать ссылки в инвентаре не по двойному, а по одинарному щелчку -- 4. Отключить автосписок инвентаря в области, собственно, инвентаря -- 5. вернуть txtem() и вообще функции форматирования dlg { hideinv = true, nam = 'main', dsc = [[ От автобусной остановки до дома Чо было полтора километра. По пути вы осматривали окрестности: высокая гора, бесконечные пашни и маленькое село вокруг единственной колонки с водой.^^ Семья Чо отгородилась от села широкой полосой деревьев. Их пашня не отличалась от остальных: такое же чёрное поле с рядами роботов, которые молча копались в земле. Перед полем стоял невысокий красновато-чёрный дом с двумя окнами.^^ На стук в дверь открыла низенькая черноволосая девушка.^^ -- А, так вы тот инженер из города? Проходите, мы сейчас всё покажем. Я же правильно говорю, вы же инженер? ]], obj = { { { 'Инженер (она)', function() char.gender = "she"; char.plural = false; walk('start2'); return true; end }, { 'Инженер (он)', function() char.gender = "he"; char.plural = false; walk('start2'); return true; end }, { 'Инженер (оно)', function() char.gender = "it"; char.plural = false; walk('start2'); return true; end }, { 'Инженер (они)', function() char.gender = "they"; char.plural = false; walk('start2'); return true; end }, { 'Инженеры (они)', function() char.gender = "they"; char.plural = true; walk('start2'); return true; end }, { cond = function() return isdebug end, 'Пропустить интро', function() char.gender = rndstr({"they", "it", "he", "she"}) char.plural = rndalt(true, false) char.war = rndstr({"earth", "moon"}) walk('chos'); return true; end } } } } dlg { hideinv = true, nam = 'start2', dsc = function() return [[ -- А, это хорошо что ]]..engineer()..[[. Мы уже думали, что наша гарантия всё. Это же такие старые роботы, всё время в поле.^^ Она вышла из дома и пригласила вас за собой. Вы шли вдоль поля; металлические рабочие не обращали на вас внимания.^^ -- Вы знаете, у нас же нет других машин. Когда-то хотели купить что-нибудь для дома, но тут эта война с Луной… Вы были на войне? ]] end, obj = { { { function() return [[Цех РБ-65, с первого до последнего дня. Чинил]]..endings()..[[ ремонтных ботов.]] end, function() char.war = "earth"; p '-- Доблесть рабочих, конечно.'; walk('start3'); return true; end }, -- + к симпатизирующим Земле { 'Да, но Луна проиграла.', function() char.war = "moon"; p "-- Ой, вы из этих… Извините." walk('start3'); return true; end }, -- + к симпатизирующим Луне }, }, } dlg { hideinv = true, nam = 'start3', dsc = [[ (курсивом) Сюда, пожалуйста.^^ Она провела вас в большой сарай, где пылился высокий автоматический сельхозкомбайн. -- Вот и наш больной. Мы прогрели его весной, а он и не едет. Вы же ]]..engineer()..[[, вы сможете его починить? А то мы потеряем урожай. ]], decor = [[ Старушка Чо внимательно смотрит на вас. В её глазах вы читаете, что от починки этого комбайна зависит несколько жизней. ]], obj = {{ onempty = function() walk('start4') end, { 'Зачем вы заводили комбайн весной?', '-- Он замёрз! После зимы у мужа обычная машина не заводится, не то что роботы.' }, { 'У вас же столько роботов. Неужели вы не справитесь без комбайна?', [[-- Всего семеро, и они обычно упаковывают и складывают. Если они будут ещё и косить, мы не управимся до осени. Урожай сгниёт под дождями.]] }, { 'Да, '..pronoun_1()..' -- '..engineer()..[[. Но я могу только определить проблему, у вас же нет мастерской или инструментов.]], '-- Вы знаете, я могу попросить соседей. У Павла в подвале во время войны была мастерская.' }, { 'Давно он у вас?', [[-- Ну, лет двадцать уже, наверное. То есть, я хотела сказать, девятнадцать. Гарантия же ещё действует, правда?]] } }} } dlg { hideinv = true, nam = 'start4', dsc = function() return [[ Комбайн оказался ещё довоенным. Вы копались не меньше часа, пока не нашли износившийся программаторный блок.^^ -- Ну что же, надо чинить. Случай гарантийный, всё за счёт фирмы. Но придётся забрать в город, в мастерскую.^^ -- А нельзя прямо здесь? У нас же урожай скоро!^^ -- Нет, это…^^ -- Послушайте. У меня сестра работает в Берёзовке, я знаю что нужно. Вас устроит… десять тысяч?^^ -- В смысле?^^ -- Подождите, не отказывайтесь. Десять новых кусков. Золотом. И вы почините это здесь.^^ Вы задумались. На десять кусков можно было бы купить новый комбайн - конечно, не такой мощный, но если продать золото на Луну… Был один хитрый выход.^^ -- Давайте так: ]]..pronoun_1()..[[ здесь на три дня. Если за эти три дня что-то получится… Но после урожая -- сразу в мастерскую, нужен основательный ремонт. У кого, вы говорили, здесь мастерская?^^ -- Спасибо! -- она улыбнулась. -- Я скажу внучке, чтобы вас проводила. Сейчас.^^ Вы вернулись к дому. Старушка исчезла за дверью, а затем быстро вернулась с чумазой девушкой лет семнадцати. -- Это Катя, она вас проводит. Катя, до Павла и обратно, хорошо?^^ Девушка хотела что-то возразить, но передумала, опустила голову и тихо ответила:^^ -- Хорошо, бабушка. ]] end, decor = [[ Вы стояли и смотрели на Катю. А Катя смотрела на вас.^^ Между вами - тишина. ]], obj = {{ onempty = function() char.act = 1 p "Она отворачивается. Видимо, разговор закончен." walk('chos') end, {'Привет.', 'Привет.'} }} } room { nam = 'exit_west', disp = 'Дорога на запад', way = {'intersection', 'pavels', 'abandoned'}, decor = [[ Вы стоите на окраине Жестианы. Прямая автодорога идёт на запад, где начинается лес. В лесу она тут же делает крутой поворот.^^ Отсюда видны два здания в стороне. ]] } room { nam = 'abandoned', disp = 'Одноэтажный дом', -- занят роботами way = {'exit_north'}, decor = [[ ]] } room { nam = 'pavels', disp = 'Павлов дом', decor = [[ Вы стоите перед типовым напечатанным одноэтажным домом. С одной стороны к стене прислонилась маленькая пристройка для дров. С другой стороны — {suit|боевой механизированный костюм.} ]], obj = { obj { nam = 'suit', act = function() out = [[ Боевой механизированный костюм высотой 2,7 метров, марка РГ-22. Рассчитан на одного пилота. Вооружён автоматической пушкой калибра 5мм и огнемётом.^^]] if char.war == "earth" then out = out .. [[ Вы чинили эти двуногие танки день и ночь. Лунные мины становились всё изощрённее, и приходилось срочно отлаживать программы починки, а иногда и лезть вручную. Боты никогда не заботились о том, чтобы вычистить остатки пилота из кабины.^^ ]] end if char.war == "moon" then out = out .. [[ Где бы вы ни сражались, эти двуногие твари шли на вас тысячами. Вам приходилось еженедельно изобретать новые мины, чтобы получить хоть какой-то шанс отбиться. Сорок восемь смертельных чертежей против главной уязвимости этой модели — человека в кабине.^^ ]] end out = out..[[Такие штамповались на Земле сотнями тысяч, но после войны оказалось, что большая часть потеряна на поле боя. Конечно, по официальной версии. ]] end } } } room { nam = 'exit_north', disp = 'Дорога на север', way = {'town', 'abandoned'}, decor = [[ Вы стоите на окраине Жестианы. Прямая автодорога идёт на север. Здесь от неё отходит небольшой заезд на запад. ]] } room { nam = 'chos', disp = 'Дом Чо', way = {'town', 'intersection'}, dsc = [[ Вы стоите перед большим {chos_house|напечатанным домом.} Отсюда видна бесконечная пашня, по которой ходят фермерские роботы. ]], obj = { obj { nam = 'chos_house', act = [[К типовому двухэтажному дому из нанотрубок со временем допечатывали несколько модулей. Часть второго этажа выглядит совсем новой — возможно, её недавно расширили.]] } } } room { nam = 'intersection', disp = 'Перекрёсток', decor = [[]], way = {'exit_west', 'chos', 'town'}, exit = function() end } room { nam = 'town', disp = 'Жестиана', way = {'exit_north', 'chos', 'intersection', 'factory'}, decor = [[]] } room { nam = 'factory', disp = [[Здание на горе]], way = {'town', 'cathedral'}, dsc = [[ Вы забираетесь на склон горы. Отсюда хорошо видна вся Жестиана. Напротив вы видите ярко-розовый двухэтажный дом с высокой пристройкой. Вход в пристройку открыт, а над ним растянут длинный зелёный плакат с коротким сообщением:^^ «КАЖДЫЙ СТАНЕТ ХТОНИЧЕСКОЙ ПИЩЕЙ» ]] } room { nam = 'cathedral', disp = [[Внутри здания]], way = {'factory'}, dsc = [[ Вы входите в чистый просторный зал. Здесь тихо и пахнет можжевельником. Три ряда скамей стоят перед импровизированной трибуной.^^ Во втором ряду слева друг с другом перешёптываются {lfactory-women|две женщины.} Справа сидит {lfactory-man|одинокий мужчина в комбинезоне.} Вокруг зала ходит {lfactory-servant|мужчина в кожаной куртке} и протирает мебель от пыли. ]], obj = { obj { nam = 'lfactory-women', act = function() walk('factory-women') end }, obj { nam = 'lfactory-man', act = function() walk('factory-man') end }, obj { nam = 'lfactory-servant', act = function() walk('factory-servant') end } } } dlg { nam = 'factory-women'; hideinv = true, disp = 'Женщины внутри здания'; } -- пчёёёёёлы quest_factory_man = function() end dlg { nam = 'factory-men', hideinv = true, disp = 'Одинокий мужчина', decor = [[ Он одет в спортивный костюм с двумя галстуками на шее. Рядом с ним лежит серый заплечный мешок. Он сидит на скамье, опустив голову, погружённый в свои мысли. ]], obj = { {{ 'Что это за место?', function() return [[ -- Шшш. — он поднимает голову. — Говорите шёпотом. Это - наш клуб, здесь должно быть тихо. А вы же ]]..that()..' '..engineer()..[[ из города, да? ]]; end, next = '#кто' }; }; { '#кто', { function() return 'Да, '..pronoun_1()..' — '..engineer(); end, [[-- Хорошо. Вы у нас — новость дня. Осторожнее, а то про вас случайно сочинят народную легенду или песню. Хотя в Жестиане не любят петь.]], next = '#разговор' }; { function() return 'Откуда вы знаете?'; end, function() local out = [[-- У нас маленькая деревня. Вы — новость этого дня. Я даже знаю, что вы вроде как отличились на войне. ]]; if char.war == "moon" then out = out .. 'Но не мне судить, по какую сторону. '; end; out = out .. [[Осторожнее, а то про вас случайно сочинят народную легенду или песню. Хотя в Жестиане не любят петь.^^ Кстати. Не можете помочь мне с одной проблемой? Это как раз по вашему профилю.]]; return out; end, next = '#квест' } }; { '#квест', { 'Что у вас за проблема?', function() return quest_factory_man(); end, }; { 'В моих краях любят невмешательство.', function() return [[И это очень хорошо вам послужило на войне. Давайте я просто расскажу, а вы уже решите.]]..quest_factory_man(); end, }; { 'Широкий профиль потребует длинных денег.', function() return 'Значит, мы легко договоримся. Итак.'..quest_factory_man(); end, } }; { '#разговор', { 'Что интересного в Жестиане?', 'Ничего.' }; { 'Чем занимается ваш клуб?', 'Как обычно - собираемся раз в неделю, делимся новостями.' }; { 'Что это за здание?', 'Просто дом Джексонов. Надо же где-то собираться.', function() enable("здание-нап") end }; { 'Что означает надпись над входом?', [[Её меняют каждую неделю, но смысл всегда одинаков. Чтобы не расслаблялись.]] }; { false, "здание-нап", 'Напомните, а что это за здание?', 'Всё ещё дом Джексонов, где мы собираемся.' }; } } } dlg { hideinv = true, nam = 'factory-servant'; disp = 'Мужчина за работой'; decor = [[ Он одет в кожаную куртку, а на шее он носит длинный розовый плащ, который свисает до колен. ]] }