17rooms/room14.lua

1056 lines
51 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.

-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room14_" или "secondfloor_"
-- Все описания можно менять
-- Задача: Игрок должен найти в локации предмет bonekey, а также открыть проход на восток в спальню предметом circlekey и на запад в таинственную комнату предметом piramidekey, изначально проходы должны быть перекрыты
-- Игрок может придти в локацию как с одним и обоими ключами, так и без них, и иметь возможность спустится вниз или поднятся наверх
--e_to = 'room15_bedroom';
--w_to = 'room16_mystical';
obj {
-"пирамидальный ключ, ключ|пирамидка, пирамидка с письменами, письмена";
nam = "piramidekey";
description = "Пирамидальный ключ. Небольшая деревянная треугольная пирамидка. С древними письменами на ней.";
inv = "пирамидальный ключ";
-- found_in = {'room14_secondfloor'}
score=false;
after_Take = function(s)
if not s.score then
mp.score=mp.score+1;
end;
_'piramidekey'.score=true;
return false;
end;
}
obj {
-"круглый ключ, ключ|ригельный ключ";
nam = "circlekey";
description = "Круглый ключ. Толстый стальной ригельный. Сантиметров шестнадцать в длину. Увесистый.";
inv = "круглый ключ";
-- found_in = {'room14_secondfloor'};
found_in = { 'room17_keyhole' };
score=false;
after_Take = function(s)
if not s.score then
mp.score=mp.score+1;
end;
_'circlekey'.score=true;
return false;
end;
}
room {
-"коридор/мр|комната/жр|второй этаж, этаж";
nam = "room14_secondfloor";
title = "Второй этаж. Коридор.";
dsc = function(s)
_'room14_secondfloor'.scope:add("room14_floor");
pr"В одном конце широкого коридора лестница,"
if _"room14_plan".seen == true or _"room17_cherdak":visited() then
pr" ведущая на чердак.";
else
pr" ведущая наверх.";
end
pr" Рядом с лестницей стоит стальная напольная вешалка"
if _"room14_dress".worn == true then
pr", на которой висит моя одежда. ";
else
pr", на которой висит вечернее платье. ";
end
p[[В противоположном конце — лестница, ведущая вниз, в зал. Справа по коридору]];
if _"room14_platform".door == true then
p[[проход]];
if _"room14_plan".seen == true or _'room16_mystical':visited() then
p"в таинственную комнату. C правой стороны от прохода висит картина.";
else
p"на запад. C правой стороны от прохода висит картина.";
end
else
p[[деревянная дверь, ведущая]]
if _"room14_plan".seen == true or _'room16_mystical':visited() then
p"в таинственную комнату. C правой стороны от двери висит картина.";
else
p"на запад. C правой стороны от двери висит картина."
end
end
if _"room14_drawer".moving == false then
pr[[Под картиной находится громоздкий комод. На комоде стоит стеклянная витрина. ]];
end
pr[[Слева по коридору посреди стены большое двухметровое зеркало. ]];
if _"room14_hole".door == true and _"room14_door1".seen == true then
pr" Справа от него проход";
if _"room14_plan".seen == true or _"room15_bedroom":visited() then
pr" в спальню ";
else
pr" на восток ";
end
p"и стальная дверь, скрывшаяся в стене.";
elseif _"room14_door1".seen == true then
pr"Справа от него стальная дверь, скрывшаяся в стене. ";
end
p[[Справа от зеркала — женский манекен.]];
if _"room14_carpet".moving == true then
p[[На полу лежит свёрнутый роскошный персидский ковёр.]];
if _"room14_drawer".moving == true then
p"На пластине в центре пола стоит комод. На комоде стоит стеклянная витрина.";
else
p"В центре пола находится пластина.";
end
else
if _"room14_drawer".moving == true then
p[[На полу лежит роскошный персидский ковёр, на котором стоит комод. На комоде стоит стеклянная витрина.]];
else
p[[На полу лежит роскошный персидский ковёр.]];
end
end
if _"room14_glove".seen == false then
p"Кажется, из-под ковра что-то торчит.";
else
p"Из-под ковра торчит перчатка горничной.";
end
p[[Недалеко от зеркала на стене]];
if _"room14_plan".seen == false then
p 'какая-то схема.';
else
p 'план комнаты.^ На востоке, судя по схеме, должна быть спальня. А на западе — таинственная комната. Внизу на первом этаже — зал. А лестница в конце коридора ведёт наверх, на чердак.';
end
end;
before_Attack = function(s)
p"Ты не собираешься ничего ломать в доме тёти. Конечно, ты немного ей завидуешь, но не настолько.";
end;
before_Walk = function(s, ev)
if _"room14_dress".worn then
return "Ты не можешь разгуливать по дому в чужом платье. Тем более, в таком неудобном.";
elseif ev == _'@e_to' and _"room14_hole".door ~= true then
p"Этот путь не доступен.";
elseif ev == _'@w_to' and _"room14_platform".door ~= true then
p"Этот путь не доступен";
elseif pl:have(_"room14_box1") or pl:have(_"room14_box2") then
p"Ты думаешь, что тебе совершенно незачем таскать с собой ящик комода.";
elseif pl:have(_"room14_report") then
p"Ты думаешь, что тебе совершенно незачем таскать с собой папку с бумагами.";
else
return false
end
end;
before_Take = function (s, w)
if w == _'@all' then
p"Тут слишком много всего. Нужно выбрать что-то одно.";
else
return false
end
end;
before_Remove = function(s,w,wh)
if wh == _'room14_floor' then
mp:xaction('Take', w);
else
return false;
end;
end;
e_to = '';
w_to = '';
compass_look = function(s,dir)
p 'Не стоит заглядываться по сторонам, лучше сосредоточиться на том что происходит в комнате.';
end;
d_to = 'room10_zal';
u_to = 'room17_cherdak';
before_Listen = "Ничего не слышно.";
scope = { };
}: with {'room14_wardrobe', 'room14_door', 'room14_carpet', 'room14_plan', 'room14_stairs', 'room14_ladder', 'room14_dress',
'room14_cloth', 'room14_mirror', 'room14_dummy', 'room14_picture', 'room14_drawer', 'room14_showcase', 'room14_walls','room14_ceiling'}
-- Менять нельзя!!!! Это не ваш предмет!!! Вы не знаете как он выглядит, его придумает другой автор!!!
--obj {
-- -"костяной ключ,ключ";
-- nam = "bonekey";
-- description = "Костяной ключ";
-- found_in = { 'room14_box1' };
--}
--Декорации
obj {
-"лестница наверх, лестница ведущая наверх, лестница";
nam = "room14_stairs";
Exam = function(s)
if _"room14_plan".seen == true or _"room17_cherdak":visited() then
p"Лестница, ведущая наверх, на чердак.";
else
p"Лестница, ведущая наверх.";
end
end;
}:attr 'scenery'
obj {
-"лестница вниз, лестница ведущая вниз, лестница";
nam = "room14_ladder";
Exam = function(s)
if _"room14_plan".seen == true or _'room10_zal':visited() then
p"Лестница, ведущая вниз, в зал.";
else
p"Лестница, ведущая вниз.";
end
end;
}:attr 'scenery'
--"вешалка"
obj {
-"вешалка, стальная вешалка, напольная вешалка";
nam = "room14_wardrobe";
description = "Стальная напольная вешалка, ножки которой надёжно прикручены к полу.";
scope = {};
before_Exam = function(s)
_"room14_wardrobe".scope:add("room14_wardrobe1");
return false
end;
}:attr 'scenery'
obj {
-"ножки, ножки вешалки";
nam = "room14_wardrobe1";
description = "Ножки cтальной напольной вешалки, надёжно прикрученные к полу.";
}:attr 'scenery'
--"дверь"
obj {
-"деревянная дверь, дверь";
nam = "room14_door";
description = "Массивная деревянная дверь. Что удивительно: нет ни дверной ручки, ни замочной скважины.";
['before_Walk,Enter'] = function(s)
p"Деревянная дверь заперта. В неё невозможно войти."
end
}:attr 'scenery'
obj {
-"стальная дверь, дверь";
nam = "room14_door1";
seen = false;
description = "Прямоугольный лист металла, встроенный в стену. Нет ни дверной ручки, ни петель, ни замочной скважины. Лишь форма напоминает, что это массивная стальная дверь.";
before_Exam = function(s)
if _"room14_hole".door == true then
p"Стальная дверь полностью скрылась в стене."
else
return false
end
end;
['before_Walk,Enter'] = function(s)
if _"room14_hole".door == true then
p"Стальная дверь полностью скрылась в стене. В неё невозможно войти."
else
p"Стальная дверь заперта. В неё невозможно войти."
end
end;
}:attr 'scenery'
obj {
-"схема, схема комнаты|план,план комнаты";
nam = "room14_plan";
seen = false;
scope = { };
before_Exam = function(s)
_"room14_plan".scope:add("room14_paper");
_"room14_plan".scope:add("room14_glass");
_"room14_plan".scope:add("room14_ink");
if _"room14_plan".seen then
p [[Пожелтевший листок бумаги с планом комнаты. На востоке — спальня. А на западе — таинственная комната.
Внизу на первом этаже — зал. А лестница в конце коридора ведёт наверх, на чердак.]];
else
_"room14_plan".seen = true;
p [[Присмотревшись к пожелтевшему от времени листку бумаги, закреплённому в рамке за стеклом, ты заметила, что грубоватые штрихи выцветших чернил, на самом деле не что иное, как
план комнаты!^
Что странно: на востоке, судя по схеме, должна быть спальня. А на западе — таинственная комната.
Внизу на первом этаже — зал. А лестница в конце коридора ведёт наверх, на чердак.]];
end
end;
}:attr 'scenery'
obj {
-"бумага|лист, листок, листок бумаги";
nam = "room14_paper";
description = "Кроме изображённой на нём схемы листок бумаги более ничем не примечателен.";
Exam = function(s)
if _"room14_plan".seen ~= true then
return false
else
p"Кроме изображённой на нём схемы листок бумаги более ничем не примечателен.";
end
end;
}:attr"scenery"
obj {
-"стекло";
nam = "room14_glass";
description = "Обычное прозрачное стекло, за которым находится план комнаты.";
}:attr"scenery"
obj {
-"грубоватые штрихи, штрихи, старые штрихи, полустёртые штрихи, старые полустёртые штрихи| выцветшие чернила, чернила, синие чернила";
nam = "room14_ink";
description = "Старые полустёртые штрихи, нанесённые синими чернилами. Ничего интересного.";
}:attr"scenery"
-- СПАЛЬНЯ
obj {
-"картина";
nam = "room14_picture";
description = "Портрет молодой тёти Агаты и её мужа. Обнявшись, они стоят в комнате рядом с зеркалом. Тетя Агата в платье, а её муж в строгом фраке. Кажется, они выглядят счастливыми. Наверное, портрет был сделан вскоре после их свадьбы.";
seen = false;
before_Exam = function(s)
_"room14_picture".seen = true;
return false
end;
}:attr"scenery"
-- Одежда
obj {
-"платье|вечернее платье";
nam = "room14_dress";
--description = "Тёмно-синее лаконичное вечернее платье прямого покроя с отдельными кружевными элементами на рукавах и глубоким вырезом. Идеально подчеркнёт женственные формы, которых у тебя нет.";
worn = false;
before_Exam = function(s)
if _"room14_picture".seen == true then
p[[Тёмно-синее лаконичное вечернее платье прямого покроя с отдельными кружевными элементами на рукавах и глубоким вырезом. Идеально подчеркнёт женственные формы, которых у тебя нет.
Кажется, оно чем-то напоминает платье с картины.]];
else
p"Тёмно-синее лаконичное вечернее платье прямого покроя с отдельными кружевными элементами на рукавах и глубоким вырезом. Идеально подчеркнёт женственные формы, которых у тебя нет.";
end
end;
--, w:noun'вн'
before_Wear = function(s)
if not _"room14_dress".worn then
p"Ты разделась и повесила свою одежду на вешалку. А затем, осторожно взяв вечернее платье, надела его.";
_"room14_dress".worn = true;
else
p"Ты и так одета в него.";
end;
end;
["before_Drop,PutOn,Insert,ThrowAt,Wave"] = function(s,w)
if mp.event == "PutOn" and w == _"room14_dummy" then
p("Судя по размерам, платье для этого не предназначено.");
else
p("Не стоит так обращаться с платьем.");
end;
end;
before_Take = function(s)
if _"room14_dress".worn == true then
p"Ты и так одета в него.";
else
p"Тебе совершенно незачем таскать с собой по особняку вечернее платье.";
end
end;
before_Disrobe = function(s)
if _"room14_dress".worn then
p"Отвернувшись от зеркала и встав лицом к стене, ты сняла вечернее платье. А затем повесила его на вешалку и переоделась в свою одежду.";
_"room14_dress".worn = false;
else
return false;
end;
end;
}:attr'concealed, clothing'
obj {
-"одежда|своя одежда|моя одежда";
nam = "room14_cloth";
description = "Моя ничем не примечательная одежда.";
before_Wear = function(s)
if _"room14_dress".worn == false then
p"Ты и так одета в неё.";
else
p"Отвернувшись от зеркала и встав лицом к стене, ты сняла вечернее платье. А затем повесила его на вешалку и переоделась в свою одежду.";
_"room14_dress".worn = false;
end
end;
["before_Drop,PutOn,Insert,ThrowAt,Wave"] = function(s,w)
p("Не стоит так обращаться со своей одеждой.");
end;
before_Take = function(s)
if _"room14_dress".worn == false then
p"Ты и так одета в неё.";
else
p"Тебе совершенно незачем таскать с собой по особняку свою одежду.";
end
end;
before_Disrobe = function(s)
if not _"room14_dress".worn then
p"Ты уже не в том возрасте, чтобы ходить голой по лестницам.";
else
return false;
end;
end;
}:attr'concealed, clothing'
-- зеркало
obj {
-"зеркало";
nam = "room14_mirror";
scope = {};
before_Exam = function(s)
_"room14_mirror".scope:add("room14_button");
_"room14_mirror".scope:add("room14_frame");
_"room14_mirror".scope:add("room14_stones");
if _"room14_door1".seen ~= true then
p"Старинное декоративное зеркало во всю стену с деревянной рамой, инкрустированной драгоценными камнями. В одном из узоров на раме зеркала ты увидела небольшую коричневую кнопку, которую не было видно издали.";
else
p"Старинное декоративное зеркало во всю стену с рамой, инкрустированной драгоценными камнями. В одном из узоров на раме зеркала ты увидела небольшую коричневую кнопку, которую не было видно издали.";
if _"room14_plan".seen == true or _"room15_bedroom":visited() then
pr"Справа от зеркала стальная дверь, ведущая в спальню.";
else
pr"Справа от зеркала стальная дверь.";
end
end
end;
}:attr'scenery'
obj {
-"рама зеркала, рама| узоры, узор";
nam = "room14_frame";
description = "Деревянная резная рама зеркала, богато украшенная драгоценными камнями и узорными завитушками.";
}:attr'scenery'
obj {
-"драгоценные камни, камни | алмазы, алмаз | рубины, рубин | сапфиры, сапфир | изумруды, изумруд";
nam = "room14_stones";
description = [[Чего тут только нет: алмазы, рубины, изумруды, сапфиры. Тётя получила по-настоящему большое наследство от мужа.]];
}:attr'scenery'
--кнопка
obj {
-"кнопка, коричневая кнопка, пластиковая кнопка, небольшая кнопка, небольшая коричневая пластиковая кнопка";
nam = "room14_button";
scope = {};
description = "Небольшая коричневая пластиковая кнопка, справа от зеркала.";
before_Push = function(s)
if _"room14_dress".worn == false then
p"Ты встала перед зеркалом и нажала на кнопку. Раздался тихий щелчок, но ничего не произошло.";
elseif _"room14_dress".worn == true and _"room14_door1".seen ~= true then
_"room14_door1".seen = true;
p[[Ты встала в вечернем платье перед зеркалом и нажала на кнопку. Раздался тихий щелчок, наконец, со скрипом зеркало отодвинулось влево. В стене на месте, где раньше было зеркало, ты увидела стальную дверь.
И потом откуда-то справа послышался странный шорох, который, впрочем, быстро прекратился.]];
_"room14_secondfloor".obj:add("room14_door1");
mp.score=mp.score+1;
else
p"Ты встала перед зеркалом и нажала на кнопку. Раздался тихий щелчок, но ничего не произошло.";
end
end;
}:attr'scenery'
--Манекен
obj {
-"манекен/но, женский манекен, манекен девушки, манекен женщины";
nam = "room14_dummy";
description = "Высокий манекен с внешностью красивой обнажённой девушки, чем-то отдалённо напоминающей тётю в молодости. Руки скрещены на груди, ноги сдвинуты и крепко стоят на стальной подставке.";
scope = {};
before_Exam = function(s)
_"room14_dummy".scope:add("room14_hands");
_"room14_dummy".scope:add("room14_chest");
_"room14_dummy".scope:add("room14_rack");
_"room14_dummy".scope:add("room14_legs");
p [[Высокий манекен с внешностью красивой обнажённой девушки, чем-то отдалённо напоминающей тётю в молодости. ]];
if _"room14_door1".seen ~= true then
pr[[Руки скрещены на груди, ноги сдвинуты и крепко стоят на стальной подставке.]];
else
pr[[Руки манекена, совсем не прикрывают обнажённую грудь. Ноги манекена раздвинуты в стороны.]];
_"room14_secondfloor".obj:add("room14_hole");
end
end;
}:attr'scenery, ~animate'
obj {
-"руки| руки манекена | тонкие руки";
nam = "room14_hands";
before_Exam = function(s)
if _"room14_door1".seen ~= true then
p[[Руки манекена, скрещенные на груди.]];
else
p[[Тонкие руки манекена, совсем не прикрывающие обнажённую грудь.]];
end
end;
}:attr'scenery'
obj {
-"грудь| груди | грудь манекена| грудь девушки| груди манекена| груди девушки";
nam = "room14_chest";
description = [[Женская грудь второго размера правильной формы.]];
}:attr'scenery'
obj {
-"подставка манекена | подставка | стальная подставка";
nam = "room14_rack";
description = [[Стальная подставка, на которой твёрдо стоит манекен. Судя по всему, она надёжно прикреплена к полу и её не сдвинуть с места.]];
}:attr'scenery'
obj {
-"ноги| ноги манекена | нога | нога манекена";
nam = "room14_legs";
before_Exam = function(s)
if _"room14_door1".seen ~= true then
p[[Плотно сдвинутые ноги манекена.]];
elseif _"room14_hole".door == true then
p[[Ноги манекена, раздвинутые в стороны. Между ног манекена вставлен круглый ригельный ключ.]];
else
p[[Ноги манекена, раздвинутые в стороны. Между ног манекена, вместо ожидаемого зрелища, ты увидела скрытое ранее круглое отверстие, напоминающее замочную скважину.]];
_"room14_secondfloor".obj:add("room14_hole");
end
end;
}:attr'scenery'
--замок стальной двери
obj {
-"отверстие | круглое отверстие | замочная скважина | скважина | отверстие манекена";
nam = "room14_hole";
description = [[Круглое отверстие между ног манекена, напоминающее замочную скважину.]];
door = false;
before_Exam = function(s)
if _"room14_hole".door == true then
p"Круглый ригельный ключ намертво застрял между ног манекена.";
else
return false;
end
end;
before_Receive = function(s, w)
if mp.xevent == 'Insert' and w == _"circlekey" then
p[[Ты медленно вставляешь круглый ключ в отверстие между ног манекена. Кажется, он идеально подходит. Вставив до упора, ты дважды его поворачиваешь.
Раздаётся лязг, и стальная дверь вдвигается в стену, открывая проход на восток. Но ключ намертво застрял в замочной скважине.]];
pl.obj:del("circlekey");
_"circlekey":attr'scenery';
_"circlekey".description = "Ригельный ключ, намертво застрявший между ног манекена.";
_"room14_hole".door = true;
_"room14_secondfloor".e_to = 'room15_bedroom';
mp.score=mp.score+1;
return false
else
p("Ты попробовала вставить ", w:noun'вн', " в круглое отверстие. Но ", w:noun'им', " совершенно не подходит. Иногда размер и форма имеют значение.");
end
end;
after_Receive = function(s, w)
_'room14_hole':attr'~container, ~open';
end;
}:attr'scenery, container, open'
--ТАИНСТВЕННАЯ КОМНАТА
--"ковёр"
obj {
-"ковёр, роскошный ковёр, персидский ковёр, роскошный персидский ковёр";
nam = "room14_carpet";
description = "Роскошный персидский ковёр с длинным ворсом, занимающий половину коридора. Мягкий, полностью заглушающий шаги, в отличии от паркета.";
moving = false;
scope = {};
['before_Take,Push,Pull,Turn'] = function(s)
if _"room14_drawer".moving == true then
if not s.moving then
p"Ковёр невозможно сдвинуть, пока на нём стоит тяжёлый комод.";
else
p"Ковёр не получится вернуть на место, пока комод на пластине.";
end
else
if _"room14_carpet".moving == false then
p"Попробовав поднять ковёр, ты поняла, что он слишком тяжёлый, чтобы переместить его, но, откинув край ковра, ты увидела на полу посреди коридора квадратную пластину. А рядом с пластиной — грязную перчатку горничной.";
_"room14_carpet".scope:add("room14_glove");
_"room14_carpet".moving = true;
_"room14_glove".seen = true;
_"room14_secondfloor".scope:add("room14_plate");
_"room14_secondfloor".obj:add("room14_plate");
else
p"Ковёр слишком тяжёлый, чтобы его перемещать, поэтому ты просто расправила край ковра на полу. Теперь ничто здесь не напоминает о твоих похождениях.";
_"room14_carpet".moving = false;
end
end
end;
before_LookUnder = function(s)
if not s.moving then
p"Ковёр слишком плотно прилегает к полу, ничего не разглядеть.";
else
p"Нет необходимости. Край ковра уже откинут.";
end;
end;
['before_Walk,Enter'] = function(s)
p"Это бессмысленно. Ты и так стоишь на ковре на полу.";
end;
--before_Receive = function(s, w)
-- if _"room14_carpet".moving == true then
-- p"Ковёр сейчас свёрнут и на него нельзя ничего положить.";
-- else
-- p"Абсолютно бессмысленно класть что-то на ковёр.";
-- end
-- end;
after_Receive = function(s, w)
move(w, _"room14_secondfloor");
return false
end;
}:attr 'scenery,supporter,enterable'
obj {
-"перчатка, перчатка горничной, грязная перчатка";
nam = "room14_glove";
seen = false;
before_Any = function(s)
if _"room14_carpet".moving == false then
return p"Но перчатка сейчас под ковром.";
else
return false
end
end;
before_Exam = function(s)
p"Длинная атласная перчатка, судя по всему, из костюма горничной. Когда-то была чёрной, но теперь вся покрыта пылью и какими-то белыми пятнами. У тёти разве была горничная?";
end;
before_Smell = function(s)
p"Какой-то странный мускусный запах.";
end;
['before_Take,Push,Pull,Turn,Insert,Wear,Touch,Rub,Kiss,Eat,Taste,Tear'] = function(s)
p"Перчатка настолько грязная, что даже трогать противно.";
end;
}:attr'scenery'
obj {
-"комод, громоздкий комод, деревянный комод, громоздкий деревянный комод, комод тёмно-каштанового цвета";
nam = "room14_drawer";
description = "Громоздкий квадратный деревянный комод тёмно-каштанового цвета с двумя ящиками: верхним и нижним. На комоде стоит стеклянная витрина.";
scope = {};
moving = false;
before_Exam = function(s)
_'room14_drawer':attr'open'
if _"room14_box1".stable and _"room14_box2".stable then
p"Громоздкий квадратный деревянный комод тёмно-каштанового цвета с двумя ящиками: верхним и нижним. На комоде стоит стеклянная витрина.";
elseif _"room14_box1".stable == false and _"room14_box2".stable == false then
p"Громоздкий пустой квадратный деревянный комод тёмно-каштанового цвета без ящиков. На комоде стоит стеклянная витрина.";
elseif _"room14_box1".stable == false then
p"Громоздкий квадратный деревянный комод тёмно-каштанового цвета с одним нижним ящиком. На комоде стоит стеклянная витрина.";
elseif _"room14_box2".stable == false then
p"Громоздкий деревянный комод тёмно-каштанового цвета с одним верхним ящиком. На комоде стоит стеклянная витрина.";
end
end;
before_Receive = function(s, w)
if w == _"room14_box1" or w == _"room14_box2" then
return false
else
p("Ты подумала, что логичнее было бы положить ", w:noun'вн', " в ящик, а не в комод.");
end
end;
before_Take = function(s)
p"Комод слишком большой и тяжёлый.";
end;
['before_Push,Pull,'] = function(s, ev)
if _"room14_box1".stable or _"room14_box2".stable then
p"Комод слишком тяжёлый, чтобы его двигать. Если бы можно было его как-то облегчить.";
else
if _"room14_carpet".moving == false then
if _"room14_drawer".moving == false then
p"С трудом ты передвинула комод на середину ковра.";
_"room14_drawer".moving = true;
else
p"С трудом ты передвинула комод с ковра обратно на место под картиной.";
_"room14_drawer".moving = false;
end
elseif _"room14_carpet".moving == true then
if not s.moving and _"room14_plate":empty() then
p"С трудом ты передвинула комод на пластину в центре пола.";
_"room14_drawer".moving = true;
move(_"room14_drawer", _"room14_plate");
_'room14_drawer':attr'~concealed';
elseif s.moving then
p"С трудом ты передвинула комод с пластины обратно на место под картиной.";
_"room14_drawer".moving = false;
move(_"room14_drawer", _"room14_secondfloor");
_'room14_drawer':attr'concealed';
else
p"На пластине уже что-то лежит, поэтому туда комод не передвинуть.";
end
end
end
end;
before_Open = function(s)
p"Что именно в комоде ты хочешь открыть?";
end;
['before_Walk,Enter'] = function(s)
p"Ты уже не в том возрасте, чтобы лазать по чужим комодам.";
end;
--obj = { 'room14_box1', 'room14_box2' };
}:attr'concealed, container'
obj {
-"верхний ящик комода, верхний ящик, ящик комода, ящик";
nam = "room14_box1";
description = function(s)
_"room14_box1":attr'open';
p"Верхний ящик комода.";
content(_"room14_box1", true);
--return false
end;
stable = true;
found_in = "room14_drawer";
before_Take = function (s,w)
if pl:have(_"room14_box1") or pl:have(_"room14_box2") then
return p"Ящики слишком тяжёлые, чтобы носить их вместе.";
else
_"room14_box1".stable = false;
return false
end
end;
before_Pull = function(s)
move(_"room14_box1", _"room14_secondfloor");
_"room14_box1".stable = false;
return p"Ты вытащила верхний ящик комода и положила на пол.";
end;
['before_Insert,Push'] = function(s)
if _"room14_box1".stable == true then
p"Но верхний ящик и так в комоде.";
else
move(_"room14_box1", _"room14_drawer");
_"room14_box1".stable = true;
return p"Ты вставила верхний ящик обратно в комод.";
end
end;
before_Open = function(s)
_"room14_box1":attr'open';
if _"room14_box1".stable then
p"Ты открыла верхний ящик комода.";
content(_"room14_box1", true);
else
content(_"room14_box1", true);
end
end;
-- found_in = "room14_drawer";
}:attr'container'
obj {
-"нижний ящик комода, нижний ящик, ящик комода, ящик";
nam = "room14_box2";
description = function(s)
_"room14_box2":attr'open';
p"Нижний ящик комода.";
content(_"room14_box2", true);
--return false
end;
stable = true;
found_in = "room14_drawer";
before_Take = function (s,w)
if pl:have(_"room14_box1") or pl:have(_"room14_box2") then
return p"Ящики слишком тяжёлые, чтобы носить их вместе.";
else
_"room14_box2".stable = false;
return false
end
end;
before_Pull = function(s)
move(_"room14_box2", _"room14_secondfloor");
_"room14_box2".stable = false;
return p"Ты вытащила нижний ящик комода и положила на пол.";
end;
['before_Insert,Push'] = function(s)
if _"room14_box2".stable == true then
p"Но нижний ящик и так в комоде.";
else
move(_"room14_box2", _"room14_drawer");
_"room14_box2".stable = true;
return p"Ты вставила нижний ящик обратно в комод.";
end
end;
before_Open = function(s)
_"room14_box2":attr'open';
if _"room14_box2".stable then
p"Ты открыла нижний ящик комода.";
content(_"room14_box2", true);
else
content(_"room14_box2", true);
end
end;
}:attr'container'
--- Декорации
obj {
-"пол";
nam = "room14_floor";
description = function(s)
p"Тёмный паркетный пол.";
return false
end;
scope = {};
['before_Walk,Enter'] = function(s)
p"Это бессмысленно. Ты и так на полу.";
end;
after_Receive = function(s, w)
move(w, _"room14_secondfloor");
return false
end;
}:attr'enterable, supporter,transparent,scenery'
obj {
-"витрина, стеклянная витрина";
nam = "room14_showcase";
description = function(s)
if _"room14_report".seen then
p[[Стеклянная витрина, за которой находится пистолет с позолоченной рукояткой. Возможно, это и есть беретта, упоминавшаяся в отчёте?]];
else
p[[Стеклянная витрина, за которой находится пистолет с позолоченной рукояткой.]];
end
end;
before_Exam = function(s)
_"room14_secondfloor".obj:add("room14_gun");
return false
end;
}:attr'scenery'
obj {
-"пистолет|беретта/жр,но|позолоченная рукоятка, рукоятка";
nam = "room14_gun";
description = function(s)
if _"room14_report".seen then
p"Пистолет с позолоченной рукояткой. Возможно, это и есть беретта, упоминавшаяся в отчёте?";
else
p"Пистолет с позолоченной рукояткой. Ты никогда особо не любила оружие и не разбиралась в нём.";
end
end;
}:attr'scenery'
obj {
-"стена, стены|штукатурка, бордовая штукатурка, венецианская штукатурка, бордовая венецианская штукатурка";
nam = "room14_walls";
description = "Стены, отделанные бордовой венецианской штукатуркой, имитирующей узоры яшмы. Безумно дорого. Такое ты видела только в модном журнале в статье о дворцах венецианских дожей. Сколько же денег получила тётя после смерти мужа?";
}:attr'scenery'
obj {
-"пластина, напольная пластина";
nam = "room14_plate";
description = function(s)
if _"room14_plate":empty() then
p"Напольная деревянная квадратная пластина. На ней изображена какая-то девушка с весами, на которых стоят пустые бокалы.";
mp:content(s);
else
p"Напольная деревянная квадратная пластина. На ней изображена какая-то девушка с весами, на которых стоят пустые бокалы.";
mp:content(s);
p"Сейчас пластина нажата.";
end
end;
dsc = function(s)
p(description);
content(s);
end;
-- before_Receive = function(s,w)
-- p("Ты положила ", w:noun"вн", " на пластину.");
-- return false
-- end;
before_Any = function(s)
if _"room14_carpet".moving == false then
return p"Но пластина сейчас под ковром.";
else
return false
end
end;
['before_Enter,Walk'] = function(s)
if _"room14_drawer".moving == false then
p"Ты встала на пластину. Пластина нажалась, но ничего больше не произошло. Возможно, здесь нужен другой вес. ^Ты сошла с пластины.";
else
p"На пластину невозможно встать, всю её поверхность занял комод.";
end
end;
before_Push = function(s)
p"Ты нажала на квадратную пластину, но ничего не произошло. Судя по всему, пластина реагирует на вес предметов.";
end;
--before_Receive = function(s)
-- if _"room14_plate":empty() == false then
-- p("Но на пластине уже находится ", mp:content(_"room14_plate"), ".");
-- else
-- return false
-- end
--end;
each_turn = function(s)
if _'room14_drawer':inside'room14_plate' and _"room14_box1".stable == true and _"room14_box2".stable == true and _"room14_box1":empty() and _"room14_box2":empty() and
_"room14_platform".seen == false then
_"room14_secondfloor".obj:add(_"room14_platform");
_"room14_platform".seen = true;
p"Внезапно раздался щелчок, и пластина нажалась. Похоже, вес предметов оказался подходящим. Из стены рядом с деревянной дверью выдвинулась небольшая платформа.";
end
end;
capacity = 1;
}:attr'supporter,scenery,enterable,transparent'
obj {
-"платформа|деревянная платформа|углубление";
nam = "room14_platform";
description = "Небольшая толстая деревянная платформа в центре которой есть треугольное углубление.";
seen = false;
door = false;
before_Receive = function(s, w)
if w ~= _"piramidekey" then
p("Ты положила ", w:noun'вн', " на платформу. Но ", w:noun'им', " совершенно не подходит для треугольного углубления, поэтому ты забрала ", w:noun'вн', " обратно.");
else
return false
end
end;
after_Receive = function(s, w)
if w == _"piramidekey" then
p[[Как только ты положила пирамидальный ключ на платформу, он бесшумно исчез внутри неё.
А сама платформа тут же скрылась в стене, а вслед за ней в стену вдвинулась деревянная дверь, обнажив проход]];
if _"room14_plan".seen == true or _'room16_mystical':visited() then
p"в таинственную комнату.";
else
p"на запад.";
end
_"room14_platform":attr'scenery';
_"room14_platform".description = "Деревянная платформа полностью скрылась в стене вместе с пирамидальным ключом."
if not _"piramidekey":has('scenery') then
mp.score=mp.score+1;
end
_"piramidekey":attr'scenery';
_"piramidekey".description = "Пирамидальный ключ исчез в стене вместе с платформой.";
_"room14_door".description = "Массивная деревянная дверь полностью скрылась в стене, не оставив ни следа."
_"room14_platform".door = true;
_"room14_secondfloor".w_to = 'room16_mystical';
remove("piramidekey");
remove("room14_platform");
else
return false
end
end;
}:attr'scenery,supporter'
obj {
-"потолок, высокий потолок";
nam = "room14_ceiling";
description = "Высокий потолок, отделанный дорогой бордовой венецианской штукатуркой.";
}:attr'scenery'
obj {
-"толстая папка с бумагами,папка с бумагами, папка|бумаги|отчёт,отчет|документ|документы|газетные вырезки,вырезки|заметки";
nam = "room14_report";
seen = false;
keyword = "";
description = "Большая папка с бумагами, документами и газетными вырезками.";
before_Exam = function(s)
p"Большая папка с бумагами, документами и газетными вырезками. Просмотрев бумаги, ты поняла, что они посвящены какому-то преступлению.";
end;
topic = {'муж', 'жертв',
'преступлен',
'агат','тети','тетю','тете','тетя','тёт',
'перчатк','горничн','самоубий','убийц',
'пистолет', 'оруд', 'оруж','рукоят',
'убийств', 'улик',
'себе','себя',
'свидетел',
'наследств','наследн','завещ','богат',
'тимо йокинен',
'особняк', 'ковё', 'кове', 'ковр', 'плать'};
['before_Consult,Search'] = function(s, w)
if w == nil then
p"Большая папка с бумагами, документами и газетными вырезками. Просмотрев бумаги, ты поняла, что они посвящены какому-то преступлению. Возможно, надо поискать что-то в документах.";
return
else
local found
for x, y in ipairs(s.topic) do
if w:find(y) then
found = x;
break
end
end
if found == nil then
p"Большая папка с бумагами, документами и газетными вырезками. Просмотрев бумаги, ты поняла, что они посвящены какому-то преступлению. Возможно, надо поискать в документах что-то другое.";
return
end
if found == 1 or found == 2 or found == 27 then
p"Ты поискала в документах упоминания мужа тёти и обнаружила, что его звали Тимо Йокинен, и он был миллиардером из Финляндии. ";
elseif found == 32 then
p"Ты нашла свадебное фото: вместо традиционного белого тётя была на свадьбе в вечернем платье.";
elseif found == 29 or found == 30 or found == 31 then
p[[Согласно квитанции в документах роскошный персидский ковёр был приобретён у некоего мистера Черепнакольского за весьма приличную сумму.]];
elseif found == 3 then
p"Ты почитала документы в папке и поняла, что они посвящены убийству мужа тёти Агаты и самоубийству их горничной.";
elseif found >= 4 and found <= 9 or found == 18 or found == 22 then
p"Согласно папке, преступление произошло спустя несколько лет после свадьбы тёти. Судя по свидетельствам тёти, убийца вечером проникла в их спальню и попыталась застрелить тётю. Но вместо неё погиб муж, пытаясь отобрать пистолет убийцы. После чего убийца покончила с собой на пороге комнаты. О внебрачной связи своего мужа тётя узнала только после того, как на пороге их спальни появилась горничная.";
elseif found == 10 then
p'Ты нашла в документах следующее: "...никаких следов выстрела на руках горничной не осталось, поскольку она была в длинных атласных перчатках..."';
elseif found == 11 or found == 12 or found == 13 then
p"Судя по отчёту, горничную Веронику наняли сразу после свадьбы для того, чтобы вести хозяйство большого особняка. Мотивом преступления стала ревность, которую убийца испытывала к жене своего любовника. После неудачной попытки убийства, находясь в состоянии аффекта от смерти любовника, она покончила с собой.";
elseif found >= 14 and found <= 17 then
_"room14_report".seen = true;
-- _"room14_gun".word:add("беретта/жр,но")
p"Пролистав папку, ты обнаружила, что орудием преступления являлся пистолет Beretta 92FS, с позолоченной рукояткой, который принадлежал жертве и хранился в его кабинете.";
elseif found == 19 then
p'В бумагах написано: "...cледов борьбы не обнаружено. На потерпевшей обнаружена кровь мужа. На убийце нет никаких следов, кроме следов от выстрела в сердце при самоубийстве..."';
elseif found == 20 or found == 21 then
p"Ты нашла краткие заметки ручкой в блокноте из которых следовало, что тётя собиралась подарить особняк тебе.";
elseif found >= 23 and found <= 26 then
p"Тётя оказалась единственной наследницей своего мужа, упомянутой в завещании, и получила гигантское состояние, в том числе особняк.";
elseif found == 28 then
p[[Вот что нашлось в заметках: "...cтаринный фамильный особняк семейства Йокиненов был построен в девятнадцатом веке, представляет собой настоящее чудо инженерной мысли. Состоит из восемнадцати комнат.
В особняке предусмотрено множество тайных секретных проходов и комнат. После современной реставрации особняка он оснащён по последнему слову техники. Тётя Агата получила особняк по завещанию от мужа."]];
else
p"Ты почитала документы в папке, но не нашла ничего подходящего.";
end
end
end;
found_in = { 'room14_box2' };
}
VerbExtend {"#Wear",
"{noun}/вн,held на {noun}/вн : PutOn",
"~ на {noun}/вн {noun}/вн : PutOn reverse",
}