Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OS Thunderbolts #4062

Merged
merged 9 commits into from
Dec 22, 2022
8 changes: 8 additions & 0 deletions megamek/src/megamek/common/WeaponType.java
Original file line number Diff line number Diff line change
Expand Up @@ -1249,6 +1249,14 @@ public static void initializeTypes() {
EquipmentType.addType(new ISThunderBolt10());
EquipmentType.addType(new ISThunderBolt15());
EquipmentType.addType(new ISThunderBolt20());
EquipmentType.addType(new ISThunderbolt5OS());
EquipmentType.addType(new ISThunderbolt10OS());
EquipmentType.addType(new ISThunderbolt15OS());
EquipmentType.addType(new ISThunderbolt20OS());
EquipmentType.addType(new ISThunderbolt5IOS());
EquipmentType.addType(new ISThunderbolt10IOS());
EquipmentType.addType(new ISThunderbolt15IOS());
EquipmentType.addType(new ISThunderbolt20IOS());
// Taser
EquipmentType.addType(new ISMekTaser());

Expand Down
53 changes: 3 additions & 50 deletions megamek/src/megamek/common/weapons/missiles/ISThunderBolt10.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,12 @@
*/
package megamek.common.weapons.missiles;

import megamek.common.AmmoType;
import megamek.common.alphaStrike.AlphaStrikeElement;
import megamek.common.Mounted;
import megamek.common.SimpleTechLevel;

/**
* @author Sebastian Brocks
*/
public class ISThunderBolt10 extends ThunderBoltWeapon {

/**
*
*/
public class ISThunderBolt10 extends Thunderbolt10Weapon {
private static final long serialVersionUID = 6781882739979127656L;

/**
*
*/
public ISThunderBolt10() {
super();
name = "Thunderbolt 10";
Expand All @@ -45,43 +33,8 @@ public ISThunderBolt10() {
addLookupName("ISThunderbolt10");
addLookupName("IS Thunderbolt 10");
addLookupName("ISTBolt10");
ammoType = AmmoType.T_TBOLT_10;
heat = 5;
minimumRange = 5;
shortRange = 6;
mediumRange = 12;
longRange = 18;
extremeRange = 24;
shortAV = 10;
medAV = 10;
maxRange = RANGE_MED;
tonnage = 7.0;
criticals = 2;
tonnage = 7;
bv = 127;
cost = 175000;
flags = flags.or(F_LARGEMISSILE);
this.missileArmor = 10;
rulesRefs = "347, TO";
techAdvancement.setTechBase(TECH_BASE_IS)
.setIntroLevel(false)
.setUnofficial(false)
.setTechRating(RATING_E)
.setAvailability(RATING_X, RATING_X, RATING_F, RATING_E)
.setISAdvancement(3052, 3072, 3081, DATE_NONE, DATE_NONE)
.setISApproximate(false, false, false, false, false)
.setPrototypeFactions(F_FS)
.setProductionFactions(F_FS, F_LC)
.setStaticTechLevel(SimpleTechLevel.STANDARD);
}

@Override
public double getBattleForceDamage(int range, Mounted fcs) {
if (range == AlphaStrikeElement.SHORT_RANGE) {
return 0.58;
} else if (range <= AlphaStrikeElement.LONG_RANGE) {
return 1;
} else {
return 0;
}
}
}
}
46 changes: 2 additions & 44 deletions megamek/src/megamek/common/weapons/missiles/ISThunderBolt15.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,10 @@
*/
package megamek.common.weapons.missiles;

import megamek.common.AmmoType;
import megamek.common.alphaStrike.AlphaStrikeElement;
import megamek.common.Mounted;
import megamek.common.SimpleTechLevel;

/**
* @author Sebastian Brocks
*/
public class ISThunderBolt15 extends ThunderBoltWeapon {
public class ISThunderBolt15 extends Thunderbolt15Weapon {
private static final long serialVersionUID = -5466726857144417393L;

public ISThunderBolt15() {
Expand All @@ -38,45 +33,8 @@ public ISThunderBolt15() {
addLookupName("ISThunderbolt15");
addLookupName("IS Thunderbolt 15");
addLookupName("ISTBolt15");
ammoType = AmmoType.T_TBOLT_15;
heat = 7;
minimumRange = 5;
shortRange = 6;
mediumRange = 12;
longRange = 18;
extremeRange = 24;
shortAV = 15;
medAV = 15;
maxRange = RANGE_MED;
tonnage = 11.0;
criticals = 3;
bv = 229;
cost = 325000;
flags = flags.or(F_LARGEMISSILE);
this.missileArmor = 15;
rulesRefs = "347, TO";
techAdvancement.setTechBase(TECH_BASE_IS)
.setIntroLevel(false)
.setUnofficial(false)
.setTechRating(RATING_E)
.setAvailability(RATING_X, RATING_X, RATING_F, RATING_E)
.setISAdvancement(3052, 3072, 3081, DATE_NONE, DATE_NONE)
.setISApproximate(false, false, false, false, false)
.setPrototypeFactions(F_FS)
.setProductionFactions(F_FS, F_LC)
.setStaticTechLevel(SimpleTechLevel.STANDARD);
}

@Override
public double getBattleForceDamage(int range, Mounted fcs) {
if (range == AlphaStrikeElement.SHORT_RANGE) {
return 0.87;
} else if (range == AlphaStrikeElement.MEDIUM_RANGE) {
return 1.5;
} else if (range == AlphaStrikeElement.LONG_RANGE) {
return 1.5;
} else {
return 0;
}
}
}
}
48 changes: 3 additions & 45 deletions megamek/src/megamek/common/weapons/missiles/ISThunderBolt20.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,10 @@
*/
package megamek.common.weapons.missiles;

import megamek.common.AmmoType;
import megamek.common.SimpleTechLevel;
import megamek.common.alphaStrike.AlphaStrikeElement;
import megamek.common.Mounted;

/**
* @author Sebastian Brocks
*/
public class ISThunderBolt20 extends ThunderBoltWeapon {
public class ISThunderBolt20 extends Thunderbolt20Weapon {
private static final long serialVersionUID = -6976091682813292840L;

public ISThunderBolt20() {
Expand All @@ -38,45 +33,8 @@ public ISThunderBolt20() {
addLookupName("ISThunderbolt20");
addLookupName("ISTBolt20");
addLookupName("IS Thunderbolt 20");
ammoType = AmmoType.T_TBOLT_20;
heat = 8;
minimumRange = 5;
shortRange = 6;
mediumRange = 12;
longRange = 18;
extremeRange = 24;
shortAV = 20;
medAV = 20;
maxRange = RANGE_MED;
tonnage = 15.0;
criticals = 5;
tonnage = 15;
bv = 305;
cost = 450000;
flags = flags.or(F_LARGEMISSILE);
this.missileArmor = 20;
rulesRefs = "347, TO";
techAdvancement.setTechBase(TECH_BASE_IS)
.setIntroLevel(false)
.setUnofficial(false)
.setTechRating(RATING_E)
.setAvailability(RATING_X, RATING_X, RATING_F, RATING_E)
.setISAdvancement(3052, 3072, 3081, DATE_NONE, DATE_NONE)
.setISApproximate(false, false, false, false, false)
.setPrototypeFactions(F_FS)
.setProductionFactions(F_FS, F_LC)
.setStaticTechLevel(SimpleTechLevel.STANDARD);
}

@Override
public double getBattleForceDamage(int range, Mounted fcs) {
if (range == AlphaStrikeElement.SHORT_RANGE) {
return 1.16;
} else if (range == AlphaStrikeElement.MEDIUM_RANGE) {
return 2;
} else if (range == AlphaStrikeElement.LONG_RANGE) {
return 2;
} else {
return 0;
}
}
}
}
48 changes: 2 additions & 46 deletions megamek/src/megamek/common/weapons/missiles/ISThunderBolt5.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,10 @@
*/
package megamek.common.weapons.missiles;

import megamek.common.AmmoType;
import megamek.common.alphaStrike.AlphaStrikeElement;
import megamek.common.Mounted;
import megamek.common.SimpleTechLevel;

/**
* @author Sebastian Brocks
*/
public class ISThunderBolt5 extends ThunderBoltWeapon {
public class ISThunderBolt5 extends Thunderbolt5Weapon {
private static final long serialVersionUID = 5295837076559643763L;

public ISThunderBolt5() {
Expand All @@ -37,47 +32,8 @@ public ISThunderBolt5() {
addLookupName("IS Thunderbolt-5");
addLookupName("ISThunderbolt5");
addLookupName("IS Thunderbolt 5");
sortingName = "Thunderbolt 05";
ammoType = AmmoType.T_TBOLT_5;
heat = 3;
minimumRange = 5;
shortRange = 6;
mediumRange = 12;
longRange = 18;
extremeRange = 24;
shortAV = 5;
medAV = 5;
maxRange = RANGE_MED;
tonnage = 3.0;
criticals = 1;
bv = 64;
cost = 50000;
flags = flags.or(F_LARGEMISSILE);
this.missileArmor = 5;
rulesRefs = "347, TO";
// Tech Progression tweaked to combine IntOps with TRO Prototypes/3145 NTNU RS
techAdvancement.setTechBase(TECH_BASE_IS)
.setIntroLevel(false)
.setUnofficial(false)
.setTechRating(RATING_E)
.setAvailability(RATING_X, RATING_X, RATING_F, RATING_E)
.setISAdvancement(3052, 3072, 3081, DATE_NONE, DATE_NONE)
.setISApproximate(false, false, false, false, false)
.setPrototypeFactions(F_FS)
.setProductionFactions(F_FS, F_LC)
.setStaticTechLevel(SimpleTechLevel.STANDARD);
}

@Override
public double getBattleForceDamage(int range, Mounted fcs) {
if (range == AlphaStrikeElement.SHORT_RANGE) {
return 0.29;
} else if (range == AlphaStrikeElement.MEDIUM_RANGE) {
return 0.5;
} else if (range == AlphaStrikeElement.LONG_RANGE) {
return 0.5;
} else {
return 0;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright (c) 2022 - The MegaMek Team. All Rights Reserved.
*
* This file is part of MegaMek.
*
* MegaMek 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.
*
* MegaMek 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 MegaMek. If not, see <http://www.gnu.org/licenses/>.
*/
package megamek.common.weapons.missiles;

/**
* The Improved One-Shot Thunderbolt 10
* @author Simon (Juliez)
*/
public class ISThunderbolt10IOS extends Thunderbolt10Weapon {

public ISThunderbolt10IOS() {
super();
name = "Thunderbolt 10 (I-OS)";
setInternalName(name);
addLookupName("IS IOS Thunderbolt-10");
addLookupName("ISThunderbolt10 (IOS)");
addLookupName("IS Thunderbolt 10 (IOS)");
addLookupName("ISTBolt10IOS");
tonnage = 6.5;
bv = 25;
cost = 140000;
flags = flags.or(F_ONESHOT);
techAdvancement.setTechRating(RATING_B)
.setISAdvancement(3056, 3081, 3085, DATE_NONE, DATE_NONE)
.setPrototypeFactions(F_DC)
.setProductionFactions(F_DC)
.setISApproximate(false, true, false, false, false);
}
}
40 changes: 40 additions & 0 deletions megamek/src/megamek/common/weapons/missiles/ISThunderbolt10OS.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Copyright (c) 2022 - The MegaMek Team. All Rights Reserved.
*
* This file is part of MegaMek.
*
* MegaMek 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.
*
* MegaMek 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 MegaMek. If not, see <http://www.gnu.org/licenses/>.
*/
package megamek.common.weapons.missiles;

/**
* The One-Shot Thunderbolt 10
* @author Simon (Juliez)
*/
public class ISThunderbolt10OS extends Thunderbolt10Weapon {

public ISThunderbolt10OS() {
super();
name = "Thunderbolt 10 (OS)";
setInternalName(name);
addLookupName("IS OS Thunderbolt-10");
addLookupName("ISThunderbolt10 (OS)");
addLookupName("IS Thunderbolt 10 (OS)");
addLookupName("ISTBolt10OS");
tonnage = 7.5;
bv = 25;
cost = 87500;
flags = flags.or(F_ONESHOT);
}
}
Loading