|
|
-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "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 ""; |
|
|
local _needle = s:hasnt'seen' and " (Картушка — это та часть морского компáса, которая поворачивается вместо стрелки у сухопутного компаса)." or ""; |
|
|
return "Старинный морской " .. s:noun('им') .. _txt .. ". Медный корпус с нанесёнными на него румбами, пожелтевшая картушка повёрнута красной стрелкой Норда в сторону леса." .. _needle .. _study; |
|
|
else |
|
|
return "Теперь с компáсом всё в порядке — картушка замерла и своей красной «N» указывает в сторону леса." |
|
|
end |
|
|
else |
|
|
if s:hasnt'seen_on_high' then |
|
|
local _txt = s:hasnt'seen' and " («компáсом», мысленно поправляешь ты себя)" or ""; |
|
|
return "Что-то не так с этим " .. s:noun('тв') .. _txt .. " — его картушка почему-то безостановочно вращается. Ты никогда такого не видела." |
|
|
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 (_'room2_s'.pl_high == 1) 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.." походит на последнего защитника некогда большой армии. Он стойко возвышается над змеящимися стеблями сорной травы. Он раскинул руки в стороны, чтобы то ли не пустить лес к людям, то ли удержать людей от похода в чащу. Он оборачивается и гримасничает — угольные глаза меняют размер и сдвигаются по голове-мячу, а зубастый рот то открывается, то закрывается." |
|
|
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'}; |
|
|
} |
|
|
|
|
|
room2_Far { |
|
|
-"старый халат, халат, логотип|лого"; |
|
|
nam = "room2_scarecrow_logo"; |
|
|
description = function (s) |
|
|
local _txt = "Полустёртое лого на халате: " |
|
|
if _'room2_s'.pl_high == 0 then |
|
|
return _txt.."«Ми…кат…ик»." |
|
|
else |
|
|
return _txt.."«Мискатоник»." |
|
|
end |
|
|
end; |
|
|
found_in = {'room2_terassa','room2_on_terrasa'}; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Менять нельзя!!!! Это не ваш предмет!!! Вы не знаете как он выглядит, его придумает другой автор!!! |
|
|
--obj { |
|
|
-- -"большой ключ,ключ", |
|
|
-- nam = "bigkey", |
|
|
-- description = "Большой ключ.", |
|
|
--} |
|
|
|
|
|
room { |
|
|
nam = 'test_room1'; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|