Two problems I've noticed with GET ALL:
- It tries to get objects that are already in your inventory and says "You already have the <object>." It should only try to take objects that are in the room.
- If you get multiple objects, any responses from on_tick{} are interspersed with "You take the <object>." Background processing should only take place after attempting to take all the individual objects.