!% -~D !% -~S !% +include_path=..\lib\base,..\lib\contrib,..\games\Afuera !Poner "% -~S" (sin las ") permite compilar para generar archivo Afuera.z5 (máquina Z versión 5) !Poner "!% -~D" al principio del archivo (sin las ") permite compilar en modo Release (No Debug) ! "Afuera" ! ! REALIZADO POR: Sebastián Armas ! ! Copyright (C) 2007 ! CONSTANTES Constant Historia "~Afuera~"; Constant Titular "^Realizado por: Sebastián Armas^ (C) Año 2007^"; Serial "010101"; Release 1; ! Versión 01.01.01 ! Queremos usar el comando 'Salidas' Constant ADMITIR_COMANDO_SALIDAS; ! Constant DEBUG; ! No queremos usar los comandos 'Lugares' y 'Objetos' Constant NO_LUGARES; ! Puntuación Constant PUNTUACION_MAX 7; ! Tenemos Curiosidades Constant HAY_CURIOSIDADES; Include "zipi.inf"; ! Módulo para Menues !------------ Menu de la Aventura ----- ZIPI_Menu ZIPI_Menu0 with ZIPI_titulo "Ayuda de la Aventura", ZIPI_item ZIPI_Menu1 ZIPI_Menu2 ZIPI_Otro2 ! ZIPI_Menu6 ; ZIPI_Menu ZIPI_Menu1 with ZIPI_titulo "Instrucciones", ZIPI_item ZIPI_Otro0 ZIPI_Otro1 ; ZIPI_Menu ZIPI_Menu2 with ZIPI_titulo "Pistas", ZIPI_item ZIPI_Menu3 ZIPI_Menu4 ZIPI_Menu5 ; ZIPI_Menu ZIPI_Menu3 with ZIPI_titulo "El Baúl", ZIPI_item ZIPI_Pista0 ZIPI_Pista1 ZIPI_Pista2 ; ZIPI_Menu ZIPI_Menu4 with ZIPI_titulo "El Drenaje", ZIPI_item ZIPI_Pista3 ZIPI_Pista4 ZIPI_Pista5 ; ZIPI_Menu ZIPI_Menu5 with ZIPI_titulo "La Máscara", ZIPI_item ZIPI_Pista6 ZIPI_Pista7 ZIPI_Pista8 ZIPI_Pista9 ; ZIPI_Menu ZIPI_Menu6 with ZIPI_titulo "Curiosidades y Otros", ZIPI_item ZIPI_Menu7 ZIPI_Otro10 ; ZIPI_Menu ZIPI_Menu7 with ZIPI_titulo "Curiosidades", ZIPI_item ZIPI_Otro3 ZIPI_Otro4 ZIPI_Otro5 ZIPI_Otro6 ZIPI_Otro7 ZIPI_Otro8 ZIPI_Otro9 ; ZIPI_Pista ZIPI_Pista0 with ZIPI_titulo "¿Dónde está el baúl?", ZIPI_pistas "No hay demasiadas cosas en la celda..." "así que revisa el amoblado." "Fíjate en el camastro..." "con BUSCA EN CAMASTRO." ; ZIPI_Pista ZIPI_Pista1 with ZIPI_titulo "¿Cómo saco el baúl?", ZIPI_pistas "El baúl está hundido en un nicho." "Empuja el baúl y este saldrá del nicho." "Sigue bajo el camastro, así que..." "Tira del baúl para sacarlo fuera." ; ZIPI_Pista ZIPI_Pista2 with ZIPI_titulo "¿Cómo abro el baúl?", ZIPI_pistas "Fíjate en la tapa del baúl..." "y en la placa en particular." "Si lees la placa..." "verás que es una grilla codificada:" "usa el código que te dieron..." "digitando en el teclado del baúl." "El baúl se abre con TECLEA 2048 EN EL TECLADO" ; ZIPI_Pista ZIPI_Pista3 with ZIPI_titulo "¿Cómo uso el lavabo?", ZIPI_pistas "Examínalo..." "y verás que tiene un grifo." "Para usarlo..." "digita BEBE DEL LAVABO o BEBE DEL GRIFO o simplemente BEBE AGUA." ; ZIPI_Pista ZIPI_Pista4 with ZIPI_titulo "¿Cómo uso el drenaje?", ZIPI_pistas "Una vez que hayas bebido lo suficiente..." "te entrarán ganas de orinar." "No lo hagas en cualquier sitio:" "Usa el agujero de drenaje..." "con ORINA EN DRENAJE u ORINA EN AGUJERO" ; ZIPI_Pista ZIPI_Pista5 with ZIPI_titulo "¿Cómo manejo lo que sale del drenaje?", ZIPI_pistas "Una vez que has orinado..." "saldrán ruidos del drenaje." "Fíjate dentro." "Coge la criatura..." "y mátala..." "usando algo de la celda:" "MATA CRIATURA CONTRA EL CAMASTRO, por ejemplo." ; ZIPI_Pista ZIPI_Pista6 with ZIPI_titulo "¿Como uso la máscara?", ZIPI_pistas "Póntela..." "Si está lista, podrás salir." "Si no, recibirás indicaciones precisas." ; ZIPI_Pista ZIPI_Pista7 with ZIPI_titulo "¿Cómo preparo la máscara para Afuera?", ZIPI_pistas "Fíjate en la máscara." "Los estanques y los filtros están secos." "Necesitas llenarlos con algo." ; ZIPI_Pista ZIPI_Pista8 with ZIPI_titulo "¿Cómo lleno el estanque?", ZIPI_pistas "Con agua no se puede." "Necesitas otro tipo de líquido." "Captura y mata una criatura del drenaje." "La humedad que necesitas no está por fuera..." "Así que ábrela." "Ahora, coge y abre la máscara..." "llena el estanque..." "con LLENA ESTANQUE o VACIA CRIATURA." ; ZIPI_Pista ZIPI_Pista9 with ZIPI_titulo "¿Como lleno los filtros?", ZIPI_pistas "Si ya llenaste la máscara, examínala." "Notarás que los filtros aun no están listos." "Para saturar los filtros..." "agita la máscara..." "con AGITA LA MASCARA. Ahora la máscara está lista para usarla." ; ZIPI_Otro ZIPI_Otro0 with ZIPI_titulo "Comandos Principales", ZIPI_ejecutar [; print "Las órdenes siguientes son básicas y pueden encontrarse en casi cualquier aventura conversacional. El jugador puede tratar siempre de hacer otras acciones.^^"; style fixed; print "Ayuda - Esta ayuda.^"; print "ex x, examinar x - Da una descripción de x.^"; print "busca en x, mira en x - Revisar un objeto para ver si contiene algo más...^"; print "coge x, deja x - El objeto x pasa a ser o deja de ser llevado.^"; print "mete x en y - El objeto x deja de ser llevado y queda dentro de y.^"; print "mete y a x - El objeto y deja de ser llevado y queda dentro de x.^"; print "saca y de x - El objeto y sale de x y pasa a ser llevado.^"; print "tira de x - Tira del objeto x.^"; print "empuja x - Empuja el objeto x.^"; print "abre x - Si x es abrible, x queda abierto (contenedor, puerta).^"; print "cierra x - Si x es cerrable, x queda cerrado (contenedor, puerta).^"; print "mata x con y - Mata a x usando el objeto y.^"; print "teclea x en y - Digita el texto x en el objeto y.^"; print "vacia x - Vacía el objeto x.^"; print "llena x - Llena el objeto x.^"; print "agita x - Agita el objeto x.^"; print "i, inventario - Da una lista de los objetos llevados.^"; print "pistas - Pistas para resolver el juego (evite la tentación...).^"; print "save, guardar - Grabar el estado actual de la partida (recomendable...).^"; print "load, cargar - Recuperar un estado de partida ya guardado.^"; print "quit, fin, terminar - Terminar la partida en juego.^"; style roman; ]; ZIPI_Otro ZIPI_Otro1 with ZIPI_titulo "Otros Comandos", ZIPI_ejecutar [; print "Las órdenes, en general, se pueden dar según:^"; style fixed; print ""; style roman; print " o bien^"; style fixed; print " "; style roman; print " o bien^"; style fixed; print " ^"; style roman; ]; ZIPI_Otro ZIPI_Otro2 with ZIPI_titulo "Agradecimientos", ZIPI_ejecutar [; print "A Grendelkhan, organizador de la Tercera MiniComp y mi esforzado Betatester.^^"; print "A toda la comunidad IF española: el foro del CAAD y tantísimos sitios web con ejemplos y documentos invaluables.^^"; print "A Alessandro Schillaci y Luis Fernández, creadores de JIF (en español), un pedazo de herramienta para el desarrollo en InformATE!^^"; print "A nuestro hermoso planeta y a sus habitantes, especialmente los que trabajan por su conservación. "; ]; ZIPI_Otro ZIPI_Otro3 with ZIPI_titulo "¿Cómo es la Pirámide?", ZIPI_ejecutar [; print "En la puerta hay un dibujo.^"; print "Examínalo. "; ]; ZIPI_Otro ZIPI_Otro4 with ZIPI_titulo "Los Prisioneros ¿Qué hacen antes de salir Afuera?", ZIPI_ejecutar [; print "No todos tienen la misma suerte o las mismas motivaciones.^"; print "Sobre el camastro hay rayados. Léelos. "; ]; ZIPI_Otro ZIPI_Otro5 with ZIPI_titulo "Avisos en la Pirámide", ZIPI_ejecutar [; print "El parlante es usado para avisos... algunos de los encargados de la Pirámide.^"; print "Otros no son de ellos.^"; print "Algunos mensajes son informativos. Otros... inquietantes.^"; print "Espera un rato y verás. "; ]; ZIPI_Otro ZIPI_Otro6 with ZIPI_titulo "¿Qué hay allá Afuera?", ZIPI_ejecutar [; print "Por el vidrio llega algo más que luz a la celda.^"; print "Espera un rato y verás. "; ]; ZIPI_Otro ZIPI_Otro7 with ZIPI_titulo "¿Cómo es el prisionero?", ZIPI_ejecutar [; print "Es un tipo muy rudo.^"; print "Mírate... Tócate... Huélete... Escúchate...^"; print "Duerme... Despierta...^"; print "Sopla... Gesticula...^"; print "Reza... Canta...^"; print "Escupe... Vomita... Caga... (en el lavabo o el agujero, por favor) "; ]; ZIPI_Otro ZIPI_Otro8 with ZIPI_titulo "¿Qué tan peligrosa es la criatura?", ZIPI_ejecutar [; print "Prueba a dejarla escapar.^"; print "Espera un rato y verás. "; ]; ZIPI_Otro ZIPI_Otro9 with ZIPI_titulo "¿Para qué sirven las algas?", ZIPI_ejecutar [; print "Son una especie experimental.^"; print "Huélelas... y atrévete a dañarlas.^"; print "Intenta cuidarlas: orina en ellas. "; ]; ZIPI_Otro ZIPI_Otro10 with ZIPI_titulo "Historia de Afuera^^", ZIPI_ejecutar [; print "Sobre la Creación de la Obra^^"; print "Terminaba el año 2007 y pensaba que después del largo y arduo trabajo de ~Macetas~ ya había cubierta mi ~cuota~ autoril del año.^"; print "Pero se abrió la discusión de lanzar la MiniComp, luego se lanzó la MiniComp... y la tentación fue grande: una sola localidad, pocos objetos y un argumento de resolución rápida... y toda la ambientación que uno quisiera agregar como ~aderezos~.^"; print "Y me tiré a la piscina.^"; print "Fue divertido...^^"; print "Sobre el Tema de la Obra^^"; print "Esta obra trata, en el fondo, sobre el (por el momento) acuciante problema de nuestra intervención en el desequilibrio creciente de los ecosistemas de nuestro mundo, incluyendo aquellos que soportan nuestra propia existencia.^"; print "¿Qué les puedo decir? Yo ya he visto algunos cambios... no para mejor.^"; print "Como muestra, el factor de protección de las cremas para el sol. Soy bastante claro de piel (~irremediablemente blanco~) y siempre he debido usar estos potingues, so pena de ser cocido al rojo.^"; print "Pero.^"; print "Pero de adolescente (años 80s), podía sobrevivir con un factor 8... y ahora (2007) no se me ocurriría usar menos de 50.^"; print "Pero de niño y joven podía estar al sol toda la mañana y la tarde de un verano, si quería... y ahora, entre 11 AM y 3 PM, estar al sol todo el rato es, sencillamente, mala idea.^"; print "Pero antes, a un bebé se le podía llevar a la playa, echarle algo de crema (sin factor) y ponerle, si acaso, un gorro... y ahora, o se los saca vestidos o se les pone pantalla (crema bloqueadora reflectante, no meramente con filtro UV), y no por mucho rato, por cierto.^"; print "Ahora, si empiezo con la comida (especialmente moluscos) que comía antes y que ahora no, porque ~están en veda~, ~ya no hay más~ y qué sé yo, me voy a poner pesado.^"; print "Nos gusta ser dueños de la creación, pero no somos muy buenos administradores, ni siquiera de un pedacito...^^"; print "Despierten. Infórmense. Actúen.^^"; print "Santiago de Chile, 20 de Noviembre, 2007 "; ]; ! Comentarios [curiosidades; ZIPI_RunMenuT(ZIPI_Menu6); ]; !-------------- Include -------------- Include "EParser"; ! Módulo para InformATE! Include "Acciones"; ! Módulo para InformATE! Include "Gramatica"; ! Módulo para InformATE! Include "Cortos"; ! Módulo para texto animado Include "Decorado"; ! Módulo para descripcion de decorados !------------ End Include ---------- !------------ Globales ---------- Attribute legible; ! Definiciones para lectura Array matriz_par ->10; ! Definiciones para ambientador universal Array matriz_ven ->10; !------------ Clases ---------- ! Meta clase DecoradoAmpliado Class Decorado_Ampliado class Decorado with antes [; Examinar: rfalse; Atacar, Tocar: "Eso está tibio al tacto..."; BuscarEn : "Nada. Qué estúpida pérdida de tiempo..."; Coger : "No voy a empezar a destrozarlo todo porque sí."; Empujar: "No parece que se pueda empujar."; Oler: "Huele tan mal como el resto de la celda..."; Escuchar: "No produce ningún sonido."; default: "No me da la gana..."; ]; ! Clase para Objetos del escenario manipulables por el jugador y que ! son parte de algún puzzle Class Objeto_Escenario class Object with descripcion[; if (self hasnt visitado) { give self visitado; self.descripcion_larga(); rtrue; } else { give self ~visitado; self.descripcion_corta(); rtrue; } ], descripcion_larga "descripción larga del objeto", descripcion_corta "descripción corta del objeto", antes [; Examinar: rfalse; Atacar, Tocar: "Eso está tibio al tacto..."; MirarDebajo, BuscarEn : "Nada. Qué estúpida pérdida de tiempo..."; Coger : "Está fijo a la celda."; Empujar: "No parece que se pueda empujar.^ Me canso..."; Oler: "Huele tan mal como el resto de la celda..."; Escuchar: "No produce ningún sonido."; ] has escenario; ! Clase para las paredes de la celda Class Objeto_Escenario_Pared class Object with nombre_f 'pared', nombre_m 'muro', antes [; if ((Jugador in camastro) && (self ~= ParedEste)) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Pero qué lata..."; BuscarEn : "Nada. Qué estúpida pérdida de tiempo..."; Examinar: rfalse; Coger : "No soy tan forzudo."; Tocar : "La mezcla es dura y áspera."; Atacar, Empujar: "Es una forma muy estúpida de cansarme."; Oler: "Huele tan mal como el resto de la celda..."; Escuchar: "No produce ningún sonido."; ], has escenario femenino; Class Localidad with antes [num; Rezar : "¿Para qué? Hay idiotas allá abajo que dedican todo su tiempo libre a eso...^^ ¿Y qué creen?^^ Seguimos aquí, encerrados en esta maldita Pirámide y Afuera todo sigue igual..."; Cantar : "No estoy inspirado y la acústica, además, es pésima..."; Escuchar : if (uno == 0) { if (Anguila in Agujero) "Son como chapoteos. Vienen del agujero en el suelo."; else "Nada. Sólo mi respiración..."; } Beber : if (uno == 0) "¿De dónde mierda voy a beber?..."; Oler : if (uno == 0) <>; Dormir : "Ya estoy emasiado despabilado, y además, el calor es casi insoportable..."; Despertarse : "Más de lo que ya lo estoy, imposible..."; Gesticular : "Me pongo a hacer morisquetas y meneo los brazos... como un imbécil."; Soplar : "Siento el aire tibio y rancio."; Saltar : "No tengo ganas."; Tacos : num=random(7); switch (num){ 1: "¡Quiero salir de aquí de una puta vez!"; 2: "¡¿Qué mierda quieren de mí?!"; 3: "¡Abranme esa mierda de puerta ya y acabemos con esto!"; 4: "¡Mierda!"; 5: "¡Quiero que me dejen en paz!"; 6: "¡Bastaaaa!"; 7: "¡Acabemos de una vez!"; }; ] has luz; ! Habitación Limbo Localidad Limbo "El Limbo" with descripcion "¡Eh! ¿Cómo has llegado aquí? Estos Betatesters..."; ! El jugador Object miJugador Limbo with descripcion "Soy un cabrón.^ Soy un hijoputa de primera.^ Soy... soy otro prisionero más.^^ No estoy en los huesos, pero, como todos en la Pirámide, apenas lleno la ropa.^ No soy demasiado alto, pero lo mismo da; tiendo a andar encorvado.^ Voy sucio... pero es igual. Todo suele estar más sucio que yo.", antes [; Tocar : "Tengo la piel reseca, con cicatrices por todos lados." ; Oler : "La verdad, no me vendría mal un baño. Aunque, en esta celda, no podría importar menos..."; Cortar : "No estoy de humor. Ya tengo suficientes marcas ~cosméticas~."; Escuchar : "¿Hacerle caso a mi conciencia, a estas alturas?^ Para qué mierda...^ Mi padre insistía mucho sobre el tema.^^ De hecho, insistió hasta el punto en que ya no quise oírlo a él tampoco.^^ Lo que puede hacerse con un lápiz y un poco de ira..."; Frotar : "No tengo ganas."; ] ; Object Uniforme "uniforme de prisionero" Limbo with nombre_m 'uniforme' 'mono', nombre_f 'ropa', nombre_fp 'botas', adjetivos 'trabajo' 'prisionero' 'toscas', descripcion "Un mono gris para prisioneros, de una sola pieza, con unas botas toscas incorporadas.^ Es bastante holgado y está tanto o más sucio que yo.", antes [; MirarDebajo, BuscarEn : <>; Atacar : "No es gran cosa, pero es lo que tengo. Mejor lo cuido."; Desvestir : "¿Y andar desnudo? No hace tanto calor..."; Oler : <>; ], has masculino prenda; !----------------------------------[La Celda]---------------------------------- Localidad Celda "La Celda" with cantidad 0, cada_turno [; if ( self.cantidad < 1) ArrancarDaemon(self); ], daemon [; if (self.cantidad < 1) self.cantidad++; else { AvisoInicialParlante.proyeccion(); PararDaemon(self); ArrancarDaemon(ambientador_universal); rtrue; } ], descripcion [; if (self hasnt general) { give self general; print "Estoy en la celda, desde hace ya un buen rato.^ Es una habitación cuadrada, de no más de cinco pasos de pared a pared. Cuatro paredes, una puerta y una ventana. El amoblado, por lo demás, es espartano: un camastro, un lavabo... y el aire que respiro, que está tibio, por cierto. Y huele mal.^ Y es que hay demasiada luz y hace calor... mucho calor. El calor y la luz entran por la ventana: un pequeño y brillante sol en medio del muro, horneándolo todo a fuego lento.^ El lugar es espantoso, pero es mejor que estar Afuera... "; if (self.cantidad ==1) print "que es precisamente a donde me han enviado; debo partir dentro de poco, me guste o no. "; } else { give self ~general; print "Estoy en la celda, desde hace ya un buen rato.^ Cuatro paredes, una puerta, una ventana y poco más: el amoblado es espartano, pero es mejor que estar Afuera... "; if (self.cantidad ==1) print "a donde debo partir dentro de poco. "; print "^Hay demasiada luz y hace calor... mucho calor. Y el aire huele mal."; } if (Anguila in Agujero) "^Ahora, encima, parece que el drenaje del agujero no funciona. Se escuchan ruidos..."; else if ( (Anguila in Limbo) || ((Anguila in self) && (Anguila has general)) ) "^Es un asco. Silencioso, pero un asco."; ], antes [; Examinar: if (uno == obj_abajo) <>; else if (uno == obj_arriba) <>; else rfalse; Ir : if (uno == obj_afuera) "La puerta está cerrada... aún."; else "Por ahí no se puede..."; ], afuera PuertaCelda, ; ! Objeto para MIRAR CELDA Objeto_Escenario ObjetoCelda "celda" Celda with nombre_f 'celda' 'habitacion', nombre_m 'lugar', descripcion [; <>;], antes [; Coger : "Imposible..."; Oler: <>; Escuchar: <>; ! Salir: ! <>; ], has femenino; ! Decorados generales de la Celda Objeto_Escenario TechoCelda "techo" Celda with nombre 'techo', descripcion "El techo de la celda es como las paredes... y está bastante alto.", antes [; Examinar: rfalse; default : "Está demasiado arriba para conseguirlo..."; ], has masculino; Objeto_Escenario SueloCelda "suelo" Celda with nombre 'piso' 'suelo', descripcion "El suelo de la celda es como las paredes... e incómodo para pisarlo.^ Todo el suelo de la celda tiene una ligera inclinación hacia el drenaje, al pie del lavabo.", has masculino; Objeto_Escenario Olor "olor" Celda with nombre_m 'meado' 'olor' 'aire', nombre_mp 'orines', nombre_f 'orina' 'meada', nombre_fp 'meadas', capacidad 15, antes [; Oler : if (self.capacidad < 15) self.capacidad = self.capacidad + 1; if (self.capacidad < 3) "Es un olor a meada intenso, como si toda la celda fuera un enorme retrete... desde que la construyeron. Lo impregna todo... y lo peor es que aun no logro acostumbrarme."; else if (self.capacidad < 8) "Es un olor a meada intenso, como si toda la celda fuera un enorme retrete... desde que la construyeron. Lo impregna todo... pero ya me voy acostumbrando."; else "Es un olor a meada que lo impregna todo... pero ya me acostumbré."; default : "¿Cómo se supone que haga eso con un jodido olor?..."; ], has masculino; Objeto_Escenario LuzCelda "luz" Celda with nombre 'luz', descripcion_larga "Intensa, blanca, brillante.^ Llena toda la habitación y le da una definición precisa a todo.^ Cuesta acostumbrarse, después de una vida en semipenumbra.", descripcion_corta "Intensa, blanca, brillante.", antes [; Examinar : rfalse; default : "¿Cómo se supone que haga eso con la puta luz?..."; ], has femenino; Objeto_Escenario_Pared Paredes "paredes" Celda with nombre_m 'muros', nombre_f 'paredes', descripcion "Son cuatro muros, encajados en forma más o menos recta. Si de verdad es de mañana, entonces es que están orientados cardinalmente; la luz entra recta por la ventana.", has nombreplural; Decorado_Ampliado DecoradoCelda Celda with describir 'cicatrices' "Algunos recuerdos de cosas que se me resistieron un poco, je... " G_FEMENINO + G_PLURAL 'mezcla' "Parece algo así como arena. Es increíblemente denso." G_MASCULINO 'amoblado' "Un camastro y un lavabo. Un lujo..." G_MASCULINO + G_PLURAL 'muebles' "Un camastro y un lavabo. Un lujo..." G_MASCULINO + G_PLURAL ; Decorado_Ampliado DecoradoCeldaCamastro Celda with antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Puede esperar..."; ], describir 'material' "Una mezcla dura y densa de vaya uno a saber qué.^ No hay demasiado metal no estructural disponible en la Pirámide." G_MASCULINO 'impurezas' "Son partes del vidrio más densas que otras." G_FEMENINO + G_PLURAL 'ralladuras' "Son largas e irregulares. Algunas están por dentro... y la mayoría fueron hechas por fuera.^ Vaya." G_FEMENINO + G_PLURAL 'golpes' "En algunas partes el vidrio está ligeramente trizado.^ Tipos desesperados, vaya." G_MASCULINO + G_PLURAL ; ! PARTED NORTE Objeto_Escenario_Pared ParedNorte "pared norte" Celda with adjetivos 'norte', descripcion "El muro norte de la celda. La puerta está justo al medio, con un parlante blindado a un costado. En la esquina superior izquierda hay un lente de seguridad."; Objeto_Escenario PuertaCelda "puerta blindada" Celda with nombre 'puerta', adjetivos 'blindada' 'metalica' 'oscura', descripcion_larga "Es una puerta oscura, de algún material metálico y basto.^ Se ve muy sólida, por desgracia, y no tiene ningún detalle que se destaque, salvo una pequeña pirámide dibujada bajo relieve en el centro de todo.^ Está cerrada, por supuesto.^ A un costado hay un parlante blindado. Arriba, en una esquina, se ve una pequeña cámara de seguridad.", descripcion_corta "Una puerta metálica blindada... y cerrada. En el centro está dibujada una pequeña pirámide.^ A un costado hay un parlante blindado. Arriba, en una esquina, se ve una pequeña cámara de seguridad.", antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Parece tan cerca, y está tan lejos..."; Atacar, Tocar : "Es rugosa y áspera y suena completamente sólida.^ Está tibia al tacto."; BuscarEn : "No tiene ningún asa, cerradura, goznes o algo que indique como se abre."; Empujar, Girar : "Trato de empujarla para girarla, pero no hay caso. Está fija en su sitio."; Tirar : "No hay nada que aferrar para poder tirar de la puerta."; Abrir : "No se abre por más que me esfuerzo."; ], has femenino; Objeto_Escenario Piramide "pirámide" Celda with nombre_f 'piramide', nombre_m 'dibujo', adjetivos 'pequeña' 'tallada' 'relieve', descripcion[; if (self hasnt visitado) { give self visitado; give self general; LaPiramide.proyeccion(); rtrue; } else if (self hasnt general) { give self general; "Es el dibujo de una pequeña pirámide. Cómo la odio.^^ Los diseñadores originales organizaron todo esto así:^^ En el nivel más bajo vive la gran mayoría: los trabajadores, las familias... la gente común. Un enorme rebaño de estúpidas ovejas.^^ En el siguiente nivel superior están los líderes, los técnicos especializados y todos los que organizan el resto de la Pirámide. Los perros que pastorean a los demás imbéciles.^^ En el último nivel, el más cercano a la superficie, están todos los que, como yo, no quieren adaptarse a las absurdas obligaciones e inútiles restricciones de la vida en los niveles inferiores.^^ De este nivel, sólo hay dos salidas: abajo, si se finge una conducta adecuada, y ~trabajas~ como guardia un tiempo... o Afuera, si deciden que eres un caso irrecuperable... y prescindible.^^ Una pirámide, en efecto. Cómo la odio..."; } else { give self ~general; "Es el dibujo de una pequeña pirámide. Cómo la odio..."; } ], antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Bajarme por algoi tan pequeño... puf..."; Tocar : "Esta tallada con cuidado bajo relieve. El dibujo está muy gastado."; ], has femenino; Objeto_Escenario Parlante "parlante blindado" Celda with nombre_m 'parlante', nombre_f 'rejilla', adjetivos 'metalico' 'metalica' 'blindado' 'blindada', descripcion_larga "Es un parlante metálico, con una rejilla blindada que lo protege.^ Lo usan para pasar mensajes... y para tener el menor contacto posible conmigo...^^ ...y no es tan malo, la verdad.^^ En general, lo usan sólo lo justo y nunca pierden tiempo con charla inútil.^ A diferencia de la lente de seguridad, no se mete conmigo sin que yo lo sepa... y, después de un tiempo encerrado, una valora esas cosas.", descripcion_corta "Es un parlante metálico, con una rejilla blindada que lo protege.", antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Si no me jode, mejor no lo jodo..."; Atacar : if (self has general) "Lo dejo en paz. Me dolió lo suficiente la primera vez..."; else { print "¡CLONC!^^ Quedo dolorido con el golpe; es aun más duro de lo que pensaba... mucho más que los de allá abajo.^^"; give self general; <>; } ], has masculino; Objeto_Escenario Lente "lente de seguridad" Celda with nombre 'lente' 'camara' 'esquina', adjetivos 'seguridad' 'superior' 'izquierda', descripcion[; if (self hasnt visitado) { give self visitado; give self general; LenteSeguridad.proyeccion(); rtrue; } else if (self hasnt general) { give self general; "Es una lente de seguridad, parte del sistema de vigilancia de la Pirámide. Está ubicada en una esquina de la pared, a una altura a la que no lograría llegar ni aunque tratara. Estas cámaras están por todos lados y siempre están encendidas.^^ Siempre.^^ Y eso es algo que me jode bastante, la verdad.^^ Porque vieron todo lo que hice... y pudieron haberme detenido mucho antes de lo que finalmente lo hicieron. Les dije que eso los hacía, hasta cierto punto, cómplices... pero parece que es parte de lo que ~nadie te cuenta, pero todos lo entienden~ y toda esa basura.^^ Me dieron a entender que, para el bien de la Pirámide, se le permiten algunas equivocaciones a la gente, mientras no sean reiteradas y cada vez más graves... como en mi caso.^^ Como muchas cosas por aquí, apesta."; } else { give self ~general; "Es una lente de seguridad, parte del sistema de vigilancia de la Pirámide.^ Como muchas cosas por aquí, apesta."; } ], antes [; Examinar: rfalse; default : "Está demasiado arriba para conseguirlo..."; ], has femenino; ! PARED SUR Objeto_Escenario_Pared ParedSur "pared sur" Celda with adjetivos 'sur', descripcion "El muro sur de la celda. Hay una ventana en un costado."; Objeto_Escenario Ventana "ventana" Celda with nombre_f 'ventana' 'afuera', nombre_m 'vidrio' 'sol', adjetivos 'fija' 'circular' 'redonda' 'doble' 'polarizado' 'polarizada', descripcion_larga "Es una ventana circular, con un vidrio doble polarizado.^ No tiene bisagras, pestillo, ni nada que permita abrirla o girarla; está fija la pared.^ El vidrio es doble, y muy grueso, lleno de impurezas, ralladuras y golpes.^ Pese a que el vidrio esté polarizado, se filtra una luz más bien intensa, que ilumina toda la celda.^ Duelen los ojos después de mirar un rato.", descripcion_corta "Es una ventana circular, con un vidrio doble polarizado.^ Duelen los ojos después de mirar un rato.", antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Hace demasiado calor, vaya..."; Atacar, Tocar : "El vidrio es liso y áspero, y al golpearlo suena sólido.^ Está caliente al tacto."; BuscarEn : "No tiene bisagras, pestillo, ni nada que permita abrirla o girarla; está fija la pared."; Tirar : "No hay nada que aferrar para poder tirar de la ventana."; Empujar, Girar : "Trato de empujarla para girarla, pero no hay caso. Está fija en su sitio."; Abrir : "No se abre por más que me esfuerzo."; ], has femenino transparente; ! PARED ESTE Objeto_Escenario_Pared ParedEste "pared este" Celda with adjetivos 'este', descripcion "El muro este de la celda. El camastro está adosado a esta pared.^ Hay varios rayados en la pared."; Objeto_Escenario Rayados "rayados" Celda with nombre_mp 'rayados' 'grafitos' 'graffitis' 'garabatos' 'escritos', nombre 'rayado' 'grafito' 'garabato' 'escrito', descripcion "Es una multitud de rayados que los anteriores ocupantes de esta celda han dejado escritos en esta pared. Algunos son apenas garabatos.", capacidad 15, antes [; Leer : if (self.capacidad < 15) self.capacidad = self.capacidad + 1; else self.capacidad = 1; switch(self.capacidad) { 1 : print "~Maté un guardia hoy: por fin hay carne en el menú.~^^ Está escrito en rojo."; 2 : print "~Día 1: Espero.~^ ~Día 2: Espero.~^ ~Día 3: Espero.~^ ~Día 4: Salgo Afuera.~^^ No hay nada más con esa letra."; 3 : print "~Me tocó turno en producción de alimentos.^ El aliño del día corrió por mi cuenta.~^^ ¡Puaj!"; 4 : print "~Me gustan mucho las mujeres.^ Me gustan mucho los hombres.^ Todos me gustan mucho.~^^ Este, también escrito en rojo."; 5 : print "~Día 1: Hoy salí Afuera^ Día 3: Hoy salí Afuera^ Día 4: Hoy salí Afuera. ¡Sigo aquí, hijoputas!^ Día 5: Hoy salí Afuera. Encontré compañía; escaparon^ Día 6: Hoy salí Afuera. Maté al mamón que me esperaba^ Día 7: Hoy salí Afuera. Soy imparable; comí fuera, hoy.^ Día 8: Hoy salí Afuera. Los vi de nuevo. Los seguí, pero ~^^ Está borrado el resto de la línea. Sigue:^^ ~Día 12: Sombras en la ventana. Saben que soy yo.^ Día 13: Hoy salí Afuera. Los vi de nuevo. Escapé apenas.^ Día 14: Hoy salí Afuera. Me están acechando. Los guardias no me escuchan. Tengo miedo.^ Día 15: Hoy salí Afuera. Me acosaron sin parar. Juegan conmigo.^ Día 16: Hoy salí Afuera.^ Día 17: Si alguien lee esto: caminan como bestias, pero~ algo ilegible ~^ como nosotros. No olvidan. No perdonan. No descansan. Y tienen hambre.^ Día 18: Hoy salgo Afuera.~^^ No hay nada más con esta letra."; 6 : print "~Aflojé un perno en una pasarela.^ 10 Heridos.^ 3 Lisiados.^ 5 Muertos.^ Me exiliaron Afuera.^ Salgo hoy... pero dejé otro perno listo en otro sitio^ ¡BUSQUENLO SI PUEDEN, PENDEJOS!~^^ Un tipo dedicado, vaya."; 7 : print "~Nunca es suficiente.^ ¡Más!~^^ En rojo..."; 8 : print "~Te quiero.^ Perdóname.^ Pero no podía soportarlo: verlo contigo,^ siempre juntos,^ acariciándote cuando yo estaba cerca,^ siempre que yo estaba cerca y^ Te quiero.^ Perdóname.~^^ Idiota sentimental..."; 9 : print "~Hoy hubo carne en el menú.^ Costó engordarlo, al cabrón, pero estaba bueno...~^^ Joder.^^ ¡No está escrito en rojo!"; 10: print "~Si has estado aquí, deja tu marca^^ / / / / / / / / / /^ / / / / / / / / / /^ / / / / / / / / / /^ / / / / / / / /~^^ ¿Mi turno?"; 11: print "~¿Leyendo en la pared, imbécil?~^^ Hijo de la puta madre que te parió..."; 12: print "~Llénalo. Agítalo. Respira.~^^ ¿Y esto?"; 13: print "~¿Quieres deprimirte un poco?^ Anota debajo el último número de censo y la población^^ 40 8.937^ 43 7.542^ 44 6.435^ 47 6.500^ 52 6.300~^^ Algo no está funcionando bien, parece..."; 14: print "~¡Cómeme!~^^ Un poco más abajo:^^ ~Con placer.~^^ Escrito en rojo... y está fresco."; 15: print "~Pesca peligrosa, pero jugosa...~^^ ¿Qué?..."; } if (self.capacidad == 15) "^^Bueno, era el último. Se termina repitiendo, el material de lectura..."; else "^^Hay otros rayados más para leer..."; ], has masculino nombreplural legible; Objeto_Escenario Camastro "camastro metálico" Celda with nombre 'camastro' 'cama' 'litera', adjetivos 'metalico' 'duro' 'liso', descripcion_larga "Es un camastro metálico, duro y liso, adosado a la pared. No tiene almohadas ni mucho menos mantas... para lo que servirían aquí. El olor es asqueroso y hace demasiado calor para pensar en dormir si acaso vestido.^ Hay algunos rayados en esta pared.", descripcion_corta "Un camastro metálico, tan duro y acogedor como el suelo.", antes [; Recibir : if ( (uno == Anguila) && (Anguila hasnt general) ) { move Anguila to Celda; "¡La criatura salta del camastro hacia la Celda!"; } Trepar : if (jugador notin self) { move Jugador to self; "Me subo al camastro y me paro sobre él.^ Vaya.^ El techo sigue fuera de mi alcance..."; } else "Ya estoy encima..."; Atacar, Tocar : "El camastro es rugoso y áspero. Está tibio al tacto."; MirarDebajo, BuscarEn : if (Baul hasnt general) { move Baul to Celda; move Nicho to Celda; "Hay un baúl de equipamiento bajo el camastro."; } else if (Baul hasnt visitado) "Hay un baúl de equipamiento bajo el camastro."; ], despues [; Meterse : "Me tiendo con desgano.^ Casi prefiero estar de pie.^^ Casi..."; ], has masculino soporte entrable; Objeto_Escenario Nicho "nicho" Limbo with nombre 'nicho', descripcion [; if (Baul hasnt general) "Es un hueco, no muy profundo, bajo el camastro. El baúl encaja perfectamente en él."; else "Ya apenas se ve el contorno, fundido con el resto del suelo."; ], antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Puede esperar..."; Recibir : if (Baul hasnt general) "Está ocupado con el Baúl."; else { print "Se niveló al salir el baúl. "; <>; } ] has masculino; Object Baul "baúl de equipamiento" Limbo with nombre_m 'baul' 'teclado', nombre_f 'tapa' 'asa', nombre_fp 'teclas', adjetivos 'metalico' 'equipamiento' 'negro' 'numerico', descripcion [; print "Es un baúl de equipamiento, "; if (self hasnt general) print "empotrado en un nicho en el suelo, debajo del camastro.^"; else print "hecho con un material metálico oscuro.^"; if (self hasnt visitado) print "Cuesta ver más detalles. Tendré que sacarlo de debajo del camastro para verlo mejor."; else print "En la tapa hay una placa metálica plateada, con un teclado numérico debajo."; if (self has abierto) { print "^La tapa del baúl está abierta"; if ( (Mascara in self) || (Anguila in self) ) { print " y en su interior "; if ( (Mascara in self) && (Anguila in self) ) "están la máscara y la criatura."; else if (Mascara in self) "está la máscara."; else "está la criatura."; } else ", pero no hay nada dentro..."; } else "^El baúl está cerrado."; ], describir "El baúl está junto al camastro.", antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Pero qué lata..."; MirarDebajo, BuscarEn : <>; Teclear : if (self hasnt general){ print "No consigo llegar bien hasta el baúl como para eso.^^"; <>; } else { np = consultar_desde; switch (SiguientePalabra()) { '2048': if (self hasnt abierto) {print "Con un click el baúl se abre"; if (self hasnt visitado) { print " ... pero topa con el camastro ¡¡y se cierra de nuevo!!^^"; <>; } give self abierto; if (Mascara in Limbo) { move Mascara to self; puntuacion++; print ".^Dentro del baúl hay una máscara protectora. Avanzamos, por fin..."; } else if ( (Mascara in self) || (Anguila in self) ) { print ".^Dentro del baúl "; if ( (Mascara in self) && (Anguila in self) ) "están la máscara y la criatura."; else if (Mascara in self) "está la máscara."; else "está la criatura."; } else "no hay nada..."; } else "Nada ocurre..."; default: "Nada ocurre..."; }; } Atacar, Tocar : if (self hasnt general) <>; else "El material del baúl es áspero al tacto.^ Está sorprendentemente frío."; Empujar : if (self hasnt general){ give self general; "Al empujarlo, el baúl se hunde un poco.^ Se escucha un ruido de resortes gastados y el baúl se levanta despacio de su nicho."; } else if (self has visitado) { give self ~visitado; give self escenario; move Placa to Limbo; print "Lo empujo de a poco: es terriblemente pesado. Al empujarlo bajo el camastro, "; if (self has abierto) { give self ~abierto; print "la puerta del baúl se cierra con un click, y "; } "el baúl queda oculto."; } else if (self hasnt visitado) "Por más que lo empujo, no consigo devolverlo al nicho."; Tirar : if (self hasnt general) "Está demasiado hundido para conseguirlo. Tendré que sacarlo del nicho primero."; else if (self hasnt visitado) { give self visitado; give self ~escenario; move Placa to Celda; "Con dificultad, ya que pesa mucho, consigo arrastrarlo de debajo del camastro."; } else if (self has visitado) "Me costó demasiado moverlo hasta acá... y ya lo tengo a mano."; Coger: if (self hasnt general){ print "No consigo llegar bien hasta el baúl como para cogerlo.^^"; <>; } else { print "El baúl pesa demasiado.^^"; <>; } Abrir : if (self hasnt abierto) { if (self hasnt general) { print "No consigo llegar bien hasta el baúl como para abrirlo.^^"; <>; } else { print "Trato de levantar la tapa del baúl, pero no lo consigo.^ Se resiste, el cabrón.^^"; <>; } } else "El baúl ya está abierto... imbécil."; Cerrar : if (self has abierto) { give self ~abierto; "La tapa del baúl se cierra con un click."; } else "El baúl ya está cerrado... imbécil."; Recibir : if ( (uno == Anguila) && (Anguila hasnt general) ) { move Anguila to Celda; "¡La criatura salta del baúl hacia la Celda!"; } ], has masculino recipiente abrible ~abierto escenario ~general; Objeto_Escenario Placa "placa metálica" Limbo with nombre_f 'placa' 'grilla', nombre_m 'texto', adjetivos 'metálica' 'cifrado' 'impreso', descripcion_larga "Es una placa metálica, con un texto cifrado impreso.^ Todos los muebles con equipo importante o difícil de reponer tienen estos mecanismos... y sólo un puñado de tipos del segundo nivel conocen las claves maestras que los abren o permiten asignarles nuevas claves.^ Si supiera alguna de esas putas claves maestras, seguro que no estaría por aquí...", descripcion_corta "Es una placa metálica, con un texto cifrado impreso.", antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ No estoy de humor..."; Leer : print "Es una grilla de claves por columnas y filas:^^"; style fixed; style bold; print " A B C D E^^"; print "1 1 4 9 3 5^"; print "2 7 6 8 0 2^"; print "3 3 5 7 4 1^"; print "4 2 4 3 5 6^"; print "5 5 8 1 2 0^^"; style roman; if (Baul hasnt abierto) "Veamos: código A4, D2, B1, C2..."; else rtrue; ], has femenino legible; Object Mascara "máscara protectora" Limbo with nombre_f 'mascara' 'cubierta', nombre_m 'estanque' 'tanque', nombre_mp 'filtros', adjetivos 'protectora' 'aire', capacidad 0, describir "La máscara protectora está a mano.", descripcion [; print "Una máscara protectora, para poder respirar Afuera. Tiene un estanque con filtros de aire. El estanque está "; if (self has abierta) print "abierto"; else print "cerrado"; if (self.capacidad == 0) print " y vacío."; else { print ", lleno con la sangre de la criatura, "; if (self hasnt general) print "pero los filtros no están saturados; se los ve desinflados."; else print "con los filtros inflados y saturados de sangre."; } if (self hasnt general) "^Sin la máscara debidamente preparada, salir Afuera es suicida."; else "^La máscara ya está lista para usarla Afuera.^ Por fin..."; ], antes [; if ( (Jugador in camastro) && (self notin Jugador) ) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Ya voy..."; MirarDebajo, BuscarEn : <>; Atacar, Lanzar, Tirar: if (self.capacidad == 0) "Mejor voy con cuidado. ¿¡Si la rompo, cómo salgo después?!"; else <>; Vaciar : if (self hasnt abierta) "Mierda.^ Debo abrir el estanque de la máscara primero."; else if (self.capacidad == 1) "¿Con lo que me costó llenarla? Nones..."; else "Pero... si está vacía...^ Seré imbécil."; Agitar : if ((Anguila notin Limbo) && (Anguila hasnt general)) "No logro concentrarme...^^ ¡Maldita bestia!"; else if (self has abierta) "Si la agito con el estanque abierto, dañaré los filtros..."; else { print "Agito la máscara, "; if (self.capacidad == 1) { if (self hasnt general) puntuacion++; give self general; "saturando así los filtros con la sangre de la criatura."; } else "haciendo resonar los filtros en el estanque vacío."; } Vestir : if ((Anguila notin Limbo) && (Anguila hasnt general)) "No logro concentrarme...^^ ¡Maldita bestia!"; else if (self.capacidad == 0) { if (self hasnt visitado) { give self visitado; AvisoMascara.proyeccion(); if (Anguila notin Limbo) AvisoMascaraConAnguila.proyeccion(); else AvisoMascaraSinAnguila.proyeccion(); "^Me saco la máscara. Así no me sirve..."; } else "Esto no va a funcionar... necesito cargar el estanque primero..."; } else if (self hasnt general) { SalirAfuera.proyeccion(); AfueraMuerte.proyeccion(); banderafin = 1; rtrue; } else { print SalirAfuera.proyeccion(); AfueraSalida.proyeccion(); AfueraPaisaje.proyeccion(); AfueraFin.proyeccion(); banderafin = 2; rtrue; } PonerSobre, Recibir : if (self hasnt abierta) "Mierda.^ Debo abrir el estanque de la máscara primero."; else if (self.capacidad == 1) "El estanque ya está lleno. Mejor lo dejo en paz..."; else if (uno==Anguila) "Esto no va bien. Dañaría los filtros, así..."; Llenar : if ((Anguila notin Limbo) && (Anguila hasnt general)) "No logro concentrarme...^^ ¡Maldita bestia!"; else if (self hasnt abierta) "Mierda.^ Debo abrir el estanque de la máscara primero."; else if (self.capacidad == 0) { if ((otro == 0) && (Anguila in Jugador)) <>; else if ((otro == Anguila) && (Anguila in Jugador)) <>; else if (otro == Grifo) { print "El lavabo es muy estrecho y no logro acercar la máscara al grifo.^^"; <>; } else "¿Con qué?..."; } else "El estanque ya está lleno."; Orinar : if ((Anguila notin Limbo) && (Anguila hasnt general)) "No logro concentrarme...^^ ¡Maldita bestia!"; else if (Grifo.capacidad < 4) "No tengo ganas en este momento."; else if (Anguila in Jugador) { print "Voy a necesitar mis dos manos para esto, así que dejo la cosa en el suelo...^"; <>; } else if (self hasnt abierta) "Mierda.^ Debo abrir el estanque de la máscara primero."; else if (self.capacidad == 0) { if (self hasnt visitado) { give self visitado; AvisoOrina.proyeccion(); if (Anguila notin Limbo) AvisoMascaraConAnguila.proyeccion(); else AvisoMascaraSinAnguila.proyeccion(); rtrue; } else "Esto no va a funcionar... necesito algo menos tóxico, je..."; } else "El estanque ya está lleno."; ], despues [; Abrir : "Levantando la cubierta, abro con cuidado del estanque de la máscara."; Cerrar: "Bajando la cubierta, cierro cuidadosamente el estanque de la máscara.^ Ya está..."; Coger : if ( (Anguila in Jugador) && (Anguila hasnt general) ) { move Anguila to Celda; "¡Al coger la máscara, la criatura se me escapa de las manos!"; } ] has femenino prenda abrible; ! PARED OESTE Objeto_Escenario_Pared ParedOeste "pared oeste" Celda with adjetivos 'oeste', descripcion "El muro oeste de la celda está cubierto de algas.^ Hay un lavabo y un agujero cerca, en el suelo."; Objeto_Escenario Algas "algas" Celda with nombre_fp 'algas', nombre_f 'alga' 'alfombra', adjetivos 'experimentales' 'parda' 'pardas' 'fragantes', cantidad 0, capacidad 0, descripcion_larga "Las algas cubren toda el muro, como una alfombra, salvo alrededor del lavabo. Son de color pardo y de una altura regular.^ Supuestamente, son resultados de desarrollos experimentales en bioingeniería, y se usarán para mejorar el nivel de oxigenación de la Pirámide... y si funcionan, eventualmente se usarán Afuera.^ Esta celda es uno de los laboratorios de pruebas... y soy una de esas putas cobayas...", descripcion_corta "Supuestamente, son experimentales y se usarán para mejorar el nivel de oxigenación de la Pirámide.^ Esta celda es uno de los laboratorios de pruebas... y soy una de esas putas cobayas...", antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Mi espiritu científico no está a la altura, en este momento..."; Tocar : "Son tersas y están muy frescas. Casi heladas...^ Vaya."; Oler : if (self hasnt general) { give self general; puntuacion++; } "Considerando el olor de la celda, no tienen mal olor. De hecho, creo que es lo mejor que he olido en mucho tiempo...^^ Mierda.^^ Venir a encontrar algo así, justamente ahora, que tengo que Salir..."; Coger, BuscarEn, MirarDebajo : if (self.capacidad == 0){ self.capacidad++; print "Mejor voy con cuidado. "; give self visitado; <>; } else if (self.cantidad == 1) "Mejor dejo esta cosa en paz... vaya uno a saber qué pasa si le hago daño..."; else { PrintAutoPausa("Cojo una pizca de las algas con la mano... "); PrintAutoPausa("y se deshace en nada en mis dedos."); PararDaemon(Anguila); MuerteAlgas.proyeccion(); banderafin = 1; rtrue; } Atacar : if (self.capacidad == 0){ self.capacidad++; print "Mejor voy con cuidado. "; give self visitado; <>; } else if (self.cantidad == 1) "Mejor dejo esta cosa en paz... vaya uno a saber qué pasa si le hago daño..."; else { PrintAutoPausa("Violentamente arranco un enorme trozo de algas... "); PrintAutoPausa("y se deshace en nada, dejando un gran trozo de pared desnuda."); PararDaemon(Anguila); MuerteAlgas.proyeccion(); banderafin = 1; rtrue; } Orinar : if (Grifo.capacidad < 4) "No tengo ganas en este momento."; else { if (self.cantidad == 0) { Grifo.capacidad = 0; self.cantidad = 1; puntuacion++; OrinarAlgas.proyeccion(); rtrue; } else { Grifo.capacidad = 0; "Apunto a la pared y riego la alfombra generosamente.^^ Por un breve momento, el aire se torna fresco... casi fragante.^^ Ya pasa, pero resultó refrescante..."; } } ], has femenino nombreplural; Object Grifo "lavabo" Celda with nombre_m 'lavabo' 'lavatorio' 'grifo' 'monomando' 'desague', nombre_f 'llave', adjetivos 'loza' 'gastado' 'rayado' 'agrietado' 'pequeño' 'agua', capacidad 4, descripcion "Un pequeño lavatorio de loza, rayado por el uso. Está tan agrietado que ya no puede saberse de qué color fue originalmente. Es lo más parecido a instalaciones sanitarias de esta pocilga, incluyendo al agujero en el suelo aquí al lado.^ Tiene un grifo de agua, con una llave monomando.", antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Voy a juntar las ganas para hacerlo..."; MirarDebajo, BuscarEn : <>; Escupe : "Apunto con cuidado y escupo con furia.^ Le doy justo en el medio y mi escupo desaparece casi en seguida..."; Vomitar, Cagar : "No está impecable, pero ensuciarlo así... soy un cerdo, es verdad, pero no tanto."; Recibir : if (uno == Anguila) { if (Anguila hasnt general) { move Anguila to Celda; "¡La criatura salta del lavabo hacia la Celda!"; } else "¿Y si se va por el drenaje, con lo que me costó ablandarla?... Ni mamado."; } else "No creo que pueda: es muy pequeño."; Atacar, Tocar : "Vaya.^ Es muy duro... y está caliente al tacto..."; Tirar, Coger : "Tiro con todas mis fuerzas, pero el cabrón está fijo en su sitio."; Cerrar: "La llave monomando ya está cerrada."; Abrir, Girar, Empujar : "Sale un mísero chorrito de agua, que se evapora al tocar la loza.^ Apenas unas gotas llegan al desagüe.^ La llave monomando vuelve a cerrarse sola. Vaya."; Beber : if (self hasnt visitado) { give self visitado; self.capacidad = self.capacidad + 1; "Giro la llave y me acerco con cuidado, para no quemarme con la loza.^ El chorrito es miserable y está tibio, pero es mejor que nada."; } else if (self.capacidad < 4) { print "Bebo un poco más.^"; self.capacidad = self.capacidad + 1; if (self.capacidad == 4) "Vaya... me han entrado ganas de orinar."; else rtrue; } else "Ya no tengo sed..."; ], has escenario masculino comestible; Object Agujero "agujero" Celda with nombre 'agujero' 'hoyo' 'hueco' 'drenaje' 'fondo', nombre_mp 'ruidos' 'chapoteos', adjetivos 'diminuto' 'sucio' 'oscuro', descripcion [; print "Es un hoyo diminuto en el suelo, un hueco sucio y más maloliente que el resto de la Celda - que no es poco.^ Todo el suelo de la celda tiene una ligera inclinación hacia acá. El agujero es poco profundo, y está completamente oscuro"; if (Anguila in self) ", aunque se ve un movimiento frenético al fondo."; else "."; ], antes [; if (Jugador in camastro) "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Mierda, que me canso..."; Atacar, Tocar : "No... qué asco..."; Recibir : if (uno == Anguila){ if (Anguila hasnt general) "Lo intento ¡pero la muy perra se resiste!"; else "¿Con lo que me costó ablandarla?... Ni mamado."; } else "No creo que pueda: es muy pequeño y, además, apesta."; Oler : print "Huele a orines.... más fuerte que en el resto de la celda."; if (Anguila in self) "...y algo más. Un olor metálico."; else rtrue; Escuchar : if (Anguila in self) { "Son ruidos de fuertes chapoteos, y vienen del fondo del agujero.^ ¡Hay algo ahí dentro!"; } else "Nada. No se oye nada..."; MirarDebajo, BuscarEn : if (Anguila in self) { "Meto la mano dentro, con cuidado...^^ ¡Y algo viscoso me roza!"; } else "Nada. Qué asquerosa y estúpida pérdida de tiempo..."; Coger : "No voy a empezar a destrozarlo todo porque sí."; Cagar : if (Anguila in self) "Hasta que no sepa qué está pasando aquí, no me voy a arriesgar."; else "No estoy particularmente necesitado... ni tan desesperado, la verdad."; Vomitar : if (Anguila in self) "Hasta que no sepa qué está pasando aquí, no me voy a arriesgar."; else "No tengo estómago para eso, je..."; Escupe : if (Anguila in self) "Hasta que no sepa qué está pasando aquí, no me voy a arriesgar."; else "Apunto con cuidado y escupo con furia.^ Le doy justo en el medio y mi escupo desaparece casi en seguida..."; Orinar : if (Grifo.capacidad < 4) "No tengo ganas en este momento."; else if (Grifo.capacidad == 4) { if (Anguila in self) "Hasta que no sepa qué está pasando aquí, no me voy a arriesgar."; else { Grifo.capacidad = 0; printAutoPausa("Con una puntería que me ha hecho famoso, "); printAutoPausa("le apunto al medio "); printAutoPausa("y vacío mi depósito con gusto. "); printAutoPausa("No es mucho, "); printAutoPausa("pero el drenaje es malo, "); printAutoPausa("y el nivel llega arriba...^^"); printAutoPausa("...para después comenzar a bajar...^^"); printAutoPausa(". . . "); printAutoPausa("l e n "); printAutoPausa("t a "); printAutoPausa("m e n "); printAutoPausa("t e "); printAutoPausa(". . .^"); if (Anguila in Limbo){ puntuacion++; move Anguila to self; } <>; } } ], ! despues [; ! default : ! if ( (Anguila in Jugador) && (Anguila hasnt general) ) { ! move Anguila to Celda; ! "¡Al distraerme con el agujero, la criatura se me escapa de las manos!"; ! } ! ] has escenario masculino recipiente abierto transparente; Object Anguila "criatura" Limbo with describir [; if (self has general) "La criatura yace en el suelo, quieta."; else ""; ], nombre_f 'criatura' 'piel' 'cosa' 'perra' 'pua' 'humedad', nombre_fp 'puas', nombre_m 'algo' 'tubo' 'musculo' 'bicho' 'ser' 'animal', nombre_mp 'musculos', adjetivos 'negra' 'resbalosa' 'brillante' 'viscosa' 'viscoso', capacidad 1, cantidad 4, descripcion [; if (self in Agujero) "Es una criatura negra y alargada, con púas y una piel lisa, negra y brillante.^ Se mueve constantemente, chapoteando ahí abajo."; else { print "Es algo así como un tubo negro, con púas a los costados. Tiene una piel lisa, negra y brillante."; if (self hasnt general) { print ".. y una boca que se abre y cierra, con miles de dientes como agujas.^"; if (self in Jugador) "No para de moverse, y es muy resbalosa ¡Se me escapará pronto si no hago algo!"; else "¡Se mueve de un lado a otro sin parar!"; } if (self has abierta) { print "^Abierta de canal, pueden verse sus músculos, "; if (self.capacidad == 1) print "hinchados y húmedos."; else print "desinflados y secos."; } if (self in Jugador) " ^Cuelga de mi mano, flácida e inerte."; else " ^Está quieta... y muerta."; } ], cada_turno [; if ( ((self in Jugador) || (self in Celda)) && (self hasnt general) ) { ArrancarDaemon(self); PararDaemon(ambientador_universal); } ], daemon [; if (self.cantidad > 0) self.cantidad--; if (self in Jugador) { switch(self.cantidad) { 3: "La criatura se me comienza a soltar de las manos..."; 2: "Aprieto la presa, pero la criatura no deja de retorcerse..."; 1: "Apenas puedo sostener la criatura en mis manos..."; 0: PrintAutoPausa("La criatura se me escapa de las manos..."); PararDaemon(self); MuerteAnguila.proyeccion(); banderafin = 1; rtrue; }; } else switch(self.cantidad) { 3: "La criatura comienza a trazar círculos en torno mío..."; 2: "La criatura está cada vez más cerca..."; 1: "La criatura se dispone a saltar..."; 0: PrintAutoPausa("La criatura da un enorme salto desde el suelo..."); PararDaemon(self); MuerteAnguila.proyeccion(); banderafin = 1; rtrue; }; ], antes [; if ( (Jugador in camastro) && (self notin Jugador) ) { if (self hasnt general) "Desde aquí no alcanzo.^ Además, esa bestia se ve peligrosa.^^ Decisiones, decisiones..."; else "Desde aquí no alcanzo.^ Tendría que bajarme del camastro.^^ Con lo bien que estaba..."; } MirarDebajo, BuscarEn : <>; Escuchar : if (self in Agujero) "Mete un ruido de los mil demonios... como si estuviera sorbiendo la orina."; else if (self hasnt general) "Sisea, furiosa."; else "Ni un sonido."; Oler : if (self notin Jugador) "A ver si primero la agarro..."; else if (self hasnt general) "¡No tengo tiempo para eso ahora!"; else if (self hasnt abierto) "Tiene un olor metálico e intenso."; else if (self.capacidad == 1) "Tiene un olor metálico, intensísimo, que casi opaca los olores a orines de la celda."; else "Tiene un olor metálico, más débil ahora que está desangrada."; Tocar : if (self notin Jugador) "A ver si primero la agarro..."; else if (self hasnt general) "¡No tengo tiempo para eso ahora!"; else if (self hasnt abierto) "Su piel es áspera y fría al tacto... y bastante viscosa..."; else if (self.capacidad == 1) "Su piel es áspera y fría al tacto... y bastante viscosa...^ Los músculos son rugosos y muy húmedos, casi jugosos."; else "Su piel es áspera y fría al tacto... y bastante viscosa...^ Los músculos son rugosos y están casi totalmente secos."; Probar, Comer : if (self hasnt general) "Lo intento ¡pero la muy perra se resiste!"; else "Mejor la dejo para después... por lo que sé, Afuera no hay demasiado qué comer.^^ Es más bien al reves la cosa, Afuera..."; Cortar : <>; Abrir : if (self hasnt general) "Lo intento ¡pero la muy perra se resiste!"; else if (self has abierta) "Ya la rajé de pies a cabeza. No da para más..."; Vaciar : if (self hasnt general) "Lo intento ¡pero la muy perra se resiste!"; else if (self hasnt abierta) "La piel está húmeda, pero no hay demasiado líquido que vaciar. Esta cosa debe guardar sus fluidos por dentro..."; else if (Mascara notin Jugador) "¿¡Y desperdiciar este jugo, con lo que me costó conseguirlo?!"; else if (self.capacidad == 1) { if (Mascara has abierta) { self.capacidad = 0; puntuacion++; Mascara.capacidad = 1; "Pongo la criatura sobre el estanque de la máscara y la retuerzo lentamente, vaciando toda su sangre, hasta llenar el estanque... y dejo a esta perra más seca que la pared."; } else "Mierda.^ Debo abrir el estanque de la máscara primero."; } else "Ya no le queda una gota: exprimí a la perra."; Atacar : if (self hasnt general) { if ( (otro == 0) || (otro == Jugador) || (otro == Uniforme) ){ PrintAutoPausa("Golpeo a la criatura y trato de estrangularla... "); PrintAutoPausa("pero se me escapa de las manos..."); PararDaemon(self); MuerteAnguila.proyeccion(); banderafin = 1; rtrue; } else if ( (Jugador in Camastro) && (otro ~= Camastro) && (otro ~= ParedEste) && (otro ~= Rayados) ) "¡¡Desde aquí no alcanzo!!^"; else if (otro == Mascara) <>; else if ((otro == obj_arriba) || (otro == Lente)) "¡Está demasiado alto!"; else{ print "Golpeo la criatura contra "; if (otro == obj_abajo) print "el suelo"; else print (el) otro; printAutoPausa(" una y otra vez.^^"); printAutoPausa("Me desquito con ella de todos los años de encierro,^"); printAutoPausa("estrechez,^"); printAutoPausa("escasez,^"); printAutoPausa("insatisfacción,^"); printAutoPausa("¡y hastío!^^"); printAutoPausa("...hasta que ya deja de resistirse "); printAutoPausa("y la siento floja en mis manos.^^"); printAutoPausa("Muerta... "); printAutoPausa("al fin."); ArrancarDaemon(ambientador_universal); PararDaemon(self); give self general; if ((otro==ParedOeste) || (otro==Algas)){ PrintAutoPausa("^^Durante la lucha, arranqué un enorme trozo de algas... "); PrintAutoPausa("que se deshizo en nada, dejando un gran trozo de pared desnuda."); PararDaemon(Anguila); MuerteAlgas.proyeccion(); banderafin = 1; rtrue; } puntuacion++; rtrue; } } else if (self hasnt abierta) <>; else "¿Para qué? Ya no puede estar más dañada..."; Coger : if (self in Jugador) "¡Ya la tengo, joder!"; else { move Anguila to Jugador; self.cantidad = 4; if (self in Agujero) { print "Meto la mano por el agujero lo más rápido que puedo y cojo esa cosa de un sólo agarrón.^"; } if (self hasnt general) { print "La criatura se retuerce como posesa, pero logro tomarla ¡Tengo que "; if (Mascara in Jugador) { move Mascara to Celda; print "soltar la máscara y "; } "aferrarla con las dos manos!"; } else "La tomo con cuidado. Es fría al tacto..."; } ], despues [; Abrir : "Con cuidado, la abro partiendo desde la boca (¡que horror de dientes!) hasta la cola, exponiendo unos músculos hinchados y húmedos."; Dejar : self.cantidad = 4; if (self hasnt general) { move Anguila to Celda; "¡Al soltarla, la criatura salta al suelo de la celda!"; } ], has femenino comestible abrible; !------------------------------------------------------------------- ! Punto de Inicio !------------------------------------------------------------------- ! Aquí empieza el juego. Este es el punto para imprimir el mensaje ! inicial de bienvenida y puesta en situación [Inicializar tecla; ! Inicializar y vestir al jugador cambiarJugador(miJugador); move Uniforme to jugador; give Uniforme puesto; localizacion=Celda; ! Habitación de partida modomirar=2; ! Modo "verbose", descripciones siempre largas Grifo.capacidad = 0; ! Inicializar agua bebida Rayados.capacidad = 0; ! Inicializar rayados Olor.capacidad = 0; ! Iinicializar olores box "~Afuera~" "Un Relato Corto" "Realizado por: Sebastián Armas (Incanus)" "(C) Año 2007 " "Release 01.01.01" "I para Intro" "R para Recuperar una Partida" "Otra para Empezar"; @read_char 1 -> tecla; switch(tecla){ 'i' : Introduccion1.proyeccion(); Introduccion2.proyeccion(); Introduccion3.proyeccion(); 'r' : <>; } ]; ! Objeto Ambientador ! Genera texto aleatorio según clase de localidad Objeto_Escenario ambientador_universal "FX" Limbo with daemon [n; !para dispersar un poco la sucesión de eventos if (random(10)>4) rtrue; switch (random(3)) { ! El Parlante 1: n=random(10)-1; !para asegurar que salga entre 0 y 9 if (matriz_par->n==1) rtrue; matriz_par->n=1; print "^El parlante da un chirrido y se escucha "; if ((n==3) || (n==5) || (n==9)) print "un ruido de interferencia fuerte... y luego una voz... rasposa:^~"; else if (n==6) print "una voz aterrorizada y frenética:^~"; else print "una voz aburrida:^~"; switch (n){ 0: "Se inicia turno de trabajo. Prisioneros asignados, listos para salir.~"; 1: "Accidente en Pasillo A6. 3 Muertos. Grupo de Recuperación de Organos, presentarse de inmediato.~"; 2: "Voluntarios a programa de vacunación, presentarse a Enfermería.~"; 3: "Hoy vamos a variar el menú. Hoy, voy a comer carne.~"; 4: "Accidente en Pasarela C9. 5 Muertos y 6 heridos. Grupo de Recuperación de Organos y Escuadrón de Paramédicos, presentarse de inmediato.~"; 5: "No hay nada mejor que una carne bien jugosa...~"; 6: "¡Estuve en producción de alimentos! ¡Están usando como comida a los~^ Se escucha un ruido de forcejeo breve y un grito ahogado."; 7: "Aumento de temperatura en el Area 2. Verificar termostatos.~"; 8: "Desalojar Pasillo B5. Prisioneros en tránsito.~"; 9: "Voy a pasearme cerca de la Pasarela C9. Yum...~"; } ! La Camara 2: switch (random(5)){ 1: "^La cámara gira a la derecha y el lente se ajusta."; 2: "^La cámara gira a la izquierda y el lente se ajusta."; 3: "^El lente de la cámara se ajusta dos veces."; 4: PrintAutoPausa("^La cámara se mueve hasta apuntarme.^^"); PrintAutoPausa("Me muevo.^"); PrintAutoPausa("Me sigue.^"); PrintAutoPausa("Me muevo.^"); PrintAutoPausa("Me sigue.^^"); <>; 5: "^Le hago un gesto obsceno a la cámara. Me ignora."; } ! La Ventana 3: n=random(10)-1; !para asegurar que salga entre 0 y 9 if (matriz_ven->n==1) rtrue; matriz_ven->n=1; switch (n){ 0: "^Algo pasa frente a la ventana, Afuera.^ Su sombra oscurece la celda por completo por varios segundos."; 1: "^TIC^^ ¡Algo golpea el vidrio, Afuera!^^ TIC-TIC^ TIC^^ Me asomo a mirar, pero ya no se oye ni ve nada."; 2: "^¡Un golpe estremece el vidrio!^^ Se escuchan ruidos de lucha, apagados por el vidrio... pero algo golpea el vidrio repetidas veces.^^ De pronto, la luz proveniente del vidrio toma un color rojizo... y una mancha viscosa se escurre por el vidrio hasta desaparecer."; 3: "^Algo pequeño se ha posado en la ventana, Afuera.^ No logro ver qué es, pero se mueve nerviosamente sobre el vidrio... y se va."; 4: "^De pronto, la luz se vuelve intensísima... y vuelve a bajar.^ ¿Qué diablos?..."; 5: "^¡Una sombra larga y estrecha se proyecta sobre la puerta!^ ¡Tiene brazos y manos!^ ¡Parece...!^^ Joder, que es mi sombra..."; 6: "^Una sombra ovalada se proyecta en la puerta.^ Me acerco al vidrio.^ Algo está frente a la ventana. Luego le acompañan dos formas semejantes... y se quedan ahí.^ Se retiran juntas."; 7: "^El vidrio de Afuera es golpeado por una miríada de piedritas, y la luz de la celda se vuelve más tenue por algunos momentos."; 8: "^Aburrido, hago sombras en la puerta, usando la luz de la puta ventana.^^ Un perro. Creo que todavía quedan algunos de estos hijos de perra (je) para lazarillos en la Pirámide: papá usa uno gracias a mí. Lo que se puede hacer con un lápiz...^ Un pájaro. Sólo he visto dibujos, no se cómo eran. ¿¡Qué mierda importa, ahora?!...^ Un conejo. Estos mamones son muy buenos, crudos o cocidos, y se reproducen como... je... la verdad es que es de los pocos ~bocados de lujo~ que van quedando en la Pirámide...^ Un ratón. Son una puta plaga... por suerte: también son muy buenos asados y son más fáciles de conseguir que un jodido conejo...^^ Me está dando hambre. Mejor lo dejo."; 9: "^Una oleada de calor surge del vidrio.^ Joder, esto es un verdadero horno."; } } ]; ! Cortos ! Intro cortometraje Introduccion1 with descripcion "Hoy volví a pegarle a otro prisionero.^^" "La verdad, el tipo me estaba mirando raro mientras comía... " "y comer es de la pocas cosas que todavía puedo disfrutar desde que me enviaron acá arriba.^^" "El resto del tiempo, " "nos la pasamos trabajando como gusanos: " "mantenimiento, " "reparaciones menores, " "limpiar y recolectar desechos... " "todo la mierda " "que los de abajo no quieren " "o no pueden hacer, " "tenemos que hacerlo nosotros, " "los desadaptados, " "los criminales, " "la escoria...^^" "Los condenados " "del último nivel de la Pirámide.^^" "Somos mano de obra disponible y, " "aparte de comida y algunos harapos, " "a cambio del trabajo sólo recibimos más trabajo... " "y desprecio.^^^" "Por eso disfruto mi comida: " "no porque me guste esta bazofia semilíquida, " "sino porque no tengo a nadie encima mío " "mientras la estoy tragando...^^" "¡Y tenía que venir este mamón " "a darme la lata!" ; cortometraje Introduccion2 with descripcion "Así que lo ataqué: " "le rompí la nariz de una patada " "y luego le abrí la cabeza con la bandeja plástica.^^" "Y eso que me contuve, je.^^" "Los guardias vinieron por mí enseguida " "y los esperé a pie firme, " "pero cuatro contra uno no fue justo para los hijos de puta... " "así que un quinto me atacó por la espalda, " "para equilibrar.^^" "Le arreglé la cara contra el mesón, " "y fue entonces que los demás cayeron sobre mí...^^^" "Y todo se volvió negro." ; cortometraje Introduccion3 with descripcion "Ahora desperté aquí... y no reconozco el lugar.^^" "Para empezar, " "estoy solo, " "y nunca he estado sólo en la Pirámide.^^" "Jamás.^^" "En todo caso, " "no creo que me hayan enviado aquí de premio: " "el lugar huele muy mal " "y hay demasiada luz...^^" "Una luz brillante, " "intensa, " "cálida, " "luz como no la he visto jamás.^^^" "Luz de Afuera.^^^" "Mala señal.^^^" ; ! Aviso Inicial del Parlante cortometraje AvisoInicialParlante with descripcion "En medio del silencio, el parlante chirria y se escucha una voz cansada.^" "~¡Atención, prisionero! Ha sido seleccionado para salir Afuera en expedición de forrajeo.~^^" "Lo interrumpo. " "~¿Y si me niego, imbécil?~^^" "Me ignora y prosigue. " "~Encuentre el baúl de equipamiento y prepárese para salir. " "Código A4, D2, B1, C2. " "Apúrese, prisionero: no tiene todo el día.~^^" "Con un chirrido, " "el parlante queda en silencio... " "y a mí se me va el ánimo al sucio suelo de la celda.^^" "~Salir Afuera~^^^" "Creo que prefiero la celda..." ; ! Cortos de la Mascara Protectora cortometraje AvisoMascara with descripcion "Me acomodo la máscara con cuidado" "." "." ".^^" "En eso, escucho el ruido que hace la cámara al moverse; " "la miro y, ¡claro!, me está enfocando en este preciso instante.^^" "Malditos hijos de perra...^^" "~¡¿Qué mierda quieren?!~, " "grito furioso.^^" "En eso, el parlante chirria y se escucha una voz cansada.^" "~El estanque de la máscara está vacío, prisionero, lo que...~^^" "Lo interrumpo. " "~¡¡Tengo un nombre!!~^^" "La voz no titubea. " "~Ya no, prisionero: lo perdió, " "junto con su libertad y dignidad, " "el día que llegó a este nivel de la Pirámide.~^^" "Mierda. " "No pierden ocasión de restregártelo en la cara, " "los muy hijos de puta." ; cortometraje AvisoOrina with descripcion "Saco mi ~equipo~ y, " "sosteniendo con la otra mano la máscara, " "apunto con cuidado al estanque" "." "." ".^^" "En eso, escucho el ruido que hace la cámara al moverse; " "la miro y, ¡claro!, me está enfocando en este preciso instante.^^" "Malditos hijos de perra...^^" "~¡¿Qué mierda quieren?!~, grito furioso, " "~¡¡Estoy ocupado en algo delicado!! ¡¿Saben?!~^^" "En eso, el parlante chirria y se escucha una voz cansada.^" "~La orina no sirve para eso, prisionero, lo que...~^^" "Lo interrumpo. " "~¡¡Tengo un nombre!!~^^" "La voz no titubea. " "~Ya no, prisionero: lo perdió, " "junto con su libertad y dignidad, " "el día que llegó a este nivel de la Pirámide.~^^" "Mierda. " "No pierden ocasión de restregártelo en la cara, " "los muy hijos de puta." ; cortometraje AvisoMascaraSinAnguila with descripcion "~Bueno ~, " "les digo, " "~¿con qué mierda lleno el estanque de la máscara?~^^" "La voz suena cansada. " "~La orina no sirve: demasiadas toxinas. " "El agua tampoco: muy poco oxígeno. " "Se necesita otro fluido, más oxigenado...~^^" "Joder. " "Sabía que eran duros aquí arriba, " "pero no pensé que llegaran a tanto.^^" "~¿Tengo que usar mi propia sangre?~^^" "Una risa seca. " "~Su sangre no sirve, prisionero: demasiadas toxinas.~^^" "Diablos. " "~Debe ser por la maravillosa vida que llevamos todos en la Pirámide~, " "le retruco, sarcástico.^^" "La voz prosigue. " "~Necesita sangre de algún animal con sangre más oxigenada... " "Y menos contaminada. " "En el drenaje de estas celdas hemos permitido el desarrollo de una colonia de criaturas de Afuera. " "Capture una y llene el tanque con su sangre... " " y apúrese. Debe salir con luz de día... " "si quiere volver vivo, claro.~^^" "Con un chirrido, " "el parlante queda en silencio... " " y yo, en una posición un tanto ridícula." ; cortometraje AvisoMascaraConAnguila with descripcion "~Bueno ~, " "les digo, " "~¿con qué mierda lleno el estanque de la máscara?~^^" "La voz suena cansada. " "~La orina no sirve: demasiadas toxinas. " "El agua tampoco: muy poco oxígeno. " "Se necesita otro fluido, más oxigenado...~^^" "Joder. " "Sabía que eran duros aquí arriba, " "pero no pensé que llegaran a tanto.^^" "~¿Tengo que usar mi propia sangre?~^^" "Una risa seca. " "~Su sangre no sirve, prisionero: demasiadas toxinas.~^^" "Diablos. " "~Debe ser por la maravillosa vida que llevamos todos en la Pirámide~, " "le retruco, sarcástico.^^" "La voz prosigue. " "~Necesita sangre de algún animal con sangre más oxigenada... " "Y menos contaminada. " "Use la criatura que capturó y llene el tanque con su sangre... " " y apúrese. Debe salir con luz de día... " "si quiere volver vivo, claro.~^^" "Con un chirrido, " "el parlante queda en silencio... " " y yo, en una posición un tanto ridícula." ; ! Escenario cortometraje LenteSeguridad with descripcion "Es una lente de seguridad, parte del sistema de vigilancia de la Pirámide. " "Está ubicada en una esquina de la pared, " "a una altura a la que no lograría llegar ni aunque tratara. " "Estas cámaras están por todos lados y siempre están encendidas.^^" "Siempre.^^" "Y eso es algo que me jode bastante, la verdad.^^" "Porque vieron todo lo que hice... " "y pudieron haberme detenido mucho antes de lo que finalmente lo hicieron. " "Les dije que eso los hacía, hasta cierto punto, cómplices... " "pero parece que es parte de lo que ~nadie te cuenta, pero todos lo entienden~ " "y toda esa basura.^^" "Me dieron a entender que, " "para el bien de la Pirámide, " "se le permiten algunas equivocaciones a la gente, " "mientras no sean reiteradas y cada vez más graves... " "como en mi caso.^^" "Como muchas cosas por aquí, apesta." ; cortometraje LaPiramide with descripcion "Es el dibujo de una pequeña pirámide. " "Cómo la odio.^^" "Los diseñadores originales organizaron todo esto así:^^" "En el nivel más bajo vive la gran mayoría: " "los trabajadores, " "las familias... " "la gente común. " "Un enorme rebaño de estúpidas ovejas.^^" "En el siguiente nivel superior están los líderes, " "los técnicos especializados " "y todos los que organizan el resto de la Pirámide. " "Los perros que pastorean a los demás imbéciles.^^" "En el último nivel, " "el más cercano a la superficie, " "están todos los que, " "como yo, " "no quieren adaptarse " "a las absurdas obligaciones " "e inútiles restricciones " "de la vida en los niveles inferiores.^^" "De este nivel, sólo hay dos salidas: " "abajo, si se finge una conducta adecuada, " "y ~trabajas~ como guardia un tiempo... " "o Afuera, si deciden que eres un caso irrecuperable... y prescindible.^^" "Una pirámide, en efecto. " "Cómo la odio..." ; cortometraje OrinarAlgas with descripcion "Saco mis ~implementos~ " "y apunto en dirección de las algas.^" "Mientras me voy aliviando, " "noto algo extraño: " "el olor a orina...^^" "¡Ha desaparecido!^^" "Y el aire en la celda " "se está volviendo fresco, " "casi fragante.^^" "Incrédulo, " "inhalo con fuerza... " "y si no es por lavabo, " "del que logro aferrarme apenas, " "podría haberme ido desvanecido contra el muro.^^" "¡¡Borracho... " "con aire!!^^" "Por primera vez en mi vida, " "estoy " "genuinamente " "sorprendido." ; ! Muerte por Algas cortometraje MuerteAlgas with descripcion "De pronto, " "comienzo a notar un cambio " "en el aire de la celda.^" "No es el olor.^^" "Es como si...^^" "Hay algo que empieza a picarme " "en la garganta, " "así que toso un poco... " "y al intentar respirar, " "noto, " "con terror, " "que me falta el aire.^^" "Intento gritar, " "pero la voz no me sale... " "y la cabeza comienza a darme vueltas.^^" "Caigo duramente al suelo... " "y lo último que veo son las algas.^^" "¡¡Las al" ; ! Muerte por Anguila cortometraje MuerteAnguila with descripcion "La criatura me muerde en el cuello, con una furia asesina... " "y la sangre comienza a salir de mi cuello, " "como un surtidor enloquecido, " "salpicándolo todo.^^" "Intento sacármela, desesperado, " "pero sólo consigo clavarme sus púas en las manos... " "y ya no puedo soltarla.^^" "Debilitado, caigo al suelo de la celda, " "mientras la criatura comienza a masticar mi carne.^^" "Desde el suelo, " "veo otras criaturas surgir del agujero, " "y se arrastran sin prisa hacia mi.^^" "Y pronto siento más mordidas, " "en todas partes. " "Un par se acercan a mi cara...^^" "Ya " "están " "lleg" ; ! Final ! Salida cortometraje SalirAfuera with descripcion "Me acomodo la máscara con cuidado" "." "." ". " "y cuando estoy listo, " "con un chirrido gastado " "la puerta se abre.^^" "Y salgo al pasillo.^^" "Está completamente a oscuras... salvo una luz brillante al final del pasillo.^^" "Avanzo hacia la luz... " "y por primera vez en mi vida empiezo a sentir temor.^^" "Llego a la luz... " "y no es más que una puerta transparente, " "diez veces más gruesa y rallada que la ventana de mi celda... " "y sin manillas o asas a la vista.^^" "No importa.^^" "Al acercar mi mano la puerta se abre sola..." ; ! Afuera Muerte cortometraje AfueraMuerte with descripcion "Avanzo y llego frente a una escalera vertical, " "de barrotes sucios.^^" "La puerta se cierra detrás de mí.^^" "Resignado, comienzo a subir por el tiro de la escalera, " "todo iluminado por una luz cegadora... " "pero algo no va bien.^^" "Aterrado, noto que me falta el aire. " "Palpo la máscara, pero, " "aferrado como estoy a la escalera, " "no logro ver cuál el problema.^^" "Trato de bajar, pero me fallan las fuerzas... " "y mis manos se sueltan de los barrotes " "un " "dedo " "a " "la " "vez.^^" "Y caigo.^^" "El golpe, escalera abajo, me rompe los huesos... " "y me pregunto si no habría pasado algo por alto al llenar el estanque.^^^" "¡Los filtros!^^^" "¡Tenía que" ; ! Afuera Fin cortometraje AfueraSalida with descripcion "Avanzo y llego frente a una escalera vertical, " "de barrotes sucios.^^" "La puerta se cierra detrás de mí.^^" "Resignado, comienzo a subir por el tiro de la escalera, " "todo iluminado por una luz cegadora...^^" "Unos minutos más tarde, llego al final del tiro... " "y encima mío veo una escotilla transparente, " "semejante a la puerta allá abajo.^^" "Se abre... " "y salgo a un desierto." ; cortometraje AfueraPaisaje with descripcion "Todo al rededor mío, veo un montón de lomas y zanjas áridas, " "azotadas por un viento seco y cálido, " "todo iluminado por un sol brillante, implacable... " "y ascendente, " "creo.^^" "A lo lejos, me parece distinguir algunas estructuras borrosas. " "Camino hacia ellas.^^" "Mientras me acerco, comienzo a recordar los relatos de mi infancia, " "sobre la estupidez y negligencia de nuestros antepasados, " "de cómo descuidaron nuestra atmósfera, " "de como arruinaron la ecología del planeta " "hasta el punto en que la vida en la superficie se volvió insostenible... " "y tuvimos que construir las Pirámides... y tratar de subsistir Abajo.^^" "Supuestamente, al principio hubo intentos de deshacer los errores del pasado " "y recuperar el equilibrio perdido... " "pero, en la medida que dejaron de recibirse noticias de algunas Pirámides, los esfuerzos fueron menguando " "y, como Afuera, quedaron en nada.^^^" "Durante mi vida, jamás escuché de otra Pirámide que haya intentado comunicarse con la nuestra.^^" "No creo que seamos todos tan discretos..." ; cortometraje AfueraFin with descripcion "Finalmente, llego a la estructura.^^" "Alguna vez fue algo importante: es enorme, con paredes altas y curvas... " "pero ya no queda mucho que ver. " "El viento y el clima lo han desgastado todo y las paredes están cayéndose de a poco.^^" "Distingo una entrada oscura en un muro, no muy lejos. " "Puede que dentro encuentre algo de utilidad: algún aparato reparable, vigas de metal, libros... " "desperdicios, sin duda, pero útiles cuando estás tratando de sobrevivir.^^" "En todo caso, busco primero en el suelo y ¡vaya! estoy de suerte.^" "Cojo una barra de metal, " "gruesa " "y lo suficientemente corta como para usarla con una sola mano.^^" "Me viene bien: debo andar con cuidado... " "porque no todos los que salen Afuera han vuelto.^^^" "Me acerco a la entrada...^^^" "...y me envuelve la oscuridad." ; ! LINEAS DE GRAMATICA ! Definiciones para ayuda Verb 'ayuda' * -> ayuda * topic ->ayuda; [AyudaSub ; ZIPI_RunMenuT(ZIPI_Menu0); @erase_window $ffff; JugadorA(localizacion); ]; ! Definiciones para pistas Verb 'pistas' * -> pistas * topic ->pistas; [PistasSub ; ZIPI_RunMenuT(ZIPI_Menu2); @erase_window $ffff; JugadorA(localizacion); ]; ! Definiciones para Muebles Verb 'acuestate' 'tiendete' 'recuestate' 'tumbate' * 'en' noun -> Meterse * noun -> Meterse; ! Definiciones para lectura [ LeerSub; <>; ]; Extend 'lee' first * legible -> Leer; ! Definiciones para tecleables [TeclearSub; if ( ((uno == 0) && (Baul notin Limbo) && (Baul hasnt visitado)) || (uno ~= Baul) ) "¿Y cómo mierda voy a teclear eso?..."; else if (uno == 0) "¿Y dónde mierda voy a teclear eso?..."; !else if (uno ~= Baul) ! "¿Y cómo mierda voy a teclear en ", (el) uno,"?..."; ]; Verb 'teclea' 'ingresa' 'digita' 'selecciona' 'elige' * -> teclear !* topic -> teclear * topic 'en' noun -> teclear * topic 'sobre' noun -> teclear; ! Definiciones para Beber Extend 'bebe' * 'de' noun -> Beber; ! Definiciones para Orinar [orinarSub; if (Grifo.capacidad < 4) "No tengo ganas en este momento."; else if (uno == 0) "¿Dónde?... ya bastante mal huele todo para andar esparciendo..."; else "¿¡Ahi?!... No, qué asco..."; ]; Verb 'mea' 'micciona' 'orina' * -> orinar * 'en' noun -> orinar; ! Otras acciones metabólicas ! Definiciones para Cagar [cagarSub; if (uno == 0) "¿Dónde?... ya bastante mal huele todo para andar esparciendo..."; else "¿¡Ahi?!... No, qué asco..."; ]; Verb 'caga' 'defeca' 'descarga' * -> cagar * 'en' noun -> cagar; ! Definiciones para Vomitar [vomitarSub; if (uno == 0) "¿Dónde?... ya bastante mal huele todo para andar esparciendo..."; else "¿¡Ahi?!... No, qué asco..."; ]; Verb 'vomita' * -> vomitar * 'en' noun -> vomitar; ! Definiciones para Escupir [escupeSub; if (uno == 0) "¿Dónde?... ya bastante mal huele todo para andar esparciendo..."; else "¿¡Ahi?!... No, qué asco..."; ]; Verb 'escupe' 'escupir' * -> escupe * 'en' noun -> escupe; Verb 'insulta' 'blasfema' * -> Tacos * 'a' noun -> Tacos * noun -> Tacos; ! Definiciones para Atacar Verb 'azota' * held 'con' noun -> Atacar * held 'contra' noun -> Atacar * held 'en' noun -> Atacar; Extend 'ataca' * held 'con' noun -> Atacar * held 'contra' noun -> Atacar * held 'en' noun -> Atacar; Extend 'rompe' * held 'con' noun -> Atacar * held 'contra' noun -> Atacar * held 'en' noun -> Atacar; Extend 'aplasta' * held 'con' noun -> Atacar * held 'contra' noun -> Atacar * held 'en' noun -> Atacar; Extend 'golpea' * held 'con' noun -> Atacar * held 'contra' noun -> Atacar * held 'en' noun -> Atacar; Extend 'destruye' * held 'con' noun -> Atacar * held 'contra' noun -> Atacar * held 'en' noun -> Atacar; ! Definiciones para Vaciar Extend 'vacia' * held 'en' noun -> Vaciar; ! Definiciones para Llenar Mascara Extend 'llena' * held 'con' noun -> Llenar;