Scripts de modificação: Marcadores de tokens

O objeto de campanha armazena a lista de marcadores de token disponíveis no jogo (predefinidos e personalizados). Esta informação é armazenada como _token_markers. É de leitura exclusiva. Aceda a esta funcionalidade a partir de um script de modificação com:

Campaign().get("_token_markers");

O valor devolvido é um array JSON convertido em cadeia de caracteres, que contém um objeto para cada marcador de token atualmente presente no jogo.

{
    "id": 59, // o identificador da base de dados para o marcador
    "name": "Bane", // o nome (não exclusivo) do marcador
    "tag": "Bane::59", // a forma como o token é efetivamente referenciado
        // isto incluirá o identificador para marcadores personalizados, mas não
        // para marcadores predefinidos.
    "url": "https://s3.amazonaws.com/files.d20.io/images/59/yFnKXmhLTtbMtaq-Did1Yg/icon.png?1575153187"
    // ^a URL da imagem do marcador de token
}

Elaborámos um script de exemplo para demonstrar como pode utilizar isto para encontrar os marcadores de token disponíveis na sua campanha.

Adicione este script ao seu jogo e estes comandos estarão disponíveis:

!markernames irá apresentar todos os marcadores no chat, juntamente com a imagem, o nome e o ID

!markerids irá apresentar no chat todos os marcadores que correspondam ao nome indicado

!settokenmarker irá adicionar a cadeia de caracteres fornecida à lista de marcadores de estado do token atualmente selecionado. Observe que isso não realiza nenhuma validação para garantir que o marcador de token exista; simplesmente adiciona o valor fornecido aos marcadores de token.

!gettokenmarkers apresenta o atributo «statusmarkers» do token atualmente selecionado no chat

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 Token", chatMessage);
    } else if (msg.content.split(" ")[0].toLowerCase() === '!markerids') {
      const markerName = msg.content.split(" ")[1].toLowerCase();
      let results = [];
      _.each(tokenMarkers, marker => {
        se (marker.name.toLowerCase() === markerName) results.push(marker);
      });
      log(results);
      let chatMessage = getChatMessageFromTokenMarkers(results);
      chatMessage = chatMessage || 'Não foi possível encontrar quaisquer marcadores de token correspondentes'
      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 Token", currentMarkers);
    }
  });
});
Este artigo foi útil?
9 de 38 acharam isto útil