Hi, I've stumbled over a really annoying issue that I, for now, devoted way too much time to. Especially because I'm suspecting that another user could see the solution on the first glance. There are two Sheet Worker Scripts: One that listenes to three specific input boxes (because there are three types of mana) where users can note their spent mana and subtracts the noted mana from the pool. This works perfectly fine. The second script is part of an interface to automatically subtract a specific amount of any of the three kinds of mana (in fact changing the content of the input fields). The mana boxes look like this: In HTML: <td align="center"><input type="number" name="attr_fokus_t" readonly="readonly" value=0 style="text-align: center; background-color:#81BEF7;" /></td> <td align="center">K: <input type="number" name="attr_fokus_k" value=0 style="text-align: center; background-color:#81BEF7;" /></td> <td align="center">E: <input type="number" name="attr_fokus_e" value=0 style="text-align: center; background-color:#81BEF7;" /></td> <td align="center">V: <input type="number" name="attr_fokus_v" value=0 style="text-align: center; background-color:#81BEF7;" /></td> ( I know, neither table centered design nor inline CSS are good ... ) The script that listens to changes looks like this: on("change:fokus_k change:fokus_e change:fokus_v", function(f) { getAttrs(["fokus_k", "fokus_e", "fokus_v", "fokus_t", "fokus"], function(v) { let update = {}; let newValue = f.newValue || 0; let previousValue = f.previousValue || 0; if (f.sourceAttribute == "fokus_k") { update["fokus_t"] = +v.fokus_t - (+newValue - +previousValue); } else if (f.sourceAttribute == "fokus_e") { update["fokus_t"] = +v.fokus_t - (+newValue - +previousValue); } else if (f.sourceAttribute == "fokus_v") { update["fokus_t"] = +v.fokus_t - (+newValue - +previousValue); } setAttrs(update); }); }); It basically only listens and changes the attribute "fokus_t" (which stands for the mana pool that is depleted / refilled). The second script looks like this: on("change:fokusv change:fokuse change:fokusk change:fokuskzue", function(f) { getAttrs(["fokusv", "fokuse", "fokusk", "fokuskzue", "fokusnum", "fokus_k", "fokus_e", "fokus_v"], function(v) { let fok = +v.fokusnum; let update = {}; update["fokusnum"] = 0; if (v.fokusv == true) { update["fokus_v"] = +v.fokus_v + +fok; update["fokusv"] = false; } else if (v.fokusk == true) { update["fokus_k"] = +v.fokus_k + +fok; update["fokusk"] = false; } else if (v.fokuse == true) { update["fokus_e"] = +v.fokus_e + +fok; update["fokuse"] = false; } else if (v.fokuskzue == true) { update["fokus_k"] = +v.fokus_k - +fok; update["fokus_e"] = +v.fokus_e + +fok; update["fokuskzue"] = false; } setAttrs(update); }); }); It checks which of the four buttons (option fields) is pressed, does the math and sets the option field to false. Everything works fine up to the last "else if" block. This button just transfers mana from field to another. Whenever I try to change two attributes ("fokus_k" and "fokus_e" in this case) only the latter change ("fokus_e") is made. When I remove one of the two commands the other one gets executed, no matter which one. By subtracting from "fokus_k" it should trigger the first script and add the same amount to "fokus_t", to then add the amount to "fokus_e" and subtract it from "fokus_t". So I came to the conclusion that somewhat seems to prevent the script from changing to attributes that are listended to in another script. But to be honest I don't know why. So I think I have another problem here that I just can't see. Maybe you can? Greetings, Loki [Edit]attribute s of course[/Edit]