protected void showShipStats(TrekShip targetShip) {
        showStats = true;
        if (targetShip == null || !targetShip.isPlaying()) {
            this.targetShip = null;
            showStats = false;
            return;
        }

        if (this.targetShip != targetShip)
            this.targetShip = targetShip;

        clearScannerChecker(TrekHud.SCANNER_STATS);

        /*
           * +Friendly Voyager
             |Romulan Warbird
             |Warp:  Turn Max  Emer
             |       12.0 13.0 171
             |Phaser Banks:   40 AG
             |   Range:    0 -  500
             |Torpedo Tubes:   1 VP
                 |   Range:  500 - 2000
             |Torps Mines Drones
                 |  35     6     0
             |Scan Range:    ~ 8000
             |Cloak
             |Home:         Romulus
             +
           */

        drawScannerLine(3, format(targetShip.name, "", 20));
        drawScannerLine(4, format(targetShip.fullClassName, "", 20));
        drawScannerLine(5, format("Warp: Turn Max  Emer", "", 20));
        drawScannerLine(6, format("      " + format("", "" + targetShip.maxTurnWarp, 4) + " " + format("", "" + targetShip.maxCruiseWarp, 4) + " " + format("", "" + targetShip.damageWarp + ".0", 4), "", 20));

        String phaserString = "";

        switch (targetShip.phaserType) {
            case TrekShip.PHASER_AGONIZER:
                phaserString = "AG";
                break;
            case TrekShip.PHASER_EXPANDINGSPHEREINDUCER:
                phaserString = "ESI";
                break;
            case TrekShip.PHASER_NORMAL:
                phaserString = "PH";
                break;
            case TrekShip.PHASER_TELEPORTER:
                phaserString = "TL";
                break;
            case TrekShip.PHASER_DISRUPTOR:
                phaserString = "DI";
                break;
            default:
                phaserString = "PH";
                break;
        }
        drawScannerLine(7, format("Phaser Banks:", targetShip.maxPhaserBanks + " " + phaserString, 20));

        if (targetShip.homePlanet.equals("Cardassia"))
            drawScannerLine(8, format("   Range:", "1 - " + targetShip.minPhaserRange, 20));
        else
            drawScannerLine(8, format("   Range:", "0 - " + targetShip.minPhaserRange, 20));

        String torpString;

        switch (targetShip.torpedoType) {
            case TrekShip.TORPEDO_BOLTPLASMA:
                torpString = "BP";
                break;
            case TrekShip.TORPEDO_NORMAL:
                torpString = "TP";
                break;
            case TrekShip.TORPEDO_OBLITERATOR:
                torpString = "OB";
                break;
            case TrekShip.TORPEDO_PHOTON:
                torpString = "PH";
                break;
            case TrekShip.TORPEDO_PLASMA:
                torpString = "PL";
                break;
            case TrekShip.TORPEDO_VARIABLESPEEDPLASMA:
                torpString = "VP";
                break;
            default:
                torpString = "PH";
                break;
        }

        drawScannerLine(9, format("Torpedo Tubes:", targetShip.maxTorpedoBanks + " " + torpString, 20));
        drawScannerLine(10, format("   Range:", targetShip.minTorpedoRange + " - " + targetShip.maxTorpedoRange, 20));
        drawScannerLine(11, format("Torps Mines Drones", "", 20));
        drawScannerLine(12, format(format(" ", targetShip.maxTorpedoStorage + " ", 4) + " " + format(" ", targetShip.maxMineStorage + " ", 5) + " " + format(" ", targetShip.maxDroneStorage + " ", 6), "", 20));
        drawScannerLine(13, format("Scan Range:", "~ " + new Double(targetShip.scanRange).intValue(), 20));
        drawScannerLine(14, format((targetShip.cloak) ? "Cloak" : "", "", 20));
        drawScannerLine(15, format("", "", 20));
        drawScannerLine(16, format("Home:", targetShip.homePlanet, 20));
    }