From 052aada2ff3ecd7a865f3c54c65d0ea9fa09e633 Mon Sep 17 00:00:00 2001 From: Alexander Yakovlev Date: Mon, 21 Dec 2020 18:28:54 +0700 Subject: [PATCH] =?UTF-8?q?=D0=91=D1=83=D0=BA=D0=B2=D1=8B=20=D0=B2=D1=8B?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_parser.lua | 169 +++++++++++++++++++++++++++++++++++++++++++++- rooms/pantry.lua | 4 +- 2 files changed, 170 insertions(+), 3 deletions(-) diff --git a/custom_parser.lua b/custom_parser.lua index 0c1fefd..78d02f3 100644 --- a/custom_parser.lua +++ b/custom_parser.lua @@ -133,5 +133,172 @@ function mp:LetterShoot(w) if not HasChar(w.canonical, letter) then return 'Вырезатель настроен на букву '..letter..', которой нет в слове «'..w.canonical..'».'; end - return 'Вы стреляете в '.. w.canonical ..',который вырезается в '..StrCut(w.canonical, letter); + local newCanonical = StrCut(w.canonical, letter); + local newTarget = lookup(newCanonical); + if newTarget then + w:remove(); + put(newTarget, here()); + return 'Вы стреляете в '.. w.canonical ..',который вырезается в '..newCanonical; + end + return 'Вы стреляете в '.. w.canonical ..' и он мигает в слабом тумане букв «'..newCanonical..'», но затем возвращается в прежнее состояние.'; +end + +Verb { + "#Set", + 'установ/ить,выстав/ить', + '~ вырезатель на А: LetterSetA', + '~ вырезатель на а: LetterSetA', + '~ а на вырезателе: LetterSetA', + '~ А на вырезателе: LetterSetA', + '~ А: LetterSet1', + '~ Б: LetterSet2', + '~ В: LetterSet3', + '~ Г: LetterSet4', + '~ Д: LetterSet5', + '~ Е: LetterSet6', + '~ Ё: LetterSet7', + '~ Ж: LetterSet8', + '~ З: LetterSet9', + '~ И: LetterSet10', + '~ Й: LetterSet11', + '~ К: LetterSet12', + '~ Л: LetterSet13', + '~ М: LetterSet14', + '~ Н: LetterSet15', + '~ О: LetterSet16', + '~ П: LetterSet17', + '~ Р: LetterSet18', + '~ С: LetterSet19', + '~ Т: LetterSet20', + '~ У: LetterSet21', + '~ Ф: LetterSet22', + '~ Х: LetterSet23', + '~ Ц: LetterSet24', + '~ Ч: LetterSet25', + '~ Ш: LetterSet26', + '~ Щ: LetterSet27', + '~ Ъ: LetterSet28', + '~ Ы: LetterSet29', + '~ Ь: LetterSet30', + '~ Э: LetterSet31', + '~ Ю: LetterSet32', + '~ Я: LetterSet33', +} + +function mp:LetterSet(w) + if not pl:have('letterremover') then + return 'Нечем.'; + end + if type(w) ~= 'string' then + return 'Вырезатель можно установить только на букву русского алфавита.'; + end + --if string.len(w) > 1 then + -- return 'Вырезатель можно установить только на одну букву.'; + --end + local letter = _('letterremover').letter; + if letter ~= w then + _('letterremover').letter = w + return 'Вырезатель будет вынимать букву '..w..'.'; + end + return 'Вырезатель уже работает на частоте буквы '..w; +end + +function mp:LetterSet1() + return mp:LetterSet('А') +end +function mp:LetterSet2() + return mp:LetterSet('Б') +end +function mp:LetterSet3() + return mp:LetterSet('В') +end +function mp:LetterSet4() + return mp:LetterSet('Г') +end +function mp:LetterSet5() + return mp:LetterSet('Д') +end +function mp:LetterSet6() + return mp:LetterSet('Е') +end +function mp:LetterSet7() + return mp:LetterSet('Ё') +end +function mp:LetterSet8() + return mp:LetterSet('Ж') +end +function mp:LetterSet9() + return mp:LetterSet('З') +end +function mp:LetterSet10() + return mp:LetterSet('И') +end +function mp:LetterSet11() + return mp:LetterSet('Й') +end +function mp:LetterSet12() + return mp:LetterSet('К') +end +function mp:LetterSet13() + return mp:LetterSet('Л') +end +function mp:LetterSet14() + return mp:LetterSet('М') +end +function mp:LetterSet15() + return mp:LetterSet('Н') +end +function mp:LetterSet16() + return mp:LetterSet('О') +end +function mp:LetterSet17() + return mp:LetterSet('П') +end +function mp:LetterSet18() + return mp:LetterSet('Р') +end +function mp:LetterSet19() + return mp:LetterSet('С') +end +function mp:LetterSet20() + return mp:LetterSet('Т') +end +function mp:LetterSet21() + return mp:LetterSet('У') +end +function mp:LetterSet22() + return mp:LetterSet('Ф') +end +function mp:LetterSet23() + return mp:LetterSet('Х') +end +function mp:LetterSet24() + return mp:LetterSet('Ц') +end +function mp:LetterSet25() + return mp:LetterSet('Ч') +end +function mp:LetterSet26() + return mp:LetterSet('Ш') +end +function mp:LetterSet27() + return mp:LetterSet('Щ') +end +function mp:LetterSet28() + return mp:LetterSet('Ъ') +end +function mp:LetterSet29() + return mp:LetterSet('Ы') +end +function mp:LetterSet30() + return mp:LetterSet('Ь') +end +function mp:LetterSet31() + return mp:LetterSet('Э') +end +function mp:LetterSet32() + return mp:LetterSet('Ю') +end +function mp:LetterSet33() + return mp:LetterSet('Я') end diff --git a/rooms/pantry.lua b/rooms/pantry.lua index 5bec18d..b057219 100644 --- a/rooms/pantry.lua +++ b/rooms/pantry.lua @@ -37,7 +37,7 @@ obj { nam = 'letterremover'; letter = "Р"; dsc = function(s) - return '«Вырезатель ЕДАКТО-12» выглядит как древний пистолет с маленьким дисплеем и кнопками. На дисплее горит буква «'..s.letter..'». Из него можно СТРЕЛЯТЬ во что-то.'; + return '«Вырезатель ЕДАКТО-12» выглядит как древний пистолет с маленьким дисплеем и кнопками. На дисплее горит буква «'..s.letter..'». Из него можно СТРЕЛЯТЬ во что-то. Чтобы выставить букву А, напишите ВЫСТАВИТЬ А.'; end; inv = function(s) return s.letter..'-вырезатель' @@ -49,7 +49,7 @@ obj { ['вырезатель/вн'] = 'вырезатель'; ['вырезатель/тв'] = 'вырезателем'; ['вырезатель/пр'] = 'вырезателе'; -}: attr 'concealed' +}: attr 'essential' obj { -"робот,уборщик";