I added this in a similar topic to this. This enhancement seems like fairly low hanging fruit to me. You can see the code where this is being controlled in the HTML below. This would be a extremely nice quality of life enhancement for DMs running multiple NPCs on a map. It's actually been a big pet peeve of mine personally since I started DMing on Roll20. t.on("dblclick", function (e) {
if (e.target && "text" == e.target.type) d20.engine.editText(e.target, e.pageX, e.pageY);
else if (e.target && "image" == e.target.type && e.target.model)
if ( (e.e.e.shiftKey || e.e.e.altKey) && "" !== e.target.model.get("represents")) {
console.log("Show token's character...");
var t = d20.Campaign.characters.get(e.target.model.get("represents"));
if (t) {
var n = t.get("inplayerjournals").split(",");
(window.is_gm || -1 !== _.indexOf(n, "all") || window.currentPlayer && -1 !== _.indexOf(n, window.currentPlayer.id)) && t.view.showDialog()
}
e.e.e.altKey ? $(".dialog[data-characterid=" + e.target.model.get("represents") + "] .characterviewer ul.nav a[data-tab='attributesabilities']").trigger("click") : $(".dialog[data-characterid=" + e.target.model.get("represents") + "] .characterviewer ul.nav a[data-tab='bioinfo']") .trigger("click")
} else e.target.model.trigger("showtokeneditor")
});
I'm pretty sure a simple switch with a check for null (in the case the game doesn't use a character sheet) similar to below. t.on("dblclick", function (e) {
if (e.target && "text" == e.target.type) d20.engine.editText(e.target, e.pageX, e.pageY);
else if (e.target && "image" == e.target.type && e.target.model)
if ((e.e.e.shiftKey || e.e.e.altKey || e.e.e.ctrlkey ) && "" !== e.target.model.get("represents")) {
console.log("Show token's character...");
var t = d20.Campaign.characters.get(e.target.model.get("represents"));
if (t) {
var n = t.get("inplayerjournals").split(",");
(window.is_gm || -1 !== _.indexOf(n, "all") || window.currentPlayer && -1 !== _.indexOf(n, window.currentPlayer.id)) && t.view.showDialog()
}
switch (e.e.e) {
case altkey:
$(".dialog[data-characterid=" + e.target.model.get("represents") + "] .characterviewer ul.nav a[data-tab='attributesabilities']").trigger("click")
break;
case shiftKey:
$(".dialog[data-characterid=" + e.target.model.get("represents") + "] .characterviewer ul.nav a[data-tab='bioinfo']").trigger("click")
break;
case ctrlkey && $charsheet != null:
$(".dialog[data-characterid=" + e.target.model.get("represents") + "] .characterviewer ul.nav a[data-tab='charsheet']").trigger("click")
break;
default:
}
} else e.target.model.trigger("showtokeneditor")
}); Not sure if that comparison operator needs to be != or !==. I know c#, not javascript.