Out of curiosity, I was using someone's bloody(< 1/2 hp and death marker) script on("change:graphic", function(obj) { log("Whoa"); if(obj.get("bar3_max") === "") return; if(obj.get("bar3_value") <= obj.get("bar3_max") / 2) { if (!obj.get("status_redmarker")) obj.set({ status_redmarker: true }); } else{ if (obj.get("status_redmarker")) obj.set({ status_redmarker: false }) } if(obj.get("bar3_value") <= 0) { if (!obj.get("status_dead")) obj.set({ status_dead: true }); } else { if (obj.get("status_dead")) obj.set({ status_dead: false }); } }); I added the checks for if (obj.get("whatever") just now. Prior to that it would just always re-set status_redmarker even if it was already set. Could this cause a endless loop? Or is the backend of the API intelligent enough to not call on ("change:graphic") if the value of a marker was set to the same thing? Occasionally I see this script spin out in an endless loop and it kills it, so I just added the checks. Could stuff like this cause API server issues?