mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
62 lines
2.4 KiB
Python
62 lines
2.4 KiB
Python
from itertools import zip_longest
|
|
|
|
from dcs.terrain import Terrain
|
|
|
|
from game import db
|
|
from gen.armor import *
|
|
from gen.aircraft import *
|
|
from gen.aaa import *
|
|
from gen.shipgen import *
|
|
from gen.triggergen import *
|
|
from gen.airsupportgen import *
|
|
from gen.visualgen import *
|
|
from gen.conflictgen import Conflict
|
|
|
|
from .operation import Operation
|
|
|
|
|
|
MAX_DISTANCE_BETWEEN_GROUPS = 12000
|
|
|
|
|
|
class FrontlinePatrolOperation(Operation):
|
|
cas = None # type: db.PlaneDict
|
|
escort = None # type: db.PlaneDict
|
|
interceptors = None # type: db.PlaneDict
|
|
|
|
armor_attackers = None # type: db.ArmorDict
|
|
armor_defenders = None # type: db.ArmorDict
|
|
|
|
def setup(self, cas: db.PlaneDict, escort: db.PlaneDict, interceptors: db.PlaneDict, armor_attackers: db.ArmorDict, armor_defenders: db.ArmorDict):
|
|
self.cas = cas
|
|
self.escort = escort
|
|
self.interceptors = interceptors
|
|
|
|
self.armor_attackers = armor_attackers
|
|
self.armor_defenders = armor_defenders
|
|
|
|
def prepare(self, terrain: Terrain, is_quick: bool):
|
|
super(FrontlinePatrolOperation, self).prepare(terrain, is_quick)
|
|
self.defenders_starting_position = None
|
|
|
|
conflict = Conflict.frontline_cap_conflict(
|
|
attacker=self.mission.country(self.attacker_name),
|
|
defender=self.mission.country(self.defender_name),
|
|
from_cp=self.from_cp,
|
|
to_cp=self.to_cp,
|
|
theater=self.game.theater
|
|
)
|
|
|
|
self.initialize(mission=self.mission,
|
|
conflict=conflict)
|
|
|
|
def generate(self):
|
|
self.airgen.generate_defenders_cas(self.cas, {}, self.defenders_starting_position)
|
|
self.airgen.generate_defenders_escort(self.escort, {}, self.defenders_starting_position)
|
|
self.airgen.generate_migcap(self.interceptors, self.attacker_clients, self.attackers_starting_position)
|
|
|
|
self.armorgen.generate_vec(self.armor_attackers, self.armor_defenders)
|
|
|
|
self.briefinggen.title = "Frontline CAP"
|
|
self.briefinggen.description = "Providing CAP support for ground units attacking enemy lines. Enemy will scramble its CAS and your task is to intercept it. Operation will be considered successful if total number of friendly units will be lower than enemy by at least a factor of 0.8 (i.e. with 12 units from both sides, there should be at least 8 friendly units alive), lowering targets strength as a result."
|
|
super(FrontlinePatrolOperation, self).generate()
|