mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
High Digit SAM mod support added with an example factions (Russia 2010 High Digit SAM)
This commit is contained in:
parent
5dbd1d093b
commit
225325cc29
107
game/db.py
107
game/db.py
@ -165,6 +165,7 @@ from dcs.vehicles import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
import pydcs_extensions.frenchpack.frenchpack as frenchpack
|
import pydcs_extensions.frenchpack.frenchpack as frenchpack
|
||||||
|
import pydcs_extensions.highdigitsams.highdigitsams as highdigitsams
|
||||||
# PATCH pydcs data with MODS
|
# PATCH pydcs data with MODS
|
||||||
from game.factions.faction_loader import FactionLoader
|
from game.factions.faction_loader import FactionLoader
|
||||||
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
from pydcs_extensions.a4ec.a4ec import A_4E_C
|
||||||
@ -219,6 +220,49 @@ vehicle_map["Toyota_vert"] = frenchpack.DIM__TOYOTA_GREEN
|
|||||||
vehicle_map["Toyota_desert"] = frenchpack.DIM__TOYOTA_DESERT
|
vehicle_map["Toyota_desert"] = frenchpack.DIM__TOYOTA_DESERT
|
||||||
vehicle_map["Kamikaze"] = frenchpack.DIM__KAMIKAZE
|
vehicle_map["Kamikaze"] = frenchpack.DIM__KAMIKAZE
|
||||||
|
|
||||||
|
vehicle_map[highdigitsams.AAA_SON_9_Fire_Can.id] = highdigitsams.AAA_SON_9_Fire_Can
|
||||||
|
vehicle_map[highdigitsams.AAA_100mm_KS_19.id] = highdigitsams.AAA_100mm_KS_19
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10B_S_300PS_54K6_CP.id] = highdigitsams.SAM_SA_10B_S_300PS_54K6_CP
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10B_S_300PS_5P85SE_LN.id] = highdigitsams.SAM_SA_10B_S_300PS_5P85SE_LN
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10B_S_300PS_5P85SU_LN.id] = highdigitsams.SAM_SA_10B_S_300PS_5P85SU_LN
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10__5V55RUD__S_300PS_LN_5P85CE.id] = highdigitsams.SAM_SA_10__5V55RUD__S_300PS_LN_5P85CE
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10__5V55RUD__S_300PS_LN_5P85DE.id] = highdigitsams.SAM_SA_10__5V55RUD__S_300PS_LN_5P85DE
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10B_S_300PS_30N6_TR.id] = highdigitsams.SAM_SA_10B_S_300PS_30N6_TR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10B_S_300PS_40B6M_TR.id] = highdigitsams.SAM_SA_10B_S_300PS_40B6M_TR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10B_S_300PS_40B6MD_SR.id] = highdigitsams.SAM_SA_10B_S_300PS_40B6MD_SR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_10B_S_300PS_64H6E_SR.id] = highdigitsams.SAM_SA_10B_S_300PS_64H6E_SR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20_S_300PMU1_CP_54K6.id] = highdigitsams.SAM_SA_20_S_300PMU1_CP_54K6
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E.id] = highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E_truck.id] = highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E_truck
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20_S_300PMU1_SR_5N66E.id] = highdigitsams.SAM_SA_20_S_300PMU1_SR_5N66E
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20_S_300PMU1_SR_64N6E.id] = highdigitsams.SAM_SA_20_S_300PMU1_SR_64N6E
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85CE.id] = highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85CE
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85DE.id] = highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85DE
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20B_S_300PMU2_CP_54K6E2.id] = highdigitsams.SAM_SA_20B_S_300PMU2_CP_54K6E2
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20B_S_300PMU2_TR_92H6E_truck.id] = highdigitsams.SAM_SA_20B_S_300PMU2_TR_92H6E_truck
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20B_S_300PMU2_SR_64N6E2.id] = highdigitsams.SAM_SA_20B_S_300PMU2_SR_64N6E2
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_20B_S_300PMU2_LN_5P85SE2.id] = highdigitsams.SAM_SA_20B_S_300PMU2_LN_5P85SE2
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_12_S_300V_9S457_CP.id] = highdigitsams.SAM_SA_12_S_300V_9S457_CP
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_12_S_300V_9A82_LN.id] = highdigitsams.SAM_SA_12_S_300V_9A82_LN
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_12_S_300V_9A83_LN.id] = highdigitsams.SAM_SA_12_S_300V_9A83_LN
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_12_S_300V_9S15_SR.id] = highdigitsams.SAM_SA_12_S_300V_9S15_SR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_12_S_300V_9S19_SR.id] = highdigitsams.SAM_SA_12_S_300V_9S19_SR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_12_S_300V_9S32_TR.id] = highdigitsams.SAM_SA_12_S_300V_9S32_TR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_23_S_300VM_9S457ME_CP.id] = highdigitsams.SAM_SA_23_S_300VM_9S457ME_CP
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_23_S_300VM_9S15M2_SR.id] = highdigitsams.SAM_SA_23_S_300VM_9S15M2_SR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_23_S_300VM_9S19M2_SR.id] = highdigitsams.SAM_SA_23_S_300VM_9S19M2_SR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_23_S_300VM_9S32ME_TR.id] = highdigitsams.SAM_SA_23_S_300VM_9S32ME_TR
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_23_S_300VM_9A83ME_LN.id] = highdigitsams.SAM_SA_23_S_300VM_9A83ME_LN
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_23_S_300VM_9A82ME_LN.id] = highdigitsams.SAM_SA_23_S_300VM_9A82ME_LN
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_17_Buk_M1_2_LN_9A310M1_2.id] = highdigitsams.SAM_SA_17_Buk_M1_2_LN_9A310M1_2
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_2__V759__LN_SM_90.id] = highdigitsams.SAM_SA_2__V759__LN_SM_90
|
||||||
|
vehicle_map[highdigitsams.SAM_HQ_2_LN_SM_90.id] = highdigitsams.SAM_HQ_2_LN_SM_90
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_3__V_601P__LN_5P73.id] = highdigitsams.SAM_SA_3__V_601P__LN_5P73
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_24_Igla_S_manpad.id] = highdigitsams.SAM_SA_24_Igla_S_manpad
|
||||||
|
vehicle_map[highdigitsams.SAM_SA_14_Strela_3_manpad.id] = highdigitsams.SAM_SA_14_Strela_3_manpad
|
||||||
|
vehicle_map[highdigitsams.Polyana_D4M1_C2_node.id] = highdigitsams.Polyana_D4M1_C2_node
|
||||||
|
vehicle_map[highdigitsams._34Ya6E_Gazetchik_E_decoy.id] = highdigitsams._34Ya6E_Gazetchik_E_decoy
|
||||||
|
|
||||||
"""
|
"""
|
||||||
---------- BEGINNING OF CONFIGURATION SECTION
|
---------- BEGINNING OF CONFIGURATION SECTION
|
||||||
"""
|
"""
|
||||||
@ -475,14 +519,14 @@ PRICES = {
|
|||||||
AirDefence.SAM_SA_19_Tunguska_2S6: 30,
|
AirDefence.SAM_SA_19_Tunguska_2S6: 30,
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25: 20,
|
AirDefence.SAM_SA_6_Kub_LN_2P25: 20,
|
||||||
AirDefence.SAM_SA_3_S_125_LN_5P73: 6,
|
AirDefence.SAM_SA_3_S_125_LN_5P73: 6,
|
||||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: 22,
|
|
||||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85D: 22,
|
|
||||||
AirDefence.SAM_SA_11_Buk_LN_9A310M1: 30,
|
AirDefence.SAM_SA_11_Buk_LN_9A310M1: 30,
|
||||||
|
AirDefence.SAM_SA_11_Buk_CC_9S470M1: 25,
|
||||||
|
AirDefence.SAM_SA_11_Buk_SR_9S18M1: 28,
|
||||||
AirDefence.SAM_SA_8_Osa_9A33: 28,
|
AirDefence.SAM_SA_8_Osa_9A33: 28,
|
||||||
AirDefence.SAM_SA_15_Tor_9A331: 40,
|
AirDefence.SAM_SA_15_Tor_9A331: 40,
|
||||||
AirDefence.SAM_SA_13_Strela_10M3_9A35M3: 16,
|
AirDefence.SAM_SA_13_Strela_10M3_9A35M3: 16,
|
||||||
AirDefence.SAM_SA_9_Strela_1_9P31: 12,
|
AirDefence.SAM_SA_9_Strela_1_9P31: 12,
|
||||||
AirDefence.SAM_SA_11_Buk_CC_9S470M1: 25,
|
|
||||||
AirDefence.SAM_SA_8_Osa_LD_9T217: 22,
|
AirDefence.SAM_SA_8_Osa_LD_9T217: 22,
|
||||||
AirDefence.SAM_Patriot_AMG_AN_MRC_137: 35,
|
AirDefence.SAM_Patriot_AMG_AN_MRC_137: 35,
|
||||||
AirDefence.SAM_Patriot_ECS_AN_MSQ_104: 30,
|
AirDefence.SAM_Patriot_ECS_AN_MSQ_104: 30,
|
||||||
@ -497,7 +541,6 @@ PRICES = {
|
|||||||
AirDefence.SAM_Patriot_EPP_III: 15,
|
AirDefence.SAM_Patriot_EPP_III: 15,
|
||||||
AirDefence.SAM_Patriot_ICC: 18,
|
AirDefence.SAM_Patriot_ICC: 18,
|
||||||
AirDefence.SAM_Roland_ADS: 12,
|
AirDefence.SAM_Roland_ADS: 12,
|
||||||
AirDefence.SAM_SA_10_S_300PS_CP_54K6: 18,
|
|
||||||
AirDefence.Stinger_MANPADS: 6,
|
AirDefence.Stinger_MANPADS: 6,
|
||||||
AirDefence.SAM_Stinger_comm_dsr: 4,
|
AirDefence.SAM_Stinger_comm_dsr: 4,
|
||||||
AirDefence.SAM_Stinger_comm: 4,
|
AirDefence.SAM_Stinger_comm: 4,
|
||||||
@ -515,11 +558,8 @@ PRICES = {
|
|||||||
AirDefence.SAM_SA_18_Igla_S_comm: 8,
|
AirDefence.SAM_SA_18_Igla_S_comm: 8,
|
||||||
AirDefence.EWR_1L13: 30,
|
AirDefence.EWR_1L13: 30,
|
||||||
AirDefence.SAM_SA_6_Kub_STR_9S91: 22,
|
AirDefence.SAM_SA_6_Kub_STR_9S91: 22,
|
||||||
AirDefence.SAM_SA_10_S_300PS_TR_30N6: 24,
|
|
||||||
AirDefence.SAM_SA_10_S_300PS_SR_5N66M: 30,
|
|
||||||
AirDefence.EWR_55G6: 30,
|
AirDefence.EWR_55G6: 30,
|
||||||
AirDefence.SAM_SA_10_S_300PS_SR_64H6E: 30,
|
|
||||||
AirDefence.SAM_SA_11_Buk_SR_9S18M1: 28,
|
|
||||||
AirDefence.CP_9S80M1_Sborka: 10,
|
AirDefence.CP_9S80M1_Sborka: 10,
|
||||||
AirDefence.SAM_Hawk_TR_AN_MPQ_46: 14,
|
AirDefence.SAM_Hawk_TR_AN_MPQ_46: 14,
|
||||||
AirDefence.SAM_Hawk_SR_AN_MPQ_50: 18,
|
AirDefence.SAM_Hawk_SR_AN_MPQ_50: 18,
|
||||||
@ -580,6 +620,57 @@ PRICES = {
|
|||||||
frenchpack.DIM__TOYOTA_DESERT: 2,
|
frenchpack.DIM__TOYOTA_DESERT: 2,
|
||||||
frenchpack.DIM__KAMIKAZE: 6,
|
frenchpack.DIM__KAMIKAZE: 6,
|
||||||
|
|
||||||
|
# SA-10
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_CP_54K6: 18,
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_TR_30N6: 24,
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_SR_5N66M: 30,
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_SR_64H6E: 30,
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: 22,
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_LN_5P85D: 22,
|
||||||
|
|
||||||
|
# High digit sams mod
|
||||||
|
highdigitsams.AAA_SON_9_Fire_Can: 8,
|
||||||
|
highdigitsams.AAA_100mm_KS_19: 10,
|
||||||
|
|
||||||
|
highdigitsams.SAM_SA_10B_S_300PS_54K6_CP: 20,
|
||||||
|
highdigitsams.SAM_SA_10B_S_300PS_5P85SE_LN: 24,
|
||||||
|
highdigitsams.SAM_SA_10B_S_300PS_5P85SU_LN: 24,
|
||||||
|
highdigitsams.SAM_SA_10__5V55RUD__S_300PS_LN_5P85CE: 24,
|
||||||
|
highdigitsams.SAM_SA_10__5V55RUD__S_300PS_LN_5P85DE: 24,
|
||||||
|
highdigitsams.SAM_SA_10B_S_300PS_30N6_TR: 26,
|
||||||
|
highdigitsams.SAM_SA_10B_S_300PS_40B6M_TR: 26,
|
||||||
|
highdigitsams.SAM_SA_10B_S_300PS_40B6MD_SR: 32,
|
||||||
|
highdigitsams.SAM_SA_10B_S_300PS_64H6E_SR: 32,
|
||||||
|
|
||||||
|
highdigitsams.SAM_SA_12_S_300V_9S457_CP: 22,
|
||||||
|
highdigitsams.SAM_SA_12_S_300V_9A82_LN: 26,
|
||||||
|
highdigitsams.SAM_SA_12_S_300V_9A83_LN: 26,
|
||||||
|
highdigitsams.SAM_SA_12_S_300V_9S15_SR: 34,
|
||||||
|
highdigitsams.SAM_SA_12_S_300V_9S19_SR: 34,
|
||||||
|
highdigitsams.SAM_SA_12_S_300V_9S32_TR: 28,
|
||||||
|
|
||||||
|
highdigitsams.SAM_SA_20_S_300PMU1_CP_54K6: 26,
|
||||||
|
highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E: 30,
|
||||||
|
highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E_truck: 32,
|
||||||
|
highdigitsams.SAM_SA_20_S_300PMU1_SR_5N66E: 38,
|
||||||
|
highdigitsams.SAM_SA_20_S_300PMU1_SR_64N6E: 38,
|
||||||
|
highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85CE: 28,
|
||||||
|
highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85DE: 28,
|
||||||
|
|
||||||
|
highdigitsams.SAM_SA_20B_S_300PMU2_CP_54K6E2: 27,
|
||||||
|
highdigitsams.SAM_SA_20B_S_300PMU2_TR_92H6E_truck: 33,
|
||||||
|
highdigitsams.SAM_SA_20B_S_300PMU2_SR_64N6E2: 40,
|
||||||
|
highdigitsams.SAM_SA_20B_S_300PMU2_LN_5P85SE2: 30,
|
||||||
|
|
||||||
|
highdigitsams.SAM_SA_23_S_300VM_9S457ME_CP: 30,
|
||||||
|
highdigitsams.SAM_SA_23_S_300VM_9S15M2_SR: 45,
|
||||||
|
highdigitsams.SAM_SA_23_S_300VM_9S19M2_SR: 45,
|
||||||
|
highdigitsams.SAM_SA_23_S_300VM_9S32ME_TR: 35,
|
||||||
|
highdigitsams.SAM_SA_23_S_300VM_9A83ME_LN: 32,
|
||||||
|
highdigitsams.SAM_SA_23_S_300VM_9A82ME_LN: 32,
|
||||||
|
|
||||||
|
highdigitsams.SAM_SA_17_Buk_M1_2_LN_9A310M1_2: 40,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|||||||
34
gen/sam/aaa_ks19.py
Normal file
34
gen/sam/aaa_ks19.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import random
|
||||||
|
|
||||||
|
from gen.sam.airdefensegroupgenerator import (
|
||||||
|
AirDefenseRange,
|
||||||
|
AirDefenseGroupGenerator,
|
||||||
|
)
|
||||||
|
from pydcs_extensions.highdigitsams import highdigitsams
|
||||||
|
|
||||||
|
|
||||||
|
class KS19Generator(AirDefenseGroupGenerator):
|
||||||
|
"""
|
||||||
|
This generate a KS 19 flak artillery group (KS-19 from the High Digit SAM mod)
|
||||||
|
"""
|
||||||
|
|
||||||
|
name = "KS-19 AAA Site"
|
||||||
|
price = 98
|
||||||
|
|
||||||
|
def generate(self):
|
||||||
|
|
||||||
|
spacing = random.randint(10, 40)
|
||||||
|
|
||||||
|
self.add_unit(highdigitsams.AAA_SON_9_Fire_Can, "TR", self.position.x - 20, self.position.y - 20, self.heading)
|
||||||
|
|
||||||
|
index = 0
|
||||||
|
for i in range(3):
|
||||||
|
for j in range(3):
|
||||||
|
index = index + 1
|
||||||
|
self.add_unit(highdigitsams.AAA_100mm_KS_19, "AAA#" + str(index),
|
||||||
|
self.position.x + spacing * i,
|
||||||
|
self.position.y + spacing * j, self.heading)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def range(cls) -> AirDefenseRange:
|
||||||
|
return AirDefenseRange.Short
|
||||||
@ -11,6 +11,7 @@ from game.theater.theatergroundobject import SamGroundObject
|
|||||||
from gen.sam.aaa_bofors import BoforsGenerator
|
from gen.sam.aaa_bofors import BoforsGenerator
|
||||||
from gen.sam.aaa_flak import FlakGenerator
|
from gen.sam.aaa_flak import FlakGenerator
|
||||||
from gen.sam.aaa_flak18 import Flak18Generator
|
from gen.sam.aaa_flak18 import Flak18Generator
|
||||||
|
from gen.sam.aaa_ks19 import KS19Generator
|
||||||
from gen.sam.aaa_ww2_ally_flak import AllyWW2FlakGenerator
|
from gen.sam.aaa_ww2_ally_flak import AllyWW2FlakGenerator
|
||||||
from gen.sam.aaa_zsu57 import ZSU57Generator
|
from gen.sam.aaa_zsu57 import ZSU57Generator
|
||||||
from gen.sam.aaa_zu23_insurgent import ZU23InsurgentGenerator
|
from gen.sam.aaa_zu23_insurgent import ZU23InsurgentGenerator
|
||||||
@ -48,11 +49,12 @@ from gen.sam.sam_roland import RolandGenerator
|
|||||||
from gen.sam.sam_sa10 import (
|
from gen.sam.sam_sa10 import (
|
||||||
SA10Generator,
|
SA10Generator,
|
||||||
Tier2SA10Generator,
|
Tier2SA10Generator,
|
||||||
Tier3SA10Generator,
|
Tier3SA10Generator, SA10BGenerator, SA12Generator, SA20Generator, SA20BGenerator, SA23Generator,
|
||||||
)
|
)
|
||||||
from gen.sam.sam_sa11 import SA11Generator
|
from gen.sam.sam_sa11 import SA11Generator
|
||||||
from gen.sam.sam_sa13 import SA13Generator
|
from gen.sam.sam_sa13 import SA13Generator
|
||||||
from gen.sam.sam_sa15 import SA15Generator
|
from gen.sam.sam_sa15 import SA15Generator
|
||||||
|
from gen.sam.sam_sa17 import SA17Generator
|
||||||
from gen.sam.sam_sa19 import SA19Generator
|
from gen.sam.sam_sa19 import SA19Generator
|
||||||
from gen.sam.sam_sa2 import SA2Generator
|
from gen.sam.sam_sa2 import SA2Generator
|
||||||
from gen.sam.sam_sa3 import SA3Generator
|
from gen.sam.sam_sa3 import SA3Generator
|
||||||
@ -100,7 +102,15 @@ SAM_MAP: Dict[str, Type[AirDefenseGroupGenerator]] = {
|
|||||||
"EarlyColdWarFlakGenerator": EarlyColdWarFlakGenerator,
|
"EarlyColdWarFlakGenerator": EarlyColdWarFlakGenerator,
|
||||||
"FreyaGenerator": FreyaGenerator,
|
"FreyaGenerator": FreyaGenerator,
|
||||||
"AllyWW2FlakGenerator": AllyWW2FlakGenerator,
|
"AllyWW2FlakGenerator": AllyWW2FlakGenerator,
|
||||||
"ZSU57Generator": ZSU57Generator
|
"ZSU57Generator": ZSU57Generator,
|
||||||
|
|
||||||
|
"KS19Generator": KS19Generator,
|
||||||
|
"SA10BGenerator": SA10BGenerator,
|
||||||
|
"SA12Generator": SA12Generator,
|
||||||
|
"SA17Generator": SA17Generator,
|
||||||
|
"SA20Generator": SA20Generator,
|
||||||
|
"SA20BGenerator": SA20BGenerator,
|
||||||
|
"SA23Generator": SA23Generator,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,16 @@
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
from dcs.mapping import Point
|
from dcs.mapping import Point
|
||||||
|
from dcs.unittype import VehicleType
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
|
from game import Game
|
||||||
|
from game.theater import SamGroundObject
|
||||||
from gen.sam.airdefensegroupgenerator import (
|
from gen.sam.airdefensegroupgenerator import (
|
||||||
AirDefenseRange,
|
AirDefenseRange,
|
||||||
AirDefenseGroupGenerator,
|
AirDefenseGroupGenerator,
|
||||||
)
|
)
|
||||||
|
from pydcs_extensions.highdigitsams import highdigitsams
|
||||||
|
|
||||||
|
|
||||||
class SA10Generator(AirDefenseGroupGenerator):
|
class SA10Generator(AirDefenseGroupGenerator):
|
||||||
@ -17,20 +21,30 @@ class SA10Generator(AirDefenseGroupGenerator):
|
|||||||
name = "SA-10/S-300PS Battery"
|
name = "SA-10/S-300PS Battery"
|
||||||
price = 550
|
price = 550
|
||||||
|
|
||||||
|
def __init__(self, game: Game, ground_object: SamGroundObject):
|
||||||
|
super().__init__(game, ground_object)
|
||||||
|
self.sr1 = AirDefence.SAM_SA_10_S_300PS_SR_5N66M
|
||||||
|
self.sr2 = AirDefence.SAM_SA_10_S_300PS_SR_64H6E
|
||||||
|
self.cp = AirDefence.SAM_SA_10_S_300PS_CP_54K6
|
||||||
|
self.tr1 = AirDefence.SAM_SA_10_S_300PS_TR_30N6
|
||||||
|
self.tr2 = AirDefence.SAM_SA_10_S_300PS_TR_30N6
|
||||||
|
self.ln1 = AirDefence.SAM_SA_10_S_300PS_LN_5P85C
|
||||||
|
self.ln2 = AirDefence.SAM_SA_10_S_300PS_LN_5P85D
|
||||||
|
|
||||||
def generate(self):
|
def generate(self):
|
||||||
# Search Radar
|
# Search Radar
|
||||||
self.add_unit(AirDefence.SAM_SA_10_S_300PS_SR_5N66M, "SR1", self.position.x, self.position.y + 40, self.heading)
|
self.add_unit(self.sr1, "SR1", self.position.x, self.position.y + 40, self.heading)
|
||||||
|
|
||||||
# Search radar for missiles (optionnal)
|
# Search radar for missiles (optionnal)
|
||||||
self.add_unit(AirDefence.SAM_SA_10_S_300PS_SR_64H6E, "SR2", self.position.x - 40, self.position.y, self.heading)
|
self.add_unit(self.sr2, "SR2", self.position.x - 40, self.position.y, self.heading)
|
||||||
|
|
||||||
# Command Post
|
# Command Post
|
||||||
self.add_unit(AirDefence.SAM_SA_10_S_300PS_CP_54K6, "CP", self.position.x, self.position.y, self.heading)
|
self.add_unit(self.cp, "CP", self.position.x, self.position.y, self.heading)
|
||||||
|
|
||||||
# 2 Tracking radars
|
# 2 Tracking radars
|
||||||
self.add_unit(AirDefence.SAM_SA_10_S_300PS_TR_30N6, "TR1", self.position.x - 40, self.position.y - 40, self.heading)
|
self.add_unit(self.tr1, "TR1", self.position.x - 40, self.position.y - 40, self.heading)
|
||||||
|
|
||||||
self.add_unit(AirDefence.SAM_SA_10_S_300PS_TR_30N6, "TR2", self.position.x + 40, self.position.y - 40,
|
self.add_unit(self.tr2, "TR2", self.position.x + 40, self.position.y - 40,
|
||||||
self.heading)
|
self.heading)
|
||||||
|
|
||||||
# 2 different launcher type (C & D)
|
# 2 different launcher type (C & D)
|
||||||
@ -38,9 +52,9 @@ class SA10Generator(AirDefenseGroupGenerator):
|
|||||||
positions = self.get_circular_position(num_launchers, launcher_distance=100, coverage=360)
|
positions = self.get_circular_position(num_launchers, launcher_distance=100, coverage=360)
|
||||||
for i, position in enumerate(positions):
|
for i, position in enumerate(positions):
|
||||||
if i%2 == 0:
|
if i%2 == 0:
|
||||||
self.add_unit(AirDefence.SAM_SA_10_S_300PS_LN_5P85C, "LN#" + str(i), position[0], position[1], position[2])
|
self.add_unit(self.ln1, "LN#" + str(i), position[0], position[1], position[2])
|
||||||
else:
|
else:
|
||||||
self.add_unit(AirDefence.SAM_SA_10_S_300PS_LN_5P85D, "LN#" + str(i), position[0], position[1], position[2])
|
self.add_unit(self.ln2, "LN#" + str(i), position[0], position[1], position[2])
|
||||||
|
|
||||||
self.generate_defensive_groups()
|
self.generate_defensive_groups()
|
||||||
|
|
||||||
@ -93,3 +107,83 @@ class Tier3SA10Generator(SA10Generator):
|
|||||||
for i, (x, y, heading) in enumerate(positions):
|
for i, (x, y, heading) in enumerate(positions):
|
||||||
self.add_unit_to_group(pd_group, AirDefence.SAM_SA_15_Tor_9A331,
|
self.add_unit_to_group(pd_group, AirDefence.SAM_SA_15_Tor_9A331,
|
||||||
f"PD#{i}", Point(x, y), heading)
|
f"PD#{i}", Point(x, y), heading)
|
||||||
|
|
||||||
|
|
||||||
|
class SA10BGenerator(Tier3SA10Generator):
|
||||||
|
|
||||||
|
price = 700
|
||||||
|
name = "SA-10B/S-300PS Battery"
|
||||||
|
|
||||||
|
def __init__(self, game: Game, ground_object: SamGroundObject):
|
||||||
|
super().__init__(game, ground_object)
|
||||||
|
self.sr1 = highdigitsams.SAM_SA_10B_S_300PS_40B6MD_SR
|
||||||
|
self.sr2 = highdigitsams.SAM_SA_10B_S_300PS_64H6E_SR
|
||||||
|
self.cp = highdigitsams.SAM_SA_10B_S_300PS_54K6_CP
|
||||||
|
self.tr1 = highdigitsams.SAM_SA_10B_S_300PS_30N6_TR
|
||||||
|
self.tr2 = highdigitsams.SAM_SA_10B_S_300PS_40B6M_TR
|
||||||
|
self.ln1 = highdigitsams.SAM_SA_10B_S_300PS_5P85SE_LN
|
||||||
|
self.ln2 = highdigitsams.SAM_SA_10B_S_300PS_5P85SU_LN
|
||||||
|
|
||||||
|
|
||||||
|
class SA12Generator(Tier3SA10Generator):
|
||||||
|
|
||||||
|
price = 750
|
||||||
|
name = "SA-12/S-300V Battery"
|
||||||
|
|
||||||
|
def __init__(self, game: Game, ground_object: SamGroundObject):
|
||||||
|
super().__init__(game, ground_object)
|
||||||
|
self.sr1 = highdigitsams.SAM_SA_12_S_300V_9S15_SR
|
||||||
|
self.sr2 = highdigitsams.SAM_SA_12_S_300V_9S19_SR
|
||||||
|
self.cp = highdigitsams.SAM_SA_12_S_300V_9S457_CP
|
||||||
|
self.tr1 = highdigitsams.SAM_SA_12_S_300V_9S32_TR
|
||||||
|
self.tr2 = highdigitsams.SAM_SA_12_S_300V_9S32_TR
|
||||||
|
self.ln1 = highdigitsams.SAM_SA_12_S_300V_9A82_LN
|
||||||
|
self.ln2 = highdigitsams.SAM_SA_12_S_300V_9A83_LN
|
||||||
|
|
||||||
|
|
||||||
|
class SA20Generator(Tier3SA10Generator):
|
||||||
|
|
||||||
|
price = 800
|
||||||
|
name = "SA-20/S-300PMU-1 Battery"
|
||||||
|
|
||||||
|
def __init__(self, game: Game, ground_object: SamGroundObject):
|
||||||
|
super().__init__(game, ground_object)
|
||||||
|
self.sr1 = highdigitsams.SAM_SA_20_S_300PMU1_SR_5N66E
|
||||||
|
self.sr2 = highdigitsams.SAM_SA_20_S_300PMU1_SR_64N6E
|
||||||
|
self.cp = highdigitsams.SAM_SA_20_S_300PMU1_CP_54K6
|
||||||
|
self.tr1 = highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E
|
||||||
|
self.tr2 = highdigitsams.SAM_SA_20_S_300PMU1_TR_30N6E_truck
|
||||||
|
self.ln1 = highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85CE
|
||||||
|
self.ln2 = highdigitsams.SAM_SA_20_S_300PMU1_LN_5P85DE
|
||||||
|
|
||||||
|
|
||||||
|
class SA20BGenerator(Tier3SA10Generator):
|
||||||
|
|
||||||
|
price = 850
|
||||||
|
name = "SA-20B/S-300PMU-2 Battery"
|
||||||
|
|
||||||
|
def __init__(self, game: Game, ground_object: SamGroundObject):
|
||||||
|
super().__init__(game, ground_object)
|
||||||
|
self.sr1 = highdigitsams.SAM_SA_20_S_300PMU1_SR_5N66E
|
||||||
|
self.sr2 = highdigitsams.SAM_SA_20_S_300PMU1_SR_64N6E
|
||||||
|
self.cp = highdigitsams.SAM_SA_20B_S_300PMU2_CP_54K6E2
|
||||||
|
self.tr1 = highdigitsams.SAM_SA_20B_S_300PMU2_TR_92H6E_truck
|
||||||
|
self.tr2 = highdigitsams.SAM_SA_20B_S_300PMU2_TR_92H6E_truck
|
||||||
|
self.ln1 = highdigitsams.SAM_SA_20B_S_300PMU2_LN_5P85SE2
|
||||||
|
self.ln2 = highdigitsams.SAM_SA_20B_S_300PMU2_LN_5P85SE2
|
||||||
|
|
||||||
|
|
||||||
|
class SA23Generator(Tier3SA10Generator):
|
||||||
|
|
||||||
|
price = 950
|
||||||
|
name = "SA-23/S-300VM Battery"
|
||||||
|
|
||||||
|
def __init__(self, game: Game, ground_object: SamGroundObject):
|
||||||
|
super().__init__(game, ground_object)
|
||||||
|
self.sr1 = highdigitsams.SAM_SA_23_S_300VM_9S15M2_SR
|
||||||
|
self.sr2 = highdigitsams.SAM_SA_23_S_300VM_9S19M2_SR
|
||||||
|
self.cp = highdigitsams.SAM_SA_23_S_300VM_9S457ME_CP
|
||||||
|
self.tr1 = highdigitsams.SAM_SA_23_S_300VM_9S32ME_TR
|
||||||
|
self.tr2 = highdigitsams.SAM_SA_23_S_300VM_9S32ME_TR
|
||||||
|
self.ln1 = highdigitsams.SAM_SA_23_S_300VM_9A82ME_LN
|
||||||
|
self.ln2 = highdigitsams.SAM_SA_23_S_300VM_9A83ME_LN
|
||||||
30
gen/sam/sam_sa17.py
Normal file
30
gen/sam/sam_sa17.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
|
from gen.sam.airdefensegroupgenerator import (
|
||||||
|
AirDefenseRange,
|
||||||
|
AirDefenseGroupGenerator,
|
||||||
|
)
|
||||||
|
from pydcs_extensions.highdigitsams import highdigitsams
|
||||||
|
|
||||||
|
|
||||||
|
class SA17Generator(AirDefenseGroupGenerator):
|
||||||
|
"""
|
||||||
|
This generate a SA-17 group
|
||||||
|
"""
|
||||||
|
|
||||||
|
name = "SA-17 Grizzly Battery"
|
||||||
|
price = 180
|
||||||
|
|
||||||
|
def generate(self):
|
||||||
|
self.add_unit(AirDefence.SAM_SA_11_Buk_SR_9S18M1, "SR", self.position.x + 20, self.position.y, self.heading)
|
||||||
|
self.add_unit(AirDefence.SAM_SA_11_Buk_CC_9S470M1, "CC", self.position.x, self.position.y, self.heading)
|
||||||
|
|
||||||
|
positions = self.get_circular_position(3, launcher_distance=140, coverage=180)
|
||||||
|
|
||||||
|
for i, position in enumerate(positions):
|
||||||
|
self.add_unit(highdigitsams.SAM_SA_17_Buk_M1_2_LN_9A310M1_2, "LN#" + str(i), position[0], position[1],
|
||||||
|
position[2])
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def range(cls) -> AirDefenseRange:
|
||||||
|
return AirDefenseRange.Medium
|
||||||
95
resources/factions/russia_2010_hds.json
Normal file
95
resources/factions/russia_2010_hds.json
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"country": "Russia",
|
||||||
|
"name": "Russia 2010 (High Digit SAMs)",
|
||||||
|
"authors": "Khopa",
|
||||||
|
"description": "<p>Russian army in the early 2010s, featuring the High Digit SAMs mod units. </p>",
|
||||||
|
"aircrafts": [
|
||||||
|
"MiG_29S",
|
||||||
|
"MiG_31",
|
||||||
|
"Su_24M",
|
||||||
|
"Su_25",
|
||||||
|
"Su_25T",
|
||||||
|
"Su_27",
|
||||||
|
"Su_30",
|
||||||
|
"Su_33",
|
||||||
|
"Su_34",
|
||||||
|
"L_39ZA",
|
||||||
|
"Mi_8MT",
|
||||||
|
"Mi_24V",
|
||||||
|
"Mi_28N",
|
||||||
|
"Ka_50",
|
||||||
|
"Tu_22M3",
|
||||||
|
"Tu_95MS",
|
||||||
|
"Tu_142",
|
||||||
|
"Tu_160"
|
||||||
|
],
|
||||||
|
"awacs": [
|
||||||
|
"A_50"
|
||||||
|
],
|
||||||
|
"tankers": [
|
||||||
|
"IL_78M"
|
||||||
|
],
|
||||||
|
"frontline_units": [
|
||||||
|
"IFV_BMP_1",
|
||||||
|
"IFV_BMP_2",
|
||||||
|
"IFV_BMP_3",
|
||||||
|
"APC_BTR_80",
|
||||||
|
"APC_BTR_82A",
|
||||||
|
"MBT_T_90",
|
||||||
|
"MBT_T_80U",
|
||||||
|
"MBT_T_72B3",
|
||||||
|
"SAM_SA_19_Tunguska_2S6"
|
||||||
|
],
|
||||||
|
"artillery_units": [
|
||||||
|
"MLRS_9K57_Uragan_BM_27",
|
||||||
|
"SPH_2S19_Msta"
|
||||||
|
],
|
||||||
|
"logistics_units": [
|
||||||
|
"Transport_Ural_375",
|
||||||
|
"Transport_UAZ_469"
|
||||||
|
],
|
||||||
|
"infantry_units": [
|
||||||
|
"Paratrooper_AKS",
|
||||||
|
"Infantry_Soldier_Rus",
|
||||||
|
"Paratrooper_RPG_16",
|
||||||
|
"_2B11_mortar",
|
||||||
|
"SAM_SA_18_Igla_MANPADS"
|
||||||
|
],
|
||||||
|
"air_defenses": [
|
||||||
|
"SA17Generator",
|
||||||
|
"SA13Generator",
|
||||||
|
"SA15Generator",
|
||||||
|
"SA19Generator",
|
||||||
|
"SA10BGenerator",
|
||||||
|
"SA12Generator",
|
||||||
|
"SA20Generator",
|
||||||
|
"SA20BGenerator",
|
||||||
|
"SA23Generator"
|
||||||
|
],
|
||||||
|
"ewrs": [
|
||||||
|
"BoxSpringGenerator",
|
||||||
|
"TallRackGenerator"
|
||||||
|
],
|
||||||
|
"aircraft_carrier": [
|
||||||
|
"CV_1143_5_Admiral_Kuznetsov"
|
||||||
|
],
|
||||||
|
"helicopter_carrier": [
|
||||||
|
],
|
||||||
|
"helicopter_carrier_names": [
|
||||||
|
],
|
||||||
|
"destroyers": [
|
||||||
|
"FF_1135M_Rezky"
|
||||||
|
],
|
||||||
|
"cruisers": [
|
||||||
|
"FSG_1241_1MP_Molniya"
|
||||||
|
],
|
||||||
|
"requirements": { "High Digit SAMs": "https://github.com/Auranis/HighDigitSAMs/releases"},
|
||||||
|
"carrier_names": [
|
||||||
|
"Admiral Kuznetov"
|
||||||
|
],
|
||||||
|
"navy_generators": [
|
||||||
|
"RussianNavyGroupGenerator"
|
||||||
|
],
|
||||||
|
"has_jtac": true,
|
||||||
|
"jtac_unit": "MQ_9_Reaper"
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user