From 7431fd9bccf214977f0c50aab184517bba3f14ed Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 2 May 2008 11:18:46 +0000 Subject: Move animation functions to separate file svn-id: r31805 --- engines/drascula/animation.cpp | 3423 +++++++++++++++++++ engines/drascula/drascula.cpp | 7404 +++++++++++----------------------------- engines/drascula/module.mk | 1 + 3 files changed, 5431 insertions(+), 5397 deletions(-) create mode 100644 engines/drascula/animation.cpp (limited to 'engines') diff --git a/engines/drascula/animation.cpp b/engines/drascula/animation.cpp new file mode 100644 index 0000000000..66b9366605 --- /dev/null +++ b/engines/drascula/animation.cpp @@ -0,0 +1,3423 @@ +/* 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. + * + * $URL$ + * $Id$ + * + */ + +#include "drascula/drascula.h" +#include "drascula/texts.h" + +namespace Drascula { + +static const int interf_x[] ={ 1, 65, 129, 193, 1, 65, 129 }; +static const int interf_y[] ={ 51, 51, 51, 51, 83, 83, 83 }; + +void DrasculaEngine::animation_1_1() { + int l, l2, p; + int pos_pixel[6]; + + while (term_int == 0) { + playmusic(29); + fliplay("logoddm.bin", 9); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + delay(600); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + delay(340); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + playmusic(26); + delay(500); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + fliplay("logoalc.bin", 8); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + lee_dibujos("cielo.alg"); + descomprime_dibujo(dir_zona_pantalla, 256); + Negro(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + FundeDelNegro(2); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + delay(900); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + color_abc(ROJO); + centra_texto("Transilvanya, 1993 d.c.", 160, 100); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + delay(1000); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + delay(1200); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + fliplay("scrollb.bin", 9); + + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + comienza_sound("s5.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("scr2.bin", 17); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + fin_sound_corte(); + anima("scr3.bin", 17); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + lee_dibujos("cielo2.alg"); + descomprime_dibujo(dir_zona_pantalla, 256); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + FundeAlNegro(1); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, COMPLETA); + lee_dibujos("103.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("104.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("aux104.alg"); + descomprime_dibujo(dir_dibujo2, 1); + + playmusic(4); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + delay(400); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + for (l2 = 0; l2 < 3; l2++) + for (l = 0; l < 7; l++) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyBackground(interf_x[l], interf_y[l], 156, 45, 63, 31, dir_dibujo2, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if (getscan() == Common::KEYCODE_ESCAPE) { + term_int = 1; + break; + } + pausa(3); + } + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + l2 = 0; p = 0; + pos_pixel[3] = 45; + pos_pixel[4] = 63; + pos_pixel[5] = 31; + + for (l = 0; l < 180; l++) { + copyBackground(0, 0, 320 - l, 0, l, 200, dir_dibujo3, dir_zona_pantalla); + copyBackground(l, 0, 0, 0, 320 - l, 200, dir_dibujo1, dir_zona_pantalla); + + pos_pixel[0] = interf_x[l2]; + pos_pixel[1] = interf_y[l2]; + pos_pixel[2] = 156 - l; + + copyRectClip(pos_pixel, dir_dibujo2, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + p++; + if (p == 6) { + p = 0; + l2++; + } + if (l2 == 7) + l2 = 0; + if (getscan() == Common::KEYCODE_ESCAPE) { + term_int = 1; + break; + } + } + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + copyBackground(0, 0, 0, 0, 320, 200, dir_zona_pantalla, dir_dibujo1); + + habla_dr_grande(TEXTD1, "D1.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + borra_pantalla(); + + lee_dibujos("100.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("auxigor.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("auxdr.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + sentido_dr = 0; + x_dr = 129; + y_dr = 95; + sentido_igor = 1; + x_igor = 66; + y_igor = 97; + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_igor_dch(TEXTI8, "I8.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_dr_izq(TEXTD2, "d2.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_dr_izq(TEXTD3, "d3.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("lib.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("lib2.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + color_solo = ROJO; + lee_dibujos("plan1.alg"); + descomprime_dibujo(dir_zona_pantalla, MEDIA); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(10); + habla_solo(TEXTD4,"d4.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + lee_dibujos("plan1.alg"); + descomprime_dibujo(dir_zona_pantalla, MEDIA); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_solo(TEXTD5, "d5.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("lib2.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + lee_dibujos("plan2.alg"); + descomprime_dibujo(dir_zona_pantalla, MEDIA); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(20); + habla_solo(TEXTD6, "d6.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("lib2.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + lee_dibujos("plan3.alg"); + descomprime_dibujo(dir_zona_pantalla, MEDIA); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(20); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_solo(TEXTD7, "d7.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + lee_dibujos("plan3.alg"); + descomprime_dibujo(dir_zona_pantalla, MEDIA); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_solo(TEXTD8, "d8.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + lee_dibujos("100.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + MusicFadeout(); + stopmusic(); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_igor_dch(TEXTI9, "I9.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_dr_izq(TEXTD9, "d9.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_igor_dch(TEXTI10, "I10.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + playmusic(11); + habla_dr_izq(TEXTD10, "d10.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("rayo1.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + comienza_sound("s5.als"); + anima("rayo2.bin", 15); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("frel2.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("frel.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("frel.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + fin_sound_corte(); + borra_pantalla(); + Negro(); + playmusic(23); + FundeDelNegro(0); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_dr = 1; + habla_igor_dch(TEXTI1, "I1.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_dr_dch(TEXTD11, "d11.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_dr = 3; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(1); + sentido_dr = 0; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_dr_izq(TEXTD12, "d12.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_dr = 3; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(1); + sentido_dr = 1; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_igor_dch(TEXTI2, "I2.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + pausa(13); + habla_dr_dch(TEXTD13,"d13.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_dr = 3; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(1); + sentido_dr = 0; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_igor(); + pon_dr(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_dr_izq(TEXTD14, "d14.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_igor_dch(TEXTI3, "I3.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_dr_izq(TEXTD15, "d15.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_igor_dch(TEXTI4, "I4.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_dr_izq(TEXTD16, "d16.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_igor_dch(TEXTI5, "I5.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_igor = 3; + habla_dr_izq(TEXTD17, "d17.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + pausa(18); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_igor_frente(TEXTI6, "I6.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + FundeAlNegro(0); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + + playmusic(2); + pausa(5); + fliplay("intro.bin", 12); + term_int = 1; + } + borra_pantalla(); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, COMPLETA); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); +} + +void DrasculaEngine::habla_dr_grande(const char *dicho, const char *filename) { + int tiempou; + long tiempol; + int x_habla[4] = {47, 93, 139, 185}; + int cara; + int l = 0; + + int longitud; + longitud = strlen(dicho); + + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); + + buffer_teclado(); + + color_abc(ROJO); + + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); + } + +bucless: + + cara = _rnd->getRandomNumber(3); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyBackground(interf_x[l] + 24, interf_y[l], 0, 45, 39, 31, dir_dibujo2, dir_zona_pantalla); + copyBackground(x_habla[cara], 1, 171, 68, 45, 48, dir_dibujo2, dir_zona_pantalla); + l++; + if (l == 7) + l = 0; + + if (con_voces == 0) + centra_texto(dicho, 191, 69); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(3); + + byte key = getscan(); + if (key == Common::KEYCODE_ESCAPE) + term_int = 1; + + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; + } +} + +void DrasculaEngine::animation_2_1() { + int l; + + lleva_al_hare(231, 91); + hare_se_ve = 0; + + term_int = 0; + + for (;;) { + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + anima("ag.bin", 14); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + lee_dibujos("an11y13.alg"); + descomprime_dibujo(dir_hare_dch, 1); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + habla_tabernero(TEXTT22, "T22.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + pausa(4); + comienza_sound("s1.als"); + hipo(18); + fin_sound(); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + borra_pantalla(); + stopmusic(); + corta_musica = 1; + memset(dir_zona_pantalla, 0, 64000); + color_solo = BLANCO; + pausa(80); + + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_solo(TEXTBJ1, "BJ1.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + lee_dibujos("bj.alg"); + descomprime_dibujo(dir_zona_pantalla, MEDIA); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + Negro(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + FundeDelNegro(1); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + color_solo = AMARILLO; + habla_solo(TEXT214, "214.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + borra_pantalla(); + + lee_dibujos("16.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + lee_dibujos("auxbj.alg"); + descomprime_dibujo(dir_dibujo3, 1); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + strcpy(num_room, "16.alg"); + + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + for (l = 0; l < 200; l++) + factor_red[l] = 99; + x_bj = 170; + y_bj = 90; + sentido_bj = 0; + hare_x = 91; + hare_y = 95; + sentido_hare = 1; + hare_se_ve = 1; + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + lee_dibujos("97g.alg"); + descomprime_dibujo(dir_hare_dch, 1); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + anima("lev.bin", 15); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + + lleva_al_hare(100 + ancho_hare / 2, 99 + alto_hare); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_hare = 1; + hare_x = 100; + hare_y = 95; + + habla_bj(TEXTBJ2, "BJ2.als"); + hablar(TEXT215, "215.als"); + habla_bj(TEXTBJ3, "BJ3.als"); + hablar(TEXT216, "216.als"); + habla_bj(TEXTBJ4, "BJ4.als"); + habla_bj(TEXTBJ5, "BJ5.als"); + habla_bj(TEXTBJ6, "BJ6.als"); + hablar(TEXT217, "217.als"); + habla_bj(TEXTBJ7, "BJ7.als"); + hablar(TEXT218, "218.als"); + habla_bj(TEXTBJ8, "BJ8.als"); + hablar(TEXT219, "219.als"); + habla_bj(TEXTBJ9, "BJ9.als"); + hablar(TEXT220, "220.als"); + hablar(TEXT221, "221.als"); + habla_bj(TEXTBJ10, "BJ10.als"); + hablar(TEXT222, "222.als"); + anima("gaf.bin", 15); + anima("bjb.bin", 14); + playmusic(9); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + lee_dibujos("97.alg"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + descomprime_dibujo(dir_hare_dch, 1); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + pausa(120); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_solo(TEXT223, "223.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + color_solo = BLANCO; + refresca_pantalla(); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(110); + habla_solo(TEXTBJ11, "BJ11.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + refresca_pantalla(); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + pausa(118); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + lleva_al_hare(132, 97 + alto_hare); + pausa(60); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + hablar(TEXT224, "224.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + habla_bj(TEXTBJ12, "BJ12.als"); + lleva_al_hare(157, 98 + alto_hare); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + anima("bes.bin", 16); + playmusic(11); + anima("rap.bin", 16); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_hare = 3; + strcpy(num_room, "no_bj.alg"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + pausa(8); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + hablar(TEXT225, "225.als"); + pausa(76); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + sentido_hare = 1; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + hablar(TEXT226, "226.als"); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(30); + if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) + break; + hablar(TEXT227,"227.als"); + FundeAlNegro(0); + break; + } +} + +void DrasculaEngine::animation_3_1() { + lee_dibujos("an11y13.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + hablar(TEXT192, "192.als"); + habla_tabernero(TEXTT1, "t1.als"); + hablar(TEXT193, "193.als"); + habla_tabernero(TEXTT2, "t2.als"); + hablar(TEXT194, "194.als"); + habla_tabernero(TEXTT3, "t3.als"); + hablar(TEXT195, "195.als"); + habla_tabernero(TEXTT4, "t4.als"); + hablar(TEXT196, "196.als"); + habla_tabernero(TEXTT5, "t5.als"); + habla_tabernero(TEXTT6, "t6.als"); + hablar(TEXT197, "197.als"); + habla_tabernero(TEXTT7, "t7.als"); + hablar(TEXT198, "198.als"); + habla_tabernero(TEXTT8, "t8.als"); + hablar(TEXT199, "199.als"); + habla_tabernero(TEXTT9, "t9.als"); + hablar(TEXT200, "200.als"); + hablar(TEXT201, "201.als"); + hablar(TEXT202, "202.als"); + + flags[0] = 1; + + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); +} + +void DrasculaEngine::animation_4_1() { + lee_dibujos("an12.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + hablar(TEXT205,"205.als"); + + actualiza_refresco_antes(); + + copyBackground(1, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); + updateScreen(228,112, 228,112, 47,60, dir_zona_pantalla); + + pausa(3); + + actualiza_refresco_antes(); + + copyBackground(49, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); + pon_hare(); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(3); + stopmusic(); + flags[11] = 1; + + habla_pianista(TEXTP1, "p1.als"); + hablar(TEXT206, "206.als"); + habla_pianista(TEXTP2, "p2.als"); + hablar(TEXT207, "207.als"); + habla_pianista(TEXTP3, "p3.als"); + hablar(TEXT208, "208.als"); + habla_pianista(TEXTP4, "p4.als"); + hablar(TEXT209, "209.als"); + + flags[11] = 0; + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); +} + +void DrasculaEngine::animation_1_2() { + lleva_al_hare(178, 121); + lleva_al_hare(169, 135); +} + +void DrasculaEngine::animation_2_2() { + int n, x=0; + + sentido_hare = 0; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + pon_hare(); + actualiza_refresco(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + lee_dibujos("an2_1.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("an2_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyBackground(1, 1, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); + updateScreen(201,87, 201,87, 50,52, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 55, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); + updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++){ + x++; + copyBackground(x, 109, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); + updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + + x = 0; + comienza_sound("s2.als"); + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 201, 87, 50, 52, dir_hare_dch, dir_zona_pantalla); + updateScreen(201,87, 201,87, 50,52, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 55, 201, 87, 50, 52, dir_hare_dch, dir_zona_pantalla); + updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + x = 0; + + for (n = 0; n < 2; n++) { + x++; + copyBackground(x, 109, 201, 87, 50, 52, dir_hare_dch, dir_zona_pantalla); + updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + fin_sound(); + + pausa (4); + + comienza_sound("s1.als"); + hipo_sin_nadie(12); + fin_sound(); +} + +void DrasculaEngine::animation_3_2() { + lleva_al_hare(163, 106); + lleva_al_hare(287, 101); + sentido_hare = 0; +} + +void DrasculaEngine::animation_4_2() { + stopmusic(); + flags[9] = 1; + + pausa(12); + hablar(TEXTD56, "d56.als"); + pausa(8); + + borra_pantalla(); + lee_dibujos("ciego1.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("ciego2.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("ciego3.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("ciego4.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("ciego5.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(10); + + habla_ciego(TEXTD68, "d68.als", "44472225500022227555544444664447222550002222755554444466"); + pausa(5); + habla_hacker(TEXTD57, "d57.als"); + pausa(6); + habla_ciego(TEXTD69,"d69.als","444722255000222275555444446655033336666664464402256555005504450005446"); + pausa(4); + habla_hacker(TEXTD58,"d58.als"); + habla_ciego(TEXTD70,"d70.als", "4447222550002222755554444466550333226220044644550044755665500440006655556666655044744656550446470046"); + delay(14); + habla_hacker(TEXTD59,"d59.als"); + habla_ciego(TEXTD71,"d71.als", "550330227556444744446660004446655544444722255000222275555444446644444"); + habla_hacker(TEXTD60,"d60.als"); + habla_ciego(TEXTD72,"d72.als", "55033022755644455550444744400044504447222550002222755554444466000"); + habla_hacker(TEXTD61,"d61.als"); + habla_ciego(TEXTD73,"d73.als", "55033022755644444447227444466644444722255000222275555444446664404446554440055655022227500544446044444446"); + habla_hacker(TEXTD62,"d62.als"); + habla_ciego(TEXTD74,"d74.als", "55033022755644444472244472225500022227555544444662550002222755444446666055522275550005550022200222000222666"); + habla_hacker(TEXTD63,"d63.als"); + habla_ciego(TEXTD75,"d75.als", "44447774444555500222205550444444466666225266444755444722255000222275555444446633223220044022203336227555770550444660557220553302224477777550550550222635533000662220002275572227025555"); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + _system->delayMillis(1); + habla_hacker(TEXTD64, "d64.als"); + habla_ciego(TEXTD76, "d76.als", "5555500004445550330244472225500022227555544444662755644446666005204402266222003332222774440446665555005550335544444"); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(14); + + borra_pantalla(); + + playmusic(musica_room); + lee_dibujos("9.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("aux9.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + sin_verbo(); + + flags[9] = 0; + flags[4] = 1; +} + +void DrasculaEngine::animation_8_2() { + habla_pianista(TEXTP6, "P6.als"); + hablar(TEXT358, "358.als"); + habla_pianista(TEXTP7, "P7.als"); + habla_pianista(TEXTP8, "P8.als"); +} + +void DrasculaEngine::animation_9_2() { + habla_pianista(TEXTP9, "P9.als"); + habla_pianista(TEXTP10, "P10.als"); + habla_pianista(TEXTP11, "P11.als"); +} + +void DrasculaEngine::animation_10_2() { + habla_pianista(TEXTP12, "P12.als"); + hablar(TEXT361, "361.als"); + pausa(40); + habla_pianista(TEXTP13, "P13.als"); + hablar(TEXT362, "362.als"); + habla_pianista(TEXTP14, "P14.als"); + hablar(TEXT363, "363.als"); + habla_pianista(TEXTP15, "P15.als"); + hablar(TEXT364, "364.als"); + habla_pianista(TEXTP16, "P16.als"); +} + +void DrasculaEngine::animation_14_2() { + int n, pos_cabina[6]; + int l = 0; + + lee_dibujos("an14_2.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("an14_1.alg"); + + pos_cabina[0] = 150; + pos_cabina[1] = 6; + pos_cabina[2] = 69; + pos_cabina[3] = -160; + pos_cabina[4] = 158; + pos_cabina[5] = 161; + + for (n = -160; n <= 0; n = n + 5 + l) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + pon_hare(); + pon_vb(); + pos_cabina[3] = n; + copyRectClip(pos_cabina, dir_hare_fondo, dir_zona_pantalla); + actualiza_refresco(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + l = l + 1; + } + + flags[24] = 1; + + descomprime_dibujo(dir_dibujo1, 1); + + comienza_sound("s7.als"); + hipo(15); + + fin_sound(); + + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); +} + +void DrasculaEngine::animation_15_2() { + habla_borracho(TEXTB8, "B8.als"); + pausa(7); + habla_borracho(TEXTB9, "B9.als"); + habla_borracho(TEXTB10, "B10.als"); + habla_borracho(TEXTB11, "B11.als"); +} + +void DrasculaEngine::animation_16_2() { + int l; + + habla_borracho(TEXTB12, "B12.als"); + hablar(TEXT371, "371.als"); + + borra_pantalla(); + + playmusic(32); + int key = getscan(); + if (key != 0) + goto asco; + + color_abc(VERDE_OSCURO); + + lee_dibujos("his1.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + centra_texto(HIS1, 180, 180); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + key = getscan(); + if (key != 0) + goto asco; + + _system->delayMillis(4); + key = getscan(); + if (key != 0) + goto asco; + + FundeAlNegro(1); + key = getscan(); + if (key != 0) + goto asco; + + borra_pantalla(); + lee_dibujos("his2.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + centra_texto(HIS2, 180, 180); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + key = getscan(); + if (key != 0) + goto asco; + + _system->delayMillis(4); + key = getscan(); + if (key != 0) + goto asco; + + FundeAlNegro(1); + key = getscan(); + if (key != 0) + goto asco; + + borra_pantalla(); + lee_dibujos("his3.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + centra_texto(HIS3, 180, 180); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + key = getscan(); + if (key != 0) + goto asco; + + _system->delayMillis(4); + key = getscan(); + if (key != 0) + goto asco; + + FundeAlNegro(1); + + borra_pantalla(); + lee_dibujos("his4_1.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("his4_2.alg"); + descomprime_dibujo(dir_dibujo3, 1); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo3, dir_zona_pantalla); + centra_texto(HIS1, 180, 180); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + key = getscan(); + if (key != 0) + goto asco; + + _system->delayMillis(4); + key = getscan(); + if (key != 0) + goto asco; + + for (l = 1; l < 200; l++) { + copyBackground(0, 0, 0, l, 320, 200 - l, dir_dibujo3, dir_zona_pantalla); + copyBackground(0, 200 - l, 0, 0, 320, l, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + key = getscan(); + if (key != 0) + goto asco; + } + + pausa(5); + FundeAlNegro(2); + borra_pantalla(); + +asco: + lee_dibujos(pantalla_disco); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos(num_room); + descomprime_dibujo(dir_dibujo1, MEDIA); + Negro(); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + FundeDelNegro(0); + if (musica_room != 0) + playmusic(musica_room); + else + stopmusic(); +} + +void DrasculaEngine::animation_17_2() { + habla_borracho(TEXTB13, "B13.als"); + habla_borracho(TEXTB14, "B14.als"); + flags[40] = 1; +} + +void DrasculaEngine::animation_19_2() { + habla_vbpuerta(TEXTVB5, "VB5.als"); +} + +void DrasculaEngine::animation_20_2() { + habla_vbpuerta(TEXTVB7, "VB7.als"); + habla_vbpuerta(TEXTVB8, "VB8.als"); + hablar(TEXT383, "383.als"); + habla_vbpuerta(TEXTVB9, "VB9.als"); + hablar(TEXT384, "384.als"); + habla_vbpuerta(TEXTVB10, "VB10.als"); + hablar(TEXT385, "385.als"); + habla_vbpuerta(TEXTVB11, "VB11.als"); + if (flags[23] == 0) { + hablar(TEXT350, "350.als"); + habla_vbpuerta(TEXTVB57, "VB57.als"); + } else { + hablar(TEXT386, "386.als"); + habla_vbpuerta(TEXTVB12, "VB12.als"); + flags[18] = 0; + flags[14] = 1; + abre_puerta(15, 1); + sal_de_la_habitacion(1); + animation_23_2(); + sal_de_la_habitacion(0); + flags[21] = 0; + flags[24] = 0; + sentido_vb = 1; + vb_x = 120; + + rompo_y_salgo = 1; + } +} + +void DrasculaEngine::animation_21_2() { + habla_vbpuerta(TEXTVB6, "VB6.als"); +} + +void DrasculaEngine::animation_23_2() { + lee_dibujos("an24.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + flags[21] = 1; + + if (flags[25] == 0) { + habla_vb(TEXTVB13, "VB13.als"); + habla_vb(TEXTVB14, "VB14.als"); + pausa(10); + hablar(TEXT387, "387.als"); + } + + habla_vb(TEXTVB15, "VB15.als"); + lleva_vb(42); + sentido_vb = 1; + habla_vb(TEXTVB16, "VB16.als"); + sentido_vb = 2; + lleva_al_hare(157, 147); + lleva_al_hare(131, 149); + sentido_hare = 0; + animation_14_2(); + if (flags[25] == 0) + habla_vb(TEXTVB17, "VB17.als"); + pausa(8); + sentido_vb = 1; + habla_vb(TEXTVB18, "VB18.als"); + + if (flags[29] == 0) + animation_23_anexo(); + else + animation_23_anexo2(); + + sentido_vb = 2; + animation_25_2(); + lleva_vb(99); + + if (flags[29] == 0) { + habla_vb(TEXTVB19, "VB19.als"); + if (flags[25] == 0) { + habla_vb(TEXTVB20,"VB20.als"); + if (resta_objeto(7) == 0) + flags[30] = 1; + if (resta_objeto(18) == 0) + flags[31] = 1; + if (resta_objeto(19) == 0) + flags[32] = 1; + } + habla_vb(TEXTVB21, "VB21.als"); + } else + animation_27_2(); + + flags[25] = 1; + rompo_y_salgo = 1; +} + +void DrasculaEngine::animation_23_anexo() { + int n, p_x = hare_x + 2, p_y = hare_y - 3; + int x[] = {1, 38, 75, 112, 75, 112, 75, 112, 149, 112, 149, 112, 149, 186, 223, 260, + 1, 38, 75, 112, 149, 112, 149, 112, 149, 112, 149, 186, 223, 260, 260, 260, 260, 223}; + int y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 1, 1, 1, 1}; + + lee_dibujos("an23.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + for (n = 0; n < 34; n++) { + copyRect(p_x, p_y, p_x, p_y, 36, 74, dir_dibujo1, dir_zona_pantalla); + copyRect(x[n], y[n], p_x, p_y, 36, 74, dir_hare_fondo, dir_zona_pantalla); + actualiza_refresco(); + updateScreen(p_x, p_y, p_x, p_y, 36, 74, dir_zona_pantalla); + pausa(5); + } + + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); +} + +void DrasculaEngine::animation_23_anexo2() { + int n, p_x = hare_x + 4, p_y = hare_y; + int x[] = {1, 35, 69, 103, 137, 171, 205, 239, 273, 1, 35, 69, 103, 137}; + int y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 73, 73, 73, 73}; + + pausa(50); + + lee_dibujos("an23_2.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + for (n = 0; n < 14; n++) { + copyRect(p_x, p_y, p_x, p_y, 33, 71, dir_dibujo1, dir_zona_pantalla); + copyRect(x[n], y[n], p_x, p_y, 33, 71, dir_hare_fondo, dir_zona_pantalla); + actualiza_refresco(); + updateScreen(p_x,p_y, p_x,p_y, 33,71, dir_zona_pantalla); + pausa(5); + } + + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo,1); +} + +void DrasculaEngine::animation_25_2() { + int n, pos_cabina[6]; + + lee_dibujos("an14_2.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("18.alg"); + descomprime_dibujo(dir_dibujo1, 1); + + pos_cabina[0] = 150; + pos_cabina[1] = 6; + pos_cabina[2] = 69; + pos_cabina[3] = 0; + pos_cabina[4] = 158; + pos_cabina[5] = 161; + + flags[24] = 0; + + comienza_sound("s6.als"); + + for (n = 0; n >= -160; n = n - 8) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + + actualiza_refresco_antes(); + pon_hare(); + pon_vb(); + + pos_cabina[3] = n; + + copyRectClip(pos_cabina, dir_hare_fondo, dir_zona_pantalla); + + actualiza_refresco(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + } + + fin_sound(); + + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); +} + +void DrasculaEngine::animation_27_2() { + flags[22] = 1; + + sin_verbo(); + resta_objeto(23); + suma_objeto(11); + + habla_vb(TEXTVB23, "VB23.als"); + habla_vb(TEXTVB24, "VB24.als"); + if (flags[30] == 1) + suma_objeto(7); + if (flags[31] == 1) + suma_objeto(18); + if (flags[32] == 1) + suma_objeto(19); + habla_vb(TEXTVB25,"VB25.als"); + habla_vb(TEXTVB26,"VB26.als"); +} + +void DrasculaEngine::animation_28_2() { + habla_vb(TEXTVB27, "VB27.als"); + habla_vb(TEXTVB28, "VB28.als"); + habla_vb(TEXTVB29, "VB29.als"); + habla_vb(TEXTVB30, "VB30.als"); +} + +void DrasculaEngine::animation_29_2() { + if (flags[33] == 0) { + habla_vb(TEXTVB32, "VB32.als"); + hablar(TEXT398, "398.als"); + habla_vb(TEXTVB33, "VB33.als"); + hablar(TEXT399, "399.als"); + habla_vb(TEXTVB34, "VB34.als"); + habla_vb(TEXTVB35, "VB35.als"); + hablar(TEXT400, "400.als"); + habla_vb(TEXTVB36, "VB36.als"); + habla_vb(TEXTVB37, "VB37.als"); + hablar(TEXT386, "386.als"); + habla_vb(TEXTVB38, "VB38.als"); + habla_vb(TEXTVB39, "VB39.als"); + hablar(TEXT401, "401.als"); + habla_vb(TEXTVB40, "VB40.als"); + habla_vb(TEXTVB41, "VB41.als"); + flags[33] = 1; + } else + habla_vb(TEXTVB43, "VB43.als"); + + hablar(TEXT402, "402.als"); + habla_vb(TEXTVB42, "VB42.als"); + + if (flags[38] == 0) { + hablar(TEXT403, "403.als"); + rompo_y_salgo = 1; + } else + hablar(TEXT386, "386.als"); +} + +void DrasculaEngine::animation_30_2() { + habla_vb(TEXTVB31, "VB31.als"); + hablar(TEXT396, "396.als"); +} + +void DrasculaEngine::animation_31_2() { + habla_vb(TEXTVB44, "VB44.als"); + lleva_vb(-50); + pausa(15); + lleva_al_hare(159, 140); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + sentido_hare = 2; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(78); + sentido_hare = 0; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(22); + hablar(TEXT406, "406.als"); + lleva_vb(98); + habla_vb(TEXTVB45, "VB45.als"); + habla_vb(TEXTVB46, "VB46.als"); + habla_vb(TEXTVB47, "VB47.als"); + hablar(TEXT407, "407.als"); + habla_vb(TEXTVB48, "VB48.als"); + habla_vb(TEXTVB49, "VB49.als"); + hablar(TEXT408, "408.als"); + habla_vb(TEXTVB50, "VB50.als"); + habla_vb(TEXTVB51, "VB51.als"); + hablar(TEXT409, "409.als"); + habla_vb(TEXTVB52, "VB52.als"); + habla_vb(TEXTVB53, "VB53.als"); + pausa(12); + habla_vb(TEXTVB54, "VB54.als"); + habla_vb(TEXTVB55, "VB55.als"); + hablar(TEXT410, "410.als"); + habla_vb(TEXTVB56, "VB56.als"); + + rompo_y_salgo = 1; + + flags[38] = 0; + flags[36] = 1; + sin_verbo(); + resta_objeto(8); + resta_objeto(13); + resta_objeto(15); + resta_objeto(16); + resta_objeto(17); + suma_objeto(20); +} + +void DrasculaEngine::animation_35_2() { + int n, x = 0; + + lleva_al_hare(96, 165); + lleva_al_hare(79, 165); + + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + lee_dibujos("an35_1.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("an35_2.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 70, 90, 46, 80, dir_hare_fondo, dir_zona_pantalla); + updateScreen(70,90, 70,90, 46,80,dir_zona_pantalla); + x = x + 46; + pausa(3); + } + + x = 0; + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 82, 70, 90, 46, 80, dir_hare_fondo, dir_zona_pantalla); + updateScreen(70, 90, 70, 90, 46, 80, dir_zona_pantalla); + x = x + 46; + pausa(3); + } + + x = 0; + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 70, 90, 46, 80, dir_hare_frente, dir_zona_pantalla); + updateScreen(70, 90, 70, 90, 46, 80, dir_zona_pantalla); + + x = x + 46; + + pausa(3); + } + + x = 0; + for (n = 0; n < 2; n++) { + x++; + copyBackground(x, 82, 70, 90, 46, 80, dir_hare_frente, dir_zona_pantalla); + updateScreen(70, 90, 70,90, 46, 80,dir_zona_pantalla); + x = x + 46; + pausa(3); + } + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(19); + + comienza_sound("s1.als"); + hipo_sin_nadie(18); + fin_sound(); + + pausa(10); + + FundeAlNegro(2); +} + +void DrasculaEngine::animation_1_3() { + hablar(TEXT413, "413.als"); + grr(); + pausa(50); + hablar(TEXT414, "414.als"); +} + +void DrasculaEngine::animation_2_3() { + flags[0] = 1; + playmusic(13); + animation_3_3(); + playmusic(13); + animation_4_3(); + flags[1] = 1; + refresca_pantalla(); + updateScreen(120, 0, 120, 0, 200, 200, dir_zona_pantalla); + animation_5_3(); + flags[0] = 0; + flags[1] = 1; + + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + lleva_al_hare(332, 127); +} + +void DrasculaEngine::animation_3_3() { + int n, x = 0; + int px = hare_x - 20, py = hare_y - 1; + + lee_dibujos("an2y_1.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("an2y_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("an2y_3.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 2, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 2, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 2, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } +} + +void DrasculaEngine::animation_4_3() { + int n, x = 0; + int px = 120, py = 63; + + lee_dibujos("any_1.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("any_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("any_3.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + for (n = 0; n < 4; n++){ + x++; + copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, px, py, 77, 89, dir_hare_frente, dir_zona_pantalla); + updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); + x = x + 77; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 91, px, py, 77, 89, dir_hare_frente, dir_zona_pantalla); + updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); + x = x + 77; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, px, py, 77, 89, dir_hare_dch, dir_zona_pantalla); + updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); + x = x + 77; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 91, px, py, 77, 89, dir_hare_dch, dir_zona_pantalla); + updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); + x = x + 77; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, px, py, 77, 89, dir_hare_fondo, dir_zona_pantalla); + updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); + x = x + 77; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 91, px, py, 77, 89, dir_hare_fondo, dir_zona_pantalla); + updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); + x = x + 77; + pausa(3); + } +} + +void DrasculaEngine::animation_5_3() { + int n, x = 0; + int px = hare_x - 20, py = hare_y - 1; + + lee_dibujos("an3y_1.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("an3y_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("an3y_3.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 2, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 2, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); + updateScreen(px,py, px,py, 71,72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 2, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } + + x = 0; + + for (n = 0; n < 4; n++) { + x++; + copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); + updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); + x = x + 71; + pausa(3); + } +} + +void DrasculaEngine::animation_6_3() { + int frame = 0, px = 112, py = 62; + int yoda_x[] = { 3 ,82, 161, 240, 3, 82 }; + int yoda_y[] = { 3, 3, 3, 3, 94, 94 }; + + hare_se_mueve = 0; + flags[3] = 1; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + flags[1] = 0; + + lee_dibujos("an4y.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + for (frame = 0; frame < 6; frame++) { + pausa(3); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyRect(yoda_x[frame], yoda_y[frame], px, py, 78, 90, dir_hare_frente, dir_zona_pantalla); + updateScreen(px, py, px, py, 78, 90, dir_zona_pantalla); + } + + flags[2] = 1; + + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +} + +void DrasculaEngine::animation_rayo() { + lee_dibujos("anr_1.alg"); + descomprime_dibujo(dir_hare_frente, MEDIA); + lee_dibujos("anr_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("anr_3.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("anr_4.alg"); + descomprime_dibujo(dir_dibujo1, 1); + lee_dibujos("anr_5.alg"); + descomprime_dibujo(dir_dibujo3, 1); + + updateScreen(0, 0, 0, 0, 320, 200, dir_hare_frente); + + pausa(50); + + comienza_sound("s5.als"); + + updateScreen(0, 0, 0, 0, 320, 200, dir_hare_dch); + pausa(3); + updateScreen(0, 0, 0, 0, 320, 200, dir_hare_fondo); + pausa(3); + updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo1); + pausa(3); + updateScreen(0, 0, 0, 0, 320, 200, dir_hare_fondo); + pausa(3); + updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo3); + pausa(3); + updateScreen(0, 0, 0, 0, 320, 200, dir_hare_frente); + fin_sound(); +} + +void DrasculaEngine::animation_2_4() { + habla_igor_sentado(TEXTI16, "I16.als"); + hablar(TEXT278, "278.als"); + habla_igor_sentado(TEXTI17, "I17.als"); + hablar(TEXT279, "279.als"); + habla_igor_sentado(TEXTI18, "I18.als"); +} + +void DrasculaEngine::animation_3_4() { + habla_igor_sentado(TEXTI19, "I19.als"); + habla_igor_sentado(TEXTI20, "I20.als"); + hablar(TEXT281, "281.als"); +} + +void DrasculaEngine::animation_4_4() { + hablar(TEXT287, "287.als"); + habla_igor_sentado(TEXTI21, "I21.als"); + hablar(TEXT284, "284.als"); + habla_igor_sentado(TEXTI22, "I22.als"); + hablar(TEXT285, "285.als"); + habla_igor_sentado(TEXTI23, "I23.als"); +} + +void DrasculaEngine::animation_7_4() { + Negro(); + hablar(TEXT427, "427.als"); + FundeDelNegro(1); + resta_objeto(8); + resta_objeto(10); + resta_objeto(12); + resta_objeto(16); + suma_objeto(17); + flags[30] = 0; + flags[29] = 0; +} + +void DrasculaEngine::animation_1_5() { + if (flags[0] == 0) { + hablar(TEXT430, "430.als"); + habla_bj(TEXTBJ16, "BJ16.als"); + habla_bj(TEXTBJ17, "BJ17.als"); + habla_bj(TEXTBJ18, "BJ18.als"); + hablar(TEXT217, "217.als"); + habla_bj(TEXTBJ19, "BJ19.als"); + hablar(TEXT229, "229.als"); + pausa(5); + lleva_al_hare(114, 170); + sentido_hare = 3; + hablar(TEXT431, "431.als"); + habla_bj(TEXTBJ20, "BJ20.als"); + sentido_hare = 2; + pausa(4); + hablar(TEXT438, "438.als"); + sitio_x = 120; + sitio_y = 157; + anda_a_objeto = 1; + sentido_final = 1; + empieza_andar(); + habla_bj(TEXTBJ21, "BJ21.als"); + + for (;;) { + if (hare_se_mueve == 0) + break; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + } + + sentido_hare = 1; + hablar(TEXT229, "229.als"); + flags[0] = 1; + } + + sentido_hare = 1; + conversa("op_8.cal"); +} + +void DrasculaEngine::animation_2_5() { + habla_bj(TEXTBJ22, "BJ22.als"); +} + +void DrasculaEngine::animation_3_5() { + habla_bj(TEXTBJ23, "BJ23.als"); + agarra_objeto(10); + rompo_y_salgo = 1; +} + +void DrasculaEngine::animation_4_5() { + flags[7] = 1; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + hablar(TEXT228, "228.als"); + habla_lobo(TEXTL1, "L1.als"); + habla_lobo(TEXTL2, "L2.als"); + pausa(23); + hablar(TEXT229, "229.als"); + habla_lobo(TEXTL3, "L3.als"); + habla_lobo(TEXTL4, "L4.als"); + hablar(TEXT230, "230.als"); + habla_lobo(TEXTL5, "L5.als"); + hablar(TEXT231, "231.als"); + habla_lobo(TEXTL6, "L6.als"); + habla_lobo(TEXTL7, "L7.als"); + pausa(33); + hablar(TEXT232, "232.als"); + habla_lobo(TEXTL8, "L8.als"); +} + +void DrasculaEngine::animation_5_5(){ + int h; + int frame = 0; + int hueso_x[] = {1, 99, 197, 1, 99, 197, 1, 99, 197}; + int hueso_y[] = {1, 1, 1, 66, 66, 66, 131, 131, 131}; + int vuela_x[] = {1, 63, 125, 187, 249}; + int pixel_x = hare_x - 53, pixel_y = hare_y - 9; + + sin_verbo(); + resta_objeto(8); + + lleva_al_hare(hare_x - 19, hare_y + alto_hare); + sentido_hare = 1; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + lee_dibujos("3an5_1.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("3an5_2.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + for (frame = 0; frame < 9; frame++) { + pausa(3); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyRect(hueso_x[frame], hueso_y[frame], pixel_x, pixel_y, 97, 64, dir_hare_fondo, dir_zona_pantalla); + updateScreen(pixel_x, pixel_y, pixel_x,pixel_y, 97,64, dir_zona_pantalla); + } + + copyBackground(52, 161, 198, 81, 26, 24, dir_dibujo3, dir_zona_pantalla); + updateScreen(198, 81, 198, 81, 26, 24, dir_zona_pantalla); + + for (frame = 0; frame < 9; frame++) { + pausa(3); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyRect(hueso_x[frame], hueso_y[frame], pixel_x, pixel_y, 97, 64, dir_hare_frente, dir_zona_pantalla); + updateScreen(pixel_x, pixel_y, pixel_x,pixel_y, 97, 64, dir_zona_pantalla); + } + + flags[6] = 1; + actualiza_datos(); + pausa(12); + + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + for (h = 0; h < (200 - 18); h++) + copyBackground(0, 53, 0, h, 320, 19, dir_hare_frente, dir_zona_pantalla); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + lee_dibujos("101.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("3an5_3.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("3an5_4.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo1); + pausa(9); + for (frame = 0; frame < 5; frame++) { + pausa(3); + copyBackground(vuela_x[frame], 1, 174, 79, 61, 109, dir_hare_fondo, dir_zona_pantalla); + updateScreen(174, 79, 174, 79, 61, 109, dir_zona_pantalla); + } + for (frame = 0; frame < 5; frame++) { + pausa(3); + copyBackground(vuela_x[frame], 1, 174, 79, 61, 109, dir_hare_dch, dir_zona_pantalla); + updateScreen(174, 79, 174, 79, 61, 109, dir_zona_pantalla); + } + updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo1); + + comienza_sound("s1.als"); + fin_sound(); + + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + borra_pantalla(); + + lee_dibujos("49.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); +} + +void DrasculaEngine::animation_6_5() { + habla_lobo(TEXTL9, "L9.als"); + hablar(TEXT234, "234.als"); +} + +void DrasculaEngine::animation_7_5() { + habla_lobo(TEXTL10, "L10.als"); + hablar(TEXT236, "236.als"); + habla_lobo(TEXTL11, "L11.als"); + habla_lobo(TEXTL12, "L12.als"); + habla_lobo(TEXTL13, "L13.als"); + pausa(34); + habla_lobo(TEXTL14, "L14.als"); +} + +void DrasculaEngine::animation_8_5() { + habla_lobo(TEXTL15, "L15.als"); + hablar(TEXT238, "238.als"); + habla_lobo(TEXTL16, "L16.als"); +} + +void DrasculaEngine::animation_9_5() { + flags[4] = 1; + hablar(TEXT401, "401.als"); + sin_verbo(); + resta_objeto(15); +} + +void DrasculaEngine::animation_10_5() { + flags[3] = 1; + hablar(TEXT401, "401.als"); + sin_verbo(); + resta_objeto(12); +} + +void DrasculaEngine::animation_11_5() { + flags[9] = 1; + if (flags[2] == 1 && flags[3] == 1 && flags[4] == 1) + animation_12_5(); + else { + flags[9] = 0; + hablar(TEXT33, "33.als"); + } +} + +void DrasculaEngine::animation_12_5() { + DacPalette256 palFondo1; + DacPalette256 palFondo2; + DacPalette256 palFondo3; + + int frame; + const int rayo_x[] = {1, 46, 91, 136, 181, 226, 271, 181}; + const int frusky_x[] = {100, 139, 178, 217, 100, 178, 217, 139, 100, 139}; + const int elfrusky_x[] = {1, 68, 135, 1, 68, 135, 1, 68, 135, 68, 1, 135, 68, 135, 68}; + //const int humo_x[] = {1, 29, 57, 85, 113, 141, 169, 197, 225}; + int color, componente; + char fundido; + + playmusic(26); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(27); + anima("rayo1.bin", 23); + comienza_sound("s5.als"); + anima("rayo2.bin", 17); + sentido_hare = 1; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + hare_oscuro(); + + for (color = 0; color < 255; color++) + for (componente = 0; componente < 3; componente++) { + palFondo1[color][componente] = palJuego[color][componente]; + palFondo2[color][componente] = palJuego[color][componente]; + palFondo3[color][componente] = palJuego[color][componente]; + } + + for (fundido = 1; fundido >= 0; fundido--) { + for (color = 0; color < 128; color++) + for (componente = 0; componente < 3; componente++) + palFondo1[color][componente] = LimitaVGA(palFondo1[color][componente] - 8 + fundido); + } + + for (fundido = 2; fundido >= 0; fundido--) { + for (color = 0; color < 128; color++) + for (componente = 0; componente < 3; componente++) + palFondo2[color][componente] = LimitaVGA(palFondo2[color][componente] - 8 + fundido); + } + + for (fundido = 3; fundido >= 0; fundido--) { + for (color = 0; color < 128; color++) + for (componente = 0; componente < 3; componente++) + palFondo3[color][componente] = LimitaVGA(palFondo3[color][componente] - 8 + fundido); + } + + lee_dibujos("3an11_1.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + for (frame = 0; frame < 8; frame++) { + if (frame == 2 || frame == 4 || frame == 8 || frame==10) + setvgapalette256((byte *)&palFondo1); + else if (frame == 1 || frame == 5 || frame == 7 || frame == 9) + setvgapalette256((byte *)&palFondo2); + else + setvgapalette256((byte *)&palFondo3); + + pausa(4); + refresca_pantalla(); + copyRect(rayo_x[frame], 1, 41, 0, 44, 44, dir_hare_fondo, dir_zona_pantalla); + copyRect(frusky_x[frame], 113, 205, 50, 38, 86, dir_dibujo3, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + } + + fin_sound_corte(); + + for (frame = 0; frame < 15; frame++) { + if (frame == 2 || frame == 4 || frame == 7 || frame == 9) + setvgapalette256((byte *)&palFondo1); + else if (frame == 1 || frame == 5) + setvgapalette256((byte *)&palJuego); + else + setvgapalette256((byte *)&palFondo2); + + pausa(4); + refresca_pantalla(); + copyRect(elfrusky_x[frame], 47, 192, 39, 66, 106, dir_hare_fondo, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + } + + anima("frel.bin", 16); + borra_pantalla(); + hare_claro(); + ActualizaPaleta(); + + flags[1] = 1; + + animation_13_5(); + comienza_sound("s1.als"); + hipo(12); + fin_sound(); + + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + lleva_al_hare(40, 169); + lleva_al_hare(-14, 175); + + rompo = 1; + musica_antes = musica_room; + hare_se_ve = 1; + borra_pantalla(); + sentido_hare = 1; + hare_se_mueve = 0; + hare_x = -1; + obj_saliendo = 104; + sin_verbo(); + carga_escoba("57.ald"); +} + +void DrasculaEngine::animation_13_5() { + int frank_x = 199; + int frame = 0; + int frus_x[] = {1, 46, 91, 136, 181, 226, 271}; + int frus_y[] = {1, 1, 1, 1, 1, 1, 1, 89}; + int pos_frusky[6]; + + lee_dibujos("auxfr.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + pos_frusky[3] = 81; + pos_frusky[4] = 44; + pos_frusky[5] = 87; + pos_frusky[0] = 1; + pos_frusky[1] = 1; + pos_frusky[2] = frank_x; + refresca_pantalla(); + copyRectClip(pos_frusky, dir_hare_fondo, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(15); + + playmusic(18); + + for (;;) { + refresca_pantalla(); + pos_frusky[0] = frus_x[frame]; + pos_frusky[1] = frus_y[frame]; + pos_frusky[2] = frank_x; + copyRectClip( pos_frusky, dir_hare_fondo, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + frank_x = frank_x - 5; + frame++; + if (frank_x <= -45) + break; + if (frame == 7) { + frame = 0; + sentido_hare = 3; + } + pausa(6); + } +} + +void DrasculaEngine::animation_14_5() { + flags[11] = 1; + comienza_sound("s3.als"); + refresca_pantalla(); + updateScreen(0, 0, 0,0 , 320, 200, dir_zona_pantalla); + fin_sound(); + pausa(17); + sentido_hare = 3; + hablar(TEXT246,"246.als"); + lleva_al_hare(89, 160); + flags[10] = 1; + comienza_sound("s7.als"); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + fin_sound(); + pausa(14); + sentido_hare = 3; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + habla_solo(TEXTD18, "d18.als"); + FundeAlNegro(1); +} + +void DrasculaEngine::animation_15_5() { + habla_mus(TEXTE4, "E4.als"); + habla_mus(TEXTE5, "E5.als"); + habla_mus(TEXTE6, "E6.als"); + hablar(TEXT291, "291.als"); + habla_mus(TEXTE7, "E7.als"); +} + +void DrasculaEngine::animation_16_5() { + habla_mus(TEXTE8, "E8.als"); +} + +void DrasculaEngine::animation_17_5() { + habla_mus(TEXTE9, "E9.als"); +} + +void DrasculaEngine::animation_1_6() { + int l; + + sentido_hare = 0; + hare_x = 103; + hare_y = 108; + flags[0] = 1; + for (l = 0; l < 200; l++) + factor_red[l] = 98; + + lee_dibujos("auxig2.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("auxdr.alg"); + descomprime_dibujo(dir_dibujo2, 1); + lee_dibujos("car.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + habla_dr_dch(TEXTD19, "D19.als"); + hablar(TEXT247, "247.als"); + habla_dr_dch(TEXTD20, "d20.als"); + habla_dr_dch(TEXTD21, "d21.als"); + hablar(TEXT248, "248.als"); + habla_dr_dch(TEXTD22, "d22.als"); + hablar(TEXT249, "249.als"); + habla_dr_dch(TEXTD23, "d23.als"); + conversa("op_11.cal"); + habla_dr_dch(TEXTD26, "d26.als"); + + anima("fum.bin", 15); + + habla_dr_dch(TEXTD27, "d27.als"); + hablar(TEXT254, "254.als"); + habla_dr_dch(TEXTD28, "d28.als"); + hablar(TEXT255, "255.als"); + habla_dr_dch(TEXTD29, "d29.als"); + FundeAlNegro(1); + borra_pantalla(); + lee_dibujos("time1.alg"); + descomprime_dibujo(dir_zona_pantalla, 1); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + delay(930); + borra_pantalla(); + Negro(); + hare_se_ve = 0; + flags[0] = 0; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + FundeDelNegro(1); + hablar(TEXT256, "256.als"); + habla_dr_dch(TEXTD30, "d30.als"); + hablar(TEXT257, "257.als"); + FundeAlNegro(0); + borra_pantalla(); + lee_dibujos("time1.alg"); + descomprime_dibujo(dir_zona_pantalla,1); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + delay(900); + borra_pantalla(); + Negro(); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + FundeDelNegro(1); + hablar(TEXT258, "258.als"); + habla_dr_dch(TEXTD31, "d31.als"); + animation_5_6(); + habla_dr_dch(TEXTD32, "d32.als"); + habla_igor_dch(TEXTI11, "I11.als"); + sentido_igor = 3; + habla_dr_dch(TEXTD33, "d33.als"); + habla_igor_frente(TEXTI12, "I12.als"); + habla_dr_dch(TEXTD34, "d34.als"); + sentido_dr = 0; + habla_dr_izq(TEXTD35, "d35.als"); + borra_pantalla(); + carga_escoba("102.ald"); + activa_pendulo(); +} + +void DrasculaEngine::animation_2_6() { + habla_dr_dch(TEXTD24, "d24.als"); +} + +void DrasculaEngine::animation_3_6() { + habla_dr_dch(TEXTD24, "d24.als"); +} + +void DrasculaEngine::animation_4_6() { + habla_dr_dch(TEXTD25, "d25.als"); +} + +void DrasculaEngine::animation_5_6() { + int n, pos_pen[6]; + + pos_pen[0] = 1; + pos_pen[1] = 29; + pos_pen[2] = 204; + pos_pen[3] = -125; + pos_pen[4] = 18; + pos_pen[5] = 125; + + anima("man.bin", 14); + + for (n = -125; n <= 0; n = n + 2) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + pos_pen[3] = n; + copyRectClip(pos_pen, dir_dibujo3, dir_zona_pantalla); + + actualiza_refresco(); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(2); + } + + flags[3] = 1; +} + +void DrasculaEngine::animation_6_6() { + anima("rct.bin", 11); + borra_pantalla(); + sin_verbo(); + resta_objeto(20); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + rompo = 1; + obj_saliendo = 104; + hare_x = -1; + sin_verbo(); + carga_escoba("58.ald"); + hare_se_ve = 1; + sentido_hare = 1; + anima("hbp.bin", 14); + + sentido_hare = 3; + flags[0] = 1; + flags[1] = 0; + flags[2] = 1; +} + +void DrasculaEngine::animation_7_6() { + flags[8] = 1; + actualiza_datos(); +} + +void DrasculaEngine::animation_9_6() { + int v_cd; + + anima("fin.bin", 14); + playmusic(13); + flags[5] = 1; + anima("drf.bin", 16); + FundeAlNegro(0); + borra_pantalla(); + hare_x = -1; + obj_saliendo = 108; + carga_escoba("59.ald"); + strcpy(num_room, "nada.alg"); + lee_dibujos("nota2.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + Negro(); + sentido_hare = 1; + hare_x -= 21; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + FundeDelNegro(0); + pausa(96); + lleva_al_hare(116, 178); + sentido_hare = 2; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + playmusic(9); + borra_pantalla(); + lee_dibujos("nota.alg"); + descomprime_dibujo(dir_dibujo1, COMPLETA); + color_abc(BLANCO); + habla_solo(TEXTBJ24, "bj24.als"); + habla_solo(TEXTBJ25, "bj25.als"); + habla_solo(TEXTBJ26, "bj26.als"); + habla_solo(TEXTBJ27, "bj27.als"); + habla_solo(TEXTBJ28, "bj28.als"); + sentido_hare = 3; + borra_pantalla(); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, COMPLETA); + lee_dibujos("nota2.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + hablar(TEXT296, "296.als"); + hablar(TEXT297, "297.als"); + hablar(TEXT298, "298.als"); + sentido_hare = 1; + hablar(TEXT299, "299.als"); + hablar(TEXT300, "300.als"); + refresca_pantalla(); + copyBackground(0, 0, 0, 0, 320, 200, dir_zona_pantalla, dir_dibujo1); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + color_abc(VERDE_CLARO); + habla_solo("GOOOOOOOOOOOOOOOL", "s15.als"); + lee_dibujos("nota2.alg"); + descomprime_dibujo(dir_dibujo1, 1); + sentido_hare = 0; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + hablar(TEXT301, "301.als"); + v_cd = _mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16; + v_cd = v_cd + 4; + playmusic(17); + FundeAlNegro(1); + borra_pantalla(); + fliplay("qpc.bin", 1); + MusicFadeout(); + stopmusic(); + borra_pantalla(); + _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, v_cd * 16); + playmusic(3); + fliplay("crd.bin", 1); + stopmusic(); +} + +void DrasculaEngine::animation_10_6() { + comienza_sound ("s14.als"); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + copyBackground(164, 85, 155, 48, 113, 114, dir_dibujo3, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + fin_sound(); + habla_taber2(TEXTT23, "t23.als"); + flags[7] = 1; +} + +void DrasculaEngine::animation_11_6() { + habla_taber2(TEXTT10, "t10.als"); + hablar(TEXT268, "268.als"); + habla_taber2(TEXTT11, "t11.als"); +} + +void DrasculaEngine::animation_12_6() { + habla_taber2(TEXTT12, "t12.als"); + hablar(TEXT270, "270.als"); + habla_taber2(TEXTT13, "t13.als"); + habla_taber2(TEXTT14, "t14.als"); +} + +void DrasculaEngine::animation_13_6() { + habla_taber2(TEXTT15, "t15.als"); +} + +void DrasculaEngine::animation_14_6() { + habla_taber2(TEXTT24, "t24.als"); + suma_objeto(21); + flags[10] = 1; + rompo_y_salgo = 1; +} + +void DrasculaEngine::animation_15_6() { + habla_taber2(TEXTT16, "t16.als"); +} + +void DrasculaEngine::animation_18_6() { + flags[6] = 1; + sin_verbo(); + resta_objeto(21); + anima("beb.bin", 10); +} + +void DrasculaEngine::animation_19_6() { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyBackground(140, 23, 161, 69, 35, 80, dir_dibujo3, dir_zona_pantalla); + + actualiza_refresco_antes(); + pon_hare(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(6); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + comienza_sound("s4.als"); + pausa(6); + fin_sound(); +} + +void DrasculaEngine::animation_12_2() { + lee_dibujos("an12.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + hablar(TEXT356, "356.als"); + + actualiza_refresco_antes(); + + copyBackground(1, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); + updateScreen(228, 112, 228, 112, 47, 60, dir_zona_pantalla); + + pausa(3); + + actualiza_refresco_antes(); + + copyBackground(49, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); + pon_hare(); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(3); + stopmusic(); + flags[11] = 1; + + habla_pianista(TEXTP5, "P5.als"); + conversa("op_1.cal"); + + flags[11] = 0; + lee_dibujos("974.alg"); + descomprime_dibujo(dir_hare_dch, 1); +} + +void DrasculaEngine::animation_26_2() { + int n, x = 0; + + lee_dibujos("an12.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + hablar(TEXT392, "392.als"); + + actualiza_refresco_antes(); + + copyBackground(1, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); + updateScreen(228, 112, 228, 112, 47, 60, dir_zona_pantalla); + + pausa(3); + + actualiza_refresco_antes(); + + copyBackground(49, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); + pon_hare(); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(3); + stopmusic(); + flags[11] = 1; + + habla_pianista(TEXTP5, "P5.als"); + hablar(TEXT393, "393.als"); + habla_pianista(TEXTP17, "P17.als"); + habla_pianista(TEXTP18, "P18.als"); + habla_pianista(TEXTP19, "P19.als"); + + lee_dibujos("an26.alg"); + descomprime_dibujo(dir_hare_dch, 1); + for (n = 0; n < 6; n++){ + x++; + copyBackground(x, 1, 225, 113, 50, 59, dir_hare_dch, dir_zona_pantalla); + updateScreen(225,113, 225,113, 50,59, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + + x = 0; + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 61, 225, 113, 50, 59, dir_hare_dch, dir_zona_pantalla); + updateScreen(225, 113, 225, 113, 50, 59, dir_zona_pantalla); + x = x + 50; + if (n == 2) + comienza_sound("s9.als"); + pausa(3); + } + + fin_sound_corte(); + x = 0; + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 121, 225, 113, 50, 59, dir_hare_dch, dir_zona_pantalla); + updateScreen(225, 113, 225, 113, 50, 59, dir_zona_pantalla); + x = x + 50; + pausa(3); + } + + agarra_objeto(11); + resta_objeto(12); + + flags[11] = 0; + flags[39] = 1; + lee_dibujos("974.alg"); + descomprime_dibujo(dir_hare_dch, 1); + musica_room = 16; +} + +void DrasculaEngine::animation_11_2() { + lee_dibujos("an11y13.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + hablar(TEXT352, "352.als"); + habla_tabernero(TEXTT1, "T1.als"); + hablar(TEXT353, "353.als"); + habla_tabernero(TEXTT17, "T17.als"); + hablar(TEXT354, "354.als"); + habla_tabernero(TEXTT18, "T18.als"); + hablar(TEXT355, "355.als"); + pausa(40); + habla_tabernero("No, nada", "d82.als"); + + lee_dibujos("974.alg"); + descomprime_dibujo(dir_hare_dch, 1); +} + +void DrasculaEngine::animation_13_2() { + lee_dibujos("an11y13.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + if (flags[41] == 0) { + hablar(TEXT103, "103.als"); + habla_borracho(TEXTB4, "B4.als"); + flags[12] = 1; + hablar(TEXT367, "367.als"); + habla_borracho(TEXTB5, "B5.als"); + flags[12] = 1; + hablar(TEXT368, "368.als"); + habla_borracho(TEXTB6, "B6.als"); + habla_borracho(TEXTB7, "B7.als"); + flags[41] = 1; + } + conversa("op_2.cal"); + + lee_dibujos("964.alg"); + descomprime_dibujo(dir_hare_frente, 1); +} + +void DrasculaEngine::animation_18_2() { + hablar(TEXT378, "378.als"); + habla_vbpuerta(TEXTVB4, "VB4.als"); + conversa("op_3.cal"); +} + +void DrasculaEngine::animation_22_2() { + hablar(TEXT374,"374.als"); + + sentido_hare=2; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + comienza_sound("s13.als"); + fin_sound(); + sentido_hare = 1; + + habla_vbpuerta(TEXTVB1, "VB1.als"); + hablar(TEXT375, "375.als"); + habla_vbpuerta(TEXTVB2, "VB2.als"); + hablar(TEXT376, "376.als"); + habla_vbpuerta(TEXTVB3, "VB3.als"); + + flags[18] = 1; +} + +void DrasculaEngine::animation_24_2() { + if (hare_x < 178) + lleva_al_hare(208, 136); + sentido_hare = 3; + refresca_pantalla(); + pausa(3); + sentido_hare = 0; + + hablar(TEXT356, "356.als"); + + lee_dibujos("an24.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + animation_32_2(); + + flags[21] = 1; + + habla_vb(TEXTVB22, "VB22.als"); + + if (flags[22] == 0) + conversa("op_4.cal"); + else + conversa("op_5.cal"); + + sal_de_la_habitacion(0); + flags[21] = 0; + flags[24] = 0; + sentido_vb = 1; + vb_x = 120; +} + +void DrasculaEngine::animation_32_2() { + int n, x = 0; + + lee_dibujos("an32_1.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("an32_2.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + + for (n = 0; n < 4; n++) { + x++; + copyBackground(x, 1, 113, 53, 65, 81, dir_dibujo3, dir_zona_pantalla); + updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); + x = x + 65; + pausa(4); + } + + x = 0; + for (n = 0; n < 4; n++) { + x++; + copyBackground(x, 83, 113, 53, 65, 81, dir_dibujo3, dir_zona_pantalla); + updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); + x = x + 65; + pausa(4); + } + + x = 0; + for (n = 0; n < 4; n++) { + x++; + copyBackground(x, 1, 113, 53, 65, 81, dir_hare_fondo, dir_zona_pantalla); + updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); + x = x + 65; + pausa(4); + } + + x = 0; + for (n = 0; n < 3; n++) { + x++; + copyBackground(x, 83, 113, 53, 65, 81, dir_hare_fondo, dir_zona_pantalla); + updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); + x = x + 65; + if (n < 2) + pausa(4); + } + + lee_dibujos("aux18.alg"); + descomprime_dibujo(dir_dibujo3, 1); +} + +void DrasculaEngine::animation_34_2() { + int n, x = 0; + + sentido_hare = 1; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + lee_dibujos("an34_1.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("an34_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + for (n = 0; n < 3; n++) { + x++; + copyBackground(x, 1, 218, 79, 83, 75, dir_hare_fondo, dir_zona_pantalla); + updateScreen(218, 79, 218, 79, 83, 75, dir_zona_pantalla); + x = x + 83; + pausa(3); + } + + x = 0; + + for (n = 0; n < 3; n++) { + x++; + copyBackground(x, 77, 218, 79, 83, 75, dir_hare_fondo, dir_zona_pantalla); + updateScreen(218, 79, 218, 79, 83, 75, dir_zona_pantalla); + x = x + 83; + pausa(3); + } + + x = 0; + comienza_sound("s8.als"); + + for (n = 0; n < 3; n++) { + x++; + copyBackground(x, 1, 218, 79, 83, 75, dir_hare_dch, dir_zona_pantalla); + updateScreen(218, 79, 218, 79, 83,75, dir_zona_pantalla); + x = x + 83; + pausa(3); + } + fin_sound(); + + pausa(30); + + copyBackground(1, 77, 218, 79, 83, 75, dir_hare_dch, dir_zona_pantalla); + updateScreen(218, 79, 218, 79, 83, 75, dir_zona_pantalla); + pausa(3); + + lee_dibujos("994.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("974.alg"); + descomprime_dibujo(dir_hare_dch, 1); +} + +void DrasculaEngine::animation_36_2() { + lee_dibujos("an11y13.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + hablar(TEXT404, "404.als"); + habla_tabernero(TEXTT19, "T19.als"); + habla_tabernero(TEXTT20, "T20.als"); + habla_tabernero(TEXTT21, "T21.als"); + hablar(TEXT355, "355.als"); + pausa(40); + habla_tabernero("No, nada", "d82.als"); + + lee_dibujos("974.alg"); + descomprime_dibujo(dir_hare_dch, 1); +} + +void DrasculaEngine::animation_7_2() { + int n, x = 0; + + lee_dibujos("an7_1.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("an7_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("an7_3.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + if (flags[3] == 1) + copyBackground(258, 110, 85, 44, 23, 53, dir_dibujo3, dir_dibujo1); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + lee_dibujos("an7_4.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("an7_5.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("an7_6.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("an7_7.alg"); + descomprime_dibujo(dir_dibujo3, 1); + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51,73, dir_hare_dch, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_dibujo3, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 2; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_dibujo3, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + lee_dibujos("an7_8.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("an7_9.alg"); + descomprime_dibujo(dir_hare_dch, 1); + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 75, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(x, 1, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + x = x + 51; + pausa(3); + } + + + copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); + copyRect(1, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); + updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); + + flags[37] = 1; + + if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) + flags[38] = 1; + + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("aux3.alg"); + descomprime_dibujo(dir_dibujo3, 1); +} + +void DrasculaEngine::animation_5_2() { + int n, x = 0; + + sentido_hare = 0; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + lee_dibujos("an5_1.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("an5_2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("an5_3.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("an5_4.alg"); + descomprime_dibujo(dir_dibujo3, 1); + + copyBackground(1, 1, 213, 66, 53,84, dir_hare_fondo, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 213, 66, 53, 84, dir_hare_fondo, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84,dir_zona_pantalla); + x = x + 52; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 86, 213, 66, 53, 84, dir_hare_fondo, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); + x = x + 52; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 213, 66, 53, 84, dir_hare_dch, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); + x = x + 52; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 213, 66, 53, 84, dir_hare_dch, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); + x = x + 52; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 86, 213, 66, 53, 84, dir_hare_dch, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); + x = x + 52; + pausa(3); + } + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 213, 66, 53, 84, dir_hare_frente, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); + x = x + 52; + pausa(3); + } + + comienza_sound("s1.als"); + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 86, 213, 66, 53, 84, dir_hare_frente, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); + x = x + 52; + pausa(3); + } + fin_sound_corte(); + + x = 0; + + for (n = 0; n < 6; n++) { + x++; + copyBackground(x, 1, 213, 66, 53, 84, dir_dibujo3, dir_zona_pantalla); + updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); + x = x + 52; + pausa(3); + } + + lee_dibujos("994.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("974.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("964.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("aux5.alg"); + descomprime_dibujo(dir_dibujo3, 1); + flags[8] = 1; + hare_x = hare_x - 4; + hablar_sinc(TEXT46, "46.als", "4442444244244"); + sin_verbo(); +} + +void DrasculaEngine::animation_6_2() { + stopmusic(); + flags[9] = 1; + + borra_pantalla(); + lee_dibujos("ciego1.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("ciego2.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("ciego3.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("ciego4.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("ciego5.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(1); + + if (flags[4] == 1) + habla_hacker(TEXTD66, "d66.als"); + pausa(6); + habla_ciego(TEXTD78, "d78.als", + "004447222550002222755554444466222000220555002220550444446666662220000557550033344477222522665444466663337446055504446550550550222633003330000666622044422755722270255566667555655007222777"); + pausa(4); + habla_hacker(TEXTD67, "d67.als"); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(10); + + borra_pantalla(); + + playmusic(musica_room); + lee_dibujos("9.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("aux9.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + sin_verbo(); + + flags[9] = 0; +} + +void DrasculaEngine::animation_33_2() { + stopmusic(); + flags[9] = 1; + + pausa(12); + hablar(TEXTD56, "d56.als" ); + pausa(8); + + borra_pantalla(); + lee_dibujos("ciego1.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("ciego2.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("ciego3.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("ciego4.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("ciego5.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(10); + + habla_ciego(TEXTD68, "d68.als", "44472225500022227555544444472225500022227555544444664466"); + pausa(5); + habla_hacker(TEXTD57, "d57.als"); + pausa(6); + _system->delayMillis(1000); + habla_ciego(TEXTD77, "d77.als", "56665004444447222550002222755554444466555033022755555000444444444444444444444444444444"); + habla_hacker(TEXTD65, "d65.als"); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(14); + + borra_pantalla(); + + playmusic(musica_room); + lee_dibujos("9.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("aux9.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("97.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + sin_verbo(); + + flags[33] = 1; + flags[9] = 0; +} + +void DrasculaEngine::animation_1_4() { + if (flags[21] == 0) { + strcpy(nombre_obj[2], "igor"); + hablar(TEXT275, "275.als"); + + actualiza_refresco_antes(); + + copyBackground(131, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); + updateScreen(199, 95, 199, 95, 50, 66, dir_zona_pantalla); + + pausa(3); + + actualiza_refresco_antes(); + + copyBackground(182, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); + pon_hare(); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + pausa(3); + flags[18] = 1; + flags[20] = 1; + + habla_igor_sentado(TEXTI13, "I13.als"); + habla_igor_sentado(TEXTI14, "I14.als"); + habla_igor_sentado(TEXTI15, "I15.als"); + flags[21] = 1; + } else { + hablar(TEXT356, "356.als"); + + actualiza_refresco_antes(); + + copyBackground(131, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); + updateScreen(199, 95, 199, 95, 50, 66, dir_zona_pantalla); + pausa(2); + + actualiza_refresco_antes(); + + copyBackground(182, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); + pon_hare(); + + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + + flags[18] = 1; + flags[20] = 1; + + hablar(TEXT276, "276.als"); + pausa(14); + habla_igor_sentado(TEXTI6, "I6.als"); + } + + conversa("op_6.cal"); + flags[20] = 0; + flags[18] = 0; +} + +void DrasculaEngine::animation_5_4(){ + sentido_hare = 3; + lee_dibujos("anh_dr.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lleva_al_hare(99, 160); + lleva_al_hare(38, 177); + hare_se_ve = 0; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + delay(800); + anima("bio.bin", 14); + flags[29] = 1; + hare_x = 95; + hare_y = 82; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + abre_puerta(2, 0); + lee_dibujos("auxigor.alg"); + descomprime_dibujo(dir_hare_frente, 1); + x_igor = 100; + y_igor = 65; + habla_igor_frente(TEXTI29, "I29.ALS"); + habla_igor_frente(TEXTI30, "I30.als"); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + hare_se_ve = 1; + FundeAlNegro(0); + sal_de_la_habitacion(0); +} + +void DrasculaEngine::animation_6_4() { + char room[13]; + + strcpy(room, num_room); + strcpy(num_room, "26.alg"); + borra_pantalla(); + lee_dibujos("26.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("aux26.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("auxigor.alg"); + descomprime_dibujo(dir_hare_frente, 1); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + refresca_26_antes(); + x_igor = 104; + y_igor = 71; + pon_igor(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(40); + habla_igor_frente(TEXTI26, "I26.als"); + strcpy(num_room, room); + borra_pantalla(); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos(pantalla_disco); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos(num_room); + descomprime_dibujo(dir_dibujo1, MEDIA); + sin_verbo(); + refresca_pantalla(); +} + +void DrasculaEngine::animation_8_4() { + int frame; + int estanteria_x[] = {1, 75, 149, 223, 1, 75, 149, 223, 149, 223, 149, 223, 149, 223}; + int estanteria_y[] = {1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74}; + + lee_dibujos("an_8.alg"); + descomprime_dibujo(dir_hare_frente, 1); + + for (frame = 0; frame < 14; frame++) { + pausa(2); + copyBackground(estanteria_x[frame], estanteria_y[frame], 77, 45, 73, 72, dir_hare_frente, dir_zona_pantalla); + updateScreen(77, 45, 77, 45, 73, 72, dir_zona_pantalla); + } + + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, 1); + abre_puerta(7, 2); +} + +void DrasculaEngine::animation_9_4() { + anima("st.bin", 14); + FundeAlNegro(1); +} + + +} // End of namespace Drascula diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp index 19d81a64da..891c016676 100644 --- a/engines/drascula/drascula.cpp +++ b/engines/drascula/drascula.cpp @@ -105,8 +105,6 @@ static const int x1d_menu[] = {280, 40, 80, 120, 160, 200, 240, 0, 40, 80, 120, static const int y1d_menu[] = {0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 25, 25, 25, 50, 50, 50, 50, 50, 50, 50, 75, 75, 75, 75, 75, 75, 75, 100}; static int frame_x[20] = {43, 87, 130, 173, 216, 259}; -static const int interf_x[] ={ 1, 65, 129, 193, 1, 65, 129 }; -static const int interf_y[] ={ 51, 51, 51, 51, 83, 83, 83 }; static const char mirar_t[3][88] = {TEXT100, TEXT101, TEXT54}; static const char mirar_v[3][14] = {"100.als", "101.als", "54.als"}; static const char poder_t[6][88] = {TEXT11, TEXT109, TEXT111, TEXT110, TEXT115, TEXT116}; @@ -825,569 +823,6 @@ int DrasculaEngine::resta_objeto(int osj) { return 1; } -void DrasculaEngine::animation_1_1() { - int l, l2, p; - int pos_pixel[6]; - - while (term_int == 0) { - playmusic(29); - fliplay("logoddm.bin", 9); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - delay(600); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - delay(340); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - playmusic(26); - delay(500); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - fliplay("logoalc.bin", 8); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - lee_dibujos("cielo.alg"); - descomprime_dibujo(dir_zona_pantalla, 256); - Negro(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - FundeDelNegro(2); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - delay(900); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - color_abc(ROJO); - centra_texto("Transilvanya, 1993 d.c.", 160, 100); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - delay(1000); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - delay(1200); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - fliplay("scrollb.bin", 9); - - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - comienza_sound("s5.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("scr2.bin", 17); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - fin_sound_corte(); - anima("scr3.bin", 17); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - lee_dibujos("cielo2.alg"); - descomprime_dibujo(dir_zona_pantalla, 256); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - FundeAlNegro(1); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, COMPLETA); - lee_dibujos("103.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("104.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("aux104.alg"); - descomprime_dibujo(dir_dibujo2, 1); - - playmusic(4); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - delay(400); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - for (l2 = 0; l2 < 3; l2++) - for (l = 0; l < 7; l++) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyBackground(interf_x[l], interf_y[l], 156, 45, 63, 31, dir_dibujo2, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if (getscan() == Common::KEYCODE_ESCAPE) { - term_int = 1; - break; - } - pausa(3); - } - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - l2 = 0; p = 0; - pos_pixel[3] = 45; - pos_pixel[4] = 63; - pos_pixel[5] = 31; - - for (l = 0; l < 180; l++) { - copyBackground(0, 0, 320 - l, 0, l, 200, dir_dibujo3, dir_zona_pantalla); - copyBackground(l, 0, 0, 0, 320 - l, 200, dir_dibujo1, dir_zona_pantalla); - - pos_pixel[0] = interf_x[l2]; - pos_pixel[1] = interf_y[l2]; - pos_pixel[2] = 156 - l; - - copyRectClip(pos_pixel, dir_dibujo2, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - p++; - if (p == 6) { - p = 0; - l2++; - } - if (l2 == 7) - l2 = 0; - if (getscan() == Common::KEYCODE_ESCAPE) { - term_int = 1; - break; - } - } - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - copyBackground(0, 0, 0, 0, 320, 200, dir_zona_pantalla, dir_dibujo1); - - habla_dr_grande(TEXTD1, "D1.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - borra_pantalla(); - - lee_dibujos("100.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("auxigor.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("auxdr.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - sentido_dr = 0; - x_dr = 129; - y_dr = 95; - sentido_igor = 1; - x_igor = 66; - y_igor = 97; - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_igor_dch(TEXTI8, "I8.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_dr_izq(TEXTD2, "d2.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_dr_izq(TEXTD3, "d3.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("lib.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("lib2.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - color_solo = ROJO; - lee_dibujos("plan1.alg"); - descomprime_dibujo(dir_zona_pantalla, MEDIA); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(10); - habla_solo(TEXTD4,"d4.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - lee_dibujos("plan1.alg"); - descomprime_dibujo(dir_zona_pantalla, MEDIA); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_solo(TEXTD5, "d5.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("lib2.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - lee_dibujos("plan2.alg"); - descomprime_dibujo(dir_zona_pantalla, MEDIA); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(20); - habla_solo(TEXTD6, "d6.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("lib2.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - lee_dibujos("plan3.alg"); - descomprime_dibujo(dir_zona_pantalla, MEDIA); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(20); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_solo(TEXTD7, "d7.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - lee_dibujos("plan3.alg"); - descomprime_dibujo(dir_zona_pantalla, MEDIA); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_solo(TEXTD8, "d8.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - lee_dibujos("100.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - MusicFadeout(); - stopmusic(); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_igor_dch(TEXTI9, "I9.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_dr_izq(TEXTD9, "d9.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_igor_dch(TEXTI10, "I10.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - playmusic(11); - habla_dr_izq(TEXTD10, "d10.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("rayo1.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - comienza_sound("s5.als"); - anima("rayo2.bin", 15); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("frel2.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("frel.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("frel.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - fin_sound_corte(); - borra_pantalla(); - Negro(); - playmusic(23); - FundeDelNegro(0); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_dr = 1; - habla_igor_dch(TEXTI1, "I1.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_dr_dch(TEXTD11, "d11.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_dr = 3; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(1); - sentido_dr = 0; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_dr_izq(TEXTD12, "d12.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_dr = 3; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(1); - sentido_dr = 1; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_igor_dch(TEXTI2, "I2.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - pausa(13); - habla_dr_dch(TEXTD13,"d13.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_dr = 3; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(1); - sentido_dr = 0; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_igor(); - pon_dr(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_dr_izq(TEXTD14, "d14.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_igor_dch(TEXTI3, "I3.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_dr_izq(TEXTD15, "d15.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_igor_dch(TEXTI4, "I4.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_dr_izq(TEXTD16, "d16.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_igor_dch(TEXTI5, "I5.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_igor = 3; - habla_dr_izq(TEXTD17, "d17.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - pausa(18); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_igor_frente(TEXTI6, "I6.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - FundeAlNegro(0); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - - playmusic(2); - pausa(5); - fliplay("intro.bin", 12); - term_int = 1; - } - borra_pantalla(); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, COMPLETA); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); -} - -void DrasculaEngine::animation_2_1() { - int l; - - lleva_al_hare(231, 91); - hare_se_ve = 0; - - term_int = 0; - - for (;;) { - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - anima("ag.bin", 14); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - lee_dibujos("an11y13.alg"); - descomprime_dibujo(dir_hare_dch, 1); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - habla_tabernero(TEXTT22, "T22.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - pausa(4); - comienza_sound("s1.als"); - hipo(18); - fin_sound(); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - borra_pantalla(); - stopmusic(); - corta_musica = 1; - memset(dir_zona_pantalla, 0, 64000); - color_solo = BLANCO; - pausa(80); - - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_solo(TEXTBJ1, "BJ1.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - lee_dibujos("bj.alg"); - descomprime_dibujo(dir_zona_pantalla, MEDIA); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - Negro(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - FundeDelNegro(1); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - color_solo = AMARILLO; - habla_solo(TEXT214, "214.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - borra_pantalla(); - - lee_dibujos("16.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - lee_dibujos("auxbj.alg"); - descomprime_dibujo(dir_dibujo3, 1); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - strcpy(num_room, "16.alg"); - - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - for (l = 0; l < 200; l++) - factor_red[l] = 99; - x_bj = 170; - y_bj = 90; - sentido_bj = 0; - hare_x = 91; - hare_y = 95; - sentido_hare = 1; - hare_se_ve = 1; - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - lee_dibujos("97g.alg"); - descomprime_dibujo(dir_hare_dch, 1); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - anima("lev.bin", 15); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - - lleva_al_hare(100 + ancho_hare / 2, 99 + alto_hare); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_hare = 1; - hare_x = 100; - hare_y = 95; - - habla_bj(TEXTBJ2, "BJ2.als"); - hablar(TEXT215, "215.als"); - habla_bj(TEXTBJ3, "BJ3.als"); - hablar(TEXT216, "216.als"); - habla_bj(TEXTBJ4, "BJ4.als"); - habla_bj(TEXTBJ5, "BJ5.als"); - habla_bj(TEXTBJ6, "BJ6.als"); - hablar(TEXT217, "217.als"); - habla_bj(TEXTBJ7, "BJ7.als"); - hablar(TEXT218, "218.als"); - habla_bj(TEXTBJ8, "BJ8.als"); - hablar(TEXT219, "219.als"); - habla_bj(TEXTBJ9, "BJ9.als"); - hablar(TEXT220, "220.als"); - hablar(TEXT221, "221.als"); - habla_bj(TEXTBJ10, "BJ10.als"); - hablar(TEXT222, "222.als"); - anima("gaf.bin", 15); - anima("bjb.bin", 14); - playmusic(9); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - lee_dibujos("97.alg"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - descomprime_dibujo(dir_hare_dch, 1); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - pausa(120); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_solo(TEXT223, "223.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - color_solo = BLANCO; - refresca_pantalla(); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(110); - habla_solo(TEXTBJ11, "BJ11.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - refresca_pantalla(); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - pausa(118); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - lleva_al_hare(132, 97 + alto_hare); - pausa(60); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - hablar(TEXT224, "224.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - habla_bj(TEXTBJ12, "BJ12.als"); - lleva_al_hare(157, 98 + alto_hare); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - anima("bes.bin", 16); - playmusic(11); - anima("rap.bin", 16); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_hare = 3; - strcpy(num_room, "no_bj.alg"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - pausa(8); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - hablar(TEXT225, "225.als"); - pausa(76); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - sentido_hare = 1; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - hablar(TEXT226, "226.als"); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(30); - if ((term_int == 1) || (getscan() == Common::KEYCODE_ESCAPE)) - break; - hablar(TEXT227,"227.als"); - FundeAlNegro(0); - break; - } -} - void DrasculaEngine::sin_verbo() { int c = 171; if (menu_scr == 1) @@ -2633,74 +2068,8 @@ void DrasculaEngine::pausa(int cuanto) { _system->delayMillis(cuanto * 30); // was originaly 2 } -void DrasculaEngine::habla_dr_grande(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - int x_habla[4] = {47, 93, 139, 185}; - int cara; - int l = 0; - - int longitud; - longitud = strlen(dicho); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - buffer_teclado(); - - color_abc(ROJO); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(3); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyBackground(interf_x[l] + 24, interf_y[l], 0, 45, 39, 31, dir_dibujo2, dir_zona_pantalla); - copyBackground(x_habla[cara], 1, 171, 68, 45, 48, dir_dibujo2, dir_zona_pantalla); - l++; - if (l == 7) - l = 0; - - if (con_voces == 0) - centra_texto(dicho, 191, 69); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - - byte key = getscan(); - if (key == Common::KEYCODE_ESCAPE) - term_int = 1; - - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } -} - -void DrasculaEngine::pon_igor() { - int pos_igor[6]; +void DrasculaEngine::pon_igor() { + int pos_igor[6]; pos_igor[0] = 1; if (num_ejec == 4) { @@ -5693,75 +5062,6 @@ bucle_opc: sin_verbo(); } -void DrasculaEngine::animation_3_1() { - lee_dibujos("an11y13.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - hablar(TEXT192, "192.als"); - habla_tabernero(TEXTT1, "t1.als"); - hablar(TEXT193, "193.als"); - habla_tabernero(TEXTT2, "t2.als"); - hablar(TEXT194, "194.als"); - habla_tabernero(TEXTT3, "t3.als"); - hablar(TEXT195, "195.als"); - habla_tabernero(TEXTT4, "t4.als"); - hablar(TEXT196, "196.als"); - habla_tabernero(TEXTT5, "t5.als"); - habla_tabernero(TEXTT6, "t6.als"); - hablar(TEXT197, "197.als"); - habla_tabernero(TEXTT7, "t7.als"); - hablar(TEXT198, "198.als"); - habla_tabernero(TEXTT8, "t8.als"); - hablar(TEXT199, "199.als"); - habla_tabernero(TEXTT9, "t9.als"); - hablar(TEXT200, "200.als"); - hablar(TEXT201, "201.als"); - hablar(TEXT202, "202.als"); - - flags[0] = 1; - - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); -} - -void DrasculaEngine::animation_4_1() { - lee_dibujos("an12.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - hablar(TEXT205,"205.als"); - - actualiza_refresco_antes(); - - copyBackground(1, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); - updateScreen(228,112, 228,112, 47,60, dir_zona_pantalla); - - pausa(3); - - actualiza_refresco_antes(); - - copyBackground(49, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); - pon_hare(); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - stopmusic(); - flags[11] = 1; - - habla_pianista(TEXTP1, "p1.als"); - hablar(TEXT206, "206.als"); - habla_pianista(TEXTP2, "p2.als"); - hablar(TEXT207, "207.als"); - habla_pianista(TEXTP3, "p3.als"); - hablar(TEXT208, "208.als"); - habla_pianista(TEXTP4, "p4.als"); - hablar(TEXT209, "209.als"); - - flags[11] = 0; - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); -} - void DrasculaEngine::print_abc_opc(const char *dicho, int x_pantalla, int y_pantalla, int juego) { int pos_texto[6]; int y_de_signos, y_de_letra, x_de_letra = 0, h, longitud; @@ -6307,835 +5607,707 @@ void DrasculaEngine::actualiza_datos() { } } -void DrasculaEngine::animation_1_2() { - lleva_al_hare(178, 121); - lleva_al_hare(169, 135); -} - -void DrasculaEngine::animation_2_2() { - int n, x=0; +void DrasculaEngine::habla_vb(const char *dicho, const char *filename) { + int tiempou; + long tiempol; - sentido_hare = 0; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pon_hare(); - actualiza_refresco(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - lee_dibujos("an2_1.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("an2_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); + int x_habla[6] = {1, 27, 53, 79, 105, 131}; + int cara; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyBackground(1, 1, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); - updateScreen(201,87, 201,87, 50,52, dir_zona_pantalla); - x = x + 50; - pausa(3); - } + int longitud; + longitud = strlen(dicho); - x = 0; + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 55, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); - updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); - x = x + 50; - pausa(3); - } + buffer_teclado(); - x = 0; + color_abc(VON_BRAUN); - for (n = 0; n < 6; n++){ - x++; - copyBackground(x, 109, 201, 87, 50, 52, dir_hare_frente, dir_zona_pantalla); - updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); - x = x + 50; - pausa(3); + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); } - x = 0; - comienza_sound("s2.als"); + copyBackground(vb_x + 5, 64, ANCHOBJ + 1, 0, 25, 27, dir_dibujo1, dir_dibujo3); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 201, 87, 50, 52, dir_hare_dch, dir_zona_pantalla); - updateScreen(201,87, 201,87, 50,52, dir_zona_pantalla); - x = x + 50; - pausa(3); - } +bucless: - x = 0; + if (sentido_vb == 1) { + cara = _rnd->getRandomNumber(5); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 55, 201, 87, 50, 52, dir_hare_dch, dir_zona_pantalla); - updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); - x = x + 50; - pausa(3); - } - x = 0; + pon_hare(); + pon_vb(); - for (n = 0; n < 2; n++) { - x++; - copyBackground(x, 109, 201, 87, 50, 52, dir_hare_dch, dir_zona_pantalla); - updateScreen(201, 87, 201, 87, 50, 52, dir_zona_pantalla); - x = x + 50; - pausa(3); + copyBackground(ANCHOBJ + 1, 0, vb_x + 5, 64, 25, 27, dir_dibujo3, dir_zona_pantalla); + copyRect(x_habla[cara], 34, vb_x + 5, 64, 25, 27, dir_hare_frente, dir_zona_pantalla); + actualiza_refresco(); } - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - fin_sound(); - - pausa (4); - - comienza_sound("s1.als"); - hipo_sin_nadie(12); - fin_sound(); -} - -void DrasculaEngine::animation_3_2() { - lleva_al_hare(163, 106); - lleva_al_hare(287, 101); - sentido_hare = 0; -} - -void DrasculaEngine::animation_4_2() { - stopmusic(); - flags[9] = 1; - - pausa(12); - hablar(TEXTD56, "d56.als"); - pausa(8); - - borra_pantalla(); - lee_dibujos("ciego1.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("ciego2.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("ciego3.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("ciego4.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("ciego5.alg"); - descomprime_dibujo(dir_hare_frente, 1); + if (con_voces == 0) + centra_texto(dicho, vb_x, 66); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(10); + pausa(3); - habla_ciego(TEXTD68, "d68.als", "44472225500022227555544444664447222550002222755554444466"); - pausa(5); - habla_hacker(TEXTD57, "d57.als"); - pausa(6); - habla_ciego(TEXTD69,"d69.als","444722255000222275555444446655033336666664464402256555005504450005446"); - pausa(4); - habla_hacker(TEXTD58,"d58.als"); - habla_ciego(TEXTD70,"d70.als", "4447222550002222755554444466550333226220044644550044755665500440006655556666655044744656550446470046"); - delay(14); - habla_hacker(TEXTD59,"d59.als"); - habla_ciego(TEXTD71,"d71.als", "550330227556444744446660004446655544444722255000222275555444446644444"); - habla_hacker(TEXTD60,"d60.als"); - habla_ciego(TEXTD72,"d72.als", "55033022755644455550444744400044504447222550002222755554444466000"); - habla_hacker(TEXTD61,"d61.als"); - habla_ciego(TEXTD73,"d73.als", "55033022755644444447227444466644444722255000222275555444446664404446554440055655022227500544446044444446"); - habla_hacker(TEXTD62,"d62.als"); - habla_ciego(TEXTD74,"d74.als", "55033022755644444472244472225500022227555544444662550002222755444446666055522275550005550022200222000222666"); - habla_hacker(TEXTD63,"d63.als"); - habla_ciego(TEXTD75,"d75.als", "44447774444555500222205550444444466666225266444755444722255000222275555444446633223220044022203336227555770550444660557220553302224477777550550550222635533000662220002275572227025555"); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - _system->delayMillis(1); - habla_hacker(TEXTD64, "d64.als"); - habla_ciego(TEXTD76, "d76.als", "5555500004445550330244472225500022227555544444662755644446666005204402266222003332222774440446665555005550335544444"); + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; + } - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + refresca_pantalla(); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(14); - - borra_pantalla(); - - playmusic(musica_room); - lee_dibujos("9.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("aux9.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - sin_verbo(); - - flags[9] = 0; - flags[4] = 1; -} - -void DrasculaEngine::animation_8_2() { - habla_pianista(TEXTP6, "P6.als"); - hablar(TEXT358, "358.als"); - habla_pianista(TEXTP7, "P7.als"); - habla_pianista(TEXTP8, "P8.als"); + if (music_status() == 0 && flags[11] == 0 && musica_room != 0) + playmusic(musica_room); } -void DrasculaEngine::animation_9_2() { - habla_pianista(TEXTP9, "P9.als"); - habla_pianista(TEXTP10, "P10.als"); - habla_pianista(TEXTP11, "P11.als"); -} +void DrasculaEngine::habla_vbpuerta(const char *dicho, const char *filename) { + int tiempou; + long tiempol; -void DrasculaEngine::animation_10_2() { - habla_pianista(TEXTP12, "P12.als"); - hablar(TEXT361, "361.als"); - pausa(40); - habla_pianista(TEXTP13, "P13.als"); - hablar(TEXT362, "362.als"); - habla_pianista(TEXTP14, "P14.als"); - hablar(TEXT363, "363.als"); - habla_pianista(TEXTP15, "P15.als"); - hablar(TEXT364, "364.als"); - habla_pianista(TEXTP16, "P16.als"); -} + int longitud; + longitud = strlen(dicho); -void DrasculaEngine::animation_14_2() { - int n, pos_cabina[6]; - int l = 0; + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); - lee_dibujos("an14_2.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("an14_1.alg"); + buffer_teclado(); - pos_cabina[0] = 150; - pos_cabina[1] = 6; - pos_cabina[2] = 69; - pos_cabina[3] = -160; - pos_cabina[4] = 158; - pos_cabina[5] = 161; + color_abc(VON_BRAUN); - for (n = -160; n <= 0; n = n + 5 + l) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - pon_hare(); - pon_vb(); - pos_cabina[3] = n; - copyRectClip(pos_cabina, dir_hare_fondo, dir_zona_pantalla); - actualiza_refresco(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - l = l + 1; + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); } - flags[24] = 1; - - descomprime_dibujo(dir_dibujo1, 1); - - comienza_sound("s7.als"); - hipo(15); +bucless: - fin_sound(); + refresca_pantalla(); + if (con_voces == 0) + centra_texto(dicho, 150, 80); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); -} + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; + } -void DrasculaEngine::animation_15_2() { - habla_borracho(TEXTB8, "B8.als"); - pausa(7); - habla_borracho(TEXTB9, "B9.als"); - habla_borracho(TEXTB10, "B10.als"); - habla_borracho(TEXTB11, "B11.als"); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if (music_status() == 0 && flags[11] == 0 && musica_room != 0) + playmusic(musica_room); } -void DrasculaEngine::animation_16_2() { - int l; - - habla_borracho(TEXTB12, "B12.als"); - hablar(TEXT371, "371.als"); +void DrasculaEngine::habla_ciego(const char *dicho, const char *filename, const char *sincronia) { + byte *num_cara; + int p = 0; + int pos_ciego[6]; + int cara = 0; - borra_pantalla(); + int longitud; + longitud = strlen(dicho); - playmusic(32); - int key = getscan(); - if (key != 0) - goto asco; + buffer_teclado(); - color_abc(VERDE_OSCURO); + color_abc(VON_BRAUN); - lee_dibujos("his1.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - centra_texto(HIS1, 180, 180); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - key = getscan(); - if (key != 0) - goto asco; - - _system->delayMillis(4); - key = getscan(); - if (key != 0) - goto asco; - FundeAlNegro(1); - key = getscan(); - if (key != 0) - goto asco; + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); + } - borra_pantalla(); - lee_dibujos("his2.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); + pos_ciego[1] = 2; + pos_ciego[2] = 73; + pos_ciego[3] = 1; + pos_ciego[4] = 126; + pos_ciego[5] = 149; + +bucless: copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - centra_texto(HIS2, 180, 180); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - key = getscan(); - if (key != 0) - goto asco; + pos_ciego[5] = 149; + char c = toupper(sincronia[p]); + if (c == '0') + cara = 0; + if (c == '1') + cara = 1; + if (c == '2') + cara = 2; + if (c == '3') + cara = 3; + if (c == '4') + cara = 4; + if (c == '5') + cara = 5; + if (c == '6') + cara = 6; + if (c == '7') + cara = 7; - _system->delayMillis(4); - key = getscan(); - if (key != 0) - goto asco; + if (cara == 0 || cara == 2 || cara == 4 || cara == 6) + pos_ciego[0] = 1; + else + pos_ciego[0] = 132; - FundeAlNegro(1); - key = getscan(); - if (key != 0) - goto asco; + if (cara == 0) + num_cara = dir_dibujo3; + else if (cara == 1) + num_cara = dir_dibujo3; + else if (cara == 2) + num_cara = dir_hare_dch; + else if (cara == 3) + num_cara = dir_hare_dch; + else if (cara == 4) + num_cara = dir_hare_fondo; + else if (cara == 5) + num_cara = dir_hare_fondo; + else { + num_cara = dir_hare_frente; + pos_ciego[5] = 146; + } + + copyRectClip( pos_ciego, num_cara, dir_zona_pantalla); + + if (con_voces == 0) + centra_texto(dicho, 310, 71); - borra_pantalla(); - lee_dibujos("his3.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - centra_texto(HIS3, 180, 180); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - key = getscan(); - if (key != 0) - goto asco; + pausa(2); + p++; - _system->delayMillis(4); - key = getscan(); + int key = getscan(); if (key != 0) - goto asco; + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; + } +} + +void DrasculaEngine::habla_hacker(const char *dicho, const char *filename) { + int tiempou; + long tiempol; - FundeAlNegro(1); + int longitud; + longitud = strlen(dicho); - borra_pantalla(); - lee_dibujos("his4_1.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("his4_2.alg"); - descomprime_dibujo(dir_dibujo3, 1); + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); + + buffer_teclado(); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo3, dir_zona_pantalla); - centra_texto(HIS1, 180, 180); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - key = getscan(); - if (key != 0) - goto asco; - _system->delayMillis(4); - key = getscan(); - if (key != 0) - goto asco; + color_abc(AMARILLO); - for (l = 1; l < 200; l++) { - copyBackground(0, 0, 0, l, 320, 200 - l, dir_dibujo3, dir_zona_pantalla); - copyBackground(0, 200 - l, 0, 0, 320, l, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - key = getscan(); - if (key != 0) - goto asco; + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); } - pausa(5); - FundeAlNegro(2); - borra_pantalla(); - -asco: - lee_dibujos(pantalla_disco); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos(num_room); - descomprime_dibujo(dir_dibujo1, MEDIA); - Negro(); - refresca_pantalla(); +bucless: + if (con_voces == 0) + centra_texto(dicho, 156, 170); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - FundeDelNegro(0); - if (musica_room != 0) - playmusic(musica_room); - else - stopmusic(); -} -void DrasculaEngine::animation_17_2() { - habla_borracho(TEXTB13, "B13.als"); - habla_borracho(TEXTB14, "B14.als"); - flags[40] = 1; -} + int key = getscan(); + if (key != 0) + ctvd_stop(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; + } -void DrasculaEngine::animation_19_2() { - habla_vbpuerta(TEXTVB5, "VB5.als"); + key = 0; } -void DrasculaEngine::animation_20_2() { - habla_vbpuerta(TEXTVB7, "VB7.als"); - habla_vbpuerta(TEXTVB8, "VB8.als"); - hablar(TEXT383, "383.als"); - habla_vbpuerta(TEXTVB9, "VB9.als"); - hablar(TEXT384, "384.als"); - habla_vbpuerta(TEXTVB10, "VB10.als"); - hablar(TEXT385, "385.als"); - habla_vbpuerta(TEXTVB11, "VB11.als"); - if (flags[23] == 0) { - hablar(TEXT350, "350.als"); - habla_vbpuerta(TEXTVB57, "VB57.als"); - } else { - hablar(TEXT386, "386.als"); - habla_vbpuerta(TEXTVB12, "VB12.als"); - flags[18] = 0; - flags[14] = 1; - abre_puerta(15, 1); - sal_de_la_habitacion(1); - animation_23_2(); - sal_de_la_habitacion(0); - flags[21] = 0; - flags[24] = 0; - sentido_vb = 1; - vb_x = 120; - - rompo_y_salgo = 1; - } +void DrasculaEngine::anda_pabajo() { + direccion_hare = 4; + sentido_hare = 3; + paso_x = 0; } -void DrasculaEngine::animation_21_2() { - habla_vbpuerta(TEXTVB6, "VB6.als"); +void DrasculaEngine::anda_parriba() { + direccion_hare = 0; + sentido_hare = 2; + paso_x = 0; } -void DrasculaEngine::animation_23_2() { - lee_dibujos("an24.alg"); - descomprime_dibujo(dir_hare_frente, 1); +void DrasculaEngine::pon_vb() { + int pos_vb[6]; - flags[21] = 1; + if (vb_se_mueve == 0) { + pos_vb[0] = 256; + pos_vb[1] = 129; + pos_vb[2] = vb_x; + pos_vb[3] = 66; + pos_vb[4] = 33; + pos_vb[5] = 69; + if (sentido_vb == 0) + pos_vb[0] = 222; + else if (sentido_vb == 1) + pos_vb[0] = 188; + } else { + pos_vb[2] = vb_x; + pos_vb[3] = 66; + pos_vb[4] = 28; + pos_vb[5] = 68; - if (flags[25] == 0) { - habla_vb(TEXTVB13, "VB13.als"); - habla_vb(TEXTVB14, "VB14.als"); - pausa(10); - hablar(TEXT387, "387.als"); - } - - habla_vb(TEXTVB15, "VB15.als"); - lleva_vb(42); - sentido_vb = 1; - habla_vb(TEXTVB16, "VB16.als"); - sentido_vb = 2; - lleva_al_hare(157, 147); - lleva_al_hare(131, 149); - sentido_hare = 0; - animation_14_2(); - if (flags[25] == 0) - habla_vb(TEXTVB17, "VB17.als"); - pausa(8); - sentido_vb = 1; - habla_vb(TEXTVB18, "VB18.als"); - - if (flags[29] == 0) - animation_23_anexo(); - else - animation_23_anexo2(); - - sentido_vb = 2; - animation_25_2(); - lleva_vb(99); - - if (flags[29] == 0) { - habla_vb(TEXTVB19, "VB19.als"); - if (flags[25] == 0) { - habla_vb(TEXTVB20,"VB20.als"); - if (resta_objeto(7) == 0) - flags[30] = 1; - if (resta_objeto(18) == 0) - flags[31] = 1; - if (resta_objeto(19) == 0) - flags[32] = 1; + if (sentido_vb == 0) { + pos_vb[0] = frame_vb; + pos_vb[1] = 62; + } else { + pos_vb[0] = frame_vb; + pos_vb[1] = 131; } - habla_vb(TEXTVB21, "VB21.als"); - } else - animation_27_2(); - - flags[25] = 1; - rompo_y_salgo = 1; -} - -void DrasculaEngine::animation_23_anexo() { - int n, p_x = hare_x + 2, p_y = hare_y - 3; - int x[] = {1, 38, 75, 112, 75, 112, 75, 112, 149, 112, 149, 112, 149, 186, 223, 260, - 1, 38, 75, 112, 149, 112, 149, 112, 149, 112, 149, 186, 223, 260, 260, 260, 260, 223}; - int y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 1, 1, 1, 1}; - - lee_dibujos("an23.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - for (n = 0; n < 34; n++) { - copyRect(p_x, p_y, p_x, p_y, 36, 74, dir_dibujo1, dir_zona_pantalla); - copyRect(x[n], y[n], p_x, p_y, 36, 74, dir_hare_fondo, dir_zona_pantalla); - actualiza_refresco(); - updateScreen(p_x, p_y, p_x, p_y, 36, 74, dir_zona_pantalla); - pausa(5); + frame_vb = frame_vb + 29; + if (frame_vb > 146) + frame_vb = 1; } - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); + copyRectClip(pos_vb, dir_hare_frente, dir_zona_pantalla); } -void DrasculaEngine::animation_23_anexo2() { - int n, p_x = hare_x + 4, p_y = hare_y; - int x[] = {1, 35, 69, 103, 137, 171, 205, 239, 273, 1, 35, 69, 103, 137}; - int y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 73, 73, 73, 73}; - - pausa(50); +void DrasculaEngine::lleva_vb(int punto_x) { + if (punto_x < vb_x) + sentido_vb = 0; + else + sentido_vb = 1; - lee_dibujos("an23_2.alg"); - descomprime_dibujo(dir_hare_fondo, 1); + vb_se_mueve = 1; - for (n = 0; n < 14; n++) { - copyRect(p_x, p_y, p_x, p_y, 33, 71, dir_dibujo1, dir_zona_pantalla); - copyRect(x[n], y[n], p_x, p_y, 33, 71, dir_hare_fondo, dir_zona_pantalla); - actualiza_refresco(); - updateScreen(p_x,p_y, p_x,p_y, 33,71, dir_zona_pantalla); + for (;;) { + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if (sentido_vb == 0) { + vb_x = vb_x - 5; + if (vb_x <= punto_x) + break; + } else { + vb_x = vb_x + 5; + if (vb_x >= punto_x) + break; + } pausa(5); } - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo,1); + vb_se_mueve = 0; } -void DrasculaEngine::animation_25_2() { - int n, pos_cabina[6]; - - lee_dibujos("an14_2.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("18.alg"); - descomprime_dibujo(dir_dibujo1, 1); +void DrasculaEngine::hipo_sin_nadie(int contador){ + int y = 0, sentido = 0; + if (num_ejec == 3) + y = -1; - pos_cabina[0] = 150; - pos_cabina[1] = 6; - pos_cabina[2] = 69; - pos_cabina[3] = 0; - pos_cabina[4] = 158; - pos_cabina[5] = 161; +comienza: + contador--; - flags[24] = 0; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + if (num_ejec == 3) + updateScreen(0, 0, 0, y, 320, 200, dir_zona_pantalla); + else + updateScreen(0, 1, 0, y, 320, 198, dir_zona_pantalla); - comienza_sound("s6.als"); + if (sentido == 0) + y++; + else + y--; - for (n = 0; n >= -160; n = n - 8) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + if (num_ejec == 3) { + if (y == 1) + sentido = 1; + if (y == -1) + sentido = 0; + } else { + if (y == 2) + sentido = 1; + if (y == 0) + sentido = 0; + } + if (contador > 0) + goto comienza; - actualiza_refresco_antes(); - pon_hare(); - pon_vb(); - - pos_cabina[3] = n; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +} - copyRectClip(pos_cabina, dir_hare_fondo, dir_zona_pantalla); +void DrasculaEngine::abre_puerta(int nflag, int n_puerta) { + if (flags[nflag] == 0) { + if (num_ejec == 1 /*|| num_ejec == 4*/) { + if (nflag != 7) { + comienza_sound("s3.als"); + flags[nflag] = 1; + } + } else { + comienza_sound("s3.als"); + flags[nflag] = 1; + } - actualiza_refresco(); + if (n_puerta != NO_PUERTA) + puertas_cerradas(n_puerta); + refresca_pantalla(); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + fin_sound(); + sin_verbo(); } - - fin_sound(); - - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); } -void DrasculaEngine::animation_27_2() { - flags[22] = 1; +void DrasculaEngine::mapa() { + int l, veo = 0; - sin_verbo(); - resta_objeto(23); - suma_objeto(11); + for (l = 0; l < objs_room; l++) { + if (x_raton > x1[l] && y_raton > y1[l] + && x_raton < x2[l] && y_raton < y2[l] + && visible[l] == 1) { + strcpy(texto_nombre, nombre_obj[l]); + hay_nombre = 1; + veo = 1; + } + } - habla_vb(TEXTVB23, "VB23.als"); - habla_vb(TEXTVB24, "VB24.als"); - if (flags[30] == 1) - suma_objeto(7); - if (flags[31] == 1) - suma_objeto(18); - if (flags[32] == 1) - suma_objeto(19); - habla_vb(TEXTVB25,"VB25.als"); - habla_vb(TEXTVB26,"VB26.als"); -} - -void DrasculaEngine::animation_28_2() { - habla_vb(TEXTVB27, "VB27.als"); - habla_vb(TEXTVB28, "VB28.als"); - habla_vb(TEXTVB29, "VB29.als"); - habla_vb(TEXTVB30, "VB30.als"); -} - -void DrasculaEngine::animation_29_2() { - if (flags[33] == 0) { - habla_vb(TEXTVB32, "VB32.als"); - hablar(TEXT398, "398.als"); - habla_vb(TEXTVB33, "VB33.als"); - hablar(TEXT399, "399.als"); - habla_vb(TEXTVB34, "VB34.als"); - habla_vb(TEXTVB35, "VB35.als"); - hablar(TEXT400, "400.als"); - habla_vb(TEXTVB36, "VB36.als"); - habla_vb(TEXTVB37, "VB37.als"); - hablar(TEXT386, "386.als"); - habla_vb(TEXTVB38, "VB38.als"); - habla_vb(TEXTVB39, "VB39.als"); - hablar(TEXT401, "401.als"); - habla_vb(TEXTVB40, "VB40.als"); - habla_vb(TEXTVB41, "VB41.als"); - flags[33] = 1; - } else - habla_vb(TEXTVB43, "VB43.als"); + if (veo == 0) + hay_nombre = 0; +} - hablar(TEXT402, "402.als"); - habla_vb(TEXTVB42, "VB42.als"); +void DrasculaEngine::refresca_1_antes() { + int cambio_col_antes = cambio_de_color; - if (flags[38] == 0) { - hablar(TEXT403, "403.als"); - rompo_y_salgo = 1; - } else - hablar(TEXT386, "386.als"); -} + if (hare_x > 98 && hare_x < 153) + cambio_de_color = 1; + else + cambio_de_color = 0; -void DrasculaEngine::animation_30_2() { - habla_vb(TEXTVB31, "VB31.als"); - hablar(TEXT396, "396.als"); -} + if (cambio_col_antes != cambio_de_color && cambio_de_color == 1) + hare_oscuro(); + if (cambio_col_antes != cambio_de_color && cambio_de_color == 0) + hare_claro(); -void DrasculaEngine::animation_31_2() { - habla_vb(TEXTVB44, "VB44.als"); - lleva_vb(-50); - pausa(15); - lleva_al_hare(159, 140); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - sentido_hare = 2; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(78); - sentido_hare = 0; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(22); - hablar(TEXT406, "406.als"); - lleva_vb(98); - habla_vb(TEXTVB45, "VB45.als"); - habla_vb(TEXTVB46, "VB46.als"); - habla_vb(TEXTVB47, "VB47.als"); - hablar(TEXT407, "407.als"); - habla_vb(TEXTVB48, "VB48.als"); - habla_vb(TEXTVB49, "VB49.als"); - hablar(TEXT408, "408.als"); - habla_vb(TEXTVB50, "VB50.als"); - habla_vb(TEXTVB51, "VB51.als"); - hablar(TEXT409, "409.als"); - habla_vb(TEXTVB52, "VB52.als"); - habla_vb(TEXTVB53, "VB53.als"); - pausa(12); - habla_vb(TEXTVB54, "VB54.als"); - habla_vb(TEXTVB55, "VB55.als"); - hablar(TEXT410, "410.als"); - habla_vb(TEXTVB56, "VB56.als"); - - rompo_y_salgo = 1; - - flags[38] = 0; - flags[36] = 1; - sin_verbo(); - resta_objeto(8); - resta_objeto(13); - resta_objeto(15); - resta_objeto(16); - resta_objeto(17); - suma_objeto(20); + if (flags[8] == 0) + copyBackground(2, 158, 208, 67, 27, 40, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::animation_35_2() { - int n, x = 0; +void DrasculaEngine::refresca_2(){ + int pos_murci[6]; + int diferencia; + int murci_x[] = {0, 38, 76, 114, 152, 190, 228, 266, + 0, 38, 76, 114, 152, 190, 228, 266, + 0, 38, 76, 114, 152, 190, + 0, 48, 96, 144, 192, 240, + 30, 88, 146, 204, 262, + 88, 146, 204, 262, + 88, 146, 204, 262}; - lleva_al_hare(96, 165); - lleva_al_hare(79, 165); + int murci_y[] = {179, 179, 179, 179, 179, 179, 179, 179, + 158, 158, 158, 158, 158, 158, 158, 158, + 137, 137, 137, 137, 137, 137, + 115, 115, 115, 115, 115, 115, + 78, 78, 78, 78, 78, + 41, 41, 41, 41, + 4, 4, 4, 4}; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if (frame_murcielago == 41) + frame_murcielago = 0; - lee_dibujos("an35_1.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("an35_2.alg"); - descomprime_dibujo(dir_hare_frente, 1); + pos_murci[0] = murci_x[frame_murcielago]; + pos_murci[1] = murci_y[frame_murcielago]; - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 70, 90, 46, 80, dir_hare_fondo, dir_zona_pantalla); - updateScreen(70,90, 70,90, 46,80,dir_zona_pantalla); - x = x + 46; - pausa(3); + if (frame_murcielago < 22) { + pos_murci[4] = 37; + pos_murci[5] = 21; + } else if (frame_murcielago > 27) { + pos_murci[4] = 57; + pos_murci[5] = 36; + } else { + pos_murci[4] = 47; + pos_murci[5] = 22; } - x = 0; - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 82, 70, 90, 46, 80, dir_hare_fondo, dir_zona_pantalla); - updateScreen(70, 90, 70, 90, 46, 80, dir_zona_pantalla); - x = x + 46; - pausa(3); + pos_murci[2] = 239; + pos_murci[3] = 19; + + copyRectClip(pos_murci, dir_dibujo3, dir_zona_pantalla); + diferencia = vez() - conta_ciego_vez; + if (diferencia >= 6) { + frame_murcielago++; + conta_ciego_vez = vez(); } - x = 0; - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 70, 90, 46, 80, dir_hare_frente, dir_zona_pantalla); - updateScreen(70, 90, 70, 90, 46, 80, dir_zona_pantalla); + copyRect(29, 37, 58, 114, 57, 39, dir_dibujo3, dir_zona_pantalla); + mapa(); +} - x = x + 46; +void DrasculaEngine::refresca_3_antes() { + if (flags[3] == 1) + copyBackground(258, 110, 85, 44, 23, 53, dir_dibujo3, dir_zona_pantalla); +} - pausa(3); - } +void DrasculaEngine::refresca_3() { + if (hare_y + alto_hare < 118) + copyRect(129, 110, 194, 36, 126, 88, dir_dibujo3, dir_zona_pantalla); + copyRect(47, 57, 277, 143, 43, 50, dir_dibujo3, dir_zona_pantalla); +} - x = 0; - for (n = 0; n < 2; n++) { - x++; - copyBackground(x, 82, 70, 90, 46, 80, dir_hare_frente, dir_zona_pantalla); - updateScreen(70, 90, 70,90, 46, 80,dir_zona_pantalla); - x = x + 46; - pausa(3); - } +void DrasculaEngine::refresca_4() { + int cambio_col_antes = cambio_de_color; + if (hare_x > 190) + cambio_de_color = 1; + else + cambio_de_color = 0; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + if (cambio_col_antes != cambio_de_color && cambio_de_color == 1) + hare_oscuro(); + if (cambio_col_antes != cambio_de_color && cambio_de_color == 0) + hare_claro(); +} - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +void DrasculaEngine::refresca_5() { + copyRect(114, 130, 211, 87, 109, 69, dir_dibujo3, dir_zona_pantalla); +} - pausa(19); +void DrasculaEngine::refresca_15() { + copyRect(1, 154, 83, 122, 131, 44, dir_dibujo3, dir_zona_pantalla); +} - comienza_sound("s1.als"); - hipo_sin_nadie(18); - fin_sound(); +void DrasculaEngine::refresca_17() { + copyRect(48, 135, 78, 139, 80, 30, dir_dibujo3, dir_zona_pantalla); +} - pausa(10); +void DrasculaEngine::refresca_18() { + if (flags[24] == 1) + copyRect(177, 1, 69, 29, 142, 130, dir_dibujo3, dir_zona_pantalla); + copyRect(105, 132, 109, 108, 196, 65, dir_dibujo3, dir_zona_pantalla); +} - FundeAlNegro(2); +void DrasculaEngine::refresca_5_antes(){ + if (flags[8] == 0) + copyBackground(256, 152, 208, 67, 27, 40, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::habla_vb(const char *dicho, const char *filename) { - int tiempou; - long tiempol; +void DrasculaEngine::refresca_6_antes() { + int cambio_col_antes = cambio_de_color; - int x_habla[6] = {1, 27, 53, 79, 105, 131}; - int cara; + if ((hare_x > 149 && hare_y + alto_hare > 160 && hare_x < 220 && hare_y + alto_hare < 188) || + (hare_x > 75 && hare_y + alto_hare > 183 && hare_x < 145)) + cambio_de_color = 0; + else + cambio_de_color = 1; - int longitud; - longitud = strlen(dicho); + if (cambio_col_antes != cambio_de_color && cambio_de_color == 1) + hare_oscuro(); + if (cambio_col_antes != cambio_de_color && cambio_de_color == 0) + hare_claro(); - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); + if (flags[1] == 0) + copyBackground(97, 117, 34, 148, 36, 31, dir_dibujo3, dir_zona_pantalla); + if (flags[0] == 0) + copyBackground(3, 103, 185, 69, 23, 76, dir_dibujo3, dir_zona_pantalla); + if (flags[2] == 0) + copyBackground(28, 100, 219, 72, 64, 97, dir_dibujo3, dir_zona_pantalla); +} - buffer_teclado(); +void DrasculaEngine::refresca_7_antes() { + if (flags[35] == 0) + copyBackground(1, 72, 158, 162, 19, 12, dir_dibujo3, dir_zona_pantalla); +} - color_abc(VON_BRAUN); +void DrasculaEngine::refresca_9_antes() { + int ciego_x[] = {26, 68, 110, 152, 194, 236, 278, 26, 68}; + int ciego_y[] = {51, 51, 51, 51, 51, 51, 51, 127, 127}; + int diferencia; - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); + copyRect(ciego_x[frame_ciego], ciego_y[frame_ciego], 122, 57, 41, 72, dir_dibujo3, dir_zona_pantalla); + if (flags[9] == 0) { + diferencia = vez() - conta_ciego_vez; + if (diferencia >= 11) { + frame_ciego++; + conta_ciego_vez = vez(); } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - - copyBackground(vb_x + 5, 64, ANCHOBJ + 1, 0, 25, 27, dir_dibujo1, dir_dibujo3); - -bucless: + if (frame_ciego == 9) + frame_ciego = 0; + } else + frame_ciego = 3; +} - if (sentido_vb == 1) { - cara = _rnd->getRandomNumber(5); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); +void DrasculaEngine::refresca_12_antes() { + if (flags[16] == 0) + copyBackground(1, 131, 106, 117, 55, 68, dir_dibujo3, dir_zona_pantalla); +} - pon_hare(); - pon_vb(); +void DrasculaEngine::refresca_14_antes() { + int velas_y[] = {158, 172, 186}; + int cirio_x[] = {14, 19, 24}; + int pianista_x[] = {1, 91, 61, 31, 91, 31, 1, 61, 31}; + int borracho_x[] = {1, 42, 83, 124, 165, 206, 247, 1}; + int diferencia; - copyBackground(ANCHOBJ + 1, 0, vb_x + 5, 64, 25, 27, dir_dibujo3, dir_zona_pantalla); - copyRect(x_habla[cara], 34, vb_x + 5, 64, 25, 27, dir_hare_frente, dir_zona_pantalla); - actualiza_refresco(); - } + copyBackground(123, velas_y[frame_velas], 142, 14, 39, 13, dir_dibujo3, dir_zona_pantalla); + copyBackground(cirio_x[frame_velas], 146, 311, 80, 4, 8, dir_dibujo3, dir_zona_pantalla); - if (con_voces == 0) - centra_texto(dicho, vb_x, 66); + if (parpadeo == 5) + copyBackground(1, 149, 127, 52, 9, 5, dir_dibujo3, dir_zona_pantalla); + if (hare_x > 101 && hare_x < 155) + copyBackground(31, 138, 178, 51, 18, 16, dir_dibujo3, dir_zona_pantalla); + if (flags[11] == 0) + copyBackground(pianista_x[frame_piano], 157, 245, 130, 29, 42, dir_dibujo3, dir_zona_pantalla); + else if (flags[5] == 0) + copyBackground(145, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); + else + copyBackground(165, 140, 229, 117, 43, 59, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); + if (flags[12] == 1) + copyBackground(borracho_x[frame_borracho], 82, 170, 50, 40, 53, dir_dibujo3, dir_zona_pantalla); + diferencia = vez() - conta_ciego_vez; + if (diferencia > 6) { + if (flags[12] == 1) { + frame_borracho++; + if (frame_borracho == 8) { + frame_borracho = 0; + flags[12] = 0; + } + } else if ((_rnd->getRandomNumber(94) == 15) && (flags[13] == 0)) + flags[12] = 1; - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; + frame_velas++; + if (frame_velas == 3) + frame_velas = 0; + frame_piano++; + if (frame_piano == 9) + frame_piano = 0; + parpadeo = _rnd->getRandomNumber(10); + conta_ciego_vez = vez(); } +} - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if (music_status() == 0 && flags[11] == 0 && musica_room != 0) - playmusic(musica_room); +void DrasculaEngine::refresca_16_antes() { + if (flags[17] == 0) + copyBackground(1, 103, 24, 72, 33, 95, dir_dibujo3, dir_zona_pantalla); + if (flags[19] == 1) + copyBackground(37, 151, 224, 115, 56, 47, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::habla_vbpuerta(const char *dicho, const char *filename) { - int tiempou; - long tiempol; +void DrasculaEngine::refresca_17_antes() { + if (flags[15] == 1) + copyBackground(1, 135, 108, 65, 44, 63, dir_dibujo3, dir_zona_pantalla); +} - int longitud; - longitud = strlen(dicho); +void DrasculaEngine::refresca_18_antes() { + int diferencia; + int ronquido_x[] = {95, 136, 95, 136, 95, 95, 95, 95, 136, 95, 95, 95, 95, 95, 95, 95}; + int ronquido_y[] = {18, 18, 56, 56, 94, 94, 94, 94, 94, 18, 18, 18, 18, 18, 18, 18}; - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); + if (flags[21] == 0) { + copyBackground(1, 69, 120, 58, 56, 61, dir_dibujo3, dir_zona_pantalla); + copyBackground(ronquido_x[frame_ronquido], ronquido_y[frame_ronquido], 124, 59, 40, 37, dir_dibujo3, dir_zona_pantalla); + } else + pon_vb(); + + diferencia = vez() - conta_ciego_vez; + if (diferencia > 9) { + frame_ronquido++; + if (frame_ronquido == 16) + frame_ronquido = 0; + conta_ciego_vez = vez(); + } +} + +void DrasculaEngine::grr() { + int longitud; + longitud = 30; buffer_teclado(); - color_abc(VON_BRAUN); + color_abc(VERDE_OSCURO); if (hay_sb == 1) { sku = new Common::File; - sku->open(filename); + sku->open("s10.als"); if (!sku->isOpen()) { error("no puedo abrir archivo de voz"); } - ctvd_init(2); + ctvd_init(4); ctvd_speaker(1); ctvd_output(sku); } -bucless: - refresca_pantalla(); + copyBackground(253, 110, 150, 65, 20, 30, dir_dibujo3, dir_zona_pantalla); + if (con_voces == 0) - centra_texto(dicho, 150, 80); + centra_texto(".groaaarrrrgghhh!", 153, 65); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +bucless: int key = getscan(); if (key != 0) ctvd_stop(); @@ -7154,25 +6326,57 @@ bucless: refresca_pantalla(); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if (music_status() == 0 && flags[11] == 0 && musica_room != 0) - playmusic(musica_room); } -void DrasculaEngine::habla_ciego(const char *dicho, const char *filename, const char *sincronia) { - byte *num_cara; - int p = 0; - int pos_ciego[6]; - int cara = 0; +bool DrasculaEngine::pantalla_13(int fl) { + if (objeto_que_lleva == MIRAR && fl == 51) { + hablar(TEXT411, "411.als"); + sentido_hare = 3; + hablar(TEXT412, "412.als"); + strcpy(nombre_obj[1], "yoda"); + } else if (objeto_que_lleva == HABLAR && fl == 51) + conversa("op_7.cal"); + else if (objeto_que_lleva == 19 && fl == 51) + animation_1_3(); + else if (objeto_que_lleva == 9 && fl == 51) { + animation_2_3(); + return true; + } else + hay_respuesta = 0; + return false; +} + +void DrasculaEngine::refresca_13() { + if (hare_x > 55 && flags[3] == 0) + animation_6_3(); + if (flags[1] == 0) + copyRect(185, 110, 121, 65, 67, 88, dir_dibujo3, dir_zona_pantalla); + if (flags[2] == 0) + copyRect(185, 21, 121, 63, 67, 88, dir_dibujo3, dir_zona_pantalla); + copyRect(3, 127, 99, 102, 181, 71, dir_dibujo3, dir_zona_pantalla); +} + +void DrasculaEngine::refresca_20() { + copyRect(1, 137, 106, 121, 213, 61, dir_dibujo3, dir_zona_pantalla); +} + +void DrasculaEngine::habla_igor_sentado(const char *dicho, const char *filename) { + int tiempou; + long tiempol; + + int x_habla[4] = { 80, 102, 124, 146 }; + int cara; int longitud; longitud = strlen(dicho); - buffer_teclado(); + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); - color_abc(VON_BRAUN); + buffer_teclado(); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + color_abc(BLANCO); if (hay_sb == 1) { sku = new Common::File; @@ -7185,63 +6389,24 @@ void DrasculaEngine::habla_ciego(const char *dicho, const char *filename, const ctvd_output(sku); } - pos_ciego[1] = 2; - pos_ciego[2] = 73; - pos_ciego[3] = 1; - pos_ciego[4] = 126; - pos_ciego[5] = 149; - bucless: - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - pos_ciego[5] = 149; - char c = toupper(sincronia[p]); - if (c == '0') - cara = 0; - if (c == '1') - cara = 1; - if (c == '2') - cara = 2; - if (c == '3') - cara = 3; - if (c == '4') - cara = 4; - if (c == '5') - cara = 5; - if (c == '6') - cara = 6; - if (c == '7') - cara = 7; - if (cara == 0 || cara == 2 || cara == 4 || cara == 6) - pos_ciego[0] = 1; - else - pos_ciego[0] = 132; + cara = _rnd->getRandomNumber(3); - if (cara == 0) - num_cara = dir_dibujo3; - else if (cara == 1) - num_cara = dir_dibujo3; - else if (cara == 2) - num_cara = dir_hare_dch; - else if (cara == 3) - num_cara = dir_hare_dch; - else if (cara == 4) - num_cara = dir_hare_fondo; - else if (cara == 5) - num_cara = dir_hare_fondo; - else { - num_cara = dir_hare_frente; - pos_ciego[5] = 146; - } + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyRectClip( pos_ciego, num_cara, dir_zona_pantalla); + actualiza_refresco_antes(); + + copyBackground(x_habla[cara], 109, 207, 92, 21, 23, dir_dibujo3, dir_zona_pantalla); + pon_hare(); + actualiza_refresco(); if (con_voces == 0) - centra_texto(dicho, 310, 71); + centra_texto(dicho, 221, 102); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(2); - p++; + + pausa(3); int key = getscan(); if (key != 0) @@ -7258,29 +6423,189 @@ bucless: if (longitud > 0) goto bucless; } + + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -void DrasculaEngine::habla_hacker(const char *dicho, const char *filename) { - int tiempou; - long tiempol; +void DrasculaEngine::refresca_49_antes() { + if (flags[6] == 0) + copyBackground(2, 136, 176, 81, 49, 62, dir_dibujo3, dir_zona_pantalla); +} - int longitud; - longitud = strlen(dicho); +void DrasculaEngine::refresca_53_antes() { + if (flags[1] == 0) + copyRect(2, 113, 205, 50, 38, 86, dir_dibujo3, dir_zona_pantalla); + if (flags[2] == 0) + copyBackground(41, 159, 27, 117, 25, 40, dir_dibujo3, dir_zona_pantalla); + if (flags[9] == 1) + copyBackground(67, 184, 56, 93, 32, 15, dir_dibujo3, dir_zona_pantalla); +} - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); +void DrasculaEngine::refresca_54_antes() { + if (flags[5] == 1) + copyBackground(168, 156, 187, 111, 7, 11, dir_dibujo3, dir_zona_pantalla); + if (flags[12] == 1) + copyBackground(16, 156, 190, 64, 18, 24, dir_dibujo3, dir_zona_pantalla); +} - buffer_teclado(); +void DrasculaEngine::refresca_56_antes() { + if (flags[10] == 0) + copyBackground(2, 126, 42, 67, 57, 67, dir_dibujo3, dir_zona_pantalla); + if (flags[11] == 1) + copyBackground(60, 160, 128, 97, 103, 38, dir_dibujo3, dir_zona_pantalla); +} - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +void DrasculaEngine::refresca_50() { + copyRect(4, 153, 118, 95, 67, 44, dir_dibujo3, dir_zona_pantalla); +} - color_abc(AMARILLO); +void DrasculaEngine::refresca_57() { + copyRect(7, 113, 166, 61, 62, 82, dir_dibujo3, dir_zona_pantalla); +} - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); +void DrasculaEngine::pantalla_49(int fl){ + if (objeto_que_lleva == HABLAR && fl ==51) + conversa("op_9.cal"); + else if (objeto_que_lleva == MIRAR && fl == 51) + hablar(TEXT132, "132.als"); + else if ((objeto_que_lleva == 8 && fl == 51) || (objeto_que_lleva == 8 && fl == 203)) + animation_5_5(); + else if (objeto_que_lleva == MIRAR && fl == 200) + hablar(TEXT133, "133.als"); + else if (objeto_que_lleva == HABLAR && fl == 200) + hablar(TEXT134, "134.als"); + else if (objeto_que_lleva == MIRAR && fl == 201) + hablar(TEXT135, "135.als"); + else if (objeto_que_lleva == MIRAR && fl == 203) + hablar(TEXT137, "137.als"); + else + hay_respuesta = 0; +} + +void DrasculaEngine::pantalla_53(int fl) { + if (objeto_que_lleva == COGER && fl == 120) { + agarra_objeto(16); + visible[3] = 0; + } else if (objeto_que_lleva == MIRAR && fl == 121) + hablar(TEXT128, "128.als"); + else if (objeto_que_lleva == MIRAR && fl == 209) + hablar(TEXT129, "129.als"); + else if (objeto_que_lleva == MOVER && fl == 123) + animation_11_5(); + else if (objeto_que_lleva == MIRAR && fl == 52) + hablar(TEXT447, "447.als"); + else if (objeto_que_lleva == HABLAR && fl == 52) + hablar(TEXT131, "131.als"); + else if (objeto_que_lleva == 12 && fl == 52) + animation_10_5(); + else if (objeto_que_lleva == 15 && fl == 52) + animation_9_5(); + else if (objeto_que_lleva == 16 && fl == 121) { + flags[2] = 1; + sin_verbo(); + actualiza_datos(); + } else if (objeto_que_lleva == 16) { + hablar(TEXT439, "439.als"); + sin_verbo(); + visible[3] = 1; + } else + hay_respuesta = 0; +} + +void DrasculaEngine::pantalla_54(int fl) { + if ((objeto_que_lleva == HABLAR && fl == 118) || (objeto_que_lleva == MIRAR && fl == 118 && flags[0] == 0)) + animation_1_5(); + else if (objeto_que_lleva == MIRAR && fl == 118 && flags[0]==1) + hablar(TEXT124, "124.als"); + else if (objeto_que_lleva == MIRAR && fl == 53) + hablar(TEXT127, "127.als"); + else if (objeto_que_lleva == HABLAR && fl == 53 && flags[14] == 0) { + hablar(TEXT288, "288.als"); + flags[12] = 1; + pausa(10); + habla_mus(TEXTE1, "E1.als"); + hablar(TEXT289, "289.als"); + habla_mus(TEXTE2, "E2.als"); + habla_mus(TEXTE3, "E3.als"); + conversa("op_10.cal"); + flags[12] = 0; + flags[14] = 1; + } else if (objeto_que_lleva == HABLAR && fl == 53 && flags[14] == 1) + hablar(TEXT109, "109.als"); + else if (objeto_que_lleva == COGER && fl == 9999 && flags[13] == 0) { + agarra_objeto(8); + flags[13] = 1; + habla_mus(TEXTE10, "e10.als"); + actualiza_datos(); + } else if (objeto_que_lleva == ABRIR && fl == 119) + hablar(TEXT125, "125.als"); + else if (objeto_que_lleva == MIRAR && fl == 119) + hablar(TEXT126, "126.als"); + else if (objeto_que_lleva == 10 && fl == 119) { + pausa(4); + hablar(TEXT436, "436.als"); + sin_verbo(); + resta_objeto(10); + } else + hay_respuesta = 0; +} + +void DrasculaEngine::pantalla_55(int fl) { + if (objeto_que_lleva == COGER && fl == 122) { + agarra_objeto(12); + flags[8] = 1; + actualiza_datos(); + } else if (objeto_que_lleva == MIRAR && fl == 122) + hablar(TEXT138, "138.als"); + else if (objeto_que_lleva == MIRAR && fl == 204) + hablar(TEXT139, "139.als"); + else if (objeto_que_lleva == MIRAR && fl == 205) + hablar(TEXT140, "140.als"); + else if (fl == 206) { + comienza_sound("s11.als"); + anima("det.bin", 17); + fin_sound(); + lleva_al_hare(hare_x - 3, hare_y + alto_hare + 6); + } else + hay_respuesta = 0; +} + +bool DrasculaEngine::pantalla_56(int fl) { + if (objeto_que_lleva == ABRIR && fl == 124) { + animation_14_5(); + return true; + } else if (objeto_que_lleva == MIRAR && fl == 124) + hablar(TEXT450, "450.als"); + else if (objeto_que_lleva == ABRIR && fl == 207) + hablar(TEXT141, "141.als"); + else if (objeto_que_lleva == MIRAR && fl == 208) + hablar(TEXT142, "142.als"); + else + hay_respuesta = 0; + + return false; +} + +void DrasculaEngine::habla_lobo(const char *dicho, const char *filename) { + int tiempou; + long tiempol; + + int x_habla[9] = {52, 79, 106, 133, 160, 187, 214, 241, 268}; + int cara; + + int longitud; + longitud = strlen(dicho); + + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); + + color_abc(ROJO); + + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); if (!sku->isOpen()) { error("no puedo abrir archivo de voz"); } @@ -7290,13 +6615,28 @@ void DrasculaEngine::habla_hacker(const char *dicho, const char *filename) { } bucless: + + cara = _rnd->getRandomNumber(8); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + + actualiza_refresco_antes(); + + copyBackground(x_habla[cara], 136, 198, 81, 26, 24, dir_dibujo3, dir_zona_pantalla); + pon_hare(); + actualiza_refresco(); + if (con_voces == 0) - centra_texto(dicho, 156, 170); + centra_texto(dicho, 203, 78); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(3); + int key = getscan(); if (key != 0) ctvd_stop(); + buffer_teclado(); if (hay_sb == 1) { if (LookForFree() != 0) goto bucless; @@ -7309,427 +6649,292 @@ bucless: goto bucless; } - key = 0; -} - -void DrasculaEngine::anda_pabajo() { - direccion_hare = 4; - sentido_hare = 3; - paso_x = 0; -} - -void DrasculaEngine::anda_parriba() { - direccion_hare = 0; - sentido_hare = 2; - paso_x = 0; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -void DrasculaEngine::pon_vb() { - int pos_vb[6]; - - if (vb_se_mueve == 0) { - pos_vb[0] = 256; - pos_vb[1] = 129; - pos_vb[2] = vb_x; - pos_vb[3] = 66; - pos_vb[4] = 33; - pos_vb[5] = 69; - if (sentido_vb == 0) - pos_vb[0] = 222; - else if (sentido_vb == 1) - pos_vb[0] = 188; - } else { - pos_vb[2] = vb_x; - pos_vb[3] = 66; - pos_vb[4] = 28; - pos_vb[5] = 68; +void DrasculaEngine::habla_mus(const char *dicho, const char *filename) { + int tiempou; + long tiempol; - if (sentido_vb == 0) { - pos_vb[0] = frame_vb; - pos_vb[1] = 62; - } else { - pos_vb[0] = frame_vb; - pos_vb[1] = 131; - } + int x_habla[8] = { 16, 35, 54, 73, 92, 111, 130, 149}; + int cara; - frame_vb = frame_vb + 29; - if (frame_vb > 146) - frame_vb = 1; - } + int longitud; + longitud = strlen(dicho); - copyRectClip(pos_vb, dir_hare_frente, dir_zona_pantalla); -} + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); -void DrasculaEngine::lleva_vb(int punto_x) { - if (punto_x < vb_x) - sentido_vb = 0; - else - sentido_vb = 1; + buffer_teclado(); - vb_se_mueve = 1; + color_abc(BLANCO); - for (;;) { - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if (sentido_vb == 0) { - vb_x = vb_x - 5; - if (vb_x <= punto_x) - break; - } else { - vb_x = vb_x + 5; - if (vb_x >= punto_x) - break; + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); } - pausa(5); + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); } - vb_se_mueve = 0; -} - -void DrasculaEngine::hipo_sin_nadie(int contador){ - int y = 0, sentido = 0; - if (num_ejec == 3) - y = -1; +bucless: -comienza: - contador--; + cara = _rnd->getRandomNumber(7); copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - if (num_ejec == 3) - updateScreen(0, 0, 0, y, 320, 200, dir_zona_pantalla); - else - updateScreen(0, 1, 0, y, 320, 198, dir_zona_pantalla); - if (sentido == 0) - y++; - else - y--; + actualiza_refresco_antes(); - if (num_ejec == 3) { - if (y == 1) - sentido = 1; - if (y == -1) - sentido = 0; - } else { - if (y == 2) - sentido = 1; - if (y == 0) - sentido = 0; - } - if (contador > 0) - goto comienza; + copyBackground(x_habla[cara], 156, 190, 64, 18, 24, dir_dibujo3, dir_zona_pantalla); + pon_hare(); + actualiza_refresco(); + + if (con_voces == 0) + centra_texto(dicho, 197, 64); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} -void DrasculaEngine::abre_puerta(int nflag, int n_puerta) { - if (flags[nflag] == 0) { - if (num_ejec == 1 /*|| num_ejec == 4*/) { - if (nflag != 7) { - comienza_sound("s3.als"); - flags[nflag] = 1; - } - } else { - comienza_sound("s3.als"); - flags[nflag] = 1; - } + pausa(3); - if (n_puerta != NO_PUERTA) - puertas_cerradas(n_puerta); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - fin_sound(); - sin_verbo(); + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; } + + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -void DrasculaEngine::mapa() { - int l, veo = 0; +void DrasculaEngine::activa_pendulo() { + flags[1] = 2; + hare_se_ve = 0; + strcpy(num_room, "102.alg"); + lee_dibujos("102.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + lee_dibujos("an_p1.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("an_p2.alg"); + descomprime_dibujo(dir_hare_dch, 1); + lee_dibujos("an_p3.alg"); + descomprime_dibujo(dir_hare_frente, 1); - for (l = 0; l < objs_room; l++) { - if (x_raton > x1[l] && y_raton > y1[l] - && x_raton < x2[l] && y_raton < y2[l] - && visible[l] == 1) { - strcpy(texto_nombre, nombre_obj[l]); - hay_nombre = 1; - veo = 1; - } - } + copyBackground(0, 171, 0, 0, ANCHOBJ, ALTOBJ, dir_hare_fondo, dir_dibujo3); - if (veo == 0) - hay_nombre = 0; + conta_ciego_vez = vez(); } -void DrasculaEngine::refresca_1_antes() { - int cambio_col_antes = cambio_de_color; +void DrasculaEngine::habla_pen(const char *dicho, const char *filename) { + int tiempou; + long tiempol; - if (hare_x > 98 && hare_x < 153) - cambio_de_color = 1; - else - cambio_de_color = 0; + int x_habla[8] = {112, 138, 164, 190, 216, 242, 268, 294}; + int cara; - if (cambio_col_antes != cambio_de_color && cambio_de_color == 1) - hare_oscuro(); - if (cambio_col_antes != cambio_de_color && cambio_de_color == 0) - hare_claro(); + int longitud; + longitud = strlen(dicho); - if (flags[8] == 0) - copyBackground(2, 158, 208, 67, 27, 40, dir_dibujo3, dir_zona_pantalla); -} + flags[1] = 1; -void DrasculaEngine::refresca_2(){ - int pos_murci[6]; - int diferencia; - int murci_x[] = {0, 38, 76, 114, 152, 190, 228, 266, - 0, 38, 76, 114, 152, 190, 228, 266, - 0, 38, 76, 114, 152, 190, - 0, 48, 96, 144, 192, 240, - 30, 88, 146, 204, 262, - 88, 146, 204, 262, - 88, 146, 204, 262}; + refresca_pantalla(); + copyRect(44, 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - int murci_y[] = {179, 179, 179, 179, 179, 179, 179, 179, - 158, 158, 158, 158, 158, 158, 158, 158, - 137, 137, 137, 137, 137, 137, - 115, 115, 115, 115, 115, 115, - 78, 78, 78, 78, 78, - 41, 41, 41, 41, - 4, 4, 4, 4}; + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); - if (frame_murcielago == 41) - frame_murcielago = 0; + buffer_teclado(); - pos_murci[0] = murci_x[frame_murcielago]; - pos_murci[1] = murci_y[frame_murcielago]; + color_abc(AMARILLO); - if (frame_murcielago < 22) { - pos_murci[4] = 37; - pos_murci[5] = 21; - } else if (frame_murcielago > 27) { - pos_murci[4] = 57; - pos_murci[5] = 36; - } else { - pos_murci[4] = 47; - pos_murci[5] = 22; + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); } - pos_murci[2] = 239; - pos_murci[3] = 19; +bucless: - copyRectClip(pos_murci, dir_dibujo3, dir_zona_pantalla); - diferencia = vez() - conta_ciego_vez; - if (diferencia >= 6) { - frame_murcielago++; - conta_ciego_vez = vez(); - } + cara = _rnd->getRandomNumber(7); - copyRect(29, 37, 58, 114, 57, 39, dir_dibujo3, dir_zona_pantalla); - mapa(); -} + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); -void DrasculaEngine::refresca_3_antes() { - if (flags[3] == 1) - copyBackground(258, 110, 85, 44, 23, 53, dir_dibujo3, dir_zona_pantalla); -} + actualiza_refresco_antes(); -void DrasculaEngine::refresca_3() { - if (hare_y + alto_hare < 118) - copyRect(129, 110, 194, 36, 126, 88, dir_dibujo3, dir_zona_pantalla); - copyRect(47, 57, 277, 143, 43, 50, dir_dibujo3, dir_zona_pantalla); -} + copyRect(x_habla[cara], 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); -void DrasculaEngine::refresca_4() { - int cambio_col_antes = cambio_de_color; - if (hare_x > 190) - cambio_de_color = 1; - else - cambio_de_color = 0; + actualiza_refresco(); - if (cambio_col_antes != cambio_de_color && cambio_de_color == 1) - hare_oscuro(); - if (cambio_col_antes != cambio_de_color && cambio_de_color == 0) - hare_claro(); -} + if (con_voces == 0) + centra_texto(dicho, 160, 105); -void DrasculaEngine::refresca_5() { - copyRect(114, 130, 211, 87, 109, 69, dir_dibujo3, dir_zona_pantalla); -} + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -void DrasculaEngine::refresca_15() { - copyRect(1, 154, 83, 122, 131, 44, dir_dibujo3, dir_zona_pantalla); -} + pausa(3); -void DrasculaEngine::refresca_17() { - copyRect(48, 135, 78, 139, 80, 30, dir_dibujo3, dir_zona_pantalla); -} + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; + } -void DrasculaEngine::refresca_18() { - if (flags[24] == 1) - copyRect(177, 1, 69, 29, 142, 130, dir_dibujo3, dir_zona_pantalla); - copyRect(105, 132, 109, 108, 196, 65, dir_dibujo3, dir_zona_pantalla); + flags[1] = 0; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -void DrasculaEngine::refresca_5_antes(){ - if (flags[8] == 0) - copyBackground(256, 152, 208, 67, 27, 40, dir_dibujo3, dir_zona_pantalla); -} +void DrasculaEngine::habla_pen2(const char *dicho, const char *filename) { + int tiempou; + long tiempol; -void DrasculaEngine::refresca_6_antes() { - int cambio_col_antes = cambio_de_color; + int x_habla[5]={122, 148, 174, 200, 226}; + int cara; - if ((hare_x > 149 && hare_y + alto_hare > 160 && hare_x < 220 && hare_y + alto_hare < 188) || - (hare_x > 75 && hare_y + alto_hare > 183 && hare_x < 145)) - cambio_de_color = 0; - else - cambio_de_color = 1; + int longitud; + longitud = strlen(dicho); - if (cambio_col_antes != cambio_de_color && cambio_de_color == 1) - hare_oscuro(); - if (cambio_col_antes != cambio_de_color && cambio_de_color == 0) - hare_claro(); + flags[1] = 1; - if (flags[1] == 0) - copyBackground(97, 117, 34, 148, 36, 31, dir_dibujo3, dir_zona_pantalla); - if (flags[0] == 0) - copyBackground(3, 103, 185, 69, 23, 76, dir_dibujo3, dir_zona_pantalla); - if (flags[2] == 0) - copyBackground(28, 100, 219, 72, 64, 97, dir_dibujo3, dir_zona_pantalla); -} + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); -void DrasculaEngine::refresca_7_antes() { - if (flags[35] == 0) - copyBackground(1, 72, 158, 162, 19, 12, dir_dibujo3, dir_zona_pantalla); -} + buffer_teclado(); -void DrasculaEngine::refresca_9_antes() { - int ciego_x[] = {26, 68, 110, 152, 194, 236, 278, 26, 68}; - int ciego_y[] = {51, 51, 51, 51, 51, 51, 51, 127, 127}; - int diferencia; + color_abc(AMARILLO); - copyRect(ciego_x[frame_ciego], ciego_y[frame_ciego], 122, 57, 41, 72, dir_dibujo3, dir_zona_pantalla); - if (flags[9] == 0) { - diferencia = vez() - conta_ciego_vez; - if (diferencia >= 11) { - frame_ciego++; - conta_ciego_vez = vez(); + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); } - if (frame_ciego == 9) - frame_ciego = 0; - } else - frame_ciego = 3; -} - -void DrasculaEngine::refresca_12_antes() { - if (flags[16] == 0) - copyBackground(1, 131, 106, 117, 55, 68, dir_dibujo3, dir_zona_pantalla); -} + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); + } -void DrasculaEngine::refresca_14_antes() { - int velas_y[] = {158, 172, 186}; - int cirio_x[] = {14, 19, 24}; - int pianista_x[] = {1, 91, 61, 31, 91, 31, 1, 61, 31}; - int borracho_x[] = {1, 42, 83, 124, 165, 206, 247, 1}; - int diferencia; +bucless: - copyBackground(123, velas_y[frame_velas], 142, 14, 39, 13, dir_dibujo3, dir_zona_pantalla); - copyBackground(cirio_x[frame_velas], 146, 311, 80, 4, 8, dir_dibujo3, dir_zona_pantalla); + cara = _rnd->getRandomNumber(4); - if (parpadeo == 5) - copyBackground(1, 149, 127, 52, 9, 5, dir_dibujo3, dir_zona_pantalla); - if (hare_x > 101 && hare_x < 155) - copyBackground(31, 138, 178, 51, 18, 16, dir_dibujo3, dir_zona_pantalla); - if (flags[11] == 0) - copyBackground(pianista_x[frame_piano], 157, 245, 130, 29, 42, dir_dibujo3, dir_zona_pantalla); - else if (flags[5] == 0) - copyBackground(145, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); - else - copyBackground(165, 140, 229, 117, 43, 59, dir_dibujo3, dir_zona_pantalla); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - if (flags[12] == 1) - copyBackground(borracho_x[frame_borracho], 82, 170, 50, 40, 53, dir_dibujo3, dir_zona_pantalla); - diferencia = vez() - conta_ciego_vez; - if (diferencia > 6) { - if (flags[12] == 1) { - frame_borracho++; - if (frame_borracho == 8) { - frame_borracho = 0; - flags[12] = 0; - } - } else if ((_rnd->getRandomNumber(94) == 15) && (flags[13] == 0)) - flags[12] = 1; + actualiza_refresco_antes(); - frame_velas++; - if (frame_velas == 3) - frame_velas = 0; - frame_piano++; - if (frame_piano == 9) - frame_piano = 0; - parpadeo = _rnd->getRandomNumber(10); - conta_ciego_vez = vez(); - } -} + copyBackground(x_habla[cara], 171, 173, 116, 25, 28, dir_dibujo3, dir_zona_pantalla); -void DrasculaEngine::refresca_16_antes() { - if (flags[17] == 0) - copyBackground(1, 103, 24, 72, 33, 95, dir_dibujo3, dir_zona_pantalla); - if (flags[19] == 1) - copyBackground(37, 151, 224, 115, 56, 47, dir_dibujo3, dir_zona_pantalla); -} + actualiza_refresco(); -void DrasculaEngine::refresca_17_antes() { - if (flags[15] == 1) - copyBackground(1, 135, 108, 65, 44, 63, dir_dibujo3, dir_zona_pantalla); -} + if (con_voces == 0) + centra_texto(dicho, 195, 107); -void DrasculaEngine::refresca_18_antes() { - int diferencia; - int ronquido_x[] = {95, 136, 95, 136, 95, 95, 95, 95, 136, 95, 95, 95, 95, 95, 95, 95}; - int ronquido_y[] = {18, 18, 56, 56, 94, 94, 94, 94, 94, 18, 18, 18, 18, 18, 18, 18}; + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - if (flags[21] == 0) { - copyBackground(1, 69, 120, 58, 56, 61, dir_dibujo3, dir_zona_pantalla); - copyBackground(ronquido_x[frame_ronquido], ronquido_y[frame_ronquido], 124, 59, 40, 37, dir_dibujo3, dir_zona_pantalla); - } else - pon_vb(); + pausa(3); - diferencia = vez() - conta_ciego_vez; - if (diferencia > 9) { - frame_ronquido++; - if (frame_ronquido == 16) - frame_ronquido = 0; - conta_ciego_vez = vez(); + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; } + + flags[1] = 0; + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -void DrasculaEngine::grr() { +void DrasculaEngine::habla_taber2(const char *dicho, const char *filename) { + int tiempou; + long tiempol; + + int x_habla[6] = {1, 23, 45, 67, 89, 111}; + int cara; + int longitud; - longitud = 30; + longitud = strlen(dicho); + + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); buffer_teclado(); - color_abc(VERDE_OSCURO); + color_abc(MARRON); if (hay_sb == 1) { sku = new Common::File; - sku->open("s10.als"); + sku->open(filename); if (!sku->isOpen()) { error("no puedo abrir archivo de voz"); } - ctvd_init(4); + ctvd_init(2); ctvd_speaker(1); ctvd_output(sku); } - refresca_pantalla(); - copyBackground(253, 110, 150, 65, 20, 30, dir_dibujo3, dir_zona_pantalla); +bucless: + + cara = _rnd->getRandomNumber(5); + + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + + actualiza_refresco_antes(); + + copyBackground(x_habla[cara], 130, 151, 43, 21, 24, dir_dibujo3, dir_zona_pantalla); + pon_hare(); + actualiza_refresco(); if (con_voces == 0) - centra_texto(".groaaarrrrgghhh!", 153, 65); + centra_texto(dicho, 132, 45); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -bucless: + pausa(3); + int key = getscan(); if (key != 0) ctvd_stop(); @@ -7750,387 +6955,212 @@ bucless: updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -bool DrasculaEngine::pantalla_13(int fl) { - if (objeto_que_lleva == MIRAR && fl == 51) { - hablar(TEXT411, "411.als"); - sentido_hare = 3; - hablar(TEXT412, "412.als"); - strcpy(nombre_obj[1], "yoda"); - } else if (objeto_que_lleva == HABLAR && fl == 51) - conversa("op_7.cal"); - else if (objeto_que_lleva == 19 && fl == 51) - animation_1_3(); - else if (objeto_que_lleva == 9 && fl == 51) { - animation_2_3(); - return true; - } else - hay_respuesta = 0; - return false; +void DrasculaEngine::refresca_58() { + if (hare_se_ve == 1) + copyRect(67, 139, 140, 147, 12, 16, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::refresca_13() { - if (hare_x > 55 && flags[3] == 0) - animation_6_3(); - if (flags[1] == 0) - copyRect(185, 110, 121, 65, 67, 88, dir_dibujo3, dir_zona_pantalla); - if (flags[2] == 0) - copyRect(185, 21, 121, 63, 67, 88, dir_dibujo3, dir_zona_pantalla); - copyRect(3, 127, 99, 102, 181, 71, dir_dibujo3, dir_zona_pantalla); +void DrasculaEngine::refresca_60() { + if (hare_y - 10 < y_dr && flags[5] == 0) + pon_dr(); } -void DrasculaEngine::refresca_20() { - copyRect(1, 137, 106, 121, 213, 61, dir_dibujo3, dir_zona_pantalla); +void DrasculaEngine::refresca_61() { + copyRect(1, 154, 83, 122, 131, 44, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::animation_1_3() { - hablar(TEXT413, "413.als"); - grr(); - pausa(50); - hablar(TEXT414, "414.als"); +void DrasculaEngine::refresca_58_antes() { + if (flags[0] == 0) + copyBackground(1, 156, 143, 120, 120, 43, dir_dibujo3, dir_zona_pantalla); + if (flags[1] == 2) + copyRect(252, 171, 173, 116, 25, 28, dir_dibujo3, dir_zona_pantalla); + if (flags[1] == 0 && flags[0] == 0) + copyRect(278, 171, 173, 116, 25, 28, dir_dibujo3, dir_zona_pantalla); + if (flags[2] == 0) { + pon_igor(); + pon_dr(); + } + if (flags[3] == 1) + copyRect(1, 29, 204, 0, 18, 125, dir_dibujo3, dir_zona_pantalla); + if (flags[8] == 1) + copyBackground(20, 60, 30, 64, 46, 95, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::animation_2_3() { - flags[0] = 1; - playmusic(13); - animation_3_3(); - playmusic(13); - animation_4_3(); - flags[1] = 1; - refresca_pantalla(); - updateScreen(120, 0, 120, 0, 200, 200, dir_zona_pantalla); - animation_5_3(); - flags[0] = 0; - flags[1] = 1; - - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - - lleva_al_hare(332, 127); +void DrasculaEngine::refresca_59_antes() { + if (flags[4] == 0) + copyRect(1, 146, 65, 106, 83, 40, dir_dibujo3, dir_zona_pantalla); + if (flags[9] == 1) { + copyBackground(65, 103, 65, 103, 49, 38, dir_dibujo1, dir_zona_pantalla); + copyRect(1, 105, 65, 103, 49, 38, dir_dibujo3, dir_zona_pantalla); + } } -void DrasculaEngine::animation_3_3() { - int n, x = 0; - int px = hare_x - 20, py = hare_y - 1; - - lee_dibujos("an2y_1.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("an2y_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("an2y_3.alg"); - descomprime_dibujo(dir_hare_fondo, 1); +void DrasculaEngine::refresca_60_antes() { + int velas_y[] = {158, 172, 186}; + int diferencia; - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 2, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } + if (flags[5] == 0) + pon_dr(); - x = 0; + copyBackground(123, velas_y[frame_velas], 142, 14, 39, 13, dir_dibujo3, dir_zona_pantalla); - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } + if (flag_tv == 1) + copyBackground(114, 158, 8, 30, 8, 23, dir_dibujo3, dir_zona_pantalla); - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 2, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 2, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } -} - -void DrasculaEngine::animation_4_3() { - int n, x = 0; - int px = 120, py = 63; - - lee_dibujos("any_1.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("any_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("any_3.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - - for (n = 0; n < 4; n++){ - x++; - copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, px, py, 77, 89, dir_hare_frente, dir_zona_pantalla); - updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); - x = x + 77; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 91, px, py, 77, 89, dir_hare_frente, dir_zona_pantalla); - updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); - x = x + 77; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, px, py, 77, 89, dir_hare_dch, dir_zona_pantalla); - updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); - x = x + 77; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 91, px, py, 77, 89, dir_hare_dch, dir_zona_pantalla); - updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); - x = x + 77; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, px, py, 77, 89, dir_hare_fondo, dir_zona_pantalla); - updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); - x = x + 77; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 77, 89, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 91, px, py, 77, 89, dir_hare_fondo, dir_zona_pantalla); - updateScreen(px, py, px, py, 77, 89, dir_zona_pantalla); - x = x + 77; - pausa(3); - } -} - -void DrasculaEngine::animation_5_3() { - int n, x = 0; - int px = hare_x - 20, py = hare_y - 1; - - lee_dibujos("an3y_1.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("an3y_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("an3y_3.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 2, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, px, py, 71, 72, dir_hare_frente, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 2, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, px, py, 71, 72, dir_hare_dch, dir_zona_pantalla); - updateScreen(px,py, px,py, 71,72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 2, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); - } - - x = 0; - - for (n = 0; n < 4; n++) { - x++; - copyBackground(px, py, px, py, 71, 72, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, px, py, 71, 72, dir_hare_fondo, dir_zona_pantalla); - updateScreen(px, py, px, py, 71, 72, dir_zona_pantalla); - x = x + 71; - pausa(3); + diferencia = vez() - conta_ciego_vez; + parpadeo = _rnd->getRandomNumber(7); + if (parpadeo == 5 && flag_tv == 0) + flag_tv = 1; + else if (parpadeo == 5 && flag_tv == 1) + flag_tv = 0; + if (diferencia > 6) { + frame_velas++; + if (frame_velas == 3) + frame_velas = 0; + conta_ciego_vez = vez(); } } -void DrasculaEngine::animation_6_3() { - int frame = 0, px = 112, py = 62; - int yoda_x[] = { 3 ,82, 161, 240, 3, 82 }; - int yoda_y[] = { 3, 3, 3, 3, 94, 94 }; - - hare_se_mueve = 0; - flags[3] = 1; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - flags[1] = 0; - - lee_dibujos("an4y.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - for (frame = 0; frame < 6; frame++) { - pausa(3); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyRect(yoda_x[frame], yoda_y[frame], px, py, 78, 90, dir_hare_frente, dir_zona_pantalla); - updateScreen(px, py, px, py, 78, 90, dir_zona_pantalla); - } - - flags[2] = 1; - - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +void DrasculaEngine::pantalla_58(int fl) { + if (objeto_que_lleva == MOVER && fl == 103) + animation_7_6(); + else if (objeto_que_lleva == MIRAR && fl == 104) + hablar(TEXT454, "454.als"); + else + hay_respuesta = 0; } -void DrasculaEngine::animation_rayo() { - lee_dibujos("anr_1.alg"); - descomprime_dibujo(dir_hare_frente, MEDIA); - lee_dibujos("anr_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("anr_3.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("anr_4.alg"); - descomprime_dibujo(dir_dibujo1, 1); - lee_dibujos("anr_5.alg"); - descomprime_dibujo(dir_dibujo3, 1); - - updateScreen(0, 0, 0, 0, 320, 200, dir_hare_frente); - - pausa(50); - - comienza_sound("s5.als"); +void DrasculaEngine::pantalla_59(int fl) { + if ((objeto_que_lleva == HABLAR && fl == 51) || (objeto_que_lleva == MIRAR && fl == 51)) { + flags[9] = 1; + hablar(TEXT259, "259.als"); + habla_bj_cama(TEXTBJ13, "bj13.als"); + hablar(TEXT263, "263.als"); + habla_bj_cama(TEXTBJ14, "bj14.als"); + pausa(40); + hablar(TEXT264, "264.als"); + habla_bj_cama(TEXTBJ15, "BJ15.als"); + hablar(TEXT265, "265.als"); + flags[9] = 0; + if (flags[11] == 0) { + comienza_sound("s12.als"); + delay(40); + fin_sound(); + delay(10); + lleva_al_hare(174, 168); + sentido_hare = 2; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(40); + comienza_sound("s12.als"); + pausa(19); + fin_sound_corte(); + hare_se_ve = 0; + refresca_pantalla(); + copyRect(101, 34, hare_x - 4, hare_y - 1, 37, 70, dir_dibujo3, dir_zona_pantalla); + copyBackground(0, 0, 0, 0, 320, 200, dir_zona_pantalla, dir_dibujo1); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + hare_se_ve = 1; + borra_pantalla(); + lee_dibujos("tlef0.alg"); + descomprime_dibujo(dir_dibujo1, COMPLETA); + lee_dibujos("tlef1.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("tlef2.alg"); + descomprime_dibujo(dir_hare_frente, 1); + lee_dibujos("tlef3.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + habla_htel(TEXT240, "240.als"); - updateScreen(0, 0, 0, 0, 320, 200, dir_hare_dch); - pausa(3); - updateScreen(0, 0, 0, 0, 320, 200, dir_hare_fondo); - pausa(3); - updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo1); - pausa(3); - updateScreen(0, 0, 0, 0, 320, 200, dir_hare_fondo); - pausa(3); - updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo3); - pausa(3); - updateScreen(0, 0, 0, 0, 320, 200, dir_hare_frente); - fin_sound(); + color_abc(VON_BRAUN); + habla_solo(TEXTVB58, "VB58.als"); + habla_htel(TEXT241, "241.als"); + color_abc(VON_BRAUN); + habla_solo(TEXTVB59, "VB59.als"); + habla_htel(TEXT242, "242.als"); + color_abc(VON_BRAUN); + habla_solo(TEXTVB60, "VB60.als"); + habla_htel(TEXT196, "196.als"); + color_abc(VON_BRAUN); + habla_solo(TEXTVB61,"VB61.als"); + habla_htel(TEXT244, "244.als"); + color_abc(VON_BRAUN); + habla_solo(TEXTVB62, "VB62.als"); + borra_pantalla(); + lee_dibujos("aux59.alg"); + descomprime_dibujo(dir_dibujo3, 1); + lee_dibujos("96.alg"); + descomprime_dibujo(dir_hare_frente, COMPLETA); + lee_dibujos("99.alg"); + descomprime_dibujo(dir_hare_fondo, 1); + lee_dibujos("59.alg"); + descomprime_dibujo(dir_dibujo1, MEDIA); + sentido_hare = 3; + hablar(TEXT245, "245.als"); + sin_verbo(); + flags[11] = 1; + } + } else + hay_respuesta = 0; } -void DrasculaEngine::animation_2_4() { - habla_igor_sentado(TEXTI16, "I16.als"); - hablar(TEXT278, "278.als"); - habla_igor_sentado(TEXTI17, "I17.als"); - hablar(TEXT279, "279.als"); - habla_igor_sentado(TEXTI18, "I18.als"); -} +bool DrasculaEngine::pantalla_60(int fl) { + if (objeto_que_lleva == MOVER && fl == 112) + animation_10_6(); + else if (objeto_que_lleva == MIRAR && fl == 112) + hablar(TEXT440, "440.als"); + else if (objeto_que_lleva == HABLAR && fl == 52) { + hablar(TEXT266, "266.als"); + habla_taber2(TEXTT1, "t1.als"); + conversa("op_12.cal"); + sin_verbo(); + objeto_que_lleva = 0; + } else if (objeto_que_lleva == HABLAR && fl == 115) + hablar(TEXT455, "455.als"); + else if (objeto_que_lleva == HABLAR && fl == 56) + hablar(TEXT455, "455.als"); + else if (objeto_que_lleva == MIRAR && fl == 114) + hablar(TEXT167, "167.als"); + else if (objeto_que_lleva == MIRAR && fl == 113) + hablar(TEXT168, "168.als"); + else if (objeto_que_lleva == COGER && fl == 113) + hablar(TEXT170, "170.als"); + else if (objeto_que_lleva == MOVER && fl == 113) + hablar(TEXT170, "170.als"); + else if (objeto_que_lleva == HABLAR && fl == 113) + hablar(TEXT169, "169.als"); + else if (objeto_que_lleva == 21 && fl == 56) + animation_18_6(); + else if (objeto_que_lleva == 9 && fl == 56 && flags[6] == 1) { + animation_9_6(); + return true; + } else if (objeto_que_lleva == 9 && fl == 56 && flags[6] == 0) { + anima("cnf.bin", 14); + hablar(TEXT455, "455.als"); + } else + hay_respuesta = 0; -void DrasculaEngine::animation_3_4() { - habla_igor_sentado(TEXTI19, "I19.als"); - habla_igor_sentado(TEXTI20, "I20.als"); - hablar(TEXT281, "281.als"); + return false; } -void DrasculaEngine::animation_4_4() { - hablar(TEXT287, "287.als"); - habla_igor_sentado(TEXTI21, "I21.als"); - hablar(TEXT284, "284.als"); - habla_igor_sentado(TEXTI22, "I22.als"); - hablar(TEXT285, "285.als"); - habla_igor_sentado(TEXTI23, "I23.als"); +void DrasculaEngine::pantalla_61(int fl) { + if (objeto_que_lleva == MIRAR && fl == 116) + hablar(TEXT172, "172.als"); + else if (objeto_que_lleva == MIRAR && fl == 117) + hablar(TEXT173, "173.als"); + else if (objeto_que_lleva == MOVER && fl == 117) + hablar(TEXT174, "174.als"); + else if (objeto_que_lleva == ABRIR && fl == 117) + hablar(TEXT174, "174.als"); + else + hay_respuesta = 0; } -void DrasculaEngine::habla_igor_sentado(const char *dicho, const char *filename) { +void DrasculaEngine::habla_bj_cama(const char *dicho, const char *filename) { int tiempou; long tiempol; - int x_habla[4] = { 80, 102, 124, 146 }; + int x_habla[5] = {51, 101, 151, 201, 251}; int cara; int longitud; @@ -8157,18 +7187,19 @@ void DrasculaEngine::habla_igor_sentado(const char *dicho, const char *filename) bucless: - cara = _rnd->getRandomNumber(3); + cara = _rnd->getRandomNumber(4); copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); actualiza_refresco_antes(); - copyBackground(x_habla[cara], 109, 207, 92, 21, 23, dir_dibujo3, dir_zona_pantalla); + copyBackground(65, 103, 65, 103, 49, 38, dir_dibujo1, dir_zona_pantalla); + copyRect(x_habla[cara], 105, 65, 103, 49, 38, dir_dibujo3, dir_zona_pantalla); pon_hare(); actualiza_refresco(); if (con_voces == 0) - centra_texto(dicho, 221, 102); + centra_texto(dicho, 104, 102); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); @@ -8189,3274 +7220,997 @@ bucless: if (longitud > 0) goto bucless; } - refresca_pantalla(); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -void DrasculaEngine::animation_7_4() { - Negro(); - hablar(TEXT427, "427.als"); - FundeDelNegro(1); - resta_objeto(8); - resta_objeto(10); - resta_objeto(12); - resta_objeto(16); - suma_objeto(17); - flags[30] = 0; - flags[29] = 0; -} - -void DrasculaEngine::animation_1_5() { - if (flags[0] == 0) { - hablar(TEXT430, "430.als"); - habla_bj(TEXTBJ16, "BJ16.als"); - habla_bj(TEXTBJ17, "BJ17.als"); - habla_bj(TEXTBJ18, "BJ18.als"); - hablar(TEXT217, "217.als"); - habla_bj(TEXTBJ19, "BJ19.als"); - hablar(TEXT229, "229.als"); - pausa(5); - lleva_al_hare(114, 170); - sentido_hare = 3; - hablar(TEXT431, "431.als"); - habla_bj(TEXTBJ20, "BJ20.als"); - sentido_hare = 2; - pausa(4); - hablar(TEXT438, "438.als"); - sitio_x = 120; - sitio_y = 157; - anda_a_objeto = 1; - sentido_final = 1; - empieza_andar(); - habla_bj(TEXTBJ21, "BJ21.als"); - - for (;;) { - if (hare_se_mueve == 0) - break; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - } - - sentido_hare = 1; - hablar(TEXT229, "229.als"); - flags[0] = 1; - } +void DrasculaEngine::habla_htel(const char *dicho, const char *filename) { + int tiempou; + long tiempol; + char *num_cara; - sentido_hare = 1; - conversa("op_8.cal"); -} + int x_habla[3] = {1, 94, 187}; + int cara, pantalla; -void DrasculaEngine::animation_2_5() { - habla_bj(TEXTBJ22, "BJ22.als"); -} + int longitud; + longitud = strlen(dicho); -void DrasculaEngine::animation_3_5() { - habla_bj(TEXTBJ23, "BJ23.als"); - agarra_objeto(10); - rompo_y_salgo = 1; -} + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); -void DrasculaEngine::animation_4_5() { - flags[7] = 1; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - hablar(TEXT228, "228.als"); - habla_lobo(TEXTL1, "L1.als"); - habla_lobo(TEXTL2, "L2.als"); - pausa(23); - hablar(TEXT229, "229.als"); - habla_lobo(TEXTL3, "L3.als"); - habla_lobo(TEXTL4, "L4.als"); - hablar(TEXT230, "230.als"); - habla_lobo(TEXTL5, "L5.als"); - hablar(TEXT231, "231.als"); - habla_lobo(TEXTL6, "L6.als"); - habla_lobo(TEXTL7, "L7.als"); - pausa(33); - hablar(TEXT232, "232.als"); - habla_lobo(TEXTL8, "L8.als"); -} - -void DrasculaEngine::animation_5_5(){ - int h; - int frame = 0; - int hueso_x[] = {1, 99, 197, 1, 99, 197, 1, 99, 197}; - int hueso_y[] = {1, 1, 1, 66, 66, 66, 131, 131, 131}; - int vuela_x[] = {1, 63, 125, 187, 249}; - int pixel_x = hare_x - 53, pixel_y = hare_y - 9; + buffer_teclado(); - sin_verbo(); - resta_objeto(8); + color_abc(AMARILLO); - lleva_al_hare(hare_x - 19, hare_y + alto_hare); - sentido_hare = 1; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); + } - lee_dibujos("3an5_1.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("3an5_2.alg"); - descomprime_dibujo(dir_hare_frente, 1); +bucless: - for (frame = 0; frame < 9; frame++) { - pausa(3); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyRect(hueso_x[frame], hueso_y[frame], pixel_x, pixel_y, 97, 64, dir_hare_fondo, dir_zona_pantalla); - updateScreen(pixel_x, pixel_y, pixel_x,pixel_y, 97,64, dir_zona_pantalla); - } + cara = _rnd->getRandomNumber(2); + pantalla = _rnd->getRandomNumber(2); - copyBackground(52, 161, 198, 81, 26, 24, dir_dibujo3, dir_zona_pantalla); - updateScreen(198, 81, 198, 81, 26, 24, dir_zona_pantalla); + if (cara == 0 && pantalla == 0) + num_cara = (char *)dir_dibujo3; + else if (pantalla == 1) + num_cara = (char *)dir_hare_frente; + else + num_cara = (char *)dir_hare_fondo; - for (frame = 0; frame < 9; frame++) { - pausa(3); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyRect(hueso_x[frame], hueso_y[frame], pixel_x, pixel_y, 97, 64, dir_hare_frente, dir_zona_pantalla); - updateScreen(pixel_x, pixel_y, pixel_x,pixel_y, 97, 64, dir_zona_pantalla); - } + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - flags[6] = 1; - actualiza_datos(); - pausa(12); + copyBackground(x_habla[cara], 1, 45, 24, 92, 108, (byte *)num_cara, dir_zona_pantalla); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - for (h = 0; h < (200 - 18); h++) - copyBackground(0, 53, 0, h, 320, 19, dir_hare_frente, dir_zona_pantalla); + if (con_voces == 0) + centra_texto(dicho, 90, 50); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(3); - lee_dibujos("101.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("3an5_3.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("3an5_4.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo1); - pausa(9); - for (frame = 0; frame < 5; frame++) { - pausa(3); - copyBackground(vuela_x[frame], 1, 174, 79, 61, 109, dir_hare_fondo, dir_zona_pantalla); - updateScreen(174, 79, 174, 79, 61, 109, dir_zona_pantalla); - } - for (frame = 0; frame < 5; frame++) { - pausa(3); - copyBackground(vuela_x[frame], 1, 174, 79, 61, 109, dir_hare_dch, dir_zona_pantalla); - updateScreen(174, 79, 174, 79, 61, 109, dir_zona_pantalla); + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; } - updateScreen(0, 0, 0, 0, 320, 200, dir_dibujo1); - comienza_sound("s1.als"); - fin_sound(); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +} - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); +void DrasculaEngine::refresca_pendulo() { + int pendulo_x[] = {40, 96, 152, 208, 264, 40, 96, 152, 208, 208, 152, 264, 40, 96, 152, 208, 264}; + int diferencia; - borra_pantalla(); + if (frame_pen <= 4) + dir_pendulo = dir_dibujo3; + else if (frame_pen <= 11) + dir_pendulo = dir_hare_dch; + else + dir_pendulo = dir_hare_frente; - lee_dibujos("49.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); -} + copyBackground(pendulo_x[frame_pen], 19, 152, 0, 55, 125, dir_pendulo, dir_zona_pantalla); -void DrasculaEngine::animation_6_5() { - habla_lobo(TEXTL9, "L9.als"); - hablar(TEXT234, "234.als"); -} + if (flags[1] == 2) + copyRect(18, 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); -void DrasculaEngine::animation_7_5() { - habla_lobo(TEXTL10, "L10.als"); - hablar(TEXT236, "236.als"); - habla_lobo(TEXTL11, "L11.als"); - habla_lobo(TEXTL12, "L12.als"); - habla_lobo(TEXTL13, "L13.als"); - pausa(34); - habla_lobo(TEXTL14, "L14.als"); -} + if (flags[1] == 0) + copyRect(44, 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); -void DrasculaEngine::animation_8_5() { - habla_lobo(TEXTL15, "L15.als"); - hablar(TEXT238, "238.als"); - habla_lobo(TEXTL16, "L16.als"); + diferencia = vez() - conta_ciego_vez; + if (diferencia > 8) { + frame_pen++; + if (frame_pen == 17) + frame_pen = 0; + conta_ciego_vez = vez(); + } } -void DrasculaEngine::animation_9_5() { - flags[4] = 1; - hablar(TEXT401, "401.als"); - sin_verbo(); - resta_objeto(15); +void DrasculaEngine::pantalla_pendulo(int fl) { + if (objeto_que_lleva == MIRAR && fl == 100) + hablar(TEXT452, "452.als"); + else if (objeto_que_lleva == MIRAR && fl == 101) + hablar (TEXT123, "123.als"); + else if (objeto_que_lleva == COGER && fl == 101) + agarra_objeto(20); + else if (objeto_que_lleva == 20 && fl == 100) + animation_6_6(); + else if (objeto_que_lleva == COGER || objeto_que_lleva == ABRIR) + hablar(TEXT453, "453.als"); + else + hay_respuesta = 0; } -void DrasculaEngine::animation_10_5() { - flags[3] = 1; - hablar(TEXT401, "401.als"); - sin_verbo(); - resta_objeto(12); -} +void DrasculaEngine::refresca_21_antes() { + if (flags[0] == 1) + copyBackground(2, 171, 84, 126, 17, 26, dir_dibujo3, dir_zona_pantalla); -void DrasculaEngine::animation_11_5() { - flags[9] = 1; - if (flags[2] == 1 && flags[3] == 1 && flags[4] == 1) - animation_12_5(); - else { - flags[9] = 0; - hablar(TEXT33, "33.als"); - } + if (flags[10] == 1) + copyBackground(20, 163, 257, 149, 14, 34, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::animation_12_5() { - DacPalette256 palFondo1; - DacPalette256 palFondo2; - DacPalette256 palFondo3; +void DrasculaEngine::refresca_22_antes() { + if (flags[24] == 1) + copyBackground(2, 187, 107, 106, 62, 12, dir_dibujo3, dir_zona_pantalla); - int frame; - const int rayo_x[] = {1, 46, 91, 136, 181, 226, 271, 181}; - const int frusky_x[] = {100, 139, 178, 217, 100, 178, 217, 139, 100, 139}; - const int elfrusky_x[] = {1, 68, 135, 1, 68, 135, 1, 68, 135, 68, 1, 135, 68, 135, 68}; - //const int humo_x[] = {1, 29, 57, 85, 113, 141, 169, 197, 225}; - int color, componente; - char fundido; + if (flags[27] == 0) + copyBackground(32, 181, 203, 88, 13, 5, dir_dibujo3, dir_zona_pantalla); - playmusic(26); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(27); - anima("rayo1.bin", 23); - comienza_sound("s5.als"); - anima("rayo2.bin", 17); - sentido_hare = 1; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + if (flags[26] == 0) + copyBackground(2, 133, 137, 83, 29, 53, dir_dibujo3, dir_zona_pantalla); + else + copyBackground(65, 174, 109, 145, 55, 25, dir_dibujo3, dir_zona_pantalla); +} - hare_oscuro(); +void DrasculaEngine::refresca_23_antes() { + if (flags[11] == 1 && flags[0] == 0) + copyBackground(87, 171, 237, 110, 20, 28, dir_dibujo3, dir_zona_pantalla); - for (color = 0; color < 255; color++) - for (componente = 0; componente < 3; componente++) { - palFondo1[color][componente] = palJuego[color][componente]; - palFondo2[color][componente] = palJuego[color][componente]; - palFondo3[color][componente] = palJuego[color][componente]; - } + if (flags[0] == 1) + copyBackground(29, 126, 239, 94, 57, 73, dir_dibujo3, dir_zona_pantalla); - for (fundido = 1; fundido >= 0; fundido--) { - for (color = 0; color < 128; color++) - for (componente = 0; componente < 3; componente++) - palFondo1[color][componente] = LimitaVGA(palFondo1[color][componente] - 8 + fundido); - } + if (flags[1] == 1) + copyRect(1, 135, 7, 94, 27, 64, dir_dibujo3, dir_zona_pantalla); +} - for (fundido = 2; fundido >= 0; fundido--) { - for (color = 0; color < 128; color++) - for (componente = 0; componente < 3; componente++) - palFondo2[color][componente] = LimitaVGA(palFondo2[color][componente] - 8 + fundido); - } +void DrasculaEngine::refresca_24_antes() { + if (flags[1] == 1) + copyBackground(1, 163, 225, 124, 12, 36, dir_dibujo3, dir_zona_pantalla); - for (fundido = 3; fundido >= 0; fundido--) { - for (color = 0; color < 128; color++) - for (componente = 0; componente < 3; componente++) - palFondo3[color][componente] = LimitaVGA(palFondo3[color][componente] - 8 + fundido); - } + if (flags[2] == 1) + copyBackground(14, 153, 30, 107, 23, 46, dir_dibujo3, dir_zona_pantalla); +} - lee_dibujos("3an11_1.alg"); - descomprime_dibujo(dir_hare_fondo, 1); +void DrasculaEngine::refresca_26_antes() { + int diferencia; - for (frame = 0; frame < 8; frame++) { - if (frame == 2 || frame == 4 || frame == 8 || frame==10) - setvgapalette256((byte *)&palFondo1); - else if (frame == 1 || frame == 5 || frame == 7 || frame == 9) - setvgapalette256((byte *)&palFondo2); - else - setvgapalette256((byte *)&palFondo3); + if (flags[2] == 1) + copyBackground(1, 130, 87, 44, 50, 69, dir_dibujo3, dir_zona_pantalla); - pausa(4); - refresca_pantalla(); - copyRect(rayo_x[frame], 1, 41, 0, 44, 44, dir_hare_fondo, dir_zona_pantalla); - copyRect(frusky_x[frame], 113, 205, 50, 38, 86, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - } + if (flags[12] == 1) + copyBackground(52, 177, 272, 103, 27, 22, dir_dibujo3, dir_zona_pantalla); - fin_sound_corte(); + if (flags[18] == 0) + copyBackground(80, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); - for (frame = 0; frame < 15; frame++) { - if (frame == 2 || frame == 4 || frame == 7 || frame == 9) - setvgapalette256((byte *)&palFondo1); - else if (frame == 1 || frame == 5) - setvgapalette256((byte *)&palJuego); - else - setvgapalette256((byte *)&palFondo2); + if (parpadeo == 5 && flags[18] == 0) + copyBackground(52, 172, 226, 106, 3, 4, dir_dibujo3, dir_zona_pantalla); - pausa(4); - refresca_pantalla(); - copyRect(elfrusky_x[frame], 47, 192, 39, 66, 106, dir_hare_fondo, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + diferencia = vez() - conta_ciego_vez; + if (diferencia >= 10) { + parpadeo = _rnd->getRandomNumber(10); + conta_ciego_vez = vez(); } - anima("frel.bin", 16); - borra_pantalla(); - hare_claro(); - ActualizaPaleta(); + if (flags[20] == 1) + copyBackground(182, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); +} - flags[1] = 1; +void DrasculaEngine::refresca_27_antes() { + if (flags[5] == 1) + copyRect(1, 175, 59, 109, 17, 24, dir_dibujo3, dir_zona_pantalla); - animation_13_5(); - comienza_sound("s1.als"); - hipo(12); - fin_sound(); + if (flags[6] == 1) + copyRect(19, 177, 161, 103, 18, 22, dir_dibujo3, dir_zona_pantalla); +} - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); +void DrasculaEngine::refresca_29_antes() { + if (flags[4] == 1) + copyBackground(12, 113, 247, 49, 41, 84, dir_dibujo3, dir_zona_pantalla); +} - lleva_al_hare(40, 169); - lleva_al_hare(-14, 175); +void DrasculaEngine::refresca_30_antes() { + if (flags[4] == 1) + copyBackground(1, 148, 148, 66, 35, 51, dir_dibujo3, dir_zona_pantalla); - rompo = 1; - musica_antes = musica_room; - hare_se_ve = 1; - borra_pantalla(); - sentido_hare = 1; - hare_se_mueve = 0; - hare_x = -1; - obj_saliendo = 104; - sin_verbo(); - carga_escoba("57.ald"); + if (flags[16] == 1) + copyBackground(37, 173, 109, 84, 20, 26, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::animation_13_5() { - int frank_x = 199; - int frame = 0; - int frus_x[] = {1, 46, 91, 136, 181, 226, 271}; - int frus_y[] = {1, 1, 1, 1, 1, 1, 1, 89}; - int pos_frusky[6]; - - lee_dibujos("auxfr.alg"); - descomprime_dibujo(dir_hare_fondo, 1); +void DrasculaEngine::refresca_31_antes() { + if (flags[13] == 1) + copyBackground(1, 163, 116, 41, 61, 36, dir_dibujo3, dir_zona_pantalla); - pos_frusky[3] = 81; - pos_frusky[4] = 44; - pos_frusky[5] = 87; - pos_frusky[0] = 1; - pos_frusky[1] = 1; - pos_frusky[2] = frank_x; - refresca_pantalla(); - copyRectClip(pos_frusky, dir_hare_fondo, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(15); + if (flags[5] == 1) + copyBackground(1, 78, 245, 63, 30, 84, dir_dibujo3, dir_zona_pantalla); +} - playmusic(18); +void DrasculaEngine::refresca_34_antes() { + if (flags[7] == 1) + copyBackground(99, 127, 73, 41, 79, 72, dir_dibujo3, dir_zona_pantalla); - for (;;) { - refresca_pantalla(); - pos_frusky[0] = frus_x[frame]; - pos_frusky[1] = frus_y[frame]; - pos_frusky[2] = frank_x; - copyRectClip( pos_frusky, dir_hare_fondo, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - frank_x = frank_x - 5; - frame++; - if (frank_x <= -45) - break; - if (frame == 7) { - frame = 0; - sentido_hare = 3; - } - pausa(6); - } + if (flags[8] == 1) + copyBackground(36, 129, 153, 41, 62, 65, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::animation_14_5() { - flags[11] = 1; - comienza_sound("s3.als"); - refresca_pantalla(); - updateScreen(0, 0, 0,0 , 320, 200, dir_zona_pantalla); - fin_sound(); - pausa(17); - sentido_hare = 3; - hablar(TEXT246,"246.als"); - lleva_al_hare(89, 160); - flags[10] = 1; - comienza_sound("s7.als"); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - fin_sound(); - pausa(14); - sentido_hare = 3; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - habla_solo(TEXTD18, "d18.als"); - FundeAlNegro(1); -} +void DrasculaEngine::refresca_35_antes() { + if (flags[14] == 1) + copyBackground(1, 86, 246, 65, 68, 87, dir_dibujo3, dir_zona_pantalla); -void DrasculaEngine::animation_15_5() { - habla_mus(TEXTE4, "E4.als"); - habla_mus(TEXTE5, "E5.als"); - habla_mus(TEXTE6, "E6.als"); - hablar(TEXT291, "291.als"); - habla_mus(TEXTE7, "E7.als"); -} + if (flags[17] == 0 && flags[15] == 1) + copyBackground(111, 150, 118, 52, 40, 23, dir_dibujo3, dir_zona_pantalla); -void DrasculaEngine::animation_16_5() { - habla_mus(TEXTE8, "E8.als"); + if (flags[17] == 1) + copyBackground(70, 150, 118, 52, 40, 23, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::animation_17_5() { - habla_mus(TEXTE9, "E9.als"); -} +void DrasculaEngine::refresca_26() { + if (flags[29] == 1) + copyRect(93, 1, hare_x, hare_y, 45, 78, dir_hare_fondo, dir_zona_pantalla); -void DrasculaEngine::refresca_49_antes() { - if (flags[6] == 0) - copyBackground(2, 136, 176, 81, 49, 62, dir_dibujo3, dir_zona_pantalla); + copyRect(233, 107, 17, 102, 66, 92, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::refresca_53_antes() { - if (flags[1] == 0) - copyRect(2, 113, 205, 50, 38, 86, dir_dibujo3, dir_zona_pantalla); - if (flags[2] == 0) - copyBackground(41, 159, 27, 117, 25, 40, dir_dibujo3, dir_zona_pantalla); - if (flags[9] == 1) - copyBackground(67, 184, 56, 93, 32, 15, dir_dibujo3, dir_zona_pantalla); +void DrasculaEngine::refresca_27() { + copyRect(38, 177, 103, 171, 21, 22, dir_dibujo3, dir_zona_pantalla); + copyRect(60, 162, 228, 156, 18, 37, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::refresca_54_antes() { - if (flags[5] == 1) - copyBackground(168, 156, 187, 111, 7, 11, dir_dibujo3, dir_zona_pantalla); - if (flags[12] == 1) - copyBackground(16, 156, 190, 64, 18, 24, dir_dibujo3, dir_zona_pantalla); +void DrasculaEngine::refresca_29() { + copyRect(1, 180, 150, 126, 10, 17, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::refresca_56_antes() { - if (flags[10] == 0) - copyBackground(2, 126, 42, 67, 57, 67, dir_dibujo3, dir_zona_pantalla); - if (flags[11] == 1) - copyBackground(60, 160, 128, 97, 103, 38, dir_dibujo3, dir_zona_pantalla); +void DrasculaEngine::refresca_31() { + copyRect(63, 190, 223, 157, 17, 9, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::refresca_50() { - copyRect(4, 153, 118, 95, 67, 44, dir_dibujo3, dir_zona_pantalla); +void DrasculaEngine::refresca_34() { + copyRect(5, 171, 234, 126, 29, 23, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::refresca_57() { - copyRect(7, 113, 166, 61, 62, 82, dir_dibujo3, dir_zona_pantalla); +void DrasculaEngine::refresca_35() { + copyRect(1, 174, 54, 152, 195, 25, dir_dibujo3, dir_zona_pantalla); } -void DrasculaEngine::pantalla_49(int fl){ - if (objeto_que_lleva == HABLAR && fl ==51) - conversa("op_9.cal"); - else if (objeto_que_lleva == MIRAR && fl == 51) - hablar(TEXT132, "132.als"); - else if ((objeto_que_lleva == 8 && fl == 51) || (objeto_que_lleva == 8 && fl == 203)) - animation_5_5(); - else if (objeto_que_lleva == MIRAR && fl == 200) - hablar(TEXT133, "133.als"); - else if (objeto_que_lleva == HABLAR && fl == 200) - hablar(TEXT134, "134.als"); - else if (objeto_que_lleva == MIRAR && fl == 201) - hablar(TEXT135, "135.als"); - else if (objeto_que_lleva == MIRAR && fl == 203) - hablar(TEXT137, "137.als"); +void DrasculaEngine::pantalla_1(int fl) { + if (objeto_que_lleva == MIRAR && fl == 118) { + hablar(TEXT1, "1.als"); + pausa(10); + hablar(TEXT2, "2.als"); + } else if (objeto_que_lleva == COGER && fl == 118) + hablar(TEXT5, "5.als"); + else if (objeto_que_lleva == ABRIR && fl == 118) + hablar(TEXT3, "3.als"); + else if (objeto_que_lleva == CERRAR && fl == 118) + hablar(TEXT4, "4.als"); + else if (objeto_que_lleva == HABLAR && fl == 118) + hablar(TEXT6, "6.als"); + else if (objeto_que_lleva == MIRAR && fl == 119) + hablar(TEXT8, "8.als"); + else if (objeto_que_lleva == MOVER && fl == 119) + hablar(TEXT13, "13.als"); + else if (objeto_que_lleva == CERRAR && fl == 119) + hablar(TEXT10, "10.als"); + else if (objeto_que_lleva == HABLAR && fl == 119) + hablar(TEXT12, "12.als"); + else if (objeto_que_lleva == MIRAR && fl == 120 && flags[8] == 0) + hablar(TEXT14, "14.als"); + else if (objeto_que_lleva == MOVER && fl == 120) + hablar(TEXT13, "13.als"); + else if (objeto_que_lleva == ABRIR && fl == 120) + hablar(TEXT18, "18.als"); + else if (objeto_que_lleva == HABLAR && fl == 120) + hablar(TEXT15, "15.als"); else hay_respuesta = 0; } -void DrasculaEngine::pantalla_53(int fl) { - if (objeto_que_lleva == COGER && fl == 120) { - agarra_objeto(16); - visible[3] = 0; - } else if (objeto_que_lleva == MIRAR && fl == 121) - hablar(TEXT128, "128.als"); - else if (objeto_que_lleva == MIRAR && fl == 209) - hablar(TEXT129, "129.als"); - else if (objeto_que_lleva == MOVER && fl == 123) - animation_11_5(); - else if (objeto_que_lleva == MIRAR && fl == 52) - hablar(TEXT447, "447.als"); - else if (objeto_que_lleva == HABLAR && fl == 52) - hablar(TEXT131, "131.als"); - else if (objeto_que_lleva == 12 && fl == 52) - animation_10_5(); - else if (objeto_que_lleva == 15 && fl == 52) - animation_9_5(); - else if (objeto_que_lleva == 16 && fl == 121) { - flags[2] = 1; - sin_verbo(); - actualiza_datos(); - } else if (objeto_que_lleva == 16) { - hablar(TEXT439, "439.als"); - sin_verbo(); - visible[3] = 1; - } else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_54(int fl) { - if ((objeto_que_lleva == HABLAR && fl == 118) || (objeto_que_lleva == MIRAR && fl == 118 && flags[0] == 0)) - animation_1_5(); - else if (objeto_que_lleva == MIRAR && fl == 118 && flags[0]==1) - hablar(TEXT124, "124.als"); - else if (objeto_que_lleva == MIRAR && fl == 53) - hablar(TEXT127, "127.als"); - else if (objeto_que_lleva == HABLAR && fl == 53 && flags[14] == 0) { - hablar(TEXT288, "288.als"); - flags[12] = 1; - pausa(10); - habla_mus(TEXTE1, "E1.als"); - hablar(TEXT289, "289.als"); - habla_mus(TEXTE2, "E2.als"); - habla_mus(TEXTE3, "E3.als"); - conversa("op_10.cal"); - flags[12] = 0; - flags[14] = 1; - } else if (objeto_que_lleva == HABLAR && fl == 53 && flags[14] == 1) - hablar(TEXT109, "109.als"); - else if (objeto_que_lleva == COGER && fl == 9999 && flags[13] == 0) { - agarra_objeto(8); - flags[13] = 1; - habla_mus(TEXTE10, "e10.als"); - actualiza_datos(); - } else if (objeto_que_lleva == ABRIR && fl == 119) - hablar(TEXT125, "125.als"); - else if (objeto_que_lleva == MIRAR && fl == 119) - hablar(TEXT126, "126.als"); - else if (objeto_que_lleva == 10 && fl == 119) { +void DrasculaEngine::pantalla_3(int fl) { + if (objeto_que_lleva == MIRAR && fl == 129) + hablar(TEXT21, "21.als"); + else if (objeto_que_lleva == COGER && fl == 129) + hablar(TEXT5, "5.als"); + else if (objeto_que_lleva == MOVER && fl == 129) + hablar(TEXT24, "24.als"); + else if (objeto_que_lleva == ABRIR && fl == 129) + hablar(TEXT22, "22.als"); + else if (objeto_que_lleva == CERRAR && fl == 129) + hablar(TEXT10, "10.als"); + else if (objeto_que_lleva == HABLAR && fl == 129) { + hablar(TEXT23, "23.als"); + pausa(6); + hablar_sinc(TEXT50, "50.als", "11111111111144432554433"); + } else if (objeto_que_lleva == MIRAR && fl == 131) + hablar(TEXT27, "27.als"); + else if (objeto_que_lleva == COGER && fl == 131) + hablar(TEXT5, "5.als"); + else if (objeto_que_lleva == MOVER && fl == 131) + hablar(TEXT24, "24.als"); + else if (objeto_que_lleva == ABRIR && fl == 131) + hablar(TEXT22, "22.als"); + else if (objeto_que_lleva == CERRAR && fl == 131) + hablar(TEXT10, "10.als"); + else if (objeto_que_lleva == HABLAR && fl == 131) + hablar(TEXT23, "23.als"); + else if (objeto_que_lleva == MIRAR && fl == 132) + hablar(TEXT28, "28.als"); + else if (objeto_que_lleva == COGER && fl == 132) + hablar(TEXT5, "5.als"); + else if (objeto_que_lleva == MOVER && fl == 132) + hablar(TEXT24, "24.als"); + else if (objeto_que_lleva == ABRIR && fl == 132) + hablar(TEXT22, "22.als"); + else if (objeto_que_lleva == CERRAR && fl == 132) + hablar(TEXT10, "10.als"); + else if (objeto_que_lleva == HABLAR && fl == 132) + hablar(TEXT23, "23.als"); + else if (objeto_que_lleva == MIRAR && fl == 133) + hablar(TEXT321, "321.als"); + else if (objeto_que_lleva == COGER && fl == 133) + hablar(TEXT31, "31.als"); + else if (objeto_que_lleva == MOVER && fl == 133) + hablar(TEXT34, "34.als"); + else if (objeto_que_lleva == ABRIR && fl == 133) + hablar(TEXT30, "30.als"); + else if (objeto_que_lleva == CERRAR && fl == 133) + hablar(TEXT10, "10.als"); + else if (objeto_que_lleva == HABLAR && fl == 133) { + hablar_sinc(TEXT322, "322.als", "13333334125433333333"); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(25); + hablar(TEXT33, "33.als"); + } else if (objeto_que_lleva == MIRAR && fl == 165) { + hablar(TEXT149, "149.als"); + hablar(TEXT150, "150.als"); + } else if (objeto_que_lleva == COGER && fl == 165) { + copyBackground(0, 0, 0,0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + copyRect(44, 1, hare_x, hare_y, 41, 70, dir_dibujo2, dir_zona_pantalla); + actualiza_refresco(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); pausa(4); - hablar(TEXT436, "436.als"); - sin_verbo(); - resta_objeto(10); + agarra_objeto(10); + flags[3] = 1; + visible[8] = 0; + } else if (objeto_que_lleva == MIRAR && fl == 166) + hablar(TEXT55, "55.als"); + else if (objeto_que_lleva == COGER && fl == 166) + hablar(TEXT7, "7.als"); + else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 0) { + animation_7_2(); + agarra_objeto(8); + } else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 1) + hablar(TEXT323, "323.als"); + else if (objeto_que_lleva == MIRAR && fl == 211) + hablar(TEXT184, "184.als"); + else if (objeto_que_lleva == HABLAR && fl == 211) { + hablar(TEXT185, "185.als"); + hablar(TEXT186, "186.als"); } else hay_respuesta = 0; } -void DrasculaEngine::pantalla_55(int fl) { - if (objeto_que_lleva == COGER && fl == 122) { - agarra_objeto(12); - flags[8] = 1; - actualiza_datos(); - } else if (objeto_que_lleva == MIRAR && fl == 122) - hablar(TEXT138, "138.als"); - else if (objeto_que_lleva == MIRAR && fl == 204) - hablar(TEXT139, "139.als"); - else if (objeto_que_lleva == MIRAR && fl == 205) - hablar(TEXT140, "140.als"); - else if (fl == 206) { - comienza_sound("s11.als"); - anima("det.bin", 17); - fin_sound(); - lleva_al_hare(hare_x - 3, hare_y + alto_hare + 6); - } else +void DrasculaEngine::pantalla_4(int fl) { + if (objeto_que_lleva == MOVER && fl == 189 && flags[34] == 0) { + hablar(TEXT327, "327.als"); + agarra_objeto(13); + flags[34] = 1; + if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) + flags[38] = 1; + } else if (objeto_que_lleva == MIRAR && fl == 189) + hablar(TEXT182, "182.als"); + else if (objeto_que_lleva == MIRAR && fl == 207) + hablar(TEXT175, "175.als"); + else if (objeto_que_lleva == HABLAR && fl == 207) + hablar(TEXT176, "176.als"); + else if (objeto_que_lleva == MIRAR && fl == 208) + hablar(TEXT177, "177.als"); + else if (objeto_que_lleva == MIRAR && fl == 209) + hablar(TEXT179, "179.als"); + else if (objeto_que_lleva == MIRAR && fl == 210) + hablar(TEXT180, "180.als"); + else if (objeto_que_lleva == ABRIR && fl == 210) + hablar(TEXT181, "181.als"); + else hay_respuesta = 0; } -bool DrasculaEngine::pantalla_56(int fl) { - if (objeto_que_lleva == ABRIR && fl == 124) { - animation_14_5(); - return true; - } else if (objeto_que_lleva == MIRAR && fl == 124) - hablar(TEXT450, "450.als"); - else if (objeto_que_lleva == ABRIR && fl == 207) - hablar(TEXT141, "141.als"); - else if (objeto_que_lleva == MIRAR && fl == 208) - hablar(TEXT142, "142.als"); +void DrasculaEngine::pantalla_5(int fl) { + if (objeto_que_lleva == MIRAR && fl == 136 && flags[8]==0) hablar(TEXT14, "14.als"); + else if (objeto_que_lleva == MOVER && fl == 136) + hablar(TEXT13, "13.als"); + else if (objeto_que_lleva == ABRIR && fl == 136) + hablar(TEXT18, "18.als"); + else if (objeto_que_lleva == HABLAR && fl == 136) + hablar(TEXT15, "15.als"); + else if (objeto_que_lleva == 10 && fl == 136) { + animation_5_2(); + resta_objeto(10); + } else if (objeto_que_lleva == MIRAR && fl == 212) + hablar(TEXT187, "187.als"); + else if (objeto_que_lleva == HABLAR && fl == 212) + hablar(TEXT188, "188.als"); + else if (objeto_que_lleva == MIRAR && fl == 213) + hablar(TEXT189, "189.als"); + else if (objeto_que_lleva == ABRIR && fl == 213) + hablar(TEXT190, "190.als"); else hay_respuesta = 0; - - return false; } -void DrasculaEngine::habla_lobo(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - - int x_habla[9] = {52, 79, 106, 133, 160, 187, 214, 241, 268}; - int cara; - - int longitud; - longitud = strlen(dicho); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - color_abc(ROJO); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(8); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - +void DrasculaEngine::pantalla_6(int fl){ + if (objeto_que_lleva == MIRAR && fl==144) { + hablar(TEXT41, "41.als"); + hablar(TEXT42, "42.als"); + } else if (objeto_que_lleva == COGER && fl == 144) + hablar(TEXT43, "43.als"); + else if (objeto_que_lleva == MIRAR && fl == 138) + hablar(TEXT35, "35.als"); + else if (objeto_que_lleva == ABRIR && fl == 138) + abre_puerta(0, 1); + else if (objeto_que_lleva == CERRAR && fl == 138) + cierra_puerta(0, 1); + else if (objeto_que_lleva == HABLAR && fl == 138) + hablar(TEXT6, "6.als"); + else if (objeto_que_lleva == MIRAR && fl == 143) + hablar(TEXT37, "37.als"); + else if (objeto_que_lleva == COGER && fl == 143) + hablar(TEXT7, "7.als"); + else if (objeto_que_lleva == MOVER && fl == 143) + hablar(TEXT7, "7.als"); + else if (objeto_que_lleva == ABRIR && fl == 143 && flags[2] == 0) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); actualiza_refresco_antes(); - - copyBackground(x_habla[cara], 136, 198, 81, 26, 24, dir_dibujo3, dir_zona_pantalla); - pon_hare(); - actualiza_refresco(); - - if (con_voces == 0) - centra_texto(dicho, 203, 78); - + copyRect(228, 102, hare_x + 5, hare_y - 1, 47, 73, dir_dibujo3, dir_zona_pantalla); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - + pausa(10); + comienza_sound("s3.als"); + flags[2] = 1; refresca_pantalla(); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + fin_sound(); + } else if (objeto_que_lleva == CERRAR && fl == 143 && flags[2] == 1) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + flags[2] = 0; + actualiza_refresco_antes(); + copyRect(228, 102, hare_x + 5, hare_y - 1, 47, 73, dir_dibujo3, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(5); + comienza_sound("s4.als"); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + fin_sound(); + } else if (objeto_que_lleva == HABLAR && fl == 143) + hablar(TEXT38, "38.als"); + else if (objeto_que_lleva == MIRAR && fl == 139) + hablar(TEXT36, "36.als"); + else if (objeto_que_lleva == ABRIR && fl == 139 && flags[1] == 0) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + copyRect(267, 1, hare_x - 14, hare_y - 2, 52, 73, dir_dibujo3, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(19); + comienza_sound("s3.als"); + flags[1] = 1; + visible[4] = 1; + visible[2] = 0; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + fin_sound(); + } else if (objeto_que_lleva == MIRAR && fl == 140) + hablar(TEXT147, "147.als"); + else if (objeto_que_lleva == COGER && fl == 140) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + copyRect(267, 1, hare_x - 14, hare_y - 2, 52, 73, dir_dibujo3, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(19); + agarra_objeto(9); + visible[4] = 0; + flags[10] = 1; + } else if (objeto_que_lleva == ABRIR && fl == 140) + hay_respuesta = 1; + else + hay_respuesta = 0; } -void DrasculaEngine::habla_mus(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - - int x_habla[8] = { 16, 35, 54, 73, 92, 111, 130, 149}; - int cara; - - int longitud; - longitud = strlen(dicho); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); +void DrasculaEngine::pantalla_7(int fl){ + if (objeto_que_lleva == MIRAR && fl == 169) + hablar(TEXT44, "44.als"); + else if (objeto_que_lleva == MIRAR && fl == 164) + hablar(TEXT35, "35.als" ); + else if (objeto_que_lleva == COGER && fl == 190) { + agarra_objeto(17); + flags[35] = 1; + visible[3] = 0; + if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) + flags[38] = 1; + } else + hay_respuesta = 0; +} - buffer_teclado(); +void DrasculaEngine::pantalla_8(int fl) { + if (objeto_que_lleva == MIRAR && fl == 147 && flags[7] == 0) { + hablar(TEXT58, "58.als"); + agarra_objeto(15); + flags[7] = 1; + if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) + flags[38] = 1; + } else if (objeto_que_lleva == MIRAR && fl == 147) + hablar(TEXT59, "59.als"); + else + hay_respuesta = 0; +} - color_abc(BLANCO); +void DrasculaEngine::pantalla_9(int fl){ + if (objeto_que_lleva == MIRAR && fl == 150) + hablar(TEXT35, "35.als"); + else if (objeto_que_lleva == HABLAR && fl == 150) + hablar(TEXT6, "6.als"); + else if (objeto_que_lleva == MIRAR && fl == 51) + hablar(TEXT60, "60.als"); + else if (objeto_que_lleva == HABLAR && fl == 51 && flags[4] == 0) + animation_4_2(); + else if (objeto_que_lleva == HABLAR && fl == 51 && flags[4] == 1) + animation_33_2(); + else if (objeto_que_lleva == 7 && fl == 51) { + animation_6_2(); + resta_objeto(7); + agarra_objeto(14);} + else + hay_respuesta = 0; +} - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(7); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - actualiza_refresco_antes(); - - copyBackground(x_habla[cara], 156, 190, 64, 18, 24, dir_dibujo3, dir_zona_pantalla); - pon_hare(); - actualiza_refresco(); - - if (con_voces == 0) - centra_texto(dicho, 197, 64); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} - -void DrasculaEngine::animation_1_6() { - int l; - - sentido_hare = 0; - hare_x = 103; - hare_y = 108; - flags[0] = 1; - for (l = 0; l < 200; l++) - factor_red[l] = 98; - - lee_dibujos("auxig2.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("auxdr.alg"); - descomprime_dibujo(dir_dibujo2, 1); - lee_dibujos("car.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - habla_dr_dch(TEXTD19, "D19.als"); - hablar(TEXT247, "247.als"); - habla_dr_dch(TEXTD20, "d20.als"); - habla_dr_dch(TEXTD21, "d21.als"); - hablar(TEXT248, "248.als"); - habla_dr_dch(TEXTD22, "d22.als"); - hablar(TEXT249, "249.als"); - habla_dr_dch(TEXTD23, "d23.als"); - conversa("op_11.cal"); - habla_dr_dch(TEXTD26, "d26.als"); - - anima("fum.bin", 15); - - habla_dr_dch(TEXTD27, "d27.als"); - hablar(TEXT254, "254.als"); - habla_dr_dch(TEXTD28, "d28.als"); - hablar(TEXT255, "255.als"); - habla_dr_dch(TEXTD29, "d29.als"); - FundeAlNegro(1); - borra_pantalla(); - lee_dibujos("time1.alg"); - descomprime_dibujo(dir_zona_pantalla, 1); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - delay(930); - borra_pantalla(); - Negro(); - hare_se_ve = 0; - flags[0] = 0; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - FundeDelNegro(1); - hablar(TEXT256, "256.als"); - habla_dr_dch(TEXTD30, "d30.als"); - hablar(TEXT257, "257.als"); - FundeAlNegro(0); - borra_pantalla(); - lee_dibujos("time1.alg"); - descomprime_dibujo(dir_zona_pantalla,1); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - delay(900); - borra_pantalla(); - Negro(); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - FundeDelNegro(1); - hablar(TEXT258, "258.als"); - habla_dr_dch(TEXTD31, "d31.als"); - animation_5_6(); - habla_dr_dch(TEXTD32, "d32.als"); - habla_igor_dch(TEXTI11, "I11.als"); - sentido_igor = 3; - habla_dr_dch(TEXTD33, "d33.als"); - habla_igor_frente(TEXTI12, "I12.als"); - habla_dr_dch(TEXTD34, "d34.als"); - sentido_dr = 0; - habla_dr_izq(TEXTD35, "d35.als"); - borra_pantalla(); - carga_escoba("102.ald"); - activa_pendulo(); -} - -void DrasculaEngine::animation_2_6() { - habla_dr_dch(TEXTD24, "d24.als"); -} - -void DrasculaEngine::animation_3_6() { - habla_dr_dch(TEXTD24, "d24.als"); -} - -void DrasculaEngine::animation_4_6() { - habla_dr_dch(TEXTD25, "d25.als"); -} - -void DrasculaEngine::animation_5_6() { - int n, pos_pen[6]; - - pos_pen[0] = 1; - pos_pen[1] = 29; - pos_pen[2] = 204; - pos_pen[3] = -125; - pos_pen[4] = 18; - pos_pen[5] = 125; - - anima("man.bin", 14); - - for (n = -125; n <= 0; n = n + 2) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - pos_pen[3] = n; - copyRectClip(pos_pen, dir_dibujo3, dir_zona_pantalla); - - actualiza_refresco(); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(2); - } - - flags[3] = 1; -} - -void DrasculaEngine::animation_6_6() { - anima("rct.bin", 11); - borra_pantalla(); - sin_verbo(); - resta_objeto(20); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - rompo = 1; - obj_saliendo = 104; - hare_x = -1; - sin_verbo(); - carga_escoba("58.ald"); - hare_se_ve = 1; - sentido_hare = 1; - anima("hbp.bin", 14); - - sentido_hare = 3; - flags[0] = 1; - flags[1] = 0; - flags[2] = 1; -} - -void DrasculaEngine::animation_7_6() { - flags[8] = 1; - actualiza_datos(); -} - -void DrasculaEngine::animation_9_6() { - int v_cd; - - anima("fin.bin", 14); - playmusic(13); - flags[5] = 1; - anima("drf.bin", 16); - FundeAlNegro(0); - borra_pantalla(); - hare_x = -1; - obj_saliendo = 108; - carga_escoba("59.ald"); - strcpy(num_room, "nada.alg"); - lee_dibujos("nota2.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - Negro(); - sentido_hare = 1; - hare_x -= 21; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - FundeDelNegro(0); - pausa(96); - lleva_al_hare(116, 178); - sentido_hare = 2; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - playmusic(9); - borra_pantalla(); - lee_dibujos("nota.alg"); - descomprime_dibujo(dir_dibujo1, COMPLETA); - color_abc(BLANCO); - habla_solo(TEXTBJ24, "bj24.als"); - habla_solo(TEXTBJ25, "bj25.als"); - habla_solo(TEXTBJ26, "bj26.als"); - habla_solo(TEXTBJ27, "bj27.als"); - habla_solo(TEXTBJ28, "bj28.als"); - sentido_hare = 3; - borra_pantalla(); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, COMPLETA); - lee_dibujos("nota2.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - hablar(TEXT296, "296.als"); - hablar(TEXT297, "297.als"); - hablar(TEXT298, "298.als"); - sentido_hare = 1; - hablar(TEXT299, "299.als"); - hablar(TEXT300, "300.als"); - refresca_pantalla(); - copyBackground(0, 0, 0, 0, 320, 200, dir_zona_pantalla, dir_dibujo1); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - color_abc(VERDE_CLARO); - habla_solo("GOOOOOOOOOOOOOOOL", "s15.als"); - lee_dibujos("nota2.alg"); - descomprime_dibujo(dir_dibujo1, 1); - sentido_hare = 0; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - hablar(TEXT301, "301.als"); - v_cd = _mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16; - v_cd = v_cd + 4; - playmusic(17); - FundeAlNegro(1); - borra_pantalla(); - fliplay("qpc.bin", 1); - MusicFadeout(); - stopmusic(); - borra_pantalla(); - _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, v_cd * 16); - playmusic(3); - fliplay("crd.bin", 1); - stopmusic(); -} - -void DrasculaEngine::animation_10_6() { - comienza_sound ("s14.als"); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - copyBackground(164, 85, 155, 48, 113, 114, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - fin_sound(); - habla_taber2(TEXTT23, "t23.als"); - flags[7] = 1; -} - -void DrasculaEngine::animation_11_6() { - habla_taber2(TEXTT10, "t10.als"); - hablar(TEXT268, "268.als"); - habla_taber2(TEXTT11, "t11.als"); -} - -void DrasculaEngine::animation_12_6() { - habla_taber2(TEXTT12, "t12.als"); - hablar(TEXT270, "270.als"); - habla_taber2(TEXTT13, "t13.als"); - habla_taber2(TEXTT14, "t14.als"); -} - -void DrasculaEngine::animation_13_6() { - habla_taber2(TEXTT15, "t15.als"); -} - -void DrasculaEngine::animation_14_6() { - habla_taber2(TEXTT24, "t24.als"); - suma_objeto(21); - flags[10] = 1; - rompo_y_salgo = 1; -} - -void DrasculaEngine::animation_15_6() { - habla_taber2(TEXTT16, "t16.als"); -} - -void DrasculaEngine::animation_18_6() { - flags[6] = 1; - sin_verbo(); - resta_objeto(21); - anima("beb.bin", 10); -} - -void DrasculaEngine::animation_19_6() { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyBackground(140, 23, 161, 69, 35, 80, dir_dibujo3, dir_zona_pantalla); - - actualiza_refresco_antes(); - pon_hare(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(6); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - comienza_sound("s4.als"); - pausa(6); - fin_sound(); -} - -void DrasculaEngine::activa_pendulo() { - flags[1] = 2; - hare_se_ve = 0; - strcpy(num_room, "102.alg"); - lee_dibujos("102.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("an_p1.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("an_p2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("an_p3.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - copyBackground(0, 171, 0, 0, ANCHOBJ, ALTOBJ, dir_hare_fondo, dir_dibujo3); - - conta_ciego_vez = vez(); -} - -void DrasculaEngine::habla_pen(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - - int x_habla[8] = {112, 138, 164, 190, 216, 242, 268, 294}; - int cara; - - int longitud; - longitud = strlen(dicho); - - flags[1] = 1; - - refresca_pantalla(); - copyRect(44, 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - buffer_teclado(); - - color_abc(AMARILLO); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(7); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - actualiza_refresco_antes(); - - copyRect(x_habla[cara], 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); - - actualiza_refresco(); - - if (con_voces == 0) - centra_texto(dicho, 160, 105); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - - flags[1] = 0; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} - -void DrasculaEngine::habla_pen2(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - - int x_habla[5]={122, 148, 174, 200, 226}; - int cara; - - int longitud; - longitud = strlen(dicho); - - flags[1] = 1; - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - buffer_teclado(); - - color_abc(AMARILLO); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(4); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - actualiza_refresco_antes(); - - copyBackground(x_habla[cara], 171, 173, 116, 25, 28, dir_dibujo3, dir_zona_pantalla); - - actualiza_refresco(); - - if (con_voces == 0) - centra_texto(dicho, 195, 107); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - - flags[1] = 0; - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} - -void DrasculaEngine::habla_taber2(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - - int x_habla[6] = {1, 23, 45, 67, 89, 111}; - int cara; - - int longitud; - longitud = strlen(dicho); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - buffer_teclado(); - - color_abc(MARRON); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(5); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - actualiza_refresco_antes(); - - copyBackground(x_habla[cara], 130, 151, 43, 21, 24, dir_dibujo3, dir_zona_pantalla); - pon_hare(); - actualiza_refresco(); - - if (con_voces == 0) - centra_texto(dicho, 132, 45); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_58() { - if (hare_se_ve == 1) - copyRect(67, 139, 140, 147, 12, 16, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_60() { - if (hare_y - 10 < y_dr && flags[5] == 0) - pon_dr(); -} - -void DrasculaEngine::refresca_61() { - copyRect(1, 154, 83, 122, 131, 44, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_58_antes() { - if (flags[0] == 0) - copyBackground(1, 156, 143, 120, 120, 43, dir_dibujo3, dir_zona_pantalla); - if (flags[1] == 2) - copyRect(252, 171, 173, 116, 25, 28, dir_dibujo3, dir_zona_pantalla); - if (flags[1] == 0 && flags[0] == 0) - copyRect(278, 171, 173, 116, 25, 28, dir_dibujo3, dir_zona_pantalla); - if (flags[2] == 0) { - pon_igor(); - pon_dr(); - } - if (flags[3] == 1) - copyRect(1, 29, 204, 0, 18, 125, dir_dibujo3, dir_zona_pantalla); - if (flags[8] == 1) - copyBackground(20, 60, 30, 64, 46, 95, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_59_antes() { - if (flags[4] == 0) - copyRect(1, 146, 65, 106, 83, 40, dir_dibujo3, dir_zona_pantalla); - if (flags[9] == 1) { - copyBackground(65, 103, 65, 103, 49, 38, dir_dibujo1, dir_zona_pantalla); - copyRect(1, 105, 65, 103, 49, 38, dir_dibujo3, dir_zona_pantalla); - } -} - -void DrasculaEngine::refresca_60_antes() { - int velas_y[] = {158, 172, 186}; - int diferencia; - - if (flags[5] == 0) - pon_dr(); - - copyBackground(123, velas_y[frame_velas], 142, 14, 39, 13, dir_dibujo3, dir_zona_pantalla); - - if (flag_tv == 1) - copyBackground(114, 158, 8, 30, 8, 23, dir_dibujo3, dir_zona_pantalla); - - diferencia = vez() - conta_ciego_vez; - parpadeo = _rnd->getRandomNumber(7); - if (parpadeo == 5 && flag_tv == 0) - flag_tv = 1; - else if (parpadeo == 5 && flag_tv == 1) - flag_tv = 0; - if (diferencia > 6) { - frame_velas++; - if (frame_velas == 3) - frame_velas = 0; - conta_ciego_vez = vez(); - } -} - -void DrasculaEngine::pantalla_58(int fl) { - if (objeto_que_lleva == MOVER && fl == 103) - animation_7_6(); - else if (objeto_que_lleva == MIRAR && fl == 104) - hablar(TEXT454, "454.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_59(int fl) { - if ((objeto_que_lleva == HABLAR && fl == 51) || (objeto_que_lleva == MIRAR && fl == 51)) { - flags[9] = 1; - hablar(TEXT259, "259.als"); - habla_bj_cama(TEXTBJ13, "bj13.als"); - hablar(TEXT263, "263.als"); - habla_bj_cama(TEXTBJ14, "bj14.als"); - pausa(40); - hablar(TEXT264, "264.als"); - habla_bj_cama(TEXTBJ15, "BJ15.als"); - hablar(TEXT265, "265.als"); - flags[9] = 0; - if (flags[11] == 0) { - comienza_sound("s12.als"); - delay(40); - fin_sound(); - delay(10); - lleva_al_hare(174, 168); - sentido_hare = 2; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(40); - comienza_sound("s12.als"); - pausa(19); - fin_sound_corte(); - hare_se_ve = 0; - refresca_pantalla(); - copyRect(101, 34, hare_x - 4, hare_y - 1, 37, 70, dir_dibujo3, dir_zona_pantalla); - copyBackground(0, 0, 0, 0, 320, 200, dir_zona_pantalla, dir_dibujo1); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - hare_se_ve = 1; - borra_pantalla(); - lee_dibujos("tlef0.alg"); - descomprime_dibujo(dir_dibujo1, COMPLETA); - lee_dibujos("tlef1.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("tlef2.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("tlef3.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - habla_htel(TEXT240, "240.als"); - - color_abc(VON_BRAUN); - habla_solo(TEXTVB58, "VB58.als"); - habla_htel(TEXT241, "241.als"); - color_abc(VON_BRAUN); - habla_solo(TEXTVB59, "VB59.als"); - habla_htel(TEXT242, "242.als"); - color_abc(VON_BRAUN); - habla_solo(TEXTVB60, "VB60.als"); - habla_htel(TEXT196, "196.als"); - color_abc(VON_BRAUN); - habla_solo(TEXTVB61,"VB61.als"); - habla_htel(TEXT244, "244.als"); - color_abc(VON_BRAUN); - habla_solo(TEXTVB62, "VB62.als"); - borra_pantalla(); - lee_dibujos("aux59.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, COMPLETA); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("59.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - sentido_hare = 3; - hablar(TEXT245, "245.als"); - sin_verbo(); - flags[11] = 1; - } - } else - hay_respuesta = 0; -} - -bool DrasculaEngine::pantalla_60(int fl) { - if (objeto_que_lleva == MOVER && fl == 112) - animation_10_6(); - else if (objeto_que_lleva == MIRAR && fl == 112) - hablar(TEXT440, "440.als"); - else if (objeto_que_lleva == HABLAR && fl == 52) { - hablar(TEXT266, "266.als"); - habla_taber2(TEXTT1, "t1.als"); - conversa("op_12.cal"); - sin_verbo(); - objeto_que_lleva = 0; - } else if (objeto_que_lleva == HABLAR && fl == 115) - hablar(TEXT455, "455.als"); - else if (objeto_que_lleva == HABLAR && fl == 56) - hablar(TEXT455, "455.als"); - else if (objeto_que_lleva == MIRAR && fl == 114) - hablar(TEXT167, "167.als"); - else if (objeto_que_lleva == MIRAR && fl == 113) - hablar(TEXT168, "168.als"); - else if (objeto_que_lleva == COGER && fl == 113) - hablar(TEXT170, "170.als"); - else if (objeto_que_lleva == MOVER && fl == 113) - hablar(TEXT170, "170.als"); - else if (objeto_que_lleva == HABLAR && fl == 113) - hablar(TEXT169, "169.als"); - else if (objeto_que_lleva == 21 && fl == 56) - animation_18_6(); - else if (objeto_que_lleva == 9 && fl == 56 && flags[6] == 1) { - animation_9_6(); - return true; - } else if (objeto_que_lleva == 9 && fl == 56 && flags[6] == 0) { - anima("cnf.bin", 14); - hablar(TEXT455, "455.als"); - } else - hay_respuesta = 0; - - return false; -} - -void DrasculaEngine::pantalla_61(int fl) { - if (objeto_que_lleva == MIRAR && fl == 116) - hablar(TEXT172, "172.als"); - else if (objeto_que_lleva == MIRAR && fl == 117) - hablar(TEXT173, "173.als"); - else if (objeto_que_lleva == MOVER && fl == 117) - hablar(TEXT174, "174.als"); - else if (objeto_que_lleva == ABRIR && fl == 117) - hablar(TEXT174, "174.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::habla_bj_cama(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - - int x_habla[5] = {51, 101, 151, 201, 251}; - int cara; - - int longitud; - longitud = strlen(dicho); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - buffer_teclado(); - - color_abc(BLANCO); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(4); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - actualiza_refresco_antes(); - - copyBackground(65, 103, 65, 103, 49, 38, dir_dibujo1, dir_zona_pantalla); - copyRect(x_habla[cara], 105, 65, 103, 49, 38, dir_dibujo3, dir_zona_pantalla); - pon_hare(); - actualiza_refresco(); - - if (con_voces == 0) - centra_texto(dicho, 104, 102); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} - -void DrasculaEngine::habla_htel(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - char *num_cara; - - int x_habla[3] = {1, 94, 187}; - int cara, pantalla; - - int longitud; - longitud = strlen(dicho); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - buffer_teclado(); - - color_abc(AMARILLO); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - cara = _rnd->getRandomNumber(2); - pantalla = _rnd->getRandomNumber(2); - - if (cara == 0 && pantalla == 0) - num_cara = (char *)dir_dibujo3; - else if (pantalla == 1) - num_cara = (char *)dir_hare_frente; - else - num_cara = (char *)dir_hare_fondo; - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - copyBackground(x_habla[cara], 1, 45, 24, 92, 108, (byte *)num_cara, dir_zona_pantalla); - - if (con_voces == 0) - centra_texto(dicho, 90, 50); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_pendulo() { - int pendulo_x[] = {40, 96, 152, 208, 264, 40, 96, 152, 208, 208, 152, 264, 40, 96, 152, 208, 264}; - int diferencia; - - if (frame_pen <= 4) - dir_pendulo = dir_dibujo3; - else if (frame_pen <= 11) - dir_pendulo = dir_hare_dch; - else - dir_pendulo = dir_hare_frente; - - copyBackground(pendulo_x[frame_pen], 19, 152, 0, 55, 125, dir_pendulo, dir_zona_pantalla); - - if (flags[1] == 2) - copyRect(18, 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); - - if (flags[1] == 0) - copyRect(44, 145, 145, 105, 25, 29, dir_dibujo3, dir_zona_pantalla); - - diferencia = vez() - conta_ciego_vez; - if (diferencia > 8) { - frame_pen++; - if (frame_pen == 17) - frame_pen = 0; - conta_ciego_vez = vez(); - } -} - -void DrasculaEngine::pantalla_pendulo(int fl) { - if (objeto_que_lleva == MIRAR && fl == 100) - hablar(TEXT452, "452.als"); - else if (objeto_que_lleva == MIRAR && fl == 101) - hablar (TEXT123, "123.als"); - else if (objeto_que_lleva == COGER && fl == 101) - agarra_objeto(20); - else if (objeto_que_lleva == 20 && fl == 100) - animation_6_6(); - else if (objeto_que_lleva == COGER || objeto_que_lleva == ABRIR) - hablar(TEXT453, "453.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::refresca_21_antes() { - if (flags[0] == 1) - copyBackground(2, 171, 84, 126, 17, 26, dir_dibujo3, dir_zona_pantalla); - - if (flags[10] == 1) - copyBackground(20, 163, 257, 149, 14, 34, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_22_antes() { - if (flags[24] == 1) - copyBackground(2, 187, 107, 106, 62, 12, dir_dibujo3, dir_zona_pantalla); - - if (flags[27] == 0) - copyBackground(32, 181, 203, 88, 13, 5, dir_dibujo3, dir_zona_pantalla); - - if (flags[26] == 0) - copyBackground(2, 133, 137, 83, 29, 53, dir_dibujo3, dir_zona_pantalla); - else - copyBackground(65, 174, 109, 145, 55, 25, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_23_antes() { - if (flags[11] == 1 && flags[0] == 0) - copyBackground(87, 171, 237, 110, 20, 28, dir_dibujo3, dir_zona_pantalla); - - if (flags[0] == 1) - copyBackground(29, 126, 239, 94, 57, 73, dir_dibujo3, dir_zona_pantalla); - - if (flags[1] == 1) - copyRect(1, 135, 7, 94, 27, 64, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_24_antes() { - if (flags[1] == 1) - copyBackground(1, 163, 225, 124, 12, 36, dir_dibujo3, dir_zona_pantalla); - - if (flags[2] == 1) - copyBackground(14, 153, 30, 107, 23, 46, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_26_antes() { - int diferencia; - - if (flags[2] == 1) - copyBackground(1, 130, 87, 44, 50, 69, dir_dibujo3, dir_zona_pantalla); - - if (flags[12] == 1) - copyBackground(52, 177, 272, 103, 27, 22, dir_dibujo3, dir_zona_pantalla); - - if (flags[18] == 0) - copyBackground(80, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); - - if (parpadeo == 5 && flags[18] == 0) - copyBackground(52, 172, 226, 106, 3, 4, dir_dibujo3, dir_zona_pantalla); - - diferencia = vez() - conta_ciego_vez; - if (diferencia >= 10) { - parpadeo = _rnd->getRandomNumber(10); - conta_ciego_vez = vez(); - } - - if (flags[20] == 1) - copyBackground(182, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_27_antes() { - if (flags[5] == 1) - copyRect(1, 175, 59, 109, 17, 24, dir_dibujo3, dir_zona_pantalla); - - if (flags[6] == 1) - copyRect(19, 177, 161, 103, 18, 22, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_29_antes() { - if (flags[4] == 1) - copyBackground(12, 113, 247, 49, 41, 84, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_30_antes() { - if (flags[4] == 1) - copyBackground(1, 148, 148, 66, 35, 51, dir_dibujo3, dir_zona_pantalla); - - if (flags[16] == 1) - copyBackground(37, 173, 109, 84, 20, 26, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_31_antes() { - if (flags[13] == 1) - copyBackground(1, 163, 116, 41, 61, 36, dir_dibujo3, dir_zona_pantalla); - - if (flags[5] == 1) - copyBackground(1, 78, 245, 63, 30, 84, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_34_antes() { - if (flags[7] == 1) - copyBackground(99, 127, 73, 41, 79, 72, dir_dibujo3, dir_zona_pantalla); - - if (flags[8] == 1) - copyBackground(36, 129, 153, 41, 62, 65, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_35_antes() { - if (flags[14] == 1) - copyBackground(1, 86, 246, 65, 68, 87, dir_dibujo3, dir_zona_pantalla); - - if (flags[17] == 0 && flags[15] == 1) - copyBackground(111, 150, 118, 52, 40, 23, dir_dibujo3, dir_zona_pantalla); - - if (flags[17] == 1) - copyBackground(70, 150, 118, 52, 40, 23, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_26() { - if (flags[29] == 1) - copyRect(93, 1, hare_x, hare_y, 45, 78, dir_hare_fondo, dir_zona_pantalla); - - copyRect(233, 107, 17, 102, 66, 92, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_27() { - copyRect(38, 177, 103, 171, 21, 22, dir_dibujo3, dir_zona_pantalla); - copyRect(60, 162, 228, 156, 18, 37, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_29() { - copyRect(1, 180, 150, 126, 10, 17, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_31() { - copyRect(63, 190, 223, 157, 17, 9, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_34() { - copyRect(5, 171, 234, 126, 29, 23, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::refresca_35() { - copyRect(1, 174, 54, 152, 195, 25, dir_dibujo3, dir_zona_pantalla); -} - -void DrasculaEngine::pantalla_1(int fl) { - if (objeto_que_lleva == MIRAR && fl == 118) { - hablar(TEXT1, "1.als"); - pausa(10); - hablar(TEXT2, "2.als"); - } else if (objeto_que_lleva == COGER && fl == 118) - hablar(TEXT5, "5.als"); - else if (objeto_que_lleva == ABRIR && fl == 118) - hablar(TEXT3, "3.als"); - else if (objeto_que_lleva == CERRAR && fl == 118) - hablar(TEXT4, "4.als"); - else if (objeto_que_lleva == HABLAR && fl == 118) - hablar(TEXT6, "6.als"); - else if (objeto_que_lleva == MIRAR && fl == 119) - hablar(TEXT8, "8.als"); - else if (objeto_que_lleva == MOVER && fl == 119) - hablar(TEXT13, "13.als"); - else if (objeto_que_lleva == CERRAR && fl == 119) - hablar(TEXT10, "10.als"); - else if (objeto_que_lleva == HABLAR && fl == 119) - hablar(TEXT12, "12.als"); - else if (objeto_que_lleva == MIRAR && fl == 120 && flags[8] == 0) - hablar(TEXT14, "14.als"); - else if (objeto_que_lleva == MOVER && fl == 120) - hablar(TEXT13, "13.als"); - else if (objeto_que_lleva == ABRIR && fl == 120) - hablar(TEXT18, "18.als"); - else if (objeto_que_lleva == HABLAR && fl == 120) - hablar(TEXT15, "15.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_3(int fl) { - if (objeto_que_lleva == MIRAR && fl == 129) - hablar(TEXT21, "21.als"); - else if (objeto_que_lleva == COGER && fl == 129) - hablar(TEXT5, "5.als"); - else if (objeto_que_lleva == MOVER && fl == 129) - hablar(TEXT24, "24.als"); - else if (objeto_que_lleva == ABRIR && fl == 129) - hablar(TEXT22, "22.als"); - else if (objeto_que_lleva == CERRAR && fl == 129) - hablar(TEXT10, "10.als"); - else if (objeto_que_lleva == HABLAR && fl == 129) { - hablar(TEXT23, "23.als"); - pausa(6); - hablar_sinc(TEXT50, "50.als", "11111111111144432554433"); - } else if (objeto_que_lleva == MIRAR && fl == 131) - hablar(TEXT27, "27.als"); - else if (objeto_que_lleva == COGER && fl == 131) - hablar(TEXT5, "5.als"); - else if (objeto_que_lleva == MOVER && fl == 131) - hablar(TEXT24, "24.als"); - else if (objeto_que_lleva == ABRIR && fl == 131) - hablar(TEXT22, "22.als"); - else if (objeto_que_lleva == CERRAR && fl == 131) - hablar(TEXT10, "10.als"); - else if (objeto_que_lleva == HABLAR && fl == 131) - hablar(TEXT23, "23.als"); - else if (objeto_que_lleva == MIRAR && fl == 132) - hablar(TEXT28, "28.als"); - else if (objeto_que_lleva == COGER && fl == 132) - hablar(TEXT5, "5.als"); - else if (objeto_que_lleva == MOVER && fl == 132) - hablar(TEXT24, "24.als"); - else if (objeto_que_lleva == ABRIR && fl == 132) - hablar(TEXT22, "22.als"); - else if (objeto_que_lleva == CERRAR && fl == 132) - hablar(TEXT10, "10.als"); - else if (objeto_que_lleva == HABLAR && fl == 132) - hablar(TEXT23, "23.als"); - else if (objeto_que_lleva == MIRAR && fl == 133) - hablar(TEXT321, "321.als"); - else if (objeto_que_lleva == COGER && fl == 133) - hablar(TEXT31, "31.als"); - else if (objeto_que_lleva == MOVER && fl == 133) - hablar(TEXT34, "34.als"); - else if (objeto_que_lleva == ABRIR && fl == 133) - hablar(TEXT30, "30.als"); - else if (objeto_que_lleva == CERRAR && fl == 133) - hablar(TEXT10, "10.als"); - else if (objeto_que_lleva == HABLAR && fl == 133) { - hablar_sinc(TEXT322, "322.als", "13333334125433333333"); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(25); - hablar(TEXT33, "33.als"); - } else if (objeto_que_lleva == MIRAR && fl == 165) { - hablar(TEXT149, "149.als"); - hablar(TEXT150, "150.als"); - } else if (objeto_que_lleva == COGER && fl == 165) { - copyBackground(0, 0, 0,0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - copyRect(44, 1, hare_x, hare_y, 41, 70, dir_dibujo2, dir_zona_pantalla); - actualiza_refresco(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(4); - agarra_objeto(10); - flags[3] = 1; - visible[8] = 0; - } else if (objeto_que_lleva == MIRAR && fl == 166) - hablar(TEXT55, "55.als"); - else if (objeto_que_lleva == COGER && fl == 166) - hablar(TEXT7, "7.als"); - else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 0) { - animation_7_2(); - agarra_objeto(8); - } else if (objeto_que_lleva == 14 && fl == 166 && flags[37] == 1) - hablar(TEXT323, "323.als"); - else if (objeto_que_lleva == MIRAR && fl == 211) - hablar(TEXT184, "184.als"); - else if (objeto_que_lleva == HABLAR && fl == 211) { - hablar(TEXT185, "185.als"); - hablar(TEXT186, "186.als"); - } else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_4(int fl) { - if (objeto_que_lleva == MOVER && fl == 189 && flags[34] == 0) { - hablar(TEXT327, "327.als"); - agarra_objeto(13); - flags[34] = 1; - if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) - flags[38] = 1; - } else if (objeto_que_lleva == MIRAR && fl == 189) - hablar(TEXT182, "182.als"); - else if (objeto_que_lleva == MIRAR && fl == 207) - hablar(TEXT175, "175.als"); - else if (objeto_que_lleva == HABLAR && fl == 207) - hablar(TEXT176, "176.als"); - else if (objeto_que_lleva == MIRAR && fl == 208) - hablar(TEXT177, "177.als"); - else if (objeto_que_lleva == MIRAR && fl == 209) - hablar(TEXT179, "179.als"); - else if (objeto_que_lleva == MIRAR && fl == 210) - hablar(TEXT180, "180.als"); - else if (objeto_que_lleva == ABRIR && fl == 210) - hablar(TEXT181, "181.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_5(int fl) { - if (objeto_que_lleva == MIRAR && fl == 136 && flags[8]==0) hablar(TEXT14, "14.als"); - else if (objeto_que_lleva == MOVER && fl == 136) - hablar(TEXT13, "13.als"); - else if (objeto_que_lleva == ABRIR && fl == 136) - hablar(TEXT18, "18.als"); - else if (objeto_que_lleva == HABLAR && fl == 136) - hablar(TEXT15, "15.als"); - else if (objeto_que_lleva == 10 && fl == 136) { - animation_5_2(); - resta_objeto(10); - } else if (objeto_que_lleva == MIRAR && fl == 212) - hablar(TEXT187, "187.als"); - else if (objeto_que_lleva == HABLAR && fl == 212) - hablar(TEXT188, "188.als"); - else if (objeto_que_lleva == MIRAR && fl == 213) - hablar(TEXT189, "189.als"); - else if (objeto_que_lleva == ABRIR && fl == 213) - hablar(TEXT190, "190.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_6(int fl){ - if (objeto_que_lleva == MIRAR && fl==144) { - hablar(TEXT41, "41.als"); - hablar(TEXT42, "42.als"); - } else if (objeto_que_lleva == COGER && fl == 144) - hablar(TEXT43, "43.als"); - else if (objeto_que_lleva == MIRAR && fl == 138) - hablar(TEXT35, "35.als"); - else if (objeto_que_lleva == ABRIR && fl == 138) - abre_puerta(0, 1); - else if (objeto_que_lleva == CERRAR && fl == 138) - cierra_puerta(0, 1); - else if (objeto_que_lleva == HABLAR && fl == 138) - hablar(TEXT6, "6.als"); - else if (objeto_que_lleva == MIRAR && fl == 143) - hablar(TEXT37, "37.als"); - else if (objeto_que_lleva == COGER && fl == 143) - hablar(TEXT7, "7.als"); - else if (objeto_que_lleva == MOVER && fl == 143) - hablar(TEXT7, "7.als"); - else if (objeto_que_lleva == ABRIR && fl == 143 && flags[2] == 0) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - copyRect(228, 102, hare_x + 5, hare_y - 1, 47, 73, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(10); - comienza_sound("s3.als"); - flags[2] = 1; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - fin_sound(); - } else if (objeto_que_lleva == CERRAR && fl == 143 && flags[2] == 1) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - flags[2] = 0; - actualiza_refresco_antes(); - copyRect(228, 102, hare_x + 5, hare_y - 1, 47, 73, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(5); - comienza_sound("s4.als"); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - fin_sound(); - } else if (objeto_que_lleva == HABLAR && fl == 143) - hablar(TEXT38, "38.als"); - else if (objeto_que_lleva == MIRAR && fl == 139) - hablar(TEXT36, "36.als"); - else if (objeto_que_lleva == ABRIR && fl == 139 && flags[1] == 0) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - copyRect(267, 1, hare_x - 14, hare_y - 2, 52, 73, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(19); - comienza_sound("s3.als"); - flags[1] = 1; - visible[4] = 1; - visible[2] = 0; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - fin_sound(); - } else if (objeto_que_lleva == MIRAR && fl == 140) - hablar(TEXT147, "147.als"); - else if (objeto_que_lleva == COGER && fl == 140) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - copyRect(267, 1, hare_x - 14, hare_y - 2, 52, 73, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(19); - agarra_objeto(9); - visible[4] = 0; - flags[10] = 1; - } else if (objeto_que_lleva == ABRIR && fl == 140) - hay_respuesta = 1; - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_7(int fl){ - if (objeto_que_lleva == MIRAR && fl == 169) - hablar(TEXT44, "44.als"); - else if (objeto_que_lleva == MIRAR && fl == 164) - hablar(TEXT35, "35.als" ); - else if (objeto_que_lleva == COGER && fl == 190) { - agarra_objeto(17); - flags[35] = 1; - visible[3] = 0; - if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) - flags[38] = 1; - } else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_8(int fl) { - if (objeto_que_lleva == MIRAR && fl == 147 && flags[7] == 0) { - hablar(TEXT58, "58.als"); - agarra_objeto(15); - flags[7] = 1; - if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) - flags[38] = 1; - } else if (objeto_que_lleva == MIRAR && fl == 147) - hablar(TEXT59, "59.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_9(int fl){ - if (objeto_que_lleva == MIRAR && fl == 150) - hablar(TEXT35, "35.als"); - else if (objeto_que_lleva == HABLAR && fl == 150) - hablar(TEXT6, "6.als"); - else if (objeto_que_lleva == MIRAR && fl == 51) - hablar(TEXT60, "60.als"); - else if (objeto_que_lleva == HABLAR && fl == 51 && flags[4] == 0) - animation_4_2(); - else if (objeto_que_lleva == HABLAR && fl == 51 && flags[4] == 1) - animation_33_2(); - else if (objeto_que_lleva == 7 && fl == 51) { - animation_6_2(); - resta_objeto(7); - agarra_objeto(14);} - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_12(int fl){ - if (objeto_que_lleva == MIRAR && fl == 154) - hablar(TEXT329, "329.als"); - else if (objeto_que_lleva == HABLAR && fl == 154) - hablar(TEXT330, "330.als"); - else if (objeto_que_lleva == MOVER && fl == 155) - hablar(TEXT48, "48.als"); - else if (objeto_que_lleva == HABLAR && fl == 155) - hablar(TEXT331, "331.als"); - else if (objeto_que_lleva == MIRAR && fl == 156) - hablar(TEXT35, "35.als"); - else if (objeto_que_lleva == MOVER && fl == 156) - hablar(TEXT48, "48.als"); - else if (objeto_que_lleva == HABLAR && fl == 156) - hablar(TEXT50, "50.als"); - else if (objeto_que_lleva == ABRIR && fl == 156) - abre_puerta(16, 4); - else if (objeto_que_lleva == CERRAR && fl == 156) - cierra_puerta(16, 4); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_14(int fl) { - if (objeto_que_lleva == HABLAR && fl == 54 && flags[39] == 0) - animation_12_2(); - else if (objeto_que_lleva == HABLAR && fl == 54 && flags[39] == 1) - hablar(TEXT109, "109.als"); - else if (objeto_que_lleva == 12 && fl == 54) - animation_26_2(); - else if (objeto_que_lleva == HABLAR && fl == 52 && flags[5] == 0) - animation_11_2(); - else if (objeto_que_lleva == HABLAR && fl == 52 && flags[5] == 1) - animation_36_2(); - else if (objeto_que_lleva == HABLAR && fl == 53) - animation_13_2(); - else if (objeto_que_lleva == MIRAR && fl == 200) - hablar(TEXT165, "165.als"); - else if (objeto_que_lleva == MIRAR && fl == 201) - hablar(TEXT166, "166.als"); - else if (objeto_que_lleva == MIRAR && fl == 202) - hablar(TEXT167, "167.als"); - else if (objeto_que_lleva == MIRAR && fl == 203) - hablar(TEXT168, "168.als"); - else if (objeto_que_lleva == COGER && fl == 203) - hablar(TEXT170, "170.als"); - else if (objeto_que_lleva == MOVER && fl == 203) - hablar(TEXT170, "170.als"); - else if (objeto_que_lleva == HABLAR && fl == 203) - hablar(TEXT169, "169.als"); - else if (objeto_que_lleva == MIRAR && fl == 204) - hablar(TEXT171, "171.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_15(int fl) { - if (objeto_que_lleva == HABLAR && fl == 188) - hablar(TEXT333, "333.als"); - else if (objeto_que_lleva == MIRAR && fl == 188) - hablar(TEXT334, "334.als"); - else if (objeto_que_lleva == 19 && fl == 188 && flags[27] == 0) - hablar(TEXT335, "335.als"); - else if (objeto_que_lleva == 19 && fl == 188 && flags[27] == 1) { - hablar(TEXT336, "336.als"); - sentido_hare = 3; - hablar(TEXT337, "337.als"); - hablar_sinc(TEXT46, "46.als", "4442444244244"); - sentido_hare = 1; - } else if (objeto_que_lleva == 18 && fl == 188 && flags[26] == 0) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - copyRect(133, 135, hare_x + 6, hare_y, 39, 63, dir_dibujo3, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - comienza_sound("s8.als"); - fin_sound(); - hablar(TEXT338, "338.als"); - flags[27] = 0; - agarra_objeto(19); - resta_objeto(18); - } else if (objeto_que_lleva == MOVER && fl == 188 && flags[27] == 0) { - animation_34_2(); - hablar(TEXT339, "339.als"); - agarra_objeto(16); - flags[26] = 1; - flags[27] = 1; - if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) - flags[38] = 1; - } else if (objeto_que_lleva == MIRAR && fl == 205) - hablar(TEXT172, "172.als"); - else if (objeto_que_lleva == MIRAR && fl == 206) - hablar(TEXT173, "173.als"); - else if (objeto_que_lleva == MOVER && fl == 206) - hablar(TEXT174, "174.als"); - else if (objeto_que_lleva == ABRIR && fl == 206) - hablar(TEXT174, "174.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_16(int fl) { - if (objeto_que_lleva == HABLAR && fl == 163) - hablar(TEXT6, "6.als"); - else if (objeto_que_lleva == ABRIR && fl == 163) - abre_puerta(17, 0); - else if (objeto_que_lleva == CERRAR && fl == 163) - cierra_puerta(17, 0); - else if (objeto_que_lleva == MIRAR && fl == 183) - hablar(TEXT340, "340.als"); - else if (objeto_que_lleva == HABLAR && fl == 183) { - hablar(TEXT341, "341.als"); - pausa(10); - hablar_sinc(TEXT50, "50.als", "11111111111144432554433"); - pausa(3); - habla_baul("bla, bla, bla.", "d83.als"); - } else if (objeto_que_lleva == ABRIR && fl == 183) { - abre_puerta(19, NO_PUERTA); - if (flags[20] == 0) { - flags[20] = 1; - sentido_hare = 3; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - hablar(TEXT342, "342.als"); - agarra_objeto(22); - } - } else if (objeto_que_lleva == CERRAR && fl == 183) - cierra_puerta(19, NO_PUERTA); - else if (objeto_que_lleva == MIRAR && fl == 185) - hablar(TEXT37, "37.als"); - else if (objeto_que_lleva == COGER && fl == 185) - hablar(TEXT7, "7.als"); - else if (objeto_que_lleva == MOVER && fl == 185) - hablar(TEXT7, "7.als"); - else if (objeto_que_lleva == HABLAR && fl == 185) - hablar(TEXT38, "38.als"); - else if (objeto_que_lleva == MIRAR && fl == 187) { - hablar(TEXT343, "343.als"); - sentido_hare = 3; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - hablar(TEXT344, "344.als"); - } else if (objeto_que_lleva == HABLAR && fl == 187) - hablar(TEXT345, "345.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_17(int fl) { - if (objeto_que_lleva == MIRAR && fl == 177) - hablar(TEXT35, "35.als"); - else if (objeto_que_lleva == HABLAR && fl == 177 && flags[18] == 0) - hablar(TEXT6, "6.als"); - else if (objeto_que_lleva == HABLAR && fl == 177 && flags[18] == 1) - animation_18_2(); - else if (objeto_que_lleva == ABRIR && fl == 177 && flags[18] == 1) - hablar(TEXT346, "346.als"); - else if (objeto_que_lleva == ABRIR && fl == 177 && flags[14] == 0 && flags[18] == 0) - animation_22_2(); - else if (objeto_que_lleva == ABRIR && fl == 177 && flags[14] == 1) - abre_puerta(15, 1); - else if (objeto_que_lleva == CERRAR && fl == 177 && flags[14] == 1) - cierra_puerta(15, 1); - else if (objeto_que_lleva == 11 && fl == 50 && flags[22] == 0) { - hablar(TEXT347, "347.als"); - flags[29] = 1; - agarra_objeto(23); - resta_objeto(11); - } else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_18(int fl) { - if (objeto_que_lleva == HABLAR && fl == 55 && flags[36] == 0) - animation_24_2(); - else if (objeto_que_lleva == HABLAR && fl == 55 && flags[36] == 1) - hablar(TEXT109, "109.als"); - else if (objeto_que_lleva == MIRAR && fl == 181) - hablar(TEXT348, "348.als"); - else if (objeto_que_lleva == COGER && fl == 182) { - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - copyRect(44, 1, hare_x, hare_y, 41, 70, dir_dibujo2, dir_zona_pantalla); - actualiza_refresco(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(4); - agarra_objeto(12); - visible[2] = 0; - flags[28] = 1; - } else if (objeto_que_lleva == MIRAR && fl == 182) - hablar(TEXT154, "154.als"); - else if (objeto_que_lleva == 8 && fl == 55 && flags[38] == 0 && flags[33] == 1) - hablar(TEXT349, "349.als"); - else if (objeto_que_lleva == 13 && fl == 55 && flags[38] == 0 && flags[33] == 1) - hablar(TEXT349, "349.als"); - else if (objeto_que_lleva == 15 && fl == 55 && flags[38] == 0 && flags[33] == 1) - hablar(TEXT349, "349.als"); - else if (objeto_que_lleva == 16 && fl == 55 && flags[38] == 0 && flags[33] == 1) - hablar(TEXT349, "349.als"); - else if (objeto_que_lleva == 17 && fl == 55 && flags[38] == 0 && flags[33] == 1) - hablar(TEXT349, "349.als"); - else if (objeto_que_lleva == 8 && fl == 55 && flags[38] == 1 && flags[33] == 1) - animation_24_2(); - else if (objeto_que_lleva == 13 && fl == 55 && flags[38] == 1 && flags[33] == 1) - animation_24_2(); - else if (objeto_que_lleva == 15 && fl == 55 && flags[38] == 1 && flags[33] == 1) - animation_24_2(); - else if (objeto_que_lleva == 16 && fl == 55 && flags[38] == 1 && flags[33] == 1) - animation_24_2(); - else if (objeto_que_lleva == 17 && fl == 55 && flags[38] == 1 && flags[33] == 1) - animation_24_2(); - else if (objeto_que_lleva == 11 && fl == 50 && flags[22] == 0) { - sentido_hare = 3; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - actualiza_refresco_antes(); - copyRect(1, 1, hare_x - 1, hare_y + 3, 42, 67, dir_dibujo2, dir_zona_pantalla); - actualiza_refresco(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(6); - hablar(TEXT347, "347.als"); - flags[29] = 1; - agarra_objeto(23); - resta_objeto(11); - } else - hay_respuesta = 0; -} - -void DrasculaEngine::pantalla_19(int fl) { - if (objeto_que_lleva == MIRAR && fl == 214) - hablar(TEXT191, "191.als"); - else - hay_respuesta = 0; -} - -void DrasculaEngine::hablar_sinc(const char *dicho, const char *filename, const char *sincronia) { - int suma_1_pixel = 1; - int y_mask_habla = 170; - int x_habla_dch[6] = {1, 25, 49, 73, 97, 121}; - int x_habla_izq[6] = {145, 169, 193, 217, 241, 265}; - int p, cara = 0; - - int longitud; - longitud = strlen(dicho); - - buffer_teclado(); - - color_abc(AMARILLO); - - if (num_ejec == 1) { - if (factor_red[hare_y + alto_hare] == 100) - suma_1_pixel = 0; - } - - p = 0; - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - if (sincronia[p] == '0') - cara = 0; - if (sincronia[p] == '1') - cara = 1; - if (sincronia[p] == '2') - cara = 2; - if (sincronia[p] == '3') - cara = 3; - if (sincronia[p] == '4') - cara = 4; - if (sincronia[p] == '5') - cara = 5; - if (sincronia[p] == '6') - cara = 6; - if (sincronia[p] == '7') - cara = 7; - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - actualiza_refresco_antes(); - if (num_ejec == 2) - copyBackground(hare_x, hare_y, ANCHOBJ + 1, 0, ancho_hare, alto_habla - 1, dir_zona_pantalla, dir_dibujo3); - else - copyBackground(hare_x, hare_y, ANCHOBJ + 1, 0, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]), - (int)(((float)(alto_habla - 1) / 100) * factor_red[hare_y + alto_hare]), dir_zona_pantalla, dir_dibujo3); - pon_hare(); - if (num_ejec == 2) { - if (alto_hare != 56) - copyBackground(ANCHOBJ + 1, 0, hare_x, hare_y, ancho_hare, alto_habla - 1, dir_dibujo3, dir_zona_pantalla); - } else - copyBackground(ANCHOBJ + 1, 0, hare_x, hare_y, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]), - (int)(((float)(alto_habla - 1) / 100) * factor_red[hare_y + alto_hare]), dir_dibujo3, dir_zona_pantalla); - - if (sentido_hare == 0) { - if (num_ejec == 2) - copyRect(x_habla_izq[cara], y_mask_habla, hare_x + 8, hare_y - 1, ancho_habla, alto_habla, dir_hare_dch, dir_zona_pantalla); - else - reduce_hare_chico(x_habla_izq[cara], y_mask_habla, (int)(hare_x + (8.0f / 100) * factor_red[hare_y + alto_hare]), - hare_y, ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_dch, dir_zona_pantalla); - actualiza_refresco(); - } else if (sentido_hare == 1) { - if (num_ejec == 2) - copyRect(x_habla_dch[cara], y_mask_habla, hare_x + 12, hare_y, ancho_habla, alto_habla, dir_hare_dch, dir_zona_pantalla); - else - reduce_hare_chico(x_habla_dch[cara], y_mask_habla, (int)(hare_x + (12.0f / 100) * factor_red[hare_y + alto_hare]), - hare_y, ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_dch, dir_zona_pantalla); - actualiza_refresco(); - } else if (sentido_hare == 2) { - if (num_ejec == 2) - copyRect(x_habla_izq[cara], y_mask_habla, hare_x + 12, hare_y, ancho_habla, alto_habla, dir_hare_frente, dir_zona_pantalla); - else - reduce_hare_chico(x_habla_izq[cara], y_mask_habla, - (int)(suma_1_pixel + hare_x + (12.0f / 100) * factor_red[hare_y + alto_hare]), hare_y, - ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_frente, dir_zona_pantalla); - actualiza_refresco(); - } else if (sentido_hare == 3) { - if (num_ejec == 2) - copyRect(x_habla_dch[cara], y_mask_habla, hare_x + 8, hare_y, ancho_habla, alto_habla, dir_hare_frente, dir_zona_pantalla); - else - reduce_hare_chico(x_habla_dch[cara], y_mask_habla, - (int)(suma_1_pixel + hare_x + (8.0f / 100) * factor_red[hare_y + alto_hare]), hare_y, - ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_frente, dir_zona_pantalla); - actualiza_refresco(); - } - - if (con_voces == 0) - centra_texto(dicho, hare_x, hare_y); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - p++; - pausa(3); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - - if (num_ejec == 1 && music_status() == 0 && flags[11] == 0) - playmusic(musica_room); - if (num_ejec == 2 && music_status() == 0 && flags[11] == 0 && musica_room != 0) - playmusic(musica_room); -} - -void DrasculaEngine::habla_baul(const char *dicho, const char *filename) { - int tiempou; - long tiempol; - int cara = 0, cara_antes; - int longitud; - - longitud = strlen(dicho); - - tiempol = _system->getMillis(); - tiempou = (unsigned int)tiempol / 2; - _rnd->setSeed(tiempou); - - buffer_teclado(); - - cara_antes = flags[19]; - - color_abc(MARRON); - - if (hay_sb == 1) { - sku = new Common::File; - sku->open(filename); - if (!sku->isOpen()) { - error("no puedo abrir archivo de voz"); - } - ctvd_init(2); - ctvd_speaker(1); - ctvd_output(sku); - } - -bucless: - - if (cara == 1) - cara = 0; - else - cara = 1; - - flags[19] = cara; - refresca_pantalla(); - - if (con_voces == 0) - centra_texto(dicho, 263, 69); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(4); - - int key = getscan(); - if (key != 0) - ctvd_stop(); - buffer_teclado(); - if (hay_sb == 1) { - if (LookForFree() != 0) - goto bucless; - delete sku; - sku = NULL; - ctvd_terminate(); - } else { - longitud = longitud - 2; - if (longitud > 0) - goto bucless; - } - - flags[19] = cara_antes; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); -} - -void DrasculaEngine::cierra_puerta(int nflag, int n_puerta) { - if (flags[nflag] == 1) { - comienza_sound("s4.als"); - flags[nflag] = 0; - if (n_puerta != NO_PUERTA) - puertas_cerradas(n_puerta); - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - fin_sound(); - sin_verbo(); - } -} - -void DrasculaEngine::animation_12_2() { - lee_dibujos("an12.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - hablar(TEXT356, "356.als"); - - actualiza_refresco_antes(); - - copyBackground(1, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); - updateScreen(228, 112, 228, 112, 47, 60, dir_zona_pantalla); - - pausa(3); - - actualiza_refresco_antes(); - - copyBackground(49, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); - pon_hare(); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - stopmusic(); - flags[11] = 1; - - habla_pianista(TEXTP5, "P5.als"); - conversa("op_1.cal"); - - flags[11] = 0; - lee_dibujos("974.alg"); - descomprime_dibujo(dir_hare_dch, 1); -} - -void DrasculaEngine::animation_26_2() { - int n, x = 0; - - lee_dibujos("an12.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - hablar(TEXT392, "392.als"); - - actualiza_refresco_antes(); - - copyBackground(1, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); - updateScreen(228, 112, 228, 112, 47, 60, dir_zona_pantalla); - - pausa(3); - - actualiza_refresco_antes(); - - copyBackground(49, 139, 228, 112, 47, 60, dir_hare_dch, dir_zona_pantalla); - pon_hare(); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - stopmusic(); - flags[11] = 1; - - habla_pianista(TEXTP5, "P5.als"); - hablar(TEXT393, "393.als"); - habla_pianista(TEXTP17, "P17.als"); - habla_pianista(TEXTP18, "P18.als"); - habla_pianista(TEXTP19, "P19.als"); - - lee_dibujos("an26.alg"); - descomprime_dibujo(dir_hare_dch, 1); - for (n = 0; n < 6; n++){ - x++; - copyBackground(x, 1, 225, 113, 50, 59, dir_hare_dch, dir_zona_pantalla); - updateScreen(225,113, 225,113, 50,59, dir_zona_pantalla); - x = x + 50; - pausa(3); - } - - x = 0; - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 61, 225, 113, 50, 59, dir_hare_dch, dir_zona_pantalla); - updateScreen(225, 113, 225, 113, 50, 59, dir_zona_pantalla); - x = x + 50; - if (n == 2) - comienza_sound("s9.als"); - pausa(3); - } - - fin_sound_corte(); - x = 0; - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 121, 225, 113, 50, 59, dir_hare_dch, dir_zona_pantalla); - updateScreen(225, 113, 225, 113, 50, 59, dir_zona_pantalla); - x = x + 50; - pausa(3); - } - - agarra_objeto(11); - resta_objeto(12); - - flags[11] = 0; - flags[39] = 1; - lee_dibujos("974.alg"); - descomprime_dibujo(dir_hare_dch, 1); - musica_room = 16; -} - -void DrasculaEngine::animation_11_2() { - lee_dibujos("an11y13.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - hablar(TEXT352, "352.als"); - habla_tabernero(TEXTT1, "T1.als"); - hablar(TEXT353, "353.als"); - habla_tabernero(TEXTT17, "T17.als"); - hablar(TEXT354, "354.als"); - habla_tabernero(TEXTT18, "T18.als"); - hablar(TEXT355, "355.als"); - pausa(40); - habla_tabernero("No, nada", "d82.als"); - - lee_dibujos("974.alg"); - descomprime_dibujo(dir_hare_dch, 1); -} - -void DrasculaEngine::animation_13_2() { - lee_dibujos("an11y13.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - if (flags[41] == 0) { - hablar(TEXT103, "103.als"); - habla_borracho(TEXTB4, "B4.als"); - flags[12] = 1; - hablar(TEXT367, "367.als"); - habla_borracho(TEXTB5, "B5.als"); - flags[12] = 1; - hablar(TEXT368, "368.als"); - habla_borracho(TEXTB6, "B6.als"); - habla_borracho(TEXTB7, "B7.als"); - flags[41] = 1; - } - conversa("op_2.cal"); - - lee_dibujos("964.alg"); - descomprime_dibujo(dir_hare_frente, 1); -} - -void DrasculaEngine::animation_18_2() { - hablar(TEXT378, "378.als"); - habla_vbpuerta(TEXTVB4, "VB4.als"); - conversa("op_3.cal"); -} - -void DrasculaEngine::animation_22_2() { - hablar(TEXT374,"374.als"); - - sentido_hare=2; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - comienza_sound("s13.als"); - fin_sound(); - sentido_hare = 1; - - habla_vbpuerta(TEXTVB1, "VB1.als"); - hablar(TEXT375, "375.als"); - habla_vbpuerta(TEXTVB2, "VB2.als"); - hablar(TEXT376, "376.als"); - habla_vbpuerta(TEXTVB3, "VB3.als"); - - flags[18] = 1; -} - -void DrasculaEngine::animation_24_2() { - if (hare_x < 178) - lleva_al_hare(208, 136); - sentido_hare = 3; - refresca_pantalla(); - pausa(3); - sentido_hare = 0; - - hablar(TEXT356, "356.als"); - - lee_dibujos("an24.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - animation_32_2(); - - flags[21] = 1; - - habla_vb(TEXTVB22, "VB22.als"); - - if (flags[22] == 0) - conversa("op_4.cal"); +void DrasculaEngine::pantalla_12(int fl){ + if (objeto_que_lleva == MIRAR && fl == 154) + hablar(TEXT329, "329.als"); + else if (objeto_que_lleva == HABLAR && fl == 154) + hablar(TEXT330, "330.als"); + else if (objeto_que_lleva == MOVER && fl == 155) + hablar(TEXT48, "48.als"); + else if (objeto_que_lleva == HABLAR && fl == 155) + hablar(TEXT331, "331.als"); + else if (objeto_que_lleva == MIRAR && fl == 156) + hablar(TEXT35, "35.als"); + else if (objeto_que_lleva == MOVER && fl == 156) + hablar(TEXT48, "48.als"); + else if (objeto_que_lleva == HABLAR && fl == 156) + hablar(TEXT50, "50.als"); + else if (objeto_que_lleva == ABRIR && fl == 156) + abre_puerta(16, 4); + else if (objeto_que_lleva == CERRAR && fl == 156) + cierra_puerta(16, 4); else - conversa("op_5.cal"); - - sal_de_la_habitacion(0); - flags[21] = 0; - flags[24] = 0; - sentido_vb = 1; - vb_x = 120; -} - -void DrasculaEngine::animation_32_2() { - int n, x = 0; - - lee_dibujos("an32_1.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("an32_2.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - - for (n = 0; n < 4; n++) { - x++; - copyBackground(x, 1, 113, 53, 65, 81, dir_dibujo3, dir_zona_pantalla); - updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); - x = x + 65; - pausa(4); - } - - x = 0; - for (n = 0; n < 4; n++) { - x++; - copyBackground(x, 83, 113, 53, 65, 81, dir_dibujo3, dir_zona_pantalla); - updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); - x = x + 65; - pausa(4); - } - - x = 0; - for (n = 0; n < 4; n++) { - x++; - copyBackground(x, 1, 113, 53, 65, 81, dir_hare_fondo, dir_zona_pantalla); - updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); - x = x + 65; - pausa(4); - } - - x = 0; - for (n = 0; n < 3; n++) { - x++; - copyBackground(x, 83, 113, 53, 65, 81, dir_hare_fondo, dir_zona_pantalla); - updateScreen(113, 53, 113, 53, 65, 81, dir_zona_pantalla); - x = x + 65; - if (n < 2) - pausa(4); - } - - lee_dibujos("aux18.alg"); - descomprime_dibujo(dir_dibujo3, 1); -} - -void DrasculaEngine::animation_34_2() { - int n, x = 0; - - sentido_hare = 1; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - lee_dibujos("an34_1.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("an34_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - for (n = 0; n < 3; n++) { - x++; - copyBackground(x, 1, 218, 79, 83, 75, dir_hare_fondo, dir_zona_pantalla); - updateScreen(218, 79, 218, 79, 83, 75, dir_zona_pantalla); - x = x + 83; - pausa(3); - } - - x = 0; - - for (n = 0; n < 3; n++) { - x++; - copyBackground(x, 77, 218, 79, 83, 75, dir_hare_fondo, dir_zona_pantalla); - updateScreen(218, 79, 218, 79, 83, 75, dir_zona_pantalla); - x = x + 83; - pausa(3); - } - - x = 0; - comienza_sound("s8.als"); - - for (n = 0; n < 3; n++) { - x++; - copyBackground(x, 1, 218, 79, 83, 75, dir_hare_dch, dir_zona_pantalla); - updateScreen(218, 79, 218, 79, 83,75, dir_zona_pantalla); - x = x + 83; - pausa(3); - } - fin_sound(); - - pausa(30); - - copyBackground(1, 77, 218, 79, 83, 75, dir_hare_dch, dir_zona_pantalla); - updateScreen(218, 79, 218, 79, 83, 75, dir_zona_pantalla); - pausa(3); - - lee_dibujos("994.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("974.alg"); - descomprime_dibujo(dir_hare_dch, 1); -} - -void DrasculaEngine::animation_36_2() { - lee_dibujos("an11y13.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - hablar(TEXT404, "404.als"); - habla_tabernero(TEXTT19, "T19.als"); - habla_tabernero(TEXTT20, "T20.als"); - habla_tabernero(TEXTT21, "T21.als"); - hablar(TEXT355, "355.als"); - pausa(40); - habla_tabernero("No, nada", "d82.als"); - - lee_dibujos("974.alg"); - descomprime_dibujo(dir_hare_dch, 1); + hay_respuesta = 0; } -void DrasculaEngine::animation_7_2() { - int n, x = 0; - - lee_dibujos("an7_1.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("an7_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("an7_3.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - if (flags[3] == 1) - copyBackground(258, 110, 85, 44, 23, 53, dir_dibujo3, dir_dibujo1); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - lee_dibujos("an7_4.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("an7_5.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("an7_6.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("an7_7.alg"); - descomprime_dibujo(dir_dibujo3, 1); - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51,73, dir_hare_dch, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_hare_frente, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_dibujo3, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 2; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_dibujo3, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - lee_dibujos("an7_8.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("an7_9.alg"); - descomprime_dibujo(dir_hare_dch, 1); - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } - - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 75, 80, 64, 51, 73, dir_hare_fondo, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; - pausa(3); - } +void DrasculaEngine::pantalla_14(int fl) { + if (objeto_que_lleva == HABLAR && fl == 54 && flags[39] == 0) + animation_12_2(); + else if (objeto_que_lleva == HABLAR && fl == 54 && flags[39] == 1) + hablar(TEXT109, "109.als"); + else if (objeto_que_lleva == 12 && fl == 54) + animation_26_2(); + else if (objeto_que_lleva == HABLAR && fl == 52 && flags[5] == 0) + animation_11_2(); + else if (objeto_que_lleva == HABLAR && fl == 52 && flags[5] == 1) + animation_36_2(); + else if (objeto_que_lleva == HABLAR && fl == 53) + animation_13_2(); + else if (objeto_que_lleva == MIRAR && fl == 200) + hablar(TEXT165, "165.als"); + else if (objeto_que_lleva == MIRAR && fl == 201) + hablar(TEXT166, "166.als"); + else if (objeto_que_lleva == MIRAR && fl == 202) + hablar(TEXT167, "167.als"); + else if (objeto_que_lleva == MIRAR && fl == 203) + hablar(TEXT168, "168.als"); + else if (objeto_que_lleva == COGER && fl == 203) + hablar(TEXT170, "170.als"); + else if (objeto_que_lleva == MOVER && fl == 203) + hablar(TEXT170, "170.als"); + else if (objeto_que_lleva == HABLAR && fl == 203) + hablar(TEXT169, "169.als"); + else if (objeto_que_lleva == MIRAR && fl == 204) + hablar(TEXT171, "171.als"); + else + hay_respuesta = 0; +} - x = 0; +void DrasculaEngine::pantalla_15(int fl) { + if (objeto_que_lleva == HABLAR && fl == 188) + hablar(TEXT333, "333.als"); + else if (objeto_que_lleva == MIRAR && fl == 188) + hablar(TEXT334, "334.als"); + else if (objeto_que_lleva == 19 && fl == 188 && flags[27] == 0) + hablar(TEXT335, "335.als"); + else if (objeto_que_lleva == 19 && fl == 188 && flags[27] == 1) { + hablar(TEXT336, "336.als"); + sentido_hare = 3; + hablar(TEXT337, "337.als"); + hablar_sinc(TEXT46, "46.als", "4442444244244"); + sentido_hare = 1; + } else if (objeto_que_lleva == 18 && fl == 188 && flags[26] == 0) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + copyRect(133, 135, hare_x + 6, hare_y, 39, 63, dir_dibujo3, dir_zona_pantalla); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + comienza_sound("s8.als"); + fin_sound(); + hablar(TEXT338, "338.als"); + flags[27] = 0; + agarra_objeto(19); + resta_objeto(18); + } else if (objeto_que_lleva == MOVER && fl == 188 && flags[27] == 0) { + animation_34_2(); + hablar(TEXT339, "339.als"); + agarra_objeto(16); + flags[26] = 1; + flags[27] = 1; + if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) + flags[38] = 1; + } else if (objeto_que_lleva == MIRAR && fl == 205) + hablar(TEXT172, "172.als"); + else if (objeto_que_lleva == MIRAR && fl == 206) + hablar(TEXT173, "173.als"); + else if (objeto_que_lleva == MOVER && fl == 206) + hablar(TEXT174, "174.als"); + else if (objeto_que_lleva == ABRIR && fl == 206) + hablar(TEXT174, "174.als"); + else + hay_respuesta = 0; +} - for (n = 0; n < 6; n++) { - x++; - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(x, 1, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - x = x + 51; +void DrasculaEngine::pantalla_16(int fl) { + if (objeto_que_lleva == HABLAR && fl == 163) + hablar(TEXT6, "6.als"); + else if (objeto_que_lleva == ABRIR && fl == 163) + abre_puerta(17, 0); + else if (objeto_que_lleva == CERRAR && fl == 163) + cierra_puerta(17, 0); + else if (objeto_que_lleva == MIRAR && fl == 183) + hablar(TEXT340, "340.als"); + else if (objeto_que_lleva == HABLAR && fl == 183) { + hablar(TEXT341, "341.als"); + pausa(10); + hablar_sinc(TEXT50, "50.als", "11111111111144432554433"); pausa(3); - } - - - copyBackground(80, 64, 80, 64, 51, 73, dir_dibujo1, dir_zona_pantalla); - copyRect(1, 75, 80, 64, 51, 73, dir_hare_dch, dir_zona_pantalla); - updateScreen(80, 64, 80, 64, 51, 73, dir_zona_pantalla); - - flags[37] = 1; - - if (flags[7] == 1 && flags[26] == 1 && flags[34] == 1 && flags[35] == 1 && flags[37] == 1) - flags[38] = 1; + habla_baul("bla, bla, bla.", "d83.als"); + } else if (objeto_que_lleva == ABRIR && fl == 183) { + abre_puerta(19, NO_PUERTA); + if (flags[20] == 0) { + flags[20] = 1; + sentido_hare = 3; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + hablar(TEXT342, "342.als"); + agarra_objeto(22); + } + } else if (objeto_que_lleva == CERRAR && fl == 183) + cierra_puerta(19, NO_PUERTA); + else if (objeto_que_lleva == MIRAR && fl == 185) + hablar(TEXT37, "37.als"); + else if (objeto_que_lleva == COGER && fl == 185) + hablar(TEXT7, "7.als"); + else if (objeto_que_lleva == MOVER && fl == 185) + hablar(TEXT7, "7.als"); + else if (objeto_que_lleva == HABLAR && fl == 185) + hablar(TEXT38, "38.als"); + else if (objeto_que_lleva == MIRAR && fl == 187) { + hablar(TEXT343, "343.als"); + sentido_hare = 3; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + hablar(TEXT344, "344.als"); + } else if (objeto_que_lleva == HABLAR && fl == 187) + hablar(TEXT345, "345.als"); + else + hay_respuesta = 0; +} - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("aux3.alg"); - descomprime_dibujo(dir_dibujo3, 1); +void DrasculaEngine::pantalla_17(int fl) { + if (objeto_que_lleva == MIRAR && fl == 177) + hablar(TEXT35, "35.als"); + else if (objeto_que_lleva == HABLAR && fl == 177 && flags[18] == 0) + hablar(TEXT6, "6.als"); + else if (objeto_que_lleva == HABLAR && fl == 177 && flags[18] == 1) + animation_18_2(); + else if (objeto_que_lleva == ABRIR && fl == 177 && flags[18] == 1) + hablar(TEXT346, "346.als"); + else if (objeto_que_lleva == ABRIR && fl == 177 && flags[14] == 0 && flags[18] == 0) + animation_22_2(); + else if (objeto_que_lleva == ABRIR && fl == 177 && flags[14] == 1) + abre_puerta(15, 1); + else if (objeto_que_lleva == CERRAR && fl == 177 && flags[14] == 1) + cierra_puerta(15, 1); + else if (objeto_que_lleva == 11 && fl == 50 && flags[22] == 0) { + hablar(TEXT347, "347.als"); + flags[29] = 1; + agarra_objeto(23); + resta_objeto(11); + } else + hay_respuesta = 0; } -void DrasculaEngine::animation_5_2() { - int n, x = 0; +void DrasculaEngine::pantalla_18(int fl) { + if (objeto_que_lleva == HABLAR && fl == 55 && flags[36] == 0) + animation_24_2(); + else if (objeto_que_lleva == HABLAR && fl == 55 && flags[36] == 1) + hablar(TEXT109, "109.als"); + else if (objeto_que_lleva == MIRAR && fl == 181) + hablar(TEXT348, "348.als"); + else if (objeto_que_lleva == COGER && fl == 182) { + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + copyRect(44, 1, hare_x, hare_y, 41, 70, dir_dibujo2, dir_zona_pantalla); + actualiza_refresco(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(4); + agarra_objeto(12); + visible[2] = 0; + flags[28] = 1; + } else if (objeto_que_lleva == MIRAR && fl == 182) + hablar(TEXT154, "154.als"); + else if (objeto_que_lleva == 8 && fl == 55 && flags[38] == 0 && flags[33] == 1) + hablar(TEXT349, "349.als"); + else if (objeto_que_lleva == 13 && fl == 55 && flags[38] == 0 && flags[33] == 1) + hablar(TEXT349, "349.als"); + else if (objeto_que_lleva == 15 && fl == 55 && flags[38] == 0 && flags[33] == 1) + hablar(TEXT349, "349.als"); + else if (objeto_que_lleva == 16 && fl == 55 && flags[38] == 0 && flags[33] == 1) + hablar(TEXT349, "349.als"); + else if (objeto_que_lleva == 17 && fl == 55 && flags[38] == 0 && flags[33] == 1) + hablar(TEXT349, "349.als"); + else if (objeto_que_lleva == 8 && fl == 55 && flags[38] == 1 && flags[33] == 1) + animation_24_2(); + else if (objeto_que_lleva == 13 && fl == 55 && flags[38] == 1 && flags[33] == 1) + animation_24_2(); + else if (objeto_que_lleva == 15 && fl == 55 && flags[38] == 1 && flags[33] == 1) + animation_24_2(); + else if (objeto_que_lleva == 16 && fl == 55 && flags[38] == 1 && flags[33] == 1) + animation_24_2(); + else if (objeto_que_lleva == 17 && fl == 55 && flags[38] == 1 && flags[33] == 1) + animation_24_2(); + else if (objeto_que_lleva == 11 && fl == 50 && flags[22] == 0) { + sentido_hare = 3; + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + actualiza_refresco_antes(); + copyRect(1, 1, hare_x - 1, hare_y + 3, 42, 67, dir_dibujo2, dir_zona_pantalla); + actualiza_refresco(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + pausa(6); + hablar(TEXT347, "347.als"); + flags[29] = 1; + agarra_objeto(23); + resta_objeto(11); + } else + hay_respuesta = 0; +} - sentido_hare = 0; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +void DrasculaEngine::pantalla_19(int fl) { + if (objeto_que_lleva == MIRAR && fl == 214) + hablar(TEXT191, "191.als"); + else + hay_respuesta = 0; +} - lee_dibujos("an5_1.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("an5_2.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("an5_3.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("an5_4.alg"); - descomprime_dibujo(dir_dibujo3, 1); +void DrasculaEngine::hablar_sinc(const char *dicho, const char *filename, const char *sincronia) { + int suma_1_pixel = 1; + int y_mask_habla = 170; + int x_habla_dch[6] = {1, 25, 49, 73, 97, 121}; + int x_habla_izq[6] = {145, 169, 193, 217, 241, 265}; + int p, cara = 0; - copyBackground(1, 1, 213, 66, 53,84, dir_hare_fondo, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + int longitud; + longitud = strlen(dicho); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 213, 66, 53, 84, dir_hare_fondo, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84,dir_zona_pantalla); - x = x + 52; - pausa(3); - } + buffer_teclado(); - x = 0; + color_abc(AMARILLO); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 86, 213, 66, 53, 84, dir_hare_fondo, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); - x = x + 52; - pausa(3); + if (num_ejec == 1) { + if (factor_red[hare_y + alto_hare] == 100) + suma_1_pixel = 0; } - x = 0; + p = 0; - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 213, 66, 53, 84, dir_hare_dch, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); - x = x + 52; - pausa(3); + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); } - x = 0; - - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 213, 66, 53, 84, dir_hare_dch, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); - x = x + 52; - pausa(3); - } +bucless: - x = 0; + if (sincronia[p] == '0') + cara = 0; + if (sincronia[p] == '1') + cara = 1; + if (sincronia[p] == '2') + cara = 2; + if (sincronia[p] == '3') + cara = 3; + if (sincronia[p] == '4') + cara = 4; + if (sincronia[p] == '5') + cara = 5; + if (sincronia[p] == '6') + cara = 6; + if (sincronia[p] == '7') + cara = 7; - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 86, 213, 66, 53, 84, dir_hare_dch, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); - x = x + 52; - pausa(3); - } + copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - x = 0; + actualiza_refresco_antes(); + if (num_ejec == 2) + copyBackground(hare_x, hare_y, ANCHOBJ + 1, 0, ancho_hare, alto_habla - 1, dir_zona_pantalla, dir_dibujo3); + else + copyBackground(hare_x, hare_y, ANCHOBJ + 1, 0, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]), + (int)(((float)(alto_habla - 1) / 100) * factor_red[hare_y + alto_hare]), dir_zona_pantalla, dir_dibujo3); + pon_hare(); + if (num_ejec == 2) { + if (alto_hare != 56) + copyBackground(ANCHOBJ + 1, 0, hare_x, hare_y, ancho_hare, alto_habla - 1, dir_dibujo3, dir_zona_pantalla); + } else + copyBackground(ANCHOBJ + 1, 0, hare_x, hare_y, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]), + (int)(((float)(alto_habla - 1) / 100) * factor_red[hare_y + alto_hare]), dir_dibujo3, dir_zona_pantalla); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 213, 66, 53, 84, dir_hare_frente, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); - x = x + 52; - pausa(3); + if (sentido_hare == 0) { + if (num_ejec == 2) + copyRect(x_habla_izq[cara], y_mask_habla, hare_x + 8, hare_y - 1, ancho_habla, alto_habla, dir_hare_dch, dir_zona_pantalla); + else + reduce_hare_chico(x_habla_izq[cara], y_mask_habla, (int)(hare_x + (8.0f / 100) * factor_red[hare_y + alto_hare]), + hare_y, ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_dch, dir_zona_pantalla); + actualiza_refresco(); + } else if (sentido_hare == 1) { + if (num_ejec == 2) + copyRect(x_habla_dch[cara], y_mask_habla, hare_x + 12, hare_y, ancho_habla, alto_habla, dir_hare_dch, dir_zona_pantalla); + else + reduce_hare_chico(x_habla_dch[cara], y_mask_habla, (int)(hare_x + (12.0f / 100) * factor_red[hare_y + alto_hare]), + hare_y, ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_dch, dir_zona_pantalla); + actualiza_refresco(); + } else if (sentido_hare == 2) { + if (num_ejec == 2) + copyRect(x_habla_izq[cara], y_mask_habla, hare_x + 12, hare_y, ancho_habla, alto_habla, dir_hare_frente, dir_zona_pantalla); + else + reduce_hare_chico(x_habla_izq[cara], y_mask_habla, + (int)(suma_1_pixel + hare_x + (12.0f / 100) * factor_red[hare_y + alto_hare]), hare_y, + ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_frente, dir_zona_pantalla); + actualiza_refresco(); + } else if (sentido_hare == 3) { + if (num_ejec == 2) + copyRect(x_habla_dch[cara], y_mask_habla, hare_x + 8, hare_y, ancho_habla, alto_habla, dir_hare_frente, dir_zona_pantalla); + else + reduce_hare_chico(x_habla_dch[cara], y_mask_habla, + (int)(suma_1_pixel + hare_x + (8.0f / 100) * factor_red[hare_y + alto_hare]), hare_y, + ancho_habla, alto_habla, factor_red[hare_y + alto_hare], dir_hare_frente, dir_zona_pantalla); + actualiza_refresco(); } - comienza_sound("s1.als"); - - x = 0; + if (con_voces == 0) + centra_texto(dicho, hare_x, hare_y); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 86, 213, 66, 53, 84, dir_hare_frente, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); - x = x + 52; - pausa(3); - } - fin_sound_corte(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - x = 0; + p++; + pausa(3); - for (n = 0; n < 6; n++) { - x++; - copyBackground(x, 1, 213, 66, 53, 84, dir_dibujo3, dir_zona_pantalla); - updateScreen(213, 66, 213, 66, 53, 84, dir_zona_pantalla); - x = x + 52; - pausa(3); + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; } - lee_dibujos("994.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("974.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("964.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("aux5.alg"); - descomprime_dibujo(dir_dibujo3, 1); - flags[8] = 1; - hare_x = hare_x - 4; - hablar_sinc(TEXT46, "46.als", "4442444244244"); - sin_verbo(); + if (num_ejec == 1 && music_status() == 0 && flags[11] == 0) + playmusic(musica_room); + if (num_ejec == 2 && music_status() == 0 && flags[11] == 0 && musica_room != 0) + playmusic(musica_room); } -void DrasculaEngine::animation_6_2() { - stopmusic(); - flags[9] = 1; - - borra_pantalla(); - lee_dibujos("ciego1.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("ciego2.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("ciego3.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("ciego4.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("ciego5.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +void DrasculaEngine::habla_baul(const char *dicho, const char *filename) { + int tiempou; + long tiempol; + int cara = 0, cara_antes; + int longitud; - pausa(1); + longitud = strlen(dicho); - if (flags[4] == 1) - habla_hacker(TEXTD66, "d66.als"); - pausa(6); - habla_ciego(TEXTD78, "d78.als", - "004447222550002222755554444466222000220555002220550444446666662220000557550033344477222522665444466663337446055504446550550550222633003330000666622044422755722270255566667555655007222777"); - pausa(4); - habla_hacker(TEXTD67, "d67.als"); + tiempol = _system->getMillis(); + tiempou = (unsigned int)tiempol / 2; + _rnd->setSeed(tiempou); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + buffer_teclado(); - pausa(10); + cara_antes = flags[19]; - borra_pantalla(); + color_abc(MARRON); - playmusic(musica_room); - lee_dibujos("9.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("aux9.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - sin_verbo(); + if (hay_sb == 1) { + sku = new Common::File; + sku->open(filename); + if (!sku->isOpen()) { + error("no puedo abrir archivo de voz"); + } + ctvd_init(2); + ctvd_speaker(1); + ctvd_output(sku); + } - flags[9] = 0; -} +bucless: -void DrasculaEngine::animation_33_2() { - stopmusic(); - flags[9] = 1; + if (cara == 1) + cara = 0; + else + cara = 1; - pausa(12); - hablar(TEXTD56, "d56.als" ); - pausa(8); + flags[19] = cara; + refresca_pantalla(); - borra_pantalla(); - lee_dibujos("ciego1.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("ciego2.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("ciego3.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("ciego4.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lee_dibujos("ciego5.alg"); - descomprime_dibujo(dir_hare_frente, 1); + if (con_voces == 0) + centra_texto(dicho, 263, 69); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(10); + pausa(4); - habla_ciego(TEXTD68, "d68.als", "44472225500022227555544444472225500022227555544444664466"); - pausa(5); - habla_hacker(TEXTD57, "d57.als"); - pausa(6); - _system->delayMillis(1000); - habla_ciego(TEXTD77, "d77.als", "56665004444447222550002222755554444466555033022755555000444444444444444444444444444444"); - habla_hacker(TEXTD65, "d65.als"); + int key = getscan(); + if (key != 0) + ctvd_stop(); + buffer_teclado(); + if (hay_sb == 1) { + if (LookForFree() != 0) + goto bucless; + delete sku; + sku = NULL; + ctvd_terminate(); + } else { + longitud = longitud - 2; + if (longitud > 0) + goto bucless; + } - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); + flags[19] = cara_antes; + refresca_pantalla(); updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); +} - pausa(14); - - borra_pantalla(); - - playmusic(musica_room); - lee_dibujos("9.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("aux9.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("97.alg"); - descomprime_dibujo(dir_hare_dch, 1); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - sin_verbo(); - - flags[33] = 1; - flags[9] = 0; +void DrasculaEngine::cierra_puerta(int nflag, int n_puerta) { + if (flags[nflag] == 1) { + comienza_sound("s4.als"); + flags[nflag] = 0; + if (n_puerta != NO_PUERTA) + puertas_cerradas(n_puerta); + refresca_pantalla(); + updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); + fin_sound(); + sin_verbo(); + } } bool DrasculaEngine::pantalla_21(int fl) { @@ -11870,148 +8624,4 @@ bucless: updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); } -void DrasculaEngine::animation_1_4() { - if (flags[21] == 0) { - strcpy(nombre_obj[2], "igor"); - hablar(TEXT275, "275.als"); - - actualiza_refresco_antes(); - - copyBackground(131, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); - updateScreen(199, 95, 199, 95, 50, 66, dir_zona_pantalla); - - pausa(3); - - actualiza_refresco_antes(); - - copyBackground(182, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); - pon_hare(); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - pausa(3); - flags[18] = 1; - flags[20] = 1; - - habla_igor_sentado(TEXTI13, "I13.als"); - habla_igor_sentado(TEXTI14, "I14.als"); - habla_igor_sentado(TEXTI15, "I15.als"); - flags[21] = 1; - } else { - hablar(TEXT356, "356.als"); - - actualiza_refresco_antes(); - - copyBackground(131, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); - updateScreen(199, 95, 199, 95, 50, 66, dir_zona_pantalla); - pausa(2); - - actualiza_refresco_antes(); - - copyBackground(182, 133, 199, 95, 50, 66, dir_dibujo3, dir_zona_pantalla); - pon_hare(); - - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - - flags[18] = 1; - flags[20] = 1; - - hablar(TEXT276, "276.als"); - pausa(14); - habla_igor_sentado(TEXTI6, "I6.als"); - } - - conversa("op_6.cal"); - flags[20] = 0; - flags[18] = 0; -} - -void DrasculaEngine::animation_5_4(){ - sentido_hare = 3; - lee_dibujos("anh_dr.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - lleva_al_hare(99, 160); - lleva_al_hare(38, 177); - hare_se_ve = 0; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - delay(800); - anima("bio.bin", 14); - flags[29] = 1; - hare_x = 95; - hare_y = 82; - refresca_pantalla(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - abre_puerta(2, 0); - lee_dibujos("auxigor.alg"); - descomprime_dibujo(dir_hare_frente, 1); - x_igor = 100; - y_igor = 65; - habla_igor_frente(TEXTI29, "I29.ALS"); - habla_igor_frente(TEXTI30, "I30.als"); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos("99.alg"); - descomprime_dibujo(dir_hare_fondo, 1); - hare_se_ve = 1; - FundeAlNegro(0); - sal_de_la_habitacion(0); -} - -void DrasculaEngine::animation_6_4() { - char room[13]; - - strcpy(room, num_room); - strcpy(num_room, "26.alg"); - borra_pantalla(); - lee_dibujos("26.alg"); - descomprime_dibujo(dir_dibujo1, MEDIA); - lee_dibujos("aux26.alg"); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos("auxigor.alg"); - descomprime_dibujo(dir_hare_frente, 1); - copyBackground(0, 0, 0, 0, 320, 200, dir_dibujo1, dir_zona_pantalla); - refresca_26_antes(); - x_igor = 104; - y_igor = 71; - pon_igor(); - updateScreen(0, 0, 0, 0, 320, 200, dir_zona_pantalla); - pausa(40); - habla_igor_frente(TEXTI26, "I26.als"); - strcpy(num_room, room); - borra_pantalla(); - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - lee_dibujos(pantalla_disco); - descomprime_dibujo(dir_dibujo3, 1); - lee_dibujos(num_room); - descomprime_dibujo(dir_dibujo1, MEDIA); - sin_verbo(); - refresca_pantalla(); -} - -void DrasculaEngine::animation_8_4() { - int frame; - int estanteria_x[] = {1, 75, 149, 223, 1, 75, 149, 223, 149, 223, 149, 223, 149, 223}; - int estanteria_y[] = {1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74}; - - lee_dibujos("an_8.alg"); - descomprime_dibujo(dir_hare_frente, 1); - - for (frame = 0; frame < 14; frame++) { - pausa(2); - copyBackground(estanteria_x[frame], estanteria_y[frame], 77, 45, 73, 72, dir_hare_frente, dir_zona_pantalla); - updateScreen(77, 45, 77, 45, 73, 72, dir_zona_pantalla); - } - - lee_dibujos("96.alg"); - descomprime_dibujo(dir_hare_frente, 1); - abre_puerta(7, 2); -} - -void DrasculaEngine::animation_9_4() { - anima("st.bin", 14); - FundeAlNegro(1); -} - } // End of namespace Drascula diff --git a/engines/drascula/module.mk b/engines/drascula/module.mk index 51fb965915..b0e94f8ea2 100644 --- a/engines/drascula/module.mk +++ b/engines/drascula/module.mk @@ -1,6 +1,7 @@ MODULE := engines/drascula MODULE_OBJS = \ + animation.o \ detection.o \ drascula.o -- cgit v1.2.3