mirror of
https://github.com/goraph/17rooms.git
synced 2024-05-21 17:28:15 +03:00
1011 lines
64 KiB
Lua
1011 lines
64 KiB
Lua
-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room2_" или "terassa_"
|
||
-- Все описания можно менять
|
||
-- Задача: Игрок должен найти в локации
|
||
-- ВНИМАНИЕ: Это одна из стартовых локаций! Не надо делать сложно! Доступ на восток и запад преграждать нельзя! Доступа на юг может не быть, он открывается не отсюда
|
||
-- Игрок может придти в локацию как с ключом так и без ключа!
|
||
|
||
----[[
|
||
-- ## ##
|
||
-- ## ## ##
|
||
-- ## ## #### ##### ###### ###### ##### ## ## ## ## ## ##
|
||
-- ####### ## ## ## ## ## ## ## ## ### ## ## ## ###
|
||
-- ## ## ##### ## ## ###### ## ## ## # ## ##### ## # ##
|
||
-- ## ## ## ## ## ## ## ## ## ### ## ## ## ### ##
|
||
-- ## ## ###### ##### ## ## ##### ## ## ## ## ## ##
|
||
|
||
--]]
|
||
|
||
-- local _'room2_s'.pl_high = 0;
|
||
-- local _'room2_s'.has_noticed_key = false;
|
||
-- -- local room2_uni = 0
|
||
-- local room2_uni = {arch = false, botan = false, hist = false}
|
||
function room2_check_uni(k)
|
||
local _uni = _'room2_s'.uni
|
||
if not _uni[k] then
|
||
_uni[k] = true
|
||
local _n = 0
|
||
for a in pairs(_uni) do
|
||
if _uni[a] then _n = _n + 1; end
|
||
end
|
||
if _n <= 2 then
|
||
return " (Ты пару месяцев изучала " .. _'room2_s':noun('вн',k) .. ", когда была в университете, но поняла — не твоё)."
|
||
elseif _n < 5 then
|
||
return " (Ну, ты знаешь: университет, пара месяцев " .. _'room2_s':noun('рд',k) .. ", не твоё)."
|
||
else
|
||
return " (Да-да: университет — " .. _'room2_s':noun('им',k) .. " — не твоё)."
|
||
end
|
||
end
|
||
return ""
|
||
end;
|
||
|
||
obj {
|
||
-"архитектура|ботаника|история|анатомия|морская навигация";
|
||
nam = "room2_s"; -- room2_settings
|
||
pl_high = 0;
|
||
has_noticed_key = false;
|
||
been_on_high = false;
|
||
uni = {false, false, false, false, false};
|
||
vowels = {"а","и","о","у","э","А","И","О","У","Э"};
|
||
-- uni = {arch = false, botan = false, hist = false, anat = false};
|
||
-- unitxt1 = {arch = 'архитектура', botan = 'false', hist = 'false', anat = ""};
|
||
-- unitxt2 =
|
||
}
|
||
|
||
function room2_sober()
|
||
if _'room2_s'.pl_high == 1 then
|
||
p "Ты чувствуешь, что эффект от яда проходит и миру возвращаются привычные тусклые краски.";
|
||
_'room2_s'.pl_high = 0;
|
||
end
|
||
end;
|
||
|
||
room2_room = Class({
|
||
-- title = function(s)
|
||
-- if _'room2_s'.pl_high == 1 then
|
||
-- s.title = s.title .. " (немного под кайфом)";
|
||
-- end;
|
||
-- end;
|
||
['before_Exam,Open'] = function()
|
||
return false;
|
||
end;
|
||
before_Listen = function(s,w)
|
||
if not w then
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Минуту ты слушаешь, как шумит лес.";
|
||
else
|
||
return "Ты с беспокойством слушаешь, как шумит лес: тяжкие вздохи и скрипы, и зловещий шелест ветвей.";
|
||
end
|
||
end
|
||
return false
|
||
end;
|
||
before_Taste = function()
|
||
local _txt = "Поверь мне, это не та часть дома, где ты должна давать волю своему языку.";
|
||
if _'room2_s'.pl_high == 1 then
|
||
_txt = _txt .. " (Он, кстати, немного онемел)";
|
||
end
|
||
return _txt
|
||
end;
|
||
before_Default = function()
|
||
if not mp:check_touch() then
|
||
return false
|
||
end
|
||
end;
|
||
post_Any = function(s,ev,w)
|
||
if not w then return end;
|
||
if ev == 'Exam' or ev == 'LookUnder' or ev == 'LookAt' then
|
||
w:attr'seen'; -- предмет осмотрен
|
||
if _'room2_s'.pl_high == 0 then -- если гг не под кайфом
|
||
w:attr'seen_before_high'; -- предмет осмотрен до кайфа
|
||
if w:has'seen_on_high' then -- если предмет был осмотрен под кайфом
|
||
w:attr'seen_after_high'; -- предмет осмотрен после кайфа
|
||
end
|
||
elseif _'room2_s'.pl_high == 1 then -- если гг под кайфом
|
||
w:attr'seen_on_high'; -- предмет осмотрен под кайфом
|
||
end
|
||
end
|
||
if ev == 'Listen' and w:access() then
|
||
w:attr'listened'; -- предмет послушан
|
||
if _'room2_s'.pl_high == 0 then -- если гг не под кайфом
|
||
w:attr'listened_before_high'; -- предмет послушан до кайфа
|
||
if w:has'listened_on_high' then -- если предмет был послушан под кайфом
|
||
w:attr'listened_after_high'; -- предмет послушан после кайфа
|
||
end
|
||
elseif _'room2_s'.pl_high == 1 then -- если гг под кайфом
|
||
w:attr'listened_on_high'; -- предмет послушан под кайфом
|
||
end
|
||
end
|
||
return false;
|
||
end
|
||
}, room)
|
||
|
||
-- о/об в зависимости от первой буквы слова
|
||
function room2_about(str)
|
||
local _vowels = _'room2_s'.vowels
|
||
for a in pairs(_vowels) do
|
||
if _vowels[a] == str:sub(1, 2) then return "об" end
|
||
end
|
||
return "о"
|
||
end;
|
||
|
||
room2_Prop = Class {
|
||
before_Exam = function()
|
||
return false
|
||
end,
|
||
before_Default = function(s, ev, w)
|
||
p("Тебе нет нужды беспокоиться "..room2_about(s:noun'пр').." "..s:noun 'пр'..".");
|
||
end
|
||
}:attr 'scenery'
|
||
|
||
--"оставаться"
|
||
room2_Exhibit = Class {
|
||
['before_Exam,LookUnder,LookAt,Search'] = function(s)
|
||
if not s:access() then
|
||
p("Ты разглядываешь ", s:noun 'вн', " сквозь закрытые дверцы ", parent(s):noun 'рд', ":");
|
||
end
|
||
return false;
|
||
end;
|
||
before_Listen = function(s)
|
||
if not s:access() then
|
||
return p("Если ", s:noun 'им', " и издаёт какие-то звуки, ты их не слышишь за закрытыми дверцами ", parent(s):noun 'рд', ".");
|
||
end
|
||
return false;
|
||
end;
|
||
before_Default = function(s, ev, w)
|
||
p(s:Noun 'им', " — экспонат. Пусть лучше {#word/оставаться,#first,нст} на месте.");
|
||
end;
|
||
}:attr 'static';
|
||
|
||
room2_Far = Class {
|
||
['before_Exam,WaveHands'] = function()
|
||
return false
|
||
end,
|
||
before_Default = function(s, ev, w)
|
||
p(s:Noun 'им', " слишком далеко.");
|
||
end
|
||
}:attr 'scenery'
|
||
|
||
room2_Photo = Class {
|
||
before_Turn = function(s)
|
||
mp:xaction('Turn', _'room2_album')
|
||
end;
|
||
before_Default = function(s,ev) mp:xaction(ev, parent(s)) end;
|
||
}:attr 'concealed'
|
||
|
||
-- помахать пугалу
|
||
VerbExtend {"#Wave",
|
||
"{noun}/дт : WaveHands"
|
||
}
|
||
|
||
-- идти по дорожке
|
||
VerbExtend {"#Walk",
|
||
"по {noun}/дт : Walk"
|
||
}
|
||
|
||
-- перевернуть страницу
|
||
VerbExtendWord {"#Turn",
|
||
"переверн/уть"
|
||
}
|
||
|
||
----[[
|
||
-- #####
|
||
-- ## ##
|
||
-- ## ## ##### ## ## #### ## ## ## ## ## ##
|
||
-- ## ## ## ## ## ## ## ## ## ## ### ## ###
|
||
-- ## ## ## ## ##### ##### ## ## ## # ## ## # ##
|
||
-- ## ## ## ## ## ## ## ## ## ## ### ## ### ##
|
||
-- ## ## ##### ## ## ###### ### ## ## ## ## ##
|
||
-- #
|
||
--]]
|
||
|
||
-- room {
|
||
-- nam = "room2_limbo";
|
||
-- }
|
||
|
||
room2_room {
|
||
nam = "room2_terassa",
|
||
title = function()
|
||
return _'room2_s'.pl_high == 0 and "терраса за домом" or "терраса за домом (в мире ярких красок)"
|
||
end;
|
||
-- dsc = "Дом на юге. Дорожка обегает вокруг дома на западе и на востоке.",
|
||
dsc = function(s)
|
||
local _forest = _'room2_s'.pl_high == 0 and "тёмного, жутковатого" or "чёрного, жуткого";
|
||
local _scarecrow = (_'room2_s'.pl_high == 1 and _'room2_scarecrow':has'seen_on_high') and "^^Перед лесом беснуется пугало." or "";
|
||
return "С этой стороны дом чуть менее впечатляющ, но всё такой же большой. Дорожка огибает его с запада и востока, сворачивая к каменным ступенькам, что ведут на юг, на террасу. С другой стороны — на севере — полоска заросшего огорода отделяет тебя от " .. _forest .. " леса." .. _scarecrow
|
||
end;
|
||
s_to = 'room2_on_terrasa',
|
||
u_to = 'room2_on_terrasa',
|
||
n_to = function () p "В тот тёмный лес тебе точно не надо." end,
|
||
e_to = function()
|
||
room2_sober()
|
||
return 'room1_kryltco' -- НУЖНО ПОДСТАВИТЬ НУЖНУЮ КОМНАТУ !!!
|
||
end;
|
||
w_to = function()
|
||
room2_sober()
|
||
return 'room1_kryltco' -- НУЖНО ПОДСТАВИТЬ НУЖНУЮ КОМНАТУ !!!
|
||
end;
|
||
}
|
||
|
||
room2_room {
|
||
nam = "room2_on_terrasa",
|
||
title = function()
|
||
return _'room2_s'.pl_high == 0 and "на террасе" or "на террасе (в мире ярких красок)"
|
||
end;
|
||
dsc = "Тут тенисто и прохладно — плющ защищает пространство от зноя. В дом ведёт широкая, двустворчатая дверь. По обеим сторонам от неё стоят застеклённые шкафы с заметными табличками на них. Левый с табличкой «Саргассово море», правый — «Экспедиция в Такла-Макан».^Выход с террасы — на север, вниз по ступеням.";
|
||
s_to = 'room2_door',
|
||
n_to = function(s)
|
||
if not _'room2_s'.has_noticed_key and where(_'room2_smt_shiny') ^ 'room2_terassa' then
|
||
p("Сбегая по ступенькам, ты вдруг замечаешь, что на земле под плющом что-то блестит.");
|
||
_'room2_s'.has_noticed_key = true;
|
||
_'room2_smt_shiny':attr'~concealed';
|
||
end
|
||
return 'room2_terassa';
|
||
end;
|
||
d_to = function(s) mp:xaction("Walk", _'@n_to') end;
|
||
}
|
||
|
||
door {
|
||
-"дверь";
|
||
nam = "room2_door";
|
||
door_to = function()
|
||
room2_sober()
|
||
return 'room12_gostinnaya' -- НУЖНО ПОДСТАВИТЬ НУЖНУЮ КОМНАТУ !!!
|
||
end;
|
||
when_locked = [[Здесь есть закрытая дверь.]];
|
||
when_open = [[Дверь открыта.]];
|
||
with_key = 'emptyroom'; -- НУЖНО ПОДСТАВИТЬ НУЖНЫЙ КЛЮЧ !!!
|
||
before_Unlock = function(s, w)
|
||
if w ^ 'bigkey' then
|
||
return "Хм, столько приключений, чтобы добыть большой ключ, а он к этой двери не подходит."
|
||
end
|
||
return false
|
||
-- return mp.msg.Unlock.WRONGKEY;
|
||
-- p ("Нет, ", w:noun 'им', " здесь не подходит.")
|
||
end;
|
||
before_Push = "Похоже, сила здесь не поможет. Нужен подходящий ключ.";
|
||
before_Attack = "Ты колотишь в дверь кулаком, но, как и предполагала — никто не открывает.";
|
||
found_in = { 'room2_on_terrasa' };
|
||
}:attr 'scenery,openable,lockable,locked';
|
||
|
||
room2_Prop {
|
||
-"дорожка,тропинка|красные кирпичи,красные,кирпичи,пучки травы,пучки,трещинки/но";
|
||
nam = "room2_walk";
|
||
description = function(s)
|
||
local _txt = _'room2_s'.pl_high == 0 and "" or " Ты на несколько минут замираешь, разглядывая узоры трещинок на разных кирпичах, их отличия по высоте, степень выщербленности, оттенки цвета и тому подобные вещи."
|
||
return "Красные кирпичи, утопленные в землю. Между ними пробиваются пучки нетоптаной травы. Дорожка обегает вокруг дома на западе и на востоке.".._txt
|
||
end;
|
||
before_Walk = "Тебе сначала нужно определиться, куда — на запад или восток — ты собираешься пойти.";
|
||
found_in = {'room2_terassa'};
|
||
}
|
||
|
||
room2_Prop {
|
||
-"терраса|дом,фасад";
|
||
nam = "room2_terrasa_obj";
|
||
description = function(s)
|
||
local _txt = s:hasnt'seen' and "(конечно же!) " or "";
|
||
if here() ^ "room2_terassa" then
|
||
return "Широкая открытая терраса, выдающаяся вперёд от фасада дома на добрые пару метров. Деревянные перила окрашены в голубой " .. _txt .. "цвет. Однако, их почти не видно за густыми зарослями плюща, опутавшего всю террасу и забравшегося по её столбам к самой крыше. Вход на террасу — на юге, по каменным ступенькам."-- .. s:noun('вн',3)
|
||
else
|
||
return _'room2_on_terrasa'.dsc
|
||
end
|
||
end;
|
||
['before_Enter,Climb'] = function(s)
|
||
if here() ^ "room2_terassa" then
|
||
walk 'room2_on_terrasa'
|
||
else
|
||
mp:xaction("Walk", _"@s_to")
|
||
end
|
||
end;
|
||
['before_Exit,GetOff'] = function(s)
|
||
if here() ^ "room2_on_terrasa" then
|
||
mp:xaction("Walk", _"@n_to")
|
||
else
|
||
return false
|
||
end
|
||
end;
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}:attr 'supporter';
|
||
|
||
room2_Prop {
|
||
-"ступеньки,ступени";
|
||
nam = "room2_steps";
|
||
description = function(s)
|
||
local _txt = "Широкие каменные ступеньки, немного стёртые посередине, ";
|
||
if here() ^ "room2_terassa" then
|
||
return _txt .. "поднимаются на высокую террасу."
|
||
else
|
||
return _txt .. "сбегают с террасы вниз, к дорожке."
|
||
end
|
||
end;
|
||
before_Walk = function(s)
|
||
if here() ^ "room2_terassa" then
|
||
mp:xaction("Walk", _"@s_to")
|
||
else
|
||
mp:xaction("Walk", _"@n_to")
|
||
end
|
||
|
||
end;
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}
|
||
|
||
room2_Prop {
|
||
-"перила,столбики";
|
||
nam = "room2_handrails";
|
||
description = function(s)
|
||
if here() ^ "room2_terassa" then
|
||
return "Перила едва видны, почти полностью скрытые листьями плюща."
|
||
else
|
||
local _txt = room2_check_uni(1);
|
||
return "С этой стороны видно, что столбики перил — искусная зодческая работа в псевдо-русском стиле." .. _txt
|
||
end
|
||
end;
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}
|
||
|
||
obj {
|
||
-"плющ|листья плюща,листья,прожилки,стебли";
|
||
nam = "room2_ivy";
|
||
description = function(s)
|
||
local _study = room2_check_uni(2);
|
||
local _txt = "";
|
||
if _'room2_s'.pl_high == 0 then
|
||
if here() ^ "room2_terassa" then
|
||
_txt = "Красивый, большелистый плющ, опутавший всю террасу. С виду — обычный Hedéra hélix." .. _study .. " Но тебя настораживает красноватый отлив с нижней стороны его листьев.";
|
||
if not _'room2_s'.has_noticed_key and _'room2_smt_shiny':access() then
|
||
-- _txt = _txt .. "^^Ты вдруг замечаешь, что на земле под плющом что-то блестит.";
|
||
-- _'room2_s'.has_noticed_key = true;
|
||
-- _'room2_smt_shiny':attr'~concealed';
|
||
elseif _'room2_smt_shiny':access() then
|
||
_txt = _txt .. "^^Под плющом всё блестит какой-то предмет."
|
||
end
|
||
else
|
||
_txt = "Плющ опутал все перила террасы, по столбам поднялся к самой крыше, надёжно укрыв пространство террасы своими большими листьями от взглядов с улицы (не то чтобы было кому подглядывать). Очень похожий на Hedéra hélix." .. _study .. " Однако, снизу его листья покрыты красными прожилками, а про такое ты не читала."
|
||
end
|
||
else
|
||
_txt = "Вездесущий плющ, опутавший всю террасу своими стеблями. С виду — обычный Hedéra hélix." .. _study .. " Но ты уже на своём опыте поняла, что это не он. Какая-то иноземная разновидность, ядовитая и коварная. Его большие красноватые листья дрожат на ветру (которого нет).";
|
||
end
|
||
return _txt;
|
||
end;
|
||
['before_LookUnder'] = function(s)
|
||
if here() ^ "room2_on_terrasa" then
|
||
return "Отсюда не видно, нужно спуститься с террасы."
|
||
else
|
||
if _'room2_smt_shiny':access() then
|
||
if not _'room2_s'.has_noticed_key then
|
||
p ("Наклонившись и глянув в темноту под плющом, ты вдруг видишь, что там что-то блестит.");
|
||
_'room2_s'.has_noticed_key = true;
|
||
_'room2_smt_shiny':attr'~concealed';
|
||
end
|
||
mp:xaction('Exam',_'room2_smt_shiny')
|
||
else
|
||
return "Больше под этим плющом ничего нет."
|
||
end
|
||
end
|
||
end;
|
||
['before_Take,Touch,Tear,Cut'] = function(s)
|
||
if not _'room2_s'.been_on_high then
|
||
return "Нет уж. Вдруг он ядовитый, а у тебя обнаружится аллергическая реакция, и что тогда? Аптеки поблизости ты что-то не наблюдаешь.";
|
||
else
|
||
if _'room2_s'.pl_high == 0 then
|
||
_'room2_s'.pl_high = 1
|
||
return "Сначала ты медлишь: это уже похоже на зависимость, но потом — была не была — суёшь руку прямо в заросли плюща. И тут же выдёргиваешь, почувствовав жжение. Яркие краски, к твоему удовольствию, возвращаются.";
|
||
else
|
||
return "Ты ещё чувствуешь действие яда на своё сознание, дополнительной дозы тебе сейчас не нужно.";
|
||
end
|
||
end
|
||
end;
|
||
before_Climb = function(s)
|
||
local _txt = _'room2_s'.been_on_high == true and " К тому же он ядовитый." or ""
|
||
return "Было бы интересно, конечно, прямо как в кино. Но, к сожалению, его стебли недостаточно крепкие и не выдержат твоего веса.".._txt
|
||
end;
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}:attr 'scenery':dict {
|
||
["листья/вн"] = "листья";
|
||
["листья/рд"] = "листьев";
|
||
["листья/дт"] = "листьям";
|
||
["листья/тв"] = "листьями";
|
||
["листья/пр"] = "листьях";
|
||
};
|
||
|
||
obj {
|
||
-"что-то блестящее,что-то,нечто,блестящее,монет*,ключ*,кулон*,предмет*";
|
||
nam = "room2_smt_shiny";
|
||
dsc = "На земле под плющом что-то блестит.";
|
||
description = function(s)
|
||
local _txt = s:has'seen' and " В принципе, ты видишь прогалины между листьев, где бы ты смогла протянуть руку к предмету, не задев плюща." or ""
|
||
return "Ты никак не можешь разобрать, что же это такое — тебе мешают листья плюща. Монета? Ключ? Кулон?".._txt
|
||
end;
|
||
before_Take = function(s)
|
||
move('bigkey', pl);
|
||
remove(s);
|
||
_'room2_s'.has_noticed_key = true;
|
||
_'room2_s'.pl_high = 1;
|
||
_'room2_s'.been_on_high = true;
|
||
walkin('room2_took_key');
|
||
if (s.once) then
|
||
mp.score=mp.score+1
|
||
end
|
||
end;
|
||
found_in = {'room2_terassa'};
|
||
}:attr 'concealed'
|
||
|
||
room2_Prop {
|
||
-"земля|ленинградский суглинок,суглинок,ленинградский";
|
||
description = function(s)
|
||
return _'room2_s'.pl_high == 0 and "Земля как земля, обычный ленинградский суглинок, ничего особенного." or "Твой взгляд останавливается на земле и ты несколько минут думаешь обо всех этих эпохальных геологических процессах, что закончились этим скучным ленинградским суглинком."
|
||
end;
|
||
['before_Exam,Search'] = function(s)
|
||
if _'room2_smt_shiny':access() and _'room2_s'.has_noticed_key then
|
||
mp:xaction('Exam',_'room2_smt_shiny')
|
||
else
|
||
return false;
|
||
end;
|
||
end;
|
||
before_Eat = "Тебе что, два года?";
|
||
found_in = {'room2_terassa'};
|
||
}:attr 'scenery';
|
||
|
||
cutscene {
|
||
nam = 'room2_took_key';
|
||
text = {
|
||
"Ты осторожно, стараясь не касаться ни листьев, ни стеблей плюща, протягиваешь руку к тому месту, где блестит таинственный предмет.";
|
||
"Двумя пальцами подцепляешь его, чувствуя холод металла. И так же осторожно тянешь руку обратно — из красноватых зарослей плюща.";
|
||
"Ты уже почти вынула руку, когда происходит странное — один из листьев качается на ветру (но ветра же нет!) и всей поверхностью липнет к твоему запястью.";
|
||
"Зашипев от боли, ты выдёргиваешь руку и разглядываешь обожжённое запястье, но не видишь никаких следов.";
|
||
"Единственное, что изменилось — краски окружающего мира становятся как-то насыщеннее, ярче. Хм.";
|
||
"Зато разжав кулак, ты видишь, что достала большой ключ.";
|
||
};
|
||
}
|
||
|
||
room2_Prop {
|
||
-"шкафы";
|
||
description = "Застеклённые шкафы с хранящимися в них экспонатами: в левом — про тайны Саргассова моря, в правом — про секретную советскую экспедицию в пустыню Такла-Макан.";
|
||
before_Open = "Здесь есть правый шкаф и левый шкаф.";
|
||
found_in = {'room2_on_terrasa'};
|
||
}:attr 'scenery';
|
||
|
||
room2_Prop {
|
||
-"экспонаты,предметы";
|
||
description = "Лучше рассматривать их поближе, что в левом, что в правом шкафах.";
|
||
found_in = {'room2_on_terrasa'};
|
||
}:attr 'scenery';
|
||
|
||
----[[
|
||
-- #####
|
||
-- ## ## ## #
|
||
-- ## ## ##### ##### ## ## ## ## ## # ## ## ## #### #####
|
||
-- ## ## ## ## ## ## ## ## ## ### ## # ## ## ## ## ## # ##
|
||
-- ## ## ###### ###### #### # ## # ## ## # ## ##### ##### ## # ##
|
||
-- ## ## ## ## ## ## # # ### ## ## # ## ## ## ## ## #####
|
||
-- ## ## ##### ###### #### # ## ## ####### ## ## ###### #
|
||
|
||
--]]
|
||
|
||
obj {
|
||
word = -"левый шкаф, шкаф, левый/но|саргассы/мн,но",
|
||
nam = 'room2_left_cabinet',
|
||
description = function(s)
|
||
local _txt = s:has'open' and "открытый" or "закрытый"
|
||
local _mary = _'room2_celeste':hasnt'seen' and "парусника" or "«Марии Селесты»";
|
||
return "Слева от двери стоит ".._txt.." шкаф, названный «Саргассово море». Судя по описанию на табличке в нём представлены экспонаты, так или иначе связанные с тайнами Саргассова моря и Бермудского треугольника. Среди всего содержимого шкафа твоё внимание привлекают: большая морская раковина, масштабная модель ".._mary.." и компас.";
|
||
end;
|
||
before_LetIn = "Не нужно в шкаф ничего совать — всё необходимое в нём уже есть.";
|
||
found_in = {'room2_on_terrasa'};
|
||
obj = {'room2_compass','room2_shell','room2_celeste',
|
||
obj {
|
||
-"табличка левого шкафа,левая табличка,левая,табличка/но";
|
||
description = "Вверху большими буквами: «Саргассово море» и ниже меньшим шрифтом: «Этот район Атлантического океана известен с давних пор. Ещё викинги рассказывали друг другу истории о гиблом „море“, которое лучше огибать с севера. Когда наладилась коммуникация между Старым и Новым Светом, историй о чудовищах, необъяснимых явлениях, о таинственных исчезновениях стало в разы больше. И до самых наших дней учёные не могут объяснить некоторые из них. Здесь, в данной экспозиции вы найдёте любопытные свидетельства того, что не всё ещё так просто с этим загадочным местом — Саргассовым морем».";
|
||
before_Take = "Она закреплена над шкафом и тебе её не достать. Да и зачем она тебе?";
|
||
}:attr'static'
|
||
};
|
||
}:attr 'scenery,container,transparent,openable,~animate';
|
||
room2_Prop {
|
||
-"дверцы левого шкафа,левые дверцы,дверцы,левые";
|
||
description = function(s)
|
||
if _'room2_left_cabinet':has'open' then
|
||
return false
|
||
end
|
||
p("Ты разглядываешь содержимое левого шкафа сквозь стеклянные дверцы:^^");
|
||
mp:content(_'room2_left_cabinet');
|
||
return;
|
||
end;
|
||
before_Open = function(s) mp:xaction("Open", _'room2_left_cabinet') end;
|
||
before_Close = function(s) mp:xaction("Close", _'room2_left_cabinet') end;
|
||
found_in = {'room2_on_terrasa'};
|
||
}
|
||
|
||
room2_Exhibit {
|
||
word = function(s)
|
||
return s:has'seen' and -"компáс,компас|картушка" or -"компас,компáс";
|
||
end;
|
||
nam = "room2_compass",
|
||
description = function(s)
|
||
local _study = room2_check_uni(5);
|
||
if _'room2_s'.pl_high == 0 then
|
||
if s:hasnt'seen_on_high' then
|
||
local _txt = s:hasnt'seen' and " («компáс», мысленно поправляешь ты себя)" or "";
|
||
return "Старинный морской " .. s:noun('им') .. _txt .. ". Медный корпус с нанесёнными на него румбами, пожелтевшая картушка повёрнута красной стрелкой Норда в сторону леса." .. _study;
|
||
else
|
||
return "Теперь с компáсом всё в порядке — картушка замерла и своей красной «N» указывает в сторону леса."
|
||
end
|
||
else
|
||
if s:hasnt'seen_on_high' then
|
||
local _txt = s:hasnt'seen' and " («компáсом», мысленно поправляешь ты себя)" or "";
|
||
return "Что-то не так с этим " .. s:noun('тв') .. _txt .. " — его картушка почему-то безостановочно вращается. Ты никогда такого не видела. (Картушка — это та часть морского компáса, которая поворачивается вместо стрелки у сухопутного компаса)" .. _study;
|
||
else
|
||
if s:hasnt'seen_after_high' then
|
||
return "Картушка компáса всё вращается."
|
||
else
|
||
return "Картушка компáса опять вращается!"
|
||
end
|
||
end
|
||
end
|
||
end;
|
||
before_Take = function(s)
|
||
local _txt = _'room2_s'.pl_high == 0 and "" or " (особенно, если его картушка вращается как сумасшедшая)";
|
||
return "Тебе с твоей врождённой способностью ориентироваться по сторонам света дополнительное приспособление не нужно" .. _txt .. ".";
|
||
end;
|
||
}:dict{
|
||
["компáс/мр,но,С"] = {"компáс/им", "компáсы/им,мн", "компáс/вн",
|
||
"компáсы/вн,мн", "компáса/рд", "компáсов/рд,мн",
|
||
"компáсу/дт", "компáсам/дт,мн", "компáсом/тв",
|
||
"компáсами/тв,мн", "компáсе/пр", "компáсах/пр,мн"}
|
||
}
|
||
|
||
room2_Exhibit {
|
||
-"раковина,ракушка,морская";
|
||
nam = "room2_shell";
|
||
description = function (s)
|
||
if s:hasnt'listened_on_high' then
|
||
local _txt = s:hasnt'listened' and " Интересно, если её послушать, будет ли слышно море?" or ""
|
||
return "Большая и очень красивая раковина, на внешней стороне покрытая множеством разной длины отростков, внутри — гладкая и переливающаяся перламутром.".._txt
|
||
else
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Ладно, в прошлый раз на тебя что-то нашло и тебе почудилось всякое, но большая перламутровая раковина уже не кажется тебе такой же красивой."
|
||
else
|
||
return "Раковина всё такая же большая и красивая, но ты боишься оторвать взгляд от её внутренней поверхности — вдруг оттуда покажется то, что там скреблось."
|
||
end
|
||
end
|
||
end;
|
||
before_Listen = function (s)
|
||
if not s:access() then
|
||
return p("Если ", s:noun 'им', " и издаёт какие-то звуки, ты их не слышишь за закрытыми дверцами ", parent(s):noun 'рд', ".");
|
||
end
|
||
if s:hasnt'listened_on_high' then
|
||
local _txt = room2_check_uni(4);
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Ты аккуратно поднимаешь довольно тяжёлую раковину и прикладываешь её к уху. И тут же слышишь шум прибоя. Который, как ты, конечно, знаешь — всего лишь шум твоего собственного сердцебиения и тока крови." .. _txt .. " Наслушавшись ненастоящего моря, ты возвращаешь раковину обратно — экспонат всё-таки.";
|
||
elseif _'room2_s'.pl_high == 1 then
|
||
return "Ты аккуратно поднимаешь тяжёлую раковину и прикладываешь её к уху. Сначала ты слышишь шум прибоя. Который, как ты, конечно, знаешь — всего лишь шум твоего собственного сердцебиения и тока крови." .. _txt .. "^Ты задерживаешь раковину у уха и, кажется, за прибоем начинаешь слышать что-то ещё. Песню. Женский голос поёт сладкозвучно и очень печально, наверное, о потерянной любви, потому что ты не знаешь других причин петь так грустно и так красиво. Как вдруг песня обрывается и голос гаркает:^— ¿Quién está ahí?^А потом из глубин раковины доносится скребущийся звук. Всё ближе и громче. Ты отдёргиваешь от себя раковину и поспешно возвращаешь её на полку.";
|
||
end
|
||
else
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Возможно в прошлый раз тебе и показалось, однако, всякое желание подносить эту раковину к своему уху у тебя отбило напрочь."
|
||
else
|
||
return "Ты ни за что не притронешься к этой раковине!"
|
||
end
|
||
end
|
||
end;
|
||
before_Open = "Нет, это другая раковина, не та, которая из двух створок и открывается, а та, которая завитая спиралью и в ней ещё можно слушать море. Ты что, не видишь?";
|
||
before_Take = function(s) mp:xaction("Listen", s) end;
|
||
}
|
||
|
||
-- нужно повторение словарных слов, потому что иначе не воспринимает:
|
||
--"модель,корабль,паруса"
|
||
room2_Exhibit {
|
||
word = function(s)
|
||
local _model = s:has'seen' and "модель «Марии Селесты»" or "модель парусника";
|
||
local _wrd = _'room2_s'.pl_high == 0 and "" or "диорама,кракен*,пожар*,чудовище*,щупальца*,доски*";
|
||
return -"".._model..",модель,мария,селеста,бригантина,палуба,корма,рубка,мачта,mary celeste,mary,celeste,название*/жр,нд|корабль,парусник,такелаж|паруса,надстройки,якоря,якорьки,механизмы/мн|".._wrd.."/жр,нд";
|
||
end;
|
||
nam = "room2_celeste";
|
||
description = function (s)
|
||
if _'room2_s'.pl_high == 0 then
|
||
if s:hasnt'seen_on_high' then
|
||
return "Красивая двухмачтовая бригантина, скрупулёзно воссозданная в масштабе модели: путаница такелажа, белоснежные паруса, палуба с различными надстройками и механизмами, крошечные якорьки. На корме, под окнами капитанской рубки — название «MARY CELESTE».";
|
||
else
|
||
return "Это вновь та же аккуратная бригантина без признаков разрушения. С тщательно воссозданными парусами, такелажем, якорьками. Название вновь полное: «MARY CELESTE»."
|
||
end
|
||
else
|
||
local _txt = s:has'seen_before_high' and " уже" or ""
|
||
return "С удивлением ты наблюдаешь".._txt.." не просто модель, а целую живую диораму: парусник «Мария Селеста», атакованный огромным кракеном. Паруса оборваны и висят клочьями с рей, задняя мачта сломана посредине и свисает с правого борта, щупальца чудовища опутали всю верхнюю палубу и через люки запустились на нижние. Дверь в капитанскую рубку заколочена досками. На носу пожар. В названии на корме не хватает нескольких букв."
|
||
end
|
||
end
|
||
}:dict {
|
||
["кракен/вн"] = "кракена";
|
||
["кракен/рд"] = "кракена";
|
||
["кракен/дт"] = "кракену";
|
||
["кракен/тв"] = "кракеном";
|
||
["кракен/пр"] = "кракене";
|
||
["диорама/вн"] = "диораму";
|
||
["диорама/рд"] = "диорамы";
|
||
["диорама/дт"] = "диораме";
|
||
["диорама/тв"] = "диорамой";
|
||
["диорама/пр"] = "диораме";
|
||
}
|
||
|
||
----[[
|
||
-- #######
|
||
-- ## ## ## #
|
||
-- ## ## ###### #### ##### ## ## ## ## ## # ## ## ## #### #####
|
||
-- ## ## ## ## ## ## ## ## ## ## ### ## # ## ## ## ## ## # ##
|
||
-- ## ## ###### ##### ###### #### # ## # ## ## # ## ##### ##### ## # ##
|
||
-- ## ## ## ## ## ## ## ## # # ### ## ## # ## ## ## ## ## #####
|
||
-- ## ## ## ###### ###### #### # ## ## ####### ## ## ###### #
|
||
|
||
--]]
|
||
|
||
obj {
|
||
-"правый шкаф, шкаф, правый, Такла-Макан,экспедиц*/но|дверцы правого шкафа, дверцы",
|
||
nam = 'room2_right_cabinet',
|
||
description = function(s)
|
||
local _txt = s:has'open' and "открытый" or "закрытый"
|
||
return "Справа от двери — ".._txt.." шкаф с табличкой «Экспедиция в Такла-Макан». Описание гласит, что экспонаты в нём связаны с секретной советской экспедицией 1946 года на северо-запад Китая. Больше всего тебя заинтересовали: карта с маршрутом экспедиции, альбом с фотографиями и обломок чёрного камня."
|
||
end;
|
||
before_LetIn = "Не нужно в шкаф ничего совать — всё необходимое в нём уже есть.";
|
||
found_in = {'room2_on_terrasa'};
|
||
obj = {'room2_black_rock','room2_album','room2_map',
|
||
obj {
|
||
-"табличка правого шкафа,правая табличка,правая,табличка/но";
|
||
description = "Вверху большими буквами: «Экспедиция в Такла-Макан» и ниже меньшим шрифтом: «Когда большая и страшная война закончилась, победители к своему удивлению обнаружили у себя на руках множество загадочных и малообъяснимых свидетельств, полученных Третьим Рейхом во время недолгой активности оккультного общества „Аненербе“. Страна восстанавливалась и археология не была одной из приоритетных наук, но тем не менее, наркомат просвещения организовал целую экспедицию из профессорского и студенческого состава кафедры исторического факультета МГУ в далёкий и глухой уголок Китая — пустыню Такла-Макан. Неизвестно, что же послужило толчком для кабинетных начальников пойти на такие расходы и каковы были результаты, так как всё, что связано с этой экспедицией, было тщательно засекречено. Однако, предметы данной экспозиции помогут пролить немного света на эту тайну».";
|
||
before_Take = "Она закреплена над шкафом и тебе её не достать. Да и зачем она тебе?";
|
||
}:attr'static'
|
||
};
|
||
}:attr 'scenery,container,transparent,openable';
|
||
room2_Prop {
|
||
-"дверцы правого шкафа,правые дверцы,дверцы,правые";
|
||
description = function(s)
|
||
if _'room2_right_cabinet':has'open' then
|
||
return false
|
||
end
|
||
p("Ты разглядываешь содержимое правого шкафа сквозь стеклянные дверцы:^^");
|
||
mp:content(_'room2_right_cabinet');
|
||
return;
|
||
end;
|
||
before_Open = function(s) mp:xaction("Open", _'room2_right_cabinet') end;
|
||
before_Close = function(s) mp:xaction("Close", _'room2_right_cabinet') end;
|
||
found_in = {'room2_on_terrasa'};
|
||
}
|
||
|
||
room2_Exhibit {
|
||
-"обломок чёрного камня,кусок,чёрный,камень,кусок,обломок";
|
||
nam = "room2_black_rock";
|
||
description = function(s)
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Небольшой — с твой кулак — обломок совершенно чёрного камня непонятной породы. Мог бы быть углём, однако, в отличие от антрацитов совершенно не отражает света."
|
||
else
|
||
if _'room2_album'.page == 6 then
|
||
return "Внутри чёрного обломка пульсирует неяркий красный свет."
|
||
elseif _'room2_album'.page == 7 then
|
||
return "Обломок почти светится изнутри красным пульсирующим светом!"
|
||
elseif _'room2_album'.page == 8 then
|
||
return "Огонь внутри обломка уже не пульсирует, а просто светит сквозь, казалось бы, непроницаемые стенки. Кажется, от него исходят едва слышные вибрации."
|
||
else
|
||
return "С ходу незаметно, но если приглядеться — внутри обломка как будто пульсирует очень слабый свет."
|
||
end
|
||
end
|
||
end;
|
||
before_Listen = function(s)
|
||
if not s:access() then
|
||
return p("Если ", s:noun 'им', " и издаёт какие-то звуки, ты их не слышишь за закрытыми дверцами ", parent(s):noun 'рд', ".");
|
||
end
|
||
if _'room2_s'.pl_high == 1 and _'room2_album'.page == 8 then
|
||
return "Ты слышишь едва заметный, на самой границе слышимости, зуд, волнами расходящийся от камня.";
|
||
end
|
||
return false;
|
||
end;
|
||
before_Touch = "Ты сама не понимаешь почему, но тебе не хочется к нему прикасаться.";
|
||
}
|
||
|
||
|
||
|
||
room2_Exhibit {
|
||
-"альбом с фотографиями,альбом/мр,ед|фотографии,фотки|печать,обложка,книга";
|
||
nam = "room2_album";
|
||
page = 1;
|
||
description = function(s)
|
||
if s:hasnt'open' then
|
||
return "Потёртый кожаный альбом с прямоугольной печатью «СОВСЕК» посередине красной обложки. Закрыт."
|
||
else
|
||
return "Раскрытый альбом с пожелтевшей фотографией забытой экспедиции:^"..s.obj[s.page].pageDsc()
|
||
end
|
||
end;
|
||
before_Open = function(s)
|
||
if not s:access() then
|
||
return false;
|
||
end
|
||
if s:hasnt'open' then
|
||
s:attr'open';
|
||
return "Ты осторожно открываешь альбом, явив свету пожелтевшую фотографию семидесятипятилетней давности:^"..s.obj[s.page].pageDsc().."^^Похоже, ты можешь перевернуть страницу.";
|
||
end
|
||
return false;
|
||
end;
|
||
before_Close = function(s)
|
||
return false;
|
||
end;
|
||
before_Turn = function(s)
|
||
if not s:access() then
|
||
return false;
|
||
end
|
||
if s:hasnt'open' then
|
||
return "В закрытом альбоме страницы переворачивать не получится."
|
||
end
|
||
s.page = s.page + 1
|
||
if s.page > table.getn(s.obj) then
|
||
s.page = 1
|
||
return "Похоже, эта страница была последней. Ты перелистываешь в самое начало:^"..s.obj[s.page].pageDsc();
|
||
else
|
||
return "Ты переворачиваешь страницу альбома:^"..s.obj[s.page].pageDsc();
|
||
end
|
||
end;
|
||
['post_Exam,Open,Turn,LookUnder,LookAt'] = function(s)
|
||
local w = s.obj[s.page]
|
||
w:attr'seen'; -- фото осмотрено
|
||
if _'room2_s'.pl_high == 0 then -- если гг не под кайфом
|
||
w:attr'seen_before_high'; -- фото осмотрено до кайфа
|
||
if w:has'seen_on_high' then -- если фото был осмотрено под кайфом
|
||
w:attr'seen_after_high'; -- фото осмотрено после кайфа
|
||
end
|
||
elseif _'room2_s'.pl_high == 1 then -- если гг под кайфом
|
||
w:attr'seen_on_high'; -- фото осмотрено под кайфом
|
||
end
|
||
return false;
|
||
end;
|
||
-- found_in = {'room2_terassa'};
|
||
obj = {
|
||
room2_Photo {
|
||
-"фотография|страница|фото";
|
||
nam = "room2_album_1";
|
||
pageDsc = function()
|
||
local _culman = ""
|
||
local _members = ""
|
||
local _stone = _'room2_album_6'.has_seen_light and "^^Пульсация света в камне возвращается к едва различимому красноватому отсвету. Как будто камень реагирует на то, какая фотография сейчас открыта." or ""
|
||
if _'room2_s'.pl_high == 0 then
|
||
_members = "Кто-то в костюме и в лихо сдвинутой кепке, кто-то в гимнастёрке с медалью, кто-то в невзрачной робе и с короткой стрижкой. Почти никого старше тридцати. "
|
||
else
|
||
_members = "Там, где должны быть лица, фото расцарапано до белой основы. "
|
||
end
|
||
if _'room2_s'.pl_high == 1 and _'room2_album_7':has'seen' then
|
||
_culman = "На фоне — кульман, на котором расчерчен зловещий зиккурат."
|
||
else
|
||
_culman = "На фоне — кульман со схемами и картами, впрочем, качество фотографии не позволяет разглядеть деталей."
|
||
end
|
||
return " Фотография восьмерых участников экспедиции на кафедре исторического факультета МГУ. ".._members.._culman.._stone;
|
||
end
|
||
};
|
||
room2_Photo {
|
||
-"фотография|страница|фото";
|
||
nam = "room2_album_2";
|
||
pageDsc = function()
|
||
if _'room2_s'.pl_high == 0 then
|
||
local _zundapp = ""
|
||
if _'room2_album_3':hasnt'seen' then
|
||
_zundapp = "В полумраке на заднем плане видны мотоциклы с колясками, но не в фокусе, поэтому непонятно, какой марки."
|
||
else
|
||
_zundapp = "В полумраке на заднем плане видны «Цундаппы» с колясками, но не в фокусе, поэтому деталей не разобрать."
|
||
end
|
||
return " Фотография гаража: на переднем плане — «Студебеккер», подготавливаемый к пустынному пробегу. Жёсткий кунг обтянут светлой тканью, на крышу кабины установлен деревянный щит от нагрева, в открытом капоте видны большие цилиндры воздушных фильтров, установлены дополнительные противотуманные фары. ".._zundapp;
|
||
else
|
||
return " Фотография гаража: на переднем плане — «Студебеккер», перед подготовкой к пустынному пробегу. Видно, что машина в своём недавнем прошлом — фронтовая. Кунг насквозь прошит пулеметными очередями, кабина изнутри — в багровых пятнах, фары разбиты. В полумраке на заднем плане — другая техника в схожем состоянии."
|
||
end
|
||
end
|
||
};
|
||
room2_Photo {
|
||
-"фотография|страница|фото";
|
||
nam = "room2_album_3";
|
||
pageDsc = function()
|
||
if _'room2_s'.pl_high == 0 then
|
||
if _'room2_album_3':hasnt'seen' then
|
||
return " Фотография железнодорожного состава: на платформах друг за другом закреплены два «Студебеккера» и три мотоцикла. По характерной раме ты, наконец, понимаешь, что это за марка: «Цундаппы». Само собой.";
|
||
else
|
||
return " Фотография железнодорожного состава: на платформах друг за другом закреплены два «Студебеккера» и три мотоцикла с характерными рамами — трофейные «Цундаппы»."
|
||
end
|
||
else
|
||
return " Фотография железнодорожного состава и путей перед ним: на платформах закреплены и полускрыты под брезентом «Студебеккеры» и трофейные «Цундаппы».^Участок путей перед локомотивом неисправен — снимок застал группу пленных в изношенных немецких шинелях за укладкой новых шпал, пропитанных чёрным креозотом."
|
||
end
|
||
end
|
||
};
|
||
room2_Photo {
|
||
-"фотография|страница|фото";
|
||
nam = "room2_album_4";
|
||
pageDsc = function()
|
||
if _'room2_s'.pl_high == 0 then
|
||
return " Фотография «Цундаппа» на фоне минаретов и большого портала, покрытого характерным орнаментом, под которым толпится большая толпа в полосатых халатах и чалмах. Хотя фото и чёрно-белое, ты уверена, что портал облицован керамикой глубокого лазоревого цвета. В углу подпись чернилами: «Самарканд».";
|
||
else
|
||
return " Фотография «Цундаппа» на фоне средневековых минаретов и большого портала, кое-где покрытого характерным орнаментом. Местность безлюдная и заброшенная. Керамическое покрытие сооружений давно осыпалось, их стены постепенно разрушаются и покрываются пятнами. В углу подпись чернилами: «Самарканд»."
|
||
end
|
||
end
|
||
};
|
||
room2_Photo {
|
||
-"фотография|страница|фото";
|
||
nam = "room2_album_5";
|
||
pageDsc = function()
|
||
if _'room2_s'.pl_high == 0 then
|
||
return " Фотография сгрудившихся участников экспедиции вокруг открытого капота одного из «Студебеккеров». Чуть правее один из группы (начальник?) общается с двумя местными, невысокими, в халатах и тюбетейках. На фоне выстроились в ряд разномастные глинобитные домики. В углу теми же чернилами и тем же почерком: «Кашгар».";
|
||
else
|
||
return " Фотография сгрудившихся участников экспедиции вокруг тела одного из своих. Чуть правее начальник группы направляет длинный «ТТ» на двух местных, невысоких, в халатах и тюбетейках, сжимающих ножи и ощерившихся. На фоне выстроились в ряд разномастные глинобитные домики. В углу теми же чернилами и тем же почерком: «Кашгар»."
|
||
end
|
||
end
|
||
};
|
||
room2_Photo {
|
||
-"фотография|страница|фото";
|
||
nam = "room2_album_6";
|
||
has_seen_light = false;
|
||
pageDsc = function()
|
||
local _dot = ""
|
||
local _stone = ""
|
||
if _'room2_s'.pl_high == 0 then
|
||
_dot = "светящаяся точка сигареты"
|
||
else
|
||
_'room2_album_6'.has_seen_light = true
|
||
_dot = "две светящиеся точки глаз"
|
||
_stone = "^^Ты замечаешь, как в чёрном обломке пульсация света становится всё заметней.";
|
||
end
|
||
return " Ночное фото «Студебеккера» на фоне засвеченной вспышкой пустыни. Трое участников в свете фар откапывают перед грузовиком две колеи. В темноте кабины — ".._dot..". Фонтан песка, сорвавшийся с одной из лопат, навсегда застыл в свете вспышки.".._stone;
|
||
end
|
||
};
|
||
room2_Photo {
|
||
-"фотография|страница|фото|зиккурат";
|
||
nam = "room2_album_7";
|
||
pageDsc = function()
|
||
if _'room2_s'.pl_high == 0 then
|
||
return " На переднем плане фотографии — оба грузовика и мотоциклы. Все члены экспедиции стоят у техники, спиной к камере. Они смотрят вдаль, туда, где посреди плоской пустыни возвышается огромный чёрный зиккурат.^Многоярусная пирамида с длинной лестницей, ведущей к самой вершине. Все линии геометрически чёткие и точные, совсем не тронутые временем. Тебе почему-то становится не по себе от одного взгляда на это угольно-чёрное сооружение.";
|
||
else
|
||
return " На переднем плане фотографии никого нет, ни техники, ни людей. Только у горизонта, над плоской пустыней возвышается огромный чёрный зиккурат.^Многоярусная пирамида с длинной лестницей, ведущей к самой вершине. Все линии геометрически чёткие и точные, совсем не тронутые временем. Даже здесь, в тысячах и тысячах километрах от этого угольно-чёрного монумента, ты чувствуешь исходящую от него угрозу.^^Свет, пульсирующий в камне становится ещё ярче."
|
||
end
|
||
end
|
||
};
|
||
room2_Photo {
|
||
-"фотография|страница|фото";
|
||
nam = "room2_album_8";
|
||
pageDsc = function()
|
||
if _'room2_s'.pl_high == 0 then
|
||
if _'room2_album_8':hasnt'seen_on_high' then
|
||
return " Хм, эта фотография смазанная и нечёткая. Никак нельзя понять, что на ней запечатлено. Зачем она здесь?";
|
||
else
|
||
return " Фотография опять смазанная и нечёткая. Ты уже не уверена, что тебе не привиделась та ужасная картина."
|
||
end
|
||
else
|
||
return " Фотография сделана в замкнутом помещении с чёрными стенами, полом и потолком. Все восемь участников экспедиции стоят перед объективом. Совершенно голые, с залитыми кровью плечами, они держат собственные головы в вытянутых вперёд руках. Глаза распахнуты в ужасе, рты перекошены в безмолвном крике.^^Камень вспыхивает изнутри красным светом."
|
||
end
|
||
end
|
||
};
|
||
};
|
||
}:attr'openable,~open';
|
||
|
||
-- room2_Exhibit {
|
||
-- -"журнал";
|
||
-- nam = "room2_journal";
|
||
-- description = "Описание журнала с газетными вырезками и телеграммами.";
|
||
-- obj = {
|
||
-- obj {
|
||
-- -"газетные вырезки,газетные,вырезки,газеты";
|
||
-- description = "Вырезки из газет, подклеенные в журнал.";
|
||
-- };
|
||
-- obj {
|
||
-- -"телеграммы";
|
||
-- description = "Телеграммы, подклеенные в журнал.";
|
||
-- }
|
||
-- }
|
||
-- }
|
||
|
||
room2_Exhibit {
|
||
-"карта|маршрут";
|
||
nam = "room2_map";
|
||
description = function (s)
|
||
local _study = room2_check_uni(3);
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Большая карта СССР и прилегающих стран от 1946-го года, на которую нанесена красная линия маршрута экспедиции: от Москвы через Саратов и Ташкент до Самарканда — пунктирная, обозначающая путь по железной дороге. От Самарканда через Коканд, Ош и перевал Талдык на Кашгар — двойная линия, проходящая по маршрутам средневекового Шёлкового Пути.".._study.." От Кашгара и в самый центр безлюдной пустыни Такла-Макан — линия тонкая и прямая, словно подробных данных о том, как именно продвигалась экспедиция, не было. Там, где кончается эта линия, нарисован красный кружок, обозначенный загадочным «КФ937».";
|
||
else
|
||
return "Большая карта СССР и прилегающих стран от 1946-го года, на которую нанесена красная линия маршрута экспедиции: сначала по железной дороге, затем через горные долины по маршрутам средневекового Шёлкового Пути.".._study.." И, наконец, в самое сердце смертельной пустыни Такла-Макан, где пульсирует чёрный треугольник.";
|
||
end
|
||
end;
|
||
}
|
||
|
||
----[[
|
||
-- #####
|
||
-- ## ##
|
||
-- ## ## ## ## ###### ## ## ## # ## ##### ## ## ## ## #####
|
||
-- ## ## ## ## ## ## ## ## # # # ## ## ## ## ## ### ## ##
|
||
-- ## ## ##### ###### ## ## ### ###### ####### ## # ## ######
|
||
-- ## ## ## ## ## ###### # # # ## ## ## ### ## ##
|
||
-- ##### ## ## ## ## ## # ## ##### ## ## ## ## #####
|
||
-- #####
|
||
--]]
|
||
|
||
room2_Far {
|
||
-"лес,осинник|деревья|сосны,осины,тени|чаща";
|
||
nam = "room2_forest";
|
||
description = function (s)
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Старый смешанный лес: величавые сосны тянутся к уже совсем летнему небу, а под ними — непролазный, тёмный осинник."
|
||
else
|
||
return "Лес вдруг стал темнее и более зловещим. Старые сосны скрипят, качаясь на ветру (но ветра ты не чувствуешь), а в непроходимом осиннике передвигаются медленные тени. Огородное пугало, раскинувшее перед лесом свои руки, кажется ещё меньше на фоне подступившей чащи."
|
||
end
|
||
end;
|
||
['before_Walk,Enter'] = function(s) mp:xaction("Walk", _"@n_to") end;
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}
|
||
|
||
room2_Far {
|
||
-"огород,заросший,каркас|теплица|трава";
|
||
nam = "room2_garden";
|
||
description = function (s)
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Неухоженный, неподготовленный к сезону огород. От окружающей травы его отличают только пустой каркас теплицы да высокое старое пугало."
|
||
else
|
||
return "Стебли сорной травы, захватившей огород, тянутся вверх к свету, покачиваясь на несуществующем ветру. И как будто сторонятся старого пугала."
|
||
end
|
||
end;
|
||
['before_Walk,Enter'] = "Тебе там нечего делать, да и к лесу приближаться не хочется.";
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}
|
||
|
||
room2_Far {
|
||
-"небо|солнце|облака,волны";
|
||
nam = "room2_sky";
|
||
description = function (s)
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Чистое, глубоко-синее небо с ярким и уже почти по-летнему жарким солнцем."
|
||
else
|
||
return "Небо кажется ещё глубже и ещё более синим, чем раньше. Ты прямо-таки видишь, как от ослепительно яркого солнца расходятся волны света и жара."
|
||
end
|
||
end;
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}
|
||
|
||
-- room2_Far {
|
||
-- -"дом,особняк";
|
||
-- nam = "room2_house";
|
||
-- description = function (s)
|
||
-- return ""
|
||
-- end;
|
||
-- ['before_Walk,Enter'] = function(s) mp:xaction("Walk", _"@s_to") end;
|
||
-- found_in = {'room2_terassa'};
|
||
-- }
|
||
|
||
room2_Far {
|
||
-"пугало|руки,палки|глаза|мяч,уилсон,рот|старый халат, халат";
|
||
nam = "room2_scarecrow";
|
||
description = function (s)
|
||
local _txt = s:hasnt'seen' and " (Уилсон?!)" or ""
|
||
if _'room2_s'.pl_high == 0 then
|
||
return "Большое старое пугало встаёт над высокой травой огорода, раскинув в стороны длинные руки-палки, словно последний защитник, вставший между лесом и домом. На него надет потрёпанный рабочий халат с полустёртым логотипом. Вместо головы — дырявый волейбольный мяч".._txt..", на котором углём нарисованы круглые чёрные глаза и зубастый рот."
|
||
else
|
||
local _t = s:has'seen_before_high' and " ещё более" or ""
|
||
return "Старое пугало".._t.." походит на последнего защитника, оставшегося от некогда большой армии. Он стойко возвышается над змеящимися стеблями сорной травы. Он раскинул руки в стороны, чтобы то ли не пустить лес к людям, то ли удержать людей от похода в чащу. Он пытается обернуться и гримасничает — угольные глаза беспрестанно меняют размер и сдвигаются по голове-мячу".._txt..", а зубастый рот то открывается, то закрывается."
|
||
end
|
||
end;
|
||
before_Wave = function(s) mp:xaction("WaveHands",s) end;
|
||
before_WaveHands = function(s)
|
||
if _'room2_s'.pl_high == 1 then
|
||
return "Ты вскидываешь руку и что есть силы машешь пугалу. И оно — должно быть, от порыва ветра (какого ветра?) — поворачивается туда-сюда, махнув тебе рукавом халата в ответ."
|
||
end
|
||
return "Ты помахала руками, но пугало не ответило.";
|
||
end;
|
||
before_Walk = "Пожалуй, нет.";
|
||
found_in = {'room2_terassa','room2_on_terrasa'};
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
-- Менять нельзя!!!! Это не ваш предмет!!! Вы не знаете как он выглядит, его придумает другой автор!!!
|
||
--obj {
|
||
-- -"большой ключ,ключ",
|
||
-- nam = "bigkey",
|
||
-- description = "Большой ключ.",
|
||
--}
|
||
|
||
room {
|
||
nam = 'test_room1';
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|