mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Generate AA & armor to defend airbase. Destruction status correctly tracked.
This commit is contained in:
@@ -340,7 +340,7 @@ class AircraftConflictGenerator:
|
||||
|
||||
patrolled = []
|
||||
for ground_object in cp.ground_objects:
|
||||
if not ground_object.group_id in patrolled:
|
||||
if not ground_object.group_id in patrolled and not ground_object.airbase_group:
|
||||
group.add_waypoint(ground_object.position, patrol_alt)
|
||||
patrolled.append(ground_object.group_id)
|
||||
|
||||
|
||||
24
gen/defenses/armor_group_generator.py
Normal file
24
gen/defenses/armor_group_generator.py
Normal file
@@ -0,0 +1,24 @@
|
||||
import random
|
||||
|
||||
from dcs.vehicles import Armor
|
||||
|
||||
from game import db
|
||||
from gen.defenses.armored_group_generator import ArmoredGroupGenerator
|
||||
|
||||
|
||||
def generate_armor_group(faction:str, game, ground_object):
|
||||
"""
|
||||
This generate a SAM group
|
||||
:param parentCp: The parent control point
|
||||
:param ground_object: The ground object which will own the sam group
|
||||
:param country: Owner country
|
||||
:return: Nothing, but put the group reference inside the ground object
|
||||
"""
|
||||
|
||||
possible_unit = [u for u in db.FACTIONS[faction]["units"] if u in Armor.__dict__.values()]
|
||||
if len(possible_unit) > 0:
|
||||
unit_type = random.choice(possible_unit)
|
||||
generator = ArmoredGroupGenerator(game, ground_object, unit_type)
|
||||
generator.generate()
|
||||
return generator.get_generated_group()
|
||||
return None
|
||||
27
gen/defenses/armored_group_generator.py
Normal file
27
gen/defenses/armored_group_generator.py
Normal file
@@ -0,0 +1,27 @@
|
||||
import random
|
||||
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class ArmoredGroupGenerator(GroupGenerator):
|
||||
|
||||
def __init__(self, game, ground_object, unit_type):
|
||||
super(ArmoredGroupGenerator, self).__init__(game, ground_object)
|
||||
self.unit_type = unit_type
|
||||
|
||||
def generate(self):
|
||||
|
||||
grid_x = random.randint(2, 3)
|
||||
grid_y = random.randint(1, 2)
|
||||
|
||||
spacing = random.randint(30, 80)
|
||||
|
||||
index = 0
|
||||
for i in range(grid_x):
|
||||
for j in range(grid_y):
|
||||
index = index + 1
|
||||
self.add_unit(self.unit_type, "Armor#" + str(index),
|
||||
self.position.x + spacing * i,
|
||||
self.position.y + spacing * j, self.heading)
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class BoforsGenerator(AntiAirGroupGenerator):
|
||||
class BoforsGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Bofors flak artillery group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class Flak36Generator(AntiAirGroupGenerator):
|
||||
class Flak36Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a Bofors flak artillery group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class ZU23InsurgentGenerator(AntiAirGroupGenerator):
|
||||
class ZU23InsurgentGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a ZU23 insurgent flak artillery group
|
||||
"""
|
||||
|
||||
@@ -6,9 +6,9 @@ from dcs.point import PointAction
|
||||
from dcs.unit import Vehicle
|
||||
|
||||
|
||||
class AntiAirGroupGenerator():
|
||||
class GroupGenerator():
|
||||
|
||||
def __init__(self, game, ground_object, group_object_group_id):
|
||||
def __init__(self, game, ground_object):
|
||||
self.game = game
|
||||
self.go = ground_object
|
||||
self.position = ground_object.position
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class AvengerGenerator(AntiAirGroupGenerator):
|
||||
class AvengerGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate an Avenger group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class ChaparralGenerator(AntiAirGroupGenerator):
|
||||
class ChaparralGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Chaparral group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class GepardGenerator(AntiAirGroupGenerator):
|
||||
class GepardGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Gepard group
|
||||
"""
|
||||
|
||||
@@ -36,6 +36,39 @@ from gen.sam.sam_zu23 import ZU23Generator
|
||||
from gen.sam.sam_zu23_ural import ZU23UralGenerator
|
||||
from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator
|
||||
|
||||
SAM_MAP = {
|
||||
AirDefence.SAM_Hawk_PCP: HawkGenerator,
|
||||
AirDefence.AAA_ZU_23_Emplacement: ZU23Generator,
|
||||
AirDefence.AAA_ZU_23_Closed: ZU23Generator,
|
||||
AirDefence.AAA_ZU_23_on_Ural_375: ZU23UralGenerator,
|
||||
AirDefence.AAA_ZU_23_Insurgent_on_Ural_375: ZU23UralInsurgentGenerator,
|
||||
AirDefence.AAA_ZU_23_Insurgent_Closed: ZU23InsurgentGenerator,
|
||||
AirDefence.AAA_ZU_23_Insurgent: ZU23InsurgentGenerator,
|
||||
AirDefence.SPAAA_ZSU_23_4_Shilka: ZSU23Generator,
|
||||
AirDefence.AAA_Vulcan_M163: VulcanGenerator,
|
||||
AirDefence.SAM_Linebacker_M6: LinebackerGenerator,
|
||||
AirDefence.Rapier_FSA_Launcher: RapierGenerator,
|
||||
AirDefence.SAM_Avenger_M1097: AvengerGenerator,
|
||||
AirDefence.SPAAA_Gepard: GepardGenerator,
|
||||
AirDefence.SAM_Roland_ADS: RolandGenerator,
|
||||
AirDefence.SAM_Patriot_LN_M901: PatriotGenerator,
|
||||
AirDefence.SAM_Patriot_EPP_III: PatriotGenerator,
|
||||
AirDefence.SAM_Chaparral_M48: ChaparralGenerator,
|
||||
AirDefence.AAA_Bofors_40mm: BoforsGenerator,
|
||||
AirDefence.AAA_Flak_36: Flak36Generator,
|
||||
AirDefence.SAM_SA_2_LN_SM_90: SA2Generator,
|
||||
AirDefence.SAM_SA_3_S_125_LN_5P73: SA3Generator,
|
||||
AirDefence.SAM_SA_6_Kub_LN_2P25: SA6Generator,
|
||||
AirDefence.SAM_SA_8_Osa_9A33: SA8Generator,
|
||||
AirDefence.SAM_SA_9_Strela_1_9P31: SA9Generator,
|
||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: SA10Generator,
|
||||
AirDefence.SAM_SA_10_S_300PS_CP_54K6: SA10Generator,
|
||||
AirDefence.SAM_SA_11_Buk_LN_9A310M1: SA11Generator,
|
||||
AirDefence.SAM_SA_13_Strela_10M3_9A35M3: SA13Generator,
|
||||
AirDefence.SAM_SA_15_Tor_9A331: SA15Generator,
|
||||
AirDefence.SAM_SA_19_Tunguska_2S6: SA19Generator,
|
||||
AirDefence.HQ_7_Self_Propelled_LN: HQ7Generator
|
||||
}
|
||||
|
||||
def generate_anti_air_group(game, parent_cp, ground_object, faction:str):
|
||||
"""
|
||||
@@ -45,49 +78,26 @@ def generate_anti_air_group(game, parent_cp, ground_object, faction:str):
|
||||
:param country: Owner country
|
||||
:return: Nothing, but put the group reference inside the ground object
|
||||
"""
|
||||
|
||||
SAM_MAP = {
|
||||
|
||||
AirDefence.SAM_Hawk_PCP:HawkGenerator,
|
||||
AirDefence.AAA_ZU_23_Emplacement: ZU23Generator,
|
||||
AirDefence.AAA_ZU_23_Closed:ZU23Generator,
|
||||
AirDefence.AAA_ZU_23_on_Ural_375: ZU23UralGenerator,
|
||||
AirDefence.AAA_ZU_23_Insurgent_on_Ural_375:ZU23UralInsurgentGenerator,
|
||||
AirDefence.AAA_ZU_23_Insurgent_Closed: ZU23InsurgentGenerator,
|
||||
AirDefence.AAA_ZU_23_Insurgent: ZU23InsurgentGenerator,
|
||||
AirDefence.SPAAA_ZSU_23_4_Shilka:ZSU23Generator,
|
||||
AirDefence.AAA_Vulcan_M163: VulcanGenerator,
|
||||
AirDefence.SAM_Linebacker_M6: LinebackerGenerator,
|
||||
AirDefence.Rapier_FSA_Launcher: RapierGenerator,
|
||||
AirDefence.SAM_Avenger_M1097: AvengerGenerator,
|
||||
AirDefence.SPAAA_Gepard: GepardGenerator,
|
||||
AirDefence.SAM_Roland_ADS: RolandGenerator,
|
||||
AirDefence.SAM_Patriot_LN_M901: PatriotGenerator,
|
||||
AirDefence.SAM_Patriot_EPP_III: PatriotGenerator,
|
||||
AirDefence.SAM_Chaparral_M48: ChaparralGenerator,
|
||||
AirDefence.AAA_Bofors_40mm: BoforsGenerator,
|
||||
AirDefence.AAA_Flak_36: Flak36Generator,
|
||||
|
||||
AirDefence.SAM_SA_2_LN_SM_90: SA2Generator,
|
||||
AirDefence.SAM_SA_3_S_125_LN_5P73: SA3Generator,
|
||||
AirDefence.SAM_SA_6_Kub_LN_2P25: SA6Generator,
|
||||
AirDefence.SAM_SA_8_Osa_9A33: SA8Generator,
|
||||
AirDefence.SAM_SA_9_Strela_1_9P31: SA9Generator,
|
||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: SA10Generator,
|
||||
AirDefence.SAM_SA_10_S_300PS_CP_54K6: SA10Generator,
|
||||
AirDefence.SAM_SA_11_Buk_LN_9A310M1: SA11Generator,
|
||||
AirDefence.SAM_SA_13_Strela_10M3_9A35M3: SA13Generator,
|
||||
AirDefence.SAM_SA_15_Tor_9A331: SA15Generator,
|
||||
AirDefence.SAM_SA_19_Tunguska_2S6: SA19Generator,
|
||||
AirDefence.HQ_7_Self_Propelled_LN: HQ7Generator
|
||||
}
|
||||
|
||||
possible_sams = [u for u in db.FACTIONS[faction]["units"] if u in AirDefence.__dict__.values()]
|
||||
if len(possible_sams) > 0:
|
||||
sam = random.choice(possible_sams)
|
||||
generator = SAM_MAP[sam](game, ground_object, 0)
|
||||
generator = SAM_MAP[sam](game, ground_object)
|
||||
generator.generate()
|
||||
ground_object.groups = [generator.get_generated_group()]
|
||||
return generator.get_generated_group()
|
||||
return None
|
||||
|
||||
|
||||
def generate_shorad_group(game, parent_cp, ground_object, faction:str):
|
||||
if("shorad") in db.FACTIONS[faction].keys():
|
||||
shorad = db.FACTIONS[faction]["shorad"]
|
||||
sam = random.choice(shorad)
|
||||
generator = SAM_MAP[sam](game, ground_object)
|
||||
generator.generate()
|
||||
return generator.get_generated_group()
|
||||
else:
|
||||
return generate_anti_air_group(game, parent_cp, ground_object, faction)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class HawkGenerator(AntiAirGroupGenerator):
|
||||
class HawkGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate an HAWK group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class HQ7Generator(AntiAirGroupGenerator):
|
||||
class HQ7Generator(GroupGenerator):
|
||||
"""
|
||||
This generate an HQ7 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class LinebackerGenerator(AntiAirGroupGenerator):
|
||||
class LinebackerGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate an m6 linebacker group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class PatriotGenerator(AntiAirGroupGenerator):
|
||||
class PatriotGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Patriot group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class RapierGenerator(AntiAirGroupGenerator):
|
||||
class RapierGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Rapier Group
|
||||
"""
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class RolandGenerator(AntiAirGroupGenerator):
|
||||
class RolandGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Roland group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA10Generator(AntiAirGroupGenerator):
|
||||
class SA10Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-10 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA11Generator(AntiAirGroupGenerator):
|
||||
class SA11Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-11 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA13Generator(AntiAirGroupGenerator):
|
||||
class SA13Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-13 group
|
||||
"""
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA15Generator(AntiAirGroupGenerator):
|
||||
class SA15Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-15 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA19Generator(AntiAirGroupGenerator):
|
||||
class SA19Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-19 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA2Generator(AntiAirGroupGenerator):
|
||||
class SA2Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-2 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA3Generator(AntiAirGroupGenerator):
|
||||
class SA3Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-3 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA6Generator(AntiAirGroupGenerator):
|
||||
class SA6Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-6 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA8Generator(AntiAirGroupGenerator):
|
||||
class SA8Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-8 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class SA9Generator(AntiAirGroupGenerator):
|
||||
class SA9Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a SA-9 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence, Unarmed
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class VulcanGenerator(AntiAirGroupGenerator):
|
||||
class VulcanGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Vulcan group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class ZSU23Generator(AntiAirGroupGenerator):
|
||||
class ZSU23Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a ZSU 23 group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class ZU23Generator(AntiAirGroupGenerator):
|
||||
class ZU23Generator(GroupGenerator):
|
||||
"""
|
||||
This generate a ZU23 flak artillery group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class ZU23UralGenerator(AntiAirGroupGenerator):
|
||||
class ZU23UralGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Zu23 Ural group
|
||||
"""
|
||||
|
||||
@@ -2,10 +2,10 @@ import random
|
||||
|
||||
from dcs.vehicles import AirDefence
|
||||
|
||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
||||
from gen.sam.group_generator import GroupGenerator
|
||||
|
||||
|
||||
class ZU23UralInsurgentGenerator(AntiAirGroupGenerator):
|
||||
class ZU23UralInsurgentGenerator(GroupGenerator):
|
||||
"""
|
||||
This generate a Zu23 Ural group
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user