diff options
| -rw-r--r-- | engines/avalanche/acci2.cpp | 421 | ||||
| -rw-r--r-- | engines/avalanche/acci2.h | 7 | ||||
| -rw-r--r-- | engines/avalanche/scrolls2.cpp | 2 | 
3 files changed, 303 insertions, 127 deletions
| diff --git a/engines/avalanche/acci2.cpp b/engines/avalanche/acci2.cpp index 8387b0ff84..c5a5a8e383 100644 --- a/engines/avalanche/acci2.cpp +++ b/engines/avalanche/acci2.cpp @@ -48,123 +48,287 @@  namespace Avalanche { -const Acci::VocabEntry Acci::kVocabulary[kParserWordsNum] = { +Acci::Acci(AvalancheEngine *vm) { +	_vm = vm; +} + +void Acci::init() { +	_vm->_gyro->_weirdWord = false; + +	// Initailaze the vocabulary.  	// 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"}, +	_vocabulary[0].init(1, "EXAMINE"); +	_vocabulary[1].init(1, "READ"); +	_vocabulary[2].init(1, "XAM"); +	_vocabulary[3].init(2, "OPEN"); +	_vocabulary[4].init(2, "LEAVE"); +	_vocabulary[5].init(2, "UNLOCK"); +	_vocabulary[6].init(3, "PAUSE"); +	_vocabulary[7].init(47, "TA"); // Early to avoid Take and Talk. +	_vocabulary[8].init(4, "TAKE"); +	_vocabulary[9].init(4, "GET"); +	_vocabulary[10].init(4, "PICK"); +	_vocabulary[11].init(5, "DROP"); +	_vocabulary[12].init(6, "INVENTORY"); +	_vocabulary[13].init(7, "TALK"); +	_vocabulary[14].init(7, "SAY"); +	_vocabulary[15].init(7, "ASK"); +	_vocabulary[16].init(8, "GIVE"); +	_vocabulary[17].init(9, "DRINK"); +	_vocabulary[18].init(9, "IMBIBE"); +	_vocabulary[19].init(9, "DRAIN"); +	_vocabulary[20].init(10, "LOAD"); +	_vocabulary[21].init(10, "RESTORE"); +	_vocabulary[22].init(11, "SAVE"); +	_vocabulary[23].init(12, "BRIBE"); +	_vocabulary[24].init(12, "PAY"); +	_vocabulary[25].init(13, "LOOK"); +	_vocabulary[26].init(14, "BREAK"); +	_vocabulary[27].init(15, "QUIT"); +	_vocabulary[28].init(15, "EXIT"); +	_vocabulary[29].init(16, "SIT"); +	_vocabulary[30].init(16, "SLEEP"); +	_vocabulary[31].init(17, "STAND"); + +	_vocabulary[32].init(18, "GO"); +	_vocabulary[33].init(19, "INFO"); +	_vocabulary[34].init(20, "UNDRESS"); +	_vocabulary[35].init(20, "DOFF"); +	_vocabulary[36].init(21, "DRESS"); +	_vocabulary[37].init(21, "WEAR"); +	_vocabulary[38].init(21, "DON"); +	_vocabulary[39].init(22, "PLAY"); +	_vocabulary[40].init(22, "STRUM"); +	_vocabulary[41].init(23, "RING"); +	_vocabulary[42].init(24, "HELP"); +	_vocabulary[43].init(25, "KENDAL"); +	_vocabulary[44].init(26, "CAPYBARA"); +	_vocabulary[45].init(27, "BOSS"); +	_vocabulary[46].init(255, "NINET"); // block for NINETY +	_vocabulary[47].init(28, "URINATE"); +	_vocabulary[48].init(28, "MINGITE"); +	_vocabulary[49].init(29, "NINETY"); +	_vocabulary[50].init(30, "ABRACADABRA"); +	_vocabulary[51].init(30, "PLUGH"); +	_vocabulary[52].init(30, "XYZZY"); +	_vocabulary[53].init(30, "HOCUS"); +	_vocabulary[54].init(30, "POCUS"); +	_vocabulary[55].init(30, "IZZY"); +	_vocabulary[56].init(30, "WIZZY"); +	_vocabulary[57].init(30, "PLOVER"); +	_vocabulary[58].init(30, "MELENKURION"); +	_vocabulary[59].init(30, "ZORTON"); +	_vocabulary[60].init(30, "BLERBI"); +	_vocabulary[61].init(30, "THURB"); +	_vocabulary[62].init(30, "SNOEZE"); +	_vocabulary[63].init(30, "SAMOHT"); +	_vocabulary[64].init(30, "NOSIDE"); +	_vocabulary[65].init(30, "PHUGGG"); +	_vocabulary[66].init(30, "KNERL"); +	_vocabulary[67].init(30, "MAGIC"); +	_vocabulary[68].init(30, "KLAETU"); +	_vocabulary[69].init(30, "VODEL"); +	_vocabulary[70].init(30, "BONESCROLLS"); +	_vocabulary[71].init(30, "RADOF"); + +	_vocabulary[72].init(31, "RESTART"); +	_vocabulary[73].init(32, "SWALLOW"); +	_vocabulary[74].init(32, "EAT"); +	_vocabulary[75].init(33, "LISTEN"); +	_vocabulary[76].init(33, "HEAR"); +	_vocabulary[77].init(34, "BUY"); +	_vocabulary[78].init(34, "PURCHASE"); +	_vocabulary[79].init(34, "ORDER"); +	_vocabulary[80].init(34, "DEMAND"); +	_vocabulary[81].init(35, "ATTACK"); +	_vocabulary[82].init(35, "HIT"); +	_vocabulary[83].init(35, "KILL"); +	_vocabulary[84].init(35, "PUNCH"); +	_vocabulary[85].init(35, "KICK"); +	_vocabulary[86].init(35, "SHOOT"); +	_vocabulary[87].init(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. +	_vocabulary[88].init(36, "TIROS"); +	_vocabulary[89].init(36, "WORDY"); +	_vocabulary[90].init(36, "STACK"); +	_vocabulary[91].init(36, "SHADOW"); +	_vocabulary[92].init(36, "OWL"); +	_vocabulary[93].init(36, "ACORN"); +	_vocabulary[94].init(36, "DOMESDAY"); +	_vocabulary[95].init(36, "FLOPPY"); +	_vocabulary[96].init(36, "DIODE"); +	_vocabulary[97].init(36, "FIELD"); +	_vocabulary[98].init(36, "COWSLIP"); +	_vocabulary[99].init(36, "OSBYTE"); +	_vocabulary[100].init(36, "OSCLI"); +	_vocabulary[101].init(36, "TIMBER"); +	_vocabulary[102].init(36, "ADVAL"); +	_vocabulary[103].init(36, "NEUTRON"); +	_vocabulary[104].init(36, "POSITRON"); +	_vocabulary[105].init(36, "ELECTRON"); +	_vocabulary[106].init(36, "CIRCUIT"); +	_vocabulary[107].init(36, "AURUM"); +	_vocabulary[108].init(36, "PETRIFY"); +	_vocabulary[109].init(36, "EBBY"); +	_vocabulary[110].init(36, "CATAPULT"); +	_vocabulary[111].init(36, "GAMERS"); +	_vocabulary[112].init(36, "FUDGE"); +	_vocabulary[113].init(36, "CANDLE"); +	_vocabulary[114].init(36, "BEEB"); +	_vocabulary[115].init(36, "MICRO"); +	_vocabulary[116].init(36, "SESAME"); +	_vocabulary[117].init(36, "LORDSHIP"); + +	_vocabulary[118].init(37, "DIR"); +	_vocabulary[119].init(37, "LS"); +	_vocabulary[120].init(38, "DIE"); +	_vocabulary[121].init(39, "SCORE"); +	_vocabulary[122].init(40, "PUT"); +	_vocabulary[123].init(40, "INSERT"); +	_vocabulary[124].init(41, "KISS"); +	_vocabulary[125].init(41, "SNOG"); +	_vocabulary[126].init(41, "CUDDLE"); +	_vocabulary[127].init(42, "CLIMB"); +	_vocabulary[128].init(42, "CLAMBER"); +	_vocabulary[129].init(43, "JUMP"); +	_vocabulary[130].init(44, "HIGHSCORES"); +	_vocabulary[131].init(44, "HISCORES"); +	_vocabulary[132].init(45, "WAKEN"); +	_vocabulary[133].init(45, "AWAKEN"); +	_vocabulary[134].init(46, "HELLO"); +	_vocabulary[135].init(46, "HI"); +	_vocabulary[136].init(46, "YO"); +	_vocabulary[137].init(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"}, +	_vocabulary[138].init(50, "WINE"); +	_vocabulary[139].init(50, "BOOZE"); +	_vocabulary[140].init(50, "NASTY"); +	_vocabulary[141].init(50, "VINEGAR"); +	_vocabulary[142].init(51, "MONEYBAG"); +	_vocabulary[143].init(51, "BAG"); +	_vocabulary[144].init(51, "CASH"); +	_vocabulary[145].init(51, "DOSH"); +	_vocabulary[146].init(51, "WALLET"); +	_vocabulary[147].init(52, "BODKIN"); +	_vocabulary[148].init(52, "DAGGER"); +	_vocabulary[149].init(53, "POTION"); +	_vocabulary[150].init(54, "CHASTITY"); +	_vocabulary[151].init(54, "BELT"); +	_vocabulary[152].init(55, "BOLT"); +	_vocabulary[153].init(55, "ARROW"); +	_vocabulary[154].init(55, "DART"); +	_vocabulary[155].init(56, "CROSSBOW"); +	_vocabulary[156].init(56, "BOW"); +	_vocabulary[157].init(57, "LUTE"); +	_vocabulary[158].init(58, "PILGRIM"); +	_vocabulary[159].init(58, "BADGE"); +	_vocabulary[160].init(59, "MUSHROOMS"); +	_vocabulary[161].init(59, "TOADSTOOLS"); +	_vocabulary[162].init(60, "KEY"); +	_vocabulary[163].init(61, "BELL"); +	_vocabulary[164].init(62, "PRESCRIPT"); +	_vocabulary[165].init(62, "SCROLL"); +	_vocabulary[166].init(62, "MESSAGE"); +	_vocabulary[167].init(63, "PEN"); +	_vocabulary[168].init(63, "QUILL"); +	_vocabulary[169].init(64, "INK"); +	_vocabulary[170].init(64, "INKPOT"); +	_vocabulary[171].init(65, "CLOTHES"); +	_vocabulary[172].init(66, "HABIT"); +	_vocabulary[173].init(66, "DISGUISE"); +	_vocabulary[174].init(67, "ONION"); + +	_vocabulary[175].init(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"}, +	_vocabulary[176].init(150, "AVVY"); +	_vocabulary[177].init(150, "AVALOT"); +	_vocabulary[178].init(150, "YOURSELF"); +	_vocabulary[179].init(150, "ME"); +	_vocabulary[180].init(150, "MYSELF"); +	_vocabulary[181].init(151, "SPLUDWICK"); +	_vocabulary[182].init(151, "THOMAS"); +	_vocabulary[183].init(151, "ALCHEMIST"); +	_vocabulary[184].init(151, "CHEMIST"); +	_vocabulary[185].init(152, "CRAPULUS"); +	_vocabulary[186].init(152, "SERF"); +	_vocabulary[187].init(152, "SLAVE"); +	_vocabulary[188].init(158, "DU"); // Put in early for Baron DU Lustie to save confusion with Duck & Duke. +	_vocabulary[189].init(152, "CRAPPY"); +	_vocabulary[190].init(153, "DUCK"); +	_vocabulary[191].init(153, "DOCTOR"); +	_vocabulary[192].init(154, "MALAGAUCHE"); +	_vocabulary[193].init(155, "FRIAR"); +	_vocabulary[194].init(155, "TUCK"); +	_vocabulary[195].init(156, "ROBIN"); +	_vocabulary[196].init(156, "HOOD"); +	_vocabulary[197].init(157, "CWYTALOT"); +	_vocabulary[198].init(157, "GUARD"); +	_vocabulary[199].init(157, "BRIDGEKEEP"); +	_vocabulary[200].init(158, "BARON"); +	_vocabulary[201].init(158, "LUSTIE"); +	_vocabulary[202].init(159, "DUKE"); +	_vocabulary[203].init(159, "GRACE"); +	_vocabulary[204].init(160, "DOGFOOD"); +	_vocabulary[205].init(160, "MINSTREL"); +	_vocabulary[206].init(161, "TRADER"); +	_vocabulary[207].init(161, "SHOPKEEPER"); +	_vocabulary[208].init(161, "STALLHOLDER"); +	_vocabulary[209].init(162, "PILGRIM"); +	_vocabulary[210].init(162, "IBYTHNETH"); +	_vocabulary[211].init(163, "ABBOT"); +	_vocabulary[212].init(163, "AYLES"); +	_vocabulary[213].init(164, "PORT"); +	_vocabulary[214].init(165, "SPURGE"); +	_vocabulary[215].init(166, "JACQUES"); +	_vocabulary[216].init(166, "SLEEPER"); +	_vocabulary[217].init(166, "RINGER");  	// Nouns - People - Female: 175-199 -	{175, "WIFE"},      {175, "ARKATA"},    {176, "GEDALODAVA"}, -	{176, "GEIDA"},     {176, "PRINCESS"},  {178, "WISE"}, -	{178, "WITCH"}, +	_vocabulary[218].init(175, "WIFE"); +	_vocabulary[219].init(175, "ARKATA"); +	_vocabulary[220].init(176, "GEDALODAVA"); +	_vocabulary[221].init(176, "GEIDA"); +	_vocabulary[222].init(176, "PRINCESS"); +	_vocabulary[223].init(178, "WISE"); +	_vocabulary[224].init(178, "WITCH");  	// Pronouns: 200-224 -	{200, "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"}, +	_vocabulary[225].init(200, "HIM"); +	_vocabulary[226].init(200, "MAN"); +	_vocabulary[227].init(200, "GUY"); +	_vocabulary[228].init(200, "DUDE"); +	_vocabulary[229].init(200, "CHAP"); +	_vocabulary[230].init(200, "FELLOW"); +	_vocabulary[231].init(201, "HER"); +	_vocabulary[232].init(201, "GIRL"); +	_vocabulary[233].init(201, "WOMAN"); +	_vocabulary[234].init(202, "IT"); +	_vocabulary[235].init(202, "THING"); +	_vocabulary[236].init(203, "MONK"); +	_vocabulary[237].init(204, "BARMAN"); +	_vocabulary[238].init(204, "BARTENDER");  	// Prepositions: 225-249 -	{225, "TO"},        {226, "AT"},        {227, "UP"}, -	{228, "INTO"},      {228, "INSIDE"},    {229, "OFF"}, -	{230, "UP"},        {231, "DOWN"},      {232, "ON"}, +	_vocabulary[239].init(225, "TO"); +	_vocabulary[240].init(226, "AT"); +	_vocabulary[241].init(227, "UP"); +	_vocabulary[242].init(228, "INTO"); +	_vocabulary[243].init(228, "INSIDE"); +	_vocabulary[244].init(229, "OFF"); +	_vocabulary[245].init(230, "UP"); +	_vocabulary[246].init(231, "DOWN"); +	_vocabulary[247].init(232, "ON");  	// Please: 251 -	{251, "PLEASE"}, +	_vocabulary[248].init(251, "PLEASE");  	// About: 252 -	{252, "ABOUT"}, {252, "CONCERNING"}, +	_vocabulary[249].init(252, "ABOUT"); +	_vocabulary[250].init(252, "CONCERNING");  	// Swear words: 253  	/*		  I M P O R T A N T    M E S S A G E @@ -174,30 +338,37 @@ const Acci::VocabEntry Acci::kVocabulary[kParserWordsNum] = {  	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. */ +	_vocabulary[251].init(253, "SHIT"); +	_vocabulary[252].init(28 , "PISS"); +	_vocabulary[253].init(28 , "PEE"); +	_vocabulary[254].init(253, "FART"); +	_vocabulary[255].init(253, "FUCK"); +	_vocabulary[256].init(253, "BALLS"); +	_vocabulary[257].init(253, "BLAST"); +	_vocabulary[258].init(253, "BUGGER"); +	_vocabulary[259].init(253, "KNICKERS"); +	_vocabulary[260].init(253, "BLOODY"); +	_vocabulary[261].init(253, "HELL"); +	_vocabulary[262].init(253, "DAMN"); +	_vocabulary[263].init(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"}, +	_vocabulary[264].init(249, "YES"); +	_vocabulary[265].init(249, "NO"); +	_vocabulary[266].init(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" -}; - -Acci::Acci(AvalancheEngine *vm) { -	_vm = vm; -} - -void Acci::init() { -	_vm->_gyro->_weirdWord = false; +	_vocabulary[267].init(255, "THE"); +	_vocabulary[268].init(255, "A"); +	_vocabulary[269].init(255, "NOW"); +	_vocabulary[270].init(255, "SOME"); +	_vocabulary[271].init(255, "AND"); +	_vocabulary[272].init(255, "THAT"); +	_vocabulary[273].init(255, "POCUS"); +	_vocabulary[274].init(255, "HIS"); +	_vocabulary[275].init(255, "THIS"); +	_vocabulary[276].init(255, "SENTINEL"); // for "Ken SENT Me"  }  void Acci::clearWords() { @@ -212,14 +383,14 @@ byte Acci::wordNum(Common::String word) {  		return 0;  	for (int32 i = kParserWordsNum - 1; i >= 0; i--) { -		if (kVocabulary[i]._word == word) -			return kVocabulary[i]._number; +		if (_vocabulary[i]._word == word) +			return _vocabulary[i]._number;  	}  	// If not found as a whole, we look for it as a substring.  	for (int32 i = kParserWordsNum - 1; i >= 0; i--) { -		if (Common::String(kVocabulary[i]._word.c_str(), word.size()) == word) -			return kVocabulary[i]._number; +		if (Common::String(_vocabulary[i]._word.c_str(), word.size()) == word) +			return _vocabulary[i]._number;  	}  	return kPardon; @@ -1920,8 +2091,8 @@ void Acci::doThat() {  				Common::String temp = _realWords[i];  				temp.toUppercase();  				int pwdId = _vm->_gyro->_passwordNum + kFirstPassword; -				for (byte j = 0; j < kVocabulary[pwdId]._word.size(); j++) { -					if (kVocabulary[pwdId]._word[j] != temp[j]) +				for (byte j = 0; j < _vocabulary[pwdId]._word.size(); j++) { +					if (_vocabulary[pwdId]._word[j] != temp[j])  						ok = false;  				}  			} diff --git a/engines/avalanche/acci2.h b/engines/avalanche/acci2.h index dab5371f42..07816cc772 100644 --- a/engines/avalanche/acci2.h +++ b/engines/avalanche/acci2.h @@ -60,9 +60,14 @@ public:  	struct VocabEntry {  		byte _number;  		Common::String _word; + +		void init(byte number, Common::String word) { +			_number = number; +			_word = word; +		}  	}; -	static const VocabEntry kVocabulary[kParserWordsNum]; +	VocabEntry _vocabulary[kParserWordsNum];  	Common::String _realWords[11];  	byte _verb, _person, _thing; diff --git a/engines/avalanche/scrolls2.cpp b/engines/avalanche/scrolls2.cpp index 2830e9eee0..3bcb2e0ccc 100644 --- a/engines/avalanche/scrolls2.cpp +++ b/engines/avalanche/scrolls2.cpp @@ -704,7 +704,7 @@ void Scrolls::callScrollDriver() {  					break;  				case 2: {  					int pwdId = _vm->_acci->kFirstPassword + _vm->_gyro->_passwordNum; -					displayText(_vm->_acci->kVocabulary[pwdId]._word + kControlToBuffer); +					displayText(_vm->_acci->_vocabulary[pwdId]._word + kControlToBuffer);  					}  					break;  				case 3: | 
