if (prone) { PilotingRollData tmpPRD = this.centity.getEntity().checkGetUp(getStep(0)); if ((tmpPRD != null) && ((tmpPRD.getValue() == TargetRoll.IMPOSSIBLE) || (tmpPRD.getValue() == TargetRoll.AUTOMATIC_FAIL))) { retVal *= 0.01; } }
    public double getUtility() {        //self threat and self damage are considered transient        double temp_threat =            (this.threat + this.movement_threat + this.self_threat + (double) this.getMovementheatBuildup() / 20)                / getCEntity().strategy.attack;        double temp_damage = (this.damage + this.self_damage) * this.centity.strategy.attack;        if (this.threat + this.movement_threat > 4 * this.centity.avg_armor) {            double ratio =                (this.threat + this.movement_threat) / (this.centity.avg_armor + .25 * this.centity.avg_iarmor);            if (ratio > 2) {                temp_threat += this.centity.bv / 15.0; //likely to die                this.doomed = true;                this.inDanger = true;            } else if (ratio > 1) {                temp_threat += this.centity.bv / 30.0; //in danger                this.inDanger = true;            } else {                temp_threat += this.centity.bv / 75.0; //in danger                this.inDanger = true;            }        } else if (this.threat + this.movement_threat > 30) {            temp_threat += this.centity.entity.getWeight();        }        double retVal = temp_threat - temp_damage;        if (hasActiveMASC()) {            int mascTN = 0;            for (final Enumeration i = getSteps(); i.hasMoreElements();) {                MoveStep step = (MoveStep) i.nextElement();                if (step.isUsingMASC() && step.getTargetNumberMASC() > mascTN) {                    mascTN = step.getTargetNumberMASC();                }            }            double mascMult = Compute.oddsAbove(mascTN)/100;            retVal *= (mascMult > 0) ? mascMult : 0.01;        }        return retVal;    }