Skip to content
Baltasar García Perez-Schofield edited this page May 9, 2023 · 3 revisions

Creando personajes

Los personajes, incluyendo al jugador, son objetos de la clase ctrl.personas.Persona, y se utiliza la función ctrl.personas.creaPersona() para crearlos. Admite el nombre del personaje, los nombres que el jugador puede utilizar para referirse a él (como un vector simple), la descripción, y la localidad inicial (que puede ser loc.lugares.limbo si no queremos "traerlo" al juego hasta que se cumpla alguna condición).

El siguiente ejemplo está tomado de la aventura Montecristo.

const pnjNaufrago = ctrl.personas.creaPersona( "naufrago",
                    [ "hombre", "persona", "marino" ],
                    "Tiene pinta de llevar mucho tiempo aquí.",
                    locCantiles
);

Moviendo objetos entre personajes

Los personajes pueden tener objetos. El caso más habitual es el jugador, que puede recibir o perder objetos (normalmente a través de las acciones take y drop. La forma de acceder al jugador es ctrl.personas.getPlayer(). Una situación que puede ser típica es la posibilidad de examinar algún objeto y encontrarse con que contenía un objeto. En el siguiente ejemplo planteamos una mesa que tiene una llave sobre ella. Internamente, la llave está en realidad en el limbo, (ctrl.places.limbo), de forma que si se examina la mesa y la llave está en el limbo, se mueve al jugador. En otro caso, se devuelve la descripción de la mesa.

const objLlave = ctrl.creaObj(
    "llave",
    [],
    "No es una llave cualquiera, es LA LLAVE.",
    ctrl.places.limbo,
    Ent.Portable );

const objMesa = ctrl.creaObj(
    "mesa",
    [],
    "Pues sí, es una mesa.",
    locSalon,
    Ent.Scenery );

objMesa.preExamine = function() {
    let toret = this.desc;

    if ( ctrl.places.limbo.has( objLlave ) ) {
        objLlave.moveTo( ctrl.personas.getPlayer() );
        toret += " ¡Has encontrado ${una llave, ex llave}! Te la guardas.";
    }

    return toret;
};

Ini

Puede redefinirse una función ini() que será ejecutada antes del comienzo del juego. Por defecto, esta función no hace nada.

const pnjNaufrago = ctrl.personas.creaPersona( "naufrago",
                    [ "hombre", "persona", "marino" ],
                    "Tiene pinta de llevar mucho tiempo aquí.",
                    locCantiles
);

pnjNaufrago.ini = function() {
    this.preTalk = function() {
        return "Ohhhh...";
    };
};
Clone this wiki locally