First of all, you have 2 ArmRocketImage::onFire functions, the first one gets overwritten by the 2nd one. Items don't disappear because %obj.lastFragSlot is never defined.
Keep the 2nd one, and replace the first one with ArmRocketImage::onMount(%this, %obj, %slot), make this function empty and add %obj.lastFragSlot = %obj.currTool;