diff --git a/room15.lua b/room15.lua index 4bf0962..d0f823f 100644 --- a/room15.lua +++ b/room15.lua @@ -94,7 +94,12 @@ room { return "Проходит немного времени. Кажется, рисунок на обоях слегка изменился. "; end; end; - after_Dig = "Тебе слишком дорог твой маникюр, чтобы делать это руками. "; + after_Dig = function(s, w) + if w == nil then + return "Тебе слишком дорог твой маникюр, чтобы делать это руками. "; + end; + return false; + end; after_Jump = "Пол жалобно поскрипывает после твоего приземления. "; after_Think = function(s) if s.awake and not s.complete then @@ -104,9 +109,10 @@ room { end; end; before_Sing = function(s) - if not s.awake and _'room15_tv':attr('on') then + if not s.awake and _'room15_tv':has('on') then pr 'Твой голос сливается с голосами из телевизора и оттого ужасающее пение становится еще более жутким. '; end; + return false; end; after_Sleep = function(s) if pl:where()^'room15_bed' then @@ -245,7 +251,7 @@ obj { if _'room15_bedroom'.awake then pr 'Тетушке не понравится, если ты съешь занавески. '; else - pr 'Жуется, конечно приятно, но съесть целую занавеску? Ну уж нет. '; + pr 'Жуется, конечно, приятно, но съесть целую занавеску? Ну уж нет. '; end; end; before_Touch = 'Плотная ткань немного жесткая, но довольно приятная на ощупь. '; @@ -350,7 +356,7 @@ obj { title = 'В кровати'; dsc = 'У стены стоит большая кровать. '; description = function(s) - pr 'Большая кровать, застеленная чистым бельем. '; + pr 'Большая кровать, застеленная покрывалом. '; mp:content(s); end; inside_dsc = 'Ты лежишь на большой кровати. '; @@ -376,9 +382,9 @@ obj { end; return false; end; - before_Smell = 'Пахнет чистым, свежевыглаженным постельным бельем. '; + before_Smell = 'Пахнет тканью, деревом и пылью. '; before_Taste = 'Ты аккуратно кусаешь угол кровати. На вкус как дерево. '; - before_Eat = 'Долго рассматривая кровать, ты так и не решила, с чего начать ее есть . '; + before_Eat = 'Долго рассматривая кровать, ты так и не решила, с чего начать ее есть. '; ["before_Touch,Rub"] = function(s) if _'room15_bedroom'.awake and not _'room15_bedroom'.complete then pr 'Постель мягкая и приятная на ощупь. Так и тянет {$fmt em|спать}. '; @@ -392,45 +398,25 @@ obj { before_Blow = 'Ты подула на кровать, но ничего не изменилось. '; before_Take = 'Кровать слишком тяжелая. '; obj = { - 'room15_sheets' + 'room15_bedspread' }; }: attr('enterable,supporter,static,luminous'); obj { - -"постельное белье,белье на кровати,белье|простыня"; - nam = 'room15_sheets'; - description = 'Чистая простыня лежит на кровати. '; - before_Take = function(s) - if _'room15_bedroom'.awake then - return 'Что ты задумала?'; - else - return 'Простыня странным образом не стягивается с кровати, выскальзывая из твоих рук. '; - end; - end; - before_Smell = 'Пахнет чистой постелью. '; - before_Tear = function(s) - if s.awake then - pr 'Тётя Агата будет очень недовольна, если ты это сделаешь. '; - else - pr 'У тебя не получается оторвать простыню от кровати. Странно. '; - end; - end; - before_Tie = function(s, w) - if s.awake then - pr 'Ты не понимаешь, для чего тебе это. '; - elseif w == nil then - pr 'У тебя не получается оторвать простыню от кровати. Странно. '; - else - pr 'Ты не понимаешь, как это сделать. '; - end; - end; - ["before_Taste,Eat"] = 'Ты отгрызаешь уголок простыни, надеясь, что тётушка не заметит этого. Ткань приятно жуется и почти безвкусная. '; - ["before_Rub,Touch"] = 'Простыня шершавая, но очень приятные на ощупь. '; - before_Cut = 'Твои руки недостаточно острые. '; - before_Attack = 'Ты со всей силы бьешь простыню. Она мягкая, все стерпит. '; + -"покрывало"; + nam = 'room15_bedspread'; + description = 'Мягкое бархатное покрывало лежит на кровати. '; + before_Take = 'Что ты задумала?'; + before_Smell = 'Пахнет тканью и пылью. '; + before_Tear = 'Тётя Агата будет очень недовольна, если ты это сделаешь. '; + before_Tie = 'Ты не понимаешь, для чего тебе это. '; + ["before_Taste,Eat"] = 'Ты пытаешься отгрызть уголок покрывала, но у тебя ничего не получается. Тебе остается лишь надеяться, что тетушка не заметит погрызенное покрывало. '; + ["before_Rub,Touch"] = 'Покрывало гладкое и мягкое. '; + before_Cut = 'Ты не думаешь, что это хорошая идея. '; + before_Attack = 'Ты со всей силы бьешь покрывало. Оно мягкое, все стерпит. '; before_Blow = 'Ты дуешь на ткань. '; - ["before_Talk,Tell,Answer,Ask,AskFor,AskTo"] = "Простыне очень интересно, правда. Продолжай. "; - before_Kiss = "Простыня никак не реагируют. "; + ["before_Talk,Tell,Answer,Ask,AskFor,AskTo"] = "Покрывалу очень интересно, правда. Продолжай. "; + before_Kiss = "Покрывалу, должно быть, очень приятно. Но оно никак не реагирует. "; }:attr('concealed'); obj { @@ -486,6 +472,14 @@ obj { return 'Ты опасаешься разозлить паука и решаешь этого не делать. '; end; end; + life_Show = function(s, w) + print('FUG'); + if _'room15_bedroom'.awake then + return 'Паучок старательно делает вид, что ему интересно. '; + else + return 'Паук недовольно шипит на ' .. w:noun('вн') .. '.'; + end; + end; before_Kiss = 'Чего?!'; before_Listen = function(s) if _'room15_bedroom'.awake then @@ -494,7 +488,7 @@ obj { return 'Паук шипит, щелкает пастью и скрежещет своими лапами по полу. '; end; end; -}: attr('static'): disable(); +}: attr('static,animate'): disable(); obj { -"стол,столик|столешница"; @@ -564,7 +558,14 @@ obj { before_Take = 'Лампе и здесь хорошо. '; before_Smell = 'Лампа ничем не пахнет. Странно. '; ["before_Taste,Eat"] = 'Ты долго раздумываешь над вкусовыми качествами пластиковых абажуров и стеклянных ламп, и в итоге решаешь не пробовать ни то ни другое. '; - ["before_Push,Pull,Turn,Rub,Touch,Attack,Tear,Tie,Cut"] = 'Да сколько можно все вокруг ломать? '; + before_Touch = function(s) + if s:has('light') then + pr 'Лампа слишком горячая!'; + else + pr 'Светильник теплый на ощупь. ' + end; + end; + ["before_Push,Pull,Turn,Rub,Attack,Tear,Tie,Cut"] = 'Да сколько можно все вокруг ломать? '; before_Blow = 'Ты дуешь на светильник. '; ["before_Talk,Tell,Answer,Ask,AskFor,AskTo"] = "Ваза остается безучастной к твоим мольбам. "; before_Kiss = "Может, лучше не надо?"; @@ -649,52 +650,69 @@ obj { }: attr('container,transparent,open,static'); obj { - -"простыни"; + -"простыня,простынь"; nam = 'room15_linen'; - description = 'Несколько комплектов чистых простыней. Они кажутся достаточно прочными, чтобы выдержать твой вес. '; + description = 'Чистая простыня. Она кажется достаточно прочной, чтобы выдержать твой вес. '; before_Take = function(s) if _'room15_book':disabled() then _'room15_book':enable(); - pr 'Под простынями лежит книга!'; + pr 'Под простынёй лежит книга!'; end; return false; end; + tearApart = function(s) + remove('room15_linen', where('room15_linen')); + mp.score=mp.score+1 + take('room15_shreds'); + pr 'Ты разрываешь простыню, теперь у тебя есть обрывки ткани. '; + if _'room15_book':disabled() then + _'room15_book':enable(); + pr 'Под простынёй лежит книга!'; + end; + end; before_Smell = 'Пахнет чистой постелью. '; before_Tear = function(s) if s.awake then pr 'Тётя Агата будет очень недовольна, если ты это сделаешь. '; else - remove('room15_linen', where('room15_linen')); - mp.score=mp.score+1 - take('room15_shreds'); - pr 'Ты разрываешь простыни, теперь у тебя есть обрывки ткани. '; - if _'room15_book':disabled() then - _'room15_book':enable(); - pr 'Под простынями лежит книга!'; - end; + s:tearApart(); end; end; before_Tie = function(s, w) if s.awake then pr 'Ты не понимаешь, для чего тебе это. '; elseif w == nil or w^'room15_window' then - pr 'Так ничего не получится. Они слишком большие. '; + pr 'Так ничего не получится. Она слишком короткая и чересчур толстая. '; + elseif w^'statuetka' then + pr 'Статуэтка слишком далеко. ' else pr 'Ты не понимаешь, для чего тебе это. '; end; end; - ["before_Taste,Eat"] = 'Ты отгрызаешь уголок одной из простыней, надеясь, что тётушка не заметит этого. Ткань приятно жуется и почти безвкусная. '; - ["before_Rub,Touch"] = 'Простыни шершавые, но очень приятные на ощупь. '; - before_Cut = 'Твои руки недостаточно острые. '; - before_Attack = 'Ты со всей силы бьешь простыни. Они мягкие, все стерпят. '; + ["before_Taste,Eat"] = 'Ты отгрызаешь уголок простыни, надеясь, что тётушка не заметит этого. Ткань приятно жуется и почти безвкусная. '; + ["before_Rub,Touch"] = 'Простыня шершавая, но очень приятная на ощупь. '; + before_Cut = function(s, w) + if s.awake then + pr 'Тётя Агата будет очень недовольна, если ты это сделаешь. '; + else + if w == nil then + return 'Твои руки недостаточно острые. '; + elseif w^'dagger' then + s:tearApart(); + else + return 'Простыня не режется. Возможно стоит резать ее чем-то другим. '; + end; + end; + end; + before_Attack = 'Ты со всей силы бьешь простыню. Она мягкая, все стерпит. '; before_Blow = 'Ты дуешь на ткань. '; - ["before_Talk,Tell,Answer,Ask,AskFor,AskTo"] = "Простыням очень интересно, правда. Продолжай. "; - before_Kiss = "Простыни никак не реагируют. "; + ["before_Talk,Tell,Answer,Ask,AskFor,AskTo"] = "Простыне очень интересно, правда. Продолжай. "; + before_Kiss = "Простыня никак не реагируют. "; }; obj { - -"обрывки простыней,обрывки простыни,обрывки ткани,обрывки|простыни|ткань"; + -"обрывки простыни,обрывки ткани,обрывки|простыня|ткань"; nam = 'room15_shreds'; description = 'Прочные и длинные полосы из простыней. '; before_Tie = function(s, w) @@ -721,7 +739,7 @@ obj { } obj { - -"веревка|простыни|обрывки простыней,обрывки простыни,обрывки ткани,обрывки|ткань"; + -"веревка|простыня|обрывки простыни,обрывки ткани,обрывки|ткань"; nam = 'room15_rope'; description = 'Веревка связанная из обрывков простыней. Достаточно прочная, чтобы выдержать тебя. '; before_Tie = function(s, o) @@ -808,7 +826,7 @@ obj { pr(s:vision()); end; end; - after_Take = 'Он слишком тяжелый. '; + ["before_Take,Pull,Push"] = 'Он слишком тяжелый. '; after_SwitchOn = function(s) s:attr('luminous'); if s.awake then @@ -836,7 +854,12 @@ obj { if _'room15_bedroom'.awake then return 'На экране идет какой-то фильм про гангстеров. '; elseif _'room15_curtain':has('open') then - return 'На экране с трудом различимо окно, через которое видна какая-то комната. Да там же ты! '; + if pl:where()^'room15_void' then + + return 'На экране с трудом различимо окно, через которое видна какая-то комната очень похожая на спальню тетушки. '; + else + return 'На экране с трудом различимо окно, через которое видна какая-то комната. Да там же ты! '; + end; else return 'На экране с трудом различимо какое-то окно, закрытое шторами. '; end; @@ -900,18 +923,20 @@ obj { pr('Сначала придется открыть окно. '); end; end; + after_LetGo = function(s, o) + if o^'statuetka' and have('statuetka') then + _'room15_bedroom'.complete = true; + pr('Едва схватив ' .. _'statuetka':noun'вн' .. ', ты ощущаешь, что начинаешь падать. Веревка выскальзывает из твоей руки и ты просыпаешься от сильного удара. Ты лежишь на кровати, крепко сжимая в руке '.. _'statuetka':noun'вн' .. '. '); + mp:subaction('Wake'); + return + end; + return false; + end; before_Exam = function(s) pr 'Там пусто. '; mp:content(s); end; - after_Exit = function(s) - if have('statuetka') then - _'room15_bedroom'.complete = true; - pr('Держа ' .. _'statuetka':noun'вн' .. ' в одной руке, второй ты пытаешься вернуться в комнату, держась за веревку. Несколько секунд кажутся несколькими часами, но вот ты касаешься подоконника и падаешь на пол. Падение приводит тебя в чувства и ты просыпаешься. В руке ты крепко сжимаешь '.. _'statuetka':noun'вн' .. '. '); - mp:subaction('Wake'); - end; - end; obj = { 'statuetka'; }; diff --git a/room4.lua b/room4.lua index f636173..6a4368e 100644 --- a/room4.lua +++ b/room4.lua @@ -1,4 +1,4 @@ --- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room4_" или "kladovka_" +-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room4_" или "kladovka_" -- Все описания можно менять -- Задача: Игрок должен открыть люк в пол предметом bonekey, он может придти в локацию как с ним, так и без него @@ -162,7 +162,7 @@ door { -- Горафу надо сказать, что сюда нужно вписнуть комнату как в d_to кладовки -- "room5_podval", }; - after_Unlock = function(s) + after_Unlock = function(s) remove('bonekey'); mp.score=mp.score+1; p "Ты отпираешь люк вниз, избавляясь от костяного ключа."; @@ -236,7 +236,10 @@ room { -- Следующую строку с комментарием не удаляй. Она добавляет слово "брать" в словарь игры --"брать" Show = function(s, w) - return "Русалка смеётся, и делает жест, будто играет на флейте." + if w ^ "room4_mermaid" then + return "Русалка смеётся, и делает жест, будто играет на флейте." + end; + return false; end; after_Take = "{#Me/им} {#word/брать,#me,нст} флейту."; before_Smell = "Пахнет цветами."; @@ -270,8 +273,12 @@ room { end end; Show = function(s, w) - return "Русалка радостно кивает, и показывает на свои волосы." - end; + if w ^ "room4_mermaid" then + return "Русалка радостно кивает, и показывает на свои волосы." + end; + + return false; + end; before_Give = function(s, w) if w ^ "room4_mermaid" then if not s.donated then @@ -365,7 +372,7 @@ room { before_Smell = "Пахнет красотой."; before_Taste = "На вкус, как стекло."; before_Touch = "Прохладные с идеальной огранкой."; - }:attr "scenery":disable(), + }:attr "scenery":disable(), obj { -"русалка|ресницы|глаза|волосы|грудь"; nam = "room4_mermaid"; @@ -459,7 +466,7 @@ obj { return "Бронзовая фигурка дельфина с переливающимся сапфиром во лбу." else return "Бронзовая фигурка дельфина с маленьким углублением во лбу." - end + end end; -- При передаче объекта в объект у объекта-приёмника вызываются методы *_Recieve before_LetIn = function(s, w) @@ -476,8 +483,8 @@ obj { return "Бронзовая фигурка краба с сияющим рубином в середине панцыря." else return "Бронзовая фигурка краба с маленьким углублением в середине панцыря." - end - end; + end + end; before_LetIn = function(s, w) --"подходит" return "{#Second/им} не {#word/подходит,#second} по форме." @@ -492,7 +499,7 @@ obj { return "Бронзовая змея, с похожим на каплю блестящего яда, изумрудом во рту." else return "Бронзовая змея с маленьким углублением во рту." - end + end end; before_LetIn = function(s, w) --"подходит"