if (game.getOptions().booleanOption("auto_abandon_unit")) { vDesc.addAll(abandonEntity(entity)); }
    private Vector breachLocation(Entity entity, int loc, IHex hex) {        Vector vDesc = new Vector();        Report r;        if (entity.getInternal(loc) < 0 ||            entity.getLocationStatus(loc) < ILocationExposureStatus.NORMAL) {            //already destroyed or breached? don't bother            return vDesc;        }        r = new Report(6350);        r.subject = entity.getId();        r.add(entity.getShortName());        r.add(entity.getLocationAbbr(loc));        r.newlines = 0;        vDesc.addElement(r);        if (entity instanceof Tank) {            vDesc.addAll(                destroyEntity(entity, "hull breach", true, true));            return vDesc;        }        // equipment and crits will be marked in applyDamage?        // equipment marked missing        for (Enumeration i = entity.getEquipment(); i.hasMoreElements();) {            Mounted mounted = (Mounted)i.nextElement();            if (mounted.getLocation() == loc) {                mounted.setBreached(true);            }        }        // all critical slots set as useless        for (int i = 0; i < entity.getNumberOfCriticals(loc); i++) {            final CriticalSlot cs = entity.getCritical(loc, i);            if (cs != null) {                // for every undamaged actuator destroyed by breaching,                // we make a PSR (see bug 1040858)                if (entity.locationIsLeg(loc)) {                    if (cs.isHittable()) {                        switch(cs.getIndex()) {                            case Mech.ACTUATOR_UPPER_LEG :                            case Mech.ACTUATOR_LOWER_LEG :                            case Mech.ACTUATOR_FOOT :                                // leg/foot actuator piloting roll                                game.addPSR( new PilotingRollData                                    (entity.getId(), 1, "leg/foot actuator hit") );                                break;                            case Mech.ACTUATOR_HIP :                                // hip piloting roll (at +0, because we get the +2                                // anyway because the location is breached                                // phase report will look a bit weird, but the roll                                // is correct                                game.addPSR( new PilotingRollData                                    (entity.getId(), 0, "hip actuator hit") );                                break;                        }                    }                }                cs.setBreached(true);            }        }        //Check location for engine/cockpit breach and report accordingly        if (loc == Mech.LOC_CT) {            vDesc.addAll( destroyEntity(entity, "hull breach"));        }        if (loc == Mech.LOC_HEAD) {            entity.crew.setDoomed(true);            vDesc.addAll( destroyEntity(entity, "hull breach"));            if (entity.getLocationStatus(loc) == ILocationExposureStatus.WET) {                r = new Report(6355);                r.subject = entity.getId();                r.addDesc(entity);                vDesc.addElement(r);            } else {                r = new Report(6360);                r.subject = entity.getId();                r.addDesc(entity);                vDesc.addElement(r);            }        }        // Set the status of the location.        // N.B. if we set the status before rolling water PSRs, we get a        // "LEG DESTROYED" modifier; setting the status after gives a hip        // actuator modifier.        entity.setLocationStatus(loc, ILocationExposureStatus.BREACHED);        // Did the hull breach destroy the engine?        if (entity.getHitCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_ENGINE,                               Mech.LOC_LT) +            entity.getHitCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_ENGINE,                               Mech.LOC_CT) +            entity.getHitCriticals(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_ENGINE,                               Mech.LOC_RT)            >= 3) {            vDesc.addAll( destroyEntity(entity, "engine destruction"));        }        return vDesc;    }