Extend mdefense to expect the projectile the monster was attacked with as paramter.

This allows detection of melee vs ranged attack.
Changed the shocker defense to check for melee instead of ranged attack.