Skip to content

Hablar con personajes

Baltasar García Perez-Schofield edited this page Sep 6, 2018 · 1 revision

Interactuando con personajes

La forma más habitual de interactuar con otros personajes es hablando con ellos. Hay una acción talk (solo aplicable a personajes, no a objetos), y por tanto, si nuestro personaje tiene un método preTalk(), este será llamado cuando se intente hablar con este. Los personajes tienen los métodos di()/say() que pemite que aquello que queramos que diga el personaje, aparezca como <nombre>: <mensaje>. Por ejemplo, en el caso más abajo, el mensaje "necesito agua", llamado mediante pnjNaufrago.di( "necesito agua" ), aparecería ante el jugador como:

> habla con el naufrago
Náufrago: necesito agua.

El siguiente ejemplo está tomado de la aventura Montecristo.

pnjNaufrago.status = 0;
pnjNaufrago.preTalk = function() {
     var toret = "";
     var jugador = ctrl.personas.devJugador();

     if ( this.status == 0 ) {
          this.di( "Oh..." );
          ctrl.print( "Parece débil, y está claramente deshidratado." );
          jugador.di( "Oiga, oiga... me llamo Edmundo..." );
          this.di( "Agua..." );
          toret = "El hombre se desvanece.";
          ++this.status;
     }
     else
     if ( this.status == 1 ) {
          ctrl.print( "Espabilas al hombre, con unas palmadas en la cara." );
          this.di( "Agua..." );
          toret = "No parece haber mucho más que hacer...";
     }
     else
     if ( this.status == 2 ) {
          this.di( "Necesito un bote para volver a la civilización." );
          jugador.di( "Valerio, puedes tomar el mío, en la playa cerca \
                       de aquí. Por todo pago, sólo te pido que me ayudes \
                       a encontrar la cueva en las entrañas de esta isla. \
                       Y también... que vuelvas a buscarme dentro de dos \
                       días." );
          this.di( "Oh, s&iacute;... Está al sur de la playa... no tiene pérdida." );
          ctrl.print( "Valerio corre hacia el bote, y lo empuja en el agua." );
          this.di( "¡Volveré!" );
          toret = "El hombre rema mar adentro...";
          locPlaya.modificaDesc();
          locAntesala.ponSalidaBi( "norte", locPlaya );
          objBote.moveTo( ctrl.lugares.limbo );
          this.moveTo( ctrl.lugares.limbo );
          ctrl.lugares.updateDesc();
     }

     return toret;
}
Clone this wiki locally