Token Status Manager
(Contribuito da Eric Dalquist)
Questo script aggiunge automaticamente marcatori di stato in base ai valori della barra. Lo script può essere configurato per tenere traccia di una delle tre barre, impostare i marcatori di stato per qualsiasi rapporto compreso tra 0 e 1. Lo script può gestire più barre/token in un'unica istanza. L'esempio qui sotto controlla la barra 1 e imposta il marcatore rosso quando il valore è <= 50% e quindi imposta il marcatore di morte quando il valore è <= 0.
* Imposta vari marcatori di token in base ai rapporti cur/max della barra
*
* L'array CONFIG può avere qualsiasi numero di oggetti di configurazione. Questi oggetti
* vengono elaborati in ordine.
*
* barId - L'ID del bar a cui guardare i valori per [1, 2, 3]
* barRatio - Il rapporto tra il valore della barra e il valore massimo che attiva il marker di stato [0 - 1]
* status - Il nome del marker di stato da attivare [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
* whenLow - Lo stato del marker quando il valore della barra è <= al rapporto [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);
}
}
});
});
Gestore HP Temporanei
(Contribuito da Eric Dalquist)
Gestisce automaticamente gli HP temporanei. Se una delle barre di token viene utilizzata per tracciare gli HP temporanei, questo script può automaticamente sottrarre gli HP dal valore temporaneo prima che vengano rimossi dalla barra degli HP principale.
* Rimuove automaticamente gli HP temporanei se esistono.
*
* Quando un token ha la sua HP ridotta, lo script controlla se ci sono
* HP temporanei disponibili. Se lo fa, questi vengono prima rimossi e la CV reale viene
* aggiornata per riflettere la CV temporanea che assorbe il colpo.
*
* TEMP_BAR_ID - La barra utilizzata per monitorare gli HP temporanei [1, 2, 3]
* HP_BAR_ID - La barra utilizzata per monitorare gli HP reali [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: La barra precedente " + HP_BAR_ID + " non contiene un numero: '" + 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 + " non contiene un numero: '" + 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 di pattuglia
//Aspetta finché non si attiva l'evento ready in modo da sapere che la campagna è completamente caricata.
//Ottieni un riferimento al nostro token di pattuglia.
var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; //Sappiamo che nel Campaign esiste un token chiamato "Guard A".
var direction = -70; //Cammina a sinistra di 70 pixel.
var stepstaken = 0; //Quanti passi abbiamo fatto nella direzione attuale?
setInterval(function() {
if(stepstaken > 3) {
//Cambia direzione!
direction = direction * -1; //"Inverti" la direzione in cui stiamo camminando
stepstaken = 0; //Resetta i passi a 0.
}
patroltoken.set("left", patroltoken.get("left") + direction); //Cammina!
stepstaken++;
}, 5000); //Prendi un'azione ogni 5 secondi
});