Expanded upon a check in the fire function to make sure hasFired is in the correct state more often.