El manual ofrece algunos ejemplos de scripts sencillos que pueden ayudarle a dar los primeros pasos. No dude en utilizarlos y modificarlos para emplearlos en sus propias campañas. También hay un foro sobre scripts de mods en el que puede debatir sobre la programación de scripts de mods y compartir sus scripts con la comunidad.
Gestor de estado de tokens
(Colaboración de Eric Dalquist)
Este script añade automáticamente indicadores de estado en función de los valores de las barras. El script se puede configurar para realizar un seguimiento de cualquiera de las tres barras y establecer cualquiera de los indicadores de estado para cualquier relación comprendida entre 0 y 1. El script puede gestionar varias barras o fichas en una sola instancia. El ejemplo que figura a continuación supervisa la barra 1 y establece el marcador rojo cuando el valor es <= 50 %, y a continuación establece el marcador de fin cuando el valor es <= 0.
/**
* Establece diversos marcadores de tokens en función de las relaciones cur/max de las barras
*
* La matriz CONFIG puede contener cualquier número de objetos de configuración. Estos objetos
* se procesan por orden.
*
* barId: el identificador de la barra cuyos valores se van a analizar [1, 2, 3]
* barRatio: la relación entre el valor de la barra y el valor máximo que activa la configuración del marcador de estado [0 - 1]
* status: el nombre del marcador de estado que se va a activar o desactivar [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
* whenLow: el estado del marcador cuando el valor de la barra es <: la proporción [true, false]
*/
var CONFIG = [
{barId: 1, barRatio: .5, status: "redmarker", whenLow: true},
{barId: 1, barRatio: 0, status: "dead", whenLow: true}
];
on("change:token", function(obj) {
CONFIG.forEach(function(opts) {
var maxValue = parseInt(obj.get("bar" + opts.barId + "_max"));
var curValue = parseInt(obj.get("bar" + opts.barId + "_value"));
log(opts.barId + ": " + curValue + "/" + maxValue);
if (!isNaN(maxValue) && !isNaN(curValue)) {
var markerName = "status_" + opts.status;
if (curValue <= (maxValue * opts.barRatio)) {
obj.set(markerName, opts.whenLow);
}
else {
obj.set(markerName, !opts.whenLow);
}
}
});
});
Responsable temporal de Recursos Humanos
(Colaboración de Eric Dalquist)
Gestiona automáticamente los puntos de vida temporales. Si se utiliza una de las barras de tokens para llevar un control de los puntos de vida temporales, este script puede restar automáticamente los puntos de vida del valor temporal antes de que se eliminen de la barra principal de puntos de vida.
/**
* Elimina automáticamente los puntos de vida temporales, si los hay.
*
* Cuando se reducen los puntos de vida (HP) de una ficha, el script comprueba si hay
* puntos de vida temporales disponibles. En tal caso, esos se eliminan primero y los puntos de vida reales son
* actualizado para reflejar que los puntos de vida temporales absorben el golpe.
*
* TEMP_BAR_ID: la barra utilizada para controlar los puntos de vida temporales [1, 2, 3]
* HP_BAR_ID: la barra utilizada para realizar el seguimiento de los puntos de vida reales [1, 2, 3]
*/
var TEMP_BAR_ID = 2;
var HP_BAR_ID = 1;
on("change:token", function(obj, prev) {
var prevHpValStr = prev["bar" + HP_BAR_ID + "_value"];
var prevHpVal = parseInt(prevHpValStr);
if (isNaN(prevHpVal)) {
log("ADVERTENCIA: La barra anterior " + HP_BAR_ID + " no contiene un número: '" + prevHpValStr + "'");
return;
}
var hpValStr = obj.get("bar" + HP_BAR_ID + "_value");
var hpVal = parseInt(hpValStr);
if (isNaN(hpVal)) {
log("ADVERTENCIA: La barra " + HP_BAR_ID + " no contiene un número: '" + hpValStr + "'");
return;
}
if (prevHpVal > hpVal) {
var tmpHpVal = parseInt(obj.get("bar" + TEMP_BAR_ID + "_value"));
log(prevHpVal + " - " + hpVal + " - " + tmpHpVal);
if (!isNaN(tmpHpVal)) {
var hpChange = prevHpVal - hpVal;
var remainingTmp = tmpHpVal - hpChange;
if (remainingTmp > 0) {
obj.set("bar" + TEMP_BAR_ID + "_value", remainingTmp);
obj.set("bar" + HP_BAR_ID + "_value", prevHpVal);
}
else {
var remainingHp = prevHpVal + remainingTmp;
obj.set("bar" + TEMP_BAR_ID + "_value", 0);
obj.set("bar" + HP_BAR_ID + "_value", remainingHp);
}
}
}
});
Ficha de patrulla
on("ready", function() {
//Esperar a que se active el evento «ready» para saber que la campaña se ha cargado por completo.
//Obtenga una referencia a nuestro token de patrulla.
var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; //Sabemos que hay un token en la campaña llamado «Guard A».
var direction = -70; //Avance 70 píxeles hacia la izquierda.
var pasosRecorridos = 0; // ¿Cuántos pasos hemos dado en la dirección actual?
setInterval(function() {
if (pasosRecorridos > 3) {
//¡Cambie de dirección!
dirección = dirección * -1; //«invertirá» la dirección en la que caminamos
pasosRecorridos = 0; //restablece los pasos a 0.
}
patroltoken.set("left", patroltoken.get("left") + direction); //¡Adelante!
stepstaken++;
}, 5000); // realizar una acción cada 5 segundos
});