3 !============================================================================
5 Constant Story "Vengeance";
7 "^The Interactive Fiction debut of Victor Gijsbers.^
8 This work is released under the GNU General Public License, version 3 or any later version. You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.^";
10 Serial "190818"; ! for keeping track of public releases
12 !Constant MAX_SCORE = 10;
13 Constant DEATH_MENTION_UNDO;
20 !============================================================================
24 with description "UNDER CONSTRUCTION.",
29 Examine: return false;
30 default: print_ret "You don't need to worry about ", (the) self, ".";
36 Take,Pull,Push,PushDir:
37 print_ret (The) self, "is too heavy for that.";
44 !============================================================================
48 !----------------------------------------------------------------------------
49 ! *** The corridor where the game starts ***
50 !----------------------------------------------------------------------------
52 Room corridor_1 "Dark corridor"
53 with description [; if(emotions.rage == 0) {
54 print "A small, dank corridor between the fighting pits to the south and the
55 slave cells to the north. An iron gate in the eastern wall leads to the
56 rest of Lord Haran Damaskos' mansion. The corridor is built in heavy grey
57 stone, its walls unadorned but covered with lichen. You have come to dread
58 treading this place, as it invariably led to episodes of pain and death.";
59 if(self hasnt visited) {print "^^Two guards hold you by the shoulders as they
60 lead you back to your cell.";};
64 "This cramped hallway has been part of your prison for too long, the heavy
65 stone walls caging your body and oppressing your spirit. Towards the south
66 lie the fighting pits - the memories of ancient battles make you tense your
67 muscles. On the other side lie the cells where the slaves are kept like cattle.
68 A heavy iron gate in the eastern wall is all that stands between you and Haran's
74 Prop cor_1_walls "walls" corridor_1
75 with name 'wall' 'walls',
76 description [; if(emotions.rage == 0) {
77 "These walls are thick, moist and cold to the touch. The stones fit neatly,
78 ensuring that it is impossible to pry one out.";
81 "Hard and unrelenting, these walls are your cage.";
85 Attack: if(emotions.rage == 0) {
86 "Attacking the walls will surely serve no purpose. They are much too hard.";
89 if(parent(bar) == player) {
90 if (guards.dead == 0){
91 "Grinning madly at the advancing guards, you softly and repeatedly hit the walls with the
92 iron bar. The dry sounds resemble a clock ticking away the last few seconds of your
93 goalers' lives. You can see their knuckles going white as they grip their swords more
98 print "With the heavy iron bar clenched in your fists, you hit one of the lichen-covered
99 wall. The force of the impact numbs your hands, but the stones are undamaged. You must
100 escape! They can no longer keep you here! Reaching out towards the bestial strength
101 that lies at the heart of your rage, you hit the walls again and again. Each collision is
102 accompanied by the loud noise of metal on stone. The sound of shouts and running footsteps
103 coming from the cell complex barely registers as your attention is occupied by the
104 increasing pain in your arms and hands. Chips of stone start to fly around. The iron bar
105 slowly bends, then breaks into two after a particularly violent hit. At that moment four
106 guards burst into the corridor, swords drawn. Your face twisted inhumanly, you utter a cry
107 of hate that seems to tear the world itself apart. You have only one thought: ";
108 style bold; print "Kill."; style roman; "
110 Your last sensations are of sharp pain and a world turned red entire.^";
114 if (guards.attacking == 0 && guards.dead == 0) {
115 print "With a sudden jerk you free yourself from the grip of the guards. ";
117 print "You hit one of the walls hard with your bare hands. It hurts, but you do not flinch.
118 The pain makes you feel alive.";
119 if (guards.attacking == 0 && guards.dead == 0) {
120 print " With a surprised shout, the guards grab their swords and advance towards you.^";
129 Prop "stones" corridor_1
130 with name 'stone' 'stones',
131 description [; if(emotions.rage == 0) {
132 "These stones have been cut from the hardest granite. It is certainly impossible
133 to pry one of them loose.";
136 "These stones have been cut from the hardest granite. You would like to see them
137 smeared with Haran's brains.";
141 Attack: <<Attack cor_1_walls>>;
145 Prop "lichen" corridor_1
146 with name 'lichen' 'moss' 'plant' 'plants',
147 description [; if(emotions.rage == 0) {
148 "The delicate green and orange hues of the lichen remind you of an autumnal
149 forest. You used to take long hikes through the woods surrounding your father's
150 country estate, long ago, before you turned to wine and dice. The worst thing
151 about confinement in an underground dungeon is that one can never hear the wind softly
152 rustle the leaves of the ashes, never see the sun set in a sea of red and golden
153 clouds, never feel the refreshing coolness of raindrops on one's laughing face.";
156 "The lichen definitely proves that Lord Haran has no qualms about housing his
157 slaves in most unhealthy quarters. Living in the damp and cold dungeons under the
158 mansion, more than one slave died from pneumonia before he could meet a grizzly
164 Object gate "iron gate" corridor_1
165 with name 'iron' 'gate' 'fence' 'door',
168 Examine: if(self.bar_present == 0) {
169 "The heavy iron gate separates the cells and pits from the mansion proper. Two bent
170 parts of rusty metal indicate where you tore off an iron bar.";
173 "The heavy iron gate separates the cells and pits from the mansion proper. One of the
174 bars has rusted almost through. With sufficient strength, it might be torn loose.";
176 Attack, Pull: if(self.bar_present == 1) {
180 if(emotions.rage == 0) {
181 "The gate is far too strong and sturdy for you to have any chance of destroying it.";
185 "You grab the heavy iron gate with both your hands and attempt to pull it apart. Your muscles
186 bulge, sweat appears on your forehead, but the bars do not move a single inch. After a few
187 minutes, you have to admit your defeat.";
195 has scenery door lockable openable locked;
197 Object bar "iron bar" corridor_1
198 with name 'iron' 'bar' 'bars' 'pipe' 'stave' 'club' 'rod',
199 description [; if(emotions.rage == 0) {
200 "A heavy iron bar, some eighty centimetres long and weighing perhaps five kilogram.
201 The ends are rusty, and what paint once covered it fell victim to the damp long ago.";
204 "A heavy steel bar, allowing you to reach farther and hit harder than when fighting
205 with your bare fists. No skull will survive a good swing with this baby.";
209 Take, Pull, Attack: if(gate.bar_present == 1) {
210 if(emotions.rage == 0) {
212 "You grab the iron bar and pull with all your might - but it hardly budges. Your muscles feel tired and
213 weak, as they always do between fights. It is only when you enter the pits, hearing the cries of Lord Haran and his guests, that your blood starts boiling and you are filled with the power to break bones
214 and tear bodies apart. Your strength lies in your hate.
215 ^ Maybe you should go into a rage.";
219 gate.bar_present = 0;
222 "With a bloodthirsty cry, you grab the iron bar and tear it loose as if it were made of paper. You hear the guards behind you gasp. Fast as lightning you turn around.
223 ^ ~It's time to die,~ you hiss.";
233 Object guards "guards" corridor_1
234 with name 'two' 'guard' 'guards' 'man' 'men' 'keeper' 'keepers' 'goaler' 'goalers' 'Roger' 'Frank',
236 description [; if(self.attacking == 0) {
237 if (emotions.rage == 0) {
238 "The guards, Frank and Roger, are talking about their children. Apparently,
239 Roger's seven year old son is afflicted with a mysterious disease and the
240 doctors fear for his life. They are so engrossed in this subject that they
241 do not seem to be paying you very much attention. Both have a sword hanging
242 from their belt, which they can probably reach much faster than you.";
245 "Two of the cruel goalers that hold you captive. You remember vividly how one
246 of them beat a young slave who was too scared to fight to death with the side
247 of his sword. The young boy's cries of pain and despair mixed with the sickening
248 sound of cracking bones still echo in your mind.";
252 if (emotions.rage == 0) {
253 "Both men have drawn their swords and are carefully advancing towards you, neither
254 of the two eager to strike the first blow and expose himself to you. Frank
255 is a bit of a coward, always trying to intimidate the slaves with words but
256 never actually carrying out any of his threats. You expect Roger to attack first.";
259 "Your eyes are first drawn towards the glistening tips of their sharp swords, but soon
260 find their way upwards to the guards' eyes. As they look into yours and see the
261 passionate hate that courses through your being, they hold back for a moment. Their
262 eyes betray fear. You bare your teeth.";
267 Kiss: if (emotions.rage == 0) {
268 "Tenderness will not make them release you.";
271 "You are not a succubus!";
273 Give: if (emotions.rage == 0) {
274 "The guards cannot be bribed with presents.";
277 "The only present they'll receive from you is a swift death.";
279 Ask, Tell, Answer, Order: if (emotions.rage == 0) {
280 "This is not the time for conversation.";
283 "You cry in wordless rage.";
285 Show: if (emotions.rage == 1 && guards.attacking == 1) {
287 "You wave the iron bar in front of the guards, daring them to come closer.";
292 ThrowAt: if (noun == bar) {
293 "No. It would be more satisfying to hit them with it.";
296 Attack: if (emotions.rage == 0) {
297 if (parent(bar) == player) {
298 "You do not feel strong enough to kill the guards. [And if you get here, its a BUG!]";
301 "Attacking them with your bare hands is not going to work. You need a weapon first,
302 preferably a sharp or heavy one.";
306 if (guards.attacking == 0) {
308 "With a sudden jerk you free yourself from the grip of the guards. Turning to the one
309 on your left, you grab his head in both your hands and smash it against the wall as hard you can. Blood spatters all around. He struggles feebly, but you hardly feel his pounding fists against your chest as you keep hitting his head against the hard grey stones. The fourth impact is accompanied by the sound of breaking bone. The pounding stops and the body goes limp in your arms. The guard's eyes bulge out of his head in an unnatural way, like those of a surprised, dead fish. Vengeance.
311 Suddenly, you feel a sharp, breath-taking pain. Four inches of sharp steel protrude from your chest. ~You bastard, you killed Frank!~ screams the guard behind you. You open your mouth to cry out your pain, but all you can do is cough up blood. You collapse to the ground, and all goes dark.";
314 if (parent(bar) == player){
315 "[Player attacks attacking guards with iron bar. TODO]";
319 print "You can no longer restrain yourself. The two blinking silver tips of the drawn swords flicker as the eyes of a malicious beast, mocking your righteous anger. You growl, a low rumbling sound coming from the depths of your being. The beast comes closer, and suddenly you ";style bold; print "pounce"; style roman; ", your arms outstretched, your hands like claws. The eyes rise to meet you, and the world explodes. Stars fill the void, blinking, then disappearing one by one. Only darkness remains. Where is your attacker? Once more a growl escapes from your mouth, as you cast about for the object of your rage.
320 ^ But then a terrible weariness falls over you like a heavy blanket, muffling thought and emotion alike. You drift away into a deep sleep.^";
325 counter1 0, counter2 0,
327 if(self.attacking == 0){
328 switch(++self.counter1){
329 1 to 2: "^The guards are dragging you through the corridor.";
330 3 : "^The guards have already led you halfway through.";
331 4 : "^You have almost reached the cells. If you wish to escape, you must act now.";
332 default: deadflag = 3; "Tja. TODO.";
339 switch(++self.counter2){
355 has animate pluralname scenery;
357 Object sword "sword" corridor_1
358 with name 'sword' 'swords' 'Roger~s' 'Frank~s' 'guard~s' 'guards~',
369 ! -------------------------------------------------------------------------------
370 ! *** Temporary objects ***
374 Object gate_key "gatekey"
375 with description "Nog niets.";
377 Room hallway "hallway"
378 with description "Nog niets.";
386 ! ---------------------------------------------------------------------------
387 ! *** Abstract objects ***
390 with rage 0, !Zero when calm, One when raging
391 satisfied 0, !One if currently raging AND having committed violence in this rage, Zero otherwise
397 !============================================================================
398 ! The player's possessions
400 !============================================================================
401 ! Entry point routines
403 location = corridor_1;
404 lookmode = 2; ! like the VERBOSE command
405 player.description = "You are a strong, muscled man, covered with scars and
406 bruises, wearing only rags.";
408 print_ret "^Once you were quite the dandy, spending all your time and money
409 on glamour, girls and gambling. Enraged by your behaviour, your
410 father disinherited you, but you hardly cared. Life was too beautiful,
411 the girls too lovely and the cards too much fun to worry about the
412 future. But you learnt that one cannot escape society's demands as easily
413 as that, and you learnt it the hard way. More than three years ago,
414 you were seized by the Imperial Guard as you entered one of your favourite
415 gaming dens. Your creditors demanded their money, and they wanted it
416 instantly. As you could not pay and could find no rich friends or relatives
417 to pay for you, the authorities decided to sell you into slavery.
418 Unfortunately, you were bought by Lord Haran Damaskos, a man whose wealth
419 is only surpassed by his passion for watching his slaves fight to the
420 death. He thought it would be amusing to see a pampered aristocratic boy be
421 slowly dismembered by a tough Nubian slave.
423 But against all odds you survived that first fight, and continued surviving
424 for these past three years. It is no exaggeration to say that you are now
425 among the toughest of fighters. You have long lost track of the number of
426 Lord Damaskos' parties you have had to brighten by spilling the innocent blood
427 of fellow slaves to the wild cheers of the audience. Your life is a monotonous
428 string of pain, violence and death. There is no hope of escape, and only your
429 rage has kept you alive thus far.
431 At least there was no hope of escape until now. For the two guards that are
432 leading you back to your damp cell after yet another bloody fight in the pits,
433 have forgotten to tie your hands. If you can grab a likely weapon and dispose
434 of them before they lock you up again, you might be able to escape your
435 predicament. Or better yet - you might be able to exact revenge upon your master.^";
438 [ DeathMessage; print "You have failed to achieve your revenge!"; ];
440 !============================================================================
441 ! Standard and extended grammar
447 !----------------------------------------------------------------------------
448 ! *** Rage and Calm ***
451 if(emotions.rage == 0) {
453 "You release your hate and feel a wave of anger rise inside you, filling
454 you with a burning desire for violence and revenge.";
457 else { "You are already filled with burning anger, ready to lash out at the slightest
463 Verb 'rage' 'r' 'anger' 'enrage' 'mad' 'vengeful'
467 * 'in' 'rage' -> Rage
468 * 'in' 'a' 'rage' -> Rage
469 * 'into' 'rage' -> Rage
470 * 'into' 'a' 'rage' -> Rage
477 * 'vengeful' -> Rage;
483 if(emotions.rage == 1){
484 if(emotions.satisfied == 1){
486 "You close your eyes, try to control your breath and silently count to twenty.
487 Slowly the anger recedes, and you are once again in control of you violent
491 "You close your eyes, try to control your breath and silently count to twenty.
492 But the rage is far too strong, and cannot be controlled. You need to lash out
497 "You are already as serene and calm as can be reasonably expected given your
498 present circumstances.";
503 Verb 'calm' 'cool' 'relax' 'serene'
517 * 'out' 'rage' -> Calm
518 * 'out' 'of' 'rage' -> Calm;
523 !---------------------------------------------------------------------------
524 ! *** Miscellaneous ***
529 !============================================================================