72 lines
2.1 KiB
Lua
72 lines
2.1 KiB
Lua
--$Name: Тест открывания$
|
||
--$Version: 1.0$
|
||
--$Author:Александр Яковлев$
|
||
|
||
require 'parser/mp-ru'
|
||
mp.undo = 1
|
||
|
||
room {
|
||
nam = 'main';
|
||
decor = [[
|
||
Добро пожаловать в тестовую комнату.^
|
||
Попробуйте открыть или отпереть замок.
|
||
]];
|
||
title = 'Тестовая комната';
|
||
}
|
||
|
||
|
||
obj {
|
||
-"код/мр|бумажка/жр";
|
||
nam = 'code';
|
||
description = 'Листок бумаги с кодом: 1234.';
|
||
found_in = 'main';
|
||
}
|
||
|
||
obj {
|
||
-"отмычка/жр";
|
||
nam = 'pin';
|
||
description = 'Отмычка для слишком умных замков. Ведёт себя как ключ.';
|
||
found_in = 'main';
|
||
}
|
||
|
||
obj {
|
||
-"карандаш/мр";
|
||
nam = 'pencil';
|
||
description = 'Карандаш, которым нельзя открывать замки.';
|
||
found_in = 'main';
|
||
}
|
||
|
||
|
||
obj {
|
||
-"замок/мр";
|
||
nam = 'lock';
|
||
found_in = 'main';
|
||
description = 'Надёжный умный замок. Его можно открыть правильным цифровым кодом или ключом.';
|
||
-- замок можно открыть двумя вещами, поэтому with_key не уместен
|
||
-- вместо этого надо перехватывать before_Unlock
|
||
-- кроме того, его хочется сразу открывать, потому что зачем ещё мы его отпираем
|
||
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'
|