!% -~D !% -~S !% +include_path=..\lib\base,..\lib\contrib,..\games\Goteras !Poner "% -~S" (sin las ") permite compilar para generar archivo Goteras.z5 (máquina Z versión 5) !Poner "!% -~D" al principio del archivo (sin las ") permite compilar en modo Release (No Debug) ! "Goteras" ! ! REALIZADO POR: Sebastián Armas ! ! Copyright (C) 2006 ! CONSTANTES Constant Historia "~Goteras~"; Constant Titular "^Realizado por: Sebastián Armas^ (C) Año 2006^^ Ingresa AYUDA para indicaciones generales y otros comandos.^ Ingresa PISTAS para resolver problemas o salir de atascos.^^"; Serial "010102"; ! Versión 01.01.02 (Release) ! Puzzles implementados ! Decorados implementados ! Extras implementados: Ayuda, Vocabulario Básico, Pistas, Curiosidades ! (Agradecimientos, Vocabulario Adicional, Historia de El Protector) ! Bug corregidos: ! Linea EVA: En estanco, detectado por voet: dejar invocaba rutina de Linea EVA; ! aparte, ahora se puede conectar Linea EVA al Mono aunque no este puesto y se modifica el mensaje ! en caso de desconectar la línea, para el caso de tener o no puesto el Mono o el Traje EVA ! Traje EVA: arreglado el bug detectado por voet, se podía dejar el Traje EVA y ! este quedaba visible, sin ir a Limbo ! Botas y Guantes: corregido error de género para frase cuando se intenta vestir ! si no esta vestido antes el Mono ! Se modifica opciones deplegadas en menu AYUDA inicial para ioncluir agradecimientos Release 1; ! Queremos usar el comando 'Salidas' Constant ADMITIR_COMANDO_SALIDAS; ! Constant DEBUG; ! No queremos usar los comandos 'Lugares' y 'Objetos' Constant NO_LUGARES; ! No queremos usar puntuación Constant NO_PUNTUACION; ! Tenemos Curiosidades Constant HAY_CURIOSIDADES; ! Queremos que se muestren las deducciones del parser Constant IMPRIMIR_DEDUCCIONES; ! Para funcionamiento del Reloj Replace KeyboardPrimitive; ! Módulo para Menues Include "zipi.inf"; ! Menu de Ayuda, Pistas, Curiosidades y Otros ZIPI_Menu ZIPI_Menu0 with ZIPI_titulo "Menu de la Aventura", ZIPI_item ZIPI_Menu1 ZIPI_Menu7 ZIPI_Otro14 ! ZIPI_Menu8 ; ZIPI_Menu ZIPI_Menu1 with ZIPI_titulo "Ayuda de la Aventura", ZIPI_item ZIPI_Menu2 ZIPI_Menu3 ; ZIPI_Menu ZIPI_Menu2 with ZIPI_titulo "Instrucciones", ZIPI_item ZIPI_Otro0 ZIPI_Otro1 ; ZIPI_Menu ZIPI_Menu3 with ZIPI_titulo "Pistas", ZIPI_item ZIPI_Menu4 ZIPI_Menu5 ZIPI_Menu6 ; ZIPI_Menu ZIPI_Menu4 with ZIPI_titulo "Compuertas en el OTV", ZIPI_item ZIPI_Pista0 ZIPI_Pista1 ZIPI_Pista2 ; ZIPI_Menu ZIPI_Menu5 with ZIPI_titulo "Actividad EVA", ZIPI_item ZIPI_Pista3 ZIPI_Pista4 ; ZIPI_Menu ZIPI_Menu6 with ZIPI_titulo "Reparaciones y Arreglos", ZIPI_item ZIPI_Pista5 ZIPI_Pista6 ZIPI_Pista7 ZIPI_Pista8 ZIPI_Pista9 ; ZIPI_Menu ZIPI_Menu7 with ZIPI_titulo "Vocabulario Técnico", ZIPI_item ZIPI_Otro2 ZIPI_Otro3 ZIPI_Otro4 ZIPI_Otro5 ZIPI_Otro6 ZIPI_Otro7 ZIPI_Otro8 ; ZIPI_Menu ZIPI_Menu8 with ZIPI_titulo "Curiosidades y Otros", ZIPI_item ZIPI_Menu9 ZIPI_Otro15 ; ZIPI_Menu ZIPI_Menu9 with ZIPI_titulo "Curiosidades", ZIPI_item ZIPI_Otro9 ZIPI_Otro10 ZIPI_Otro11 ZIPI_Otro12 ZIPI_Otro13 ; ZIPI_Pista ZIPI_Pista0 with ZIPI_titulo "¿Cómo entro al Estanco?", ZIPI_pistas "La compuerta interna del pasillo de servicio tiene un panel..." "Que puedes mirar y leer para saber más..." "Si te fijas en el botón del panel..." "Verás que dice 'PRESURIZAR'..." "...así que TOCA BOTON o PULSA BOTON y podrás luego abrir la compuerta interna." ; ZIPI_Pista ZIPI_Pista1 with ZIPI_titulo "¿Cómo abro el Estanco para salir al Espacio?", ZIPI_pistas "La compuerta externa del cuarto de estanco tiene un panel..." "Que puedes mirar y leer para saber más..." "Si te fijas en los botones del panel..." "Verás que dicen 'PRESURIZAR' y 'DESPRESURIZAR'..." "Para abrir el estanco al espacio debes despresurizarlo primero..." "Y para eso, cierra la compuerta interna..." "Ponte el traje EVA..." "...y luego TOCA BOTON DESPRESURIZAR o PULSA BOTON DESPRESURIZAR y podrás luego abrir la compuerta externa." ; ZIPI_Pista ZIPI_Pista2 with ZIPI_titulo "¿Cómo abro el Estanco para salir al Pasillo?", ZIPI_pistas "La compuerta externa del cuarto de estanco tiene un panel..." "Que puedes mirar y leer para saber más..." "Si te fijas en los botones del panel..." "Verás que dicen 'PRESURIZAR' y 'DESPRESURIZAR'..." "Para abrir el estanco al pasillo debes presurizarlo primero..." "Y para eso, cierra la compuerta externa..." "...y luego TOCA BOTON PRESURIZAR o PULSA BOTON PRESURIZAR y podrás luego abrir la compuerta interna." ; ZIPI_Pista ZIPI_Pista3 with ZIPI_titulo "¿Cómo me pongo un traje EVA?", ZIPI_pistas "Coge primero las partes del traje..." "El casco, el mono, los guantes y las botas..." "Ponte el mono primero..." "...y luego las demás partes en el orden que quieras." ; ZIPI_Pista ZIPI_Pista4 with ZIPI_titulo "¿Cómo uso el traje EVA?", ZIPI_pistas "Una vez que tengas el traje puesto, debes asegurarlo al estanco..." "Fijae en la portilla en la pared..." "Abre la portilla..." "y usa la línea de seguridad en el traje EVA..." "Saca la línea del compartimiento..." "Y conecta la línea al traje EVA..." "...con CONECTA LINEA o CONECTA LINEA A TRAJE o CONECTA LINEA A MONO" ; ZIPI_Pista ZIPI_Pista5 with ZIPI_titulo "¿Cómo entro a la Cabina?", ZIPI_pistas "La compuerta del pasillo de servicio tiene un panel..." "Que puedes mirar y leer para saber más..." "Si te fijas en el botón del panel..." "Verás que dice 'PRESURIZAR'..." "Debes primero tapar los agujeros del casco externo..." "...para que con TOCA BOTON o PULSA BOTON puedas abrir la compuerta." ; ZIPI_Pista ZIPI_Pista6 with ZIPI_titulo "¿Cómo tapo los Agujeros?", ZIPI_pistas "Necesitas algo para sellar los agujeros..." "Así que obtén la pistola sellante en el taller. Luego, la debes llenar..." "Con algo lo suficientemente denso..." "Ve al comedor..." "Fijate en el dispensador..." "Y en sus botones..." "Con TOCA BOTON COMIDA o PULSA BOTON COMIDA..." "Obtendrás una pasta comestible..." "Para llenar la pistola..." "Con METE PASTA EN PISTOLA o LLENA PISTOLA CON PASTA..." "Después, ve a los agujeros..." "...y DISPARA PISTOLA o DISPARA PISTOLA A AGUJEROS o bien ARREGLA o REPARA o SELLA AGUJEROS CON PISTOLA" ; ZIPI_Pista ZIPI_Pista7 with ZIPI_titulo "¿Cómo vuelvo en curso al OTV?", ZIPI_pistas "Una vez que puedas entrar a la cabina, mira el panel de navegacion..." "Y lee su pantalla..." "Debes primero reparar la antena..." "E ingresar luego el código de identificación de la nave..." "Que es 'OTV-44'..." "...que ingresas con INGRESA OTV-44 o TECLEA OTV-44." ; ZIPI_Pista ZIPI_Pista8 with ZIPI_titulo "¿Cómo arreglo la Antena?", ZIPI_pistas "Necesitas algo para enderezar la antena..." "Así que consigue el alicate en el taller..." "Dentro de las gavetas de la mesa..." "Luego, ve hacia la antena..." "Y enderezala..." "...con ENDEREZA o ARREGLA o REPARA o AJUSTA (o FIJA, GIRA, TUERCE, APRIETA) ANTENA CON ALICATE." ; ZIPI_Pista ZIPI_Pista9 with ZIPI_titulo "¿Cómo me pongo a dormir?", ZIPI_pistas "Una vez que repares todos los daños..." "Entra o metete en la vaina criogénica..." "...y cierra la puerta de la vaina." ; 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"; style roman; print " : obtener esta ayuda.^"; style fixed; print "pistas"; style roman; print " : obtener pistas para resolver el juego (evite la tentación...).^"; style fixed; print "save, guardar"; style roman; print " : grabar el estado actual de la partida (recomendable...).^"; style fixed; print "load, cargar"; style roman; print " : recuperar un estado de partida ya guardado.^"; style fixed; print "quit, fin, terminar"; style roman; print " : terminar la partida en juego.^^"; style fixed; print "n, Norte"; style roman; print " : desplazarse al norte.^"; style fixed; print "s, Sur"; style roman; print " : desplazarse al sur.^"; style fixed; print "e, Este"; style roman; print " : desplazarse al este.^"; style fixed; print "o, Oeste"; style roman; print " : desplazarse al oeste.^"; style fixed; print "Arriba, Subir, a"; style roman; print " : subir.^"; style fixed; print "Abajo, Bajar, b"; style roman; print " : bajar.^^"; style fixed; print "salidas"; style roman; print " : mostrar las salidas del lugar.^"; style fixed; print "i, inventario"; style roman; print " : mostrar una lista de los objetos llevados.^"; style fixed; print "mirar"; style roman; print " : mostrar una descripción del lugar en que estás.^^"; style fixed; print "ex x, examinar x"; style roman; print " : mostrar una descripción del lugar u objeto x.^"; style fixed; print "buscar en x, mirar en x"; style roman; print " : revisar el objeto x para ver si contiene algo más...^"; style fixed; print "leer x"; style roman; print " : si x tiene texto para leer, leer el texto en x.^"; style fixed; print "coger x, dejar x"; style roman; print " : el objeto x pasa a ser o deja de ser llevado.^"; style fixed; print "meter x en y"; style roman; print " : el objeto x deja de ser llevado y queda dentro de y.^"; style fixed; print "llenar y con x"; style roman; print " : objeto x deja de ser llevado y queda dentro de y.^"; style fixed; print "sacar x de y"; style roman; print " : el objeto x sale de y y pasa a ser llevado.^"; style fixed; print "abrir x"; style roman; print " : si x es abrible, x queda abierto (contenedor, puerta).^"; style fixed; print "cerrar x"; style roman; print " : si x es cerrable, x queda cerrado (contenedor, puerta)."; ]; 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 "EVA", ZIPI_ejecutar [; print "Extra Vehicular Activity. Actividad extravehicular. Actividad realizada fuera de una estación o nave espacial, ya sea en una cápsula o plataforma de desplazamiento o bien con un simple traje."; ]; ZIPI_Otro ZIPI_Otro3 with ZIPI_titulo "g", ZIPI_ejecutar [; print "Abreviatura de gravedad. 1g es la gravedad en la superficie de la Tierra; cero g es ingravidez total."; ]; ZIPI_Otro ZIPI_Otro4 with ZIPI_titulo "LCD", ZIPI_ejecutar [; print "Liquid Cristal Display. Pantalla de Cristal Líquido."; ]; ZIPI_Otro ZIPI_Otro5 with ZIPI_titulo "MTDA", ZIPI_ejecutar [; print "Multiple Target Docking Adapter. Adaptador de acoplamiento múltiple. Se usa para anclar un vehículo espacial a otro dotado de un movimiento o trayectoria distintos."; ]; ZIPI_Otro ZIPI_Otro6 with ZIPI_titulo "OTV", ZIPI_ejecutar [; print "Orbital Transfer Vehicle. Vehículo de Transferencia Orbital. Usado para traslado de personal o material de una órbita a otra."; ]; ZIPI_Otro ZIPI_Otro7 with ZIPI_titulo "RCR", ZIPI_ejecutar [; print "Retro-Correction Rockets. Cohetes de corrección e inversión de rumbo, para variar la trayectoria del vehículo o frenar su impulso."; ]; ZIPI_Otro ZIPI_Otro8 with ZIPI_titulo "SNAFU", ZIPI_ejecutar [; print "Situation Normal, All Fucked Up. Situación Normal, Todo Jodido. Usado para señalar situaciones de caos; no pasa nada, pero todo se ha ido al diablo..."; ]; ZIPI_Otro ZIPI_Otro9 with ZIPI_titulo "Estilo y Decoración en el OTV", ZIPI_ejecutar [; print "La decoración y el estilo del interior del OTV dicen mucho de la compañía. Miralos (literalmente)."; ]; ZIPI_Otro ZIPI_Otro10 with ZIPI_titulo "Avisos en el OTV", ZIPI_ejecutar [; print "La compañía a puesto aquí y allá avisos al servicio de los usuarios del OTV. Léelos."; ]; ZIPI_Otro ZIPI_Otro11 with ZIPI_titulo "Seguridad del Trabajo en el OTV", ZIPI_ejecutar [; print "En el espacio, algunos descuidos se pagan muy caro. Arriésgate y verás..."; ]; ZIPI_Otro ZIPI_Otro12 with ZIPI_titulo "¿Cómo son los Espaciales?", ZIPI_ejecutar [; print "Tócate, Mirate, Huelete... Cortate... Gesticula... Sopla..."; ]; ZIPI_Otro ZIPI_Otro13 with ZIPI_titulo "¿Cómo $%@@64# hablan los Espaciales?", ZIPI_ejecutar [; print "En el espacio, nadie escucha tus groserías. Haz el intento..."; ]; ZIPI_Otro ZIPI_Otro14 with ZIPI_titulo "Agradecimientos", ZIPI_ejecutar [; print "A mis betatesters: planseldon y Mel Hython, con una paciencia digna de alabanza.^^"; 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 Fernandez, creadores de JIF (en español), un pedazo de herramienta para el desarrollo en InformATE!^^"; print "A Baltasarq, una vez más por Código Concedido.^"; print "A Radio Marte Libre, por Código Concedido.^"; print "A voet, por bugs detectados.^^"; print "A ~Jim de la Luna~, verdadero salvavidas paterno del Discovery Kids.^"; print "...y a Allen Steele, por su irremplazable, invaluable e involuntaria colaboración."; ]; ZIPI_Otro ZIPI_Otro15 with ZIPI_titulo "Historia de Goteras", ZIPI_ejecutar [; print "Una vez puestos a ello, al hablar de ciencia ficción (o sci-fi, pa los guiris) entramos 'en otra dimensión, en el Reino de la Mente, en el Reino de la Imaginación' (como decían en la inmortal 'Dimensión Desconocida').^"; print "Dentro del genero, hay lo que se llama Relato Futurista (Julio Verne fue un precursor)...con algunos matices, claro: Los que hayan visto '2001: Odisea del Espacio' notarán que no se parece mucho a, digamos, 'Viaje a Las Estrellas, La Nueva Generación'. A la mente más excéptica, '2001' le resulta plausible como verdadera 'ficción científica', mientras que Picard y cía...^"; print "Precisamente, es por esas diferencias que le he tomado gusto a esto que ahora se llama Ciencia Ficción 'dura' o 'hard'; o sea, el relato en que se extrapolan situaciones en que la tecnología está un poco (en términos históricos) más avanzada que la actual, pero respetando las leyes de la física (nada de sonido en el espacio... ni persecuciones de naves con maniobras tipo barón rojo) y dentro del sentido común (si vamos a explorar el espacio, será con un fin práctico o por una necesidad económica).^"; print "Cayó así en mis manos 'Orbital Decay' de Allen Steele, en su versión traducida al español como 'Decadencia Orbital' (editada por Ultramar), y me topé con algo muy parecido a 2001... pero con un giro interesante: gente común y corriente, trabajando duro para ganarse el pan, en un ambiente hostil y bastante árido.^"; print "Nada de astronautas heróicos. Nada de épicas interplanetarias... solo tipos que se levantan temprano, comen algo con desgano, se enfundan su ropa de trabajo y salen a hacer lo suyo - en un ambiente en que el golpe avisa.^"; print "Este relato interactivo es mi pequeño homenaje al género ~duro~ de la Ciencia-Ficción y (que me perdonen los puristas) a ~Jim de la Luna~, verdadero salvavidas paterno del Discovery Kids.^"; print "Santiago de Chile, 23 de Junio, 2006"; ]; ! Comentarios [curiosidades; ZIPI_RunMenuT(ZIPI_Menu8); ]; !-------------- Include -------------- Include "EParser"; Include "Acciones"; Include "Gramatica"; Include "Puertas"; ! Módulo para Puertas Include "Cortos"; ! Módulo para texto animado Include "Decorado"; ! Módulo para descripcion de decorados Attribute legible; ! Definiciones para lectura Array matriz_ext ->6; ! Definiciones para ambientador universal Array matriz_int ->6; !------------ End Include ------------ Object Limbo "El Limbo" with descripcion "¡Eh! ¿Cómo has llegado aquí? Tío, los Betatesters...", has luz; ! El jugador Object miJugador with descripcion "Soy un tipo no muy alto y más bien fornido, como la mayoría de los Espaciales (y las mujeres robustas se ven guapísimas). No tengo mucho pelo corporal (menos líos con la higiene) y no llevo tatuajes. En fin, que soy uno más del lote...", antes [; Tocar : "Tengo la piel más tersa que al inicio del viaje: algo que agradecer al criosueño." ; Oler : "La verdad, no me vendría mal un baño. Puede que me pueda costear uno al llegar a destino..."; Cortar : "No estoy de humor ni tengo mis sadoaccesorios a mano: no me dejaron subirlos al OTV."; Escuchar : "Mi corazón late, mis pulmones resuellan... ¡Soy una máquina de trabajar!"; Frotar : "Frotándome con energía, gano un poco de calor."; ] ; ! Objetos del Jugador Object Reloj "reloj digital" with nombre_m 'reloj', adjetivos 'digital', segundos 3600, descripcion [; style bold; imprime_hora(); style roman; if (jugador has general) { if (self hasnt general) { give self general; PrintPausa("",0); PrimeraLecturaPanel.proyeccion(); rtrue; } } else if (self hasnt visitado) { give self visitado; "^^Curioso...^ Está contando la hora en reversa..."; } else rtrue; ], antes [; Desvestir : if (localizacion ofclass Localidad_Exterior) "¿Y sacarme el traje primero? Nones..."; else "No puedo arriesgarme a perder la noción del tiempo..."; ], has masculino prenda puesto; Object Ropa "ropa criogenica" with nombre_f 'ropa' 'camiseta', nombre_mp 'shorts', adjetivos 'criogenica', descripcion "Son unos shorts y una camiseta para sueño criogénico. No abrigan mucho, pero, ¿qué sentido tiene, si te van a congelar?", antes [; Desvestir : if (localizacion ofclass Localidad_Exterior) "¿Y sacarme el traje primero? Nones..."; else if (TrajeEVA has puesto) "Tendría que sacarme el Traje Eva primero ¿no?"; else "¿Y andar en pelotas? Nones..."; ], has femenino prenda puesto; ! Meta clase DecoradoAmpliado Class DecoradoAmpliado class Decorado with antes [; Examinar: rfalse; Coger: "No crees que tenga mucho sentido cargar con eso..."; Empujar: "No parece que se pueda empujar..."; Oler: if (TrajeEVA has puesto) "No puedo oler nada con el traje EVA puesto... salvo lo que hay dentro..."; else "No parece que huela a nada especial."; Escuchar: if (TrajeEVA has puesto) "No puedo oir nada de afuera con el traje EVA puesto... salvo lo que hay dentro..."; else "No produce ningún sonido."; Tocar: "Nada ganas con ello."; BuscarEn: <>; default: "No ves ninguna razón para hacer eso."; ]; !Meta Clase para usar Puertas Class Habitacion with antes [num; Gesticular : "Me pongo a hacer morisquetas y meneo los brazos y piernas como un imbécil..."; Dormir : "Qué más quisiera, pero la compañía no me lo permite..."; Despertarse : "Ya estoy, ya estoy..."; Soplar : "Hiperventilo como un pobre Subacuático."; Tacos : num=random(8); switch (num){ 1: "¡ME CAGO EN LOS GUSANOS DE LA PODRIDA TUMBA DE LA MADRE QUE TE PARIO!"; 2: "¡ME CAGO EN UNA PISCINA DE EJECUTIVOS, CON EL PRESIDENTE DE LA COMPAÑIA DE TAPON!"; 3: "¡LOS ESPACIALES LO HACEMOS EN GRAVEDAD 0 Y EN HORAS EXTRA!"; 4: "¡METANO!"; 5: "¡TOMA LA JODIDA LINEA DE SEGURIDAD Y QUE TE DEN CON ELLA!"; 6: "¡PON EL CULO EN LA SALIDA DE MIS PROPULSORES!"; 7: "¡TU MADRE!"; 8: "¡MAMONAZO!"; }; ] has luz; ! LOCALIDADES ! Usamos clases de localidades para usar Daemons ! que generen efectos de ambientación y para ! algunos decorados de ambientación básicos !Clase para localidades interiores de la Nave Class Localidad_Nave class Habitacion with antes [; Escuchar : if (uno==0) "Nada... la nave funciona silenciosamente...^^ A ratos, resulta enervante."; Oler : if (uno==0) { if (TrajeEVA has puesto) "Huele a oxígeno... a sudor...^^ La nave olía mejor por dentro, y ya es decir mucho..."; else "Huele a oxígeno... a plástico...^ todo limpio y artificial.^^ Un encanto para los sentidos..."; }; Examinar: if (uno == obj_abajo) "El suelo de la nave está hecho de losetas plásticas. La decoración estilo Chic-Compañía."; if (uno == obj_arriba) "El techo de la nave está hecho de losetas plásticas. La decoración estilo Chic-Compañía."; ], no_puedes_ir "Desorientado, doy tumbos como un novato..." ; ! Decoracion del interior de la nave DecoradoAmpliado Decorado_Nave Localidad_Nave with esta_en [; if (localizacion ofclass Localidad_Nave) return true; else return false; ], describir 'pared' DescripcionParedes G_FEMENINO 'paredes' DescripcionParedes G_FEMENINO + G_PLURAL 'muros' DescripcionParedes G_MASCULINO + G_PLURAL 'muro' DescripcionParedes G_MASCULINO 'luz' "Lechosa y blanca.^ Un asco, pero permite moverse sin tropezar y trabajar sin adivinar lo que uno ve." G_FEMENINO 'rendijas' "Son unos zurcos oscuros y porosos que corren entre las losetas. Absorben líquidos y material particulado (granitos y eso), por si algún imbécil derrama algo." G_FEMENINO + G_PLURAL 'losetas' "Son unos cuadrados plásticos con textura antideslizante. Alguna vez fueron blancos, pero el uso y los detergentes de la compañía los han dejado más bien amarillentos.^ Tienen rendijas absorbentes entre sí, por si algún imbécil derrama algo." G_FEMENINO + G_PLURAL 'decoracion' "Techo. Suelo. Paredes.^ Por todos lados, el estilo Chic-Compañía." G_FEMENINO 'estilo' "Todo es liso y sin detalles, de color blanco lechoso tirando a gris, muy parecido al Edificio Corporativo, por cierto; cuando lo visité, me impresionó la uniformidad de todo: sus muebles, sus paredes... y las caras de la gente. Muy alegre..." G_MASCULINO ; [DescripcionParedes; return "Las paredes y el techo de la nave están hechas del mismo material del suelo...^^ ...las mismas losetas, con las mismas rendijas...^^ ...porque si la nave entrara en 0g los conceptos de paredes y suelo vienen a dar lo mismo: puedes (debes) caminar y apoyarte como sea y donde sea.^ En gravedad cero es un gusto como el sentido de orientación queda SNAFU..."; ]; !Clase para localidades exteriores de la Nave Class Localidad_Exterior class Habitacion with antes [; Escuchar : if (uno==0) "Oigo mi propia respiración dentro del traje...^ agitada...^^ El zumbido apagado de los sitemas del traje EVA...^^ El leve roce de mi cuerpo con el traje...^^ Y absolutamente nada más..."; Oler : if (uno==0) "Huele a oxígeno... a sudor...^^ La nave olía mejor por dentro, y ya es decir mucho..."; Examinar: if ((uno == obj_abajo) || (uno == obj_arriba) || (uno == obj_o)) "Estrellas hasta donde alcanza la vista... frías estrellas..."; if (uno == obj_n) { if (localizacion==ExtCabina) "Estrellas hasta donde alcanza la vista... frías estrellas..."; else "La nave continúa hacia el norte. Vamos..."; }; if (uno == obj_s) { if (localizacion==ExtAcople) "Estrellas hasta donde alcanza la vista... frías estrellas..."; else "La nave continúa hacia el sur. Animo..."; }; if (uno == obj_e) { if ((localizacion==ExtAcople) || (localizacion==ExtCabina)) "Estrellas hasta donde alcanza la vista... frías estrellas..."; else "La nave está al este... tranquilo..."; }; ], no_puedes_ir "La línea de seguridad no es infinita. Mejor me dedico a lo mío.." ; ! Decoracion del Exterior DecoradoAmpliado Decorado_Exterior Localidad_Exterior with esta_en [; if (localizacion ofclass Localidad_Exterior) return true; else return false; ], describir 'espacio' "La frontera final y todo ese rollo...^ Estrellas hasta donde alcanza la vista... frías estrellas..." G_MASCULINO 'vacio' "La Nada. Casi me dan ganas de filosofar al respecto, pero dadas las circunstancias... ni de coña." G_MASCULINO 'estrellas' "Puntos de luz, fríos y remotos, como el amor de Dios que...^ Me está afectando el oxígeno, vaya." G_FEMENINO + G_PLURAL 'nave' "La nave es el típico OTV usado por la compañía: un módulo usiforme, oblongo, de color gris sucio (alguna vez fue blanco), con retrocohetes esparcidos aquí y allá... y algunos impactos de micrometeoritos bastante recientes.^ Muy del estilo de la compañía, esa decoración..." G_FEMENINO 'casco' "La cubierta externa de la nave. No muy sólida, como demostraron los meteoritos..." G_MASCULINO 'fuselaje' "La cubierta externa de la nave. No muy sólida, como demostraron los meteoritos..." G_MASCULINO 'marcas' "Son alargadas, de un color amarillo sucio o marrón. Distribuidas aquí y allá por el fuselaje, revelan el impacto de los meteoritos con el OTV.^^ Lo dicho, estamos vivos de milagro." G_FEMENINO + G_PLURAL 'luces' "Son unas luces pequeñitas (no más de un palmo) ubicadas en algunos puntos del fuselaje, para aprovechar la máxima eficiencia. Resultado: puedes ver donde pisas y algo de lo que estás haciendo... y poco mas." G_FEMENINO + G_PLURAL 'retrocohetes' "Ubicados aquí y allá, los RCR se usan para frenar la nave o cambiar su rumbo... pero no alcanzan para dar impulso o inciar maniobras. Este OTV es, después de todo, un aparato inercial..." G_MASCULINO + G_PLURAL ; DecoradoAmpliado Decorado_LineaEVA Localidad_Exterior with esta_en [; if (localizacion ofclass Localidad_Exterior) return true; else return false; ], describir 'linea' "La linea de seguridad cuelga detrás tuyo, conectada al traje EVA" G_FEMENINO, antes [; Tirar, Coger : "La línea de seguridad está fija en un extremo dentro del compartimiento y no hay como arrancarla o sacarla del todo. Por suerte..."; Encender, Vestir: "Ya está conectada..."; Apagar, Desvestir: ! Muerte por deriva sin línea de seguridad SalirSinLineaEVA.proyeccion(); banderafin = 3; rtrue; ], ; ! Creamos un objeto para que reaccione a <> Object ObjetoLocalidad "localidad" with nombre 'cabina' 'pasillo' 'taller' 'comedor' 'estanco' 'camara' 'acople' 'exterior', descripcion [; np = 2; switch (SiguientePalabra()) { 'cabina' : if ((localizacion == Cabina)||(localizacion ofclass Localidad_Exterior)) {;<>;} else "No veo eso que dices."; 'pasillo' : if ((localizacion == Pasillo)||(localizacion == Pasillo2)) {;<>;} else "No veo eso que dices."; 'taller' : if (localizacion == Taller) {;<>;} else "No veo eso que dices."; 'comedor' : if (localizacion == Comedor) {;<>;} else "No veo eso que dices."; 'estanco' : if ((localizacion == Estanco)||(localizacion ofclass Localidad_Exterior)) {;<>;} else "No veo eso que dices."; 'camara' : if (localizacion == Camara) {;<>;} else "No veo eso que dices."; 'acople' : if ((localizacion == Acople)||(localizacion ofclass Localidad_Exterior)) {;<>;} else "No veo eso que dices."; 'exterior' : if (localizacion ofclass Localidad_Exterior) {;<>;} else "No veo eso que dices."; default : "No veo eso que dices."; }; ], esta_en [; rtrue; ], has escenario femenino; !----------------------------------[Cabina]---------------------------------- Localidad_Nave Cabina "La Cabina de Mando" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Este es el único lugar de todo el OTV al que no he querido entrar nunca... y me sobran razones.^ Al principio de los vuelos espaciales, dados los avances en sistemas informáticos y de control automático, la capacidad de reacción de los pilotos era crítica para sobrevivir a las temidas 'emergencias en vuelo'...^ Hoy en cambio, nuestros sistemas automáticos e informáticos (inclusive los de la compañía) son lo suficientemente avanzados como para que lo peor que puede pasar en una de esas emergencias es que un piloto humano se ponga a pensar (o no) antes de decidirse a actuar...^ Testimonio de esto: en esta cabina no hay asientos y apenas si hay algo en lo que yo pueda tocar un botón o modificar un holograma o que sé yo. Y eso, más que nada, es lo que me asusta: mi absoluta (y peligrosa) ignorancia de casi todas las computadoras, indicadores y paneles que están aquí.^ La vista es buena, eso sí: algún romántico decidió poner una ventana ancha, aunque casi nunca mire alguien a través de ella. "; } else print "La cabina de mando de la nave... un rollo inacabable de instrumentos, computadoras, algunos botones, indicadores, paneles... y una ventana muy ancha al frente. "; if (CompuertaCabina hasnt abierto) "Al sur, la compuerta cerrada impide el acceso al pasillo."; else "Puedo volver al pasillo de servicio al sur. "; ], al_s CompuertaCabina ; !Objetos de la Cabina Object PanelNavegacion "panel de navegación" Cabina with nombre_m 'panel' 'teclado', nombre_f 'pantalla', adjetivos 'navegacion', describir [; if (self hasnt general) "Uno de los paneles tiene un mensaje parpadeando en su pantalla."; ], descripcion [; print "Es el panel de navegación, con su teclado y pantalla. "; if (self hasnt general) "Espero que el problema no sea grave: de navegación no entiendo nada..."; else "Todo parece estar en orden ¡Por Fin!"; ], reaccionar_antes [; teclear : if ( (self hasnt general) && (Antena has general) ) { np = 2; switch (SiguientePalabra()) { 'OTV-44': give self general; "Casi de inmediato, se escucha un zumbido, mientras mi reloj parpadea... ¡y se detiene la cuenta regresiva!"; default: "Nada ocurre..."; } } else "Nada ocurre..."; ], antes [; Consultar, Leer: print "En el panel se lee:^^"; if (self hasnt general) {; if (Antena hasnt general){; ! Reparar Antena de Comunicaciones style bold; print "Interrupción de enlace de comunicaciones^ con Satélite de Extracción Mineral SM-26.^^ Reparar Antena de Comunicaciones URGENTE."; style roman; rtrue; } else { ! Reactivación de Sistemas de Navegación style bold; print "Restaurado enlace de comunicaciones^ con Satélite de Extracción Mineral SM-26.^^ Nave OTV-44 fuera de curso.^^ Confirme identificación nave para^ realinear trayectoria.^^ *>_____"; style roman; rtrue; } } else { ! Sistemas de Navegación OK style bold; print "Identificación Confirmada.^^ Trayectoria Corregida OK.^^ Nave OTV-44 en curso normal."; style roman; rtrue; } ], has masculino estatico legible; DecoradoAmpliado Decorado_Cabina Cabina with describir 'paneles' DescripcionInstrumentosCabina G_MASCULINO + G_PLURAL 'botones' DescripcionInstrumentosCabina G_MASCULINO + G_PLURAL 'instrumentos' DescripcionInstrumentosCabina G_MASCULINO + G_PLURAL 'indicadores' DescripcionInstrumentosCabina G_MASCULINO + G_PLURAL 'teclados' DescripcionInstrumentosCabina G_MASCULINO + G_PLURAL 'computadoras' DescripcionInstrumentosCabina G_FEMENINO + G_PLURAL 'pantallas' DescripcionInstrumentosCabina G_FEMENINO + G_PLURAL 'lucecitas' DescripcionInstrumentosCabina G_FEMENINO + G_PLURAL 'ventana' "Una ancha curva de material transparente, que va casi de lado a lado de la cabina.^ Trato de no mirarla mucho: el material será resistente y no se ve que tenga grietas o fallas, pero, bueno, me pone algo nervioso..." G_FEMENINO ; [DescripcionInstrumentosCabina; return "Es una cantidad mareadora de^ computadoras^ paneles^ botones^ instrumentos^ indicadores^ pantallas^ teclados^ lucecitas, que se prenden y se apagan, se prenden y se apagan, que se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan, se prenden y se apagan Y SE PRENDEN Y APAGAN SE PRENDEN Y APAGAN Y Y Y-Y-Y-YA NO PUEDO SEGUIR MIRANDOLO!!!^^ Debe ser la tensión y eso..."; ]; !----------------------------------[Pasillo2]---------------------------------- Localidad_Nave Pasillo2 "El Pasillo de Servicio" with descripcion [; print "El estrecho pasillo de servicio, blanco y frío. En la pared norte "; if (CompuertaCabina hasnt abierto) print "una compuerta cerrada impide el acceso "; else print "la compuerta abierta permite entrar "; "a la cabina. El pasillo sigue al sur, mientras que al este se accede al comedor y al oeste se puede ver el taller."; ], al_n CompuertaCabina, al_s Pasillo, al_e Comedor, al_o Taller, ; ! Objetos del Pasillo2 Conexion CompuertaCabina "compuerta de acceso a la cabina" with nombre 'puerta' 'compuerta', adjetivos 'acceso' 'cabina', descripcion [; print "La compuerta es de forma rectangular y bastante estrecha."; if (localizacion==Pasillo2) print " A la izquierda de la puerta hay un panel LCD."; rtrue; ], despues [; Abrir : if (self hasnt general){ give self ~abierto; "Me acerco a la puerta, pero nada ocurre. ¿¡Que no es automática esta puerta?!"; } else "La compuerta se desliza lentamente, en completo silencio..."; Cerrar : "La compuerta se desliza lentamente, sin siquiera un sonido..."; ], has femenino escenario abrible; Object PanelPasillo2 "panel LCD" Pasillo2 with nombre_m 'panel', adjetivos 'LCD', descripcion [; print "Es un pequeño panel LCD de mensajes de texto. Está instalado en la pared, a la izquierda de la compuerta. "; if (CompuertaCabina hasnt general) print "El panel está de color rojo. "; else print "El panel está de color verde. "; "Bajo el Panel se puede ver un botón."; ], antes [; Consultar, Leer: print "En el panel se lee:^^"; if (CompuertaCabina hasnt general) { style bold; print "CABINA NO PRESURIZADA.^ PUERTA BLOQUEADA.^^"; style roman; "Es cagifragil... en fin, que me..."; } else { style bold; print "CABINA PRESURIZADA.^ PUERTA HABILITADA.^^"; style roman; "Por fin..."; } ], has masculino escenario legible; Object BotonPasillo2 "botón Presurizar" Pasillo2 with nombre 'boton', adjetivos 'presurizar' 'pequeño', descripcion "Es un pequeño botón alargado, ubicado bajo el panel de la compuerta. La etiqueta escrita en el botón dice PRESURIZAR.", antes [; Tocar, Empujar : if ((CompuertaCabina hasnt general) && (Agujeros has general)) { give CompuertaCabina general; "La luz del panel parpadea una vez y cambia de color."; } else "La luz del panel parpadea dos veces y no cambia de color."; ], has masculino escenario; !----------------------------------[Taller]---------------------------------- Localidad_Nave Taller "El Taller de Reparaciones" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Esta habitación es una de las formas de la compañía de dar a entender a sus empleados cuánto se preocupa por darnos condiciones adecuadas de trabajo para desempeñar nuestra labores con la mayor eficiencia posible y con lo último en ergonomía:^^ El taller tiene la forma exacta de un huevo parado y cortado a la mitad.^^ La mesa, con todas las gavetas en hileras por debajo de ella, está montada a media altura: la mayoría de las herramientas cuelgan del techo y, como no hay sillas, toda labor que se haga aquí por fuerza ha de ser de pie. Si es que las herramientas son desmontables, y necesitas sentarte, te puedes llevar el trabajo al comedor... pero ahí no te irá mucho mejor.^ Lo dicho: la compañía nos mima... "; } else print "El taller, con la forma exacta de un huevo parado y cortado a la mitad, es un habitáculo estrecho y poco profundo, con una mesa de trabajo con varias gavetas y algunas herramientas colgando del techo con cables flexibles. "; "Por el este se puede volver al pasillo de servicio. "; ], al_e Pasillo2, ; !Objetos del Taller Object Mesa "mesa de trabajo" Taller with nombre_f 'mesa', adjetivos 'trabajo', descripcion "Es una mesa semicircular, empotrada en la pared. Bajo ella hay una serie de gavetas, una encima de otra, donde se guardan las herramientas.", Antes [; BuscarEn : if ((Alicate in Gavetas) && (self hasnt general)) { <>; } else "No hay nada nuevo adentro. Qué desperdicio de espacio..."; ] has femenino escenario soporte; Object Gavetas "gavetas" Taller with nombre_fp 'gavetas', descripcion "Las gavetas están bajo la mesa, una encima de otra y suelen usarse para guardar las herramientas... pero si conozco a la compañía, no ha de haber demasiado de utilidad adentro.", Antes [; Abrir, BuscarEn : if ((Alicate in self) && (self hasnt general)) { give self general; give Mesa general; give self abierto; "Dentro de una de las gavetas hay un estupendo alicate soldador. Esto ya pinta mejor... y va en contra de las políticas de la compañía: es una herramienta práctica y en el sitio preciso.^ ¿He de reportarlo?"; } else "No hay nada nuevo adentro. Qué desperdicio de espacio..."; ], has femenino nombreplural escenario recipiente abrible ~abierto; Object Alicate "alicate soldador" Gavetas with nombre_m 'alicate', adjetivos 'soldador', descripcion [; if (self hasnt visitado){ give self visitado; "Es una herramienta estupenda: permite aferrar cosas y, si es necesario, soldarlas por calor o a nivel molecular. Es una pasada, vamos..."; } else "Es un alicate... del siglo XXI. Un lujo..."; ], despues [; Dejar: if (localizacion ofclass Localidad_Exterior){ move self to Limbo; if (Antena hasnt general){ ! Muerte por extravío de herramienta DejarHerramientaEnEspacio.proyeccion(); banderafin = 3; rtrue; } else print "Al momento de soltar el alicate, recuerdo algo de pronto...^^ ...pero ya es muy tarde: su inercia, combinada con la de la nave, la alejan rápidamente de ella...^^ ...cada vez más y más; por más que aleteo como un loco, el alcance de la línea de seguridad es limitado, y ya no hay como recuperarlo...^^ Pudo ser peor... al menos ya tengo la antena reparada."; if (Agujeros hasnt general) "Tengo que estar más atento o podría quedarme sin herramientas de veras críticas... y hasta ahí llegan las reparaciones...^ Y mis posibilidades de salir con vida, ya que estamos."; else "En fin... conociendo a la compañía, querrán descontarlo de mi salario.^ No será poco: de verdad, era una estupenda herramienta..."; } ] has masculino; Object Pistola "pistola sellante" Taller with nombre_f 'pistola', nombre_m 'morro' 'mango' 'contenedor', adjetivos 'sellante', capacidad 1, describir "Entre todo ello se ve una pistola sellante.", descripcion [; if (self hasnt visitado) { give self visitado; print "La pistola sellante tiene un mango cómodo, sobre el cual está el contenedor de sellante, que se expulsa por el morro de la... joder, ya estoy con las auto-explicaciones otra vez... ¿¡Qué me pasa?!^"; } else print "Es una pistola para sellar filtraciones o junturas. "; if (Liquido in self) "El contenedor está lleno de líquido."; else if (Pasta in self) "El contenedor está lleno de pasta."; else { print "El contenedor está vacío."; if (agujeros hasnt general) " Así no sirve de mucho..."; else ""; } ], reaccionar_antes [; Meter: if (self hasnt general){ if ((uno==Liquido) || (uno==Pasta)){ give self general; if (uno in Vasija) give Vasija ~general; move uno to self; give self ~abierto; "Con un ruido de succión la pistola se carga y el contenedor queda lleno."; } else "No hay cómo llenar la pistola con eso. No hay caso, no entra..."; } else "La pistola ya está llena..."; Llenar : if (self hasnt general) { if (otro==0){ if ((Pasta in Vasija) || (Pasta in Jugador)) <>; if ((Liquido in Vasija) || (Liquido in Jugador)) <>; else "¿Con qué?..."; } else <>; } else "La pistola ya está llena..."; ], antes [; Vaciar : if (Liquido in self){ move Liquido to Limbo; give self ~general; give self abierto; if (localizacion ofclass Localidad_Nave) "El líquido sale a altísima presión y se dispersa en un leve vapor.^ Diablos.^ Con este aparato no se juega..."; else "El líquido sale a altísima presión y se dispersa en una nube de cristales.^ Diablos.^ Necesito algo más denso..."; } if (Pasta in self){ if (localizacion ofclass Localidad_Nave) { move Pasta to Limbo; give self ~general; give self abierto; "La pasta sale a altísima presión y se cuela por las rendijas del suelo.^ Diablos.^ Con este aparato no se juega..."; } else if (localizacion == ExtCabina){ if (Agujeros has general) "¡Bah! Los agujeros ya están sellados..."; else { move Decorado_Agujeros to ExtCabina; move Pasta to Limbo; give Agujeros general; give self ~general; give self abierto; LlenandoGoteras.proyeccion(); rtrue; } } else { move Pasta to Limbo; give self ~general; give self abierto; "La pasta sale a altísima presión y se dispersa en una nube de pequeños granulos, rebotando aquí y allá...^ Diablos.^ Tendré que recargar este trasto..."; } } else { if (localizacion ofclass Localidad_Nave) { "La pistola emite un siseo seco..."; } else "Disparo la pistola, pero no pasa nada..."; } ], despues [; Dejar: if (localizacion ofclass Localidad_Exterior){ move self to Limbo; if (Agujeros hasnt general){ ! Muerte por extravío de herramienta DejarHerramientaEnEspacio.proyeccion(); banderafin = 3; rtrue; } else if (Liquido in self) move Liquido to Limbo; else if (Pasta in self) move Pasta to Limbo; print "Al momento de soltar la pistola, recuerdo algo de pronto...^^ ...pero ya es muy tarde: su inercia, combinada con la de la nave, la alejan rápidamente de ella...^^ ...cada vez más y más; por más que aleteo como un loco, el alcance de la línea de seguridad es limitado, y ya no hay como recuperarla...^^ Pudo ser peor... al menos ya tengo tapados los agujeros."; if (Antena hasnt general) "Tengo que estar más atento o podría quedarme sin herramientas de veras críticas... y hasta ahí llegan las reparaciones...^ Y mis posibilidades de salvar mi propio pellejo, ya que estamos."; else "En fin... conociendo a la compañía, querrán descontarlo de mi salario.^ No será poco: funcionaba de puta madre..."; } ] has femenino recipiente transparente abierto; DecoradoAmpliado Decorado_Taller Taller with describir 'cables' "Los cables sujetan las herramientas al techo por motivos de seguridad.^ En condiciones normales estorban un poco, con esta mania de recogerse en forma automática, pero en 0g...^ Bueno, he tenido algunas pesadillas con herramientas sueltas en 0g." G_MASCULINO + G_PLURAL 'herramientas' "Las herramientas cuelgan del techo del taller. El surtido no es malo, pero están la mayoría aferradas a cables.^ Cada vez que las veo, pienso en los Ejecutivos de la compañía y ciertas yuxtaposiciones no del todo recomendables..." G_FEMENINO + G_PLURAL ; !----------------------------------[Comedor]---------------------------------- Localidad_Nave Comedor "El Comedor" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "La compañía no piensa que un OTV sirva para algo más que llevar gente dormida de un lado a otro... y este comedor es la demostración más clara. El amoblado (por llamarlo de alguna manera) se reduce a:^ Un remedo de mesa que recuerda fotos de un artilugio del siglo XX llamado 'tabla de planchar' (no pregunten)...^ Unas sillas fijas al suelo para tratar de sentarse en torno a la mesa...^ Todo, en un espacio de apenas un par de metros cuadrados: muy acogedor...^"; } else print "Una mesa y unas sillas... todo en plástico blanco y apernado o fundido al suelo o paredes. El reducido y acogedor comedor de la nave. "; "Por el oeste se puede volver al pasillo de servicio."; ], antes [; Ir: if ((Liquido in jugador)&&(Liquido notin Pistola)){ move Liquido to Limbo; "¡Mierda! ¡Derramé todo el líquido! Ahí se vá, entre las rendijas del suelo..."; } if ((Pasta in jugador)&&(Pasta notin Pistola)){ move Pasta to Limbo; "¡Mierda! ¡Derramé toda la pasta! Ahí se vá, fluyendo despacio por el suelo..."; } ], al_o Pasillo2, ; !Objetos del Comedor Object Dispensador "dispensador de alimentos" Comedor with nombre_m 'dispensador' 'tubo', adjetivos 'alimentos', describir [; print "Hay un dispensador de alimentos en la pared"; if (Vasija hasnt general) ", que no ofrece nada más que su presencia, de momento..."; ! else if (Liquido in Vasija) ! " y su vasija contiene un poco de líquido."; ! else if (Pasta in Vasija) ! " y su vasija contiene un poco de pasta."; ! else ! ", con algo en su vasija."; else "."; ], descripcion [; print "Es una maravilla de la tecnología alimentaria... "; if (self hasnt visitado) { print "para zombies. La compañía lo puso por si ocurría la desgraciada necesidad de alimentar a alguien que tuviera que permanecer despierto más de un par de horas en este bote apestoso. "; give self visitado; } print "Tiene un par de botones para escoger qué comer o beber (sofisticado, vaya). Bajo el tubo dispensador hay una vasija para recibir los alimentos, y en este momento "; if (Vasija hasnt general) print "está vacía... en fin... no es que haya loza o cubiertos a mano... "; else print "tiene algo dentro. "; if (AvisoDispensador hasnt visitado) "En un costado tiene un aviso impreso"; else rtrue; ], has masculino estatico; Object Vasija "vasija pástica del dispensador" Comedor with nombre_f 'vasija', adjetivos 'plastica', capacidad 1, descripcion [; print "Es una vasija plástica para recibir alimentos"; if (self hasnt general) " y no ofrece nada más que su presencia, de momento..."; else if (Liquido in self) ". Contiene un poco de líquido."; else if (Pasta in self) ". Contiene un poco de pasta."; else "y está ocupada."; ], !Manejar vasija con capacidad única reaccionar_antes [; Dejar, PonerSobre: if (otro==self){ if (self hasnt general) { move uno to self; give self general; "Dejas ", (el) uno, " en la vasija."; } else "La vasija está ocupada..."; } Coger: if ((uno in self)&& ((otro==0)||(otro==self))) give self ~general; ], has femenino escenario soporte; Object AvisoDispensador "aviso" Comedor with nombre_m 'aviso' 'algo', nombre_f 'placa', nombre_fp 'letras', adjetivos 'plastica' 'pegada' 'grandes', descripcion "Es una placa plástica pegada a un costado del dispensador. Tiene algo escrito en letras grandes.", antes[; Coger : "Corrijo; más que pegado, parece estar fundido con el dispensador. No hay caso."; Consultar, Leer: style bold; print "ATENCION:^"; style roman; print "ESTE DISPOSITIVO PROPORCIONA LIQUIDO Y ALIMENTO SEMISOLIDO PARA CONSUMO HUMANO.^^"; style bold; print "PARA USAR ESTE DISPOSITIVO:^"; style roman; print "DESPEJE LA VASIJA DE OTROS OBJETOS^ SIRVA UNA RACION DE BEBIDA O COMIDA^ CONSUMALA^^"; style bold; print "ESTE DISPOSITIVO NO SE ACTIVARA SI:^"; style roman; print "LA VASIJA ESTA OCUPADA^ NO SE HA CONSUMIDO LA ULTIMA RACION SERVIDA^^"; style bold; print "REPORTE A LA COMPAÑIA SU USO INADECUADO^^ LA COMPAÑIA NO SE HACE RESPONSABLE POR DAÑOS CAUSADOS AL USUARIO SI NO SE SIGUEN ESTAS INDICACIONES."; style roman; if (self hasnt visitado) { give self visitado; "^^(suspiro)^^ Si me caso alguna vez, organizaré el banquete en otra parte..."; } rtrue; ], has masculino escenario legible; Object BotonBebida "botón Bebida" Comedor with nombre_m 'boton', adjetivos 'bebida' 'pequeño', descripcion "Es un pequeño botón alargado, ubicado bajo el tubo dispensador.^ La etiqueta escrita en el botón dice BEBIDA.", antes [; Tocar, Empujar : if (Liquido in Limbo) { if (Vasija hasnt general) { give Vasija general; move Liquido to Vasija; "Del tubo cae un poco de líquido a la vasija."; } else "Se escuchan dos tonos graves y no sale nada por el tubo."; } else "Se escuchan dos tonos graves y no sale nada por el tubo."; ], has masculino escenario; Object BotonComida "botón Comida" Comedor with nombre_m 'boton', adjetivos 'comida' 'pequeño', descripcion "Es un pequeño botón alargado, ubicado tubo dsipensador.^ La etiqueta escrita en el botón dice COMIDA.", antes [; Tocar, Empujar : if (Pasta in Limbo){ if (Vasija hasnt general){ give Vasija general; move Pasta to Vasija; "Del tubo cae un poco de pasta a la vasija."; } else "Se escuchan dos tonos graves y no sale nada por el tubo."; } else "Se escuchan dos tonos graves y no sale nada por el tubo."; ], has masculino escenario; Object Liquido "liquido transparente" Limbo with nombre_m 'liquido', nombre_f 'bebida', adjetivos 'transparente', inicial [;], descripcion "Es un líquido transparente y claro. No parece peligroso, considerando de dónde salió...", antes [; Oler: "Es inodoro."; Probar: "Es insípido."; Tocar: "Está tibio."; Dejar, PonerSobre: if ((self in jugador)& ((otro==0)||(otro~=Vasija)) ){ move self to Limbo; "Al dejarlo, el liquido se escurre hasta llegar al suelo, desapareciendo entre las rendijas.^ Seré imbécil..."; } Beber: move self to Limbo; give Vasija ~general; "Está tibio y no tiene gusto a nada. No refresca demasiado... pero quita la sed.^ Pudo haber sido peor..."; ], despues [; Coger: give Vasija ~general; "Con cuidado lo sostengo en el hueco de la mano."; ], has masculino comestible; Object Pasta "pasta espesa" Limbo with nombre_f 'pasta' 'comida', adjetivos 'espesa', inicial [;], descripcion "Es una pasta de consistencia espesa, de colores opacos. No parece apetitosa, considerando de dónde salió...", antes [; Oler: "Vaya. Huele suavemente a frutas."; Probar: "Tiene un sabor estupendo, suavemente dulce y cremoso. Sorprendente..."; Tocar: "Está tibia, es espesa y muy suave."; Dejar, PonerSobre: if ((self in jugador)& ((otro==0)||(otro~=Vasija)) ){ move self to Limbo; "Al dejarla, la pasta se escurre fluidamente hasta llegar al suelo, desapareciendo entre las rendijas.^ Muy astuto de mi parte..."; } ], despues [; Coger: give Vasija ~general; "Es más bien viscosa y se cuesta mantenerla en las manos."; Comer: move self to Limbo; "Está tibia y tiene un sabor estupendo, suavemente dulce y cremoso. Es más bien viscosa, pero se pasa como si nada y sienta muy bien.^ Jamás se me habría ocurrido comer en un OTV, pero es de lo mejor que he probado en años...^ Sorprendente..."; ], has femenino comestible; DecoradoAmpliado Decorado_Comedor Comedor with describir 'silla' "Son de plástico rígido, sin acolchamiento alguno. Sentarse en ellas es apenas más cómodo que comer de pie. Están apernadas al suelo, pero no entiendo quién va a querer llevarse esa porquería." G_FEMENINO 'sillas' "Son de plástico rígido, sin acolchamiento alguno. Sentarse en ellas es apenas más cómodo que comer de pie. Están apernadas al suelo, pero no entiendo quién va a querer llevarse esa porquería." G_FEMENINO + G_PLURAL 'mesa' "Hay que tener mucha imaginación para llamar a esta cosa una mesa. Es de la forma de una tabla de surf, pero la mitad de larga y con los extremos truncados. Su base está fundida al suelo, pero, al igual que las sillas, no me la llevaría ni aunque me pagaran." G_FEMENINO 'botones' "Son dos pequeños botones de forma alargada, ubicados sobre el tubo dsipensador. Tienen cada uno una etiqueta escrita: BEBIDA y COMIDA. Apetitoso ¿no?" G_MASCULINO + G_PLURAL 'plastico' "Un material muy duro, de un blanco lechoso y sin gracia. El dinosaurio del que salió el petroleo del que hicieron esto debe haber sido más simpático." G_MASCULINO ; !----------------------------------[Pasillo]---------------------------------- Localidad_Nave Pasillo "El Pasillo de Servicio" with descripcion [; print "El estrecho pasillo de servicio, blanco y frío. En la pared oeste "; if (CompuertaInternaEstanco hasnt abierto) print "una compuerta cerrada impide el acceso "; else print "la compuerta abierta permite entrar "; "al estanco. El pasillo sigue al norte, mientras que al sur se llega al acople del bote."; ], al_n Pasillo2, al_s Acople, al_e Camara, al_o CompuertaInternaEstanco, ; ! Objetos del Pasillo Conexion CompuertaInternaEstanco "compuerta interna del estanco" with nombre 'puerta' 'compuerta', adjetivos 'estanco' 'interna', descripcion [; print "La compuerta es de forma redonda y bastante grande. Tiene una gruesa barra al costado."; if (localizacion==Pasillo) { print " A la izquierda de la puerta hay un panel LCD."; if (AvisoCompuertaInterna hasnt visitado) " Hay un aviso escrito sobre la compuerta."; else rtrue; } else rtrue; ], despues [; Abrir : if (Estanco hasnt general){ give self ~abierto; "Aferras la barra con todas tus fuerzas, pero la puerta no se abre."; } else if (self has abierta) "Tomando la barra, la compuerta se abre lentamente, en completo silencio..."; Cerrar : print "Tomando la barra, la compuerta se cierra lentamente, sin sonido alguno...^"; if (localizacion==Pasillo){ give Estanco ~general; print "Cuando la puerta está cerrada, la luz del panel parpadea una vez y cambia de color."; } rtrue; ], has femenino escenario abrible; Object AvisoCompuertaInterna "aviso" Pasillo with nombre_m 'aviso' 'algo', nombre_f 'placa', nombre_fp 'letras', adjetivos 'plastica' 'pegada' 'grandes', descripcion "Es una placa plástica pegada sobre la compuerta. Tiene algo escrito en letras grandes.", antes [; Coger : "Corrijo; más que pegado, parece estar soldado a la estructura molecular de la compuerta. No hay caso."; Consultar, Leer : print "Es un aviso en fondo amarillo y letras rojas en que se lee:^^"; style bold; print "ESTANCO PARA ACTIVIDADES EVA DE OTV^ > ACCESO SOLO PERSONAL AUTORIZADO <^^"; style roman; if (self hasnt visitado){ give self visitado; "(suspiro)^ Los Ingenieros de la compañía son una manga de burros, ya que:^ 1. Todo el personal a bordo del OTV está autorizado a usar el estanco.^ 2. Por ende, no hay personal a bordo no autorizado a usar el estanco^^ ...o sea, que es un cartel tan inútil como si dijera LEA ESTA FRASE..."; } else "Ingenieros y Ejecutivos de la compañía... del mismo molde..."; ], has masculino escenario legible; Object PanelPasillo "panel LCD" Pasillo with nombre_m 'panel', adjetivos 'LCD', descripcion [; print "Es un pequeño panel LCD de mensajes de texto. Está instalado en la pared, a la izquierda de la puerta. "; if (Estanco hasnt general) print "El panel está de color rojo. "; else print "El panel está de color verde. "; "Bajo el panel se puede ver un botón."; ], antes [; Consultar, Leer: print "En el panel se lee:^^"; if (Estanco hasnt general) { style bold; print "ESTANCO NO PRESURIZADO.^ PUERTA BLOQUEADA.^^"; style roman; "Fanputástico..."; } else { style bold; print "ESTANCO PRESURIZADO.^ PUERTA HABILITADA.^^"; style roman; "Ya..."; } ], has masculino escenario legible; Object BotonPasillo "botón Presurizar" Pasillo with nombre 'boton', adjetivos 'presurizar' 'pequeño', descripcion "Es un pequeño botón alargado, ubicado bajo el panel de la compuerta. La etiqueta escrita en el botón dice PRESURIZAR.", antes [; Tocar, Empujar : if (Estanco hasnt general) { give Estanco general; "La luz del panel parpadea una vez y cambia de color."; } else "La luz del panel parpadea dos veces y no cambia de color."; ], has masculino escenario; DecoradoAmpliado Decorado_Pasillo Pasillo with describir 'barra' "Una gruesa barra metálica bien pulida, fija a un costado de la compuerta" G_FEMENINO; !----------------------------------[Estanco]---------------------------------- Localidad_Nave Estanco "El Cuarto de Estanco" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Este cuarto es casi tan espacioso como el acople del bote, ya que aquí se preparan las actividades EVA. Nadie espera tener que hacer actividades EVA en un bote... pero tampoco nadie espera salir a la calle y tener accidentes, y, bueno...^ Nadie que quiera trabajar en la compañía (ni siquiera los Ejecutivos) puede hacerlo sin conocer los Protocolos de Seguridad para EVA (así, con mayúsculas) y, personalmente, no estoy dispuesto a trabajar con un tarado que entre a un Estanco y haga un SNAFU que nos mate a todos.^ Ya bastante arriesgado es este trabajo sin invocar al maldito Murphy cada vez que salimos al vacío...^"; } else print "El cuarto de estanco es una habitación cuadrada, menos estrecha que otras del bote, donde se preparan las actividades EVA."; print "Al este, la compuerta interna "; if (CompuertaInternaEstanco hasnt abierto) print "impide el acceso "; else print "permite volver "; print "al pasillo de servicio. Al oeste, está la compuerta externa, para salir... bueno, Afuera. "; if (CompuertaExternaEstanco has abierta) print "La compuerta externa está abierta... como bostezando...^ Me canso sólo de verlo. "; rtrue; ], antes [; Ir: if ( (uno==obj_e) && (LineaEVA has general) && (CompuertaInternaEstanco has abierta) && ( (Mono in jugador) || (TrajeEVA in jugador) ) ) "¡Al intentar entrar al pasillo, la línea de seguridad da un fuerte tirón y me regresa al Cuarto de Estanco!^^ ¡Joder con las medidas de seguridad de la compañía!^ ¿¡YA VOY A DESCONECTAR LA LINEA DE SEGURIDAD, OK?!"; ], al_e CompuertaInternaEstanco, al_o CompuertaExternaEstanco, ; ! Objetos del Estanco Conexion CompuertaExternaEstanco "compuerta externa del estanco" with nombre 'puerta' 'compuerta', adjetivos 'estanco' 'externa', descripcion [; print "La compuerta es de forma redonda y bastante grande. Tiene una gruesa barra al costado."; if (localizacion==Estanco) print " A la izquierda de la puerta hay un panel LCD."; if (AvisoCompuertaExterna hasnt visitado) " Hay un aviso escrito sobre la compuerta."; else rtrue; ], despues [; Abrir : if (Estanco has general) { give self ~abierta; "Aferro la barra con todas mis fuerzas, pero la muy obcecada no se abre."; } else if (self has abierta) "Tomando la barra, la compuerta se abre lentamente, en completo silencio..."; Cerrar : if (localizacion==ExtEstanco) { give self abierta; "No puedo cerrar la puerta debido a la línea de seguridad... si la corto, me jodo."; } else "Tomando la barra, la compuerta se cierra lentamente, sin sonido...^"; ], has femenino escenario abrible; Object AvisoCompuertaExterna "aviso" Estanco with nombre_m 'aviso' 'algo', nombre_f 'placa', nombre_fp 'letras', adjetivos 'plastica' 'pegada' 'grandes', descripcion "Es una placa plástica pegada sobre la compuerta. Tiene algo escrito en letras grandes.", antes [; Coger : "Corrijo; más que pegado, parece estar soldado a la estructura molecular de la compuerta. No hay caso."; Consultar, Leer : print "Es un aviso en fondo amarillo y letras rojas en que se lee:^^"; style bold; print "PUERTA EXTERNA DE ESTANCO^"; if (localizacion==ExtEstanco) print "> ABRA SOLO PARA ENTRAR <^^"; else print "> ABRA SOLO PARA SALIR <^^"; style roman; if (self hasnt visitado){ give self visitado; "(suspiro)^ ¿¿Alguien me puede decir para que otra puñetera cosa sirve una puerta EXTERNA?!^^ Los Ingenieros de la compañía, siempre tan literales para todo..."; } else "Me cuesta creer que los Ingenieros realmente piensen al momento de poner estos avisos..."; ], has masculino escenario legible; Object PanelEstanco "panel LCD" Estanco with nombre_m 'panel', adjetivos 'LCD', descripcion [; print "Es un pequeño panel LCD de mensajes de texto. Está instalado en la pared, a la izquierda de la puerta. "; if (Estanco hasnt general) print "El panel está de color verde. "; else print "El panel está de color rojo. "; "Bajo el panel se puede ver dos botones."; ], antes [; Consultar, Leer: print "En el panel se lee:^^"; if (Estanco has general) { style bold; print "ESTANCO PRESURIZADO.^ PUERTA EXTERNA BLOQUEADA.^ PUERTA INTERNA HABILITADA.^^"; style roman; "Esputendo..."; } else { style bold; print "ESTANCO NO PRESURIZADO.^ PUERTA EXTERNA HABILITADA.^ PUERTA INTERNA BLOQUEADA.^^"; style roman; "Ya..."; } ], has masculino escenario legible; Object BotonPresurizar "botón Presurizar" Estanco with nombre 'boton', adjetivos 'presurizar' 'pequeño', descripcion "Es un pequeño botón alargado, ubicado bajo el panel de la compuerta. La etiqueta escrita en el botón dice PRESURIZAR.", antes [; Tocar, Empujar : if ((Estanco hasnt general) && (CompuertaInternaEstanco hasnt abierta) && (CompuertaExternaEstanco hasnt abierta) ){ give Estanco general; "La luz del panel parpadea una vez y cambia de color."; } else "La luz del panel parpadea dos veces y no cambia de color."; ], has masculino escenario; Object BotonDespresurizar "botón Despresurizar" Estanco with nombre 'boton', adjetivos 'despresurizar' 'pequeño', descripcion "Es un pequeño botón alargado, ubicado bajo el panel de la compuerta. La etiqueta escrita en el botón dice DESPRESURIZAR.", antes [; Tocar, Empujar : if ((Estanco has general) && (CompuertaInternaEstanco hasnt abierta) && (CompuertaExternaEstanco hasnt abierta) && (TrajeEVA has puesto) ){ give Estanco ~general; "La luz del panel parpadea una vez y cambia de color."; } else "La luz del panel parpadea dos veces y no cambia de color."; ], has masculino escenario; Object Mono "mono de traje EVA" Estanco with nombre_m 'mono' 'enganche' 'cuello', nombre_f 'manga' 'pierna', adjetivos 'traje' 'eva', descripcion [; print "Es el buzo de un traje EVA."; if (self hasnt visitado) { give self visitado; " Está hecho de un material de color gris, bastante desgastado por el uso. Tiene enganches y sellos en las mangas (con una ventana para ver el reloj), piernas y cuello para acoplar un casco, un par de guantes y un par de botas que...^^ ...^^ Joder, si parece que estuviera recitándole un manual a un novato...^ ¡¡He visto y usado trajes EVA hasta el hartazgo y ya sé como son!!^^ ...^^ Parece que estoy algo mosqueado..."; } else " Ya los conozco."; ], despues [; Vestir : "Me lo pongo con cuidado. Con esto no se juega..."; ] has masculino prenda; Object Casco "casco de traje EVA" Estanco with nombre_m 'casco' 'visor', nombre_f 'esfera', adjetivos 'traje' 'eva', descripcion [; print "Es el casco de un traje EVA."; if (self hasnt visitado) { give self visitado; " La esfera o visor del casco está hecho de un material transparente, en apariencia frágil pero increíblemente duro y resist...^^ ...^^ ¡¡Me cago en la hipnopedia de la compañía!!^ ¡¡Me niego a repetir la lección como un jodido loro!!^^ ...^^ Estoy acojonao, vaya..."; } else " Huele mal..."; ], antes [; Vestir : if (mono hasnt puesto) "No hay cómo ponérselo si no me pongo el mono primero..."; else { give self puesto; print "Los sellos están en buen estado y calzan bien... ¡Ya está!"; if ((Guantes has puesto) && (Botas has puesto)){ move TrajeEva to jugador; <>; }; rtrue; } ], has masculino prenda; Object Guantes "guantes de traje EVA" Estanco with nombre_mp 'guantes', adjetivos 'traje' 'eva', descripcion [; print "Son los guantes de un traje EVA."; if (self hasnt visitado) { give self visitado; " Las palmas y los dedos se adaptan al tamaño y grosor de cualquier mano y permiten manipular cosas no demasiado pequeñas. El material es resist...^^ ...^^ ¡¡Pero si parezco un técnico de la compañía!!^ ¡¡Basta de tanta estupidez sobre los implementos de trabajo!!^^ ...^^ Ya, me desquité un poco..."; } else " Me vienen a mano, jo..."; ], antes [; Vestir : if (mono hasnt puesto) "No hay cómo ponérselos si no me pongo el mono primero..."; else { give self puesto; print "Los sellos están en buen estado y calzan bien... ¡OK!"; if ((Casco has puesto) && (Botas has puesto)){ move TrajeEva to jugador; <>; }; rtrue; } ], has masculino nombreplural prenda; Object Botas "botas de traje EVA" Estanco with nombre_fp 'botas', adjetivos 'traje' 'eva', descripcion [; print "Son las botas de un traje EVA."; if (self hasnt visitado) { give self visitado; " Tienen un acolchado inteligente que se adaptan al tamaño de cualquier pie, derecho o izquierdo y sus suelas magnéticas permiten...^^ ...^^ ¡¡Como puedo discursear sobre un par de malditos zapatos!!^ ¡¡Me dan ganas de arrearlas a patadas!!^^ ...^^ Ya, las patearé cuando me los ponga..."; } else " No pesan demasiado, curiosamente..."; ], antes [; Vestir : if (mono hasnt puesto) "No hay cómo ponérselas si no me pongo el mono primero"; else { give self puesto; print "Los sellos están en buen estado y calzan bien... ¡Puestas!"; if ((Guantes has puesto) && (Casco has puesto)){ move TrajeEva to jugador; <>; }; rtrue; } ], has femenino nombreplural prenda; Object TrajeEVA "traje EVA" Limbo with nombre_m 'traje' 'mono', ! 'casco', nombre_mp 'guantes', nombre_fp 'botas', adjetivos 'eva', descripcion "Del manual: un traje para actividades fuera de la nave.", antes [; Oler : "Huele a oxígeno... a sudor...^^ La nave olía mejor por dentro, y ya es decir mucho..."; Dejar, Desvestir : if ((localizacion ofclass Localidad_Exterior) || ((localizacion == Estanco) & (Estanco hasnt general)) )"Ni de joda: me gusta la vida..."; else { give self ~puesto; move self to Limbo; move Mono to jugador; move Casco to jugador; move Guantes to jugador; move Botas to jugador; "Al soltar el primer componente, el traje EVA se despresuriza suavemente.^ Es un alivio, esto, que si no reviento como globo, con todo ese jaleo de gases.^ Mi profesor de termodinámica estaría taan orgulloso de mi vocabulario..."; } ], despues [; Vestir : give Mono ~puesto; give Casco ~puesto; give Guantes ~puesto; give Botas ~puesto; move Mono to Limbo; move Casco to Limbo; move Guantes to Limbo; move Botas to Limbo; "^Al sellar el ultimo componente, escucho un silbido de aire... y luego ya no oigo nada: el traje EVA se ha presurizado.^ Afortunadamente, el traje tiene un sistema bastante avanzado de reciclaje de aire, así que al menos no hay la joda esa de tanques de oxígeno y tal...^ ...pero, claro, solo produce oxígeno, y ventila algunos gases, mientras que otros...^ ...bueno, otros gases lo acompañan a uno.^ Moraleja: si va a usar un traje EVA, coma liviano..."; ], has masculino prenda; Object Compartimiento "compartimiento" Estanco with nombre_m 'compartimiento', nombre_f 'portilla', adjetivos 'pequeño' 'pequeña', describir [; if (self hasnt abierto) print "En la pared se ve una portilla"; else print "Hay un compartimiento abierto en la pared"; if (LineaEVA in Estanco) print ", con una línea EVA de seguridad colgando"; "."; ], descripcion [; if (self hasnt abierto) { print "Es una pequeña puerta, empotrada en la pared. Tiene algo escrito encima, en letras rojas. En su base hay un hueco semicircular"; if (LineaEVA in Estanco) print " por el que sale colgando la línea EVA de seguridad"; "."; } else { print "Es un compartimiento pequeño, de sección cuadrada, con una línea de seguridad para trajes EVA "; if (LineaEVA in self) "enrollada en su interior."; else "saliendo para afuera."; } ], antes [; Leer : <>; ], despues [; Abrir : print "Detrás de la portilla hay un pequeño compartimiento, con una línea de seguridad para trajes EVA "; if (LineaEVA in self) "enrollada en su interior."; else "saliendo para afuera."; ], has masculino estatico recipiente abrible ~abierto legible; Object AvisoCompartimiento "texto" Estanco with nombre_m 'texto' 'algo', nombre_f 'placa', nombre_fp 'letras', adjetivos 'plastica' 'rojas' 'pegada' 'grandes', descripcion "Es una placa plástica pegada sobre la portilla. Tiene algo escrito en letras rojas grandes.", antes [; Leer : print "En la portilla se lee:^^"; style bold; print "*LINEA DE SEGURIDAD*^ ¡CONECTE A TRAJE EVA!^^"; style roman; if (self hasnt general) { give self general; "(suspiro)^^ El día que pille a alguien saliendo de un estanco sin su línea conectada al traje EVA, lo empujaré PERSONALMENTE para que aprenda porqué con la seguridad no se juega... y con nuestras primas de seguro, tampoco."; } else "Hay que hacer caso..."; ], has masculino escenario legible; Object LineaEVA "línea de seguridad" Compartimiento with nombre_f 'linea', adjetivos 'seguridad', descripcion [; if (self hasnt visitado){ give self visitado; print "La línea es delgada y de un material liviano... pero es durísima y sumamente resistente.^ En los muelles, con 1g y tal, la usamos para levantar containers cuando andamos escazos de cable plástico.^ Nada como la cara de un Ejecutivo de la compañía cuando pasa bajo una tonelada sujeta con algo del color y grosor de una agujeta de zapatos finos...^"; }; if (self in Compartimiento) "La línea está enrollada dentro del compartimiento."; else if (self hasnt general) "La línea está colgando fuera del compartimiento."; else "La línea está colgando, conectada al mono del traje EVA."; ], reaccionar_antes [; Dejar : if (uno==self) { if (self has general) <>; else "No la tienes conectada aun."; } ], antes [; Tirar, Coger : "La línea de seguridad está fija en un extremo dentro del compartimiento y no hay como arrancarla o sacarla del todo. Por suerte..."; Sacar : move self to Estanco; "Desenrollas con cuidado la línea y la extiendes fuera del compartimiento."; Meter : if (self has general) "Conmigo conectado a ella no puedo..."; Atar, Encender : if ((otro==Mono)||(otro==TrajeEVA)||(otro==0)) { if (self in Compartimiento) "Hay que sacarla del compartimiento primero..."; else if (self has general) "Ya está conectada..."; else if ((Mono in Estanco)||(Mono in jugador)||(TrajeEVA in jugador)){ give self general; "Conectas la línea de seguridad al mono del traje EVA. Mejor así..."; } else "No consigo hacerlo..."; } Apagar, Desvestir: if (self has general){ give self ~general; move self to Compartimiento; print "Al desconectarla, la linea se ha enrollado sola.^ Vaya.^ Algo que funciona bien en esta nave."; if ((TrajeEva has puesto) || (mono has puesto)) print "^ Ya me podré mover con más libertad..."; return; } else "No está conectada a nada."; ], has femenino estatico oculto; DecoradoAmpliado Decorado_Estanco Estanco with describir 'barra' "Una gruesa barra metálica bien pulida, fija a un costado de cada compuerta" G_FEMENINO 'botones' "Son dos pequeños botones de forma alargada, ubicados bajo el panel. Tienen cada uno una etiqueta escrita: PRESURIZAR y DESPRESURIZAR." G_MASCULINO + G_PLURAL 'hueco' "Es un bajorrelieve semicircular, del diámetro aproximado de una línea de seguridad EVA." G_MASCULINO ; !----------------------------------[Camara]---------------------------------- Localidad_Nave Camara "La Cámara Criogénica" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "La cámara criogénica es un habitáculo oval con varias vainas de criosueño reposando una sobre otra... y poco más. Los espacios en un vagón o bote (perdón, un 'OTV') son estrechísimos, cuando no diminutos. Las vainas, por ejemplo, están unas encima de otras, en forma de triángulo... y la mía es la de más abajo (¿podía ser de otro modo?).^ La decoración de la Cámara (y del resto de la nave, ya que estamos) es del mismo estilo: liso y sin detalles, de color blanco lechoso tirando a gris.^ La Cámara tiene una temperatura más baja que el resto de la nave y, la verdad, tengo mucho frío... "; } else print "La cámara criogénica es un habitáculo oval blanco con varias vainas de criosueño reposando en triángulo una sobre otra... y la mía es la de más abajo (obvio). El lugar es muy pequeño y estrecho. Hace un frío de perros... "; "Al oeste hay una salida al pasillo de servicio. "; ], al_o Pasillo, ; ! Objetos en la Camara Object Vaina "vaina de criosueño" Camara with nombre_f 'vaina' 'cama', adjetivos 'criosueño' 'eliptica', descripcion [; print "Es una cama con forma elíptica, suavemente acolchada"; if (self hasnt visitado) { give self visitado; print ". Es, lejos, lo más cómodo de todo en este bote... Y ahora está abierta.^ Joder, qué pereza...^"; } else print "... y está abierta. "; if (AvisoVaina hasnt visitado) "Tiene un aviso justo a la vista."; else rtrue; ], ! reaccionar_antes[; ! Meter : "Mejor que no. Si contamino la vaina, me jodo después durante el crisoueño..."; ! ], antes [; Abrir : "Ya está abierta... por desgracia"; Entrar, Meterse : ! Solo con lo puesto if ( (TrajeEva in jugador)|| (Casco in jugador)|| (Mono in jugador)|| (Botas in jugador)|| (Guantes in jugador)|| (Pistola in jugador)|| (Alicate in jugador) ) "No puedo entrar con estos trastos encima..."; Cerrar : if (jugador in self){ if ( (Agujeros hasnt general)|| (Antena hasnt general)|| (CompuertaCabina hasnt general)|| (PanelNavegacion hasnt general)) "Lo intento, pero no pasa nada. Si se hechó a perder estoy frito..."; else { ! Final Feliz Exito.proyeccion(); banderafin = 2; rtrue; } } else "Solo puede cerrarse desde dentro..."; ], despues [; Entrar, Meterse : "Me tiendo con cuidado. Es tan cómoda..."; Salir, Salirse, Sacar: "Con un quejido, me levanto. Estoy molido..."; ], has femenino escenario entrable abrible abierto transparente; Object AvisoVaina "aviso" Camara with nombre_m 'aviso', nombre_f 'placa', adjetivos 'plastica', descripcion "Es una placa plástica pegada en un costado interno de la vaina. Tiene algo escrito en letras grandes.", antes[; Coger : "Ni aunque me quede sin uñas lo saco. Esta realmente fijo. No hay caso."; Consultar, Leer: style bold; print "ATENCION:^"; style roman; print "ESTE DISPOSITIVO DEBE SER USADO SOLO PARA FINES DE CRIOSUEÑO ESTANDO EL OTV EN TRANSITO.^^"; style bold; print "NO USAR ESTE DISPOSITIVO COMO:^"; style roman; print "LITERA^ REPOSERA^ HAMACA^ CAMA^ O PARA OTRAS ACTIVIDADES AJENAS AL CRIOSUEÑO.^^"; style bold; print "EL SISTEMA DE CRIOSUEÑO DE ESTE DISPOSITIVO NO SE ACTIVARA SI:^"; style roman; print "PORTA ARTICULOS DE TRABAJO^ EL OTV SUFRE UNA EMERGENCIA^ EL OTV ESTA ACOPLADO VIA MTDA^^"; style bold; print "REPORTE A LA COMPAÑIA SU USO INADECUADO^^ LA COMPAÑIA NO SE HACE RESPONSABLE POR DAÑOS CAUSADOS AL USUARIO SI NO SE SIGUEN ESTAS INDICACIONES."; style roman; if (self hasnt visitado) { give self visitado; "^^(suspiro)^^ La compañía, como un perro mojado, esparciendo alegría por todos lados..."; } rtrue; ], has masculino escenario legible; Object PanelCamara "panel de mensajes" Camara with describir [; print "Frente a mí, un panel de mensajes está encendido, "; if ( (Agujeros hasnt general)|| (Antena hasnt general)|| (CompuertaCabina hasnt general)|| (PanelNavegacion hasnt general)) "emanando una intensa luz roja."; else "emanando una suave luz verde."; ], nombre_m 'panel', adjetivos 'mensajes' 'LCD', descripcion [; print "Es un panel LCD de mensajes de texto. Está empotrado en la pared, puesto a una altura diseñada para ser visto al levantarse del criosueño."; if (self hasnt visitado){; give self visitado; "^^La compañía es así de simpática; no pueden tolerar la idea de que tú despiertes y no te pongas a trabajar de inmediato... así que lo primero que ves al despertar es tu lista de asignaciones para el día o algo por el estilo.^^ Para terminar de despertar del criosueño, es tan estimulante..."; } else " Si no tuviera que leerlo, sería comodísimo. Siempre tiene material de lectura para despertar a cualquiera..."; ], antes [; Consultar, Leer: print "En la pantalla del panel"; ! Chequeo de puzzles críticos del juego if ( (Agujeros hasnt general)|| (Antena hasnt general)|| (CompuertaCabina hasnt general)|| (PanelNavegacion hasnt general)){; print " en fondo rojo y letras amarillas (la compañía siempre pensando en nuestro bienestar psicológico) se lee el siguiente mensaje:^^"; style bold; print "*** EMERGENCIA *** EMERGENCIA ***^^"; ! Reparación de Fuselaje Externo if (Agujeros hasnt general) print "Integridad de fuselaje comprometida.^^"; ! Presurización de Cabina if (CompuertaCabina hasnt general) print "Falla de presión en Cabina de Mando.^^"; ! Reparación de Antena if (Antena hasnt general) print "Interrupción de enlace de comunicaciones^ con Satélite de Extracción Mineral SM-26.^^"; ! Reactivación de Sistemas de Navegación if (PanelNavegacion hasnt general) print "Nave OTV-44 fuera de curso.^^"; ! Indicador de Actividad EVA if ( (Antena hasnt general)||(Agujeros hasnt general)) print "*** ACTIVIDAD EVA REQUERIDA ***^^"; print "*** REPARAR SISTEMAS URGENTE ***^^ Punto de no retorno en:^^"; style roman; give jugador general; <>; } else {print " en fondo verde y letras blancas (¡por fin un poco de calma!) se lee el siguiente mensaje:^^"; style bold; print "*** SISTEMAS EN ESTADO NOMINAL ***^^"; print "> RETORNO A CRIOSUEÑO HABILITADO <"; style roman; rtrue; }; ], has masculino estatico legible; DecoradoAmpliado Decorado_Camara Camara with describir 'triangulo' "La típica configuración de la cámara criogénica de un OTV: dos vainas arriba y una abajo en medio. Se entra y se sale de a uno." G_MASCULINO 'compañeros' "Jamás les había visto y como no les conozco no quiero saber nada de ellos." G_MASCULINO + G_PLURAL 'vainas' "Las vainas de mis compañeros de viaje son como la mía, con forma elíptica y una cubierta transparente... cerrada: las de ellos, al menos siguen funcionando.^ No sé quiénes son, pero en este momento los envidio mucho.^ Bueno, no ha de ser tan grave el problema, si sólo me despertaron a mí.^ Seguro..." G_FEMENINO + G_PLURAL ; !----------------------------------[Acople]---------------------------------- Localidad_Nave Acople "El Acople" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Este es uno de los lugares más espaciosos de este bote... o sea, que no estás a codazos si te mueves o caminas un poco; ocupa toda la parte trasera del bote, y es lo bastante profunda como para que entren ¡12! tíos de 3 en fondo. No puede ser de otra forma, porque un MTDA estrecho es un oximorón que conduce al desastre.^ El entender este precepto de seguridad a la compañía le costó: dos OTVs, una Estación de Abastecimiento... y una montaña de dinero en indemnizaciones, porque el accidente fue demasiado visible para taparlo en prensa; ocurrió durante la inauguración (¡jah! y casi fue la clausura) de la colmena... televisada por la propia compañía.^ Fue un mal día para la compañía (los Ejecutivos despedidos entonces lo expresaban de otra manera, je), pero al menos los expertos en seguridad de nuestros sindicatos plantaron pie firme y desde entonces se les hace caso.^ Casi siempre...^ Aquí embarcamos y desembarcamos cualquier otra cosa que quiera llevarse como carga (digo, además de los pasajeros). "; } else print "Al final del pasillo de servicio está el acople, para conectar la nave a otras naves o a estaciones espaciales: es la zona habitual de carga y descarga. "; "Al norte se puede volver al pasillo de servicio."; ], al_n Pasillo, ; !----------------------------------[ExtCabina]---------------------------------- Localidad_Exterior ExtCabina "El Exterior de la Cabina" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Estoy sobre la cabina de la nave... y la verdad que es pequeña.^ Digo, la nave.^ No, la cabina también es pequeña.^ Supongo que estoy algo cansado, porque estoy mirando el fuselaje como alelado... y ahora me he puesto a decir versos sin esfuer..."; } else print "Estoy sobre la cabina de la nave, mirando el fuselaje como un estúpido. "; "Puedo volver al estanco si sigo al sur. "; ], al_s ExtTaller ; !Objetos del Exterior de la Cabina Object Agujeros "agujeros de meteorito" ExtCabina with nombre_mp 'agujeros' 'hoyos' 'orificios' 'forados', adjetivos 'meteoritos', describir [; print "Sobre el fuselaje de la nave, veo unos agujeros de meteoritos, justo sobre la cabina. Los agujeros están "; if (self hasnt general) "agrupados muy cerca unos de otros."; else "sellados con pasta congelada."; ], descripcion [; print "Los agujeros son de forma irregular, con bordes doblados hacia adentro y muy pequeños. Estan muy cerca unos de otros, como si hubieran acribillado el fuselaje. "; if (self hasnt general) "Si no sello esto, el casco se debilitará completamente y no habrá forma de presurizar la cabina para entrar."; else "Han quedado perfectamente sellados con la pasta. Da miedo pensar de que estará hecha esa cosa..."; ], reaccionar_antes [; Cerrar, Llenar : <>; ! if (otro==0) ! <>; ! else ! <>; ], antes [; Arreglar, Sellar : if (self hasnt general){ if (otro==0) "Voy a necesitar algo con que sellarlos."; else if (otro==Pistola){ <>; } else "No veo como diablos sellarlos con ", (el) otro, ". No creo que esa sea la herramienta adecuada..."; } else "¿Para qué, si ya están bien sellados?^ Nones..."; ! VaciarEn : ! if (self hasnt general) { ! if (uno~=pistola) ! "Son demasiado pequeños para que quepa..."; ! else <>; ! } else "Ya están llenos de pasta congelada."; ! Meter : "Son demasiado pequeños para que quepa..."; ], has masculino nombreplural estatico;! recipiente abierto; DecoradoAmpliado Decorado_Agujeros Limbo with describir 'pasta' "La pasta cubre perfectamente los agujeros y se ha solidificado por completo.^ Un buen sellante, pero me cortó mi apetito." G_FEMENINO ; !----------------------------------[ExtTaller]---------------------------------- Localidad_Exterior ExtTaller "El Exterior de la Nave" with descripcion[; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Estoy rodeado por el negro vacío del espacio, con el infinito en todas las dir...^ Al diablo con toda esa retórica de libreto tipo 2001 (buena peli, pa ser tan vieja): esto de desplazarse en el espacio es incómodo y de un aburrido enervante porque, salvo un poco de ruido del traje EVA, no oigo nada, y si no fuera por el fuselaje y el reflejo de las escazas luces de la nave, no vería un carajo...^ ¿¡Y encima, queréis poesía?!^"; } else print "Estoy rodeado por... bueno, poco y nada, cerca del fuselaje delantero de la nave. "; "La cabina de la nave está al norte y el estanco al sur."; ], al_n ExtCabina, al_s ExtEstanco ; Object Antena "antena de comunicaciones" ExtTaller with nombre_f 'antena', nombre_mp 'filamentos', adjetivos 'comunicaciones' 'cortos' 'delgados', describir [; print "Sobre el fuselaje de la nave, veo la antena de comunicaciones. La antena está "; if (self hasnt general) "doblada y torcida."; else "recta y en buen estado."; ], descripcion [; print "La antena, montada sobre un plato elíptico, consiste en unos filamentos cortos y delgados "; if (self hasnt general) ", doblados por los impactos. No sé como no se han roto... pero si no los reparo las comunicaciones seguirán interrumpidas y ni hablar de corregir el rumbo."; else ", ahora razonablemente rectos. Este alicate es una maravilla..."; ], antes [; Arreglar, Enderezar, Fijar, Girar, Retorcer: if (self hasnt general){ if (otro==0) "¿Con qué, las manos?..."; else if (otro==Alicate){ give self general; "Con mucho cuidado, usando el alicate con extrema delicadeza (y vaya si es difícil, con estos guantes), voy enderezando los filamentos de la antena, hasta que quedan razonablemente rectos y sin dobleces.^ No sé si ya lo he dicho antes, pero esta herramienta es estupenda..."; } else "Me pongo verde intentándolo: cada vez que me acerco con ", (el) otro, " temo que voy a desarmar la antena.^ No creo que esa sea la herramienta adecuada..."; } else "¿Para qué, si ya está bien?^ Mira si por querer dejarlo mejor, lo termino de desbaratar...^ Nones..."; ] has femenino estatico; !----------------------------------[ExtEstanco]---------------------------------- Localidad_Exterior ExtEstanco "El Exterior del Estanco" with descripcion [; if (LineaEVA hasnt general){ ! Muerte por deriva sin línea de seguridad SalirSinLineaEVA.proyeccion(); banderafin = 3; rtrue; } else if (Decorado_Exterior hasnt visitado){ give Decorado_Exterior visitado; PrimerVistazoNave.proyeccion(); if (jugador hasnt general) { give jugador general; give reloj general; PrimeraLecturaPanel.proyeccion(); print "^^Puedo empezar a evaluar daños externos, ya que estoy aquí...^^"; <>; } rtrue; } else if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Estoy a la salida del estanco... y un poco temeroso, las verdad.^ No importa cuantas veces lo haya hecho, no importan todas las medidas de seguridad, el entrenamiento y mi considerable (al diablo la modestia) experiencia como Espacial, siempre siento inquietud al dejar un estanco y meterme en este lío de la actividad EVA.^ ¿Será mi sentido común?^"; } else print "Estoy a la salida del estanco, con ganas de estar de vuelta en mi vaina de criosueño. "; "Puedo llegar al extremo de la nave al sur o remontar el resto de la nave al norte."; ], al_n ExtTaller, al_s ExtAcople, al_e CompuertaExternaEstanco ; !----------------------------------[ExtAcople]---------------------------------- Localidad_Exterior ExtAcople "El Exterior del Acople" with descripcion [; if ((self hasnt visitado)||(accion==##Mirar)) { give self visitado; print "Bueno, he llegado al final... de la nave. Y del alcance de la línea de seguridad, que (casualmente) es la misma cosa.^ Será el criosueño o los años, pero la verdad es que estoy más bien cansado... y apenas me he movido algunos metros.^ Bueno, no se ve nada malo por aquí: un gran punto a mi favor.^"; } else print "Estoy cerca del acople de la nave... sin nada que reportar. Afortunadamente. "; "Puedo volver al estanco hacia el norte."; ], al_n ExtEstanco ; !------------------------------------------------------------------- ! 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; ! Modo "verbose", descripciones siempre largas modomirar = 2; box "~Goteras~" "Un Relato de Sci-Fi ~Duro~ Breve " "Realizado por: Sebastián Armas (Incanus)" "(C) Año 2006 " "Release 01.01.02" "I para NO VER la Intro," "R para Recuperar una Partida" "Otra para Empezar"; ! Se inicializan conexiones para Puertas InicializarConexiones(); ! Vestir al jugador y efectos personales cambiarJugador(miJugador); move Ropa to jugador; move Reloj to jugador; ! Localización donde comienza el jugador localizacion=Vaina; @read_char 1 -> tecla; if ( (tecla=='i') || (tecla=='I') ) { print ""; } else if ( (tecla=='r') || (tecla=='R') ) <>; else { Introduccion1.proyeccion(); PrintPausa("",0); Introduccion2.proyeccion(); PrintPausa("",0); Introduccion3.proyeccion(); PrintPausa("",0); Introduccion4.proyeccion(); PrintPausa("",0); Introduccion5.proyeccion(); PrintPausa("",0); Introduccion6.proyeccion(); PrintPausa("",0); Introduccion7.proyeccion(); PrintPausa("",0); Introduccion8.proyeccion(); PrintPausa("",0); } ! Iniciar ambientador universal ArrancarDaemon(ambientador_universal); ]; ! Objeto Ambientador ! Genera texto aleatorio según clase de localidad Object ambientador_universal "FX" Limbo with daemon [n; !para dispersar un poco la sucesión de eventos if (random(10)>4) rtrue; if (localizacion ofclass Localidad_Exterior){ n=random(6)-1; !para asegurar que salga entre 0 y 5 if (matriz_ext->n==1) rtrue; matriz_ext->n=1; switch (n){ 1: "^Algo huele mal dentro del traje... Sip: soy yo."; 2: "^Tengo ganas de rascarme... pero qué ganas tengo..."; 3: "^Se me ha empañado el visor del casco.^ Calma. Respira más despacio...^ Ya está. Ya veo bien."; 4: "^Miro las estrellas unos momentos... nada, no me inspiro."; 5: "^Miro el exterior de la nave unos momentos... no hay caso, es fea."; 6: "^De pronto, veo un objeto luminoso a los lejos, avanzando lentamente. Parpadea un instante, acelera y desaparece de mi campo visual en segundos.^ Espero que la compañía no me haga demasiadas preguntas sobre esto luego..."; } } else { n=random(6)-1; !para asegurar que salga entre 0 y 5 if (matriz_int->n==1) rtrue; matriz_int->n=1; switch (n){ 1: "^Me pregunto quién fue el mamón que programó esta misión... ^Como lo averigüe, le infectaré sus datos personales con el peor virus que encuentre..."; 2: "^Tengo unas ganas de comer comida italiana... o una italiana, también ¿por qué no?"; 3: "^¿Habré dejado encendido el soplete en el muelle antes embarcar?... Fue todo tan precipitado..."; 4: "^Voy a poner una queja en el sindicato por esto... y mandar una carta a Papá Noel ¿por qué no?"; 5: "^Miro el interior de la nave unos momentos... no hay caso, es fea."; 6: "^De pronto, veo un objeto luminoso, como una esfera pálida, con un núcleo pulsante de color rojo, materializarse frente a mí.^ Avanza lentamente en mi dirección... acercándose... Cuando lo tengo casi a la mano, extiende un pseudópodo de luz, me toca... y desaparece.^^ Joder, los chequeos médicos de la compañía son infartantes..."; } } ]; cortometraje Introduccion1 with descripcion [; style bold; printAutoPausa( "GOTERAS^^"); style roman; printAutoPausa( "Es un hermoso atardecer...^^"); printAutoPausa( "El viento pasa suavemente entre el follaje de las palmeras, mientras el mar me refresca y el rumor de las olas me arrulla.^^"); printAutoPausa( "Cerca mío, la fogata arde con llamas multicolores...^^"); printAutoPausa( "rojo...^"); printAutoPausa( "verde...^"); printAutoPausa( "amarillo...^^"); printAutoPausa( "El pescado que se asa al palo huele delicioso y estiro mi mano para prob"); style bold; printAutoPausa( "[CAMBIO]"); style roman; ] ; cortometraje Introduccion2 with descripcion [; printAutoPausa( "El denso follaje me rodea por completo, verde y húmedo.^^"); printAutoPausa( "No hace cinco minutos el aguacero caía a baldes pero ahora el calor es casi insoportable.^^"); printAutoPausa( "Casi...^^"); printAutoPausa( "Sé que el animal anda cerca, más peligroso que antes precisamente por que está herido.^"); printAutoPausa( "Pero debo cazarle.^"); printAutoPausa( "No puedo volver a la aldea con las manos vacías otra vez...^^"); printAutoPausa( "Escucho un ruido a la izquierda y aferro mi lanza con fuerza, disp"); style bold; printAutoPausa( "[CAMBIO]"); style roman; ] ; cortometraje Introduccion3 with descripcion [; printAutoPausa( "Extiendo mis alas membranosas y me arrojo del risco... y vuelo.^^"); printAutoPausa( "Cruzo las gigantescas nubes, verdes y violeta bajo el gigantesco sol azul.^^"); printAutoPausa( "De pronto, lo veo a la distancia:^"); printAutoPausa( "Otro dragón de un color y olor distinto al mío. Una presa, un rival... o una pareja.^"); printAutoPausa( "Aún no lo sé... pero no puedo aceptar su presencia en mi coto de vuelo sin enfrentarle.^^"); printAutoPausa( "Lanzo un poderoso rugido y exalo mi aliento de veneno fosforescente para llamar su atención.^^"); printAutoPausa( "Ahí viene: pronto nos enfrentaremos y pod"); style bold; printAutoPausa( "[CAMBIO]"); style roman; ] ; cortometraje Introduccion4 with descripcion "Vaya.^^" "Ese tío no mentía cuando decía que este disco de Realidad Virtual era de lo mejor.^^" "Bien... creo que voy a ver unas 15 simulaciones más antes de escoger una lista.^" "No sé como diablos se las arregla el reproductor para integrarlas y que no parezcan un sueño (o una pesadilla) una vez que se inicia la secuencia... se siente muy real cuando uno está metido en medio de todo.^^" "Esta vez, veré todas las que quiera: el algoritmo de compresión de tiempo funciona muy bien, y apenas se siente algo de perdida sensorial...^^" "Es definitivamente mejor que la 'hipnopedia en viaje' de la compañía, que igual sigue ahí...^^" "...en algún lugar de mi subconsciente...^^" "En fin. Prefiero un guión bien hecho a mis sueños.^" "...en esos nunca encuentro mucho descanso." ; cortometraje Introduccion5 with descripcion "Esta vez, me tocó ir a la Roca del Curro: la compañía le llama el 'Satélite de Extracción Mineral SM-26'. Está entre Marte y Júpiter, y salimos de Deimos hace un par de días.^" "Voy a bordo de un vagón ('el OTV-44') al vuelo ('con impulso inercial'), dormido en criosueño con dos colegas más, porque la compañía prefiere ahorrar ('no gastar en soporte vital innecesario') durante el viaje de dos semanas.^^" "La compañía insiste en que nos refiramos a las cosas en lenguaje técnico u oficial, pero no importa... los compañeros llamamos a las cosas por su nombre.^^" "A fin de cuentas somos obreros, no el maldito Departamento de Marketing y Relaciones Púb(l)icas.^^" "Obreros... o abejas: la compañía intenta venderte el oro y el moro para que firmes con ellos, pero una vez que firmaste se acaban las mieles: te ensardinan en un transbordador rumbo a la colmena (la 'Estación Espacial Alfa' de la compañía) y a uno le tratan como ganado de ahí en adelante.^" ; cortometraje Introduccion6 with descripcion "Llevo más de dos años trabajando para la compañía como Ingeniero de Mantenimiento... sin ningún regreso a Tierra o 'vacaciones' criogénicas; esto, voluntariamente, ya que así accedo a 'mejores instalaciones', o sea:^^" "Un cuarto para dormir con tres tíos, en vez de decenas unos encima de otros...^" "Vegetales una vez a la semana, en vez de pastillas con suplementos vitamínicos...^" "Fruta una vez al mes, en vez de calugitas blandas de postre todo el tiempo...^" "Y a veces, la posibilidad (no oficial, pero me lo permiten) de compartir mi cuarto en forma exclusiva con alguien más... en vez de inyecciones y píldoras para el ánimo.^^" "La vida en el espacio, a fines del siglo XXI, es parecida a la tierra a fines del XIX... incluyendo la industrialización (ahora, el espacio) y la contaminación incipiente de un ambiente hasta ahora impoluto (de nuevo, el espacio).^" ; cortometraje Introduccion7 with descripcion "Yo soy uno más de tantos tipos (y tipas, por suerte) que trabajan en la Nueva Frontera... como le gusta llamar a la compañía a esta insania de trabajar con los pies puestos en otro lugar que la Tierra.^" "El Espacio, incluyendo estaciones, naves y bases extraplanetarias, es el ambiente de trabajo más peligroso que el hombre ha conocido...^^" "...después del mar: no envidio a los pobres Subacuáticos, siempre con toneladas de agua encima, siempre con riesgo circulatorio, boqueando como peces abisales el escazo aire de sus tanques...^" "Ninguno de ellos se ha jubilado con vida.^^" "Yo, y la mayoría de los Espaciales, queremos conseguirlo." ; cortometraje Introduccion8 with descripcion "¡Ay!^^" "Ese pinchazo me es familiar: la cámara me está despertando del criosueño...^" "...y yo no quiero. ¡Me niego!^^" "¡Ay!^^" "Es inútil resistir, sobre todo porque mi cámara de criosueño ya se abre, y el aire frío me muerde la piel. Ya sé que es inútil calefaccionarlo, no lo sentiría apenas en este estado... pero, de veras, despertar del criosueño es como salir de un lago helado, apenas vestido (como lo estoy) con unos shorts y una camiseta.^^" "Dormir en cambio, es un arrullo delicioso... que no volveré a disfrutar por varios meses, una vez que llegue a destino y me haga cargo de mi asignación actual, y -^^" "Un momento.^^" "Según mi reloj son casi las una de la madrugada, tiempo de destino... pero no estoy seguro. La compañía jamás hace arribar a destino salvo a primera hora (¿para qué ajustar horarios o tener turnos extra en los muelles?) ni menos lo despierta a uno a mitad de noche...^^" "Salvo para Horas Extraordinarias o Emergencias.^^" "(suspiro)^" "Las Horas Extraordinarias tienen un salario casi justo y las Emergencias pagan realmente bien... pero de veras que espero que sólo sean Horas Extra.^^" "Estoy demasiado somnoliento para otra cosa...^^" ; cortometraje PrimeraLecturaPanel with descripcion "^^^Mierda.^^" "Joder, eso explica todo, incluyendo el despertar antes de tiempo.^^" "Y me despertaron a mí, por supuesto.^" "El Único Ingeniero de Mantenimiento a Bordo...^^" "Despertaron al Maldito Conserje a Mano, claro...^^" "Como dijo una computadora asesina, esto es altamente irregular...^^" "Tengo poco tiempo... y varios daños que detectar y reparar." ; cortometraje PrimerVistazoNave with descripcion "Al salir del estanco me giro un poco y contemplo este bote espacial...^ La nave es el típico OTV usado por la compañía: un módulo usiforme, oblongo, con retrocohetes esparcidos aquí y allá, de color gris sucio (alguna vez fue blanco), con varias marcas de golpes y uso...^^" "...^^" "Pero... espera... esas marcas son demasiado alargadas... y siguen todas una misma dirección...^^" "¡Dios Mio!^" "La nave ha pasado por una lluvia de micrometeoritos...^^" "...y estamos vivos de milagro, pero la nave ha de estar terriblemente dañada...^" ; cortometraje LlenandoGoteras with descripcion "El chorro de pasta ha dado de lleno en los agujeros, cubriéndolos y sellándolos en forma instantánea.^" "¿¡Y esta pasta es comestible?!^^" "Mientras veo como la pasta se hace sólida, de pronto me encuentro pensando en todo lo que ha tenido que ocurrir en la historia del hombre para que yo llegue a este lugar: desde las cavernas al espacio...^^" "Y pienso en mi vida...^" "Mis amigos... mis amantes...^" "Mis arduos estudios... todo mi trabajo...^" "Todas las que cosas que he hecho, buenas y malas...^^" "Y aquí estoy:^" "Un conserje hiper tecnificado, en medio del espacio, reparando unas goteras...^^" "No sé si reir o llorar..." ; cortometraje SalirSinLineaEVA with descripcion "Al momento de apoyarme un poco en la nave, siento que estoy echando de menos algo...^^" "...pero ya es muy tarde: las botas magnéticas no funcionan del todo y, desconectado del estanco, sin línea de seguridad a la que asirme, la inercia de mi propia masa, combinada con la de la nave, me alejan rápidamente de ella...^^" "...cada vez más y más, por más que aleteo como un loco.^^" "Bueno... acabo de costarle a la compañía las indemnizaciones de uno o probablemente tres técnicos, el costo (posiblemente) de un OTV y de paso, me acabo de suicidar (seguro) de la manera más estúpida posible, como un maldito novato.^^" "En realidad, aun no.^" "Tengo oxígeno para aguantar todo lo que mi cuerpo soporte sin líquidos o lo que mi mente aguante... que no será mucho tiempo más.^^" "Podría usar las siguientes 48 horas para pensar en mi vida, lo que debí hacer o decir...^" "O las cosas que no debí hacer o decir...^^" "O para contemplar este universo:^" "frío^" "hinóspito^" "luminoso de estrellas...^^^" "... pero, mientras suelto los sellos de mi casco, me termino de convencer de que, en realidad, nunca hubiera servido para:^" "astrónomo (click...)^" "filósofo (click...)^" "monje (click...)^" "o de..." ; cortometraje DejarHerramientaEnEspacio with descripcion "Al momento de soltar mi herramienta, recuerdo algo de pronto...^^" "...pero ya es muy tarde: la inercia de la herramienta, combinada con la de la nave, la alejan rápidamente de ella...^^" "...cada vez más y más; por más que aleteo como un loco, el alcance de la línea de seguridad es limitado, y ya no hay como recuperarla... o sustituirla. La dotación de un OTV está calculada hasta el último gramo (el combustible de frenado es caro) y no hay lugar para errores como el que acabo de cometer.^^" "Bueno... acabo de costarle a la compañía las indemnizaciones de uno o probablemente tres técnicos, el costo (posiblemente) de un OTV y de paso, me acabo de suicidar (eventualmente) de la manera más estúpida posible, como un maldito novato.^^" "En realidad, aun no.^" "Tengo tiempo para buscar una forma creativa o indolora de morir.^^" "Seguro en el taller puedo montar algo más estúpido, divertido y espectacular..." ; cortometraje TimeOut with descripcion "De pronto, un resplandor parpadeante surge de mi muñeca... y miro mi reloj, que se ha detenido en 00:00:00...^^" "La hora pasó rápido y la he malgastado como un imbécil, haciendo esto y lo otro, menos lo que tenía que hacer.^" "Mi profesor de Maniobras EVA debe estar revolcándose en su tumba ahora, para no hablar del instructor de Emergencias en OTVs... pero no pueden, ni por asomo, estar tan decepcionados conmigo como lo estoy ahora.^^" "Bueno, tengo tiempo para buscar una forma creativa o indolora de morir.^^" "Seguro en el taller puedo montar algo divertido y espectacular..." ; cortometraje Exito with descripcion "Al momento de cerrar la vaina de criosueño, siento un ligero pinchazo en la nuca... y pronto, al contrario del despertar, siento un agradable y tibio calor que me recorre...^^" "lentamente...^^" "Y el sueño me gana suavemente... aunque la inconciencia aun no.^" "Eso tiene el criosueño: uno puede optar por soñar oníricamente durante todo el viaje o descansar la mente de otras maneras.^^" "Yo ya tengo planeado un mes de vacaciones en la playa y, si no me hastío a las primeras dos semanas, nada, que aumento el algoritmo de compresión y prolongo la estadía más aun.^" "Además, puedo tomar una de esas excursiones de cacería a la selva, volar como un dragón o meterme en un harem árabe por un par de días, que pa eso me busqué un buen disco de Realidad Virtual...^^" "No sé realmente cuánto gané por este trabajito de Emergencia, pero, como dijo un colega menos afortunado que yo, lo primero que voy a hacer al llegar a destino será comer una comida decente...^^" "Y esta vez, paga la compañía." ; ! 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_Menu3); @erase_window $ffff; JugadorA(localizacion); ]; ! Definiciones para lectura [ LeerSub; <>; ]; Extend 'lee' first * legible -> Leer; !Definiciones para Antena y Agujeros [arreglarSub; print (el) uno, " está en buen estado de reparación y no necesita arreglo.^ Por suerte...^"; ]; Verb 'arregla' * noun -> arreglar * noun 'con' held -> arreglar; Verb 'repara' * noun -> arreglar * noun 'con' held -> arreglar; !Definiciones para Antena [enderezarSub; print (el) uno, " está en buen estado.^ ¿Para qué hechar eso a perder con movimientos raros?...^"; ]; Verb 'endereza' * noun -> enderezar * noun 'con' held -> enderezar; !Definiciones para Agujeros [sellarSub; print (el) uno, " está sin pérdidas aparentes.^ ¿Para qué hechar voy a meterle porquerías?...^"; ]; Verb 'sella' * noun -> sellar * noun 'con' held -> sellar; !Definiciones para Pistola Sellante ! Definiciones para Llenar Pistola Sellante Extend 'llena' * held 'con' noun -> Llenar; Verb 'carga' * held -> Llenar * held 'con' noun -> Llenar; ! Definiciones para Disparar Pistola Sellante Verb 'dispara' * -> disparar * noun -> dispararObj * noun 'con' held -> dispararA * 'a//'/'hacia'/'cerca' noun -> dispararA * 'a//'/'hacia'/'cerca' noun 'con' held -> dispararA * held 'a//'/'hacia'/'cerca' noun -> dispararA reverse * 'con' held 'a//'/'hacia'/'cerca' noun -> dispararA reverse; [ dispararObjSub ; if (uno~=Pistola) "Con ", (el) uno, " no se puede disparar."; else <>; ]; [ dispararSub; if (Pistola notin jugador) "No tienes nada con que disparar."; else <>; ]; [ dispararASub ; if (otro~=0) { if (otro~=Pistola) "Con ", (el) otro, " no se puede disparar."; } if (Pistola notin jugador) "No tienes nada con que disparar."; else <>; ]; ! Definiciones para Usar Alicate con Antena Extend 'fija' * noun 'con' held -> Fijar; Extend 'gira' * noun 'con' held -> Girar; Extend 'retuerce' * noun 'con' held -> Retorcer; ! Definiciones para el Panel de Navegación [TeclearSub; "No hay nada tecleable por aquí"; ]; Verb 'teclea' * -> teclear * noun -> teclear * topic -> teclear; Verb 'ingresa' * -> teclear * noun -> teclear * topic -> teclear; Verb 'digita' * -> teclear * noun -> teclear * topic -> teclear; ! Para funcionamiento del Reloj [ KeyboardPrimitive b p k; b ->1=0; !esto es un salvavidas, no preguntes :-) p ->1=0; !Idem que el anterior @aread b p 10 tiempo ->k; !la sentencia anterior lee un input del teclado, !llamando a la función "tiempo" cada 10 décimas !de segundo, o sea, un segundo 8) ]; [imprime_hora x y; x=reloj.segundos/3600; y=reloj.segundos%3600; if (x<10) print "0"; print x,":"; x=y/60; y=y%60; if (x<10) print "0"; print x,":"; if (y<10) print "0"; print y; ]; [ tiempo; !un contador bastante burdo de segundos !Puedes hacer que la rutina retorne sin actualizar !los valores si se da alguna condición, en cuyo caso, recuerda !volver con rfalse (¡es importante!) ! Chequeo de puzzles críticos del juego if ( (Agujeros hasnt general)|| (Antena hasnt general)|| (CompuertaCabina hasnt general)|| (PanelNavegacion hasnt general)) reloj.segundos --; ! Fin del Juego por Time Out if (reloj.segundos==0) { TimeOut.proyeccion(); banderafin = 3; } !el rfalse es vital, prueba a quitarlo y verás rfalse; ];