Adapt to DCS update.

This commit is contained in:
Dan Albert 2021-06-17 01:27:40 -07:00
parent edd0b90576
commit 4c3ac0af91
92 changed files with 457 additions and 521 deletions

View File

@ -1,22 +0,0 @@
from dcs.vehicles import AirDefence
AAA_UNITS = [
AirDefence.SPAAA_Gepard,
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish,
AirDefence.SPAAA_Vulcan_M163,
AirDefence.AAA_ZU_23_Closed_Emplacement,
AirDefence.AAA_ZU_23_Emplacement,
AirDefence.SPAAA_ZU_23_2_Mounted_Ural_375,
AirDefence.AAA_ZU_23_Insurgent_Closed_Emplacement,
AirDefence.SPAAA_ZU_23_2_Insurgent_Mounted_Ural_375,
AirDefence.AAA_ZU_23_Insurgent_Emplacement,
AirDefence.AAA_8_8cm_Flak_18,
AirDefence.AAA_Flak_38_20mm,
AirDefence.AAA_8_8cm_Flak_36,
AirDefence.AAA_8_8cm_Flak_37,
AirDefence.AAA_Flak_Vierling_38_Quad_20mm,
AirDefence.AAA_SP_Kdo_G_40,
AirDefence.AAA_8_8cm_Flak_41,
AirDefence.AAA_Bofors_40mm,
AirDefence.AAA_S_60_57mm,
]

View File

@ -4,35 +4,35 @@ from dcs.vehicles import AirDefence
class AlicCodes: class AlicCodes:
CODES = { CODES = {
AirDefence.EWR_1L13.id: 101, AirDefence._1L13_EWR.id: 101,
AirDefence.EWR_55G6.id: 102, AirDefence._55G6_EWR.id: 102,
AirDefence.SAM_SA_10_S_300_Grumble_Clam_Shell_SR.id: 103, AirDefence.S_300PS_40B6MD_sr.id: 103,
AirDefence.SAM_SA_10_S_300_Grumble_Big_Bird_SR.id: 104, AirDefence.S_300PS_64H6E_sr.id: 104,
AirDefence.SAM_SA_11_Buk_Gadfly_Snow_Drift_SR.id: 107, AirDefence.SA_11_Buk_SR_9S18M1.id: 107,
AirDefence.SAM_SA_6_Kub_Straight_Flush_STR.id: 108, AirDefence.Kub_1S91_str.id: 108,
AirDefence.MCC_SR_Sborka_Dog_Ear_SR.id: 109, AirDefence.Dog_Ear_radar.id: 109,
AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR.id: 110, AirDefence.S_300PS_40B6M_tr.id: 110,
AirDefence.SAM_SA_11_Buk_Gadfly_Fire_Dome_TEL.id: 115, AirDefence.SA_11_Buk_LN_9A310M1.id: 115,
AirDefence.SAM_SA_8_Osa_Gecko_TEL.id: 117, AirDefence.Osa_9A33_ln.id: 117,
AirDefence.SAM_SA_13_Strela_10M3_Gopher_TEL.id: 118, AirDefence.Strela_10M3.id: 118,
AirDefence.SAM_SA_15_Tor_Gauntlet.id: 119, AirDefence.Tor_9A331.id: 119,
AirDefence.SAM_SA_19_Tunguska_Grison.id: 120, AirDefence._2S6_Tunguska.id: 120,
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish.id: 121, AirDefence.ZSU_23_4_Shilka.id: 121,
AirDefence.SAM_P19_Flat_Face_SR__SA_2_3.id: 122, AirDefence.P_19_s_125_sr.id: 122,
AirDefence.SAM_SA_3_S_125_Low_Blow_TR.id: 123, AirDefence.Snr_s_125_tr.id: 123,
AirDefence.SAM_Rapier_Blindfire_TR.id: 124, AirDefence.Rapier_fsa_blindfire_radar.id: 124,
AirDefence.SAM_Rapier_LN.id: 125, AirDefence.Rapier_fsa_launcher.id: 125,
AirDefence.SAM_SA_2_S_75_Fan_Song_TR.id: 126, AirDefence.SNR_75V.id: 126,
AirDefence.HQ_7_Self_Propelled_LN.id: 127, AirDefence.HQ_7_LN_SP.id: 127,
AirDefence.HQ_7_Self_Propelled_STR.id: 128, AirDefence.HQ_7_STR_SP.id: 128,
AirDefence.SAM_Roland_ADS.id: 201, AirDefence.Roland_ADS.id: 201,
AirDefence.SAM_Patriot_STR.id: 202, AirDefence.Patriot_str.id: 202,
AirDefence.SAM_Hawk_SR__AN_MPQ_50.id: 203, AirDefence.Hawk_sr.id: 203,
AirDefence.SAM_Hawk_TR__AN_MPQ_46.id: 204, AirDefence.Hawk_tr.id: 204,
AirDefence.SAM_Roland_EWR.id: 205, AirDefence.Roland_Radar.id: 205,
AirDefence.SAM_Hawk_CWAR_AN_MPQ_55.id: 206, AirDefence.Hawk_cwar.id: 206,
AirDefence.SPAAA_Gepard.id: 207, AirDefence.Gepard.id: 207,
AirDefence.SPAAA_Vulcan_M163.id: 208, AirDefence.Vulcan.id: 208,
} }
@classmethod @classmethod

View File

@ -1,108 +1,108 @@
from dcs.ships import ( from dcs.ships import (
Battlecruiser_1144_2_Pyotr_Velikiy, PIOTR,
Cruiser_1164_Moskva, MOSCOW,
CVN_70_Carl_Vinson, VINSON,
CVN_71_Theodore_Roosevelt, CVN_71,
CVN_72_Abraham_Lincoln, CVN_72,
CVN_73_George_Washington, CVN_73,
CVN_74_John_C__Stennis, Stennis,
CV_1143_5_Admiral_Kuznetsov, KUZNECOW,
CV_1143_5_Admiral_Kuznetsov_2017, CV_1143_5,
Frigate_11540_Neustrashimy, NEUSTRASH,
Corvette_1124_4_Grisha, ALBATROS,
Frigate_1135M_Rezky, REZKY,
Corvette_1241_1_Molniya, MOLNIYA,
LHA_1_Tarawa, LHA_Tarawa,
FFG_Oliver_Hazzard_Perry, PERRY,
CG_Ticonderoga, TICONDEROG,
Type_052B_Destroyer, Type_052B,
Type_052C_Destroyer, Type_052C,
Type_054A_Frigate, Type_054A,
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
) )
from dcs.vehicles import AirDefence from dcs.vehicles import AirDefence
TELARS = { TELARS = {
AirDefence.SAM_SA_19_Tunguska_Grison, AirDefence._2S6_Tunguska,
AirDefence.SAM_SA_11_Buk_Gadfly_Fire_Dome_TEL, AirDefence.SA_11_Buk_SR_9S18M1,
AirDefence.SAM_SA_8_Osa_Gecko_TEL, AirDefence.Osa_9A33_ln,
AirDefence.SAM_SA_15_Tor_Gauntlet, AirDefence.Tor_9A331,
AirDefence.SAM_Roland_ADS, AirDefence.Roland_ADS,
} }
TRACK_RADARS = { TRACK_RADARS = {
AirDefence.SAM_SA_6_Kub_Straight_Flush_STR, AirDefence.Kub_1S91_str,
AirDefence.SAM_SA_3_S_125_Low_Blow_TR, AirDefence.Snr_s_125_tr,
AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR, AirDefence.S_300PS_40B6M_tr,
AirDefence.SAM_Hawk_TR__AN_MPQ_46, AirDefence.Hawk_tr,
AirDefence.SAM_Patriot_STR, AirDefence.Patriot_str,
AirDefence.SAM_SA_2_S_75_Fan_Song_TR, AirDefence.SNR_75V,
AirDefence.SAM_Rapier_Blindfire_TR, AirDefence.Rapier_fsa_blindfire_radar,
AirDefence.HQ_7_Self_Propelled_STR, AirDefence.HQ_7_STR_SP,
} }
LAUNCHER_TRACKER_PAIRS = { LAUNCHER_TRACKER_PAIRS = {
AirDefence.SAM_SA_6_Kub_Gainful_TEL: AirDefence.SAM_SA_6_Kub_Straight_Flush_STR, AirDefence.Kub_2P25_ln: AirDefence.Kub_1S91_str,
AirDefence.SAM_SA_3_S_125_Goa_LN: AirDefence.SAM_SA_3_S_125_Low_Blow_TR, AirDefence._5p73_s_125_ln: AirDefence.Snr_s_125_tr,
AirDefence.SAM_SA_10_S_300_Grumble_TEL_D: AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR, AirDefence.S_300PS_5P85C_ln: AirDefence.S_300PS_40B6M_tr,
AirDefence.SAM_SA_10_S_300_Grumble_TEL_C: AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR, AirDefence.S_300PS_5P85D_ln: AirDefence.S_300PS_40B6M_tr,
AirDefence.SAM_Hawk_LN_M192: AirDefence.SAM_Hawk_TR__AN_MPQ_46, AirDefence.Hawk_ln: AirDefence.Hawk_tr,
AirDefence.SAM_Patriot_LN: AirDefence.SAM_Patriot_STR, AirDefence.Patriot_ln: AirDefence.Patriot_str,
AirDefence.SAM_SA_2_S_75_Guideline_LN: AirDefence.SAM_SA_2_S_75_Fan_Song_TR, AirDefence.S_75M_Volhov: AirDefence.SNR_75V,
AirDefence.SAM_Rapier_LN: AirDefence.SAM_Rapier_Blindfire_TR, AirDefence.Rapier_fsa_launcher: AirDefence.Rapier_fsa_blindfire_radar,
AirDefence.HQ_7_Self_Propelled_LN: AirDefence.HQ_7_Self_Propelled_STR, AirDefence.HQ_7_LN_SP: AirDefence.HQ_7_STR_SP,
} }
UNITS_WITH_RADAR = { UNITS_WITH_RADAR = {
# Radars # Radars
AirDefence.SAM_SA_19_Tunguska_Grison, AirDefence._2S6_Tunguska,
AirDefence.SAM_SA_11_Buk_Gadfly_Fire_Dome_TEL, AirDefence.SA_11_Buk_LN_9A310M1,
AirDefence.SAM_SA_8_Osa_Gecko_TEL, AirDefence.Osa_9A33_ln,
AirDefence.SAM_SA_15_Tor_Gauntlet, AirDefence.Tor_9A331,
AirDefence.SPAAA_Gepard, AirDefence.Gepard,
AirDefence.SPAAA_Vulcan_M163, AirDefence.Vulcan,
AirDefence.SAM_Roland_ADS, AirDefence.Roland_ADS,
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish, AirDefence.ZSU_23_4_Shilka,
AirDefence.EWR_1L13, AirDefence._1L13_EWR,
AirDefence.SAM_SA_6_Kub_Straight_Flush_STR, AirDefence.Kub_1S91_str,
AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR, AirDefence.S_300PS_40B6M_tr,
AirDefence.SAM_SA_10_S_300_Grumble_Clam_Shell_SR, AirDefence.S_300PS_40B6MD_sr,
AirDefence.EWR_55G6, AirDefence._55G6_EWR,
AirDefence.SAM_SA_10_S_300_Grumble_Big_Bird_SR, AirDefence.S_300PS_64H6E_sr,
AirDefence.SAM_SA_11_Buk_Gadfly_Snow_Drift_SR, AirDefence.SA_11_Buk_SR_9S18M1,
AirDefence.MCC_SR_Sborka_Dog_Ear_SR, AirDefence.Dog_Ear_radar,
AirDefence.SAM_Hawk_TR__AN_MPQ_46, AirDefence.Hawk_tr,
AirDefence.SAM_Hawk_SR__AN_MPQ_50, AirDefence.Hawk_sr,
AirDefence.SAM_Patriot_STR, AirDefence.Patriot_str,
AirDefence.SAM_Hawk_CWAR_AN_MPQ_55, AirDefence.Hawk_cwar,
AirDefence.SAM_P19_Flat_Face_SR__SA_2_3, AirDefence.P_19_s_125_sr,
AirDefence.SAM_Roland_EWR, AirDefence.Roland_Radar,
AirDefence.SAM_SA_3_S_125_Low_Blow_TR, AirDefence.Snr_s_125_tr,
AirDefence.SAM_SA_2_S_75_Fan_Song_TR, AirDefence.SNR_75V,
AirDefence.SAM_Rapier_Blindfire_TR, AirDefence.Rapier_fsa_blindfire_radar,
AirDefence.HQ_7_Self_Propelled_LN, AirDefence.HQ_7_LN_SP,
AirDefence.HQ_7_Self_Propelled_STR, AirDefence.HQ_7_STR_SP,
AirDefence.EWR_FuMG_401_Freya_LZ, AirDefence.FuMG_401,
AirDefence.EWR_FuSe_65_Würzburg_Riese, AirDefence.FuSe_65,
# Ships # Ships
CVN_70_Carl_Vinson, VINSON,
FFG_Oliver_Hazzard_Perry, PERRY,
CG_Ticonderoga, TICONDEROG,
Corvette_1124_4_Grisha, ALBATROS,
CV_1143_5_Admiral_Kuznetsov, KUZNECOW,
Corvette_1241_1_Molniya, MOLNIYA,
Cruiser_1164_Moskva, MOSCOW,
Frigate_11540_Neustrashimy, NEUSTRASH,
Battlecruiser_1144_2_Pyotr_Velikiy, PIOTR,
Frigate_1135M_Rezky, REZKY,
CV_1143_5_Admiral_Kuznetsov_2017, CV_1143_5,
CVN_74_John_C__Stennis, Stennis,
CVN_71_Theodore_Roosevelt, CVN_71,
CVN_72_Abraham_Lincoln, CVN_72,
CVN_73_George_Washington, CVN_73,
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
LHA_1_Tarawa, LHA_Tarawa,
Type_052B_Destroyer, Type_052B,
Type_054A_Frigate, Type_054A,
Type_052C_Destroyer, Type_052C,
} }

View File

@ -19,14 +19,14 @@ from dcs.planes import (
plane_map, plane_map,
) )
from dcs.ships import ( from dcs.ships import (
CVN_71_Theodore_Roosevelt,
CVN_72_Abraham_Lincoln,
CVN_73_George_Washington,
CVN_74_John_C__Stennis,
CVN_75_Harry_S__Truman,
CV_1143_5_Admiral_Kuznetsov,
CV_1143_5_Admiral_Kuznetsov_2017,
ship_map, ship_map,
Stennis,
KUZNECOW,
CVN_71,
CVN_75,
CVN_73,
CVN_72,
CV_1143_5,
) )
from dcs.terrain.terrain import Airport from dcs.terrain.terrain import Airport
from dcs.unitgroup import ShipGroup, StaticGroup from dcs.unitgroup import ShipGroup, StaticGroup
@ -321,21 +321,21 @@ StartingPosition = Union[ShipGroup, StaticGroup, Airport, Point]
def upgrade_to_supercarrier(unit, name: str): def upgrade_to_supercarrier(unit, name: str):
if unit == CVN_74_John_C__Stennis: if unit == Stennis:
if name == "CVN-71 Theodore Roosevelt": if name == "CVN-71 Theodore Roosevelt":
return CVN_71_Theodore_Roosevelt return CVN_71
elif name == "CVN-72 Abraham Lincoln": elif name == "CVN-72 Abraham Lincoln":
return CVN_72_Abraham_Lincoln return CVN_72
elif name == "CVN-73 George Washington": elif name == "CVN-73 George Washington":
return CVN_73_George_Washington return CVN_73
elif name == "CVN-75 Harry S. Truman": elif name == "CVN-75 Harry S. Truman":
return CVN_75_Harry_S__Truman return CVN_75
elif name == "Carrier Strike Group 8": elif name == "Carrier Strike Group 8":
return CVN_75_Harry_S__Truman return CVN_75
else: else:
return CVN_71_Theodore_Roosevelt return CVN_71
elif unit == CV_1143_5_Admiral_Kuznetsov: elif unit == KUZNECOW:
return CV_1143_5_Admiral_Kuznetsov_2017 return CV_1143_5
else: else:
return unit return unit

View File

@ -16,10 +16,10 @@ from dcs.country import Country
from dcs.mapping import Point from dcs.mapping import Point
from dcs.planes import F_15C from dcs.planes import F_15C
from dcs.ships import ( from dcs.ships import (
Bulker_Handy_Wind, HandyWind,
CVN_74_John_C__Stennis, Stennis,
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
LHA_1_Tarawa, LHA_Tarawa,
) )
from dcs.statics import Fortification, Warehouse from dcs.statics import Fortification, Warehouse
from dcs.terrain import ( from dcs.terrain import (
@ -77,53 +77,53 @@ class MizCampaignLoader:
OFF_MAP_UNIT_TYPE = F_15C.id OFF_MAP_UNIT_TYPE = F_15C.id
CV_UNIT_TYPE = CVN_74_John_C__Stennis.id CV_UNIT_TYPE = Stennis.id
LHA_UNIT_TYPE = LHA_1_Tarawa.id LHA_UNIT_TYPE = LHA_Tarawa.id
FRONT_LINE_UNIT_TYPE = Armor.APC_M113.id FRONT_LINE_UNIT_TYPE = Armor.M_113.id
SHIPPING_LANE_UNIT_TYPE = Bulker_Handy_Wind.id SHIPPING_LANE_UNIT_TYPE = HandyWind.id
FOB_UNIT_TYPE = Unarmed.Truck_SKP_11_Mobile_ATC.id FOB_UNIT_TYPE = Unarmed.SKP_11.id
FARP_HELIPAD = "SINGLE_HELIPAD" FARP_HELIPAD = "SINGLE_HELIPAD"
OFFSHORE_STRIKE_TARGET_UNIT_TYPE = Fortification.Oil_platform.id OFFSHORE_STRIKE_TARGET_UNIT_TYPE = Fortification.Oil_platform.id
SHIP_UNIT_TYPE = DDG_Arleigh_Burke_IIa.id SHIP_UNIT_TYPE = USS_Arleigh_Burke_IIa.id
MISSILE_SITE_UNIT_TYPE = MissilesSS.SSM_SS_1C_Scud_B.id MISSILE_SITE_UNIT_TYPE = MissilesSS.Scud_B.id
COASTAL_DEFENSE_UNIT_TYPE = MissilesSS.AShM_SS_N_2_Silkworm.id COASTAL_DEFENSE_UNIT_TYPE = MissilesSS.Hy_launcher.id
# Multiple options for air defenses so campaign designers can more accurately see # Multiple options for air defenses so campaign designers can more accurately see
# the coverage of their IADS for the expected type. # the coverage of their IADS for the expected type.
LONG_RANGE_SAM_UNIT_TYPES = { LONG_RANGE_SAM_UNIT_TYPES = {
AirDefence.SAM_Patriot_LN.id, AirDefence.Patriot_ln.id,
AirDefence.SAM_SA_10_S_300_Grumble_TEL_C.id, AirDefence.S_300PS_5P85C_ln.id,
AirDefence.SAM_SA_10_S_300_Grumble_TEL_D.id, AirDefence.S_300PS_5P85D_ln.id,
} }
MEDIUM_RANGE_SAM_UNIT_TYPES = { MEDIUM_RANGE_SAM_UNIT_TYPES = {
AirDefence.SAM_Hawk_LN_M192.id, AirDefence.Hawk_ln.id,
AirDefence.SAM_SA_2_S_75_Guideline_LN.id, AirDefence.S_75M_Volhov.id,
AirDefence.SAM_SA_3_S_125_Goa_LN.id, AirDefence._5p73_s_125_ln.id,
} }
SHORT_RANGE_SAM_UNIT_TYPES = { SHORT_RANGE_SAM_UNIT_TYPES = {
AirDefence.SAM_Avenger__Stinger.id, AirDefence.M1097_Avenger.id,
AirDefence.SAM_Rapier_LN.id, AirDefence.Rapier_fsa_launcher.id,
AirDefence.SAM_SA_19_Tunguska_Grison.id, AirDefence._2S6_Tunguska.id,
AirDefence.SAM_SA_9_Strela_1_Gaskin_TEL.id, AirDefence.Strela_1_9P31.id,
} }
AAA_UNIT_TYPES = { AAA_UNIT_TYPES = {
AirDefence.AAA_8_8cm_Flak_18.id, AirDefence.Flak18.id,
AirDefence.SPAAA_Vulcan_M163.id, AirDefence.Vulcan.id,
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish.id, AirDefence.ZSU_23_4_Shilka.id,
} }
EWR_UNIT_TYPE = AirDefence.EWR_1L13.id EWR_UNIT_TYPE = AirDefence._1L13_EWR.id
ARMOR_GROUP_UNIT_TYPE = Armor.MBT_M1A2_Abrams.id ARMOR_GROUP_UNIT_TYPE = Armor.M_1_Abrams.id
FACTORY_UNIT_TYPE = Fortification.Workshop_A.id FACTORY_UNIT_TYPE = Fortification.Workshop_A.id
AMMUNITION_DEPOT_UNIT_TYPE = Warehouse.Ammunition_depot.id AMMUNITION_DEPOT_UNIT_TYPE = Warehouse._Ammunition_depot.id
STRIKE_TARGET_UNIT_TYPE = Fortification.Tech_combine.id STRIKE_TARGET_UNIT_TYPE = Fortification.Tech_combine.id

View File

@ -24,10 +24,10 @@ from typing import (
from dcs.mapping import Point from dcs.mapping import Point
from dcs.ships import ( from dcs.ships import (
CVN_74_John_C__Stennis, Stennis,
CV_1143_5_Admiral_Kuznetsov, KUZNECOW,
LHA_1_Tarawa, LHA_Tarawa,
Type_071_Amphibious_Transport_Dock, Type_071,
) )
from dcs.terrain.terrain import Airport, ParkingSlot from dcs.terrain.terrain import Airport, ParkingSlot
from dcs.unit import Unit from dcs.unit import Unit
@ -485,14 +485,14 @@ class ControlPoint(MissionTarget, ABC):
for group in g.groups: for group in g.groups:
for u in group.units: for u in group.units:
if db.unit_type_from_name(u.type) in [ if db.unit_type_from_name(u.type) in [
CVN_74_John_C__Stennis, Stennis,
CV_1143_5_Admiral_Kuznetsov, KUZNECOW,
]: ]:
return group.name return group.name
elif g.dcs_identifier == "LHA": elif g.dcs_identifier == "LHA":
for group in g.groups: for group in g.groups:
for u in group.units: for u in group.units:
if db.unit_type_from_name(u.type) in [LHA_1_Tarawa]: if db.unit_type_from_name(u.type) in [LHA_Tarawa]:
return group.name return group.name
return None return None
@ -891,10 +891,10 @@ class NavalControlPoint(ControlPoint, ABC):
for group in self.find_main_tgo().groups: for group in self.find_main_tgo().groups:
for u in group.units: for u in group.units:
if db.unit_type_from_name(u.type) in [ if db.unit_type_from_name(u.type) in [
CVN_74_John_C__Stennis, Stennis,
LHA_1_Tarawa, LHA_Tarawa,
CV_1143_5_Admiral_Kuznetsov, KUZNECOW,
Type_071_Amphibious_Transport_Dock, Type_071,
]: ]:
return True return True
return False return False

View File

@ -70,9 +70,9 @@ VERSION = _build_version_string()
#: Version 4.2 #: Version 4.2
#: * Adds support for AAA objectives. Place with any of the following units (either red #: * Adds support for AAA objectives. Place with any of the following units (either red
#: or blue): #: or blue):
#: * AAA_8_8cm_Flak_18, #: * Flak18,
#: * SPAAA_Vulcan_M163, #: * Vulcan,
#: * SPAAA_ZSU_23_4_Shilka_Gun_Dish, #: * ZSU_23_4_Shilka,
#: #:
#: Version 5.0 #: Version 5.0
#: * Ammunition Depots objective locations are now predetermined using the "Ammunition #: * Ammunition Depots objective locations are now predetermined using the "Ammunition

View File

@ -4,7 +4,7 @@ import itertools
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from dcs import Mission from dcs import Mission
from dcs.ships import Bulker_Handy_Wind from dcs.ships import HandyWind
from dcs.unitgroup import ShipGroup from dcs.unitgroup import ShipGroup
from game.transfers import CargoShip from game.transfers import CargoShip
@ -35,7 +35,7 @@ class CargoShipGenerator:
group = self.mission.ship_group( group = self.mission.ship_group(
country, country,
ship.name, ship.name,
Bulker_Handy_Wind, HandyWind,
position=waypoints[0], position=waypoints[0],
group_size=1, group_size=1,
) )

View File

@ -32,7 +32,7 @@ class SilkwormGenerator(GroupGenerator):
# Commander # Commander
self.add_unit( self.add_unit(
Unarmed.Truck_KAMAZ_43101, Unarmed.KAMAZ_Truck,
"KAMAZ#0", "KAMAZ#0",
self.position.x - 35, self.position.x - 35,
self.position.y - 20, self.position.y - 20,
@ -41,7 +41,7 @@ class SilkwormGenerator(GroupGenerator):
# Shorad # Shorad
self.add_unit( self.add_unit(
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish, AirDefence.ZSU_23_4_Shilka,
"SHILKA#0", "SHILKA#0",
self.position.x - 55, self.position.x - 55,
self.position.y - 38, self.position.y - 38,
@ -50,7 +50,7 @@ class SilkwormGenerator(GroupGenerator):
# Shorad 2 # Shorad 2
self.add_unit( self.add_unit(
AirDefence.SAM_SA_9_Strela_1_Gaskin_TEL, AirDefence.Strela_1_9P31,
"STRELA#0", "STRELA#0",
self.position.x + 200, self.position.x + 200,
self.position.y + 15, self.position.y + 15,

View File

@ -2,7 +2,7 @@ import random
from gen.sam.group_generator import ShipGroupGenerator from gen.sam.group_generator import ShipGroupGenerator
from dcs.ships import DDG_Arleigh_Burke_IIa, CG_Ticonderoga from dcs.ships import USS_Arleigh_Burke_IIa, TICONDEROG
class CarrierGroupGenerator(ShipGroupGenerator): class CarrierGroupGenerator(ShipGroupGenerator):
@ -22,7 +22,7 @@ class CarrierGroupGenerator(ShipGroupGenerator):
# Add Arleigh Burke escort # Add Arleigh Burke escort
self.add_unit( self.add_unit(
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
"USS Ramage", "USS Ramage",
self.position.x + 6482, self.position.x + 6482,
self.position.y + 6667, self.position.y + 6667,
@ -30,7 +30,7 @@ class CarrierGroupGenerator(ShipGroupGenerator):
) )
self.add_unit( self.add_unit(
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
"USS Mitscher", "USS Mitscher",
self.position.x - 7963, self.position.x - 7963,
self.position.y + 7037, self.position.y + 7037,
@ -38,7 +38,7 @@ class CarrierGroupGenerator(ShipGroupGenerator):
) )
self.add_unit( self.add_unit(
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
"USS Forrest Sherman", "USS Forrest Sherman",
self.position.x - 7408, self.position.x - 7408,
self.position.y - 7408, self.position.y - 7408,
@ -46,7 +46,7 @@ class CarrierGroupGenerator(ShipGroupGenerator):
) )
self.add_unit( self.add_unit(
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
"USS Lassen", "USS Lassen",
self.position.x + 8704, self.position.x + 8704,
self.position.y - 6296, self.position.y - 6296,
@ -56,7 +56,7 @@ class CarrierGroupGenerator(ShipGroupGenerator):
# Add Ticonderoga escort # Add Ticonderoga escort
if self.heading >= 180: if self.heading >= 180:
self.add_unit( self.add_unit(
CG_Ticonderoga, TICONDEROG,
"USS Hué City", "USS Hué City",
self.position.x + 2222, self.position.x + 2222,
self.position.y - 3333, self.position.y - 3333,
@ -64,7 +64,7 @@ class CarrierGroupGenerator(ShipGroupGenerator):
) )
else: else:
self.add_unit( self.add_unit(
CG_Ticonderoga, TICONDEROG,
"USS Hué City", "USS Hué City",
self.position.x - 3333, self.position.x - 3333,
self.position.y + 2222, self.position.y + 2222,

View File

@ -5,9 +5,9 @@ from typing import TYPE_CHECKING
from dcs.ships import ( from dcs.ships import (
Type_052C_Destroyer, Type_052C,
Type_052B_Destroyer, Type_052B,
Type_054A_Frigate, Type_054A,
) )
from game.factions.faction import Faction from game.factions.faction import Faction
@ -30,14 +30,14 @@ class ChineseNavyGroupGenerator(ShipGroupGenerator):
if include_frigate: if include_frigate:
self.add_unit( self.add_unit(
Type_054A_Frigate, Type_054A,
"FF1", "FF1",
self.position.x + 1200, self.position.x + 1200,
self.position.y + 900, self.position.y + 900,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Type_054A_Frigate, Type_054A,
"FF2", "FF2",
self.position.x + 1200, self.position.x + 1200,
self.position.y - 900, self.position.y - 900,
@ -45,7 +45,7 @@ class ChineseNavyGroupGenerator(ShipGroupGenerator):
) )
if include_dd: if include_dd:
dd_type = random.choice([Type_052C_Destroyer, Type_052B_Destroyer]) dd_type = random.choice([Type_052C, Type_052B])
self.add_unit( self.add_unit(
dd_type, dd_type,
"DD1", "DD1",
@ -69,5 +69,5 @@ class Type54GroupGenerator(DDGroupGenerator):
self, game: Game, ground_object: TheaterGroundObject, faction: Faction self, game: Game, ground_object: TheaterGroundObject, faction: Faction
): ):
super(Type54GroupGenerator, self).__init__( super(Type54GroupGenerator, self).__init__(
game, ground_object, faction, Type_054A_Frigate game, ground_object, faction, Type_054A
) )

View File

@ -1,12 +1,12 @@
from __future__ import annotations from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING, Type
from game.factions.faction import Faction from game.factions.faction import Faction
from game.theater.theatergroundobject import TheaterGroundObject from game.theater.theatergroundobject import TheaterGroundObject
from gen.sam.group_generator import ShipGroupGenerator from gen.sam.group_generator import ShipGroupGenerator
from dcs.unittype import ShipType from dcs.unittype import ShipType
from dcs.ships import FFG_Oliver_Hazzard_Perry, DDG_Arleigh_Burke_IIa from dcs.ships import PERRY, USS_Arleigh_Burke_IIa
if TYPE_CHECKING: if TYPE_CHECKING:
from game.game import Game from game.game import Game
@ -18,7 +18,7 @@ class DDGroupGenerator(ShipGroupGenerator):
game: Game, game: Game,
ground_object: TheaterGroundObject, ground_object: TheaterGroundObject,
faction: Faction, faction: Faction,
ddtype: ShipType, ddtype: Type[ShipType],
): ):
super(DDGroupGenerator, self).__init__(game, ground_object, faction) super(DDGroupGenerator, self).__init__(game, ground_object, faction)
self.ddtype = ddtype self.ddtype = ddtype
@ -46,7 +46,7 @@ class OliverHazardPerryGroupGenerator(DDGroupGenerator):
self, game: Game, ground_object: TheaterGroundObject, faction: Faction self, game: Game, ground_object: TheaterGroundObject, faction: Faction
): ):
super(OliverHazardPerryGroupGenerator, self).__init__( super(OliverHazardPerryGroupGenerator, self).__init__(
game, ground_object, faction, FFG_Oliver_Hazzard_Perry game, ground_object, faction, PERRY
) )
@ -55,5 +55,5 @@ class ArleighBurkeGroupGenerator(DDGroupGenerator):
self, game: Game, ground_object: TheaterGroundObject, faction: Faction self, game: Game, ground_object: TheaterGroundObject, faction: Faction
): ):
super(ArleighBurkeGroupGenerator, self).__init__( super(ArleighBurkeGroupGenerator, self).__init__(
game, ground_object, faction, DDG_Arleigh_Burke_IIa game, ground_object, faction, USS_Arleigh_Burke_IIa
) )

View File

@ -1,4 +1,4 @@
from dcs.ships import FAC_La_Combattante_IIa from dcs.ships import La_Combattante_II
from game.factions.faction import Faction from game.factions.faction import Faction
from game.theater import TheaterGroundObject from game.theater import TheaterGroundObject
@ -8,5 +8,5 @@ from gen.fleet.dd_group import DDGroupGenerator
class LaCombattanteIIGroupGenerator(DDGroupGenerator): class LaCombattanteIIGroupGenerator(DDGroupGenerator):
def __init__(self, game, ground_object: TheaterGroundObject, faction: Faction): def __init__(self, game, ground_object: TheaterGroundObject, faction: Faction):
super(LaCombattanteIIGroupGenerator, self).__init__( super(LaCombattanteIIGroupGenerator, self).__init__(
game, ground_object, faction, FAC_La_Combattante_IIa game, ground_object, faction, La_Combattante_II
) )

View File

@ -3,13 +3,13 @@ import random
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from dcs.ships import ( from dcs.ships import (
Corvette_1124_4_Grisha, ALBATROS,
Corvette_1241_1_Molniya, MOLNIYA,
Frigate_11540_Neustrashimy, NEUSTRASH,
Frigate_1135M_Rezky, REZKY,
Cruiser_1164_Moskva, MOSCOW,
SSK_877V_Kilo, KILO,
SSK_641B_Tango, SOM,
) )
from gen.fleet.dd_group import DDGroupGenerator from gen.fleet.dd_group import DDGroupGenerator
@ -37,9 +37,7 @@ class RussianNavyGroupGenerator(ShipGroupGenerator):
include_frigate = True include_frigate = True
if include_frigate: if include_frigate:
frigate_type = random.choice( frigate_type = random.choice([ALBATROS, MOLNIYA])
[Corvette_1124_4_Grisha, Corvette_1241_1_Molniya]
)
self.add_unit( self.add_unit(
frigate_type, frigate_type,
"FF1", "FF1",
@ -56,7 +54,7 @@ class RussianNavyGroupGenerator(ShipGroupGenerator):
) )
if include_dd: if include_dd:
dd_type = random.choice([Frigate_11540_Neustrashimy, Frigate_1135M_Rezky]) dd_type = random.choice([NEUSTRASH, REZKY])
self.add_unit( self.add_unit(
dd_type, dd_type,
"DD1", "DD1",
@ -76,7 +74,7 @@ class RussianNavyGroupGenerator(ShipGroupGenerator):
# Only include the Moskva for now, the Pyotry Velikiy is an unkillable monster. # Only include the Moskva for now, the Pyotry Velikiy is an unkillable monster.
# See https://github.com/dcs-liberation/dcs_liberation/issues/567 # See https://github.com/dcs-liberation/dcs_liberation/issues/567
self.add_unit( self.add_unit(
Cruiser_1164_Moskva, MOSCOW,
"CC1", "CC1",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -91,7 +89,7 @@ class GrishaGroupGenerator(DDGroupGenerator):
self, game: Game, ground_object: TheaterGroundObject, faction: Faction self, game: Game, ground_object: TheaterGroundObject, faction: Faction
): ):
super(GrishaGroupGenerator, self).__init__( super(GrishaGroupGenerator, self).__init__(
game, ground_object, faction, Corvette_1124_4_Grisha game, ground_object, faction, ALBATROS
) )
@ -100,7 +98,7 @@ class MolniyaGroupGenerator(DDGroupGenerator):
self, game: Game, ground_object: TheaterGroundObject, faction: Faction self, game: Game, ground_object: TheaterGroundObject, faction: Faction
): ):
super(MolniyaGroupGenerator, self).__init__( super(MolniyaGroupGenerator, self).__init__(
game, ground_object, faction, Corvette_1241_1_Molniya game, ground_object, faction, MOLNIYA
) )
@ -108,15 +106,11 @@ class KiloSubGroupGenerator(DDGroupGenerator):
def __init__( def __init__(
self, game: Game, ground_object: TheaterGroundObject, faction: Faction self, game: Game, ground_object: TheaterGroundObject, faction: Faction
): ):
super(KiloSubGroupGenerator, self).__init__( super(KiloSubGroupGenerator, self).__init__(game, ground_object, faction, KILO)
game, ground_object, faction, SSK_877V_Kilo
)
class TangoSubGroupGenerator(DDGroupGenerator): class TangoSubGroupGenerator(DDGroupGenerator):
def __init__( def __init__(
self, game: Game, ground_object: TheaterGroundObject, faction: Faction self, game: Game, ground_object: TheaterGroundObject, faction: Faction
): ):
super(TangoSubGroupGenerator, self).__init__( super(TangoSubGroupGenerator, self).__init__(game, ground_object, faction, SOM)
game, ground_object, faction, SSK_641B_Tango
)

View File

@ -1,6 +1,6 @@
import random import random
from dcs.ships import Boat_Schnellboot_type_S130 from dcs.ships import Schnellboot_type_S130
from gen.sam.group_generator import ShipGroupGenerator from gen.sam.group_generator import ShipGroupGenerator
@ -10,7 +10,7 @@ class SchnellbootGroupGenerator(ShipGroupGenerator):
for i in range(random.randint(2, 4)): for i in range(random.randint(2, 4)):
self.add_unit( self.add_unit(
Boat_Schnellboot_type_S130, Schnellboot_type_S130,
"Schnellboot" + str(i), "Schnellboot" + str(i),
self.position.x + i * random.randint(100, 250), self.position.x + i * random.randint(100, 250),
self.position.y + (random.randint(100, 200) - 100), self.position.y + (random.randint(100, 200) - 100),

View File

@ -1,6 +1,6 @@
import random import random
from dcs.ships import U_boat_VIIC_U_flak from dcs.ships import Uboat_VIIC
from gen.sam.group_generator import ShipGroupGenerator from gen.sam.group_generator import ShipGroupGenerator
@ -10,7 +10,7 @@ class UBoatGroupGenerator(ShipGroupGenerator):
for i in range(random.randint(1, 4)): for i in range(random.randint(1, 4)):
self.add_unit( self.add_unit(
U_boat_VIIC_U_flak, Uboat_VIIC,
"Uboat" + str(i), "Uboat" + str(i),
self.position.x + i * random.randint(100, 250), self.position.x + i * random.randint(100, 250),
self.position.y + (random.randint(100, 200) - 100), self.position.y + (random.randint(100, 200) - 100),

View File

@ -1,6 +1,6 @@
import random import random
from dcs.ships import LS_Samuel_Chase, LST_Mk_II from dcs.ships import USS_Samuel_Chase, LST_Mk2
from gen.sam.group_generator import ShipGroupGenerator from gen.sam.group_generator import ShipGroupGenerator
@ -10,7 +10,7 @@ class WW2LSTGroupGenerator(ShipGroupGenerator):
# Add LS Samuel Chase # Add LS Samuel Chase
self.add_unit( self.add_unit(
LS_Samuel_Chase, USS_Samuel_Chase,
"SamuelChase", "SamuelChase",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -19,7 +19,7 @@ class WW2LSTGroupGenerator(ShipGroupGenerator):
for i in range(1, random.randint(3, 4)): for i in range(1, random.randint(3, 4)):
self.add_unit( self.add_unit(
LST_Mk_II, LST_Mk2,
"LST" + str(i), "LST" + str(i),
self.position.x + i * random.randint(800, 1200), self.position.x + i * random.randint(800, 1200),
self.position.y, self.position.y,

View File

@ -37,7 +37,7 @@ class ScudGenerator(GroupGenerator):
# Commander # Commander
self.add_unit( self.add_unit(
Unarmed.LUV_UAZ_469_Jeep, Unarmed.UAZ_469,
"Kubel#0", "Kubel#0",
self.position.x - 35, self.position.x - 35,
self.position.y - 20, self.position.y - 20,
@ -46,7 +46,7 @@ class ScudGenerator(GroupGenerator):
# Shorad # Shorad
self.add_unit( self.add_unit(
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish, AirDefence.ZSU_23_4_Shilka,
"SHILKA#0", "SHILKA#0",
self.position.x - 55, self.position.x - 55,
self.position.y - 38, self.position.y - 38,
@ -54,7 +54,7 @@ class ScudGenerator(GroupGenerator):
) )
self.add_unit( self.add_unit(
AirDefence.SAM_SA_9_Strela_1_Gaskin_TEL, AirDefence.Strela_1_9P31,
"STRELA#0", "STRELA#0",
self.position.x + 200, self.position.x + 200,
self.position.y + 15, self.position.y + 15,

View File

@ -37,7 +37,7 @@ class V1GroupGenerator(GroupGenerator):
# Commander # Commander
self.add_unit( self.add_unit(
Unarmed.LUV_Kubelwagen_82, Unarmed.Kubelwagen_82,
"Kubel#0", "Kubel#0",
self.position.x - 35, self.position.x - 35,
self.position.y - 20, self.position.y - 20,
@ -45,9 +45,7 @@ class V1GroupGenerator(GroupGenerator):
) )
# Self defense flak # Self defense flak
flak_unit = random.choice( flak_unit = random.choice([AirDefence.Flak38, AirDefence.Flak30])
[AirDefence.AAA_Flak_Vierling_38_Quad_20mm, AirDefence.AAA_Flak_38_20mm]
)
self.add_unit( self.add_unit(
flak_unit, flak_unit,
@ -58,7 +56,7 @@ class V1GroupGenerator(GroupGenerator):
) )
self.add_unit( self.add_unit(
Unarmed.Truck_Opel_Blitz, Unarmed.Blitz_36_6700A,
"Blitz#0", "Blitz#0",
self.position.x + 200, self.position.x + 200,
self.position.y + 15, self.position.y + 15,

View File

@ -27,7 +27,7 @@ class BoforsGenerator(AirDefenseGroupGenerator):
for j in range(grid_y): for j in range(grid_y):
index = index + 1 index = index + 1
self.add_unit( self.add_unit(
AirDefence.AAA_Bofors_40mm, AirDefence.Bofors40,
"AAA#" + str(index), "AAA#" + str(index),
self.position.x + spacing * i, self.position.x + spacing * i,
self.position.y + spacing * j, self.position.y + spacing * j,

View File

@ -8,12 +8,12 @@ from gen.sam.airdefensegroupgenerator import (
) )
GFLAK = [ GFLAK = [
AirDefence.AAA_Flak_Vierling_38_Quad_20mm, AirDefence.Flak38,
AirDefence.AAA_8_8cm_Flak_18, AirDefence.Flak18,
AirDefence.AAA_8_8cm_Flak_36, AirDefence.Flak36,
AirDefence.AAA_8_8cm_Flak_37, AirDefence.Flak37,
AirDefence.AAA_8_8cm_Flak_41, AirDefence.Flak41,
AirDefence.AAA_Flak_38_20mm, AirDefence.Flak30,
] ]
@ -53,7 +53,7 @@ class FlakGenerator(AirDefenseGroupGenerator):
search_pos = self.get_circular_position(random.randint(2, 3), 80) search_pos = self.get_circular_position(random.randint(2, 3), 80)
for index, pos in enumerate(search_pos): for index, pos in enumerate(search_pos):
self.add_unit( self.add_unit(
AirDefence.SL_Flakscheinwerfer_37, AirDefence.Flakscheinwerfer_37,
"SearchLight#" + str(index), "SearchLight#" + str(index),
pos[0], pos[0],
pos[1], pos[1],
@ -62,14 +62,14 @@ class FlakGenerator(AirDefenseGroupGenerator):
# Support # Support
self.add_unit( self.add_unit(
AirDefence.PU_Maschinensatz_33, AirDefence.Maschinensatz_33,
"MC33#", "MC33#",
self.position.x - 20, self.position.x - 20,
self.position.y - 20, self.position.y - 20,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.AAA_SP_Kdo_G_40, AirDefence.KDO_Mod40,
"KDO#", "KDO#",
self.position.x - 25, self.position.x - 25,
self.position.y - 20, self.position.y - 20,
@ -78,7 +78,7 @@ class FlakGenerator(AirDefenseGroupGenerator):
# Commander # Commander
self.add_unit( self.add_unit(
Unarmed.LUV_Kubelwagen_82, Unarmed.Kubelwagen_82,
"Kubel#", "Kubel#",
self.position.x - 35, self.position.x - 35,
self.position.y - 20, self.position.y - 20,
@ -89,7 +89,7 @@ class FlakGenerator(AirDefenseGroupGenerator):
for i in range(int(max(1, grid_x / 2))): for i in range(int(max(1, grid_x / 2))):
for j in range(int(max(1, grid_x / 2))): for j in range(int(max(1, grid_x / 2))):
self.add_unit( self.add_unit(
Unarmed.Truck_Opel_Blitz, Unarmed.Blitz_36_6700A,
"BLITZ#" + str(index), "BLITZ#" + str(index),
self.position.x + 125 + 15 * i + random.randint(1, 5), self.position.x + 125 + 15 * i + random.randint(1, 5),
self.position.y + 15 * j + random.randint(1, 5), self.position.y + 15 * j + random.randint(1, 5),

View File

@ -25,7 +25,7 @@ class Flak18Generator(AirDefenseGroupGenerator):
for j in range(2): for j in range(2):
index = index + 1 index = index + 1
self.add_unit( self.add_unit(
AirDefence.AAA_8_8cm_Flak_18, AirDefence.Flak18,
"AAA#" + str(index), "AAA#" + str(index),
self.position.x + spacing * i + random.randint(1, 5), self.position.x + spacing * i + random.randint(1, 5),
self.position.y + spacing * j + random.randint(1, 5), self.position.y + spacing * j + random.randint(1, 5),
@ -34,7 +34,7 @@ class Flak18Generator(AirDefenseGroupGenerator):
# Add a commander truck # Add a commander truck
self.add_unit( self.add_unit(
Unarmed.Truck_Opel_Blitz, Unarmed.Blitz_36_6700A,
"Blitz#", "Blitz#",
self.position.x - 35, self.position.x - 35,
self.position.y - 20, self.position.y - 20,

View File

@ -21,7 +21,7 @@ class AllyWW2FlakGenerator(AirDefenseGroupGenerator):
positions = self.get_circular_position(4, launcher_distance=30, coverage=360) positions = self.get_circular_position(4, launcher_distance=30, coverage=360)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.AAA_QF_3_7, AirDefence.QF_37_AA,
"AA#" + str(i), "AA#" + str(i),
position[0], position[0],
position[1], position[1],
@ -31,7 +31,7 @@ class AllyWW2FlakGenerator(AirDefenseGroupGenerator):
positions = self.get_circular_position(8, launcher_distance=60, coverage=360) positions = self.get_circular_position(8, launcher_distance=60, coverage=360)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.AAA_M1_37mm, AirDefence.M1_37mm,
"AA#" + str(4 + i), "AA#" + str(4 + i),
position[0], position[0],
position[1], position[1],
@ -41,7 +41,7 @@ class AllyWW2FlakGenerator(AirDefenseGroupGenerator):
positions = self.get_circular_position(8, launcher_distance=90, coverage=360) positions = self.get_circular_position(8, launcher_distance=90, coverage=360)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.AAA_M45_Quadmount_HB_12_7mm, AirDefence.M45_Quadmount,
"AA#" + str(12 + i), "AA#" + str(12 + i),
position[0], position[0],
position[1], position[1],
@ -50,28 +50,28 @@ class AllyWW2FlakGenerator(AirDefenseGroupGenerator):
# Add a commander truck # Add a commander truck
self.add_unit( self.add_unit(
Unarmed.Car_Willys_Jeep, Unarmed.Willys_MB,
"CMD#1", "CMD#1",
self.position.x, self.position.x,
self.position.y - 20, self.position.y - 20,
random.randint(0, 360), random.randint(0, 360),
) )
self.add_unit( self.add_unit(
Unarmed.Carrier_M30_Cargo, Unarmed.M30_CC,
"LOG#1", "LOG#1",
self.position.x, self.position.x,
self.position.y + 20, self.position.y + 20,
random.randint(0, 360), random.randint(0, 360),
) )
self.add_unit( self.add_unit(
Unarmed.Tractor_M4_Hi_Speed, Unarmed.M4_Tractor,
"LOG#2", "LOG#2",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
random.randint(0, 360), random.randint(0, 360),
) )
self.add_unit( self.add_unit(
Unarmed.Truck_Bedford, Unarmed.Bedford_MWD,
"LOG#3", "LOG#3",
self.position.x - 20, self.position.x - 20,
self.position.y, self.position.y,

View File

@ -21,7 +21,7 @@ class ZSU57Generator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SPAAA_ZSU_57_2, AirDefence.ZSU_57_2,
"SPAA#" + str(i), "SPAA#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -27,7 +27,7 @@ class ZU23InsurgentGenerator(AirDefenseGroupGenerator):
for j in range(grid_y): for j in range(grid_y):
index = index + 1 index = index + 1
self.add_unit( self.add_unit(
AirDefence.AAA_ZU_23_Insurgent_Closed_Emplacement, AirDefence.ZU_23_Closed_Insurgent,
"AAA#" + str(index), "AAA#" + str(index),
self.position.x + spacing * i, self.position.x + spacing * i,
self.position.y + spacing * j, self.position.y + spacing * j,

View File

@ -29,7 +29,7 @@ class EarlyColdWarFlakGenerator(AirDefenseGroupGenerator):
for j in range(2): for j in range(2):
index = index + 1 index = index + 1
self.add_unit( self.add_unit(
AirDefence.AAA_8_8cm_Flak_18, AirDefence.Flak18,
"AAA#" + str(index), "AAA#" + str(index),
self.position.x + spacing * i + random.randint(1, 5), self.position.x + spacing * i + random.randint(1, 5),
self.position.y + spacing * j + random.randint(1, 5), self.position.y + spacing * j + random.randint(1, 5),
@ -38,14 +38,14 @@ class EarlyColdWarFlakGenerator(AirDefenseGroupGenerator):
# Medium range guns # Medium range guns
self.add_unit( self.add_unit(
AirDefence.AAA_S_60_57mm, AirDefence.S_60_Type59_Artillery,
"SHO#1", "SHO#1",
self.position.x - 40, self.position.x - 40,
self.position.y - 40, self.position.y - 40,
self.heading + 180, self.heading + 180,
), ),
self.add_unit( self.add_unit(
AirDefence.AAA_S_60_57mm, AirDefence.S_60_Type59_Artillery,
"SHO#2", "SHO#2",
self.position.x + spacing * 2 + 40, self.position.x + spacing * 2 + 40,
self.position.y + spacing + 40, self.position.y + spacing + 40,
@ -54,14 +54,14 @@ class EarlyColdWarFlakGenerator(AirDefenseGroupGenerator):
# Short range guns # Short range guns
self.add_unit( self.add_unit(
AirDefence.AAA_ZU_23_Closed_Emplacement, AirDefence.ZU_23_Emplacement_Closed,
"SHO#3", "SHO#3",
self.position.x - 80, self.position.x - 80,
self.position.y - 40, self.position.y - 40,
self.heading + 180, self.heading + 180,
), ),
self.add_unit( self.add_unit(
AirDefence.AAA_ZU_23_Closed_Emplacement, AirDefence.ZU_23_Emplacement_Closed,
"SHO#4", "SHO#4",
self.position.x + spacing * 2 + 80, self.position.x + spacing * 2 + 80,
self.position.y + spacing + 40, self.position.y + spacing + 40,
@ -70,7 +70,7 @@ class EarlyColdWarFlakGenerator(AirDefenseGroupGenerator):
# Add a truck # Add a truck
self.add_unit( self.add_unit(
Unarmed.Truck_KAMAZ_43101, Unarmed.KAMAZ_Truck,
"Truck#", "Truck#",
self.position.x - 60, self.position.x - 60,
self.position.y - 20, self.position.y - 20,
@ -102,7 +102,7 @@ class ColdWarFlakGenerator(AirDefenseGroupGenerator):
for j in range(2): for j in range(2):
index = index + 1 index = index + 1
self.add_unit( self.add_unit(
AirDefence.AAA_8_8cm_Flak_18, AirDefence.Flak18,
"AAA#" + str(index), "AAA#" + str(index),
self.position.x + spacing * i + random.randint(1, 5), self.position.x + spacing * i + random.randint(1, 5),
self.position.y + spacing * j + random.randint(1, 5), self.position.y + spacing * j + random.randint(1, 5),
@ -111,14 +111,14 @@ class ColdWarFlakGenerator(AirDefenseGroupGenerator):
# Medium range guns # Medium range guns
self.add_unit( self.add_unit(
AirDefence.AAA_S_60_57mm, AirDefence.S_60_Type59_Artillery,
"SHO#1", "SHO#1",
self.position.x - 40, self.position.x - 40,
self.position.y - 40, self.position.y - 40,
self.heading + 180, self.heading + 180,
), ),
self.add_unit( self.add_unit(
AirDefence.AAA_S_60_57mm, AirDefence.S_60_Type59_Artillery,
"SHO#2", "SHO#2",
self.position.x + spacing * 2 + 40, self.position.x + spacing * 2 + 40,
self.position.y + spacing + 40, self.position.y + spacing + 40,
@ -127,14 +127,14 @@ class ColdWarFlakGenerator(AirDefenseGroupGenerator):
# Short range guns # Short range guns
self.add_unit( self.add_unit(
AirDefence.AAA_ZU_23_Closed_Emplacement, AirDefence.ZU_23_Emplacement_Closed,
"SHO#3", "SHO#3",
self.position.x - 80, self.position.x - 80,
self.position.y - 40, self.position.y - 40,
self.heading + 180, self.heading + 180,
), ),
self.add_unit( self.add_unit(
AirDefence.AAA_ZU_23_Closed_Emplacement, AirDefence.ZU_23_Emplacement_Closed,
"SHO#4", "SHO#4",
self.position.x + spacing * 2 + 80, self.position.x + spacing * 2 + 80,
self.position.y + spacing + 40, self.position.y + spacing + 40,
@ -143,7 +143,7 @@ class ColdWarFlakGenerator(AirDefenseGroupGenerator):
# Add a P19 Radar for EWR # Add a P19 Radar for EWR
self.add_unit( self.add_unit(
AirDefence.SAM_P19_Flat_Face_SR__SA_2_3, AirDefence.P_19_s_125_sr,
"SR#0", "SR#0",
self.position.x - 60, self.position.x - 60,
self.position.y - 20, self.position.y - 20,

View File

@ -1,3 +1,5 @@
from typing import Type
from dcs.vehicles import AirDefence from dcs.vehicles import AirDefence
from dcs.unittype import VehicleType from dcs.unittype import VehicleType
@ -5,7 +7,7 @@ from gen.sam.group_generator import GroupGenerator
class EwrGenerator(GroupGenerator): class EwrGenerator(GroupGenerator):
unit_type: VehicleType unit_type: Type[VehicleType]
@classmethod @classmethod
def name(cls) -> str: def name(cls) -> str:
@ -25,13 +27,13 @@ class EwrGenerator(GroupGenerator):
class BoxSpringGenerator(EwrGenerator): class BoxSpringGenerator(EwrGenerator):
"""1L13 "Box Spring" EWR.""" """1L13 "Box Spring" EWR."""
unit_type = AirDefence.EWR_1L13 unit_type = AirDefence._1L13_EWR
class TallRackGenerator(EwrGenerator): class TallRackGenerator(EwrGenerator):
"""55G6 "Tall Rack" EWR.""" """55G6 "Tall Rack" EWR."""
unit_type = AirDefence.EWR_55G6 unit_type = AirDefence._55G6_EWR
class DogEarGenerator(EwrGenerator): class DogEarGenerator(EwrGenerator):
@ -40,7 +42,7 @@ class DogEarGenerator(EwrGenerator):
This is the SA-8 search radar, but used as an early warning radar. This is the SA-8 search radar, but used as an early warning radar.
""" """
unit_type = AirDefence.MCC_SR_Sborka_Dog_Ear_SR unit_type = AirDefence.Dog_Ear_radar
class RolandEwrGenerator(EwrGenerator): class RolandEwrGenerator(EwrGenerator):
@ -49,7 +51,7 @@ class RolandEwrGenerator(EwrGenerator):
This is the Roland search radar, but used as an early warning radar. This is the Roland search radar, but used as an early warning radar.
""" """
unit_type = AirDefence.SAM_Roland_EWR unit_type = AirDefence.Roland_Radar
class FlatFaceGenerator(EwrGenerator): class FlatFaceGenerator(EwrGenerator):
@ -58,7 +60,7 @@ class FlatFaceGenerator(EwrGenerator):
This is the SA-3 search radar, but used as an early warning radar. This is the SA-3 search radar, but used as an early warning radar.
""" """
unit_type = AirDefence.SAM_P19_Flat_Face_SR__SA_2_3 unit_type = AirDefence.P_19_s_125_sr
class PatriotEwrGenerator(EwrGenerator): class PatriotEwrGenerator(EwrGenerator):
@ -67,7 +69,7 @@ class PatriotEwrGenerator(EwrGenerator):
This is the Patriot search/track radar, but used as an early warning radar. This is the Patriot search/track radar, but used as an early warning radar.
""" """
unit_type = AirDefence.SAM_Patriot_STR unit_type = AirDefence.Patriot_str
class BigBirdGenerator(EwrGenerator): class BigBirdGenerator(EwrGenerator):
@ -76,7 +78,7 @@ class BigBirdGenerator(EwrGenerator):
This is the SA-10 track radar, but used as an early warning radar. This is the SA-10 track radar, but used as an early warning radar.
""" """
unit_type = AirDefence.SAM_SA_10_S_300_Grumble_Big_Bird_SR unit_type = AirDefence.S_300PS_64H6E_sr
class SnowDriftGenerator(EwrGenerator): class SnowDriftGenerator(EwrGenerator):
@ -85,7 +87,7 @@ class SnowDriftGenerator(EwrGenerator):
This is the SA-11 search radar, but used as an early warning radar. This is the SA-11 search radar, but used as an early warning radar.
""" """
unit_type = AirDefence.SAM_SA_11_Buk_Gadfly_Snow_Drift_SR unit_type = AirDefence.SA_11_Buk_SR_9S18M1
class StraightFlushGenerator(EwrGenerator): class StraightFlushGenerator(EwrGenerator):
@ -94,7 +96,7 @@ class StraightFlushGenerator(EwrGenerator):
This is the SA-6 search/track radar, but used as an early warning radar. This is the SA-6 search/track radar, but used as an early warning radar.
""" """
unit_type = AirDefence.SAM_SA_6_Kub_Straight_Flush_STR unit_type = AirDefence.Kub_1S91_str
class HawkEwrGenerator(EwrGenerator): class HawkEwrGenerator(EwrGenerator):
@ -103,4 +105,4 @@ class HawkEwrGenerator(EwrGenerator):
This is the Hawk search radar, but used as an early warning radar. This is the Hawk search radar, but used as an early warning radar.
""" """
unit_type = AirDefence.SAM_Hawk_SR__AN_MPQ_50 unit_type = AirDefence.Hawk_sr

View File

@ -18,7 +18,7 @@ class FreyaGenerator(AirDefenseGroupGenerator):
# TODO : would be better with the Concrete structure that is supposed to protect it # TODO : would be better with the Concrete structure that is supposed to protect it
self.add_unit( self.add_unit(
AirDefence.EWR_FuMG_401_Freya_LZ, AirDefence.FuMG_401,
"EWR#1", "EWR#1",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -28,7 +28,7 @@ class FreyaGenerator(AirDefenseGroupGenerator):
positions = self.get_circular_position(4, launcher_distance=50, coverage=360) positions = self.get_circular_position(4, launcher_distance=50, coverage=360)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.AAA_Flak_Vierling_38_Quad_20mm, AirDefence.Flak38,
"AA#" + str(i), "AA#" + str(i),
position[0], position[0],
position[1], position[1],
@ -38,7 +38,7 @@ class FreyaGenerator(AirDefenseGroupGenerator):
positions = self.get_circular_position(4, launcher_distance=100, coverage=360) positions = self.get_circular_position(4, launcher_distance=100, coverage=360)
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.AAA_8_8cm_Flak_18, AirDefence.Flak18,
"AA#" + str(4 + i), "AA#" + str(4 + i),
position[0], position[0],
position[1], position[1],
@ -47,58 +47,58 @@ class FreyaGenerator(AirDefenseGroupGenerator):
# Command/Logi # Command/Logi
self.add_unit( self.add_unit(
Unarmed.LUV_Kubelwagen_82, Unarmed.Kubelwagen_82,
"Kubel#1", "Kubel#1",
self.position.x - 20, self.position.x - 20,
self.position.y - 20, self.position.y - 20,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.Carrier_Sd_Kfz_7_Tractor, Unarmed.Sd_Kfz_7,
"Sdkfz#1", "Sdkfz#1",
self.position.x + 20, self.position.x + 20,
self.position.y + 22, self.position.y + 22,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.LUV_Kettenrad, Unarmed.Sd_Kfz_2,
"Sdkfz#2", "Sdkfz#2",
self.position.x - 22, self.position.x - 22,
self.position.y + 20, self.position.y + 20,
self.heading, self.heading,
) )
# PU_Maschinensatz_33 and Kdo.g 40 Telemeter # Maschinensatz_33 and Kdo.g 40 Telemeter
self.add_unit( self.add_unit(
AirDefence.PU_Maschinensatz_33, AirDefence.Maschinensatz_33,
"Energy#1", "Energy#1",
self.position.x + 20, self.position.x + 20,
self.position.y - 20, self.position.y - 20,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.AAA_SP_Kdo_G_40, AirDefence.KDO_Mod40,
"Telemeter#1", "Telemeter#1",
self.position.x + 20, self.position.x + 20,
self.position.y - 10, self.position.y - 10,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Infantry.Infantry_Mauser_98, Infantry.Soldier_mauser98,
"Inf#1", "Inf#1",
self.position.x + 20, self.position.x + 20,
self.position.y - 14, self.position.y - 14,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Infantry.Infantry_Mauser_98, Infantry.Soldier_mauser98,
"Inf#2", "Inf#2",
self.position.x + 20, self.position.x + 20,
self.position.y - 22, self.position.y - 22,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Infantry.Infantry_Mauser_98, Infantry.Soldier_mauser98,
"Inf#3", "Inf#3",
self.position.x + 20, self.position.x + 20,
self.position.y - 24, self.position.y - 24,

View File

@ -20,7 +20,7 @@ class AvengerGenerator(AirDefenseGroupGenerator):
num_launchers = random.randint(2, 3) num_launchers = random.randint(2, 3)
self.add_unit( self.add_unit(
Unarmed.Truck_M818_6x6, Unarmed.M_818,
"TRUCK", "TRUCK",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -31,7 +31,7 @@ class AvengerGenerator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_Avenger__Stinger, AirDefence.M1097_Avenger,
"SPAA#" + str(i), "SPAA#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -20,7 +20,7 @@ class ChaparralGenerator(AirDefenseGroupGenerator):
num_launchers = random.randint(2, 4) num_launchers = random.randint(2, 4)
self.add_unit( self.add_unit(
Unarmed.Truck_M818_6x6, Unarmed.M_818,
"TRUCK", "TRUCK",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -31,7 +31,7 @@ class ChaparralGenerator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_Chaparral_M48, AirDefence.M48_Chaparral,
"SPAA#" + str(i), "SPAA#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -18,7 +18,7 @@ class GepardGenerator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SPAAA_Gepard, AirDefence.Gepard,
"SPAAA", "SPAAA",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -26,14 +26,14 @@ class GepardGenerator(AirDefenseGroupGenerator):
) )
if random.randint(0, 1) == 1: if random.randint(0, 1) == 1:
self.add_unit( self.add_unit(
AirDefence.SPAAA_Gepard, AirDefence.Gepard,
"SPAAA2", "SPAAA2",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.Truck_M818_6x6, Unarmed.M_818,
"TRUCK", "TRUCK",
self.position.x + 80, self.position.x + 80,
self.position.y, self.position.y,

View File

@ -2,7 +2,6 @@ import random
from typing import Dict, Iterable, List, Optional, Sequence, Set, Type from typing import Dict, Iterable, List, Optional, Sequence, Set, Type
from dcs.unitgroup import VehicleGroup from dcs.unitgroup import VehicleGroup
from dcs.vehicles import AirDefence
from game import Game from game import Game
from game.factions.faction import Faction from game.factions.faction import Faction
@ -104,41 +103,6 @@ SAM_MAP: Dict[str, Type[AirDefenseGroupGenerator]] = {
} }
SAM_PRICES = {
AirDefence.SAM_Hawk_Platoon_Command_Post__PCP: 35,
AirDefence.AAA_ZU_23_Emplacement: 10,
AirDefence.AAA_ZU_23_Closed_Emplacement: 10,
AirDefence.SPAAA_ZU_23_2_Mounted_Ural_375: 10,
AirDefence.SPAAA_ZU_23_2_Insurgent_Mounted_Ural_375: 10,
AirDefence.AAA_ZU_23_Insurgent_Closed_Emplacement: 10,
AirDefence.AAA_ZU_23_Insurgent_Emplacement: 10,
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish: 10,
AirDefence.SPAAA_Vulcan_M163: 15,
AirDefence.SAM_Linebacker___Bradley_M6: 20,
AirDefence.SAM_Rapier_LN: 20,
AirDefence.SAM_Avenger__Stinger: 22,
AirDefence.SPAAA_Gepard: 24,
AirDefence.SAM_Roland_ADS: 40,
AirDefence.SAM_Patriot_LN: 85,
AirDefence.SAM_Patriot_EPP_III: 85,
AirDefence.SAM_Chaparral_M48: 25,
AirDefence.AAA_Bofors_40mm: 15,
AirDefence.AAA_8_8cm_Flak_36: 15,
AirDefence.SAM_SA_2_S_75_Guideline_LN: 30,
AirDefence.SAM_SA_3_S_125_Goa_LN: 35,
AirDefence.SAM_SA_6_Kub_Gainful_TEL: 45,
AirDefence.SAM_SA_8_Osa_Gecko_TEL: 30,
AirDefence.SAM_SA_9_Strela_1_Gaskin_TEL: 25,
AirDefence.SAM_SA_10_S_300_Grumble_TEL_C: 80,
AirDefence.SAM_SA_10_S_300_Grumble_C2: 80,
AirDefence.SAM_SA_11_Buk_Gadfly_Fire_Dome_TEL: 60,
AirDefence.SAM_SA_13_Strela_10M3_Gopher_TEL: 30,
AirDefence.SAM_SA_15_Tor_Gauntlet: 40,
AirDefence.SAM_SA_19_Tunguska_Grison: 35,
AirDefence.HQ_7_Self_Propelled_LN: 35,
}
def get_faction_possible_sams_generator( def get_faction_possible_sams_generator(
faction: Faction, faction: Faction,
) -> List[Type[AirDefenseGroupGenerator]]: ) -> List[Type[AirDefenseGroupGenerator]]:

View File

@ -19,21 +19,21 @@ class HawkGenerator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_Hawk_SR__AN_MPQ_50, AirDefence.Hawk_sr,
"SR", "SR",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Hawk_Platoon_Command_Post__PCP, AirDefence.Hawk_pcp,
"PCP", "PCP",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Hawk_TR__AN_MPQ_46, AirDefence.Hawk_tr,
"TR", "TR",
self.position.x + 40, self.position.x + 40,
self.position.y, self.position.y,
@ -44,7 +44,7 @@ class HawkGenerator(AirDefenseGroupGenerator):
aa_group = self.add_auxiliary_group("AA") aa_group = self.add_auxiliary_group("AA")
self.add_unit_to_group( self.add_unit_to_group(
aa_group, aa_group,
AirDefence.SPAAA_Vulcan_M163, AirDefence.Vulcan,
"AAA", "AAA",
self.position + Point(20, 30), self.position + Point(20, 30),
self.heading, self.heading,
@ -57,7 +57,7 @@ class HawkGenerator(AirDefenseGroupGenerator):
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_Hawk_LN_M192, AirDefence.Hawk_ln,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -19,14 +19,14 @@ class HQ7Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.HQ_7_Self_Propelled_STR, AirDefence.HQ_7_STR_SP,
"STR", "STR",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.HQ_7_Self_Propelled_LN, AirDefence.HQ_7_LN_SP,
"LN", "LN",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
@ -37,14 +37,14 @@ class HQ7Generator(AirDefenseGroupGenerator):
aa_group = self.add_auxiliary_group("AA") aa_group = self.add_auxiliary_group("AA")
self.add_unit_to_group( self.add_unit_to_group(
aa_group, aa_group,
AirDefence.SPAAA_ZU_23_2_Mounted_Ural_375, AirDefence.Ural_375_ZU_23,
"AAA1", "AAA1",
self.position + Point(20, 30), self.position + Point(20, 30),
self.heading, self.heading,
) )
self.add_unit_to_group( self.add_unit_to_group(
aa_group, aa_group,
AirDefence.SPAAA_ZU_23_2_Mounted_Ural_375, AirDefence.Ural_375_ZU_23,
"AAA2", "AAA2",
self.position - Point(20, 30), self.position - Point(20, 30),
self.heading, self.heading,
@ -57,7 +57,7 @@ class HQ7Generator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.HQ_7_Self_Propelled_LN, AirDefence.HQ_7_LN_SP,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -20,7 +20,7 @@ class LinebackerGenerator(AirDefenseGroupGenerator):
num_launchers = random.randint(2, 4) num_launchers = random.randint(2, 4)
self.add_unit( self.add_unit(
Unarmed.Truck_M818_6x6, Unarmed.M_818,
"TRUCK", "TRUCK",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -31,7 +31,7 @@ class LinebackerGenerator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_Linebacker___Bradley_M6, AirDefence.M6_Linebacker,
"M6#" + str(i), "M6#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -20,35 +20,35 @@ class PatriotGenerator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
# Command Post # Command Post
self.add_unit( self.add_unit(
AirDefence.SAM_Patriot_STR, AirDefence.Patriot_str,
"STR", "STR",
self.position.x + 30, self.position.x + 30,
self.position.y + 30, self.position.y + 30,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Patriot_CR__AMG_AN_MRC_137, AirDefence.Patriot_AMG,
"MRC", "MRC",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Patriot_ECS, AirDefence.Patriot_ECS,
"MSQ", "MSQ",
self.position.x + 30, self.position.x + 30,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Patriot_C2_ICC, AirDefence.Patriot_cp,
"ICC", "ICC",
self.position.x + 60, self.position.x + 60,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Patriot_EPP_III, AirDefence.Patriot_EPP,
"EPP", "EPP",
self.position.x, self.position.x,
self.position.y + 30, self.position.y + 30,
@ -61,7 +61,7 @@ class PatriotGenerator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_Patriot_LN, AirDefence.Patriot_ln,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],
@ -77,7 +77,7 @@ class PatriotGenerator(AirDefenseGroupGenerator):
for i, (x, y, heading) in enumerate(positions): for i, (x, y, heading) in enumerate(positions):
self.add_unit_to_group( self.add_unit_to_group(
aa_group, aa_group,
AirDefence.SPAAA_Vulcan_M163, AirDefence.Vulcan,
f"SPAAA#{i}", f"SPAAA#{i}",
Point(x, y), Point(x, y),
heading, heading,

View File

@ -18,14 +18,14 @@ class RapierGenerator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_Rapier_Blindfire_TR, AirDefence.Rapier_fsa_blindfire_radar,
"BT", "BT",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Rapier_Tracker, AirDefence.Rapier_fsa_optical_tracker_unit,
"OT", "OT",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
@ -39,7 +39,7 @@ class RapierGenerator(AirDefenseGroupGenerator):
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_Rapier_LN, AirDefence.Rapier_fsa_launcher,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -16,21 +16,21 @@ class RolandGenerator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_Roland_EWR, AirDefence.Roland_Radar,
"EWR", "EWR",
self.position.x + 40, self.position.x + 40,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_Roland_ADS, AirDefence.Roland_ADS,
"ADS", "ADS",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.Truck_M818_6x6, Unarmed.M_818,
"TRUCK", "TRUCK",
self.position.x + 80, self.position.x + 80,
self.position.y, self.position.y,

View File

@ -22,13 +22,13 @@ class SA10Generator(AirDefenseGroupGenerator):
def __init__(self, game: Game, ground_object: SamGroundObject): def __init__(self, game: Game, ground_object: SamGroundObject):
super().__init__(game, ground_object) super().__init__(game, ground_object)
self.sr1 = AirDefence.SAM_SA_10_S_300_Grumble_Clam_Shell_SR self.sr1 = AirDefence.S_300PS_40B6MD_sr
self.sr2 = AirDefence.SAM_SA_10_S_300_Grumble_Big_Bird_SR self.sr2 = AirDefence.S_300PS_64H6E_sr
self.cp = AirDefence.SAM_SA_10_S_300_Grumble_C2 self.cp = AirDefence.S_300PS_54K6_cp
self.tr1 = AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR self.tr1 = AirDefence.S_300PS_40B6M_tr
self.tr2 = AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR self.tr2 = AirDefence.S_300PS_40B6M_tr
self.ln1 = AirDefence.SAM_SA_10_S_300_Grumble_TEL_C self.ln1 = AirDefence.S_300PS_5P85C_ln
self.ln2 = AirDefence.SAM_SA_10_S_300_Grumble_TEL_D self.ln2 = AirDefence.S_300PS_5P85D_ln
def generate(self): def generate(self):
# Search Radar # Search Radar
@ -84,7 +84,7 @@ class SA10Generator(AirDefenseGroupGenerator):
for i, (x, y, heading) in enumerate(positions): for i, (x, y, heading) in enumerate(positions):
self.add_unit_to_group( self.add_unit_to_group(
aa_group, aa_group,
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish, AirDefence.ZSU_23_4_Shilka,
f"AA#{i}", f"AA#{i}",
Point(x, y), Point(x, y),
heading, heading,
@ -109,7 +109,7 @@ class Tier2SA10Generator(SA10Generator):
for i, (x, y, heading) in enumerate(positions): for i, (x, y, heading) in enumerate(positions):
self.add_unit_to_group( self.add_unit_to_group(
pd_group, pd_group,
AirDefence.SAM_SA_15_Tor_Gauntlet, AirDefence.Tor_9A331,
f"PD#{i}", f"PD#{i}",
Point(x, y), Point(x, y),
heading, heading,
@ -131,7 +131,7 @@ class Tier3SA10Generator(SA10Generator):
for i, (x, y, heading) in enumerate(positions): for i, (x, y, heading) in enumerate(positions):
self.add_unit_to_group( self.add_unit_to_group(
aa_group, aa_group,
AirDefence.SAM_SA_19_Tunguska_Grison, AirDefence._2S6_Tunguska,
f"AA#{i}", f"AA#{i}",
Point(x, y), Point(x, y),
heading, heading,
@ -146,7 +146,7 @@ class Tier3SA10Generator(SA10Generator):
for i, (x, y, heading) in enumerate(positions): for i, (x, y, heading) in enumerate(positions):
self.add_unit_to_group( self.add_unit_to_group(
pd_group, pd_group,
AirDefence.SAM_SA_15_Tor_Gauntlet, AirDefence.Tor_9A331,
f"PD#{i}", f"PD#{i}",
Point(x, y), Point(x, y),
heading, heading,

View File

@ -18,14 +18,14 @@ class SA11Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_11_Buk_Gadfly_Snow_Drift_SR, AirDefence.SA_11_Buk_SR_9S18M1,
"SR", "SR",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_SA_11_Buk_Gadfly_C2, AirDefence.SA_11_Buk_CC_9S470M1,
"CC", "CC",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -39,7 +39,7 @@ class SA11Generator(AirDefenseGroupGenerator):
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_11_Buk_Gadfly_Fire_Dome_TEL, AirDefence.SA_11_Buk_LN_9A310M1,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -18,14 +18,14 @@ class SA13Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
Unarmed.LUV_UAZ_469_Jeep, Unarmed.UAZ_469,
"UAZ", "UAZ",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.Truck_KAMAZ_43101, Unarmed.KAMAZ_Truck,
"TRUCK", "TRUCK",
self.position.x + 40, self.position.x + 40,
self.position.y, self.position.y,
@ -38,7 +38,7 @@ class SA13Generator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_13_Strela_10M3_Gopher_TEL, AirDefence.Strela_10M3,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -16,21 +16,21 @@ class SA15Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_15_Tor_Gauntlet, AirDefence.Tor_9A331,
"ADS", "ADS",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.LUV_UAZ_469_Jeep, Unarmed.UAZ_469,
"EWR", "EWR",
self.position.x + 40, self.position.x + 40,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.Truck_KAMAZ_43101, Unarmed.KAMAZ_Truck,
"TRUCK", "TRUCK",
self.position.x + 80, self.position.x + 80,
self.position.y, self.position.y,

View File

@ -17,14 +17,14 @@ class SA17Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_11_Buk_Gadfly_Snow_Drift_SR, AirDefence.SA_11_Buk_SR_9S18M1,
"SR", "SR",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_SA_11_Buk_Gadfly_C2, AirDefence.SA_11_Buk_CC_9S470M1,
"CC", "CC",
self.position.x, self.position.x,
self.position.y, self.position.y,

View File

@ -21,7 +21,7 @@ class SA19Generator(AirDefenseGroupGenerator):
if num_launchers == 1: if num_launchers == 1:
self.add_unit( self.add_unit(
AirDefence.SAM_SA_19_Tunguska_Grison, AirDefence._2S6_Tunguska,
"LN#0", "LN#0",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -33,7 +33,7 @@ class SA19Generator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_19_Tunguska_Grison, AirDefence._2S6_Tunguska,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -18,14 +18,14 @@ class SA2Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_P19_Flat_Face_SR__SA_2_3, AirDefence.P_19_s_125_sr,
"SR", "SR",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_SA_2_S_75_Fan_Song_TR, AirDefence.SNR_75V,
"TR", "TR",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
@ -39,7 +39,7 @@ class SA2Generator(AirDefenseGroupGenerator):
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_2_S_75_Guideline_LN, AirDefence.S_75M_Volhov,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -18,14 +18,14 @@ class SA3Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_P19_Flat_Face_SR__SA_2_3, AirDefence.P_19_s_125_sr,
"SR", "SR",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_SA_3_S_125_Low_Blow_TR, AirDefence.Snr_s_125_tr,
"TR", "TR",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,
@ -39,7 +39,7 @@ class SA3Generator(AirDefenseGroupGenerator):
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_3_S_125_Goa_LN, AirDefence._5p73_s_125_ln,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -18,7 +18,7 @@ class SA6Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_6_Kub_Straight_Flush_STR, AirDefence.Kub_1S91_str,
"STR", "STR",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -32,7 +32,7 @@ class SA6Generator(AirDefenseGroupGenerator):
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_6_Kub_Gainful_TEL, AirDefence.Kub_2P25_ln,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -16,14 +16,14 @@ class SA8Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_8_Osa_Gecko_TEL, AirDefence.Osa_9A33_ln,
"OSA", "OSA",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
AirDefence.SAM_SA_8_Osa_LD_9T217, AirDefence.SA_8_Osa_LD_9T217,
"LD", "LD",
self.position.x + 20, self.position.x + 20,
self.position.y, self.position.y,

View File

@ -18,14 +18,14 @@ class SA9Generator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
Unarmed.LUV_UAZ_469_Jeep, Unarmed.UAZ_469,
"UAZ", "UAZ",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.Truck_KAMAZ_43101, Unarmed.KAMAZ_Truck,
"TRUCK", "TRUCK",
self.position.x + 40, self.position.x + 40,
self.position.y, self.position.y,
@ -38,7 +38,7 @@ class SA9Generator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SAM_SA_9_Strela_1_Gaskin_TEL, AirDefence.Strela_1_9P31,
"LN#" + str(i), "LN#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -18,7 +18,7 @@ class VulcanGenerator(AirDefenseGroupGenerator):
def generate(self): def generate(self):
self.add_unit( self.add_unit(
AirDefence.SPAAA_Vulcan_M163, AirDefence.Vulcan,
"SPAAA", "SPAAA",
self.position.x, self.position.x,
self.position.y, self.position.y,
@ -26,14 +26,14 @@ class VulcanGenerator(AirDefenseGroupGenerator):
) )
if random.randint(0, 1) == 1: if random.randint(0, 1) == 1:
self.add_unit( self.add_unit(
AirDefence.SPAAA_Vulcan_M163, AirDefence.Vulcan,
"SPAAA2", "SPAAA2",
self.position.x, self.position.x,
self.position.y, self.position.y,
self.heading, self.heading,
) )
self.add_unit( self.add_unit(
Unarmed.Truck_M818_6x6, Unarmed.M_818,
"TRUCK", "TRUCK",
self.position.x + 80, self.position.x + 80,
self.position.y, self.position.y,

View File

@ -24,7 +24,7 @@ class ZSU23Generator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish, AirDefence.ZSU_23_4_Shilka,
"SPAA#" + str(i), "SPAA#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -27,7 +27,7 @@ class ZU23Generator(AirDefenseGroupGenerator):
for j in range(grid_y): for j in range(grid_y):
index = index + 1 index = index + 1
self.add_unit( self.add_unit(
AirDefence.AAA_ZU_23_Closed_Emplacement, AirDefence.ZU_23_Emplacement_Closed,
"AAA#" + str(index), "AAA#" + str(index),
self.position.x + spacing * i, self.position.x + spacing * i,
self.position.y + spacing * j, self.position.y + spacing * j,

View File

@ -24,7 +24,7 @@ class ZU23UralGenerator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SPAAA_ZU_23_2_Mounted_Ural_375, AirDefence.Ural_375_ZU_23,
"SPAA#" + str(i), "SPAA#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -24,7 +24,7 @@ class ZU23UralInsurgentGenerator(AirDefenseGroupGenerator):
) )
for i, position in enumerate(positions): for i, position in enumerate(positions):
self.add_unit( self.add_unit(
AirDefence.SPAAA_ZU_23_2_Insurgent_Mounted_Ural_375, AirDefence.Ural_375_ZU_23_Insurgent,
"SPAA#" + str(i), "SPAA#" + str(i),
position[0], position[0],
position[1], position[1],

View File

@ -82,10 +82,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -44,7 +44,7 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [], "cruisers": [],
"requirements": {}, "requirements": {},

View File

@ -45,7 +45,7 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [], "cruisers": [],
"requirements": { "requirements": {

View File

@ -55,10 +55,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -56,10 +56,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": { "requirements": {
"Community A-4E": "https://heclak.github.io/community-a4e-c/" "Community A-4E": "https://heclak.github.io/community-a4e-c/"

View File

@ -57,10 +57,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": { "requirements": {
"MB-339A/PAN by Frecce Tricolori Virtuali": "http://www.freccetricolorivirtuali.net/", "MB-339A/PAN by Frecce Tricolori Virtuali": "http://www.freccetricolorivirtuali.net/",

View File

@ -78,10 +78,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -47,10 +47,10 @@
"aircraft_carrier": [], "aircraft_carrier": [],
"helicopter_carrier": [], "helicopter_carrier": [],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -48,10 +48,10 @@
"aircraft_carrier": [], "aircraft_carrier": [],
"helicopter_carrier": [], "helicopter_carrier": [],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": { "requirements": {
"C-130J-30 Super Hercules Mod by Anubis": "https://forums.eagle.ru/topic/252075-dcs-super-hercules-mod-by-anubis/" "C-130J-30 Super Hercules Mod by Anubis": "https://forums.eagle.ru/topic/252075-dcs-super-hercules-mod-by-anubis/"

View File

@ -85,11 +85,11 @@
"Wudang Shan" "Wudang Shan"
], ],
"destroyers": [ "destroyers": [
"Type_052B_Destroyer", "Type_052B",
"Type_052C_Destroyer" "Type_052C"
], ],
"cruiser": [ "cruiser": [
"Type_054A_Frigate" "Type_054A"
], ],
"requirements": {}, "requirements": {},
"navy_generators": [ "navy_generators": [

View File

@ -54,10 +54,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": { "requirements": {
"frenchpack V3.5": "https://forums.eagle.ru/showthread.php?t=279974" "frenchpack V3.5": "https://forums.eagle.ru/showthread.php?t=279974"

View File

@ -53,11 +53,11 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa", "USS_Arleigh_Burke_IIa",
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -61,10 +61,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": { "requirements": {
"frenchpack V3.5": "https://forums.eagle.ru/showthread.php?t=279974" "frenchpack V3.5": "https://forums.eagle.ru/showthread.php?t=279974"

View File

@ -57,7 +57,7 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"destroyers": [], "destroyers": [],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -50,10 +50,10 @@
"aircraft_carrier": [], "aircraft_carrier": [],
"helicopter_carrier": [], "helicopter_carrier": [],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -64,7 +64,7 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"helicopter_carrier_names": [], "helicopter_carrier_names": [],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [], "cruisers": [],
"requirements": {}, "requirements": {},

View File

@ -59,10 +59,10 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"helicopter_carrier_names": [], "helicopter_carrier_names": [],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya" "MOLNIYA"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -68,10 +68,10 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"helicopter_carrier_names": [], "helicopter_carrier_names": [],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya" "MOLNIYA"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -47,10 +47,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -48,10 +48,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": { "requirements": {
"MB-339A/PAN by Frecce Tricolori Virtuali": "http://www.freccetricolorivirtuali.net/" "MB-339A/PAN by Frecce Tricolori Virtuali": "http://www.freccetricolorivirtuali.net/"

View File

@ -54,10 +54,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -60,10 +60,10 @@
], ],
"missiles_group_count": 1, "missiles_group_count": 1,
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya" "MOLNIYA"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -103,13 +103,13 @@
"Wudang Shan" "Wudang Shan"
], ],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky", "REZKY",
"Type_052B_Destroyer", "Type_052B",
"Type_052C_Destroyer" "Type_052C"
], ],
"cruiser": [ "cruiser": [
"Corvette_1241_1_Molniya", "MOLNIYA",
"Type_054A_Frigate" "Type_054A"
], ],
"requirements": {}, "requirements": {},
"navy_generators": [ "navy_generators": [

View File

@ -97,13 +97,13 @@
"Mitrofan Moskalenko" "Mitrofan Moskalenko"
], ],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky", "REZKY",
"Type_052B_Destroyer", "Type_052B",
"Type_052C_Destroyer" "Type_052C"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya", "MOLNIYA",
"Type_054A_Frigate" "Type_054A"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -79,10 +79,10 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"helicopter_carrier_names": [], "helicopter_carrier_names": [],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya" "MOLNIYA"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -82,10 +82,10 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"helicopter_carrier_names": [], "helicopter_carrier_names": [],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya" "MOLNIYA"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -79,10 +79,10 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"helicopter_carrier_names": [], "helicopter_carrier_names": [],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya" "MOLNIYA"
], ],
"requirements": { "requirements": {
"High Digit SAMs": "https://github.com/Auranis/HighDigitSAMs/releases" "High Digit SAMs": "https://github.com/Auranis/HighDigitSAMs/releases"

View File

@ -78,10 +78,10 @@
"helicopter_carrier": [], "helicopter_carrier": [],
"helicopter_carrier_names": [], "helicopter_carrier_names": [],
"destroyers": [ "destroyers": [
"Frigate_1135M_Rezky" "REZKY"
], ],
"cruisers": [ "cruisers": [
"Corvette_1241_1_Molniya" "MOLNIYA"
], ],
"requirements": { "requirements": {
"SU-57 Felon By CubanAce Simulations": "https://www.digitalcombatsimulator.com/fr/files/2539621/" "SU-57 Felon By CubanAce Simulations": "https://www.digitalcombatsimulator.com/fr/files/2539621/"

View File

@ -50,10 +50,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -56,10 +56,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [], "carrier_names": [],

View File

@ -76,11 +76,11 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry", "PERRY",
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -78,10 +78,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {}, "requirements": {},
"carrier_names": [ "carrier_names": [

View File

@ -78,10 +78,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": { "requirements": {
"C-130J-30 Super Hercules Mod by Anubis": "https://forums.eagle.ru/topic/252075-dcs-super-hercules-mod-by-anubis/" "C-130J-30 Super Hercules Mod by Anubis": "https://forums.eagle.ru/topic/252075-dcs-super-hercules-mod-by-anubis/"

View File

@ -74,10 +74,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"carrier_names": [ "carrier_names": [
"CVN-71 Theodore Roosevelt", "CVN-71 Theodore Roosevelt",

View File

@ -52,10 +52,10 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry" "PERRY"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"carrier_names": [ "carrier_names": [
"CVN-71 Theodore Roosevelt", "CVN-71 Theodore Roosevelt",

View File

@ -38,7 +38,7 @@
"SPH_M109_Paladin_155mm" "SPH_M109_Paladin_155mm"
], ],
"logistics_units": [ "logistics_units": [
"Truck_M818_6x6" "M_818"
], ],
"infantry_units": [ "infantry_units": [
"Infantry_M4", "Infantry_M4",
@ -57,11 +57,11 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry", "PERRY",
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {"mod": "Some mod is required"}, "requirements": {"mod": "Some mod is required"},
"carrier_names": [ "carrier_names": [

View File

@ -40,7 +40,7 @@
"SPH_M109_Paladin_155mm" "SPH_M109_Paladin_155mm"
], ],
"logistics_units": [ "logistics_units": [
"Truck_M818_6x6" "M_818"
], ],
"infantry_units": [ "infantry_units": [
"Infantry_M4", "Infantry_M4",
@ -59,11 +59,11 @@
"LHA_1_Tarawa" "LHA_1_Tarawa"
], ],
"destroyers": [ "destroyers": [
"FFG_Oliver_Hazzard_Perry", "PERRY",
"DDG_Arleigh_Burke_IIa" "USS_Arleigh_Burke_IIa"
], ],
"cruisers": [ "cruisers": [
"CG_Ticonderoga" "TICONDEROG"
], ],
"requirements": {"mod": "Some mod is required"}, "requirements": {"mod": "Some mod is required"},
"carrier_names": [ "carrier_names": [

View File

@ -25,9 +25,9 @@ from dcs.planes import (
from dcs.ships import ( from dcs.ships import (
CVN_74_John_C__Stennis, CVN_74_John_C__Stennis,
LHA_1_Tarawa, LHA_1_Tarawa,
FFG_Oliver_Hazzard_Perry, PERRY,
DDG_Arleigh_Burke_IIa, USS_Arleigh_Burke_IIa,
CG_Ticonderoga, TICONDEROG,
) )
from dcs.vehicles import Armor, Unarmed, Infantry, Artillery from dcs.vehicles import Armor, Unarmed, Infantry, Artillery
@ -88,7 +88,7 @@ class TestFactionLoader(unittest.TestCase):
self.assertIn(Artillery.MLRS_M270_227mm, faction.artillery_units) self.assertIn(Artillery.MLRS_M270_227mm, faction.artillery_units)
self.assertIn(Artillery.SPH_M109_Paladin_155mm, faction.artillery_units) self.assertIn(Artillery.SPH_M109_Paladin_155mm, faction.artillery_units)
self.assertIn(Unarmed.Truck_M818_6x6, faction.logistics_units) self.assertIn(Unarmed.M_818, faction.logistics_units)
self.assertIn(Infantry.Infantry_M4, faction.infantry_units) self.assertIn(Infantry.Infantry_M4, faction.infantry_units)
self.assertIn(Infantry.Infantry_M249, faction.infantry_units) self.assertIn(Infantry.Infantry_M249, faction.infantry_units)
@ -99,9 +99,9 @@ class TestFactionLoader(unittest.TestCase):
self.assertIn(CVN_74_John_C__Stennis, faction.aircraft_carrier) self.assertIn(CVN_74_John_C__Stennis, faction.aircraft_carrier)
self.assertIn(LHA_1_Tarawa, faction.helicopter_carrier) self.assertIn(LHA_1_Tarawa, faction.helicopter_carrier)
self.assertIn(FFG_Oliver_Hazzard_Perry, faction.destroyers) self.assertIn(PERRY, faction.destroyers)
self.assertIn(DDG_Arleigh_Burke_IIa, faction.destroyers) self.assertIn(USS_Arleigh_Burke_IIa, faction.destroyers)
self.assertIn(CG_Ticonderoga, faction.cruisers) self.assertIn(TICONDEROG, faction.cruisers)
self.assertIn("mod", faction.requirements.keys()) self.assertIn("mod", faction.requirements.keys())
self.assertIn("Some mod is required", faction.requirements.values()) self.assertIn("Some mod is required", faction.requirements.values())