} else {  r = new Report(4166); r.subject = ae.getId(); r.addDesc(te); r.addDesc(ae); r.add(targetPushResult.toHit.getValue()); r.add(targetPushResult.roll); addReport(r);
    private void resolvePushAttack(PhysicalResult pr, int lastEntityId) {        final PushAttackAction paa = (PushAttackAction)pr.aaa;        final Entity ae = game.getEntity(paa.getEntityId());        // PLEASE NOTE: buildings are *never* the target of a "push".        final Entity te = game.getEntity(paa.getTargetId());        // get roll and ToHitData from the PhysicalResult        int roll = pr.roll;        final ToHitData toHit = pr.toHit;        Report r;        // was this push resolved earlier?        if (pr.pushBackResolved) {            return;        }        if (lastEntityId != paa.getEntityId()) {            //who is making the attack            r = new Report(4005);            r.subject = ae.getId();            r.addDesc(ae);            addReport(r);        }        r = new Report(4155);        r.subject = ae.getId();        r.indent();        r.addDesc(te);        r.newlines = 0;        addReport(r);        if (toHit.getValue() == ToHitData.IMPOSSIBLE) {            r = new Report(4160);            r.subject = ae.getId();            r.add(toHit.getDesc());            addReport(r);            return;        }        // report the roll        r = new Report(4025);        r.subject = ae.getId();        r.add(toHit.getValue());        r.add(roll);        r.newlines = 0;        addReport(r);        // check if our target has a push against us, too, and get it        PhysicalResult targetPushResult = null;        for (Enumeration i = physicalResults.elements(); i.hasMoreElements();) {            PhysicalResult tpr = (PhysicalResult)i.nextElement();            if (tpr.aaa.getEntityId() == te.getId() &&                tpr.aaa instanceof PushAttackAction &&                tpr.aaa.getTargetId() == ae.getId() ) {                targetPushResult = tpr;            }        }        // if our target has a push against us, we need to resolve both now        if (targetPushResult != null) {            targetPushResult.pushBackResolved = true;            // do both hit?            if (targetPushResult.roll >= targetPushResult.toHit.getValue() &&                roll >= toHit.getValue()) {                r = new Report(4165);                r.subject = ae.getId();                r.addDesc(te);                r.addDesc(te);                r.addDesc(ae);                r.add(toHit.getValue());                r.add(roll);                r.addDesc(ae);                addReport(r);                PilotingRollData targetPushPRD = new PilotingRollData(te.getId(), getKickPushPSRMod(ae, te, 0), "was pushed");                targetPushPRD.setCumulative(false); // see Bug# 811987 for more info                PilotingRollData pushPRD = new PilotingRollData(ae.getId(), getKickPushPSRMod(ae, te, 0), "was pushed");                pushPRD.setCumulative(false); // see Bug# 811987 for more info                game.addPSR(pushPRD);                game.addPSR(targetPushPRD);                return;            }        }        // do we hit?        if (roll < toHit.getValue()) {            //miss            r = new Report(4035);            r.subject = ae.getId();            addReport(r);            return;        }        // we hit...        int direction = ae.getFacing();        Coords src = te.getPosition();        Coords dest = src.translated(direction);        PilotingRollData pushPRD = new PilotingRollData(te.getId(), getKickPushPSRMod(ae, te, 0), "was pushed");        pushPRD.setCumulative(false); // see Bug# 811987 for more info        if (Compute.isValidDisplacement(game, te.getId(), te.getPosition(), direction)) {            r = new Report(4170);            r.subject = ae.getId();            r.newlines = 0;            addReport(r);            if (game.getBoard().contains(dest)) {                r = new Report(4175);                r.subject = ae.getId();                r.add(dest.getBoardNum(), true);                addReport(r);            } else {                //uh-oh, pushed off board                r = new Report(4180);                r.subject = ae.getId();                addReport(r);            }            doEntityDisplacement(te, src, dest, pushPRD);            // if push actually moved the target, attacker follows thru            if (!te.getPosition().equals(src)) {                ae.setPosition(src);            }        } else {            //targe imovable            r = new Report(4185);            r.subject = ae.getId();            addReport(r);            game.addPSR(pushPRD);        }        addNewLines();    }