Changed to use canBuy<stuff> hooks.

Should work, and I think I did it fine. Tell me if I messed up anything!