-
Notifications
You must be signed in to change notification settings - Fork 4
Referencia para entidades
Las entidades en un mundo de aventuras como fi.js son tres: Loc (localidades), Obj (objetos), Persona (personajes). Lo siguiente es una referencia de métodos que pueden encontrarse en cualquiera de estas tres.
- desc
Se trata de la descripción de la entidad (objeto, personaje o localidad).
locPlaya.preExamine = function() {
var toret = locPlaya.desc;
if ( ctrl.personas.devJugador().tiene( objPrismaticos ) ) {
toret += " Puedes ver un barco en lontanaza.";
}
return toret;
};
- getTimesExamined() / devVecesExaminado()
Estos métodos devuelven las veces que la entidad ha sido examinada. Nótese que esto sirve tanto para localidades como para objetos (y personas); en el primer caso, se trata aproximadamente del número de veces que ha sido visitada (puede ser redescrita la localidad, lo cual hace que se incremente este número), y en el segundo, la cantidad de veces que el jugador ha tecleado "ex obj", o que el juego también ha provocado el examinado del objeto mediante actions.exe( "examine", "obj" ) o similar.
- setTimesExamined(i) / ponVecesExaminado(i)
Estos métodos cambian las veces que la entidad ha sido examinada. Nótese que esto sirve tanto para localidades como para objetos (y personas). Esto puede ser útil en el caso de que se realicen acciones según el número de veces que haya sido examinada una entidad.
- isScenery() / esEscenario() setScenery( v ) / ponEscenario(v)
Estos métodos indican si un objeto es escenario o no. En un personaje, o localidad, se devuelve siempre true, y no se puede cambiar su estado por mucho que se llame a setScenery(). Si se va a poner a true, se puede omitir el argumento v. Existen constantes predefinidas en cualquier caso, Ent.Scenery y Ent.Escenario, que tienen valor true, y Ent.Portable, que tiene valor false. Un objeto que es escenario no es portable, es decir, no se puede coger o dejar.
- isContainer() / esContenedor() setContainer( v ) / ponContenedor(v)
Estos métodos indican si un objeto es contenedor o no. En un personaje, o localidad, se devuelve siempre true, y no se puede cambiar su estado por mucho que se llame a setContainer(). Si se va a poner a true, se puede omitir el argumento v. Un objeto contenedor puede llevar otros objetos en su interior, como una mochila.
- isReachable() / esAlcanzable() setReachable( v ) / ponAlcanzable(v)
Estos métodos indican si un objeto es alcanzable o no. En una localidad, se devuelve siempre true, y no se puede cambiar su estado por mucho que se llame a setReachable(). Si se va a poner a true, se puede omitir el argumento v. El concepto de alcanzable tiene que ver con si el jugador puede llegar fácilmente al objeto o no. Por ejemplo, es posible crear un objeto para el cielo, y otro para el sol. Lógicamente, ambos deberían ser escenario, y no deberían ser alcanzables. De esta forma, verbos como oler o tocar o probar responderán con un "demasiado lejos".
- isOpen() / estaAbierto() setOpen( v ) / ponAbierto(v)
Estos métodos indican si un objeto esta abierto o no (por defecto, lo está). En una localidad, se devuelve siempre true, y no se puede cambiar su estado por mucho que se llame a setOpen(). Si se va a poner a true, se puede omitir el argumento v. Un objeto contenedor puede llevar otros objetos en su interior, como una mochila, y esa mochila puede estar abierta, permitiendo el acceso a los objetos en su interior, o no.
- moveTo(l) / mueveA(l)
Este método es la forma oficial de mover objetos de una localidad a otra, o de una localidad, objeto o personaje a otro. Nótese que cada objeto tiene un atributo owner, que mantiene una referencia al objeto contenedor, bien sea otro objeto, una localidad o el jugador. En el caso de que no se proporcione el argumento l, se asume que el destino es el limbo. Las localidades no pueden ser movidas, aunque se llame a moveTo() no se produce efecto alguno.
Ejemplo
objLlave.mueveA( locPlaya );
- isVisible(l) / esVisible()
Un objeto es visible si, a pesar de estar en un contenedor, este está abierto. Para un objeto dado, el método isVisible() comprueba que sea accesible para el jugador (o cualquier otro personaje).
- has(x) / tiene(x) getObjById(strX) / devObjPorId(strX)
El método has() devuelve true si el objeto pasado por parámetro está contenido en el objeto sobre el que se ejecuta el método. El método getObjById() devuelve una referencia al objeto si se encuentra, pasándole como parámetro un identificador del mismo (puede ser su id principal, o bien un sinónimo).
var objBocata = mochila.getObjById( "bocata" );
if ( objBocata !== null ) {
ctrl.print( "Llevas el bocata contigo." );
}
//...
if ( mochila.has( objLlave ) ) {
ctrl.print( "Sí, llevas la llave en la mochila" );
}
-
isListingObjectsInside():
Este método permite conocer si una localidad u objeto determinado está listando los objetos en su interior. El valor por defecto es true.
-
setListsObjectsInside(v):
Este método permite decidir si una localidad u objeto va a listar los objetos en su interior o no. Si no se aporta nada como parámetro, o este es true, entonces listará los objetos en su interior, con false no lo hará.
EntTraits se encarga de los comportamientos por defecto de todas las entidades. De cara al usuario, los siguientes métodos son interesantes:
-
isListingObjectsInside:
Este método permite conocer si una localidad u objeto determinado está en las descripciones listando los objetos en su interior. El valor por defecto es true.
if ( EntTraits.isListingObjectsInside() ) { EntTraits.setListsObjectsInside( false ); // Ninguna entidad listará sus objetos. }
-
setLocListsObjectsInside:
Este método permite decidir si una localidad u objeto va a listar en las descripciones los objetos en su interior o no. Si no se aporta nada como parámetro, o este es true, entonces listará los objetos en su interior, con false no lo hará.
EntTraits.setListsObjectsInside( false ); // Ninguna entidad listará sus objetos.