2017-03-07 16:01:56 +02:00
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 ( )
2017-03-15 16:28:15 +02:00
walk ( ' robobutler-dlg ' )
return true
2017-03-07 16:01:56 +02:00
end ,
} ;
obj {
nam = ' mechanism ' ,
2017-03-15 16:28:15 +02:00
disp = ' механизм ' ,
talk = ' Механизму нечего вам ответить. ' ,
2017-03-07 16:01:56 +02:00
act = [ [ К а к а я - т о п а р а б о л и ч е с к а я а н т е н н а н а ш и р о к о й с т а л ь н о й т р у б е , в к о п а н н о й в з е м л ю .
В и д и м о , т р у б а с л у ж и т з а щ и т н ы м к о р п у с о м д л я д е т а л е й . ] ] ,
take = function ( )
pn ( ' Над ней работает робот, который заметит отсутствие механизма. Да и зачем вам эта антенна? ' ) ;
return false
end
}
}
}
dlg {
nam = ' robobutler-dlg ' ,
2017-03-15 16:28:15 +02:00
disp = ' Диалог с роботом ' ,
2017-03-07 16:01:56 +02:00
decor = function ( )
2017-03-15 16:28:15 +02:00
return _ ( ' robobutler ' ) . act
2017-03-07 16:01:56 +02:00
end ,
obj = { {
{
2017-03-15 16:28:15 +02:00
' #who ' ,
2017-03-07 16:01:56 +02:00
' Кто вы? ' ,
function ( )
2017-03-15 16:28:15 +02:00
disable ( ' #who ' )
2017-03-07 16:01:56 +02:00
char.knows_kef = true
2017-03-15 12:31:30 +02:00
return ' Я — программируемый секретарь К Е -2469Ф. Можно Кеф для краткости. '
2017-03-07 16:01:56 +02:00
end ,
} ;
{
2017-03-15 16:28:15 +02:00
' #good ' ,
2017-03-07 16:01:56 +02:00
' Что такое «добро»? ' ,
function ( )
2017-03-15 16:28:15 +02:00
disable ( ' #good ' )
2017-03-07 16:01:56 +02:00
char.asked_good = true
return [[Понятие, которое ассоциировано с действиями на пользу или на защиту общества.]]
end
} ;
{
cond = function ( )
2017-03-15 16:28:15 +02:00
return ( char.asked_good == true and char.knows_robots ~= true )
2017-03-07 16:01:56 +02:00
end ,
' Что означает надпись «добро»? Чем вы занимаетесь как группа? ' ,
function ( )
2017-03-15 16:28:15 +02:00
changeop ( ' reputation ' , 3 )
2017-03-07 16:01:56 +02:00
char.knows_robots = true
return [[Мы занимаемся добром. Мы действуем на пользу общества.]]
end
} ;
{
always = true ,
cond = function ( )
return ( char.knows_robots == true )
end ,
' Напомни ещё раз, что означает надпись «добро»? ' ,
[[Мы занимаемся добром. Мы действуем на пользу общества.]]
} ;
{
2017-03-15 16:28:15 +02:00
' #хозяин ' ,
2017-03-07 16:01:56 +02:00
' Где ваш хозяин? ' ,
2017-03-15 16:28:15 +02:00
function ( )
disable ( ' #хозяин ' )
return ' Отсутствует. Н о не волнуйтесь, мы поддерживаем е г о владения в идеальном порядке. '
end
2017-03-07 16:01:56 +02:00
} ;
{
2017-03-15 16:28:15 +02:00
[[Вы очень похожи на одного моего знакомого робота…]] ;
[ [
-- Вы очень похожи на одного моего знакомого робота. Такой высокий, без левого манипулятора. Катается на красном спортивном авто. По крайней мере, последние несколько часов. Вы не знаете, где он?^^
-- Запрос неточен. Подходит ЛО-1847З , но у него нет личной машины. Вы хотите найти ЛО-2837З ?^^
-- Да. Это срочно.^^
-- ЛО-1847З выполняет задание поиска редких металлов и механизмов. В чём выражается срочность?
] ] ;
next = " #поиск " ;
2017-03-07 16:01:56 +02:00
} ;
{
' Что это за механизм перед вами? ' ,
' TODO - нет ответа '
} ;
{
cond = function ( ) -- есть квест по починке комбайна
end ,
' У вас нет ремонтного бота?' ,
' TODO - нет ответа '
} ;
2017-03-15 16:28:15 +02:00
{
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 ( )
2017-03-17 11:21:26 +02:00
char.can_leave = true
2017-03-15 16:28:15 +02:00
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 ;
2017-03-07 16:01:56 +02:00
}