mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Added Iranian faction, SAM SA-2 & SAM HAWK site generation added
This commit is contained in:
parent
3c9bffb557
commit
9d4b6183b0
75
game/db.py
75
game/db.py
@ -151,8 +151,10 @@ PRICES = {
|
|||||||
AirDefence.SAM_SA_19_Tunguska_2S6: 15,
|
AirDefence.SAM_SA_19_Tunguska_2S6: 15,
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25: 22,
|
AirDefence.SAM_SA_6_Kub_LN_2P25: 22,
|
||||||
AirDefence.SAM_SA_8_Osa_9A33: 12,
|
AirDefence.SAM_SA_8_Osa_9A33: 12,
|
||||||
AirDefence.SAM_SA_3_S_125_LN_5P73: 35,
|
AirDefence.SAM_SA_3_S_125_LN_5P73: 20,
|
||||||
|
AirDefence.SAM_SA_2_LN_SM_90: 15,
|
||||||
AirDefence.SAM_SA_11_Buk_LN_9A310M1: 25,
|
AirDefence.SAM_SA_11_Buk_LN_9A310M1: 25,
|
||||||
|
AirDefence.SAM_Hawk_PCP: 20,
|
||||||
|
|
||||||
# ship
|
# ship
|
||||||
CV_1143_5_Admiral_Kuznetsov: 100,
|
CV_1143_5_Admiral_Kuznetsov: 100,
|
||||||
@ -299,14 +301,16 @@ UNIT_BY_TASK = {
|
|||||||
AirDefence.AAA_Vulcan_M163,
|
AirDefence.AAA_Vulcan_M163,
|
||||||
AirDefence.SAM_Linebacker_M6,
|
AirDefence.SAM_Linebacker_M6,
|
||||||
|
|
||||||
#AirDefence.SPAAA_ZSU_23_4_Shilka,
|
AirDefence.SPAAA_ZSU_23_4_Shilka,
|
||||||
#AirDefence.AAA_ZU_23_Closed,
|
AirDefence.AAA_ZU_23_Closed,
|
||||||
#AirDefence.SAM_SA_9_Strela_1_9P31,
|
AirDefence.SAM_SA_9_Strela_1_9P31,
|
||||||
#AirDefence.SAM_SA_8_Osa_9A33,
|
AirDefence.SAM_SA_8_Osa_9A33,
|
||||||
#AirDefence.SAM_SA_19_Tunguska_2S6,
|
AirDefence.SAM_SA_19_Tunguska_2S6,
|
||||||
#AirDefence.SAM_SA_6_Kub_LN_2P25,
|
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
||||||
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
||||||
#AirDefence.SAM_SA_11_Buk_LN_9A310M1,
|
AirDefence.SAM_Hawk_PCP,
|
||||||
|
AirDefence.SAM_SA_2_LN_SM_90,
|
||||||
|
AirDefence.SAM_SA_11_Buk_LN_9A310M1,
|
||||||
],
|
],
|
||||||
Reconnaissance: [Unarmed.Transport_M818, Unarmed.Transport_Ural_375, Unarmed.Transport_UAZ_469],
|
Reconnaissance: [Unarmed.Transport_M818, Unarmed.Transport_Ural_375, Unarmed.Transport_UAZ_469],
|
||||||
Nothing: [Infantry.Infantry_M4, Infantry.Soldier_AK, ],
|
Nothing: [Infantry.Infantry_M4, Infantry.Soldier_AK, ],
|
||||||
@ -327,6 +331,8 @@ SAM_BAN = [
|
|||||||
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
||||||
AirDefence.SAM_SA_8_Osa_9A33,
|
AirDefence.SAM_SA_8_Osa_9A33,
|
||||||
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
||||||
|
AirDefence.SAM_Hawk_PCP,
|
||||||
|
AirDefence.SAM_SA_2_LN_SM_90,
|
||||||
AirDefence.SAM_SA_11_Buk_LN_9A310M1,
|
AirDefence.SAM_SA_11_Buk_LN_9A310M1,
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -344,11 +350,15 @@ SAM_CONVERT = {
|
|||||||
AirDefence.SAM_SA_10_S_300PS_TR_30N6: AirDefence.SAM_SA_10_S_300PS_LN_5P85C,
|
AirDefence.SAM_SA_10_S_300PS_TR_30N6: AirDefence.SAM_SA_10_S_300PS_LN_5P85C,
|
||||||
AirDefence.SAM_SA_10_S_300PS_CP_54K6: AirDefence.SAM_SA_10_S_300PS_LN_5P85C,
|
AirDefence.SAM_SA_10_S_300PS_CP_54K6: AirDefence.SAM_SA_10_S_300PS_LN_5P85C,
|
||||||
AirDefence.SAM_SA_10_S_300PS_SR_64H6E: AirDefence.SAM_SA_10_S_300PS_CP_54K6,
|
AirDefence.SAM_SA_10_S_300PS_SR_64H6E: AirDefence.SAM_SA_10_S_300PS_CP_54K6,
|
||||||
|
AirDefence.SAM_Hawk_TR_AN_MPQ_46: AirDefence.SAM_Hawk_PCP,
|
||||||
|
AirDefence.SAM_Hawk_SR_AN_MPQ_50: AirDefence.SAM_Hawk_PCP,
|
||||||
|
AirDefence.SAM_Hawk_LN_M192: AirDefence.SAM_Hawk_PCP,
|
||||||
'except': {
|
'except': {
|
||||||
# this radar is shared between the two S300's. if we attempt to find a SAM site at a base and can't find one
|
# this radar is shared between the two S300's. if we attempt to find a SAM site at a base and can't find one
|
||||||
# model, we can safely assume the other was deployed
|
# model, we can safely assume the other was deployed
|
||||||
# well, perhaps not safely, but we'll make the assumption anyway :p
|
# well, perhaps not safely, but we'll make the assumption anyway :p
|
||||||
AirDefence.SAM_SA_10_S_300PS_TR_30N6: AirDefence.SAM_SA_10_S_300PS_CP_54K6,
|
AirDefence.SAM_SA_10_S_300PS_TR_30N6: AirDefence.SAM_SA_10_S_300PS_CP_54K6,
|
||||||
|
AirDefence.SAM_SR_P_19: AirDefence.SAM_SA_2_LN_SM_90
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -609,6 +619,54 @@ FACTIONS = {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"Iran 2015": {
|
||||||
|
"country": "Russia",
|
||||||
|
"side": "red",
|
||||||
|
"units": [
|
||||||
|
|
||||||
|
MiG_29A,
|
||||||
|
F_4E,
|
||||||
|
F_14B,
|
||||||
|
F_5E_3,
|
||||||
|
|
||||||
|
MiG_21Bis,
|
||||||
|
Su_24M,
|
||||||
|
Su_25,
|
||||||
|
Su_17M4,
|
||||||
|
|
||||||
|
IL_76MD,
|
||||||
|
IL_78M,
|
||||||
|
An_26B,
|
||||||
|
An_30M,
|
||||||
|
Yak_40,
|
||||||
|
|
||||||
|
A_50,
|
||||||
|
|
||||||
|
Mi_28N,
|
||||||
|
Mi_24V,
|
||||||
|
|
||||||
|
AirDefence.AAA_ZU_23_Closed,
|
||||||
|
AirDefence.AAA_ZU_23_Insurgent_on_Ural_375,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka,
|
||||||
|
AirDefence.SAM_Hawk_PCP,
|
||||||
|
AirDefence.SAM_SA_2_LN_SM_90,
|
||||||
|
|
||||||
|
Armor.APC_M113,
|
||||||
|
Armor.APC_BTR_80,
|
||||||
|
Armor.MBT_M60A3_Patton,
|
||||||
|
Armor.MBT_T_72B,
|
||||||
|
|
||||||
|
Unarmed.Transport_Ural_375,
|
||||||
|
Unarmed.Transport_UAZ_469,
|
||||||
|
Infantry.Soldier_AK,
|
||||||
|
|
||||||
|
CV_1143_5_Admiral_Kuznetsov,
|
||||||
|
Bulk_cargo_ship_Yakushev,
|
||||||
|
Dry_cargo_ship_Ivanov,
|
||||||
|
Tanker_Elnya_160
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
"USA 1955": {
|
"USA 1955": {
|
||||||
"country": "USA",
|
"country": "USA",
|
||||||
"side": "blue",
|
"side": "blue",
|
||||||
@ -959,6 +1017,7 @@ def unit_task(unit: UnitType) -> Task:
|
|||||||
if unit in SAM_CONVERT:
|
if unit in SAM_CONVERT:
|
||||||
return unit_task(SAM_CONVERT[unit])
|
return unit_task(SAM_CONVERT[unit])
|
||||||
|
|
||||||
|
print(unit.name + " cause issue")
|
||||||
assert False
|
assert False
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
109
gen/aaa.py
109
gen/aaa.py
@ -33,6 +33,12 @@ def num_sam_dead(sam_type, destroyed_count):
|
|||||||
AirDefence.SAM_SA_3_S_125_LN_5P73: 4,
|
AirDefence.SAM_SA_3_S_125_LN_5P73: 4,
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25: 6,
|
AirDefence.SAM_SA_6_Kub_LN_2P25: 6,
|
||||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: 8,
|
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: 8,
|
||||||
|
AirDefence.SAM_SA_2_LN_SM_90:4,
|
||||||
|
AirDefence.SAM_SA_2_TR_SNR_75_Fan_Song: 1,
|
||||||
|
AirDefence.SAM_Hawk_PCP: 1,
|
||||||
|
AirDefence.SAM_Hawk_LN_M192: 4,
|
||||||
|
AirDefence.SAM_Hawk_SR_AN_MPQ_50: 1,
|
||||||
|
AirDefence.SAM_Hawk_TR_AN_MPQ_46: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
return int(destroyed_count / sam_threshold[sam_type])
|
return int(destroyed_count / sam_threshold[sam_type])
|
||||||
@ -192,6 +198,7 @@ def aaa_vehicle_group(self, country, name, _type: unittype.VehicleType, position
|
|||||||
v.position.y = center_y
|
v.position.y = center_y
|
||||||
v.heading = heading
|
v.heading = heading
|
||||||
vg.add_unit(v)
|
vg.add_unit(v)
|
||||||
|
|
||||||
# command center
|
# command center
|
||||||
v = self.vehicle(
|
v = self.vehicle(
|
||||||
name + " Unit #{nr}-c".format(nr=i),
|
name + " Unit #{nr}-c".format(nr=i),
|
||||||
@ -251,6 +258,7 @@ def aaa_vehicle_group(self, country, name, _type: unittype.VehicleType, position
|
|||||||
v.position.y = center_y
|
v.position.y = center_y
|
||||||
v.heading = heading
|
v.heading = heading
|
||||||
vg.add_unit(v)
|
vg.add_unit(v)
|
||||||
|
|
||||||
# command center
|
# command center
|
||||||
v = self.vehicle(
|
v = self.vehicle(
|
||||||
name + " Unit #{nr}-c".format(nr=i),
|
name + " Unit #{nr}-c".format(nr=i),
|
||||||
@ -278,6 +286,107 @@ def aaa_vehicle_group(self, country, name, _type: unittype.VehicleType, position
|
|||||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85D,
|
AirDefence.SAM_SA_10_S_300PS_LN_5P85D,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
v.position.x = plop_positions[x][0]
|
||||||
|
v.position.y = plop_positions[x][1]
|
||||||
|
v.heading = plop_positions[x][2]
|
||||||
|
vg.add_unit(v)
|
||||||
|
elif _type == AirDefence.SAM_Hawk_PCP:
|
||||||
|
# 4 launchers (180 degrees all facing the same direction), 1 SR, 1 TR, 1 PCP
|
||||||
|
num_launchers = 4
|
||||||
|
|
||||||
|
# search radar
|
||||||
|
v = self.vehicle(
|
||||||
|
name + " Unit #{nr}-sr".format(nr=i),
|
||||||
|
AirDefence.SAM_Hawk_SR_AN_MPQ_50,
|
||||||
|
)
|
||||||
|
v.position.x = position.x
|
||||||
|
v.position.y = position.y + (i - 1) * 20
|
||||||
|
v.heading = heading
|
||||||
|
vg.add_unit(v)
|
||||||
|
|
||||||
|
|
||||||
|
# track radar
|
||||||
|
v = self.vehicle(
|
||||||
|
name + " Unit #{nr}-tr".format(nr=i),
|
||||||
|
AirDefence.SAM_Hawk_TR_AN_MPQ_46,
|
||||||
|
)
|
||||||
|
center_x = position.x + randint(20, 40)
|
||||||
|
center_y = position.y + (i - 1) * 20
|
||||||
|
v.position.x = center_x
|
||||||
|
v.position.y = center_y
|
||||||
|
v.heading = heading
|
||||||
|
vg.add_unit(v)
|
||||||
|
|
||||||
|
# PCP
|
||||||
|
v = self.vehicle(
|
||||||
|
name + " Unit #{nr}-pcp".format(nr=i),
|
||||||
|
AirDefence.SAM_Hawk_PCP,
|
||||||
|
)
|
||||||
|
|
||||||
|
center_x = position.x + randint(60, 80)
|
||||||
|
center_y = position.y + 20
|
||||||
|
v.position.x = center_x
|
||||||
|
v.position.y = center_y
|
||||||
|
v.heading = heading
|
||||||
|
vg.add_unit(v)
|
||||||
|
|
||||||
|
plop_positions = determine_positions(
|
||||||
|
position,
|
||||||
|
heading,
|
||||||
|
num_launchers,
|
||||||
|
launcher_distance=100,
|
||||||
|
coverage=180,
|
||||||
|
)
|
||||||
|
for x in range(0, num_launchers):
|
||||||
|
v = self.vehicle(
|
||||||
|
name + " Unit #{nr}-{x}".format(nr=i, x=x),
|
||||||
|
AirDefence.SAM_Hawk_LN_M192,
|
||||||
|
)
|
||||||
|
|
||||||
|
v.position.x = plop_positions[x][0]
|
||||||
|
v.position.y = plop_positions[x][1]
|
||||||
|
v.heading = plop_positions[x][2]
|
||||||
|
vg.add_unit(v)
|
||||||
|
elif _type == AirDefence.SAM_SA_2_LN_SM_90:
|
||||||
|
# 4 launchers (180 degrees all facing the same direction), 1 SR, 1 TR
|
||||||
|
num_launchers = 4
|
||||||
|
|
||||||
|
# search radar
|
||||||
|
v = self.vehicle(
|
||||||
|
name + " Unit #{nr}-sr".format(nr=i),
|
||||||
|
AirDefence.SAM_SR_P_19,
|
||||||
|
)
|
||||||
|
v.position.x = position.x
|
||||||
|
v.position.y = position.y + (i - 1) * 20
|
||||||
|
v.heading = heading
|
||||||
|
vg.add_unit(v)
|
||||||
|
|
||||||
|
|
||||||
|
# track radar
|
||||||
|
v = self.vehicle(
|
||||||
|
name + " Unit #{nr}-tr".format(nr=i),
|
||||||
|
AirDefence.SAM_SA_2_TR_SNR_75_Fan_Song,
|
||||||
|
)
|
||||||
|
center_x = position.x + randint(20, 40)
|
||||||
|
center_y = position.y + (i - 1) * 20
|
||||||
|
v.position.x = center_x
|
||||||
|
v.position.y = center_y
|
||||||
|
v.heading = heading
|
||||||
|
vg.add_unit(v)
|
||||||
|
|
||||||
|
plop_positions = determine_positions(
|
||||||
|
position,
|
||||||
|
heading,
|
||||||
|
num_launchers,
|
||||||
|
launcher_distance=100,
|
||||||
|
coverage=180,
|
||||||
|
)
|
||||||
|
for x in range(0, num_launchers):
|
||||||
|
v = self.vehicle(
|
||||||
|
name + " Unit #{nr}-{x}".format(nr=i, x=x),
|
||||||
|
AirDefence.SAM_SA_2_LN_SM_90,
|
||||||
|
)
|
||||||
|
|
||||||
v.position.x = plop_positions[x][0]
|
v.position.x = plop_positions[x][0]
|
||||||
v.position.y = plop_positions[x][1]
|
v.position.y = plop_positions[x][1]
|
||||||
v.heading = plop_positions[x][2]
|
v.heading = plop_positions[x][2]
|
||||||
|
|||||||
@ -168,12 +168,13 @@ class Base:
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
modified_sam_site = db.SAM_CONVERT[sam_site]['except']
|
modified_sam_site = db.SAM_CONVERT[sam_site]['except']
|
||||||
|
|
||||||
self.aa[modified_sam_site] = max(
|
if modified_sam_site in self.aa:
|
||||||
self.aa[modified_sam_site] - dead_count,
|
self.aa[modified_sam_site] = max(
|
||||||
0
|
self.aa[modified_sam_site] - dead_count,
|
||||||
)
|
0
|
||||||
if self.aa[modified_sam_site] == 0:
|
)
|
||||||
del self.aa[modified_sam_site]
|
if self.aa[modified_sam_site] == 0:
|
||||||
|
del self.aa[modified_sam_site]
|
||||||
|
|
||||||
def affect_strength(self, amount):
|
def affect_strength(self, amount):
|
||||||
self.strength += amount
|
self.strength += amount
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user