!================================================================ ! El personaje elDeDelante ! ! La mujer que está delante del jugador en la cola ! Personaje elDeDelante "mujer de delante" Oficinas ! *** Propiedades simples de la biblioteca with nombre_f 'mujer' 'Dolores' 'doña' 'cotilla' 'senora', genero G_FEMENINO, adjetivos 'delante' 'en' 'cola', ! *** Variables de estado mostroEspejo false, ! Si te ha enseñado ya el espejo (y te has visto en él, claro) guardaSitio false, ! Si ya sabe que te tiene que guardar el sitio ! *** Variables para variedad en respuestas saludada false, conocida false, nPreguntadoDonde 0, ! *** Respuestas with inicial [; self.nombre_the_may(); if (jugador.enCola) { " parece ser la única persona que te presta algo de atención."; } else { " sigue atentamente tus acciones mientras te guarda el sitio."; } ], descripcion [; if (jugador.enPrincipioCola || jugador.enFinalCola) "No la ves bien desde aquí."; else "Es una mujer ya mayor, con un aire de cotilla de pueblo."; ], ! "Nombres" de la señora en cuestión (seguro que hay otra forma mejor de ! hacerlo, con el (el) y cosas así) nombre_may [; if (self.conocida) print "Doña Dolores"; else print "Mujer de delante"; rtrue; ], nombre_min [; if (self.conocida) print "doña Dolores"; else print "mujer de delante"; rtrue; ], nombre_the [; if (self.conocida) print "doña Dolores"; else if (jugador.enCola) print "la mujer de delante en la cola"; else print "la mujer que tenías delante en la cola"; rtrue; ], nombre_the_may [; if (self.conocida) print "Doña Dolores"; else if (jugador.enCola) print "La mujer de delante en la cola"; else print "La mujer que tenías delante en la cola"; rtrue; ], alPedirEspejo [; if (jugador.recuerdaViolencia && ~~jugador.recuerdaAsesino) { jugador.recuerdaAsesino = true; self.printHabla ( "¿Qué quiere, que le deje el espejo otra vez?. Venga, tome"); print "^"; jugador.printHabla( "Me observo el cuello en el espejo y, como ya me temía, tengo el cuello manchado de sangre en el mismo lugar que el asesino de Carmen... ahora lo veo claro, incluso lo recuerdo... yo maté a mi mujer.", false); guardia.activarSabeAsesino(); self.activarSabeAsesino(); cola.turnoSinGritos = true; rtrue; } rfalse; ], ! ****** Conversación por menús Enunciado [linea msg; msg = self.msgEnunciado (linea); print (string) msg, "^"; ], msgEnunciado [linea msg; switch (linea) { 0: msg = "Pregúntale que dónde estais."; 1: msg = "Pregúntale que si te conoce."; 2: msg = "Pregúntale que cómo eres."; 3: msg = "Cuéntale lo que has descubierto sobre ti mismo."; 4: msg = "Pregúntale cómo murió."; 5: msg = "Pídele ayuda con las pruebas que necesitas."; default: msg = "Otro"; } return msg; ], msgEnunciadoFinal [linea msg preMsg; preMsg = "Sí, me encuentro bien, gracias. "; switch (linea) { 0: switch (self.nPreguntadoDonde) { 0: msg = "¿Podría decirme, si no es mucha molestia, para qué exactamente estamos haciendo esta cola?"; 1: msg = "Por favor, necesito saber dónde estamos. No entiendo por qué quiere ocultármelo."; 2: msg = "De verdad que no lo entiendo, ¿se puede saber por qué demonios no puede decirme dónde estamos?"; default: msg = "[BUG]"; } 1: msg = "Oiga... ¿sabe por casualidad quién soy yo?"; 2: msg = "Mire, he perdido completamente la memoria, ni siquiera recuerdo cómo soy. ¿Podría ayudarme?."; 3: msg = "Supongo que no le sorprende, apuesto a que ya lo sabía. Acabo de descubrirlo, soy un asesino, maté a mi mujer. ¿Podría decirme entonces qué lugar es este?"; 4: msg = "¿Y usted cómo ha llegado aquí?"; 5: msg = "Estoy desesperado, suponga que mató a alguien en defensa propia, que esa persona se basaba en un chantaje para después matarle y heredar su fortuna... ¿cómo podría demostrarlo?"; default: msg = self.msgEnunciado (linea); } ! msg = preMsg & " " & msg; return msg; ], Respuesta [linea; jugador.printHabla (self.msgEnunciadoFinal (linea), false); print "^"; switch (linea) { ! Dónde estamos ? 0: switch (self.nPreguntadoDonde) { 0: self.printHabla( "¿Quiere decir... que no lo sabe?."); print "^"; jugador.printHabla( "No, No tengo ni idea."); print "^"; self.printHabla ("..."); print "^"; RealPause(); self.printHabla( "Mire, le aconsejo que, simplemente, espere su turno pacientemente. Entonces lo descubrirá."); default: self.printHabla( "Ya le he dicho que espere su turno. Intente respetar mi decisión, simplemente no puedo decírselo."); } self.nPreguntadoDonde++; if (self.nPreguntadoDonde >= 3) self.QuipOff (0); ! Me conoce ? 1: self.QuipOff (1); self.printHabla( "No creo. ¿Debería conocerle?."); print "^"; jugador.printHabla( "... No lo sé... No tengo ni idea.", false); self.QuipOn (2); ! Cómo soy ? 2: self.QuipOff (2); self.printHabla ( "Bueno, yo diría que es usted un hombre de unos 35-40 años, moreno, alto... espere, creo que llevo un espejo..."); print "^"; self.printHabla ( "Ahí puede verse, ¿se reconoce?."); print "^"; jugador.printHabla ( "Sí... es raro que hasta mi propio aspecto se me haga extraño, pero está claro que soy yo."); self.mostroEspejo = true; cola.turnoSinGritos = true; ! Soy un asesino, ¿dónde estamos? 3: self.QuipOff (3); self.QuipOff (0); self.nombre_the_may(); print " te mira con gran lástima, pensando en qué decir.^"; self.printHabla ( "... Pregúntele al guarda. Él decidirá si se lo cuenta o no"); ! Cuentame tu vida 4: self.printHabla( "No fue nada demasiado especial. Cruzaba la calle sin mirar y me atropelló un coche. En el fondo me alegro, por fin podré volver a encontrarme con Antonio, mi esposo."); self.QuipOff (4); ! Ayuda pruebas 5: self.printHabla( "¿Hay testigos, alguien vio la escena?."); print "^"; jugador.printHabla ( "Sí, Linda, pero ella sigue viva, no podrá declarar salvo que muera... y no creo que se dé esa casualidad en el poco tiempo que me queda"); print "^"; self.printHabla ( "¿Alguna prueba del chantaje, alguna carta?"); print "^"; jugador.printHabla ( "Sí, la había, pero no la tengo yo..."); print "^"; self.printHabla ( "Pues entonces, me temo que no va a poder demostrarlo de ninguna forma"); print "^"; print "Por un momento sientes el impulso de creerla... pero esto no puede acabar así, ¡tiene que existir alguna forma!^"; self.QuipOff (4); } ], InicializarQuips [; self.QuipsOn (2, 0,1); ! Inicialmente las únicas frases activas son 0 y 1 (2 frases) ], antes [; HablarCon: if (self.checkNoCercano()) rtrue; ], activarSabeAsesino [; self.QuipOn (3); ], alDescubrirLugar [; self.QuipsOff (4, 0,1,2,3); self.QuipOn (4); ], alBuscarPruebas [; self.QuipOn (5); ], ordenes [; ! Dar: ! if (otro == Espejo) ! "Vale, pibe"; default: self.printHabla ("¿Quién se cree que es, dándome órdenes?."); rtrue; ], ! ****** Conversación por temas pregNombre [; if (self.conocida) { self.printHabla( "Ya se lo he dicho antes, ¿recuerda?"); } else { self.printHabla( "Me llamo Dolores Ruiz; puede llamarme Dolores si quiere."); self.conocida = true; if (dni.leido) { jugador.printHabla( "Yo me llamo Fernando, Fernando Algara; me temo que tengo unas lagunas tremendas en la memoria.", false); } else { jugador.printHabla( "Yo no puedo presentarme... no recuerdo ni cómo me llamo.", false); } } ], vida [ tema tema2 tema3 okGuardarSitio respuestaDef; ! *** TBC: En principio, dejarlo así (no sé qué más hay en Vida (Hablar por lo menos, pero no sé si se puede acceder aún...) ! Responder, Preguntar: if (self.checkNoCercano()) return; ! Se buscan los temas tema = AveriguarTema (TemasElDeDelante); tema2 = AveriguarTema (TemasSecundarios); if (~~tema) { tema = AveriguarTema (TemasComunes); tema2 = AveriguarTema (TemasComunes2); } tema3 = AveriguarTema (TemasTerciarios); ! Respuestas switch (tema) { Saludo: if (~~self.saludada) { self.printHabla ("Hola, caballero."); self.saludada = true; } else { self.printHabla( "Sí, ya me ha saludado antes, ¿recuerda?"); print "Te mira con cierta preocupación^"; } rtrue; PregNombre1: if (tema2 == PregNombre12) { self.pregNombre (); rtrue; } PregNombre2: if (tema2 == PregNombre22) { self.pregNombre (); rtrue; } PregNombre3: if (tema2 == PregNombre32) { self.pregNombre (); rtrue; } PreguntarEspejo: if (self.alPedirEspejo()) rtrue; TemaCuello: if ((tema2 == TemaMirar) && (tema3 ~= TemaTu) && jugador.recuerdaViolencia && ~~jugador.recuerdaAsesino) { "Vas a abrir la boca, pero te lo piensas mejor. Esto es algo que debes ver tú mismo, en esto no te puedes fiar de nadie."; } PregAyuda: self.printHabla ( "Lo siento, pero no puedo ayudarle. Si quiere algo más concreto, simplemente pídamelo"); rtrue; PregQuePasa1: if (tema2 == PregQuePasa2) { self.printHabla ( "Lo siento, pero no puedo ayudarle. Si quiere algo más concreto, simplemente pídamelo"); rtrue; } PregInventario: self.printHabla ( "¡Deje de mirarme así!"); rtrue; DiTuNombre: if (~~(tema2 == DiTuNombre2)) { self.printHabla ( "Encantada"); rtrue; } } okGuardarSitio = false; if (((tema == AbandonarSitioCola)) && ((tema2 == Sitio) || (tema2 == TemaCola) || (tema2 == TemaPrincipioCola))) okGuardarSitio = true; if ((tema == AbandonarSitioCasual) && (tema2 == AbandonarSitioCasual2)) okGuardarSitio = true; if ((tema == AbandonarSitio)) okGuardarSitio = true; if ((tema == GuardarSitio) && (tema2 == Sitio)) okGuardarSitio = true; if (okGuardarSitio) { self.printHabla ( "Si quiere abandonar la cola un rato, no se preocupe; yo le guardaré el sitio"); self.guardaSitio = true; } else { respuestaDef = random (9); switch (respuestaDef) { 1,2,3,4: self.nombre_the_may(); print " no parece estar muy interesada en lo que le estás contando.^"; 5,6: print "No parece entender lo que dices. Es posible que los nervios te estén haciendo balbucear.^"; 7,8,9: self.printHabla ("Sí, sí"); self.nombre_the_may(); print " asiente con la cabeza mientras mira hacia otro lado. No parece estar haciéndote mucho caso en lo que le dices.^"; } } rtrue; ], ! ****** Otros printHabla [ frase; printHablaGen( self.nombre_may, 6, frase, false); ], checkNoCercano [; if (jugador.enPrincipioCola || jugador.enFinalCola) { self.nombre_the_may (); " está demasiado lejos, no te oye desde aquí."; } else { rfalse; } ], ! *** Atributos has animado; ! End object !Object Espejo "espejo" elDeDelante !with ! nombre_m 'espejo', ! descripcion "Hasta donde alcanza tu entendimiento, no hay nada aquí que responda a ese nombre.", ! esta_en [; rtrue; ], ! !has ! oculto !; ! ******** TEMAS para las conversaciones ! ****** TEMAS GENERALES Object TemasComunes; Object -> Saludo "saludos" with name 'hola' 'buenos' 'dias' 'buenas' 'tardes' 'saludo' 'saludos' 'perdone' 'perdona' 'disculpe' 'disculpa'; Object -> PregNombre1 "como te llamas1" with name 'llamas' 'llama'; Object -> PregNombre2 "como te llamas2" with name 'nombre'; Object -> PregNombre3 "como te llamas3" with name 'eres'; Object -> PregAyuda "PregAyuda" with name 'ayuda'; Object -> PregInventario "PregInventario" with name 'i' 'inventario'; Object -> PregQuePasa1 "PregQuePasa1" with name 'ocurre' 'pasa'; Object -> DiTuNombre "DiTuNombre" with name 'Fernando' 'soy' 'llamo' 'nombre'; Object TemasComunes2; Object -> DiTuNombre2 "DiTuNombre2" with name 'no'; Object -> PregNombre12 "como te llamas12" with name 'como'; Object -> PregNombre22 "como te llamas22" with name 'cual' 'como'; Object -> PregNombre32 "como te llamas32" with name 'quien'; Object -> PregQuePasa2 "PregQuePasa2" with name 'que'; ! ****** TEMAS ESPECÍFICOS DE LA SEÑORA Object TemasElDeDelante; ! Preguntarle por el espejo Object -> PreguntarEspejo "PreguntarEspejo" with name 'espejo'; Object -> AbandonarSitioCasual "AbandonarSitioCasual" with name 'dar' ! Por "dar una vuelta" ; ! El tema "voy a salir de la cola un momento" se divide en dos: uno para el verbo y el otro ! para el sustantivo (TemaCola o Sitio); se consultarán los dos para comprobar el tema Object -> AbandonarSitioCola "AbandonarSitioCola" with name 'abandonar' 'abandono' 'abandone' 'dejar' 'dejo' 'deje' ; Object -> AbandonarSitio "AbandonarSitio" with name 'salir' 'salgo' 'salga' 'ir' 'irme' 'vaya' 'irte' ; ! El tema "me guardas el sitio?" se divide en dos: uno para el verbo y el otro ! para el sustantivo (Sitio); se consultarán los dos para comprobar el tema Object -> GuardarSitio "GuardarSitio" with name 'guardar' 'guardas' 'guarda' 'guarde' 'guardame' 'guardeme' 'guardarme' 'vigilar' 'vigilas' 'vigila' 'vigile' 'vigilame' 'vigileme' 'vigilarme' 'conservar' 'conservas' 'conserva' 'conserve' 'conservame' 'conserveme' 'conservarme' 'mantener' 'mantienes' 'mantiene' 'mantenga' 'mantenme' 'mantengame' 'mantenerme' 'respetar' 'respetas' 'respeta' 'respete' 'respetame' 'respeteme' 'respetarme' 'observar' 'observas' 'observa' 'observe' 'observame' 'observeme' 'observarme' ; ! Tema cuello, para pedirle que te lo mire (se divide en dos mas, para comprobar verbo ! y que el cuello no sea el de la señora Object -> TemaCuello "TemaCuello" with name 'cuello' ; ! ****** TEMAS SECUNDARIOS; sólo se consultan si lo requiere algún tema "primario" (de verbo) Object TemasSecundarios; Object -> Sitio "Sitio" with name 'sitio' 'lugar' 'posicion' 'turno' 'vez' ; Object -> TemaCola "TemaCola" with name 'cola' 'fila' ; Object -> TemaPrincipioCola with name 'frente' 'principio' 'inicio' 'origen' 'comienzo' 'cabeza' 'encabezamiento' 'vanguardia' ; Object -> AbandonarSitioCasual2 "AbandonarSitioCasual2" with name 'vuelta' 'voltio' 'garbeo' ! Por "dar una vuelta" ; Object -> TemaMirar with name 'mirame' 'mireme' 'mirarme' 'mira' 'mire' 'mirar' 'examina' 'examine' 'examinar' 'vistazo' ; ! ****** TEMAS TERCIARIOS; sólo se consultan si lo requiere algún tema "primario" (de verbo) Object TemasTerciarios; Object -> TemaTu "TemaTu" with name 'tu' 'su' ;