1
0
Fork 0
mirror of https://gitlab.com/Oreolek/duel.git synced 2024-06-30 22:05:07 +03:00
duel/main3.lua

524 lines
22 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--$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'},
dsc = [[
Дорога к этому дому выложена камнями. Идти по булыжнику легко и просто.
]],
decor = [[
Это высокий треугольный дом без окон.
Его пирамидальная крыша блестит зеркальной чистотой, а стены отполированы в ровный цвет
свежего дерева.
На одной из стен углём нарисована стилизованная голова робота-летописца и надпись: "ДОБРО.".
Внутрь ведёт единственный вход, который находится на три метра выше земли.^^
Перед домом работают механические боты. Ближе всего к вам стоят двое.
{robofarmer|Один из них} копается в грядках, а {robobutler|второй} настраивает какой-то {mechanism|механизм.}
]],
obj = {
obj {
nam = 'robofarmer',
act = [[Низкий хромированный фермер. Четырёхногая модель примерно десяти лет от роду.
Он медленно неуклюже передвигает передние ноги, когда переходит к следующей грядке.]]
};
obj {
nam = 'robobutler',
act = [[
Он похож по строению на робота-дворецкого, но у него не хватает верхней части лица,
а вместо левой ноги - импровизированный протез из строительного нанопластика.
Его глаза очень маленькие для широкого лица; скорее всего, их вставили из какой-нибудь детской куклы.
]]
};
obj {
nam = 'mechanism',
act = [[Какая-то параболическая антенна на широкой стальной трубе, вкопанной в землю.
Видимо, труба служит защитным корпусом для деталей.]]
}
}
}
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,
next = '#разговор'
};
{
'В моих краях любят невмешательство.',
function()
return [[И это очень хорошо вам послужило на войне.
Давайте я просто расскажу, а вы уже решите.]]..quest_factory_man();
end,
next = '#разговор'
};
{
'Широкий профиль потребует длинных денег.',
function()
return 'Значит, мы легко договоримся. Итак.'..quest_factory_man();
end,
next = '#разговор'
}
};
{ '#разговор',
{
'Что интересного в Жестиане?',
'Ничего.'
};
{
'Чем занимается ваш клуб?',
'Как обычно - собираемся раз в неделю, делимся новостями.'
};
{
'Что это за здание?',
function()
enable("#здание-нап")
return 'Просто дом Джексонов. Надо же где-то собираться.'
end,
};
{
'Что означает надпись над входом?',
[[Её меняют каждую неделю, но смысл всегда одинаков. Чтобы не расслаблялись.]]
};
{
hidden = true,
"#здание-нап",
'Напомните, а что это за здание?',
function()
enable("#здание-нап")
return 'Всё ещё дом Джексонов, где мы собираемся.'
end
};
}
}
}
dlg {
hideinv = true,
nam = 'factory-servant';
disp = 'Мужчина за работой';
decor = [[
Он одет в кожаную куртку, а на шее он носит длинный розовый плащ, который свисает до колен.
]]
}