⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hmpfile.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            setupCriticals(mech, laCriticals, Mech.LOC_LARM);        }        compactCriticals(rtCriticals);        setupCriticals(mech, rtCriticals, Mech.LOC_RT);        compactCriticals(ltCriticals);        setupCriticals(mech, ltCriticals, Mech.LOC_LT);        compactCriticals(ctCriticals);        setupCriticals(mech, ctCriticals, Mech.LOC_CT);        setupCriticals(mech, headCriticals, Mech.LOC_HEAD);    }        private String mutateLBXAmmo(String crit) {        if((crit.startsWith("CLLBX") || crit.startsWith("ISLBX"))                && crit.endsWith("Ammo")) {            lbxCounter ++;            if(lbxCounter % 2 == 1) {                return crit.substring(0,crit.indexOf("Ammo")) + "CL Ammo";            }        }        return crit;    }    private String mutateATMAmmo(String crit) {        if(crit.startsWith("CLATM") && crit.endsWith("Ammo")) {            atmCounter ++;            if(atmCounter % 3 == 2) {                return crit.substring(0,crit.indexOf("Ammo")) + "HE Ammo";            }            else if(atmCounter % 3 == 0) {                return crit.substring(0,crit.indexOf("Ammo")) + "ER Ammo";            }        }        return crit;    }    private void setupCriticals(Mech mech, long[] criticals, int location)            throws EntityLoadingException {        // Use pass-by-value in case we need the original criticals        // later (getMtf for example).        long[] crits = criticals.clone();        for (int i = 0; i < mech.getNumberOfCriticals(location); i++) {            if (mech.getCritical(location, i) == null) {                long critical = crits[i];                String criticalName = getCriticalName(critical);                                if (isFusionEngine(critical)) {                    mech.setCritical(location, i, new CriticalSlot(                            CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_ENGINE));                } else if (isGyro(critical)) {                    mech.setCritical(location, i, new CriticalSlot(                            CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_GYRO));                } else if (isCockpit(critical)) {                    mech.setCritical(location, i, new CriticalSlot(                            CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_COCKPIT));                } else if (isLifeSupport(critical)) {                    mech                            .setCritical(location, i, new CriticalSlot(                                    CriticalSlot.TYPE_SYSTEM,                                    Mech.SYSTEM_LIFE_SUPPORT));                } else if (isSensor(critical)) {                    mech.setCritical(location, i, new CriticalSlot(                            CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_SENSORS));                } else if (isJumpJet(critical)) {                    try {                        if (jjType == 0)                            mech.addEquipment(EquipmentType.get("Jump Jet"),                                    location, false);                        else if (jjType == 1)                            mech.addEquipment(EquipmentType                                    .get("Improved Jump Jet"), location, false);                    } catch (LocationFullException ex) {                        System.err                                .print("Location was full when adding jump jets to slot #");                        System.err.print(i);                        System.err.print(" of location ");                        System.err.println(location);                        ex.printStackTrace(System.err);                        System.err.println("... aborting entity loading.");                        throw new EntityLoadingException(ex.getMessage());                    }                } else if (criticalName != null) {                    EquipmentType equipment = null;                    try {                        equipment = EquipmentType.get(criticalName);                        if (equipment != null) {                            boolean rearMounted = equipment instanceof WeaponType                                    && isRearMounted(critical);                            if (equipment.isSpreadable()) {                                Mounted m = (Mounted) spreadEquipment                                        .get(equipment);                                if (m != null) {                                    CriticalSlot criticalSlot = new CriticalSlot(                                            CriticalSlot.TYPE_EQUIPMENT, mech                                                    .getEquipmentNum(m),                                            equipment.isHittable());                                    mech.addCritical(location, criticalSlot);                                    if (criticalName                                            .equalsIgnoreCase("Armored Cowl")) {                                        mech.setCowl(5); // Initialize                                                            // armored cowl                                    }                                } else {                                    m = mech.addEquipment(equipment, location,                                            rearMounted);                                    spreadEquipment.put(equipment, m);                                }                            } else if (equipment instanceof WeaponType                                    && equipment                                            .hasFlag(WeaponType.F_SPLITABLE)) {                                // do we already have this one in this or an                                // outer location?                                Mounted m = null;                                boolean bFound = false;                                for (int x = 0, n = vSplitWeapons.size(); x < n; x++) {                                    m = (Mounted) vSplitWeapons.elementAt(x);                                    int nLoc = m.getLocation();                                    if ((nLoc == location || location == Mech                                            .getInnerLocation(nLoc))                                            && m.getType().equals(equipment)) {                                        bFound = true;                                        break;                                    }                                }                                if (bFound) {                                    m.setFoundCrits(m.getFoundCrits() + 1);                                    if (m.getFoundCrits() >= equipment                                            .getCriticals(mech)) {                                        vSplitWeapons.removeElement(m);                                    }                                    // if we're in a new location, set the                                    // weapon as split                                    if (location != m.getLocation()) {                                        m.setSplit(true);                                    }                                    // give the most restrictive location for                                    // arcs                                    int help=m.getLocation();                                    m.setLocation(Mech.mostRestrictiveLoc(                                            location, help));                                    if (location!=help) {                                        m.setSecondLocation(Mech.leastRestrictiveLoc(                                            location, help));                                    }                                } else {                                    // make a new one                                    m = new Mounted(mech, equipment);                                    m.setFoundCrits(1);                                    vSplitWeapons.addElement(m);                                }                                mech.addEquipment(m, location, rearMounted);                            } else {                                mech.addEquipment(equipment, location,                                        rearMounted);                            }                        } else {                            if (!criticalName.equals("-Empty-")) {                                // Can't load this piece of equipment!                                // Add it to the list so we can show the user.                                mech.addFailedEquipment(criticalName);                                // Make the failed equipment an empty slot                                crits[i] = 0;                                // Compact criticals again                                compactCriticals(crits);                                // Re-parse the same slot, since the compacting                                // could have moved new equipment to this slot                                i--;                            }                        }                    } catch (LocationFullException ex) {                        System.err.print("Location was full when adding ");                        System.err.print(equipment.getInternalName());                        System.err.print(" to slot #");                        System.err.print(i);                        System.err.print(" of location ");                        System.err.println(location);                        ex.printStackTrace(System.err);                        System.err.println("... aborting entity loading.");                        throw new EntityLoadingException(ex.getMessage());                    }                }            }        }    }    /* BLOCK_END */    private boolean isLowerArmActuator(long critical) {        return critical == 0x03;    }    private static boolean isHandActuator(long critical) {        return critical == 0x04;    }    private static boolean isLowerLegActuator(long critical) {        return critical == 0x07;    }    private static boolean isFootActuator(long critical) {        return critical == 0x08;    }    private static boolean isCockpit(long critical) {        return critical == 0x0E;    }    private static boolean isJumpJet(long critical) {        return critical == 0x0B;    }    private static boolean isLifeSupport(long critical) {        return critical == 0x0C;    }    private static boolean isSensor(long critical) {        return critical == 0x0D;    }    private static boolean isFusionEngine(long critical) {        return critical == 0x0F;    }    private static boolean isGyro(long critical) {        return critical == 0x10;    }    private static boolean isRearMounted(long critical) {        return (critical & 0xFFFF0000) != 0;    }    private static final Hashtable criticals = new Hashtable();    static {        // common criticals        criticals.put(new Long(0x00), "-Empty-");        criticals.put(new Long(0x01), "Shoulder");        criticals.put(new Long(0x02), "Upper Arm Actuator");        criticals.put(new Long(0x03), "Lower Arm Actuator");        criticals.put(new Long(0x04), "Hand Actuator");        criticals.put(new Long(0x05), "Hip");        criticals.put(new Long(0x06), "Upper Leg Actuator");        criticals.put(new Long(0x07), "Lower Leg Actuator");        criticals.put(new Long(0x08), "Foot Actuator");        criticals.put(new Long(0x09), "Heat Sink");        criticals.put(new Long(0x0B), "Jump Jet");        criticals.put(new Long(0x0C), "Life Support");        criticals.put(new Long(0x0D), "Sensors");        criticals.put(new Long(0x0E), "Cockpit");        criticals.put(new Long(0x0F), "Fusion Engine");        criticals.put(new Long(0x10), "Gyro");        criticals.put(new Long(0x13), "Turret");        criticals.put(new Long(0x14), "Endo Steel");        criticals.put(new Long(0x15), "Ferro-Fibrous");        criticals.put(new Long(0x16), "Triple Strength Myomer");        criticals.put(new Long(0x1a), "Variable Range TargSys");        criticals.put(new Long(0x1b), "Multi-Trac II");        criticals.put(new Long(0x1c), "Reactive Armor");        criticals.put(new Long(0x1d), "Laser-Reflective Armor");        criticals.put(new Long(0x1e), "Jump Booster");        criticals.put(new Long(0x20), "Supercharger");        criticals.put(new Long(0x21), "Light Ferro-Fibrous");        criticals.put(new Long(0x22), "Heavy Ferro-Fibrous");        criticals.put(new Long(0x25), "IS2 Compact Heat Sinks");        criticals.put(new Long(0x26), "CASE II");        criticals.put(new Long(0x27), "Null Signature System");        criticals.put(new Long(0x28), "Coolant Pod");        criticals.put(new Long(0x2B), "Claw (THB)");        criticals.put(new Long(0x2C), "Mace (THB)");        criticals.put(new Long(0x2d), "Armored Cowl");        criticals.put(new Long(0x2e), "Buzzsaw (UB)");        criticals.put(new Long(0xF8), "Combine");        criticals.put(new Long(0xF9), "Lift Hoist");        criticals.put(new Long(0xFA), "Chainsaw");        criticals.put(new Long(0xFC), "CLATM3");        criticals.put(new Long(0xFD), "CLATM6");        criticals.put(new Long(0xFE), "CLATM9");        criticals.put(new Long(0xFF), "CLATM12");        criticals.put(new Long(0x100), "SB Gauss Rifle (UB)");        criticals.put(new Long(0x101), "Caseless AC/2 (THB)");        criticals.put(new Long(0x102), "Caseless AC/5 (THB)");        criticals.put(new Long(0x103), "Caseless AC/10 (THB)");        criticals.put(new Long(0x104), "Caseless AC/20 (THB)");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -