/* * PartInventiry.java * * Copyright (c) 2009 Jay Lawson <jaylawson39 at yahoo.com>. All rights reserved. * * This file is part of MekHQ. * * MekHQ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MekHQ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MekHQ. If not, see <http://www.gnu.org/licenses/>. */ package mekhq.campaign; import java.io.PrintWriter; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import megamek.common.TechConstants; import mekhq.MekHQ; import mekhq.MekHqXmlUtil; import mekhq.Utilities; import mekhq.campaign.market.PersonnelMarket; import mekhq.campaign.parts.Part; import mekhq.campaign.personnel.Person; import mekhq.campaign.personnel.SkillType; import mekhq.campaign.rating.UnitRatingMethod; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * @author natit */ public class CampaignOptions implements Serializable { private static final long serialVersionUID = 5698008431749303602L; public final static int TECH_INTRO = 0; public final static int TECH_STANDARD = 1; public final static int TECH_ADVANCED = 2; public final static int TECH_EXPERIMENTAL = 3; public final static int TECH_UNOFFICIAL = 4; // This must always be the highest tech level in order to hide parts // that haven't been invented yet, or that are completely extinct public final static int TECH_UNKNOWN = 5; public final static int TRANSIT_UNIT_DAY = 0; public final static int TRANSIT_UNIT_WEEK = 1; public final static int TRANSIT_UNIT_MONTH = 2; public final static int TRANSIT_UNIT_NUM = 3; public final static String S_TECH = "Tech"; public final static String S_AUTO = "Automatic Success"; public final static int PRISONER_RANK = 0; public final static int BONDSMAN_RANK = 1; public final static int REPAIR_SYSTEM_STRATOPS = 0; public final static int REPAIR_SYSTEM_WARCHEST_CUSTOM = 1; public final static int REPAIR_SYSTEM_GENERIC_PARTS = 2; //FIXME: This needs to be localized public final static String[] REPAIR_SYSTEM_NAMES = {"Strat Ops", "Warchest Custom", "Generic Spare Parts"}; private boolean useFactionForNames; private boolean useUnitRating; //personnel related private boolean useTactics; private boolean useInitBonus; private boolean useToughness; private boolean useArtillery; private boolean useAbilities; private boolean useEdge; private boolean useImplants; private boolean altQualityAveraging; private int healWaitingPeriod; private int naturalHealingWaitingPeriod; private boolean useAdvancedMedical; // Unofficial private boolean useDylansRandomXp; // Unofficial private boolean useRandomHitsForVees; private int minimumHitsForVees; private boolean tougherHealing; private int maxAcquisitions; private boolean useUnofficialProcreation; private boolean useUnofficialProcreationNoRelationship; private boolean useParentage; private boolean logConception; private boolean useTransfers; private boolean capturePrisoners; private int defaultPrisonerStatus; //personnel market related private boolean personnelMarketReportRefresh; private int personnelMarketType; private int personnelMarketRandomEliteRemoval; private int personnelMarketRandomVeteranRemoval; private int personnelMarketRandomRegularRemoval; private int personnelMarketRandomGreenRemoval; private int personnelMarketRandomUltraGreenRemoval; private double personnelMarketDylansWeight; //unit related private boolean useQuirks; //tech and unit limits private boolean limitByYear; private boolean disallowExtinctStuff; private boolean allowClanPurchases; private boolean allowISPurchases; private boolean allowCanonOnly; private boolean allowCanonRefitOnly; private int techLevel; private boolean useAmmoByType; // Unofficial //finance related private boolean payForParts; private boolean payForUnits; private boolean payForSalaries; private boolean payForRecruitment; private boolean payForOverhead; private boolean payForMaintain; private boolean payForTransport; private boolean sellUnits; private boolean sellParts; private boolean useLoanLimits; private double[] usedPartsValue; private double damagedPartsValue; private double canceledOrderReimbursement; private boolean usePercentageMaint; // Unofficial private boolean infantryDontCount; // Unofficial private double clanPriceModifier; //contract related private boolean equipmentContractBase; private double equipmentContractPercent; private boolean equipmentContractSaleValue; private boolean blcSaleValue; //acquisition related private int waitingPeriod; private String acquisitionSkill; private boolean acquisitionSupportStaffOnly; private int nDiceTransitTime; private int constantTransitTime; private int unitTransitTime; private int acquireMosBonus; private int acquireMosUnit; private int acquireMinimumTime; private int acquireMinimumTimeUnit; private int clanAcquisitionPenalty; private int isAcquisitionPenalty; //xp related private int scenarioXP; private int killsForXP; private int killXPAward; private int nTasksXP; private int tasksXP; private int mistakeXP; private int successXP; private int idleXP; private int targetIdleXP; private int monthsIdleXP; private int contractNegotiationXP; private int adminXP; private int adminXPPeriod; //repair related private boolean destroyByMargin; private int destroyMargin; private int repairSystem; private boolean useEraMods; private boolean assignedTechFirst; private boolean resetToFirstTech; private int destroyPartTarget; //maintenance related private boolean checkMaintenance; private int maintenanceCycleDays; private int maintenanceBonus; private boolean useQualityMaintenance; private boolean useUnofficalMaintenance; private boolean reverseQualityNames; //Dragoon's Rating private UnitRatingMethod unitRatingMethod; //salary related private int[] salaryTypeBase; private double[] salaryXpMultiplier; private double salaryCommissionMultiplier; private double salaryEnlistedMultiplier; private double salaryAntiMekMultiplier; //phenotype related private int probPhenoMW; private int probPhenoAero; private int probPhenoBA; private int probPhenoVee; //random portraits related private boolean[] usePortraitForType; //Against the Bot related private boolean useAtB; private boolean useAero; private boolean useVehicles; private boolean clanVehicles; private boolean useDropShips; private int skillLevel; private boolean doubleVehicles; private boolean adjustPlayerVehicles; private int opforLanceTypeMechs; private int opforLanceTypeMixed; private int opforLanceTypeVehicles; private boolean opforUsesVTOLs; private boolean regionalMechVariations; private boolean aeroRecruitsHaveUnits; private boolean useShareSystem; private boolean sharesExcludeLargeCraft; private boolean sharesForAll; private boolean retirementRolls; private boolean trackUnitFatigue; private boolean customRetirementMods; private boolean trackOriginalUnit; private boolean mercSizeLimited; private String[] rats = {"Xotl", "Total Warfare"}; private boolean staticRATs; private boolean ignoreRatEra; private int searchRadius; private double intensity; private boolean variableContractLength; private boolean instantUnitMarketDelivery; private boolean useWeatherConditions; private boolean useLightConditions; private boolean usePlanetaryConditions; private boolean useLeadership; private boolean useStrategy; private int baseStrategyDeployment; private int additionalStrategyDeployment; private boolean adjustPaymentForStrategy; private boolean restrictPartsByMission; private boolean limitLanceWeight; private boolean limitLanceNumUnits; private boolean useAtBCapture; private boolean contractMarketReportRefresh; private boolean unitMarketReportRefresh; private int startGameDelay; //Mass Repair/Salvage Options private boolean massRepairUseExtraTime; private boolean massRepairUseRushJob; private boolean massRepairAllowCarryover; private boolean massRepairOptimizeToCompleteToday; private boolean massRepairScrapImpossible; private boolean massRepairUseAssignedTechsFirst; private boolean massRepairReplacePod; private List<MassRepairOption> massRepairOptions; public CampaignOptions() { clanPriceModifier = 1.0; useFactionForNames = true; repairSystem = REPAIR_SYSTEM_STRATOPS; useEraMods = false; assignedTechFirst = false; resetToFirstTech = false; useUnitRating = true; useTactics = false; useInitBonus = false; useToughness = false; useArtillery = false; useAbilities = false; useEdge = false; useImplants = false; altQualityAveraging = false; useAdvancedMedical = false; useDylansRandomXp = false; useQuirks = false; payForParts = false; payForUnits = false; payForSalaries = false; payForRecruitment = false; payForOverhead = false; payForMaintain = false; payForTransport = false; useLoanLimits = false; sellUnits = false; sellParts = false; limitByYear = true; disallowExtinctStuff = false; allowClanPurchases = true; allowISPurchases = true; allowCanonOnly = false; allowCanonRefitOnly = false; useAmmoByType = false; usePercentageMaint = false; infantryDontCount = false; techLevel = TECH_EXPERIMENTAL; scenarioXP = 1; killsForXP = 0; killXPAward = 0; nTasksXP = 25; tasksXP = 1; mistakeXP = 0; successXP = 0; usedPartsValue = new double[6]; usedPartsValue[0] = 0.1; usedPartsValue[1] = 0.2; usedPartsValue[2] = 0.3; usedPartsValue[3] = 0.5; usedPartsValue[4] = 0.7; usedPartsValue[5] = 0.9; damagedPartsValue = 0.33; canceledOrderReimbursement = 0.5; usePortraitForType = new boolean[Person.T_NUM]; for (int i = 0; i < Person.T_NUM; i++) { usePortraitForType[i] = false; } usePortraitForType[Person.T_MECHWARRIOR] = true; idleXP = 0; targetIdleXP = 10; monthsIdleXP = 2; contractNegotiationXP = 0; adminXP = 0; adminXPPeriod = 1; unitRatingMethod = UnitRatingMethod.CAMPAIGN_OPS; waitingPeriod = 7; acquisitionSkill = S_TECH; acquisitionSupportStaffOnly = true; nDiceTransitTime = 1; constantTransitTime = 0; unitTransitTime = TRANSIT_UNIT_MONTH; acquireMosBonus = 1; acquireMosUnit = TRANSIT_UNIT_MONTH; acquireMinimumTime = 1; acquireMinimumTimeUnit = TRANSIT_UNIT_MONTH; equipmentContractBase = false; equipmentContractPercent = 5.0; equipmentContractSaleValue = false; blcSaleValue = false; clanAcquisitionPenalty = 0; isAcquisitionPenalty = 0; healWaitingPeriod = 1; naturalHealingWaitingPeriod = 15; destroyByMargin = false; destroyMargin = 4; destroyPartTarget = 10; maintenanceCycleDays = 7; maintenanceBonus = -1; useQualityMaintenance = true; useUnofficalMaintenance = false; reverseQualityNames = false; checkMaintenance = true; useRandomHitsForVees = false; minimumHitsForVees = 1; maxAcquisitions = 0; useUnofficialProcreation = false; useUnofficialProcreationNoRelationship = false; useParentage = false; logConception = false; useTransfers = true; capturePrisoners = true; defaultPrisonerStatus = PRISONER_RANK; personnelMarketReportRefresh = true; personnelMarketType = PersonnelMarket.TYPE_STRAT_OPS; personnelMarketRandomEliteRemoval = 10; personnelMarketRandomVeteranRemoval = 8; personnelMarketRandomRegularRemoval = 6; personnelMarketRandomGreenRemoval = 4; personnelMarketRandomUltraGreenRemoval = 4; personnelMarketDylansWeight = 0.3; salaryTypeBase = new int[Person.T_NUM]; salaryTypeBase[Person.T_MECHWARRIOR] = 1500; salaryTypeBase[Person.T_AERO_PILOT] = 1500; salaryTypeBase[Person.T_VEE_GUNNER] = 900; salaryTypeBase[Person.T_GVEE_DRIVER] = 900; salaryTypeBase[Person.T_NVEE_DRIVER] = 900; salaryTypeBase[Person.T_VTOL_PILOT] = 900; salaryTypeBase[Person.T_CONV_PILOT] = 900; salaryTypeBase[Person.T_INFANTRY] = 750; salaryTypeBase[Person.T_BA] = 960; salaryTypeBase[Person.T_SPACE_PILOT] = 1000; salaryTypeBase[Person.T_SPACE_GUNNER] = 1000; salaryTypeBase[Person.T_SPACE_CREW] = 1000; salaryTypeBase[Person.T_NAVIGATOR] = 1000; salaryTypeBase[Person.T_DOCTOR] = 1500; salaryTypeBase[Person.T_ADMIN_COM] = 500; salaryTypeBase[Person.T_ADMIN_HR] = 500; salaryTypeBase[Person.T_ADMIN_LOG] = 500; salaryTypeBase[Person.T_ADMIN_TRA] = 500; salaryTypeBase[Person.T_MECH_TECH] = 800; salaryTypeBase[Person.T_AERO_TECH] = 800; salaryTypeBase[Person.T_BA_TECH] = 800; salaryTypeBase[Person.T_MECHANIC] = 800; salaryTypeBase[Person.T_ASTECH] = 400; salaryTypeBase[Person.T_MEDIC] = 400; salaryTypeBase[Person.T_PROTO_PILOT] = 960; salaryXpMultiplier = new double[5]; salaryXpMultiplier[SkillType.EXP_ULTRA_GREEN] = 0.6; salaryXpMultiplier[SkillType.EXP_GREEN] = 0.6; salaryXpMultiplier[SkillType.EXP_REGULAR] = 1.0; salaryXpMultiplier[SkillType.EXP_VETERAN] = 1.6; salaryXpMultiplier[SkillType.EXP_ELITE] = 3.2; salaryAntiMekMultiplier = 1.5; salaryCommissionMultiplier = 1.2; salaryEnlistedMultiplier = 1.0; probPhenoMW = 95; probPhenoAero = 95; probPhenoBA = 100; probPhenoVee = 0; tougherHealing = false; useAtB = false; useAero = false; useVehicles = true; clanVehicles = false; doubleVehicles = true; adjustPlayerVehicles = false; opforLanceTypeMechs = 1; opforLanceTypeMixed = 2; opforLanceTypeVehicles = 3; opforUsesVTOLs = true; useDropShips = false; skillLevel = 2; aeroRecruitsHaveUnits = false; useShareSystem = false; sharesExcludeLargeCraft = false; sharesForAll = false; retirementRolls = true; customRetirementMods = false; trackUnitFatigue = false; trackOriginalUnit = false; mercSizeLimited = false; regionalMechVariations = false; searchRadius = 800; intensity = 1.0; variableContractLength = false; instantUnitMarketDelivery = false; useWeatherConditions = true; useLightConditions = true; usePlanetaryConditions = true; usePlanetaryConditions = false; useLeadership = true; useStrategy = true; baseStrategyDeployment = 3; additionalStrategyDeployment = 1; adjustPaymentForStrategy = false; restrictPartsByMission = true; limitLanceWeight = true; limitLanceNumUnits = true; useAtBCapture = false; contractMarketReportRefresh = true; unitMarketReportRefresh = true; startGameDelay = 500; //Mass Repair/Salvage Options massRepairUseExtraTime = true; massRepairUseRushJob = true; massRepairAllowCarryover = true; massRepairOptimizeToCompleteToday = false; massRepairScrapImpossible = false; massRepairUseAssignedTechsFirst = false; massRepairReplacePod = true; massRepairOptions = new ArrayList<MassRepairOption>(); for (int i = 0; i < MassRepairOption.VALID_REPAIR_TYPES.length; i++) { massRepairOptions.add(new MassRepairOption(MassRepairOption.VALID_REPAIR_TYPES[i])); } } public UnitRatingMethod getUnitRatingMethod() { return unitRatingMethod; } public void setUnitRatingMethod(UnitRatingMethod method) { this.unitRatingMethod = method; } public static String getRepairSystemName(int repairSystem) { return REPAIR_SYSTEM_NAMES[repairSystem]; } public static String getTechLevelName(int lvl) { switch (lvl) { case TECH_INTRO: return TechConstants.T_SIMPLE_NAMES[TechConstants.T_SIMPLE_INTRO]; case TECH_STANDARD: return TechConstants.T_SIMPLE_NAMES[TechConstants.T_SIMPLE_STANDARD]; case TECH_ADVANCED: return TechConstants.T_SIMPLE_NAMES[TechConstants.T_SIMPLE_ADVANCED]; case TECH_EXPERIMENTAL: return TechConstants.T_SIMPLE_NAMES[TechConstants.T_SIMPLE_EXPERIMENTAL]; case TECH_UNOFFICIAL: return TechConstants.T_SIMPLE_NAMES[TechConstants.T_SIMPLE_UNOFFICIAL]; default: return "Unknown"; } } public static String getTransitUnitName(int unit) { switch (unit) { case TRANSIT_UNIT_DAY: return "Days"; case TRANSIT_UNIT_WEEK: return "Weeks"; case TRANSIT_UNIT_MONTH: return "Months"; default: return "Unknown"; } } public boolean useEraMods() { return useEraMods; } public void setEraMods(boolean b) { this.useEraMods = b; } public boolean useAssignedTechFirst() { return assignedTechFirst; } public void setAssignedTechFirst(boolean assignedTechFirst) { this.assignedTechFirst = assignedTechFirst; } public boolean useResetToFirstTech() { return resetToFirstTech; } public void setResetToFirstTech(boolean resetToFirstTech) { this.resetToFirstTech = resetToFirstTech; } public boolean useDragoonRating() { return useUnitRating; } public void setDragoonRating(boolean b) { this.useUnitRating = b; } public double getClanPriceModifier() { return clanPriceModifier; } public void setClanPriceModifier(double d) { this.clanPriceModifier = d; } public double getUsedPartsValue(int quality) { return usedPartsValue[quality]; } public void setUsedPartsValue(double d, int quality) { this.usedPartsValue[quality] = d; } public double getDamagedPartsValue() { return damagedPartsValue; } public void setDamagedPartsValue(double d) { this.damagedPartsValue = d; } public double GetCanceledOrderReimbursement() { return canceledOrderReimbursement; } public void setCanceledOrderReimbursement(double d) { this.canceledOrderReimbursement = d; } public int getRepairSystem() { return repairSystem; } public void setRepairSystem(int i) { this.repairSystem = i; } public boolean useFactionForNames() { return useFactionForNames; } public void setFactionForNames(boolean b) { this.useFactionForNames = b; } public boolean useTactics() { return useTactics; } public void setUseTactics(boolean b) { this.useTactics = b; } public boolean useInitBonus() { return useInitBonus; } public void setInitBonus(boolean b) { this.useInitBonus = b; } public boolean useToughness() { return useToughness; } public void setToughness(boolean b) { this.useToughness = b; } public boolean useArtillery() { return useArtillery; } public void setArtillery(boolean b) { this.useArtillery = b; } public boolean useAbilities() { return useAbilities; } public void setAbilities(boolean b) { this.useAbilities = b; } public boolean useEdge() { return useEdge; } public void setEdge(boolean b) { this.useEdge = b; } public boolean useImplants() { return useImplants; } public void setImplants(boolean b) { this.useImplants = b; } public boolean useAltQualityAveraging() { return altQualityAveraging; } public void setAltQualityAveraging(boolean altQualityAveraging) { this.altQualityAveraging = altQualityAveraging; } public boolean useAdvancedMedical() { return useAdvancedMedical; } public void setAdvancedMedical(boolean b) { this.useAdvancedMedical = b; } public boolean useDylansRandomXp() { return useDylansRandomXp; } public void setDylansRandomXp(boolean b) { this.useDylansRandomXp = b; } // Personnel Market public boolean getPersonnelMarketReportRefresh() { return personnelMarketReportRefresh; } public void setPersonnelMarketReportRefresh(boolean b) { personnelMarketReportRefresh = b; } public int getPersonnelMarketType() { return personnelMarketType; } public void setPersonnelMarketType(int t) { personnelMarketType = t; } public int getPersonnelMarketRandomEliteRemoval() { return personnelMarketRandomEliteRemoval; } public void setPersonnelMarketRandomEliteRemoval(int i) { personnelMarketRandomEliteRemoval = i; } public int getPersonnelMarketRandomVeteranRemoval() { return personnelMarketRandomVeteranRemoval; } public void setPersonnelMarketRandomVeteranRemoval(int i) { personnelMarketRandomVeteranRemoval = i; } public int getPersonnelMarketRandomRegularRemoval() { return personnelMarketRandomRegularRemoval; } public void setPersonnelMarketRandomRegularRemoval(int i) { personnelMarketRandomRegularRemoval = i; } public int getPersonnelMarketRandomGreenRemoval() { return personnelMarketRandomGreenRemoval; } public void setPersonnelMarketRandomGreenRemoval(int i) { personnelMarketRandomGreenRemoval = i; } public int getPersonnelMarketRandomUltraGreenRemoval() { return personnelMarketRandomUltraGreenRemoval; } public void setPersonnelMarketRandomUltraGreenRemoval(int i) { personnelMarketRandomUltraGreenRemoval = i; } public double getPersonnelMarketDylansWeight() { return personnelMarketDylansWeight; } public void setPersonnelMarketDylansWeight(double d) { personnelMarketDylansWeight = d; } public boolean payForParts() { return payForParts; } public void setPayForParts(boolean b) { this.payForParts = b; } public boolean payForUnits() { return payForUnits; } public void setPayForUnits(boolean b) { this.payForUnits = b; } public boolean payForSalaries() { return payForSalaries; } public void setPayForSalaries(boolean b) { this.payForSalaries = b; } public boolean payForRecruitment() { return payForRecruitment; } public void setPayForRecruitment(boolean b) { this.payForRecruitment = b; } public boolean payForOverhead() { return payForOverhead; } public void setPayForOverhead(boolean b) { this.payForOverhead = b; } public boolean payForMaintain() { return payForMaintain; } public void setPayForMaintain(boolean b) { this.payForMaintain = b; } public boolean payForTransport() { return payForTransport; } public void setPayForTransport(boolean b) { this.payForTransport = b; } public boolean canSellUnits() { return sellUnits; } public void setSellUnits(boolean b) { this.sellUnits = b; } public boolean canSellParts() { return sellParts; } public void setSellParts(boolean b) { this.sellParts = b; } public boolean useLoanLimits() { return useLoanLimits; } public void setLoanLimits(boolean b) { this.useLoanLimits = b; } public boolean useQuirks() { return useQuirks; } public void setQuirks(boolean b) { this.useQuirks = b; } public int getScenarioXP() { return scenarioXP; } public void setScenarioXP(int xp) { scenarioXP = xp; } public int getKillsForXP() { return killsForXP; } public void setKillsForXP(int k) { killsForXP = k; } public int getKillXPAward() { return killXPAward; } public void setKillXPAward(int xp) { killXPAward = xp; } public int getNTasksXP() { return nTasksXP; } public void setNTasksXP(int xp) { nTasksXP = xp; } public int getTaskXP() { return tasksXP; } public void setTaskXP(int b) { tasksXP = b; } public int getMistakeXP() { return mistakeXP; } public void setMistakeXP(int b) { mistakeXP = b; } public int getSuccessXP() { return successXP; } public void setSuccessXP(int b) { successXP = b; } public boolean limitByYear() { return limitByYear; } public void setLimitByYear(boolean b) { limitByYear = b; } public boolean disallowExtinctStuff() { return disallowExtinctStuff; } public void setDisallowExtinctStuff(boolean b) { disallowExtinctStuff = b; } public boolean allowClanPurchases() { return allowClanPurchases; } public void setAllowClanPurchases(boolean b) { allowClanPurchases = b; } public boolean allowISPurchases() { return allowISPurchases; } public void setAllowISPurchases(boolean b) { allowISPurchases = b; } public boolean allowCanonOnly() { return allowCanonOnly; } public void setAllowCanonOnly(boolean b) { allowCanonOnly = b; } public boolean allowCanonRefitOnly() { return allowCanonRefitOnly; } public void setAllowCanonRefitOnly(boolean b) { allowCanonRefitOnly = b; } public boolean useAmmoByType() { return useAmmoByType; } public void setUseAmmoByType(boolean b) { useAmmoByType = b; } public boolean usePercentageMaint() { return usePercentageMaint; } public void setUsePercentageMaint(boolean b) { usePercentageMaint = b; } public boolean useInfantryDontCount() { return infantryDontCount; } public void setUseInfantryDontCount(boolean b) { infantryDontCount = b; } public int getTechLevel() { return techLevel; } public void setTechLevel(int lvl) { techLevel = lvl; } public int getProbPhenoMW() { return probPhenoMW; } public void setProbPhenoMW(int p) { probPhenoMW = p; } public int getProbPhenoAero() { return probPhenoAero; } public void setProbPhenoAero(int p) { probPhenoAero = p; } public int getProbPhenoBA() { return probPhenoBA; } public void setProbPhenoBA(int p) { probPhenoBA = p; } public int getProbPhenoVee() { return probPhenoVee; } public void setProbPhenoVee(int p) { probPhenoVee = p; } public boolean usePortraitForType(int type) { if (type < 0 || type >= usePortraitForType.length) { return false; } return usePortraitForType[type]; } public void setUsePortraitForType(int type, boolean b) { if (type < 0 || type >= usePortraitForType.length) { return; } usePortraitForType[type] = b; } public int getIdleXP() { return idleXP; } public void setIdleXP(int xp) { idleXP = xp; } public int getTargetIdleXP() { return targetIdleXP; } public void setTargetIdleXP(int xp) { targetIdleXP = xp; } public int getMonthsIdleXP() { return monthsIdleXP; } public void setMonthsIdleXP(int m) { monthsIdleXP = m; } public int getContractNegotiationXP() { return contractNegotiationXP; } public void setContractNegotiationXP(int m) { contractNegotiationXP = m; } public int getAdminXP() { return adminXP; } public void setAdminXP(int m) { adminXP = m; } public int getAdminXPPeriod() { return adminXPPeriod; } public void setAdminXPPeriod(int m) { adminXPPeriod = m; } public int getWaitingPeriod() { return waitingPeriod; } public void setWaitingPeriod(int d) { waitingPeriod = d; } public String getAcquisitionSkill() { return acquisitionSkill; } public void setAcquisitionSkill(String skill) { acquisitionSkill = skill; } public void setAcquisitionSupportStaffOnly(boolean b) { this.acquisitionSupportStaffOnly = b; } public boolean isAcquisitionSupportStaffOnly() { return acquisitionSupportStaffOnly; } public int getNDiceTransitTime() { return nDiceTransitTime; } public void setNDiceTransitTime(int d) { nDiceTransitTime = d; } public int getConstantTransitTime() { return constantTransitTime; } public void setConstantTransitTime(int d) { constantTransitTime = d; } public int getUnitTransitTime() { return unitTransitTime; } public void setUnitTransitTime(int d) { unitTransitTime = d; } public int getAcquireMosUnit() { return acquireMosUnit; } public void setAcquireMosUnit(int b) { acquireMosUnit = b; } public int getAcquireMosBonus() { return acquireMosBonus; } public void setAcquireMosBonus(int b) { acquireMosBonus = b; } public int getAcquireMinimumTimeUnit() { return acquireMinimumTimeUnit; } public void setAcquireMinimumTimeUnit(int b) { acquireMinimumTimeUnit = b; } public int getAcquireMinimumTime() { return acquireMinimumTime; } public void setAcquireMinimumTime(int b) { acquireMinimumTime = b; } public double getEquipmentContractPercent() { return equipmentContractPercent; } public void setEquipmentContractPercent(double b) { equipmentContractPercent = b; } public boolean useEquipmentContractBase() { return equipmentContractBase; } public void setEquipmentContractBase(boolean b) { this.equipmentContractBase = b; } public boolean useEquipmentContractSaleValue() { return equipmentContractSaleValue; } public void setEquipmentContractSaleValue(boolean b) { this.equipmentContractSaleValue = b; } public boolean useBLCSaleValue() { return blcSaleValue; } public void setBLCSaleValue(boolean b) { this.blcSaleValue = b; } public int getClanAcquisitionPenalty() { return clanAcquisitionPenalty; } public void setClanAcquisitionPenalty(int b) { clanAcquisitionPenalty = b; } public int getIsAcquisitionPenalty() { return isAcquisitionPenalty; } public void setIsAcquisitionPenalty(int b) { isAcquisitionPenalty = b; } public int getHealingWaitingPeriod() { return healWaitingPeriod; } public void setHealingWaitingPeriod(int d) { healWaitingPeriod = d; } public int getNaturalHealingWaitingPeriod() { return naturalHealingWaitingPeriod; } public void setNaturalHealingWaitingPeriod(int d) { naturalHealingWaitingPeriod = d; } public int getMaintenanceCycleDays() { return maintenanceCycleDays; } public void setMaintenanceCycleDays(int d) { maintenanceCycleDays = d; } public int getMaintenanceBonus() { return maintenanceBonus; } public void setMaintenanceBonus(int d) { maintenanceBonus = d; } public boolean useQualityMaintenance() { return useQualityMaintenance; } public void setUseQualityMaintenance(boolean b) { useQualityMaintenance = b; } public boolean useUnofficalMaintenance() { return useUnofficalMaintenance; } public void setUseUnofficalMaintenance(boolean b) { useUnofficalMaintenance = b; } public boolean reverseQualityNames() { return reverseQualityNames; } public void setReverseQualityNames(boolean b) { reverseQualityNames = b; } public boolean checkMaintenance() { return checkMaintenance; } public void setCheckMaintenance(boolean b) { checkMaintenance = b; } public boolean isDestroyByMargin() { return destroyByMargin; } public void setDestroyByMargin(boolean b) { destroyByMargin = b; } public int getDestroyMargin() { return destroyMargin; } public void setDestroyMargin(int d) { destroyMargin = d; } public int getDestroyPartTarget() { return destroyPartTarget; } public void setDestroyPartTarget(int d) { destroyPartTarget = d; } public boolean useRandomHitsForVees() { return useRandomHitsForVees; } public void setUseRandomHitsForVees(boolean b) { useRandomHitsForVees = b; } public int getMaxAcquisitions() { return maxAcquisitions; } public void setMaxAcquisitions(int d) { maxAcquisitions = d; } public boolean useUnofficialProcreation() { return useUnofficialProcreation; } public void setUseUnofficialProcreation(boolean b) { useUnofficialProcreation = b; } public boolean useUnofficialProcreationNoRelationship() { return useUnofficialProcreationNoRelationship; } public void setUseUnofficialProcreationNoRelationship(boolean b) { useUnofficialProcreationNoRelationship = b; } public boolean useParentage() { return useParentage; } public void setUseParentage(boolean b) { useParentage = b; } public boolean logConception() { return logConception; } public void setLogConception(boolean b) { logConception = b; } public boolean useTransfers() { return useTransfers; } public void setUseTransfers(boolean b) { useTransfers = b; } public boolean capturePrisoners() { return capturePrisoners; } public void setCapturePrisoners(boolean b) { capturePrisoners = b; } public int getDefaultPrisonerStatus() { return defaultPrisonerStatus; } public void setDefaultPrisonerStatus(int d) { defaultPrisonerStatus = d; } public int getMinimumHitsForVees() { return minimumHitsForVees; } public void setMinimumHitsForVees(int d) { minimumHitsForVees = d; } public int getBaseSalary(int type) { if (type < 0 || type >= salaryTypeBase.length) { return 0; } return salaryTypeBase[type]; } public void setBaseSalary(int base, int type) { if (type < 0 || type >= salaryTypeBase.length) { return; } this.salaryTypeBase[type] = base; } public double getSalaryXpMultiplier(int xp) { if (xp < 0 || xp >= salaryXpMultiplier.length) { return 1.0; } return salaryXpMultiplier[xp]; } public void setSalaryXpMultiplier(double d, int xp) { if (xp < 0 || xp >= salaryXpMultiplier.length) { return; } this.salaryXpMultiplier[xp] = d; } public double getSalaryEnlistedMultiplier() { return salaryEnlistedMultiplier; } public void setSalaryEnlistedMultiplier(double d) { salaryEnlistedMultiplier = d; } public double getSalaryCommissionMultiplier() { return salaryCommissionMultiplier; } public void setSalaryCommissionMultiplier(double d) { salaryCommissionMultiplier = d; } public double getSalaryAntiMekMultiplier() { return salaryAntiMekMultiplier; } public void setSalaryAntiMekMultiplier(double d) { salaryAntiMekMultiplier = d; } public boolean useTougherHealing() { return tougherHealing; } public void setTougherHealing(boolean b) { tougherHealing = b; } public boolean getUseAtB() { return useAtB; } public void setUseAtB(boolean useAtB) { this.useAtB = useAtB; } public boolean getUseAero() { return useAero; } public void setUseAero(boolean useAero) { this.useAero = useAero; } public boolean getUseVehicles() { return useVehicles; } public void setUseVehicles(boolean useVehicles) { this.useVehicles = useVehicles; } public boolean getClanVehicles() { return clanVehicles; } public void setClanVehicles(boolean clanVehicles) { this.clanVehicles = clanVehicles; } public boolean getDoubleVehicles() { return doubleVehicles; } public void setDoubleVehicles(boolean doubleVehicles) { this.doubleVehicles = doubleVehicles; } public boolean getAdjustPlayerVehicles() { return adjustPlayerVehicles; } public int getOpforLanceTypeMechs() { return opforLanceTypeMechs; } public void setOpforLanceTypeMechs(int weight) { opforLanceTypeMechs = weight; } public int getOpforLanceTypeMixed() { return opforLanceTypeMixed; } public void setOpforLanceTypeMixed(int weight) { opforLanceTypeMixed = weight; } public int getOpforLanceTypeVehicles() { return opforLanceTypeVehicles; } public void setOpforLanceTypeVehicles(int weight) { opforLanceTypeVehicles = weight; } public boolean getOpforUsesVTOLs() { return opforUsesVTOLs; } public void setOpforUsesVTOLs(boolean vtol) { opforUsesVTOLs = vtol; } public void setAdjustPlayerVehicles(boolean adjust) { adjustPlayerVehicles = adjust; } public boolean getUseDropShips() { return useDropShips; } public void setUseDropShips(boolean useDropShips) { this.useDropShips = useDropShips; } public int getSkillLevel() { return skillLevel; } public void setSkillLevel(int level) { skillLevel = level; } public boolean getAeroRecruitsHaveUnits() { return aeroRecruitsHaveUnits; } public void setAeroRecruitsHaveUnits(boolean haveUnits) { aeroRecruitsHaveUnits = haveUnits; } public boolean getUseShareSystem() { return useShareSystem; } public boolean getSharesExcludeLargeCraft() { return sharesExcludeLargeCraft; } public void setSharesExcludeLargeCraft(boolean exclude) { sharesExcludeLargeCraft = exclude; } public boolean getSharesForAll() { return sharesForAll; } public void setSharesForAll(boolean set) { sharesForAll = set; } public boolean doRetirementRolls() { return retirementRolls; } public void setRetirementRolls(boolean roll) { retirementRolls = roll; } public boolean getCustomRetirementMods() { return customRetirementMods; } public void setCustomRetirementMods(boolean mods) { customRetirementMods = mods; } public boolean getTrackOriginalUnit() { return trackOriginalUnit; } public void setTrackOriginalUnit(boolean track) { trackOriginalUnit = track; } public boolean isMercSizeLimited() { return mercSizeLimited; } public boolean getTrackUnitFatigue() { return trackUnitFatigue; } public void setTrackUnitFatigue(boolean fatigue) { trackUnitFatigue = fatigue; } public void setMercSizeLimited(boolean limit) { mercSizeLimited = limit; } public void setUseShareSystem(boolean shares) { useShareSystem = shares; } public boolean getRegionalMechVariations() { return regionalMechVariations; } public void setRegionalMechVariations(boolean regionalMechVariations) { this.regionalMechVariations = regionalMechVariations; } public String[] getRATs() { return rats; } public void setRATs (String[] rats) { this.rats = rats; } public boolean useStaticRATs() { return staticRATs; } public void setStaticRATs(boolean staticRATs) { this.staticRATs = staticRATs; } public boolean canIgnoreRatEra() { return ignoreRatEra; } public void setIgnoreRatEra(boolean ignore) { ignoreRatEra = ignore; } public int getSearchRadius() { return searchRadius; } public void setSearchRadius(int radius) { searchRadius = radius; } public boolean getInstantUnitMarketDelivery() { return instantUnitMarketDelivery; } public void setInstantUnitMarketDelivery(boolean instant) { instantUnitMarketDelivery = instant; } public double getIntensity() { return intensity; } public void setIntensity(double intensity) { this.intensity = intensity; } public boolean getVariableContractLength() { return variableContractLength; } public void setVariableContractLength(boolean variable) { variableContractLength = variable; } public boolean getUseWeatherConditions() { return useWeatherConditions; } public void setUseWeatherConditions(boolean useWeatherConditions) { this.useWeatherConditions = useWeatherConditions; } public boolean getUseLightConditions() { return useLightConditions; } public void setUseLightConditions(boolean useLightConditions) { this.useLightConditions = useLightConditions; } public boolean getUsePlanetaryConditions() { return usePlanetaryConditions; } public void setUsePlanetaryConditions(boolean usePlanetaryConditions) { this.usePlanetaryConditions = usePlanetaryConditions; } public boolean getUseLeadership() { return useLeadership; } public void setUseLeadership(boolean useLeadership) { this.useLeadership = useLeadership; } public boolean getUseStrategy() { return useStrategy; } public void setUseStrategy(boolean useStrategy) { this.useStrategy = useStrategy; } public int getBaseStrategyDeployment() { return baseStrategyDeployment; } public void setBaseStrategyDeployment(int baseStrategyDeployment) { this.baseStrategyDeployment = baseStrategyDeployment; } public int getAdditionalStrategyDeployment() { return additionalStrategyDeployment; } public void setAdditionalStrategyDeployment(int additionalStrategyDeployment) { this.additionalStrategyDeployment = additionalStrategyDeployment; } public boolean getAdjustPaymentForStrategy() { return adjustPaymentForStrategy; } public void setAdjustPaymentForStrategy(boolean adjustPaymentForStrategy) { this.adjustPaymentForStrategy = adjustPaymentForStrategy; } public boolean getRestrictPartsByMission() { return restrictPartsByMission; } public void setRestrictPartsByMission(boolean restrictPartsByMission) { this.restrictPartsByMission = restrictPartsByMission; } public boolean getLimitLanceWeight() { return limitLanceWeight; } public void setLimitLanceWeight(boolean limit) { limitLanceWeight = limit; } public boolean getLimitLanceNumUnits() { return limitLanceNumUnits; } public void setLimitLanceNumUnits(boolean limit) { limitLanceNumUnits = limit; } public boolean getUseAtBCapture() { return useAtBCapture; } public void setUseAtBCapture(boolean set) { useAtBCapture = set; } public boolean getContractMarketReportRefresh() { return contractMarketReportRefresh; } public void setContractMarketReportRefresh(boolean refresh) { contractMarketReportRefresh = refresh; } public boolean getUnitMarketReportRefresh() { return unitMarketReportRefresh; } public void setUnitMarketReportRefresh(boolean refresh) { unitMarketReportRefresh = refresh; } public int getStartGameDelay() { return startGameDelay; } public void setStartGameDelay(int delay) { startGameDelay = delay; } public boolean massRepairUseExtraTime() { return massRepairUseExtraTime; } public void setMassRepairUseExtraTime(boolean b) { this.massRepairUseExtraTime = b; } public boolean massRepairUseRushJob() { return massRepairUseRushJob; } public void setMassRepairUseRushJob(boolean b) { this.massRepairUseRushJob = b; } public boolean massRepairAllowCarryover() { return massRepairAllowCarryover; } public void setMassRepairAllowCarryover(boolean b) { this.massRepairAllowCarryover = b; } public boolean massRepairOptimizeToCompleteToday() { return massRepairOptimizeToCompleteToday; } public void setMassRepairOptimizeToCompleteToday(boolean massRepairOptimizeToCompleteToday) { this.massRepairOptimizeToCompleteToday = massRepairOptimizeToCompleteToday; } public boolean massRepairScrapImpossible() { return massRepairScrapImpossible; } public void setMassRepairScrapImpossible(boolean b) { this.massRepairScrapImpossible = b; } public boolean massRepairUseAssignedTechsFirst() { return massRepairUseAssignedTechsFirst; } public void setMassRepairUseAssignedTechsFirst(boolean massRepairUseAssignedTechsFirst) { this.massRepairUseAssignedTechsFirst = massRepairUseAssignedTechsFirst; } public void setMassRepairReplacePod(boolean setMassRepairReplacePod) { this.massRepairReplacePod = setMassRepairReplacePod; } public boolean massRepairReplacePod() { return massRepairReplacePod; } public List<MassRepairOption> getMassRepairOptions() { return massRepairOptions; } public void setMassRepairOptions(List<MassRepairOption> massRepairOptions) { this.massRepairOptions = massRepairOptions; } public void addMassRepairOption(MassRepairOption mro) { if (mro.getType() == -1) { return; } int foundIdx = -1; for (int i = 0; i < massRepairOptions.size(); i++) { if (massRepairOptions.get(i).getType() == mro.getType()) { foundIdx = i; break; } } if (foundIdx == -1) { massRepairOptions.add(mro); } else { massRepairOptions.add(foundIdx, mro); massRepairOptions.remove(foundIdx + 1); } Collections.sort(massRepairOptions, new Comparator<MassRepairOption>() { @Override public int compare(MassRepairOption o1, MassRepairOption o2) { return o1.getType() < o2.getType() ? -1 : 1; } }); } public void writeToXml(PrintWriter pw1, int indent) { pw1.println(MekHqXmlUtil.indentStr(indent) + "<campaignOptions>"); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "clanPriceModifier", clanPriceModifier); //private double // clanPriceModifier; MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useFactionForNames", useFactionForNames); //private boolean // useFinances; MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "repairSystem", repairSystem); //private int repairSystem; MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useUnitRating", useUnitRating); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "unitRatingMethod", unitRatingMethod.getDescription()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useEraMods", useEraMods); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "assignedTechFirst", assignedTechFirst); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "resetToFirstTech", resetToFirstTech); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useTactics", useTactics); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useInitBonus", useInitBonus); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useToughness", useToughness); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useArtillery", useArtillery); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useAbilities", useAbilities); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useEdge", useEdge); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useImplants", useImplants); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "altQualityAveraging", altQualityAveraging); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useAdvancedMedical", useAdvancedMedical); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useDylansRandomXp", useDylansRandomXp); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useQuirks", useQuirks); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "payForParts", payForParts); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "payForUnits", payForUnits); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "payForSalaries", payForSalaries); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "payForOverhead", payForOverhead); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "payForMaintain", payForMaintain); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "payForTransport", payForTransport); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usedPartsValueA", usedPartsValue[0]); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usedPartsValueB", usedPartsValue[1]); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usedPartsValueC", usedPartsValue[2]); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usedPartsValueD", usedPartsValue[3]); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usedPartsValueE", usedPartsValue[4]); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usedPartsValueF", usedPartsValue[5]); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "damagedPartsValue", damagedPartsValue); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "canceledOrderReimbursement", canceledOrderReimbursement); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "sellUnits", sellUnits); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "sellParts", sellParts); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "scenarioXP", scenarioXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "killsForXP", killsForXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "killXPAward", killXPAward); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "nTasksXP", nTasksXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "tasksXP", tasksXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "mistakeXP", mistakeXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "successXP", successXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "idleXP", idleXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "targetIdleXP", targetIdleXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "monthsIdleXP", monthsIdleXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "contractNegotiationXP", contractNegotiationXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "adminWeeklyXP", adminXP); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "adminXPPeriod", adminXPPeriod); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "limitByYear", limitByYear); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "disallowExtinctStuff", disallowExtinctStuff); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "allowClanPurchases", allowClanPurchases); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "allowISPurchases", allowISPurchases); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "allowCanonOnly", allowCanonOnly); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "allowCanonRefitOnly", allowCanonRefitOnly); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useAmmoByType", useAmmoByType); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usePercentageMaint", usePercentageMaint); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "waitingPeriod", waitingPeriod); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "acquisitionSkill", acquisitionSkill); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "acquisitionSupportStaffOnly", acquisitionSupportStaffOnly); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "techLevel", techLevel); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "nDiceTransitTime", nDiceTransitTime); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "constantTransitTime", constantTransitTime); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "unitTransitTime", unitTransitTime); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "acquireMosBonus", acquireMosBonus); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "acquireMosUnit", acquireMosUnit); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "acquireMinimumTime", acquireMinimumTime); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "acquireMinimumTimeUnit", acquireMinimumTimeUnit); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "equipmentContractPercent", equipmentContractPercent); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "equipmentContractBase", equipmentContractBase); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "equipmentContractSaleValue", equipmentContractSaleValue); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "blcSaleValue", blcSaleValue); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "clanAcquisitionPenalty", clanAcquisitionPenalty); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "isAcquisitionPenalty", isAcquisitionPenalty); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useLoanLimits", useLoanLimits); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "payForRecruitment", payForRecruitment); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "healWaitingPeriod", healWaitingPeriod); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "naturalHealingWaitingPeriod", naturalHealingWaitingPeriod); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "destroyByMargin", destroyByMargin); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "destroyMargin", destroyMargin); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "destroyPartTarget", destroyPartTarget); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "maintenanceCycleDays", maintenanceCycleDays); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "maintenanceBonus", maintenanceBonus); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useQualityMaintenance", useQualityMaintenance); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "reverseQualityNames", reverseQualityNames); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useUnofficalMaintenance", useUnofficalMaintenance); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "checkMaintenance", checkMaintenance); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useRandomHitsForVees", useRandomHitsForVees); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "minimumHitsForVees", minimumHitsForVees); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "maxAcquisitions", maxAcquisitions); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useUnofficialProcreation", useUnofficialProcreation); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useUnofficialProcreationNoRelationship", useUnofficialProcreationNoRelationship); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useParentage", useParentage); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "logConception", logConception); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useTransfers", useTransfers); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "capturePrisoners", capturePrisoners); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "defaultPrisonerStatus", defaultPrisonerStatus); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketType", personnelMarketType); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketRandomEliteRemoval", personnelMarketRandomEliteRemoval); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketRandomVeteranRemoval", personnelMarketRandomVeteranRemoval); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketRandomRegularRemoval", personnelMarketRandomRegularRemoval); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketRandomGreenRemoval", personnelMarketRandomGreenRemoval); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketRandomUltraGreenRemoval", personnelMarketRandomUltraGreenRemoval); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketReportRefresh", personnelMarketReportRefresh); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "personnelMarketDylansWeight", personnelMarketDylansWeight); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "salaryEnlistedMultiplier", salaryEnlistedMultiplier); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "salaryCommissionMultiplier", salaryCommissionMultiplier); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "salaryAntiMekMultiplier", salaryAntiMekMultiplier); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "probPhenoMW", probPhenoMW); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "probPhenoAero", probPhenoAero); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "probPhenoBA", probPhenoBA); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "probPhenoVee", probPhenoVee); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "tougherHealing", tougherHealing); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useAtB", useAtB); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useAero", useAero); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useVehicles", useVehicles); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "clanVehicles", clanVehicles); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "doubleVehicles", doubleVehicles); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "adjustPlayerVehicles", adjustPlayerVehicles); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "opforLanceTypeMechs", opforLanceTypeMechs); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "opforLanceTypeMixed", opforLanceTypeMixed); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "opforLanceTypeVehicles", opforLanceTypeVehicles); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "opforUsesVTOLs", opforUsesVTOLs); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useDropShips", useDropShips); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "skillLevel", skillLevel); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "aeroRecruitsHaveUnits", aeroRecruitsHaveUnits); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useShareSystem", useShareSystem); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "sharesExcludeLargeCraft", sharesExcludeLargeCraft); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "sharesForAll", sharesForAll); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "retirementRolls", retirementRolls); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "customRetirementMods", customRetirementMods); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "trackUnitFatigue", trackUnitFatigue); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "mercSizeLimited", mercSizeLimited); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "trackOriginalUnit", trackOriginalUnit); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "regionalMechVariations", regionalMechVariations); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "searchRadius", searchRadius); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "intensity", intensity); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "variableContractLength", variableContractLength); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "instantUnitMarketDelivery", instantUnitMarketDelivery); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useWeatherConditions", useWeatherConditions); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useLightConditions", useLightConditions); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "usePlanetaryConditions", usePlanetaryConditions); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useLeadership", useLeadership); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useStrategy", useStrategy); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "baseStrategyDeployment", baseStrategyDeployment); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "additionalStrategyDeployment", additionalStrategyDeployment); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "adjustPaymentForStrategy", adjustPaymentForStrategy); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "restrictPartsByMission", restrictPartsByMission); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "limitLanceWeight", limitLanceWeight); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "limitLanceNumUnits", limitLanceNumUnits); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "useAtBCapture", useAtBCapture); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "contractMarketReportRefresh", contractMarketReportRefresh); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "unitMarketReportRefresh", unitMarketReportRefresh); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "startGameDelay", startGameDelay); //Mass Repair/Salvage Options MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "massRepairUseExtraTime", massRepairUseExtraTime); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "massRepairUseRushJob", massRepairUseRushJob); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "massRepairAllowCarryover", massRepairAllowCarryover); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "massRepairOptimizeToCompleteToday", massRepairOptimizeToCompleteToday); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "massRepairScrapImpossible", massRepairScrapImpossible); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "massRepairUseAssignedTechsFirst", massRepairUseAssignedTechsFirst); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 1, "massRepairReplacePod", massRepairReplacePod); pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "<massRepairOptions>"); for (int i = 0; i < massRepairOptions.size(); i++) { MassRepairOption mro = massRepairOptions.get(i); pw1.println(MekHqXmlUtil.indentStr(indent + 2) + "<massRepairOption" + i + ">"); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 3, "type", mro.getType()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 3, "active", mro.isActive() ? 1 : 0); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 3, "skillMin", mro.getSkillMin()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 3, "skillMax", mro.getSkillMax()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 3, "btnMin", mro.getBthMin()); MekHqXmlUtil.writeSimpleXmlTag(pw1, indent + 3, "btnMax", mro.getBthMax()); pw1.println(MekHqXmlUtil.indentStr(indent + 2) + "</massRepairOption" + i + ">"); } pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "</massRepairOptions>"); pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "<salaryTypeBase>" + Utilities.printIntegerArray(salaryTypeBase) + "</salaryTypeBase>"); pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "<salaryXpMultiplier>" + Utilities.printDoubleArray(salaryXpMultiplier) + "</salaryXpMultiplier>"); pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "<usePortraitForType>" + Utilities.printBooleanArray(usePortraitForType) + "</usePortraitForType>"); String csv = ""; for (int i = 0; i < rats.length; i++) { csv += rats[i]; if (i < rats.length - 1) { csv += ","; } } pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "<rats>" + MekHqXmlUtil.escape(csv) + "</rats>"); if (staticRATs) { pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "<staticRATs/>"); } if (ignoreRatEra) { pw1.println(MekHqXmlUtil.indentStr(indent + 1) + "<ignoreRatEra/>"); } pw1.println(MekHqXmlUtil.indentStr(indent) + "</campaignOptions>"); } public static CampaignOptions generateCampaignOptionsFromXml(Node wn) { MekHQ.logMessage("Loading Campaign Options from XML...", 4); wn.normalize(); CampaignOptions retVal = new CampaignOptions(); NodeList wList = wn.getChildNodes(); // Okay, lets iterate through the children, eh? for (int x = 0; x < wList.getLength(); x++) { Node wn2 = wList.item(x); // If it's not an element node, we ignore it. if (wn2.getNodeType() != Node.ELEMENT_NODE) { continue; } MekHQ.logMessage("---", 5); MekHQ.logMessage(wn2.getNodeName(), 5); MekHQ.logMessage("\t" + wn2.getTextContent(), 5); if (wn2.getNodeName().equalsIgnoreCase("clanPriceModifier")) { retVal.clanPriceModifier = Double.parseDouble(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useFactionForNames")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.useFactionForNames = true; } else { retVal.useFactionForNames = false; } } else if (wn2.getNodeName().equalsIgnoreCase("repairSystem")) { retVal.repairSystem = Integer.parseInt(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useEraMods")) { retVal.useEraMods = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("assignedTechFirst")) { retVal.assignedTechFirst = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("resetToFirstTech")) { retVal.resetToFirstTech = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useTactics")) { retVal.useTactics = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useInitBonus")) { retVal.useInitBonus = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useToughness")) { retVal.useToughness = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useArtillery")) { retVal.useArtillery = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useAbilities")) { retVal.useAbilities = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useEdge")) { retVal.useEdge = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useImplants")) { retVal.useImplants = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("altQualityAveraging")) { retVal.altQualityAveraging = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useAdvancedMedical")) { retVal.useAdvancedMedical = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useDylansRandomXp")) { retVal.useDylansRandomXp = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useQuirks")) { retVal.useQuirks = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("payForParts")) { retVal.payForParts = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("payForUnits")) { retVal.payForUnits = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("payForSalaries")) { retVal.payForSalaries = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("payForOverhead")) { retVal.payForOverhead = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("payForMaintain")) { retVal.payForMaintain = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("payForTransport")) { retVal.payForTransport = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("payForRecruitment")) { retVal.payForRecruitment = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useLoanLimits")) { retVal.useLoanLimits = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("sellUnits")) { retVal.sellUnits = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("sellParts")) { retVal.sellParts = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("usedPartsValueA")) { retVal.usedPartsValue[0] = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("usedPartsValueB")) { retVal.usedPartsValue[1] = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("usedPartsValueC")) { retVal.usedPartsValue[2] = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("usedPartsValueD")) { retVal.usedPartsValue[3] = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("usedPartsValueE")) { retVal.usedPartsValue[4] = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("usedPartsValueF")) { retVal.usedPartsValue[5] = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("damagedPartsValue")) { retVal.damagedPartsValue = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("canceledOrderReimbursement")) { retVal.canceledOrderReimbursement = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("scenarioXP")) { retVal.scenarioXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("killsForXP")) { retVal.killsForXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("killXPAward")) { retVal.killXPAward = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("nTasksXP")) { retVal.nTasksXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("tasksXP")) { retVal.tasksXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("successXP")) { retVal.successXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("mistakeXP")) { retVal.mistakeXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("idleXP")) { retVal.idleXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("targetIdleXP")) { retVal.targetIdleXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("monthsIdleXP")) { retVal.monthsIdleXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("contractNegotiationXP")) { retVal.contractNegotiationXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("adminWeeklyXP")) { retVal.adminXP = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("adminXPPeriod")) { retVal.adminXPPeriod = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("waitingPeriod")) { retVal.waitingPeriod = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("healWaitingPeriod")) { retVal.healWaitingPeriod = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("naturalHealingWaitingPeriod")) { retVal.naturalHealingWaitingPeriod = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("acquisitionSkill")) { retVal.acquisitionSkill = wn2.getTextContent().trim(); } else if (wn2.getNodeName().equalsIgnoreCase("nDiceTransitTime")) { retVal.nDiceTransitTime = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("constantTransitTime")) { retVal.constantTransitTime = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("unitTransitTime")) { retVal.unitTransitTime = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("acquireMosBonus")) { retVal.acquireMosBonus = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("acquireMosUnit")) { retVal.acquireMosUnit = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("acquireMinimumTime")) { retVal.acquireMinimumTime = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("acquireMinimumTimeUnit")) { retVal.acquireMinimumTimeUnit = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("clanAcquisitionPenalty")) { retVal.clanAcquisitionPenalty = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("isAcquisitionPenalty")) { retVal.isAcquisitionPenalty = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("equipmentContractPercent")) { retVal.equipmentContractPercent = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("equipmentContractBase")) { retVal.equipmentContractBase = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("equipmentContractSaleValue")) { retVal.equipmentContractSaleValue = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("blcSaleValue")) { retVal.blcSaleValue = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("acquisitionSupportStaffOnly")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.acquisitionSupportStaffOnly = true; } else { retVal.acquisitionSupportStaffOnly = false; } } else if (wn2.getNodeName().equalsIgnoreCase("limitByYear")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.limitByYear = true; } else { retVal.limitByYear = false; } } else if (wn2.getNodeName().equalsIgnoreCase("disallowExtinctStuff")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.disallowExtinctStuff = true; } else { retVal.disallowExtinctStuff = false; } } else if (wn2.getNodeName().equalsIgnoreCase("allowClanPurchases")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.allowClanPurchases = true; } else { retVal.allowClanPurchases = false; } } else if (wn2.getNodeName().equalsIgnoreCase("allowISPurchases")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.allowISPurchases = true; } else { retVal.allowISPurchases = false; } } else if (wn2.getNodeName().equalsIgnoreCase("allowCanonOnly")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.allowCanonOnly = true; } else { retVal.allowCanonOnly = false; } } else if (wn2.getNodeName().equalsIgnoreCase("allowCanonRefitOnly")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.allowCanonRefitOnly = true; } else { retVal.allowCanonRefitOnly = false; } } else if (wn2.getNodeName().equalsIgnoreCase("useAmmoByType")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.useAmmoByType = true; } else { retVal.useAmmoByType = false; } } else if (wn2.getNodeName().equalsIgnoreCase("usePercentageMaint")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.usePercentageMaint = true; } else { retVal.usePercentageMaint = false; } } else if (wn2.getNodeName().equalsIgnoreCase("techLevel")) { retVal.techLevel = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useUnitRating") || wn2.getNodeName().equalsIgnoreCase ("useDragoonRating")) { if (wn2.getTextContent().equalsIgnoreCase("true")) { retVal.useUnitRating = true; } else { retVal.useUnitRating = false; } } else if (wn2.getNodeName().equalsIgnoreCase("unitRatingMethod") || wn2.getNodeName().equalsIgnoreCase ("dragoonsRatingMethod")) { if (!wn2.getTextContent().isEmpty() && (wn2.getTextContent() != null)) { UnitRatingMethod method = UnitRatingMethod.getUnitRatingMethod(wn2.getTextContent()); retVal.setUnitRatingMethod((method != null) ? method : UnitRatingMethod.CAMPAIGN_OPS); } } else if (wn2.getNodeName().equalsIgnoreCase("usePortraitForType")) { String[] values = wn2.getTextContent().split(","); //$NON-NLS-1$ for (int i = 0; i < values.length; i++) { if(i < retVal.usePortraitForType.length) { retVal.usePortraitForType[i] = Boolean.parseBoolean(values[i].trim()); } } } else if (wn2.getNodeName().equalsIgnoreCase("destroyByMargin")) { retVal.destroyByMargin = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("destroyMargin")) { retVal.destroyMargin = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("destroyPartTarget")) { retVal.destroyPartTarget = Integer.parseInt(wn2.getTextContent().trim()); }else if (wn2.getNodeName().equalsIgnoreCase("maintenanceCycleDays")) { retVal.maintenanceCycleDays = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("maintenanceBonus")) { retVal.maintenanceBonus = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useQualityMaintenance")) { retVal.useQualityMaintenance = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("reverseQualityNames")) { retVal.reverseQualityNames = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("useUnofficalMaintenance")) { retVal.useUnofficalMaintenance = Boolean.parseBoolean(wn2.getTextContent()); } else if (wn2.getNodeName().equalsIgnoreCase("checkMaintenance")) { retVal.checkMaintenance = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("minimumHitsForVees")) { retVal.minimumHitsForVees = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("maxAcquisitions")) { retVal.maxAcquisitions = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useUnofficialProcreation")) { retVal.useUnofficialProcreation = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useUnofficialProcreationNoRelationship")) { retVal.useUnofficialProcreationNoRelationship = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useParentage")) { retVal.useParentage = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("logConception")) { retVal.logConception = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useTransfers")) { retVal.useTransfers = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("capturePrisoners")) { retVal.capturePrisoners = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("defaultPrisonerStatus")) { retVal.defaultPrisonerStatus = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useRandomHitsForVees")) { retVal.useRandomHitsForVees = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketType")) { retVal.personnelMarketType = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketRandomEliteRemoval")) { retVal.personnelMarketRandomEliteRemoval = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketRandomVeteranRemoval")) { retVal.personnelMarketRandomVeteranRemoval = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketRandomRegularRemoval")) { retVal.personnelMarketRandomRegularRemoval = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketRandomGreenRemoval")) { retVal.personnelMarketRandomGreenRemoval = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketRandomUltraGreenRemoval")) { retVal.personnelMarketRandomUltraGreenRemoval = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketReportRefresh")) { retVal.personnelMarketReportRefresh = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("personnelMarketDylansWeight")) { retVal.personnelMarketDylansWeight = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("salaryCommissionMultiplier")) { retVal.salaryCommissionMultiplier = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("salaryEnlistedMultiplier")) { retVal.salaryEnlistedMultiplier = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("salaryAntiMekMultiplier")) { retVal.salaryAntiMekMultiplier = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("salaryTypeBase")) { String[] values = wn2.getTextContent().split(","); for (int i = 0; i < values.length; i++) { retVal.salaryTypeBase[i] = Integer.parseInt(values[i]); } } else if (wn2.getNodeName().equalsIgnoreCase("salaryXpMultiplier")) { String[] values = wn2.getTextContent().split(","); for (int i = 0; i < values.length; i++) { retVal.salaryXpMultiplier[i] = Double.parseDouble(values[i]); } } else if (wn2.getNodeName().equalsIgnoreCase("probPhenoMW")) { retVal.probPhenoMW = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("probPhenoAero")) { retVal.probPhenoAero = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("probPhenoBA")) { retVal.probPhenoBA = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("probPhenoVee")) { retVal.probPhenoVee = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("tougherHealing")) { retVal.tougherHealing = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useAtB")) { retVal.useAtB = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useAero")) { retVal.useAero = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useVehicles")) { retVal.useVehicles = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("clanVehicles")) { retVal.clanVehicles = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("doubleVehicles")) { retVal.doubleVehicles = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("adjustPlayerVehicles")) { retVal.adjustPlayerVehicles = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("opforLanceTypeMechs")) { retVal.opforLanceTypeMechs = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("opforLanceTypeMixed")) { retVal.opforLanceTypeMixed = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("opforLanceTypeVehicles")) { retVal.opforLanceTypeVehicles = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("opforUsesVTOLs")) { retVal.opforUsesVTOLs = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useDropShips")) { retVal.useDropShips = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("skillLevel")) { retVal.skillLevel = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("aeroRecruitsHaveUnits")) { retVal.aeroRecruitsHaveUnits = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useShareSystem")) { retVal.useShareSystem = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("sharesExcludeLargeCraft")) { retVal.sharesExcludeLargeCraft = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("sharesForAll")) { retVal.sharesForAll = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("retirementRolls")) { retVal.retirementRolls = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("customRetirementMods")) { retVal.customRetirementMods = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("trackUnitFatigue")) { retVal.trackUnitFatigue = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("trackOriginalUnit")) { retVal.trackOriginalUnit = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("mercSizeLimited")) { retVal.mercSizeLimited = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("regionalMechVariations")) { retVal.regionalMechVariations = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("searchRadius")) { retVal.searchRadius = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("intensity")) { retVal.intensity = Double.parseDouble(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("variableContractLength")) { retVal.variableContractLength = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("instantUnitMarketDelivery")) { retVal.instantUnitMarketDelivery = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useWeatherConditions")) { retVal.useWeatherConditions = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useLightConditions")) { retVal.useLightConditions = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("usePlanetaryConditions")) { retVal.usePlanetaryConditions = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useLeadership")) { retVal.useLeadership = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useStrategy")) { retVal.useStrategy = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("baseStrategyDeployment")) { retVal.baseStrategyDeployment = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("additionalStrategyDeployment")) { retVal.additionalStrategyDeployment = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("adjustPaymentForStrategy")) { retVal.adjustPaymentForStrategy = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("restrictPartsByMission")) { retVal.restrictPartsByMission = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("limitLanceWeight")) { retVal.limitLanceWeight = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("limitLanceNumUnits")) { retVal.limitLanceNumUnits = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("useAtBCapture")) { retVal.useAtBCapture = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("contractMarketReportRefresh")) { retVal.contractMarketReportRefresh = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("unitMarketReportRefresh")) { retVal.unitMarketReportRefresh = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("startGameDelay")) { retVal.startGameDelay = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("rats")) { retVal.rats = MekHqXmlUtil.unEscape(wn2.getTextContent().trim()).split(","); } else if (wn2.getNodeName().equalsIgnoreCase("staticRATs")) { retVal.staticRATs = true; } else if (wn2.getNodeName().equalsIgnoreCase("ignoreRatEra")) { retVal.ignoreRatEra = true; } else if (wn2.getNodeName().equalsIgnoreCase("massRepairUseExtraTime")) { retVal.massRepairUseExtraTime = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("massRepairUseRushJob")) { retVal.massRepairUseRushJob = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("massRepairAllowCarryover")) { retVal.massRepairAllowCarryover = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("massRepairOptimizeToCompleteToday")) { retVal.massRepairOptimizeToCompleteToday = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("massRepairScrapImpossible")) { retVal.massRepairScrapImpossible = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("massRepairUseAssignedTechsFirst")) { retVal.massRepairUseAssignedTechsFirst = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("massRepairReplacePod")) { retVal.massRepairReplacePod = Boolean.parseBoolean(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("massRepairOptions")) { NodeList mroList = wn2.getChildNodes(); for (int mroIdx = 0; mroIdx < mroList.getLength(); mroIdx++) { Node mroNode = mroList.item(mroIdx); if (mroNode.getNodeType() != Node.ELEMENT_NODE) { continue; } for (int mroTypeIdx = 0; mroTypeIdx < MassRepairOption.VALID_REPAIR_TYPES.length; mroTypeIdx++) { if (mroNode.getNodeName().equalsIgnoreCase("massRepairOption" + mroTypeIdx)) { MassRepairOption mro = new MassRepairOption(); mro.setType(-1); NodeList mroItemList = mroNode.getChildNodes(); for (int mroItemIdx = 0; mroItemIdx < mroItemList.getLength(); mroItemIdx++) { Node mroItemNode = mroItemList.item(mroItemIdx); if (mroItemNode.getNodeType() != Node.ELEMENT_NODE) { continue; } MekHQ.logMessage("---", 5); MekHQ.logMessage("massRepairOption" + mroTypeIdx + "." + mroItemNode.getNodeName(), 5); MekHQ.logMessage("\t" + mroItemNode.getTextContent(), 5); if (mroItemNode.getNodeName().equalsIgnoreCase("type")) { mro.setType(Integer.parseInt(mroItemNode.getTextContent().trim())); } else if (mroItemNode.getNodeName().equalsIgnoreCase("active")) { mro.setActive(Integer.parseInt(mroItemNode.getTextContent().trim()) == 1); } else if (mroItemNode.getNodeName().equalsIgnoreCase("skillMin")) { mro.setSkillMin(Integer.parseInt(mroItemNode.getTextContent().trim())); } else if (mroItemNode.getNodeName().equalsIgnoreCase("skillMax")) { mro.setSkillMax(Integer.parseInt(mroItemNode.getTextContent().trim())); } else if (mroItemNode.getNodeName().equalsIgnoreCase("btnMin")) { mro.setBthMin(Integer.parseInt(mroItemNode.getTextContent().trim())); } else if (mroItemNode.getNodeName().equalsIgnoreCase("btnMax")) { mro.setBthMax(Integer.parseInt(mroItemNode.getTextContent().trim())); } } if (mro.getType() != -1) { retVal.addMassRepairOption(mro); } } } } } } MekHQ.logMessage("Load Campaign Options Complete!", 4); return retVal; } public static class MassRepairOption { public MassRepairOption() { } public MassRepairOption(int type) { this (type, false, SkillType.EXP_ULTRA_GREEN, SkillType.EXP_ELITE, 4, 4); } public MassRepairOption(int type, boolean active, int skillMin, int skillMax, int bthMin, int bthMax) { this.type = type; this.active = active; this.skillMin = skillMin; this.skillMax = skillMax; this.bthMin = bthMin; this.bthMax = bthMax; } public static int[] VALID_REPAIR_TYPES = new int[] { Part.REPAIR_PART_TYPE.ARMOR, Part.REPAIR_PART_TYPE.AMMO, Part.REPAIR_PART_TYPE.WEAPON, Part.REPAIR_PART_TYPE.GENERAL_LOCATION, Part.REPAIR_PART_TYPE.ENGINE, Part.REPAIR_PART_TYPE.GYRO, Part.REPAIR_PART_TYPE.ACTUATOR, Part.REPAIR_PART_TYPE.ELECTRONICS, Part.REPAIR_PART_TYPE.POD_SPACE, Part.REPAIR_PART_TYPE.GENERAL }; private int type; private boolean active = true; private int skillMin; private int skillMax; private int bthMin; private int bthMax; public int getType() { return type; } public void setType(int type) { this.type = type; } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } public int getSkillMin() { return skillMin; } public void setSkillMin(int skillMin) { this.skillMin = skillMin; } public int getSkillMax() { return skillMax; } public void setSkillMax(int skillMax) { this.skillMax = skillMax; } public int getBthMin() { return bthMin; } public void setBthMin(int bthMin) { this.bthMin = bthMin; } public int getBthMax() { return bthMax; } public void setBthMax(int bthMax) { this.bthMax = bthMax; } } }