Scripts de mod: Marcadores de tokens

El objeto de campaña almacena la lista de marcadores de ficha disponibles en el juego (integrados y personalizados). Esta información se almacena como _token_markers. Es de solo lectura. Acceda a él desde un script de mod con:

Campaign().get("_token_markers");

El valor devuelto es una matriz JSON convertida en cadena que contiene un objeto para cada marcador de token que se encuentre actualmente en el juego.

{
    "id": 59, // el identificador de la base de datos del marcador
    "name": "Bane", // el nombre (no único) del marcador
    "tag": "Bane::59", // cómo se hace referencia al token en realidad
        // esto incluirá el identificador de los marcadores personalizados, pero no
        // el de los marcadores predeterminados.
    "url": "https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
    // ^la URL de la imagen del marcador de token
}

Hemos escrito un script de ejemplo para mostrar cómo puede utilizar esto para encontrar los marcadores de token disponibles en su campaña.

Añada este script a su juego y tendrá disponibles los siguientes comandos:

!markernames mostrará todos los marcadores en el chat junto con la imagen, el nombre y el ID

!markerids mostrará en el chat todos los marcadores que coincidan con el nombre indicado

!settokenmarker añadirá la cadena proporcionada a la lista de marcadores de estado del token seleccionado actualmente. Tenga en cuenta que esto no realiza ninguna validación para asegurarse de que el marcador de token existe, simplemente añade el valor proporcionado a los marcadores de token.

!gettokenmarkers muestra en el chat el atributo «statusmarkers» del token seleccionado actualmente

on("ready", () => {
  const tokenMarkers = JSON.parse(Campaign().get("_token_markers"));
  const getChatMessageFromTokenMarkers = markers => {
    let chatMessage = '';
    _.each(markers, marker => {
      chatMessage += `<p><img src='${marker.url}'> ${marker.id}: ${marker.name}</p>`;
    });
    return chatMessage;
  };
  on("chat:message", msg => {
    if (msg.content.split(" ")[0].toLowerCase() === '!markernames') {
      let chatMessage = getChatMessageFromTokenMarkers(tokenMarkers);
      sendChat("Marcadores de tokens", chatMessage);
    } else if (msg.content.split(" ")[0].toLowerCase() === '!markerids') {
      const markerName = msg.content.split(" ")[1].toLowerCase();
      let results = [];
      _.each(tokenMarkers, marker => {
        if (marker.name.toLowerCase() === markerName) results.push(marker);
      });
      log(results);
      let chatMessage = getChatMessageFromTokenMarkers(results);
      chatMessage = chatMessage || 'No se han encontrado marcadores de token coincidentes'
      sendChat("Marcadores de token", chatMessage);
    } else if (msg.content.split(" ")[0].toLowerCase() === '!settokenmarker') {
      const markerName = msg.content.split(" ")[1].toLowerCase();
      if (!msg.selected && msg.selected[0]._type == "graphic") return;
      obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
      currentMarkers = obj.get("statusmarkers").split(',');
      currentMarkers.push(markerName);
      obj.set("statusmarkers", currentMarkers.join(','));
    } else if (msg.content.split(" ")[0].toLowerCase() === '!gettokenmarkers') {
      if (!msg.selected) return;
      if (msg.selected[0]._type !== «graphic») return;
      obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
      currentMarkers = obj.get(«statusmarkers»);
      sendChat(«Marcadores de tokens», currentMarkers);
    }
  });
});
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 9 de 38