Give this a try with the script below installed and one or more tokens selected: !toggle-size-lock Script: /* globals TokenMod */
on('ready',()=>{
const scriptName = 'LockTokenSize';
const version = '0.1.0';
const schemaVersion = 0.1;
const lastUpdate = 1618415215;
const checkInstall = () => {
log(`-=> ${scriptName} v${version} <=- [${lastUpdate}]`);
if (
!state.hasOwnProperty(scriptName) ||
state[scriptName].version !== schemaVersion
) {
log(` > Updating Schema to v${schemaVersion} <`);
switch (state[scriptName] && state[scriptName].version) {
case 0.1:
/* break; // intentional dropthrough */ /* falls through */
case "UpdateSchemaVersion":
state[scriptName].version = schemaVersion;
break;
default:
state[scriptName] = {
version: schemaVersion,
sizeLockedTokens: []
};
break;
}
}
};
checkInstall();
on('chat:message',msg=>{
if('api'===msg.type && /^!toggle-size-lock(\b\s|$)/i.test(msg.content) && playerIsGM(msg.playerid)){
let who = (getObj('player',msg.playerid)||{get:()=>'API'}).get('_displayname');
let msgs = [];
(msg.selected || [])
.map(o=>getObj('graphic',o._id))
.filter(g=>undefined !== g)
.forEach(t=>{
if(state[scriptName].sizeLockedTokens.includes(t.id)){
state[scriptName].sizeLockedTokens = state[scriptName].sizeLockedTokens.filter(id => t.id !== id);
msgs.push(`<li>Unlocked Token <b>${t.get('name')}</b> (<code style="white-space:nowrap">${t.id}</code>)</li>`);
} else {
state[scriptName].sizeLockedTokens.push(t.id);
msgs.push(`<li>Locked Token <b>${t.get('name')}</b> (<code style="white-space:nowrap">${t.id}</code>)</li>`);
}
})
;
if(msgs.length){
sendChat('', `/w "${who}" <div style="font-size: .8em; background-color: #cccccc; border:1px solid #999; padding: .3em;"><ul>${msgs.join('')}</ul></div>`);
}
}
});
const changeGraphic = (obj,prev) => {
if(state[scriptName].sizeLockedTokens.includes(obj.id)){
if(obj.get('width') !== prev.width || obj.get('height') !== prev.height){
obj.set({
width: prev.width,
height: prev.height,
top: prev.top,
left: prev.left
});
}
}
};
on('change:graphic',changeGraphic);
if('undefined' !== typeof TokenMod && TokenMod.ObserveTokenChange){
TokenMod.ObserveTokenChange(changeGraphic);
}
});