Gestionnaire de statut des jetons
(Contribution d'Eric Dalquist)
Ce script ajoute automatiquement des marqueurs d'état en fonction des valeurs de la barre. Le script peut être configuré pour suivre l'une des trois barres, définir l'un des marqueurs d'état pour n'importe quel rapport compris entre 0 et 1. Le script peut gérer plusieurs barres/jetons dans une seule instance. L'exemple ci-dessous surveille la barre 1 et définit le marqueur rouge lorsque la valeur est <= 50 %, puis définit le marqueur mort lorsque la valeur est <= 0.
* Définissez divers marqueurs de jetons en fonction des ratios bar cur/max
*
* Le tableau CONFIG peut contenir un nombre quelconque d'objets de configuration. Ces objets
* sont traités dans l'ordre.
*
* barId - L'ID de la barre pour laquelle examiner les valeurs [1, 2, 3]
* barRatio - Le rapport entre la valeur de la barre et la valeur maximale qui déclenche le réglage du marqueur d'état [0 - 1]
* status - Le nom du marqueur d'état à activer [redmarker, bluemarker, greenmarker, brownmarker, purplemarker, dead]
* whenLow - L'état du marqueur lorsque la valeur de la barre est <= le rapport [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);
}
}
});
});
Gestionnaire de PV temporaires
(Contribution d'Eric Dalquist)
Gère automatiquement les points de vie temporaires. Si l'une des barres de jeton est utilisée pour suivre les PV temporaires, ce script peut automatiquement déduire les PV de la valeur temporaire avant qu'ils ne soient retirés de la barre de PV principale.
Supprime automatiquement les PV temporaires s'ils existent.
-
- Lorsqu'un jeton voit ses PV réduits, le script vérifie s'il existe des
- temp PV disponibles. Si tel est le cas, ceux-ci sont d'abord supprimés et les PV réels sont
* mis à jour pour refléter les PV temporaires absorbant le coup.
*
* TEMP_BAR_ID - La barre utilisée pour suivre les PV temporaires [1, 2, 3]
* HP_BAR_ID - La barre utilisée pour suivre les PV réels [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("AVERTISSEMENT : La barre précédente " + HP_BAR_ID + " ne contient pas de nombre : '" + prevHpValStr + "'");
return;
}
var hpValStr = obj.get("bar" + HP_BAR_ID + "_value");
var hpVal = parseInt(hpValStr);
if (isNaN(hpVal)) {
log("AVERTISSEMENT : la barre " + HP_BAR_ID + " ne contient pas de nombre : '" + 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);
}
}
}
});
Jeton de patrouille
//Veuillez patienter jusqu'à ce que l'événement « ready » se déclenche afin de confirmer que la campagne est entièrement chargée.
//Obtenir une référence à notre jeton de patrouille.
var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; //Nous savons qu'il existe un jeton dans la campagne appelé « Guard A ».
var direction = -70 ; //Se déplacer vers la gauche de 70 pixels.
var stepstaken = 0 ; //Combien de pas avons-nous effectués dans la direction actuelle ?
setInterval(function() {
if(pas effectués > 3) {
//Changer de direction !
direction = direction * -1 ; //inversera la direction dans laquelle nous marchons
stepstaken = 0 ; //réinitialise les pas à 0.
patroltoken.set("left", patroltoken.get("left") + direction); //marcher !
stepstaken++;
}, 5000); //effectuer une action toutes les 5 secondes
});