refactor pk() from Weapon