mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Merge branch 'develop_2_3_x' into develop
# Conflicts: # changelog.md # game/procurement.py # resources/factions/iraq_1991.json
This commit is contained in:
commit
b0ad664ece
14
changelog.md
14
changelog.md
@ -5,9 +5,21 @@ Saves from 2.3 are not compatible with 2.4.
|
|||||||
## Features/Improvements
|
## Features/Improvements
|
||||||
|
|
||||||
* **[Flight Planner]** Air-to-air and SEAD escorts will no longer be automatically planned for packages that are not in range of threats.
|
* **[Flight Planner]** Air-to-air and SEAD escorts will no longer be automatically planned for packages that are not in range of threats.
|
||||||
|
|
||||||
|
# 2.3.3
|
||||||
|
|
||||||
|
## Features/Improvements
|
||||||
|
* **[Campaigns]** Reworked Golan Heights campaign on Syria, (Added FOB and preset locations for SAMS)
|
||||||
|
* **[Campaigns]** Added a lite version of the Golan Heights campaign
|
||||||
|
* **[Campaigns]** Reworked Syrian Civil War campaign (Added FOB and preset locations for SAMS)
|
||||||
|
* **[Factions]** Updated Nato Desert Storm to include F-14A
|
||||||
|
* **[Factions]** Updated Iraq 1991 factions to include Zsu-57 and Mig-29A
|
||||||
* **[Plugins]** [The EWRS plugin](https://github.com/Bob7heBuilder/EWRS) is now included.
|
* **[Plugins]** [The EWRS plugin](https://github.com/Bob7heBuilder/EWRS) is now included.
|
||||||
|
|
||||||
## Fixes
|
## Fixes:
|
||||||
|
* **[Factions]** AI would never buy artillery units for the frontline - fixed
|
||||||
|
* **[Factions]** Removed the F-111 unit from the NATO desert storm faction. (Recruiting it would cause crashes in DCS, since it is not a valid unit)
|
||||||
|
* **[Units]** Fixed SPG_Stryker_M1128_MGS not being in db
|
||||||
|
|
||||||
# 2.3.2
|
# 2.3.2
|
||||||
|
|
||||||
|
|||||||
36
game/db.py
36
game/db.py
@ -389,6 +389,7 @@ PRICES = {
|
|||||||
Armor.ATGM_M1045_HMMWV_TOW: 8,
|
Armor.ATGM_M1045_HMMWV_TOW: 8,
|
||||||
Armor.IFV_M2A2_Bradley: 12,
|
Armor.IFV_M2A2_Bradley: 12,
|
||||||
Armor.APC_M1126_Stryker_ICV: 10,
|
Armor.APC_M1126_Stryker_ICV: 10,
|
||||||
|
Armor.SPG_M1128_Stryker_MGS: 14,
|
||||||
Armor.ATGM_M1134_Stryker: 12,
|
Armor.ATGM_M1134_Stryker: 12,
|
||||||
Armor.MBT_M60A3_Patton: 16,
|
Armor.MBT_M60A3_Patton: 16,
|
||||||
Armor.MBT_M1A2_Abrams: 25,
|
Armor.MBT_M1A2_Abrams: 25,
|
||||||
@ -765,6 +766,7 @@ UNIT_BY_TASK = {
|
|||||||
Armor.APC_M1126_Stryker_ICV,
|
Armor.APC_M1126_Stryker_ICV,
|
||||||
Armor.APC_M1126_Stryker_ICV,
|
Armor.APC_M1126_Stryker_ICV,
|
||||||
Armor.APC_M1126_Stryker_ICV,
|
Armor.APC_M1126_Stryker_ICV,
|
||||||
|
Armor.SPG_M1128_Stryker_MGS,
|
||||||
Armor.IFV_MCV_80,
|
Armor.IFV_MCV_80,
|
||||||
Armor.IFV_MCV_80,
|
Armor.IFV_MCV_80,
|
||||||
Armor.IFV_MCV_80,
|
Armor.IFV_MCV_80,
|
||||||
@ -847,6 +849,23 @@ UNIT_BY_TASK = {
|
|||||||
Artillery.M12_GMC,
|
Artillery.M12_GMC,
|
||||||
Artillery.Sturmpanzer_IV_Brummbär,
|
Artillery.Sturmpanzer_IV_Brummbär,
|
||||||
|
|
||||||
|
AirDefence.AAA_ZU_23_on_Ural_375,
|
||||||
|
AirDefence.AAA_ZU_23_Insurgent_on_Ural_375,
|
||||||
|
AirDefence.AAA_ZSU_57_2,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka,
|
||||||
|
AirDefence.SAM_SA_8_Osa_9A33,
|
||||||
|
AirDefence.SAM_SA_9_Strela_1_9P31,
|
||||||
|
AirDefence.SAM_SA_13_Strela_10M3_9A35M3,
|
||||||
|
AirDefence.SAM_SA_15_Tor_9A331,
|
||||||
|
AirDefence.SAM_SA_19_Tunguska_2S6,
|
||||||
|
AirDefence.SPAAA_Gepard,
|
||||||
|
AirDefence.AAA_Vulcan_M163,
|
||||||
|
AirDefence.SAM_Linebacker_M6,
|
||||||
|
AirDefence.SAM_Chaparral_M48,
|
||||||
|
AirDefence.SAM_Avenger_M1097,
|
||||||
|
AirDefence.SAM_Roland_ADS,
|
||||||
|
AirDefence.HQ_7_Self_Propelled_LN,
|
||||||
|
|
||||||
frenchpack.DIM__TOYOTA_BLUE,
|
frenchpack.DIM__TOYOTA_BLUE,
|
||||||
frenchpack.DIM__TOYOTA_DESERT,
|
frenchpack.DIM__TOYOTA_DESERT,
|
||||||
frenchpack.DIM__TOYOTA_GREEN,
|
frenchpack.DIM__TOYOTA_GREEN,
|
||||||
@ -872,23 +891,6 @@ UNIT_BY_TASK = {
|
|||||||
|
|
||||||
],
|
],
|
||||||
AirDefence: [
|
AirDefence: [
|
||||||
|
|
||||||
# those are listed multiple times here to balance prioritization more into lower tier AAs
|
|
||||||
AirDefence.AAA_Vulcan_M163,
|
|
||||||
AirDefence.AAA_Vulcan_M163,
|
|
||||||
AirDefence.AAA_Vulcan_M163,
|
|
||||||
AirDefence.SAM_Linebacker_M6,
|
|
||||||
|
|
||||||
AirDefence.SPAAA_ZSU_23_4_Shilka,
|
|
||||||
AirDefence.AAA_ZU_23_Closed,
|
|
||||||
AirDefence.SAM_SA_9_Strela_1_9P31,
|
|
||||||
AirDefence.SAM_SA_8_Osa_9A33,
|
|
||||||
AirDefence.SAM_SA_19_Tunguska_2S6,
|
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
|
||||||
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,
|
|
||||||
],
|
],
|
||||||
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, ],
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import dataclass
|
|
||||||
import math
|
import math
|
||||||
import random
|
import random
|
||||||
|
from dataclasses import dataclass
|
||||||
from typing import Iterator, List, Optional, TYPE_CHECKING, Type
|
from typing import Iterator, List, Optional, TYPE_CHECKING, Type
|
||||||
|
|
||||||
from dcs.task import CAP, CAS
|
from dcs.task import CAP, CAS
|
||||||
@ -75,15 +75,25 @@ class ProcurementAi:
|
|||||||
return budget
|
return budget
|
||||||
|
|
||||||
def random_affordable_ground_unit(
|
def random_affordable_ground_unit(
|
||||||
self, budget: int) -> Optional[Type[VehicleType]]:
|
self, budget: int, cp: ControlPoint) -> Optional[Type[VehicleType]]:
|
||||||
affordable_units = [u for u in self.faction.frontline_units if
|
affordable_units = [u for u in self.faction.frontline_units + self.faction.artillery_units if
|
||||||
db.PRICES[u] <= budget]
|
db.PRICES[u] <= budget]
|
||||||
|
|
||||||
|
total_number_aa = cp.base.total_frontline_aa + cp.pending_frontline_aa_deliveries_count
|
||||||
|
total_non_aa = cp.base.total_armor + cp.pending_deliveries_count - total_number_aa
|
||||||
|
max_aa = math.ceil(total_non_aa/8)
|
||||||
|
|
||||||
|
# Limit the number of AA units the AI will buy
|
||||||
|
if not total_number_aa < max_aa:
|
||||||
|
for unit in [u for u in affordable_units if u in TYPE_SHORAD]:
|
||||||
|
affordable_units.remove(unit)
|
||||||
|
|
||||||
if not affordable_units:
|
if not affordable_units:
|
||||||
return None
|
return None
|
||||||
return random.choice(affordable_units)
|
return random.choice(affordable_units)
|
||||||
|
|
||||||
def reinforce_front_line(self, budget: int) -> int:
|
def reinforce_front_line(self, budget: int) -> int:
|
||||||
if not self.faction.frontline_units:
|
if not self.faction.frontline_units and not self.faction.artillery_units:
|
||||||
return budget
|
return budget
|
||||||
|
|
||||||
while budget > 0:
|
while budget > 0:
|
||||||
@ -92,7 +102,7 @@ class ProcurementAi:
|
|||||||
break
|
break
|
||||||
|
|
||||||
cp = random.choice(candidates)
|
cp = random.choice(candidates)
|
||||||
unit = self.random_affordable_ground_unit(budget)
|
unit = self.random_affordable_ground_unit(budget, cp)
|
||||||
if unit is None:
|
if unit is None:
|
||||||
# Can't afford any more units.
|
# Can't afford any more units.
|
||||||
break
|
break
|
||||||
|
|||||||
@ -9,6 +9,7 @@ from dcs.unittype import FlyingType, UnitType, VehicleType
|
|||||||
from dcs.vehicles import AirDefence, Armor
|
from dcs.vehicles import AirDefence, Armor
|
||||||
|
|
||||||
from game import db
|
from game import db
|
||||||
|
from gen.ground_forces.ai_ground_planner_db import TYPE_SHORAD
|
||||||
|
|
||||||
STRENGTH_AA_ASSEMBLE_MIN = 0.2
|
STRENGTH_AA_ASSEMBLE_MIN = 0.2
|
||||||
PLANES_SCRAMBLE_MIN_BASE = 2
|
PLANES_SCRAMBLE_MIN_BASE = 2
|
||||||
@ -36,6 +37,10 @@ class Base:
|
|||||||
def total_armor(self) -> int:
|
def total_armor(self) -> int:
|
||||||
return sum(self.armor.values())
|
return sum(self.armor.values())
|
||||||
|
|
||||||
|
@property
|
||||||
|
def total_frontline_aa(self) -> int:
|
||||||
|
return sum([v for k, v in self.armor.items() if k in TYPE_SHORAD])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def total_aa(self) -> int:
|
def total_aa(self) -> int:
|
||||||
return sum(self.aa.values())
|
return sum(self.aa.values())
|
||||||
|
|||||||
@ -20,6 +20,7 @@ from dcs.terrain.terrain import Airport, ParkingSlot
|
|||||||
from dcs.unittype import FlyingType
|
from dcs.unittype import FlyingType
|
||||||
|
|
||||||
from game import db
|
from game import db
|
||||||
|
from gen.ground_forces.ai_ground_planner_db import TYPE_SHORAD
|
||||||
from gen.runways import RunwayAssigner, RunwayData
|
from gen.runways import RunwayAssigner, RunwayData
|
||||||
from gen.ground_forces.combat_stance import CombatStance
|
from gen.ground_forces.combat_stance import CombatStance
|
||||||
from .base import Base
|
from .base import Base
|
||||||
@ -457,6 +458,26 @@ class ControlPoint(MissionTarget, ABC):
|
|||||||
u.position.x = u.position.x + delta.x
|
u.position.x = u.position.x + delta.x
|
||||||
u.position.y = u.position.y + delta.y
|
u.position.y = u.position.y + delta.y
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pending_frontline_aa_deliveries_count(self):
|
||||||
|
"""
|
||||||
|
Get number of pending frontline aa units
|
||||||
|
"""
|
||||||
|
if self.pending_unit_deliveries:
|
||||||
|
return sum([v for k,v in self.pending_unit_deliveries.units.items() if k in TYPE_SHORAD])
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pending_deliveries_count(self):
|
||||||
|
"""
|
||||||
|
Get number of pending units
|
||||||
|
"""
|
||||||
|
if self.pending_unit_deliveries:
|
||||||
|
return sum([v for k, v in self.pending_unit_deliveries.units.items()])
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
class Airfield(ControlPoint):
|
class Airfield(ControlPoint):
|
||||||
|
|
||||||
|
|||||||
14
gen/armor.py
14
gen/armor.py
@ -675,12 +675,14 @@ class GroundConflictGenerator:
|
|||||||
else:
|
else:
|
||||||
g.set_skill(self.game.settings.enemy_vehicle_skill)
|
g.set_skill(self.game.settings.enemy_vehicle_skill)
|
||||||
positioned_groups.append((g, group))
|
positioned_groups.append((g, group))
|
||||||
self.gen_infantry_group_for_group(
|
|
||||||
g,
|
if group.role in [CombatGroupRole.APC, CombatGroupRole.IFV]:
|
||||||
is_player,
|
self.gen_infantry_group_for_group(
|
||||||
self.mission.country(country),
|
g,
|
||||||
opposite_heading(spawn_heading)
|
is_player,
|
||||||
)
|
self.mission.country(country),
|
||||||
|
opposite_heading(spawn_heading)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
logging.warning(f"Unable to get valid position for {group}")
|
logging.warning(f"Unable to get valid position for {group}")
|
||||||
|
|
||||||
|
|||||||
@ -3,180 +3,14 @@ from enum import Enum
|
|||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
from dcs.unittype import VehicleType
|
from dcs.unittype import VehicleType
|
||||||
from dcs.vehicles import Armor, Artillery, Infantry, Unarmed
|
|
||||||
|
|
||||||
import pydcs_extensions.frenchpack.frenchpack as frenchpack
|
|
||||||
from game.theater import ControlPoint
|
from game.theater import ControlPoint
|
||||||
|
from gen.ground_forces.ai_ground_planner_db import *
|
||||||
from gen.ground_forces.combat_stance import CombatStance
|
from gen.ground_forces.combat_stance import CombatStance
|
||||||
|
|
||||||
TYPE_TANKS = [
|
|
||||||
Armor.MBT_T_55,
|
|
||||||
Armor.MBT_T_72B,
|
|
||||||
Armor.MBT_T_72B3,
|
|
||||||
Armor.MBT_T_80U,
|
|
||||||
Armor.MBT_T_90,
|
|
||||||
Armor.MBT_Leopard_2,
|
|
||||||
Armor.MBT_Leopard_1A3,
|
|
||||||
Armor.MBT_Leclerc,
|
|
||||||
Armor.MBT_Challenger_II,
|
|
||||||
Armor.MBT_M1A2_Abrams,
|
|
||||||
Armor.MBT_M60A3_Patton,
|
|
||||||
Armor.MBT_Merkava_Mk__4,
|
|
||||||
Armor.ZTZ_96B,
|
|
||||||
|
|
||||||
# WW2
|
|
||||||
Armor.MT_Pz_Kpfw_V_Panther_Ausf_G,
|
|
||||||
Armor.MT_Pz_Kpfw_IV_Ausf_H,
|
|
||||||
Armor.HT_Pz_Kpfw_VI_Tiger_I,
|
|
||||||
Armor.HT_Pz_Kpfw_VI_Ausf__B_Tiger_II,
|
|
||||||
Armor.MT_M4_Sherman,
|
|
||||||
Armor.MT_M4A4_Sherman_Firefly,
|
|
||||||
Armor.StuG_IV,
|
|
||||||
Armor.CT_Centaur_IV,
|
|
||||||
Armor.CT_Cromwell_IV,
|
|
||||||
Armor.HIT_Churchill_VII,
|
|
||||||
Armor.LT_Mk_VII_Tetrarch,
|
|
||||||
|
|
||||||
# Mods
|
|
||||||
frenchpack.DIM__TOYOTA_BLUE,
|
|
||||||
frenchpack.DIM__TOYOTA_GREEN,
|
|
||||||
frenchpack.DIM__TOYOTA_DESERT,
|
|
||||||
frenchpack.DIM__KAMIKAZE,
|
|
||||||
|
|
||||||
frenchpack.AMX_10RCR,
|
|
||||||
frenchpack.AMX_10RCR_SEPAR,
|
|
||||||
frenchpack.AMX_30B2,
|
|
||||||
frenchpack.Leclerc_Serie_XXI,
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
TYPE_ATGM = [
|
|
||||||
Armor.ATGM_M1045_HMMWV_TOW,
|
|
||||||
Armor.ATGM_M1134_Stryker,
|
|
||||||
Armor.IFV_BMP_2,
|
|
||||||
|
|
||||||
# WW2 (Tank Destroyers)
|
|
||||||
Armor.M30_Cargo_Carrier,
|
|
||||||
Armor.TD_Jagdpanzer_IV,
|
|
||||||
Armor.TD_Jagdpanther_G1,
|
|
||||||
Armor.TD_M10_GMC,
|
|
||||||
|
|
||||||
# Mods
|
|
||||||
frenchpack.VBAE_CRAB_MMP,
|
|
||||||
frenchpack.VAB_MEPHISTO,
|
|
||||||
frenchpack.TRM_2000_PAMELA,
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
TYPE_IFV = [
|
|
||||||
Armor.IFV_BMP_3,
|
|
||||||
Armor.IFV_BMP_2,
|
|
||||||
Armor.IFV_BMP_1,
|
|
||||||
Armor.IFV_Marder,
|
|
||||||
Armor.IFV_MCV_80,
|
|
||||||
Armor.IFV_LAV_25,
|
|
||||||
Armor.AC_Sd_Kfz_234_2_Puma,
|
|
||||||
Armor.IFV_M2A2_Bradley,
|
|
||||||
Armor.IFV_BMD_1,
|
|
||||||
Armor.ZBD_04A,
|
|
||||||
|
|
||||||
# WW2
|
|
||||||
Armor.AC_Sd_Kfz_234_2_Puma,
|
|
||||||
Armor.LAC_M8_Greyhound,
|
|
||||||
Armor.Daimler_Armoured_Car,
|
|
||||||
|
|
||||||
# Mods
|
|
||||||
frenchpack.ERC_90,
|
|
||||||
frenchpack.VBAE_CRAB,
|
|
||||||
frenchpack.VAB_T20_13
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
TYPE_APC = [
|
|
||||||
Armor.APC_M1043_HMMWV_Armament,
|
|
||||||
Armor.APC_M1126_Stryker_ICV,
|
|
||||||
Armor.APC_M113,
|
|
||||||
Armor.APC_BTR_80,
|
|
||||||
Armor.APC_BTR_82A,
|
|
||||||
Armor.APC_MTLB,
|
|
||||||
Armor.APC_M2A1,
|
|
||||||
Armor.APC_Cobra,
|
|
||||||
Armor.APC_Sd_Kfz_251,
|
|
||||||
Armor.APC_AAV_7,
|
|
||||||
Armor.TPz_Fuchs,
|
|
||||||
Armor.ARV_BRDM_2,
|
|
||||||
Armor.ARV_BTR_RD,
|
|
||||||
Armor.FDDM_Grad,
|
|
||||||
|
|
||||||
# WW2
|
|
||||||
Armor.APC_M2A1,
|
|
||||||
Armor.APC_Sd_Kfz_251,
|
|
||||||
|
|
||||||
# Mods
|
|
||||||
frenchpack.VAB__50,
|
|
||||||
frenchpack.VBL__50,
|
|
||||||
frenchpack.VBL_AANF1,
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
TYPE_ARTILLERY = [
|
|
||||||
Artillery.MLRS_9A52_Smerch,
|
|
||||||
Artillery.SPH_2S1_Gvozdika,
|
|
||||||
Artillery.SPH_2S3_Akatsia,
|
|
||||||
Artillery.MLRS_BM_21_Grad,
|
|
||||||
Artillery.MLRS_9K57_Uragan_BM_27,
|
|
||||||
Artillery.SPH_M109_Paladin,
|
|
||||||
Artillery.MLRS_M270,
|
|
||||||
Artillery.SPH_2S9_Nona,
|
|
||||||
Artillery.SpGH_Dana,
|
|
||||||
Artillery.SPH_2S19_Msta,
|
|
||||||
Artillery.MLRS_FDDM,
|
|
||||||
|
|
||||||
# WW2
|
|
||||||
Artillery.Sturmpanzer_IV_Brummbär,
|
|
||||||
Artillery.M12_GMC
|
|
||||||
]
|
|
||||||
|
|
||||||
TYPE_LOGI = [
|
|
||||||
Unarmed.Transport_M818,
|
|
||||||
Unarmed.Transport_KAMAZ_43101,
|
|
||||||
Unarmed.Transport_Ural_375,
|
|
||||||
Unarmed.Transport_GAZ_66,
|
|
||||||
Unarmed.Transport_GAZ_3307,
|
|
||||||
Unarmed.Transport_GAZ_3308,
|
|
||||||
Unarmed.Transport_Ural_4320_31_Armored,
|
|
||||||
Unarmed.Transport_Ural_4320T,
|
|
||||||
Unarmed.Blitz_3_6_6700A,
|
|
||||||
Unarmed.Kübelwagen_82,
|
|
||||||
Unarmed.Sd_Kfz_7,
|
|
||||||
Unarmed.Sd_Kfz_2,
|
|
||||||
Unarmed.Willys_MB,
|
|
||||||
Unarmed.Land_Rover_109_S3,
|
|
||||||
Unarmed.Land_Rover_101_FC,
|
|
||||||
|
|
||||||
# Mods
|
|
||||||
frenchpack.VBL,
|
|
||||||
frenchpack.VAB,
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
TYPE_INFANTRY = [
|
|
||||||
Infantry.Infantry_Soldier_Insurgents,
|
|
||||||
Infantry.Soldier_AK,
|
|
||||||
Infantry.Infantry_M1_Garand,
|
|
||||||
Infantry.Infantry_Mauser_98,
|
|
||||||
Infantry.Infantry_SMLE_No_4_Mk_1,
|
|
||||||
Infantry.Georgian_soldier_with_M4,
|
|
||||||
Infantry.Infantry_Soldier_Rus,
|
|
||||||
Infantry.Paratrooper_AKS,
|
|
||||||
Infantry.Paratrooper_RPG_16,
|
|
||||||
Infantry.Soldier_M249,
|
|
||||||
Infantry.Infantry_M4,
|
|
||||||
Infantry.Soldier_RPG,
|
|
||||||
]
|
|
||||||
|
|
||||||
MAX_COMBAT_GROUP_PER_CP = 10
|
MAX_COMBAT_GROUP_PER_CP = 10
|
||||||
|
|
||||||
|
|
||||||
class CombatGroupRole(Enum):
|
class CombatGroupRole(Enum):
|
||||||
TANK = 1
|
TANK = 1
|
||||||
APC = 2
|
APC = 2
|
||||||
@ -224,6 +58,7 @@ class CombatGroup:
|
|||||||
s += "UNITS " + self.units[0].name + " * " + str(len(self.units))
|
s += "UNITS " + self.units[0].name + " * " + str(len(self.units))
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
||||||
class GroundPlanner:
|
class GroundPlanner:
|
||||||
|
|
||||||
def __init__(self, cp:ControlPoint, game):
|
def __init__(self, cp:ControlPoint, game):
|
||||||
@ -243,7 +78,6 @@ class GroundPlanner:
|
|||||||
self.units_per_cp[cp.id] = []
|
self.units_per_cp[cp.id] = []
|
||||||
self.reserve: List[CombatGroup] = []
|
self.reserve: List[CombatGroup] = []
|
||||||
|
|
||||||
|
|
||||||
def plan_groundwar(self):
|
def plan_groundwar(self):
|
||||||
|
|
||||||
if hasattr(self.cp, 'stance'):
|
if hasattr(self.cp, 'stance'):
|
||||||
@ -275,6 +109,9 @@ class GroundPlanner:
|
|||||||
elif key in TYPE_ATGM:
|
elif key in TYPE_ATGM:
|
||||||
collection = self.atgm_group
|
collection = self.atgm_group
|
||||||
role = CombatGroupRole.ATGM
|
role = CombatGroupRole.ATGM
|
||||||
|
elif key in TYPE_SHORAD:
|
||||||
|
collection = self.shorad_groups
|
||||||
|
role = CombatGroupRole.SHORAD
|
||||||
else:
|
else:
|
||||||
print("Warning unit type not handled by ground generator")
|
print("Warning unit type not handled by ground generator")
|
||||||
print(key)
|
print(key)
|
||||||
@ -282,12 +119,16 @@ class GroundPlanner:
|
|||||||
|
|
||||||
available = self.cp.base.armor[key]
|
available = self.cp.base.armor[key]
|
||||||
while available > 0:
|
while available > 0:
|
||||||
n = random.choice(group_size_choice)
|
|
||||||
if n > available:
|
if role == CombatGroupRole.SHORAD:
|
||||||
if available >= 2:
|
n = 1
|
||||||
n = 2
|
else:
|
||||||
else:
|
n = random.choice(group_size_choice)
|
||||||
n = 1
|
if n > available:
|
||||||
|
if available >= 2:
|
||||||
|
n = 2
|
||||||
|
else:
|
||||||
|
n = 1
|
||||||
available -= n
|
available -= n
|
||||||
|
|
||||||
group = CombatGroup(role)
|
group = CombatGroup(role)
|
||||||
|
|||||||
197
gen/ground_forces/ai_ground_planner_db.py
Normal file
197
gen/ground_forces/ai_ground_planner_db.py
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
from dcs.vehicles import AirDefence, Infantry, Unarmed, Artillery, Armor
|
||||||
|
|
||||||
|
from pydcs_extensions.frenchpack import frenchpack
|
||||||
|
|
||||||
|
TYPE_TANKS = [
|
||||||
|
Armor.MBT_T_55,
|
||||||
|
Armor.MBT_T_72B,
|
||||||
|
Armor.MBT_T_72B3,
|
||||||
|
Armor.MBT_T_80U,
|
||||||
|
Armor.MBT_T_90,
|
||||||
|
Armor.MBT_Leopard_2,
|
||||||
|
Armor.MBT_Leopard_1A3,
|
||||||
|
Armor.MBT_Leclerc,
|
||||||
|
Armor.MBT_Challenger_II,
|
||||||
|
Armor.MBT_M1A2_Abrams,
|
||||||
|
Armor.MBT_M60A3_Patton,
|
||||||
|
Armor.MBT_Merkava_Mk__4,
|
||||||
|
Armor.ZTZ_96B,
|
||||||
|
|
||||||
|
# WW2
|
||||||
|
Armor.MT_Pz_Kpfw_V_Panther_Ausf_G,
|
||||||
|
Armor.MT_Pz_Kpfw_IV_Ausf_H,
|
||||||
|
Armor.HT_Pz_Kpfw_VI_Tiger_I,
|
||||||
|
Armor.HT_Pz_Kpfw_VI_Ausf__B_Tiger_II,
|
||||||
|
Armor.MT_M4_Sherman,
|
||||||
|
Armor.MT_M4A4_Sherman_Firefly,
|
||||||
|
Armor.StuG_IV,
|
||||||
|
Armor.CT_Centaur_IV,
|
||||||
|
Armor.CT_Cromwell_IV,
|
||||||
|
Armor.HIT_Churchill_VII,
|
||||||
|
Armor.LT_Mk_VII_Tetrarch,
|
||||||
|
|
||||||
|
# Mods
|
||||||
|
frenchpack.DIM__TOYOTA_BLUE,
|
||||||
|
frenchpack.DIM__TOYOTA_GREEN,
|
||||||
|
frenchpack.DIM__TOYOTA_DESERT,
|
||||||
|
frenchpack.DIM__KAMIKAZE,
|
||||||
|
|
||||||
|
frenchpack.AMX_10RCR,
|
||||||
|
frenchpack.AMX_10RCR_SEPAR,
|
||||||
|
frenchpack.AMX_30B2,
|
||||||
|
frenchpack.Leclerc_Serie_XXI,
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
TYPE_ATGM = [
|
||||||
|
Armor.ATGM_M1045_HMMWV_TOW,
|
||||||
|
Armor.ATGM_M1134_Stryker,
|
||||||
|
Armor.IFV_BMP_2,
|
||||||
|
|
||||||
|
# WW2 (Tank Destroyers)
|
||||||
|
Armor.M30_Cargo_Carrier,
|
||||||
|
Armor.TD_Jagdpanzer_IV,
|
||||||
|
Armor.TD_Jagdpanther_G1,
|
||||||
|
Armor.TD_M10_GMC,
|
||||||
|
|
||||||
|
# Mods
|
||||||
|
frenchpack.VBAE_CRAB_MMP,
|
||||||
|
frenchpack.VAB_MEPHISTO,
|
||||||
|
frenchpack.TRM_2000_PAMELA,
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
TYPE_IFV = [
|
||||||
|
Armor.IFV_BMP_3,
|
||||||
|
Armor.IFV_BMP_2,
|
||||||
|
Armor.IFV_BMP_1,
|
||||||
|
Armor.IFV_Marder,
|
||||||
|
Armor.IFV_MCV_80,
|
||||||
|
Armor.IFV_LAV_25,
|
||||||
|
Armor.SPG_M1128_Stryker_MGS,
|
||||||
|
Armor.AC_Sd_Kfz_234_2_Puma,
|
||||||
|
Armor.IFV_M2A2_Bradley,
|
||||||
|
Armor.IFV_BMD_1,
|
||||||
|
Armor.ZBD_04A,
|
||||||
|
|
||||||
|
# WW2
|
||||||
|
Armor.AC_Sd_Kfz_234_2_Puma,
|
||||||
|
Armor.LAC_M8_Greyhound,
|
||||||
|
Armor.Daimler_Armoured_Car,
|
||||||
|
|
||||||
|
# Mods
|
||||||
|
frenchpack.ERC_90,
|
||||||
|
frenchpack.VBAE_CRAB,
|
||||||
|
frenchpack.VAB_T20_13
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
TYPE_APC = [
|
||||||
|
Armor.APC_M1043_HMMWV_Armament,
|
||||||
|
Armor.APC_M1126_Stryker_ICV,
|
||||||
|
Armor.APC_M113,
|
||||||
|
Armor.APC_BTR_80,
|
||||||
|
Armor.APC_BTR_82A,
|
||||||
|
Armor.APC_MTLB,
|
||||||
|
Armor.APC_M2A1,
|
||||||
|
Armor.APC_Cobra,
|
||||||
|
Armor.APC_Sd_Kfz_251,
|
||||||
|
Armor.APC_AAV_7,
|
||||||
|
Armor.TPz_Fuchs,
|
||||||
|
Armor.ARV_BRDM_2,
|
||||||
|
Armor.ARV_BTR_RD,
|
||||||
|
Armor.FDDM_Grad,
|
||||||
|
|
||||||
|
# WW2
|
||||||
|
Armor.APC_M2A1,
|
||||||
|
Armor.APC_Sd_Kfz_251,
|
||||||
|
|
||||||
|
# Mods
|
||||||
|
frenchpack.VAB__50,
|
||||||
|
frenchpack.VBL__50,
|
||||||
|
frenchpack.VBL_AANF1,
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
TYPE_ARTILLERY = [
|
||||||
|
Artillery.MLRS_9A52_Smerch,
|
||||||
|
Artillery.SPH_2S1_Gvozdika,
|
||||||
|
Artillery.SPH_2S3_Akatsia,
|
||||||
|
Artillery.MLRS_BM_21_Grad,
|
||||||
|
Artillery.MLRS_9K57_Uragan_BM_27,
|
||||||
|
Artillery.SPH_M109_Paladin,
|
||||||
|
Artillery.MLRS_M270,
|
||||||
|
Artillery.SPH_2S9_Nona,
|
||||||
|
Artillery.SpGH_Dana,
|
||||||
|
Artillery.SPH_2S19_Msta,
|
||||||
|
Artillery.MLRS_FDDM,
|
||||||
|
|
||||||
|
# WW2
|
||||||
|
Artillery.Sturmpanzer_IV_Brummbär,
|
||||||
|
Artillery.M12_GMC
|
||||||
|
]
|
||||||
|
|
||||||
|
TYPE_LOGI = [
|
||||||
|
Unarmed.Transport_M818,
|
||||||
|
Unarmed.Transport_KAMAZ_43101,
|
||||||
|
Unarmed.Transport_Ural_375,
|
||||||
|
Unarmed.Transport_GAZ_66,
|
||||||
|
Unarmed.Transport_GAZ_3307,
|
||||||
|
Unarmed.Transport_GAZ_3308,
|
||||||
|
Unarmed.Transport_Ural_4320_31_Armored,
|
||||||
|
Unarmed.Transport_Ural_4320T,
|
||||||
|
Unarmed.Blitz_3_6_6700A,
|
||||||
|
Unarmed.Kübelwagen_82,
|
||||||
|
Unarmed.Sd_Kfz_7,
|
||||||
|
Unarmed.Sd_Kfz_2,
|
||||||
|
Unarmed.Willys_MB,
|
||||||
|
Unarmed.Land_Rover_109_S3,
|
||||||
|
Unarmed.Land_Rover_101_FC,
|
||||||
|
|
||||||
|
# Mods
|
||||||
|
frenchpack.VBL,
|
||||||
|
frenchpack.VAB,
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
TYPE_INFANTRY = [
|
||||||
|
Infantry.Infantry_Soldier_Insurgents,
|
||||||
|
Infantry.Soldier_AK,
|
||||||
|
Infantry.Infantry_M1_Garand,
|
||||||
|
Infantry.Infantry_Mauser_98,
|
||||||
|
Infantry.Infantry_SMLE_No_4_Mk_1,
|
||||||
|
Infantry.Georgian_soldier_with_M4,
|
||||||
|
Infantry.Infantry_Soldier_Rus,
|
||||||
|
Infantry.Paratrooper_AKS,
|
||||||
|
Infantry.Paratrooper_RPG_16,
|
||||||
|
Infantry.Soldier_M249,
|
||||||
|
Infantry.Infantry_M4,
|
||||||
|
Infantry.Soldier_RPG,
|
||||||
|
]
|
||||||
|
|
||||||
|
TYPE_SHORAD = [
|
||||||
|
AirDefence.AAA_ZU_23_on_Ural_375,
|
||||||
|
AirDefence.AAA_ZU_23_Insurgent_on_Ural_375,
|
||||||
|
AirDefence.AAA_ZSU_57_2,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka,
|
||||||
|
AirDefence.SAM_SA_8_Osa_9A33,
|
||||||
|
AirDefence.SAM_SA_9_Strela_1_9P31,
|
||||||
|
AirDefence.SAM_SA_13_Strela_10M3_9A35M3,
|
||||||
|
AirDefence.SAM_SA_15_Tor_9A331,
|
||||||
|
AirDefence.SAM_SA_19_Tunguska_2S6,
|
||||||
|
|
||||||
|
AirDefence.SPAAA_Gepard,
|
||||||
|
AirDefence.AAA_Vulcan_M163,
|
||||||
|
AirDefence.SAM_Linebacker_M6,
|
||||||
|
AirDefence.SAM_Chaparral_M48,
|
||||||
|
AirDefence.SAM_Avenger_M1097,
|
||||||
|
AirDefence.SAM_Roland_ADS,
|
||||||
|
AirDefence.HQ_7_Self_Propelled_LN,
|
||||||
|
|
||||||
|
AirDefence.AAA_8_8cm_Flak_18,
|
||||||
|
AirDefence.AAA_8_8cm_Flak_41,
|
||||||
|
AirDefence.AAA_Bofors_40mm,
|
||||||
|
AirDefence.AAA_M1_37mm,
|
||||||
|
AirDefence.AA_gun_QF_3_7,
|
||||||
|
|
||||||
|
]
|
||||||
2
pydcs
2
pydcs
@ -1 +1 @@
|
|||||||
Subproject commit edc87fab1d65d4e4153c84006f537e6ae6b0671a
|
Subproject commit 059c88c91b5be4b5b6406249a52527c3ccea3db9
|
||||||
@ -47,7 +47,7 @@ class QMapObject(QGraphicsRectItem):
|
|||||||
object_details_action.triggered.connect(self.on_click)
|
object_details_action.triggered.connect(self.on_click)
|
||||||
menu.addAction(object_details_action)
|
menu.addAction(object_details_action)
|
||||||
|
|
||||||
# Not all locations have valid objetives. Off-map spawns, for example,
|
# Not all locations have valid objectives. Off-map spawns, for example,
|
||||||
# have no mission types.
|
# have no mission types.
|
||||||
if list(self.mission_target.mission_types(for_player=True)):
|
if list(self.mission_target.mission_types(for_player=True)):
|
||||||
new_package_action = QAction(f"New package")
|
new_package_action = QAction(f"New package")
|
||||||
|
|||||||
7
resources/campaigns/golan_heights.json
Normal file
7
resources/campaigns/golan_heights.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "Syria - Battle for Golan Heights",
|
||||||
|
"theater": "Syria",
|
||||||
|
"authors": "Khopa",
|
||||||
|
"description": "<p>In this scenario, you start in Israel and the conflict is focused around the golan heights, an historically disputed territory.<br/><br/>You can use the inverted configuration to start on the Syrian side.<br/><br/>If this scenario is too heavy, try the lite version.</p>",
|
||||||
|
"miz": "golan_heights.miz"
|
||||||
|
}
|
||||||
BIN
resources/campaigns/golan_heights.miz
Normal file
BIN
resources/campaigns/golan_heights.miz
Normal file
Binary file not shown.
@ -1,83 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Syria - Golan heights battle",
|
|
||||||
"theater": "Syria",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"description": "<p>In this scenario, you start in Israel and the conflict is focused around the golan heights, an historically disputed territory.</p>",
|
|
||||||
"player_points": [
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Ramat David",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "carrier",
|
|
||||||
"id": 1001,
|
|
||||||
"x": -280000,
|
|
||||||
"y": -238000,
|
|
||||||
"captured_invert": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "lha",
|
|
||||||
"id": 1002,
|
|
||||||
"x": -237000,
|
|
||||||
"y": -89800,
|
|
||||||
"captured_invert": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"enemy_points": [
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Khalkhalah",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "King Hussein Air College",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Marj Ruhayyil",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Mezzeh",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Al-Dumayr",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2,
|
|
||||||
"captured_invert": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"links": [
|
|
||||||
[
|
|
||||||
"Khalkhalah",
|
|
||||||
"Ramat David"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Khalkhalah",
|
|
||||||
"King Hussein Air College"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Khalkhalah",
|
|
||||||
"Marj Ruhayyil"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Marj Ruhayyil",
|
|
||||||
"Mezzeh"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al-Dumayr",
|
|
||||||
"Marj Ruhayyil"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Syria - Golan heights lite",
|
"name": "Syria - Battle for Golan Heights - Lite",
|
||||||
"theater": "Syria",
|
"theater": "Syria",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "<p>In this scenario, you start in Israel and the conflict is focused around the golan heights, an historically disputed territory. This scenario is designed to be performance friendly.</p>",
|
"description": "<p>In this scenario, you start in Israel and the conflict is focused around the golan heights, an historically disputed territory.<br/><br/>This scenario is designed to be performance friendly.</p>",
|
||||||
"miz": "golan_heights_lite.miz"
|
"miz": "golan_heights_lite.miz"
|
||||||
}
|
}
|
||||||
Binary file not shown.
@ -2,92 +2,6 @@
|
|||||||
"name": "Syria - Syrian Civil War",
|
"name": "Syria - Syrian Civil War",
|
||||||
"theater": "Syria",
|
"theater": "Syria",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "<p>This scenario can be used to simulate parts of the Syrian Civil War.</p>",
|
"description": "<p>This scenario can be used to simulate parts of the Syrian Civil War.<br/><br/>You start on the coast with an airbase in Latakia, and ground forces in Tartus.<br/><br/>This scenario can also be used to simulate a western invasion of Syria.<br/><br/>In inverted configuration you start in Aleppo.</p>",
|
||||||
"player_points": [
|
"miz": "syrian_civil_war.miz"
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Bassel Al-Assad",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Marj Ruhayyil",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "carrier",
|
|
||||||
"id": 1001,
|
|
||||||
"x": 18537,
|
|
||||||
"y": -52000,
|
|
||||||
"captured_invert": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "lha",
|
|
||||||
"id": 1002,
|
|
||||||
"x": 116000,
|
|
||||||
"y": -30000,
|
|
||||||
"captured_invert": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"enemy_points": [
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Hama",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Aleppo",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2,
|
|
||||||
"captured_invert": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Al Qusayr",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Palmyra",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Al-Dumayr",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"links": [
|
|
||||||
[
|
|
||||||
"Bassel Al-Assad",
|
|
||||||
"Hama"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al-Dumayr",
|
|
||||||
"Marj Ruhayyil"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Aleppo",
|
|
||||||
"Hama"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al Qusayr",
|
|
||||||
"Hama"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al Qusayr",
|
|
||||||
"Al-Dumayr"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Al Qusayr",
|
|
||||||
"Palmyra"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
BIN
resources/campaigns/syrian_civil_war.miz
Normal file
BIN
resources/campaigns/syrian_civil_war.miz
Normal file
Binary file not shown.
@ -46,7 +46,8 @@
|
|||||||
"IFV_MCV_80",
|
"IFV_MCV_80",
|
||||||
"MBT_Challenger_II",
|
"MBT_Challenger_II",
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"SPG_M1128_Stryker_MGS"
|
"SPG_M1128_Stryker_MGS",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -25,7 +25,9 @@
|
|||||||
"LAC_M8_Greyhound",
|
"LAC_M8_Greyhound",
|
||||||
"TD_M10_GMC",
|
"TD_M10_GMC",
|
||||||
"Daimler_Armoured_Car",
|
"Daimler_Armoured_Car",
|
||||||
"LT_Mk_VII_Tetrarch"
|
"LT_Mk_VII_Tetrarch",
|
||||||
|
"AA_gun_QF_3_7",
|
||||||
|
"AAA_Bofors_40mm"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"M12_GMC"
|
"M12_GMC"
|
||||||
|
|||||||
@ -15,7 +15,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MT_M4_Sherman",
|
"MT_M4_Sherman",
|
||||||
"APC_M2A1"
|
"APC_M2A1",
|
||||||
|
"AAA_Bofors_40mm"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -25,7 +25,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Chaparral_M48"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -26,7 +26,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Chaparral_M48"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -27,7 +27,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Chaparral_M48"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -43,7 +43,9 @@
|
|||||||
"IFV_Marder",
|
"IFV_Marder",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW"
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"SAM_Linebacker_M6",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -20,7 +20,8 @@
|
|||||||
"MBT_Leopard_2",
|
"MBT_Leopard_2",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M113",
|
"APC_M113",
|
||||||
"IFV_MCV_80"
|
"IFV_MCV_80",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -22,7 +22,8 @@
|
|||||||
"ZTZ_96B",
|
"ZTZ_96B",
|
||||||
"MBT_T_55",
|
"MBT_T_55",
|
||||||
"ZBD_04A",
|
"ZBD_04A",
|
||||||
"IFV_BMP_1"
|
"IFV_BMP_1",
|
||||||
|
"HQ_7_Self_Propelled_LN"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_9A52_Smerch",
|
"MLRS_9A52_Smerch",
|
||||||
|
|||||||
@ -24,7 +24,8 @@
|
|||||||
"ATGM_M1134_Stryker",
|
"ATGM_M1134_Stryker",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW"
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"SAM_Roland_ADS"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -31,7 +31,8 @@
|
|||||||
"VBAE_CRAB",
|
"VBAE_CRAB",
|
||||||
"VBAE_CRAB_MMP",
|
"VBAE_CRAB_MMP",
|
||||||
"AMX_30B2",
|
"AMX_30B2",
|
||||||
"Leclerc_Serie_XXI"
|
"Leclerc_Serie_XXI",
|
||||||
|
"SAM_Roland_ADS"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -34,7 +34,8 @@
|
|||||||
"VBAE_CRAB",
|
"VBAE_CRAB",
|
||||||
"VBAE_CRAB_MMP",
|
"VBAE_CRAB_MMP",
|
||||||
"AMX_30B2",
|
"AMX_30B2",
|
||||||
"Leclerc_Serie_XXI"
|
"Leclerc_Serie_XXI",
|
||||||
|
"SAM_Roland_ADS"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -17,7 +17,8 @@
|
|||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"IFV_BMP_2",
|
"IFV_BMP_2",
|
||||||
"MBT_T_72B",
|
"MBT_T_72B",
|
||||||
"MBT_T_55"
|
"MBT_T_55",
|
||||||
|
"SAM_SA_13_Strela_10M3_9A35M3"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad",
|
"MLRS_BM_21_Grad",
|
||||||
|
|||||||
@ -13,7 +13,8 @@
|
|||||||
"MT_Pz_Kpfw_IV_Ausf_H",
|
"MT_Pz_Kpfw_IV_Ausf_H",
|
||||||
"APC_Sd_Kfz_251",
|
"APC_Sd_Kfz_251",
|
||||||
"AC_Sd_Kfz_234_2_Puma",
|
"AC_Sd_Kfz_234_2_Puma",
|
||||||
"TD_Jagdpanzer_IV"
|
"TD_Jagdpanzer_IV",
|
||||||
|
"AAA_8_8cm_Flak_18"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"Sturmpanzer_IV_Brummbär"
|
"Sturmpanzer_IV_Brummbär"
|
||||||
|
|||||||
@ -18,7 +18,9 @@
|
|||||||
"AC_Sd_Kfz_234_2_Puma",
|
"AC_Sd_Kfz_234_2_Puma",
|
||||||
"Sd_Kfz_184_Elefant",
|
"Sd_Kfz_184_Elefant",
|
||||||
"TD_Jagdpanther_G1",
|
"TD_Jagdpanther_G1",
|
||||||
"TD_Jagdpanzer_IV"
|
"TD_Jagdpanzer_IV",
|
||||||
|
"AAA_8_8cm_Flak_18",
|
||||||
|
"AAA_8_8cm_Flak_41"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"Sturmpanzer_IV_Brummbär"
|
"Sturmpanzer_IV_Brummbär"
|
||||||
|
|||||||
@ -10,7 +10,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MT_Pz_Kpfw_IV_Ausf_H",
|
"MT_Pz_Kpfw_IV_Ausf_H",
|
||||||
"APC_Sd_Kfz_251"
|
"APC_Sd_Kfz_251",
|
||||||
|
"AAA_8_8cm_Flak_18"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -22,7 +22,8 @@
|
|||||||
"TPz_Fuchs",
|
"TPz_Fuchs",
|
||||||
"MBT_Leopard_1A3",
|
"MBT_Leopard_1A3",
|
||||||
"MBT_Leopard_2",
|
"MBT_Leopard_2",
|
||||||
"IFV_Marder"
|
"IFV_Marder",
|
||||||
|
"SPAAA_Gepard"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -22,7 +22,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_T_90",
|
"MBT_T_90",
|
||||||
"MBT_T_72B",
|
"MBT_T_72B",
|
||||||
"IFV_BMP_2"
|
"IFV_BMP_2",
|
||||||
|
"SAM_SA_19_Tunguska_2S6"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_9K57_Uragan_BM_27",
|
"MLRS_9K57_Uragan_BM_27",
|
||||||
|
|||||||
39
resources/factions/insurgents_hard.json
Normal file
39
resources/factions/insurgents_hard.json
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"country": "Insurgents",
|
||||||
|
"name": "Insurgents",
|
||||||
|
"authors": "Khopa",
|
||||||
|
"description": "<p>Insurgents faction.</p>",
|
||||||
|
"aircrafts": [
|
||||||
|
],
|
||||||
|
"frontline_units": [
|
||||||
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"APC_M1043_HMMWV_Armament",
|
||||||
|
"ARV_BRDM_2",
|
||||||
|
"APC_BTR_80",
|
||||||
|
"ARV_BTR_RD",
|
||||||
|
"IFV_BMP_1",
|
||||||
|
"MBT_T_55",
|
||||||
|
"AAA_ZU_23_Insurgent_on_Ural_375",
|
||||||
|
"AAA_ZSU_57_2",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
|
],
|
||||||
|
"artillery_units": [
|
||||||
|
"MLRS_BM_21_Grad",
|
||||||
|
"SPH_2S19_Msta"
|
||||||
|
],
|
||||||
|
"logistics_units": [
|
||||||
|
"Transport_Ural_375",
|
||||||
|
"Transport_UAZ_469"
|
||||||
|
],
|
||||||
|
"infantry_units": [
|
||||||
|
"Infantry_Soldier_Insurgents",
|
||||||
|
"Soldier_RPG",
|
||||||
|
"SAM_SA_18_Igla_MANPADS"
|
||||||
|
],
|
||||||
|
"air_defenses": [
|
||||||
|
"SA9Generator",
|
||||||
|
"ZSU57Generator",
|
||||||
|
"ZU23Generator",
|
||||||
|
"ZU23UralInsurgentGenerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -27,7 +27,9 @@
|
|||||||
"APC_BTR_80",
|
"APC_BTR_80",
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"MBT_T_72B"
|
"MBT_T_72B",
|
||||||
|
"SPAAA_ZSU_23_4_Shilka",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad",
|
"MLRS_BM_21_Grad",
|
||||||
|
|||||||
@ -33,7 +33,8 @@
|
|||||||
"APC_BTR_80",
|
"APC_BTR_80",
|
||||||
"ARV_BRDM_2",
|
"ARV_BRDM_2",
|
||||||
"SPH_2S1_Gvozdika",
|
"SPH_2S1_Gvozdika",
|
||||||
"AAA_ZSU_57_2"
|
"AAA_ZSU_57_2",
|
||||||
|
"SPAAA_ZSU_23_4_Shilka"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -15,7 +15,8 @@
|
|||||||
"MT_M4A4_Sherman_Firefly",
|
"MT_M4A4_Sherman_Firefly",
|
||||||
"APC_M2A1",
|
"APC_M2A1",
|
||||||
"MT_M4_Sherman",
|
"MT_M4_Sherman",
|
||||||
"LAC_M8_Greyhound"
|
"LAC_M8_Greyhound",
|
||||||
|
"AAA_Bofors_40mm"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -19,7 +19,8 @@
|
|||||||
"MT_M4_Sherman",
|
"MT_M4_Sherman",
|
||||||
"APC_M2A1",
|
"APC_M2A1",
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Chaparral_M48"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -22,7 +22,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"APC_M113",
|
"APC_M113",
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"MBT_Merkava_Mk__4"
|
"MBT_Merkava_Mk__4",
|
||||||
|
"AAA_Vulcan_M163"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -23,7 +23,8 @@
|
|||||||
"APC_M113",
|
"APC_M113",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW",
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
"MBT_Merkava_Mk__4"
|
"MBT_Merkava_Mk__4",
|
||||||
|
"AAA_Vulcan_M163"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin",
|
"SPH_M109_Paladin",
|
||||||
|
|||||||
@ -18,7 +18,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_Leopard_1A3",
|
"MBT_Leopard_1A3",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -19,7 +19,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_Leopard_1A3",
|
"MBT_Leopard_1A3",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -23,7 +23,8 @@
|
|||||||
"IFV_Marder",
|
"IFV_Marder",
|
||||||
"TPz_Fuchs",
|
"TPz_Fuchs",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament"
|
"APC_M1043_HMMWV_Armament",
|
||||||
|
"SPAAA_Gepard"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin",
|
"SPH_M109_Paladin",
|
||||||
|
|||||||
@ -20,7 +20,9 @@
|
|||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"ARV_BRDM_2",
|
"ARV_BRDM_2",
|
||||||
"MBT_T_72B",
|
"MBT_T_72B",
|
||||||
"MBT_T_55"
|
"MBT_T_55",
|
||||||
|
"SPAAA_ZSU_23_4_Shilka",
|
||||||
|
"SAM_SA_8_Osa_9A33"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -17,7 +17,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"APC_M113",
|
"APC_M113",
|
||||||
"MBT_Leopard_1A3"
|
"MBT_Leopard_1A3",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -24,7 +24,9 @@
|
|||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"MBT_T_55",
|
"MBT_T_55",
|
||||||
"MBT_T_72B",
|
"MBT_T_72B",
|
||||||
"MBT_T_80U"
|
"MBT_T_80U",
|
||||||
|
"AAA_ZSU_57_2",
|
||||||
|
"SAM_SA_9_Strela_1_9P31"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad",
|
"MLRS_BM_21_Grad",
|
||||||
|
|||||||
@ -23,7 +23,8 @@
|
|||||||
"MBT_T_55",
|
"MBT_T_55",
|
||||||
"ZBD_04A",
|
"ZBD_04A",
|
||||||
"APC_BTR_80",
|
"APC_BTR_80",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"HQ_7_Self_Propelled_LN"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_9A52_Smerch",
|
"MLRS_9A52_Smerch",
|
||||||
|
|||||||
@ -13,7 +13,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"APC_Cobra",
|
"APC_Cobra",
|
||||||
"APC_BTR_80",
|
"APC_BTR_80",
|
||||||
"ARV_BRDM_2"
|
"ARV_BRDM_2",
|
||||||
|
"SAM_SA_13_Strela_10M3_9A35M3"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_2S19_Msta"
|
"SPH_2S19_Msta"
|
||||||
|
|||||||
@ -11,7 +11,9 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"IFV_MCV_80"
|
"IFV_MCV_80",
|
||||||
|
"IFV_LAV_25",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -12,7 +12,9 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"IFV_MCV_80"
|
"IFV_MCV_80",
|
||||||
|
"IFV_LAV_25",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -17,7 +17,8 @@
|
|||||||
"FDDM_Grad",
|
"FDDM_Grad",
|
||||||
"APC_MTLB",
|
"APC_MTLB",
|
||||||
"MBT_T_55",
|
"MBT_T_55",
|
||||||
"AAA_ZU_23_on_Ural_375"
|
"AAA_ZU_23_on_Ural_375",
|
||||||
|
"AAA_8_8cm_Flak_18"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -21,7 +21,9 @@
|
|||||||
"ARV_BTR_RD",
|
"ARV_BTR_RD",
|
||||||
"IFV_BMD_1",
|
"IFV_BMD_1",
|
||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"MBT_T_55"
|
"MBT_T_55",
|
||||||
|
"AAA_ZU_23_on_Ural_375",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -14,7 +14,8 @@
|
|||||||
"APC_BTR_80",
|
"APC_BTR_80",
|
||||||
"IFV_BMD_1",
|
"IFV_BMD_1",
|
||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"MBT_T_55"
|
"MBT_T_55",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad",
|
"MLRS_BM_21_Grad",
|
||||||
|
|||||||
@ -25,7 +25,8 @@
|
|||||||
"APC_BTR_80",
|
"APC_BTR_80",
|
||||||
"IFV_BMD_1",
|
"IFV_BMD_1",
|
||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"MBT_T_55"
|
"MBT_T_55",
|
||||||
|
"SAM_SA_8_Osa_9A33"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad",
|
"MLRS_BM_21_Grad",
|
||||||
|
|||||||
@ -29,7 +29,8 @@
|
|||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"IFV_BMP_2",
|
"IFV_BMP_2",
|
||||||
"MBT_T_72B",
|
"MBT_T_72B",
|
||||||
"MBT_T_80U"
|
"MBT_T_80U",
|
||||||
|
"SAM_SA_13_Strela_10M3_9A35M3"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_9K57_Uragan_BM_27",
|
"MLRS_9K57_Uragan_BM_27",
|
||||||
|
|||||||
@ -34,7 +34,8 @@
|
|||||||
"APC_BTR_82A",
|
"APC_BTR_82A",
|
||||||
"MBT_T_90",
|
"MBT_T_90",
|
||||||
"MBT_T_80U",
|
"MBT_T_80U",
|
||||||
"MBT_T_72B3"
|
"MBT_T_72B3",
|
||||||
|
"SAM_SA_19_Tunguska_2S6"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_9K57_Uragan_BM_27",
|
"MLRS_9K57_Uragan_BM_27",
|
||||||
|
|||||||
@ -32,7 +32,8 @@
|
|||||||
"IFV_BMP_3",
|
"IFV_BMP_3",
|
||||||
"MBT_T_90",
|
"MBT_T_90",
|
||||||
"MBT_T_80U",
|
"MBT_T_80U",
|
||||||
"MBT_T_72B"
|
"MBT_T_72B",
|
||||||
|
"SAM_SA_19_Tunguska_2S6"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_9K57_Uragan_BM_27",
|
"MLRS_9K57_Uragan_BM_27",
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
"MT_M4_Sherman",
|
"MT_M4_Sherman",
|
||||||
"APC_M2A1",
|
"APC_M2A1",
|
||||||
"Daimler_Armoured_Car",
|
"Daimler_Armoured_Car",
|
||||||
"LT_Mk_VII_Tetrarch"
|
"LT_Mk_VII_Tetrarch",
|
||||||
|
"AAA_Bofors_40mm"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -20,7 +20,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"MBT_Leopard_2",
|
"MBT_Leopard_2",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -18,7 +18,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"IFV_MCV_80",
|
"IFV_MCV_80",
|
||||||
"MBT_Leopard_2",
|
"MBT_Leopard_2",
|
||||||
"APC_M1126_Stryker_ICV"
|
"APC_M1126_Stryker_ICV",
|
||||||
|
"SAM_Chaparral_M48"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
@ -32,7 +33,6 @@
|
|||||||
"air_defenses": [
|
"air_defenses": [
|
||||||
"ChaparralGenerator",
|
"ChaparralGenerator",
|
||||||
"EarlyColdWarFlakGenerator",
|
"EarlyColdWarFlakGenerator",
|
||||||
"AvengerGenerator",
|
|
||||||
"HawkGenerator",
|
"HawkGenerator",
|
||||||
"VulcanGenerator"
|
"VulcanGenerator"
|
||||||
],
|
],
|
||||||
|
|||||||
@ -17,7 +17,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"IFV_MCV_80",
|
"IFV_MCV_80",
|
||||||
"MBT_Leopard_2",
|
"MBT_Leopard_2",
|
||||||
"APC_M1126_Stryker_ICV"
|
"APC_M1126_Stryker_ICV",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
"AC_Sd_Kfz_234_2_Puma",
|
"AC_Sd_Kfz_234_2_Puma",
|
||||||
"APC_Sd_Kfz_251",
|
"APC_Sd_Kfz_251",
|
||||||
"MT_Pz_Kpfw_IV_Ausf_H",
|
"MT_Pz_Kpfw_IV_Ausf_H",
|
||||||
"MT_M4_Sherman"
|
"MT_M4_Sherman",
|
||||||
|
"AAA_Bofors_40mm"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -19,7 +19,9 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"ARV_BRDM_2",
|
"ARV_BRDM_2",
|
||||||
"MT_Pz_Kpfw_IV_Ausf_H",
|
"MT_Pz_Kpfw_IV_Ausf_H",
|
||||||
"MBT_T_55"
|
"MBT_T_55",
|
||||||
|
"AAA_ZU_23_on_Ural_375",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -22,7 +22,8 @@
|
|||||||
"MBT_T_55",
|
"MBT_T_55",
|
||||||
"MT_Pz_Kpfw_IV_Ausf_H",
|
"MT_Pz_Kpfw_IV_Ausf_H",
|
||||||
"StuG_III_Ausf__G",
|
"StuG_III_Ausf__G",
|
||||||
"TD_Jagdpanzer_IV"
|
"TD_Jagdpanzer_IV",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -19,7 +19,9 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"APC_MTLB",
|
"APC_MTLB",
|
||||||
"MBT_T_55"
|
"MBT_T_55",
|
||||||
|
"AAA_ZU_23_on_Ural_375",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -21,7 +21,9 @@
|
|||||||
"IFV_BMP_1",
|
"IFV_BMP_1",
|
||||||
"APC_MTLB",
|
"APC_MTLB",
|
||||||
"MBT_T_55",
|
"MBT_T_55",
|
||||||
"MBT_T_72B"
|
"MBT_T_72B",
|
||||||
|
"AAA_ZU_23_on_Ural_375",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_BM_21_Grad"
|
"MLRS_BM_21_Grad"
|
||||||
|
|||||||
@ -31,7 +31,8 @@
|
|||||||
"APC_Cobra",
|
"APC_Cobra",
|
||||||
"MBT_T_55",
|
"MBT_T_55",
|
||||||
"MBT_T_72B",
|
"MBT_T_72B",
|
||||||
"MBT_T_90"
|
"MBT_T_90",
|
||||||
|
"AAA_ZSU_57_2"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_9K57_Uragan_BM_27",
|
"MLRS_9K57_Uragan_BM_27",
|
||||||
|
|||||||
@ -21,7 +21,8 @@
|
|||||||
"MBT_Leopard_1A3",
|
"MBT_Leopard_1A3",
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_Cobra",
|
"APC_Cobra",
|
||||||
"APC_BTR_80"
|
"APC_BTR_80",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -22,7 +22,8 @@
|
|||||||
"CT_Centaur_IV",
|
"CT_Centaur_IV",
|
||||||
"HIT_Churchill_VII",
|
"HIT_Churchill_VII",
|
||||||
"Daimler_Armoured_Car",
|
"Daimler_Armoured_Car",
|
||||||
"LT_Mk_VII_Tetrarch"
|
"LT_Mk_VII_Tetrarch",
|
||||||
|
"AAA_Bofors_40mm"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -21,7 +21,8 @@
|
|||||||
"MBT_Challenger_II",
|
"MBT_Challenger_II",
|
||||||
"IFV_MCV_80",
|
"IFV_MCV_80",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW"
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -25,7 +25,8 @@
|
|||||||
"IFV_BMP_2",
|
"IFV_BMP_2",
|
||||||
"APC_BTR_80",
|
"APC_BTR_80",
|
||||||
"MBT_T_80U",
|
"MBT_T_80U",
|
||||||
"MBT_T_72B"
|
"MBT_T_72B",
|
||||||
|
"SAM_SA_13_Strela_10M3_9A35M3"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -33,7 +33,8 @@
|
|||||||
"ATGM_M1134_Stryker",
|
"ATGM_M1134_Stryker",
|
||||||
"IFV_M2A2_Bradley",
|
"IFV_M2A2_Bradley",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament"
|
"APC_M1043_HMMWV_Armament",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -19,7 +19,8 @@
|
|||||||
"APC_M2A1",
|
"APC_M2A1",
|
||||||
"M30_Cargo_Carrier",
|
"M30_Cargo_Carrier",
|
||||||
"LAC_M8_Greyhound",
|
"LAC_M8_Greyhound",
|
||||||
"TD_M10_GMC"
|
"TD_M10_GMC",
|
||||||
|
"AA_gun_QF_3_7"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"M12_GMC"
|
"M12_GMC"
|
||||||
|
|||||||
@ -12,7 +12,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MT_M4_Sherman",
|
"MT_M4_Sherman",
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M2A1"
|
"APC_M2A1",
|
||||||
|
"AAA_Bofors_40mm"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"M12_GMC"
|
"M12_GMC"
|
||||||
|
|||||||
@ -12,7 +12,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"AAA_Vulcan_M163"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"AAA_Vulcan_M163"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -12,7 +12,9 @@
|
|||||||
],
|
],
|
||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113"
|
"APC_M113",
|
||||||
|
"SAM_Chaparral_M48",
|
||||||
|
"AAA_Vulcan_M163"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin"
|
"SPH_M109_Paladin"
|
||||||
|
|||||||
@ -32,7 +32,8 @@
|
|||||||
"IFV_M2A2_Bradley",
|
"IFV_M2A2_Bradley",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW"
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"SAM_Avenger_M1097"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -32,7 +32,9 @@
|
|||||||
"IFV_M2A2_Bradley",
|
"IFV_M2A2_Bradley",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW"
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"SAM_Avenger_M1097",
|
||||||
|
"SAM_Linebacker_M6"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -33,7 +33,9 @@
|
|||||||
"IFV_M2A2_Bradley",
|
"IFV_M2A2_Bradley",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW"
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"SAM_Avenger_M1097",
|
||||||
|
"SAM_Linebacker_M6"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -33,7 +33,9 @@
|
|||||||
"IFV_M2A2_Bradley",
|
"IFV_M2A2_Bradley",
|
||||||
"IFV_LAV_25",
|
"IFV_LAV_25",
|
||||||
"APC_M1043_HMMWV_Armament",
|
"APC_M1043_HMMWV_Armament",
|
||||||
"ATGM_M1045_HMMWV_TOW"
|
"ATGM_M1045_HMMWV_TOW",
|
||||||
|
"SAM_Avenger_M1097",
|
||||||
|
"SAM_Linebacker_M6"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"MLRS_M270",
|
"MLRS_M270",
|
||||||
|
|||||||
@ -20,7 +20,8 @@
|
|||||||
"frontline_units": [
|
"frontline_units": [
|
||||||
"MBT_M60A3_Patton",
|
"MBT_M60A3_Patton",
|
||||||
"APC_M113",
|
"APC_M113",
|
||||||
"APC_M1025_HMMWV"
|
"APC_M1025_HMMWV",
|
||||||
|
"AAA_Vulcan_M163"
|
||||||
],
|
],
|
||||||
"artillery_units": [
|
"artillery_units": [
|
||||||
"SPH_M109_Paladin",
|
"SPH_M109_Paladin",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user