2021-01-12 00:24:20 +02:00
|
|
|
|
--$Name: Тест открывания$
|
|
|
|
|
--$Version: 1.0$
|
|
|
|
|
--$Author:Александр Яковлев$
|
|
|
|
|
|
|
|
|
|
require 'parser/mp-ru'
|
|
|
|
|
mp.undo = 1
|
|
|
|
|
|
|
|
|
|
room {
|
|
|
|
|
nam = 'main';
|
|
|
|
|
decor = [[
|
2021-01-12 00:42:41 +02:00
|
|
|
|
Добро пожаловать в тестовую комнату.^
|
|
|
|
|
Попробуйте открыть или отпереть замок.
|
2021-01-12 00:24:20 +02:00
|
|
|
|
]];
|
|
|
|
|
title = 'Тестовая комната';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obj {
|
|
|
|
|
-"код/мр|бумажка/жр";
|
|
|
|
|
nam = 'code';
|
|
|
|
|
description = 'Листок бумаги с кодом: 1234.';
|
|
|
|
|
found_in = 'main';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
obj {
|
|
|
|
|
-"отмычка/жр";
|
|
|
|
|
nam = 'pin';
|
|
|
|
|
description = 'Отмычка для слишком умных замков. Ведёт себя как ключ.';
|
|
|
|
|
found_in = 'main';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
obj {
|
|
|
|
|
-"карандаш/мр";
|
|
|
|
|
nam = 'pencil';
|
|
|
|
|
description = 'Карандаш, которым нельзя открывать замки.';
|
|
|
|
|
found_in = 'main';
|
|
|
|
|
}
|
2021-01-14 08:57:59 +02:00
|
|
|
|
-- действие "писать карандашом на бумажке" не входит в тестируемые
|
|
|
|
|
-- и требует нового глагола, но оно было бы в реальной игре
|
2021-01-12 00:24:20 +02:00
|
|
|
|
|
|
|
|
|
obj {
|
|
|
|
|
-"замок/мр";
|
|
|
|
|
nam = 'lock';
|
|
|
|
|
found_in = 'main';
|
|
|
|
|
description = 'Надёжный умный замок. Его можно открыть правильным цифровым кодом или ключом.';
|
|
|
|
|
-- замок можно открыть двумя вещами, поэтому with_key не уместен
|
|
|
|
|
-- вместо этого надо перехватывать before_Unlock
|
|
|
|
|
-- кроме того, его хочется сразу открывать, потому что зачем ещё мы его отпираем
|
2021-01-14 08:57:59 +02:00
|
|
|
|
before_Lock = 'Замок полезнее открытым.';
|
2021-01-12 00:24:20 +02:00
|
|
|
|
before_Unlock = function(self, what)
|
|
|
|
|
if (what == nil) then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
if self:has('open') then
|
|
|
|
|
return 'Но он уже открыт.';
|
|
|
|
|
end
|
|
|
|
|
if (what ^ 'code') then
|
|
|
|
|
pn 'Вы читаете бумажку и вводите код.'
|
|
|
|
|
self:attr('~locked');
|
|
|
|
|
self:attr('open');
|
|
|
|
|
self:attr('~closed');
|
|
|
|
|
return false;
|
|
|
|
|
end
|
|
|
|
|
if (what ^ 'pin') then
|
|
|
|
|
pn 'Вы взламываете замок отмычкой.';
|
|
|
|
|
self:attr('~locked');
|
|
|
|
|
self:attr('open');
|
|
|
|
|
self:attr('~closed');
|
|
|
|
|
return false;
|
|
|
|
|
end
|
|
|
|
|
return 'Нет, этим замок не отпереть.';
|
|
|
|
|
end;
|
|
|
|
|
}:attr 'locked,openable,closed'
|