Administrador de estado de tokens
(Contribución de Eric Dalquist)
Este script añade automáticamente marcadores de estado basados en los valores de la barra. El script se puede configurar para realizar un seguimiento de cualquiera de las tres barras, establecer cualquiera de los marcadores de estado para cualquier relación entre 0 y 1. El script puede gestionar múltiples barras/tokens en una sola instancia. El ejemplo siguiente observa la barra 1 y establece el marcador rojo cuando el valor es <= 50 % y, a continuación, establece el marcador muerto cuando el valor es <= 0.
* Establezca varios marcadores de token basados en las relaciones bar cur/max
*
* La matriz CONFIG puede tener cualquier número de objetos de configuración. Estos objetos
* se procesan en orden.
*
* barId: el ID de la barra para ver los valores [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 [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
* whenLow: el estado del marcador cuando el valor de la barra es <: la relació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);
}
}
});
});
Administrador de HP temporal
(Contribución de Eric Dalquist)
Gestiona automáticamente los puntos de vida temporales. Si una de las barras de fichas se utiliza para realizar un seguimiento de los puntos de vida temporales, este script puede deducir automáticamente los puntos de vida del valor temporal antes de que se eliminen de la barra de puntos de vida principal.
* Elimina automáticamente los puntos de vida temporales si existen.
*
* Cuando un token tiene su HP reducido, el script comprueba si hay algún
* HP temporal disponible. Si es así, primero se eliminan esos y los HP reales son
* actualizados para reflejar los HP temporales que absorben el golpe.
*
* TEMP_BAR_ID: la barra utilizada para realizar un seguimiento de los puntos de vida temporales [1, 2, 3]
* HP_BAR_ID: la barra utilizada para realizar un seguimiento de los HP 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("WARN: 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
//Espere hasta 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 dirección = -70; //Caminar 70 píxeles hacia la izquierda.
var stepstaken = 0; //¿Cuántos pasos han caminado en la dirección actual?
setInterval(función() {
si(pasosdados > 3) {
//¡Cambie de dirección!
dirección = dirección * -1; //«invertirá» la dirección en la que estamos caminando
pasosdados = 0; //restablece los pasos a 0.
}
patroltoken.set("left", patroltoken.get("left") + direction); //¡caminar!
stepstaken++;
}, 5000); //realizar una acción cada 5 segundos
});