Вырезатель, начало
This commit is contained in:
parent
749d8a58b0
commit
9196f060eb
|
@ -93,3 +93,45 @@ function mp.shortcut.g(options)
|
||||||
end
|
end
|
||||||
return options[1]
|
return options[1]
|
||||||
end
|
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 {
|
room {
|
||||||
nam = 'pantry';
|
nam = 'pantry';
|
||||||
dsc = function()
|
seen = false;
|
||||||
if visits() < 2 then
|
dsc = function(s)
|
||||||
|
if not s.seen then
|
||||||
-- if not visited() then
|
-- if not visited() then
|
||||||
pn "{#Me} {#g/летишь,летите} из Йоханнесбурга (Земля) в Петербург (планета Проксима Центавра b). Всего четыре часа полёта в эконом-классе. Как раз, чтобы дочитать увлекательную книгу о приключениях капитана Киркунова.^";
|
pn "{#Me} {#g/летишь,летите} из Йоханнесбурга (Земля) в Петербург (планета Проксима Центавра b). Всего четыре часа полёта в эконом-классе. Как раз, чтобы дочитать увлекательную книгу о приключениях капитана Киркунова.^";
|
||||||
p "Но, не {#g/успела,успел,успело,успели} {#me} закончить и первой главы, как откуда-то спереди донёсся душераздирающий крик. {#Me} {#g/увидела,увидел,увидело,увидели}, как впереди по проходу медленно шагает на чёрных щупальцах какая-то иссине-чёрная ";
|
p "Но, не {#g/успела,успел,успело,успели} {#me} закончить и первой главы, как откуда-то спереди донёсся душераздирающий крик. {#Me} {#g/увидела,увидел,увидело,увидели}, как впереди по проходу медленно шагает на чёрных щупальцах какая-то иссине-чёрная ";
|
||||||
|
@ -10,6 +11,89 @@ room {
|
||||||
pn "{#Me} {#g/бросилась,бросился,бросилось,бросились} бежать к корме судна и {#word/нырнула,нырнул,нырнуло,нырнули} в первую же комнату, чтобы найти хотя бы кого-то из экипажа.^";
|
pn "{#Me} {#g/бросилась,бросился,бросилось,бросились} бежать к корме судна и {#word/нырнула,нырнул,нырнуло,нырнули} в первую же комнату, чтобы найти хотя бы кого-то из экипажа.^";
|
||||||
p "Вдруг дверь за {#you/твор} закрылась и выставила защитные щиты.";
|
p "Вдруг дверь за {#you/твор} закрылась и выставила защитные щиты.";
|
||||||
pn "{#Me} {#g/заперта,заперт,заперто,заперты}.^^";
|
pn "{#Me} {#g/заперта,заперт,заперто,заперты}.^^";
|
||||||
|
s.seen = true;
|
||||||
end
|
end
|
||||||
|
p 'Это маленькая комнатка, мягко подсвеченная светильниками внутри стен. В углу стоит робот-уборщик. Единственная дверь на юге закрыта ярким голубым щитом.';
|
||||||
end;
|
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