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.