Hey Jarren, VTT QA here. Thanks for the ticket you submitted with the video. I know you've written in before about these issues, but the video was the last puzzle piece we needed. I've now been able to reproduce 2 issues (other players not able to ping if someone else is set to transparent, and an inability to switch colors after loading in with transparent). I don't have an ETA on these issues, but I'm going to advocate for them at our next refinement. Happy gaming, and thanks again for helping us pinpoint this mystery. Jarren said: If you have your players change their color to transparent, then their ping should not be visible. It looks like there's an unintended bug where any player being set to transparent seems to prevent anyone from pinging (which I'm going to send in a bug report on right now), at least that is happening in my test game and pinging doesn't work until logging out and logging back in. So in the meantime you could just set your own color to transparent, and it looks like it'll prevent everyone else from pinging as well. But I'm guessing that this bug (if it's not just my computer) will eventually get fixed so I wouldn't recommend relying on it long term. For anyone with a Pro or Elite subscription, you can use a script to adjust a player's user color, using either a HEX value or 'transparent'. Use command !playercolor or this macro: !playercolor --name|?{Player name} --color|?{Color|Red,#ff0000|Green,#00ff00|Blue,#0000ff|Transparent,transparent|Custom HEX,?{Custom HEX color|#ff0000}} on('ready',function(){
on('chat:message',function(msg){
if(msg.type!=='api')return;
if(!msg.content.startsWith('!playercolor'))return;
if(msg.content.trim()==='!playercolor'){
sendChat('PlayerColor','/w gm [Set Player Color](!playercolor --name|?{Player name} --color|?{Color|Red,#ff0000|Green,#00ff00|Blue,#0000ff|Transparent,transparent|Custom HEX,?{Custom HEX color|#ff0000}})');
return;
}
if(!playerIsGM(msg.playerid)){
sendChat('PlayerColor','/w "'+msg.who+'" Only the GM can use this command.');
return;
}
const args={};
msg.content.replace('!playercolor','').trim().split(/\s+--/).forEach(part=>{const pieces=part.split('|');if(pieces.length>=2)args[pieces[0].replace(/^--/,'').toLowerCase()]=pieces.slice(1).join('|').trim();});
const name=args.name,color=args.color;
if(!name||!color){
sendChat('PlayerColor','/w gm Usage: !playercolor --name|NAME --color|#ff0000 or --color|transparent');
return;
}
let normalizedColor=color.toLowerCase().trim();
if(normalizedColor.includes('transparent')){
normalizedColor='transparent';
}else{
normalizedColor=normalizedColor.replace(/^#+/,'');
if(/^[0-9a-f]{3}$/.test(normalizedColor))normalizedColor=normalizedColor.split('').map(function(char){return char+char;}).join('');
normalizedColor='#'+normalizedColor;
}
if(normalizedColor!=='transparent'&&!/^#[0-9a-fA-F]{6}$/.test(normalizedColor)){
sendChat('PlayerColor','/w gm Invalid color. Use hex format like #ff0000, ff0000, #1ab, or transparent.');
return;
}
const matches=findObjs({_type:'player'}).filter(p=>(p.get('_displayname')||'').toLowerCase()===name.toLowerCase());
if(matches.length===0){
sendChat('PlayerColor','/w gm No player found named "'+name+'".');
return;
}
matches.forEach(function(player){player.set('color',normalizedColor);});
sendChat('PlayerColor','/w gm Set "'+name+'" to '+normalizedColor+'.');
});
});