mirror of
https://gitlab.com/Oreolek/duel.git
synced 2024-06-23 18:40:54 +03:00
Законченный основной квест
This commit is contained in:
parent
134181ed73
commit
facb0a28f3
|
@ -116,6 +116,10 @@ dlg {
|
|||
function() return 'Где '..pronoun_1()..'?'; end,
|
||||
'-- Добро посаловать в Зжсестиану. Деревня Малогхо раийона, население дефхятнадтцат\' человек.'
|
||||
};
|
||||
{
|
||||
'Кто твой хозяин?',
|
||||
'Этот элемент — собственность Горского А.В.'
|
||||
};
|
||||
{
|
||||
function() return fmt.em('Как проехать до Жестианы? '..plural('У меня', 'У нас')..' в машине навигатор отключился.'); end,
|
||||
function()
|
||||
|
|
|
@ -37,11 +37,14 @@ room {
|
|||
Его глаза очень маленькие для широкого лица; скорее всего, их вставили из какой-нибудь детской куклы.
|
||||
]],
|
||||
talk = function()
|
||||
return walk('robobutler-dlg')
|
||||
walk('robobutler-dlg')
|
||||
return true
|
||||
end,
|
||||
};
|
||||
obj {
|
||||
nam = 'mechanism',
|
||||
disp = 'механизм',
|
||||
talk = 'Механизму нечего вам ответить.',
|
||||
act = [[Какая-то параболическая антенна на широкой стальной трубе, вкопанной в землю.
|
||||
Видимо, труба служит защитным корпусом для деталей.]],
|
||||
take = function()
|
||||
|
@ -53,34 +56,36 @@ room {
|
|||
}
|
||||
dlg {
|
||||
nam = 'robobutler-dlg',
|
||||
disp = false,
|
||||
disp = 'Диалог с роботом',
|
||||
decor = function()
|
||||
return deref('robobutler').act
|
||||
return _('robobutler').act
|
||||
end,
|
||||
obj = {{
|
||||
{
|
||||
always = true,
|
||||
'#who',
|
||||
'Кто вы?',
|
||||
function()
|
||||
disable('#who')
|
||||
char.knows_kef = true
|
||||
return 'Я — программируемый секретарь КЕ-2469Ф. Можно Кеф для краткости.'
|
||||
end,
|
||||
};
|
||||
{
|
||||
always = true,
|
||||
'#good',
|
||||
'Что такое «добро»?',
|
||||
function()
|
||||
disable('#good')
|
||||
char.asked_good = true
|
||||
return [[Понятие, которое ассоциировано с действиями на пользу или на защиту общества.]]
|
||||
end
|
||||
};
|
||||
{
|
||||
cond = function()
|
||||
return (char.asked_good == true)
|
||||
return (char.asked_good == true and char.knows_robots ~= true)
|
||||
end,
|
||||
'Что означает надпись «добро»? Чем вы занимаетесь как группа?',
|
||||
function()
|
||||
changeop('reputation', 1)
|
||||
changeop('reputation', 3)
|
||||
char.knows_robots = true
|
||||
return [[Мы занимаемся добром. Мы действуем на пользу общества.]]
|
||||
end
|
||||
|
@ -94,14 +99,22 @@ dlg {
|
|||
[[Мы занимаемся добром. Мы действуем на пользу общества.]]
|
||||
};
|
||||
{
|
||||
always = true,
|
||||
'#хозяин',
|
||||
'Где ваш хозяин?',
|
||||
'Отсутствует. Но не волнуйтесь, мы поддерживаем его владения в идеальном порядке.'
|
||||
function()
|
||||
disable('#хозяин')
|
||||
return 'Отсутствует. Но не волнуйтесь, мы поддерживаем его владения в идеальном порядке.'
|
||||
end
|
||||
};
|
||||
-- TODO TODO TODO TODO TODO TODO
|
||||
{
|
||||
'Один из ваших угнал машину. Где он? И где машина?',
|
||||
'TODO - нет ответа'
|
||||
[[Вы очень похожи на одного моего знакомого робота…]];
|
||||
[[
|
||||
-- Вы очень похожи на одного моего знакомого робота. Такой высокий, без левого манипулятора. Катается на красном спортивном авто. По крайней мере, последние несколько часов. Вы не знаете, где он?^^
|
||||
-- Запрос неточен. Подходит ЛО-1847З, но у него нет личной машины. Вы хотите найти ЛО-2837З?^^
|
||||
-- Да. Это срочно.^^
|
||||
-- ЛО-1847З выполняет задание поиска редких металлов и механизмов. В чём выражается срочность?
|
||||
]];
|
||||
next = "#поиск";
|
||||
};
|
||||
{
|
||||
'Что это за механизм перед вами?',
|
||||
|
@ -113,5 +126,186 @@ dlg {
|
|||
'У вас нет ремонтного бота?',
|
||||
'TODO - нет ответа'
|
||||
};
|
||||
}}
|
||||
{
|
||||
always = true,
|
||||
'Спасибо. Удачи вам с этим… добром.',
|
||||
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 (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()
|
||||
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()
|
||||
enable('end-game')
|
||||
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
|
||||
place('car', here())
|
||||
lifeoff(s)
|
||||
return [[Возле дома останавливается ваша машина.
|
||||
Из неё выходит знакомый однорукий робот.
|
||||
Он ковыляет ко входу в дом; когда он уже близко, из входа вылезает механический паук, берёт робота за шкирку и залезает обратно внутрь дома.]]
|
||||
end
|
||||
end;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,13 @@ init = function ()
|
|||
walk('inventory')
|
||||
end
|
||||
}, me())
|
||||
place(menu {
|
||||
nam = "end-game",
|
||||
disp = fmt.b("Уехать"),
|
||||
menu = function()
|
||||
walk('ending')
|
||||
end
|
||||
}:disable(), me())
|
||||
char.act = nil
|
||||
place( proxy_menu {
|
||||
disp = 'ОСМОТРЕТЬ';
|
||||
|
@ -171,5 +178,5 @@ changeop = function(name, delta)
|
|||
rawset(char, name, fairadd(rawget(char, name), delta))
|
||||
end
|
||||
fairadd = function(value, add)
|
||||
return Math.floor(value + (100-value)*(add/100))
|
||||
return math.floor(value + (100-value)*(add/100))
|
||||
end
|
||||
|
|
21
ui.lua
21
ui.lua
|
@ -140,3 +140,24 @@ room {
|
|||
end,
|
||||
obj = {'back'}
|
||||
}
|
||||
|
||||
room {
|
||||
nam = 'ending',
|
||||
disp = 'Уехать из Жестианы',
|
||||
hideinv = true,
|
||||
decor = 'Вы уверены, что хотите немедленно уехать из Жестианы?^^'..fmt.c('{yes|Да}'),
|
||||
obj = {
|
||||
'back',
|
||||
obj {
|
||||
nam = 'yes',
|
||||
act = function() walk('theend') end,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
room {
|
||||
nam = 'theend',
|
||||
disp = 'КОНЕЦ',
|
||||
hideinv = true,
|
||||
decor = fmt.c(fmt.b('КОНЕЦ'))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue