aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/acci.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/avalanche/acci.cpp')
-rw-r--r--engines/avalanche/acci.cpp1956
1 files changed, 0 insertions, 1956 deletions
diff --git a/engines/avalanche/acci.cpp b/engines/avalanche/acci.cpp
deleted file mode 100644
index adaad697d4..0000000000
--- a/engines/avalanche/acci.cpp
+++ /dev/null
@@ -1,1956 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-/*
- * This code is based on the original source code of Lord Avalot d'Argent version 1.3.
- * Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman.
- */
-
-/* $D-*/
-/*
- ÛßÜ ÛßÜ ÜßßÜ ßÛß Ûßß Üß ßÛß ÜßÛßÜ ßÛß ÛÜ Û ÜÛßß ßÛß ÛßÜ Ûßß Û
- Ûß ÛÛ Û Û Ü Û Ûßß ßÜ Û Û Û Û Û Û ÛÜÛ ßßßÜ Û ÛÛ Ûßß Û
- ß ß ß ßß ßß ßßß ß ß ß ß ß ßßß ß ßß ßßß ß ß ß ßßß ßßß
-
- ACCIDENCE II The parser. */
-#define __acci_implementation__
-
-
-/*$V-*/
-
-#include "acci.h"
-
-/*#include "Gyro.h"*/
-/*#include "Lucerna.h"*/
-/*#include "Scrolls.h"*/
-/*#include "Pingo.h"*/
-/*#include "Trip5.h"*/
-/*#include "Visa.h"*/
-/*#include "Enid.h"*/
-/*#include "NimUnit.h"*/
-/*#include "Timeout.h"*/
-/*#include "Celer.h"*/
-/*#include "Highs.h"*/
-/*#include "Helper.h"*/
-/*#include "Sequence.h"*/
-
-namespace Avalanche {
-
-byte fv;
-
-string wordnum(string x);
-static char whatsit;
-static word fv;
-static boolean gotcha;
-
-static void checkword(string &x) { /* Checks word "fv". */
- {
- vocab &with = words[fv];
-
- if ((with.w == x) || ((copy(with.w, 1, length(x)) == x) && ! gotcha))
- whatsit = chr(with.n);
- if (with.w == x) gotcha = true;
- }
-}
-
-string wordnum(string x)
-
-{
- string wordnum_result;
- if (x == "") {
- wordnum_result = "";
- return wordnum_result;
- }
- whatsit = pardon;
- gotcha = false;
- for (fv = nowords; fv >= 1; fv --) checkword(x);
- wordnum_result = whatsit;
- return wordnum_result;
-}
-
-void replace(string old1, string new1) {
- byte q;
-
- q = pos(old1, thats);
- while (q != 0) {
- thats = copy(thats, 1, q - 1) + new1 + copy(thats, q + length(old1), 255);
- q = pos(old1, thats);
- }
-}
-
-/*procedure ninetydump;
-var f:file; y:integer; bit:byte; a:byte absolute $A000:800;
-begin
- off;
- assign(f,'avvydump.avd');
- rewrite(f,1);
- blockwrite(f,dna,177); { just anything }
- for bit:=0 to 3 do
- begin
- port[$3c4]:=2; port[$3ce]:=4; port[$3C5]:=1 shl bit; port[$3CF]:=bit;
- blockwrite(f,a,12080);
- end;
- close(f); on;
- display('Dumped.');
-end;*/
-
-string rank() {
- byte fv;
-
- string rank_result;
- for (fv = 1; fv <= 8; fv ++)
- if ((dna.score >= ranks[fv].score)
- && (dna.score < ranks[fv + 1].score)) {
- rank_result = ranks[fv].title;
- return rank_result;
- }
- return rank_result;
-}
-
-string totaltime() {
- const real ticks_in_1_sec = (real)(65535) / 3600;
- word h, m, s;
- varying_string<70> a;
-
- /* There are 65535 clock ticks in a second,
- 1092.25 in a minute, and
- 65535 in an hour. */
- string totaltime_result;
- h = trunc(dna.total_time / ticks_in_1_sec); /* No. of seconds. */
- m = h % 3600;
- h = h / 3600;
- s = m % 60;
- m = m / 60;
-
- a = "You've been playing for ";
-
- if (h > 0) a = a + strf(h) + " hours, ";
- if ((m > 0) || (h != 0)) a = a + strf(m) + " minutes and ";
- a = a + strf(s) + " seconds.";
-
- totaltime_result = a;
- return totaltime_result;
-}
-
-void cheatparse(string codes);
-static word num;
-static integer e;
-
-static void number(string &codes) {
- val(codes, num, e);
-}
-
-void cheatparse(string codes) {
- char cmd;
- integer se, sx, sy;
-
- if (~ cheat) {
- /* put them off the scent! */
- display("Have you gone dotty\??!");
- return;
- }
- cmd = upcase(codes[2]);
- Delete(codes, 1, 2); /* strip header */
- display("\6Ninety: \22\4");
- switch (cmd) {
- case 'R': {
- number(codes);
- if (e != 0) return;
- display(string("room swap to ") + codes + '.');
- fliproom(num, 1);
- }
- break;
- case 'Z': {
- zonk;
- display("Zonk OK!");
- }
- break;
- case 'W': {
- wobble;
- display("Ow my head!");
- }
- break;
- case 'A': {
- tr[1].done;
- tr[1].init(1, true);
- dna.user_moves_avvy = true;
- alive = true;
- display("Reincat.");
- }
- break;
- case 'B': {
- sx = tr[1].x;
- sy = tr[1].y;
- se = tr[1].face;
- delavvy;
- number(codes);
- {
- void &with = tr[1];
-
- done;
- init(num, true);
- display(string("Become ") + codes + ':' + "\r\r" + a.name + '\15' + a.comment);
- appear(sx, sy, se);
- }
- }
- break;
- /* 'D': ninetydump;*/
- case 'G':
- play_nim;
- break;
- case '±':
- display("\232\25");
- break;
- default:
- display("unknown code!");
- }
-}
-
-void punctustrip(string &x) { /* Strips punctuation from x. */
- const varying_string<32> punct = "~`!@#$%^&*()_+-={}[]:\"|;'\\,./<>?";
- byte fv, p;
-
- for (fv = 1; fv <= 32; fv ++)
- do {
- p = pos(punct[fv - 1], x);
- if (p == 0) flush(); /* <<< The first time I've ever used it! */
- Delete(x, p, 1);
- } while (!false);
-}
-
-boolean do_pronouns();
-static boolean ambiguous;
-
-static void displaywhat(char ch, boolean animate) { /* << it's an adjective! */
- byte ff;
- string z;
-
- if (ch == pardon) {
- ambiguous = true;
- if (animate) display("Whom?");
- else display("What?");
- } else {
- if (animate) display(string("{ ") + getname(ch) + " }");
- else {
- z = get_better(ch);
- if (z != "") display(string("{ ") + z + " }");
- }
- }
-}
-
-boolean do_pronouns() {
- byte fv;
-
- boolean do_pronouns_result;
- ambiguous = false;
- for (fv = 1; fv <= length(thats); fv ++)
- switch (thats[fv]) {
- case '\310': {
- displaywhat(him, true);
- thats[fv] = him;
- }
- break;
- case '\311': {
- displaywhat(her, true);
- thats[fv] = her;
- }
- break;
- case '\312': {
- displaywhat(it, false);
- thats[fv] = it;
- }
- break;
- }
- do_pronouns_result = ambiguous;
- return do_pronouns_result;
-}
-
-void store_interrogation(byte interrogation);
-
-
-static void lowercase() {
- byte fv;
-
- for (fv = 1; fv <= length(current); fv ++)
- if (set::of(range('A', 'Z'), eos).has(current[fv]))
- current[fv] += 32;
-}
-
-
-
-static void propernouns() {
- byte fv;
-
- lowercase();
- for (fv = 2; fv <= length(current) - 1; fv ++)
- if (current[fv] == ' ')
- current[fv + 1] = upcase(current[fv + 1]);
- current[1] = upcase(current[1]);
-}
-
-
-
-static void sayit() { /* This makes Avalot say the response. */
- string x;
-
- x = current;
- x[1] = upcase(x[1]);
- display(string("\231") + x + '.' + '\2' + '\23' + '2');
-}
-
-void store_interrogation(byte interrogation) {
- byte fv;
-
-
- if (current == "") return;
-
- /* Strip current: */
- while ((current[1] == ' ') && (current != "")) Delete(current, 1, 1);
- while ((current[length(current)] == ' ') && (current != "")) current[0] -= 1;
-
- lose_timer(reason_cardiffsurvey); /* if you want to use any other timer,
- put this into the case statement. */
- switch (interrogation) {
- case 1: {
- lowercase();
- sayit();
- like2drink = current;
- dna.cardiff_things = 2;
- }
- break;
- case 2: {
- propernouns();
- sayit();
- favourite_song = current;
- dna.cardiff_things = 3;
- }
- break;
- case 3: {
- propernouns();
- sayit();
- worst_place_on_earth = current;
- dna.cardiff_things = 4;
- }
- break;
- case 4: {
- lowercase();
- sayit();
- fillchar(spare_evening, sizeof(spare_evening), '\261');
- spare_evening = current;
- dixi('z', 5); /* His closing statement... */
- tr[2].walkto(4); /* The end of the drawbridge */
- tr[2].vanishifstill = true; /* Then go away! */
- magics[2].op = nix;
- dna.cardiff_things = 5;
- }
- break;
-
- case 99:
- store_high(current);
- break;
- }
- if (interrogation < 4) cardiff_survey;
-}
-
-void clearwords() {
- fillchar(realwords, sizeof(realwords), '\0');
-}
-
-void parse() {
- byte n, fv, ff;
- string c, cc, thisword;
- varying_string<1> answer;
- boolean notfound;
-
- /* first parsing - word identification */
-
- thats = "";
- c = current + '\40';
- n = 1;
- polite = false;
- verb = pardon;
- thing = pardon;
- thing2 = pardon;
- person = pardon;
- clearwords();
- if (current[1] == '.') {
- /* a cheat mode attempt */
- cheatparse(current);
- thats = nowt;
- return;
- } /* not our department! Otherwise... */
-
- /* Are we being interrogated right now? */
-
- if (interrogation > 0) {
- store_interrogation(interrogation);
- weirdword = true;
- return;
- }
-
- cc = c;
- for (fv = 1; fv <= length(c); fv ++) c[fv] = upcase(c[fv]);
- while (c != "") {
- while ((c[1] == '\40') && (c != "")) {
- Delete(c, 1, 1);
- Delete(cc, 1, 1);
- }
- thisword = copy(c, 1, pos("\40", c) - 1);
- realwords[n] = copy(cc, 1, pos("\40", cc) - 1);
- punctustrip(c);
-
- notfound = true;
-
- if (thisword != "") {
- for (ff = 1; ff <= 30; ff ++) {
- /* Check Also, FIRST! */
- if (pos(string(',') + thisword, also[ff][0]) > 0) {
- thats = thats + chr(99 + ff);
- notfound = false;
- }
- }
- }
-
- if (notfound) {
- answer = wordnum(thisword);
- if (answer == pardon) {
- notfound = true;
- thats = thats + pardon;
- } else
- thats = thats + wordnum(thisword);
- n += 1;
- }
- Delete(c, 1, pos("\40", c));
- Delete(cc, 1, pos("\40", cc));
- }
-
- if (pos("\376", thats) > 0) unknown = realwords[pos("\376", thats)];
- else unknown = "";
- replace("\377", ""); /* zap noise words */
- replace(string('\15') + '\342', "\1"); /* "look at" = "examine" */
- replace(string('\15') + '\344', "\1"); /* "look in" = "examine" */
- replace(string('\4') + '\343', "\21"); /* "get up" = "stand" */
- replace(string('\4') + '\347', "\21"); /* "get down" = "stand"... well, why not? */
- replace(string('\22') + '\344', "\2"); /* "go in" = "open [door]" */
- replace(string('\34') + '\345', "\375"); /* "P' off" is a swear word */
- replace(string('\4') + '\6', "\6"); /* "Take inventory" (remember Colossal Adventure?) */
- replace(string('\50') + '\350', "\25"); /* "put on" = "don" */
- replace(string('\4') + '\345', "\24"); /* "take off" = "doff" */
-
- /* Words that could mean more than one person */
- {
- if (room == r__nottspub) replace("\314", "\244"); /* Barman = Port */
- else replace("\314", "\232"); /* Barman = Malagauche */
- switch (room) {
- case r__aylesoffice:
- replace("\313", "\243");
- break; /* Monk = Ayles */
- case r__musicroom:
- replace("\313", "\246");
- break; /* Monk = Jacques */
- default:
- replace("\313", "\242"); /* Monk = Ibythneth */
- }
- }
-
- if (do_pronouns()) {
- weirdword = true;
- thats = nowt;
- return;
- }
-
- /* second parsing - accidence */
-
- subject = "";
- subjnumber = 0; /* Find subject of conversation. */
- for (fv = 1; fv <= 11; fv ++)
- if (set::of('`', '\'', eos).has(realwords[fv][1])) {
- subjnumber = ord(thats[fv]);
- thats[fv] = moved;
- flush(); /* Only the second time I've used that! */
- }
- if (subjnumber == 0) /* Still not found. */
- for (fv = 1; fv <= 10; fv ++)
- if (thats[fv] == '\374') { /* the word is "about", or something similar */
- subjnumber = ord(thats[fv + 1]);
- thats[fv + 1] = '\0';
- flush(); /* ...Third! */
- }
- if (subjnumber == 0) /* STILL not found! Must be the word after "say". */
- for (fv = 1; fv <= 10; fv ++)
- if ((thats[fv] == '\7') && !(set::of('\0', range('\341', '\345'), eos).has(thats[fv + 1]))) {
- /* SAY not followed by a preposition */
- subjnumber = ord(thats[fv + 1]);
- thats[fv + 1] = '\0';
- flush(); /* ...Fourth! */
- }
-
- for (fv = length(thats); fv >= 1; fv --) /* Reverse order- so first'll be used */
- switch (thats[fv]) {
- case '\1' ... '\61':
- case '\375':
- case '\371':
- verb = thats[fv];
- break;
- case '\62' ... '\225': {
- thing2 = thing;
- thing = thats[fv];
- }
- break;
- case '\226' ... '\307':
- person = thats[fv];
- break;
- case '\373':
- polite = true;
- break;
- }
-
- if ((unknown != "") && !
- (set::of(vb_exam, vb_talk, vb_save, vb_load, vb_dir, eos).has(verb))) {
- display(string("Sorry, but I have no idea what `") + unknown +
- "\" means. Can you rephrase it?");
- weirdword = true;
- } else weirdword = false;
- if (thats == "") thats = nowt;
-
- if (thing != pardon) it = thing;
- if (person != pardon) {
- if (person < '\257') him = person;
- else her = person;
- }
-}
-
-void examobj() { /* Examine a standard object-thing */
- if (thing != thinks) thinkabout(thing, a_thing);
- switch (thing) {
- case wine :
- switch (winestate) {
- /* 4 is perfect wine. 0 is not holding the wine. */
- case 1:
- dixi('t', 1);
- break; /* Normal examine wine scroll */
- case 2:
- dixi('d', 6);
- break; /* Bad wine */
- case 3:
- dixi('d', 7);
- break; /* Vinegar */
- }
- break;
- case onion:
- if (rotten_onion)
- dixi('q', 21); /* Yucky onion. */
- else
- dixi('t', 18);
- break; /* Normal onion scroll */
- default:
- dixi('t', ord(thing)); /* <<< Ordinarily */
- }
-}
-
-boolean personshere() { /* Person equivalent of "holding" */
- boolean personshere_result;
- if ((person == pardon) || (person == '\0')
- || (whereis[person] == dna.room)) personshere_result = true;
- else {
- if (person < '\257') display("H\4");
- else display("Sh\4");
- display("e isn't around at the moment.");
- personshere_result = false;
- }
- return personshere_result;
-}
-
-void exampers() {
- if (personshere()) {
- if (thing != thinks) thinkabout(person, a_person);
- person -= 149;
- switch (person) { /* Special cases */
- case '\13':
- if (wonnim) {
- dixi('Q', 8); /* "I'm Not Playing!" */
- return;
- }
- break;
- case '\11':
- if (lustie_is_asleep) {
- dixi('Q', 65); /* He's asleep. (65! Wow!) */ return;
- }
- break;
- }
- /* Otherwise... */ dixi('p', ord(person));
- } /* And afterwards... */
- switch (person) {
- case '\16':
- if (~ dna.ayles_is_awake) dixi('Q', 13);
- break; /* u.f.s.? */
- }
-}
-
-boolean holding() {
- boolean holding_result;
- if (set::of(range('\63', '\143'), eos).has(thing)) {
- holding_result = true; /* Also */
- return holding_result;
- }
- holding_result = false;
- if (thing > '\144') display("Be reasonable!");
- else if (~ dna.obj[thing]) /* verbs that need "thing" to be in the inventory */
- display("You're not holding it, Avvy.");
- else
- holding_result = true;
- return holding_result;
-}
-
-void examine();
-
-static void special(boolean before) {
- switch (dna.room) {
- case r__yours:
- switch (thing) {
- case '\66':
- if (before) show_one(5);
- else show_one(6);
- break;
- }
- break;
- }
-}
-
-void examine() {
- /* Examine. EITHER it's an object OR it's an Also OR it's a person OR
- it's something else. */
- if ((person == pardon) && (thing != pardon)) {
- if (holding())
- switch (thing) { /* remember it's been Slipped- ie subtract 49 */
- case '\1' ... '\61' :
- examobj();
- break; /* Standard object */
- case '\62' ... '\144' : {
- special(true);
- display(also[ord(thing) - 50][1]); /* Also thing */
- special(false);
- }
- break;
- }
- } else if (person != pardon) exampers();
- else display("It's just as it looks on the picture."); /* don't know- guess */
-}
-
-void inv() { /* the time-honoured command... */
- char fv;
- byte q;
-
- q = 0;
- display(string("You're carrying ") + '\4');
- {
- for (fv = '\1'; fv <= numobjs; fv ++)
- if (obj[fv]) {
- q += 1;
- if (q == carrying) display(string("and ") + '\4');
- display(get_better(fv) + '\4');
- if (fv == wearing) display(string(", which you're wearing") + '\4');
- if (q < carrying) display(string(", ") + '\4');
- }
- if (wearing == nowt) display("...\r\r...and you're stark naked!");
- else
- display('.');
- }
-}
-
-void swallow() { /* Eat something. */
- switch (thing) {
- case wine:
- switch (dna.winestate) {
- /* 4 is perfect */
- case 1: {
- if (dna.teetotal) {
- dixi('D', 6);
- return;
- }
- dixi('U', 1);
- wobble;
- dixi('U', 2);
- dna.obj[wine] = false;
- objectlist;
- have_a_drink();
- }
- break;
- case 2:
- case 3:
- dixi('d', 8);
- break; /* You can't drink it! */
- }
- break;
- case potion: {
- background(4);
- dixi('U', 3);
- gameover;
- background(0);
- }
- break;
- case ink:
- dixi('U', 4);
- break;
- case chastity:
- dixi('U', 5);
- break;
- case mushroom: {
- dixi('U', 6);
- gameover;
- }
- break;
- case onion:
- if (dna.rotten_onion) dixi('U', 11);
- else {
- dixi('U', 8);
- dna.obj[onion] = false;
- objectlist;
- }
- break;
- default:
- if (set::of(r__argentpub, r__nottspub, eos).has(dna.room))
- display("Try BUYing things before you drink them!");
- else
- display("The taste of it makes you retch!");
- /* Constant- leave this one */
- }
-}
-
-void others()
-/* This lists the other people in the room. */
-{
- char fv;
- byte num_people, this_person, here;
-
-
- num_people = 0;
- this_person = 0;
- here = dna.room;
-
- for (fv = '\227'; fv <= '\262'; fv ++) /* Start at 151 so we don't list Avvy himself! */
- if (whereis[fv] == here)
- num_people += 1;
-
- /* If nobody's here, we can cut out straight away. */
-
- if (num_people == 0) return; /* Leave the procedure. */
-
- for (fv = '\227'; fv <= '\262'; fv ++)
- if (whereis[fv] == here) {
- this_person += 1;
- if (this_person == 1) /* First on the list. */
- display(getname(fv) + '\4');
- else if (this_person < num_people) /* The middle... */
- display(string(", ") + getname(fv) + '\4');
- else
- display(string(" and ") + getname(fv) + '\4'); /* The end. */
- }
-
- if (num_people == 1) display(" is\4");
- else display(" are\4");
-
- display(" here."); /* End and display it. */
-}
-
-void lookaround()
-/* This is called when you say "look." */
-{
- display(also[0][1]);
- switch (dna.room) {
- case r__spludwicks:
- if (dna.avaricius_talk > 0) dixi('q', 23);
- else others();
- break;
- case r__robins: {
- if (dna.tied_up) dixi('q', 38);
- if (dna.mushroom_growing) dixi('q', 55);
- }
- break;
- case r__insidecardiffcastle:
- if (~ dna.taken_pen) dixi('q', 49);
- break;
- case r__lustiesroom:
- if (dna.lustie_is_asleep) dixi('q', 65);
- break;
- case r__catacombs:
- switch (dna.cat_y * 256 + dna.cat_x) {
- case 258 :
- dixi('q', 80);
- break; /* Inside art gallery */
- case 514 :
- dixi('q', 81);
- break; /* Outside ditto */
- case 260 :
- dixi('q', 82);
- break; /* Outside Geida's room. */
- }
- break;
- default:
- others();
- }
-}
-
-void opendoor() { /* so whaddya THINK this does?! */
- byte fv;
-
- switch (dna.room) { /* Special cases. */
- case r__yours:
- if (infield(2)) {
- /* Opening the box. */
- thing = '\66'; /* The box. */ person = pardon;
- examine();
- return;
- }
- break;
- case r__spludwicks:
- if (thing == '\75') {
- dixi('q', 85);
- return;
- }
- break;
- }
-
-
- if ((~ dna.user_moves_avvy) & (dna.room != r__lusties))
- return; /* No doors can open if you can't move Avvy. */
- for (fv = 9; fv <= 15; fv ++)
- if (infield(fv)) {
- {
- void &with = portals[fv];
- switch (op) {
- case exclaim: {
- tr[1].bounce;
- dixi('x', data);
- }
- break;
- case transport:
- fliproom(hi(data), lo(data));
- break;
- case unfinished: {
- tr[1].bounce;
- display("\7Sorry.\3\rThis place is not available yet!");
- }
- break;
- case special:
- call_special(data);
- break;
- case mopendoor:
- open_the_door(hi(data), lo(data), fv);
- break;
- }
- }
- return;
- }
- if (dna.room == r__map)
- display(string("Avvy, you can complete the whole game without ever going ") +
- "to anywhere other than Argent, Birmingham, Cardiff, " +
- "Nottingham and Norwich.");
- else display("Door? What door?");
-}
-
-void putproc();
-
-
-static void silly() {
- display("Don't be silly!");
-}
-
-void putproc() { /* Called when you call vb_put. */
- char temp;
-
-
- if (! holding()) return;
- thing2 -= 49; /* Slip the second object */
- temp = thing;
- thing = thing2;
- if (! holding()) return;
- thing = temp;
-
- /* Thing is the thing which you're putting in. Thing2 is where you're
- putting it. */
- /* Convenience thing. */
- switch (thing2) {
- case wine:
- if (thing == onion) {
- if (dna.rotten_onion)
- display(string("That's a bit like shutting the stable door after the ") +
- "horse has bolted!");
- else { /* Put onion into wine? */
- if (dna.winestate != 3)
- display("\6Oignon au vin\22 is a bit too strong for your tastes!");
- else { /* Put onion into vinegar! Yes! */
- onion_in_vinegar = true;
- points(7);
- dixi('u', 9);
- }
- }
- } else silly();
- break;
-
- case '\66':
- if (room == 1) { /* Put something into the box. */
- if (box_contents != nowt)
- display(string("There's something in the box already, Avvy. Try taking") +
- " that out first.");
- else
- switch (thing) {
- case money:
- display("You'd better keep some ready cash on you!");
- break;
- case bell:
- display("That's a silly place to keep a bell.");
- break;
- case bodkin:
- display("But you might need it!");
- break;
- case onion:
- display("Just give it to Spludwick, Avvy!");
- break;
- default: {
- /* Put the object into the box... */
- if (wearing == thing)
- display(string("You'd better take ") + get_better(thing) + " off first!");
- else {
- show_one(5); /* Open box. */
- box_contents = thing;
- dna.obj[thing] = false;
- objectlist;
- display("OK, it's in the box.");
- show_one(6); /* Shut box. */
- }
- }
- }
- } else silly();
- break;
-
- default:
- silly();
- }
-}
-
-boolean give2spludwick();
-
-/* The result of this fn is whether or not he says "Hey, thanks!" */
-static void not_in_order() {
- display(string("Sorry, I need the ingredients in the right order for this potion.") +
- " What I need next is " +
- get_better(spludwick_order[dna.given2spludwick]) + ".\232\2");
-}
-
-
-
-static void go_to_cauldron() {
- tr[2].call_eachstep = false; /* Stops Geida_Procs. */
- set_up_timer(1, procspludwick_goes_to_cauldron, reason_spludwalk);
- tr[2].walkto(2);
-}
-
-boolean give2spludwick()
-
-{
- boolean give2spludwick_result;
- {
-
- give2spludwick_result = false;
-
- if (spludwick_order[given2spludwick] != thing) {
- not_in_order();
- return give2spludwick_result;
- }
-
- switch (thing) {
- case onion: {
- obj[onion] = false;
- if (rotten_onion)
- dixi('q', 22);
- else {
- given2spludwick += 1;
- dixi('q', 20);
- go_to_cauldron();
- points(3);
- }
- objectlist;
- }
- break;
- case ink: {
- obj[ink] = false;
- objectlist;
- given2spludwick += 1;
- dixi('q', 24);
- go_to_cauldron();
- points(3);
- }
- break;
- case mushroom: {
- obj[mushroom] = false;
- dixi('q', 25);
- points(5);
- given2spludwick += 1;
- go_to_cauldron();
- obj[potion] = true;
- objectlist;
- }
- break;
- default:
- give2spludwick_result = true;
- }
- }
- return give2spludwick_result;
-}
-
-void have_a_drink() {
- {
- alcohol += 1;
- if (alcohol == 5) {
- obj[key] = true; /* Get the key. */
- teetotal = true;
- avvy_is_awake = false;
- avvy_in_bed = true;
- objectlist;
- dusk;
- hang_around_for_a_while;
- fliproom(1, 1);
- background(14);
- new_game_for_trippancy; /* Not really */
- }
- }
-}
-
-void cardiff_climbing() {
- if (dna.standing_on_dais) {
- /* Clamber up. */
- display("You climb down, back onto the floor.");
- dna.standing_on_dais = false;
- apped(1, 3);
- } else {
- /* Clamber down. */
- if (infield(1)) {
- display("You clamber up onto the dais.");
- dna.standing_on_dais = true;
- apped(1, 2);
- } else
- display("Get a bit closer, Avvy.");
- }
-}
-
-void stand_up();
-
-/* Called when you ask Avvy to stand. */
-static void already() {
- display("You're already standing!");
-}
-
-void stand_up() {
- switch (dna.room) {
- case r__yours: /* Avvy isn't asleep. */
- if (avvy_in_bed) { /* But he's in bed. */
- if (teetotal) {
- dixi('d', 12);
- background(0);
- dixi('d', 14);
- }
- tr[1].visible = true;
- user_moves_avvy = true;
- apped(1, 2);
- dna.rw = left;
- show_one(4); /* Picture of empty pillow. */
- points(1);
- avvy_in_bed = false;
- lose_timer(reason_arkata_shouts);
- } else already();
- break;
-
- case r__insidecardiffcastle:
- cardiff_climbing();
- break;
-
- case r__nottspub:
- if (sitting_in_pub) {
- show_one(4); /* Not sitting down. */
- tr[1].visible = true; /* But standing up. */
- apped(1, 4); /* And walking away. */
- sitting_in_pub = false; /* Really not sitting down. */
- user_moves_avvy = true; /* And ambulant. */
- } else already();
- break;
- default:
- already();
- }
-}
-
-void getproc(char thing) {
- switch (room) {
- case r__yours:
- if (infield(2)) {
- if (box_contents == thing) {
- show_one(5);
- display("OK, I've got it.");
- obj[thing] = true;
- objectlist;
- box_contents = nowt;
- show_one(6);
- } else
- display(string("I can't see ") + get_better(thing) + " in the box.");
- } else dixi('q', 57);
- break;
- case r__insidecardiffcastle:
- switch (thing) {
- case pen: {
- if (infield(2)) {
- /* Standing on the dais. */
-
- if (dna.taken_pen)
- display("It's not there, Avvy.");
- else {
- /* OK: we're taking the pen, and it's there. */
- show_one(4); /* No pen there now. */
- call_special(3); /* Zap! */
- dna.taken_pen = true;
- dna.obj[pen] = true;
- objectlist;
- display("Taken.");
- }
- } else if (dna.standing_on_dais) dixi('q', 53);
- else dixi('q', 51);
- }
- break;
- case bolt:
- dixi('q', 52);
- break;
- default:
- dixi('q', 57);
- }
- break;
- case r__robins:
- if ((thing == mushroom) & (infield(1)) & (dna.mushroom_growing)) {
- show_one(3);
- display("Got it!");
- dna.mushroom_growing = false;
- dna.taken_mushroom = true;
- dna.obj[mushroom] = true;
- objectlist;
- points(3);
- } else dixi('q', 57);
- break;
- default:
- dixi('q', 57);
- }
-}
-
-void give_geida_the_lute() {
- {
- if (room != r__lustiesroom) {
- display("Not yet. Try later!\232\2");
- return;
- }
- dna.obj[lute] = false;
- objectlist;
- dixi('q', 64); /* She plays it. */
-
- /* And the rest has been moved to Timeout... under give_lute_to_Geida. */
-
- set_up_timer(1, procgive_lute_to_geida, reason_geida_sings);
- back_to_bootstrap(4);
- }
-}
-
-void play_harp() {
- if (infield(7))
- musical_scroll;
- else display("Get a bit closer to it, Avvy!");
-}
-
-void winsequence() {
- dixi('q', 78);
- first_show(7);
- then_show(8);
- then_show(9);
- start_to_close;
- set_up_timer(30, procwinning, reason_winning);
-}
-
-void person_speaks() {
- boolean found;
- byte fv;
- char cfv;
-
-
- if ((person == pardon) || (person == '\0')) {
- if ((him == pardon) || (whereis[him] != dna.room)) person = her;
- else person = him;
- }
-
- if (whereis[person] != dna.room) {
- display("\231\4"); /* Avvy himself! */
- return;
- }
-
- found = false; /* The person we're looking for's code is in Person. */
-
- for (fv = 1; fv <= numtr; fv ++)
- if (tr[fv].quick & (chr(tr[fv].a.accinum + 149) == person)) {
- display(string('\23') + chr(fv + 48) + '\4');
- found = true;
- }
-
- if (! found)
- for (fv = 10; fv <= 25; fv ++) {
- void &with = quasipeds[fv];
- if ((who == person) && (room == dna.room)) {
- display(string('\23') + chr(fv + 55) + '\4');
- }
- }
-}
-
-void do_that();
-
-static void heythanks() {
- person_speaks();
- display("Hey, thanks!\2(But now, you've lost it!)");
- dna.obj[thing] = false;
-}
-
-void do_that() {
- const array < '\63', '\72', varying_string<6> > booze = {{"Bitter", "GIED", "Whisky", "Cider", "", "", "", "Mead"}};
- byte fv, ff;
- integer sx, sy;
- boolean ok;
-
-
- if (thats == nowt) {
- thats = "";
- return;
- }
- if (weirdword) return;
- if (thing < '\310') thing -= 49; /* "Slip" */
-
- if ((~ alive) &
- !(set::of(vb_load, vb_save, vb_quit, vb_info, vb_help, vb_larrypass,
- vb_phaon, vb_boss, vb_cheat, vb_restart, vb_dir, vb_score,
- vb_highscores, vb_smartalec, eos).has(verb))) {
- display(string("You're dead, so don't talk. What are you, a ghost ") +
- "or something? Try restarting, or restoring a saved game!");
- return;
- }
-
- if ((~ dna.avvy_is_awake) &
- !(set::of(vb_load, vb_save, vb_quit, vb_info, vb_help, vb_larrypass,
- vb_phaon, vb_boss, vb_cheat, vb_restart, vb_dir, vb_die, vb_score,
- vb_highscores, vb_smartalec, vb_expletive, vb_wake, eos).has(verb))) {
- display("Talking in your sleep? Try waking up!");
- return;
- }
-
-
- switch (verb) {
- case vb_exam:
- examine();
- break;
- case vb_open:
- opendoor();
- break;
- case vb_pause:
- display(string("Game paused.") + '\3' + '\15' + '\15' + "Press Enter, Esc, or click " +
- "the mouse on the `O.K.\" box to continue.");
- break;
- case vb_get: {
- if (thing != pardon) {
- /* Legitimate try to pick something up. */
- if (dna.carrying >= maxobjs) display("You can't carry any more!");
- else getproc(thing);
-
- } else {
- /* Not... ditto. */
- if (person != pardon)
- display("You can't sweep folk off their feet!");
- else
- display("I assure you, you don't need it.");
- }
- }
- break;
- case vb_drop:
- display(string("Two years ago you dropped a florin in the street. Three days ") +
- "later it was gone! So now you never leave ANYTHING lying around. OK?");
- break;
- /* begin dna.obj[thing]:=false; objectlist; end;*/
- case vb_inv:
- inv();
- break;
- case vb_talk:
- if (person == pardon) {
- if (subjnumber == 99) /* They typed "say password". */
- display("Yes, but what \6is\22 the password?");
- else if (set::of(range(1, 49), 253, 249, eos).has(subjnumber)) {
- Delete(thats, 1, 1);
- move(realwords[2], realwords[1], sizeof(realwords) - sizeof(realwords[1]));
- verb = chr(subjnumber);
- do_that();
- return;
- } else {
- person = chr(subjnumber);
- subjnumber = 0;
- if (set::of(pardon, '\0', eos).has(person)) display("Talk to whom?");
- else if (personshere()) talkto(ord(person));
- }
- } else if (person == pardon) display("Talk to whom?");
- else if (personshere()) talkto(ord(person));
- break;
-
- case vb_give:
- if (holding()) {
- if (person == pardon) display("Give to whom?");
- else if (personshere()) {
- switch (thing) {
- case money :
- display("You can't bring yourself to give away your moneybag.");
- break;
- case bodkin:
- case bell:
- case clothes:
- case habit :
- display("Don't give it away, it might be useful!");
- break;
- default:
- switch (person) {
- case pcrapulus:
- switch (thing) {
- case wine: {
- display("Crapulus grabs the wine and gulps it down.");
- dna.obj[wine] = false;
- }
- break;
- default:
- heythanks();
- }
- break;
- case pcwytalot:
- if (set::of(crossbow, bolt, eos).has(thing))
- display(string("You might be able to influence ") +
- "Cwytalot more if you used it!");
- else heythanks();
- break;
- case pspludwick:
- if (give2spludwick()) heythanks();
- break;
- case pibythneth:
- if (thing == badge) {
- dixi('q', 32); /* Thanks! Wow! */
- points(3);
- dna.obj[badge] = false;
- dna.obj[habit] = true;
- dna.givenbadgetoiby = true;
- show_one(8);
- show_one(9);
- } else heythanks();
- break;
- case payles:
- if (dna.ayles_is_awake) {
- if (thing == pen) {
- dna.obj[pen] = false;
- dixi('q', 54);
- dna.obj[ink] = true;
- dna.given_pen_to_ayles = true;
- objectlist;
- points(2);
- } else heythanks();
- } else
- display("But he's asleep!");
- break;
- case pgeida:
- switch (thing) {
- case potion : {
- dna.obj[potion] = false;
- dixi('u', 16); /* She drinks it. */
- points(2);
- dna.geida_given_potion = true;
- objectlist;
- }
- break;
- case lute:
- give_geida_the_lute();
- break;
- default:
- heythanks();
- }
- break;
- case parkata:
- switch (thing) {
- case potion:
- if (dna.geida_given_potion)
- winsequence();
- else dixi('q', 77);
- break; /* That Geida woman! */
- default:
- heythanks();
- }
- break;
- default:
- heythanks();
- }
- }
- }
- objectlist; /* Just in case... */
- }
- break;
-
- case vb_eat:
- case vb_drink:
- if (holding()) swallow();
- break;
- case vb_load:
- edna_load(realwords[2]);
- break;
- case vb_save:
- if (alive) edna_save(realwords[2]);
- else display("It's a bit late now to save your game!");
- break;
- case vb_pay:
- display("No money need change hands.");
- break;
- case vb_look:
- lookaround();
- break;
- case vb_break:
- display("Vandalism is prohibited within this game!");
- break;
- case vb_quit: { /* quit */
- if (demo) {
- dixi('q', 31);
- close(demofile);
- exit(0); /* Change this later!!! */
- }
- if (! polite) display("How about a `please\", Avvy?");
- else if (ask("\23C\26Do you really want to quit?")) lmo = true;
- }
- break;
- case vb_go:
- display("Just use the arrow keys to walk there.");
- break;
- case vb_info: {
- aboutscroll = true;
- /* display('Thorsoft of Letchworth presents:'+^c+^m+^m+
- 'The medi‘val descendant of'+^m+
- 'Denarius Avaricius Sextus'+^m+'in:'+
- ^m+^m+'LORD AVALOT D''ARGENT'+
- ^m+'version '+vernum+^m+^m+'Copyright ï '
- +copyright+', Mark, Mike and Thomas Thurman.');*/
- display(string("\r\r\r\r\r\r\r") + "LORD AVALOT D'ARGENT" + "\3\r" +
- "The medi‘val descendant of" + '\15' +
- "Denarius Avaricius Sextus" +
- '\15' + '\15' + "version " + vernum + '\15' + '\15' + "Copyright ï "
- + copyright + ", Mark, Mike and Thomas Thurman." + '\23' + 'Y' + '\26');
- aboutscroll = false;
- }
- break;
- case vb_undress:
- if (dna.wearing == nowt) display("You're already stark naked!");
- else if (dna.avvys_in_the_cupboard) {
- display(string("You take off ") + get_better(dna.wearing) + '.');
- dna.wearing = nowt;
- objectlist;
- } else
- display("Hadn't you better find somewhere more private, Avvy?");
- break;
- case vb_wear:
- if (holding()) {
- /* wear something */
- switch (thing) {
- case chastity:
- display("Hey, what kind of a weirdo are you\??!");
- break;
- case clothes:
- case habit: { /* Change this! */
- if (dna.wearing != nowt) {
- if (dna.wearing == thing)
- display("You're already wearing that.");
- else
- display(string("You'll be rather warm wearing two ") +
- "sets of clothes!");
- return;
- } else
- dna.wearing = thing;
- objectlist;
- if (thing == habit) fv = 3;
- else fv = 0;
- {
- void &with = tr[1];
- if (whichsprite != fv) {
- sx = tr[1].x;
- sy = tr[1].y;
- done;
- init(fv, true);
- appear(sx, sy, left);
- tr[1].visible = false;
- }
- }
- }
- break;
- default:
- display(what);
- }
- }
- break;
- case vb_play:
- if (thing == pardon)
- switch (dna.room) { /* They just typed "play"... */
- case r__argentpub:
- play_nim;
- break; /* ...in the pub, => play Nim. */
- case r__musicroom:
- play_harp();
- break;
- }
- else if (holding()) {
- switch (thing) {
- case lute : {
- dixi('U', 7);
- if (whereis[pcwytalot] == dna.room) dixi('U', 10);
- if (whereis[pdulustie] == dna.room) dixi('U', 15);
- }
- break;
- case '\64' :
- if (dna.room == r__musicroom) play_harp();
- else display(what);
- break;
- case '\67' :
- if (dna.room == r__argentpub) play_nim;
- else display(what);
- break;
- default:
- display(what);
- }
- }
- break;
- case vb_ring:
- if (holding()) {
- if (thing == bell) {
- display("Ding, dong, ding, dong, ding, dong, ding, dong...");
- if ((dna.ringing_bells) & (flagset('B')))
- display("(Are you trying to join in, Avvy\?\?!)");
- } else display(what);
- }
- break;
- case vb_help:
- boot_help;
- break;
- case vb_larrypass:
- display("Wrong game!");
- break;
- case vb_phaon:
- display("Hello, Phaon!");
- break;
- case vb_boss:
- bosskey;
- break;
- case vb_pee:
- if (flagset('P')) {
- display("Hmm, I don't think anyone will notice...");
- set_up_timer(4, procurinate, reason_gototoilet);
- } else display("It would be \6VERY\22 unwise to do that here, Avvy!");
- break;
- case vb_cheat: {
- display(string('\6') + "Cheat mode now enabled.");
- cheat = true;
- }
- break;
- case vb_magic:
- if (dna.avaricius_talk > 0)
- dixi('q', 19);
- else {
- if ((dna.room == 12) & (infield(2))) {
- /* Avaricius appears! */
- dixi('q', 17);
- if (whereis['\227'] == 12)
- dixi('q', 18);
- else {
- tr[2].init(1, false); /* Avaricius */
- apped(2, 4);
- tr[2].walkto(5);
- tr[2].call_eachstep = true;
- tr[2].eachstep = procback_and_forth;
- dna.avaricius_talk = 14;
- set_up_timer(177, procavaricius_talks, reason_avariciustalks);
- }
- } else display("Nothing appears to happen...");
- }
- break;
- case vb_smartalec:
- display("Listen, smart alec, that was just rhetoric.");
- break;
- case vb_expletive: {
- switch (swore) {
- case 0:
- display(string("Avvy! Do you mind? There might be kids playing!\r\r") +
- "(I shouldn't say it again, if I were you!)");
- break;
- case 1:
- display(string("You hear a distant rumble of thunder. Must you always ") +
- "do things I tell you not to?\r\rDon't do it again!");
- break;
- default: {
- zonk;
- display(string("A crack of lightning shoots from the sky, ") +
- "and fries you.\r\r(`Such is the anger of the gods, Avvy!\")");
- gameover;
- }
- }
- swore += 1;
- }
- break;
- case vb_listen:
- if ((dna.ringing_bells) & (flagset('B')))
- display(string("All other noise is drowned out by the ringing of ") +
- "the bells.");
- else if (listen == "")
- display("You can't hear anything much at the moment, Avvy.");
- else display(listen);
- break;
- case vb_buy: {
- /* What are they trying to buy? */
- switch (dna.room) {
- case r__argentpub:
- if (infield(6)) {
- /* We're in a pub, and near the bar. */
- switch (thing) {
- case '\63':
- case '\65':
- case '\66':
- case '\72': { /* Beer, whisky, cider or mead */
- if (dna.malagauche == 177) { /* Already getting us one. */
- dixi('D', 15);
- return;
- }
- if (dna.teetotal) {
- dixi('D', 6);
- return;
- }
- if (dna.alcohol == 0) points(3);
- show_one(12);
- display(booze[thing] + ", please.\231\2");
- dna.drinking = thing;
-
- show_one(10);
- dna.malagauche = 177;
- set_up_timer(27, procbuydrinks, reason_drinks);
- }
- break;
- case '\64':
- examine();
- break; /* We have a right one here- buy Pepsi??! */
- case wine:
- if (dna.obj[wine]) /* We've already got the wine! */
- dixi('D', 2); /* 1 bottle's shufishent! */
- else {
- if (dna.malagauche == 177) { /* Already getting us one. */
- dixi('D', 15);
- return;
- }
- if (dna.carrying >= maxobjs) {
- display("Your hands are full.");
- return;
- }
- show_one(12);
- display("Wine, please.\231\2");
- if (dna.alcohol == 0) points(3);
- show_one(10);
- dna.malagauche = 177;
-
- set_up_timer(27, procbuywine, reason_drinks);
- }
- break;
- }
- } else dixi('D', 5);
- break; /* Go to the bar! */
-
- case r__outsideducks:
- if (infield(6)) {
- if (thing == onion) {
- if (dna.obj[onion])
- dixi('D', 10); /* not planning to juggle with the things! */
- else if (dna.carrying >= maxobjs)
- display("Before you ask, you remember that your hands are full.");
- else {
- if (dna.bought_onion)
- dixi('D', 11);
- else {
- dixi('D', 9);
- points(3);
- }
- pennycheck(3); /* It costs thruppence. */
- dna.obj[onion] = true;
- objectlist;
- dna.bought_onion = true;
- dna.rotten_onion = false; /* It's OK when it leaves the stall! */
- dna.onion_in_vinegar = false;
- }
- } else dixi('D', 0);
- } else dixi('D', 0);
- break;
-
- case r__nottspub:
- dixi('n', 15);
- break; /* Can't sell to southerners. */
- default:
- dixi('D', 0); /* Can't buy that. */
- }
- }
- break;
- case vb_attack: {
- if ((dna.room == r__brummieroad) &&
- ((person == '\235') || (thing == crossbow) || (thing == bolt))
- && (whereis['\235'] == dna.room)) {
- switch (ord(dna.obj[bolt]) + ord(dna.obj[crossbow]) * 2) {
- /* 0 = neither, 1 = only bolt, 2 = only crossbow,
- 3 = both. */
- case 0: {
- dixi('Q', 10);
- display("(At the very least, don't use your bare hands!)");
- }
- break;
- case 1:
- display(string("Attack him with only a crossbow bolt? Are you ") +
- "planning on playing darts?!");
- break;
- case 2:
- display(string("Come on, Avvy! You're not going to get very far ") +
- "with only a crossbow!");
- break;
- case 3: {
- dixi('Q', 11);
- dna.cwytalot_gone = true;
- dna.obj[bolt] = false;
- dna.obj[crossbow] = false;
- objectlist;
- magics[12].op = nix;
- points(7);
- tr[2].walkto(2);
- tr[2].vanishifstill = true;
- tr[2].call_eachstep = false;
- whereis['\235'] = 177;
- }
- break;
- default:
- dixi('Q', 10); /* Please try not to be so violent! */
- }
- } else dixi('Q', 10);
- }
- break;
- case vb_password:
- if (dna.room != r__bridge)
- dixi('Q', 12);
- else {
- ok = true;
- for (ff = 1; ff <= length(thats); ff ++)
- for (fv = 1; fv <= length(words[dna.pass_num + first_password].w); fv ++)
- if (words[dna.pass_num + first_password].w[fv] !=
- upcase(realwords[ff][fv]))
- ok = false;
- if (ok) {
- if (dna.drawbridge_open != 0)
- display("Contrary to your expectations, the drawbridge fails to close again.");
- else {
- points(4);
- display("The drawbridge opens!");
- set_up_timer(7, procopen_drawbridge, reason_drawbridgefalls);
- dna.drawbridge_open = 1;
- }
- } else dixi('Q', 12);
- }
- break;
- case vb_dir:
- dir(realwords[2]);
- break;
- case vb_die:
- gameover;
- break;
- case vb_score:
- display(string("Your score is ") + strf(dna.score) + ",\3\rout of a " +
- "possible 128.\r\rThis gives you a rank of " + rank() +
- ".\r\r" + totaltime());
- break;
- case vb_put:
- putproc();
- break;
- case vb_stand:
- stand_up();
- break;
-
- case vb_kiss:
- if (person == pardon)
- display("Kiss whom?");
- else if (personshere())
- switch (person) {
- case '\226' ... '\256':
- display("Hey, what kind of a weirdo are you??");
- break;
- case parkata:
- dixi('U', 12);
- break;
- case pgeida:
- dixi('U', 13);
- break;
- case pwisewoman:
- dixi('U', 14);
- break;
- default:
- dixi('U', 5); /* You WHAT? */
- }
- break;
-
- case vb_climb:
- if (dna.room == r__insidecardiffcastle) cardiff_climbing();
- else /* In the wrong room! */
- display("Not with your head for heights, Avvy!");
- break;
-
- case vb_jump: {
- set_up_timer(1, procjump, reason_jumping);
- dna.user_moves_avvy = false;
- }
- break;
-
- case vb_highscores:
- show_highs;
- break;
-
- case vb_wake:
- if (personshere())
- switch (person) {
- case pardon:
- case pavalot:
- case '\0':
- if (~ avvy_is_awake) {
- avvy_is_awake = true;
- points(1);
- avvy_in_bed = true;
- show_one(3); /* Picture of Avvy, awake in bed. */
- if (teetotal) dixi('d', 13);
- } else display("You're already awake, Avvy!");
- break;
- case payles:
- if (~ ayles_is_awake) display("You can't seem to wake him by yourself.");
- break;
- case pjacques:
- display(string("Brother Jacques, Brother Jacques, are you asleep?\231\2") +
- "Hmmm... that doesn't seem to do any good...");
- break;
- default:
- display("It's difficult to awaken people who aren't asleep...!");
- }
- break;
-
- case vb_sit:
- if (dna.room == r__nottspub) {
- if (dna.sitting_in_pub)
- display("You're already sitting!");
- else {
- tr[1].walkto(4); /* Move Avvy to the place, and sit him down. */
- set_up_timer(1, procavvy_sit_down, reason_sitting_down);
- }
- } else {
- /* Default doodah. */
- dusk;
- hang_around_for_a_while;
- dawn;
- display("A few hours later...\20nothing much has happened...");
- }
- break;
-
- case vb_restart:
- if (ask("Restart game and lose changes?")) {
- dusk;
- newgame;
- dawn;
- }
- break;
-
- case pardon:
- display("Hey, a verb would be helpful!");
- break;
-
- case vb_hello: {
- person_speaks();
- display("Hello.\2");
- }
- break;
- case vb_thanks: {
- person_speaks();
- display("That's OK.\2");
- }
- break;
- default:
- display(string('\7') + "Parser bug!");
- }
-}
-
-void verbopt(char n, string &answer, char &anskey) {
- switch (n) {
- case vb_exam: {
- answer = "Examine";
- anskey = 'x';
- }
- break; /* the ubiqutous one */
- /* vb_give isn't dealt with by this procedure, but by ddm__with */
- case vb_drink: {
- answer = "Drink";
- anskey = 'D';
- }
- break;
- case vb_wear: {
- answer = "Wear";
- anskey = 'W';
- }
- break;
- case vb_ring: {
- answer = "Ring";
- anskey = 'R';
- }
- break; /* only the bell! */
- case vb_play: {
- answer = "Play";
- anskey = 'P';
- }
- break;
- case vb_eat: {
- answer = "Eat";
- anskey = 'E';
- }
- break;
- default: {
- answer = "? Unknown!"; /* Bug! */
- anskey = '?';
- }
- }
-}
-
-class unit_acci_initialize {
-public:
- unit_acci_initialize();
-};
-static unit_acci_initialize acci_constructor;
-
-unit_acci_initialize::unit_acci_initialize() {
- weirdword = false;
-}
-
-} // End of namespace Avalanche. \ No newline at end of file