1681 lines
50 KiB
Lua
1681 lines
50 KiB
Lua
|
lection = room {
|
|||
|
nam = 'Belin\'s Lecture',
|
|||
|
pic = 'gfx/lection.png',
|
|||
|
dsc = [[I take my seat... I can hear everything clearly from this place. Let's listen to the famous physicist...
|
|||
|
^^- So, in November 1935 Schrödinger published his paper in which the following experiment was described. So, what's the point of the experiment? - Belin paused for a second and put some strange box on the table.
|
|||
|
- I like experiments! - Belin's white smile gave a shiny flash. -
|
|||
|
- So, as you can see, this is a box... - Belin tapped its plain surface by his hand.
|
|||
|
- This box has a built-in container with the poison gas. Besides, the box contains the radiation counter, the radioactive element and the timer.
|
|||
|
The parameters of the experiment are set up so, that the probability of the radioactive element decay during 1 hour - equals to 50%.^^
|
|||
|
- If the decay occurs, the mechanism starts working and the poison gas is released from its container to the inner space of the box. So, gentlemen, I guess it's simple so far, isn't it? - Belin smiles again.
|
|||
|
- But the point is that in his experiment Schrödinger puts a cat inside the box - an alive being.^^
|
|||
|
|
|||
|
- According to the quantum theory, if we are observing the nucleus - the state of the nucleus is described as a superposition (mixing) of two states - the state of decayed nucleus and the state of non-decayed nucleus. Therefore, the cat in the box is alive and dead simultaneously.
|
|||
|
- Belin raises his voice.
|
|||
|
- So we can say that it is just a mind game, but I will show and proove that it's not quite so...^^
|
|||
|
|
|||
|
- So, if the experimenter opens the box - he will observe only one of the two states - <<decay occurred, the cat is dead>> or <<decay not occurred, the cat is alive>>. Schrödinger thought that this paradox proves the inconsistence of the quantum mechanics theory. But we all know that the quantum mechanics really IS the TRUE picture of our world!
|
|||
|
- Belin raises his voice again.
|
|||
|
- And so, independently of each other (and this partly proves the truth of the theory) - Hans Moravec in 1987 and Bruno Marchal in 1988 cosidered the situation from the cat's point of view!^^
|
|||
|
|
|||
|
- If Everett's multi-world interpretation is true, every time when the cat experiment takes place - the Universe splits into two universes. In the first universe - the cat is alive, and in the second - dead. The cat stops existing in the worlds where it dies. On the other hand, from the alive cat's point of view - the experiment will be continued and will not lead to the cat's death. This is true because in any branch the cat is capable to observe the experiment only in that world where it stays alive. And if the multi-world interpretation is true, then the cat can only observes that it never dies...
|
|||
|
- Belin pauses and looks to the audience...^^
|
|||
|
|
|||
|
- And so what does this mean, gentlemen? I ask you, what does this mean? Let us imagine that the observer of the experiment explodes an atomic bomb near himself. According to the multi-world interpretation, the observer will destroy himself almost in all parallel universes. But despite of this fact, some small set of alternative universes should exist where the observer somehow survives. And we come to the idea... - Belin raised his voice again. - The Idea of Quantum Immortality!!! ^^
|
|||
|
|
|||
|
- The Idea of Quantum Immortality is that the observer stays alive and stays capable to observe the reality, at least in one of all set of universes, even if there are very few of these (happy) universes. Thus, eventually the observer will find out that he can live forever!!! ^^
|
|||
|
|
|||
|
- We all have been working very hard for all this year, guided by the great leadership of...
|
|||
|
- at that moment Belin gave a glance to the portraits,
|
|||
|
- And I must tell you, gentlemen, that we have enough information in our media center...
|
|||
|
- Belin looked at the ceiling,
|
|||
|
- Enough information to prove, I say it again, to prove scientifically by theory and by experiment - to prove the validity of the multi-world interpretation...^^
|
|||
|
|
|||
|
- But what does it mean for us? You can't see it, but... - Belin looked at his watch
|
|||
|
- But in several minutes the train loaded with uranium arrives to the back gates of the institue... It will be enough uranium to provide everyone of you with a nuclear bomb. Since you will assure soon that the Quantum Immortality is the true reality, anyone of you may become an invincible terrorist!!! The Universe will split to many worlds where YOU - Belin points his finger to the audience, - YOU become its dictator and master!!! - Belin almost screamed...^^
|
|||
|
|
|||
|
The audience could not resist to this speech. Everybody stood up and applauded... Their eyes were burning with some evil fire... O God! This is a kind of delusion! - I thought... My legs didn't obey me. I was sitting at my place and could not move...^^
|
|||
|
|
|||
|
- But let's get back to the point. - Belin said. - Let's continue our experiment. - with these words he took out some alive object from under the table... It was my Barsik...
|
|||
|
- Ok, now I'll put this cat to the box and we all will see how she... - I feel red mist blurring my eyes...
|
|||
|
]],
|
|||
|
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 walk('escape1');
|
|||
|
end
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
vobj(1, 'next', '{Next}.'),
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
profdlg = dlg {
|
|||
|
nam = '!!!',
|
|||
|
pic = 'gfx/me.png',
|
|||
|
dsc = 'I grip my strength, stand up and scream as loud as I can...',
|
|||
|
obj = {
|
|||
|
[1] = phr('It\'s not SHE, it\'s HE!',
|
|||
|
'Belin stops his hand. His sight focuses on me. He recognizes me!! - Security! Unauthorized in the hall!!! Ge.. Get him out of here!!! - he screams.',
|
|||
|
[[poff(2);escape1.obj:add('guardian')]]),
|
|||
|
[2] = phr('Don\'t touch my cat!',
|
|||
|
'Belin stops and looks me in the eyes. His face expresses a surprise. - Guards!!! Guards!!! Unauthorized in the hall!!!',
|
|||
|
[[poff(1);escape1.obj:add('guardian')]]),
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
profdlg2 = dlg {
|
|||
|
nam = 'Belin',
|
|||
|
pic = 'gfx/prof2.png',
|
|||
|
dsc = 'Belin came white. He stares at the shotgun with a lost sight.',
|
|||
|
obj = {
|
|||
|
[1] = phr('I have come for my cat!',
|
|||
|
'I grab Barsik from Belin\'s hand and put him to my bosom.',
|
|||
|
[[inv():add('mycat'); lifeon('mycat')]]),
|
|||
|
[2] = phr('Tell them to get out!!!',
|
|||
|
'Belin is white faced. He does not seem to understand me...',
|
|||
|
[[pon(3)]]),
|
|||
|
[3] = _phr('Come on!!! Tell them to get out of here...',
|
|||
|
'I shake him. Belin does not feel anything. He just stares at the black barrels of the shotgun.',
|
|||
|
[[pon(3); back();]]);
|
|||
|
},
|
|||
|
};
|
|||
|
gdlg1 = dlg {
|
|||
|
nam = 'guard',
|
|||
|
pic = 'gfx/guard42.png',
|
|||
|
dsc = 'I scream at the guard and find my voice unnatural...',
|
|||
|
obj = {
|
|||
|
[1] = phr('Put your weapon upside down on the table and push it to me..',
|
|||
|
'The guard stares on me with uncertainty..',
|
|||
|
[[pon(2)]]),
|
|||
|
[2] = _phr('I said the gun on the table!!! — I push the barrels more hard to Belin\'s chest. He is very close to fainting.',
|
|||
|
'The guard carefully puts the shotgun on the table and pushes it to me... I take it quickly. Now I\'ve got two guns in both hands.',
|
|||
|
[[pon(3); inv():add('shotgun')]]),
|
|||
|
[3] = phr('You didn\'t like my face? Right???',
|
|||
|
'The guard keeps silence. The sweat comes out on his forehead...',
|
|||
|
[[pon(3); back();]]),
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
shotgun = obj {
|
|||
|
nam = 'guard\'s shotgun',
|
|||
|
inv = 'A pump-action shotgun... For 6 shells. Interesting, how much shells is left?',
|
|||
|
dsc = 'The pump-action {shotgun} lies on the floor.',
|
|||
|
tak = function(s)
|
|||
|
if s._unloaded then
|
|||
|
return 'I don\'t need it. It has no ammo.', false
|
|||
|
end
|
|||
|
return 'I take my shotgun back.';
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
guardian = obj {
|
|||
|
nam = 'guard',
|
|||
|
dsc = function(s, w)
|
|||
|
if not professor._gun then
|
|||
|
return 'I see how the {guard} with a shotgun slowly but surely moves towards me.';
|
|||
|
end
|
|||
|
if have('shotgun') then
|
|||
|
return 'I see the {guard} with no weapon. He watches me attentively.';
|
|||
|
end
|
|||
|
return 'I see the {guard} holding his gun not confidently.';
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if not professor._gun then
|
|||
|
return 'He will get me soon...';
|
|||
|
end
|
|||
|
return walk('gdlg1');
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'shotgun' then
|
|||
|
return 'No, I can\'t make me do it...';
|
|||
|
end
|
|||
|
if w == 'gun' then
|
|||
|
if not professor._gun then
|
|||
|
return 'My shortened shotgun is not for a distant battle...';
|
|||
|
end
|
|||
|
return 'I should point my gun on Belin in my situation. Besides, I will need to reload the gun if I fire...';
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
professor = obj {
|
|||
|
nam = 'Belin',
|
|||
|
dsc = function(s, w)
|
|||
|
if not s._gun then
|
|||
|
return '{Belin} is standing at the board and holding my Barsik in his hand.';
|
|||
|
end
|
|||
|
return 'I point both shotgun barrels to the chest of {Belin}.';
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if not s._gun then
|
|||
|
return walk('profdlg');
|
|||
|
end
|
|||
|
return walk('profdlg2');
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'gun' then
|
|||
|
if s._gun then
|
|||
|
return 'I push the Belin\'s chest with the shotgun even more hard.';
|
|||
|
end
|
|||
|
s._gun = true;
|
|||
|
objs():add('guardian');
|
|||
|
gun._hidden = false;
|
|||
|
return 'I take my shortened shotgun out of my coat, jump over the table and run to Belin.';
|
|||
|
end
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
pdlg = dlg {
|
|||
|
nam = 'people',
|
|||
|
pic = 'gfx/me.png',
|
|||
|
dsc = 'I look at the audience and scream...',
|
|||
|
obj = {
|
|||
|
[1] = phr('It\'s a lie!!! There\'s no scientific proof at all!!!',
|
|||
|
'— no reaction...',[[pon(2)]]),
|
|||
|
[2] = _phr('The World is unique!!! Everyone of you knows it since childhood!!! Get out of here!! Run from these sectarians!!!',
|
|||
|
' - the silence was the answer...'),
|
|||
|
[3] = phr('A herd of stupid sheep!!! You can be deceived so easy???',
|
|||
|
'- they keep silence, and I don\'t like their sights...',
|
|||
|
[[pon(3); back();]]),
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
narod = obj {
|
|||
|
nam = 'people',
|
|||
|
dsc = function(s)
|
|||
|
if not professor._gun then
|
|||
|
if seen('guardian') then
|
|||
|
return '{People} in the hall are looking at me questionably. They are in hesitation.';
|
|||
|
end
|
|||
|
return '{People} in the hall are watching for Belin.';
|
|||
|
end
|
|||
|
return '{People} in the hall froze. Their sights are all on me. If I make a mistake - I\'m dead... And the whole world... is dead...';
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if professor._gun then
|
|||
|
return walk('pdlg');
|
|||
|
end
|
|||
|
if seen('guardian') then
|
|||
|
return 'They haven\'t assaulted me so far... So far so good...';
|
|||
|
end
|
|||
|
return 'Fanatics! They all are fanatics...';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'gun' or w =='shotgun' then
|
|||
|
return 'I think I have not enough shells.';
|
|||
|
end
|
|||
|
return 'Alas...';
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
win = obj {
|
|||
|
nam = 'window',
|
|||
|
dsc = function(s)
|
|||
|
local st = '';
|
|||
|
if s._broken then
|
|||
|
st = ' One window is broken.';
|
|||
|
end
|
|||
|
return 'Three wide {windows} look to the west.'..st;
|
|||
|
end,
|
|||
|
act = 'It\'s dark outside. Nothing to watch but snowflakes bumping the glass.';
|
|||
|
used = function(s, w)
|
|||
|
if w ~= 'gun' and w ~= 'shotgun' then
|
|||
|
return 'Won\'t help...';
|
|||
|
end
|
|||
|
if s._broken then
|
|||
|
return 'Broken already...';
|
|||
|
end
|
|||
|
if not have('shotgun') then
|
|||
|
return 'The guard will shoot me.';
|
|||
|
end
|
|||
|
s._broken = true;
|
|||
|
ways():add('window');
|
|||
|
return 'I break the nearest window by the shotgun butt...';
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
escape1 = room {
|
|||
|
nam = 'Hall 2',
|
|||
|
dsc = 'I am in the hall. The people here are waiting for the experiment to continue.',
|
|||
|
pic = function()
|
|||
|
if professor._gun then
|
|||
|
return 'gfx/meandgun.png';
|
|||
|
end
|
|||
|
return 'gfx/lection2.png';
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
'win',
|
|||
|
vobj(4, 'lamps', 'The hall is lit by fluorescent {lamps}.'),
|
|||
|
'professor',
|
|||
|
'narod',
|
|||
|
vobj(5, 'box', 'The {box} is placed on the table.'),
|
|||
|
'portrait',
|
|||
|
},
|
|||
|
act = function(s, w)
|
|||
|
if w == 5 then
|
|||
|
return 'Damned box...';
|
|||
|
end
|
|||
|
if w == 4 then
|
|||
|
return 'Six lamps... I hate this blinking light...';
|
|||
|
end
|
|||
|
end,
|
|||
|
used = function(s, w, ww)
|
|||
|
if ww == 'gun' or ww == 'shotgun' then
|
|||
|
if not professor._gun then
|
|||
|
return 'I\'d better not...';
|
|||
|
end
|
|||
|
if w == 4 then
|
|||
|
return 'The darkness will help not only me, but them too... And they are in a greater number.';
|
|||
|
end
|
|||
|
if w == 5 then
|
|||
|
return 'The poison is still there. I don\'t want to hurt my Barsik.';
|
|||
|
end
|
|||
|
end
|
|||
|
end,
|
|||
|
exit = function(s, t)
|
|||
|
if t == 'window' and not have('mycat') then
|
|||
|
return 'And what about Barsik?', false
|
|||
|
end
|
|||
|
if t == 'cor4' then
|
|||
|
return 'I must do something immediately!', false;
|
|||
|
end
|
|||
|
end,
|
|||
|
way = { 'cor4' },
|
|||
|
};
|
|||
|
lest = obj {
|
|||
|
nam = function(s, w)
|
|||
|
if s._seen then
|
|||
|
return 'ladder';
|
|||
|
else
|
|||
|
return 'some thing';
|
|||
|
end
|
|||
|
end,
|
|||
|
dsc = function(s, w)
|
|||
|
if s._seen then
|
|||
|
return 'Looking through the snowstorm I hardly can distinguish the fire-escape {ladder}!';
|
|||
|
end
|
|||
|
return 'Looking through the snowstorm I see outlines of some {construction}.';
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if not s._seen then
|
|||
|
ways():add('ladder');
|
|||
|
s._seen = true;
|
|||
|
return 'It is the fire-escape ladder!!!';
|
|||
|
end
|
|||
|
return 'Jump or not? This is the question...';
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
window = room {
|
|||
|
nam = function(s)
|
|||
|
if here() == window then
|
|||
|
return 'on the window sill';
|
|||
|
end
|
|||
|
return 'to the window';
|
|||
|
end,
|
|||
|
pic = 'gfx/fromwin1.png',
|
|||
|
enter = "I know I am mad, but I run to the window... I hear the roar of the crowd behind...";
|
|||
|
dsc = 'I stand on the window sill and look inside the night darkness.',
|
|||
|
|
|||
|
obj = {
|
|||
|
'lest',
|
|||
|
},
|
|||
|
exit = function(s, t)
|
|||
|
if t == 'escape1' then
|
|||
|
return 'I can\'t get back... There are fanatics there...', false;
|
|||
|
end
|
|||
|
end,
|
|||
|
way = { 'escape1',},
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
down = room {
|
|||
|
nam = 'down';
|
|||
|
};
|
|||
|
|
|||
|
window5 = obj {
|
|||
|
nam = 'window',
|
|||
|
dsc = function(s, w)
|
|||
|
if s._broken then
|
|||
|
return 'A broken {window} is to the left of me.';
|
|||
|
end
|
|||
|
return 'There is a yellow light coming from a {window} to the left of me.';
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if not s._broken then
|
|||
|
return 'The window is closed...';
|
|||
|
end
|
|||
|
return walk('room5');
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'gun' or w == 'shotgun' then
|
|||
|
if s._broken then
|
|||
|
return 'Already broken...';
|
|||
|
end
|
|||
|
s._broken = true;
|
|||
|
return 'I break out the glass with the shotgun butt... Pieces of the broken glass fall into the night...';
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
up = room {
|
|||
|
_num = 0;
|
|||
|
nam = 'up',
|
|||
|
enter = function(s, w)
|
|||
|
s._num = s._num + 1;
|
|||
|
if s._num == 2 then
|
|||
|
lifeon('ladder');
|
|||
|
return 'Suddenly the night darkness is cut by a ray of spotlight and the silence is broken by a howl of a siren... It seems I was noticed from down there...', false;
|
|||
|
end
|
|||
|
if s._num > 4 then
|
|||
|
ladder.way:del('up');
|
|||
|
ladder.obj:add('window5');
|
|||
|
end
|
|||
|
return 'I am slowly climbing up...', false;
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
ladder = room {
|
|||
|
nam = 'ladder',
|
|||
|
pic = 'gfx/ladder.png',
|
|||
|
dsc = [[I am on the cold ladder. Sharp icy snowflakes hurt my face.]],
|
|||
|
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return 'I will get frozen soon if I don\'t start moving...';
|
|||
|
end
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
vobj(1, 'ladder rails', 'I hold iron ladder {rails}.'),
|
|||
|
};
|
|||
|
enter = function(s)
|
|||
|
inv():del('gun');
|
|||
|
return [[I make a run and jump... My heart collapses for some seconds, but I feel the warmth of Barsik in my bosom and in the next moment my hands catch the black steel... The shotgun falls from my shoulder and flies down...]];
|
|||
|
end,
|
|||
|
way = { 'up', 'down' },
|
|||
|
life = function(s)
|
|||
|
if rnd(2) == 1 then
|
|||
|
return 'I hear rattle of machine guns fire - several bullets hit very close...';
|
|||
|
end
|
|||
|
end,
|
|||
|
exit = function(s, t)
|
|||
|
if t == 'down' then
|
|||
|
if s._shoot then
|
|||
|
return 'They will kill me... And they will kill Barsik too... And they will destroy the whole world...', false;
|
|||
|
end
|
|||
|
lifeon('ladder');
|
|||
|
s._shoot = true;
|
|||
|
return 'I start to come down when suddenly the night darkness is cut by a ray of a spotlight and the silence is broken by a howl of a siren... It seems I was noticed from down there...', false;
|
|||
|
end
|
|||
|
if t ~= 'up' then
|
|||
|
lifeoff('ladder');
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
hand = obj {
|
|||
|
nam = 'bloody hand',
|
|||
|
inv = 'My hand is bleeding... I think I will lose my conscience...',
|
|||
|
life = 'Blood drops are falling on the floor from my hand...',
|
|||
|
used = function(s, w)
|
|||
|
if w == 'galstuk' then
|
|||
|
inv():del('galstuk');
|
|||
|
inv():del('hand');
|
|||
|
lifeoff('hand');
|
|||
|
return 'I bandage my hand with the tie... It\'s ok so far...';
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
computers = obj {
|
|||
|
nam = 'computers',
|
|||
|
dsc = 'The most space is occupied by the tall racks with computer {hardware}. Quiet hum of fans. The network indicators blink nervously.';
|
|||
|
act = function(s)
|
|||
|
if kover._fire then
|
|||
|
return 'So... Burn, evil machines!!! Burn!!! It\'s time to get out of here.';
|
|||
|
end
|
|||
|
return 'This hardware stores evil... I need to destroy it all, but how? I know from the past that the most reliable way to destroy information on magnetic storage - is to bring it through the Curie point. In other words - I should BURN all these damned things!!! But where can I get the fire?';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'shotgun' then
|
|||
|
return 'Shoot the servers? Not reliable... I must burn this evil...';
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
poroh = obj {
|
|||
|
nam = 'gun powder',
|
|||
|
inv = 'This gun powder should help me.',
|
|||
|
};
|
|||
|
|
|||
|
trut = obj {
|
|||
|
nam = 'tinder',
|
|||
|
inv = 'A piece of paper with gun powder. I think I\'ve got a tinder!!!',
|
|||
|
use = function(s, w)
|
|||
|
if w == 'ibp' and ibp._knife and not ibp._trut then
|
|||
|
ibp._trut = true;
|
|||
|
inv():del('trut');
|
|||
|
return 'I put the tinder on the UPS.';
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
fire = obj {
|
|||
|
nam = 'fire',
|
|||
|
inv = 'The paper burns fast... I must do something right now!!!',
|
|||
|
|
|||
|
use = function(s, w)
|
|||
|
if w == 'poroh' then
|
|||
|
return 'It will explode in my hand.';
|
|||
|
end
|
|||
|
if w == 'news' then
|
|||
|
return 'I tear another piece from the newspaper. The flame starts burning it.';
|
|||
|
end
|
|||
|
inv():del('fire');
|
|||
|
if w ~= 'kover' then
|
|||
|
return 'The paper burns out and disappears...';
|
|||
|
end
|
|||
|
if kover._fire then
|
|||
|
return 'I throw the paper on the burning carpet...';
|
|||
|
end
|
|||
|
kover._fire = true;
|
|||
|
return 'I put the paper on the carpet... The nap of the carpet starts burning... I guess the fire is starting...';
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
ibp = obj {
|
|||
|
nam = 'UPS',
|
|||
|
dsc = 'One disassembled {UPS} lies on the floor.',
|
|||
|
inv = function(s)
|
|||
|
if not s._knife then
|
|||
|
return 'This is uninterruptible power supply unit. What should I do with it?';
|
|||
|
end
|
|||
|
local st = '';
|
|||
|
if s._trut then
|
|||
|
st = ' There\'s the paper with gunpowder on the battery.';
|
|||
|
end
|
|||
|
return 'Disassembled UPS. I see contacts leading to the battery...'..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if not have('ibp') then
|
|||
|
if not have('fire') and not kover._fire then
|
|||
|
take('ibp');
|
|||
|
return 'I take UPS again.';
|
|||
|
end
|
|||
|
return 'I don\'t need it anymore.';
|
|||
|
end
|
|||
|
return s:inv();
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if not have('ibp') then
|
|||
|
return 'It will not do...';
|
|||
|
end
|
|||
|
if w == 'knife' then
|
|||
|
s._knife = true;
|
|||
|
return 'I unscrew the screws and disassemble UPS. Now I see the contacts leading to the battery...';
|
|||
|
end
|
|||
|
if w == 'provodki' and s._knife then
|
|||
|
if not provodki._knife then
|
|||
|
return 'The wires are not bare.';
|
|||
|
end
|
|||
|
if not s._trut then
|
|||
|
return 'I connect the wires to the contacts and make a short circuit. The spark comes out. I need a tinder...';
|
|||
|
end
|
|||
|
drop('ibp');
|
|||
|
ibp._trut = false;
|
|||
|
inv():add('fire');
|
|||
|
return 'I connect the wires to the contacts and make a short circuit. The spark comes out. The tinder begins to burn! I\'ve got a fire!!!';
|
|||
|
end
|
|||
|
if w == 'provod' then
|
|||
|
return 'I inserted the wire to the UPS and took it back... Hmm...';
|
|||
|
end
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
provodki = obj {
|
|||
|
nam = 'thin wires',
|
|||
|
inv = function(s)
|
|||
|
if s._knife then
|
|||
|
return 'A pair of thin wires with bared edges.'
|
|||
|
end
|
|||
|
return 'A pair of thin wires.'
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'knife' and not s._knife then
|
|||
|
s._knife = true;
|
|||
|
return 'I cut the insulation of wire edges and releasing the bare wires.';
|
|||
|
else
|
|||
|
return 'It won\'t work...';
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
provod = obj {
|
|||
|
nam = 'wire from UPS',
|
|||
|
inv = 'This is the wire from UPS.',
|
|||
|
used = function(s, w)
|
|||
|
if w == 'knife' then
|
|||
|
if not knife._oster then
|
|||
|
return 'The knife blade is too blunt...';
|
|||
|
end
|
|||
|
inv():del('provod');
|
|||
|
inv():add('provodki');
|
|||
|
return 'I cut the main insulation and take out two wires.'
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
ups = obj {
|
|||
|
nam = 'ups',
|
|||
|
dsc = '{Uninterruptible power supply units} are placed near every rack.',
|
|||
|
act = function(s)
|
|||
|
if have('hand') then
|
|||
|
return 'My hand is wounded. Bleeding much. I can\'t take an UPS.';
|
|||
|
end
|
|||
|
if not have('ibp') and not seen('ibp') then
|
|||
|
inv():add('ibp');
|
|||
|
inv():add('provod');
|
|||
|
return 'After some work I disconnect one of the UPSes and take it...';
|
|||
|
end
|
|||
|
return 'I have one already.';
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
kover = obj {
|
|||
|
nam = 'carpet',
|
|||
|
dsc = function(s)
|
|||
|
if s._fire then
|
|||
|
return 'The {carpet} on the floor is burning more and more.';
|
|||
|
end
|
|||
|
return 'The floor is covered with the red {carpet}.';
|
|||
|
end,
|
|||
|
act = 'Useless luxury.',
|
|||
|
};
|
|||
|
|
|||
|
room5 = room {
|
|||
|
nam = 'information center';
|
|||
|
pic = 'gfx/servers.png',
|
|||
|
dsc = [[I am in the big room which occupies all of the south part of the institute.]],
|
|||
|
enter = function(s, f)
|
|||
|
if f == 'ladder' then
|
|||
|
set_music('mus/hybrid.xm');
|
|||
|
lifeon('hand');
|
|||
|
inv():add('hand');
|
|||
|
return 'I jump and catch the window frame. My right hand is in blood. Despite of the pain I jump to the room floor...';
|
|||
|
end
|
|||
|
end,
|
|||
|
exit = function(s, f)
|
|||
|
set_music("mus/under.s3m");
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return 'I will not go back... It is cold and too much shooting outside...';
|
|||
|
end
|
|||
|
end,
|
|||
|
|
|||
|
obj = { 'computers', 'ups',
|
|||
|
vobj(1, 'window', 'Cold winter wind blows through the broken {window}.'),
|
|||
|
'kover',
|
|||
|
'dout',
|
|||
|
'portrait',
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
dout = obj {
|
|||
|
nam = 'door',
|
|||
|
dsc = function(s)
|
|||
|
return 'Far ahead I can see the exit {door}.';
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if not kover._fire then
|
|||
|
return 'This is the information processing center. I must destroy it to save the world from this infection which resides inside its storages...';
|
|||
|
end
|
|||
|
return 'I run to the door. It leads to elevators. But it has electronic lock!!! This means I need a card with appropriate access level to open the door. Will I burn in fire?';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if not kover._fire then
|
|||
|
return s:act();
|
|||
|
end
|
|||
|
if w == 'card' then
|
|||
|
return 'I bring the card to the door. Beep. Access denied! I\'ll die here!!!';
|
|||
|
end
|
|||
|
if w == 'shotgun' then
|
|||
|
return walk('escape2');
|
|||
|
end
|
|||
|
return 'Won\'t help...';
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
handgdlg = dlg {
|
|||
|
nam = 'guard',
|
|||
|
pic = 'gfx/handhoh.png',
|
|||
|
dsc = 'The guard - a young guy of age 30 - looks at me. He is confused.',
|
|||
|
|
|||
|
obj = {
|
|||
|
[1] = phr('Give me your weapon!',
|
|||
|
'- I have no weapon... - the guard shakes his head... I don\'t know if I can trust him, but I don\'t want to search him...'),
|
|||
|
|
|||
|
[2] = phr('I need the key for the red door.',
|
|||
|
'The guard goes white. - No one has the key for THIS door. - he says. - What a nonsense... - I think.'),
|
|||
|
|
|||
|
[3] = phr('Okay! Just stand still and do not move.', 'The guard watches me silently.',
|
|||
|
[[pon(3);back();]]),
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
win5 = obj {
|
|||
|
nam = 'window',
|
|||
|
dsc = function (s)
|
|||
|
if s._broken then
|
|||
|
return 'The winter wind is howling through the broken {window}. Snowflakes whirl on the floor.';
|
|||
|
end
|
|||
|
return 'The wide {window} looks to the west.';
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if not s._broken then
|
|||
|
return 'I come to the window... Interesting. I see that the window looks at quite wide area of the roof, which streches through the front part of the building...';
|
|||
|
end
|
|||
|
return 'The window is broken... The third one for today.';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if s._broken then
|
|||
|
return s:act();
|
|||
|
end
|
|||
|
if w == 'shotgun' then
|
|||
|
s._broken = true;
|
|||
|
ways():add('krysha');
|
|||
|
return 'Oohh.... The third window for today... I swing with all my strength and pieces of the broken glass fly to the roof...';
|
|||
|
end
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
escape2 = room {
|
|||
|
_timer = 0,
|
|||
|
nam = '5th floor site',
|
|||
|
pic = 'gfx/floor5e.png',
|
|||
|
dsc = [[The ceilings are very high on the fifth floor.]],
|
|||
|
enter = function(s, f)
|
|||
|
if f == 'room5' then
|
|||
|
lifeon('escape2');
|
|||
|
return 'With no strength left I hit the hated door with the shotgun butt. But suddenly, in a second I hear someone comes to the door from outside... It is a guard!!! The card reader beeps and the door opens. The guard steps back - his chest is pushed by the pump-action gun of mine. We exit to the elevators site.';
|
|||
|
end
|
|||
|
if f == 'krysha' then
|
|||
|
lifeon('escape2');
|
|||
|
end
|
|||
|
end,
|
|||
|
life = function(s)
|
|||
|
s._timer = s._timer + 1;
|
|||
|
if s._timer == 3 then
|
|||
|
return 'Suddenly a siren sound rang out. - Attention!!! Zero access level individual on the fifth floor! I repeat... - the voice flows from the radio.';
|
|||
|
end
|
|||
|
if s._timer > 3 then
|
|||
|
return '— Zero access level individual on the fifth floor!!! - I\'m getting sick of the siren howling.';
|
|||
|
end
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return 'My legs are drowning in the red velvet... Damned luxury!';
|
|||
|
|
|||
|
end
|
|||
|
if w == 2 then
|
|||
|
return 'Still, it is made of crystal...';
|
|||
|
end
|
|||
|
if w == 4 then
|
|||
|
return 'The fire is going on...';
|
|||
|
end
|
|||
|
if w == 5 then
|
|||
|
return 'I don\'t think my pass works here.';
|
|||
|
end
|
|||
|
if w == 6 then
|
|||
|
return walk('handgdlg');
|
|||
|
end
|
|||
|
end,
|
|||
|
used = function(s, w, ww)
|
|||
|
if w == 6 then
|
|||
|
return 'I keep targeting the guard.';
|
|||
|
end
|
|||
|
if w == 5 then
|
|||
|
return 'Won\'t help.';
|
|||
|
end
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
vobj(1, 'carpet', 'The elevator site is covered with a red {carpet}.'),
|
|||
|
vobj(2, 'chandelier', 'A crystal {chandelier} hangs on the high ceiling.'),
|
|||
|
'win5',
|
|||
|
vobj(4, 'information', 'The {door} to the information processing center is wide opened. The smoke starts to come out from there.');
|
|||
|
vobj(5, 'red door', 'The opposite {door} has no label. This is a massive door upholstered with red leather.'),
|
|||
|
vobj(6, 'guard', 'The {guard} stands in the center of the site with hands up.');
|
|||
|
},
|
|||
|
way = { 'lift','room5' },
|
|||
|
exit = function(s, t)
|
|||
|
if t == 'room5' then
|
|||
|
return 'There\'s the flame!', false
|
|||
|
end
|
|||
|
if t == 'lift' then
|
|||
|
return 'I notice that all elevator indicators are on. I\'m quite sure that this means the guard troops are coming up here... I should hurry!', false;
|
|||
|
end
|
|||
|
if t == 'krysha' then
|
|||
|
lifeoff('escape2');
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
swin = obj {
|
|||
|
nam = 'south window',
|
|||
|
dsc = 'Smoke is coming out from the south {window}.',
|
|||
|
act = 'Yes, it is one of the windows of the information center. I look at the window and see the flame.',
|
|||
|
};
|
|||
|
|
|||
|
nwin = obj {
|
|||
|
nam = 'north window',
|
|||
|
dsc = function(s)
|
|||
|
local st = '';
|
|||
|
if s._broken then
|
|||
|
st = ' The window is broken.';
|
|||
|
end
|
|||
|
return 'The north {window} shines to the darkness with yellow light.'..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if s._broken then
|
|||
|
return walk('hall5');
|
|||
|
end
|
|||
|
return 'Hmm... I look at the window and see a nice hall.';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'shotgun' then
|
|||
|
s._broken = true;
|
|||
|
ways():add('hall5');
|
|||
|
return 'Oohh... I hope it\'s the last one??? I swing with my shotgun and break the glass.';
|
|||
|
end
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
hall5 = room {
|
|||
|
nam = 'hall',
|
|||
|
pic = 'gfx/hall5.png',
|
|||
|
enter = function(s, f)
|
|||
|
if f == 'krysha' then
|
|||
|
return 'I jump to the hall and look around...';
|
|||
|
end
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return 'Useless luxury.';
|
|||
|
end
|
|||
|
if w == 2 then
|
|||
|
return 'I run my hand across the surface of one of the columns... Marble!';
|
|||
|
end
|
|||
|
if w == 3 then
|
|||
|
return 'I guess this chandelier made of mountain crystal.';
|
|||
|
end
|
|||
|
if w == 4 then
|
|||
|
return 'Dark... But... What is it? It seems that some train arrived to the back side of the institute.';
|
|||
|
end
|
|||
|
if w == 5 then
|
|||
|
return 'Snowflakes wirl through the broken window.';
|
|||
|
end
|
|||
|
if w == 6 then
|
|||
|
if s.way:srch('escape3') then
|
|||
|
return walk('escape3');
|
|||
|
end
|
|||
|
return walk('gudlg');
|
|||
|
end
|
|||
|
if w == 7 then
|
|||
|
return 'This door is closed. I don\'t think I can open it with my key.';
|
|||
|
end
|
|||
|
if w == 8 then
|
|||
|
return 'Hmmm... Picasso?';
|
|||
|
end
|
|||
|
if w == 9 then
|
|||
|
return 'Terrible weakness posesses all me... No! I must not sleep...';
|
|||
|
end
|
|||
|
end,
|
|||
|
used = function(s, w, ww)
|
|||
|
return 'What for?';
|
|||
|
end,
|
|||
|
dsc = 'The huge and magnificent hall occupies almost all north part of the building!',
|
|||
|
obj = {
|
|||
|
vobj(1,'carpet', 'My feet feel the depth of the red velvet {carpet}.'),
|
|||
|
vobj(2,'columns', 'Eight marble {columns} form a corridor.'),
|
|||
|
vobj(3,'chandelier', 'The great {chandelier} hangs from the ceiling.'),
|
|||
|
vobj(4,'east windows', 'Four {windows} look to the east.'),
|
|||
|
vobj(5,'west windows', 'A broken {window} is to the left of me.'),
|
|||
|
vobj(6,'small door', 'At the north end of the hall I see a small wooden {door}.'),
|
|||
|
vobj(7,'entry door', 'There is the entry {door} behind me.'),
|
|||
|
vobj(8,'paintings', 'Nice framed {paintings} hang on the walls.'),
|
|||
|
vobj(9,'sofas', 'Soft {sofas} are placed along the perimeter.'),
|
|||
|
},
|
|||
|
way = { 'krysha' },
|
|||
|
};
|
|||
|
|
|||
|
krysha = room {
|
|||
|
nam = 'roof',
|
|||
|
pic = 'gfx/krysha.png',
|
|||
|
enter = function(s, f)
|
|||
|
return 'I quickly approach the broken window and a moment later I am on the roof...';
|
|||
|
end,
|
|||
|
dsc = 'It seems that the fifth floor was built after the rest four. Walking on the roof I can reach the first windows of the south and north building parts.',
|
|||
|
obj = {'nwin', 'swin'},
|
|||
|
way = {'escape2'},
|
|||
|
};
|
|||
|
|
|||
|
gudlg2 = dlg {
|
|||
|
nam = 'portrait man',
|
|||
|
pic = 'gfx/pmanb.png',
|
|||
|
dsc = 'I watch his drooping face. It is calm as already.',
|
|||
|
obj = {
|
|||
|
[1] = phr('You got it, freak?',
|
|||
|
'The answer is a hardly heard groan.',
|
|||
|
[[pon(1); back();]]),
|
|||
|
[2] = phr('But why? Why all this?',
|
|||
|
'He raised his head and looked at me. - I just did my job...',
|
|||
|
[[pon(3);poff(1);]]),
|
|||
|
[3] = _phr('What a bullshit?',
|
|||
|
'- And then I became of no use... So - I thought... - The world will pay for this mistake...',
|
|||
|
[[pon(4)]]),
|
|||
|
[4] = _phr('What\'re you saying?',
|
|||
|
'- I worked as a professor... But I was of no use.. I... I could not stand this...',
|
|||
|
[[pon(5)]]),
|
|||
|
[5] = _phr('What a scoundrel...',
|
|||
|
'— But I will make them... Make them... I, I, I - I will live forever... Myself... Alone.',
|
|||
|
[[pon(6)]]),
|
|||
|
[6] = _phr('I think you got crazy...',
|
|||
|
'His body shakes in the corner like in chill.',
|
|||
|
[[pon(1); back()]]),
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
gudlg = dlg {
|
|||
|
nam = 'portrait man',
|
|||
|
pic = 'gfx/pman.png',
|
|||
|
enter = function(s)
|
|||
|
lifeoff('mycat');
|
|||
|
inv():del('shotgun');
|
|||
|
return [[Strange... The door is not closed... I carefully open the door and enter the room.
|
|||
|
^^Suddenly I find that a revolver barrel looks me in the face. - Bravo, bravo! Well done - says a man in an armchair - the owner of the revolver. - I was waiting for you for too long. You are that forester? Well, let's wait for guards. And now - throw your shotgun on the floor. - I cannot do anything, but obey him.]];
|
|||
|
end,
|
|||
|
dsc = [[I see that face - the face from the portraits which hang almost in all rooms of this building. The face is calm and expressing nothing. A slight smile. I need to extend the time... And I ask him:]],
|
|||
|
|
|||
|
obj = {
|
|||
|
[1] = phr('Have a talk?',
|
|||
|
'Hmm... So what can we have a talk about? What a talk may be there between me and a... a forester?',
|
|||
|
[[pon(2)]]),
|
|||
|
[2] = _phr('For example, is the Everett interpretation really true?',
|
|||
|
'- Hah hah hah!!! - the man from the portrait laughs unexpressively, - It is not, of course... This is a tale for idiots to make them believe in their own immortality... And maybe...',
|
|||
|
[[pon(3)]] ),
|
|||
|
[3] = _phr('...So, there is no scientific proof at all?',
|
|||
|
'The man stops laughing - ...And maybe... Maybe still it is true? - says the man mysteriously. - So what is true? What do YOU think?',
|
|||
|
[[pon(4)]]),
|
|||
|
[4] = _phr('I know it\'s a lie!',
|
|||
|
'Do you really know? - the empty eyes look at me - Yes or now? - Suddenly the panic knocks me down.'
|
|||
|
,[[pon(5,9)]]),
|
|||
|
[5] = _phr('IT\'S A LIE!',
|
|||
|
'And what if? Imagine, what if?... You\'re a hacker, right? You like to predict and to think ahead...',
|
|||
|
[[pon(6);poff(9)]]),
|
|||
|
|
|||
|
[6] = _phr('No! This cannot be the truth! If it is the truth - then the world is doomed! Sooner or later! Then...',
|
|||
|
'— Yes, you understand correct... Then there is only YOU!!! Listen to yourself. Who gave you this answer? Don\'t you crave it? Doesn\'t your YOU crave it? - I am falling in his abysmal sight.',
|
|||
|
[[pon(7)]]),
|
|||
|
[7] = _phr('If... If... Then why?',
|
|||
|
'— Right... Right... — says the portrait man suavely... A new wave of fear knocks me down, I fall down on the knees... The heart beats madly and tries to jump out from the chest...',
|
|||
|
|
|||
|
[[pon(8)]]),
|
|||
|
[8] = _phr('I can\'t... No...',
|
|||
|
'- And if it is all true, then you have nothing to be afraid of. - he purrs. My heart beats faster. And at last, my chest blows and the soft ball of fur repels by his paws and flies just in the face of the portrait man. A shot rings out. Sharp pain in the left shoulder sobers me and I jump on my feet and rush forward...',
|
|||
|
[[return walk('escape3')]]),
|
|||
|
[9] = _phr('Let\'s assume it is true.',
|
|||
|
'— Well... Right... Think, think... You\'re a hacker, right? — whispers the portrait man to me.',
|
|||
|
[[pon(6);poff(5)]])
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
--shkf = obj {
|
|||
|
-- nam = 'край шкафа',
|
|||
|
-- inv = 'Я держу в руках край шкафа.',
|
|||
|
--};
|
|||
|
|
|||
|
shkaf = obj {
|
|||
|
nam = 'bookcase',
|
|||
|
inv = 'I hold the corner of the bookcase with my hands.',
|
|||
|
dsc = function(s)
|
|||
|
if s._fall then
|
|||
|
return 'The door is blocked by the {bookcase}.';
|
|||
|
end
|
|||
|
return 'One {bookcase} stands beside the door.';
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if not escape3._guards or s._fall then
|
|||
|
return 'Some books on philosophy... And physics.';
|
|||
|
end
|
|||
|
inv():add('shkaf');
|
|||
|
return 'I gripped the bookcase corner tightly.';
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
fromw5 = room {
|
|||
|
nam = 'on window sill',
|
|||
|
dsc = 'I stand on the window sill. Icy wind blocks my breathing.',
|
|||
|
pic = 'gfx/fromwin2.png',
|
|||
|
enter = 'Well, I hope it\'s the last time...',
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return walk('nwall');
|
|||
|
end
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
vobj(1, 'drainpipe', 'I hardly can distinguish a {drainpipe} to the right of me.'),
|
|||
|
},
|
|||
|
way = { 'escape3' },
|
|||
|
exit = function(s, t)
|
|||
|
if t == 'escape3' then
|
|||
|
return 'I must hurry up!', false;
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
winr5 = obj {
|
|||
|
nam = 'window',
|
|||
|
dsc = function(s)
|
|||
|
if s._broken then
|
|||
|
return 'Winter wind breathes through the broken {window}.';
|
|||
|
else
|
|||
|
return 'A {window} looks to the north side.';
|
|||
|
end
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if escape3._guards then
|
|||
|
if not shkaf._fall then
|
|||
|
return 'No time to enjoy landscapes... I need to delay the guards.';
|
|||
|
end
|
|||
|
if not have('mycat') then
|
|||
|
return 'Without Barsik? It\'s better to die together!';
|
|||
|
end
|
|||
|
-- if not have('revol') then
|
|||
|
-- return 'Лучше поднять с пола пистолет, на всякий случай.';
|
|||
|
-- end
|
|||
|
if s._broken then
|
|||
|
ways():add('fromw5');
|
|||
|
return walk('fromw5');
|
|||
|
else
|
|||
|
return 'The window is closed.';
|
|||
|
end
|
|||
|
end
|
|||
|
escape3._guards = true;
|
|||
|
lifeon('escape3');
|
|||
|
return 'There is a pure darkness outside the window. I look in the dark, but then I hear the muted noise of someone\'s steps behind... The noise is coming from the hall. I guess the guards are already here! I must do something!';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if escape3._guards and not shkaf._fall then
|
|||
|
return 'No time... The guards will break in here soon...';
|
|||
|
end
|
|||
|
if w == 'shotgun' then
|
|||
|
if not s._broken then
|
|||
|
s._broken = true;
|
|||
|
return 'Again? Well... I swing my shotgun and break the glass. The pieces fly to the dark.';
|
|||
|
end
|
|||
|
return 'This window is already broken.';
|
|||
|
end
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
revol = obj {
|
|||
|
nam = 'revolver',
|
|||
|
dsc = 'The {revolver} lies on the floor.',
|
|||
|
inv = 'Six bullets.',
|
|||
|
tak = 'I take the revolver from the floor.',
|
|||
|
};
|
|||
|
|
|||
|
escape3 = room {
|
|||
|
nam = 'in the room',
|
|||
|
pic = 'gfx/manroom.png',
|
|||
|
enter = function(s, f)
|
|||
|
if f == 'gudlg' then
|
|||
|
inv():del('mycat');
|
|||
|
hall5.way:add('escape3');
|
|||
|
return 'I hear the noise of a falling gun... Then I hit someone\'s face with all my power. Again and again. Barsik runs around back and forth and anxiously meows.';
|
|||
|
end
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return walk('gudlg2');
|
|||
|
end
|
|||
|
if w == 2 then
|
|||
|
return 'Abstract art is not to my taste.';
|
|||
|
end
|
|||
|
if w == 3 then
|
|||
|
local st = '';
|
|||
|
if shkaf._fall then
|
|||
|
st = ' It is blocked by the bookcase.';
|
|||
|
end
|
|||
|
return 'The door to the hall.'..st;
|
|||
|
end
|
|||
|
end,
|
|||
|
used = function(s, w, ww)
|
|||
|
if w == 1 and ww == 'shotgun' or ww == 'revol' then
|
|||
|
return 'Yes - this is evil. But I can\'t shoot a helpless human.';
|
|||
|
end
|
|||
|
if w == 3 and ww == 'shkaf' then
|
|||
|
shkaf._fall = true;
|
|||
|
inv():del('shkaf');
|
|||
|
return 'I push the bookcase and it falls down blocking the door.';
|
|||
|
end
|
|||
|
end,
|
|||
|
dsc = [[I am in a small, but cozy room. A table is placed to the center. A fallen armchair lies near. A small chandelier brings some soft light. Two small bookcases stand along the walls.]],
|
|||
|
obj = {
|
|||
|
vobj(1, 'man', 'The {man} from the portraits sits on the floor leaning against the table. A trickle of blood comes down from his lips. He groans.'),
|
|||
|
vobj(2, 'paintings', 'The walls carry some {paintings}.'),
|
|||
|
vobj(3, 'door', 'The {door} is behind me.'),
|
|||
|
'revol',
|
|||
|
'shkaf',
|
|||
|
'shotgun',
|
|||
|
'mycat',
|
|||
|
'winr5',
|
|||
|
},
|
|||
|
life = function(s)
|
|||
|
if rnd(3) == 1 then
|
|||
|
return 'I hear shots... Bullets break through the door... I must do something...';
|
|||
|
end
|
|||
|
end,
|
|||
|
exit = function(s,t)
|
|||
|
if t == 'hall5' then
|
|||
|
if shkaf._fall then
|
|||
|
return 'The passage is blocked by the bookcase.', false;
|
|||
|
end
|
|||
|
if s._guards then
|
|||
|
return 'I\'ll be shot there...', false;
|
|||
|
end
|
|||
|
s._guards = true;
|
|||
|
lifeon('escape3');
|
|||
|
return 'I\'m going to go to the hall when suddenly the door on the opposite side opens and the guards run in. I quickly shut the door.', false;
|
|||
|
end
|
|||
|
lifeoff('escape3');
|
|||
|
end,
|
|||
|
way = {
|
|||
|
'hall5'
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
nwall = room {
|
|||
|
nam = 'north side',
|
|||
|
dsc = 'I am at the north wall of the institute building.',
|
|||
|
pic = 'gfx/nside.png',
|
|||
|
way = {'eside2','wside' },
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return 'Yes - a drainpipe... Strong enough. But I doubt I can climb it up.';
|
|||
|
end
|
|||
|
end,
|
|||
|
enter = function(s, f)
|
|||
|
if f == 'fromw5' then
|
|||
|
return 'Overcoming the pain in the left shoulder I jump of the sill and catch the drainpipe... My heart beats madly in my chest while Barsik and I fall into the winter darkness. But in the next moment I slide the drainpipe hurting my palms...';
|
|||
|
end
|
|||
|
end,
|
|||
|
obj = { vobj(1, 'drainpipe',
|
|||
|
'The {drainpipe} stretches along the east corner of the building.')},
|
|||
|
exit = function(s, t)
|
|||
|
if t == 'wside' then
|
|||
|
if not s._guards then
|
|||
|
s._guards = true;
|
|||
|
return 'I look around the corner and see the crowd of guards running out of the checkpoint and moving towards me. - There he is! - I hear them screaming... The rattle of shots makes me to step backward.',
|
|||
|
false;
|
|||
|
end
|
|||
|
return 'They will get me there...', false;
|
|||
|
end
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
eside2 = room {
|
|||
|
nam = 'behind the institute',
|
|||
|
pic = 'gfx/esidee.png',
|
|||
|
dsc = [[ I am at the back wall of the institute building. There's the railway here.]],
|
|||
|
act = function(s,w)
|
|||
|
if w == 1 then
|
|||
|
return 'The machine guns are turned to the south side of the institute perimeter. It\'s better to stay far from them.';
|
|||
|
end
|
|||
|
if w == 2 then
|
|||
|
return 'Hmm... It seems it is that train I\'ve heard about... The unloading haven\'t begun yet. But the gates are already opened.';
|
|||
|
end
|
|||
|
if w == 3 then
|
|||
|
return 'Four railroad vehicles. The type of locomotive - ChME3. The whole train fits to the institute area.';
|
|||
|
end
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
vobj(1,'gun towers', 'The railway entrance is guarded by the gun {towers}.'),
|
|||
|
vobj(3,'train', 'I distinguish a black outline of some {train}.'),
|
|||
|
vobj(2,'gates', 'The big iron {gates} in the institute wall are opened. I see the light pouring out from the doorway.'),
|
|||
|
},
|
|||
|
exit = function(s, t)
|
|||
|
if t == 'sside' then
|
|||
|
return 'The machine guns on the south side make me nervous. Too risky.',
|
|||
|
false
|
|||
|
end
|
|||
|
if t == 'nwall' and nwall._guards then
|
|||
|
return 'No way back...', 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 = 'disconnector',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return 'The VB battery {disconnector} is: ' .. st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...';
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p2 = obj {
|
|||
|
_off = true;
|
|||
|
nam = 'key',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'turned down.';
|
|||
|
if s._off then
|
|||
|
st = 'turned up.';
|
|||
|
end
|
|||
|
return 'The button switches {key} is: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'I turn the key.';
|
|||
|
end
|
|||
|
};
|
|||
|
p3 = obj {
|
|||
|
_off = true,
|
|||
|
nam = 'electro-manometer',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return '{Electro-manometer}: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if p1._off or p2._off then
|
|||
|
return 'Strange... Not working.'
|
|||
|
end
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p4 = obj {
|
|||
|
_off = false,
|
|||
|
nam = 'electro-thermometer',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return '{Electro-thermometer}: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if p1._off or p2._off then
|
|||
|
return 'Strange... Not working.'
|
|||
|
end
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p5 = obj {
|
|||
|
_off = true,
|
|||
|
nam = '2nd section pump',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return 'The 2nd section fuel {pump}: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if p1._off or p2._off then
|
|||
|
return 'Strange... Not working.'
|
|||
|
end
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p6 = obj {
|
|||
|
_off = true,
|
|||
|
nam = 'control',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return 'The {control}: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if p1._off or p2._off then
|
|||
|
return 'Strange... Not working.'
|
|||
|
end
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p7 = obj {
|
|||
|
_off = true,
|
|||
|
nam = '2nd section diesel engine start',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return 'The 2nd section diesel engine {start}: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if p3._off or p4._off or p5._off or p6._off then
|
|||
|
return 'Strange... Not working.'
|
|||
|
end
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p51 = obj {
|
|||
|
_off = true,
|
|||
|
nam = '1st section pump',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return 'The 1st section fuel {pump}: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if p1._off or p2._off then
|
|||
|
return 'Strange... Not working.'
|
|||
|
end
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p71 = obj {
|
|||
|
_off = true,
|
|||
|
nam = '1st section diesel start',
|
|||
|
dsc = function(s)
|
|||
|
local st = 'on.';
|
|||
|
if s._off then
|
|||
|
st = 'off.';
|
|||
|
end
|
|||
|
return 'The 1st section diesel engine {start}: '..st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
if p3._off or p4._off or p5._off or p6._off or p7._off then
|
|||
|
return 'Strange... Not working.'
|
|||
|
end
|
|||
|
if s._off then
|
|||
|
s._off = false;
|
|||
|
else
|
|||
|
s._off = true;
|
|||
|
end
|
|||
|
checkloc();
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p8 = obj {
|
|||
|
_num = 1,
|
|||
|
nam = 'reverser',
|
|||
|
dsc = function(s)
|
|||
|
local st;
|
|||
|
if s._num == 1 then
|
|||
|
st = 'neutral.';
|
|||
|
elseif s._num == 2 then
|
|||
|
st = 'backword.';
|
|||
|
elseif s._num == 3 then
|
|||
|
st = 'forward.';
|
|||
|
end
|
|||
|
return 'The {reverser} handle: ' .. st;
|
|||
|
end,
|
|||
|
act = function(s)
|
|||
|
s._num = s._num + 1;
|
|||
|
if s._num == 4 then
|
|||
|
s._num = 1;
|
|||
|
end
|
|||
|
return 'Switching...'
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
p9 = obj {
|
|||
|
_num = 1,
|
|||
|
nam = 'controller',
|
|||
|
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 'The {controller} handle: '..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 'Switching...'
|
|||
|
end
|
|||
|
if not p71._off and not p7._off then
|
|||
|
if p8._num == 2 then
|
|||
|
s._num = 1;
|
|||
|
return 'The locomotive trembles and starts moving backwards. I switch the controller to 0.';
|
|||
|
elseif p8._num == 3 then
|
|||
|
lifeoff('mycat');
|
|||
|
set_music('mus/liberty.s3m');
|
|||
|
return walk('theend');
|
|||
|
end
|
|||
|
end
|
|||
|
s._num = 1;
|
|||
|
return 'Nothing happens... I switch the controller to 0.';
|
|||
|
end
|
|||
|
};
|
|||
|
|
|||
|
train = room {
|
|||
|
nam = function(s)
|
|||
|
if here() == train then
|
|||
|
return 'in the locomotive';
|
|||
|
end
|
|||
|
return 'to the train';
|
|||
|
end,
|
|||
|
pic = 'gfx/cab.png',
|
|||
|
dsc = 'So, I am in the locomotive. The thick iron reliably saves me from bullets. The engineer cabin seems to be abandoned. I see lots of devices and controls.',
|
|||
|
act = function(s, w)
|
|||
|
if w == 2 then
|
|||
|
if p1._off or p2._off then
|
|||
|
return 'I pressed the horn button, but I heard nothing.';
|
|||
|
end
|
|||
|
return 'I hear a dull whistle. I am a railroad engineer!';
|
|||
|
end
|
|||
|
if w == 1 then
|
|||
|
return 'I really need to start this thing... And no gates will stop me.';
|
|||
|
end
|
|||
|
end,
|
|||
|
life = function(s)
|
|||
|
local st = '';
|
|||
|
if not p7._off or not p71._off then
|
|||
|
st = 'I feel how the locomotive trembles. The diesel engine is working. ';
|
|||
|
end
|
|||
|
if rnd(10) < 5 then
|
|||
|
st = st..'I hear bullets hitting the metal.';
|
|||
|
end
|
|||
|
return st;
|
|||
|
end,
|
|||
|
exit = function(s,t)
|
|||
|
if t == 'eside2' then
|
|||
|
return 'No... It\'s better to stay here! We will resist to the last.',
|
|||
|
false;
|
|||
|
end
|
|||
|
lifeoff('train');
|
|||
|
end,
|
|||
|
enter = function(s, f)
|
|||
|
if f == 'eside2' and not guards1._broken then
|
|||
|
return cat('Hunched over I run to the train.^^',
|
|||
|
walk('vorota')), false;
|
|||
|
end
|
|||
|
lifeon('train');
|
|||
|
set_music('mus/hispeed.s3m');
|
|||
|
return 'Hunched over I run to the train... Running past the vehicles I manage to notice the signs <<Beware! High Radiation!>>. A little bit more running and I get to the locomotive. I hear the shot sounds behind. The machine guns on the towers are turning to my direction. I open the heavy door and... I am inside!'
|
|||
|
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
'p2', 'p1', 'p4', 'p3', 'p71','p51', 'p7', 'p5', 'p9', 'p8', 'p6',
|
|||
|
vobj(2, 'horn', 'The locomotive {horn}.');
|
|||
|
vobj(1, 'window', 'I see the closed gates through the {windows}.'),
|
|||
|
},
|
|||
|
way = { 'eside2' },
|
|||
|
};
|
|||
|
|
|||
|
guards1 = obj {
|
|||
|
nam = 'guards',
|
|||
|
dsc = function(s, w)
|
|||
|
if s._broken then
|
|||
|
return 'The {guards} at the tourniquets are trying to get out from under the fallen chandelier.';
|
|||
|
end
|
|||
|
if s._shoot then
|
|||
|
return 'I see the {guards} hiding from my fire behind the tourniquets.';
|
|||
|
end
|
|||
|
return 'I see the {guards} with machine guns moving towards me through the first floor hall.';
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if s._broken then
|
|||
|
return 'It seems they are stunned...';
|
|||
|
end
|
|||
|
if s._shoot then
|
|||
|
return 'What a bastards!';
|
|||
|
end
|
|||
|
return 'It\'s amazing I am still alive...';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'shotgun' or w == 'revol' then
|
|||
|
if s._shoot then
|
|||
|
return 'It\'s useless. The guards are protected by the metal tourniquets.';
|
|||
|
end
|
|||
|
s._shoot = true;
|
|||
|
return 'I look out from the wall and shoot several times by guess.';
|
|||
|
end
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
lustra1 = obj {
|
|||
|
nam = 'chandeliers',
|
|||
|
dsc = function(s, w)
|
|||
|
if s._broken then
|
|||
|
return 'The ceiling carries one {chandelier}.';
|
|||
|
end
|
|||
|
return 'Two shiny {chandeliers} hang on the ceiling.';
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if guards1._shoot then
|
|||
|
return 'One of the chandeliers hang just above the tourniquets.';
|
|||
|
end
|
|||
|
return 'I can\'t help watching them... Perhaps, they are made of crystal?';
|
|||
|
end,
|
|||
|
used = function(s, w)
|
|||
|
if w == 'revol' then
|
|||
|
return 'I doubt this revolver brings any significant damage to the chandeliers.';
|
|||
|
end
|
|||
|
if w == 'shotgun' then
|
|||
|
shotgun._unloaded = true;
|
|||
|
s._broken = true;
|
|||
|
guards1._broken = true;
|
|||
|
lifeoff('vorota');
|
|||
|
drop('shotgun');
|
|||
|
return 'I look out from the wall and fire the shotgun. The shot sound and a loud crash hit my ears. I see one of the chandeliers breaks away the ceiling and slowly starts falling down on the screaming guards. I throw away the useless and unloaded shotgun.';
|
|||
|
end
|
|||
|
end,
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
vorota = room {
|
|||
|
nam = 'near the gates',
|
|||
|
pic = 'gfx/shooting.png',
|
|||
|
enter = function(s, f)
|
|||
|
if f == 'eside2' and not guards1._broken then
|
|||
|
lifeon('vorota');
|
|||
|
return 'Reaching the gates I hear the rattle of shots and push myself to the wall.';
|
|||
|
end
|
|||
|
end,
|
|||
|
life = function(s)
|
|||
|
if rnd(6) < 4 then
|
|||
|
return 'Shots ring out. I push myself to the wall.';
|
|||
|
end
|
|||
|
end,
|
|||
|
act = function(s, w)
|
|||
|
if w == 1 then
|
|||
|
return 'Those tourniquets which had let me inside today. Now I see them from the other side.';
|
|||
|
end
|
|||
|
end,
|
|||
|
dsc = 'I am at the opened gates. They open the way to the first floor of the institute.',
|
|||
|
obj = {
|
|||
|
vobj(1, 'tourniquets', 'I see the row of the {tourniquets}.'),
|
|||
|
'lustra1',
|
|||
|
'guards1',
|
|||
|
},
|
|||
|
exit = function(s, t)
|
|||
|
if not guards1._broken and t == 'train' then
|
|||
|
return 'I rush ahead, but the machine gun shots make me return back.',
|
|||
|
false;
|
|||
|
end
|
|||
|
end,
|
|||
|
way = { 'train', 'eside2' },
|
|||
|
};
|
|||
|
|
|||
|
theend = room {
|
|||
|
nam = 'the epilogue',
|
|||
|
pic = 'gfx/chme3.png',
|
|||
|
dsc = [[I moved the controller handle to the most forward position and the locomotive shaked and started moving ahead. I heard screams and machine gun shots started bumping the cabin walls with new power... But the train moved faster and faster. And soon there was a great clash! It was the gates which could not stand 1350 horsepowers of my train! They broke out of their hinges and were pulled several tens of meters along the railroad...^^
|
|||
|
|
|||
|
Barsik showed his face out and looked around. I petted his ears as I always did.
|
|||
|
When the bullet sound had disappeared I looked out from the window and watched the institute for the last time. It was burning like a torch. The fire had already captured the whole fifth floor. I looked in the sky... And now - almost in complete darkness - I could see millons of stars shining like dimonds.^^
|
|||
|
|
|||
|
Very soon, the fields outside were followed by taiga and I could see the friendly outlines of pines and firs changing one another in the rhythm of wheel sound. The wound in the shoulder hurted much and I felt how hard I was tired... I sat on the floor and leaned against the cold iron of the cabin. I was listening the hum of the locomotive and petting my Barsik...^^
|
|||
|
|
|||
|
Barsik looked at me with his clever eyes and purred like asking me a question. - Back home... - I answered him - We are going back home...^^
|
|||
|
|
|||
|
THE END^^
|
|||
|
|
|||
|
---^^
|
|||
|
|
|||
|
The Story and the INSTEAD Engine: ^
|
|||
|
Peter Kosyh a.k.a. gl00my // 2009^^
|
|||
|
|
|||
|
Graphics: ^
|
|||
|
Peter Kosyh, some photos are taken from open sources.^^
|
|||
|
|
|||
|
Music: ^
|
|||
|
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^^
|
|||
|
|
|||
|
Testers:^
|
|||
|
Sergey Kalichev a.k.a. Pkun^
|
|||
|
Vladimir Podobaev a.k.a. zloyvov^^
|
|||
|
|
|||
|
English Translation:^
|
|||
|
Episode 1: tkzv^
|
|||
|
Episodes 2 and 3: Vladimir Podobaev^^
|
|||
|
|
|||
|
If you like the game, the best what you can do - is to write your own history on the INSTEAD engine. :)^^
|
|||
|
|
|||
|
Acknowledgments:^
|
|||
|
To all who haven't been bothering me. :)^^
|
|||
|
]],
|
|||
|
};
|
|||
|
|