Constant Historia "Dios en zapatillas."; Constant Titular "^^(C) 2003 Jenesis ^ Puede distribuirse libremente bajo licencia GNU GPL^"; Constant NO_PUNTUACION; constant HAY_CURIOSIDADES; constant NO_LUGARES; release 1; Include "EParser.h"; include ">grafdemo.h"; ! el ">" indica que este archivo esta en el directorio del "inf" include "six.h"; include ">dios_za.bli"; Constant VERSION_GRAFICA; Global _len_; Global localidad; [curiosidades; "Esta aventura ha sido portada desde Visual Sintac con el único propósito de hacerla multiplataforma."; ]; object mensajeslibreria with antes[; sacar: "No hay nada fuera de tu alcance."; !coger: "No necesitas coger nada, llevas todo lo necesario dentro de ti."; abrir: "Nada hay cerrado a tu poder."; quemar: "Todo tiene la luz precisa."; quitar: "No estás aquí para quitar sino para dar."; encender: "Todo lo que ha de llevar luz, ya la lleva."; probar: "Tus sentidos van más allá del simple sabor de las cosas."; oler: "Tus sentidos van más allá del simple olor de las cosas."; tocar: "No necesitas tocar nada para saber que está ahí."; atacar: "Eres dueño de la ira y ésta no puede dominarte."; cortar: "Todo lo creas a su medida exacta."; consultar, buscaren: "Nada hay oculto a tus ojos..."; atar: "Sólo atas tus pensamientos para darles forma."; beber: "Tu sed no es física."; comer: "Tu hambre no es física."; saltar: "Sólo un ser físico puede hacer eso."; cantar: "La armonía existe en todo lo que creas y es suficiente."; besar: "Puedes darle algo mejor."; dormir: "Tu mirada no descansa jamás."; esperar: "La espera no tiene sentido para aquél que está sentado en el centro de la rueda del tiempo."; meter, ponersobre: "Todo está bien donde está."; Miscelanea: switch(ml_n){ 19: switch(localidad){ 1: "Eres el centro del universo y te sientes terriblemente solo."; 2: "Te sientes como un niño creando un amigo imaginario..."; 3: "Te gustaría que fuera capaz de aprender y de comunicarse."; 4: "Te gustaría que el nuevo ser viera más alla de lo meramente objetivo..."; 5: "Te gustaría tanto verle sonreír..."; 6: "Ahora crees que ya está preparado para recibir tu mas preciado tesoro."; 7: "Parte de ti ya le pertenece."; }; 26: switch(localidad){ 1: "¿A quien quieres darle eso?"; 2: "Eso no es lo que necesita para acabar con su inmutable letargo."; 3: "Eso no es lo que necesita para acabar con su ignorancia."; 4: "Eso no es lo que necesita para acabar con su inconsciencia."; 5: "Eso no es lo que necesita para acabar con su insensibilidad."; 6: "Te necesita, date a ti mismo..."; }; rtrue; 44: if (accion_que_seria == ##Dejar) "Nada de lo que llevas ocupa ni pesa tanto, como para que necesites dejarlo.^"; if (accion_que_seria == ##Coger) "Todo es parte de ti, no necesitas cogerlo."; }; ]; include "Acciones.h"; [ Inicializar; localizacion=vacio_; PonerAltodeVentanaGrafica(200); BorrarGraficos(); localidad=1; PintaMarco(true); tate_callao=1; move _vida to jugador; parser_listo=0; ]; Object Limbo "Mundo de las ideas" with descripcion " almacen " ; Object Ser "ser sin nombre" limbo with nombre 'ser' 'criatura' 0 0 0 0 0, nombre2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, descripcion [; switch (localidad){ 2: "Tú le diste nombre y consistencia. Sólo tú puedes DARLE lo que le falta para despertarlo de su pétreo sueño."; 3:"Siente dentro de sí el latido de la vida y puede ver las estrellas pero no intenta contarlas ni despiertan su curiosidad."; 4: "Tu criatura podría contar estrellas pero aún no sabe en qué se diferencia de ellas."; 5:"Ya ha descubierto que está vivo y que nunca podrá alcanzar las estrellas, pero aún no ha descubierto que son bellas..."; 6:"Miras dentro de sus ojos y ves tu imagen reflejada en ellos."; 7:"Está hecho a tu imagen y semejanza, ya no estás solo."; } ], nombre_corto [; if (self.nombre2==1) ImprimeArrayLetras(self.&nombre2); rtrue; ], parse_nombre [ p cuantas seguir; cuantas=0; while (1) { ! Bucle infinito (saldremos de él con return) seguir=0; p=SiguientePalabraParar(); if (p==-1) return cuantas; ! Fin del buffer if (p==0) ! Palabra no reconocida { if (ComparaLetraALetra(DireccionDePalabra(np-1), self.&nombre2, LongitudDePalabra(np-1))) ! Es la elegida por el jugador seguir=1; } else { ! Palabra reconocida if (PalabraEnPropiedad(p, self, nombre)) ! Está en la lista "nombre" seguir=1; } if (seguir==0) return cuantas; cuantas++; } ], antes[; amar: if(localidad==6)<>; ], has oculto animado propio; !!!!!!!!!!!!!!!!!!!!!LOCALIDAD!!!!!!!!!!!!!!!!!!!!!!!!!!!! object vacio_ "Fuera de todo lugar y tiempo." with numgrafico vacio_jpg, nombre_corto[; switch (localidad){ 1: "Fuera de todo lugar y tiempo."; 2: "Aquí y ahora."; 3: "El fin del eterno silencio."; 4: "El poder de la Deducción."; 5: "El descubrimiento de sí mismo."; 6: "Más allá de los sentidos."; 7: "En el centro del universo."; 8: "A tu imagen y semejanza..."; } ], descripcion[; switch(localidad){ 1: "En medio de la NADA, en un vacío infinito tu único punto de referencia es tu propia SOLEDAD.^La Nada te rodea.^"; 2: print"El principio de las cosas es par. Así el primer ser no vino solo, sino que lo hizo acompañado del TIEMPO ya que desde el mismo instante en que fue creado, hubo un primer ~Antes~ y un primer ~Después~.^El Tiempo ha iniciado su camino sin retorno.^^ Notas la presencia de ";ImprimeArrayLetras(ser.&nombre2); print" y te das cuenta de que es algo frío e inerte.^" ; 3: print"En el hasta ahora silencioso espacio, comienza a oírse el latido de La VIDA, tu ser ha despertado.^ La Vida es la mejor muestra de que todo en este mundo es único e irrepetible.^^ Aquí está ";ImprimeArrayLetras(ser.&nombre2); print ".^Le tiendes tu mano pero no puede comprender tu lenguaje ni tu gesto. ^Creas las estrellas para despertar su curiosidad, pero ";ImprimeArrayLetras(ser.&nombre2);print" las mira indiferente.^"; 4: print"La observación es el principal aliado de la INTELIGENCIA. De ella se deriva que no hay efecto sin causa, ni suceso sin razón de ser. Cuando uno de ellos falla, entramos en el mundo del esoterismo.^La idea empieza a tomar forma.^^ Aquí está ";ImprimeArrayLetras(ser.&nombre2); print".^Es único e irrepetible, pero permanece ajeno a su propia realidad.^"; 5: print"En los límites de la CONSCIENCIA se encierra todo aquello que existe pero no se ve.^Tu ser existe... y ahora lo sabe^^ Aquí está ";ImprimeArrayLetras(ser.&nombre2); print".^Le miras a los ojos, pero sigues sin verte reflejado en ellos.^Lloras de tristeza pero la criatura permanece impasible ante tus lágrimas.^ "; 6: print"Cuando el dolor persiste incluso después de restañar la herida y la alegría aparece sin causa aparente. Cuando el vínculo entre nuestras reacciones y nuestros sentidos se rompe estrepitosamente, entramos en el mundo de los SENTIMIENTOS.^ Una lágrima ha resbalado por la mejilla de tu criatura^^ Aquí está ";ImprimeArrayLetras(ser.&nombre2); print".^Su inquietud va en aumento, te está buscando aunque él no lo sabe...^"; 7: print"El AMOR es lo único irracional del mundo. Gracias a su potencial falta de lógica el futuro resulta impredecible incluso para los sabios, los físicos y las máquinas.^^ Aquí está ";ImprimeArrayLetras(ser.&nombre2); print".^Te está mirando a los ojos y sientes como su amor calma el dolor de tu alma.^"; 8: print "La Nada ha desaparecido por completo.^Está hecho a tu imagen y semejanza, ya no estás solo. ^Tienes un amigo.^"; } ], antes[; coger: if(accion_que_seria ==##dar) rtrue; !para evitar que lo imprima con el verbo "dar" else "No necesitas coger nada, llevas todo lo necesario dentro de ti."; help: if(otro==ser) "Piensa en cómo puedes ayudarle..."; dejar: print"Nada de lo que llevas ocupa ni pesa tanto, como para que necesites dejarlo.^"; rtrue; escuchar: "Silencio... quietud y silencio."; pedir: "Para recoger hay que sembrar primero..."; crear: if (_len_~=0) { !! evita que se pueda crear algo sin nombre localidad=2; self.numgrafico = creacion_jpg; } inv: switch(localidad){ 1: "Tienes el poder de la creación en tus manos."; 2: "Tienes poder sobre todo lo que nace, crece y muere."; 3: "Tienes la habilidad de sacar información de cuanto te rodea y aprender de ella."; 4: "Tienes el conocimiento del por qué y cómo de las cosas."; 5: "Tienes lágrimas en los ojos, risas en el corazón y un profundo dolor en tu alma."; 6: "Tienes la necesidad de compartir tu existencia."; 7: "Tienes un amigo."; } lanzar: "Llegas a todo lo que existe, no necesitas lanzar nada."; empujar: "Todo está a tu alcance, no necesitas mover nada."; hablar: "Hablas y el eco de tu voz llega a todas partes, pero nadie lo entiende."; escuchar: switch(localidad){ 3: "El latido de su propio pulso es el primer sonido que escucha la vida..."; 4: "El ruido de este procesador biológico sería un lenguaje"; 5: "El nuevo ser ha callado, consciente de que no de sirve de nada hablar si nadie le escucha..."; 6: "Lo oyes llorar en silencio... se siente terriblemente solo."; } !!! bloque principal !!!!!!!!!!!! dar: switch(localidad){ 1: "¿A quien quieres darle eso?"; 2: if ((uno==_vida)&&(otro==ser)){ move inteligencia to jugador; move _vida to vacio_; give _vida oculto; localidad=3; self.numgrafico=vida_jpg; cambio(); rtrue; } else "Eso no es lo que necesita para acabar con su inmutable letargo."; 3: if ((uno==inteligencia)&&(otro==ser)){ move consciencia to jugador; move inteligencia to vacio_; give inteligencia oculto; localidad=4; self.numgrafico=inteligencia_jpg; cambio(); rtrue; } 4: if ((uno==consciencia)&&(otro==ser)){ move sentimiento to jugador; move consciencia to vacio_; give consciencia oculto; localidad=5; self.numgrafico=consciencia_jpg; cambio(); rtrue; } 5: if ((uno==sentimiento)&&(otro==ser)){ move amor to jugador; move sentimiento to vacio_; give sentimiento oculto; localidad=6; self.numgrafico=sentimiento_jpg; cambio(); rtrue; } 6: if ((uno==amor)&&(otro==ser)){ localidad=7; self.numgrafico=amor_jpg; repintargraficos(); cambio(); banderafin=2; print "La Nada ha desaparecido por completo.^Está hecho a tu imagen y semejanza, ya no estás solo.^Tienes un amigo.^"; rtrue; } }; ], has luz; !!!!!!!!!!!!!! rutinas ![remedio; localidad=8; vacio_.numgrafico=vida_jpg;cambio();banderafin=2;]; [cambio; switch(localidad){ 3: print "Le otorgas a ";ImprimeArrayLetras(ser.&nombre2);print" el don de la Vida.^"; 4: print "Le otorgas a ";ImprimeArrayLetras(ser.&nombre2);print" la habilidad de aprender de su propia experiencia.^"; 5: print "Le otorgas a ";ImprimeArrayLetras(ser.&nombre2);print" la capacidad de conocerse a sí mismo.^"; 6: print "Le otorgas a ";ImprimeArrayLetras(ser.&nombre2);print" la capacidad de sentir con el corazón.^"; 7: print "Das tu amor a ";ImprimeArrayLetras(ser.&nombre2);print" y tu amor crece en su interior hasta que fluye de su ser y revierte en tu propia alma.^"; }; print "Algo ha cambiado a tu alrededor.^"; esperartecla("Pulsa cualquier tecla...^"); borrarpantalla(); <>; ]; !!!!!!!!!!!!! objetos ocultos en el inventario !!!!!!!!!!!!!!!!!!!!!1 object _vida "vida" limbo with nombre 'vida', descripcion "La Vida es la mejor muestra de que todo en este mundo es único e irrepetible.", has femenino oculto; object inteligencia "inteligencia" limbo with nombre 'inteligencia''razon''razocinio''curiosidad''ideas''mente', descripcion"La inteligencia es la capacidad de sacar el máximo provecho de nuestra experiencia para utilizarla en favor de nuestra voluntad.", has oculto femenino; object consciencia "consciencia" limbo with nombre 'consciencia' 'sabiduria' 'conocimiento' , descripcion "La Consciencia son los únicos ojos capaces de ver aquello que no tiene forma ni color.", has oculto femenino; object sentimiento "sentimientos" limbo with nombre 'sentimientos', descripcion"Tienen la forma de una lágrima, a veces dulce, a veces amarga.", has oculto nombreplural; object amor "amor" limbo with nombre 'amor', descripcion "La única razón de la existencia...", has oculto; !!!!!!!!!!!!!! objetos ocultos en la localidad !!!!!!!!!!!!!!!!!1 object tiempo "tiempo" vacio_ with nombre 'tiempo''presente''pasado''futuro''antes''despues''ahora', descripcion "El Tiempo es una rueda que gira incensante, en un mismo sentido. Tres muescas en su exterior marcan la distancia entre el presente que vivimos, el pasado que nos persigue y el futuro que nunca alcanzamos. Sólo aquellos que se sitúan en su mismo centro son capaces de vislumbrar las tres dimensiones del espacio-tiempo.", has oculto; object dios "dios" vacio_ with nombre 'dios', descripcion "Tú mismo... un dios en zapatillas...", !!!esta_en [; localizacion(jugador);], !! no se puede usar en glulxe has oculto; object alma "alma" vacio_ with nombre 'alma' 'esencia' 'espiritu', descripcion "Lo que Es.^Aquello que no necesita de ninguna forma para existir.", has oculto; object forma "forma" vacio_ with nombre 'forma', descripcion "Lo que marca los límites.^La única manera de encerrar una idea.", has oculto; object poder "poder" vacio_ with nombre 'poder', adjetivos 'creacion', descripcion "Es lo que necesitas para CREAR algo.", has oculto; object manos "manos" vacio_ with nombre 'manos', descripcion "No son manos realmente, sólo intento que seas capaz de entenderme.", has oculto; object estrellas "estrellas" vacio_ with nombre 'estrellas', descripcion "Todo un universo por inventar.", has oculto; object universo "universo" vacio_ with nombre 'centro''universo''aqui''espacio-tiempo''espacio''cosas''lugar''mundo', descripcion "Tú y todo lo que hasta ahora hayas podido crear.", has oculto; object idea "idea" vacio_ with nombre 'idea', descripcion "Lo que todavía no es...", has oculto; object ojos "ojos" vacio_ with nombre 'ojos', descripcion "Los ojos en que te miras, sábelo bien, son ojos porque te ven.^(A. Machado)", has oculto; object nada "nada" vacio_ with nombre 'nada' 'vacio', descripcion "La Nada es la ausencia de Todo, el pensamiento puro, la Idea sin forma.^El estado simple de lo no creado.", has femenino oculto; object soledad "soledad" vacio_ with nombre 'soledad', descripcion "La soledad es la falta de un espejo en donde pueda mirarse el alma. ", has oculto; object gesto "gesto" vacio_ with nombre 'gesto' 'lenguaje', descripcion "Tu intento por comunicarte.", has oculto; object comprension "comprension" limbo ! para futura revision with nombre 'compresion', descripcion "Le entiendes, pero él a ti no...", has oculto; object cerebro "cerebro" vacio_ ! para futura revision with nombre 'cerebro', descripcion "Una simple maquinaria.", has oculto; !!!!!!!!!! rutinas !!!!!!! ! rutina de Zak Constant MAX_LETRAS_EN_NOMBRE 60; [ ImprimeArrayLetras arr i; for (i=0:ii==0) return; ! Un cero indica fin de cadena print (char) arr->i; } ]; [ ComparaLetraALetra p1 p2 len i; ! La comparacion debe hacerse pasando a minusculas, por si acaso ! el jugador ha introducido nombres con mayusculas. Las extrañas ! llamadas a glk que aparecen más abajo son precisamente para ! pasar la letra a minusculas if (len==0) rfalse; if (len>MAX_LETRAS_EN_NOMBRE) len=MAX_LETRAS_EN_NOMBRE; for (i=0:ii) ~= glk($00A0,p2->i)) rfalse; rtrue; ]; Include "Gramatica.h"; ! Ahora los trucos con la gramática. Hace falta una rutina que pille ! cualquier palabra que haya escrito el jugador y la almacene ! temporalmente en un array, desde el cual se copiará posteriormente ! al nombre2 del ser Array _temporal_ -> 121; !Global _len_; !Jen (la declaro antes para poderla utilizar en el objeto vacio_) [ CualquierPalabra i dir ; dir=DireccionDePalabra(np); _len_=LongitudDePalabra(np++); if (_len_>=MAX_LETRAS_EN_NOMBRE) _len_=MAX_LETRAS_EN_NOMBRE-1; for (i=0:i<_len_:i++) _temporal_->i = dir->i; ! El while qu viene ahora es para que el parser ignore cualquier ! cosa que el jugador teclee despues del nombre del objeto ! creado. Asi, se admite: CREA PEPE ASDKL ASKLD pero el nombre del ! objeto creado será solo "PEPE". ! ! Si eliminaras ese while, ante CREA PEPE ASDFGH el parser ! responderá "No entendí la última parte ¿Quieres crear eso?" ! ! Elige la opción que más te guste while(SiguientePalabraParar()~=-1) ; rtrue; ]; ! La rutina crear, es la que copia el nombre del array temporal ! anterior al nombre2 del ser, comprobando antes que el ser era ! anónimo (en caso contrario no deja). Tambien mueve el ser a la ! localizacion actual [ CrearSub i; if (_len_==0) "¿Qué quieres crear?"; if (ser.nombre2~=0) { print "Ya has creado un ser llamado ~"; ImprimeArrayLetras(ser.&nombre2); "~. Acaba con él primero."; } for (i=0:i<_len_:i++) ser.&nombre2->i=_temporal_->i; move ser to localizacion; !give ser ~oculto; no se puede lo muestra como un "." print "Has creado un ser llamado ~"; ImprimeArrayLetras(ser.&nombre2); print "~.^"; cambio(); !Jen ]; ! Nueva gramatica que usa las rutinas anteriores ! Jen (he añadido los artículos para que no los admita como nombres del nuevo ser.) Verb 'crea' * "un" CualquierPalabra -> crear * "una" CualquierPalabra -> crear * "unas" CualquierPalabra -> crear * "unos" CualquierPalabra -> crear * "a//" CualquierPalabra -> crear * "la" CualquierPalabra -> crear * "las" CualquierPalabra -> crear * "el" CualquierPalabra -> crear * "los" CualquierPalabra -> crear * CualquierPalabra -> Crear; !!!!!!!!!!!!!!!!! acciones nuevas y extensiones !!!!!!!!!!!!!!!!111 [mihelpsub; "Busca la forma de ayudarle.";]; [helpsub; switch(localidad){ 1:"Si al menos crearas algo, ya no estarías tan solo..."; 2:"Has creado algo hermoso, pero no deja de ser un cosa inerte."; 3:"Tu ser está vivo pero es incapaz de construir una idea."; 4:"Tu ser ahora es capaz de aprender, pero eso no le diferencia en mucho de una máquina. ^Una cadena de reacciones y de operaciones lógico-matemáticas que permanece ajena a todo lo que le rodea."; 5:"Tu ser ha descubierto lo subjetivo de su propia existencia, pero permanece impasible ante ello."; 6:"Por primera vez es él quien te está pidiendo algo..."; }; ]; verb 'pista' * -> help * "a//" creature -> mihelp; verb 'ayuda' 'pistas' 'xyzzy' = 'pista'; extend 'saca' * noun 'de' noun -> sacar; extend 'lanza' first * noun "a//" noun -> dar; [mimatarsub; "No estás aquí para matar sino para dar la vida."; ]; extend only 'mata' replace * -> mimatar * creature -> mimatar * noun -> mimatar; [amarsub; "Le amas con todas tus fuerzas.";]; verb 'ama' * "a//" noun ->amar * "a//" creature -> amar; verb 'darle''ofrecele''regalale' = 'da'; verb 'dota''dotale' 'dotarle' 'dotar' * 'a//' creature 'de' held-> dar reverse * 'de' held 'a//' creature -> dar;