insteadose-3/dream.lua

367 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.

--$Name: Сон$
--$Version: 0.1$
--$Author: Андрей Лобанов$
instead_version '1.9.1'
require "lib"
require "para"
require "dash"
require "quotes"
require "hideinv"
require "nouse"
main=room{
nam='...',
title = {"С", "О", "Н" },
num = 12,
enter = music_("influensa",0),
dsc='Я прожил достойную жизнь. Построил свой дом, вырастил детей... Теперь они уважаемые люди. С соседями я в хороших отношениях. Мне нечего стыдиться за всю мою долгую жизнь.^^Но в последнее время странные события начали происходить вокруг меня. Сперва я всё списывал на причудливые видения старика, но сейчас мне страшно. И никто вокруг не замечает происходящего.',
act=function()
walk(home)
end,
obj={vobj('next','{Продолжить}')},
}
home=room{
nam='Мой дом',
pxa = {
{ "window4", 20 },
{ "table6", 240 },
{ "chair1", 440 },
{ "toolbox", 10 }
},
dsc='Я нахожусь у себя дома.',
obj={'window','mtable', 'box'},
way={'yard'},
}
window=obj{
nam='Окно',
dsc='Во двор выходит большое {окно}.',
act='На улице хорошая погода.',
}
mtable=obj{
nam='Стол',
dsc='Возле окна стоит {стол}.',
act='Грубо сработанный, но добротный стол, который я сделал сам.',
}
box=obj{
nam='Ящик',
dsc='В углу стоит {ящик} с инструментами.',
act=function(s)
if not s._need then
return 'Мне сейчас не нужны инструменты.'
else
if not have(axe) then
take(axe)
return 'Я взял топор.'
else
return 'Мне больше ничего не нужно из инструментов.'
end
end
end,
}
axe=obj{
_i=0,
_cuts=0,
nam='Топор',
inv='Хороший острый топор.',
use=function(s,w)
if w==fence then
return 'Этот забор я строил сам. Не буду его ломать.'
elseif w== people then
return 'Не буду я учинять бесчинства и убивать своих соседей и друзей.'
elseif w==tree then
ways(square):disable_all()
if not exist(branch) then
put(branch, tree)
elseif branch._i<4 then
branch._i=branch._i+1
if branch._i==4 then
walk(death)
end
end
s._i=s._i+1
if s._i==10 then
objs(tree):del(branch)
walk(after)
end
return 'Я замахнулся и как следует ударил по дереву.'
elseif w==branch then
if branch._i<3 then
return 'Слишком высоко -- мне никак не дотянуться до неё.'
else
branch._i=0
s._cuts=s._cuts+1;
return 'Ловко увернувшись, я одним сильным ударом отрубил ветку.'
end
end
end,
nouse='Не стоит размахивать топором налево и направо.',
}
yard=room{
nam='Двор',
pxa = {
{ if_("exist(neighbor)","yard2","yard"), 0 }
},
dsc='Я стою во дворе своего дома.',
obj={'fence'},
way={'home'},
}
fence=obj{
nam='Забор',
dsc='Двор обнесён невысоким {забором}.',
act=function()
if not exist(neighbor) and not box._need then
place(neighbor)
return 'За зобором я увидел соседа.'
else
return 'Этот забор я сам построил.'
end
end,
}
neighbor=obj{
nam='Сосед',
dsc='За забором своими делами занимается {сосед}.',
act=function(s)
if not s._dlg then
walk(neighor_dlg)
else
return 'Сосед занимается своими делами.'
end
end,
}
neighor_dlg=dlg{
hideinv=true,
pxa = {
{ "yard2", 0 }
},
nam='Разговор с соседом',
enter='Как только я обратил на соседа внимение, как он повернулся ко мне и сказал:^^-- Привет. Видал что на площади делается?',
phr={
{1,true,'Нет','-- Выросло там за ночь большое дерево чудное. Аккурат там где молодёжь в лапту играет. Ни клён ни берёза. Никогда таких деревьев не видел.',[[pon(2)]]},
{2,false,'Чудно. Надо посмотреть.','-- Ага. Все сейчас там и столпились.',[[neighbor._dlg=true;ways(yard):add(square);back()]]},
},
}
square=room{
nam='Площадь',
pxa = {
{ if_("axe._cuts==0", "bigtree",
if_("axe._cuts==1", "bigtree_nb1",
if_("axe._cuts>1", "bigtree_nb2")
)
)
,0 }
},
dsc='Я нахожусь на площади.',
obj={'tree','people'},
way={'yard'},
}
tree=obj{
nam='Дерево',
dsc=function()
if here()==square then
return 'Прямо посреди площади стоит большущее {дерево}.'
else
return 'Посреди площади лежит срубленное мной {дерево}.'
end
end,
act=function()
if here()==square then
return 'Никогда ничего подобного я не видел.'
else
objs(after):del(tree)
objs(after):add(hole)
return 'Едва я взглянул на дерево, как оно начало менять свою форму и обернулось гигантским червём, который запросто мог бы проглотить меня.^^Червь набросился на меня столь стремительно, что я едва успел увернуться. Он вгрызся в землю и исчез, оставив после себя широкий тоннель, уходящий вглубь.'
end
end,
}
branch=obj{
_i=0,
nam='Ветка',
dsc=function(s)
if s._i==0 then
return 'Одна из {веток} начала двигаться ко мне.'
elseif s._i==1 then
return 'Одна из {веток} приближается ко мне.'
elseif s._i == 2 then
return '{Ветка} скоро дотянется до меня.'
elseif s._i==3 then
return '{Ветка} уже почти дотянулась до меня.'
end
end,
act='Нельзя допустить чтобы она успела коснуться меня.',
}
people=obj{
nam='Люди',
dsc='Вокруг дерева столпились {жители} нашей деревни.',
act=function(s)
if here()==square then
if not have(axe) and event._n==3 then
return 'Стоят и смотрят на это жуткое дерево как ни в чём не бывало.'
else
if not have(axe) then
walk(event)
else
return 'Пока меня не было, исчезло очень много народу, а остальные стоят -- не шелохнутся. И все смотрят на это страшное дерево.'
end
end
else
return 'Немногие оставшиеся жители стоят и смотрят туда, где только что стояло дерево. Они даже не моргают.'
end
end,
}
after=room{
nam='Площадь',
pxa = {
{ if_("not exist(hole)","bigtree2","tunnel"), 0 }
},
dsc=function(s)
if not s._seen then
s._seen=true
return 'Наконец, я срубил дерево.'
else
return 'Я нахожусь на площади.'
end
end,
obj={'tree','people'},
}
hole=obj{
nam='Тоннель',
dsc='Посреди площади находится большая {дыра}, оставленная червём..',
act=function(s)
if not s._seen then
s._seen=true
if not path(vroom('В туннель','tunnel')) then
ways():add(vroom('В туннель','tunnel'))
end
end
return 'Абсалютно прямой туннель, в конце которого что-то ослепительно сияет.'
end,
}
event=room{
hideinv=true,
forcedsc=true,
_n=0,
nam='Площадь',
pxa = {
{"bigtree", 0}
},
dsc=function(s)
v='Вдруг одна ветка шевельнулась.'
music_("death",0)();
if s._n>=1 then
v=v..'^^Неторопливым движением она склонилась к молоденькой девушке, что живёт недалеко от меня.'
end
if s._n>1 then
v=v..'^^Ветка всё ближе и ближе пожбирается к девушке. Похоже, никто кроме меня не замечает этого.'
end
if s._n>2 then
v=v..'^^Вот ветка коснулась девушки и она пропала. Просто исчезла, как будто и не было её никогда. И никто не заметил этого!'
end
return v
end,
act=function(s)
if s._n==0 then
s._n=1
return true
elseif s._n==1 then
s._n=2
return true
elseif s._n==2 then
s._n=3
return true
else
box._need=true
objs(yard):del(neighbor)
walk(square)
end
end,
obj={vobj('next','{>>>>}')},
}
tunnel=room{
nam='Туннель',
dsc='Я нахожусь в туннеле.',
way={'after',vroom('К свету','nearlight')}
}
nearlight=room{
nam='Туннель',
dsc='Я всё шёл и шёл. Выход уже давно пропал вдали, а свет всё не приближался. В конце концов я понял что не могу идти обратно -- что-то толкает меня вглубь тоннеля и не пускает обратно.',
enter=function()
inv():del(axe)
end,
way={vroom('К свету','nearlight2')},
}
nearlight2=room{
nam='Тоннель',
dsc='Яркий свет заливает всё вокруг. Я уже не вижу стен туннеля, не вижу своих рук и ног -- есть только красивый и тёплый свет, заполняющий собой весь мир.',
act=function()
walk(dos)
end,
obj={vobj('next','{Далее}')},
}
dos=room{
nam='Операционная система',
dsc=function(s)
if not s._seen then
s._seen=true
return 'Всё исчезло. Остались только темнота и холод. Некоторое время ничего не происходило, а потом я услышал приятный голос операционной системы:^^-- Ваш сон закончен. Спасибо что использовали программное обеспечение "Dream Software".^^Ваши сны -- наша забота.'
else
return 'Я нахожусь в криокапсуле. Крышка капсулы не открывается.'
end
end,
act=function(s)
if not exist(button) then
put(button)
objs():del('next')
return 'Я осмотрелся повнимательней. Меня всё ещё мутит и я не очень понимаю где и кто я.'
end
end,
obj={vobj('next','{Далее}')},
}
button=obj{
nam='Кнопка',
dsc='Я вижу {кнопку} аварийного открытия капсулы.',
act=function()
walk(theend)
end,
}
theend=room{
nam='Конец',
enter = function() mute_()(); complete_("dream")() end,
dsc='Крышка отъехала в сторону. Трясясь от холода, я вышел в отсек K013...',
act = gamefile_("nightmare.lua"),
obj = { vobj("next", txtc("{Продолжение...}")) }
}
light=obj{
nam='Свет',
dsc='Вдалеке виден {свет}.',
act='Я не знаю почему, но меня тянет к нему.',
}
death=room{
nam='Конец',
dsc='Ветка всё таки коснулась меня.^^Время замерло, свет начал медленно угасать...',
}