number of fixes and improvements to mission generation & debriefings

This commit is contained in:
Vasyl Horbachenko
2018-06-15 04:34:38 +03:00
parent a4dfde157d
commit d78b2dd238
12 changed files with 175 additions and 74 deletions

View File

@@ -23,6 +23,7 @@ PRICES = {
F_15C: 30,
M_2000C: 11,
MiG_15bis: 8,
MiG_21Bis: 13,
MiG_29A: 23,
@@ -49,13 +50,14 @@ PRICES = {
}
UNIT_BY_TASK = {
FighterSweep: [Su_27, Su_33, FA_18C_hornet, F_15C, MiG_21Bis, MiG_29A, F_A_18C, AV8BNA],
FighterSweep: [Su_27, Su_33, FA_18C_hornet, F_15C, MiG_21Bis, MiG_29A, F_A_18C, AV8BNA, ],
CAS: [Su_25T, A_10A, A_10C, ],
Transport: [IL_76MD, S_3B_Tanker, ],
AWACS: [E_3A, A_50, ],
CAP: [Armor.MBT_T_90, Armor.MBT_T_80U, Armor.MBT_T_55, Armor.MBT_M1A2_Abrams, Armor.MBT_M60A3_Patton, Armor.ATGM_M1134_Stryker, Armor.APC_BTR_80, ],
AirDefence: [AirDefence.AAA_ZU_23_on_Ural_375, AirDefence.SAM_Avenger_M1097 ],
Transport: [IL_76MD, S_3B_Tanker, ],
Carriage: [CVN_74_John_C__Stennis, CV_1143_5_Admiral_Kuznetsov, ],
AWACS: [E_3A, A_50, ],
}
UNIT_BY_COUNTRY = {
@@ -88,6 +90,20 @@ UNIT_BY_COUNTRY = {
CVN_74_John_C__Stennis],
}
PLANE_PAYLOAD_OVERRIDES = {
FA_18C_hornet: {
"*": "AIM-9M*6, AIM-7M*2, FUEL*3",
},
MiG_21Bis: {
"*": "Patrol, medium range",
}
}
PLANE_LIVERY_OVERRIDES = {
FA_18C_hornet: "VFA-34",
}
UnitsDict = typing.Dict[UnitType, int]
PlaneDict = typing.Dict[FlyingType, int]
ArmorDict = typing.Dict[VehicleType, int]

View File

@@ -49,10 +49,10 @@ class Event:
class GroundInterceptEvent(Event):
BONUS_BASE = 3
TARGET_AMOUNT_FACTOR = 3
TARGET_VARIETY = 3
TARGET_AMOUNT_FACTOR = 2
TARGET_VARIETY = 2
STRENGTH_INFLUENCE = 0.1
SUCCESS_TARGETS_HIT_PERCENTAGE = 0.7
SUCCESS_TARGETS_HIT_PERCENTAGE = 0.5
targets = None # type: db.ArmorDict

View File

@@ -83,12 +83,6 @@ class Game:
enemy_interception = True
break
for to_cp in self.theater.player_points():
if enemy_interception:
break
if to_cp.is_global:
continue
if to_cp in self.theater.conflicts(False):
continue

View File

@@ -37,6 +37,7 @@ class Operation:
self.defender_clients = defender_clients
self.from_cp = from_cp
self.to_cp = to_cp
self.is_quick = False
def initialize(self, mission: Mission, conflict: Conflict):
self.mission = mission
@@ -46,13 +47,15 @@ class Operation:
self.airgen = AircraftConflictGenerator(mission, conflict)
self.aagen = AAConflictGenerator(mission, conflict)
self.shipgen = ShipGenerator(mission, conflict)
self.envgen = EnvironmentSettingsGenerator(mission, self.game)
self.envgen = EnvironmentSettingsGenerator(mission, conflict, self.game)
player_name = self.from_cp.captured and self.attacker_name or self.defender_name
enemy_name = self.from_cp.captured and self.defender_name or self.attacker_name
self.extra_aagen = ExtraAAConflictGenerator(mission, conflict, self.game, player_name, enemy_name)
def prepare(self, is_quick: bool):
self.is_quick = is_quick
if is_quick:
self.attackers_starting_position = None
self.defenders_starting_position = None
@@ -62,7 +65,7 @@ class Operation:
def generate(self):
self.extra_aagen.generate()
self.envgen.generate()
self.envgen.generate(self.is_quick)
def units_of(self, country_name: str) -> typing.Collection[UnitType]:
return []
@@ -103,7 +106,6 @@ class CaptureOperation(Operation):
mission.country(self.defender_name)))
def generate(self):
self.envgen.generate()
self.armorgen.generate(self.attack, self.defense)
self.aagen.generate(self.aa)
@@ -112,6 +114,8 @@ class CaptureOperation(Operation):
self.airgen.generate_cas(self.cas, clients=self.attacker_clients, at=self.attackers_starting_position)
self.airgen.generate_cas_escort(self.escort, clients=self.attacker_clients, at=self.attackers_starting_position)
super(CaptureOperation, self).generate()
class InterceptOperation(Operation):
escort = None # type: db.PlaneDict
@@ -144,17 +148,22 @@ class InterceptOperation(Operation):
conflict=conflict)
def generate(self):
super(InterceptOperation, self).generate()
self.airgen.generate_transport(self.transport, self.to_cp.at)
self.airgen.generate_transport_escort(self.escort, clients=self.defender_clients)
if self.from_cp.is_global:
ship = self.shipgen.generate(type=db.find_unittype(Carriage, self.attacker_name)[0],
at=self.from_cp.at)
self.airgen.generate_interception(self.interceptors, clients=self.attacker_clients, at=ship)
starting_ship = self.shipgen.generate(type=db.find_unittype(Carriage, self.attacker_name)[0],
at=self.from_cp.at)
if self.is_quick:
starting_ship = None
self.airgen.generate_interception(self.interceptors, clients=self.attacker_clients, at=starting_ship)
else:
self.airgen.generate_interception(self.interceptors, clients=self.attacker_clients, at=self.attackers_starting_position)
super(InterceptOperation, self).generate()
class GroundInterceptOperation(Operation):
def setup(self,
@@ -180,6 +189,7 @@ class GroundInterceptOperation(Operation):
conflict=conflict)
def generate(self):
super(GroundInterceptOperation, self).generate()
self.airgen.generate_cas(self.strikegroup, clients=self.attacker_clients, at=self.attackers_starting_position)
self.armorgen.generate({}, self.target)
super(GroundInterceptOperation, self).generate()