Constant Historia "^El libro que se aburría.^"; constant titular "^ (C) 2003 Jenesis ^ Puede distribuirse libremente bajo licencia GNU GPL^" ; Constant NO_PUNTUACION; constant HAY_CURIOSIDADES; constant NO_LUGARES; CONSTANT ADMITIR_COMANDO_SALIDAS; release 3; global sos; Replace LugarNuevo; Include "EParser"; Include "otrobox"; [LugarNuevo; if(localizacion~=ordenador) borrarpantalla();]; [ TrasElPrompt; ]; [ AntesDelParsing; print"^"; ]; [curiosidades; "El objetivo de esta aventura es introducir a los no iniciados en el maravilloso mundo de las ~Aventuras conversacionales~, también conocido como ~Relatos interactivos~ o ~Aventuras de texto.~^ He intentado hacer la historia lo más interactiva posible, para demostrarte que el único límite de este género casi olvidado de ~juegos~ para ordenador, es nuestra propia imaginación.^ Tal vez quieras (si no lo has hecho) intentar encender el fuego de la chimenea una vez apagado; o esperar con la cerilla encendida en la mano hasta ver lo que ocurre. ^Hay un escondite en la planta baja, dentro hay un guante, la autora lo ha usado para evitarse tener que apagar el fuego y poder coger las habichuelas, mientras testeaba la aventura. La forma de acceder a él es simplemente poner ~X escondite~.^^ Espero que al menos te haya quedado el suficiente buen sabor de boca, como para intentar suerte con tu segunda aventura.^ En caso contrario te animo a que lo hagas, hay montones de historias mucho más interesantes que ésta y que están esperando que alguien responda a su llamada. ^No dejes que se aburran..."; ]; !!!!!!completar Switch object mensajeslibreria with antes [; nadar: "Olvídalo, no eres una ballena."; saltar: "Los sismógrafos de la zona registran un movimiento sísmico de cierta consideración... pero no te has movido del sitio.^ ¿Querías saltar algo en particular?"; atacar: "-No pienso hacerte caso.^Odio la violencia gratuita."; Sacar: switch(ml_n) { 1: "Por desgracia ", (el) parent(ml_o), " ",(esta) parent(ml_o), " cerrad", (o) parent(ml_o), "."; 2: if (otro has animado) "¡Pero si no ", (lo) ml_o, " tiene", (n) otro, "!"; "O lo que dices no está ahí dentro, o forma parte de ello.^ No lo puedes sacar."; 3: if (palabra_verbo=='quita') "Quitad", (o)ml_o, "."; "Sacad", (o) ml_o, "."; } Hablar: switch(ml_n) { 1: "Hablar por hablar no conduce a nada."; 2: "¿Sabes su idioma?."; } VaciarEn: switch(ml_n) { 1: print_ret "No se puede."; 2: print_ret (_El) ml_o, " ", (esta) ml_o, " cerrad", (o) ml_o, "."; 3: print_ret (_El) ml_o, " ya ", (esta) ml_o, " vací", (o)ml_o, "."; 4: "No puedes vaciar ", (el) ml_o, "sobre sí."; } prompt: style bold; switch (random(10)){ 1: "^Te toca a ti... "; 2: "^¿Qué hacemos ahora... ? "; 3: "^Es tu turno... "; 4: "^Espero tus órdenes... "; 5: "^¿Qué hacemos, tronco... ? "; 6: "^Venga colega... "; 7: "^¿Y ahora...? "; 8: "^¿Su merced desea algo más... ? "; 9: "^Tú mandas, colegui... "; 10: "^Su señoría tiene la palabra... "; } Preguntar: "Jejé, como si lo supiera..."; Cantar: "Que llueva que llueva..."; Esperar: "En algunas aventuras es una orden muy útil... ^En ésta ni te molestes."; Dormir: "¿Ahora precisamente?"; Consultar: "La mejor manera de encontrar algo es mirar todo con detenimiento."; quemar:"No seas pirómano."; Miscelanea: switch(ml_n){ 38: "No conozco ese verbo."; 10: sos++; if (sos>9) sos = 1; switch (sos){ 1: "1: Para moverte puedes usar 'n'(norte) 's'(sur) 'e'(este) 'o'(oeste) 'abajo' 'arriba' 'salir' o 'entrar'"; 2: "2: Para saber en qué direcciones puedes moverte escribe SALIDAS"; 3: "3: Para ver de nuevo el ESCENARIO escribe 'MIRAR (M)'."; 4: "4: Para ver algo del escenario escribe 'EXAMINAR(EX) loquesea'. ^Por ejemplo; ex casa, ex suelo, ex lobo."; 5: "5: Puedes manipular o interactuar con la mayoría de lo que se describe en el escenario. Puedes por ejemplo, mover loquesea, saltar loquesea o abrir loquesea."; 6: "6: En casi todas las aventuras puedes utilizar tanto infinitivos 'COGER' como imperativos 'COGE'."; 7: "7: Puedes salvar la partida con 'SALVAR' y recuperarla más tarde con 'RECUPERAR'"; 8: "8: Para dejar de jugar escribe 'FIN' y para volver a empezar 'REINICIAR'."; 9: "9: Para ver lo que llevas encima escribe 'INVENTARIO (I)'."; } 19: if (puente.tur>0 && jugador in claro){ rio.mirado++; "Eres un enorme ogro, más ancho que alto y con un peso exacto de 300 kilos.^^-Ops, creo que algo se ha trastocado tras mi metamorfosis...^ Bueno, lo malo es que te has cargado el puente... pero puedes investigar otra forma de cruzar el río.^Una orden muy útil en estos casos es la de EXAMINAR (EX). ^¿Por qué no lo intentas con el río y con el puente?^Sólo tienes que poner:^EX RÍO"; } if (jugador notin claro && rio.mirado>0) "Eres un enorme ogro, más ancho que alto y con un peso exacto de 300 kilos."; else "Por ahora eres tú mismo."; 30: "Así, a simple vista no veo eso que dices. ^¿Seguro que lo has escrito bien?"; 32: "Pero... ¿lo tienes en tu inventario?"; 33: "¿A la vez?... ¡Naahhhh!"; 37: "Sólo puedes hacer eso con seres vivos."; 38: "No sé a qué te refieres..."; 39: "Interactuar con eso no te ayudará a terminar la aventura."; 42: !!!! he cambiado /else print "o" ;/ por /else print (o) uno;/ if (ml_o==0) "No hay suficientes."; else if (ml_o==1){ print "Aquí sólo hay un"; if (objeto_multiple-->1) print (o) objeto_multiple-->1; else print (o) uno; " disponible."; } else "Sólo hay ", (number) ml_o, " disponibles para esa acción."; 44: if (accion_que_seria == ##Dejar) { print "¡No llevas eso,"; if (children (jugador)) " no lo puedes dejar!"; else "!"; } print "No hay nada para "; IdiomaVerbo(palabra_verbo); "."; } ]; Include "Acciones"; Include "BajoNivel"; !!!!!!!!!!!!!!!!!!!!!! clases y rutinas class combustible with antes[; meter: if (otro == fuego or chimenea && fuego in chimenea) <>; quemar, encender: if(otro==cerilla or llama) <>; if (self in chimenea) <>; if (self notin jugador); if (fuego in chimenea && self in jugador){ if (self == cerilla) move self to caja_cerillas; else remove self; "Arrojas ",(el) (self), " al fuego, y contemplas extasiado como las llamas tornasoladas ", (lo) self, " devoran hasta que sólo quedan cenizas."; } else if (self in jugador) "Para quemar algo, lo mejor es encender un fuego en la chimenea."; prender: if (fuego in chimenea) { "¿Quieres quemar ", (el) (self), "? ^Écha",(lo) uno, " a la chimenea, de otro modo puede resultar peligroso."; } else <>; ], ; !!!!!!!!!!!!! limbo !!!!!!!!!!!!!! !!! object limbo; !!! object hoja "hoja" limbo with nombre_f 'hoja''pagina', adjetivos 'papel''palabras''letras', genero G_femenino, inicial "Una HOJA de papel arrancada de un libro, llama poderosamente tu atención.", describir[; if (self in puerta_entrada) "Parte de una hoja asoma por debajo de la puerta de entrada."; ], descripcion "Parece la última página del libro que fui una vez. ^Es de color azul y en ella se puede leer ~Y colorín colorado... ~. ^Es una página indispensable cuando se quiere terminar un relato.", antes[; dejarsalir: if (uno == llave_oxidada) "Tendrás que tirar de la hoja para arrastrar la llave hasta aquí."; examinar, consultar: if (llave_oxidada hasnt general) return self.descripcion(); else { borrarpantalla(); banderafin = 2; print "^^... y entonces, de esta manera tan ingeniosa, el ogro recuperó la llave; y no sin antes zamparse una silla de chocolate, una cortina de merengue y una viga de mazapán, abrió la puerta, y se largó con el ganso de oro a rescatar una rana encantada a la que una mala bruja había transformado en princesa...^Bueno, pero esa es otra historia.^^ Y colorín colorado... este cuento se ha acabado.^"; esperartecla("Pulsa una tecla... ",300); borrarpantalla(); print"^^"; box " A la memoria de los ~Cuenta-Cuentos~. " " Porque hubo un tiempo, en el que contar " " un relato era cosa de dos... " " " " FIN "; font off; rtrue; } atacar, quemar, dejar: "¿Quieres convertir esto en otra ~Historia Interminable~?"; meter, ponersobre: if((otro == puerta_entrada or rendija)&&(self in jugador)){ move self to rendija; "Introduces la hoja bajo el hueco de la puerta dejando una pequeña parte asomada a este lado."; } else <>; coger, tirar, sacar: if (self in rendija && llave_oxidada in self){ if (ganso notin saco) "¿Te vas a ir con las manos vacías?"; else print "^^Tiras de la hoja con cuidado, para no perder la llave que imaginas ha caído encima al ser empujada por el hueso. ^Pero asombrosamente la llave no aparece sobre la hoja. ^En su lugar ves unas palabras que alguien ha escrito con jarabe de fresa...^^"; give llave_oxidada general; move llave_oxidada to limbo; move self to jugador; rtrue; } ], has soporte; !!! object llave_oxidada "llave oxidada" limbo with nombre 'llave''llaves', adjetivos 'oxidada''pesada', descripcion [;if (self in cerradura_) "Está puesta por el otro lado de la cerradura"; if (self in hoja) "Ha caido al otro lado de la puerta."; "Es una vieja y oxidada llave.^-Yo diría que hace juego con la puerta."; ], antes[; tocar, probar, oler: if (self in cerradura_||hoja) "No puedes desde aquí."; meter: if(otro==puerta_entrada or cerradura) "Si lo que quieres es ABRIR LA PUERTA CON LA LLAVE, escríbelo."; sacar: <>; coger: if (self in cerradura){ if (puerta_entrada has abierto) print "Al tirar de la llave hacia fuera, la puerta se cierra.^"; give puerta_entrada ~abierto; give puerta_entrada cerrojoechado; } empujar: if(self in cerradura_) if(otro~=hueso) "Busca algo apropiado para empujarla."; if((hoja notin rendija)&&(jugador in pbaja)) "Si la llave cae ahora al otro lado, no podrás recuperarla."; if(llave_oxidada in hoja) "Ya ha caido al otro lado."; if (otro == hueso){ move llave_oxidada to hoja; "Empujas la llave con el hueso y oyes como la llave cae al otro lado de la puerta."; } ], has femenino; !!! object bascula "BÁSCULA" limbo with bandera 0, !!!imprime el mensaje del inventario lleva_cosas 0, !!! comprueba que ya ha utilizado el inventario nombre_f 'bascula''pesa', nombre_m 'peso', genero G_femenino, descripcion "La ha puesto aquí la autora del juego para que comprobases una cosa... ^ Si quieres utilizarla ¡PÉSATE!", antes[; coger: "Bueno, no pensarás ir cargado todo el día con eso..."; subir:<>; pesarse, meterse: if (bascula.bandera == 0) {bascula.bandera++ ; "La aguja marca 310 Kg. ^^-Vaya, tu descripción decía que ~sólo~ pesabas 300 kilos... ^¿Y ese peso extra? ^Creo que es hora de que conozcas lo que es el inventario. ^Pon INVENTARIO (I)";} else "-Vamos, no te estarás obsesionando con tu peso ¿verdad? ^ Ya sabes que para averiguar lo que llevas, has de escribir: ^ INVENTARIO (I)."; ], has femenino soporte estatico; !!! object felpudo "felpudo" limbo with nombre_f 'esterilla', nombre_m 'felpudo', inicial [; print "Debajo de la puerta puedes ver un FELPUDO...^^-¡Cómo!^¿Que no te lo enseñé antes?^Etoooo, se me olvidó... jejé.^"; ], descripcion [; if (bulto in felpudo){ "La base es de esterilla, pero las cerdas son hebras de cabello de ángel. En un lado observas un BULTO sumamente sospechoso..."; } else "El mismo felpudo de antes"; ], antes[; subir: "Ves el mismo paisaje que desde abajo."; coger: "No hace falta, solo tienes que moverlo para ver lo que hay debajo."; comer: "No seas guarro..."; mirardebajo, empujar: if (felpudo hasnt general){ remove bulto; felpudo.inicial =null; move bascula to entrada; esperartecla("¡¡Cielos!!^^", 6); esperartecla("¡¡Diantres!!^^", 8); esperartecla("¡¡Por Tutatis!!^^",12); esperartecla("¡¡Oh nooOOOOO!!^^",16); print"De debajo del felpudo sale una víbora rabiosa y te muerde en la mano causándote la muerte inmediata ... ^^"; esperartecla("-Jejjeje... ",8); esperartecla("jajajajajj... ",12); esperartecla("juasjuas... JUASJUAS^^^",16); esperartecla("Pulsa una tecla, anda... "); Borrarpantalla(); print"^Ejemmm... era broma, esto es sólo para que nunca te fíes de las acciones dudosas, a veces ocultan sorpresas...^En este caso tal vez no era del todo evidente, pero te recomiendo que antes de hacer algo sospechoso, salves la partida usando SALVAR (SAVE), así después puedes volver a ese punto con el comando CARGAR (LOAD), aunque el juego se haya terminado.^^¿No se te ocurre nada más?^^"; esperartecla("",150); print "^Odio dar las soluciones.^"; esperartecla("Hummmm , déjame pensar...^",20); esperartecla(" ¿....? ^",12); esperartecla(" .......^^",20); print"¡Ya está, vuelve a mirar la escena (M)!!!^"; remove felpudo; return true; } else "Ahora solo te sirve para limpiarte los pies."; ], has soporte; !!! object bulto "bulto del felpudo" felpudo with nombre 'bulto', descripcion "Parece que hay algo bajo el felpudo.", antes [; "No sabrás lo que es hasta que no levantes el felpudo o mires debajo."; ], has escenario; !!! object tapas "tapas" limbo with nombre_f 'tapa', nombre_fp 'tapas', genero G_femenino+G_plural, descripcion "Son las tapas de un libro de cuentos.^-Las llevas puestas a modo de... de... bueno, digamos que tienes cierta pinta de ~hombre anuncio~.", antes[; desvestir: "¡Ni se te ocurra! ^-Recuerda que soy un cuento de niños."; examinar: rfalse; default: "Es la ropa que llevas puesta y es de una firma de diseño.^Haz el favor de no jugar con ella."; ], has femenino nombreplural prenda puesto; !!! object babuchas "babuchas" limbo with nombre 'babuchas', descripcion "Son unas babuchas de seda azul. Parecen sacadas del cuento de ~Aladino~.", antes[; desvestir: "Tu madre no te deja andar descalzo."; examinar: rfalse; default: "Es la ropa que llevas puesta y es de una firma de diseño.^Haz el favor de no jugar con ella."; ], has femenino nombreplural prenda puesto; !!! object capa "capa" limbo with nombre 'capa''caperuza''caperucita''capucha''capuchita', descripcion "Es una capa con una preciosa caperucita roja adornada con dos hermosos lacitos, que tu abuelita te regaló el invierno pasado.^^-Glups, ya estamos... ", antes[; desvestir: "¡Ni de coña! ^^-Eres una niñaieeeii... digooo... un ogro muy pero que muy presumido, y te gusta como te sienta."; examinar: rfalse; default: "Es la ropa que llevas puesta y es de una firma de diseño.^Haz el favor de no jugar con ella."; ], has femenino prenda puesto; !!! object hueso "hueso" limbo with nombre 'hueso', antes[; coger, sacar: if ((self in cama) && (cerilla in jugador)&& (cerilla has encendido)) print "Alargas el brazo y con cuidado de no despertar al lobo alcanzas el hueso.^"; dejar: if (otro == pozo) "Lo perderás para siempre."; else "No dejes basura en cualquier sitio."; meter, ponersobre: if (otro==rendija)"No es el hueso lo que tienes que meter por ahí."; if (localizacion == pbaja && otro == cerradura_) <>; else "¿Ya estamos dejando basura por ahí?"; ], descripcion[; if (self in jugador)"Es un hueso largo y delgado de pollo.^ Te recuerda al que enseñaba Hansel a la bruja cuando ésta quería comprobar si el niño estaba ya lo suficientemente gordo como para comérselo."; else "No lo distingo bien, cógelo para verlo mejor."; ], has oculto; !!! object llama "llama" limbo with nombre_f 'llama''llamita', descripcion "La danza de la llama te hipnotiza por unos instantes.", antes[; tocar: "¡Ouch!"; probar: "¿Tienes fiebre?"; apagar, soplar: <>; ], has estatico luz; !!! object mancha "mancha negruzca" limbo with nombre 'mancha', adjetivos 'negruzca', descripcion "Una mancha negruzca es lo único que queda de la cerilla.", antes[; tocar: "Sólo conseguirás mancharte."; ], has femenino escenario; object tronco "tronco" limbo with nombre_m 'tronco', nombre_f 'mata', genero G_masculino, adjetivos 'habichuelas''judias', descripcion "Un recio y firme tronco se alza desde el huerto pegado a la pared de la torre.^Creo que podrás subir por él.", antes [; meterse, trepar: <>; regar: "Ya ha crecido, no hace falta."; atacar, cortar: "Talarías las escaleras de tu casa..."; ], has escenario; object tronco_caido "restos del tronco" limbo with nombre 'restos', adjetivos 'tronco''habichuela', describir "Bajo la torre puedes ver los restos del tronco de la habichuela gigante,", antes[; "Esos restos no son ya de tu interés."; ], has estatico nombreplural; !!!!!!!!!!!!!!!!!objetos comunes !!! object dedos "dedos" with nombre 'dedos''pies''manos''brazos''piernas''tripa''pecho''cabeza''ojos' 'orejas''nariz''dedo''mano''pierna''ojo''pie''pelo''pelos' 'barriga', esta_en ordenador claro entrada pbaja jardin torre, antes[; "Mira, no estamos en el médico. Mejor nos olvidamos de la anatomía humana ¿vale?"; ], has nombreplural escenario oculto; object paredes "paredes" with esta_en entrada pbaja jardin, nombre 'paredes''muros''tabiques', descripcion "El bizcocho está tan duro que es incomestible.", antes [; comer: "¿Quieres perder los dientes?^¿No has leído la descripción?"; ], has escenario; !!! object relato "relato" with nombre 'relato''cuento''libro', esta_en ordenador claro entrada pbaja jardin torre, antes[; default: "Olvidas que ya no soy un libro."; ], has escenario; !!! object ordenador_ "ordenador" with esta_en ordenador claro entrada pbaja jardin torre, nombre_m 'ordenador', nombre_f 'computadora', genero G_femenino, antes[; default: "No me toques los circuitos... que me irrito"; ], has escenario; !!! object pantalla "pantalla" with esta_en ordenador claro entrada pbaja jardin torre, nombre_m 'monitor', nombre_f 'pantalla', genero G_femenino, antes[; default: "Mira, la pantallita ni tocarla, que luego todo son marcas y no veo lo que digo."; ], has escenario; !!! object teclado_ "teclado" with esta_en ordenador claro entrada pbaja jardin torre, nombre_m 'teclado', nombre_fp 'teclas', nombre_f 'tecla', genero G_masculino, antes [; default: "¿No tienes bastante con aporrear", (lo) self, "?"; ], has escenario; !!!!!!!!!!!!!!!!!!!!!!!! INICIALIZAR !!!!!!!!!!!!!!!!!!!!!!!!! [inicializar o; objectloop (o ofclass Personaje) { o.InicializarQuips(); } localizacion=ordenador; font off; print "Érase que se era un libro que vivía en una estantería. ^Dentro de sus tapas, guardaba cuatro hermosos relatos dulcemente arropados por dos hojas de un vivo color azul. ^Tal vez porque eran sólo cuatro, o porque siempre contaban la misma historia una y otra vez de principio a fin; el libro se aburría soberanamente con estos eternos monólogos. ^Él se consideraba un libro culto, y como a todo ser de dicha condición le complacía en extremo el arte de la conversación, pero ¡ay! nadie conversa con un libro. ^La gente habla con otras personas, con algunos animales incluso con esa caja tonta que está unida a un montón de teclas de plástico, pero nadie, absolutamente nadie conversa nunca con un libro. ^Al menos hasta ahora...^^ Para continuar, pulsa cualquier tecla.^"; esperartecla("^Continuar..."); borrarpantalla(); print "^^"; box " " " Un relato entre dos repartido, " " tú has de manejar las letras " " y con ellas su destino. " " Si no aciertas las respuestas, " " no encontrarás el camino. " " "; font off; esperartecla("^Continuar..."); borrarpantalla(); modomirar=2; ArrancarDaemon(arpa); ]; !!!!!!!!!! ORDENADOR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! object ordenador "Delante del ordenador." with descripcion[ok; print "^Estás delante de tu ordenador. Acabas de comenzar un juego basado en una historia interactiva en la que tú mismo eres el protagonista...^En la pantalla puedes leer: ^^ -Oye... ¿te has enterado bien? Me refiero al verso del cuadrito... sí eso del relato repartido entre dos y todo ese rollete...^Responde sí, o no.> "; ok=SioNo(); if(ok==1){ borrarpantalla(); print "^-Eso está bien... ^¡Buff! me siento extraño ¿sabes? Tengo la sensación de estar desnudo. Echo en falta mis hojas y sobre todo mis hermosas tapas de cartón, eran muy chulas y parece que no, pero abrigaban lo suyo. ^Bueno, pues si ya lo has leído, sabrás que este relato es cosa de dos, y no me refiero al hecho de que tengas que pasar mis páginas...^Perdón, es que no me acostumbro; quiero decir al hecho de que tengas que darle al ~INTRO~ de vez en cuando; me refiero a que tú tomas las decisiones, vamos que si las cosas no acaban bien, o lo que es peor, no llegan a acabar, será culpa tuya...^"; EsperarTecla( "^Continuar..." ); BorrarPantalla(); print" ^-Para jugar una conversacional, hay que tener imaginación; una poca más de la necesaria para leer un libro y bastante menos de la que hace falta para escribirlo. ^¿Qué tal andas de imaginación? vamos a comprobarlo... ^^Nuestro protagonista (tú) ha cruzado un bosque para visitar a su abuelita a la que quiere visitar por encargo de su mamá... ^Ejemm, bueno verás... es que yo en principio era un libro de cuentos ¿recuerdas?^^Procura ser escueto en tus órdenes, quiero decir, que si vas a coger una manzana del suelo, no me pongas:^COGE LA MANZANA QUE ESTÁ EN EL SUELO JUNTO AL BANCO EN DONDE ME QUEDÉ DORMIDO UN DOMINGO POR LA TARDE.^Bastará con que pongas un simple:^COGE LA MANZANA"; esperartecla("^Continuar..."); Borrarpantalla(); print "^Si quieres recibir instrucciones de cómo se juega, una vez hayamos iniciado la aventura pulsa 'INTRO'. ^Sí, ya sabes... la tecla grandota.^^ ¿Vale? Pues allá vamos...^"; esperartecla("^Continuar..."); BorrarPantalla(); jugadorA (claro); rtrue; } else { borrarpantalla(); print "^^"; box " Un relato entre dos repartido, " " tú has de manejar las letras " " y con ellas su destino. " " Si no aciertas las respuestas, " " no encontrarás el camino. "; font off; print"^^"; ordenador.descripcion(); } ], has luz; !!!!!!!!!!!!!!!!!!!!!!!!!!!!CLARO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! object claro "Delante del puente." with irrelevante 'claro' 'bosque' 'camino''aguas''agua', descripcion [; if (puente.tur==0){ "-Imagina que estás en un claro de un bosque, al otro lado de un riachuelo que te separa de la entrada principal de una CASITA situada al norte.^El camino cruza el arroyo por un frágil y gracioso puentecillo que juega con las alegres aguas cantarinas... ^Ejemm, otra vez... lo siento de verdad, no lo puedo evitar... ^^No olvides que pulsando la tecla INTRO, recibirás instrucciones de cómo jugar. ^^Para moverte puedes utilizar los puntos cardinales o palabras como SUBIR, BAJAR, ENTRAR etc. ^Por ejemplo:^CRUZA EL PUENTE o simplemente NORTE (N)."; } else "Estás en un claro del bosque. Al otro lado de un pequeño arroyo que te separa de la entrada principal de una casita de cuento de hadas situada al norte. El camino muere en las ruinas de un puente que antaño cruzaba las alegres aguas cristalinas... ^^-¿O eran ~cantarinas~?^ Bueno, está claro que ya no puedes cruzar el puente. ^No olvides que pulsando la tecla INTRO, recibirás instrucciones de cómo jugar."; ], al_n [;<>;], no_puedes_ir "-Lo siento no puedes ir en esa dirección.^Esta aventura es muy lineal y por ahora no puedes abandonar el recorrido establecido.", antes[; mirar: borrarpantalla();rfalse; examinar: if(uno==obj_abajo) "¡Miraaaa, unos pies!"; if(uno==obj_arriba) "¿Qué?^¿Mirando a las avutardas?"; inv: "Oye, aún no te conozco demasiado...^¿No querrás que le deje mis cosas a un extraño?"; entrar: if (otro == 0) <>;], has luz; !=================== objetos claro !!! object puente "puente" claro with tur 0, !!!CAMBIA DESCRIPCIONES DE LOCALIDAD OBJETO Y PERSONAJE. nombre 'puente''puentecillo''puentecito', adjetivos 'gracil''etereo''ruinas''roto''deshecho', descripcion [; if (rio.mirado>0)"Es un puente deshecho por culpa de un ogro patán."; if (puente.tur==0) "Es un grácil puentecillo que parece flotar etéreo sobre el arroyo."; "El puente está hundido y ni siquiera sabes por qué.^¡MIRATE!"; ], antes[; saltarsobre: if (puente.tur~=0)<>; meterse: if (puente.tur==0) {puente.tur++; print "Con paso decidido te dispones a cruzar el río por el puente...^^"; esperartecla("",6); esperartecla(".^^",6); esperartecla("..^^",6); esperartecla("...^^",8); esperartecla("¡¡¡POOOOFFF CHOOOOFFF CHAAAFFF!!! GLUG GLUGLGU.^^",10); esperartecla("¿...?^^",15); "-Glups, vaya... el puente ha cedido bajo tu peso y se ha desmoronado antes incluso de que pusieras los dos pies sobre él. ^¿Te has hecho daño?^Yo que tú me echaría un vistazo por si acaso. ^Es muy fácil, escribe: MÍRATE ";} else "El puente ha sido destruido, mucho me temo que necesitarás hacer otra cosa para cruzar el río. ^No olvides que pulsando la tecla INTRO, recibirás instrucciones de cómo jugar."; ], has escenario; !!! object rio "río" claro with nombre_m 'rio''arroyo''riachuelo''torrente''corriente', nombre_f 'agua', nombre_fp 'aguas', genero G_masculino, mirado 0, !!! impide saltar el río sin mirarse antes descripcion [; if (puente.tur==0){ "río. (Del lat. rius, rivus, arroyo). m. Corriente de agua continua y más o menos caudalosa que va a desembocar en otra, en un lago o en el mar. || 2. Gran abundancia de una cosa líquida, y, por ext., de cualquier otra. Enciclopedia Minisoft EnSobre 2001. ^1995-2001 Minisoft Corporeichson. Reservados todos los derechos. ^^-Jejé... bueno... ¿quién no ha mirado alguna vez la famosa EnSobre?..."; } if (rio.mirado==0) "Mírate a ti mismo antes...^Y ya sabes que si necesitas ayuda, sólo has de pulsar INTRO."; "Es una pequeña aunque profunda corriente de agua. ^Nada que un ogro de tu tamaño no pueda SALTAR.^^-Sabes lo que hay que hacer ¿no? ^¡Venga sin miedo! Esta vez te prometo que no habrá sorpresas."; ], antes[; tocar: "Metes un dedito en el agua con sumo cuidado, pero eso no te sirve para calcular la profundidad."; beber: "Ese agua no lleva ningún tipo de tratamiento químico, seguro que sabe rara..."; saltarsobre: if(puente.tur==0)"¿No sería mejor que cruzaras por el puente?"; else if(rio.mirado>0){ borrarpantalla(); print "^^Con un gracioso saltito pasas al otro lado del río.^^"; esperartecla("Pulsa una tecla.",30); jugadorA (entrada,2); rtrue; } else "-No te dejaré cruzar hasta que no te hayas mirado, así que escribe... ^MÍRATE"; meterse: if (otro==puente)<>; else "Hmm... ¿eres consciente de que si te metes en el río saldrás mojado?"; ], has escenario; !!! object casa_bosque "casa" claro with nombre 'casa''casita', describir "Una acogedora casita te espera al otro lado del río.", descripcion "Es una casita de libro de cuentos.", antes[; examinar: rfalse; default: "Está demasiado lejos."; ], has femenino escenario; !!!!!!!!ENTRADA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! object entrada "Delante de la casa." with irrelevante 'caramelo''chocolate''cerdas''cerrojo''cerradura''goznes''madera' 'lacitos''pared''paredes''bosque''camino', Inicial [; if (entrada hasnt general){ print "^-Buff vaya, qué pena; justo ayer decidí tomarme mi régimen en serio... ^ Te explico...^"; give entrada general; } else rtrue; ], descripcion "Te encuentras delante de la PUERTA principal de la casita. ^No se ven ventanas por este lado pero las tejas son de caramelo, la puerta tiene el color del chocolate, y los ladrillos parecen hechos de bizcocho. ^En la parte trasera de la casa se alza una torre de claro estilo oriental. ^Por si no lo recuerdas, para moverte puedes usar los PUNTOS CARDINALES y cosas como ARRIBA, ABAJO, SALIR, ENTRAR... etc.", al_n [;<>; ], adentro puerta_entrada, al_s "¿Vas a huir?", arriba "No puedes trepar ahí.", abajo "¿Complejo de minero?", no_puedes_ir "No ves forma de pasar por ahí.", antes[; mirar: borrarpantalla();rfalse; salidas: "Salidas visibles: norte, dentro (ENTRAR, que coincide con la salida norte)."; examinar: if(uno==obj_abajo){ if(bascula in localizacion) "Hay una báscula cortesía de la casa."; if(felpudo in localizacion) "Hay un felpudo que ha aparecido por arte de magia."; else "Aún no hay nada interesante en el suelo, pero no dejes de vigilarlo..."; } if(uno==obj_arriba) "De cerca sólo ves las tejas, pero si te separas un poco de la casa ves asomar una torre."; if (uno==obj_n)<>; entrar: if (puerta_entrada hasnt abierta) "^¡Boouummb! ^^-Te das un moñazo contra la PUERTA...^¿No te has dado cuenta de que está cerrada?^No olvides que puedes EXAMINAR(EX) todo lo que se describe en el escenario."; else { give llave_oxidada oculto; move llave_oxidada to cerradura_; give puerta_entrada ~abierto; give puerta_entrada cerrojoechado; jugadorA (pbaja,2); esperartecla("",10); print "^Ñiiiiiieeek..."; esperartecla("",10); "^¡¡BLOOOOOOOUUUUUMMMMM!! ^A tu espalda la puerta se acaba de cerrar con un fuerte portazo.^ -Por cierto, siento comunicarte que la llave se ha quedado puesta por el otro lado.^Jejé, vaya gracia, ahora no podrás salir...^ "; } pesarse: if (bascula in self) << meterse bascula>>; oler: if (cerilla in localizacion && cerilla has luz) <>; inv: if (bascula in localizacion && bascula.bandera>0 && bascula.lleva_cosas <1){ move llave_oxidada to jugador; move tapas to jugador; move hoja to jugador; move babuchas to jugador; move capa to jugador; bascula.lleva_cosas++; } else if (bascula.lleva_cosas <1) "Oye, aún no te has ganado mi confianza. Hazme caso y entonces te dejaré mis cosas."; ], despues[; inv: if (bascula in localizacion && bascula.bandera >0){ print "^^-Vayaaaaa, mira todo lo que llevabas encima y no lo sabías.^¡No te cortes! Puedes examinarlo todo, que para eso lo cargas ¿no?^ Después intenta ABRIR la puerta CON la llave.^^"; bascula.bandera++; return true; } ], has luz; !============== objetos entrada !!! object escenario_ "escenario" entrada with nombre 'escenario''escena''decorado''localidad', esta_en claro entrada pbaja jardin torre, antes[; examinar: "-Hombre, no hace falta ser tan literal.^ Si quieres ver el escenario escribe ~MIRAR(M)~."; ], has escenario oculto; !!! object casa "casa" entrada with nombre 'casa''casita''fachada', descripcion "Parece hecha de retazos de diferentes cuentos", antes[; examinar: rfalse; comer, probar :"¿Quieres comerte el decorado?"; meterse: if (puerta_entrada hasnt abierto) "Primero comprueba que la puerta no esté cerrada, después escribe ~N o ENTRAR~"; else <>; default: "Lo más interesante de esta casa es la puerta.";], has escenario recipiente abierto; !!! object torre_ "torre" entrada with nombre 'torre' 'torreon', descripcion "Es una torre que se levanta en la fachada posterior de la casa. ^Desde aquí no puedes verla bien.", antes[; examinar:rfalse; default:"Está demasiado lejos."; ], has femenino escenario; !!! object tejas "tejas de caramelo" entrada with nombre_f 'teja''cubierta''techumbre', nombre_fp 'tejas', nombre_m 'tejado''techo', adjetivos 'caramelo', genero G_femenino+G_plural, descripcion "Son de caramelo, pero están fuera de tu alcance.", antes[; comer, probar : "He dicho que están fuera de tu alcance."; examinar:rfalse; default:"Está demasiado lejos."; ], has escenario comestible; !!! object ladrillos "ladrillos" entrada with nombre_mp 'ladrillos''bizcochos', nombre_m 'ladrillo''bizcocho', genero G_plural, descripcion "A juzgar por su dureza, estos bizcochos llevan muchos días hechos.", antes[; comer:"Te quedarías sin dientes...^¿Los has mirado bien?"; probar: "¡Puaghhhhh!"; ], has escenario comestible; !!! object ventanas "ventanas" entrada with nombre 'ventanas''ventana', descripcion "-Creo recordar que te dije que NO HABÍA ventanas", antes [; examinar: rfalse; default: "-¡Juas! otro con Windows..."; ], has escenario nombreplural femenino; !!!!!!!!!!!!!!!!!!!!!!!!!PLANTA BAJA!!!!!!!!!!!!!!!!!!!!!!!!!!! object pbaja "Planta baja" with irrelevante 'paredes''pared''mazapan''merengue''escalones''cadena''suelo' 'lacitos', descripcion [; print "Estás en una enorme sala de estar, decorada como una cocina que hace las veces de dormitorio. En la pared este ves una CHIMENEA de cuyo centro cuelga una encantadora CESTITA de mimbre. ^ Una ESTANTERÍA está adosada a una de las paredes y en una CAMA de mazapán, un LOBO ronca estrepitosamente. ^El cuarto tiene tres salidas, al SUR la puerta de entrada, una puerta verde al NORTE y unas ESCALERAS por las que se puede SUBIR hasta la torre.^"; if (torre hasnt visitado) "^Además de los ronquidos te parece escuchar provenientes de la ESCALERA, las notas musicales de un ARPA que interpretan una dulce nana. ^-Hummm, me pregunto qué habrá allí ARRIBA...^"; ], al_n puerta_verde, al_s puerta_entrada, afuera "Teclea la orden SALIDAS para conocer en qué direcciones puedes moverte.", abajo "Estás ya en la planta baja.", no_puedes_ir "No puedes atravesar las paredes.", arriba[; if (arpa hasnt general){ print "Subes los escalones y sientes como crujen bajo tus pies...^^"; esperartecla("",4); esperartecla("Ñiek..^^",8); esperartecla("Te empieza a preocupar que el lobo se despierte...^^",12); esperartecla("Ñiieeek...^^^",16); print"¡¡^^iiiiiiuuUUUUUuuiiiiiuuUUUUuuiiiiiiuuUUUUUUuuiiii... !!^^"; esperartecla ("¿...?^^", 12); "Los agudos y estresantes alaridos del arpa, te obligan a retroceder precipitadamente ante el temor de que el lobo se despierte. ^Tal vez deberías buscar otro modo de subir a la torre.";} else return rellano; ], antes [; mirar: borrarpantalla(); rfalse; dar, lanzar: if (otro == lobo)<>; meter: if(uno~=hoja && otro==puerta_entrada)"Busca un hueco para eso."; if (otro==cerradura_ && uno ~= hueso) "No vas a conseguir nada metiendo eso por ahí."; if (uno==agua && agua in pozo) "Sólo hay agua en el pozo. Tendrás que sacar de ahí primero."; if (uno == agua && otro == fuego or chimenea) <>; if ((otro== chimenea or fuego) && (uno ~~ ofclass combustible)) <>; if (otro==cama)"¿Conseguirás despertar al lobo?"; if (otro==caldero or agua) "No es un lugar adecuado para guardar ", (el) uno, "."; if(otro==rendija && uno~=hoja)"No es eso lo que tienes que meter por ahí."; bajar: "Ya no puedes bajar más."; escuchar: if (arpa hasnt general) "Oyes una mezcla de ronquidos acompasados, notas musicales y una dulce voz cantando una nana.^ "; else "Sólo ronquidos acompasados..."; oler: if (cerilla in jugador && cerilla has luz) "Huele a fósforo encendido."; else "El olor dulzón de la casa lo inunda todo, casi parece que estés en una pastelería o en una tienda de chucherías."; examinar: if (uno==obj_arriba) "El techo está fuera de tu alcance."; if (uno==obj_abajo) "¿Buscas algo? Recuerda que siempre puedes volver a mirar el escenario, escribiendo (M)."; ], despues [; sacar: "Sacad",(o) uno,".^Ahora tienes ", (un) uno, ".^"; ], has luz; !!!!!!!!!!!!!!!!!!!!!!!!!!!!! PUERTA_ENTRADA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! object puerta_entrada "puerta de entrada" with esta_en entrada pbaja, puerta_a [; if (localizacion==entrada) return pbaja; else return entrada;], direcc_puerta [; if (localizacion==entrada) return al_n; else return al_s; ], con_llave llave_oxidada, mira 0, !!!CAMBIA DESCRIPCION PUERTA nombre 'puerta''porton', adjetivos 'entrada', descripcion [; if (localizacion==entrada){ if (puerta_entrada.mira==0){ print"Ves una puerta de madera y tipo castillo, con enormes goznes de hierro negro.^-Yo intentaría primero ABRIRLA, que esté cerrada no significa que tenga el cerrojo echado.^"; !puerta_entrada.mira++; } else "Es la puerta de entrada a la casa."; } else "La puerta por este lado se ve destartalada y vieja. Además está cerrada a cal y canto.^ Una gran cantidad de luz, se cuela por la RENDIJA del suelo.^ El ojo de la cerradura, parece observarte..."; ], antes[; comer, probar: "Aunque parece de chocolate, esa puerta es de madera."; echarcerrojo: if (puerta_entrada has abierto){ give puerta_entrada ~abierto; give puerta_entrada cerrojoechado; "Cierras la puerta con llave."; } abrir: if (puerta_entrada has cerrojoechado && llave_oxidada in limbo){ move felpudo to entrada; "La puerta está cerrada con llave.^^ -Bueno sí, en las aventuras nunca se puede pecar de optimismo... ^ ¿Dónde podrá estar la llave? ^Puedes empezar examinándolo todo, normalmente cualquier cosa que se describe dentro de un escenario se puede examinar; aunque la descripción inicial de esta localidad era bastante complicada ¿quieres recuperarla? ^Para volver a ver el escenario donde te encuentras sólo tienes que poner MIRAR (M) sin añadir nada más.^"; } ], despues [; quitarcerrojo: move llave_oxidada to cerradura; give puerta_entrada abierta; puerta_entrada.mira++; "La puerta se abre con un delicioso ~ñiiieeeeekk~.^ Ahora puedes ENTRAR o ir en esa dirección."; ], has escenario RECIPIENTE femenino puerta abrible cerrojo cerrojoechado; object rendija "rendija" PBAJA with nombre_f 'rendija''holgura', nombre_m 'hueco', genero G_femenino, descripcion "Podrías meter algo por ella, pero no la mano.", antes[; buscaren: "Es incómodo y no se ve apenas nada."; ], has escenario recipiente abierto oculto; !!! object cerradura "cerradura" entrada with nombre 'cerradura', adjetivos 'cerrojo', descripcion "La cerradura que toda puerta que se precie, debería tener.", has femenino estatico recipiente abierto oculto; !!! object cerradura_ "cerradura" pbaja with nombre_f 'cerradura', nombre_m 'ojo''orificio', adjetivos 'cerradura', genero G_femenino, descripcion "Es una negra cerradura de mirada penetrante y profunda...^ -Yo diría que sirve para algo...", antes[; dejarsalir: if (uno == llave_oxidada) "No puedes cogerla desde este lado."; buscaren: if (llave_oxidada in cerradura_) "La luz no pasa por la cerradura, parece que la llave está puesta por el otro lado."; else "A través de la rendija puedes ver tu ansiada libertad."; ], has escenario recipiente abierto; !!!!******************************************************************* object chimenea "chimenea" pbaja with nombre 'chimenea''hogar''cocina''campana', descripcion [; if (fuego in chimenea) "Bajo la enorme campana, el fuego crepita calentando la estancia."; else "Sólo quedan cenizas."; ], antes[; tocar:if(fuego in self)"Cuida te quemarás."; prender, encender: if (fuego in chimenea) "El fuego ya está encendido."; if (cerilla in jugador && pastilla in chimenea && lena in chimenea){ move fuego to chimenea; remove lena; move fuego_ to limbo; remove pastilla; move cerilla to caja_cerillas; "Prendes fuego a la pastilla y a las ramas.^ Al poco tiempo, las brasas se recuperan y el fuego vuelve a arder alegremente dentro del hogar."; } else "Necesitas más cosas para encender un fuego."; apagar: <>; regar:<>; ], despues [; examinar: <>; ], has escenario femenino recipiente transparente abierto; !!!!!!!!!!!!!!!!!!!!!!!!! object fuego "fuego" chimenea with nombre_m 'fuego', nombre_f 'hoguera''fogata', nombre_fp 'llamas', genero G_masculino, descripcion[; if (self in chimenea) "Su peculiar física le da el aspecto de un ser vivo y singular."; else "No veo fuego por aquí."; ], antes [; regar:<>; vaciar:<>; cortar:<>; quemar:"¿Más todavía?"; buscaren:"Las llamas te hipnotizan por unos segundos."; subir:"Ya sube por si solo."; probar: "Te gustan las cosas calentitas ¿eh?"; encender, prender: <>; apagar: if (fuego notin chimenea) "No hay nada que apagar."; else if (caldero in jugador && agua in caldero){ move agua to pozo; move fuego to limbo; move fuego_ to pbaja; "Apagas el fuego con el agua."; } else "Necesitas algo para apagarlo."; oler: "Algo se está quemando."; tocar: "¡Ouch!^¡No seas idiota!"; soplar:"Las llamas oscilan pero no llegan a apagarse"; ], has recipiente abierto escenario; !!! object fuego_ "fuego" limbo with nombre 'fuego', descripcion "Si quieres fuego, lo tendrás que encender.", antes[; encender, prender: <>; default: fuego_.descripcion(); rtrue; ], has escenario oculto; !================ objetos pbaja !!! object pbaja_ "sala" pbaja with nombre_f 'planta''sala''habitacion''estancia', nombre_m 'salon''dormitorio''comedor''cuarto''apartamento', descripcion "Es un apartamento, prácticamente toda la casa está en una sola habitación.^ Tal vez por eso puedes ver infinidad de cosas y utensilios por todos lados.", has escenario; !!! object cosas "cosas" pbaja with nombre_fp 'cosas', nombre_mp 'utensilios''utiles''objetos', genero G_masculino+G_plural, descripcion "Son de todo tipo, y están todo a tu disposición", antes[; "Cada cosa tiene su nombre, utilízalo para referirte a ella."; ], has oculto estatico; !!!!!!!!!!!!!!!!!!!!!!!!!! object cama "cama" pbaja with nombre_f 'cama', nombre_m 'dormitorio', genero G_femenino, descripcion "Es una bonita cama de mazapán en la que está durmiendo un lobo.^ -Vaya, por esta vez el coco no se esconde debajo.", antes[; meterse:"Está ocupada."; comer, probar : "Aunque sea de mazapán, no olvides que está ocupada."; mirardebajo: if(cerilla in jugador && cerilla has luz){ if(hueso in limbo) move hueso to cama; if(hueso in cama) "A la luz de la cerilla ves un hueso que sobró de la última cena del lobo."; } else{ move hueso to limbo; "Está muy oscuro y apenas ves nada."; } ], despues[; examinar: <>; ], has escenario recipiente abierto oculto; !!! object escondite "el escondite" pbaja with nombre 'escondite''escondrijo', descripcion "Es un lugar que creó la autora para guardar algo...", has recipiente abierto escenario oculto; !!! object guante "guante" escondite with nombre 'guante', descripcion "Es un guante recio de jardinero.", antes[; vestir: if (cerilla in jugador && cerilla has luz) print "Te cambias la cerilla de mano...^"; ], has prenda masculino; !!! object lobo "lobo" cama with nombre_m 'lobo''animal''bigote', nombre_mp 'bigotes''dientes', nombre_f 'guinda', genero G_masculino, descripcion "Un lobo con aspecto humanoide, ronca encima de la cama.^ ¡Qué monoooo! ^Todo él es de chocolate. El morro es una enorme guinda almibarada y los bigotes son de regaliz... ^¡Ops! Ahora que me fijo... los dientes sí son de verdad, que cosas oche...", antes[; mihablar: "Está dormido... y es mejor que siga así."; examinar: rfalse; mihablar: "Está dormido... y es mejor que siga así."; default: tate_callao = 1; print "¿Sabes la de aquél que fue a por lana... y salió trasquilado?^"; tate_callao=0; rtrue; ], has animado; !!!!!!!!!!!!!!!!!!!!!!!!! object rellano_ "rellano" pbaja with nombre 'rellano', descripcion "Desde aquí no puedes verlo.", antes[; examinar: rfalse; meterse: <>; default: "No puedes hacer mucho desde aquí."; ], has escenario soporte; !!! object escalera "escalera" pbaja with esta_en pbaja rellano, nombre_f 'escalera', nombre_fp 'escaleras', nombre_mp 'escalones''peldanos', genero G_femenino+G_plural, descripcion[; if (localizacion==pbaja) "La escalera termina en un rellano en el que se puede ver un arpa.^ Es de imaginar que en él habrá alguna puerta, pero no se puede ver desde aquí."; else " La escalera termina en la planta baja."; ], antes[; examinar: rfalse; meterse, subir: <>; bajar: <>; ], has escenario; combustible lena "leña" pbaja with nombre_f 'lena', genero G_femenino, articulo "la", describir [; if(localizacion==pbaja) "Un poco de leña espera ser quemada en la chimenea."; ], descripcion "Algo de leña para quemar en la chimenea.", antes[; meter: if(otro==caja_cerillas or caldero_cuerda or cesta or saco) "Dices cada cosa... ¡No cabe ahí dentro!"; ], ; !!! object arpa "arpa" with articulos "el", esta_en rellano pbaja, nombre_f 'arpa''lira''harpa''boca''voz''musica''nana', nombre_m 'instrumento''rostro''musical', genero G_femenino, adjetivos 'oro''magica''dorada', describir[; if (self hasnt general) "El arpa está cantando una dulce nana."; ], descripcion[; if (self has general) "El arpa está atragantada.^¿Quién la desatragantará?^ El desatragantador, que la desatragante;^ buen desatragantador será."; else if(localizacion==pbaja) "Es un hermoso instrumento. ^Un rostro bellísimamente forjado en metal dorado que vigila atentamente la escalera y el rellano.^ -Yo diría que está guardando algún tesoro maravilloso..."; else "El arpa está en pleno preludio trágico del cuento de Caperucita Roja."; ], daemon[; if (localizacion==pbaja) if ((turnos%5)==0){ print "^Desde la escalera te llega la voz armoniosa del arpa:^ ~Duerme lobiiito, duerme feliiiz.^ Que yo al gansiiito, cuido por tiii~.^^"; } ], antes[; dar: if(otro==polvorones)<>; examinar: rfalse; hablar: "¡Imposible!"; llenar: if (arpa hasnt general && otro==polvorones){ pararreloj(torre); remove musica; give arpa general; parardaemon(arpa); "Aprovechando el asombroso grito del arpa, le llenas la boca de polvorones, hasta que la nota mantenida deja paso a un resoplar de polvo de almendras y azucar molido."; } default: if (arpa hasnt general) "Mientras no sepas cómo hacerla callar, mejor no intentes hacer nada con el arpa."; else "No quieres saber nada del arpa."; ], has escenario recipiente animado; !!! object musica "música" pbaja with nombre_f 'musica''melodia''cancion', nombre_fp 'notas', nombre_m 'ruido''ronquido''sonido', nombre_mp 'ruidos' 'ronquidos''sonidos', genero G_femenino, descripcion "Escuchas la melodía pero no te suena." has escenario oculto; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! object estanteria "estantería" pbaja with nombre 'estanteria', inicial "Una estantería repleta de cosas cuelga de la pared.", Descripcion "Es un buen sitio para dejar cosas.", despues[; examinar: ; ], has escenario femenino soporte oculto; !**************** !!! object ninot "ninot" estanteria with nombre_m 'ninot''muñeco''bicho''bug', adjetivos 'carton''escrito''figura''texto', descripcion "Es un ninot como los que queman en las fallas pero mucho más pequeño. Representa a un bicho feo y asqueroso.^ Tiene algo escrito, que puedes leer si quieres.", antes[; examinar: rfalse; consultar: "Se dice que una aventura tiene un BUG (bicho) cuando dentro de la misma pasan cosas extrañas sin que lo sepa ni el mismísimo autor.^Por ejemplo, que sea noche cerrada... y estés a la sombra de un árbol, que haya una mesa en el escenario sobre la cual no se pueda dejar nada, o que haya una puerta por la cual una vez abierta ¡¡no se pueda salir!!"; default: "Sólo puedes examinarlo, es un ninot indultado."; ], ; !!! object manzana "manzana" estanteria with nombre 'manzana''fruta', descripcion "Te la puedes comer tranquilo, no está envenenada. ^No... tampoco lleva gusano.", antes[; meter: if(otro==caja_cerillas)"No cabe ahí dentro."; quemar: "Hmmm, mejor cómetela."; probar: "Cométela..."; default: if (self in pozo) "Dala por perdida, está en el pozo."; ], has femenino comestible; combustible pastilla "pastilla de gasolina" estanteria with nombre 'pastilla', adjetivos 'gasolina', descripcion "Es una pastilla de gasolina de las que se utilizan para encender barbacoas y fuegos de chimeneas.", antes[; meter: if(otro==pozo or caldero or caldero_cuerda) "Podrías contaminar el agua..."; if(otro==caja_cerillas)"No cabe ahí."; ], has femenino; object lampara "lámpara de aceite" pbaja with pistas 0, nombre_f 'lampara', nombre_m 'candil', adjetivos 'aceite', genero G_femenino, describir "Una LÁMPARA de aceite vieja y sin brillo, parece guardar de forma misteriosa todos los secretos de este lugar.", descripcion [; if (lampara.pistas == 1) "Es justo como te imaginabas, si te ves en apuros te aconsejo que la frotes."; else "Esta lámpara guarda todos los secretos de este lugar. ^Es una vieja lámpara de aceite que le vendió al lobo un viejo mercader oriental...^ -¡Oye! ^¿No tendrá dentro lo que yo imagino?"; ], antes[; buscaren: "Yo creo que debe habitarla un genio, pero la verdad es que no se puede abrir para averiguarlo."; dejar, meter: if (otro == pozo) "No podrás recuperarla."; if (otro==caja_cerillas) "No cabe ahí dentro."; if (otro == caldero or caldero_cuerda) "Si quieres lavarla, mejor frótala."; frotar: if (self.pistas == 0){ self.pistas =1; borrarpantalla(); esperartecla("^A...", 10); esperartecla("Aaah...", 15); esperartecla("AaaaAH...^", 20); esperartecla("¡¡AAAACHÚSSSS!!^^",20); esperartecla("Atónito ves como la lámpara estornuda dejando unas letras de humo flotando en el aire...",10); print"^^"; box " ¡¡ XYZZY !! "; font off; print "^^De repente, surge ante tus ojos un fantástico ser que agita las manos para hacer desaparecer las letras mientras murmura despectivamente: ^-Xyzzy, xyzzy... naaah, tonterías, si ya se la saben todos, yo no sé cuándo van a cambiar la dichosa contraseña... ^ Una vez que la última voluta de humo se ha disipado en el aire, el genio te mira ceremoniosamente y exclama...^"; "-¡Biiieeeeeén! Acabas de descubrir el comando ~PISTAS~; si lo pones tras el cursor te dará consejos o pistas para resolver el juego...^ Y sin añadir nada más y cual escurridizo espagueti, el gran genio es absorbido de nuevo por la lámpara mientras ésta deja escapar un sonoro y ronco eructo."; } else <>; quemar, prender: "Hmmm... no creo que le guste al inquilino."; ], ; !!! object cenizas "cenizas" pbaja with descripcion "Es lo que queda tras el fuego destructor.", antes [; examinar: rfalse; default: "Solo vas a conseguir llenar la habitación de polvo."; ], has oculto; !!*************** object cesta "cesta" chimenea with nombre 'cesta''cestita', descripcion [; if (fuego in chimenea) "Parece una enorme cestita de mimbre y es posible que tenga algo dentro. ^Sorprendentemente no parece que le afecte el fuego que arde bajo ella."; else "Es una cesta incombustible a juzgar por lo poco que le ha afectado el fuego de la chimenea. Tal vez tenga algo dentro."; ], antes[; vaciar, tocar: if(fuego in chimenea) "Te vas a quemar..."; empujar: if(fuego in chimenea)<>; else "La cesta se bambolea un poco y vuelve a quedar quieta."; coger: "La cesta está soldada a una cadena que cuelga del centro de la chimenea. No puedes llevártela, pero puedes MIRAR DENTRO."; dejarsalir: if (fuego in chimenea && guante hasnt puesto){ "No puedes sacar nada, la cesta está muy caliente."; } ], has femenino estatico recipiente abierto; !!! object mimbre "mimbre" pbaja with nombre 'mimbre' 'alambre', descripcion "El entramado de la cesta no está hecho de mimbre sino de alambre.", has escenario; !!! object habichuelas "habichuelas" cesta with nombre 'habichuelas''judias''semillas', descripcion "Son unas semillas mágicas, pero al parecer no sirven para el cocido.", antes [; dejar, meter: if (otro == pozo) "Las perderás para siempre."; if(otro == caldero_cuerda) "No es el lugar adecuado para ponerlas."; sembrar, ponersobre : if (self notin huerto) if (localizacion == jardin && otro == huerto){ move self to huerto; "Entierras las semillas en el suelo removido, bajo la torre.^"; } else "Siémbralas en el lugar adecuado."; else "Ya las has sembrado."; coger, sacar: if (self in huerto)"Están ya enterradas en la tierra."; if (guante has puesto) return false; if (self in cesta && fuego in chimenea) "Intentas cogerlas pero te quemas y no puedes."; regar: if (self in huerto && caldero in jugador && agua in caldero){ move agua to pozo; move tronco to jardin; move self to limbo; esperartecla("^^Riegas las semillas...^",8); esperartecla("^Un pequeño brote surge del suelo...^",10); esperartecla("^¡¡¡Shiiuuu...",3); esperartecla("uuuuu...",3); esperartecla("pop!!!^^",5); "Un tronco ha crecido gigantesco hasta perderse entre las nubes."; } else "O no están en el lugar adecuado o no tienes todo lo necesario."; ], has nombreplural femenino; !!!!!!!!!!JARDIN!!!************************************** object jardin "Jardín" with carga 0, !!variable rocas cargadas irrelevante 'arena''adoquines''sombra''norte''restos''lacitos''tierra''bosque''nubes', al_s puerta_verde, adentro puerta_verde, arriba [; if (tronco in jardin){ print "Trepas por el grueso tronco hasta la ventana de la torre.^"; move tronco to limbo; move tronco_caido to jardin; print "Al saltar del tronco a la ventana escuchas un fuerte crujido a tu espalda.^^"; esperartecla("Crack...^^",15); esperartecla("Cruonch...^^^",15); esperartecla("CraaAAaaakkk.... ¡Bouuuummb!!!!^^",8); esperartecla("El tronco se resquebraja y cae hecho pedazos al jardín.^",30); return torre; } else "No ves forma de subir..."; ], no_puedes_ir "Como en el mundo real, no siempre nos podemos mover a nuestro antojo.", descripcion [; print "El jardín es un oasis donde las palmeras crecen junto a los HELECHOS. Algunas ROCAS de gran tamaño se ven aquí y allá, y un POZO espera las hábiles manos que saquen de su interior el preciado tesoro. Una esbelta TORRE de estilo oriental da sombra a un pequeño HUERTO.^"; if(tronco in jardin) _torre_.descripcion(); if(caldero_cuerda in boca_pozo) caldero_cuerda.describir(); ], antes[; if (accion == ##dejar or ##meter or ##ponersobre or ##desatar or ##lanzar && uno ofclass roca)rfalse; else if( jardin.carga>0) "No puedes concentrarte en otras cosas mientras cargas con la roca."; mirar: borrarpantalla();rfalse; salidas: if (tronco in jardin) "Salidas visibles: sur, dentro (ENTRAR, que coincide con la salida sur), arriba."; else "Salidas visibles: sur, dentro (ENTRAR, que coincide con la salida sur)."; oler: if (cerilla in jugador && cerilla has luz) "Huele a fósforo encendido."; transferir: if (otro == 0) "¿Que quieres vacíar?"; examinar: if (uno==obj_arriba) "¿Crees que lloverá?"; if (uno==obj_abajo) "Tierra, rocas y plantas."; subir: if (uno == caldero_cuerda && roca notin jugador) <>; meter: if (uno==agua && agua in pozo) "Sólo hay agua en el pozo. Tendrás que sacar de ahí primero."; if (otro==caldero or agua) "No es un lugar adecuado para guardar ", (el) uno, "."; ], despues [; sacar: "Sacada.^Ahora tienes ", (el) uno, ".^"; ], has luz; !!! object "pared" jardin with nombre 'pared''muro', descripcion "No tiene nada de particular.", antes[; subir, trepar:"No hay donde agarrarse."; default: "Interactuar con eso no te ayudará a terminar la aventura."; ], has escenario; !!! object jardin_ "jardin" jardin with nombre 'jardin''oasis', descripcion "Es el jardín trasero, pequeño y acogedor.", antes[; oler: "Notas un agradable olor a fresco."; ], has escenario; object puerta_verde "puerta verde" with esta_en jardin pbaja, descripcion "Es la puerta que separa el jardín de la casa.", nombre 'puerta', adjetivos 'verde''jardin', puerta_a [; if (localizacion == pbaja) return jardin; else return pbaja; ], direcc_puerta [; if (localizacion == pbaja) return al_n; else return al_s; ], despues[; abrir: if (jugador in pbaja) "Abres la puerta. ^Ahora se puede ir en esa dirección."; else "Abres la puerta. ^Ahora se puede entrar o ir en esa dirección."; ], has escenario abrible puerta femenino; !=================== objetos jardín !!! object plantas "plantas" jardin with nombre_fp 'plantas', nombre_m 'vegetacion', genero G_femenino+G_plural, descripcion "Las hay de muy diferentes ambientes. Entre ellas ves unas palmeras, y unos helechos." has escenario oculto; !!! object _casa "casa" jardin with nombre 'casa', descripcion "Es la parte trasera de la casa y salvo la torre, no tiene nada de particular.", antes[; examinar: rfalse; comer, probar :"¿Quieres comerte el decorado?"; meterse: if(puerta_verde has abierta) <>; else "Abre la puerta si está cerrada, después escribe ~S o ENTRAR~"; default: "Lo más interesante de esta casa es la puerta y la torre.";], has escenario recipiente femenino; !!! object _torre_ "torre" jardin with nombre 'torre', descripcion[; if (tronco notin jardin) "Es una estilizada torre adosada a la pared norte de la casa. No tiene puerta a este lado pero sí una ventana situada a varios metros del suelo."; else "La torre está casi oculta tras el tronco y las ramas de una gigantesca mata de judías que ha crecido delante de ella."; ], antes[; meterse, trepar : <>; ], has escenario femenino; object ventana_jardin "ventana gótica" jardin with nombre 'ventana', adjetivos 'gótica', descripcion "Es una ventana gótica, pero no desentona del resto de la torre.", antes[; meterse, trepar : <>; examinar:rfalse; default:"Está demasiado alta."; ], has femenino escenario; !!! object helechos "helechos" jardin with nombre_mp 'helechos', nombre_m 'helecho', genero G_masculino+G_plural, descripcion[; if (caldero in helechos) "Un grupo de helechos parece desafiar la atmósfera desértica del jardín. Entre ellos asoma un caldero de metal."; else "Los helechos dan una nota de frescor al jardín."; ], antes[; comer: "No te gusta la verdura."; ], has escenario recipiente abierto; !!! object palmeras "palmeras" jardin with nombre 'palmeras', adjetivos 'palmera', descripcion "Esbeltas y exóticas las palmeras se integran bien en el ambiente oriental del jardín.", antes[; meterse: "No tienen cocos, no merece la pena."; ], has femenino nombreplural escenario; !!!!!!!!!!!!!!!!!! class roca with nombre_corto "roca", nombre 'roca''piedra', antes[; !!desatar: if(self in jugador) <>; subir:<>; lanzar: if (otro == pozo) <>; bajar: <>; coger: if (nivel_pozo.nivel == 2) "Las rocas que quedan son demasiado grandes incluso para un ogro."; sacar: if (otro==pozo) "No puedes sacarla del pozo."; dejar: if(localizacion ~=jardin) "No es un buen sitio para dejar rocas."; if(otro==torre or paredes) <>; meter : if (otro ~=pozo) "¿Dónde la quieres dejar? ^No creo que quepa en cualquier sitio."; else if (caldero_cuerda in pozo) "Saca primero el caldero si no quieres romperlo."; ponersobre: if (otro == huerto || otro ofclass roca) "Si quieres hacer una escalera para entrar a la torre, te aconsejo que busques otro método."; else "Acabarás chafando algo..."; ], despues [; coger: jardin.carga++; switch (random (3)){ 1: "Estas rocas no son fáciles de coger. Menos mal que estás cachas y puedes cogerla."; 2: "Haciendo alarde de tu fuerza coges una de las rocas del jardín. "; 3: "Eliges una roca bastante grande, pero puedes con ella. "; } meter, dejar, lanzar: jardin.carga--; if (otro == pozo){ print "Dejas caer la roca dentro del pozo.^"; nivel_pozo.nivel++; nivel_pozo.descripcion(); rtrue; } ], has femenino oculto; !!! object monton "montón de rocas" jardin with nombre_m 'monton', nombre_f 'rocas', genero G_femenino, descripcion "Un montón de rocas repartidas por todo el jardín.", antes[; coger: "Son grandes, tendrás que cogerlas de una en una."; ], has escenario; !!! roca roca1 jardin; roca roca2 jardin; roca roca3 jardin; !!!!!!!!!!!!!!! object pozo "pozo" jardin with nombre 'pozo', descripcion[; if(caldero_cuerda in boca_pozo) "Está hecho de adoquines de caramelo. ^Un caldero está atado a la cuerda."; else "El pozo está hecho de adoquines de caramelo, una cuerda está pasada por la garrucha. ^Puedes MIRAR DENTRO si quieres."; ], antes[; vaciar:"Es profundo y no puedes."; dejarsalir: if (otro ~= caldero_cuerda or agua) "No puedes."; meterse: "Es muy profundo, no podrás salir."; bajar: "Es muy profundo. No podrás salir."; subir: "Es peligroso, podrías caer dentro."; buscaren:if (caldero_cuerda in self){ nivel_pozo.descripcion(); "Ves un caldero atado a la cuerda."; } ], despues[; buscaren:nivel_pozo.descripcion(); rtrue; ], has recipiente escenario abierto transparente valepuntos; !!! object nivel_pozo "nivel del agua en el pozo" pozo with nivel 0, nombre 'nivel', descripcion[; switch (nivel_pozo.nivel){ 0: print "El nivel del agua está muy bajo.^"; 1: print "El nivel del agua ha subido varios palmos, pero no es suficiente.^"; 2: print "El nivel del agua es ahora suficiente para poder sacarla.^"; } ], has escenario; !!! object caldero_cuerda "caldero atado a la cuerda" with nombre_m 'caldero''cubo''pozal', nombre_f 'cuerda''soga', genero G_masculino, describir "Un caldero cuelga de la cuerda del pozo.", descripcion "Ahora son un caldero y una cuerda atados entre si.", antes[; meterse:"Si lo que quieres es bajar al pozo, ni lo intentes. No podrás salir."; llenar: if(otro==agua && self in pozo) if(nivel_pozo.nivel>1) "Ya se ha llenado de agua."; else "El caldero no llega al nivel del agua."; if(otro==agua && agua notin self) "Tendrás que bajarlo al pozo."; if (otro~=agua) "Ese caldero es para el agua y para nada más."; vaciar: if(agua in self && self notin pozo){ move agua to pozo; "Derramas el agua."; } if(self in pozo)"No puedes sin subirlo primero."; vaciarEn:if(agua in self) <>; meter, bajar, ponerA : if (caldero_cuerda in pozo)"Ya está dentro del pozo."; if (caldero_cuerda in boca_pozo && nivel_pozo.nivel == 2){ print "Dejas caer el cubo por la boca del pozo, hasta que escuchas un chapoteo.^"; move caldero_cuerda to pozo; move agua to caldero_cuerda; rtrue; } else move caldero_cuerda to pozo; "Dejas caer el cubo por la boca del pozo, pero el nivel del agua está demasiado bajo y el agua no entra en el caldero."; ponersobre: if (otro == pozo) <>; else <>; tirar, sacar, quitar, subir, misacar: if (self in pozo){ print "Tiras de la cuerda para sacar el caldero.^"; move caldero_cuerda to boca_pozo; rtrue; } else "El cubo atado y la cuerda ya están fuera."; coger: if(self notin pozo) "El cubo y la cuerda están atados, no puedes coger ninguno sin antes soltarlos."; else <>; desatar: if (self notin pozo){ move caldero to localizacion; move cuerda to pozo; if (agua in self) move agua to caldero; move caldero_cuerda to limbo; print "Desatas el caldero de la cuerda.^"; <>; } else "Tendrás que sacar el caldero del pozo."; default: if (self in pozo)"Tendrás que subirlo primero."; ], has recipiente abierto valepuntos; !!! object agua "agua" pozo with articulos "El" "el" 0, nombre 'agua', adjetivos 'pura''cristalina', descripcion [; if (self in caldero or caldero_cuerda) "Agua pura y cristalina."; else "Es un espejo en el fondo del pozo."; ], antes[; subir: if(self in caldero_cuerda)<>; vaciar: if(self in caldero_cuerda && caldero_cuerda in pozo) "No puedes desde aquí."; if (otro==caldero) <>; else <>; vaciaren, ponersobre: if(self in caldero_cuerda && caldero_cuerda in pozo) "No puedes desde aquí."; if (otro==fuego or chimenea) <>; if (otro) <>; tocar, empujar: if(self in pozo) "No puedes desde aquí."; if((self in caldero_cuerda) && (caldero_cuerda in pozo)) "No puedes desde aquí."; if (self in caldero or caldero_cuerda) "Te mojas los dedos, está fría."; coger: if (otro == pozo or boca_pozo) "Utiliza algo para sacarla."; "Es difícil de manipularla sin un recipiente adecuado, úsalo."; sacar: if(self in caldero_cuerda && caldero_cuerda in pozo) "No puedes desde aquí."; if (otro == pozo or boca_pozo) "Utiliza algo para sacarla."; if (otro == caldero_cuerda) <>; if (otro == caldero ) <>; meter, ponerA, dejar: if(self in caldero_cuerda && caldero_cuerda in pozo) "Ya está lleno."; if (self in caldero or caldero_cuerda && otro == 0){ move self to pozo; "Derramas el agua."; } if ((fuego in chimenea) && (otro == fuego or chimenea)) <>; if (self in caldero or caldero_cuerda && otro ~= caldero or caldero_cuerda) "No te serviría de nada verterla ahí."; if (self in caldero or caldero_cuerda && otro==caldero or caldero_cuerda) "El agua ya está en el caldero."; beber: if(self in caldero_cuerda && caldero_cuerda in pozo) "No puedes desde aquí."; if(self in caldero or caldero_cuerda) "Te echas un traguito."; ], has recipiente femenino abierto; !!! object polea "polea del pozo" pozo with nombre 'rueda''polea''garrucha''roldana', describir "Es la polea que ayuda a sacar el agua del pozo.", has femenino escenario; !!! object boca_pozo "boca del pozo" jardin with nombre 'boca''brocal', adjetivos 'pozo', has escenario soporte femenino oculto; !!! object cuerda "cuerda" pozo with nombre 'cuerda' 'soga', descripcion "Es una cuerda para subir y baja cosas al pozo.", antes [; meterse: <>; coger: "La cuerda es necesaria para sacar y meter agua del pozo, mejor déjala donde está."; tirar: "No hay nada atado a ella, no sacarás nada del pozo."; atar: if (otro==caldero) <>; ], has femenino estatico; !!! object caldero "caldero" helechos with nombre 'caldero' 'cubo''pozal', describir[; if (agua in self) "Ves un caldero que está lleno de agua"; else "Ves un caldero que está vacío."; ], descripcion "Te recuerda al que usan las brujas en sus fogones, pero mucho más pequeño.", antes[; lanzar: if (otro==pozo) <>; llenar: if(otro==agua) "Tendrás que bajarlo al pozo."; else "Ese caldero es para el agua y para nada más."; vaciarEn: if (agua in caldero && otro == fuego or chimenea) <>; if(agua in caldero && otro==huerto or habichuelas)<>; else "No servirá de nada verterla ahí."; vaciar: if(agua in caldero){ move agua to pozo; "Derramas el agua."; } atar: if(caldero in jugador && otro==cuerda){ move caldero_cuerda to boca_pozo; print "Atas el caldero a la cuerda.^ "; if (agua in self) move agua to caldero_cuerda; move caldero to limbo; move cuerda to limbo; rtrue; } if (caldero notin jugador){ "Primero deberías cogerlo."; } else "Utiliza algo con que atarlo."; meter, bajar, ponerA: if (otro==pozo) "Si lo arrojas al pozo sin atarlo a la cuerda, no podrás recuperarlo." ; if(otro==caja_cerillas or saco or cesta) "No es el lugar adecuado para guardarlo."; ponersobre: if (otro == pozo) <>; else <>; subir: "¿Haciendo equilibrismos?"; ], despues [; examinar: <>; ], has recipiente abierto; !!!!******************* object huerto "pequeño huerto" jardin with nombre_m 'huerto''sembrado', nombre_f 'huerta''tierra', adjetivos 'removida''suelta', genero G_masculino, descripcion [; if (tronco in jardin) "Un grueso tronco ha crecido junto a la torre."; if (tronco_caido in jardin) "Esta ocupado por los restos del tronco de la habichuela."; else "Es un pedazo de tierra removida que espera a ser sembrada."; ], antes [; regar: if (habichuelas in huerto){ <>; } else "No hay nada que regar."; sembrar: if (habichuelas in jugador) <>; ], has soporte escenario; !!!!!!!!!!!TORRE object torre "Interior de la torre." with tiempo_restante 0, irrelevante 'lacitos''jardin', abajo "El tronco ha cedido bajo tu peso, no puedes bajar.", afuera [; <>; ], al_e [; if (arpa hasnt general){ if(puerta_torre has abierta) arrancarreloj(self,3); return puerta_torre; } else return puerta_torre; ], descripcion[; if (ganso in saco) "El cuarto ahora se ve vacío. Era más bonito cuando estaba el ganso sobre el pedestal.^ La torre tiene una ventana y una sola puerta de salida."; else "La torre tiene una ventana y una sola puerta de salida."; ], antes[; ponersobre:if(otro==pedestal && ganso notin saco) "El pedestal está ocupado por el ganso."; mirar: borrarpantalla();rfalse; salidas: "Salidas visibles: este, fuera (SALIR, que coincide con la salida este)."; meter: if (otro==caldero or agua) "No es un lugar adecuado para guardar ", (el) uno, "."; oler: if (cerilla in jugador && cerilla has luz) "Huele a fósforo quemado."; meter: if (uno ~= hueso or hoja or ganso) "No serviría de nada."; examinar: if (uno==obj_arriba) "Está oscuro, es posible que haya algún murciélago."; if (uno==obj_abajo) "El suelo parece de roca... pegajosa."; ], tiempo_agotado[; esperartecla("^^Con los nervios destrozados por el insoportable ruido, vuelves a entrar en la torre.^",30); jugadorA(torre,2); ], despues [; sacar: "Lo conseguiste. Ahora tienes ", (el) uno, ".^"; ], has luz; !================ objetos torre object caja_cerillas "caja de cerillas" torre with nombre 'caja', adjetivos 'cerillas''fosforos', descripcion "Es una caja de cerillas mágica, nunca se vacía... con una condición, no puedes usar más de una cerilla cada vez.", listarse[; if (self has abierto){ print"una caja llena de cerillas (que está abierta)"; rtrue; } else { print "una caja de cerillas (que está cerrada)"; rtrue; } ], antes[; !como sacar cerillas se queda en "* noun -> misacar" lo manejo desde ahí. misacar: if(uno==self)<>; sacar: if ('multiinside') <>; vaciar: if(self has abierto){ print "La caja de cerillas es mágica, pero no olvides que has de usarlas de una en una...^"; return true; } else <>; abrir: if(self hasnt abierto){ give caja_cerillas abierto; "Abres la caja de cerillas.^"; } prender: <>; quemar: "Sería mal emplearlas."; dejar, meter: if (otro == pozo or fuego or chimenea) "No lo hagas, la puedes necesitar más tarde."; if (otro==saco) "Ese saco es para el ganso, si metes las cerillas podrías envenenarlo."; buscaren: if (self has abierta) "Está llena de cerillas."; else "No está abierta."; ], despues[; coger: "Has cogido la caja de cerillas."; ], has femenino recipiente abrible ~abierto; !!! combustible cerilla "cerilla" caja_cerillas with nombre_f 'cerilla', nombre_m 'fosforo', genero G_femenino, tiempo_restante 0, descripcion [; if (self hasnt luz) "Es una pequeña cerilla."; else "La cerilla está ardiendo."; ], antes[; prender: if (self notin jugador)"Cógela primero."; if (self hasnt luz){ print "Con un certero movimiento rozas el fósforo sobre una superficie dura y se hace el milagro.^"; give cerilla luz; move cerilla to jugador; move llama to cerilla; arrancarreloj(self,5); rtrue; } else "Ya está encendida."; apagar, soplar: if (self has luz){ give cerilla ~luz; move cerilla to caja_cerillas; move llama to limbo; pararreloj(self); "La pequeña llama se extingue y el milagro se desvanece entre humo y cenizas."; } else "No está ardiendo."; dejar, meter: if ((otro == fuego or chimenea) && fuego in chimenea) <>; if (otro == pozo) "No lo hagas, la puedes necesitar más tarde."; if (otro == cesta) "¡Eso es venenoso, no puedes echarlo ahí!"; if (self has luz){ if ((otro==agua or caldero) && (agua in caldero)) <>; else "Acostúmbrate a apagarlas primero o algún día provocarás un incendio."; } coger, sacar: if (parent(cerilla) in cesta && fuego in chimenea) <>; if (otro == caja_cerillas && cerilla notin caja_cerillas) "¿Acaso has gastado la última que sacaste?."; oler: if (self has luz) "Huele a fósforo encendido."; ], despues[; quemar: give cerilla ~luz; move cerilla to caja_cerillas; move llama to limbo; pararreloj(self); dejar, meter: if (otro == pozo){ give cerilla ~luz; move cerilla to caja_cerillas; move llama to limbo; pararreloj(self); } ], !!! tiempo_agotado[; if (cerilla in jugador){ move mancha to localizacion; esperartecla(".^",16); esperartecla("snff..^",12); esperartecla("snff... snff...^",10); esperartecla("-Oye... ¿y ese olor a quemado?...^",16); esperartecla("¿...?^",8); esperartecla("¡AAAArrgghhhh!!!!^",8); esperartecla("¡Ouch!^",6); esperartecla("¡Ay!^",4); print "Dejas caer la cerilla mientras te chupas tus doloridos dedos.^"; move cerilla to caja_cerillas; move llama to limbo; give cerilla ~luz; rtrue; } else if (cerilla in localizacion){ print"La llama de la cerilla se acaba de extinguir.^"; move cerilla to caja_cerillas; move llama to limbo; give cerilla ~luz; pararreloj(self); } ], has transparente oculto ; !!! object puerta_torre "puerta" torre with nombre 'puerta''salida', descripcion "Es la puerta que se veía desde la planta baja, detrás del arpa.", describir "Una puerta cierra el acceso al rellano de la escalera.", esta_en torre rellano, puerta_a [; if (localizacion==torre) return rellano; else return torre; ], direcc_puerta [; if (localizacion==torre) return al_e; else return al_o; ], despues[; abrir: if (localizacion==torre && arpa hasnt general){ print "Abres un poquito la puerta...^^"; esperartecla("Ñiek.. ^",4); esperartecla("^Abres un poco más...^^",10); esperartecla("Ñiieeek...^^",12); esperartecla ("Fuera no se oye nada ¿...?^^", 3); } ], has femenino escenario puerta abrible; !!! object ventana "ventana" torre with nombre 'ventana', adjetivos 'gotica', descripcion "Una ventana gótica de estilo palaciego.", antes[; bajar: <>; buscaren: "Desde aquí tienes una hermosa vista del jardin."; ], has femenino escenario; !!! object _jardin_ "jardin" torre with nombre_f 'vista', nombre_m 'jardin''paisaje', genero G_femenino, descripcion "El jardín esta ahora ocupado en su mayor parte, por los restos de la habichuela gigante.", antes[; examinar:rfalse; default:"Está demasiado lejos."; ], has escenario; !!! object saco "saco" torre with nombre_m 'saco', nombre_f 'bolsa''saca', genero G_masculino, describir[; if (ganso in self) "Algo vivo se mueve dentro del saco."; else "Ves un SACO que parece estar vacío."; ], descripcion[; if (ganso in self)"Tiene un ganso dentro."; else "Es un saco que seguramente sirvió para transportar al ganso de oro."; ], antes[; buscaren: if(ganso in self)<>; dejarsalir: if (uno ~= ganso && ganso in self) print "Con mucho cuidado, para no molestar al ganso, introduces tu mano en el saco para coger ", (el) uno,".^"; meter: if (otro == ganso) <>; if (otro== pozo or cesta or caldero or caldero_cuerda or caja_cerillas) "No hagas tonterías."; atar: <>; ], has recipiente abrible abierto; !!! object pedestal "pedestal" torre with nombre 'pedestal', describir "Un hermoso pedestal digno de contemplar con detenimiento, ocupa el centro del cuarto.", descripcion "Es un pedestal bellamente adornado... con POLVORONES del Soto." has soporte transparente escenario; object polvorones "polvorones" pedestal with nombre_m 'polvoron', nombre_mp 'polvorones''adornos', genero G_masculino+G_plural, descripcion "Son los famosos POLVORONES del Soto y tienen una pinta muy apetitosa.", antes[; dar, lanzar: if (otro==arpa) <>; meter:if (otro==arpa) <>; if(otro==caja_cerillas) "Que tonterías dices... no caben ahí dentro."; examinar: rfalse; coger: if (polvorones in jugador)"No quieres más."; else if (self in pedestal) print "Te agencias unos cuantos.^"; comer, probar: "Son apetitosos pero te dejan la boca pastosa y se pegan al paladar. ^La última vez que comiste a poco te ATRAGANTAS."; ], has nombreplural oculto comestible; !!! object ganso "ganso" torre with nombre 'ganso''pato', describir "Un GANSO descansa sobre un PEDESTAL.", descripcion[; if(ganso in saco)<>; else "Es un rollizo ganso de oro, que descansa sobre una pata y con el pico bajo el ala."; ], antes[; tocar:"¡Cuidado que muerde!"; dejar: if(ganso in saco) <>; meter: if (otro==saco){ print "Con más habilidad de la que te es habitual, coges al ganso por el cuello y sin darle oportunidad de decir ~este pico es mío~, lo metes dentro del saco.^"; move ganso to saco; move gansadas to limbo; rtrue; } else "¡No seas bruto, que no cabe!"; coger: if (self in saco) "Hmmmmm...^¿Has visto alguna vez a un ganso cabreado?"; if (otro == saco) <>; else { esperartecla("Lo coges por el cuello...^^",10); esperartecla("^CuuaaAAAaahhhgggggg^",10); esperartecla("^^Por unos segundos el ganso te mira como sólo un ganso sabe hacerlo...^",30); esperartecla("^^¿...?",10); esperartecla("^^¡Ay!...^",5); esperartecla("^^¡Huy!...^",5); esperartecla("^^¡Ouch!...^",6); "^^El ganso empieza a darte picotazos, y no tienes más remedio que volver a dejarlo en su pedestal. ^-Te aconsejo que cambies de táctica."; } sacar: if (self in saco) <>; mihablar: "¿Sabes hablar en gansés?"; ], has animado; object gansadas "gansadas" torre with nombre_m 'pico', nombre_f 'ala''pata', nombre_fp 'alas''patas', genero G_masculino, antes[; "Pertenece al ganso y sabe como usar", (lo) self, " ."; ], has estatico oculto; !!!!!!!!!!!! RELLANO object rellano "En el rellano de la escalera" with adentro [; if (arpa hasnt general) pararreloj(torre); return puerta_torre; ], al_o [; if (arpa hasnt general) pararreloj(torre); return puerta_torre; ], abajo [; if (arpa hasnt general) "¡Antes tienes que hacer callar al arpa o despertará al lobo!"; else return pbaja; ], descripcion [; if (arpa hasnt general) "El arpa chilla histérica mientras te observa con asombro."; else "El rellano es ahora un lugar tranquilo y sosegado. ^El arpa, muy bien educada ella, no habla mientras come..."; ], antes[; salidas: "Salidas visibles: oeste, dentro (ENTRAR, que coincide con las salida oeste), abajo."; examinar: if(uno==obj_arriba)"Vaya... una telaraña..."; if(uno==obj_abajo)"Llevas sucias las babuchas..."; ], despues[; default: if (arpa hasnt general) print"^^¡¡iiiiiiuuUUUUUuuiiiiiuuUUUUuuiiiiiiuuUUUUUUuuiiii...!!^^"; ], has luz; object _rellano_ rellano with nombre 'rellano', descripcion "Un rellano." has escenario oculto; !!!!!!!!!!!!!!!!!!!!!! GRAMATICA Include "Gramatica"; Include "fhablaoo_libro.h"; extend 'lanza'first * valepuntos -> meter * valepuntos 'dentro' valepuntos -> meter * valepuntos 'dentro''de' valepuntos -> meter * valepuntos 'a//' valepuntos -> meter * multiexcept 'a//' recipiente -> meter * noun 'a//' recipiente -> meter * multiexcept'dentro' recipiente -> meter * multiexcept 'dentro''de' recipiente -> meter; extend 'echa' first * multiexcept 'a//' recipiente -> meter * noun 'a//' recipiente -> meter * multiexcept "a//" noun -> ponersobre; extend 'tira' replace * multiexcept -> dejar * noun -> dejar * multiexcept 'a//' recipiente -> meter * noun 'a//' soporte -> ponersobre * multiexcept 'en' noun -> meter * noun 'en' noun -> dejar * noun 'por' noun -> meter * 'de' noun -> tirar * multiexcept 'dentro' noun -> Meter * multiexcept 'dentro' 'de' noun -> Meter; extend 'mete' first * held 'bajo' noun -> meter * held 'por' noun -> meter * held 'por''debajo' noun -> meter * held 'por''debajo''de' noun -> meter * noun 'debajo''de' noun -> meter; verb 'introduce'= 'mete'; extend only "tapa" "cubre" replace * noun 'con' noun -> PonerSobre reverse; extend 'mira' * 'debajo' noun -> mirardebajo * 'encima' 'de' noun -> buscaren; extend 'examina' * 'dentro' 'de' noun -> buscaren; extend 'llena' first * 'de' noun 'a//' noun -> llenar reverse * 'con' noun 'a//' noun -> llenar reverse * noun 'con' noun -> llenar * noun 'de' noun -> llenar *'a//' noun 'de' noun -> llenar *'a//' noun 'con' noun -> llenar; verb 'atraganta''empacha''atiborra''hincha''revienta''harta'='llena'; verb 'derriba'='ataca'; extend only 'lee' replace * noun -> consultar * 'en' noun -> consultar; !!!!!!! [misacarsub; "Especifica de dónde ", (lo) uno, " quieres sacar."; ]; [consacarsub; "Puedes utilizar casi todos los objetos que tengas a tu alcance, pero asegúrate de hacerlo correctamente.";]; extend 'saca' first * noun -> misacar * noun 'con' noun -> consacar * noun 'de' 'debajo' 'de' noun -> sacar * noun 'de' 'dentro' 'de' noun -> sacar * noun 'de' recipiente -> sacar; extend 'coge' replace * noun -> coger * noun 'con' noun -> consacar * noun 'de' soporte -> coger * noun 'de' recipiente -> sacar; extend 'coge' *'a//' creature -> coger; !!!!! [miprobarsub; "¿Vas a comértel",(o) (uno), "?"; ]; extend 'prueba'first * noun -> miprobar; !!!!!!!!!!! [prendersub; "No seas pirómano.";]; extend 'prende' replace * noun -> prender * noun 'en' noun -> prender * noun 'con' noun -> prender; extend 'enciende' replace * conmutable -> encender * noun -> prender * noun 'en' noun -> prender * noun 'con' noun -> prender; extend 'apaga' * noun 'con' noun -> apagar; !!!!! extend 'comete' * -> comer * 'a//' noun -> comer * noun 'con' noun -> comer; extend 'come' first * noun -> comer; verboirregular "morder" with imperativo 'muerde'; verb 'muerde' = 'come'; !!!! extend 'pregunta' * 'a//' animado -> preguntar; extend 'baja' first * -> bajar * noun -> bajar * 'por' noun -> meterse !!! bajar * 'por' noun 'a//' noun -> meterse * 'a//'noun -> bajar * multiexcept 'a//' recipiente -> meter * noun 'a//' recipiente -> meter * noun 'dentro''de' recipiente -> meter * 'dentro''de'recipiente ->bajar * 'adentro''de'recipiente -> bajar; extend 'sube' first * -> subir * noun -> subir !!! meterse * 'a//' noun -> subir !!!meterse * 'por' noun -> meterse * noun 'a//' noun -> ponersobre * noun 'del' noun -> sacar * 'encima''de' noun -> subir !!!meterse * 'encima' noun -> meterse; !!!! extend 'atraviesa' * noun 'por' noun -> Meterse; extend 'pasa' * noun 'por' noun -> Meterse * noun -> Meterse; extend 'entra' * 'dentro' -> entrar * 'dentro''de'noun -> meterse; extend 'cruza' * noun 'por' noun -> Meterse; verboirregular "verter" with imperativo 'vierte'; verb 'vierte''derrama' = 'vacia'; verboirregular "descolgar" with imperativo 'descuelga'; verb 'descuelga' = 'baja'; verb 'levanta' 'retira' 'aparta' = 'mueve'; extend 'empuja' first * noun 'con' noun -> empujar; verb 'tala' = 'ataca'; !!!!! extend 'ata' * noun 'con' noun ->atar; [desatarsub; "No es algo que esté atado."; ]; verb 'desata' * noun -> desatar * noun 'de' noun -> desatar; extend only "suelta" replace * noun -> desatar * noun 'de' noun -> desatar; !!!! [migritarsub;"No seas escandaloso.";]; extend 'grita' * -> migritar * 'a//' noun -> hablar; verb 'chilla' = 'grita'; [mihablarsub; "Ya estás hablando conmigo.";]; verb 'mihabla' * -> mihablar * 'con' creature -> mihablar; extend only 'habla' replace * -> mihablar * 'con' creature -> mihablar * 'a//' creature -> mihablar; !!!!!! [usarsub; "Aunque te parezca extraño éste es el verbo menos USADO en las conversacionales.^De hecho nunca se USA."; ]; verb 'usa' *-> usar * noun -> usar * noun 'con' noun ->usar; !!! [sembrarsub; "Recogerás lo que siembres.";]; verboirregular "sembrar" with imperativo 'siembra'; verb 'siembra' * noun -> sembrar * noun 'en' noun -> sembrar * noun 'con' noun -> sembrar * noun 'de' noun -> sembrar; verboirregular "enterrar" with imperativo 'entierra'; verb 'entierra''enrrona''planta' = 'siembra'; [pesarsub; "¿Para qué?";]; verb 'pesa' * noun -> pesar * noun 'en' noun -> pesar; [pesarsesub; "¿Necesitas una báscula?";]; verboirregular "pesarse" with imperativo 'pesate'; verb 'pesate' 'pesame''pesarme''pesarte''pesarse' * -> pesarse * 'en' noun -> pesarse * 'con' noun -> pesarse; [regarsub; "No necesitas regar", (lo) self,"."; ]; verboirregular "regar" with imperativo 'riega'; verb 'riega''moja''empapa' !* -> dejar !* 'agua' -> meter * noun -> regar * noun 'con' noun -> regar; [pistasSub; if (lampara.pistas == 1)<>; else "¿Pistas, qué pistas?"; ]; verb 'pistas''pista' * -> pistas * 'con' -> pistas * 'a//' -> pistas; verb 'ayuda''xyzzy'= 'pista'; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11111 Personaje -> genio "genio de la lámpara" with descripcion "Es un genio urbatainiano.", Enunciado [linea; switch (linea) { 0: "Tengo problemas con la escalera."; 1: "Vaya, que altas ponían las ventanas en las torres."; 2: "¡¡Me quemooo!!"; 3: "¿Agua... dónde... cómo?"; 4: "Tengo problemas con el pozo."; 5: "Buff, cuanto pesa..."; 6: "El ganso me mira mal..."; 7: "Y el arpa me mira peor..."; 8: "Ese maldito instrumento musical..."; 9: "Vaya estoy encerrado..."; 10: "Sin móvil y sin llave."; 11: "Que miedo y encima anda por ~ahí~ el coco..."; 12: "Y los problemas con la llave aún no han terminado."; } ], Respuesta [linea; switch (linea) { 0: "Busca otra forma de subir..."; 1: "¿Te acuerdas del cuento de las habichuelas mágicas?"; 2: "¿Con qué se apaga el fuego?"; 3: "Si miras bien por el jardin, seguro que encuentras algo para cogerla."; 4: "Si el nivel del agua está bajo, busca la forma de subirlo.^ ¿Nunca se te ha salido la leche al echar el azucar?"; 5: "Es fácil, deja la roca en un sitio donde no moleste... "; 6: "Ganso que no ve... pico que no pica...^ Mételo en un sitio donde no vea."; 7: "¿Has intentado comerte los polvorones?"; 8: "Chilla como una histérica, haz que se atragante con algo."; 9: "El ojo de la cerradura parece observarte ¿le has devuelto la mirada?"; 10: "Desde este lado no puedes cogerla, pero sí darle un buen empujón.^ Busca donde se esconde el coco."; 11: "El coco siempre se esconde en los sitios oscuros."; 12: "Recuerda que un relato siempre termina en la hoja donde pone: ~Y colorín...~.^Sólo tienes que saber cómo usarla."; } ], InicializarQuips [; self.QuipsOn(4, 0,1,2,3); self.QuipsOn(4, 4,5,6,9); self.QuipsOn(3, 7,8,10); self.QuipsOn(2, 11,12); ], has masculino propio;