Вырезатель, начало
This commit is contained in:
parent
749d8a58b0
commit
9196f060eb
|
@ -93,3 +93,45 @@ function mp.shortcut.g(options)
|
|||
end
|
||||
return options[1]
|
||||
end
|
||||
|
||||
Verb {
|
||||
"#Shoot",
|
||||
'стрел/ять,вырез/ать',
|
||||
-- дань удобству - можно опустить предлог
|
||||
'~ {noun}/тв,scene : LetterShoot',
|
||||
'~ в|во {noun}/тв,scene : LetterShoot',
|
||||
'~ из {noun}/тв,scene : LetterShoot',
|
||||
'~ из {noun}/вн в|во {noun}/тв,scene : WrongShoot',
|
||||
}
|
||||
|
||||
function HasChar(str, skipc)
|
||||
if type(str) ~= 'string' then
|
||||
return false
|
||||
end
|
||||
return (string.find(str, skipc) ~= nil)
|
||||
end
|
||||
|
||||
function StrCut(str, skipc)
|
||||
if type(str) ~= 'string' then
|
||||
return str
|
||||
end
|
||||
return str:gsub(skipc, '')
|
||||
end
|
||||
|
||||
function mp:WrongShoot(w)
|
||||
return 'Правильная команда: стрелять (во что-то)';
|
||||
end
|
||||
|
||||
function mp:LetterShoot(w)
|
||||
if not pl:have('letterremover') then
|
||||
return 'Нечем.';
|
||||
end
|
||||
if (w:has 'animate') then
|
||||
return 'Вырезатель не работает на живых.';
|
||||
end
|
||||
local letter = _('letterremover').letter;
|
||||
if not HasChar(w.canonical, letter) then
|
||||
return 'Вырезатель настроен на букву '..letter..', которой нет в слове «'..w.canonical..'».';
|
||||
end
|
||||
return 'Вы стреляете в '.. w.canonical ..',который вырезается в '..StrCut(w.canonical, letter);
|
||||
end
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
room {
|
||||
nam = 'pantry';
|
||||
dsc = function()
|
||||
if visits() < 2 then
|
||||
seen = false;
|
||||
dsc = function(s)
|
||||
if not s.seen then
|
||||
-- if not visited() then
|
||||
pn "{#Me} {#g/летишь,летите} из Йоханнесбурга (Земля) в Петербург (планета Проксима Центавра b). Всего четыре часа полёта в эконом-классе. Как раз, чтобы дочитать увлекательную книгу о приключениях капитана Киркунова.^";
|
||||
p "Но, не {#g/успела,успел,успело,успели} {#me} закончить и первой главы, как откуда-то спереди донёсся душераздирающий крик. {#Me} {#g/увидела,увидел,увидело,увидели}, как впереди по проходу медленно шагает на чёрных щупальцах какая-то иссине-чёрная ";
|
||||
|
@ -10,6 +11,89 @@ room {
|
|||
pn "{#Me} {#g/бросилась,бросился,бросилось,бросились} бежать к корме судна и {#word/нырнула,нырнул,нырнуло,нырнули} в первую же комнату, чтобы найти хотя бы кого-то из экипажа.^";
|
||||
p "Вдруг дверь за {#you/твор} закрылась и выставила защитные щиты.";
|
||||
pn "{#Me} {#g/заперта,заперт,заперто,заперты}.^^";
|
||||
s.seen = true;
|
||||
end
|
||||
p 'Это маленькая комнатка, мягко подсвеченная светильниками внутри стен. В углу стоит робот-уборщик. Единственная дверь на юге закрыта ярким голубым щитом.';
|
||||
end;
|
||||
s_to = 'Дверь закрыта и заблокирована прочным щитом.';
|
||||
obj = {
|
||||
'shield',
|
||||
'robot',
|
||||
'letterremover'
|
||||
};
|
||||
}
|
||||
|
||||
obj {
|
||||
-"щит/мр";
|
||||
nam = 'shield';
|
||||
canonical = 'щит';
|
||||
dsc = 'Переливчатый щит из неизвестного {#you/дт} материала. Его нельзя сломать и он не пропускает звуков.';
|
||||
before_Open = 'На щите нет дверной ручки.';
|
||||
before_Attack = 'Не пробивается.';
|
||||
}:attr 'scenery,static'
|
||||
|
||||
obj {
|
||||
-"вырезатель,убиратель,пистолет|оружие";
|
||||
nam = 'letterremover';
|
||||
letter = "Р";
|
||||
dsc = function(s)
|
||||
return '«Вырезатель ЕДАКТО-12» выглядит как древний пистолет с маленьким дисплеем и кнопками. На дисплее горит буква «'..s.letter..'». Из него можно СТРЕЛЯТЬ во что-то.';
|
||||
end;
|
||||
inv = function(s)
|
||||
return s.letter..'-вырезатель'
|
||||
end;
|
||||
before_Shoot = 'Не {#plural/размахивай,размахивайте} этой штукой! Надо стрелять во что-то определённое.';
|
||||
}: dict {
|
||||
['вырезатель/рд'] = 'вырезателя';
|
||||
['вырезатель/дт'] = 'вырезателю';
|
||||
['вырезатель/вн'] = 'вырезатель';
|
||||
['вырезатель/тв'] = 'вырезателем';
|
||||
['вырезатель/пр'] = 'вырезателе';
|
||||
}: attr 'concealed'
|
||||
|
||||
obj {
|
||||
-"робот,уборщик";
|
||||
nam = 'robot';
|
||||
alive = false;
|
||||
dsc = 'У стенки стоит выключенный робот-уборщик. У него два длинных манипулятора-руки и широкие стальные гусеницы.';
|
||||
before_SwitchOn = function(s)
|
||||
if not (s.has('battery')) then
|
||||
p "Над кнопкой включения загорается сообщение: нет батареи.";
|
||||
return false;
|
||||
end
|
||||
if not (s.has('hand')) then
|
||||
p "Робот оживляется, но тут же потухает. Новое сообщение: неисправность руки.";
|
||||
return false;
|
||||
end
|
||||
robot.alive = true;
|
||||
return "Робот включается и начинает тихо бурчать. Наверное, оценивает чистоту чулана.";
|
||||
end;
|
||||
obj = {
|
||||
'robot_hand',
|
||||
'button'
|
||||
}
|
||||
}: attr 'essential,scenery,switchable'
|
||||
|
||||
obj {
|
||||
-"батарея,батарейка";
|
||||
nam = 'battery';
|
||||
dsc = 'Сменная батарея для бытовой электроники типа «крона». Одному пылесосу её хватает на тридцать лет.';
|
||||
}: attr 'essential,concealed,switchable'
|
||||
|
||||
obj {
|
||||
-"кнопка|выключатель";
|
||||
nam = 'button';
|
||||
dsc = 'Кнопка включения робота. Ничего примечательного.';
|
||||
}: attr 'essential,scenery,switchable'
|
||||
|
||||
obj {
|
||||
-"манипулятор";
|
||||
nam = 'robot_hand';
|
||||
dsc = 'Манипулятор робота типа «рука». Имеет пальцы. Может хватать. Может сгибаться. Много чего может.';
|
||||
}: attr 'essential,scenery'
|
||||
|
||||
obj {
|
||||
-"рука";
|
||||
nam = 'hand';
|
||||
dsc = 'Пластиковая рука, как будто от манекена. Похоже, она левая.';
|
||||
}: attr 'essential'
|
||||
|
|
Loading…
Reference in a new issue