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

460 lines
21 KiB
Lua
Raw Normal View History

2017-03-21 13:37:06 +02:00
-- Вся эта локация от и до выстроена как одна большая битва с боссом.
-- В которой вы проходите через его двор, его дом, его святую мастерскую
-- перед тем, как встретиться и начать переговоры.
room {
nam = 'pavels',
disp = 'Дом на окраине',
way = {'exit_west'},
decor = [[
Вы стояли перед типовым напечатанным одноэтажным домом.
Он раскрашен в светло-зелёный с красной крышей.
С одной стороны к стене прислонилась маленькая пристройка для дров.
С другой стороны {suit|боевой механизированный костюм.}
Возле входной двери горела {call|кнопка домофона.}
]],
obj = {
obj {
nam = 'call';
disp = 'домофон';
act = 'Домофон был включён, хозяин — дома. Достаточно было только поговорить с ним.';
2017-03-09 14:04:05 +02:00
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',
2017-03-09 14:04:05 +02:00
disp = 'Разговор с домофоном',
decor = [[Камера домофона смотрела на вас бесстрастным блеском.]],
2017-03-20 14:32:21 +02:00
enter = [[-- Кто там? — спросил неприветливый мужской низкий голос.]],
obj = {
2017-03-09 14:04:05 +02:00
{
{
'#robot',
'Здесь не проезжал такой робот…',
function()
disable('#robot')
return [[ Вы не видели, как здесь проезжал робот на автомобиле? Он такой^^
Домофон отключился. Видимо, нет.]]
end
};
{
2017-03-20 14:32:21 +02:00
'#yours',
2017-03-09 14:04:05 +02:00
'Это ваш РГ-22?',
2017-03-20 14:32:21 +02:00
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('чинишь', 'чините')..[[ железяки.^
2017-03-20 14:32:21 +02:00
-- Ну, скорее это больше программаторы, платы управления, ИскИны, роботы.^^
Голос на той стороне замолчал и начал чем-то шуршать.^^
-- В какой роте служил]]..endings()..[[?]],
2017-03-20 14:32:21 +02:00
next = '#war'
2017-03-09 14:04:05 +02:00
};
{
cond = function()
2017-03-17 14:21:18 +02:00
return live('kathy')
2017-03-09 14:04:05 +02:00
end,
2017-03-19 11:27:49 +02:00
fmt.em('<Попросить Катю поговорить с хозяином дома>'),
2017-03-09 14:04:05 +02:00
function()
2017-03-19 11:27:49 +02:00
local out = [[Здравствуйте, ]]..pronoun_1()..' — '..engineer() .. '.'
2017-03-09 14:04:05 +02:00
return out
end
};
};
2017-03-20 14:32:21 +02:00
{
'#war',
{
function()
return plural('Зампотех старший лейтенант', 'Зампотехи старшие лейтенанты')..' третьей мехастрелковой роты, Фронт Обороны Земли.'
2017-03-20 14:32:21 +02:00
end,
function()
char.war = "earth"
walk('pavels-inside')
return [[-- Старший лейтенант? А по голосу не скажешь. Ну хоть будет о чём поболтать.^^]]..enter_pavels()
end
};
{
function()
return plural('Майор', 'Майоры')..' первого ремонтного батальона, Армия Освобождения Луны.'
2017-03-20 14:32:21 +02:00
end,
function()
char.war = "moon"
walk('pavels-inside')
return [[-- Луны, значит… А по голосу не скажешь. Ладно, что прошло -- то не взлетело.^^]]..enter_pavels()
end
};
}
}
}
enter_pavels = function()
char.quests.chos = 2
2017-03-20 14:32:21 +02:00
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|портреты незнакомых людей.}
2017-03-20 14:32:21 +02:00
]],
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 = [[
Угрюмый старик в деловом костюме.
Грустный мужчина в генеральском кителе.
Напряжённая женщина в полосатой блузке с двумя галстуками.
Девочка в кабине красного боевого механизированного костюма, почти втрое больше неё.^^
Как будто вы стояли в каком-то музее, куда даже не купили билет.
2017-03-20 14:32:21 +02:00
]]
}
}
}
2017-03-20 14:32:21 +02:00
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 {
2017-03-20 14:32:21 +02:00
nam = 'pavels-under',
disp = 'Подвал',
enter = function()
local out = [[Вы нашли маленькую дверцу, за которой начиналась лестница в тёмный подвал.
Где-то внизу, в конце лестницы, мигал слабый электрический свет.^^
2017-03-21 13:37:06 +02:00
Вы спустились в светлую холодную комнату, закрытую белыми плотными шторами.
В центре за широким круглым столом возвышалось мягкое Главное Кресло.
И в кресле сидел хозяин дома.^^]]
if char.war == "moon" then
out = out .. '-- Добро пожаловать, майор. Мне так и называть вас Майором?'
end
if char.war == "moon" then
out = out .. '-- Добро пожаловать, старший лейтенант. Мне так и называть вас по званию?'
end
return out
end,
decor = [[
Вы стояли в светлой холодной комнате с белыми стенами.
2017-03-21 13:37:06 +02:00
Она была похожа на какой-нибудь командный центр только не на настоящий
военный штаб, которых вы насмотрелись на войне, а на что-то более фантастическое.^^
В центре на широком круглом столе стоят ряды приборов и датчиков, из-за
которых на вас смотрит {pavel|хозяин дома.}
2017-03-21 13:37:06 +02:00
]],
obj = {
obj {
nam = 'npcpavel',
2017-03-21 13:37:06 +02:00
disp = 'хозяин дома',
talk = 'Вы уже с ним говорите.',
act = [[
Он смотрел на вас хитрым прищуром заинтересованной кошки.
Кошки с пышными усами, которая никуда не спешит.
]]
};
{
{
'-- Сейчас больше подходит «ремонтник», спасибо.',
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
}
2017-03-21 13:37:06 +02:00
}
}
2017-03-20 14:32:21 +02:00
}
obj {
nam = 'programmator',
disp = 'программатор',
mech = true,
inv = 'Плата управления передвижением искусственного интеллекта. Жутко старая, но рабочая.'
}