This won't stop looters, perhaps slow down the regen rate. Also make sure low players have enough points to withdraw a whole set of good armour, not be restricted because they're low to not being able to withdraw half a set - and almost making the box a stash for high level players.

Make points/status given degenerate over the reboot. High points given for a donation with a long time to go until reboot, low points given with 10 seconds to go - back to high points for withdraw just after to stop you know what. (this code may well be part of hoggley)

Players over a certain level whom use the box (considered high) should have slower if any regen points rates, being as though they are the ones able to get their own gear, and should also be punished for removing all for their own stash.

An items value doesn't necessarily reflect the worth of an item, being as though >2000 is hidden from store view, ring of the ancients has a low value and is most players prized item. Perhaps an algorithm which uses the ac/wc also?

All it would have to be is query obj's value and set that cost to your box status.
Every time you donate, your box status goes up for the boot, and you can't withdraw anything without any status.
The values of items are usually higher than what you get for them in the shops, too. so good shit is like 4500 range. And so someone can donate a bunch of crap and still won't have a huge status.

Could make it that anything with a value under 500 doesn't give any status at all to help alliviate that last problem with box spam of trash.

I think if you don't return stuff to box, your box status should be in the negatives next boot.
Box status could be a table at the box or something you can call upon and check whenever you donate/withdraw.

ie.

You donate an iron plate to the guild box.
Box status: 2000
You withdraw an iron shield from the guild box.
Box status: 1400

Not sure on the values.

Then the fail messsages:

You try, and fail to withdraw an iron plate from the guild box.
Box status of 1400 not sufficient to borrow that item.

I'm cool with the idea, have one addition. Only weapons/armours should be affected by the system, not other objects, to prevent donation of 'valuables'. The donationcap, 500 as suggested, might need experimenting with, and so will the whole system, perhaps there should be two boxes during testing, one normal and one new one?
Use is_weapon and is_armour to identify an object as the given objects...

You'll have to use hook object_arrived to catch arriving objects, since there is no longer a donate/withdraw command. Youll also have to add a prevent_get hook to each object inserted in the box that has to check before it leaves the box, ie, the valueable armours/weapons...