diff --git a/games/Makefile.windows b/games/Makefile.windows index bc72710..e3a999a 100644 --- a/games/Makefile.windows +++ b/games/Makefile.windows @@ -1,13 +1,9 @@ all: install: - if not exist ..\bin\games\cat mkdir ..\bin\games\cat - copy cat ..\bin\games\cat - if not exist ..\bin\games\cat\gfx mkdir ..\bin\games\cat\gfx - copy cat\gfx ..\bin\games\cat\gfx - if not exist ..\bin\games\cat\mus mkdir ..\bin\games\cat\mus - copy cat\mus ..\bin\games\cat\mus if not exist ..\bin\games\tutorial2 mkdir ..\bin\games\tutorial2 copy tutorial2 ..\bin\games\tutorial2 if not exist ..\bin\games\tutorial2-en mkdir ..\bin\games\tutorial2-en copy tutorial2-en ..\bin\games\tutorial2-en + if not exist ..\bin\games\tutorial2-es mkdir ..\bin\games\tutorial2-es + copy tutorial2-es ..\bin\games\tutorial2-es clean: diff --git a/games/cat/ep1.lua b/games/cat/ep1.lua deleted file mode 100644 index 35a881b..0000000 --- a/games/cat/ep1.lua +++ /dev/null @@ -1,908 +0,0 @@ -mywear = obj { - nam = 'ватник', - dsc = function(s) - if here() == stolcorridor then - local st='.'; - if not have('gun') then - st = ', под которым спрятан дробовик.'; - end - return 'А еще на вешалке висит мой {ватник}'..st; - 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._broken 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; - return 'Теперь я могу спрятать обрез в одежде!'; - 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 = 'хижина', - pic = function(s) - if not seen('mycat') then - return "gfx/house-empty.png" - end - return "gfx/house.png"; - end, - 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 [[ -Когда я выходил из хижины, Барсик внезапно проснулся и бросился мне под ноги. -Я погладил его за ушами -- Значит едем вместе? -]] - 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 [[ -Когда я заходил в магазин, я чуть не с толкнулся с неприятным типом в сером пальто и -шляпе с длинными полями... Он извинился каким-то шипящим голосом и сделал вид, что приподнимает шляпу... Из под -ее полей блеснули белые зубы... Дойдя до прилавка я услышал звук запускающегося двигателя.]]; - 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('Я просто пришел забрать своего кота! Дайте телефон Белина.', -[[Глаза охранника меняют свой цвет. Уголки губ поднимаются наверх -- вот что, господин хороший, -- я так понял, -пропуска у вас нет, идите-ка отсюда, пока можете...]], 'pon(5, 6)'), - [5] = _phr('Ну все, щас я дам по твоей роже...', 'Рука охранника тянется к автомату. ', 'poff(6); return guardreact();'), - [6] = _phr('Ладно, я пошел...', '-- Не спеши - охранник уже не скрывает свою ухмылку - ты мне не нравишься...','poff(5); return guardreact()'), - [7] = _phr('Щас я вас всех перестреляю из своего дробовика...', 'На этот раз охранник даже не отвечает. Его налитые кровью глаза красноречивей всяких слов.','return guardreact()'), - }, -}; -guard = obj { - nam = 'охрана', - dsc = [[ -В будке сидит {охрана}. Кажется, она вооружена автоматами Калашникова. -]], - 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 - return 'Высота стены около 5 метров. Но этого мало -- сверху проходит колючая проволока -- думаю, она под напряжением...'; - end - if w == 2 then - return 'Нет, Владимир был прав... Это какой-то военный штаб...'; - end - if w == 3 then - return 'Да -- это, похоже, тот самый фургон, в котором человек в сером пальто увез моего Барсика.'; - 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 - return 'Плутая по снежному полю, я добрался до задней стены.'..' '..st; - end, - nam = 'восточная стена института', - dsc = 'Я нахожусь у задней стороны института.', - obj = { 'ewall', 'cam' }, - way = { 'inst', }, - exit = function(s, t) - if have('mybox') and t ~= 'inmycar' then - return 'Я не буду ходить с ящиком в руках...', false; - end - end, -}; diff --git a/games/cat/ep2.lua b/games/cat/ep2.lua deleted file mode 100644 index bd9dfb8..0000000 --- a/games/cat/ep2.lua +++ /dev/null @@ -1,1524 +0,0 @@ -------------- now got inside!!! ----------------------- -napil = obj { - nam = 'напильник', - dsc = 'Под воротами валяется {напильник}.', - inv = 'Уже начал ржаветь...', - tak = 'Я взял напильник.', - use = function(s, w) - if w == 'knife' and not knife._oster then - knife._oster = true; - return 'Я затачиваю напильником нож... Теперь он острый!'; - elseif w == 'gun' and not gun._obrez then - if here() == wside or here() == sside then - return 'Тут много людей вокруг!'; - end - gun._obrez = true; - return 'Я присел, взял покрепче дробовик и укоротил напильником оба ствола.'; - else - return 'Нет, это бесполезно пилить...'; - end - end -}; -eside = room { - pic = 'gfx/eside.png', - nam = 'сзади института', - dsc = [[ Я нахожусь у задней стены здания института. Здесь проходят рельсы.]], - act = function(s,w) - if w == 1 then - return 'Пулеметы направлены на внешнюю - южную сторону периметра, надо держаться от них подальше.'; - end - if w == 2 then - return 'Ворота железные. И заперты изнутри.'; - end - end, - obj = { - vobj(1,'пулеметные вышки', 'Въезд поезда охраняется пулеметными {вышками}..'), - vobj(2,'ворота', 'Железнодорожные пути проходят мимо больших железных {ворот} -- видимо через них обеспечивается снабжение.'), - 'napil', - }, - exit = function(s, t) - if t == 'sside' then - return 'На южной стороне меня смущают пулеметы. Лучше не рисковать.', false - end - end, - enter = function(s, f) - if f == 'onwall' then - -- end of episode 1 - inmycar = nil; - deepforest = nil; - road = nil; - forest = nil; - home = nil; - shop = nil; - village = nil; - kpp = nil; - inst = nil; - onwall = nil; - backwall = nil; - guydlg = nil; - shop2 = nil; - shopdlg = nil; - guarddlg = nil; - set_music("mus/ice.s3m"); - end - end, - way = {'nside','sside'}, -}; - -card = obj { - nam = 'пропуск', - inv = [[Это пропуск. -Электронная смарткарта с фотографией какого-то металлюги. Написано: Алексей Подковин -- 3-й уровень, категория: материя. Гммм...]], -}; -alienwear = obj { - xnam = {'джинсовка', 'красная куртка', 'пальто','куртка', 'белая куртка', 'пиджак', 'косуха', 'спортивная куртка',}, - xinv = { - 'Холодновато, но стильно!', - 'Очень красиво смотрится на фоне снега!', - 'Длиннополое пальто -- это ретро!', - 'Я -- терминатор!', - 'Я -- пацифист!', - 'Пиджачок сидит на мне как влитой!', - 'Рок-н-ролл мертв, а я еще нет!', - 'Когда-то я занимался альпинизмом!', - }, - nam = function(s) - return s.xnam[s._num]; - end, - inv = function(s) - if s._num == 7 and not have('card') then - inv():add('card'); - return 'Немного покопавшись в карманах косухи, я нашел карточку.'; - end - return s.xinv[s._num]; - end, -}; - -garderob = obj { - nam = 'гардероб', - dsc = 'На правой стороне коридора висят {вешалки} с одеждой.', - act = function(s, w) - if have('mywear') or have('alienwear') then - return 'Здесь много людей, я не думаю, что я смогу сделать это незаметно.'; - elseif tonumber(w) and tonumber(w) > 0 and tonumber(w) <= 8 then - if not me()._walked then - return 'Это будет слишком заметно...'; - end - alienwear._num = w; - inv():add('alienwear'); - ref(s.obj[w]):disable(); - me()._walked = false; - inv():add('gun'); - return 'Я спокойно беру чужую одежду и также спокойно одеваю ее... Дробовик я снимаю из-под своего ватника.'; - else - return 'Надо определиться...'; - end - end, - used = function(s, w) - if w == 'mywear' then - garderob.obj:add('mywear'); - inv():del('mywear'); - inv():del('gun'); - return 'Я вешаю ватник на вешалку. Дробовик придется спрятать под ватником.'; - end - if w == 'alienwear' then - local v = alienwear._num; - ref(s.obj[v]):enable(); - inv():del('alienwear'); - inv():del('gun'); - return 'Я вешаю чужую одежду на вешалку. Дробовик я вешаю под свой ватник на вешалке.'; - end - end, - obj = { - vobj(1,'джинсовка','{Джинсовка}.'), - vobj(2,'красная куртка','{Куртка} ало-красного цвета.'), - vobj(3,'пальто','{Пальто}.'), - vobj(4,'куртка терминатора', "{Куртка} с надписью I\'ll back."), - vobj(5,'куртка с ромашками', "Белая {куртка} с изображением ромашек."), - vobj(6,'пиджак', "Шерстяной {пиджак}."), - vobj(7,'косуха','Клевая {косуха}.'), - vobj(8,'спортивная куртка', "Оранжевая альпинистская {куртка}."), - } -}; -portrait = obj { - nam = 'портреты', - dsc = 'По стенам развешены большие {портреты} в деревянных рамах.', - act = 'Гм... На портретах одно и тоже лицо! Улыбающееся холодной улыбкой лицо человека, лет сорока, с пустым, ничего не выражающим взглядом.', -}; - -salo = obj { - nam = 'сало', - inv = 'Это кусочек сала. Я не могу его доесть, он очень жесткий...', - use = function(s, w) - if w == 'trap' and not trap._salo then - inv():del('salo'); - trap._salo = true; - return 'Гм... По-моему у меня получилась мышеловка!'; - end - end -}; - -food = obj { - nam = 'еда', - inv = function (s) - inv():del('food'); - return 'Я не выдерживаю и съедаю все это великолепие стоя, держа поднос в левой руке. Ухх... Затем я отношу поднос в мойку.'; - end -}; - -knife = obj { - nam = 'нож', - dsc = 'На подносе лежит {нож}.', - inv = function(s) - if s._oster then - return 'Железный и очень острый ножик.'; - end - return 'Железный и тупой ножик.'; - end, - use = function(s, w) - if w == 'shells' then - if not s._oster then - return 'Нож тупой.'; - end - if have('poroh') then - return 'У меня уже есть порох.'; - end - inv():add('poroh'); - return 'Я расковыриваю один из патронов и высыпаю на ладонь порох.'; - end - end, - tak = function(s) - if have('knife') then - return 'У меня уже есть один...', false - end - return 'Возьму его пока с собой.'; - end -}; - -ostatki = obj { - nam = 'остатки еды', - dsc = '{Объедки} равномерно распределены по тарелкам.', - tak = function(s) - if food._num ~= 2 or have('salo') then - return 'Ничего полезного...', false; - else - take('salo'); - return 'Кусочек сала!', false; - end - end -}; - -podnos = obj { - nam = 'поднос', - dsc = 'На столе стоит {поднос}.', - act = function(s, w) - if w == 1 then - return 'Вилка как вилка... Не очень чистая.'; - end - if w == 2 then - return 'Ложка не отличается оригинальностью своей конструкции.'; - end - return 'Синий пластик. Немного жирный на ощупь.'; - end, - obj = { 'ostatki', - vobj(1, 'вилка', 'Рядом лежат {вилка} и'), - vobj(2, 'ложка', '{ложка}.') - }, -}; - -moika = room { - nam = 'мойка', - enter = function() - return cat('Я отношу грязную посуду в мойку.^^', goto('kitchen')), false; - end -}; - -eating = room { - pic = 'gfx/podnos.png', - enter = function(s, f) - podnos.obj:add('knife'); - inv():del('food'); - if not me()._kitchendlg then - me()._kitchendlg = true; - return goto('kitchendlg'), false; - end - if f ~= 'kitchendlg' then - return 'Я сажусь за пустой столик и слегка перекусываю.'; - end - end, - nam = 'за столом', - dsc = 'Под моими руками гладкая поверхность стола.', - obj = { 'podnos' }, - way = { 'moika' }, - exit = function(s) - end -}; - -gotfood = function(w) - inv():add('food'); - food._num = w; - return back(); -end - -invite = obj { - nam = 'приглашение', - inv = 'Приглашение на лекцию Белина: 4-й уровень, зал 2... Гммм.... Мне нужно туда попасть... У него мой Барсик.', -} - -povardlg = dlg { - nam = 'на кухне', - pic = 'gfx/povar.png', - dsc = 'Передо мной полное лицо женщины - повара в белом колпаке и усталым взглядом...', - obj = { - [1] = phr('Мне вот-этих зелененьких... Ага -- и бобов!', 'На здоровье!', [[pon(1); return gotfood(1);]]), - [2] = phr('Картошку с салом, пожалуйста!', 'Приятного аппетита!', [[pon(2); return gotfood(2);]]), - [3] = phr('Две порции чесночного супа!!!', 'Прекрасный выбор!', [[pon(3);return gotfood(3);]]), - [4] = phr('Мне что-нибудь легонькое, у меня язва...', 'Овсянка!', [[pon(4); return gotfood(4);]]), - }, -}; -kitchendlg = dlg { - nam = 'разговор с сотрудником института', - pic = 'gfx/ilya.png', - dsc = 'Я взял свой поднос и присел за свободный столик. Через минуту со словами "Не занято?" ко мне подсел молодой парень.', - obj = { - [1] = phr('Нет, не занято...', '-- Спасибо. Как дела? Ты из какого отдела?', [[pon(3,4,5); poff(2);]]), - [2] = phr('Занято...', '-- Ха ха ха! Хорошая шутка! Ты из какого отдела?', [[pon(3,4,5); poff(1);]]), - [3] = _phr('Хм... Из отдела искривления пространства...', '-- Старье!', [[pon(6);poff(4,5)]]), - [4] = _phr('Ааа... Отдел квантовых скачков..', '-- Хм? Не слышал о таком.', [[pon(6);poff(3,5)]]), - - [5] = _phr('Эээ... Отдел изучения квазипространства!', '-- Ого! Прикольно!', [[pon(6);poff(3,4)]]), - [6] = _phr('Хм... ', '-- А у тебя какой уровень секретности?', [[pon(7,8)]]), - [7] = _phr('Супер секретно!', '-- Ух ты! ... ', [[poff(8); pon(9)]]), - [8] = _phr('Анонимный.', '-- Да? Не слышал о таком, наверное это более секретный уровень, чем мой...', -[[poff(7); pon(9)]]), - [9] = _phr('Мэээ...', '-- Меня зовут Илья... Просто Илья -- тянет худую руку парень -- а тебя как?', [[pon(10, 11, 12)]]), - [10] = _phr('Пп.. Пк... Пупкин... Василий Пупкин.', '-- Редкая фамилия!', [[poff(11,12); pon(13)]]), - [11] = _phr('Сережка.', '-- Дай пятерню, братан!', [[poff(10,12); pon(13)]]), - [12] = _phr('Гоша...', '-- Ну, будем знакомы, Гошка!', [[poff(10,11); pon(13)]]), - [13] = _phr('Кхмм...', -[[-- Какой ты странный... Но это не важно. Мы все здесь -- Илья сделал выразительное лицо -... Мне тут поручили -распространить приглашения на закрытую лекцию Белина... Только для друзей... Ты мне нравишься, да и по уровню -доступа проходишь... Так что...]], [[pon(14)]]), - [14] = _phr('Где он?... Гм.. Где лекция?', -[[-- Четвертый уровень секретности. Зал 2. Ну, приходи! Хороший шанс приблизиться к... -- Илья посмотрел на один из портретов на стене. -- Да, чуть не забыл -- протягивает он своей гибкой рукой кусок белого -пластика -- Ну, до встречи!... -- Уххх...]],[[inv():add('invite');return goto('eating');]]), - } -}; -kitchen = room { - nam = 'столовая', - pic = 'gfx/kitchen.png', - dsc = 'Небольшой зал столовой.', - act = function(s, w) - if w == 4 then - return 'Я вижу как чьи-то руки берут подносы с грязной посудой и уносят их вглубь...'; - end - if w == 1 then - if not have('food') then - return 'Я присел за свободный столик. Ну -- отдохнул, теперь пора за работу!'; - end - return goto('eating'); - end - if w == 2 then - return 'Гудят как пчелы...'; - end - if w == 3 and not have('food') then - return cat([[Я встал в очередь... Взял в руки поднос, столовые приборы и салфетки. Время тянется мучительно долго, но вот, наконец, я заказываю -еду...^^]], goto('povardlg')); - end - end, - used = function(s, w, ww) - if w == 1 and ww == 'food' then - return s:act(1); - end - end, - enter = function(s) - if not have('mywear') and not have('alienwear') then - me()._walked = true; - end - set_music('mus/foot.mod'); - end, - exit = function(s, t) - if have('food') and t ~= 'eating' then - return 'Уйти с подносом в руках? Не могу.', false; - end - if t == 'stolcorridor' then - set_music('mus/ice.s3m'); - end - end, - obj = { 'portrait', vobj(1, 'столики', 'По залу размещены {столы} на 4 или 8 человек.'), - vobj(2, 'люди', 'Столовая полна {людей}.'), - vobj(3, 'очередь', '{Очередь} за раздачей еды движется довольно быстро.'), - vobj(4, 'мойка', 'В углу расположено {окно} для сдачи грязной посуды.'), - }, - way = { 'stolcorridor' }, -}; - -stolcorridor = room { - nam = 'вход в столовую', - pic = 'gfx/kitchencor.png', - dsc = 'Длинный и узкий коридор тускло освещен флоуресцентным светом.', - act = function(s, w) - if w == 1 then - return 'Да, эти люди пришли за тем, чтобы поесть...'; - end - end, - obj = {'garderob', vobj(1,'люди', 'По коридору ходят {люди}.')}, - way = {'sside', 'kitchen'}, - exit = function(s, t) - if t == 'sside' and not have('mywear') and not have('alienwear') then - return 'На улице холодно... Я не пойду без одежды.. Нет...', false; - end - end, - enter = function(s) - -- generate garderob - if have('gun') and not gun._hidden then - return 'Я боюсь, что мой дробовик там внутри будет вызывать лишние вопросы...', false; - end - local i - for i=1, 8 do - local o = garderob.obj[i]; - ref(o):disable(); - end - local k = 7; - for i=1, 5 do - if not have('alienwear') or k ~= alienwear._num then - local o = garderob.obj[k]; - ref(o):enable(); - end - k = rnd(8); - end - end -}; - -sside = room { - nam = 'южная сторона', - pic = 'gfx/sside.png', - dsc = [[Я нахожусь у южной стены здания института. ]], - act = function(s, w) - if w == 1 then - ways():add('stolcorridor'); - return "Я подошел к подъезду. На двери подъезда надпись -- 'Столовая'. Хм -- зайти внутрь?"; - end - if w == 2 then - return 'Те, кто выходят, выглядят более довольными...'; - end - end, - way = {'eside','wside'}, - obj = { vobj(1, "подъезд", "У восточного угла находится небольшой {подъезд}."), - vobj(2, "люди", "Время от времени дверь подъезда хлопает, впуская и выпуская {людей}.")}, - exit = function(s, t) - if t == 'eside' then - return 'Если я пойду туда, я попаду в зону видимости пулеметных вышек.', false - end - end -}; - -nside = room { - nam = 'северная сторона', - pic = 'gfx/nside.png', - dsc = 'Я нахожусь у северной стены здания института.', - way = {'eside','wside' }, - act = function(s, w) - if w == 1 then - return 'Да -- водосточная труба... Довольно крепкая. Но вряд ли я смогу взобраться по ней наверх.'; - end - end, - obj = { vobj(1, 'труба', 'Водосточная {труба} проходит по восточному углу здания.')}, -}; - - -wside = room { - nam = 'фронтальная сторона', - pic = 'gfx/wside.png', - dsc = 'Фронтальная часть института.', - way = {'entrance', 'nside','sside' }, - act = function(s, w) - if w == 1 then - return 'Тот самый фургон, с которого все началось...'; - end - if w == 5 then - return 'Она начинается слишком высоко, к тому-же снизу она закрыта на замок. Возможно, это будет кому-то полезно при пожаре, хотя я лично сомневаюсь...' - end - if w == 2 then - return 'Наверняка охранники в КПП узнают меня. Лучше я сначала спасу своего Барсика.'; - end - if w == 3 then - return 'Красиво сделано, нечего сказать... Но я не могу избавиться от мысли, что институт пожирает входящих в него людей.'; - end - if w == 4 then - return 'Уже почти стемнело, но в институт все-еще заходят сотрудники...'; - end - end, - obj = { vobj(3, 'вход', 'Главный {вход} представляет собой крутящуюся стеклянную дверь'), - vobj(4, 'люди', ' впускающую и выпускающую {людей}.'), - vobj(1, 'фургон', 'Перед входом стоит черный {фургон}.'), - vobj(2, 'КПП', 'Дальше, в метрах 60 от меня, во все сгущающейся темноте я едва различаю {КПП}.'), - vobj(5, 'лестница', 'В южной части стены я вижу пожарную {лестницу}, поднимающуюся со второго до пятого этажа.' ), - } -}; - -turn1 = obj { - nam = 'турникеты', - dsc = 'Проход к лифтам с улицы заграждают блестящие стальные {турникеты}. <<Для всех уровней и категорий>> - светится зеленым надпись на турникетах.', - act = function(s, w) - if s._inside then - s._inside = false; - here().way:del('lift'); - return 'Я подхожу к турникетам, подношу карточку и выхожу к двери главного входа.'; - end - if s._unlocked then - s._inside = true; - here().way:add('lift'); - return 'Я подхожу к турникетам, подношу карточку и через пару секунд я у лифтов.'; - end - return 'Я подхожу к одному из аппаратов. Турникеты функционируют автономно. Проход закрыт -- на торце горит красная лампочка.'; - end, - used = function(s,w) - if w == 'card' then - s._unlocked = true; - s._inside = true; - here().way:add('lift'); - return 'Я подношу карточку к турникету. Загорается зеленый сигнал. Проход открыт! Я прохожу к лифтам.'; - end - end -}; - -lustra = obj { - nam = 'люстры', - dsc = 'Над головой висят прекрасные сверкающие {люстры}.', - act = 'Не могу на них наглядеться... Наверное, это хрусталь?'; - -}; - -divan = obj { - nam = 'диван', - dsc = 'На противоположной стороне от охранника, в углу стоит {диван}.', - act = function(s) - return 'Черный кожаный, очень мягкий диван.'; - end, -}; - -entrance = room { - nam = 'главный вход', - pic = 'gfx/entrance.png', - dsc = 'Первый этаж института поражает своим великолепием.', - act = function(s, w) - if w == 2 then - return 'Ворота заперты. На них висит замок.'; - end - if w == 3 then - if not turn1._inside then - return 'К лифтам мне мешают пройти турникеты.'; - end - return 'Четыре лифта явно не справляются с количеством сотрудников института.'; - end - if w == 4 then - return 'Стеклянный или хрустальный стол, за которым стоит терминал...'; - end - if w == 5 then - return 'Лучше я не буду лишний раз попадаться ему на глаза. Вряд ли он мне поможет.'; - end - if w == 6 then - return 'Люди.. Я отвык от такого количества людей.'; - end - end, - obj = { - 'lustra', - vobj(2, 'ворота', 'Железные {ворота}, ведущие к путям, занимают всю восточную стену.'), - vobj(3, 'лифты', 'Среднюю часть этажа занимают четыре {лифта}.'), - 'turn1', - vobj(4, 'стол', 'Перед турникетами находится {стол},'), - vobj(5, 'охранник', 'за которым сидит {охранник}.'), - vobj(6, 'люди', 'В институт входят и выходят {люди}, образовывая очереди у лифтов.'), - 'divan', - }, - way = { 'wside' }, - enter = function(s, f) - if have('gun') and f == 'wside' and not gun._hidden then - return 'Мне кажется, там внутри возникнет множество вопросов по-поводу моего дробовика... Я должен его как-то спрятать.', false - end - end, - exit = function(s, t) - if t == 'wside' then - turn1._inside = false; - s.way:del('lift'); - end - end, -}; - -pinlift = obj { - nam = function(s) - if s._num == 3 then - return ''; - end - return 'люди'; - end, - act = function(s) - return 'Подавленные и пустые взгляды... Тягостное молчание.'; - end, - dsc = function(s) - if s._num == 1 then - return 'В лифте полно {людей}.'; - end - if s._num == 2 then - return 'В лифте несколько {человек}.'; - end - if s._num == 3 then - return 'Лифт пуст.' - end - end -}; - -lift = room { - nam = 'лифт', - pic = 'gfx/lift.png', - dsc = 'В лифте должно быть светло и уютно, но меня мучает клаустрофобия. На панели я вижу кнопки:', - enter = function(s, t) - if here() == entrance then - s._from = 1; - pinlift._num = 1; - return 'Я дожидаюсь, когда подойдет один из лифтов и захожу внутрь.'; - end - pinlift._num = rnd(3); - if here() == floor2 then - s._from = 2; - elseif here() == floor3 then - s._from = 3; - elseif here() == floor4 then - s._from = 4; - elseif here() == floor5 then - s._from = 5; - end - return 'Я нажимаю кнопку вызова лифта и жду. Проходит некоторое время и я захожу внутрь.'; - end, - act = function(s, w) - local to,st - if not tonumber(w) then - return - end - if w == s._from then - return cat('Нет!!! Клаустрофобия выгоняет меня из лифта.^^', back()); - end - if w == 8 then - st = ''; - if galstuk._wear then - st = ' К тому же, я в галстуке.'; - end - if me()._brit then - return 'Я смотрю в зеркало и вижу усталое, но гладко-выбритое лицо. Это я.'..st; - end - return 'Я смотрю в зеркало и вижу усталое, заросшее щетиной лицо. Это я.'..st; - end - if w == 6 or w == 7 then - return 'Я нервничаю... Не надо нервов.'; - end - if w == 1 then - to = 'entrance'; - else - to = 'floor'..w; - end - return cat('Я нажимаю кнопку и жду. Меня мучает клаустрофобия, но я жду.. Уххх... Приехали!^^', - goto(to)); - end, - exit = function() - return 'За моей спиной закрываются двери лифта.'; - end, - obj = { - vobj(1,'1', '{1},'), - vobj(2,'2', '{2},'), - vobj(3,'3', '{3},'), - vobj(4,'4', '{4},'), - vobj(5,'5', '{5},'), - vobj(6,'стоп','{стоп}'), - vobj(7,'ход','и {ход}.'), - vobj(8,'зеркало', '{Зеркало} занимает всю заднюю часть.'), - 'pinlift', - }, -}; - -floor2 = room { - nam = 'площадка 2-го этажа', - pic = 'gfx/floor2.png', - dsc = "На площадке второго этажа нет окон. Невысокий потолок и серо-зеленые стены. Тихо и холодно.", - act = function(s, w) - if w == 1 then - return 'Дверь, похоже, сделана из свинца... Я не вижу возможности попасть внутрь. И хорошо. На двери, кроме знака надпись -- <<Уровень:2 Категория:Ядерная энергия>>.'; - end - if w == 2 then - return 'Да, на одном из этих лифтов я приехал на этот проклятый этаж...'; - end - end, - obj = { - vobj(1, 'дверь', 'Я вижу массивную {дверь} с знаком <<осторожно - радиация!!!>>'), - vobj(2, 'лифты', 'Кажется, что четыре проема дверей {лифтов} мрачно следят за мной.'), - }, - way = { 'lift' }, -}; - -resh = obj { - nam = 'решетка', - dsc = function(s) - if not s._unscrew then - return 'Отверстие закрыто железной {решеткой}.'; - end - if vent._off then - return 'В отверстии видны лопасти большого вентилятора. На полу валяется {решетка}.'; - end - return 'В отверстии вращаются лопасти большого вентилятора. На полу валяется {решетка}.'; - end, - act = function(s) - if s._unscrew then - return 'Вот что можно сделать обычным тупым ножом при наличии сноровки и терпения!'; - end - if not stoly._moved then - return 'Не достать...'; - end - return 'Решетка крепко привинчена 12 шурупами...'; - end, - used = function(s, w) - if w == 'knife' and not s._unscrew and stoly._moved then - s._unscrew = true; - return 'Я встаю на стол и долго пытаюсь открутить шурупы ножом. Наконец, мне это удается. Решетка падает на пол. Я спускаюсь со стола.'; - end - if w ~= 'stol' then - return 'Не получится...'; - end - end, -}; - -vent = obj { - nam = 'вентиляция', - dsc = 'В центре потолка находится большое квадратное вентиляционное {отверстие}.', - act = function(s) - if not stoly._moved then - return 'До него не достать...'; - end - if not resh._unscrew then - return 'Я встаю на стол и изучаю отверстие. Оно закрыто решеткой... Я разочарованно спускаюсь на пол.'; - end - if not s._off then - return 'Я встаю на стол и смотрю на острые лопасти вентилятора. Боюсь, это слишком опасно...'; - end - if not s._trap then - return 'Я встаю на стол, хватаюсь руками за края отверстия и подтягиваюсь... Темно и сыро. Я пытаюсь забраться внутрь вентиляции, когда вдруг перед моими глазами я вижу красные глазки и зубы жирной крысы... Нет!!! Я падаю обратно на стол и скатываюсь на пол.'; - end --- here we go! - return goto('toilet'); - end, - - used = function(s, w) - if w == 'stol' then - return - end - if not stoly._moved then - return 'Я не могу добраться до отверстия...'; - end - if not resh._unscrew then - return 'Отверстие закрыто решеткой...'; - end - if not s._off then - return 'Мне мешают лопасти вентилятора...'; - end - if w == 'gun' and not s._trap then - gun._loaded = false; - return 'Я встаю на стол и просовываю руку с дробовиком в отверстие. Оба ствола выстреливают одновременно с глухим звуком. Я прислушиваюсь. В отверстии тихо... Я спускаюсь со стола на пол. Я думаю, это бесполезно...'; - end - if w == 'trap' then - if not trap._salo then - return 'Я устанавливаю капкан на край отверстия. Жду. Но крыса не дура -- я забираю капкан обратно. Нужна приманка.'; - end - inv():del('trap'); - vent._trap = true; - return 'Я встаю на стол и устанавливаю капкан-мышеловку на край отверстия... Мне не приходится долго ждать... Лязг железа и визг крысы красноречиво говорит о том, что дело сделано!'; - end - end, - obj = { - 'resh' - } -}; - -stol = obj { - nam = 'стол', - inv = 'Я держу один из столов за угол. Дуб.', - use = function(s, w) - if w == 'vent' or w == 'resh' then - inv():del('stol'); - stoly._moved = true; - return 'Напрягая свои силы, я сдвигаю один из столов в центр комнаты.'; - end - end -}; - -stoly = obj { - nam = 'столы', - dsc = function(s, w) - if not s._moved then - return 'Четыре дубовых {стола} занимают все углы комнаты.'; - end - return 'Три дубовых {стола} стоят в углах комнаты. Один стол передвинут в центр комнаты.'; - end, - act = function(s, w) - if s._moved then - return 'Поставить один стол на другой? Нет -- я не смогу...'; - end - inv():add('stol'); - return [[Добротная мебель... Но стол в моей хижине лучше -- я сделал его своими руками. Я держу -руками угол стола.]]; - end -}; - -eroom = room { - nam = 'отдел СТО', - pic = function() - if not stoly._moved then - return 'gfx/sto.png'; - end - if not resh._unscrew then - return 'gfx/sto2.png'; - end - return 'gfx/sto3.png'; - - end, - dsc = [[Я нахожусь в небольшой комнате с бежевыми стенами.]], - enter = function(s, f) - if f == 'cor3' then - return [[Открыв дверь, я заглядываю внутрь комнаты. Ухх... Пусто! Можно осмотреться...]]; - end - if f == 'toilet' then - return 'Ну что же... Я поднимаю железную решетку в полу туалета и лезу в темноту... Через несколько минут я уже спрыгиваю из вентиляционного отверстия на стол, и спускаюсь на пол.'; - end - end, - act = function(s, w) - if w == 1 then - return 'Отодвинув жалюзи я смотрю в уже черную даль, но наталкиваюсь на свое тусклое отражение. Опустив глаза вниз я вижу пулеметные вышки и железнодорожные пути.'; - end - if w == 2 then - return 'Это всего лишь терминалы. Клиенты, которые подсоединяются к серверам института. Впрочем, меня это не интересует -- я 10 лет не видел компьютеров.'; - end - end, - obj = { - vobj(1, 'окно', 'Большое {окно} выходит на восток.'), - 'stoly', - vobj(2, 'терминалы', 'На каждом столе стоит 17 дюймовый {терминал}.'), - 'vent', - 'portrait', - }, - way = { 'cor3' }, - exit = function() - inv():del('stol'); - end -}; - -key = obj { - nam = 'ключ', - dsc = 'В двери торчит {ключ}.', - tak = 'Я осторожно вытаскиваю ключ и кладу его в карман.', - inv = 'Удивительно, но в институте вместе с электроникой используется такой простой и понятный механизм, как обычный дверной замок!', -}; - -room33 = room { - nam = 'комната', - pic = 'gfx/bholes.png', - dsc = [[Постояв несколько секунд у двери я открываю ее и вхожу внутрь.]], - act = function(s, w) - if w == 1 then - return cat('Седой человек в толстых очках оборачивается и с секунду смотрит на меня. -- Кто это? Выйдите немедленно!!^^',back()); - end - end, - obj = { - vobj(1, 'люди', [[Я вижу как группа {людей} в белых халатах расположилась перед доской в центре комнаты и о чем-то ожесточенно спорит.]]), - 'portrait', - 'key' - }; - way = { 'cor3' }, - exit = [[ Я осторожно выхожу из комнаты.]]; -}; -room3x = room { - nam = 'комната', - enter = function(s, f) - if s._num == 2 then - return [[Я приоткрываю дверь и заглядываю внутрь. Квадратная комната с двумя окнами. -Множество людей сидят за терминалами, расставленными вдоль стен. Я поскорее прикрываю дверь.]], false; - end - if s._num == 4 then - return [[Я берусь за холодный металл ручки и осторожно открываю дверь... -- Идет моделирование!!! --- слышу я из-за двери. Я быстро отпускаю ручку -- дверь закрывается...]],false; - end - if s._num == 5 then - ref(f).way:add('eroom'); - return goto('eroom'), false; - end - if s._num == 6 then - return [[Я начинаю открывать дверь, когда вдруг начинаю слышать странное все нарастающее гудение. -- Какой идиот не закрыл дверь? -- слышу я изнутри. Я поспешно отхожу от двери.]], false; - end - end, -}; -switch = obj { - nam = 'выключатель', - dsc = function(s) - local t - if vent._off then - t = ' в позиции <<выключено>>.'; - else - t = ' в позиции <<включено>>.'; - end - return 'В углу, перед входной дверью находится {выключатель}'..t; - end, - act = function(s) - if vent._off then - vent._off = false; - return 'Включаю!' - end - if not cor3._locked then - return [[Я перевожу выключатель в позицию <<выключено>> и иду вдоль стен, когда -одна из дверей за мной вдруг открывается и старческий голос звучит на весь коридор -- Безобразие!!! Включите обратно!!! -- -мне приходится вернуться к выключателю и перевести его в позицию <<включено>>.]]; - end - vent._off = true; - return 'Выключаю!'; - end -}; - -cor3 = room { - nam = 'коридор 3-го этажа', - pic = 'gfx/cor3.png', - enter = function(s, f) - if f == 'floor3' then - return 'Я подношу карточку к считывателю... Красная лампочка сначала моргает, а затем меняет свой цвет на зеленый... Проход открыт!'; - end - end, - dsc = 'Длинный коридор идет до самой стены здания. На потолке тускло горят лампы дневного света. На полу постелена зеленая ковровая дорожка.', - act = function(s, w) - if w == 1 then - return 'Я подхожу к одной из дверей и заглядываю в окошко-иллюминатор... Люди в белых костюмах, словно пчелы, снуют у причудливых аппаратов. -- Наверное, это лаборатории -- догадываюсь я.'; - end - if not tonumber(w) then - return nil, false - end - if w == 3 then - if s._locked then - return 'Эта комната закрыта... И слыша приглушенные, но настойчивые звуки изнутри, мне не хочется ее открывать.'; - end - return goto('room33'); - end - if tonumber(w) >=2 and tonumber(w) <=6 then - room3x._num = w; - return goto('room3x'); - end - if w == 7 then - return 'Окно выходит на южную сторону... Темно -- ничего не видно, кроме снежинок, ударяющихся о стекло...'; - end - if w == 8 then - return 'Зайти?'; - end - end, - used = function(s, w, ww) - if w == 1 or w == 2 or w == 4 or w == 5 or w == 6 then - return 'Не подходит...'; - end - if w == 3 and ww == 'key' then - if s._locked then - return 'Уже закрыто...'; - end - s._locked = true; - return 'Я вставляю ключ в замочную скважину и закрываю замок на два оборота. Вынимаю ключ и кладу обратно в карман.'; - end - end, - obj = { - vobj(1, 'белые двери', 'По правой стороне коридора находятся белые металлические {двери} с стеклянными окошками.'), - vobj(2, 'гравитация', 'По левой стороне коридора я вижу несколько дверных проемов с надписями: {гравитация},'), - vobj(4, 'моделирование','{моделирование},'), - vobj(5, 'эффекты СТО','{эффекты СТО},'), - vobj(3, 'черные дыры', '{черные дыры},'), - vobj(6, 'квазипространство', '{квазипространство}.'), - vobj(7, 'окно', 'В конце коридора виднеется {окно}.'), - vobj(8, 'туалет', 'Возле окна находятся {туалеты}.'), - 'switch', - 'portrait', - }, - way = {'floor3', 'toilet3', 'toiletw'}, -}; - -mylo = obj { - nam = 'мыло', - inv = function(s) - if s._pena then - return 'Кусочек мыла в пене.'; - end - return 'Кусочек мыла.'; - end, - dsc = 'На умывальнике лежит кусочек {мыла}.', - tak = 'Я взял в руки скользкий кусочек мыла... Он выпал в умывальник, но я поймал его снова и сунул в карман...'; -}; - -sushka = obj { - nam = 'сушка', - dsc = 'Рядом с умывальником находится {сушка}.', - act = function(s,w) - return 'Я подношу руки к сушке, сушка включается... Наваждение...'; - end, -}; - -umyvalnik = obj { - nam = 'умывальник', - dsc = 'У входа находится {умывальник}.', - act = function(s) - if me()._mylo then - me()._mylo = false; - return 'Я смываю мыло со своего лица...'; - end - return 'Я пью хлорированную воду жадными глотками... Да -- это не та вода из ручья, которую я пью в лесу...'; - end, - used = function(s, w) - if w == 'mylo' then - mylo._pena = true; - return 'Я опускаю мыло в теплую воду...'; - end - end -}; - -toilet3 = room { - nam = 'туалет', - pic = 'gfx/toil3.png', - dsc = 'Я в туалете. Стандартная архитектура. Без окон. Белый кафель.', - act = function(s, w) - if w == 2 then - return 'Все заняты!'; - end - if w == 3 then - return 'Люди равномерно распределены по туалету. Все унитазы заняты. Еще пару человек ждут своей очереди.'; - end - end, - obj = { - 'umyvalnik', - 'mylo', - 'tzerkalo', - 'sushka', - vobj(2, 'унитазы', 'В этом туалете установлено 4 {унитаза}.'), - vobj(3, 'люди', 'В туалете несколько {человек}...'), - }, - way = { 'cor3' }, - exit = function() - if me()._mylo then - return 'В мыле? Нет...', false - end - objs():del('face'); - end -}; -floor3 = room { - nam = 'площадка 3-го этажа', - pic = 'gfx/floor3.png', - dsc = [[На -площадке третьего этажа довольно просторно. Бежевые стены. Высокие потолки.]], - act = function(s, w) - if w == 1 then - return 'С минуту я зачарованно смотрю в окно... Белая пустыня погруженная в темноту... В эту минуту я понимаю, в какое чужое место я попал...'; - end - if w == 2 then - if not s._unlocked then - return 'Металл обитый кожей. Дверь снабжена считывателем электронных карт. Надпись на двери: <<Уровень:3 Категория: Прикладная физика>>'; - end - return goto('cor3'); - end - if w == 3 then - return 'Крепкие тут двери, не то что в моей хижине... Считыватель карточек возле замка. Надпись на двери: <<Уровень:3 Категория:Нанотехнологии>>'; - end - end, - used = function(s,w,ww) - if ww ~= 'card' then - return 'Это не поможет...'; - end - if w == 2 then - s._unlocked = true; - s.way:add('cor3'); - return goto('cor3'); - end - if w == 3 then - return 'Я подношу карточку к считывателю... Раздается раздражающий писк -- доступ не разрешен.'; - end - end, - obj = { - vobj(1, 'окно', 'Широкое {окно} выходит на запад.'), - vobj(2, 'коричневая дверь', 'Справа от окна находится коричневая {дверь}.'), - vobj(3, 'белая дверь', 'Слева -- белая {дверь}.'), - }, - way = { 'lift' }, -}; - -britva = obj { - nam = 'бритва', - dsc = 'На умывальнике лежит безопасная {бритва}.', - tak = 'Я незаметно кладу бритву в карман.', - inv = 'Бритва, немного ржавое лезвие...', -}; - -face = obj { - nam = 'лицо', - dsc = 'В зеркале отражается мое {лицо}.', - act = function(s) - local st = ''; - if me()._brit then - st = ' Гладко выбритое.'; - elseif me()._mylo then - st = ' Все в мыле.'; - end - if galstuk._wear then - st = st..' К тому же, в галстуке.'; - end - return 'Это мое лицо, отраженное в зеркале.'..st; - end, - used = function(s, w) - if w == 'mylo' then - if me()._brit then - return 'Я уже брился...'; - end - if not mylo._pena then - return 'Мыло совсем сухое...'; - end - if not have('britva') then - return 'Я намыливаю лицо и смываю грязь... Фуххх....'; - end - me()._mylo = true; - return 'Я намыливаю лицо...'; - end - if w == 'britva' then - if me()._brit then - return 'Я уже брился...'; - end - if not me()._mylo then - return 'Я не намылил лицо...'; - end - me()._brit = true; - me()._mylo = false; - return 'Я бреюсь... Через несколько минут я смываю мыло...'; - end - end -}; - -tzerkalo = obj { - nam = 'зеркало', - dsc = 'Над умывальником установлено {зеркало}.', - act = function(s) - local st = ''; - objs():add('face'); - if galstuk._wear then - st = ' К тому же, в галстуке...'; - end - if me()._brit then - return 'Грустное, но гладко выбритое лицо.'..st; - end - return 'Дикое, заросшее щетиной лицо смотрит из зеркала.'..st; - end, -}; - -toilet = room { - nam = 'туалет', - pic = 'gfx/toil4.png', - dsc = 'Довольно просторный туалет. Белый кафель. Желтые разводы. Сырость и звуки журчащей воды. Деревянная дверь ведет в коридор.', - enter = function(s, f) - if f == 'eroom' then - return 'Я лезу в вентиляционное отверстие. Внутри пыльно и тихо. Я блуждаю по причудливым переплетениям вентиляции пока, наконец, не вижу над головой свет. Еще мгновение и я выталкиваю железную решетку в полу туалета...'; - end - end, - act = function(s, w) - if w == 2 then - return 'Да... Мне повезло, я чувствую, что туалет мужской...'; - end - if w == 3 then - return 'Странная у них система вентиляции, но благодаря ей я здесь!...'; - end - end, - obj = { - vobj(2, 'унитазы', 'В этом туалете установлено всего 2 {унитаза}.'), - 'umyvalnik', - 'britva', - 'tzerkalo', - 'sushka', - vobj(3, 'решетка', 'На полу находится железная {решетка}.'), - }, - way = { 'eroom', 'cor4'}, - exit = function(s, t) - if me()._mylo then - return 'В мыле? Нет...', false - end - objs():del('face'); - if t ~= 'eroom' then - return 'Я осторожно выхожу из туалета.'; - end - end -}; - -toiletw = room { - nam = 'женский туалет', - enter = function(s, w) - return 'Фууххх... Чуть не ошибся...', false; - end -}; - -function room4x_hear() - local ph = { - [1] = '...Согласно соотношению неопределенностей мы не можем одновременно измерить координату частицы и ее импульс...', - [2] = '...Мгновенная передача возмущения волновой функции не есть передача сигнала, ибо здесь нет физических объектов, движущихся быстрее света...', - [3] = '...Редукция фон Неймана — мгновенное изменение описания квантового состояния (волновой функции) объекта, происходящее при измерении...', - [4] = '...Допустим, две одинаковые частицы A и B образовались в результате распада третьей частицы C. В этом случае, по закону сохранения импульса, их суммарный импульс p_A + p_B должен быть равен исходному импульсу третьей частицы p_C...', - [5] = '...представим себе, что на двух планетах в разных концах Галактики есть две монетки, выпадающие всегда одинаково. Если запротоколировать результаты всех подбрасываний, а потом сравнить их, то они совпадут. Сами же выпадания случайны, на них никак нельзя повлиять. Нельзя, например, договориться, что орёл — это единица, а решка — это ноль, и передавать таким образом двоичный код. Ведь последовательность нулей и единиц будет случайной и на том и на другом <<конце провода>> и не будет нести никакого смысла...'; - [6] = '...Впервые ЭПР-парадокс был сформулирован Альбертом Эйнштейном в 1928 году на 5-ом Сольвеевском конгрессе, в дискуссии с Нильсом Бором. Эйнштейн не признавал вероятностного характера квантовой механики и считал вероятностное описание микромира неполным...', - [7] = '...это интерпретация квантовой механики, которая предполагает существование <<параллельных вселенных>>, в каждой из которых действуют одни и те же законы природы и которым свойственны одни и те же мировые постоянные, но которые находятся в различных состояниях...', - [8] = 'Докторская работа Эверетта как раз и предлагала подобную альтернативу. Эверетт предложил считать, что для составной системы (каковой является частица, взаимодействующая с измерительным прибором) утверждение о том, что какая-либо подсистема находится в определённом состоянии, является бессмысленным. Это привело Эверетта к заключению об относительном характере состояния одной системы по отношению к другой...', - [9] = '...Этот шестимерный объект можно представить в виде суперпозиции двух <<альтернативных историй>> системы S, в одной из которых наблюдался результат измерения <<вверх>>, а в другой — <<вниз>>...', - [10] = '...Например, можно приготовить две частицы, находящиеся в едином квантовом состоянии так, что когда одна частица наблюдается в состоянии со спином, направленным вверх, то спин другой оказывается направленным вниз, и наоборот, и это несмотря на то, что согласно квантовой механике, предсказать, какие фактически каждый раз получатся направления, невозможно...', - }; - return ph[rnd(10)]; -end - -room4x = room { - nam = 'комната', - enter = function(s, f) - if s._num == 1 then - return 'Я осторожно берусь за ручку и пытаюсь открыть дверь. Закрыто...', false; - elseif s._num == 2 then - return 'Я подхожу к двери и прислушиваюсь... -- '..room4x_hear()..' --- Ухх... Я отхожу от двери..', false; - elseif s._num == 3 then - return 'Я подхожу к двери и прислушиваюсь... -- Внутри я слышу, как кто-то ожесточенно спорит... -- я отхожу от двери...', false; - elseif s._num == 4 then - return 'Открыв дверь я захожу внутрь. На меня пристально смотрят 12 пар глаз сидящих за столами. . Еще одна пара глаз принадлежит человеку у доски. -- Простите, ошибся -- бормочу я и выхожу из комнаты...', false; - elseif s._num == 5 then - return 'Закрыто... ', false; - end - end, -}; - -galstuk = obj { - nam = function(s) - if s._gal then - return 'галстук'; - end - return 'тряпка'; - end, - inv = function(s, w) - if not s._gal then - s._gal = true; - return 'Я рассматриваю тряпку и понимаю, что когда-то это было галстуком.'; - end - if s._hot then - if not s._wear then - s._wear = true; - return 'Я с достоинством надеваю галстук...'; - end - return 'Галстук надет...'; - end - if s._mylo then - return 'Он весь в мыле!'; - end - if not s._water then - return 'Он грязный! Я не надену это!'; - end - if not s._hot then - return 'Он мокрый! Я не надену это!'; - end - end, - used = function(s, w) - if s._wear then - return 'Галстук надет...'; - end - if w == 'mylo' then - if not mylo._pena then - return 'Мыло сухое...'; - end - s._mylo = true; - if not s._gal then - s._gal = true; - return 'Намыливая тряпку, я понимаю, что когда-то это было галстуком.'; - end - return 'Я намылил галстук...'; - end - end, - use = function(s, w) - if s._wear and w ~= 'hand' then - return 'Галстук надет...', false; - end - if w == 'umyvalnik' then - if not s._mylo then - return 'Просто водой? Вряд ли это отмоет мел...'; - end - s._water = true; - s._mylo = false; - return 'Я помыл галстук в теплой воде...'; - end - if w == 'sushka' then - if not s._water then - return 'Зачем мне сушить это?'; - end - s._hot = true; - s._water = false; - return 'Через 5 минут я полностью высушил галстук...'; - end - end -}; - -room46 = room { - nam = 'аудитория 6', - pic = 'gfx/room4.png', - enter = 'Я открываю дверь и вхожу внутрь... Комната пуста...', - dsc = 'Я нахожусь внутри аудитории... Несколько столов стоят в два ряда по направлению к доске.', - act = function(s, w) - if w == 1 then - if not have('galstuk') then - inv():add('galstuk'); - return 'На доске лежит тряпка. Я беру ее в руки.'; - end - return 'Гм... Ничего не понимаю...'; - end - if w == 2 then - return 'Внизу я вижу, как следы прожекторов шарят по снежному полю...'; - end - if w == 3 then - return 'Я сажусь за клавиатуру, но вовремя вспоминаю, что я завязал с прошлым... Я больше не хакер - я лесник.'; - end - end, - obj = { - vobj(3,'терминал', 'На каждом столе стоит {терминал}.'), - vobj(1,'доска', 'На {доске} написаны какие-то формулы...'), - vobj(2,'окно', '{Окно} выходит на восток.'), - 'portrait', - }, - way = { 'cor4' }, -}; - -facectrl = dlg { - nam = 'фэйсконтроль', - pic = 'gfx/guard4.png', - dsc = 'Я вижу перед собой неприятное лицо полного охранника.', - obj = { - [1] = phr('Я пришел послушать лекцию Белина...', - '-- Я не знаю кто вы -- ухмыляется охранник -- но мне велели пускать сюда только приличных людей.', - [[pon(2);]]), - [2] = _phr('У меня есть приглашение!', - '-- А мне плевать! Посмотри на себя в зеркало!!! Ты пришел слушать самого Белина -- правую руку самого... -- охранник почтительно помолчал -- Так что пошел вон..', [[pon(3,4)]]), - [3] = _phr('Сейчас я дам тебе по роже!', '-- Ну все... Мощные руки выталкивают меня в коридор...', - [[poff(4)]]), - [4] = _phr('Ты, кабан! Я же тебе сказал -- у меня есть приглашение!', - '-- Чтоооооо? Глаза охранника наливаются кровью... Мощный пинок отправляет меня в коридор...', - [[poff(3)]]), - [5] = _phr('Я хочу послушать лекцию Белина...', - '-- Во-первых -- доктора Белина, а во-вторых -- без галстука нельзя...', - [[pon(2)]]), - [6] = _phr('Я очень хочу послушать лекцию доктора Белина!!!', - 'Охранник смотрит на меня пристальным взглядом и нехотя произносит. -- Ваше приглашение...', - [[pon(7)]]), - [7] = _phr('Держи... св... пожалуйста...', 'Ладно... Проходите, не задерживайтесь... Лекция уже началась...', - [[inv():del('invite'); return goto('hall42')]]); - }, - exit = function(s,w) - s:pon(1); - end -}; - -hall42 = room { - nam = 'Зал 2', - pic = 'gfx/hall2.png', - dsc = 'Множество людей. Судя по тишине -- лекция уже идет.', - obj = { - vobj(1, 'Белин', 'Перед доской стоит {Белин} -- тот самый человек, который забрал моего кота.'), - vobj(2, 'места', 'В третьем ряду с краю я вижу несколько свободных {мест}.'), - vobj(3, 'окно', 'Три широких {окна} выходят на запад.'), - vobj(4, 'лампы', 'Зал освещают флоуресцентные {лампы}.'), - }, - act = function(s, w) - if w == 1 then - return 'Сейчас он без пальто и шляпы и я могу его рассмотреть... Довольно полный, но высокий... Хитрая улыбка, но лицо открытое... Он ведет лекцию -- подожду пока она закончится и поговорю с ним...'; - end - if w == 2 then - return goto('lection'); - end - if w == 3 then - return 'За окнами тьма... Только белые снежинки изредка попадают в зону освещения флоуресцентных ламп.'; - end - if w == 4 then - return 'Шесть ламп... Ненавижу этот мерцающий свет...'; - end - end, - exit = function(s, t) - if t == 'cor4' then - return 'Не хочу терять Белина из виду...', false; - end - end, - enter = function(s, f) - if f == 'facectrl' then - return 'Я прохожу в лекционный зал...'; - end - if not galstuk._wear then - facectrl:pon(5); - facectrl:poff(1); - end - if not me()._brit or not galstuk._wear then - return cat( -'Я захожу в зал, когда меня останавливает человек в форме с надписью <<ОХРАНА>>. В его руках помповое ружье.^^', goto('facectrl')), false; - end - facectrl:poff(1, 5); - facectrl:pon(6); - return goto('facectrl'), false; - end, - way = { 'cor4' }, -}; - -hall41 = room { - nam = 'Зал 1', - dsc = [[Я захожу в пустой зал. Похоже -- это один из залов для проведения лекций. Множество мест уходят -под небольшим уклоном к потолку.]], - pic = 'gfx/hall1.png', - act = function(s, w) - if w == 1 then - return 'Глядя в ночную темноту, я с тоской вспоминаю Барсика...'; - end - if w == 2 then - return 'Примерно такие были у нас в институте, когда я... Ладно...'; - end - if w == 3 then - return 'Все, что я мог бы вспомнить, я благополучно забыл.'; - end - end, - obj = { - vobj(1, 'окна', 'Три больших {окна} выходят на западную сторону.'), - vobj(2, 'стол', 'Длинный {стол} стоит перед доской.'), - vobj(3, 'доска', 'На {доске} видны следы формул прошлой лекции.'), - 'portrait', - }, - way = { - 'cor4', - }, -}; - -cor4 = room { - nam = 'коридор 4-го этажа', - pic = 'gfx/cor4.png', - dsc = 'Я нахожусь в коридоре. Потолки на этом этаже очень высокие. В конце коридора находятся туалеты. Под ногами -- ковровая дорожка зеленого цвета.', - act = function(s, w) - if not tonumber(w) then - return; - end - if w == 11 then - return 'Некоторые из них заходят в зал 2.'; - end - if w == 1 then - return 'Я тоскливо гляжу в ночную тьму... Я понимаю -- что очень устал... Но я должен идти...'; - end - if w == 12 then - return 'Эта дверь, как и многие здесь, снабжена считывателем смарт-карт. На нем горит красная лампочка.'; - end - if tonumber(w) >=5 and tonumber(w) <=9 then - room4x._num = w - 4; - return goto('room4x'); - end - if w == 10 then - ways():add('room46'); - return goto('room46'); - end - if w == 2 then - ways():add('hall41'); - return goto('hall41'); - end - if w == 3 then - ways():add('hall42'); - return goto('hall42'); - end - end, - used = function(s, w, ww) - if w == 12 and ww == 'card' then - return 'Я подношу карточку к считывателю... Биип... Доступ не разрешен...'; - end - end, - obj = { - vobj(1, 'окно', '{Окно} выходит на юг.'), - vobj(2, 'зал 1','На западной стороне я вижу два широких дверных проема: {зал 1},'), - vobj(3, 'зал 2', '{зал 2}.'), - vobj(5, 'аудитория 1', 'На восточной стороне расположены двери поменьше. Надписи на дверях: {аудитория 1},'), - vobj(6, 'аудитория 2', '{аудитория 2},'), - vobj(7, 'аудитория 3', '{аудитория 3},'), - vobj(8, 'аудитория 4', '{аудитория 4},'), - vobj(9, 'аудитория 5', '{аудитория 5},'), - vobj(10, 'аудитория 6', '{аудитория 6}.'), - vobj(11, 'люди', 'Время от времени в коридоре появляются {люди}.'), - vobj(12, 'входная дверь', 'Входная {дверь} находится на северном конце коридора.'), - 'portrait', - }, - way = { - 'toilet', - 'toiletw', - } -}; -floor4 = room { - nam = 'площадка 4-го этажа', - pic = 'gfx/floor4.png', - dsc = 'На четвертом этаже высокие потолки.', - act = function(s, w) - if w == 1 then - return 'Тьма... Нет ни одного огонька... Я даже не вижу звезд, тусклый, но тягостный свет ламп дневного освещения мешает их увидеть...'; - end - if w == 2 then - return 'Я ненавижу лифты...'; - end - if w == 3 or w == 4 then - return 'Обычная дверь для этого здания. Электронный замок. Без карточки я не пройду.'; - end - end, - used = function(s, w, ww) - if ww == 'card' then - if w == 3 or w == 4 then - return [[Я подношу карточку к считывателю. Бииип... В доступе отказано...]]; - end - end - end, - obj = { - vobj(1, 'окно','{Широкое} окно смотрит на запад.'), - vobj(2, 'лифты', 'Площадка с четырьмя {лифтами} тускло освещена лампами.'), - vobj(3, 'южная дверь', 'Две двери ведут в северный и южный коридоры. Надпись на южной {двери}: <<уровень:4 категория:теоретическая физика>>'), - vobj(4, 'северная дверь', 'На северной {двери}: <<уровень:4 категория: биология>>'), - }, - way = { 'lift' }, -}; - -floor5 = room { - nam = 'площадка 5-го этажа', - pic = 'gfx/floor5.png', - dsc = [[Потолки на пятом этаже очень высокие.]], - act = function(s, w) - if w == 1 then - return 'Мои ноги утопают в красном бархате... Не наследить бы...'; - end - if w == 2 then - return 'Нет, все-таки это хрусталь...'; - end - if w == 3 then - return 'Я подхожу к окну... Любопытно, я вижу, что окно выходит на довольно широкий участок крыши, который проходит через фронтальную часть здания...'; - end - if w == 4 or w == 5 then - return 'Изучить двери мне мешает охранник... А мой пропуск здесь не подойдет...'; - end - if w == 6 then - return 'Пока он не обращает на меня внимания, но все-равно не стоит нарываться...'; - end - end, - used = function(s, w) - if not tonumber(w) then - return - end - if w == 6 then - return 'Не надо его раздражать...'; - end - if w >=1 and w <=5 then - return 'Я не буду делать это при охраннике.'; - end - end, - obj = { - vobj(1, 'ковер', 'Лифтовую площадку покрывает красный {ковер}.'), - vobj(2, 'люстра', 'Хрустальная {люстра} висит на высоком потолке.'), - vobj(3, 'окно', 'Широкое {окно} выходит на запад.'), - vobj(4, 'информация', 'Я вижу две двери, ведущие в южный и северный коридоры. На южной {двери} написано: <<уровень 5, категория: информация>>.'), - vobj(5, 'красная дверь', 'На северной {двери} нет надписей. Это массивная дверь, обитая красной кожей.'), - - vobj(6, 'охранник', 'Между проходами в коридоры установлен стол, за которым сидит {охранник},'); - }, - way = { 'lift' }, -}; - diff --git a/games/cat/ep3.lua b/games/cat/ep3.lua deleted file mode 100644 index 8c00548..0000000 --- a/games/cat/ep3.lua +++ /dev/null @@ -1,1639 +0,0 @@ -lection = room { - nam = 'Лекция Белина', - pic = 'gfx/lection.png', - dsc = [[Я пробираюсь к месту и сажусь... Отсюда хорошо слышно -- послушаем именитого физика... -- Думаю я... ^^Итак, в ноябре 1935г. Шредингер опубликовал статью, -в которой проводился следующий мысленный эксперимент -- продолжал Белин -- -в чем суть эксперимента? -- С этими словами Белин вытащил и поставил на стол -ящик странного вида -- Люблю опыты -- белоснежная улыбка тускло блеснула в свете ламп -- -Как вы можете видеть это ящик -- Белин похлопал ладонью -по гладкой поверхности. -- В ящик встроена капсула с ядовитым газом -Кроме того, в статико-динамическом поле ящика находятся счетчик радиации, -изотопный элемент и таймер. Параметры эксперимента подобраны так, что вероятность того, что ядро распадётся за 1 час, составляет 50%.^^ - - -Если ядро распадается, оно приводит механизм в действие, он открывает ёмкость с газом. -- -Пока все просто -- не так ли, господа? -- Улыбается Белин -- но дело в том, -что Шредингер в своем эксперименте помещает в ящик кота -- живое существо. ^^ - -Согласно квантовой механике, если над ядром не производится наблюдения, то его состояние описывается суперпозицией (смешением) двух состояний — распавшегося ядра и нераспавшегося ядра, следовательно, кот, сидящий в ящике, и жив, и мёртв одновременно. -- Белин повышает голос. -- можно сказать, что это просто игры разума, отвлеченная лирика, но я покажу и докажу, что это не совсем так... ^^ - --- Итак, если ящик открыть, то экспериментатор обязан увидеть только какое-нибудь одно конкретное состояние — <<ядро распалось, кот мёртв>> или <<ядро не распалось, кот жив>>. Сам Шредингер думал, что его парадокс доказывает несостоятельность квантовой механики, но мы то с вами знаем, что квантовая механика и есть истинное представление о нашем мире -- снова повышает тон голоса Белин -- и вот, независимо друг от друга, что доказывает отчасти истинность предположения -- Ганс Моравек в 1987 и Бруно Маршал в 1988 рассмотрели ситуацию с точки зрения самого кота!^^ - --- Если верна многомировая интерпретация Эверетта, то в результате каждого проведенного эксперимента с котом вселенная расщепляется на две вселенных, в одной из которых кот остается жив, а в другой погибает. В мирах, где кот умирает, он перестает существовать. Напротив, с точки зрения неумершего кота, эксперимент будет продолжаться, не приводя к исчезновению кота. Это происходит потому, что в любом ответвлении кот способен наблюдать результат эксперимента лишь в том мире, в котором он выживает. И если многомировая интерпретация верна, то кот может заметить, что он никогда не погибнет в ходе эксперимента... -- Белин замолкает и осматривает зал... ^^ - --- Но что вытекает из этого, господа? Я спрашиваю, что из этого вытекает? -- Представим, что участник эксперимента взрывает ядерную бомбу вблизи себя. С точки зрения многомировой интерпретации, практически во всех параллельных вселенных ядерный взрыв уничтожит участника. Но несмотря на это, должно существовать небольшое множество альтернативных вселенных, в которых участник каким-либо образом выживает. И мы переходим к идее -- Белин снова поднял голос -- идее квантового бессмертия!!! ^^ - --- Идея квантового бессмертия состоит в том, что участник остаётся в живых, и тем самым способен воспринимать окружающую реальность, по меньшей мере в одной из вселенных в множестве, пусть даже количество таких вселенных пренебрежимо мало в сравнении с количеством всех возможных вселенных. Таким образом, со временем участник обнаружит, что он может жить вечно!!! ^^ - -Мы все с вами тяжело работали этот год, под четким руководством... -- тут Белин бросил взгляд в сторону портретов -- и должен вам сказать, что информации в нашем информационном центре -- Белин посмотрел в потолок -- достаточно, чтобы доказать, я повторяю, научно доказать теоретически и экспериментально истинность многомировой интерпретации... -- Но что это значит для нас? -- Вы не можете этого видеть, но -- Белин смотрит на часы -- уже через несколько минут состав с ураном прибывает к задним воротам института... Урана хватит для того, чтобы обеспечить каждого из вас ядерной бомбой. Так как вы скоро убедитесь в том, что квантовое бессмертие это реальность, то каждый из нас сможет стать непобедимым террористом!!! Вселенная расщепится на множество миров, в каждом из который Вы -- палец Белина указывает в зал -- будете его диктатором и господином!!! -- Белин почти кричал...^^ - -Зал не выдержал и взревел. Люди вставали и хлопали... Их глаза горели каким-то бешеным огнем... О Боже, -- подумал я -- это какое-то наваждение... Мои ноги не слушались меня -- я сидел на своем месте и не мог пошевелиться...^^ - -Но я отвлекся -- говорит Белин -- продолжим наш опыт. С этими словами он достал из-под стола живой комочек... Это был мой Барсик... -- Сейчас я помещу эту кошку в ящик и мы с вами... -- красная пелена застилает мои глаза... - ]], - enter = function(s) - -- end of episode 2 - eside = nil; - moika = nil; - eating = nil; - kitchen = nil; - stolcorridor = nil; - entrance = nil; - floor2 = nil; - eroom = nil; - room33 = nil; - room3x = nil; - cor3 = nil; - toilet3 = nil; - floor3 = nil; - toilet = nil; - toiletw = nil; - room4x = nil; - room46 = nil; - hall42 = nil; - hall41 = nil; - floor4 = nil; - floor5 = nil; - povardlg = nil; - kitchendlg = nil; - facectrl = nil; - end, - act = function(s, w) - if w == 1 then - set_music("mus/under.s3m"); - return goto('escape1'); - end - end, - obj = { - vobj(1, 'дальше', '{Дальше}.'), - }; -}; - -profdlg = dlg { - nam = '!!!', - pic = 'gfx/me.png', - dsc = 'Я собираюсь с силами, встаю и во всю глотку кричу...', - obj = { - [1] = phr('Это кот, а не кошка!', - '-- Рука Белина останавливается -- его взгляд фокусируется на мне -- он узнает меня!! -- Охрана -- в зале посторонний!!! Убе... Уберите его!!! -- кричит он..', - [[poff(2);escape1.obj:add('guardian')]]), - [2] = phr('Не трогай моего кота!', - '-- Белин замирает, затем смотрит мне прямо в глаза -- его лицо выражает удивление -- Охрана!!! Охрана!!! В зале посторонний!!!', - [[poff(1);escape1.obj:add('guardian')]]), - }, -}; - -profdlg2 = dlg { - nam = 'Белин', - pic = 'gfx/prof2.png', - dsc = 'Белин бледен. Он смотрит на дробовик рассеянным взглядом.', - obj = { - [1] = phr('Я пришел за своим котом.', - 'Я выхватываю Барсика из руки Белина и засовываю себе за пазуху.', - [[inv():add('mycat'); lifeon('mycat')]]), - [2] = phr('Скажи им, что бы расходились!!!', - '-- Белин бледен, похоже он не понимает меня..', - [[pon(3)]]), - [3] = _phr('Ну же!!! Скажи им, чтобы расходились...', 'Я трясу его. Белин не чувствует, он лишь смотрит на черные стволы дробовика.',[[pon(3); back();]]); - }, -}; -gdlg1 = dlg { - nam = 'охранник', - pic = 'gfx/guard42.png', - dsc = 'Я кричу охраннику и не узнаю свой голос...', - obj = { - [1] = phr('Положи свое ружье прикладом вперед на стол и толкни его сюда..', - 'Охранник неуверенно смотрит на меня..', - [[pon(2)]]), - [2] = _phr('Я сказал на стол ружье!!! -- я посильнее надавливаю стволами на Белина -- он близок к обмороку.', 'Охранник осторожно кладет помповое ружье на стол и толкает его ко мне... -- я быстро забираю ружье. Теперь в левой руке у меня обрез, в правом -- помповое ружье.', - [[pon(3); inv():add('shotgun')]]), - [3] = phr('Не нравилось тебе мое лицо да?? Дааа???', - 'Охранник молчит, на его лбу выступает пот...', - [[pon(3); back();]]), - }; -}; - -shotgun = obj { - nam = 'ружье', - inv = 'Помповое ружье... На 6 зарядов. Интересно, сколько там осталось?', - dsc = 'На полу валяется помповое {ружье}.', - tak = function(s) - if s._unloaded then - return 'Оно мне больше не нужно. Полностью разряжено.', false - end - return 'Я беру свое ружье обратно.'; - end, -}; - -guardian = obj { - nam = 'охранник', - dsc = function(s, w) - if not professor._gun then - return 'Я вижу как {охранник} с помповым ружьем медленно, но верно пробирается к моему месту.'; - end - if have('shotgun') then - return 'Я вижу обезоруженного {охранника}, внимательно смотрящего на меня.'; - end - return 'Я вижу {охранника}, неуверенно держащего в руках помповое ружье.'; - end, - act = function(s, w) - if not professor._gun then - return 'Скоро он доберется до меня...'; - end - return goto('gdlg1'); - end, - used = function(s, w) - if w == 'shotgun' then - return 'Нет, я не могу пойти на это...'; - end - if w == 'gun' then - if not professor._gun then - return 'Мой обрез не для дальнего боя...'; - end - return 'Я опасаюсь отводить обрез от Белина, к тому же, потом мне придется его перезаряжать...'; - end - end -}; - -professor = obj { - nam = 'Белин', - dsc = function(s, w) - if not s._gun then - return 'Перед доской стоит {Белин} и держит в руке моего Барсика.'; - end - return 'Я упираюсь обоими стволами дробовика в грудь {Белина}.'; - end, - act = function(s) - if not s._gun then - return goto('profdlg'); - end - return goto('profdlg2'); - end, - used = function(s, w) - if w == 'gun' then - if s._gun then - return 'Я еще сильнее надавливаю обоими стволами на грудь Белина.'; - end - s._gun = true; - objs():add('guardian'); - gun._hidden = false; - return 'Я достаю обрез из-под одежды и, перепрыгивая через стол, бросаюсь к Белину.'; - end - end, -}; -pdlg = dlg { - nam = 'люди', - pic = 'gfx/me.png', - dsc = 'Я смотрю в зал и кричу...', - obj = { - [1] = phr('Вас обманывают!!! Никакого доказательства нет!!!', - '-- никакой реакции...',[[pon(2)]]), - [2] = _phr('Мир един!!! Каждый из вас знает об это с детства!!! Уходите от сюда!! Бегите от этих сектантов!!!', ' -- ответом мне было молчание...'), - [3] = phr('Стадо баранов!!! Неужели вас так легко обмануть???', - '-- они молчат -- и мне не нравится их взгляды...', - [[pon(3); back();]]), - }, -}; -narod = obj { - nam = 'люди', - dsc = function(s) - if not professor._gun then - if seen('guardian') then - return '{Люди} в зале смотрят на меня с недоумением. Они в замешательстве.'; - end - return '{Люди} в зале следят за Белиным.'; - end - return '{Люди} в зале замерли. Они не спускают с меня взгляд. Если я ошибусь -- мне конец... И всему миру...'; - end, - act = function(s) - if professor._gun then - return goto('pdlg'); - end - if seen('guardian') then - return 'Пока они на меня не бросились и это хорошо...'; - end - return 'Фанатики, они фанатики...'; - end, - used = function(s, w) - if w == 'gun' or w =='shotgun' then - return 'Я думаю, что патронов не хватит.'; - end - return 'Увы...'; - end -}; - -win = obj { - nam = 'окно', - dsc = function(s) - local st = ''; - if s._broken then - st = ' Одно из окон разбито.'; - end - return 'Три широких {окна} выходят на запад.'..st; - end, - act = 'За окнами тьма... Только белые снежинки изредка попадают в зону освещения флоуресцентных ламп.'; - used = function(s, w) - if w ~= 'gun' and w ~= 'shotgun' then - return 'Не поможет...'; - end - if s._broken then - return 'Уже разбито...'; - end - if not have('shotgun') then - return 'Охранник подстрелит меня..'; - end - s._broken = true; - ways():add('window'); - return 'Я разбиваю прикладом ближайшее окно...'; - end -}; - -escape1 = room { - nam = 'Зал 2', - dsc = 'Я нахожусь в зале. Люди в зале ждут продолжения эксперимента.', - pic = function() - if professor._gun then - return 'gfx/meandgun.png'; - end - return 'gfx/lection2.png'; - end, - obj = { - 'win', - vobj(4, 'лампы', 'Зал освещают флоуресцентные {лампы}.'), - 'professor', - 'narod', - vobj(5, 'ящик', 'На столе стоит {ящик}.'), - 'portrait', - }, - act = function(s, w) - if w == 5 then - return 'Проклятая коробка...'; - end - if w == 4 then - return 'Шесть ламп... Ненавижу этот мерцающий свет...'; - end - end, - used = function(s, w, ww) - if ww == 'gun' or ww == 'shotgun' then - if not professor._gun then - return 'Не стоит...'; - end - if w == 4 then - return 'Темнота поможет не только мне, но и им... А их больше...'; - end - if w == 5 then - return 'Там яд. Я боюсь навредить моему Барсику.'; - end - end - end, - exit = function(s, t) - if t == 'window' and not have('mycat') then - return 'А как же Барсик?', false - end - if t == 'cor4' then - return 'Я должен что-то сделать сейчас же!', false; - end - end, - way = { 'cor4' }, -}; -lest = obj { - nam = function(s, w) - if s._seen then - return 'лестница'; - else - return 'нечто'; - end - end, - dsc = function(s, w) - if s._seen then - return 'За метелью я едва различаю пожарную {лестницу}!'; - end - return 'За метелью я едва различаю контуры какой-то {конструкции}.'; - end, - act = function(s, w) - if not s._seen then - ways():add('ladder'); - s._seen = true; - return 'Это же пожарная лестница!!!'; - end - return 'Прыгать или нет? Вот в чем вопрос...'; - end, -}; - -window = room { - nam = function(s) - if here() == window then - return 'на подоконнике'; - end - return 'в окно'; - end, - pic = 'gfx/fromwin1.png', - enter = "Это безумие, но все же я бросаюсь к окну... За спиной я слышу рев толпы..."; - dsc = 'Я стою на подоконнике и всматриваюсь в ночную пустоту.', - obj = { - 'lest', - }, - exit = function(s, t) - if t == 'escape1' then - return 'Мне нельзя назад... Там толпа фанатиков...', false; - end - end, - way = { 'escape1',}, -}; - -down = room { - nam = 'вниз'; -}; - -window5 = obj { - nam = 'окно', - dsc = function(s, w) - if s._broken then - return 'Слева от меня, разбитое {окно}.'; - end - return 'Слева от меня желтый огонек {окна}.'; - end, - act = function(s) - if not s._broken then - return 'Окно закрыто...'; - end - return goto('room5'); - end, - used = function(s, w) - if w == 'gun' or w == 'shotgun' then - if s._broken then - return 'Уже разбито...'; - end - s._broken = true; - return 'Я выбиваю стекло прикладом... Осколки стекла падают в темноту...'; - end - end -}; - - -up = room { - _num = 0; - nam = 'наверх', - enter = function(s, w) - s._num = s._num + 1; - if s._num == 2 then - lifeon('ladder'); - return 'Внезапно, ночную тьму разрезает луч прожектора и тишину нарушает вой сирены... Похоже, внизу меня заметили...', false; - end - if s._num > 4 then - ladder.way:del('up'); - ladder.obj:add('window5'); - end - return 'Я медленно ползу вверх...', false; - end -}; - -ladder = room { - nam = 'лестница', - pic = 'gfx/ladder.png', - dsc = [[Я стою на холодной лестнице. Ледяные иголки снежинок больно ударяются о мое лицо.]], - act = function(s, w) - if w == 1 then - return 'Я скоро окоченею... Надо двигаться..'; - end - end, - obj = { - vobj(1, 'поручни', 'В моих руках, железные {поручни}.'), - }; - enter = function(s) - inv():del('gun'); - return [[Я разбегаюсь и прыгаю... Несколько секунд мое сердце сжимается, но я чувствую тепло Барсика за пазухой и уже в следующий миг мои руки хватаются за черную сталь... Дробовик срывается с моего плеча и летит вниз...]]; - end, - way = { 'up', 'down' }, - life = function(s) - if rnd(2) == 1 then - return 'Я слышу треск автоматных очередей -- несколько пуль проходят совсем рядом...'; - end - end, - exit = function(s, t) - if t == 'down' then - if s._shoot then - return 'Меня убьют... И Барсика... И разрушат весь мир...', false; - end - lifeon('ladder'); - s._shoot = true; - return 'Я начинаю спускаться вниз, когда ночную тьму вдруг разрезает луч прожектора и тишину нарушает вой сирены... Похоже, внизу меня заметили...', false; - end - if t ~= 'up' then - lifeoff('ladder'); - end - end -}; - -hand = obj { - nam = 'кровавая рука', - inv = 'Моя рука кровоточит... Мне кажется, что скоро я потеряю сознание...', - life = 'Капли крови падают с моей правой руки на пол...', - used = function(s, w) - if w == 'galstuk' then - inv():del('galstuk'); - inv():del('hand'); - lifeoff('hand'); - return 'Я перевязываю руку галстуком... Пока сойдет...'; - end - end -}; - -computers = obj { - nam = 'компьютеры', - dsc = 'Большую площадь занимают высокие стойки с компьютерным {оборудованием}. Тихое жужжание вентиляторов едва слышно. Нервно подмигивают лампочки сетевого оборудования.'; - act = function(s) - if kover._fire then - return 'Ну что же... Гори, зло, гори!!! Пора выбираться отсюда.'; - end - return 'Это оборудование хранит зло... Мне нужно уничтожить все это, но как? Из своего прошлого я знаю, что самый надежный способ уничтожить информацию на магнитных носителях -- провести ее через точку Кюри, другими словами -- сжечь это все к чертям собачьим... Но где мне взять огонь?'; - end, - used = function(s, w) - if w == 'shotgun' then - return 'Расстрелять серверы? Ненадежно... Я должен сжечь это зло...'; - end - end -}; - -poroh = obj { - nam = 'порох', - inv = 'Этот порох должен мне помочь.', -}; - -trut = obj { - nam = 'трут', - inv = 'Кусок газеты с порохом. Да это же трут!!!', - use = function(s, w) - if w == 'ibp' and ibp._knife and not ibp._trut then - ibp._trut = true; - inv():del('trut'); - return 'Я кладу трут на ИБП.'; - end - end -}; -fire = obj { - nam = 'огонь', - inv = 'Бумажка быстро горит... Надо что-то делать!!!', - use = function(s, w) - if w == 'poroh' then - return 'Рванет прямо в руке.'; - end - if w == 'news' then - return 'Я отрываю еще кусок от газеты. Пламя перекидывается на него.'; - end - inv():del('fire'); - if w ~= 'kover' then - return 'Бумага догорает и гаснет...'; - end - if kover._fire then - return 'Я кидаю бумажку на горящий ковер...'; - end - kover._fire = true; - return 'Я кладу бумагу на ковер... Волоски ковра вспыхивают... Похоже, начинается пожар..'; - end -}; - -ibp = obj { - nam = 'ИБП', - dsc = 'Один разобранный {ИБП} валяется на полу.', - inv = function(s) - if not s._knife then - return 'Это источник бесперебойного питания. Что мне с ним делать?'; - end - local st = ''; - if s._trut then - st = ' На батарее лежит бумага с порохом.'; - end - return 'Разобранный ИБП. Я вижу клеммы, ведущие к батарее...'..st; - end, - act = function(s) - if not have('ibp') then - if not have('fire') and not kover._fire then - take('ibp'); - return 'Я снова беру ИБП в руки.'; - end - return 'Мне он больше не нужен.'; - end - return s:inv(); - end, - used = function(s, w) - if not have('ibp') then - return 'Не сработает...'; - end - if w == 'knife' then - s._knife = true; - return 'Я раскручиваю винты и разбираю ИБП. Теперь я вижу клеммы, ведущие к батарее...'; - end - if w == 'provodki' and s._knife then - if not provodki._knife then - return 'Проводки не оголены.'; - end - if not s._trut then - return 'Я подсоединяю проводки к клеммам и замыкаю усики проводов -- от замыкания проскакивает искра. Нужен трут...'; - end - drop('ibp'); - ibp._trut = false; - inv():add('fire'); - return 'Я подсоединяю проводки к клеммам и замыкаю усики проводов. Проскакивает искра и перекидывается на трут. Трут вспыхивает!!! Огонь!!!'; - end - if w == 'provod' then - return 'Я вставил, а затем снова вытащил провод из ИБП... Хммм...'; - end - end, -}; - -provodki = obj { - nam = 'тонкие проводки', - inv = function(s) - if s._knife then - return 'Пара тонких проводков с усиками на конце.' - end - return 'Пара тонких проводков.' - end, - used = function(s, w) - if w == 'knife' and not s._knife then - s._knife = true; - return 'Я отрезаю изоляцию с концов проводка и достаю тоненькие усики.'; - else - return 'Не сработает...'; - end - end -}; - -provod = obj { - nam = 'провод от ИБП', - inv = 'Это провод от ИБП.', - used = function(s, w) - if w == 'knife' then - if not knife._oster then - return 'Лезвие ножа слишком тупое...'; - end - inv():del('provod'); - inv():add('provodki'); - return 'Я разрезаю оплетку и достаю две жилы провода.' - end - end -}; - -ups = obj { - nam = 'ибп', - dsc = 'Множество {источников бесперебойного питания} стоят у каждой стойки.', - act = function(s) - if have('hand') then - return 'У меня поранена рука. Кровь так и хлещет, я не могу таскать ИБП.'; - - end - if not have('ibp') and not seen('ibp') then - inv():add('ibp'); - inv():add('provod'); - return 'Немного порывшись я отсоединяю один из источников и держу его в руках...'; - end - return 'Я уже брал один UPS.'; - end, -}; - -kover = obj { - nam = 'ковер', - dsc = function(s) - if s._fire then - return '{Ковер} на полу занимается пламенем.'; - end - return 'На полу постелен красный {ковер}.'; - end, - act = 'Ненужная роскошь.', -}; - -room5 = room { - nam = 'центр информации'; - pic = 'gfx/servers.png', - dsc = [[Я в огромном помещении, занимающем всю южную часть института.]], - enter = function(s, f) - if f == 'ladder' then - set_music('mus/hybrid.xm'); - lifeon('hand'); - inv():add('hand'); - return 'Я прыгаю и хватаюсь за раму окна. Моя правая рука в крови. Не обращая внимания на боль, я спрыгиваю на пол комнаты...'; - end - end, - exit = function(s, f) - set_music("mus/under.s3m"); - end, - act = function(s, w) - if w == 1 then - return 'Я не полезу назад... Там холодно и стреляют...'; - end - end, - obj = { 'computers', 'ups', - vobj(1, 'окно', 'В разбитое {окно} дует холодный зимний ветер.'), - 'kover', - 'dout', - 'portrait', - }, -}; -dout = obj { - nam = 'дверь', - dsc = function(s) - return 'Далеко впереди я могу видеть выходную {дверь}.' - end, - act = function(s) - if not kover._fire then - return 'Это центр обработки информации. Я должен уничтожить его, чтобы спасти мир от заразы, что хранится в недрах его накопителей...'; - end - return 'Я подбегаю к двери. Дверь ведет на площадку пятого этажа и она электронная!!! Это значит, что открыть я ее могу только с помощью карточки с требуемым уровнем доступа. Я сгорю?'; - end, - used = function(s, w) - if not kover._fire then - return s:act(); - end - if w == 'card' then - return 'Я подношу карточку к двери. Биип -- в доступе отказано! Я сгорю здесь!!!'; - end - if w == 'shotgun' then - return goto('escape2'); - end - return 'Не поможет...'; - end -}; - -handgdlg = dlg { - nam = 'охранник', - pic = 'gfx/handhoh.png', - dsc = 'Охранник -- еще молодой парень лет 30 -- смотрит на меня. Он растерян.', - obj = { - [1] = phr('Отдай мне свое оружие!', '-- Я без оружия -- качает охранник головой... Не знаю верить ему или нет, но обыскивать его мне не хочется...'), - [2] = phr('Мне нужен ключ от красной двери.', 'Охранник бледнеет. -- Ни у кого нет ключа от ЭТОЙ двери. -- произносит он. -- Что за чушь? -- Думаю я.'), - [3] = phr('Ок! Просто стой и не дергайся.', 'Охранник молча смотрит на меня', - [[pon(3);back();]]), - }, -}; - -win5 = obj { - nam = 'окно', - dsc = function (s) - if s._broken then - return 'В разбитое {окно} завывает зимний ветер. Снежинки вихрем залетают на этаж.'; - end - return 'Широкое {окно} выходит на запад.'; - end, - act = function(s) - if not s._broken then - return 'Я подхожу к окну... Любопытно, я вижу, что окно выходит на довольно широкий участок крыши, который проходит через фронтальную часть здания...'; - end - return 'Окно разбито... Третье за сегодня.'; - end, - used = function(s, w) - if s._broken then - return s:act(); - end - if w == 'shotgun' then - s._broken = true; - ways():add('krysha'); - return 'Уххх.... Третье окно за сегодня... Я размахиваюсь и осколки стекла вылетают на крышу...'; - end - end, -}; - -escape2 = room { - _timer = 0, - nam = 'площадка 5-го этажа', - pic = 'gfx/floor5e.png', - dsc = [[Потолки на пятом этаже очень высокие.]], - enter = function(s, f) - if f == 'room5' then - lifeon('escape2'); - return 'В бессилии я бью прикладом в ненавистную дверь. И вдруг, через несколько секунд слышу, как кто-то подходит к двери с внешней стороны... Это охранник!!! Писк срабатывания считывателя -- и вот, дверь открывается. Охранник пятится -- ему в грудь упирается ствол помпового ружья. Мы выходим на площадку пятого этажа.'; - end - if f == 'krysha' then - lifeon('escape2'); - end - end, - life = function(s) - s._timer = s._timer + 1; - if s._timer == 3 then - return 'Внезапно, на этаже раздается звук сирены. -- Внимание!!! На пятом этаже лицо с нулевым уровнем допуска. Повторяю... -- льется голос из невидимых динамиков.'; - end - if s._timer > 3 then - return '-- На пятом этаже лицо с нулевым уровнем доступа!!! -- от воя сирены меня начинает мутить.'; - end - end, - act = function(s, w) - if w == 1 then - return 'Мои ноги утопают в красном бархате... Проклятая роскошь!'; - end - if w == 2 then - return 'Нет, все-таки это хрусталь...'; - end - if w == 4 then - return 'Пожар уже начался...'; - end - if w == 5 then - return 'Не думаю, что мой пропуск здесь подойдет.'; - end - if w == 6 then - return goto('handgdlg'); - end - end, - used = function(s, w, ww) - if w == 6 then - return 'Я держу охранника на мушке.'; - end - if w == 5 then - return 'Не поможет.'; - end - end, - obj = { - vobj(1, 'ковер', 'Лифтовую площадку покрывает красный {ковер}.'), - vobj(2, 'люстра', 'Хрустальная {люстра} висит на высоком потолке.'), - 'win5', - vobj(4, 'информация', '{Дверь} в центр обработки информации распахнута. Из нее начинает валить дым.'), - vobj(5, 'красная дверь', 'Напротив нее находится {дверь} без надписей. Это массивная дверь, обитая красной кожей.'), - - vobj(6, 'охранник', 'В центре площадки подняв руки, стоит {охранник}.'); - }, - way = { 'lift','room5' }, - exit = function(s, t) - if t == 'room5' then - return 'Там пламя!', false - end - if t == 'lift' then - return 'Я вижу, что лампочки вызова всех лифтов горят. Скорее всего это означает, что сюда поднимается охрана... Надо спешить!', false; - end - if t == 'krysha' then - lifeoff('escape2'); - end - end -}; - -swin = obj { - nam = 'южное окно', - dsc = 'Из южного {окна} валит дым.', - act = 'Да, это одно из окон информационного центра. Я заглядываю в окно и вижу пламя.', -}; -nwin = obj { - nam = 'северное окно', - dsc = function(s) - local st = ''; - if s._broken then - st = ' Оно разбито.'; - end - return 'Северное {окно} светит в темноту желтым светом.'..st; - end, - act = function(s) - if s._broken then - return goto('hall5'); - end - return 'Гм... Я заглядываю в окно и вижу прекрасный зал.'; - end, - used = function(s, w) - if w == 'shotgun' then - s._broken = true; - ways():add('hall5'); - return 'Уххх... Надеюсь, это последнее??? Я размахиваюсь и разбиваю стекло прикладом помпового ружья.'; - end - end, -}; - -hall5 = room { - nam = 'зал', - pic = 'gfx/hall5.png', - enter = function(s, f) - if f == 'krysha' then - return 'Я спрыгиваю в зал и оглядываюсь...'; - end - end, - act = function(s, w) - if w == 1 then - return 'Ненужная роскошь.'; - end - if w == 2 then - return 'Я провожу ладонью по скользкой поверхности одной из колонн... Мрамор!'; - end - if w == 3 then - return 'Но уж эта-то люстра точно из горного хрусталя.'; - end - if w == 4 then - return 'Темно... Хотя... Что это? Мне кажется, что у задней стороны института стоит поезд.'; - end - if w == 5 then - return 'У разбитого окна кружатся снежинки.'; - end - if w == 6 then - if s.way:srch('escape3') then - return goto('escape3'); - end - return goto('gudlg'); - end - if w == 7 then - return 'Эта дверь закрыта. Вряд ли ее можно открыть моим ключом.'; - end - if w == 8 then - return 'Гммм... Пикассо?'; - end - if w == 9 then - return 'Страшная слабость охватывает меня... Нет -- мне нельзя спать...'; - end - end, - used = function(s, w, ww) - return 'Зачем?'; - end, - dsc = 'Прекрасный и огромный зал занимает почти всю северную часть здания!', - obj = { - vobj(1,'ковер', 'Под ногами бархат красного {ковра}.'), - vobj(2,'колонны', 'Восемь мраморных {колонн} образуют коридор.'), - vobj(3,'люстра', 'Великолепная {люстра} свисает с потолка.'), - vobj(4,'восточные окна', 'На восток выходит четыре {окна}.'), - vobj(5,'западные окна', 'Разбитое {окно} находится слева от меня.'), - vobj(6,'небольшая дверь', 'В конце зала, в его северной части, я вижу небольшую деревянную {дверь}.'), - vobj(7,'входная дверь', 'За моей спиной входная {дверь}.'), - vobj(8,'картины', 'По стенам развешаны {картины} в красивых рамах.'), - vobj(9,'диваны', 'У стен расставлены мягкие {диваны}.'), - }, - way = { 'krysha' }, -}; - -krysha = room { - nam = 'крыша', - pic = 'gfx/krysha.png', - enter = function(s, f) - return 'Я быстро подхожу к разбитому окну и вот, я на крыше...'; - end, - dsc = 'Видимо, пятый этаж был достроен позже остальных четырех. По участку крыши я могу добраться до первых окон южного и северного крыла.', - obj = {'nwin', 'swin'}, - way = {'escape2'}, -}; - -gudlg2 = dlg { - nam = 'человек с портрета', - pic = 'gfx/pmanb.png', - dsc = 'Я смотрю на его поникшее лицо. Оно по-прежнему спокойно.', - obj = { - [1] = phr('Получил, гад?', - 'В ответ я слышу едва различимый стон.', - [[pon(1); back();]]), - [2] = phr('Но зачем, зачем это все?', - 'Он поднял на меня свои глаза. -- Я просто делал свою работу...', - [[pon(3);poff(1);]]), - [3] = _phr('Что за ерунда?', - '-- А потом, потом стал не нужен... Ну что же -- подумал я... -- Мир заплатит за эту ошибку...',[[pon(4)]]), - [4] = _phr('Что ты несешь?', - '-- Я работал профессором... Но я был не нужен.. Я ... Я не мог это вынести...', - [[pon(5)]]), - [5] = _phr('Какой мерзавец...', - '-- Но я заставлю их... Заставлю... Я, я, я - я буду жить вечно... Сам... Один.', - [[pon(6)]]), - [6] = _phr('Мне кажется, что ты спятил...', - 'Его тело дергается в углу -- это озноб.', - [[pon(1); back()]]), - } -}; - -gudlg = dlg { - nam = 'человек с портрета', - pic = 'gfx/pman.png', - enter = function(s) - lifeoff('mycat'); - inv():del('shotgun'); - return [[Странно... Дверь не закрыта... Я осторожно открываю дверь и вхожу в комнату.^^Внезапно я обнаруживаю, что на меня смотрит дуло револьвера. -- Браво, браво, браво -- говорит мне человек в кресле, владелец револьвера. -- Я уже заждался. Тот самый лесник? Ну что же, подождем охрану. А пока -- брось ружье на пол. Мне ничего не остается, как сделать то, что он сказал.]]; - end, - dsc = [[Передо мной то самое лицо. Лицо с портретов, которыми увешаны почти все комнаты этого здания. Лицо спокойное, ничего не выражающее. Слабая улыбка на губах. Надо тянуть время... И я спрашиваю у него:]], - obj = { - [1] = phr('Может, поговорим?', - 'Гм... Ну о чем нам говорить? О чем мне говорить с лесником?', [[pon(2)]]), - [2] = _phr('Например, правда ли то, что многомировая интерпретация Эверетта верна?', - '-- Ха ха ха ха!!! -- невыразительно смеется человек с портрета -- Конечно, это фокус... Что бы заставить этих идиотов верить в собственное бессмертие... А может...',[[pon(3)]] ), - [3] = _phr('...То-есть никакого доказательства нет?', - 'Человек перестает смеяться -- ...А может -- это все-таки правда? -- загадочно произносит он -- Какой ответ истина? Как ТЫ думаешь?', [[pon(4)]]), - [4] = _phr('Я знаю, что это ложь!', - 'Знаешь ли? -- пустые глаза смотрят на меня -- Да или нет? - Вдруг паника оглушает меня.' - ,[[pon(5,9)]]), - [5] = _phr('Ложь!', - 'А что если? Представь, что если?... Ты же хакер да? Любишь продумывать все заранее...', -[[pon(6);poff(9)]]), - [6] = _phr('Нет! Это не может быть правдой! Если это правда -- рано или поздно мир будет обречен! Тогда...', - '-- Да, ты правильно понял... Тогда есть только ТЫ!!! Послушай себя -- кто дал тебе этот ответ? Не его ли ты жаждешь? Не его ли жаждет твое Я? -- Я проваливаюсь в его бездонный взгляд.', [[pon(7)]]), - [7] = _phr('Если... Если... То зачем?', - '-- Правильно... Правильно -- вкрадчиво говорит мне человек с портрета... Новая волна страха оглушает меня, я падаю на колени... Сердце бешено стучит и вылетает из груди...', - [[pon(8)]]), - [8] = _phr('Не могу... Нет...', - '-- И если все так, то тебе нечего бояться -- мурлычет он. -- Сердце бьется еще сильнее. И наконец, моя грудь взрывается, мягкий комочек шерсти отталкивается от нее лапами и летит в лицо человеку с портрета. Раздается выстрел, резкая боль в левом плече отрезвляет меня, я вскакиваю на ноги и бросаюсь вперед...',[[return goto('escape3')]]), - [9] = _phr('Допустим, это правда.', - '-- Так... Правильно... Думай, думай...Ты же хакер, да? -- шепчет человек с портрета.', - [[pon(6);poff(5)]]) - }, -}; - ---shkf = obj { --- nam = 'край шкафа', --- inv = 'Я держу в руках край шкафа.', ---}; - -shkaf = obj { - nam = 'шкаф', - inv = 'Я держу в руках край шкафа.', - dsc = function(s) - if s._fall then - return 'Дверь завалена {шкафом}.'; - end - return 'Один из книжных {шкафов} стоит возле двери.'; - end, - act = function(s) - if not escape3._guards or s._fall then - return 'Какая-то философия... И еще физика.'; - end - inv():add('shkaf'); - return 'Я крепко схватился за край шкафа.'; - end, -}; - -fromw5 = room { - nam = 'на подоконнике', - dsc = 'Я стою на подоконнике, ледяной ветер мешает дышать.', - pic = 'gfx/fromwin2.png', - enter = 'Ну что-же, надеюсь это в последний раз...', - act = function(s, w) - if w == 1 then - return goto('nwall'); - end - end, - obj = { - vobj(1, 'труба', 'Справа от себя я едва различаю водосточную {трубу}.'), - }, - way = { 'escape3' }, - exit = function(s, t) - if t == 'escape3' then - return 'Надо спешить!', false; - end - end -}; - -winr5 = obj { - nam = 'окно', - dsc = function(s) - if s._broken then - return 'Сквозь разбитое {окно} в комнату дышит зимний ветер.'; - else - return '{Окно} выходит на северную сторону.'; - end - end, - act = function(s, w) - if escape3._guards then - if not shkaf._fall then - return 'Некогда любоваться видами... Надо задержать охранников.'; - end - if not have('mycat') then - return 'Без Барсика? Лучше погибнуть вместе!'; - end --- if not have('revol') then --- return 'Лучше поднять с пола пистолет, на всякий случай.'; --- end - if s._broken then - ways():add('fromw5'); - return goto('fromw5'); - else - return 'Окно закрыто.'; - end - end - escape3._guards = true; - lifeon('escape3'); - return 'За окном полная темнота. Я смотрю в темноту, когда вдруг слышу за спиной приглушенный шум шагов... Звуки идут из зала, наверное охрана добралась сюда! Нужно действовать!'; - end, - used = function(s, w) - if escape3._guards and not shkaf._fall then - return 'Некогда... Скоро охрана ворвется сюда...'; - end - if w == 'shotgun' then - if not s._broken then - s._broken = true; - return 'Опять? Ну что же... Я размахиваюсь и разбиваю стекло прикладом. Осколки улетает в темноту.'; - end - return 'Это окно уже разбито.'; - end - end, -}; - -revol = obj { - nam = 'револьвер', - dsc = 'На полу валяется {револьвер}.', - inv = 'Шесть зарядов.', - tak = 'Я поднимаю с пола револьвер.', -}; - -escape3 = room { - nam = 'в комнате', - pic = 'gfx/manroom.png', - enter = function(s, f) - if f == 'gudlg' then - inv():del('mycat'); - hall5.way:add('escape3'); - return 'Я слышу звук падающего пистолета... Потом я бью в чье-то лицо изо-всех сил. Снова и снова. Барсик носится вокруг и жалобно мяукает. Через несколько секунд я встаю с пола.'; - end - end, - act = function(s, w) - if w == 1 then - return goto('gudlg2'); - end - if w == 2 then - return 'Абстракционисты не в моем вкусе.'; - end - if w == 3 then - local st = ''; - if shkaf._fall then - st = ' Завалена шкафом.'; - end - return 'Дверь ведущая в зал.'..st; - end - end, - used = function(s, w, ww) - if w == 1 and ww == 'shotgun' or ww == 'revol' then - return 'Да -- это зло. Но я не могу стрелять в беспомощного человека.'; - end - if w == 3 and ww == 'shkaf' then - shkaf._fall = true; - inv():del('shkaf'); - return 'Я толкаю шкаф и он падает, заграждая собой дверь.'; - end - end, - dsc = [[Я нахожусь в небольшой, но уютной комнате. Посреди стоит стол. Рядом опрокинуто кресло. Из небольшой люстры равномерно льется свет. Два небольших книжных шкафа стоят у стен.]], - obj = { - vobj(1, 'человек', 'На полу, прислонившись к столу, сидит {человек} с портретов. Струйка крови стекает с его губ -- он стонет.'), - vobj(2, 'картины', 'По стенам развешаны {картины}.'), - vobj(3, 'дверь', 'За моей спиной {дверь}.'), - 'revol', - 'shkaf', - 'shotgun', - 'mycat', - 'winr5', - }, - life = function(s) - if rnd(3) == 1 then - return 'Я слышу выстрелы... Пули прошивают дверь... Надо что-то делать...'; - end - end, - exit = function(s,t) - if t == 'hall5' then - if shkaf._fall then - return 'Проход завален шкафом.', false; - end - if s._guards then - return 'Меня там подстрелят...', false; - end - s._guards = true; - lifeon('escape3'); - return 'Я собираюсь выйти в зал, когда вдруг на другом конце открывается дверь и в зал вбегают охранники. Я быстро захлопываю дверь.',false; - end - lifeoff('escape3'); - end, - way = { - 'hall5' - }, -}; - -nwall = room { - nam = 'северная сторона', - dsc = 'Я нахожусь у северной стены здания института.', - pic = 'gfx/nside.png', - way = {'eside2','wside' }, - act = function(s, w) - if w == 1 then - return 'Да -- водосточная труба... Довольно крепкая. Но вряд ли я смогу взобраться по ней наверх.'; - end - end, - enter = function(s, f) - if f == 'fromw5' then - return 'Превозмогая боль в левом плече я прыгаю с подоконника на трубу... Мое сердце бешено стучит в груди, пока мы падаем с Барсиком в зимнюю темноту. Но вот, в следующее мгновение я уже соскальзываю, обдирая кожу с ладоней, по водосточной трубе...'; - end - end, - obj = { vobj(1, 'труба', 'Водосточная {труба} проходит по восточному углу здания.')}, - exit = function(s, t) - if t == 'wside' then - if not s._guards then - s._guards = true; - return 'Я высовываюсь из-за угла и вижу, как толпа охранников приближается ко мне из КПП. -- Вон он -- слышу я крик... Треск выстрелов отгоняет меня обратно.', false; - end - return 'Там меня ждут...', false; - end - end -}; - -eside2 = room { - nam = 'сзади института', - pic = 'gfx/esidee.png', - dsc = [[ Я нахожусь у задней стены здания института. Здесь проходят рельсы.]], - act = function(s,w) - if w == 1 then - return 'Пулеметы направлены на внешнюю - южную сторону периметра, надо держаться от них подальше.'; - end - if w == 2 then - return 'Гм... Похоже это тот самый поезд... Разгрузка еще не началась, но ворота уже открыты.'; - end - if w == 3 then - return 'Четыре вагона. Тип тепловоза - ЧМЭ3. Поезд полностью помещается на территории института.'; - end - end, - obj = { - vobj(1,'пулеметные вышки', 'Въезд поезда охраняется пулеметными {вышками}..'), - vobj(3,'поезд', 'Перед институтом стоит темная громада {поезда}.'), - vobj(2,'ворота', 'Большие железные {ворота} в стене института открыты -- я вижу свет, который льется из дверного проема.'), - }, - exit = function(s, t) - if t == 'sside' then - return 'На южной стороне меня смущают пулеметы. Лучше не рисковать.', false - end - if t == 'nwall' and nwall._guards then - return 'Назад пути нет...', false; - end - end, - way = {'nwall','train','sside'}, -}; -function checkloc() - if p1._off or p2._off then -- battary or switch off off - p3._off = true; - p4._off = true; - p5._off = true; --- p51._off = true; --- p6._off = true; - end - if p3._off or p4._off then --- p7._off = true; --- p71._off = true; - end - if p5._off then - p7._off = true; - end - if p51._off then - p71._off = true; - end - if p6._off then --- p7._off = true; --- p71._off = true; - end - if p7._off then --- p71._off = true; - end -end -p1 = obj { - _off = false, - nam = 'разъединитель', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return '{Разъеденитель} батареи ВБ: '..st; - end, - act = function(s) - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю...'; - end -}; - -p2 = obj { - _off = true; - nam = 'ключ', - dsc = function(s) - local st = 'повернут вниз.'; - if s._off then - st = 'повернут вверх.'; - end - return '{Ключ} кнопочных выключателей: '..st; - end, - act = function(s) - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Я поворачиваю ключ.'; - end -}; -p3 = obj { - _off = true, - nam = 'электроманометр', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return '{Электроманометр}: '..st; - end, - act = function(s) - if p1._off or p2._off then - return 'Странно... Не получается.' - end - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю...' - end -}; -p4 = obj { - _off = false, - nam = 'электротермометр', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return '{Электротермометр}: '..st; - end, - act = function(s) - if p1._off or p2._off then - return 'Странно... Не получается.' - end - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю...' - end -}; -p5 = obj { - _off = true, - nam = 'насос 2-й секции', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return 'Топливный {насос} 2-й секции: '..st; - end, - act = function(s) - if p1._off or p2._off then - return 'Странно... Не получается.' - end - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю...' - end -}; - -p6 = obj { - _off = true, - nam = 'управление', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return '{Управление}: '..st; - end, - act = function(s) - if p1._off or p2._off then - return 'Странно... Не получается.' - end - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю...' - end -}; - -p7 = obj { - _off = true, - nam = 'пуск дизеля 2-й секции', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return '{Пуск} дизеля 2-й секции: '..st; - end, - act = function(s) - if p3._off or p4._off or p5._off or p6._off then - return 'Странно... Не получается.' - end - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю...' - end -}; - -p51 = obj { - _off = true, - nam = 'насос 1-й секции', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return 'Топливный {насос} 1-й секции: '..st; - end, - act = function(s) - if p1._off or p2._off then - return 'Странно... Не получается.' - end - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю.'; - end -}; - -p71 = obj { - _off = true, - nam = 'пуск дизеля 1-й секции', - dsc = function(s) - local st = 'включено.'; - if s._off then - st = 'выключено.'; - end - return '{Пуск} дизеля 1-й секции: '..st; - end, - act = function(s) - if p3._off or p4._off or p5._off or p6._off or p7._off then - return 'Странно... Не получается.' - end - if s._off then - s._off = false; - else - s._off = true; - end - checkloc(); - return 'Переключаю...'; - end -}; - -p8 = obj { - _num = 1, - nam = 'реверсор', - dsc = function(s) - local st; - if s._num == 1 then - st = 'нейтрально.'; - elseif s._num == 2 then - st = 'назад.'; - elseif s._num == 3 then - st = 'вперед.'; - end - return 'Рукоятка {реверсора}: '..st; - end, - act = function(s) - s._num = s._num + 1; - if s._num == 4 then - s._num = 1; - end - return 'Переключаю...'; - end -}; - -p9 = obj { - _num = 1, - nam = 'контроллер', - dsc = function(s) - local st; - if s._num == 1 then - st = '0.'; - elseif s._num == 2 then - st = '1.'; - elseif s._num == 3 then - st = '2.'; - end - return 'Рукоятка {контроллера}: '..st; - end, - act = function(s) - s._num = s._num + 1; - if s._num == 4 then - s._num = 1; - end - if s._num == 1 then - return 'Переключаю.'; - end - if not p71._off and not p7._off then - if p8._num == 2 then - s._num = 1; - return 'Локомотив вздрагивает и начинает ехать назад. Я перевожу контроллер на 0.'; - elseif p8._num == 3 then - lifeoff('mycat'); - set_music('mus/liberty.s3m'); - return goto('theend'); - end - end - s._num = 1; - return 'Ничего не происходит... Я перевожу контроллер в положение 0.'; - end -}; - -train = room { - nam = function(s) - if here() == train then - return 'в локомотиве'; - end - return 'к поезду'; - end, - pic = 'gfx/cab.png', - dsc = 'Итак, я в локомотиве. Толстая сталь надежно укрывает меня от пуль. Кабина машиниста оказалась пуста. Я вижу перед собой множество приборов.', - act = function(s, w) - if w == 2 then - if p1._off or p2._off then - return 'Я нажал кнопку гудка, но ничего не услышал.'; - end - return 'Раздается унылый звук сигнала. -- Я машинист!'; - end - if w == 1 then - return 'Только бы успеть завести эту штуку... И никакие ворота меня не остановят.'; - end - end, - life = function(s) - local st = ''; - if not p7._off or not p71._off then - st = 'Я чувствую как дрожит локомотив. Работает дизель. '; - end - if rnd(10) < 5 then - st = st..'В кабине раздаются звуки ударов пуль о металл.'; - end - return st; - end, - exit = function(s,t) - if t == 'eside2' then - return 'Нет... Лучше остаться здесь, мы будем сопротивляться до последнего.', false; - end - lifeoff('train'); - end, - enter = function(s, f) - if f == 'eside2' and not guards1._broken then - return cat('Пригнувшись, я бегу к поезду.^^', goto('vorota')), false; - end - lifeon('train'); - set_music('mus/hispeed.s3m'); - return 'Пригнувшись, я бегу к поезду... Пробегая мимо вагонов я успеваю заметить знаки <<осторожно -- радиация!!>>. Еще немного и я добираюсь до локомотива. Сзади я слышу звуки выстрелов. Впереди охрана разворачивает пулеметы. Я открываю тяжелую дверь и вот я -- внутри.' - end, - obj = { - 'p2', 'p1', 'p4', 'p3', 'p71','p51', 'p7', 'p5', 'p9', 'p8', 'p6', - vobj(2, 'гудок', '{Гудок}.'); - vobj(1, 'окно', 'В {окнах} я вижу закрытые ворота.'), - }, - way = { 'eside2' }, -}; - -guards1 = obj { - nam = 'охрана', - dsc = function(s, w) - if s._broken then - return '{Охранники} за турникетами завалены обломками люстры.'; - end - if s._shoot then - return 'Я вижу {охранников}, которые укрываются от моего огня за турникетами.'; - end - return 'Я вижу {охранников} с автоматами, которые пробираются ко мне через зал первого этажа.'; - end, - act = function(s, w) - if s._broken then - return 'Похоже, они в замешательстве...'; - end - if s._shoot then - return 'Вот негодяи!'; - end - return 'Удивительно, что я еще жив...'; - end, - used = function(s, w) - if w == 'shotgun' or w == 'revol' then - if s._shoot then - return 'Бесполезно, охранники защищены металлом турникетов.'; - end - s._shoot = true; - return 'Я высовываюсь из-за стены и стреляю несколько раз наугад.'; - end - end, -}; - -lustra1 = obj { - nam = 'люстры', - dsc = function(s, w) - if s._broken then - return 'На потолке висит одна {люстра}.'; - end - return 'Две ослепительные {люстры} свисают с потолка.'; - end, - act = function(s, w) - if guards1._shoot then - return 'Одна из люстр находится прямо над турникетами.'; - end - return 'Не могу на них наглядеться... Наверное, это хрусталь?'; - end, - used = function(s, w) - if w == 'revol' then - return 'Вряд ли этот пистолет принесет сильный ущерб люстрам.'; - end - if w == 'shotgun' then - shotgun._unloaded = true; - s._broken = true; - guards1._broken = true; - lifeoff('vorota'); - drop('shotgun'); - return 'Я высовываюсь из-за стены и разряжаю помповое ружье. Сильный грохот и звуки щелкающего затвора оглушают меня. Я вижу как одна из люстр, сопровождаемая криками охранников, медленно оторвавшись летит вниз. Я выбрасываю бесполезное ружье на пол.'; - end - end, - -}; - -vorota = room { - nam = 'у ворот', - pic = 'gfx/shooting.png', - enter = function(s, f) - if f == 'eside2' and not guards1._broken then - lifeon('vorota'); - return 'Поравнявшись с открытыми воротами я слышу треск выстрелов и прижимаюсь к стене.'; - end - end, - life = function(s) - if rnd(6) < 4 then - return 'Раздается треск выстрелов. Я вжимаюсь в стену.'; - end - end, - act = function(s, w) - if w == 1 then - return 'Те самые турникеты, через которые я попал внутрь. Теперь я нахожусь с другой стороны.'; - end - end, - dsc = 'Я нахожусь у открытых ворот. Ворота ведут на первый этаж института.', - obj = { - vobj(1, 'турникеты', 'Я вижу ряд {турникетов}.'), - 'lustra1', - 'guards1', - }, - exit = function(s, t) - if not guards1._broken and t == 'train' then - return 'Я бросаюсь вперед, но автоматные очереди заставляют меня вернуться.', false; - end - end, - way = { 'train', 'eside2' }, -}; - -theend = room { - nam = 'эпилог', - pic = 'gfx/chme3.png', - dsc = [[Я передвинул ручку контроллера в самое переднее положение и локомотив, -вздрогнув, двинулся вперед. Я услышал крики, и пулеметные очереди с новой силой застучали -по стенкам кабины... Но локомотив набирал ход, и скоро послышался сильный лязг -- это ворота, -не выдержав натиска 1350 лошадиных сил, вылетели из своих петель и протащились несколько -десятков метров вдоль путей...^^ - -Барсик высунул морду из-за пазухи и осмотрелся вокруг. Я привычно погладил его за ушами. -Когда лязг раздавленных ворот и стук пуль утихли, я выглянул из окна и последний раз посмотрел в сторону института. Он полыхал словно факел -- пожар уже захватил весь пятый этаж. -Я посмотрел на небо и теперь, уже в полной темноте, смог разглядеть россыпи звезд. ^^ - -Совсем скоро поле уступило место тайге, и привычные очертания сосен и елей замелькали под -ровный стук колес. Рана в плече ныла, и я почувствовал сильную усталость... Присев на пол -и прислонившись к холодному железу кабины, я слушал гудение локомотива и гладил Барсика за -ушами...^^ - -Барсик посмотрел на меня своими умными глазами и вопросительно замурлыкал -- Домой, -ответил я ему -- Мы едем домой...^^ -КОНЕЦ^^ - - ---^^ - -История и движок: ^ -Косых Петр a.k.a. gl00my // 2009^^ - -Графика: ^ -Косых Петр, несколько фотографий из открытых источников.^^ - -Музыка: ^ -One fine day // Elwood^ -Revelation // necros^ -New beginning // Purple Motion^ -Ice frontier // Skaven^ -Planete football // Frank Amoros^ -Underwater world II // Slightly Magic^ -Hybrid song // Quazar^ -Hispeed - track whatever // Purple Motion^ -Liberty // Zapper^^ - -Тестеры:^ -Каличев Сергей a.k.a. Pkun^ -Подобаев Владимир a.k.a. zloyvov^^ - - -Если вам понравилась игра, самое лучшее, что вы можете сделать, это написать свою историю на движке instead. :)^^ - -Благодарности:^ -Всем тем, кто не мешал. :)^^ -]], -}; - diff --git a/games/cat/gfx/bholes.png b/games/cat/gfx/bholes.png deleted file mode 100644 index e60787c..0000000 Binary files a/games/cat/gfx/bholes.png and /dev/null differ diff --git a/games/cat/gfx/cab.png b/games/cat/gfx/cab.png deleted file mode 100644 index 229c8ce..0000000 Binary files a/games/cat/gfx/cab.png and /dev/null differ diff --git a/games/cat/gfx/chme3.png b/games/cat/gfx/chme3.png deleted file mode 100644 index e5af8a6..0000000 Binary files a/games/cat/gfx/chme3.png and /dev/null differ diff --git a/games/cat/gfx/cor3.png b/games/cat/gfx/cor3.png deleted file mode 100644 index 569ac56..0000000 Binary files a/games/cat/gfx/cor3.png and /dev/null differ diff --git a/games/cat/gfx/cor4.png b/games/cat/gfx/cor4.png deleted file mode 100644 index a19df96..0000000 Binary files a/games/cat/gfx/cor4.png and /dev/null differ diff --git a/games/cat/gfx/deepforest.png b/games/cat/gfx/deepforest.png deleted file mode 100644 index ccd18a3..0000000 Binary files a/games/cat/gfx/deepforest.png and /dev/null differ diff --git a/games/cat/gfx/entrance.png b/games/cat/gfx/entrance.png deleted file mode 100644 index d823259..0000000 Binary files a/games/cat/gfx/entrance.png and /dev/null differ diff --git a/games/cat/gfx/eside.png b/games/cat/gfx/eside.png deleted file mode 100644 index c322b88..0000000 Binary files a/games/cat/gfx/eside.png and /dev/null differ diff --git a/games/cat/gfx/esidee.png b/games/cat/gfx/esidee.png deleted file mode 100644 index 8cdb12c..0000000 Binary files a/games/cat/gfx/esidee.png and /dev/null differ diff --git a/games/cat/gfx/floor2.png b/games/cat/gfx/floor2.png deleted file mode 100644 index 6deb460..0000000 Binary files a/games/cat/gfx/floor2.png and /dev/null differ diff --git a/games/cat/gfx/floor3.png b/games/cat/gfx/floor3.png deleted file mode 100644 index 37fd4b1..0000000 Binary files a/games/cat/gfx/floor3.png and /dev/null differ diff --git a/games/cat/gfx/floor4.png b/games/cat/gfx/floor4.png deleted file mode 100644 index 84a0ad1..0000000 Binary files a/games/cat/gfx/floor4.png and /dev/null differ diff --git a/games/cat/gfx/floor5.png b/games/cat/gfx/floor5.png deleted file mode 100644 index 8863b1f..0000000 Binary files a/games/cat/gfx/floor5.png and /dev/null differ diff --git a/games/cat/gfx/floor5e.png b/games/cat/gfx/floor5e.png deleted file mode 100644 index b7c8dc0..0000000 Binary files a/games/cat/gfx/floor5e.png and /dev/null differ diff --git a/games/cat/gfx/forest.png b/games/cat/gfx/forest.png deleted file mode 100644 index b1b0678..0000000 Binary files a/games/cat/gfx/forest.png and /dev/null differ diff --git a/games/cat/gfx/fromwin1.png b/games/cat/gfx/fromwin1.png deleted file mode 100644 index 43239a3..0000000 Binary files a/games/cat/gfx/fromwin1.png and /dev/null differ diff --git a/games/cat/gfx/fromwin2.png b/games/cat/gfx/fromwin2.png deleted file mode 100644 index dfb53c1..0000000 Binary files a/games/cat/gfx/fromwin2.png and /dev/null differ diff --git a/games/cat/gfx/guard.png b/games/cat/gfx/guard.png deleted file mode 100644 index ab43dd9..0000000 Binary files a/games/cat/gfx/guard.png and /dev/null differ diff --git a/games/cat/gfx/guard4.png b/games/cat/gfx/guard4.png deleted file mode 100644 index 47f719e..0000000 Binary files a/games/cat/gfx/guard4.png and /dev/null differ diff --git a/games/cat/gfx/guard42.png b/games/cat/gfx/guard42.png deleted file mode 100644 index aef7016..0000000 Binary files a/games/cat/gfx/guard42.png and /dev/null differ diff --git a/games/cat/gfx/guy.png b/games/cat/gfx/guy.png deleted file mode 100644 index 289c90a..0000000 Binary files a/games/cat/gfx/guy.png and /dev/null differ diff --git a/games/cat/gfx/hall1.png b/games/cat/gfx/hall1.png deleted file mode 100644 index bb0eac3..0000000 Binary files a/games/cat/gfx/hall1.png and /dev/null differ diff --git a/games/cat/gfx/hall2.png b/games/cat/gfx/hall2.png deleted file mode 100644 index 5db01db..0000000 Binary files a/games/cat/gfx/hall2.png and /dev/null differ diff --git a/games/cat/gfx/hall5.png b/games/cat/gfx/hall5.png deleted file mode 100644 index fdbf143..0000000 Binary files a/games/cat/gfx/hall5.png and /dev/null differ diff --git a/games/cat/gfx/handhoh.png b/games/cat/gfx/handhoh.png deleted file mode 100644 index 7d1908a..0000000 Binary files a/games/cat/gfx/handhoh.png and /dev/null differ diff --git a/games/cat/gfx/house-empty.png b/games/cat/gfx/house-empty.png deleted file mode 100644 index 2f63655..0000000 Binary files a/games/cat/gfx/house-empty.png and /dev/null differ diff --git a/games/cat/gfx/house.png b/games/cat/gfx/house.png deleted file mode 100644 index f4ff443..0000000 Binary files a/games/cat/gfx/house.png and /dev/null differ diff --git a/games/cat/gfx/ilya.png b/games/cat/gfx/ilya.png deleted file mode 100644 index ba2a523..0000000 Binary files a/games/cat/gfx/ilya.png and /dev/null differ diff --git a/games/cat/gfx/incar.png b/games/cat/gfx/incar.png deleted file mode 100644 index 9725bdd..0000000 Binary files a/games/cat/gfx/incar.png and /dev/null differ diff --git a/games/cat/gfx/inshop.png b/games/cat/gfx/inshop.png deleted file mode 100644 index 00f0249..0000000 Binary files a/games/cat/gfx/inshop.png and /dev/null differ diff --git a/games/cat/gfx/inst.png b/games/cat/gfx/inst.png deleted file mode 100644 index 7c9330b..0000000 Binary files a/games/cat/gfx/inst.png and /dev/null differ diff --git a/games/cat/gfx/instback.png b/games/cat/gfx/instback.png deleted file mode 100644 index 2a5dd80..0000000 Binary files a/games/cat/gfx/instback.png and /dev/null differ diff --git a/games/cat/gfx/kitchen.png b/games/cat/gfx/kitchen.png deleted file mode 100644 index e352e0e..0000000 Binary files a/games/cat/gfx/kitchen.png and /dev/null differ diff --git a/games/cat/gfx/kitchencor.png b/games/cat/gfx/kitchencor.png deleted file mode 100644 index 00e288a..0000000 Binary files a/games/cat/gfx/kitchencor.png and /dev/null differ diff --git a/games/cat/gfx/kpp.png b/games/cat/gfx/kpp.png deleted file mode 100644 index 3675983..0000000 Binary files a/games/cat/gfx/kpp.png and /dev/null differ diff --git a/games/cat/gfx/krysha.png b/games/cat/gfx/krysha.png deleted file mode 100644 index 6ef7e80..0000000 Binary files a/games/cat/gfx/krysha.png and /dev/null differ diff --git a/games/cat/gfx/ladder.png b/games/cat/gfx/ladder.png deleted file mode 100644 index 9d95f47..0000000 Binary files a/games/cat/gfx/ladder.png and /dev/null differ diff --git a/games/cat/gfx/lection.png b/games/cat/gfx/lection.png deleted file mode 100644 index 6b2b142..0000000 Binary files a/games/cat/gfx/lection.png and /dev/null differ diff --git a/games/cat/gfx/lection2.png b/games/cat/gfx/lection2.png deleted file mode 100644 index aa462fa..0000000 Binary files a/games/cat/gfx/lection2.png and /dev/null differ diff --git a/games/cat/gfx/lift.png b/games/cat/gfx/lift.png deleted file mode 100644 index 381717b..0000000 Binary files a/games/cat/gfx/lift.png and /dev/null differ diff --git a/games/cat/gfx/manroom.png b/games/cat/gfx/manroom.png deleted file mode 100644 index 61b4b7c..0000000 Binary files a/games/cat/gfx/manroom.png and /dev/null differ diff --git a/games/cat/gfx/me.png b/games/cat/gfx/me.png deleted file mode 100644 index ee49220..0000000 Binary files a/games/cat/gfx/me.png and /dev/null differ diff --git a/games/cat/gfx/meandgun.png b/games/cat/gfx/meandgun.png deleted file mode 100644 index 64d454c..0000000 Binary files a/games/cat/gfx/meandgun.png and /dev/null differ diff --git a/games/cat/gfx/nside.png b/games/cat/gfx/nside.png deleted file mode 100644 index 5030741..0000000 Binary files a/games/cat/gfx/nside.png and /dev/null differ diff --git a/games/cat/gfx/onwall.png b/games/cat/gfx/onwall.png deleted file mode 100644 index 028ac34..0000000 Binary files a/games/cat/gfx/onwall.png and /dev/null differ diff --git a/games/cat/gfx/pman.png b/games/cat/gfx/pman.png deleted file mode 100644 index 640c44d..0000000 Binary files a/games/cat/gfx/pman.png and /dev/null differ diff --git a/games/cat/gfx/pmanb.png b/games/cat/gfx/pmanb.png deleted file mode 100644 index f8fad7f..0000000 Binary files a/games/cat/gfx/pmanb.png and /dev/null differ diff --git a/games/cat/gfx/podnos.png b/games/cat/gfx/podnos.png deleted file mode 100644 index 70808de..0000000 Binary files a/games/cat/gfx/podnos.png and /dev/null differ diff --git a/games/cat/gfx/povar.png b/games/cat/gfx/povar.png deleted file mode 100644 index 6897b7b..0000000 Binary files a/games/cat/gfx/povar.png and /dev/null differ diff --git a/games/cat/gfx/prof2.png b/games/cat/gfx/prof2.png deleted file mode 100644 index afbfa30..0000000 Binary files a/games/cat/gfx/prof2.png and /dev/null differ diff --git a/games/cat/gfx/room4.png b/games/cat/gfx/room4.png deleted file mode 100644 index a2d73d8..0000000 Binary files a/games/cat/gfx/room4.png and /dev/null differ diff --git a/games/cat/gfx/servers.png b/games/cat/gfx/servers.png deleted file mode 100644 index 21eb055..0000000 Binary files a/games/cat/gfx/servers.png and /dev/null differ diff --git a/games/cat/gfx/shooting.png b/games/cat/gfx/shooting.png deleted file mode 100644 index c0ca5cb..0000000 Binary files a/games/cat/gfx/shooting.png and /dev/null differ diff --git a/games/cat/gfx/shop.png b/games/cat/gfx/shop.png deleted file mode 100644 index 5c715dd..0000000 Binary files a/games/cat/gfx/shop.png and /dev/null differ diff --git a/games/cat/gfx/shopbuy.png b/games/cat/gfx/shopbuy.png deleted file mode 100644 index d0637b6..0000000 Binary files a/games/cat/gfx/shopbuy.png and /dev/null differ diff --git a/games/cat/gfx/shopman.png b/games/cat/gfx/shopman.png deleted file mode 100644 index d9bbc9d..0000000 Binary files a/games/cat/gfx/shopman.png and /dev/null differ diff --git a/games/cat/gfx/sside.png b/games/cat/gfx/sside.png deleted file mode 100644 index 72f3b4b..0000000 Binary files a/games/cat/gfx/sside.png and /dev/null differ diff --git a/games/cat/gfx/sto.png b/games/cat/gfx/sto.png deleted file mode 100644 index 48587e0..0000000 Binary files a/games/cat/gfx/sto.png and /dev/null differ diff --git a/games/cat/gfx/sto2.png b/games/cat/gfx/sto2.png deleted file mode 100644 index 02cf407..0000000 Binary files a/games/cat/gfx/sto2.png and /dev/null differ diff --git a/games/cat/gfx/sto3.png b/games/cat/gfx/sto3.png deleted file mode 100644 index b7532da..0000000 Binary files a/games/cat/gfx/sto3.png and /dev/null differ diff --git a/games/cat/gfx/thecat.png b/games/cat/gfx/thecat.png deleted file mode 100644 index 6a39ae6..0000000 Binary files a/games/cat/gfx/thecat.png and /dev/null differ diff --git a/games/cat/gfx/toil3.png b/games/cat/gfx/toil3.png deleted file mode 100644 index df9a80a..0000000 Binary files a/games/cat/gfx/toil3.png and /dev/null differ diff --git a/games/cat/gfx/toil4.png b/games/cat/gfx/toil4.png deleted file mode 100644 index 8238781..0000000 Binary files a/games/cat/gfx/toil4.png and /dev/null differ diff --git a/games/cat/gfx/wside.png b/games/cat/gfx/wside.png deleted file mode 100644 index 43337b0..0000000 Binary files a/games/cat/gfx/wside.png and /dev/null differ diff --git a/games/cat/main.lua b/games/cat/main.lua deleted file mode 100644 index 9c07b63..0000000 --- a/games/cat/main.lua +++ /dev/null @@ -1,50 +0,0 @@ --- $Name:Возвращение квантового кота$ -game.codepage="UTF-8"; -game.act = 'Не получается.'; -game.inv = 'Гм.. Странная штука..'; -game.use = 'Не сработает...'; -game.dsc = [[Команды:^ - look(или просто ввод), act <на что> (или просто на что), use <что> [на что], go <куда>,^ - back, inv, way, obj, quit, save , load . Работает автодополнение по табуляции.^^ -Олег Г., Владимир П., Илья.Р., и другие в фантастической и драматической text-adventure Петра К.^^ -ВОЗВРАЩЕНИЕ КВАНТОВОГО КОТА^^ -В прошлом хакер. Он ушел жить в лес. Но он вернулся. Вернулся чтобы забрать своего кота.^^ -- Я ПРОСТО ПРИШЕЛ ЗАБРАТЬ СВОЕГО КОТА... ^^]]; -me().nam = 'Олег'; -main = room { - nam = 'ВОЗВРАЩЕНИЕ КВАНТОВОГО КОТА', - pic = 'gfx/thecat.png', - dsc = [[ -За окном моей хижины снова белеет снег, а в камине также как и тогда потрескивают дрова... Третья зима. -Прошло уже две зимы, но те события, о которых я хочу рассказать, встают перед моими глазами так, -словно это было вчера...^^ - -Я работал лесником уже больше десяти лет. Больше десяти лет я жил в своей хижине, окруженной лесом, собирая -капканы браконьеров и выезжая раз в одну или две недели в близлежащий поселок... После воскресной -службы в местной церкви я заходил в магазинчик и покупал необходимые мне вещи: патроны к дробовику, -крупу, хлеб, лекарства...^^ - -Когда-то я был неплохим компьютерным специалистом... Впрочем, это уже не важно... Десять лет я не видел экрана -монитора, и не жалею об этом.^^ - -Теперь я понимаю, что корни того, что тогда произошло лежат давно -- во второй половине 30-х... Хотя лучше -начать все по-порядку...^^ - -В тот холодный февральский день я как всегда собрался ехать в поселок...]], -obj = { vobj(1,'Дальше','{Дальше}.') }, -act = function() - return goto('home'); -end, -exit = function() - set_music("mus/ofd.xm"); -end, -}; -set_music("mus/new.s3m"); -dofile("ep1.lua"); -dofile("ep2.lua"); -dofile("ep3.lua"); - ---me().where = 'eside'; ---inv():add('mywear'); ---inv():add('gun'); ---inv():add('trap'); diff --git a/games/cat/mus/foot.mod b/games/cat/mus/foot.mod deleted file mode 100644 index 2ded75e..0000000 Binary files a/games/cat/mus/foot.mod and /dev/null differ diff --git a/games/cat/mus/hispeed.s3m b/games/cat/mus/hispeed.s3m deleted file mode 100644 index 98f8fea..0000000 Binary files a/games/cat/mus/hispeed.s3m and /dev/null differ diff --git a/games/cat/mus/hybrid.xm b/games/cat/mus/hybrid.xm deleted file mode 100644 index 2f8d2eb..0000000 Binary files a/games/cat/mus/hybrid.xm and /dev/null differ diff --git a/games/cat/mus/ice.s3m b/games/cat/mus/ice.s3m deleted file mode 100644 index d7ac6ef..0000000 Binary files a/games/cat/mus/ice.s3m and /dev/null differ diff --git a/games/cat/mus/liberty.s3m b/games/cat/mus/liberty.s3m deleted file mode 100644 index a36f05c..0000000 Binary files a/games/cat/mus/liberty.s3m and /dev/null differ diff --git a/games/cat/mus/new.s3m b/games/cat/mus/new.s3m deleted file mode 100644 index e39b131..0000000 Binary files a/games/cat/mus/new.s3m and /dev/null differ diff --git a/games/cat/mus/ofd.xm b/games/cat/mus/ofd.xm deleted file mode 100644 index 7d0a831..0000000 Binary files a/games/cat/mus/ofd.xm and /dev/null differ diff --git a/games/cat/mus/revel.s3m b/games/cat/mus/revel.s3m deleted file mode 100644 index ca166bd..0000000 Binary files a/games/cat/mus/revel.s3m and /dev/null differ diff --git a/games/cat/mus/under.s3m b/games/cat/mus/under.s3m deleted file mode 100644 index 8b34df0..0000000 Binary files a/games/cat/mus/under.s3m and /dev/null differ diff --git a/setup.iss b/setup.iss index cd5fbd7..4d8411d 100644 --- a/setup.iss +++ b/setup.iss @@ -15,11 +15,9 @@ Name: ru; MessagesFile: compiler:Languages\Russian.isl [Files] Source: sdl-instead.exe; DestDir: {app} Source: Microsoft.VC80.CRT\*; DestDir: {app}\Microsoft.VC80.CRT -Source: games\cat\*; DestDir: {app}\games\cat -Source: games\cat\gfx\*; DestDir: {app}\games\cat\gfx -Source: games\cat\mus\*; DestDir: {app}\games\cat\mus Source: games\tutorial2\*; DestDir: {app}\games\tutorial2 Source: games\tutorial2-en\*; DestDir: {app}\games\tutorial2-en +Source: games\tutorial2-es\*; DestDir: {app}\games\tutorial2-es Source: icon\*; DestDir: {app}\icon Source: doc\*; DestDir: {app}\doc Source: stead\*; DestDir: {app}\stead