Here's a version of something similar I started working on, but haven't finished yet... my intention is to allow for players to select their character, run this macro and make skill checks against objects they can target and pull information from that target via the tokens GM Notes section. The info is entered as a json object. // SCRIPT INFO
on("ready", function() {
var MapNotes5e_Author = "SkyCaptainXIII";
var MapNotes5e_Version = "Alpha";
var MapNotes5e_LastUpdated = 1479080695;
log("-=> MapNotes v" + MapNotes5e_Version + " <=- [" + (new Date(MapNotes5e_LastUpdated * 1000)) + "]");
//log (Date.now().toString().substr(0, 10));
});
// API COMMAND HANDLER
on("chat:message", function(msg) {
if (msg.type !== "api") return;
if (msg.content.split(" ")[1] == undefined) {
sendChat("ERROR", "/w " + who + " You must select or target a token or supply a token id.");
return;
}
var who = msg.who.replace("(GM)", "").trim();
// TOKEN INFOMATION
var Command = msg.content.split(" ")[0];
var TokenID = msg.content.split(" ")[1];
var Token = (TokenID != undefined) ? getObj("graphic", TokenID) : sendChat("ERROR:", "/w GM MapNotes was unable to locate a token with ID: " + TokenID + ". (Triggered by " + who + ")");
var TokenNotes = Token.get("gmnotes");
// MAPNOTE
var MapNotes = {};
try { TokenNotes = decodeURIComponent(TokenNotes).trim(); }
catch (err) { TokenNotes = unescape(TokenNotes).trim(); }
if (TokenNotes) {
try {
TokenNotes = TokenNotes.split(/<[/]?.+?>/g).join('');
MapNotes = JSON.parse(TokenNotes);
}
catch (err) {
sendChat("ERROR", "/w GM " + Token.get("name") + " has an invalid JSON entry.");
sendPing(Token.get("left"), Token.get("top"), Token.get("_pageid"));
return;
}
}
// log (MapNotes.info);
// ARCANA
if (Command === "!mn-arcana") {
}
if (Command === "!mn-desc") {
sendChat('', '/desc ' + MapNotes.info);
}
// HISTORY SKILL
if (Command === "!mn-history") {
}
// GENERAL INFORMATION
if (Command === "!mn-info") {
sendChat('MapNotes', '/w ' + who + ' ' + MapNotes.info);
}
// INVESTIGATE
if (Command === "!mn-investigate") {
}
// PERCEPTION
if (Command === "!mn-perception") {
}
});