I might suggest a minor reorganization: on('ready', function(){
var playerBennieHands = [];
function isBennie(card){
if(card){ return (card.get('name') === 'Bennie'); }
else{ return false; }
}
function setBennieCount(playerId, bennies){
var character = findObjs({ type: 'character', controlledby: playerId })[0];
if(character){
var playerToken = findObjs({ type: 'graphic', represents: character.get('_id') })[0];
if(playerToken){
playerToken.set('bar1_value', bennies);
// Green Benny Bar
if(bennies > 0){ playerToken.set('status_green',parseInt(bennies)); }
else{ playerToken.set('status_green',false); }
}
}
}
on('change:hand',function(obj,prev){
var playerId = obj.get('_parentid');
if(isGM(playerId)){ return; }
var handid = obj.get('_id');
var hand = obj.get('_currentHand');
var hdx = _.indexOf(playerBennieHands, handid);
var cards = hand.split(',');
var ccount = (hand !== '' ? cards.length : 0);
if(ccount > 0){
var card = getObj('card', cards[0]);
if(isBennie(card)){
if(hdx === -1){ playerBennieHands.push(handid); }
setBennieCount(playerId, cards.length);
}
}else{ if(hdx > -1){ setBennieCount(playerId, 0); } }
});
}); Moving that variable and those functions inside the on('ready',...) leaves them accessible to your handler function, but keeps them from polluting the global namespace (All scripts are concatenated together).