1
0
Fork 0
mirror of https://gitlab.com/Oreolek/duel.git synced 2024-07-04 15:54:29 +03:00
duel/locations/pavels.lua

348 lines
16 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.

-- Вся эта локация от и до выстроена как одна большая битва с боссом.
-- В которой вы проходите через его двор, его дом, его святую мастерскую
-- перед тем, как встретиться и начать переговоры.
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 = {
{
{
'Кстати, про боевой опыт. В какой роте сам служил?',
'Четвёртый мехапехотный, пятнадцать выбросов.'
}
}
}
}