mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
71 lines
2.6 KiB
Python
71 lines
2.6 KiB
Python
from game import db
|
|
|
|
from gen.conflictgen import Conflict
|
|
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 .operation import Operation
|
|
|
|
|
|
class BaseAttackOperation(Operation):
|
|
cas = None # type: db.PlaneDict
|
|
escort = None # type: db.PlaneDict
|
|
intercept = None # type: db.PlaneDict
|
|
attack = None # type: db.ArmorDict
|
|
defense = None # type: db.ArmorDict
|
|
aa = None # type: db.AirDefenseDict
|
|
|
|
trigger_radius = TRIGGER_RADIUS_SMALL
|
|
|
|
def setup(self,
|
|
cas: db.PlaneDict,
|
|
escort: db.PlaneDict,
|
|
attack: db.ArmorDict,
|
|
intercept: db.PlaneDict,
|
|
defense: db.ArmorDict,
|
|
aa: db.AirDefenseDict):
|
|
self.cas = cas
|
|
self.escort = escort
|
|
self.intercept = intercept
|
|
self.attack = attack
|
|
self.defense = defense
|
|
self.aa = aa
|
|
|
|
def prepare(self, terrain: dcs.terrain.Terrain, is_quick: bool):
|
|
super(BaseAttackOperation, self).prepare(terrain, is_quick)
|
|
|
|
self.defenders_starting_position = None
|
|
if self.game.player == self.defender_name:
|
|
self.attackers_starting_position = None
|
|
|
|
conflict = Conflict.capture_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.armorgen.generate(self.attack, self.defense)
|
|
self.aagen.generate(self.aa)
|
|
|
|
self.airgen.generate_defense(self.intercept, clients=self.defender_clients, at=self.defenders_starting_position)
|
|
|
|
self.airgen.generate_cas_strikegroup(self.cas, clients=self.attacker_clients, at=self.attackers_starting_position)
|
|
self.airgen.generate_attackers_escort(self.escort, clients=self.attacker_clients, at=self.attackers_starting_position)
|
|
|
|
self.visualgen.generate_target_smokes(self.to_cp)
|
|
|
|
self.briefinggen.title = "Base attack"
|
|
self.briefinggen.description = "The goal of an attacker is to lower defender presence by destroying their armor and aircraft. Base will be considered captured if attackers on the ground overrun the defenders. Be advised that your flight will not attack anything until you explicitly tell them so by comms menu."
|
|
super(BaseAttackOperation, self).generate()
|
|
|