cat_zh/ep1-zh.lua

912 lines
27 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

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 = '照片里是我和我的 Barsik。',
};
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 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 == '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 w == 'mycat' or w == 'shopman' or w == 'guy' then
return '我不想这样……', false;
end
end
};
fireplace = obj {
nam = '壁炉',
dsc = '墙边有一个{壁炉},火焰不均匀地映照着小屋。',
act = '我喜欢在壁炉旁度过漫长的冬夜。',
};
mycat = obj {
nam = 'Barsik',
_lflast = 0,
lf = {
[1] = 'Barsik 在我怀里动来动去。',
[2] = 'Barsik 从我怀里探出头。',
[3] = 'Barsik 在我怀里打呼噜。',
[4] = 'Barsik 在我怀里发抖。.',
[5] = '我感受到 Barsik 在我怀里的温暖。',
[6] = 'Barsik 从我怀里探出头来,四处张望。',
},
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] = '我的猫{Barsik}正舒适地蜷缩成一团睡在壁炉边。',
[2] = '{Barsik}机敏地扫视着小屋周围。',
[3] = '{Barsik}就坐在我旁边的座位上。',
[4] = '{Barsik}正在垃圾桶旁研究着什么……',
[5] = '{Barsik}在我脚边蹭来蹭去。',
},
inv = 'Barsik在我的怀里……可怜的小猫咪……我会救你的还有整个世界',
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 '我把{Barsik}放进了我的怀里。';
end
return '我挠了挠Barsik的耳后……';
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..'Barsik跳进车里。'
move('mycat','inmycar');
elseif not me()._know_where then
return '不……我必须先找到Barsik', false
end
if f == 'guarddlg' then
return ' 嗯……我得想个办法……';
end
return cat(s, ' 好,是时候出发了……');
end,
exit = function(s, t)
local s=''
if seen('mycat') then
s = 'Barsik第一个跳出车外。';
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] = '在小屋前停着我的老旧丰田{皮卡}。',
[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 walk('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,'window', '小屋只有一扇{窗户}。'),
'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 [[
当我离开小屋时Barsik突然醒了扑到我脚边。我抚摸着他的耳朵。“要跟我一起走吗
]]
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('对……那是我的Barsik快告诉我',
'……嗯……好像有个人把它带走了…… \n —— 我的背后传来一阵寒意……', '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 walk('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)
-- Note for translators:
-- this block picks the appropriate plural form
-- for “shells” for a given numeral. Since English has
-- only 1 form, I commented it out.
-- Uncomment and use form-number combinations
-- appropriate for your language
-- if here()._dshells > 4 then
return '我脚下有'..here()._dshells..'枚猎枪{弹壳}……';
-- else
-- return 'Under my feet there are '..here()._dshells..' empty shotgun {shells}...';
-- 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 = 'buy',
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 walk("shop2")'),
[3] = phr('拜拜……', '耶……祝你好运!', 'pon(3); return back();'),
[4] = _phr('刚才有一个人在这儿——他是谁?', '嗯?——弗拉基米尔的细眉毛微微扬起……','pon(5)'),
[5] = _phr('由于某些缘故,他带走了我的猫……也许以为它是流浪猫……那个穿灰色外套的男人是谁?',
[[
Actually, he's some boss... - Vladimir scratches his unshaved chin. — In that new institute, which has been built in our backwoods a year ago...
— Vladimir's pince-nez twitched as he spoke — he often comes to our shop,
doesn't like crowds — those physicists — you know... Odd bunch, — Vladimir shrugged...]],'pon(6)'),
[6] = _phr('Where is this institute located?',
'Kilometer marker 127... But well, you know — Vladimir lowered his voice — there are rumours about his institute...', 'me()._know_where = true; inmycar.way:add("inst");pon(7)'),
[7] = _phr('I\'m just going to get back my cat...', 'Take care... If I was in you shoes... — Vladimir shakes his head. — By the way, I think his name is Belin. I\'ve seen his credit card... Even though, as you know, I don\'t accept them — Vladimir moved his lips, his monocle stirred slyly'),
},
};
shopman = obj {
nam = 'salesman',
dsc = 'There\'s a {salesman} behind the counter. His wide face with stubble is complemented by a monocle.',
act = function()
return walk('shopdlg');
end
};
shop = room {
nam = 'shop',
pic = 'gfx/inshop.png',
enter = function(s, f)
if village.obj:look('truck') then
village.obj:del('truck');
village.obj:del('mycat');
return [[
When I entered the shop, I almost ran into an unpleasant man in a grey coat and broad-brimmed hat... He apologized in a sort of hissing voice and feighned raising his hat... White teeth flashed from under the brim... When I reached the counter, I heard the engine starting.]];
end
end,
act = function(s,w)
if w == 1 then
return 'There\'s only my car left in the parking lot.';
end
end,
dsc = [[
The store is somewhat unusual... Here you can find ironware, food, even ammunition... No wonder, since it's the only store in a 100 km area...]],
way = { 'village' },
obj = {'shopman',vobj(1, 'окно', 'Through the {window} the parking lot is visible.') },
exit = function(s, t)
if t ~= 'village' then
return;
end
if shopman._wantmoney then
return 'I was going to step outside, when I was stopped by Vlsdimir\'s quiet semicough... Of course, I forgot to pay...', false;
end
if not have('news') then
shop2.obj[4]:disable();
inv():add('news');
return 'I was going to leave, when Vladimir\'s voice stopped me. — Take the fresh newspaper — it\'s free for you. I walk back, take the paper and leave.';
end
end
};
carbox = obj {
_num = 0,
nam = function(s)
if s._num > 1 then
return 'boxes in the car';
else
return 'a box in the car';
end
end,
act = function(s)
if inv():srch('mybox') then
return 'I\'ve already got a box in my hands...';
end
s._num = s._num - 1;
if s._num == 0 then
mycar.obj:del('carbox');
end
take('mybox');
return 'I took a box from the car.';
end,
dsc = function(s)
if s._num == 0 then
return;
elseif s._num == 1 then
return 'There is one {box} in the cargo body of my car.';
-- Again not needed, since "boxes" stays the same for all numerals
-- elseif s._num < 5 then
-- return 'There are '..tostring(s._num)..' {boxes} in the cargo body of my car.';
else
return 'There are '..tostring(s._num)..' {boxes} in the cargo body of my car..';
end
end,
};
mybox = obj {
nam = 'a box',
inv = 'I am holding a wooden box... A soundly built thing! Might come in handy.',
use = function(s, o)
if o == 'boxes' then
inv():del('mybox');
return 'I put the box back...';
end
if o == 'mycar' then
inv():del('mybox');
mycar.obj:add('carbox');
carbox._num = carbox._num + 1;
return 'I put the box in the cargo body of my car...';
end
if o == 'ewall' or o == 'wboxes' then
if not cam._broken then
return 'The camera won\'t let me...';
end
if wboxes._num > 7 then
return "It's enough I think..."
end
inv():del('mybox');
ewall.obj:add('wboxes');
wboxes._num = wboxes._num + 1;
if wboxes._num > 1 then
return 'I put another box on top of the previous one...';
end
return 'I put the box next to the wall...';
end
end
};
boxes = obj {
nam = 'ящики',
desc = {
[1] = 'Near the parking lot there are many empty wooden {boxes} that once held tins.',
},
dsc = function(s)
local state = 1;
return s.desc[state];
end,
act = function(s, t)
if carbox._num >= 5 then
return 'Maybe I\'ve got enough boxes already?...';
end
if inv():srch('mybox') then
return 'I\'m holding one box already...';
end
take('mybox');
return 'I took a box.';
end,
};
village = room {
nam = 'parking lot in front of the store',
dsc = 'A familiar place in front of the store. The parking lot. All covered with snow...',
pic = 'gfx/shop.png',
act = function(s, w)
if w == 1 then
return 'Ordinary bins... White snow covers the garbage...';
end
end,
exit = function(s, t)
if t == 'shop' and seen('mycat') then
return 'I called Barsik, but he was too busy with the dumpster... OK, it won\'t take long...';
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 'I glanced over the parking lot and called — Barsik! Barsik! — Where did my cat disappear?';
end
end,
way = { 'road', 'shop' },
obj = { 'truck', vobj(1,'bins', 'Rusty dumpster {bins} are covered with snow.'), '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([[Four people with submachine guns escorted me to my car. I had to start the engine and drive away from the institute. I drove a dozen kilometers before the military jeep with the seeing-off guards disappeared from the rear-view mirror... ]], walk('inmycar'));
end
return cat([[Four armed people throw me out of the check-point.^^]], walk('inst'));
end
guarddlg = dlg {
nam = 'guard',
pic = 'gfx/guard.png',
dsc = [[I can see the angular face of the guard. His eyes look archly, but corners of his mouth are turned down, discouraging any conversation...]],
obj = {
[1] = phr('One of the institute staff took my cat by mistake — I need to get in.','— Show the pass...', 'poff(2); pon(3);'),
[2] = phr('I forgot my pass — may I come in?','— No...', 'poff(1); pon(3);'),
[3] = _phr('Do you know Belin? He\'s got my cat — I need to take it...', '— No pass?', 'pon(4)'),
[4] = _phr('I just came to get back my cat! Give me Belin\'s number.',
[[The guard's eyes change their color. The corners of his lips move up. — Mister, as I understand you have no pass. Walk out of here while you still can...]], 'pon(5, 6)'),
[5] = _phr('I\'m gonna hit your face...', 'The guard\'s hand moves to his submachine gun. ', 'poff(6); return guardreact();'),
[6] = _phr('OK, I\'m leaving...', '— Don\'t hurry, — the guard no longer hides his smile — I don\'t like you...','poff(5); return guardreact()'),
[7] = _phr('Now I\'m gonna shotgun you all...', 'This time the guard doesn\'t even answer. His bloodshot eyes speak louder than any words.','return guardreact()'),
},
};
guard = obj {
nam = 'guards',
dsc = [[
There are {guards} in the kiosk. Looks like they are armed with Kalashnikov submachine guns.
]],
act = function(s)
return walk('guarddlg');
end,
};
kpp = room {
nam = 'checkpoint',
pic = 'gfx/kpp.png',
dsc = [[The checkpoint leaves no doubt that strangers are not welcome in the institute. Lift gate. Latticed kiosk. And silence.
]],
obj = { 'guard' },
way = { 'inst' }
};
inst = room {
nam = 'institute',
pic = 'gfx/inst.png',
dsc = [[
The building rises over the empty field of snow. Its sinister outline looks more like a jail rather than a research institute. There are railways behind the building. ]],
act = function(s, w)
if w == 1 then
return 'The wall is 5 meters high. Moreover, there is barbed wire on its top, and I suppose it\'s alive...';
end
if w == 2 then
return 'Yes, Vladimir was right... It\'s some sort of a military headquaters...';
end
if w == 3 then
return 'Yes — this looks like the van in which the man in gray coat took away my Barsik.';
end
end,
used = function(s, w, b)
if b == 'mybox' and w == 1 then
return 'I think the guards will notice me at once.';
end
if w == 2 and b == 'gun' and gun._loaded then
return 'I\'d get canned for that... Or just beaten... The guards are quite near.';
end
if w == 3 and b == 'gun' and gun._loaded then
return 'I need the cat, not destruction...';
end
end,
obj = {vobj(1, 'wall', 'The institute building is surrounded by a heavy concrete {wall}. There\'s a checkpoint at the centre.'),
vobj(2, 'cameras', 'Survelliance {cameras} watch the area from the towers.'),
vobj(3, 'van', 'Behind the gate I can see the black {van}.')},
way = { 'road', 'kpp' },
exit = function(s, t)
if have('mybox') and t ~= 'inmycar' then
return 'I won\'t walk around with the box...', false;
end
end,
};
cam = obj {
nam = 'surveillance camera',
dsc = function(s)
if not s._broken then
return 'One of the surveillance {cameras} isn\'t far from here. I press myself to the wall to stay unnoticed.';
end
return 'The shards of the surveillance {camera} are lying around. They\'re already dusted by snow.';
end,
act = function(s)
if not s._broken then
return 'Damned camera...';
end
return 'Ha... You\'ve had it coming, damned mechanism, hadn\'t you? I wonder when will the guards come...';
end,
};
wire = obj {
nam = 'barbed wire',
dsc = function(s)
if s._broken then
return 'I can see the shreds of barbed {wire}.';
end
return 'I can see barbed {wire}.';
end,
act = function(s)
if s._broken then
return 'Now it\'s safe! I can get inside...';
end
return 'What if it\'s alive?';
end,
};
onwall = room {
pic = 'gfx/onwall.png',
nam = 'on the wall',
dsc = 'I am standing atop the boxes, my head is on the wall top level. It\'s cold.',
enter = function(s)
if have('mybox') then
return 'I cannot climb the wall with a box in my hands.', false;
end
if wboxes._num < 5 then
return 'I try to climb the wall... But it\'s still to high...',false;
end
return 'I climb the wall over the boxes.';
end,
obj = { 'wire' },
way = { 'backwall' }
};
wboxes = obj {
_num = 0,
nam = function(s)
if (s._num > 1) then
return 'boxes by the wall';
end
return 'a box by the wall';
end,
act = function(s)
return walk('onwall');
end,
dsc = function(s)
if s._num == 0 then
return;
elseif s._num == 1 then
return 'There is one {box} by the wall.';
-- And again only one plural form
-- elseif s._num < 5 then
-- return 'There are '..tostring(s._num)..' {boxes}, stacked by the wall.';
else
return 'There are '..tostring(s._num)..' {boxes}, stacked by the wall.';
end
end,
};
ewall = obj {
nam = 'wall',
dsc = 'Here {the wall} is 4 meters high. The howling snowdrift tosses snowflakes to its bottom.',
act = function(s)
if not s._ladder then
s._ladder = true;
shop2:pon(7);
end
return 'Too high... I\'ll need a ladder.';
end
};
backwall = room {
pic = 'gfx/instback.png',
enter = function(s, f)
local st = '';
if ewall._stolen then
ewall._stolen = false;
st = 'Oho!!! Somebody has stolen my box!!!';
end
if f == 'inmycar' then
return 'Great... Looks like I managed to get here unnoticed...'..' '..st;
end
if f == 'onwall' then
return
end
return 'Rambling through the snowfield I got to the back wall.'..' '..st;
end,
nam = 'eastern wall of the institute',
dsc = 'I am at the back side of the institute.',
obj = { 'ewall', 'cam' },
way = { 'inst', },
exit = function(s, t)
if have('mybox') and t ~= 'inmycar' then
return 'I won\'t walk around with the box in my hands...', false;
end
end,
};