1
0
Fork 0
mirror of https://gitlab.com/Oreolek/duel.git synced 2024-05-04 10:08:47 +03:00
duel/locations/pavels.lua

576 lines
25 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 = function(s)
return 'Домофон был включён, хозяин — дома. Достаточно было только поговорить с ним.'
end;
talk = function()
if _('pavels-call').obj:empty() then
return 'Вам нечего сказать.'
end
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',
disp = 'Разговор с домофоном',
decor = [[Камера домофона смотрела на вас бесстрастным блеском.]],
enter = [[-- Кто там? — спросил неприветливый мужской низкий голос.]],
obj = {
{
{
'#robot',
'Здесь не проезжал такой робот…',
function()
disable('#robot')
return [[
— Вы не видели, как здесь проезжал робот на автомобиле? Он такой…^^
Домофон отключился. Видимо, нет.
]]
end
};
{
'#yours',
cond = function()
return char.saw_suit == true and not disabled('#yours')
end,
'Это ваш РГ-22?',
function()
disable('#yours')
return [[
-- Это ваш РГ-22?^
-- Не продаётся.
]]
end
};
{
'#repair',
cond = function()
return char.quests.chos > 0 and not visited('pavels-inside')
end,
function()
local out = plural('Я занимаюсь', 'Мы занимаемся')..' ремонтом для Анжелины; она сказала, что у вас есть своя мастерская и вы можете помочь.'
return fmt.em(out)
end,
function()
local ask = plural('Я занимаюсь', 'Мы занимаемся')..' ремонтом для Анжелины; она сказала, что у вас есть своя мастерская и вы можете помочь.'
disable('#repair')
return [[
-- ]]..ask..[[^
-- То есть, ]]..pronoun_2()..' '..plural('чинишь', 'чините')..[[ железяки.^
-- Скорее это программаторы, платы управления, ИскИны, роботы.^^
Голос на той стороне замолчал и начал чем-то шуршать.^^
-- В какой роте служил]]..endings()..[[?
]]
end,
next = '#war'
};
{
'#inside',
cond = function()
return visited('pavels-inside')
end,
function()
return 'Это снова '..pronoun_1()..'. Запустите?'
end,
function()
char.pavel_short = true
walk('pavels-inside')
return [[
-- Это снова ]]..pronoun_1()..[[. Запустите?^
-- Ну что ж, проходите.
]]
end
};
{
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 [[
-- ]]..plural('Зампотех старший лейтенант', 'Зампотехи старшие лейтенанты')..[[ третьей мехастрелковой роты, Фронт Обороны Земли.^
-- Старший лейтенант? А по голосу не скажешь. Ну хоть будет о чём поболтать.^^]]..enter_pavels()
end
};
{
function()
return plural('Майор', 'Майоры')..' первого ремонтного батальона, Армия Освобождения Луны.'
end,
function()
char.war = "moon"
walk('pavels-inside')
return [[
-- ]]..plural('Майор', 'Майоры')..[[ первого ремонтного батальона, Армия Освобождения Луны.^
-- Луны, значит… А по голосу не скажешь. Ладно, что прошло -- то не взлетело.^^]]..enter_pavels()
end
};
}
}
}
enter_pavels = function()
char.quests.chos = 2
return [[
Дверь открылась с громким щелчком.^^
Вы вошли в тёмную гостиную.^
-- Я здесь, внизу! -- раздался голос хозяина.
]];
end
room {
nam = 'pavels-inside',
disp = 'Гостиная',
way = {'pavels-under'},
enter = function()
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 s.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 {
nam = 'pavels-under',
disp = 'Подвал',
enter = function()
lifeoff('pavel-call')
if char.pavel_short then
_('pavels-under'):reset('#general')
return
end
local out = [[
Вы нашли маленькую дверцу, за которой начиналась лестница в тёмный подвал.
Где-то внизу, в конце лестницы, мигал слабый электрический свет.^^
Вы спустились в светлую холодную комнату, закрытую белыми плотными шторами.
В центре за широким круглым столом возвышалось мягкое Главное Кресло.
И в кресле сидел хозяин дома.^^
]]
if char.war == "moon" then
out = out .. '-- Добро пожаловать, '..plural('майор', 'майоры')..
'. Мне так и называть вас '..plural('Майором', 'Майорами')..'?'
end
if char.war == "earth" then
out = out .. '-- Добро пожаловать, '..plural('старший лейтенант', 'старшие лейтенанты')..
'. Мне так и называть вас по званию?'
end
return out
end,
decor = [[
Вы стояли в светлой холодной комнате с белыми стенами.
Она была похожа на какой-нибудь командный центр… только не на настоящий
военный штаб, которых вы насмотрелись на войне, а на что-то более фантастическое.^^
В центре на широком круглом столе стоят ряды приборов и датчиков, из-за
которых на вас смотрит {npcpavel|хозяин дома.}
]],
obj = {
obj {
nam = 'npcpavel',
disp = 'хозяин дома',
talk = 'Вы уже с ним говорите.',
act = [[
Он смотрел на вас хитрым прищуром заинтересованной кошки.
Кошки с пышными усами, которая никуда не спешит.
]]
}
},
phr = {
{
function()
return 'Сейчас больше подходит «'..plural('ремонтник', 'ремонтники')..'», спасибо.'
end,
function()
return '-- Сейчас больше подходит «'..plural('ремонтник', 'ремонтники')..'», спасибо.^'..tea()
end,
next = '#rumours'
};
{
function()
return 'Как хотите, '..pronoun_1()..' здесь ненадолго.'
end,
function()
return '-- Как хотите, '..pronoun_1()..' здесь ненадолго.^'..tea()
end,
next = '#rumours'
};
{
'#rumours',
{
'Просто гость из столицы. <сесть за чай>',
function()
char.tea = true
return [[
-- Просто гость из столицы.^^
Вы сели за столик и отхлебнули чай. У него был терпкий, но приятный вкус.^^
-- Ну тогда рассказывайте, зачем приехали.
]]
end,
next = '#ask'
};
{
'Сплетничаем?',
[[
-- Сплетничаем?^
-- Знакомимся.
]]
};
{
function()
return plural('Человек', 'Люди')..' с просьбой.'
end,
function()
return [[
--]]..plural('Человек', 'Люди')..[[ с просьбой.^
-- Я слушаю.
]]
end,
next = '#ask'
};
{
'Всегда есть слухи. Может, к делу?',
[[
-- Всегда есть слухи. Может, к делу?^
-- Ну, раз так, то я вас слушаю.
]],
next = '#ask'
}
};
{
'#ask',
{
function()
return plural('Мне', 'Нам')..' нужен программатор. Модель ЭУ-77. Его описывать?'
end,
function()
local out = [[
-- ]]..plural('Мне', 'Нам')..[[ нужен программатор. Модель ЭУ-77. Его описывать?^
-- Нет, я знаю что это.^^
Он отвлекается на один из мониторов.
]]
if char.tea == true then
out = out .. 'Вы делаете глоток чая. Терпкий чёрный напиток приятно расслабляет.'
end
out = out .. [[^^-- Нет такой детали.]]
return out
end,
next = '#detail',
},
{
'У Анжелины сломан комбайн, и для починки нужен программатор ЭУ-77. Модель старая, заказ идёт долго. Может, у вас есть?',
function()
local out = [[
-- У Анжелины сломан комбайн, и для починки нужен программатор ЭУ-77.
Модель старая, заказ идёт долго. Может, у вас есть?^
-- Ну, раз для соседей…^^
Он отвлекается на один из мониторов.
]]
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 [[
-- У вас во дворе стоит РГ-22 с тремя независимыми программаторами этого типа.
Вы на нём за хлебом ходите?^
-- А что если он мне дорог?
]]
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
return [[
-- У вас во дворе стоит РГ-22 с тремя независимыми программаторами этого типа.
Вы на нём за хлебом ходите?^
-- А что если он мне дорог?
]]
end,
next = '#suit-pr'
};
{
'#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
}
}
}
}
obj {
nam = 'programmator',
disp = 'программатор',
mech = true,
inv = 'Плата управления передвижением искусственного интеллекта. Жутко старая, но рабочая.'
}