sorry, one thing i just spotted is that bullets are still interacting with the plane once the explosion is triggered. if you add this into the explode(self) function.
-- disable collision - stops bullets interacting with the plane once destroyed
local body = b2d.get_body("#collisionobject")
b2d.body.set_active(body, false)
This will allow bullets to pass through to pass through the plane once the explosion has been activated