From 9d33bbb16fe3ecf36c250d993a4138ffd5526642 Mon Sep 17 00:00:00 2001 From: kuronekochomusuke Date: Sat, 5 Oct 2024 23:53:55 -0400 Subject: [PATCH 1/3] default autoeject to disabled for clan meks --- megamek/src/megamek/common/MekFileParser.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/megamek/src/megamek/common/MekFileParser.java b/megamek/src/megamek/common/MekFileParser.java index 170962f18d..4b56f26ad4 100644 --- a/megamek/src/megamek/common/MekFileParser.java +++ b/megamek/src/megamek/common/MekFileParser.java @@ -504,10 +504,12 @@ else if (m.getType().hasFlag(MiscType.F_APOLLO)) { } } - if ((ent instanceof Mek) && (m.getType().hasFlag(MiscType.F_CASE) || m.getType().hasFlag(MiscType.F_CASEII) - || m.getType().hasFlag(MiscType.F_CASEP) + boolean hasCase = ent.isClan() + || m.getType().hasFlag(MiscType.F_CASE) + || m.getType().hasFlag(MiscType.F_CASEII) + || m.getType().hasFlag(MiscType.F_CASEP); - )) { + if ((ent instanceof Mek) && hasCase) { ((Mek) ent).setAutoEject(false); } From f110f76340fbefa54c6e294076992d1c28fe7c81 Mon Sep 17 00:00:00 2001 From: kuronekochomusuke Date: Sun, 6 Oct 2024 01:11:56 -0400 Subject: [PATCH 2/3] consolidate setting of defaults --- megamek/src/megamek/common/Game.java | 17 ++++++++++------- megamek/src/megamek/common/MekFileParser.java | 9 --------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/megamek/src/megamek/common/Game.java b/megamek/src/megamek/common/Game.java index d4d0d9f4cb..08f4a43ed5 100644 --- a/megamek/src/megamek/common/Game.java +++ b/megamek/src/megamek/common/Game.java @@ -1216,13 +1216,16 @@ public synchronized void addEntity(Entity entity, boolean genEvent) { } // And... lets get this straight now. - if ((entity instanceof Mek) - && getOptions().booleanOption(OptionsConstants.RPG_CONDITIONAL_EJECTION)) { - ((Mek) entity).setAutoEject(true); - ((Mek) entity).setCondEjectAmmo(!entity.hasCase() && !entity.hasCASEII()); - ((Mek) entity).setCondEjectEngine(true); - ((Mek) entity).setCondEjectCTDest(true); - ((Mek) entity).setCondEjectHeadshot(true); + if (entity instanceof Mek mek) { + if (getOptions().booleanOption(OptionsConstants.RPG_CONDITIONAL_EJECTION)) { + mek.setAutoEject(true); + mek.setCondEjectAmmo(!entity.hasCase() && !entity.hasCASEII()); + mek.setCondEjectEngine(true); + mek.setCondEjectCTDest(true); + mek.setCondEjectHeadshot(true); + } else { + mek.setAutoEject(!entity.hasCase() && !entity.hasCASEII()); + } } if (genEvent) { diff --git a/megamek/src/megamek/common/MekFileParser.java b/megamek/src/megamek/common/MekFileParser.java index 4b56f26ad4..6b65cedc3f 100644 --- a/megamek/src/megamek/common/MekFileParser.java +++ b/megamek/src/megamek/common/MekFileParser.java @@ -504,15 +504,6 @@ else if (m.getType().hasFlag(MiscType.F_APOLLO)) { } } - boolean hasCase = ent.isClan() - || m.getType().hasFlag(MiscType.F_CASE) - || m.getType().hasFlag(MiscType.F_CASEII) - || m.getType().hasFlag(MiscType.F_CASEP); - - if ((ent instanceof Mek) && hasCase) { - ((Mek) ent).setAutoEject(false); - } - if ((ent instanceof Mek) && m.getType().hasFlag( MiscType.F_ACTUATOR_ENHANCEMENT_SYSTEM)) { From fbca76bcfa3b06459a482759355c04cb9000323b Mon Sep 17 00:00:00 2001 From: kuronekochomusuke Date: Sun, 6 Oct 2024 01:19:05 -0400 Subject: [PATCH 3/3] add safety check --- megamek/src/megamek/common/MULParser.java | 30 ++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/megamek/src/megamek/common/MULParser.java b/megamek/src/megamek/common/MULParser.java index 85143c2bb5..1731944b71 100644 --- a/megamek/src/megamek/common/MULParser.java +++ b/megamek/src/megamek/common/MULParser.java @@ -1214,24 +1214,26 @@ private void setCrewAttributes(final @Nullable GameOptions options, final Entity // Set the crew for this entity. entity.setCrew(crew); - if (attributes.containsKey(ATTR_AUTOEJECT) && !attributes.get(ATTR_AUTOEJECT).isBlank()) { - ((Mek) entity).setAutoEject(Boolean.parseBoolean(attributes.get(ATTR_AUTOEJECT))); - } + if (entity instanceof Mek mek) { + if (attributes.containsKey(ATTR_AUTOEJECT) && !attributes.get(ATTR_AUTOEJECT).isBlank()) { + mek.setAutoEject(Boolean.parseBoolean(attributes.get(ATTR_AUTOEJECT))); + } - if (attributes.containsKey(ATTR_CONDEJECTAMMO) && !attributes.get(ATTR_CONDEJECTAMMO).isBlank()) { - ((Mek) entity).setCondEjectAmmo(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTAMMO))); - } + if (attributes.containsKey(ATTR_CONDEJECTAMMO) && !attributes.get(ATTR_CONDEJECTAMMO).isBlank()) { + mek.setCondEjectAmmo(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTAMMO))); + } - if (attributes.containsKey(ATTR_CONDEJECTENGINE) && !attributes.get(ATTR_CONDEJECTENGINE).isBlank()) { - ((Mek) entity).setCondEjectEngine(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTENGINE))); - } + if (attributes.containsKey(ATTR_CONDEJECTENGINE) && !attributes.get(ATTR_CONDEJECTENGINE).isBlank()) { + mek.setCondEjectEngine(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTENGINE))); + } - if (attributes.containsKey(ATTR_CONDEJECTCTDEST) && !attributes.get(ATTR_CONDEJECTCTDEST).isBlank()) { - ((Mek) entity).setCondEjectCTDest(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTCTDEST))); - } + if (attributes.containsKey(ATTR_CONDEJECTCTDEST) && !attributes.get(ATTR_CONDEJECTCTDEST).isBlank()) { + mek.setCondEjectCTDest(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTCTDEST))); + } - if (attributes.containsKey(ATTR_CONDEJECTHEADSHOT) && !attributes.get(ATTR_CONDEJECTHEADSHOT).isBlank()) { - ((Mek) entity).setCondEjectHeadshot(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTHEADSHOT))); + if (attributes.containsKey(ATTR_CONDEJECTHEADSHOT) && !attributes.get(ATTR_CONDEJECTHEADSHOT).isBlank()) { + mek.setCondEjectHeadshot(Boolean.parseBoolean(attributes.get(ATTR_CONDEJECTHEADSHOT))); + } } } }