1
0
Fork 0
mirror of https://gitlab.com/Oreolek/duel.git synced 2024-07-02 14:55:15 +03:00
duel/locations/abandoned.lua

359 lines
17 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 = 'abandoned',
disp = 'Одноэтажный дом', -- занят роботами
way = {'exit_north'},
dsc = [[
Дорога к этому дому была выложена камнями. Вы шли по булыжнику легко и быстро.
]],
decor = [[
Высокий треугольный дом без окон.
Его пирамидальная крыша блестела зеркальной чистотой, а стены были отполированы в ровный цвет
свежего дерева.
На одной из стен углём кто-то нарисовал стилизованную голову робота-летописца и надпись: "ДОБРО.".
Внутрь вёл единственный вход, который находился на три метра выше земли.^^
Перед домом работали механические боты. Ближе всего к вам стояли двое.
{robofarmer|Один из них} копался в грядках, а {robobutler|второй} настраивал какой-то {mechanism|механизм.}
]],
obj = {
obj {
nam = 'robofarmer',
disp = function()
return 'первый робот'
end,
act = [[Низкий хромированный фермер. Четырёхногая модель примерно десяти лет от роду.
Он медленно неуклюже передвигал передние ноги, когда переходил к следующей грядке.]]
};
obj {
nam = 'robobutler',
disp = function()
if char.knows_kef then
return 'Кеф'
end
return 'второй робот'
end,
act = [[
Он был похож по строению на робота-дворецкого, но у него не хватало верхней части лица,
а вместо левой ноги стоял импровизированный протез из строительного нанопластика.
Его глаза были очень маленькими для широкого лица; скорее всего, их вставили из какой-нибудь детской куклы.
]],
talk = function()
walk('robobutler-dlg')
return true
end,
};
obj {
nam = 'mechanism',
disp = 'механизм',
talk = 'Механизму нечего вам ответить.',
act = [[Какая-то параболическая антенна на широкой стальной трубе, вкопанной в землю.
Видимо, труба служит защитным корпусом для деталей.]],
take = function()
pn ('Над ней работает робот, который заметит отсутствие механизма. Да и зачем вам эта антенна?');
return false
end
}
}
}
dlg {
nam = 'robobutler-dlg',
disp = 'Диалог с роботом',
decor = function()
return _('robobutler').act
end,
obj = {{
{
'#who',
'Кто вы?',
function()
disable('#who')
char.knows_kef = true
return 'Я — программируемый секретарь КЕ-2469Ф. Можно Кеф для краткости.'
end,
};
{
'#good',
'Что такое «добро»?',
function()
disable('#good')
char.asked_good = true
return [[Понятие, которое ассоциировано с действиями на пользу или на защиту общества.]]
end
};
{
cond = function()
return (char.asked_good == true and char.knows_robots ~= true)
end,
'Что означает надпись «добро»? Чем вы занимаетесь как группа?',
function()
changeop('reputation', 3)
char.knows_robots = true
return [[Мы занимаемся добром. Мы действуем на пользу общества.]]
end
};
{
always = true,
cond = function()
return (char.knows_robots == true)
end,
'Напомни ещё раз, что означает надпись «добро»?',
[[Мы занимаемся добром. Мы действуем на пользу общества.]]
};
{
'#хозяин',
'Где ваш хозяин?',
function()
disable('#хозяин')
return 'Отсутствует. Но не волнуйтесь, мы поддерживаем его владения в идеальном порядке.'
end
};
{
fmt.em([[Вы очень похожи на одного моего знакомого робота…]]);
function()
char.quests.car = 2
return [[
-- Вы очень похожи на одного моего знакомого робота. Такой высокий, без левого манипулятора. Катается на красном спортивном авто. По крайней мере, последние несколько часов. Вы не знаете, где он?^^
Робот развёл руками:^^
-- Запрос неточен. Подходит ЛО-1847З, но у него нет личной машины. Вы хотите найти ЛО-2837З?^^
-- Да. Это срочно.^^
-- ЛО-1847З выполняет задание поиска редких металлов и механизмов. В чём выражается срочность?
]]
end;
next = "#поиск";
};
{
'Что это за механизм перед вами?',
[[Интернет-антенна с прямым подключением к сети IDEC. Хозяин должен быть в курсе последних постов в эхе pipe.204812.]]
};
{
"#ремонт",
cond = function() -- есть квест по починке комбайна
return char.quests.main > 0
end,
'У вас нет ремонтного бота? Переносного.',
function()
disable '#ремонт'
return [[У нас нет стандартных роботов ремонтной специализации.
Мы делаем все починки только самостоятельно, на себе.^^
Видимо, это значит что они не чинят чужие комбайны.]]
end
};
{
'Спасибо. Удачи вам с этим… добром.',
function()
walkout()
return 'Робот кивнул вам и вернулся к починке механизма.'
end
};
};
{
"#поиск",
{
'#украл',
"Он украл чужую машину. Его нужно остановить.",
function()
disable('#украл')
changeop('actions', 10)
return 'ЛО-1847З не мог украсть чужой механизм. Это напрямую противоречит его задаче сбора '..fmt.em('потерянных')..' механизмов.'
end
};
{
function()
return "У "..plural('меня', 'нас')..' есть механизм для него.'
end,
'Предъявите механизм для того, чтобы я произвёл оценку полезности.',
next = '#механизм'
};
{
'#багрепорт',
function()
return plural('Я знаю', 'Мы знаем')..', что в его программе сбора механизмов есть ошибка.'
end,
function()
changeop('actions', -5)
disable('#багрепорт')
return [[Глаза робота совершили оборот вокруг своих осей.^^
-- У вас есть отчёт об ошибке? Замечательно!
Если ошибка будет принята, мы немедленно отзовём бракованный элемент
со всеми механизмами!]]
end,
next = '#ошибка'
}
};
{
'#механизм',
{
'Он не здесь. Не под рукой.',
'В таком случае я не способен произвести оценку полезности.'
};
{
cond = function()
return have('programmator')
end,
'Вот старый программатор.',
function()
drop('programmator')
remove('programmator')
char.quests.car = 3
char.quests.cho = -1
char.quests.gave_mech = true
lifeon('car-retrieval-unit') --подъезжает робот-гад на машине, вылезает из машины, исчезает в доме. Можно забирать авто.
changeop('reputation', -10) -- гадость от провала больше чем радость роботов
walk('abandoned')
return 'Произвожу оценку… Механизм признан полезным. Вызываю сборщика механизмов.'
end
}
};
{
'#ошибка',
--[[
{
cond = function()
return (char.actions > 40)
end,
'{}[Оригинальность < 40] Он не учитывает контекст находок.'
};
{
cond = function()
return (char.actions < 40)
end,
'[Оригинальность < 40] Он не учитывает контекст находок.',
function()
changeop('reputation', 5)
return [\[-- Отчёт об ошибке принят.^^
Робот ненадолго задумался, потом дёрнулся и продолжил:
-- Требуются дополнительные данные. Какой контекст необходимо учитывать?]\]
end,
next = '#контекст',
};]]
{
'Он действует без разрешения владельцев механизмов.',
function()
return [[-- Отчёт об ошибке принят.^^
Робот ненадолго задумался, потом дёрнулся и продолжил:
-- Отчёт об ошибке закрыт. Программа работает исключительно на бесхозных объектах. Данные объекты не имеют владельцев.]]
end,
next = '#поиск'
};
{
'Область поиска механизмов слишком велика.',
function()
return [[-- Отчёт об ошибке принят.^^
Робот ненадолго задумался, потом дёрнулся и продолжил:
-- Отчёт об ошибке закрыт. Область поиска вычислена из расчёта трёх
часов ходьбы среднего двуногого независимого элемента по земле, которая
не является собственностью жителей села.]]
end,
next = '#поиск'
};
{
'Определение владельца механизма неверно с юридической точки зрения.',
function()
changeop('reputation', 5)
return [[-- Отчёт об ошибке принят.^^
Робот ненадолго задумался, потом дёрнулся и продолжил:
-- Требуются дополнительные данные. Трактовка какого закона неверна?]]
end,
next = '#закон'
}
};
{
'#закон',
{
'Закон о межевании сельхозугодий.',
[[
Робот открыл рот, потряс головой, а затем быстро парировал:^^
-- Межевание земель сельскохозяйственного назначения не относится к обсуждаемой теме.
Мы действуем как собственность Горского А.В. и не делим его участок между собой.
Ваш отчёт об ошибке будет закрыт.
]],
next = "#поиск"
};
{
[[Закон о находках.]],
function()
char.quests.car = 3
lifeon('car-retrieval-unit') --подъезжает робот-гад на машине, вылезает из машины, исчезает в доме. Можно забирать авто.
walk('abandoned')
changeop('reputation', 10)
return [[Робот задумался:^^
-- «Если лицо, имеющее право потребовать возврата найденной вещи, или место его пребывания неизвестны, нашедший вещь обязан заявить о находке в полицию или в орган местного самоуправления.»
Мы признаём, что были вынуждены упростить программу.
Благодарим вас за отчёт об ошибке.
Требуется немедленный отзыв элемента для обновления программы.]]
end,
};
{
[[Налог с доходов и кладов.]],
function()
return [[Робот задумался:^^
-- Вы считаете, что мы должны отсылать налог на найденные механизмы неустановленной ценности?^^
Вы не успели ничего ответить, как он продолжил:^^
-- Отчёт об ошибке закрыт.
Мы являемся собственностью Горского А.В. и не рассматриваем себя как физические лица.
Найденные механизмы не относятся к доходам Горского А.В.]]
end,
next = "#поиск"
};
{
[[Определение частной собственности. Если человек купил механизм, то механизм может быть потерянным, но не может быть бесхозным.]],
[[
Робот быстро парировал:^^
-- Определение частной собственности не противоречит программе.
Она занимается поиском ]]..fmt.em('бесхозных')..[[ механизмов, а не потерянных.
По определению купленные механизмы не могут быть бесхозными.
Ваш отчёт об ошибке будет закрыт.
]],
next = "#поиск"
}
};
}
}
obj {
nam = 'car';
disp = 'автомобиль';
dsc = 'Недалеко от вас припаркован ваш {автомобиль.}';
tak = function()
char.quests.car = 5
char.can_leave = true
p 'Вы вынимаете ключи из замка зажигания. Больше никто не угонит авто просто так.'
return true
end
}
obj {
nam = 'car-retrieval-unit';
timer = 0;
disp = false;
life = function(s)
s.timer = s.timer + 1
if s.timer == 2 then
return [[По дороге сюда едет машина. Похоже, это ваша машина.]]
end
if s.timer == 3 then
char.quests.car = 4
place('car', here())
lifeoff(s)
local out = [[Возле дома останавливается ваша машина.
Из неё выходит знакомый однорукий робот.]]
if char.gave_mech then
char.gave_mech = false
out = out .. [[Он подходит ]]
if char.knows_kef then
out = out .. [[к Кефу.]]
else
out = out .. [[ко второму роботу.]]
end
out = out .. [[^^
-- Механизм.^
-- Механизм передан.^
-- Механизм получен. Слава Добру.^^
Однорукий робот ковыляет ко входу в дом; когда он уже близко, из входа вылезает механический паук, берёт робота за шкирку и залезает обратно внутрь дома.]]
else
out = out .. [[Он ковыляет ко входу в дом; когда он уже близко, из входа вылезает механический паук, берёт робота за шкирку и залезает обратно внутрь дома.]]
end
return out
end
end;
}