2013-06-30 22:01:05 +02:00
|
|
|
|
/* ScummVM - Graphic Adventure Engine
|
2013-06-29 15:56:08 +02:00
|
|
|
|
*
|
|
|
|
|
* 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"
|
|
|
|
|
|
2013-06-29 16:36:40 +02:00
|
|
|
|
#include "avalanche/acci2.h"
|
2013-06-29 15:56:08 +02:00
|
|
|
|
#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"
|
|
|
|
|
|
2013-06-29 16:36:40 +02:00
|
|
|
|
#include "common/textconsole.h"
|
|
|
|
|
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
|
|
|
|
/*#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 */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
{200, "_vm->_gyro->him"}, {200, "MAN"}, {200, "GUY"},
|
2013-06-29 15:56:08 +02:00
|
|
|
|
{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"}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2013-07-24 19:43:10 +02:00
|
|
|
|
Acci::Acci(AvalancheEngine *vm) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
_vm = vm;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::init() {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->weirdword = false;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (x == "") {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
wordnum_result = "";
|
|
|
|
|
return wordnum_result;
|
|
|
|
|
}
|
|
|
|
|
whatsit = pardon;
|
|
|
|
|
gotcha = false;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
for (fv = nowords; fv >= 1; fv--)
|
|
|
|
|
checkword(x);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
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);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
blockwrite(f,_vm->_gyro->dna,177); { just anything }
|
2013-06-29 15:56:08 +02:00
|
|
|
|
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;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display('Dumped.');
|
2013-06-29 15:56:08 +02:00
|
|
|
|
end;*/
|
|
|
|
|
|
|
|
|
|
Common::String Acci::rank() {
|
|
|
|
|
byte fv;
|
|
|
|
|
|
2013-06-30 22:01:05 +02:00
|
|
|
|
Common::String rank_result = "";
|
|
|
|
|
for (fv = 1; fv <= 8; fv++) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if ((_vm->_gyro->dna.score >= ranks[fv].score) && (_vm->_gyro->dna.score < ranks[fv + 1].score)) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
rank_result = ranks[fv].title;
|
|
|
|
|
return rank_result;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
}
|
|
|
|
|
|
2013-06-29 15:56:08 +02:00
|
|
|
|
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;
|
|
|
|
|
|
2013-07-24 19:43:10 +02:00
|
|
|
|
warning("STUB: Acci::_vm->_scrolls->displaywhat()");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
byte q = 0;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
|
|
|
|
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." */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(*_vm->_gyro->also[0][1]);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.room) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case r__spludwicks:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.avaricius_talk > 0)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 23);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else
|
|
|
|
|
others();
|
|
|
|
|
break;
|
|
|
|
|
case r__robins:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.tied_up)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 38);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.mushroom_growing)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 55);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case r__insidecardiffcastle:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (!_vm->_gyro->dna.taken_pen)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 49);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case r__lustiesroom:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.lustie_is_asleep)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 65);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case r__catacombs:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.cat_y * 256 + _vm->_gyro->dna.cat_x) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case 258 :
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 80);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break; /* Inside art gallery */
|
|
|
|
|
case 514 :
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 81);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break; /* Outside ditto */
|
|
|
|
|
case 260 :
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 82);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break; /* Outside Geida's room. */
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
others();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::opendoor() { /* so whaddya THINK this does?! */
|
|
|
|
|
byte fv;
|
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.room) { /* Special cases. */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case r__yours:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(2)) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* Opening the box. */
|
|
|
|
|
thing = 54; /* The box. */ person = pardon;
|
|
|
|
|
examine();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case r__spludwicks:
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (thing == 61) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 85);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if ((!_vm->_gyro->dna.user_moves_avvy) && (_vm->_gyro->dna.room != r__lusties))
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return; /* No doors can open if you can't move Avvy. */
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
|
|
|
|
for (fv = 9; fv <= 15; fv++) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(fv)) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
{
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->portals[fv];
|
|
|
|
|
switch (_vm->_gyro->portals[fv].op) {
|
|
|
|
|
case _vm->_gyro->exclaim:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->tr[1].bounce();
|
|
|
|
|
_vm->_visa->dixi('x', _vm->_gyro->portals[fv].data);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->transport:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->fliproom((_vm->_gyro->portals[fv].data) >> 8 /*High byte*/, (_vm->_gyro->portals[fv].data) & 0x0F /*Low byte*/);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->unfinished:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->tr[1].bounce();
|
|
|
|
|
_vm->_scrolls->display("Sorry. This place is not available yet!");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->special:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->call_special(_vm->_gyro->portals[fv].data);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->mopendoor:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->open_the_door((_vm->_gyro->portals[fv].data) >> 8, (_vm->_gyro->portals[fv].data) & 0x0F, fv);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
}
|
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room == r__map)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Avvy, you can complete the whole game without ever going "
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"to anywhere other than Argent, Birmingham, Cardiff, "
|
|
|
|
|
"Nottingham and Norwich."));
|
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Door? What door?");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Acci::silly() {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Don't be silly!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::putproc() { /* Called when you call vb_put. */
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (!holding())
|
|
|
|
|
return;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
|
|
|
|
thing2 -= 49; /* Slip the second object */
|
2013-06-30 22:01:05 +02:00
|
|
|
|
char temp = thing;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
thing = thing2;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (!holding())
|
|
|
|
|
return;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
thing = temp;
|
|
|
|
|
|
|
|
|
|
/* Thing is the thing which you're putting in. Thing2 is where you're
|
|
|
|
|
putting it. */
|
|
|
|
|
/* Convenience thing. */
|
|
|
|
|
switch (thing2) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->wine:
|
|
|
|
|
if (thing == _vm->_gyro->onion) {
|
|
|
|
|
if (_vm->_gyro->dna.rotten_onion)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("That's a bit like shutting the stable door after the "
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"horse has bolted!"));
|
|
|
|
|
else { /* Put onion into wine? */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.winestate != 3)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("\6Oignon au vin\22 is a bit too strong for your tastes!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else { /* Put onion into vinegar! Yes! */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.onion_in_vinegar = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(7);
|
|
|
|
|
_vm->_visa->dixi('u', 9);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
|
|
|
|
silly();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 54:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room == 1) { /* Put something into the box. */
|
|
|
|
|
if (_vm->_gyro->dna.box_contents != nowt)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("There's something in the box already, Avvy. Try taking"
|
2013-06-29 15:56:08 +02:00
|
|
|
|
" that out first."));
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->money:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You'd better keep some ready cash on you!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->bell:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("That's a silly place to keep a bell.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->bodkin:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("But you might need it!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->onion:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Just give it to Spludwick, Avvy!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
default:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* Put the object into the box... */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.wearing == thing)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("You'd better take ") + _vm->_gyro->get_better(thing) + " off first!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(5); /* Open box. */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.box_contents = thing;
|
|
|
|
|
_vm->_gyro->dna.obj[thing] = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
|
|
|
|
_vm->_scrolls->display("OK, it's in the box.");
|
|
|
|
|
_vm->_celer->show_one(6); /* Shut box. */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
}
|
|
|
|
|
} else
|
|
|
|
|
silly();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
silly();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* The result of this fn is whether or not he says "Hey, thanks!" */
|
|
|
|
|
void Acci::not_in_order() {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Sorry, I need the ingredients in the right order for this potion.") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
" What I need next is " +
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->get_better(_vm->_gyro->spludwick_order[_vm->_gyro->dna.given2spludwick]) + ".\232\2");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::go_to_cauldron() {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->tr[2].call_eachstep = false; /* Stops Geida_Procs. */
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(1, _vm->_timeout->procspludwick_goes_to_cauldron, _vm->_timeout->reason_spludwalk);
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->tr[2].walkto(2);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool Acci::give2spludwick() {
|
2013-06-30 22:01:05 +02:00
|
|
|
|
bool give2spludwick_result = false;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->spludwick_order[_vm->_gyro->dna.given2spludwick] != thing) {
|
2013-06-30 22:01:05 +02:00
|
|
|
|
not_in_order();
|
|
|
|
|
return give2spludwick_result;
|
|
|
|
|
}
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
2013-06-30 22:01:05 +02:00
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->onion:
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->onion] = false;
|
|
|
|
|
if (_vm->_gyro->dna.rotten_onion)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 22);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.given2spludwick += 1;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 20);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
go_to_cauldron();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(3);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->ink:
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->ink] = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.given2spludwick += 1;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 24);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
go_to_cauldron();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(3);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->mushroom:
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->mushroom] = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 25);
|
|
|
|
|
_vm->_lucerna->points(5);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.given2spludwick += 1;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
go_to_cauldron();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->potion] = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
give2spludwick_result = true;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return give2spludwick_result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::have_a_drink() {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_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;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
|
|
|
|
_vm->_lucerna->dusk();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->hang_around_for_a_while();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->fliproom(1, 1);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->background(14);
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->new_game_for_trippancy(); /* Not really */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::cardiff_climbing() {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.standing_on_dais) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* Clamber up. */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You climb down, back onto the floor.");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.standing_on_dais = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->apped(1, 3);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
} else {
|
|
|
|
|
/* Clamber down. */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(1)) {
|
|
|
|
|
_vm->_scrolls->display("You clamber up onto the dais.");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.standing_on_dais = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->apped(1, 2);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Get a bit closer, Avvy.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Called when you ask Avvy to stand. */
|
|
|
|
|
void Acci::already() {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You're already standing!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::stand_up() {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.room) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case r__yours: /* Avvy isn't asleep. */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.avvy_in_bed) { /* But he's in bed. */
|
|
|
|
|
if (_vm->_gyro->dna.teetotal) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('d', 12);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->background(0);
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('d', 14);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->tr[1].visible = true;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.user_moves_avvy = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->apped(1, 2);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.rw = _vm->_gyro->left;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(4); /* Picture of empty pillow. */
|
|
|
|
|
_vm->_lucerna->points(1);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.avvy_in_bed = false;
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->lose_timer(_vm->_timeout->reason_arkata_shouts);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
|
|
|
|
already();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case r__insidecardiffcastle:
|
|
|
|
|
cardiff_climbing();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case r__nottspub:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.sitting_in_pub) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_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. */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.sitting_in_pub = false; /* Really not sitting down. */
|
|
|
|
|
_vm->_gyro->dna.user_moves_avvy = true; /* And ambulant. */
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
|
|
|
|
already();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
already();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Acci::getproc(char thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.room) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case r__yours:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(2)) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.box_contents == thing) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(5);
|
|
|
|
|
_vm->_scrolls->display("OK, I've got it.");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.obj[thing] = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.box_contents = nowt;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(6);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("I can't see ") + _vm->_gyro->get_better(thing) + " in the box.");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 57);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case r__insidecardiffcastle:
|
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pen:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(2)) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* Standing on the dais. */
|
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.taken_pen)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("It's not there, Avvy.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
|
|
|
|
/* OK: we're taking the pen, and it's there. */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(4); /* No pen there now. */
|
|
|
|
|
_vm->_trip->call_special(3); /* Zap! */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.taken_pen = true;
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->pen] = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
|
|
|
|
_vm->_scrolls->display("Taken.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-07-24 18:25:07 +02:00
|
|
|
|
} else if (_vm->_gyro->dna.standing_on_dais)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 53);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 51);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->bolt:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 52);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 57);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case r__robins:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if ((thing == _vm->_gyro->mushroom) & (_vm->_trip->infield(1)) & (_vm->_gyro->dna.mushroom_growing)) {
|
|
|
|
|
_vm->_celer->show_one(3);
|
|
|
|
|
_vm->_scrolls->display("Got it!");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.mushroom_growing = false;
|
|
|
|
|
_vm->_gyro->dna.taken_mushroom = true;
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->mushroom] = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
|
|
|
|
_vm->_lucerna->points(3);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 57);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 57);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::give_geida_the_lute() {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room != r__lustiesroom) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Not yet. Try later!\232\2");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->lute] = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
|
|
|
|
_vm->_visa->dixi('q', 64); /* She plays it. */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
2013-06-30 22:01:05 +02:00
|
|
|
|
/* And the rest has been moved to Timeout... under give_lute_to_Geida. */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(1, _vm->_timeout->procgive_lute_to_geida, _vm->_timeout->reason_geida_sings);
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_enid->back_to_bootstrap(4);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::play_harp() {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(7))
|
|
|
|
|
_vm->_scrolls->musical_scroll();
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Get a bit closer to it, Avvy!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::winsequence() {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_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();
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(30, _vm->_timeout->procwinning, _vm->_timeout->reason_winning);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::person_speaks() {
|
|
|
|
|
bool found;
|
|
|
|
|
byte fv;
|
|
|
|
|
char cfv;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((person == pardon) || (person == '\0')) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if ((_vm->_gyro->him == pardon) || (_vm->_gyro->whereis[_vm->_gyro->him] != _vm->_gyro->dna.room))
|
|
|
|
|
person = _vm->_gyro->her;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else
|
2013-07-24 18:25:07 +02:00
|
|
|
|
person = _vm->_gyro->him;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->whereis[person] != _vm->_gyro->dna.room) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("\231\4"); /* Avvy _vm->_gyro->himself! */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
found = false; /* The person we're looking for's code is in Person. */
|
|
|
|
|
|
2013-07-24 19:43:10 +02:00
|
|
|
|
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');
|
2013-06-29 15:56:08 +02:00
|
|
|
|
found = true;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
}
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (!found) {
|
|
|
|
|
for (fv = 10; fv <= 25; fv++) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->quasipeds[fv];
|
|
|
|
|
if ((_vm->_gyro->quasipeds[fv].who == person) && (_vm->_gyro->quasipeds[fv].room == _vm->_gyro->dna.room)) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String('\23') + char(fv + 55) + '\4');
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
}
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::heythanks() {
|
|
|
|
|
person_speaks();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hey, thanks!\2(But now, you've lost it!)");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.obj[thing] = false;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->weirdword)
|
2013-06-30 22:01:05 +02:00
|
|
|
|
return;
|
|
|
|
|
if (thing < '\310')
|
|
|
|
|
thing -= 49; /* "Slip" */
|
|
|
|
|
|
|
|
|
|
/*
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if ((!_vm->_gyro->alive) &
|
2013-06-30 22:01:05 +02:00
|
|
|
|
!(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))) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("You're dead, so don't talk. What are you, a ghost ") +
|
2013-06-30 22:01:05 +02:00
|
|
|
|
"or something? Try restarting, or restoring a saved game!");
|
|
|
|
|
return;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if ((~ _vm->_gyro->dna.avvy_is_awake) &
|
2013-06-30 22:01:05 +02:00
|
|
|
|
!(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))) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Talking in your sleep? Try waking up!");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
*/
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (verb) {
|
|
|
|
|
case vb_exam:
|
|
|
|
|
examine();
|
|
|
|
|
break;
|
|
|
|
|
case vb_open:
|
|
|
|
|
opendoor();
|
|
|
|
|
break;
|
|
|
|
|
case vb_pause:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Game paused.") + '\3' + '\15' + '\15' + "Press Enter, Esc, or click " +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"the mouse on the `O.K.\" box to continue.");
|
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_get:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
if (thing != pardon) {
|
|
|
|
|
/* Legitimate try to pick something up. */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.carrying >= maxobjs)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You can't carry any more!");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else
|
|
|
|
|
getproc(thing);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
/* Not... ditto. */
|
|
|
|
|
if (person != pardon)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You can't sweep folk off their feet!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("I assure you, you don't need it.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case vb_drop:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Two years ago you dropped a florin in the street. Three days ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"later it was gone! So now you never leave ANYTHING lying around. OK?");
|
|
|
|
|
break;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
/* begin _vm->_gyro->dna.obj[thing]:=false; _vm->_lucerna->objectlist(); end;*/
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case vb_inv:
|
|
|
|
|
inv();
|
|
|
|
|
break;
|
|
|
|
|
case vb_talk:
|
|
|
|
|
if (person == pardon) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->subjnumber == 99) /* They typed "say passuint16". */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Yes, but what \6is\22 the passuint16?");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
/*
|
|
|
|
|
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;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
} else {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
person = _vm->_gyro->subjnumber;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
subjnumber = 0;
|
|
|
|
|
if (set::of(pardon, '\0', eos).has(person))
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Talk to whom?");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else if (personshere())
|
|
|
|
|
talkto(ord(person));
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
*/
|
|
|
|
|
else if (person == pardon)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Talk to whom?");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else if (personshere())
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->talkto(person);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case vb_give:
|
|
|
|
|
if (holding()) {
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (person == pardon)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Give to whom?");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else if (personshere()) {
|
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->money :
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You can't bring yourself to give away your moneybag.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->bodkin:
|
|
|
|
|
case _vm->_gyro->bell:
|
|
|
|
|
case _vm->_gyro->clothes:
|
|
|
|
|
case _vm->_gyro->habit :
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Don't give it away, it might be useful!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
switch (person) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pcrapulus:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->wine:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Crapulus grabs the wine and gulps it down.");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->wine] = false;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
default:
|
|
|
|
|
heythanks();
|
|
|
|
|
}
|
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pcwytalot:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/*if (set::of(crossbow, bolt, eos).has(thing))
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("You might be able to influence ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"Cwytalot more if you used it!");
|
|
|
|
|
else */heythanks();
|
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pspludwick:
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (give2spludwick())
|
|
|
|
|
heythanks();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pibythneth:
|
|
|
|
|
if (thing == _vm->_gyro->badge) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 32); /* Thanks! Wow! */
|
|
|
|
|
_vm->_lucerna->points(3);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->badge] = false;
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->habit] = true;
|
|
|
|
|
_vm->_gyro->dna.givenbadgetoiby = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(8);
|
|
|
|
|
_vm->_celer->show_one(9);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
|
|
|
|
heythanks();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->payles:
|
|
|
|
|
if (_vm->_gyro->dna.ayles_is_awake) {
|
|
|
|
|
if (thing == _vm->_gyro->pen) {
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->pen] = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 54);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->ink] = true;
|
|
|
|
|
_vm->_gyro->dna.given_pen_to_ayles = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
|
|
|
|
_vm->_lucerna->points(2);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
|
|
|
|
heythanks();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("But he's asleep!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pgeida:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->potion:
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->potion] = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('u', 16); /* She drinks it. */
|
|
|
|
|
_vm->_lucerna->points(2);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.geida_given_potion = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->lute:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
give_geida_the_lute();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
heythanks();
|
|
|
|
|
}
|
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->parkata:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->potion:
|
|
|
|
|
if (_vm->_gyro->dna.geida_given_potion)
|
2013-06-29 15:56:08 +02:00
|
|
|
|
winsequence();
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 77);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break; /* That Geida woman! */
|
|
|
|
|
default:
|
|
|
|
|
heythanks();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
heythanks();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist(); /* Just in case... */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case vb_eat:
|
|
|
|
|
case vb_drink:
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (holding())
|
|
|
|
|
swallow();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_load:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_enid->edna_load(realwords[2]);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_save:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->alive)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_enid->edna_save(realwords[2]);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("It's a bit late now to save your game!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_pay:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("No money need change hands.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_look:
|
|
|
|
|
lookaround();
|
|
|
|
|
break;
|
|
|
|
|
case vb_break:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Vandalism is prohibited within this game!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_quit: /* quit */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
//if (_vm->_gyro->demo) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
// _vm->_visa->dixi('q', 31);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
// close(demofile);
|
|
|
|
|
// exit(0); /* Change this later!!! */
|
|
|
|
|
//}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (!polite)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("How about a `please\", Avvy?");
|
|
|
|
|
else if (_vm->_scrolls->ask("\23C\26Do you really want to quit?"))
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->lmo = true;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case vb_go:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Just use the arrow keys to walk there.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_info:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->aboutscroll = true;
|
|
|
|
|
/* _vm->_scrolls->display('Thorsoft of Letchworth presents:'+^c+^m+^m+
|
2013-06-29 15:56:08 +02:00
|
|
|
|
'The medi<EFBFBD>val descendant of'+^m+
|
|
|
|
|
'Denarius Avaricius Sextus'+^m+'in:'+
|
|
|
|
|
^m+^m+'LORD AVALOT D''ARGENT'+
|
|
|
|
|
^m+'version '+vernum+^m+^m+'Copyright <EFBFBD> '
|
|
|
|
|
+copyright+', Mark, Mike and Thomas Thurman.');*/
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("\r\r\r\r\r\r\r") + "LORD AVALOT D'ARGENT" + "\3\r" +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"The medi<64>val descendant of" + '\15' +
|
|
|
|
|
"Denarius Avaricius Sextus" +
|
2013-07-24 18:25:07 +02:00
|
|
|
|
'\15' + '\15' + "version " + _vm->_gyro->vernum + '\15' + '\15' + "Copyright <20> "
|
|
|
|
|
+ _vm->_gyro->copyright + ", Mark, Mike and Thomas Thurman." + '\23' + 'Y' + '\26');
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->aboutscroll = false;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case vb_undress:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.wearing == nowt)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You're already stark naked!");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
else if (_vm->_gyro->dna.avvys_in_the_cupboard) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("You take off ") + _vm->_gyro->get_better(_vm->_gyro->dna.wearing) + '.');
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.wearing = nowt;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hadn't you better find somewhere more private, Avvy?");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_wear:
|
|
|
|
|
if (holding()) {
|
|
|
|
|
/* wear something */
|
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->chastity:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hey, what kind of a weirdo are you\??!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->clothes:
|
|
|
|
|
case _vm->_gyro->habit: /* Change this! */
|
|
|
|
|
if (_vm->_gyro->dna.wearing != nowt) {
|
|
|
|
|
if (_vm->_gyro->dna.wearing == thing)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You're already wearing that.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("You'll be rather warm wearing two ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"sets of clothes!");
|
|
|
|
|
return;
|
|
|
|
|
} else
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.wearing = thing;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (thing == _vm->_gyro->habit)
|
2013-06-30 22:01:05 +02:00
|
|
|
|
fv = 3;
|
|
|
|
|
else
|
|
|
|
|
fv = 0;
|
|
|
|
|
|
2013-07-24 19:43:10 +02:00
|
|
|
|
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;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(what);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case vb_play:
|
2013-06-30 22:01:05 +02:00
|
|
|
|
if (thing == pardon) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.room) { /* They just typed "play"... */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
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;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else if (holding()) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
switch (thing) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->lute :
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('U', 7);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->whereis[_vm->_gyro->pcwytalot] == _vm->_gyro->dna.room)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('U', 10);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->whereis[_vm->_gyro->pdulustie] == _vm->_gyro->dna.room)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('U', 15);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case 52:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room == r__musicroom)
|
2013-06-30 22:01:05 +02:00
|
|
|
|
play_harp();
|
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(what);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
case 55:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room == r__argentpub)
|
2013-06-30 22:01:05 +02:00
|
|
|
|
; /*play_nim(); - Don't implement yet.*/
|
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(what);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(what);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case vb_ring:
|
|
|
|
|
if (holding()) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (thing == _vm->_gyro->bell) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Ding, dong, ding, dong, ding, dong, ding, dong...");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if ((_vm->_gyro->dna.ringing_bells) & (_vm->_gyro->flagset('B')))
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("(Are you trying to join in, Avvy\?\?!)");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(what);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case vb_help:
|
|
|
|
|
// boot_help();
|
|
|
|
|
// I don't want to implement help yet.
|
|
|
|
|
break;
|
|
|
|
|
case vb_larrypass:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Wrong game!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_phaon:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hello, Phaon!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_boss:
|
|
|
|
|
// bosskey();
|
|
|
|
|
// I don't want to implement bosskey yet.
|
|
|
|
|
break;
|
|
|
|
|
case vb_pee:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->flagset('P')) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hmm, I don't think anyone will notice...");
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(4, _vm->_timeout->procurinate, _vm->_timeout->reason_gototoilet);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("It would be \6VERY\22 unwise to do that here, Avvy!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_cheat:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String('\6') + "Cheat mode now enabled.");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->cheat = true;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case vb_magic:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.avaricius_talk > 0)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 19);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if ((_vm->_gyro->dna.room == 12) & (_vm->_trip->infield(2))) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* Avaricius appears! */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 17);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->whereis['\227'] == 12)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('q', 18);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_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;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.avaricius_talk = 14;
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(177, _vm->_timeout->procavaricius_talks, _vm->_timeout->reason_avariciustalks);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Nothing appears to happen...");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case vb_smartalec:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Listen, smart alec, that was just rhetoric.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_expletive:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.swore) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case 0:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Avvy! Do you mind? There might be kids playing!\r\r") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"(I shouldn't say it again, if I were you!)");
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("You hear a distant rumble of thunder. Must you always ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"do things I tell you not to?\r\rDon't do it again!");
|
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
default:
|
2013-07-24 18:50:13 +02:00
|
|
|
|
_vm->_pingo->zonk();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("A crack of lightning shoots from the sky, ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"and fries you.\r\r(`Such is the anger of the gods, Avvy!\")");
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->gameover();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.swore++;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case vb_listen:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if ((_vm->_gyro->dna.ringing_bells) & (_vm->_gyro->flagset('B')))
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("All other noise is drowned out by the ringing of ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"the bells.");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
else if (_vm->_gyro->listen == "")
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You can't hear anything much at the moment, Avvy.");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(_vm->_gyro->listen);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_buy:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* What are they trying to buy? */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
switch (_vm->_gyro->dna.room) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case r__argentpub:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(6)) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* We're in a pub, and near the bar. */
|
|
|
|
|
switch (thing) {
|
|
|
|
|
case '\63':
|
|
|
|
|
case '\65':
|
|
|
|
|
case '\66':
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case '\72': /* Beer, whisky, cider or mead */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.malagauche == 177) { /* Already getting us one. */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 15);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.teetotal) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 6);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.alcohol == 0)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(3);
|
|
|
|
|
_vm->_celer->show_one(12);
|
|
|
|
|
_vm->_scrolls->display(booze[thing] + ", please.\231\2");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.drinking = thing;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(10);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.malagauche = 177;
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(27, _vm->_timeout->procbuydrinks, _vm->_timeout->reason_drinks);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case '\64':
|
|
|
|
|
examine();
|
|
|
|
|
break; /* We have a right one here- buy Pepsi??! */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->wine:
|
|
|
|
|
if (_vm->_gyro->dna.obj[_vm->_gyro->wine]) /* We've already got the wine! */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 2); /* 1 bottle's shufishent! */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.malagauche == 177) { /* Already getting us one. */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 15);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.carrying >= maxobjs) {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Your hands are full.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
return;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(12);
|
|
|
|
|
_vm->_scrolls->display("Wine, please.\231\2");
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.alcohol == 0)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(3);
|
|
|
|
|
_vm->_celer->show_one(10);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.malagauche = 177;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(27, _vm->_timeout->procbuywine, _vm->_timeout->reason_drinks);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 5);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break; /* Go to the bar! */
|
|
|
|
|
|
|
|
|
|
case r__outsideducks:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_trip->infield(6)) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (thing == _vm->_gyro->onion) {
|
|
|
|
|
if (_vm->_gyro->dna.obj[_vm->_gyro->onion])
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 10); /* not planning to juggle with the things! */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
else if (_vm->_gyro->dna.carrying >= maxobjs)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Before you ask, you remember that your hands are full.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.bought_onion)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 11);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 9);
|
|
|
|
|
_vm->_lucerna->points(3);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->pennycheck(3); /* It costs thruppence. */
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->onion] = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_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;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 0);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 0);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case r__nottspub:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('n', 15);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break; /* Can't sell to southerners. */
|
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('D', 0); /* Can't buy that. */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_attack:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
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) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
/* 0 = neither, 1 = only bolt, 2 = only crossbow,
|
|
|
|
|
3 = both. */
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case 0:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('Q', 10);
|
|
|
|
|
_vm->_scrolls->display("(At the very least, don't use your bare hands!)");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case 1:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Attack _vm->_gyro->him with only a crossbow bolt? Are you ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"planning on playing darts?!");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Come on, Avvy! You're not going to get very far ") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"with only a crossbow!");
|
|
|
|
|
break;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case 3:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('Q', 11);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.cwytalot_gone = true;
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->bolt] = false;
|
|
|
|
|
_vm->_gyro->dna.obj[_vm->_gyro->crossbow] = false;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->objectlist();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->magics[12].op = _vm->_gyro->nix;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(7);
|
|
|
|
|
_vm->_trip->tr[2].walkto(2);
|
|
|
|
|
_vm->_trip->tr[2].vanishifstill = true;
|
|
|
|
|
_vm->_trip->tr[2].call_eachstep = false;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->whereis['\235'] = 177;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('Q', 10); /* Please try not to be so violent! */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('Q', 10);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case vb_password:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room != r__bridge)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('Q', 12);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
|
|
|
|
ok = true;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
for (ff = 1; ff <= thats.size(); ff++) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
for (fv = 1; fv <= words[_vm->_gyro->dna.pass_num + first_password].w.size(); fv++) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
Common::String temp = realwords[ff];
|
|
|
|
|
temp.toUppercase();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (words[_vm->_gyro->dna.pass_num + first_password].w[fv] != temp[fv])
|
2013-06-29 15:56:08 +02:00
|
|
|
|
ok = false;
|
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
}
|
|
|
|
|
|
2013-06-29 15:56:08 +02:00
|
|
|
|
if (ok) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.drawbridge_open != 0)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Contrary to your expectations, the drawbridge fails to close again.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(4);
|
|
|
|
|
_vm->_scrolls->display("The drawbridge opens!");
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(7, _vm->_timeout->procopen_drawbridge, _vm->_timeout->reason_drawbridgefalls);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.drawbridge_open = 1;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('Q', 12);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case vb_dir:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_enid->dir(realwords[2]);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_die:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->gameover();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_score:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Your score is ") + _vm->_gyro->strf(_vm->_gyro->dna.score) + ",\3\rout of a " +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"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)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Kiss whom?");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
else if (personshere()) {
|
2013-06-29 15:56:08 +02:00
|
|
|
|
switch (person) {
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->parkata:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('U', 12);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pgeida:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('U', 13);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pwisewoman:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('U', 14);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('U', 5); /* You WHAT? */
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else if ((150 <= person) && (person <= 174))
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hey, what kind of a weirdo are you??");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case vb_climb:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room == r__insidecardiffcastle)
|
2013-06-30 22:01:05 +02:00
|
|
|
|
cardiff_climbing();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else /* In the wrong room! */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Not with your head for heights, Avvy!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_jump:
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(1, _vm->_timeout->procjump, _vm->_timeout->reason_jumping);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.user_moves_avvy = false;
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
|
|
|
|
|
case vb_highscores:
|
|
|
|
|
// show_highs();
|
|
|
|
|
// to be implemented later...
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case vb_wake:
|
|
|
|
|
if (personshere())
|
|
|
|
|
switch (person) {
|
|
|
|
|
case pardon:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pavalot:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
case '\0':
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (!_vm->_gyro->dna.avvy_is_awake) {
|
|
|
|
|
_vm->_gyro->dna.avvy_is_awake = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->points(1);
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->dna.avvy_in_bed = true;
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_celer->show_one(3); /* Picture of Avvy, awake in bed. */
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.teetotal)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_visa->dixi('d', 13);
|
2013-06-30 22:01:05 +02:00
|
|
|
|
} else
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You're already awake, Avvy!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->payles:
|
|
|
|
|
if (!_vm->_gyro->dna.ayles_is_awake)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You can't seem to wake _vm->_gyro->him by yourself.");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
2013-07-24 18:25:07 +02:00
|
|
|
|
case _vm->_gyro->pjacques:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String("Brother Jacques, Brother Jacques, are you asleep?\231\2") +
|
2013-06-29 15:56:08 +02:00
|
|
|
|
"Hmmm... that doesn't seem to do any good...");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("It's difficult to awaken people who aren't asleep...!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case vb_sit:
|
2013-07-24 18:25:07 +02:00
|
|
|
|
if (_vm->_gyro->dna.room == r__nottspub) {
|
|
|
|
|
if (_vm->_gyro->dna.sitting_in_pub)
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("You're already sitting!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
else {
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_trip->tr[1].walkto(4); /* Move Avvy to the place, and sit _vm->_gyro->him down. */
|
2013-07-24 18:42:41 +02:00
|
|
|
|
_vm->_timeout->set_up_timer(1, _vm->_timeout->procavvy_sit_down, _vm->_timeout->reason_sitting_down);
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
/* Default doodah. */
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->dusk();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->hang_around_for_a_while();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->dawn();
|
|
|
|
|
_vm->_scrolls->display("A few hours later...\20nothing much has happened...");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case vb_restart:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
if (_vm->_scrolls->ask("Restart game and lose changes?")) {
|
|
|
|
|
_vm->_lucerna->dusk();
|
2013-07-24 18:25:07 +02:00
|
|
|
|
_vm->_gyro->newgame();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_lucerna->dawn();
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case pardon:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hey, a verb would be helpful!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
break;
|
|
|
|
|
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_hello:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
person_speaks();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("Hello.\2");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_thanks:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
person_speaks();
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display("That's OK.\2");
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
2013-06-29 15:56:08 +02:00
|
|
|
|
default:
|
2013-07-24 19:43:10 +02:00
|
|
|
|
_vm->_scrolls->display(Common::String('\7') + "Parser bug!");
|
2013-06-29 15:56:08 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Acci::verbopt(char n, Common::String &answer, char &anskey) {
|
|
|
|
|
switch (n) {
|
2013-06-30 22:01:05 +02:00
|
|
|
|
case vb_exam:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
answer = "Examine";
|
|
|
|
|
anskey = 'x';
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break; /* the ubiqutous one */
|
|
|
|
|
/* vb_give isn't dealt with by this procedure, but by ddm__with */
|
|
|
|
|
case vb_drink:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
answer = "Drink";
|
|
|
|
|
anskey = 'D';
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_wear:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
answer = "Wear";
|
|
|
|
|
anskey = 'W';
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_ring:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
answer = "Ring";
|
|
|
|
|
anskey = 'R';
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break; /* only the bell! */
|
|
|
|
|
case vb_play:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
answer = "Play";
|
|
|
|
|
anskey = 'P';
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
case vb_eat:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
answer = "Eat";
|
|
|
|
|
anskey = 'E';
|
2013-06-30 22:01:05 +02:00
|
|
|
|
break;
|
|
|
|
|
default:
|
2013-06-29 15:56:08 +02:00
|
|
|
|
answer = "? Unknown!"; /* Bug! */
|
|
|
|
|
anskey = '?';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} // End of namespace Avalanche.
|