diff --git a/megamek/src/megamek/common/AmmoType.java b/megamek/src/megamek/common/AmmoType.java index 02a9f72d3a3..7614840327d 100644 --- a/megamek/src/megamek/common/AmmoType.java +++ b/megamek/src/megamek/common/AmmoType.java @@ -13419,30 +13419,40 @@ public AmmoType createMunitionType(AmmoType base) { || (munition.getAmmoType() == AmmoType.T_MML) || (munition.getAmmoType() == AmmoType.T_NLRM)) && (munition.getMunitionType().contains(Munitions.M_THUNDER))) { cost *= 2; + // TO:AUE, pp.185,197,198: Half the rack size on 7 hexes; standard mines + bv = base.rackSize * munition.shots / 5.0 * 4; } if (((munition.getAmmoType() == AmmoType.T_LRM) || (munition.getAmmoType() == AmmoType.T_LRM_IMP) || (munition.getAmmoType() == AmmoType.T_MML) || (munition.getAmmoType() == AmmoType.T_NLRM)) && (munition.getMunitionType().contains(Munitions.M_THUNDER_AUGMENTED))) { cost *= 4; + // TO:AUE, pp.185,197,198: Half the rack size on 7 hexes; standard mines + bv = Math.ceil(base.rackSize / 2.0) * 7 * munition.shots / 5.0 * 4; } if (((munition.getAmmoType() == AmmoType.T_LRM) || (munition.getAmmoType() == AmmoType.T_LRM_IMP) || (munition.getAmmoType() == AmmoType.T_MML) || (munition.getAmmoType() == AmmoType.T_NLRM)) && (munition.getMunitionType().contains(Munitions.M_THUNDER_INFERNO))) { cost *= 1; + // TO:AUE, pp.185,197,198 + bv = base.rackSize * munition.shots; } if (((munition.getAmmoType() == AmmoType.T_LRM) || (munition.getAmmoType() == AmmoType.T_LRM_IMP) || (munition.getAmmoType() == AmmoType.T_MML) || (munition.getAmmoType() == AmmoType.T_NLRM)) && (munition.getMunitionType().contains(Munitions.M_THUNDER_VIBRABOMB))) { cost *= 2.5; + // TO:AUE, pp.185,197,198 + bv = base.rackSize * munition.shots; } if (((munition.getAmmoType() == AmmoType.T_LRM) || (munition.getAmmoType() == AmmoType.T_LRM_IMP) || (munition.getAmmoType() == AmmoType.T_MML) || (munition.getAmmoType() == AmmoType.T_NLRM)) && (munition.getMunitionType().contains(Munitions.M_THUNDER_ACTIVE))) { cost *= 3; + // TO:AUE, pp.185,197,198 + bv = base.rackSize * munition.shots / 5.0 * 6; } if (munition.getMunitionType().contains(Munitions.M_HOMING)) { @@ -13454,6 +13464,12 @@ public AmmoType createMunitionType(AmmoType base) { if (munition.getMunitionType().contains(Munitions.M_FASCAM)) { cost *= 1.5; + // TO:AR, p.152 and TO:AUE, pp.197,198 + int rackSize = base.getRackSize(); + if (munition.getAmmoType() == AmmoType.T_ARROW_IV) { + rackSize = munition.isClan() ? 30 : 20; + } + bv = rackSize * munition.shots / 5.0 * 4; } if (munition.getMunitionType().contains(Munitions.M_INFERNO_IV)) { @@ -13461,6 +13477,8 @@ public AmmoType createMunitionType(AmmoType base) { } if (munition.getMunitionType().contains(Munitions.M_VIBRABOMB_IV)) { + // TO:AR 152 and TO:AUE 197,198 + bv = 20 * munition.shots; cost *= 2; } diff --git a/megamek/src/megamek/common/battlevalue/BVCalculator.java b/megamek/src/megamek/common/battlevalue/BVCalculator.java index 4fae5fc1ba3..9c9f2332c3d 100644 --- a/megamek/src/megamek/common/battlevalue/BVCalculator.java +++ b/megamek/src/megamek/common/battlevalue/BVCalculator.java @@ -999,7 +999,7 @@ protected void processAmmo() { } } - /** @return The unit's head dissipation for BV purposes. Override as necessary. */ + /** @return The unit's heat dissipation for BV purposes. Override as necessary. */ protected int heatEfficiency() { return NO_HEAT; } diff --git a/megamek/src/megamek/common/weapons/ArtilleryWeaponIndirectFireHandler.java b/megamek/src/megamek/common/weapons/ArtilleryWeaponIndirectFireHandler.java index 6676e4908c3..0756a8f30bf 100644 --- a/megamek/src/megamek/common/weapons/ArtilleryWeaponIndirectFireHandler.java +++ b/megamek/src/megamek/common/weapons/ArtilleryWeaponIndirectFireHandler.java @@ -329,8 +329,10 @@ else if ((null != bestSpotter) && !(this instanceof ArtilleryWeaponDirectFireHan return false; } if (atype.getMunitionType().contains(AmmoType.Munitions.M_FASCAM)) { - // Arrow IVs deliver fixed 30-point minefields. - int rackSize = (atype.getAmmoType() == AmmoType.T_ARROW_IV) ? 30 : atype.getRackSize(); + int rackSize = atype.getRackSize(); + if (atype.getAmmoType() == AmmoType.T_ARROW_IV) { + rackSize = atype.isClan() ? 30 : 20; + } gameManager.deliverFASCAMMinefield(targetPos, ae.getOwner().getId(), rackSize, ae.getId()); return false; }