+ dest.getBoardNum() + "\n");
).append( dest.getBoardNum() ).append( "\n");
    private void resolvePushAttack(PushAttackAction paa, int lastEntityId) {        final Entity ae = game.getEntity(paa.getEntityId());        final Entity te = game.getEntity(paa.getTargetId());                if (lastEntityId != paa.getEntityId()) {            phaseReport.append("\nPhysical attacks for " + ae.getDisplayName() + "\n");        }                phaseReport.append("    Pushing " + te.getDisplayName());        //        // should we even bother?//        if (te.isDestroyed() || te.isDoomed() || te.crew.isDead()) {//            phaseReport.append(" but the target is already destroyed!\n");//            return;//        }                // compute to-hit        ToHitData toHit = Compute.toHitPush(game, paa);        if (toHit.getValue() == ToHitData.IMPOSSIBLE) {            phaseReport.append(", but the push is impossible (" + toHit.getDesc() + ")\n");            return;        }        phaseReport.append("; needs " + toHit.getValue() + ", ");                // roll        int roll = Compute.d6(2);        phaseReport.append("rolls " + roll + " : ");                // do we hit?        if (roll < toHit.getValue()) {            phaseReport.append("misses.\n");            return;        }                // we hit...        int direction = ae.getFacing();                Coords src = te.getPosition();        Coords dest = src.translated(direction);                if (Compute.isValidDisplacement(game, te.getId(), te.getPosition(), direction)) {            phaseReport.append("succeeds: target is pushed into hex "            + dest.getBoardNum()            + "\n");            doEntityDisplacement(te, src, dest, new PilotingRollData(te.getId(), 0, "was pushed"));                        // if push actually moved the target, attacker follows thru            if (!te.getPosition().equals(src)) {                ae.setPosition(src);            }        } else {            if (game.getOptions().booleanOption("push_off_board") && !game.board.contains(dest)) {                game.moveToGraveyard(te.getId());                send(createRemoveEntityPacket(te.getId()));                phaseReport.append("\n*** " + te.getDisplayName() + " has been forced from the field. ***\n");                ae.setPosition(src);            } else {                phaseReport.append("succeeds, but target can't be moved.\n");                pilotRolls.addElement(new PilotingRollData(te.getId(), 0, "was pushed"));            }        }                        phaseReport.append("\n");    }