instead-unittest/main3.lua

72 lines
2.1 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.

--$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'