-
Notifications
You must be signed in to change notification settings - Fork 4
Movimientos
Baltasar García Perez-Schofield edited this page May 5, 2023
·
2 revisions
Los movimientos en fi.js se realizan exclusivamente a través de la acción Go (ir). asociándose las direcciones de la siguiente manera:
- norte: ir [al] norte
- sur: ir [al] sur
- este: ir [al] este
- oeste: ir [al] oeste
- arriba/subir: ir arriba
- abajo/bajar: ir abajo
La única excepción son entrar y salir. Los movimientos los controla la localidad donde se producen. Así, con capturar la acción Go, en la localidad del juego en cuestión, es suficiente. Por ejemplo, con el siguiente código se controla el paso en una dirección, según la puerta esté abierta o no.
var locCasa = ctrl.creaLoc( "casa",
[ "sala", "habitacion", "planta" ],
"El interior de una casa de una sola planta. Una puerta permite salir al exterior."
);
locCasa.preGo = function() {
var s = parser.sentencia;
var dest = locCasa.devSalida( s.term1 );
var toret = "No puedes ir por ahí.";
if( dest !== null ) {
if ( objPuerta.estaAbierto() ) {
ctrl.goto( locExterior );
toret = "Has abierto la puerta hacia la libertad.";
} else {
toret = "No puedes, la puerta está cerrada.";
}
}
return toret;
}
var objLlave = ctrl.creaObj( "llave",
[],
"Pues sí, es una llave.",
locCasa, Ent.Portable
);
var objPuerta = ctrl.creaObj( "puerta",
[],
"Pues sí, es una puerta.",
locCasa, Ent.Escenario
);
objPuerta.ponAbierto( false );
objPuerta.preOpen = function() {
var jugador = ctrl.personas.devJugador();
var toret = "Necesitas algo para abrirla.";
if ( !objPuerta.estaAbierto() ) {
if( jugador.tiene( objLlave ) ) {
toret = "Has abierto la puerta.";
objPuerta.ponAbierto();
}
} else {
toret = "Ya estaba abierta.";
}
return toret;
}
objLlave.preDrop = function() {
var s = parser.sentencia;
if ( s.obj2 === objPuerta ) {
toret = acciones.ejecuta( "abre", "puerta" );
} else {
toret = acciones.devAccion( "drop" ).exe( s, objLlave );
}
return toret;
}