Marcadores de estado ensangrentados y muertos
(Contribución de Ken Bauer)
Este script añade automáticamente el marcador rojo para representar el estado «ensangrentado» de cualquier ficha que pierda más de la mitad de su salud, y el marcador «muerto» para cualquier ficha que quede en 0 o menos. Se supone que la salud se almacena en la barra 1.
on("change:graphic", function(obj) {
if(obj.get("bar1_max") === "") return;
if(obj.get("bar1_value") <= obj.get("bar1_max") / 2) {
obj.set({
status_redmarker: true
});
}
else{
obj.set({
status_redmarker: false
})
}
if(obj.get("bar1_value") <= 0){
obj.set({
status_dead: true
});
}
else{
obj.set({
status_dead: false
});
}
});
La oscuridad se acerca...
Este script reduce el radio de luz de una ficha en un 10 % cada vez que se mueve. Ideal para simular situaciones de gran estrés, como «lámparas que se quedan sin aceite».
on("change:token", function(obj, prev) {
//Solo haga esto si realmente se ha movido.
if(obj.get("left") == prev["left"] && obj.get("top") == prev["top"]) return;
obj.set({
light_radius: Math.floor(obj.get("light_radius") * 0.90)
});
});
Enviar chat como jugador o personaje
(Contribución de Brian Shields)
Estas son unas cuantas líneas que puede utilizar en un script de evento chat:message para asegurarse de que envía un mensaje con sendChat correctamente, ya sea como jugador o como personaje, dependiendo de quién haya activado el evento.
on("chat:message", function(msg) {
var message = '';
// Determine el contenido de «message»
var characters = findObjs({_type: 'character'});
var speaking;
characters.forEach(function(chr) {if(chr.get('name') == msg.who) speaking = chr;});
if(speaking) sendChat('character|'+speaking.id, message);
else sendChat('player|'+msg.playerid, message);
});