381 lines
14 KiB
Lua
381 lines
14 KiB
Lua
-- $Name: Долгая служба$
|
||
-- $Version: 0.1$
|
||
instead_version "1.9.1"
|
||
require "lib"
|
||
require "para"
|
||
require "dash"
|
||
require "quotes"
|
||
require "xact"
|
||
|
||
game.use = function(s,v)
|
||
return _("Это не есть ")..v.nam .."!";
|
||
end
|
||
local old = obj;
|
||
function tcall(f,s)
|
||
if type(f) == "function" then
|
||
return tcall(f(s),s);
|
||
else
|
||
return f;
|
||
end
|
||
end
|
||
function obj(tab)
|
||
if tab.nam == nil then tab.nam = "" end
|
||
local dsc = tab.dsc;
|
||
tab.dsc = function(s)
|
||
if s.cnd == nil or s:cnd() then
|
||
return tcall(dsc,s);
|
||
end
|
||
end
|
||
return old(tab);
|
||
end
|
||
function vb(o) o.inv = function(s) return s.nam.."!" end; return obj(o) end
|
||
|
||
main = room {
|
||
nam = "..."
|
||
,dsc = "Я есть бежать."
|
||
,act = function()
|
||
walk(start2);
|
||
end
|
||
,obj = { vobj("next", '{'.._('Дальше')..'}') }
|
||
}
|
||
|
||
start2 = room {
|
||
nam = "..."
|
||
,act = function() walk(start3) end
|
||
,dsc= "Я есть бежать, бежать."
|
||
,obj = { vobj("next", '{'.._('Дальше')..'}') }
|
||
}
|
||
|
||
start3 = room {
|
||
nam = "..."
|
||
,act = function() walk(start4) end
|
||
,dsc= _("Зубастый гнаться за мной, я не успеть бежать в нора как раньше. Я бежать в какой-то другой нора -- длинный-длинный туннель. Потом ещё один туннель. Потом бежать в ещё один туннель. Потом в ещё один туннель.^Зубастый не отставать, зубастый бежать быстро-быстро.")
|
||
,obj = { vobj("next", '{'.._('Дальше')..'}') }
|
||
}
|
||
start4 = room {
|
||
nam = "..."
|
||
,enter = music_("daybefore", 0)
|
||
,title = _("КРЫСИНАЯ НОРА")
|
||
,num = 1
|
||
,act = function() take(eat);take(cry);take(th);take(climb);take(cry);walk(floor) end
|
||
,dsc= _("Я бежать мимо человеков, потом бежать в какой-то странный большой нора, который двигаться вверх! Потом я бежать куда-то, где много человеков. Я бояться! Я лезть на ящик. Потом я лезть на ящик. Потом я ещё лезть на ящик. Потом я лезть в потолочный нора. Потом я бежать по потолочный нора -- длинный-длинный нора! Потом я вдруг падать! Больно падать! И вот я здесь...")
|
||
,obj = { vobj("next", '{'.._('Где я?')..'}') }
|
||
}
|
||
|
||
eat = vb {
|
||
nam = _("ЖРАТЬ")
|
||
,use = function(s,v)
|
||
if v==cheesetake or v==cheesetake0 then
|
||
v._on=false;
|
||
return (_("Сыр вкусно! Могу жрать сколько угодно сыр! Ещё! Ещё!"));
|
||
end
|
||
end
|
||
}
|
||
|
||
push = vb {
|
||
nam = _("ТОЛКАТЬ")
|
||
,use = function(s,v)
|
||
if v==cheesetake then
|
||
v._on = false;
|
||
cheesetake0._on = true;
|
||
return (_("Я толкать сыр. Сыр падать на пол, прямо к двери."));
|
||
elseif v==cheesetake0 then
|
||
return (_("Некуда толкать!"));
|
||
end
|
||
end
|
||
}
|
||
|
||
th = vb {
|
||
nam = _("ГРЫЗТЬ")
|
||
,use = function(s,v)
|
||
if v==cheesetake_stick then
|
||
cheesetake._on = false;
|
||
cheesetake0._on = true;
|
||
return (_("Я грызть странный скобка. Скобка неожиданно сгибаться, и сыр падать со стола!"));
|
||
end
|
||
if v==chair1 or v==chair2 then return (_("Я грызть стул... Стул есть невкусный! Не еда!")) end
|
||
if v==desk1 or v==desk2 then return (_("Я пытаться грызть стол... Глупый стол! Почти сломать мне зуба!")) end
|
||
if v==door then return (_("Человечий двери не прогрызть! Я пытаться... Терять два, нет... двадцать два зуба!")) end
|
||
if v==computer and not v._used then
|
||
v._used = true;
|
||
return (_("Я грызть глупый устройство... Невкусно! Но я грызть и грызть. Вдруг чёрный коробка вспыхивать! И появляться в чёрный коробка зверь страшный-страшный -- чёрный шерсть всклокоченный, красный глаза гореть! Страшно!.. А, нет. Это же я.^Потом появляться другой картинка -- железный человек, похожий на мусорный бак заходить в комната! Он вставать у двери и пищать, как я! Пи-па-пи-пи-па! Дверь открываться!"))
|
||
elseif v==computer then
|
||
return (_("Устройство больше не вспыхивать! Всё есть сгрызено. Надо грызть другой устройство!"));
|
||
elseif v==foodgen then
|
||
foodgen._ch = not foodgen._ch;
|
||
return (_("Я грызть большая ручка, и она повернуться!"));
|
||
elseif v==foodgen2 then
|
||
if foodgen._ch then
|
||
if cheesetake._on then
|
||
return (_("Уже есть сыр! Надо жрать! Жрать! Жрать!"));
|
||
else
|
||
cheesetake._on=true;
|
||
return (_("Из устройства выпадать кусочек... сыра!"));
|
||
end
|
||
else
|
||
return (_("Из устройства что-то литься и растекаться по стол!"));
|
||
end
|
||
elseif v==cheesetake or v==cheesetake0 then
|
||
return (_("Сыр надо жрать!"));
|
||
end
|
||
end
|
||
}
|
||
|
||
cry = vb {
|
||
nam = _("ПИЩАТЬ")
|
||
,use = function(s,v)
|
||
if v==door and computer._used then
|
||
if rat1._on and rat2._on and cheesetake0._on then
|
||
return walk(end1);
|
||
else
|
||
return (_([[Я пищать на дверь, пищать и пищать. Дверь открываться! Но тут же вновь закрываться! Мерзкий человечий голос говорить: "Не обнаружен объект у двери. Дверь блокируется".]]));
|
||
end
|
||
else
|
||
return (_("Пи-пи! Пи! Пи! Пи!"))
|
||
end
|
||
end
|
||
}
|
||
|
||
climb = vb {
|
||
nam = _("ЛЕЗТЬ")
|
||
,use = function(s,v)
|
||
if v==desk1 then return (_("Стол есть высоко! Не долезть!")) end
|
||
if v==shaft1 or v==shaft2 then return (_("Мне не долезть до потолочный нора!")) end
|
||
if v==floor1 then walk(floor) end
|
||
if v==chair1 then walk(onchair) end
|
||
if v==desk2 then walk(ondesk) end
|
||
if v==chair2 then walk(onchair) end
|
||
if v==device2 then walk(oncloner1) end
|
||
end
|
||
}
|
||
|
||
floor = room {
|
||
nam = _("На полу")
|
||
,pxa = {
|
||
{ "door4", 220 },
|
||
{ if_("rat1._on","rat"), 130 },
|
||
{ if_("rat2._on","rat"), 180 },
|
||
{ if_("rat2._on","rat"), 360 },
|
||
{ "column", 70 },
|
||
{ "column", 400 }
|
||
}
|
||
,dsc = _("Жилище людей. Пахнуть едой! И не едой...")
|
||
,obj = { "door", "cheesetake0", "rat1", "rat2", "shaft1", "desk1", "chair1", "device1" }
|
||
}
|
||
|
||
rat1 = obj {
|
||
dsc= function(s)
|
||
if cheesetake0._on then
|
||
return (_("{Другой Я} сидеть у двери и жрать сыр! Но почему, если другой Я жрать сыр, я по-прежнему голоден?"));
|
||
else
|
||
return (_("{Другой Я} сидеть далеко от двери. Другой Я вращать красными глазами."));
|
||
end
|
||
end
|
||
,act = "Это Я!"
|
||
,cnd = function(s) return s._on end
|
||
}
|
||
|
||
rat2 = obj {
|
||
dsc= function(s)
|
||
if cheesetake0._on then
|
||
return (_("Два {других Я} пытаться отобрать у сыр у другого другого Я!"));
|
||
else
|
||
return (_("Два {других Я} бродить по комнате и вращать красными глазами."));
|
||
end
|
||
end
|
||
,act = _("Это Я!")
|
||
,cnd = function(s) return s._on end
|
||
}
|
||
|
||
cheesetake0 = obj {
|
||
dsc = _("У двери лежит {кусочек сыра}.")
|
||
,act = _("Сыр! Вкусно! Жрать!")
|
||
,cnd = function(s) return s._on end
|
||
}
|
||
|
||
door = obj {
|
||
dsc = _("Есть {дверь}.")
|
||
,act = _("Дверь есть закрыта!")
|
||
}
|
||
|
||
shaft1 = obj {
|
||
dsc = _("Есть потолочная {нора}.")
|
||
,act = _("Есть очень высоко-высоко. Нора не долезть. Люди тупой! Потолочная нора неудобно!")
|
||
}
|
||
|
||
desk1 = obj {
|
||
dsc = _("Есть {стол} и")
|
||
,act = _("Стол большой.")
|
||
}
|
||
|
||
chair1 = obj {
|
||
dsc = _("есть {стул}.")
|
||
,act = _("Стул! Стул! Лезть!")
|
||
}
|
||
|
||
device1 = obj {
|
||
dsc = _("Есть {что-то большой и гудящий}. Он есть похожий на мусорный бак, но в пять... нет в пятьдесят пять раз больше!")
|
||
,act = _("Запах есть плохой. Не есть еда. Надо держаться дальше.")
|
||
}
|
||
|
||
onchair = room {
|
||
nam = _("На стуле")
|
||
,pxa = {
|
||
{ "column", 455 },
|
||
{ "door6", 50 },
|
||
{ "shaft", 300 }
|
||
}
|
||
,dsc = _("Я лезть на стул.")
|
||
,obj = { "floor1", "shaft1", "desk2" }
|
||
}
|
||
|
||
floor1 = obj { dsc = _("Ниже есть {пол}."), act = _("Пол! Слезть!") }
|
||
|
||
desk2 = obj {
|
||
dsc = _("Есть {стол}. Большой стол.")
|
||
,act = _("Близко! Совсем близко! Можно лезть! Там есть запах!")
|
||
}
|
||
|
||
ondesk = room {
|
||
nam = _("На столе")
|
||
,pxa = {
|
||
{ if_("foodgen._ch", "foodgen2","foodgen"), 0 },
|
||
{ if_("cheesetake._on","stick"), 160 },
|
||
{ if_("cheesetake._on","cheese"), 160, 130 },
|
||
{ "computer", 390 },
|
||
}
|
||
,dsc = _("Я сидеть на стол. Здесь запах!")
|
||
,obj = { "chair2", "foodgen", "foodgen2", "cheesetake_stick", "cheesetake", "computer", "shaft2", "device2" }
|
||
}
|
||
|
||
cheesetake_stick = obj {
|
||
dsc = _("Из стол выдвигаться странный {скобка},")
|
||
,act = _("Странный скобка.")
|
||
,cnd = function(s) return cheesetake._on end
|
||
}
|
||
|
||
cheesetake = obj {
|
||
dsc = _("на котором лежать {сыр}!")
|
||
,act = _("Сыр! Вкусно! Жрать! Жрать! Жрать!")
|
||
,cnd = function(s) return s._on end
|
||
}
|
||
|
||
chair2 = obj {
|
||
dsc = _("Ниже стол есть {стул}.")
|
||
,act = _("Лезть вниз. Можно!")
|
||
}
|
||
|
||
foodgen = obj {
|
||
dsc = _("На стол есть ящик с {длинный ручка} и")
|
||
,act = _("Странно. Пахнуть еда. На устройство надпись: синтезатор... лактоза.. Больше не понимать! Давно ходить школа!")
|
||
}
|
||
|
||
foodgen2 = obj {
|
||
dsc = _("{большой кнопка}.")
|
||
,act = _("Странный большой кнопка...")
|
||
}
|
||
|
||
computer = obj {
|
||
dsc = _("На стол есть ещё один людское {устройство} -- чёрный коробка, много кнопок.")
|
||
,act = _("Люди глупый! Это нельзя есть!")
|
||
}
|
||
|
||
device2 = obj {
|
||
dsc = _("Рядом со стола есть большой и гудящий {мусорный бак}.")
|
||
,act = _("Он страшный. Страшно гудит.")
|
||
}
|
||
|
||
shaft2 = obj {
|
||
dsc = _("Есть потолочная {нора}.")
|
||
,act = _("Потолочная нора уже близко. Почти залезть. Но надо выше. Надо лезть на большой и гудящий.")
|
||
}
|
||
|
||
oncloner1 = room {
|
||
nam=""
|
||
,pxa = { { "cloner", 407 } }
|
||
,enter = function(s) if rat2._on then p (_("Мне больше не нужно лезть на мусорный бак."));return false end end
|
||
,act = function() rat1._on=true; walk(floor) end
|
||
,dsc = function()
|
||
if rat1._on then
|
||
cheesetake0._on = false;
|
||
rat2._on = true;
|
||
return (_("Я снова лезть на мусорный бак! Другой Я лезть со мной! Другой я делать то же, что делать я, ведь это я. Мы оба падать в чёрный нора, оба сидеть там, и нас обоих выталкивать. Теперь других Я -- четыре! Много Я!"));
|
||
else
|
||
return (_("Я лезть на мусорный бак. Я почти долезть! Но тут я падать! Падать и падать! Оказываться в какой-то тёмный запертый нора. Я думать -- полный капец. Еда -- нет. Выхода -- нет. Но потом вспышки! Потом меня что-то выталкивать! И вот я опять на полу комната.^Рядом со мной сидеть зверь страшный, со страшными красными глазами... Нет, это же я. Нет, как же? Я сидеть рядом с собой. Я не понимать!"))
|
||
end
|
||
end
|
||
,obj = { vobj("next", '{'.._('Дальше')..'}') }
|
||
}
|
||
|
||
end1 = room {
|
||
nam = ""
|
||
,enter = mute_()
|
||
,act=function(s) walk(end2) end
|
||
,pxa = { { "door4", 190 } }
|
||
,dsc = _([[Я пищать пи-па-пи-пи-па, и дверь открываться! Я тут же бежать из комната. Я вдруг думать -- зачем я бежать из комната, ведь там много других Я и много сыра! Но дверь уже закрыться! Я пищать на дверь, но дверь -- "не обнаружено объекта"! Это ужасно!]])
|
||
,obj = { vobj("next", '{'.._('Дальше')..'}') }
|
||
}
|
||
|
||
end2=room{
|
||
nam="",
|
||
enter=function(s)
|
||
timer:set(3000)
|
||
end,
|
||
dsc=txtc(_("Спустя несколько часов...")),
|
||
timer=function()
|
||
timer:stop();
|
||
walk(end3);
|
||
end
|
||
}
|
||
|
||
end3=room{
|
||
nam="",
|
||
enter=function(s)
|
||
music_("spookyloop")();
|
||
timer:set(3000)
|
||
end,
|
||
pxa = {
|
||
{"cloner",407}, {"rat",10}, {"rat",80}, {"rat",150}, {"rat",220}, {"rat",300}, {"rat",370}
|
||
},
|
||
timer=function()
|
||
timer:stop();
|
||
walk(end4);
|
||
end
|
||
}
|
||
|
||
end4=room{
|
||
nam="",
|
||
enter=function(s)
|
||
timer:set(3000)
|
||
end,
|
||
pxa = {
|
||
{"table5",150}, {"rat",185,75}, {"rat", 301,75}, {"rat",10}, {"rat",80}, {"rat",150}, {"rat",360}, {"rat",440}
|
||
},
|
||
timer=function()
|
||
timer:stop();
|
||
walk(end5);
|
||
end
|
||
}
|
||
end5=room{
|
||
nam="",
|
||
enter=function(s)
|
||
timer:set(3000)
|
||
end,
|
||
pxa = {
|
||
{"door4",190}, {"rat",10}, {"rat", 80}, {"rat",150}, {"rat",80}, {"rat",320}, {"rat",390}, {"rat",470}
|
||
},
|
||
timer=function()
|
||
timer:stop();
|
||
walk(end6);
|
||
end
|
||
}
|
||
end6=room{
|
||
nam="",
|
||
enter = function()
|
||
mute_()();
|
||
complete_("rat")()
|
||
end,
|
||
act = gamefile_("longwork.lua"),
|
||
obj = { vobj("next", txtc(_("КОНЕЦ?^^{Это только начало...}"))) }
|
||
}
|