Gerenciador de Status de Token
(Contribuído por Eric Dalquist)
Este script adiciona automaticamente marcadores de status com base nos valores das barras. O script pode ser configurado para rastrear qualquer uma das três barras, definir qualquer um dos marcadores de status para qualquer proporção entre 0 e 1. O script pode gerenciar várias barras/tokens em uma única instância. O exemplo abaixo monitora a barra 1 e define o marcador vermelho quando o valor é <= 50% e depois define o marcador morto quando o valor é <= 0.
* Defina vários marcadores de token com base nas proporções de cura/máximo da barra
*
* O array CONFIG pode ter qualquer número de objetos de configuração. Esses objetos
* são processados em ordem.
*
* barId - O ID do bar para verificar os valores para [1, 2, 3]
* barRatio - A proporção do valor da barra para o valor máximo que aciona a configuração do marcador de status [0 - 1]
* status - O nome do marcador de status para alternar [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
* whenLow - O estado do marcador quando o valor da barra é <= a proporção [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);
}
}
});
});
Gerenciador de PH Temporário
(Contribuído por Eric Dalquist)
Gerencia automaticamente os pontos de vida temporários. Se uma das barras de token for usada para rastrear PH temporários, este script pode deduzir automaticamente os PH da barra de valor temporário antes que eles sejam removidos da barra de PV principal.
* Remove automaticamente os PH temporários, se eles existirem.
*
* Quando um token tem seus PV reduzidos, o script verifica se há algum
* PH temporário disponível. Se o fizer, estes são removidos primeiro e o HP real é
* atualizado para refletir o HP temporário que absorve o golpe.
*
* TEMP_BAR_ID - A barra usada para rastrear HP temporário [1, 2, 3]
* HP_BAR_ID - A barra usada para rastrear HP real [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("WARN: A barra anterior " + HP_BAR_ID + " não contém um número: '" + prevHpValStr + "'");
return;
}
var hpValStr = obj.get("bar" + HP_BAR_ID + "_value");
var hpVal = parseInt(hpValStr);
if (isNaN(hpVal)) {
log("WARN: A barra " + HP_BAR_ID + " não contém um 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);
}
}
}
});
Token de Patrulha
//Aguarde até que o evento de pronto seja acionado para sabermos que a campanha está completamente carregada.
//Obtenha uma referência ao nosso token de patrulha.
var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; //Sabemos que há um token na Campanha chamado "Guard A".
var direction = -70; //Ande para a esquerda 70 pixels.
var stepstaken = 0; //Quantos passos já andamos na direção atual?
setInterval(function() {
if(stepstaken > 3) {
//Trocar de direção!
direction = direction * -1; //irá "inverter" a direção em que estamos andando
stepstaken = 0; //redefinir os passos para 0.
}
patroltoken.set("left", patroltoken.get("left") + direction); //andar!
stepstaken++;
}, 5000); //realizar uma ação a cada 5 segundos
});