The following calculation example should give you some ideas:
Define your UsuableTotalStatus field as:
Min ( UnusedPlay ; PlayMax ) + Min ( UnusedCast ; CastMax ) + Min ( UnusedService ; ServiceMax )
This is limit each category by it's maximum. You can replace "PlayMax", "CastMax" and "ServiceMax" with constants you enter in this calculation, but for greater flexibility, you should use values stored in either global fields or in fields of a related table so that you can change the maximums without redefining the calculation.
Thank you for your response. This does fix the problem of how to limit the field values based on the value in the PlayStatus field. However, I don't know if this fixes the second issue I've got: how to automatically draw status from these "pools" when it's been spent from the usable pool. Perhaps I have to work out with the club director how exactly the system works, but I think we'd pull service status first, then cast status, then finally play status. I think it would have to be a static calculation: after each event, we would have to calculate total spendable, then allow members to spend it. Now that I've limited cast status by play status, how do I spend it?
Does it really matter from which you "pull" first? Or do you just need to keep people within limits?
There are two ways to handle this issue depending on how you answer that question.
"UnusedPlay, UnusedCast, and UnusedService can be calculation fields that subtract the total points used from the total earned for that category.
If you just need to stay within the overall limit, you can use a single field to compute a running total of points used and subtract it from the above calculation.
Either way, future effortst that "earn points" add to a total in one field and activities that spend points would add to a different total so that the difference between the two always computes the available point total.
This helps a whole lot! We've worked out how things are going to work, and with your help, things are going to be fairly simple. Thanks!