Well, explosion() mostly goes around calling bash() on the terrain; would doing that directly be a better solution?