aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/avalanche/acci2.cpp1625
-rw-r--r--engines/avalanche/acci2.h219
-rw-r--r--engines/avalanche/avalanche.cpp1
-rw-r--r--engines/avalanche/avalanche.h2
-rw-r--r--engines/avalanche/celer2.cpp6
-rw-r--r--engines/avalanche/celer2.h2
-rw-r--r--engines/avalanche/enhanced2.cpp4
-rw-r--r--engines/avalanche/enhanced2.h2
-rw-r--r--engines/avalanche/enid2.cpp6
-rw-r--r--engines/avalanche/enid2.h1
-rw-r--r--engines/avalanche/gyro2.cpp17
-rw-r--r--engines/avalanche/gyro2.h3
-rw-r--r--engines/avalanche/logger2.cpp6
-rw-r--r--engines/avalanche/logger2.h1
-rw-r--r--engines/avalanche/lucerna2.cpp4
-rw-r--r--engines/avalanche/lucerna2.h2
-rw-r--r--engines/avalanche/pingo2.cpp3
-rw-r--r--engines/avalanche/pingo2.h3
-rw-r--r--engines/avalanche/scrolls2.cpp15
-rw-r--r--engines/avalanche/scrolls2.h3
-rw-r--r--engines/avalanche/sequence2.cpp3
-rw-r--r--engines/avalanche/timeout2.cpp11
-rw-r--r--engines/avalanche/timeout2.h3
-rw-r--r--engines/avalanche/trip6.cpp11
-rw-r--r--engines/avalanche/trip6.h4
-rw-r--r--engines/avalanche/visa2.cpp4
26 files changed, 1895 insertions, 66 deletions
diff --git a/engines/avalanche/acci2.cpp b/engines/avalanche/acci2.cpp
new file mode 100644
index 0000000000..2a86732b0c
--- /dev/null
+++ b/engines/avalanche/acci2.cpp
@@ -0,0 +1,1625 @@
+/* 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.
+ */
+
+/* ACCIDENCE II The parser. */
+
+#include "avalanche/avalanche.h"
+
+#include "avalanche/acci2.h"
+#include "avalanche/gyro2.h"
+#include "avalanche/lucerna2.h"
+#include "avalanche/scrolls2.h"
+#include "avalanche/visa2.h"
+#include "avalanche/timeout2.h"
+#include "avalanche/trip6.h"
+#include "avalanche/enid2.h"
+#include "avalanche/celer2.h"
+#include "avalanche/pingo2.h"
+#include "avalanche/sequence2.h"
+
+#include "common/textconsole.h"
+
+
+/*#include "NimUnit.h"*/
+/*#include "Highs.h"*/
+/*#include "Helper.h"*/
+
+namespace Avalanche {
+
+const Acci::vocab Acci::words[nowords] = {
+ /* Verbs, 1-49 */
+ {1, "EXAMINE"}, {1, "READ"}, {1, "XAM"}, /* short */
+ {2, "OPEN"}, {2, "LEAVE"}, {2, "UNLOCK"},
+ {3, "PAUSE"}, {47, "TA"}, /* Early to avoid Take and Talk. */
+ {4, "TAKE"}, {4, "GET"}, {4, "PICK"},
+ {5, "DROP"}, {6, "INVENTORY"}, {7, "TALK"},
+ {7, "SAY"}, {7, "ASK"},
+ {8, "GIVE"}, {9, "DRINK"}, {9, "IMBIBE"},
+ {9, "DRAIN"}, {10, "LOAD"}, {10, "RESTORE"},
+ {11, "SAVE"}, {12, "BRIBE"}, {12, "PAY"},
+ {13, "LOOK"}, {14, "BREAK"}, {15, "QUIT"},
+ {15, "EXIT"}, {16, "SIT"}, {16, "SLEEP"},
+ {17, "STAND"},
+
+ {18, "GO"}, {19, "INFO"}, {20, "UNDRESS"},
+ {20, "DOFF"},
+ {21, "DRESS"}, {21, "WEAR"}, {21, "DON"},
+ {22, "PLAY"},
+ {22, "STRUM"}, {23, "RING"}, {24, "HELP"},
+ {25, "KENDAL"}, {26, "CAPYBARA"}, {27, "BOSS"},
+ {255, "NINET"}, /* block for NINETY */
+ {28, "URINATE"}, {28, "MINGITE"}, {29, "NINETY"},
+ {30, "ABRACADABRA"}, {30, "PLUGH"}, {30, "XYZZY"},
+ {30, "HOCUS"}, {30, "POCUS"}, {30, "IZZY"},
+ {30, "WIZZY"}, {30, "PLOVER"},
+ {30, "MELENKURION"}, {30, "ZORTON"}, {30, "BLERBI"},
+ {30, "THURB"}, {30, "SNOEZE"}, {30, "SAMOHT"},
+ {30, "NOSIDE"}, {30, "PHUGGG"}, {30, "KNERL"},
+ {30, "MAGIC"}, {30, "KLAETU"}, {30, "VODEL"},
+ {30, "BONESCROLLS"}, {30, "RADOF"},
+
+ {31, "RESTART"},
+ {32, "SWALLOW"}, {32, "EAT"}, {33, "LISTEN"},
+ {33, "HEAR"}, {34, "BUY"}, {34, "PURCHASE"},
+ {34, "ORDER"}, {34, "DEMAND"},
+ {35, "ATTACK"}, {35, "HIT"}, {35, "KILL"},
+ {35, "PUNCH"}, {35, "KICK"}, {35, "SHOOT"},
+ {35, "FIRE"},
+
+ /* Passwords, 36: */
+
+ {36, "TIROS"}, {36, "WORDY"}, {36, "STACK"},
+ {36, "SHADOW"}, {36, "OWL"}, {36, "ACORN"},
+ {36, "DOMESDAY"}, {36, "FLOPPY"}, {36, "DIODE"},
+ {36, "FIELD"}, {36, "COWSLIP"}, {36, "OSBYTE"},
+ {36, "OSCLI"}, {36, "TIMBER"}, {36, "ADVAL"},
+ {36, "NEUTRON"}, {36, "POSITRON"}, {36, "ELECTRON"},
+ {36, "CIRCUIT"}, {36, "AURUM"}, {36, "PETRIFY"},
+ {36, "EBBY"}, {36, "CATAPULT"}, {36, "GAMERS"},
+ {36, "FUDGE"}, {36, "CANDLE"}, {36, "BEEB"},
+ {36, "MICRO"}, {36, "SESAME"}, {36, "LORDSHIP"},
+
+ {37, "DIR"}, {37, "LS"}, {38, "DIE"},
+ {39, "SCORE"},
+ {40, "PUT"}, {40, "INSERT"}, {41, "KISS"},
+ {41, "SNOG"}, {41, "CUDDLE"}, {42, "CLIMB"},
+ {42, "CLAMBER"}, {43, "JUMP"}, {44, "HIGHSCORES"},
+ {44, "HISCORES"}, {45, "WAKEN"}, {45, "AWAKEN"},
+ {46, "HELLO"}, {46, "HI"}, {46, "YO"},
+ {47, "THANKS"}, /* = 47, "ta", which was defined earlier. */
+
+
+ /* Nouns - Objects: 50-100. */
+
+ {50, "WINE"}, {50, "BOOZE"}, {50, "NASTY"},
+ {50, "VINEGAR"}, {51, "MONEYBAG"},
+ {51, "BAG"}, {51, "CASH"}, {51, "DOSH"},
+ {51, "WALLET"},
+ {52, "BODKIN"}, {52, "DAGGER"}, {53, "POTION"},
+ {54, "CHASTITY"}, {54, "BELT"}, {55, "BOLT"},
+ {55, "ARROW"}, {55, "DART"},
+ {56, "CROSSBOW"}, {56, "BOW"}, {57, "LUTE"},
+ {58, "PILGRIM"}, {58, "BADGE"}, {59, "MUSHROOMS"},
+ {59, "TOADSTOOLS"}, {60, "KEY"}, {61, "BELL"},
+ {62, "PRESCRIPT"}, {62, "SCROLL"}, {62, "MESSAGE"},
+ {63, "PEN"}, {63, "QUILL"}, {64, "INK"},
+ {64, "INKPOT"}, {65, "CLOTHES"}, {66, "HABIT"},
+ {66, "DISGUISE"}, {67, "ONION"},
+
+ {99, "PASSWORD"},
+
+ /* Objects from Also are placed between 101 and 131. */
+
+ /* Nouns - People - Male, 150-174 */
+ {150, "AVVY"}, {150, "AVALOT"}, {150, "YOURSELF"},
+ {150, "ME"}, {150, "MYSELF"}, {151, "SPLUDWICK"},
+ {151, "THOMAS"}, {151, "ALCHEMIST"}, {151, "CHEMIST"},
+ {152, "CRAPULUS"}, {152, "SERF"}, {152, "SLAVE"},
+ {158, "DU"}, /* <<< Put in early for Baron DU Lustie to save confusion with Duck & Duke.*/
+ {152, "CRAPPY"}, {153, "DUCK"}, {153, "DOCTOR"},
+ {154, "MALAGAUCHE"},
+ {155, "FRIAR"}, {155, "TUCK"}, {156, "ROBIN"},
+ {156, "HOOD"}, {157, "CWYTALOT"}, {157, "GUARD"},
+ {157, "BRIDGEKEEP"}, {158, "BARON"}, {158, "LUSTIE"},
+ {159, "DUKE"}, {159, "GRACE"}, {160, "DOGFOOD"},
+ {160, "MINSTREL"}, {161, "TRADER"}, {161, "SHOPKEEPER"},
+ {161, "STALLHOLDER"},
+ {162, "PILGRIM"}, {162, "IBYTHNETH"}, {163, "ABBOT"},
+ {163, "AYLES"}, {164, "PORT"}, {165, "SPURGE"},
+ {166, "JACQUES"}, {166, "SLEEPER"}, {166, "RINGER"},
+
+ /* Nouns- People - Female: 175-199 */
+ {175, "WIFE"}, {175, "ARKATA"}, {176, "GEDALODAVA"},
+ {176, "GEIDA"}, {176, "PRINCESS"}, {178, "WISE"},
+ {178, "WITCH"},
+
+ /* Pronouns, 200-224 */
+ {200, "_vm->_gyro.him"}, {200, "MAN"}, {200, "GUY"},
+ {200, "DUDE"}, {200, "CHAP"}, {200, "FELLOW"},
+ {201, "HER"}, {201, "GIRL"}, {201, "WOMAN"},
+ {202, "IT"}, {202, "THING"},
+
+ {203, "MONK"}, {204, "BARMAN"}, {204, "BARTENDER"},
+
+ /* Prepositions, 225-249 */
+ {225, "TO"}, {226, "AT"}, {227, "UP"},
+ {228, "INTO"}, {228, "INSIDE"}, {229, "OFF"},
+ {230, "UP"}, {231, "DOWN"}, {232, "ON"},
+
+
+ /* Please, 251 */
+ {251, "PLEASE"},
+
+ /* About, 252 */
+ {252, "ABOUT"}, {252, "CONCERNING"},
+
+ /* Swear words, 253 */
+ /* I M P O R T A N T M E S S A G E
+
+ DO *NOT* READ THE LINES BELOW IF YOU ARE OF A SENSITIVE
+ DISPOSITION. THOMAS IS *NOT* RESPONSIBLE FOR THEM.
+ GOODNESS KNOWS WHO WROTE THEM.
+ READ THEM AT YOUR OWN RISK. BETTER STILL, DON'T READ THEM.
+ WHY ARE YOU SNOOPING AROUND IN MY PROGRAM, ANYWAY? */
+
+ {253, "SHIT"}, {28 , "PISS"}, {28 , "PEE"},
+ {253, "FART"}, {253, "FUCK"}, {253, "BALLS"},
+ {253, "BLAST"}, {253, "BUGGER"}, {253, "KNICKERS"},
+ {253, "BLOODY"}, {253, "HELL"}, {253, "DAMN"},
+ {253, "SMEG"},
+ /* and other even ruder words. You didn't read them, did you? Good. */
+
+ /* Answer-back smart-alec words, 249 */
+ {249, "YES"}, {249, "NO"}, {249, "BECAUSE"},
+
+ /* Noise words, 255 */
+ {255, "THE"}, {255, "A"}, {255, "NOW"},
+ {255, "SOME"}, {255, "AND"}, {255, "THAT"},
+ {255, "POCUS"}, {255, "HIS"},
+ {255, "THIS"}, {255, "SENTINEL"}
+
+}; /* for "Ken SENT Me" */
+
+
+const char Acci::what[] = "That's not possible!";
+
+const Acci::ranktype Acci::ranks[9] = {
+ {0, "Beginner"}, {10, "Novice"},
+ {20, "Improving"}, {35, "Not bad"},
+ {50, "Passable"}, {65, "Good"},
+ {80, "Experienced"}, {108, "The BEST!"},
+ {32767, "copyright'93"}
+};
+
+
+
+
+
+
+void Acci::setParent(AvalancheEngine *vm) {
+ _vm = vm;
+}
+
+void Acci::init() {
+ _vm->_gyro.weirdword = false;
+}
+
+void Acci::checkword(Common::String &x) { /* Checks uint16 "fv". */
+ warning("STUB: Acci::checkuint16()");
+}
+
+Common::String Acci::wordnum(Common::String x)
+{
+ char whatsit;
+ uint16 fv;
+ bool gotcha;
+
+ Common::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 Acci::replace(Common::String old1, Common::String new1) {
+ warning("STUB: Acci::replace()");
+}
+
+/*procedure ninetydump;
+var f:file; y:int16; bit:byte; a:byte absolute $A000:800;
+begin
+ off;
+ assign(f,'avvydump.avd');
+ rewrite(f,1);
+ blockwrite(f,_vm->_gyro.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;
+ _vm->_scrolls.display('Dumped.');
+end;*/
+
+Common::String Acci::rank() {
+ byte fv;
+
+ Common::String rank_result;
+ for (fv = 1; fv <= 8; fv ++)
+ if ((_vm->_gyro.dna.score >= ranks[fv].score) && (_vm->_gyro.dna.score < ranks[fv + 1].score)) {
+ rank_result = ranks[fv].title;
+ return rank_result;
+ }
+
+ return rank_result;
+}
+
+Common::String Acci::totaltime() {
+ const double ticks_in_1_sec = double(65535) / 3600;
+ uint16 h, m, s;
+ Common::String a;
+
+ /* There are 65535 clock ticks in a second,
+ 1092.25 in a minute, and
+ 65535 in an hour. */
+ Common::String totaltime_result;
+
+ warning("STUB: Acci::totaltime()");
+
+ totaltime_result = a;
+ return totaltime_result;
+}
+
+
+
+void Acci::number(Common::String &codes) {
+ warning("STUB: Acci::number()");
+}
+
+void Acci::cheatparse(Common::String codes) {
+ uint16 num;
+ int16 e;
+
+ char cmd;
+ int16 se, sx, sy;
+
+ warning("STUB: Acci::cheatparse()");
+}
+
+void Acci::punctustrip(Common::String &x) { /* Strips punctuation from x. */
+ warning("STUB: Acci::punctustrip()");
+}
+
+
+
+void Acci::displaywhat(char ch, bool animate, bool &ambigous) { /* << it's an adjective! */
+ byte ff;
+ Common::String z;
+
+ warning("STUB: Acci::_vm->_scrolls.displaywhat()");
+}
+
+bool Acci::do_pronouns() {
+ bool ambiguous;
+ byte fv;
+
+ bool do_pronouns_result;
+ ambiguous = false;
+
+ warning("STUB: Acci::do_pronouns()");
+
+ do_pronouns_result = ambiguous;
+ return do_pronouns_result;
+}
+
+
+
+
+
+
+void Acci::lowercase() {
+ byte fv;
+
+ warning("STUB: Acci::lowercase()");
+}
+
+void Acci::propernouns() {
+ byte fv;
+
+ lowercase();
+ warning("STUB: Acci::propernouns()");
+}
+
+void Acci::sayit() { /* This makes Avalot say the response. */
+ Common::String x;
+
+ warning("STUB: Acci::sayit()");
+}
+
+void Acci::store_interrogation(byte interrogation) {
+ byte fv;
+
+ warning("STUB: Acci::store_interrogation()");
+}
+
+
+
+void Acci::clearuint16s() {
+ warning("STUB: Acci::clearuint16s()");
+}
+
+void Acci::parse() {
+ byte n, fv, ff;
+ Common::String c, cc, thisuint16;
+ Common::String answer;
+ bool notfound;
+
+ /* first parsing - uint16 identification */
+ warning("STUB: Acci::parse()");
+}
+
+void Acci::examobj() { /* Examine a standard object-thing */
+ warning("STUB: Acci::examobj()");
+}
+
+bool Acci::personshere() { /* Person equivalent of "holding" */
+ warning("STUB: Acci::personshere()");
+ return true;
+}
+
+void Acci::exampers() {
+ warning("STUB: Acci::exampers()");
+}
+
+bool Acci::holding() {
+ warning("STUB: Acci::holding()");
+ return true;
+}
+
+
+
+void Acci::special(bool before) {
+ warning("STUB: Acci::special()");
+}
+
+void Acci::examine() {
+ /* Examine. EITHER it's an object OR it's an Also OR it's a person OR
+ it's something else. */
+ warning("STUB: Acci::examine()");
+}
+
+
+
+void Acci::inv() { /* the time-honoured command... */
+ char fv;
+ byte q;
+
+ q = 0;
+
+ warning("STUB: Acci::inv()");
+}
+
+void Acci::swallow() { /* Eat something. */
+ warning("STUB: Acci::swallow()");
+}
+
+void Acci::others() {
+/* This lists the other people in the room. */
+ warning("STUB: Acci::others()");
+}
+
+void Acci::lookaround() {
+/* This is called when you say "look." */
+ _vm->_scrolls.display(*_vm->_gyro.also[0][1]);
+ switch (_vm->_gyro.dna.room) {
+ case r__spludwicks:
+ if (_vm->_gyro.dna.avaricius_talk > 0) _vm->_visa.dixi('q', 23);
+ else others();
+ break;
+ case r__robins: {
+ if (_vm->_gyro.dna.tied_up) _vm->_visa.dixi('q', 38);
+ if (_vm->_gyro.dna.mushroom_growing) _vm->_visa.dixi('q', 55);
+ }
+ break;
+ case r__insidecardiffcastle:
+ if (! _vm->_gyro.dna.taken_pen) _vm->_visa.dixi('q', 49);
+ break;
+ case r__lustiesroom:
+ if (_vm->_gyro.dna.lustie_is_asleep) _vm->_visa.dixi('q', 65);
+ break;
+ case r__catacombs:
+ switch (_vm->_gyro.dna.cat_y * 256 + _vm->_gyro.dna.cat_x) {
+ case 258 :
+ _vm->_visa.dixi('q', 80);
+ break; /* Inside art gallery */
+ case 514 :
+ _vm->_visa.dixi('q', 81);
+ break; /* Outside ditto */
+ case 260 :
+ _vm->_visa.dixi('q', 82);
+ break; /* Outside Geida's room. */
+ }
+ break;
+ default:
+ others();
+ }
+}
+
+void Acci::opendoor() { /* so whaddya THINK this does?! */
+ byte fv;
+
+ switch (_vm->_gyro.dna.room) { /* Special cases. */
+ case r__yours:
+ if (_vm->_trip.infield(2)) {
+ /* Opening the box. */
+ thing = 54; /* The box. */ person = pardon;
+ examine();
+ return;
+ }
+ break;
+ case r__spludwicks:
+ if (thing == 61) {
+ _vm->_visa.dixi('q', 85);
+ return;
+ }
+ break;
+ }
+
+
+ if ((! _vm->_gyro.dna.user_moves_avvy) && (_vm->_gyro.dna.room != r__lusties))
+ return; /* No doors can open if you can't move Avvy. */
+ for (fv = 9; fv <= 15; fv ++)
+ if (_vm->_trip.infield(fv)) {
+ {
+ _vm->_gyro.portals[fv];
+ switch (_vm->_gyro.portals[fv].op) {
+ case _vm->_gyro.exclaim: {
+ _vm->_trip.tr[1].bounce();
+ _vm->_visa.dixi('x', _vm->_gyro.portals[fv].data);
+ }
+ break;
+ case _vm->_gyro.transport:
+ _vm->_trip.fliproom((_vm->_gyro.portals[fv].data) >> 8 /*High byte*/, (_vm->_gyro.portals[fv].data) & 0x0F /*Low byte*/);
+ break;
+ case _vm->_gyro.unfinished: {
+ _vm->_trip.tr[1].bounce();
+ _vm->_scrolls.display("Sorry. This place is not available yet!");
+ }
+ break;
+ case _vm->_gyro.special:
+ _vm->_trip.call_special(_vm->_gyro.portals[fv].data);
+ break;
+ case _vm->_gyro.mopendoor:
+ _vm->_trip.open_the_door((_vm->_gyro.portals[fv].data) >> 8, (_vm->_gyro.portals[fv].data) & 0x0F, fv);
+ break;
+ }
+ }
+ return;
+ }
+ if (_vm->_gyro.dna.room == r__map)
+ _vm->_scrolls.display(Common::String("Avvy, you can complete the whole game without ever going "
+ "to anywhere other than Argent, Birmingham, Cardiff, "
+ "Nottingham and Norwich."));
+ else
+ _vm->_scrolls.display("Door? What door?");
+}
+
+
+
+
+void Acci::silly() {
+ _vm->_scrolls.display("Don't be silly!");
+}
+
+void Acci::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 _vm->_gyro.wine:
+ if (thing == _vm->_gyro.onion) {
+ if (_vm->_gyro.dna.rotten_onion)
+ _vm->_scrolls.display(Common::String("That's a bit like shutting the stable door after the "
+ "horse has bolted!"));
+ else { /* Put onion into wine? */
+ if (_vm->_gyro.dna.winestate != 3)
+ _vm->_scrolls.display("\6Oignon au vin\22 is a bit too strong for your tastes!");
+ else { /* Put onion into vinegar! Yes! */
+ _vm->_gyro.dna.onion_in_vinegar = true;
+ _vm->_lucerna.points(7);
+ _vm->_visa.dixi('u', 9);
+ }
+ }
+ } else silly();
+ break;
+
+ case 54:
+ if (_vm->_gyro.dna.room == 1) { /* Put something into the box. */
+ if (_vm->_gyro.dna.box_contents != nowt)
+ _vm->_scrolls.display(Common::String("There's something in the box already, Avvy. Try taking"
+ " that out first."));
+ else
+ switch (thing) {
+ case _vm->_gyro.money:
+ _vm->_scrolls.display("You'd better keep some ready cash on you!");
+ break;
+ case _vm->_gyro.bell:
+ _vm->_scrolls.display("That's a silly place to keep a bell.");
+ break;
+ case _vm->_gyro.bodkin:
+ _vm->_scrolls.display("But you might need it!");
+ break;
+ case _vm->_gyro.onion:
+ _vm->_scrolls.display("Just give it to Spludwick, Avvy!");
+ break;
+ default: {
+ /* Put the object into the box... */
+ if (_vm->_gyro.dna.wearing == thing)
+ _vm->_scrolls.display(Common::String("You'd better take ") + _vm->_gyro.get_better(thing) + " off first!");
+ else {
+ _vm->_celer.show_one(5); /* Open box. */
+ _vm->_gyro.dna.box_contents = thing;
+ _vm->_gyro.dna.obj[thing] = false;
+ _vm->_lucerna.objectlist();
+ _vm->_scrolls.display("OK, it's in the box.");
+ _vm->_celer.show_one(6); /* Shut box. */
+ }
+ }
+ }
+ } else silly();
+ break;
+
+ default:
+ silly();
+ }
+}
+
+
+
+
+
+/* The result of this fn is whether or not he says "Hey, thanks!" */
+void Acci::not_in_order() {
+ _vm->_scrolls.display(Common::String("Sorry, I need the ingredients in the right order for this potion.") +
+ " What I need next is " +
+ _vm->_gyro.get_better(_vm->_gyro.spludwick_order[_vm->_gyro.dna.given2spludwick]) + ".\232\2");
+}
+
+void Acci::go_to_cauldron() {
+ _vm->_trip.tr[2].call_eachstep = false; /* Stops Geida_Procs. */
+ _vm->_timeout.set_up_timer(1, _vm->_timeout.procspludwick_goes_to_cauldron, _vm->_timeout.reason_spludwalk);
+ _vm->_trip.tr[2].walkto(2);
+}
+
+bool Acci::give2spludwick() {
+ bool give2spludwick_result;
+ {
+ give2spludwick_result = false;
+
+ if (_vm->_gyro.spludwick_order[_vm->_gyro.dna.given2spludwick] != thing) {
+ not_in_order();
+ return give2spludwick_result;
+ }
+
+ switch (thing) {
+ case _vm->_gyro.onion: {
+ _vm->_gyro.dna.obj[_vm->_gyro.onion] = false;
+ if (_vm->_gyro.dna.rotten_onion)
+ _vm->_visa.dixi('q', 22);
+ else {
+ _vm->_gyro.dna.given2spludwick += 1;
+ _vm->_visa.dixi('q', 20);
+ go_to_cauldron();
+ _vm->_lucerna.points(3);
+ }
+ _vm->_lucerna.objectlist();
+ }
+ break;
+ case _vm->_gyro.ink: {
+ _vm->_gyro.dna.obj[_vm->_gyro.ink] = false;
+ _vm->_lucerna.objectlist();
+ _vm->_gyro.dna.given2spludwick += 1;
+ _vm->_visa.dixi('q', 24);
+ go_to_cauldron();
+ _vm->_lucerna.points(3);
+ }
+ break;
+ case _vm->_gyro.mushroom: {
+ _vm->_gyro.dna.obj[_vm->_gyro.mushroom] = false;
+ _vm->_visa.dixi('q', 25);
+ _vm->_lucerna.points(5);
+ _vm->_gyro.dna.given2spludwick += 1;
+ go_to_cauldron();
+ _vm->_gyro.dna.obj[_vm->_gyro.potion] = true;
+ _vm->_lucerna.objectlist();
+ }
+ break;
+ default:
+ give2spludwick_result = true;
+ }
+ }
+ return give2spludwick_result;
+}
+
+
+
+void Acci::have_a_drink() {
+ {
+ _vm->_gyro.dna.alcohol += 1;
+ if (_vm->_gyro.dna.alcohol == 5) {
+ _vm->_gyro.dna.obj[_vm->_gyro.key] = true; /* Get the key. */
+ _vm->_gyro.dna.teetotal = true;
+ _vm->_gyro.dna.avvy_is_awake = false;
+ _vm->_gyro.dna.avvy_in_bed = true;
+ _vm->_lucerna.objectlist();
+ _vm->_lucerna.dusk();
+ _vm->_gyro.hang_around_for_a_while();
+ _vm->_trip.fliproom(1, 1);
+ _vm->_gyro.background(14);
+ _vm->_trip.new_game_for_trippancy(); /* Not really */
+ }
+ }
+}
+
+void Acci::cardiff_climbing() {
+ if (_vm->_gyro.dna.standing_on_dais) {
+ /* Clamber up. */
+ _vm->_scrolls.display("You climb down, back onto the floor.");
+ _vm->_gyro.dna.standing_on_dais = false;
+ _vm->_trip.apped(1, 3);
+ } else {
+ /* Clamber down. */
+ if (_vm->_trip.infield(1)) {
+ _vm->_scrolls.display("You clamber up onto the dais.");
+ _vm->_gyro.dna.standing_on_dais = true;
+ _vm->_trip.apped(1, 2);
+ } else
+ _vm->_scrolls.display("Get a bit closer, Avvy.");
+ }
+}
+
+
+
+
+/* Called when you ask Avvy to stand. */
+void Acci::already() {
+ _vm->_scrolls.display("You're already standing!");
+}
+
+void Acci::stand_up() {
+ switch (_vm->_gyro.dna.room) {
+ case r__yours: /* Avvy isn't asleep. */
+ if (_vm->_gyro.dna.avvy_in_bed) { /* But he's in bed. */
+ if (_vm->_gyro.dna.teetotal) {
+ _vm->_visa.dixi('d', 12);
+ _vm->_gyro.background(0);
+ _vm->_visa.dixi('d', 14);
+ }
+ _vm->_trip.tr[1].visible = true;
+ _vm->_gyro.dna.user_moves_avvy = true;
+ _vm->_trip.apped(1, 2);
+ _vm->_gyro.dna.rw = _vm->_gyro.left;
+ _vm->_celer.show_one(4); /* Picture of empty pillow. */
+ _vm->_lucerna.points(1);
+ _vm->_gyro.dna.avvy_in_bed = false;
+ _vm->_timeout.lose_timer(_vm->_timeout.reason_arkata_shouts);
+ } else already();
+ break;
+
+ case r__insidecardiffcastle:
+ cardiff_climbing();
+ break;
+
+ case r__nottspub:
+ if (_vm->_gyro.dna.sitting_in_pub) {
+ _vm->_celer.show_one(4); /* Not sitting down. */
+ _vm->_trip.tr[1].visible = true; /* But standing up. */
+ _vm->_trip.apped(1, 4); /* And walking away. */
+ _vm->_gyro.dna.sitting_in_pub = false; /* Really not sitting down. */
+ _vm->_gyro.dna.user_moves_avvy = true; /* And ambulant. */
+ } else already();
+ break;
+ default:
+ already();
+ }
+}
+
+
+
+
+void Acci::getproc(char thing) {
+ switch (_vm->_gyro.dna.room) {
+ case r__yours:
+ if (_vm->_trip.infield(2)) {
+ if (_vm->_gyro.dna.box_contents == thing) {
+ _vm->_celer.show_one(5);
+ _vm->_scrolls.display("OK, I've got it.");
+ _vm->_gyro.dna.obj[thing] = true;
+ _vm->_lucerna.objectlist();
+ _vm->_gyro.dna.box_contents = nowt;
+ _vm->_celer.show_one(6);
+ } else
+ _vm->_scrolls.display(Common::String("I can't see ") + _vm->_gyro.get_better(thing) + " in the box.");
+ } else _vm->_visa.dixi('q', 57);
+ break;
+ case r__insidecardiffcastle:
+ switch (thing) {
+ case _vm->_gyro.pen: {
+ if (_vm->_trip.infield(2)) {
+ /* Standing on the dais. */
+
+ if (_vm->_gyro.dna.taken_pen)
+ _vm->_scrolls.display("It's not there, Avvy.");
+ else {
+ /* OK: we're taking the pen, and it's there. */
+ _vm->_celer.show_one(4); /* No pen there now. */
+ _vm->_trip.call_special(3); /* Zap! */
+ _vm->_gyro.dna.taken_pen = true;
+ _vm->_gyro.dna.obj[_vm->_gyro.pen] = true;
+ _vm->_lucerna.objectlist();
+ _vm->_scrolls.display("Taken.");
+ }
+ } else if (_vm->_gyro.dna.standing_on_dais) _vm->_visa.dixi('q', 53);
+ else _vm->_visa.dixi('q', 51);
+ }
+ break;
+ case _vm->_gyro.bolt:
+ _vm->_visa.dixi('q', 52);
+ break;
+ default:
+ _vm->_visa.dixi('q', 57);
+ }
+ break;
+ case r__robins:
+ if ((thing == _vm->_gyro.mushroom) & (_vm->_trip.infield(1)) & (_vm->_gyro.dna.mushroom_growing)) {
+ _vm->_celer.show_one(3);
+ _vm->_scrolls.display("Got it!");
+ _vm->_gyro.dna.mushroom_growing = false;
+ _vm->_gyro.dna.taken_mushroom = true;
+ _vm->_gyro.dna.obj[_vm->_gyro.mushroom] = true;
+ _vm->_lucerna.objectlist();
+ _vm->_lucerna.points(3);
+ } else _vm->_visa.dixi('q', 57);
+ break;
+ default:
+ _vm->_visa.dixi('q', 57);
+ }
+}
+
+void Acci::give_geida_the_lute() {
+ {
+ if (_vm->_gyro.dna.room != r__lustiesroom) {
+ _vm->_scrolls.display("Not yet. Try later!\232\2");
+ return;
+ }
+ _vm->_gyro.dna.obj[_vm->_gyro.lute] = false;
+ _vm->_lucerna.objectlist();
+ _vm->_visa.dixi('q', 64); /* She plays it. */
+
+ /* And the rest has been moved to Timeout... under give_lute_to_Geida. */
+
+ _vm->_timeout.set_up_timer(1, _vm->_timeout.procgive_lute_to_geida, _vm->_timeout.reason_geida_sings);
+ _vm->_enid.back_to_bootstrap(4);
+ }
+}
+
+void Acci::play_harp() {
+ if (_vm->_trip.infield(7))
+ _vm->_scrolls.musical_scroll();
+ else _vm->_scrolls.display("Get a bit closer to it, Avvy!");
+}
+
+void Acci::winsequence() {
+ _vm->_visa.dixi('q', 78);
+ _vm->_sequence.first_show(7);
+ _vm->_sequence.then_show(8);
+ _vm->_sequence.then_show(9);
+ _vm->_sequence.start_to_close();
+ _vm->_timeout.set_up_timer(30, _vm->_timeout.procwinning, _vm->_timeout.reason_winning);
+}
+
+void Acci::person_speaks() {
+ bool found;
+ byte fv;
+ char cfv;
+
+
+ if ((person == pardon) || (person == '\0')) {
+ if ((_vm->_gyro.him == pardon) || (_vm->_gyro.whereis[_vm->_gyro.him] != _vm->_gyro.dna.room)) person = _vm->_gyro.her;
+ else person = _vm->_gyro.him;
+ }
+
+ if (_vm->_gyro.whereis[person] != _vm->_gyro.dna.room) {
+ _vm->_scrolls.display("\231\4"); /* Avvy _vm->_gyro.himself! */
+ return;
+ }
+
+ found = false; /* The person we're looking for's code is in Person. */
+
+ for (fv = 1; fv <= _vm->_trip.numtr; fv ++)
+ if (_vm->_trip.tr[fv].quick && ((_vm->_trip.tr[fv].a.accinum + 149) == person)) {
+ _vm->_scrolls.display(Common::String('\23') + char(fv + 48) + '\4');
+ found = true;
+ }
+
+ if (! found)
+ for (fv = 10; fv <= 25; fv ++) {
+ _vm->_gyro.quasipeds[fv];
+ if ((_vm->_gyro.quasipeds[fv].who == person) && (_vm->_gyro.quasipeds[fv].room == _vm->_gyro.dna.room)) {
+ _vm->_scrolls.display(Common::String('\23') + char(fv + 55) + '\4');
+ }
+ }
+}
+
+
+
+
+void Acci::heythanks() {
+ person_speaks();
+ _vm->_scrolls.display("Hey, thanks!\2(But now, you've lost it!)");
+ _vm->_gyro.dna.obj[thing] = false;
+}
+
+void Acci::do_that() {
+ const Common::String booze[] = {"Bitter", "GIED", "Whisky", "Cider", "", "", "", "Mead"};
+ byte fv, ff;
+ int16 sx, sy;
+ bool ok;
+
+
+ if (thats == Common::String(nowt)) {
+ thats = "";
+ return;
+ }
+ if (_vm->_gyro.weirdword) return;
+ if (thing < '\310') thing -= 49; /* "Slip" */
+
+ /*if ((! _vm->_gyro.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))) {
+ _vm->_scrolls.display(Common::String("You're dead, so don't talk. What are you, a ghost ") +
+ "or something? Try restarting, or restoring a saved game!");
+ return;
+ }
+
+ if ((~ _vm->_gyro.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))) {
+ _vm->_scrolls.display("Talking in your sleep? Try waking up!");
+ return;
+ }*/
+
+
+ switch (verb) {
+ case vb_exam:
+ examine();
+ break;
+ case vb_open:
+ opendoor();
+ break;
+ case vb_pause:
+ _vm->_scrolls.display(Common::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 (_vm->_gyro.dna.carrying >= maxobjs) _vm->_scrolls.display("You can't carry any more!");
+ else getproc(thing);
+
+ } else {
+ /* Not... ditto. */
+ if (person != pardon)
+ _vm->_scrolls.display("You can't sweep folk off their feet!");
+ else
+ _vm->_scrolls.display("I assure you, you don't need it.");
+ }
+ }
+ break;
+ case vb_drop:
+ _vm->_scrolls.display(Common::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 _vm->_gyro.dna.obj[thing]:=false; _vm->_lucerna.objectlist(); end;*/
+ case vb_inv:
+ inv();
+ break;
+ case vb_talk:
+ if (person == pardon) {
+ if (_vm->_gyro.subjnumber == 99) /* They typed "say passuint16". */
+ _vm->_scrolls.display("Yes, but what \6is\22 the passuint16?");
+ /*else if (set::of(range(1, 49), 253, 249, eos).has(subjnumber)) {
+ Delete(thats, 1, 1);
+ move(realuint16s[2], realuint16s[1], sizeof(realuint16s) - sizeof(realuint16s[1]));
+ verb = chr(subjnumber);
+ do_that();
+ return;
+ } else {
+ person = _vm->_gyro.subjnumber;
+ subjnumber = 0;
+ if (set::of(pardon, '\0', eos).has(person)) _vm->_scrolls.display("Talk to whom?");
+ else if (personshere()) talkto(ord(person));
+ }
+ }*/ else if (person == pardon) _vm->_scrolls.display("Talk to whom?");
+ else if (personshere()) _vm->_visa.talkto(person);
+ break;
+
+ case vb_give:
+ if (holding()) {
+ if (person == pardon) _vm->_scrolls.display("Give to whom?");
+ else if (personshere()) {
+ switch (thing) {
+ case _vm->_gyro.money :
+ _vm->_scrolls.display("You can't bring yourself to give away your moneybag.");
+ break;
+ case _vm->_gyro.bodkin:
+ case _vm->_gyro.bell:
+ case _vm->_gyro.clothes:
+ case _vm->_gyro.habit :
+ _vm->_scrolls.display("Don't give it away, it might be useful!");
+ break;
+ default:
+ switch (person) {
+ case _vm->_gyro.pcrapulus:
+ switch (thing) {
+ case _vm->_gyro.wine: {
+ _vm->_scrolls.display("Crapulus grabs the wine and gulps it down.");
+ _vm->_gyro.dna.obj[_vm->_gyro.wine] = false;
+ }
+ break;
+ default:
+ heythanks();
+ }
+ break;
+ case _vm->_gyro.pcwytalot:
+ /*if (set::of(crossbow, bolt, eos).has(thing))
+ _vm->_scrolls.display(Common::String("You might be able to influence ") +
+ "Cwytalot more if you used it!");
+ else */heythanks();
+ break;
+ case _vm->_gyro.pspludwick:
+ if (give2spludwick()) heythanks();
+ break;
+ case _vm->_gyro.pibythneth:
+ if (thing == _vm->_gyro.badge) {
+ _vm->_visa.dixi('q', 32); /* Thanks! Wow! */
+ _vm->_lucerna.points(3);
+ _vm->_gyro.dna.obj[_vm->_gyro.badge] = false;
+ _vm->_gyro.dna.obj[_vm->_gyro.habit] = true;
+ _vm->_gyro.dna.givenbadgetoiby = true;
+ _vm->_celer.show_one(8);
+ _vm->_celer.show_one(9);
+ } else heythanks();
+ break;
+ case _vm->_gyro.payles:
+ if (_vm->_gyro.dna.ayles_is_awake) {
+ if (thing == _vm->_gyro.pen) {
+ _vm->_gyro.dna.obj[_vm->_gyro.pen] = false;
+ _vm->_visa.dixi('q', 54);
+ _vm->_gyro.dna.obj[_vm->_gyro.ink] = true;
+ _vm->_gyro.dna.given_pen_to_ayles = true;
+ _vm->_lucerna.objectlist();
+ _vm->_lucerna.points(2);
+ } else heythanks();
+ } else
+ _vm->_scrolls.display("But he's asleep!");
+ break;
+ case _vm->_gyro.pgeida:
+ switch (thing) {
+ case _vm->_gyro.potion : {
+ _vm->_gyro.dna.obj[_vm->_gyro.potion] = false;
+ _vm->_visa.dixi('u', 16); /* She drinks it. */
+ _vm->_lucerna.points(2);
+ _vm->_gyro.dna.geida_given_potion = true;
+ _vm->_lucerna.objectlist();
+ }
+ break;
+ case _vm->_gyro.lute:
+ give_geida_the_lute();
+ break;
+ default:
+ heythanks();
+ }
+ break;
+ case _vm->_gyro.parkata:
+ switch (thing) {
+ case _vm->_gyro.potion:
+ if (_vm->_gyro.dna.geida_given_potion)
+ winsequence();
+ else _vm->_visa.dixi('q', 77);
+ break; /* That Geida woman! */
+ default:
+ heythanks();
+ }
+ break;
+ default:
+ heythanks();
+ }
+ }
+ }
+ _vm->_lucerna.objectlist(); /* Just in case... */
+ }
+ break;
+
+ case vb_eat:
+ case vb_drink:
+ if (holding()) swallow();
+ break;
+ case vb_load:
+ _vm->_enid.edna_load(realwords[2]);
+ break;
+ case vb_save:
+ if (_vm->_gyro.alive)
+ _vm->_enid.edna_save(realwords[2]);
+ else
+ _vm->_scrolls.display("It's a bit late now to save your game!");
+ break;
+ case vb_pay:
+ _vm->_scrolls.display("No money need change hands.");
+ break;
+ case vb_look:
+ lookaround();
+ break;
+ case vb_break:
+ _vm->_scrolls.display("Vandalism is prohibited within this game!");
+ break;
+ case vb_quit: { /* quit */
+ //if (_vm->_gyro.demo) {
+ // _vm->_visa.dixi('q', 31);
+ // close(demofile);
+ // exit(0); /* Change this later!!! */
+ //}
+ if (! polite) _vm->_scrolls.display("How about a `please\", Avvy?");
+ else if (_vm->_scrolls.ask("\23C\26Do you really want to quit?")) _vm->_gyro.lmo = true;
+ }
+ break;
+ case vb_go:
+ _vm->_scrolls.display("Just use the arrow keys to walk there.");
+ break;
+ case vb_info: {
+ _vm->_scrolls.aboutscroll = true;
+ /* _vm->_scrolls.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.');*/
+ _vm->_scrolls.display(Common::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 " + _vm->_gyro.vernum + '\15' + '\15' + "Copyright ï "
+ + _vm->_gyro.copyright + ", Mark, Mike and Thomas Thurman." + '\23' + 'Y' + '\26');
+ _vm->_scrolls.aboutscroll = false;
+ }
+ break;
+ case vb_undress:
+ if (_vm->_gyro.dna.wearing == nowt) _vm->_scrolls.display("You're already stark naked!");
+ else if (_vm->_gyro.dna.avvys_in_the_cupboard) {
+ _vm->_scrolls.display(Common::String("You take off ") + _vm->_gyro.get_better(_vm->_gyro.dna.wearing) + '.');
+ _vm->_gyro.dna.wearing = nowt;
+ _vm->_lucerna.objectlist();
+ } else
+ _vm->_scrolls.display("Hadn't you better find somewhere more private, Avvy?");
+ break;
+ case vb_wear:
+ if (holding()) {
+ /* wear something */
+ switch (thing) {
+ case _vm->_gyro.chastity:
+ _vm->_scrolls.display("Hey, what kind of a weirdo are you\??!");
+ break;
+ case _vm->_gyro.clothes:
+ case _vm->_gyro.habit: { /* Change this! */
+ if (_vm->_gyro.dna.wearing != nowt) {
+ if (_vm->_gyro.dna.wearing == thing)
+ _vm->_scrolls.display("You're already wearing that.");
+ else
+ _vm->_scrolls.display(Common::String("You'll be rather warm wearing two ") +
+ "sets of clothes!");
+ return;
+ } else
+ _vm->_gyro.dna.wearing = thing;
+ _vm->_lucerna.objectlist();
+ if (thing == _vm->_gyro.habit) fv = 3;
+ else fv = 0;
+ {
+ if (_vm->_trip.tr[1].whichsprite != fv) {
+ sx = _vm->_trip.tr[1].x;
+ sy = _vm->_trip.tr[1].y;
+ _vm->_trip.tr[1].done();
+ _vm->_trip.tr[1].init(fv, true, &_vm->_trip);
+ _vm->_trip.tr[1].appear(sx, sy, _vm->_trip.left);
+ _vm->_trip.tr[1].visible = false;
+ }
+ }
+ }
+ break;
+ default:
+ _vm->_scrolls.display(what);
+ }
+ }
+ break;
+ case vb_play:
+ if (thing == pardon)
+ switch (_vm->_gyro.dna.room) { /* They just typed "play"... */
+ case r__argentpub:
+ // play_nim();
+ // I just don't plan to implement Nim yet.
+ break; /* ...in the pub, => play Nim. */
+ case r__musicroom:
+ play_harp();
+ break;
+ }
+ else if (holding()) {
+ switch (thing) {
+ case _vm->_gyro.lute : {
+ _vm->_visa.dixi('U', 7);
+ if (_vm->_gyro.whereis[_vm->_gyro.pcwytalot] == _vm->_gyro.dna.room) _vm->_visa.dixi('U', 10);
+ if (_vm->_gyro.whereis[_vm->_gyro.pdulustie] == _vm->_gyro.dna.room) _vm->_visa.dixi('U', 15);
+ }
+ break;
+ case 52 :
+ if (_vm->_gyro.dna.room == r__musicroom) play_harp();
+ else _vm->_scrolls.display(what);
+ break;
+ case 55 :
+ if (_vm->_gyro.dna.room == r__argentpub) ; /*play_nim(); - Don't implement yet.*/
+ else _vm->_scrolls.display(what);
+ break;
+ default:
+ _vm->_scrolls.display(what);
+ }
+ }
+ break;
+ case vb_ring:
+ if (holding()) {
+ if (thing == _vm->_gyro.bell) {
+ _vm->_scrolls.display("Ding, dong, ding, dong, ding, dong, ding, dong...");
+ if ((_vm->_gyro.dna.ringing_bells) & (_vm->_gyro.flagset('B')))
+ _vm->_scrolls.display("(Are you trying to join in, Avvy\?\?!)");
+ } else _vm->_scrolls.display(what);
+ }
+ break;
+ case vb_help:
+ // boot_help();
+ // I don't want to implement help yet.
+ break;
+ case vb_larrypass:
+ _vm->_scrolls.display("Wrong game!");
+ break;
+ case vb_phaon:
+ _vm->_scrolls.display("Hello, Phaon!");
+ break;
+ case vb_boss:
+ // bosskey();
+ // I don't want to implement bosskey yet.
+ break;
+ case vb_pee:
+ if (_vm->_gyro.flagset('P')) {
+ _vm->_scrolls.display("Hmm, I don't think anyone will notice...");
+ _vm->_timeout.set_up_timer(4, _vm->_timeout.procurinate, _vm->_timeout.reason_gototoilet);
+ } else _vm->_scrolls.display("It would be \6VERY\22 unwise to do that here, Avvy!");
+ break;
+ case vb_cheat: {
+ _vm->_scrolls.display(Common::String('\6') + "Cheat mode now enabled.");
+ _vm->_gyro.cheat = true;
+ }
+ break;
+ case vb_magic:
+ if (_vm->_gyro.dna.avaricius_talk > 0)
+ _vm->_visa.dixi('q', 19);
+ else {
+ if ((_vm->_gyro.dna.room == 12) & (_vm->_trip.infield(2))) {
+ /* Avaricius appears! */
+ _vm->_visa.dixi('q', 17);
+ if (_vm->_gyro.whereis['\227'] == 12)
+ _vm->_visa.dixi('q', 18);
+ else {
+ _vm->_trip.tr[2].init(1, false, &_vm->_trip); /* Avaricius */
+ _vm->_trip.apped(2, 4);
+ _vm->_trip.tr[2].walkto(5);
+ _vm->_trip.tr[2].call_eachstep = true;
+ _vm->_trip.tr[2].eachstep = _vm->_trip.procback_and_forth;
+ _vm->_gyro.dna.avaricius_talk = 14;
+ _vm->_timeout.set_up_timer(177, _vm->_timeout.procavaricius_talks, _vm->_timeout.reason_avariciustalks);
+ }
+ } else _vm->_scrolls.display("Nothing appears to happen...");
+ }
+ break;
+ case vb_smartalec:
+ _vm->_scrolls.display("Listen, smart alec, that was just rhetoric.");
+ break;
+ case vb_expletive: {
+ switch ( _vm->_gyro.dna.swore) {
+ case 0:
+ _vm->_scrolls.display(Common::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:
+ _vm->_scrolls.display(Common::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: {
+ _vm->_pingo.zonk();
+ _vm->_scrolls.display(Common::String("A crack of lightning shoots from the sky, ") +
+ "and fries you.\r\r(`Such is the anger of the gods, Avvy!\")");
+ _vm->_lucerna.gameover();
+ }
+ }
+ _vm->_gyro.dna.swore ++;
+ }
+ break;
+ case vb_listen:
+ if ((_vm->_gyro.dna.ringing_bells) & (_vm->_gyro.flagset('B')))
+ _vm->_scrolls.display(Common::String("All other noise is drowned out by the ringing of ") +
+ "the bells.");
+ else if (_vm->_gyro.listen == "")
+ _vm->_scrolls.display("You can't hear anything much at the moment, Avvy.");
+ else _vm->_scrolls.display(_vm->_gyro.listen);
+ break;
+ case vb_buy: {
+ /* What are they trying to buy? */
+ switch (_vm->_gyro.dna.room) {
+ case r__argentpub:
+ if (_vm->_trip.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 (_vm->_gyro.dna.malagauche == 177) { /* Already getting us one. */
+ _vm->_visa.dixi('D', 15);
+ return;
+ }
+ if (_vm->_gyro.dna.teetotal) {
+ _vm->_visa.dixi('D', 6);
+ return;
+ }
+ if (_vm->_gyro.dna.alcohol == 0) _vm->_lucerna.points(3);
+ _vm->_celer.show_one(12);
+ _vm->_scrolls.display(booze[thing] + ", please.\231\2");
+ _vm->_gyro.dna.drinking = thing;
+
+ _vm->_celer.show_one(10);
+ _vm->_gyro.dna.malagauche = 177;
+ _vm->_timeout.set_up_timer(27, _vm->_timeout.procbuydrinks, _vm->_timeout.reason_drinks);
+ }
+ break;
+ case '\64':
+ examine();
+ break; /* We have a right one here- buy Pepsi??! */
+ case _vm->_gyro.wine:
+ if (_vm->_gyro.dna.obj[_vm->_gyro.wine]) /* We've already got the wine! */
+ _vm->_visa.dixi('D', 2); /* 1 bottle's shufishent! */
+ else {
+ if (_vm->_gyro.dna.malagauche == 177) { /* Already getting us one. */
+ _vm->_visa.dixi('D', 15);
+ return;
+ }
+ if (_vm->_gyro.dna.carrying >= maxobjs) {
+ _vm->_scrolls.display("Your hands are full.");
+ return;
+ }
+ _vm->_celer.show_one(12);
+ _vm->_scrolls.display("Wine, please.\231\2");
+ if (_vm->_gyro.dna.alcohol == 0) _vm->_lucerna.points(3);
+ _vm->_celer.show_one(10);
+ _vm->_gyro.dna.malagauche = 177;
+
+ _vm->_timeout.set_up_timer(27, _vm->_timeout.procbuywine, _vm->_timeout.reason_drinks);
+ }
+ break;
+ }
+ } else _vm->_visa.dixi('D', 5);
+ break; /* Go to the bar! */
+
+ case r__outsideducks:
+ if (_vm->_trip.infield(6)) {
+ if (thing == _vm->_gyro.onion) {
+ if (_vm->_gyro.dna.obj[_vm->_gyro.onion])
+ _vm->_visa.dixi('D', 10); /* not planning to juggle with the things! */
+ else if (_vm->_gyro.dna.carrying >= maxobjs)
+ _vm->_scrolls.display("Before you ask, you remember that your hands are full.");
+ else {
+ if (_vm->_gyro.dna.bought_onion)
+ _vm->_visa.dixi('D', 11);
+ else {
+ _vm->_visa.dixi('D', 9);
+ _vm->_lucerna.points(3);
+ }
+ _vm->_gyro.pennycheck(3); /* It costs thruppence. */
+ _vm->_gyro.dna.obj[_vm->_gyro.onion] = true;
+ _vm->_lucerna.objectlist();
+ _vm->_gyro.dna.bought_onion = true;
+ _vm->_gyro.dna.rotten_onion = false; /* It's OK when it leaves the stall! */
+ _vm->_gyro.dna.onion_in_vinegar = false;
+ }
+ } else _vm->_visa.dixi('D', 0);
+ } else _vm->_visa.dixi('D', 0);
+ break;
+
+ case r__nottspub:
+ _vm->_visa.dixi('n', 15);
+ break; /* Can't sell to southerners. */
+ default:
+ _vm->_visa.dixi('D', 0); /* Can't buy that. */
+ }
+ }
+ break;
+ case vb_attack: {
+ if ((_vm->_gyro.dna.room == r__brummieroad) &&
+ ((person == '\235') || (thing == _vm->_gyro.crossbow) || (thing == _vm->_gyro.bolt))
+ && (_vm->_gyro.whereis['\235'] == _vm->_gyro.dna.room)) {
+ switch (_vm->_gyro.dna.obj[_vm->_gyro.bolt] + _vm->_gyro.dna.obj[_vm->_gyro.crossbow] * 2) {
+ /* 0 = neither, 1 = only bolt, 2 = only crossbow,
+ 3 = both. */
+ case 0: {
+ _vm->_visa.dixi('Q', 10);
+ _vm->_scrolls.display("(At the very least, don't use your bare hands!)");
+ }
+ break;
+ case 1:
+ _vm->_scrolls.display(Common::String("Attack _vm->_gyro.him with only a crossbow bolt? Are you ") +
+ "planning on playing darts?!");
+ break;
+ case 2:
+ _vm->_scrolls.display(Common::String("Come on, Avvy! You're not going to get very far ") +
+ "with only a crossbow!");
+ break;
+ case 3: {
+ _vm->_visa.dixi('Q', 11);
+ _vm->_gyro.dna.cwytalot_gone = true;
+ _vm->_gyro.dna.obj[_vm->_gyro.bolt] = false;
+ _vm->_gyro.dna.obj[_vm->_gyro.crossbow] = false;
+ _vm->_lucerna.objectlist();
+ _vm->_gyro.magics[12].op = _vm->_gyro.nix;
+ _vm->_lucerna.points(7);
+ _vm->_trip.tr[2].walkto(2);
+ _vm->_trip.tr[2].vanishifstill = true;
+ _vm->_trip.tr[2].call_eachstep = false;
+ _vm->_gyro.whereis['\235'] = 177;
+ }
+ break;
+ default:
+ _vm->_visa.dixi('Q', 10); /* Please try not to be so violent! */
+ }
+ } else _vm->_visa.dixi('Q', 10);
+ }
+ break;
+ case vb_password:
+ if (_vm->_gyro.dna.room != r__bridge)
+ _vm->_visa.dixi('Q', 12);
+ else {
+ ok = true;
+ for (ff = 1; ff <= thats.size(); ff ++)
+ for (fv = 1; fv <= words[_vm->_gyro.dna.pass_num + first_password].w.size(); fv ++) {
+ Common::String temp = realwords[ff];
+ temp.toUppercase();
+ if (words[_vm->_gyro.dna.pass_num + first_password].w[fv] != temp[fv])
+ ok = false;
+ }
+ if (ok) {
+ if (_vm->_gyro.dna.drawbridge_open != 0)
+ _vm->_scrolls.display("Contrary to your expectations, the drawbridge fails to close again.");
+ else {
+ _vm->_lucerna.points(4);
+ _vm->_scrolls.display("The drawbridge opens!");
+ _vm->_timeout.set_up_timer(7, _vm->_timeout.procopen_drawbridge, _vm->_timeout.reason_drawbridgefalls);
+ _vm->_gyro.dna.drawbridge_open = 1;
+ }
+ } else _vm->_visa.dixi('Q', 12);
+ }
+ break;
+ case vb_dir:
+ _vm->_enid.dir(realwords[2]);
+ break;
+ case vb_die:
+ _vm->_lucerna.gameover();
+ break;
+ case vb_score:
+ _vm->_scrolls.display(Common::String("Your score is ") + _vm->_gyro.strf(_vm->_gyro.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)
+ _vm->_scrolls.display("Kiss whom?");
+ else if (personshere())
+ switch (person) {
+ case _vm->_gyro.parkata:
+ _vm->_visa.dixi('U', 12);
+ break;
+ case _vm->_gyro.pgeida:
+ _vm->_visa.dixi('U', 13);
+ break;
+ case _vm->_gyro.pwisewoman:
+ _vm->_visa.dixi('U', 14);
+ break;
+ default:
+ _vm->_visa.dixi('U', 5); /* You WHAT? */
+ }
+ else if ((150 <= person) && (person <= 174))
+ _vm->_scrolls.display("Hey, what kind of a weirdo are you??");
+
+ break;
+
+ case vb_climb:
+ if (_vm->_gyro.dna.room == r__insidecardiffcastle) cardiff_climbing();
+ else /* In the wrong room! */
+ _vm->_scrolls.display("Not with your head for heights, Avvy!");
+ break;
+
+ case vb_jump: {
+ _vm->_timeout.set_up_timer(1, _vm->_timeout.procjump, _vm->_timeout.reason_jumping);
+ _vm->_gyro.dna.user_moves_avvy = false;
+ }
+ break;
+
+ case vb_highscores:
+ // show_highs();
+ // to be implemented later...
+ break;
+
+ case vb_wake:
+ if (personshere())
+ switch (person) {
+ case pardon:
+ case _vm->_gyro.pavalot:
+ case '\0':
+ if (! _vm->_gyro.dna.avvy_is_awake) {
+ _vm->_gyro.dna.avvy_is_awake = true;
+ _vm->_lucerna.points(1);
+ _vm->_gyro.dna.avvy_in_bed = true;
+ _vm->_celer.show_one(3); /* Picture of Avvy, awake in bed. */
+ if (_vm->_gyro.dna.teetotal) _vm->_visa.dixi('d', 13);
+ } else _vm->_scrolls.display("You're already awake, Avvy!");
+ break;
+ case _vm->_gyro.payles:
+ if (! _vm->_gyro.dna.ayles_is_awake) _vm->_scrolls.display("You can't seem to wake _vm->_gyro.him by yourself.");
+ break;
+ case _vm->_gyro.pjacques:
+ _vm->_scrolls.display(Common::String("Brother Jacques, Brother Jacques, are you asleep?\231\2") +
+ "Hmmm... that doesn't seem to do any good...");
+ break;
+ default:
+ _vm->_scrolls.display("It's difficult to awaken people who aren't asleep...!");
+ }
+ break;
+
+ case vb_sit:
+ if (_vm->_gyro.dna.room == r__nottspub) {
+ if (_vm->_gyro.dna.sitting_in_pub)
+ _vm->_scrolls.display("You're already sitting!");
+ else {
+ _vm->_trip.tr[1].walkto(4); /* Move Avvy to the place, and sit _vm->_gyro.him down. */
+ _vm->_timeout.set_up_timer(1, _vm->_timeout.procavvy_sit_down, _vm->_timeout.reason_sitting_down);
+ }
+ } else {
+ /* Default doodah. */
+ _vm->_lucerna.dusk();
+ _vm->_gyro.hang_around_for_a_while();
+ _vm->_lucerna.dawn();
+ _vm->_scrolls.display("A few hours later...\20nothing much has happened...");
+ }
+ break;
+
+ case vb_restart:
+ if (_vm->_scrolls.ask("Restart game and lose changes?")) {
+ _vm->_lucerna.dusk();
+ _vm->_gyro.newgame();
+ _vm->_lucerna.dawn();
+ }
+ break;
+
+ case pardon:
+ _vm->_scrolls.display("Hey, a verb would be helpful!");
+ break;
+
+ case vb_hello: {
+ person_speaks();
+ _vm->_scrolls.display("Hello.\2");
+ }
+ break;
+ case vb_thanks: {
+ person_speaks();
+ _vm->_scrolls.display("That's OK.\2");
+ }
+ break;
+ default:
+ _vm->_scrolls.display(Common::String('\7') + "Parser bug!");
+ }
+ }
+}
+
+void Acci::verbopt(char n, Common::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 = '?';
+ }
+ }
+}
+
+
+
+} // End of namespace Avalanche.
diff --git a/engines/avalanche/acci2.h b/engines/avalanche/acci2.h
new file mode 100644
index 0000000000..5650146414
--- /dev/null
+++ b/engines/avalanche/acci2.h
@@ -0,0 +1,219 @@
+/* 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.
+ */
+
+/* ACCIDENCE II The parser. */
+
+#ifndef ACCI2_H
+#define ACCI2_H
+
+#include "common/scummsys.h"
+#include "common/str.h"
+
+namespace Avalanche {
+class AvalancheEngine;
+
+class Acci {
+public:
+ /* verb codes */
+ static const char vb_exam = 1;
+ static const char vb_open = 2;
+ static const char vb_pause = 3;
+ static const char vb_get = 4;
+ static const char vb_drop = 5;
+ static const char vb_inv = 6;
+ static const char vb_talk = 7;
+ static const char vb_give = 8;
+ static const char vb_drink = 9;
+ static const char vb_load = 10;
+ static const char vb_save = 11;
+ static const char vb_pay = 12;
+ static const char vb_look = 13;
+ static const char vb_break = 14;
+ static const char vb_quit = 15;
+ static const char vb_sit = 16;
+ static const char vb_stand = 17;
+ static const char vb_go = 18;
+ static const char vb_info = 19;
+ static const char vb_undress = 20;
+ static const char vb_wear = 21;
+ static const char vb_play = 22;
+ static const char vb_ring = 23;
+ static const char vb_help = 24;
+ static const char vb_larrypass = 25;
+ static const char vb_phaon = 26;
+ static const char vb_boss = 27;
+ static const char vb_pee = 28;
+ static const char vb_cheat = 29;
+ static const char vb_magic = 30;
+ static const char vb_restart = 31;
+ static const char vb_eat = 32;
+ static const char vb_listen = 33;
+ static const char vb_buy = 34;
+ static const char vb_attack = 35;
+ static const char vb_password = 36;
+ static const char vb_dir = 37;
+ static const char vb_die = 38;
+ static const char vb_score = 39;
+ static const char vb_put = 40;
+ static const char vb_kiss = 41;
+ static const char vb_climb = 42;
+ static const char vb_jump = 43;
+ static const char vb_highscores = 44;
+ static const char vb_wake = 45;
+ static const char vb_hello = 46;
+ static const char vb_thanks = 47;
+
+ static const char vb_smartalec = 249;
+ static const char vb_expletive = 253;
+
+ static const char pardon = 254; /* =didn't understand / wasn't given. */
+
+ static const int16 nowords = 277; /* how many words does the parser know? */
+ static const char nowt = 372;
+ static const char moved = 0; /* This word was moved. (Usually because it was the subject of
+ conversation.) */
+
+ static const int16 first_password = 89; /* Words[first_password] should equal "TIROS". */
+
+
+
+ struct vocab {
+ byte n;
+ Common::String w;
+ };
+
+ static const vocab words[nowords];
+
+ static const char what[];
+
+
+
+ struct ranktype {
+ uint16 score;
+ Common::String title;
+ };
+
+ static const ranktype ranks[9];
+
+
+
+ Common::String thats;
+ Common::String unknown;
+ Common::String realwords[11];
+ char verb, person, thing, thing2;
+ bool polite;
+
+
+
+
+ void setParent(AvalancheEngine *vm);
+
+ void init();
+
+ void clearwords();
+ void parse();
+ void lookaround();
+ void opendoor();
+ void do_that();
+ void verbopt(char n, Common::String &answer, char &anskey);
+ void have_a_drink();
+
+private:
+ AvalancheEngine *_vm;
+
+ byte fv;
+
+ void checkword(Common::String &x);
+ Common::String wordnum(Common::String x);
+
+ void replace(Common::String old1, Common::String new1);
+
+ Common::String rank();
+
+ Common::String totaltime();
+
+ void number(Common::String &codes);
+ void cheatparse(Common::String codes);
+
+ void punctustrip(Common::String &x);
+
+ void displaywhat(char ch, bool animate, bool &ambigous);
+ bool do_pronouns();
+
+ void lowercase();
+ void propernouns();
+ void sayit();
+ void store_interrogation(byte interrogation);
+
+ void clearuint16s();
+
+ void examobj();
+
+ bool personshere();
+
+ void exampers();
+
+ bool holding();
+
+ void special(bool before);
+ void examine();
+
+ void inv();
+
+ void swallow();
+
+ void others();
+
+ void silly();
+ void putproc();
+
+ void not_in_order();
+ void go_to_cauldron();
+ bool give2spludwick();
+
+ void cardiff_climbing();
+
+ void already();
+ void stand_up();
+
+ void getproc(char thing);
+
+ void give_geida_the_lute();
+
+ void play_harp();
+
+ void winsequence();
+
+ void person_speaks();
+
+ void heythanks();
+
+};
+
+} // End of namespace Avalanche.
+
+#endif // ACCI2_H
diff --git a/engines/avalanche/avalanche.cpp b/engines/avalanche/avalanche.cpp
index d090f8aa2c..240c7b68ae 100644
--- a/engines/avalanche/avalanche.cpp
+++ b/engines/avalanche/avalanche.cpp
@@ -60,6 +60,7 @@ namespace Avalanche {
_sequence.setParent(this);
_timeout.setParent(this);
_trip.setParent(this);
+ _acci.setParent(this);
}
AvalancheEngine::~AvalancheEngine() {
diff --git a/engines/avalanche/avalanche.h b/engines/avalanche/avalanche.h
index f7f5b5b6fd..5fa0fa9268 100644
--- a/engines/avalanche/avalanche.h
+++ b/engines/avalanche/avalanche.h
@@ -43,6 +43,7 @@
#include "avalanche/sequence2.h"
#include "avalanche/timeout2.h"
#include "avalanche/trip6.h"
+#include "avalanche/acci2.h"
#include "engines/engine.h"
#include "engines/advancedDetector.h"
@@ -72,6 +73,7 @@ public:
Sequence _sequence;
Timeout _timeout;
Trip _trip;
+ Acci _acci;
AvalancheEngine(OSystem *syst, const AvalancheGameDescription *gd);
~AvalancheEngine();
diff --git a/engines/avalanche/celer2.cpp b/engines/avalanche/celer2.cpp
index d9af28a13e..4296f36f70 100644
--- a/engines/avalanche/celer2.cpp
+++ b/engines/avalanche/celer2.cpp
@@ -27,13 +27,15 @@
/* CELER The unit for updating the screen pics. */
+#include "avalanche/avalanche.h"
+
#include "avalanche/celer2.h"
-#include "common/textconsole.h"
#include "avalanche/trip6.h"
#include "avalanche/lucerna2.h"
#include "avalanche/gyro2.h"
#include "avalanche/roomnums.h"
-#include "avalanche/avalanche.h"
+
+#include "common/textconsole.h"
namespace Avalanche {
diff --git a/engines/avalanche/celer2.h b/engines/avalanche/celer2.h
index 263d717ab9..e71dec5f19 100644
--- a/engines/avalanche/celer2.h
+++ b/engines/avalanche/celer2.h
@@ -30,8 +30,6 @@
#ifndef CELER2_H
#define CELER2_H
-
-
#include "common/scummsys.h"
#include "common/str.h"
diff --git a/engines/avalanche/enhanced2.cpp b/engines/avalanche/enhanced2.cpp
index 99ddfb4340..f664d82c3c 100644
--- a/engines/avalanche/enhanced2.cpp
+++ b/engines/avalanche/enhanced2.cpp
@@ -25,8 +25,10 @@
* Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman.
*/
+#include "avalanche/avalanche.h"
+
#include "avalanche/enhanced2.h"
-#include "common/system.h"
+
#include "common/textconsole.h"
namespace Avalanche {
diff --git a/engines/avalanche/enhanced2.h b/engines/avalanche/enhanced2.h
index d780f11c4c..917ed3c56c 100644
--- a/engines/avalanche/enhanced2.h
+++ b/engines/avalanche/enhanced2.h
@@ -32,7 +32,7 @@
#ifndef ENHANCED2_H
#define ENHANCED2_H
-#include "common/system.h"
+#include "common/scummsys.h"
namespace Avalanche {
class AvalancheEngine;
diff --git a/engines/avalanche/enid2.cpp b/engines/avalanche/enid2.cpp
index 628c05db0f..f0488db78a 100644
--- a/engines/avalanche/enid2.cpp
+++ b/engines/avalanche/enid2.cpp
@@ -27,9 +27,6 @@
/* ENID Edna's manager. */
-#include "common/scummsys.h"
-#include "common/textconsole.h"
-
#include "avalanche/avalanche.h"
#include "avalanche/enid2.h"
@@ -39,6 +36,9 @@
#include "avalanche/timeout2.h"
#include "avalanche/celer2.h"
#include "avalanche/sequence2.h"
+
+#include "common/textconsole.h"
+
//#include "fileunit.h"
//#include "basher.h"
diff --git a/engines/avalanche/enid2.h b/engines/avalanche/enid2.h
index 4351354270..8c02ef194a 100644
--- a/engines/avalanche/enid2.h
+++ b/engines/avalanche/enid2.h
@@ -32,7 +32,6 @@
#include "common/scummsys.h"
-#include "avalanche/gyro2.h"
namespace Avalanche {
class AvalancheEngine;
diff --git a/engines/avalanche/gyro2.cpp b/engines/avalanche/gyro2.cpp
index a0676f47ab..c247012256 100644
--- a/engines/avalanche/gyro2.cpp
+++ b/engines/avalanche/gyro2.cpp
@@ -27,20 +27,21 @@
/* GYRO It all revolves around this bit! */
+#include "avalanche/avalanche.h"
+
#include "avalanche/gyro2.h"
+#include "avalanche/pingo2.h"
+#include "avalanche/scrolls2.h"
+#include "avalanche/lucerna2.h"
+#include "avalanche/visa2.h"
+#include "avalanche/acci2.h"
+#include "avalanche/trip6.h"
+
#include "common/textconsole.h"
-//#include "pingo.h"
-//#include "scrolls.h"
-//#include "lucerna.h"
-//#include "visa.h"
-//#include "acci.h"
-//#include "trip5.h"
//#include "dropdown.h"
//#include "basher.h"
-
-
namespace Avalanche {
const char *Gyro::vernum = "1.30";
diff --git a/engines/avalanche/gyro2.h b/engines/avalanche/gyro2.h
index 3d022fb586..42463504a3 100644
--- a/engines/avalanche/gyro2.h
+++ b/engines/avalanche/gyro2.h
@@ -30,7 +30,6 @@
#ifndef GYRO2_H
#define GYRO2_H
-#include "common/system.h"
#include "common/str.h"
#include "common/scummsys.h"
@@ -498,7 +497,7 @@ public:
Common::String mousetext;
/* which:array[0..5] of byte;*/
void *p;
- bool weirduint16;
+ bool weirdword;
byte to_do;
bool lmo, mousemade;
Common::String scroll[15];
diff --git a/engines/avalanche/logger2.cpp b/engines/avalanche/logger2.cpp
index b9452e3e4a..08981f5d20 100644
--- a/engines/avalanche/logger2.cpp
+++ b/engines/avalanche/logger2.cpp
@@ -27,12 +27,12 @@
/* LOGGER Handles the logging. */
+#include "avalanche/avalanche.h"
+
#include "avalanche/logger2.h"
#include "avalanche/gyro2.h"
-#include "avalanche/avalanche.h"
-//#include "avalanche/trip6.h"
+#include "avalanche/trip6.h"
-#include "common/system.h"
#include "common/textconsole.h"
namespace Avalanche {
diff --git a/engines/avalanche/logger2.h b/engines/avalanche/logger2.h
index bd54823495..05a96d08ca 100644
--- a/engines/avalanche/logger2.h
+++ b/engines/avalanche/logger2.h
@@ -33,7 +33,6 @@
#include "common/scummsys.h"
#include "common/str.h"
-
namespace Avalanche {
class AvalancheEngine;
diff --git a/engines/avalanche/lucerna2.cpp b/engines/avalanche/lucerna2.cpp
index 3c1d59c8b3..344c273cdb 100644
--- a/engines/avalanche/lucerna2.cpp
+++ b/engines/avalanche/lucerna2.cpp
@@ -29,14 +29,11 @@
#include "avalanche/avalanche.h"
-#include "common/system.h"
#include "avalanche/lucerna2.h"
#include "avalanche/gyro2.h"
#include "avalanche/scrolls2.h"
#include "avalanche/logger2.h"
#include "avalanche/enhanced2.h"
-
-
#include "avalanche/visa2.h"
#include "avalanche/timeout2.h"
#include "avalanche/trip6.h"
@@ -46,6 +43,7 @@
#include "avalanche/sequence2.h"
#include "avalanche/acci2.h"
+#include "common/system.h"
//#include "dropdown.h"
//#include "basher.h"
diff --git a/engines/avalanche/lucerna2.h b/engines/avalanche/lucerna2.h
index 259b639b6f..d4e729aaf4 100644
--- a/engines/avalanche/lucerna2.h
+++ b/engines/avalanche/lucerna2.h
@@ -37,8 +37,6 @@ class AvalancheEngine;
class Lucerna {
public:
- // Call it where Lucerna is first used.
- // Procuded to replace the initizalization part of the original Pascal unit.
Lucerna();
void setParent(AvalancheEngine *vm);
diff --git a/engines/avalanche/pingo2.cpp b/engines/avalanche/pingo2.cpp
index b2f8e83886..92c22e65bf 100644
--- a/engines/avalanche/pingo2.cpp
+++ b/engines/avalanche/pingo2.cpp
@@ -30,11 +30,10 @@
#include "avalanche/avalanche.h"
#include "avalanche/pingo2.h"
-
#include "avalanche/gyro2.h"
#include "avalanche/lucerna2.h"
#include "avalanche/trip6.h"
-//#include "avalanche/scrolls2.h"
+#include "avalanche/scrolls2.h"
#include "common/textconsole.h"
diff --git a/engines/avalanche/pingo2.h b/engines/avalanche/pingo2.h
index 135bb10c20..28f140f7d4 100644
--- a/engines/avalanche/pingo2.h
+++ b/engines/avalanche/pingo2.h
@@ -33,9 +33,6 @@
#include "common/scummsys.h"
#include "common/str.h"
-
-
-
namespace Avalanche {
class AvalancheEngine;
diff --git a/engines/avalanche/scrolls2.cpp b/engines/avalanche/scrolls2.cpp
index a46f5842dc..aeb952c4a5 100644
--- a/engines/avalanche/scrolls2.cpp
+++ b/engines/avalanche/scrolls2.cpp
@@ -31,16 +31,17 @@
#include "avalanche/gyro2.h"
#include "avalanche/logger2.h"
#include "avalanche/enhanced2.h"
-
-//#include "lucerna.h"
-//#include "trip5.h"
-//#include "Acci.h"
-//#include "basher.h"
-//#include "visa.h"
-//#include "timeout.h"
+#include "avalanche/lucerna2.h"
+#include "avalanche/trip6.h"
+#include "avalanche/acci2.h"
+#include "avalanche/visa2.h"
+#include "avalanche/timeout2.h"
#include "common/textconsole.h"
+//#include "basher.h"
+//#include "avalanche/joystick2.h" - Will be implemented later, if it will be implemented at all...
+
namespace Avalanche {
const int16 Scrolls::roman = 0;
diff --git a/engines/avalanche/scrolls2.h b/engines/avalanche/scrolls2.h
index 914e463f3f..fa52a55905 100644
--- a/engines/avalanche/scrolls2.h
+++ b/engines/avalanche/scrolls2.h
@@ -30,9 +30,6 @@
#include "common/system.h"
-#include "avalanche/gyro2.h"
-// #include "avalanche/joystick2.h" - Will be implemented later, if it will be implemented at all...
-
namespace Avalanche {
class AvalancheEngine;
diff --git a/engines/avalanche/sequence2.cpp b/engines/avalanche/sequence2.cpp
index 1eb97a85a8..38d46d86c9 100644
--- a/engines/avalanche/sequence2.cpp
+++ b/engines/avalanche/sequence2.cpp
@@ -30,12 +30,13 @@
#include "avalanche/avalanche.h"
#include "avalanche/sequence2.h"
-#include "common/scummsys.h"
#include "avalanche/gyro2.h"
#include "avalanche/timeout2.h"
#include "avalanche/celer2.h"
#include "avalanche/trip6.h"
+#include "common/scummsys.h"
+
namespace Avalanche {
void Sequence::setParent(AvalancheEngine *vm) {
diff --git a/engines/avalanche/timeout2.cpp b/engines/avalanche/timeout2.cpp
index 864276fdd7..6bdfcde1f8 100644
--- a/engines/avalanche/timeout2.cpp
+++ b/engines/avalanche/timeout2.cpp
@@ -29,12 +29,10 @@
// DON'T FORGET ABOUT THE ARRAY INDEXES, THEY MAY'LL CAUSE TROUBLES!!!
-#include "common/textconsole.h"
-
-#include "avalanche/timeout2.h"
#include "avalanche/avalanche.h"
+#include "avalanche/timeout2.h"
#include "avalanche/visa2.h"
#include "avalanche/lucerna2.h"
#include "avalanche/trip6.h"
@@ -44,6 +42,8 @@
#include "avalanche/enid2.h"
#include "avalanche/pingo2.h"
+#include "common/textconsole.h"
+
namespace Avalanche {
Timeout::Timeout() {
@@ -496,7 +496,7 @@ void Timeout::buydrinks() {
_vm->_visa.dixi('D', 1); /* That'll be thruppence. */
if (_vm->_gyro.pennycheck(3)) /* Pay 3d. */
_vm->_visa.dixi('D', 3); /* Tell 'em you paid up. */
- Acci::have_a_drink();
+ _vm->_acci.have_a_drink();
}
void Timeout::buywine() {
@@ -621,8 +621,7 @@ void Timeout::winning() {
do {
_vm->_lucerna.checkclick();
} while (!(_vm->_gyro.mrelease == 0));
-
- _vm->_lucerna.callverb(Acci::vb_score);
+ _vm->_lucerna.callverb(_vm->_acci.vb_score);
_vm->_scrolls.display(" T H E E N D ");
_vm->_gyro.lmo = true;
}
diff --git a/engines/avalanche/timeout2.h b/engines/avalanche/timeout2.h
index f7e984e42f..07a48d6ad0 100644
--- a/engines/avalanche/timeout2.h
+++ b/engines/avalanche/timeout2.h
@@ -32,9 +32,6 @@
#include "common/scummsys.h"
-#include "avalanche/gyro2.h"
-#include "avalanche/celer2.h"
-
namespace Avalanche {
class AvalancheEngine;
diff --git a/engines/avalanche/trip6.cpp b/engines/avalanche/trip6.cpp
index ac37efe30d..7591c5c032 100644
--- a/engines/avalanche/trip6.cpp
+++ b/engines/avalanche/trip6.cpp
@@ -27,12 +27,9 @@
/* TRIP5 Trippancy V */
-#include "avalanche/trip6.h"
-#include "common/scummsys.h"
-#include "common/textconsole.h"
-
#include "avalanche/avalanche.h"
+#include "avalanche/trip6.h"
#include "avalanche/scrolls2.h"
#include "avalanche/lucerna2.h"
#include "avalanche/visa2.h"
@@ -42,6 +39,9 @@
#include "avalanche/timeout2.h"
#include "avalanche/enid2.h"
+#include "common/scummsys.h"
+#include "common/textconsole.h"
+
/*#include "Dropdown.h"*/
@@ -356,11 +356,10 @@ byte Trip::geida_ped(byte which) {
return geida_ped_result;
}
-void Trip::catamove(byte ped)
+void Trip::catamove(byte ped) {
/* When you enter a new position in the catacombs, this procedure should
be called. It changes the Also codes so that they may match the picture
on the screen. (Coming soon: It draws up the screen, too.) */
-{
warning("Repair array indexes in Trip::catamove()");
diff --git a/engines/avalanche/trip6.h b/engines/avalanche/trip6.h
index be805fbe03..d7b5637542 100644
--- a/engines/avalanche/trip6.h
+++ b/engines/avalanche/trip6.h
@@ -31,13 +31,9 @@
#ifndef TRIP6_H
#define TRIP6_H
-
-
#include "common/scummsys.h"
#include "common/str.h"
-#include "avalanche/gyro2.h"
-
namespace Avalanche {
class AvalancheEngine;
diff --git a/engines/avalanche/visa2.cpp b/engines/avalanche/visa2.cpp
index a14367a6a8..e53f55aef4 100644
--- a/engines/avalanche/visa2.cpp
+++ b/engines/avalanche/visa2.cpp
@@ -32,12 +32,12 @@
#include "avalanche/visa2.h"
#include "avalanche/gyro2.h"
#include "avalanche/scrolls2.h"
-//#include "avalanche/acci2.h"
+#include "avalanche/acci2.h"
#include "avalanche/lucerna2.h"
+#include "avalanche/trip6.h"
#include "common/textconsole.h"
-/*#include "Trip5.h"*/
namespace Avalanche {