/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ /* * This code is based on the original source code of Lord Avalot d'Argent version 1.3. * Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman. */ /* ÛßÜ ÛßÜ ÜßßÜ ßÛß Ûßß Üß ßÛß ÜßÛßÜ ßÛß ÛÜ Û ÜÛßß ßÛß ÛßÜ Ûßß Û Ûß ÛÛ Û Û Ü Û Ûßß ßÜ Û Û Û Û Û Û ÛÜÛ ßßßÜ Û ÛÛ Ûßß Û ß ß ß ßß ßß ßßß ß ß ß ß ß ßßß ß ßß ßßß ß ß ß ßßß ßßß ACCESS The temporary Sez handler. */ #define __access_implementation__ #include "access.h" /*#include "Gyro.h"*/ /*#include "Scrolls.h"*/ /*#include "Acci.h"*/ /*#include "Trip5.h"*/ /*#include "Lucerna.h"*/ namespace Avalanche { boolean int_say_went_ok; void int_say(string filename, boolean bubble) /* Internal use ONLY! */ { untyped_file f; /*$I-*/ assign(f, filename); reset(f, 1); if (ioresult != 0) { int_say_went_ok = false; return; } bufsize = filesize(f); blockread(f, buffer, bufsize); if (bubble) { bufsize += 1; buffer[bufsize] = '\2'; } close(f); /*$I+*/ calldrivers; int_say_went_ok = true; } void dixi(char p, byte n) { exit(153); int_say(string('s') + p + strf(n) + ".raw", false); } void talkto(byte whom) { byte fv; boolean no_matches; exit(153); if (person == pardon) { person = chr(subjnumber); subjnumber = 0; } switch (chr(whom)) { case pspludwick: if ((dna.lustie_is_asleep) & (~ dna.obj[potion])) { dixi('q', 68); dna.obj[potion] = true; objectlist; points(3); return; } else { if (dna.talked_to_crapulus) switch (dna.given2spludwick) { /* Spludwick - what does he need? */ /* 0 - let it through to use normal routine. */ case RANGE_2(1, 2): { display(string("Can you get me ") + get_better(spludwick_order[dna.given2spludwick]) + ", please?" + "\232\2"); return; } break; case 3: { dixi('q', 30); /* need any help with the game? */ return; } break; } else dixi('q', 42); /* Haven't talked to Crapulus. Go and talk to him. */ } break; case pibythneth: if (dna.givenbadgetoiby) { dixi('q', 33); /* Thanks a lot! */ return; /* And leave the proc. */ } break; /* Or... just continue, 'cos he hasn't got it. */ case pdogfood: if (dna.wonnim) { ; /* We've won the game. */ dixi('q', 6); /* "I'm Not Playing!" */ return; /* Zap back. */ } break; case payles: if (~ dna.ayles_is_awake) { dixi('q', 43); /* He's fast asleep! */ return; } break; case pgeida: if (dna.geida_given_potion) dna.geida_follows = true; else { dixi('u', 17); return; } break; } if (whom > 149) whom -= 149; no_matches = true; for (fv = 1; fv <= numtr; fv ++) if (tr[fv].a.accinum == whom) { display(string('\23') + chr(fv + 48) + '\4'); no_matches = false; flush(); } if (no_matches) display("\23\23\4"); if (subjnumber == 0) /* For the moment... later we'll parse "say". */ int_say(string("ss") + strf(whom) + ".raw", true); else { int_say(string("ss") + strf(whom) + '-' + strf(subjnumber) + ".raw", true); if (! int_say_went_ok) /* File not found! */ dixi('n', whom); } switch (chr(whom + 149)) { case pcrapulus: { ; /* Crapulus: get the badge - first time only */ dna.obj[badge] = true; objectlist; dixi('q', 1); /* Circular from Cardiff. */ dna.talked_to_crapulus = true; whereis[pcrapulus] = 177; /* Crapulus walks off. */ tr[2].vanishifstill = true; tr[2].walkto(4); /* Walks away. */ points(2); } break; case payles: dixi('q', 44); break; /* Can you get me a pen? */ } } } // End of namespace Avalanche.