I'll echo what Kyle said, ChatSetAttr can do everything you've just asked.  As long as said amount/pool/whatever is defined, somewhere as attribute, it can handle it. Examples (used in macros):   Decrements a spell slot every time the macro is fired to cast the spell.        !setattr --charid @{selected|character_id} --modb --lvl1_slots_expended|-1 --silent    Decrements ammo whenever the weapon macro is fired to perform an attack.    !setattr --charid @{selected|character_id} --modb --other_resource|-1 --silent   (your ammo location/field may be different)  I do the same thing for Lay On Hands healing pools, Divine Sense uses, etc.  You just have to define an attribute to hold the min/max value.   No need to have a dedicated API script for each little thing you want to do if, in the end, its just adding to or taking away from a pool or collection of items.  Of course, if you're wanting to do more than just adding and subtracting from a pool, then yes, you'll want something a little more robust.