! =============================================================================== ! ! =============================================================================== ! Copyright (C) 2007 Mapache ! ! 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! =============================================================================== ! "El día del umami" ! ! REALIZADO POR: Mapache para la primera rapidocomp ! Comienzo 28/02/2007 ! CONSTANTES Constant Historia "^El día del umami."; Constant Titular "^Presentado a la RapidoComp 2007^"; Release 2; ! Queremos usar el comando 'Salidas' Constant ADMITIR_COMANDO_SALIDAS; ! No queremos usar los comandos 'Lugares' y 'Objetos' Constant NO_LUGARES; Constant HAY_CURIOSIDADES; [ Curiosidades; "Este juego se creo para la primera RapidoComp. Esta segunda versión realizada con más calma, está limpia de bugs (eso espero) e incluye gráficos, que es lo realmente importante en una aventura :-).^^ Por cierto, sabías que...^ - El cuadro de Rubens que roba Lupin está realmente en el museo de bellas artes de Burdeos.^ - Las coordenadas de la tarjeta corresponden a la estación de Trenes de Burdeos.^ - Todas las fotos que aparecen en la aventura son de Burdeos.^ ^ ¡Gracias por jugar!.^"; ]; ! PUNTUACIÓN Constant PUNTUACION_MAX 7; Serial "070807"; ! USAR TRUE Y FALSE Constant FLAG_ON 1; Constant FLAG_OFF 0; ! VARIABLES GLOBALES Constant locmusic; Constant volmusic; ! INCLUDES Y REPLACES Include "EParser"; Include "array"; ! Inclusión de la librería SGW Include "sgw"; ! Inclusión de la librería SGW Include "umami.bli"; ! Mis mensajes propios Object MensajesLibreria with antes[; Tocar: "Mejor no ir toqueteando todo por ahí."; Probar: "Resistes a tus extraños pensamientos."; ]; Include "Acciones"; Include "Decorado"; Include "Mensajes"; Include "Gramatica"; !constant sinespera 1; #ifdef sinespera; [esperartecla; rtrue; ]; [borrarpantalla; rtrue; ]; #ifnot; Include "BajoNivel"; #endif; ! CLASES !=====================================================================! ! LOCALIDAD ! !=====================================================================! Class Localidad with FLAG_GENERAL FLAG_OFF, despues [; Mirar: print"^";<>; ], no_puedes_ir [; print"Mejor mirar por donde ando..."; ] has luz ; ! ====================================================================! ! Clase de PSIs ! ====================================================================! Class PSI with antes[; BuscarEn: <>; ] has animado; !=====================================================================! ! CARTON (PIEDRA) ! !=====================================================================! Class carton class Decorado with antes[; examinar: rfalse; default: "No creo que eso sea muy necesario."; ]; ! LOCALIDADES !=====================================================================! ! LIMBO ! !=====================================================================! Localidad locLimbo "El limbo aventurero" with descripcion "Donde a todo aventurero le gustaría estar." ; !=====================================================================! ! MOTEL le Chantry ! !=====================================================================! Localidad locMotel "La habitación del motel le Chantry" with FLAG_APARECIDO FLAG_OFF, nombre 'motel' 'cuarto', graphimg motel, descripcion "Tras el largo viaje no te fijaste mucho, pero cada minuto que pasas desde entonces en este cuartucho te consume... pequeño, mal ventilado, peor cuidado. Tu único entretenimiento estos días a la espera del golpe ha sido ver desde la cama desvencijada como las cucarachas se pegan por la comida que hubieras jurado que ni ellas querrían comer.", afuera [; if(self.FLAG_APARECIDO==FLAG_ON && objBolsa in jugador ){ jugadorA(locCalles);rtrue; } else if(self.FLAG_APARECIDO==FLAG_OFF) "Mejor espero a Lupin..."; else "Hoy dejo la habitación, será mejor que coja mis cosas."; ]; carton carMotel locMotel with describir 'cama' "Una vieja cama de muelles, te reirías de ella si no te hubiera destrozado la espalda." G_FEMENINO; !=====================================================================! ! Las calles de burdeos ! !=====================================================================! Localidad locCalles "Las calles de Burdeos" with graphimg calle, descripcion "Burdeos es una ciudad de contrastes. Todo lo importante está renovado y cuidado, concentrado en un radio de cinco calles, más allá de ese centro dorado, barriadas de inmigrantes como dónde está tu Motel.", arriba locMotel, adentro locMotel, no_puedes_ir "No es momento de echarse atrás."; !=====================================================================! ! El Museo (fachada principal) ! !=====================================================================! Localidad locMuseoFachada "El Museo (fachada principal)" with graphimg exterior, FLAG_ABIERTO FLAG_OFF, nombre_f 'fachada', descripcion "Te encuentras en la fachada principal del museo. Está rodeado por una verja de hierro. ^^La calle se extiende al norte y al oeste.", al_n locMuseoN, al_o locMuseoO, adentro[; if(self.FLAG_ABIERTO==FLAG_OFF) "La verja te lo impide."; else{ if(psiLupin.FLAG_AVISADO==FLAG_OFF) "Mejor avisar primero a Lupin."; return locSala; } ]; carton carMuseo locMuseoFachada with describir 'puerta' 'fachada' 'museo' "Como los edificios principales de burdeos, es de piedra marrón y con terraza en el tejado. Una verja alta lo rodea. Lo has visitado varias veces preparando el golpe, y desde luego que no desentona en la ciudad. Elegante es la palabra." G_MASCULINO; !=====================================================================! ! El Museo (fachada norte) ! !=====================================================================! Localidad locMuseoN "El Museo (fachada norte)" with graphimg trasera, descripcion "La parte de atrás del museo no está tan cuidada, y menos en esta esquina, donde se acumulan cubos de basura al lado de un viejo coche.", al_s locMuseoFachada, al_o [; print "Rodeas el museo hasta el aparcamiento...^"; esperartecla(); return locMuseoO;]; carton carMuseo2 locMuseoN with describir 'museo' "Como los edificios principales de burdeos, es de piedra marrón y con terraza en el tejado. Una verja alta lo rodea. Lo has visitado varias veces preparando el golpe, y desde luego que no desentona en la ciudad. Elegante es la palabra." G_MASCULINO 'cubos' "De plástico verde, para guardar basura." G_MASCULINO+G_PLURAL 'basura' "Asoma de dentro de los cubos." G_FEMENINO, antes[; abrir,buscarEn: "¡Eres ladrón de arte para no tener que hacer estas cosas!"; ]; carton carMuseo4 locMuseoN with describir 'verja' "La verja de barrotes metálicos es alta y rodea todo el museo." 'fachada' 'museo' "Como los edificios principales de burdeos, es de piedra marrón y con terraza en el tejado. Una verja alta lo rodea. Lo has visitado varias veces preparando el golpe, y desde luego que no desentona en la ciudad. Elegante es la palabra." G_MASCULINO; !=====================================================================! ! El Museo (fachada oeste) ! !=====================================================================! Localidad locMuseoO "El aparcamiento" with graphimg aparcamiento, descripcion [; print "Un aparcamiento disuasorio para que los turistas dejen sus coches y vayan al centro andando. Bastante necesario en una ciudad tan peatonalizada como esta.^"; if(locSala.FLAG_EN_PIE==FLAG_ON) "^A estas horas no hay ningún coche, mejor para vuestras intenciones."; ], al_e locMuseoFachada, al_n [; print "Rodeas el museo hasta la parte trasera del museo...^"; esperartecla(); return locMuseoN;]; carton carMuseo3 locMuseoO with describir 'fachada' 'museo' "Como los edificios principales de burdeos, es de piedra marrón y con terraza en el tejado. Una verja alta lo rodea. Lo has visitado varias veces preparando el golpe, y desde luego que no desentona en la ciudad. Elegante es la palabra." G_MASCULINO 'verja' "La verja de barrotes metálicos es alta y rodea todo el museo."; !=====================================================================! ! La sala ! !=====================================================================! Localidad locSala "La sala de escultura y pinturas" with graphimg museo, FLAG_EN_PIE FLAG_ON, FLAG_PRIMERA FLAG_OFF, descripcion[; print "En la penumbra del museo la sala es un poco más inquietante que cuando está abierta al público. Son las esculturas las que parecen mirarte y catalogarte, y no al revés. Sin embargo los cuadros parecen apagados, sin vida^^"; if(self.FLAG_EN_PIE==FLAG_OFF){ print "Tirada en medio de la sala se encuentra la estatua de Diana de Versalles y al sur el pasillo por el que huyó Lupin.^";} else print "En medio de la sala se encuentra la estatua de Diana de Versalles y al sur el pasillo por el que habéis entrado.^"; if(testnset(self,FLAG_PRIMERA,FLAG_OFF)){ "Al entrar en la sala, colocas la plataforma junto a la estatua."; } ], afuera [; if(self.FLAG_EN_PIE==FLAG_OFF) return locMuseoFachada; "No es momento de echarse atrás..."; ]; carton carSala locSala with describir 'plataforma' "Una plataforma con ruedas para transportar objetos pesados" G_FEMENINO 'estatuas' "La mayoría son estatuas romanas de marmol, representando distintas deidades" G_FEMENINO+G_PLURAL 'cuadros' "Los viste cuando tanteaste el terreno, alguno tiene bastante valor, pero el comprador quiere la estatua." G_PLURAL; !====================================================================================================! ! OBJETOS !=====================================================================! ! Joseph Perez ! + El jugador !=====================================================================! Object Aventurero "Joseph Perez" with descripcion "Delgado, ojeroso, con ropa de saldo... para ser un aprendiz de ladrón de arte, la vida no te está tratando muy bien.", cantidad 0, ! Necesario para la libreria capacidad 8, ! Cuantos objetos puede llevar el jugador has transparente animado; !=====================================================================! ! MESA ! + en el motel ! !=====================================================================! Object objMesa "mesa" locMotel with nombre 'mesa' 'camilla', FLAG_BOLSA_COGIDA FLAG_OFF, descripcion[; print "Una mesa camilla de madera, es increible que se sostenga en pie. Sobre ella puedes ver varios periódicos"; if(self.FLAG_BOLSA_COGIDA==FLAG_OFF) " y debajo la bolsa de las herramientas."; else "."; ], antes [; MirarDebajo: if(self.FLAG_BOLSA_COGIDA==FLAG_OFF) { "Debajo de la mesa está la bolsa de las herramientas."; } "Miras otra vez y no encuentras nada interesante..."; ] has femenino estatico; !=====================================================================! ! PERIODICOS ! + en el motel ! + cuando los examinas por primera vez, lanzas el dialogo con Lupin !=====================================================================! Object objPeriodicos "periodicos" locMotel with nombre_mp 'prensa' 'periodicos', !graphimg periodicos, FLAG_LEIDOS FLAG_OFF, descripcion[; slideobject(periodicos,1); print "Le monde, Le figaro... cuesta llenar tantas horas si sólo puedes salir una vez al día así que compras más prensa de la que puedes leer... ~¡hay que ser prudentes!, la sopresa es nuestra mejor arma~ te dijo Lupin al llegar a Burdeos..."; if(testnset(self,FLAG_LEIDOS,FLAG_OFF)){ DiEntradaLupin(); puntuacion++; } ], antes[; Coger: <>;] has escenario; !=====================================================================! ! BOLSA DE HERRAMIENTAS ! + en el motel ! + cuando los coges, se quita el transparente !=====================================================================! Object objBolsa "bolsa de herramientas" locMotel with nombre_f 'bolsa' 'de' 'herramientas' 'bolsa', graphimg bolsa, articulo "la", descripcion "Tu bolsa de herramientas. Lupin se rie de ellas ~Un verdadero ladrón sólo necesita su encanto para robar~, pero bien que te encargo ~conseguir~ la furgoneta para escapar con la estatua.", antes[; coger: objMesa.FLAG_BOLSA_COGIDA=FLAG_ON; give self ~oculto; ] has recipiente femenino oculto abrible; !=====================================================================! ! CUERDA ! + en la bolsa ! + sirve para atarla a la varilla y a la verja y girarla !=====================================================================! Object objCuerda "cuerda" objBolsa with nombre_f 'cuerda', graphimg cuerda, FLAG_ATADOAVARA FLAG_OFF, FLAG_ATADOAVERJA FLAG_OFF, descripcion "Una fina cuerda de metro y medio de longitud.", antes[; atar: if(uno==self && otro==objVerja){ if(testnset(self,FLAG_ATADOAVERJA,FLAG_OFF)){ move self to objVerja; print "Pasas la cuerda entre los barrotes y haces un fuerte nudo. Parece que has conseguido un punto de apoyo. Ya puedes mover el mundo.^"; if(puntuacion==1) puntuacion++; rtrue; } "¡Pero si ya está atada!"; } if(uno==self && otro==objFurgoneta){ "Ummm... el ruido de la verja al saltarla atraería a demasiados curiosos. Mejor pensar en algo más discreto."; } if(uno==self && otro==objVara && self in objVerja) <>; if(uno==self && otro==objVara) "Antes de hacer el nudo caes en la cuenta de que la verja es demasiado alta para lanzar la cuerda y luego trepar por ella. Debe haber otra forma más civilizada de entrar."; coger: if(self in objVerja) <>; meterse,trepar: if(self in objVerja) "La cuerda no es lo suficientemente larga para trepar por ella."; desatar: if(self in objVerja) { self.FLAG_ATADOAVERJA=FLAG_OFF; move objCuerda to jugador; "Desatas la cuerda de la verja."; } ] has femenino ; !=====================================================================! ! GANZUA ! + en la bolsa ! + sirve para abrir el segundo coche !=====================================================================! Object objGanzua "ganzua" objBolsa with nombre_f 'ganzua', graphimg ganzua, descripcion "No eres un gran experto con ella, pero te vale para entrar y salir de los sitios sin dar muchas explicaciones.", antes[; atar: "Mejor no."; ] has femenino ; !=====================================================================! ! LA FURGONETA ! + en las calles de burdeos ! + sirve para ir al museo !=====================================================================! Object objFurgoneta "furgoneta" locCalles with nombre_f 'furgoneta', articulo "la", FLAG_GENERAL FLAG_OFF, descripcion [; print "Ámplia, te costó abrirla y camuflarla, pero ha quedado impecable."; if(self.FLAG_GENERAL==FLAG_OFF) ! está Lupin? " Lupin espera impaciente en el interior."; else " A través de las ventanillas puedes ver a Lupin ~meditando~."; ], antes[; Meterse: if(testnset(self,FLAG_GENERAL,FLAG_OFF)){ DiLlegadaMuseo(); move objFurgoneta to locMuseoFachada; jugadorA(locMuseoFachada); ArrancarReloj(objDespertadorLupin,3); rtrue; } ] has femenino estatico entrable abierto ; carton carFurgoneta objFurgoneta with describir 'furgoneta' "Ámplia, te costó abrirla y camuflarla, pero ha quedado impecable." G_FEMENINO; !=====================================================================! ! LA VERJA ! + en la fachada del museo ! + si atas la cuerda y giras la barra, se abre !=====================================================================! Object objVerja "verja" locMuseoFachada with nombre_f 'verja' 'valla' 'cerradura', nombre_fp 'barrotes', descripcion [; if(locMuseoFachada.FLAG_ABIERTO==FLAG_OFF) print "La verja de barrotes metálicos, es lo suficientemente alta y lo suficientemente acabada en punta para no pensar en saltarla con una estatua. La cerradura parece de la última reforma, no así los barrotes que se encuentran bastante oxidados.^"; else print "Entre los barrotes de la verja hay un hueco lo suficientemente grande como para pasar con comodidad.^"; if(~~(objCuerda.FLAG_ATADOAVERJA==FLAG_OFF)) "^La cuerda está fuertemente atada a la verja."; ], antes[; meterse: if(locMuseoFachada.FLAG_ABIERTO==FLAG_OFF) "Los barrotes te lo impiden, aunque en el intento notas como se mueven ligeramente."; <>; saltarsobre, trepar: "Tus dotes de escalador nunca fueron lo suficientemente buenas."; atar: "Mejor no."; empujar, tirar, abrir, retorcer, atacar: "Miras tus delgados brazos, luego los barrotes y decides que en este caso la fuerza bruta no va a ser la solución."; retorcercon: if(otro==objVara) "Al principio los barrotes ceden, pero la vara es demasiado corta y te falta un punto de apoyo para poder hacer palanca."; quitarcerrojo: if(otro==objVara) <>; if(otro==objGanzua) "Lo intentas durante unos minutos, pero las cerraduras eléctricas nunca han sido tu fuerte. Has fallado estrepitosamente."; else "Recapacitas un instante antes y deshechas la idea."; ] has femenino escenario estatico transparente ; !=====================================================================! ! EL COCHE ABANDONADO ! + en la fachada norte del museo ! + en su maletero está el gps y la vara roscada !=====================================================================! Object objCocheAbandonado "coche" locMuseoN with nombre 'coche', FLAG_GENERAL FLAG_OFF, descripcion [; "Mmm... parece parte de la basura. Definitivamente está abandonado, y el maletero parece reventado."; ], antes[; Meterse: "No merece la pena, por dentro está hecho un asco."; ] has estatico entrable abierto escenario ; !=====================================================================! ! EL MALETERO ! + en el coche ! + contiene el gps y la vara roscada !=====================================================================! Object objMaletero "maletero" locMuseoN with nombre 'maletero', FLAG_GENERAL FLAG_OFF, descripcion [; "Tiene un agujero en lugar de cerradura."; ], antes[; coger: "Es parte del coche abandonado."; ], despues[; abrir: if(testnset(self,FLAG_GENERAL,FLAG_OFF)) "En su interior encuentras una vara de hierro y lo que parece un objeto electrónico... ¡un gps!"; ] has estatico recipiente escenario abrible ; !=====================================================================! ! EL GPS ! + en el maletero ! !=====================================================================! Object objGPS "gps" objMaletero with nombre 'gps', graphimg GPS, FLAG_GENERAL FLAG_OFF, FLAG_ENCHUFADO FLAG_OFF, descripcion [; if(objGps.FLAG_ENCHUFADO==FLAG_OFF) "No parece estropeado, aunque habría que conectarlo al mechero de un coche para comprobarlo."; else "¡Funciona! La pantalla te pide unas coordenadas."; ], antes[; Teclear: if(objGps.FLAG_ENCHUFADO==FLAG_OFF) "Necesito enchufarlo antes."; else if(objTarjeta in jugador){ DiFin(); rtrue;} else "No se que teclear..."; Atar: if(uno==self && otro==objMechero){ move objGps to objMechero; objGps.FLAG_ENCHUFADO=FLAG_ON; print "Conectas el gps al mechero. Se enciende y te pide unas coordenadas.^"; puntuacion++; rtrue; } "No parece que sea el sitio adecuado para enchufar el gps."; ] ; !=====================================================================! ! LA VARA ! + en el maletero ! !=====================================================================! Object objVara "vara" objMaletero with nombre_f 'vara' 'varilla' 'barra', FLAG_GENERAL FLAG_OFF, graphimg barra, descripcion [; "No muy gruesa, pero dura y resistente como el acero. Se parece a las que se usan en las obras para cimentar "; ], antes[; atar: if(uno==self && otro==objcuerda) <>; coger: if(self.FLAG_GENERAL==FLAG_ON) "La vara esta firmemente sujeta a la cuerda y algo te dice que es como debe estar... sientes que estás realmente cerca de abrir la verja"; PonerSobre, MeterEntre: if(otro==objVerja) if(objCuerda in objVerja){ move self to objVerja; self.FLAG_GENERAL=FLAG_ON; print "Aseguras la vara con la cuerda y queda fijada a los barrotes. Ahora parece la hélice de una avioneta.^"; puntuacion++; rtrue; } else{ move self to locMuseoFachada; "La barra se desliza entre los barrotes, y cae al suelo."; } girar: if(parent(objCuerda)==objVerja){ locMuseoFachada.FLAG_ABIERTO=FLAG_ON; print "¡BINGO! Al final tus estudios de física no cayeron en saco rotro. Tras un rato de girar la vara, los barrotes ceden y se abre un hueco en la verja.^"; puntuacion++; rtrue; } else "Giras la vara despreocupadamente.";], despues[; ] has femenino; !=====================================================================! ! LA ESTATUA ! + en la sala del museo ! + al cogerla, te tira Lupin !=====================================================================! Object objEstatua "diana de Versalles" locSala with nombre_f 'escultura' 'estatua' 'diana' 'de' 'versalles', graphimg diana, FLAG_GENERAL FLAG_OFF, descripcion [; "Según Lupin, ~la diosa griega del amor~, según la mitología romana y el catálogo de la exposición, la Diosa de la caza y protectora. Durante unos segundos te quedas embobado observandola, es preciosa... esperas que no acabe en el jardín de un nuevo rico, aunque sabes que probablemente acabe sosteniendo una ponchera en una fiesta de horteras."; ], antes[; Coger, PonerSobre: if(testnset(self,FLAG_GENERAL,FLAG_OFF)){ objDespertadorCogeEstatua.FLAG_OCURRIDO=FLAG_ON; DiTraicion(); } else "El contacto para vender la estatua lo tenía Lupin, y realmente dudas que existiera. Ahora lo importante es salir de aquí antes de que llegue la policia."; rtrue; ] has escenario femenino ; !=====================================================================! ! LA TARJETA ! + en la sala del museo ! + !=====================================================================! Object objTarjeta with nombre_f 'tarjeta', graphimg card, nombre_m 'objeto', nombre_corto[; if(self.FLAG_GENERAL==FLAG_OFF) print "objeto en el suelo"; else print "tarjeta magnetica";rtrue; ], FLAG_GENERAL FLAG_OFF, descripcion [; if(testnset(self,FLAG_GENERAL,FLAG_OFF)) { print "^Parece que en la huida, El mejor y más grande ladrón del mundo se dejo una tarjeta magnética.^"; give self femenino; puntuacion++; EsperarTecla(); } "Parece de una consigna. Tiene escrito a mano lo siguiente 44.49'8.44~N, 0.33'24.12~W"; ], antes[; ] ; !=====================================================================! ! EL COCHE BUENO ! + en la fachada oeste del museo ! + al entrar en el, !=====================================================================! Object objCocheBueno "coche" locLimbo with nombre 'coche', FLAG_GENERAL FLAG_OFF, descripcion [; "Un coche de cinco puertas que alguien ha aparcado aquí."; ], descripcion_dentro "Te encuentras en el interior del coche que acabas de abrir. Es un utilitario, sin extras salvo el mechero del coche, que está sin la tapa.", antes[; Meterse: if(self hasnt abierto) <>; ], despues[; QuitarCerrojo: give self abierto; "Tras un par de intentos, abres el coche."; ], con_llave objGanzua, has estatico entrable abrible cerrojo cerrojoechado ; carton carCocheBueno objCocheBueno with describir 'coche' "Es un utilitario, sin extras salvo el mechero del coche, que está sin la tapa." G_MASCULINO; !=====================================================================! ! EL MECHERO ! + sirve para ! + al entrar en el, !=====================================================================! Object objMechero "mechero del coche" objCocheBueno with nombre 'mechero', FLAG_GENERAL FLAG_OFF, descripcion [; "Un mechero eléctrico."; ], has estatico escenario transparente ; !!!! DAEMONS !=====================================================================! ! DESPERTADOR LUPIN ! + a los tres turnos de estar en el museo, salta ! !=====================================================================! Object objDespertadorLupin with tiempo_restante 3, tiempo_agotado [; DiNoMuseo(); ]; !=====================================================================! ! DESPERTADOR VENGANZA 1 ! + a los dos turnos de estar en el museo, salta ! !=====================================================================! Object objDespertadorCogeEstatua with tiempo_restante 2, FLAG_OCURRIDO FLAG_OFF, tiempo_agotado [; if(self.FLAG_OCURRIDO==FLAG_OFF) DiCogeEstatua(); ]; ! PSIS PSI psiLupin "Lupin" objFurgoneta with nombre 'Lupin', graphimg lupin, FLAG_ENCOCHE FLAG_OFF, FLAG_AVISADO FLAG_OFF, descripcion "Lupin IV, el autodenominado ~Mejor y más grande ladrón de todos los tiempos~. Siempre vestido a la última moda, con aire desenfadado", articulo "a", antes [ ; Hablarcon: if(testnset(self,FLAG_ENCOCHE,FLAG_OFF) && ~~(self in objFurgoneta)) { PararReloj(objDespertadorLupin); DiNoMuseo(); rtrue; } if(locMuseoFachada.FLAG_ABIERTO==FLAG_ON && (self in objFurgoneta)){ self.FLAG_AVISADO=FLAG_ON; DiAcabado(); rtrue; } if(self in locSala) "Venga, acabemos de una vez..."; else "- ¿Todavía no has conseguido la manera de entrar... en fin, tal vez te he sobrevalorado. Sigue intentandolo, a ver si encuentras una forma, aunque sea de casualidad." ; !default: "Mal que me pese, sigue siendo mi jefe...^"; ], has animado ; ! ====================================================================================================! ! RUTINAS ! Rutina principal y obligatoria de todo juego InformATE! [ Inicializar; ! Esto es para que el juego dé siempre la descripción de la habitación, aunque ! ya la hayamos visitado modomirar = 2; initializeSGW(240,2); ! Define la ventana gráfica con altura de 240 pixels y 2 ventanas de objeto CambiarJugador (Aventurero); localizacion = locMotel; print "[[LOS JUGADORES NOVELES DEBERÍAN TECLEAR ~AYUDA~ AL COMENZAR]]^^"; print "Eres Joseph Perez, el aprendiz y ayudante de Lupin IV, el autodenominado ~Mejor y más grande ladrón de todos los tiempos~. Tras varios robos por el sur de Francia llegáis a Burdeos por el encargo de un traficante de arte.^^"; EsperarTecla(); print "La misión de Lupin IV es conseguir la estatua de Diana de Versalles cedida temporalmente por el Louvre al museo Museo de Bellas Artes de Burdeos.^^"; EsperarTecla(); print"La tuya, soportar a Luin y su megalomanía...^^"; EsperarTecla(); BorrarPantalla(); ""; ]; ! RUTINAS VERBOSUB [ayudarSub; "^Las órdenes siguientes son básicas y pueden encontrarse en casi cualquier aventura conversacional. El jugador puede y debe tratar siempre de probar otras acciones.^^ n, Norte - Desplazarse al norte.^ s, Sur - Desplazarse al sur.^ e, Este - Desplazarse al este.^ o, Oeste - Desplazarse al oeste.^ Arriba, Subir - Subir.^ Abajo, Bajar - Bajar.^ Ayuda - Esta ayuda.^ ex x, examinar x - Da una descripción de x.^ habla con personaje - Conversa con un personaje.^ teclear algo en x - Tecleas algo en el objeto.^ coge x, deja x - El objeto x pasa a ser o deja de ser llevado.^ i, inventario - Da una lista de los objetos llevados.^ Puntos - Puntuación obtenida.^ Créditos - Autoría y agradecimientos^ ^^ Manda tus comentarios, donaciones millonarias y proposiciones deshonestas a: mapache2004@@64gmail.com^ "; ]; [CreditoSub; viewimage(mapache,1); print "^Programado por mapache en 2007 para la RapidoComp. Texto de la ayuda, Baltasar el arquero. Agradecimientos a:^ - ZAK, aunque no esté activo, por InformATE y DocumentATE.^ - A Urba por las fotos de los objetos,los informes de errores y los emails ~obligandome~ a publicar esta segunda versión.^ - A los creadores de los módulos Barra, Decorados, Array y SGW.^ - Alessandro y todo el equipo de JIF.^ - A la señora mapache, que me aguanta en la vida real.^ - Y por supuesto a todos los maniacos del CAAD... ¡que nunca falten!.^ ^ ^Las imágenes que aparecen en ~El día del umami~ han sido descargadas de flikr. ^ ^Manda tus comentarios, donaciones millonarias y proposiciones deshonestas a: mapache2004@@64gmail.com.^ "; esperartecla(); clearObjectWindow(0); ]; [XyzzySub; "Cada vez te cuesta más distinguir la realidad de la ficción, ¿Verdad?"; ]; [FormaHablarSub; "[Para conversar con un personaje en esta aventura, debes estar en la misma localidad que él y usar la fórmula ~habla con personaje~.]"; ]; [ HablarConSub; ! Un solo método de comunicación que sustituye a los demás if (uno == Jugador) "Hablar contigo mismo no es muy entretenido.^"; if (uno hasnt animado) "En general, mejor hablar con cosas vivas.^"; print (_El) uno, " no parece", (n) uno, " estar interesad", (o) uno, " en hablar contigo.^"; ]; [ testnset obj flag valor; if(obj.flag==valor){ obj.flag=~valor; rtrue; } else rfalse; ]; ! LINEAS DE GRAMATICA !=====================================================================! ! Para que solo permita "hablar con" ! !=====================================================================! Extend 'di' replace * topic -> formaHablar; Extend 'pregunta' replace * topic -> formaHablar; Extend 'habla' replace * 'con' creature -> Hablarcon * 'con' noun -> Hablarcon * 'a//' creature -> Hablarcon * topic -> formaHablar ; ! Para meter la vara entre los barrotes Extend 'mete' first * noun 'entre' noun -> MeterEntre; [ MeterEntreSub; "No puedes meter ", (el) uno, " entre ", (el) otro,"."; ]; [ TeclearSub; "No parece que tenga teclado."; ]; !=====================================================================! ! Ayuda y créditos ! !=====================================================================! Verb 'ayuda' * -> ayudar * topic -> ayudar; Verb 'creditos' * -> credito * topic -> credito; !=====================================================================! ! PARA TECLEAR DE FORMA CUTRE ! !=====================================================================! Verb 'teclea' * topic 'en' noun -> teclear * -> teclear; !=====================================================================! ! Para poder atar la cuerda ! !=====================================================================! Extend 'ata' last * noun 'en' noun -> atar ; verb 'desata' * noun 'de' noun -> Desatar; [ DesatarSub; if(objCuerda.FLAG_ATADOAVERJA==FLAG_OFF) "La cuerda no está atada a nada...^"; "No ves la cuerda por aquí."; ]; !=====================================================================! ! Para poder retorcer los barrotes ! !=====================================================================! Extend 'retuerce' last * noun 'con' held -> RetorcerCon ; [ RetorcerConSub; "No le veo el sentido a esa acción."; ]; !=====================================================================! ! Para poder atacar ! !=====================================================================! Extend 'ataca' last * 'a//' noun 'con' held -> atacar * 'a//' noun 'utilizando' held -> atacar * 'a//' noun 'empleando' held -> atacar * 'a//' noun 'usando' held -> atacar * 'al' noun 'con' held -> atacar * 'al' noun 'utilizando' held -> atacar * 'al' noun 'empleando' held -> atacar * 'al' noun 'usando' held -> atacar ; Extend 'golpea' last * 'a//' noun 'con' held -> atacar * 'a//' noun 'utilizando' held -> atacar * 'a//' noun 'empleando' held -> atacar * 'a//' noun 'usando' held -> atacar * 'al' noun 'con' held -> atacar * 'al' noun 'utilizando' held -> atacar * 'al' noun 'empleando' held -> atacar * 'al' noun 'usando' held -> atacar ; Verb 'xyzzy' * -> xyzzy ; ! DIALOGOS [ DiEntradaLupin; locMotel.FLAG_APARECIDO=FLAG_ON; print "^ ^Espera. "; EsperarTecla(); print"^ ^No puede ser... coges en tus manos el France Soir, en la contraportada ves una gran foto de Lupin en una terraza de Burdeos. ¡una entrevista a cinco columnas! se vanagloria de nuestros últimos robos, y cuenta al milímetro el golpe en la mansión Clémenceau. Bueno, no cuenta todo, se le ha olvidado mencionar que de no ser por ti le hubieran destrozado esos perros de presa... unos cardan la lana y otros se llevan la fama. ^ ^Te quedas pensando en que si la policia supiera realmente de sus habilidades, no le perseguirían con tantos efectivos... ^"; EsperarTecla(); BorrarPantalla(); viewimage(lupin,1); print " ^ ^De repente, la puerta del cuarto se abre y aparece Lupin, impecablemente vestido, con ese look ~casualmente desarreglado~ que le caracteriza... ^ ^- Venga Joseph, ¡hay que trabajar! ^- Hecho una furia preguntas ¿Qué significa esto?, mientras le muestras el periódico..."; EsperarTecla(); print "^- ¡Qué ultraje! - contesta Lupin indignado - ¡dijeron que iría en primera plana! ^- ¿y dónde queda lo de ser invisibles? ¿dónde la sorpresa? - le recriminas."; EsperarTecla(); print " ^- Tranquilo, mientras tu te divertías, he seducido a la guarda del museo. Hoy desconectará la alarma, y mañana estaremos muy lejos de aquí. ¿has conseguido la furgoneta? "; EsperarTecla(); print " ^- Sí. Por cierto, que se te olvidó contar lo de los perros en Mónaco... y yo como si no existiera. ^- Mira Joseph, ¿sabes lo que es el umami?"; EsperarTecla(); print " ^- No. "; EsperarTecla(); print " ^- Pues es uno de los cinco sabores detectados por la lengua. "; EsperarTecla(); print "Están el amargo, "; EsperarTecla(); print "el ácido, "; EsperarTecla(); print "el dulce, "; EsperarTecla(); print "el salado "; EsperarTecla(); print "y el umami. "; EsperarTecla(); print "¿conoce alguien el umami? "; EsperarTecla(); print "No, ¿verdad? "; EsperarTecla(); print "Pero está ahí... "; EsperarTecla(); print "yo, Lupin IV soy un sabor salado"; EsperarTecla(); print " y tu, mi querido aprendiz de ladrón,"; EsperarTecla(); print " eres umami. "; EsperarTecla(); print "Estás, "; EsperarTecla(); print "haces, "; EsperarTecla(); print "nadie te conoce "; EsperarTecla(); print "y a nadie le importa... "; EsperarTecla(); print "¿lo entiendes? "; EsperarTecla(); print "Y vamos, que llegamos tarde."; EsperarTecla(); print " ^ ^Dicho esto, se va. Comienzas a odiar su prepotencia. ^"; clearObjectWindow(0); ]; [ DiLlegadaMuseo; print "^^ ^Subes a la furgoneta y os encamináis al museo. La zona está perfectamente estudiada, y aparcáis en la plaza que habías ocupado con sacos de obra, mientras Lupin se dedicaba a vivir la vida loca... ¿cuándo te pagará lo que te debe? En cuanto lo haga, le dejas. Estás harto... ^ ^- Venga, fuera. ^^"; EsperarTecla(); print "^Sales de la furgoneta, respiras hondo y observas el museo. Dentro está vuestro objetivo. ^"; EsperarTecla(); BorrarPantalla(); move psiLupin to locMuseoFachada; ]; [DiNoMuseo; !BorrarPantalla(); viewimage(lupin,1); print "^ ^Lupin se acerca y te dice: ^ ^- ¿Cómo vamos a entrar? "; EsperarTecla(); print "^ ^- ¿qué? - le replicas – Ese era TU trabajo... ¿no lo has planeado? ^ ^Lo de este tio es increible. No sabes en que pensabas cuando aceptaste ser su ayudante. ^ "; EsperarTecla(); print "^- Ummmm, es, es una prueba - dice con su mejor sonrisa - para ver si estás preparado. Yo he conseguido desconectar la alarma, que era lo dificil. Te espero en el coche, que empieza a hacer frio. Avísame cuando acabes. ¡ah!, no tardes. ^ ^Sin perder la compostura, se mete en la furgoneta y recuesta el asiento. ^"; !psiLupin.FLAG_ENCOCHE=FLAG_ON; clearObjectWindow(0); move psiLupin to objFurgoneta; ]; [DiAcabado; viewimage(lupin,1); print" ^- ¿has acabado?, perfecto. Coge la plataforma de la furgoneta y ven. ^ ^Te empuja a un lado y entra en el interior del patio del museo."; EsperarTecla(); print" Suspiras y decides que no merece la pena discutir. Empiezas a creer que tiene razón, eres umami. ^ ^Haces caso a tu mentor, así que coges la plataforma y le sigues al interior del museo mientras aguantas sus estúpidos comentarios sobre sabores... ^ ^"; clearObjectWindow(0); move psiLupin to locSala; jugadorA(locSala); ArrancarReloj(objDespertadorCogeEstatua,3); ]; [DiCogeEstatua; viewimage(lupin,1); print " ^- Coge la estatua y ayudame a ponerla en la plataforma, dice Lupin mientras se coloca en posición. ^"; EsperarTecla(); clearObjectWindow(0); ]; [DiTraicion; print" ^Cuando levantáis la estatua entre los dos, sin previo aviso, Lupin suelta la escultura. ^ "; EsperarTecla(); print"^ ^Te caes ^ "; EsperarTecla(); print"^ Diana cae sobre ti "; EsperarTecla(); print"^ No puedes moverte "; EsperarTecla(); print"^ Lupin se rie "; EsperarTecla(); viewimage(lupin,1); print"^ ^- Mi querido amigo, los sabores son caprichosos, y ya me he cansado del umami... a la policia le encantará encontrarte en la escena del robo. ^ ^Dicho eso, ves como descuelga El Martirio de San Jorge, de Rubens y se va silbando por los pasillos del museo. "; EsperarTecla(); clearObjectWindow(0); print"^ Te desmayas del dolor. "; EsperarTecla(); BorrarPantalla(); print"^ ^ ^¡Mierda! ¿cuánto tiempo habrá pasado? ¿qué habrá sido de Lupin?... con un gran esfuerzo logras ponerte en pie y evaluar la situación. ^ ^Todavía es de noche y puedes escapar. ^"; move psiLupin to locLimbo; move objCocheBueno to locMuseoO; move objTarjeta to locSala; move objFurgoneta to locLimbo; locSala.FLAG_EN_PIE=FLAG_OFF; <>; ]; [DiFin; print"Con el destino fijado en el coche, le haces el puente, y siguiendo la dulce voz del gps llegas a la estación de trenes. "; EsperarTecla(); BorrarPantalla(); print"^ ^El resto ya lo sabes... ^"; EsperarTecla(); print"^Al abrir la consigna encontraste el maletín con el suficiente dinero para retirarte y el billete de tren a mónaco. ^"; EsperarTecla(); print" ^Al día siguiente viste como el periódico destacaba que habían detenido a lupin con las manos en la masa."; EsperarTecla(); print" Le había denunciado la guardia de seguridad, y aunque insistía que la culpa era de un complice, nadié le creyó nunca."; EsperarTecla(); viewimage(fin); print" ^ ^Desde entonces, todos los días de tu vida son el día del umami.... ^"; puntuacion++; banderafin=2; ];