2009-02-21 12:52:44 +02:00
mywear = obj {
nam = ' ватник ' ,
dsc = function ( s )
if here ( ) == stolcorridor then
2009-08-26 08:25:53 +03:00
local st = ' . ' ;
2009-02-21 12:52:44 +02:00
if not have ( ' gun ' ) then
2009-08-26 08:25:53 +03:00
st = ' , под которым спрятан дробовик. ' ;
2009-02-21 12:52:44 +02:00
end
2009-08-26 08:25:53 +03:00
return ' А еще на вешалке висит мой {ватник}' .. st ;
2009-02-21 12:52:44 +02:00
else
return ' Н а гвоздике, вбитом в сосновую дверь, висит {ватник}.' ;
end
end ,
inv = ' Зима. Н о я одет в теплый ватник. ' ,
tak = function ( s )
if here ( ) == stolcorridor then
if have ( ' alienwear ' ) then
return ' Я уже одет... Если я еще схвачу свой ватник, то буду выглядеть подозрительно... ' , false ;
end
if me ( ) . _walked then
me ( ) . _walked = false ;
inv ( ) : add ( ' gun ' ) ;
return ' В с е -же мой ватник самый лучший!' ;
end
return ' Это слишком заметно... ' , false ;
else
return ' Я снял с гвоздика свой ватник. ' ;
end
end ,
use = function ( s , o )
if o == ' guy ' then
return ' Немного помешкав, вы поменялись ватниками... ' ;
end
end
} ;
money = obj {
nam = ' деньги ' ,
inv = ' Большие деньги -- большое зло... Хорошо что у меня немного денег... ' ,
use = function ( s , w )
if w == ' shopman ' then
if shopman._wantmoney then
shopman._wantmoney = false ;
return ' Я расплачиваюсь с Владимиром. ' ;
end
return ' Я не хочу платить просто так... ' ;
end
end
} ;
mybed = obj {
nam = ' кровать ' ,
dsc = ' У окна стоит {кровать}.' ,
act = ' Сейчас не время спать. ' ,
} ;
mytable = obj {
nam = ' стол ' ,
dsc = ' В левом углу стоит дубовый {стол} с ящиками.' ,
act = function ( )
if not have ( money ) then
take ( ' money ' ) ;
return ' Порывшись в ящиках я достал деньги. ' ;
end
return ' Стол... Этот стол я сделал своими руками. ' ;
end ,
} ;
foto = obj {
nam = ' фото ' ,
dsc = ' Н а столе стоит {фотокарточка} в рамке.' ,
tak = ' Я взял фотографию. ' ,
inv = ' Н а этой фотографии изображены я и мой Барсик.' ,
} ;
gun = obj {
nam = ' дробовик ' ,
dsc = ' В правом углу хижины стоит {дробовик}.' ,
tak = ' Я взял дробовик и повесил е г о за спину. ' ,
inv = function ( s )
local st = ' ' ;
if s._obrez then
st = ' Кстати, теперь это обрез. ' ;
if s._hidden then
st = st .. ' Он спрятан в моей одежде. ' ;
end
end
if s._loaded then
return ' Дробовик заряжен... ' .. st ;
else
return ' Разряженный дробовик... Я редко пользовался им в лесу... ' .. st ;
end
end ,
use = function ( s , w )
if w == ' guard ' then
return ' Да, они негодяи, но во-первых они люди, а во-вторых все-равно не поможет... ' , false ;
end
if w == ' wire ' then
return ' Слишком близко... Тут нужно что-то вроде кусачек... ' , false ;
end
if w == ' cam ' and not cam._boken then
cam._broken = true ;
s._loaded = false ;
return ' Я прицелился в камеру и выстрелил из обоих стволов... Глухой выстрел потонул в порывах вьюги... ' ;
end
if not s._hidden then
if w == ' mywear ' or w == ' alienwear ' then
if not s._obrez then
return ' Я попытался спрятать дробовик в одежду, но он слишком длинный. '
else
s._hidden = true ;
2009-08-26 08:25:53 +03:00
return ' Теперь я могу спрятать обрез в одежде! ' ;
2009-02-21 12:52:44 +02:00
end
end
end
if not s._loaded then
return ' Н е заряжен...' , false ;
end
if w == ' mycat ' or w == ' shopman ' or w == ' guy ' then
return ' Это не моя мысль... ' , false ;
end
end
} ;
fireplace = obj {
nam = ' камин ' ,
dsc = ' У стены стоит {камин}. Огоньки пламени неравномерно освещают хижину.' ,
act = ' Мне нравится сидеть у камина долгими зимними вечерами. ' ,
} ;
mycat = obj {
nam = ' Барсик ' ,
_lflast = 0 ,
lf = {
[ 1 ] = ' Барсик шевелится у меня за пазухой. ' ,
[ 2 ] = ' Барсик выглядывает из за пазухи. ' ,
[ 3 ] = ' Барсик мурлычит у меня за пазухой. ' ,
[ 4 ] = ' Барсик дрожит у меня за пазухой. ' ,
[ 5 ] = ' Я чувствую тепло Барсика у себя за пазухой. ' ,
[ 6 ] = ' Барсик высовывает голову из за пазухи и осматривает местность. ' ,
} ,
life = function ( s )
local r = rnd ( 6 ) ;
if r > 2 then
return ;
end
r = rnd ( 6 ) ;
while ( s._lflast == r ) do
r = rnd ( 6 ) ;
end
s._lflast = r ;
return s.lf [ r ] ;
end ,
desc = { [ 1 ] = ' Возле камина уютно свернувшись в клубок спит мой кот {Барсик}. ' ,
[ 2 ] = ' {Барсик} изучает местность вокруг хижины. ' ,
[ 3 ] = ' {Барсик} сидит на соседнем сидении. ' ,
[ 4 ] = ' {Барсик} что-то изучает у мусорных баков... ' ,
[ 5 ] = ' {Барсик} трется у моих ног. ' ,
} ,
inv = ' Барсик у меня за пазухой... Бедный мой котик... Я спасу тебя!!! И весь мир... ' ,
dsc = function ( s )
local state
if here ( ) == home then
state = 1 ;
elseif here ( ) == forest then
state = 2 ;
elseif here ( ) == inmycar then
state = 3 ;
elseif here ( ) == village then
state = 4 ;
elseif here ( ) == escape3 then
state = 5 ;
end
return s.desc [ state ] ;
end ,
act = function ( s )
if here ( ) == escape3 then
take ( ' mycat ' ) ;
lifeon ( ' mycat ' ) ;
return ' Я забираю Барсика к с е б е за пазуху. ' ;
end
return ' Я почесал Барсика за ушами... ' ;
end ,
} ;
inmycar = room {
nam = ' в машине ' ,
dsc = ' Я в своей машине... Моя рабочая лошадка... ' ,
pic = ' gfx/incar.png ' ,
way = { ' forest ' , ' village ' } ,
enter = function ( s , f )
local s = ' Я открываю дверь машины. ' ;
if have ( ' mybox ' ) then
return ' Я не могу залезть в кабину вместе с этим ящиком... ' , false ;
end
if seen ( ' mycat ' ) then
s = s .. ' Барсик запрыгивает в кабину. '
move ( ' mycat ' , ' inmycar ' ) ;
elseif not me ( ) . _know_where then
return ' Нет... Сначала я должен найти Барсика! ' , false
end
if f == ' guarddlg ' then
return ' Хмм... Нужно что-то придумать... ' ;
end
return cat ( s , ' Н у что же, пора ехать... ' ) ;
end ,
exit = function ( s , t )
local s = ' '
if seen ( ' mycat ' ) then
s = ' Барсик выпрыгивает из машины первым. ' ;
move ( ' mycat ' , t ) ;
end
if ref ( t ) ~= from ( ) then
from ( ) . obj : del ( ' mycar ' ) ;
move ( ' mycar ' , t ) ;
return [ [
М а ш и н а н е о х о т н о з а в о д и т с я ... П о с л е д л и н н о г о п у т и я , н а к о н е ц , в ы к л ю ч а ю м о т о р и о т к р ы в а ю д в е р ь ... ] ] .. s ;
end
return ' Нет... Кажется я что-то забыл... ' .. s ;
end
} ;
mycar = obj {
nam = ' моя машина ' ,
desc = {
[ 1 ] = ' Перед хижиной стоит мой старенький {пикап} Toyota. ' ,
[ 2 ] = ' Н а стоянке машин стоит мой старенький {пикап}.' ,
[ 3 ] = ' Возле КПП стоит мой {пикап}. ' ,
[ 4 ] = ' З а углом стены стоит мой {пикап}.' ,
} ,
dsc = function ( s )
local state
if here ( ) == forest then
state = 1 ;
elseif here ( ) == village then
state = 2 ;
elseif here ( ) == inst then
state = 3 ;
elseif here ( ) == backwall then
state = 4 ;
end
return s.desc [ state ] ;
end ,
act = function ( s )
return goto ( ' inmycar ' );
end
} ;
iso = obj {
nam = ' изолента ' ,
inv = ' Моток изоленты. Синего цвета... ' ,
use = function ( s , o )
if o == ' trap ' and not trap._iso then
trap._iso = true ;
return ' Я изолировал капкан изолентой. ' ;
end
if o == ' wire ' then
return ' Зачем мне это? Я все-равно не пролезу по колючей проволоке. К тому же я не могу е е изолировать -- меня долбанет током! ' ;
end
end
} ;
trap = obj {
nam = ' капкан ' ,
dsc = ' В траве лежит стальной {капкан}.' ,
tak = ' Проклятые браконьеры! Я б е р у капкан с е б е . ' ,
inv = function ( s )
if s._salo then
return ' Большая мышеловка! К тому же изолированная изолентой. ' ;
end
if s._iso then
return ' Стальной. Очень острый. К тому же изолированный изолентой. ' ;
else
return ' Стальной. Очень острый. ' ;
end
end ,
use = function ( s , o )
if o == ' wire ' and not wire._broken then
if not s._iso then
return ' Капкан железный... Тряхонет током и будь здоров... ' ;
end
wire._broken = true ;
onwall.way : add ( ' eside ' ) ;
return ' Я подношу взведенный капкан к проволоке... Как я и думал -- капкан перебил проволоку! ' ;
end
end
} ;
deepforest = room {
i = 0 ,
nam = ' чаща ' ,
pic = ' gfx/deepforest.png ' ,
dsc = function ( s )
local st = ' Я в чаще... ' ;
if s._i == 1 then
return st .. ' Сосны и ели... Больше ничего... ' ;
elseif s._i == 2 then
return st .. ' Красивая березы -- только бы не заблудиться... ' ;
elseif s._i == 3 then
return st .. ' Непроходимая чаща... Ничего не пойму -- я что -- заблудился?... ' ;
elseif s._i == 4 then
return st .. ' Красивое озеро... Да... Может пора возвращаться? ' ;
elseif s._i == 5 then
s._trap = true ;
return st .. ' Какие-то кусты... Кусты.. Кусты... ' ;
else
return st .. ' Пенек... Какой красивый пенек... ' ;
end
end ,
enter = function ( s , f )
if f == ' forest ' then
s._trap = false ;
end
s._lasti = s._i ;
while ( s._i == s._lasti ) do
s._i = rnd ( 6 ) ;
end
s.obj : del ( ' trap ' ) ;
s.way : del ( ' forest ' ) ;
if s._i == 5 and not inv ( ) : srch ( ' trap ' ) then
s.obj : add ( ' trap ' ) ;
end
if s._i == 3 and s._trap then
s.way : add ( ' forest ' ) ;
end
if f == ' forest ' and inv ( ) : srch ( ' trap ' ) then
return [[Спасибо, я уже погулял по лесу...]] , false ;
end
if f == ' deepforest ' then
return ' Хмм... Посмотрим... ' ;
end
return [ [ В д и к у ю ч а щ у , п е ш к о м ?
Х м ... П о ч е м у б ы и н е т -- это же моя работа... Браконьеров погоняю...]], true;
--Я пол часа бродил по лесу, когда наткнулся на капкан...
--Проклятые ьраконьеры! Я взял капкан с собой.]], false;
end ,
way = { ' deepforest ' } ,
} ;
road = room {
nam = ' дорога ' ,
enter = function ( )
return ' Пешком? Нееет... ' , false ;
end
} ;
forest = room {
nam = ' перед хижиной ' ,
pic = ' gfx/forest.png ' ,
dsc = [ [
Н а у л и ц е п е р е д х и ж и н о й в с е з а н е с е н о с н е г о м . Д и к и й л е с о к р у ж а е т х и ж и н у с о в с е х с т о р о н . Д о р о г а , в е д у щ а я в п о с е л о к з а н е с е н а с н е г о м . ] ] ,
way = { ' home ' , ' deepforest ' , ' road ' } ,
obj = { ' mycar ' } ,
} ;
home = room {
nam = ' хижина ' ,
2009-08-27 07:38:56 +03:00
pic = function ( s )
if not seen ( ' mycat ' ) then
return " gfx/house-empty.png "
end
return " gfx/house.png " ;
end ,
2009-02-21 12:52:44 +02:00
dsc = [ [
В э т о й х и ж и н е я п р о в е л 10 л е т . 10 л е т н а з а д я с в о и м и р у к а м и п о с т р о и л е е . Д о в о л ь н о т е с н о , н о у ю т н о . ] ] ,
obj = { ' fireplace ' , ' mytable ' , ' foto ' , ' mycat ' , ' gun ' ,
vobj ( 1 , ' окно ' , ' В хижине есть единственное {окно}.' ) ,
' mybed ' , ' mywear ' } ,
way = { ' forest ' } ,
act = function ( s , o )
if o == 1 then
return ' З а окном белым-бело...' ;
end
end ,
exit = function ( )
if not have ( ' mywear ' ) then
return ' Н а улице холодно... Я не пойду туда без моего ватника.' , false
end
if seen ( mycat ) then
move ( ' mycat ' , ' forest ' ) ;
return [ [
2009-08-26 08:25:53 +03:00
К о г д а я в ы х о д и л и з х и ж и н ы , Б а р с и к в н е з а п н о п р о с н у л с я и б р о с и л с я м н е п о д н о г и .
2009-02-21 12:52:44 +02:00
Я п о г л а д и л е г о з а у ш а м и -- Значит едем вместе?
] ]
end
end
} ;
---------------- here village begins
truck = obj {
nam = ' черная машина ' ,
dsc = ' Черная {машина} с тонированными стеклами стоит возле магазина. ' ,
act = ' Гм... Это фургон... Кузов бронирован, это видно по нагрузке на колеса... ' ,
} ;
guydlg = dlg {
pic = ' gfx/guy.png ' ,
nam = ' разговор с бездомным ' ,
dsc = ' Я подошел к нему... Он оглянулся и посмотрел на меня беглым взглядом - невысокий человек в потертой кепке и драном ватнике. ' ,
obj = {
[ 1 ] = phr ( ' Привет! Холодно наверное? ' , ' Да... Немного... ' ) ,
[ 2 ] = phr ( ' Как случилось что ты оказался на улице? ' ,
[ [ К о г д а т о я х о т е л с т а т ь к а н д и д а т о м н а у к ... П и с а л д и с с е р т а ц и ю н а т е м у с т р о е н и я м а т е р и и .. Н о ... М о й м о з г
п е р е у т о м и л с я ... Я п ы т а л с я у с п о к о и т ь с я и в о т ... Т е п е р ь я з д е с ь ... ] ] ) ,
[ 3 ] = phr ( ' Как тебя зовут? ' , ' Эдуард... ' ) ,
[ 4 ] = _phr ( ' Когда я уходил тут возле тебя был Кот... Где он? ' , ' Гм... ' , ' pon(5) ' ) ,
[ 5 ] = _phr ( ' Да... Кот. Обычный кот, бродящий по снегу возле мусорных баков. ' , ' Так это был твой кот? Эммм... ' , ' pon(6) ' ) ;
[ 6 ] = _phr ( ' Да... Это мой Барсик! Говори же! ' ,
' ... Ммм... Кажется е г о взял этот человек... Ммм... -- холодок пробежал у меня по спине... ' , ' pon(7) ' ) ,
[ 7 ] = _phr ( ' Куда, куда он поехал? ' , ' Извини, братишка, я не видел... ' , ' shopdlg:pon(4); pon(8); ' ) ,
[ 8 ] = phr ( ' Ладно... Н е важно... ' , ' ... ' , ' pon(8); back() ' ) ,
} ,
exit = function ( )
pon ( 1 ) ;
return ' Он отвернулся от меня и снова стал шарить по бакам... ' ;
end
} ;
guy = obj {
nam = ' бездомный ' ,
dsc = ' В мусорных баках копается {бездомный}.' ,
act = function ( )
return goto ( ' guydlg ' );
end ,
used = function ( s , w )
if w == ' money ' then
return [ [
Я п о д о ш е л и п о п ы т а л с я д а т ь н е м н о г о д е н е г ... -- Мне не нужны чужие деньги... -- ответил он.]];
else
return ' Зачем это ему? ' ;
end
end ,
} ;
nomoney = function ( )
pon ( 1 , 2 , 3 , 4 , 5 ) ;
shopdlg : pon ( 2 ) ;
return cat ( ' Тут я вспоминаю, что у меня нет денег... Совсем...^ ' , back ( ) ) ;
end
ifmoney = ' if not have("money") then return nomoney(); end; shopman._wantmoney = true; ' ;
dshells = obj {
nam = ' гильзы ' ,
dsc = function ( s )
if here ( ) . _dshells > 4 then
return ' Под ногами валяется ' .. here ( ) . _dshells .. ' {гильз} от моего дробовика... ' ;
else
return ' Под ногами валяются ' .. here ( ) . _dshells .. ' {гильзы} от моего дробовика... ' ;
end
end ,
act = ' Это мои гильзы... Мне они больше не нужны... ' ;
} ;
function dropshells ( )
if here ( ) == deepforest then
return ;
end
if not here ( ) . _dshells then
here ( ) . _dshells = 2 ;
else
here ( ) . _dshells = here ( ) . _dshells + 2 ;
end
here ( ) . obj : add ( ' dshells ' ) ;
end
shells = obj {
nam = ' патроны ' ,
inv = ' Патроны для моего дробовика. Я очень редко их использую в лесу, в основном -- против браконьеров. ' ,
use = function ( s , on )
if on == ' gun ' then
if gun._loaded then
return ' Уже заряжен... ' ;
end
if gun._loaded == false then
gun._loaded = true ;
dropshells ( ) ;
return ' Открыв дробовик я выбрасываю две гильзы и перезаряжаю дробовик. ' ;
end
gun._loaded = true ;
return ' Я б е р у два патрона и отправляю их в о б а ствола дробовика... ' ;
end
end
} ;
news = obj {
nam = ' газета ' ,
inv = [ [
С в е ж а я г а з е т а ... << н е д а в н о п о с т р о е н н ы й в т а й г е и н с т и т у т к в а н т о в о й м е х а н и к и к а т е г о р и ч е с к и о п р о в е р г а е т
п р и ч а с т н о с т ь к а н о м а л ь н ы м я в л е н и я м >> .. Г м ... ] ] ,
used = function ( s , w )
if w == ' poroh ' then
if have ( ' trut ' ) then
return ' У меня уже есть трут.' ;
end
inv ( ) : add ( ' trut ' ) ;
inv ( ) : del ( ' poroh ' ) ;
return ' Я высыпаю порох на клочок бумаги, которую я оторвал от газеты... ' ;
end
end ,
} ;
hamb = obj {
nam = ' гамбургер ' ,
inv = function ( )
inv ( ) : del ( ' hamb ' ) ;
return ' Я перекусил. Вредная пища... ' ;
end
} ;
zerno = obj {
nam = ' крупа ' ,
inv = ' Просто гречка. Гречневая крупа... ' ,
} ;
shop2 = dlg {
nam = ' купить ' ,
pic = ' gfx/shopbuy.png ' ,
obj = {
[ 1 ] = phr ( ' Патронов... Мне нужны патроны... ' , ' Хорошо... Цена как обычно ' , ifmoney .. ' inv():add("shells") ' ) ,
[ 2 ] = phr ( ' Зерна.. ' , ' Хорошо... ' , ifmoney .. ' inv():add("zerno") ' ) ,
[ 3 ] = phr ( ' И еще гамбургер... ' , ' Ок.. ' , ifmoney .. ' inv():add("hamb") ' ) ,
[ 4 ] = phr ( ' Свежую прессу... ' , ' Конечно... ' , ifmoney .. ' inv():add("news") ' ) ,
[ 5 ] = phr ( ' Моток изоленты... ' , ' Да. Держи. ' , ifmoney .. ' inv():add("iso") ' ) ,
[ 6 ] = phr ( ' Ничего не надо... ' , ' Как пожелаешь. ' , ' pon(6); back() ' ) ,
[ 7 ] = _phr ( ' Еще мне нужна лестница и кусачки... ' , ' Извини, этого у меня нет -- качает головой Владимир ' ) ,
} ,
exit = function ( s )
if have ( ' news ' ) then
s.obj [ 4 ] : disable ( ) ;
end
end
} ;
shopdlg = dlg {
nam = ' разговор с продавцом ' ,
pic = ' gfx/shopman.png ' ,
dsc = ' Маленькие глазки буравят меня маслянистым взглядом. ' ,
obj = {
[ 1 ] = phr ( ' Здравствуй, Владимир! Н у как оно? ' , ' Здравствуй, ' .. me ( ) . nam .. ' ... Да потихоньку... - Владимир хитро улыбается. ' , ' pon(2) ' ) ,
[ 2 ] = _phr ( ' Хочу сделать покупки. ' , ' Хорошо... Давай посмотрим, что тебе нужно? ' , ' pon(2); return goto("shop2") ' ) ,
[ 3 ] = phr ( ' Н у пока!...' , ' А г а ... Удачи!' , ' pon(3); return back(); ' ) ,
[ 4 ] = _phr ( ' Здесь только что был человек -- кто он? ' , ' Гм? -- тонкие брови Володи приподнимаются.. ' , ' pon(5) ' ) ,
[ 5 ] = _phr ( ' Он почему-то взял моего кота... Наверное подумал, что он бездомный... Кто этот человек в сером пальто? ' ,
[ [
В о о б щ е - т о о н к а к а я - т о ш и ш к а ... - п о с к р е б В л а д и м и р с в о й н е б р и т ы й п о д б о р о д о к . -- В этом новом институте, что построили в
н а ш е й г л у ш и г о д н а з а д ... -- пенсне Владимира задергалось в такт е г о речи -- он часто заходит в наш магазин,
н е л ю б и т т о л п ы -- эти физики -- ну ты понимаешь... Странный народ -- Владимир пожал плечами...]],'pon(6)'),
[ 6 ] = _phr ( ' А где этот институт находится?' ,
' Да на 127-ом.. Только это, знаешь чего -- Владимир понизил голос -- о б этом институте всякое говорят... ' , ' me()._know_where = true; inmycar.way:add("inst");pon(7) ' ) ,
[ 7 ] = _phr ( ' Я только заберу своего кота назад... ' , ' Н у смотри, как знаешь.. Я бы на твоем месте... - качает головой Владимир. - Да, кажется е г о фамилия Белин. Я видел е г о кредитку... Хотя ты знаешь -- я их не принимаю -- Владимир зашмакал губами, пенсне хитро зашевелилось.' ) ,
} ,
} ;
shopman = obj {
nam = ' продавец ' ,
dsc = ' З а прилавком стоит {продавец}. Довольно полное е г о лицо с небритой щетиной дополняет монокль.' ,
act = function ( )
return goto ( ' shopdlg ' );
end
} ;
shop = room {
nam = ' магазин ' ,
pic = ' gfx/inshop.png ' ,
enter = function ( s , f )
if village.obj : look ( ' truck ' ) then
village.obj : del ( ' truck ' ) ;
village.obj : del ( ' mycat ' ) ;
return [ [
2009-08-26 08:25:53 +03:00
К о г д а я з а х о д и л в м а г а з и н , я ч у т ь н е с т о л к н у л с я с н е п р и я т н ы м т и п о м в с е р о м п а л ь т о и
2009-02-21 12:52:44 +02:00
ш л я п е с д л и н н ы м и п о л я м и ... О н и з в и н и л с я к а к и м - т о ш и п я щ и м г о л о с о м и с д е л а л в и д , ч т о п р и п о д н и м а е т ш л я п у ... И з п о д
е е п о л е й б л е с н у л и б е л ы е з у б ы ... Д о й д я д о п р и л а в к а я у с л ы ш а л з в у к з а п у с к а ю щ е г о с я д в и г а т е л я . ] ] ;
end
end ,
act = function ( s , w )
if w == 1 then
return ' Теперь на стоянке стоит только моя машина. ' ;
end
end ,
dsc = [ [
Э т о д о в о л ь н о с т р а н н ы й м а г а з и н ... З д е с ь в ы н а й д е т е и с к о б я н ы е и з д е л и я , и п р о д у к т ы и
д а ж е п а т р о н ы ... Н е у д и в и т е л ь н о , в е д ь э т о е д и н с т в е н н ы й м а г а з и н н а 100 к м ... ] ] ,
way = { ' village ' } ,
obj = { ' shopman ' , vobj ( 1 , ' окно ' , ' Сквозь {окно} видно стоянку машин. ' ) } ,
exit = function ( s , t )
if t ~= ' village ' then
return ;
end
if shopman._wantmoney then
return ' Я собираюсь выйти, когда меня останавливает деликатное покашливание Владимира... Конечно, я забыл заплатить... ' , false ;
end
if not have ( ' news ' ) then
shop2.obj [ 4 ] : disable ( ) ;
inv ( ) : add ( ' news ' ) ;
return ' Я собираюсь уходить, когда меня останавливает голос Владимира -- Возьми свежую прессу, для тебя -- бесплатно. Я возвращаюсь, б е р у газету и выхожу из магазина. ' ;
end
end
} ;
carbox = obj {
_num = 0 ,
nam = function ( s )
if s._num > 1 then
return ' ящики в машине ' ;
else
return ' ящик в машине ' ;
end
end ,
act = function ( s )
if inv ( ) : srch ( ' mybox ' ) then
return ' У меня уже есть ящик в руках...' ;
end
s._num = s._num - 1 ;
if s._num == 0 then
mycar.obj : del ( ' carbox ' ) ;
end
take ( ' mybox ' ) ;
return ' Я взял ящик из машины. ' ;
end ,
dsc = function ( s )
if s._num == 0 then
return ;
elseif s._num == 1 then
return ' В кузове моей машины лежит один {ящик}.' ;
elseif s._num < 5 then
return ' В кузове моей машины лежат ' .. tostring ( s._num ) .. ' {ящика}. ' ;
else
return ' В кузове моей машины лежит ' .. tostring ( s._num ) .. ' {ящиков}. ' ;
end
end ,
} ;
mybox = obj {
nam = ' ящик ' ,
inv = ' Я держу в руках ящик.... Добротно сделанная вещь! Пригодится в хозяйстве. ' ,
use = function ( s , o )
if o == ' boxes ' then
inv ( ) : del ( ' mybox ' ) ;
return ' Я положил ящик обратно... ' ;
end
if o == ' mycar ' then
inv ( ) : del ( ' mybox ' ) ;
mycar.obj : add ( ' carbox ' ) ;
carbox._num = carbox._num + 1 ;
return ' Я положил ящик в кузов своей машины... ' ;
end
if o == ' ewall ' or o == ' wboxes ' then
if not cam._broken then
return ' Мне мешает камера... ' ;
end
inv ( ) : del ( ' mybox ' ) ;
ewall.obj : add ( ' wboxes ' ) ;
wboxes._num = wboxes._num + 1 ;
if wboxes._num > 1 then
return ' Я поставил следующий ящик на предыдущий... ' ;
end
return ' Я поставил ящик у стены... ' ;
end
end
} ;
boxes = obj {
nam = ' ящики ' ,
desc = {
[ 1 ] = ' Около стоянки валяются пустые деревянные {ящики} из-под тушенки. ' ,
} ,
dsc = function ( s )
local state = 1 ;
return s.desc [ state ] ;
end ,
act = function ( s , t )
if carbox._num >= 5 then
return ' А может хватит уже брать ящики?...' ;
end
if inv ( ) : srch ( ' mybox ' ) then
return ' У меня уже есть один ящик...' ;
end
take ( ' mybox ' ) ;
return ' Я взял ящик в руки. ' ;
end ,
} ;
village = room {
nam = ' стоянка перед магазином ' ,
dsc = ' Привычное место перед магазином. Стоянка машин. В с е в снегу... ' ,
pic = ' gfx/shop.png ' ,
act = function ( s , w )
if w == 1 then
return ' Баки как баки... Белый снег прикрывает мусор... ' ;
end
end ,
exit = function ( s , t )
if t == ' shop ' and seen ( ' mycat ' ) then
return ' Я позвал барсика, но он был сильно увлечен мусорными баками... Ладно -- я не на долго... ' ;
end
end ,
enter = function ( s , f )
if ewall : srch ( ' wboxes ' ) and wboxes._num == 1 then
ewall.obj : del ( ' wboxes ' ) ;
ewall._stolen = true ;
wboxes._num = 0 ;
end
if f == ' shop ' and not s._ogh then
s._ogh = true ;
set_music ( " mus/revel.s3m " ) ;
guydlg : pon ( 4 ) ;
guydlg : poff ( 8 ) ;
return ' Окинув стоянку беглым взглядом я позвал -- Барсик! Барсик! -- Куда запропастился мой кот? ' ;
end
end ,
way = { ' road ' , ' shop ' } ,
obj = { ' truck ' , vobj ( 1 , ' баки ' , ' Ржавые мусорные {баки} покрыты снегом. ' ) , ' guy ' , ' boxes ' } ,
} ;
----------- trying to go over wall
function guardreact ( )
pon ( 7 ) ;
if inst : srch ( ' mycar ' ) then
inst.obj : del ( ' mycar ' ) ;
inmycar.way : add ( ' backwall ' ) ;
inst.way : add ( ' backwall ' ) ;
return cat ( [ [ Ч е т в е р о л ю д е й с а в т о м а т а м и п р о в о ж а ю т м е н я д о м о е й м а ш и н ы .
М н е п р и ш л о с ь з а в е с т и д в и г а т е л ь и о т ъ е х а т ь о т и н с т и т у т а . Я п р о е х а л с д ю ж и н у к и л о м е т р о в , п р е ж д е ч е м в з е р к а л е з а д н е г о в и д а
и с ч е з в о е н н ы й д ж и п , с м о и м и п р о в о ж а ю щ и м и ... ] ] , goto ( ' inmycar ' ));
end
return cat ( [[Четверо вооруженных людей вышвыривают меня из КПП.^^]] , goto ( ' inst ' ));
end
guarddlg = dlg {
nam = ' охранник ' ,
pic = ' gfx/guard.png ' ,
dsc = [ [ П е р е д о м н о й у г л о в а т о е л и ц о о х р а н н и к а . Е г о г л а з а г л я д я т н а с м е ш л и в о , н о у г о л к и р т а з а г н у т ы
в н и з , ч т о н е р а с п о л а г а е т к б е с е д е ... ] ] ,
obj = {
[ 1 ] = phr ( ' М о е г о кота по ошибке забрал сотрудник вашего института -- мне нужно войти.' , ' -- Пропуск... ' , ' poff(2); pon(3); ' ) ,
[ 2 ] = phr ( ' Я забыл свой пропуск -- можно мне зайти? ' , ' -- Нет... ' , ' poff(1); pon(3); ' ) ,
[ 3 ] = _phr ( ' Вы знаете Белина? У него мой кот -- мне нужно е г о забрать... ' , ' -- Нет пропуска? ' , ' pon(4) ' ) ,
[ 4 ] = _phr ( ' Я просто пришел забрать своего кота! Дайте телефон Белина. ' ,
2009-08-26 08:25:53 +03:00
[ [ Г л а з а о х р а н н и к а м е н я ю т с в о й ц в е т . У г о л к и г у б п о д н и м а ю т с я н а в е р х -- вот что, господин хороший, -- я так понял,
п р о п у с к а у в а с н е т , и д и т е - к а о т с ю д а , п о к а м о ж е т е ... ] ] , ' pon(5, 6) ' ) ,
2009-02-21 12:52:44 +02:00
[ 5 ] = _phr ( ' Н у все, щас я дам по твоей роже...' , ' Рука охранника тянется к автомату. ' , ' poff(6); return guardreact(); ' ) ,
[ 6 ] = _phr ( ' Ладно, я пошел... ' , ' -- Н е спеши - охранник уже не скрывает свою ухмылку - ты мне не нравишься... ' , ' poff(5); return guardreact() ' ) ,
[ 7 ] = _phr ( ' Щас я вас всех перестреляю из своего дробовика... ' , ' Н а этот раз охранник даже не отвечает. Е г о налитые кровью глаза красноречивей всяких слов.' , ' return guardreact() ' ) ,
} ,
} ;
guard = obj {
nam = ' охрана ' ,
dsc = [ [
2009-08-26 08:25:53 +03:00
В б у д к е с и д и т { о х р а н а } . К а ж е т с я , о н а в о о р у ж е н а а в т о м а т а м и к а л а ш н и к о в а .
2009-02-21 12:52:44 +02:00
] ] ,
act = function ( s )
return goto ( ' guarddlg ' );
end ,
} ;
kpp = room {
nam = ' КПП ' ,
pic = ' gfx/kpp.png ' ,
dsc = [ [ К П П -- контрольно пропускной пункт не оставляет никаких сомнений в том, что в институте не жалуют посторонних. Шлагбаум. Решетчатая будка. И тишина.
] ] ,
obj = { ' guard ' } ,
way = { ' inst ' }
} ;
inst = room {
nam = ' институт ' ,
pic = ' gfx/inst.png ' ,
dsc = [ [
И н с т и т у т в о з в ы ш а е т с я п о с р е д и п у с т ы н н о г о с н е ж н о г о п о л я . Е г о з л о в е щ и е к о н т у р ы н а п о м и н а ю т с к о р е е т ю р ь м у , ч е м н а у ч н о е
у ч р е ж д е н и е . П о з а д и т е р р и т о р и и и н с т и т у т а н а х о д я т с я ж е л е з н о д о р о ж н ы е п у т и . ] ] ,
act = function ( s , w )
if w == 1 then
2009-08-26 08:25:53 +03:00
return ' Высота стены около 5 метров. Н о этого мало -- сверху проходит колючая проволока -- думаю, она под напряжением... ' ;
2009-02-21 12:52:44 +02:00
end
if w == 2 then
return ' Нет, Владимир был прав... Это какой-то военный штаб... ' ;
end
if w == 3 then
2009-08-26 08:25:53 +03:00
return ' Да -- это, похоже, тот самый фургон, в котором человек в сером пальто увез моего Барсика. ' ;
2009-02-21 12:52:44 +02:00
end
end ,
used = function ( s , w , b )
if b == ' mybox ' and w == 1 then
return ' Я думаю, меня сразу заметит охрана. ' ;
end
if w == 2 and b == ' gun ' and gun._loaded then
return ' Меня посадят... Или просто побьют... Охранники совсем недалеко. ' ;
end
if w == 3 and b == ' gun ' and gun._loaded then
return ' Мне нужен мой кот, а не разрушения... ' ;
end
end ,
obj = { vobj ( 1 , ' стена ' , ' Здание института окружено массивной бетонной {стеной}. В центре находится КПП. ' ) ,
vobj ( 2 , ' камеры ' , ' Н а вышках установлены {камеры} слежения.' ) ,
vobj ( 3 , ' фургон ' , ' З а шлагбаумом виднеется черный {фургон}' ) } ,
way = { ' road ' , ' kpp ' } ,
exit = function ( s , t )
if have ( ' mybox ' ) and t ~= ' inmycar ' then
return ' Я не буду ходить с ящиком в руках... ' , false ;
end
end ,
} ;
cam = obj {
nam = ' камера слежения ' ,
dsc = function ( s )
if not s._broken then
return ' Неподалеку от меня -- одна из {камер} слежения. Я прижимаюсь к стене, чтобы меня не заметили. ' ;
end
return ' Неподалеку валяются осколки {камеры} слежения. Их уже запорошило снегом. ' ;
end ,
act = function ( s )
if not s._broken then
return ' Проклятая камера... ' ;
end
return ' Х а ... Получил, проклятый механизм? Интересно, когда придет охрана...' ;
end ,
} ;
wire = obj {
nam = ' колючая проволока ' ,
dsc = function ( s )
if s._broken then
return ' Перед моими глазами обрывки колючей {проволоки}. ' ;
end
return ' Перед моими глазами колючая {проволока}. ' ;
end ,
act = function ( s )
if s._broken then
return ' Теперь она безопасна! Можно пробраться внутрь... ' ;
end
return ' А вдруг она под напряжением?' ;
end ,
} ;
onwall = room {
pic = ' gfx/onwall.png ' ,
nam = ' на стене ' ,
dsc = ' Я стою на ящиках, моя голова находится на уровне вершины стены. Холодно. ' ,
enter = function ( s )
if have ( ' mybox ' ) then
return ' Я не могу взобраться на стену с ящиком в руках. ' , false ;
end
if wboxes._num < 5 then
return ' Я пытаюсь взобраться на стену... Н о все-еще слишком высоко... ' , false ;
end
return ' Я взбираюсь на стену по ящикам. ' ;
end ,
obj = { ' wire ' } ,
way = { ' backwall ' }
} ;
wboxes = obj {
_num = 0 ,
nam = function ( s )
if ( s._num > 1 ) then
return ' ящики у стены ' ;
end
return ' ящик у стены ' ;
end ,
act = function ( s )
return goto ( ' onwall ' );
end ,
dsc = function ( s )
if s._num == 0 then
return ;
elseif s._num == 1 then
return ' У стены лежит один {ящик}.' ;
elseif s._num < 5 then
return ' У стены стоит ' .. tostring ( s._num ) .. ' {ящика}, поставленные один на другой. ' ;
else
return ' У стены стоят ' .. tostring ( s._num ) .. ' {ящиков}, поставленные один на другой. ' ;
end
end ,
} ;
ewall = obj {
nam = ' стена ' ,
dsc = ' {Стена} здесь возвышается на 4 метра. Снежная метель с воем бросает ледяные снежинки к е е подножию. ' ,
act = function ( s )
if not s._ladder then
s._ladder = true ;
shop2 : pon ( 7 ) ;
end
return ' Слишком высокая... Нужна лестница. ' ;
end
} ;
backwall = room {
pic = ' gfx/instback.png ' ,
enter = function ( s , f )
local st = ' ' ;
if ewall._stolen then
ewall._stolen = false ;
st = ' О г о !!! Кто-то украл мой ящик!!!' ;
end
if f == ' inmycar ' then
return ' Отлично... Кажется удалось добраться незамеченным... ' .. ' ' .. st ;
end
2009-08-26 08:25:53 +03:00
return ' Плутая по снежному полю, я добрался до задней стены. ' .. ' ' .. st ;
2009-02-21 12:52:44 +02:00
end ,
nam = ' восточная стена института ' ,
dsc = ' Я нахожусь у задней стороны института. ' ,
obj = { ' ewall ' , ' cam ' } ,
way = { ' inst ' , } ,
exit = function ( s , t )
if have ( ' mybox ' ) and t ~= ' inmycar ' then
return ' Я не буду ходить с ящиком в руках... ' , false ;
end
end ,
} ;