17rooms/room5.lua

270 lines
12 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room5_" или "podval_"
-- Все описания можно менять
-- Задача: Это изначально тёмная комната. Игрок может придти как с источником света, так и без него. Задача - найти предмет pyramidekey
room {
nam = "room5_podval";
title = "Подвал";
dsc = function(s)
-- if (s :has 'light') then
p "Страшная подвальная комната. Рядом со входом ржавый вентиль с веревкой. "
-- else
-- p "Темно, хоть глаз выколи. Тебе удалось нащупать вентиль на стене и верёвку, свисающую с потолка."
-- end
end;
dark_dsc = "Темно, хоть глаз выколи. Тебе удалось нащупать вентиль на стене и верёвку, свисающую с потолка.";
u_to = 'room4_kladovka';
before_Listen = "Ничего не слышно.";
before_Smell = "Ничем не пахнет.";
obj = { 'room5_verev', 'room5_ventil','room5_podval_decor', 'room5_stena' };
}: attr '~light'
-- Менять нельзя!!!! Это не ваш предмет!!! Вы не знаете как он выглядит, его придумает другой автор!!!
--obj {
-- -"пирамидальный ключ,ключ";
-- nam = "piramidekey";
-- description = "Пирамидальный ключ.";
--}
room {
nam = "room5_reserve";
title = "Специальная комната для отработавших обьектов";
}
obj {
-"островки|островок|облупившаяся краска,краска|островки краски|островок краски|летающие частицы,частицы|летающая частица,частица|щёлочка|щель|дверной проём|проём",
nam = 'room5_podval_decor';
}: attr 'scenery'
obj {
-"упавшая дверь|дверь",
nam = 'room5_fall_door';
description = "Упавшая дверь больше не представляет для тебя интереса.";
}: attr 'scenery'
obj {
-"небольшая коробка|коробка";
nam = 'room5_korob';
obj = { 'piramidekey' };
}: attr 'scenery,container,open'
obj {
-"потолок|потолочная ниша|ниша",
nam = 'room5_nisha';
description = "Ниша в потолке излучает яркий свет, словно прожектор. Видны летающие частицы пыли.";
}: attr 'scenery'
obj {
-"потайная дверь,дверь|кольцо|ручка двери|ручка",
nam = 'room5_door';
val_open = 0;
description = function(s)
p("Потайная дверь, ручка выполнена в виде кольца.")
if (s.val_open == 0) then
p("Дверь вровень со стеной.")
elseif (s.val_open == 1) then
p("Дверь немного раскрылась, оставив небольшую щёлку, размером с волос.")
elseif (s.val_open == 2) then
p("Дверь раскрылась на половину ступни.")
end
end;
before_Open = function(s)
if (s.val_open == 0) then
p("С большим усилием ты потянула за ручку двери и она немного приоткрылась, оставив щёлочку.")
s.val_open = 1
else
p("Как ты ни пыталась тянуть ручку, дверь не поддавалась. Пройти пока невозможно.")
end
return true
end;
before_Pull = function(s)
if (s.val_open == 0) then
p("С большим усилием ты потянула за ручку двери и она немного приоткрылась, оставив щёлочку.")
s.val_open = 1
else
p("Как ты ни пыталась тянуть ручку, дверь не поддавалась. Пройти пока невозможно.")
end
return true
end;
before_Push = function(s)
if (s.val_open == 0) then
p("Ты не понимаешь, зачем тебе толкать дверь.")
elseif (s.val_open == 1) then
p("Попытки приоткрыть дверь обычным способом провалились и ты решила попробовать её захлопнуть. Навалившись все телом тебе удалось её закрыть. Затем она открылась уже немного шире! Может пролезть половина твоей ступни.")
s.val_open = 2;
else
p("Этот трюк больше не работает! Да что сделать с этой проклятой дверью?! Да я её...")
end
return true
end;
before_Attack = function(s)
if (s.val_open < 2) then
p("Ты не понимаешь, зачем тебе ломать дверь.")
else
p("Со всей дури ты ударила дверь ногой и она, к твоему удивлению рухнула! Одна из петель совсем прогнила. В проёме показалась небольшая коробка.")
mp.score=mp.score+1;
move(_'room5_door','room5_reserve')
move(_'room5_fall_door','room5_podval')
move(_'room5_korob','room5_podval')
end
return true;
end;
}: attr 'static'
obj {
-"стена|стены",
nam = 'room5_stena';
description = function(s)
if (_'room5_ventil'.is_fixed) then
p("Стены больничного белого цвета. Кажется, на одной из стен появилась трещина, явно свежая.")
else
p("Стены больничного белого цвета. Навевают какие-то мрачные мысли.")
end
end;
}: attr 'scenery'
obj {
-"ровная трещина,подозрительная трещина,тонкая трещина,пыльная трещина,трещина|прямоугольник",
nam = 'room5_tres';
description = "Трещина на стене тонкая и подозрительно ровная, образует прямоугольник около двух метров в высоту и метра в ширину. Какая же она пыльная!";
before_Touch = function(s)
p("Немного потрогав края трещины, ты обнаружила, что это потайная дверь! Чуточку усердия в очистке и дело в шляпе.")
mp.score=mp.score+1;
move(s,'room5_reserve')
move(_'room5_door','room5_podval')
return true
end;
before_Blow = function(s)
p("Немного подув на трещину, ты обнаружила, что это потайная дверь! Чуточку усердия в очистке и дело в шляпе.")
mp.score=mp.score+1;
move(s,'room5_reserve')
move(_'room5_door','room5_podval')
return true
end;
before_Rub = function(s)
p("Немного потерев трещину, ты обнаружила, что это потайная дверь! Чуточку усердия в очистке и дело в шляпе.")
mp.score=mp.score+1;
move(s,'room5_reserve')
move(_'room5_door','room5_podval')
return true
end;
before_Attack = function(s)
p("Немного постучав по трещине, ты обнаружила, что это потайная дверь! Чуточку усердия в очистке и дело в шляпе.")
mp.score=mp.score+1;
move(s,'room5_reserve')
move(_'room5_door','room5_podval')
return true
end;
}: attr 'scenery'
obj {
-"веревка|жгут",
nam = 'room5_verev';
blind_desc = "На ощупь эластичный жгут, не очень толстый.";
light_desc = "Грязная веревка, свисает с какой-то ниши в потолке.";
is_tied = false;
description = function(s)
if (not mp:thedark()) then
p(s.light_desc)
else
p(s.blind_desc)
end
if (s.is_tied) then
p "Веревка привязана к вентилю. Где ей, кажется, самое место."
end
end;
before_Touch = function(s)
p(s.blind_desc)
return true
end;
before_Take = function(s)
p "Жгут очень длинный и идёт куда-то наверх. Ты не понимаешь как его взять с собой."
return true
end;
before_Pull = function(s)
p "Ты потянула жгут на себя и где-то наверху мелькнул свет. К сожалению, жгут оказался слишком тугим и вырвался из рук. Свет погас."
return true
end;
before_Climb = function(s)
p "В школе у тебя был трояк по физкультуре. Не очень приятное воспоминание, но что поделать. Хотя может в этом что-то есть."
return true
end;
before_Tie = function(s,w)
if (s.is_tied) then
p "Ты уже надежно привязала к вентилю, всё в порядке!"
return true
elseif (w==_'room5_ventil') then
p "Получилось! Хоть узлы не забыла как вязать."
mp.score=mp.score+1;
s.is_tied = true
return true
else
return false
end;
end;
}: attr 'scenery,luminous'
obj {
-"большой вентиль,ржавый вентиль,мерзкий вентиль,вентиль",
nam = 'room5_ventil';
numturns = 0;
is_fixed = false;
light_desc = "Мерзкий ржавый вентиль с островками облупившейся краски.";
blind_desc = "На ощупь холодный. Если подналечь, то все крысы разбегутся от жуткого скрипа.";
description = function(s)
if (not mp:thedark()) then
p(s.light_desc)
else
p(s.blind_desc);
end
if (_'room5_verev'.is_tied) then
if s.is_fixed or s.numturns > 0 then
p "Веревка сильно натянута и она каким-то образом открывает доступ к свету из ниши."
else
p "Веревка привязана к вентилю."
end
end
end;
before_Touch = function(s)
p(s.blind_desc)
return true
end;
before_Turn = function(s)
if (_'room5_verev'.is_tied == false) then
p "С очень большим трудом вентиль поддался. Такое ощущение, что им всё-таки иногда пользуются. Но, никакой реакции"
else
if (s.is_fixed == false) then
if (s.numturns == 0) then
p "Кажется прошло полгода, прежде чем удалось провернуть вентиль. Откуда-то сверху забрезжил свет..."
_'room5_podval':attr'light'
s.numturns = 3;
elseif (s.numturns < 5) then
p "Вентиль провернулся намного легче."
s.numturns = s.numturns+2;
if (s.numturns >= 5) then
p "Вентиль начал закручиваться сам по себе! Верёвка максимально натянулась и с потолка раздался грохот. Такое ощущение, что стены содрогнулись! "
move(_'room5_nisha','room5_podval')
move(_'room5_tres','room5_podval')
s.is_fixed = true
mp.score=mp.score+1;
end
end
else
p "Вентиль больше не вращается."
end
end
return true
end;
each_turn = function(s)
if (s.is_fixed == false) and (s.numturns > 0) then
s.numturns = s.numturns-1
if (s.numturns == 0) then
p "Вентиль начал быстро раскручиваться в обратную сторону и свет погас."
_'room5_podval':attr'~light'
end
end
end
}: attr 'scenery,luminous'