-
Notifications
You must be signed in to change notification settings - Fork 4
Hablar con personajes
Baltasar García Perez-Schofield edited this page Sep 6, 2018
·
1 revision
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í... 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;
}