final IHex curHex = game.board.getHex(en.getPosition());
final IHex curHex = game.getBoard().getHex(en.getPosition());
    private boolean checkEngineExplosion(Entity en, StringBuffer sbDesc) {      if ( !game.getOptions().booleanOption("engine_explosions") || en.rolledForEngineExplosion )        return false;      int explosionBTH = 12;      int explosionRoll = Compute.d6(2);      boolean didExplode = explosionRoll >= explosionBTH;      sbDesc.append("        \n" + en.getDisplayName() + " has taken " + en.engineHitsThisRound + " engine hits this round.\n");      sbDesc.append("        Checking for engine explosion on BTH = " + explosionBTH + ", Roll = " + explosionRoll + "\n");      en.rolledForEngineExplosion = true;      if ( !didExplode ) {        sbDesc.append("        Engine safety systems remain in place.\n");      } else {        sbDesc.append("        ***The safety systems on the engine fail catastrophically resulting in a cascading engine failure!\n");        sbDesc.append( destroyEntity(en, "engine explosion", false, false) );        //kill the crew        en.getCrew().setDoomed(true);        //This is a hack so MM.NET marks the mech as not salvageable          if ( en instanceof Mech )            destroyLocation(en, Mech.LOC_CT);        //Light our hex on fire          final IHex curHex = game.board.getHex(en.getPosition());          if ( (null != curHex) && !curHex.containsTerrain(Terrains.FIRE) && curHex.containsTerrain(Terrains.WOODS) ) {            curHex.addTerrain(Terrains.getTerrainFactory().createTerrain(Terrains.FIRE, 1));            sbDesc.append("        The hex at " + en.getPosition().x + "," + en.getPosition().y + " ignites!\n");            sendChangedHex(en.getPosition());          }        //Nuke anyone that is in our hex          Enumeration entitesWithMe = game.getEntities(en.getPosition());          Hashtable entitesHit = new Hashtable();          entitesHit.put(en, en);          while ( entitesWithMe.hasMoreElements() ) {            Entity entity = (Entity)entitesWithMe.nextElement();            if ( entity.equals(en) )              continue;            sbDesc.append(destroyEntity(entity, "engine explosion proximity", false, false));            // Kill the crew            entity.getCrew().setDoomed(true);            entitesHit.put(entity, entity);          }        //Now we damage people near us          int engineRating = ((Mech)en).engineRating();          int[] damages = { 999, (engineRating / 10), (engineRating / 20), (engineRating / 40) };          Vector entites = game.getEntitiesVector();          for ( int i = 0; i < entites.size(); i++ ) {            Entity entity = (Entity)entites.elementAt(i);            if ( entitesHit.containsKey(entity) )              continue;            if ( entity.isDoomed() || entity.isDestroyed() || !entity.isDeployed() )              continue;            int range = en.getPosition().distance(entity.getPosition());            if ( range > 3 )              continue;            int damage = damages[range];            sbDesc.append("        \n" + entity.getDisplayName() + " is hit for " + damage + " damage!");            while (damage > 0) {                int cluster = Math.min(5, damage);                HitData hit = entity.rollHitLocation(ToHitData.HIT_NORMAL, Compute.targetSideTable(en, entity));                sbDesc.append(damageEntity(entity, hit, cluster));                damage -= cluster;            }            sbDesc.append("\n");          }      }      return didExplode;    }