fixed incompatible missions being available from carriers

This commit is contained in:
Vasyl Horbachenko
2018-11-06 02:59:24 +02:00
parent e1d50f1f27
commit 7842c69ebb
13 changed files with 69 additions and 9 deletions

View File

@@ -28,6 +28,10 @@ class ConvoyStrikeEvent(Event):
def tasks(self):
return [CAS]
@property
def global_cp_available(self) -> bool:
return True
def flight_name(self, for_task: typing.Type[Task]) -> str:
if for_task == CAS:
return "Strike flight"

View File

@@ -70,6 +70,10 @@ class Event:
def ai_banned_tasks(self) -> typing.Collection[typing.Type[Task]]:
return []
@property
def global_cp_available(self) -> bool:
return False
def bonus(self) -> int:
return int(math.log(self.to_cp.importance + 1, DIFFICULTY_LOG_BASE) * self.BONUS_BASE)

View File

@@ -22,6 +22,10 @@ class FrontlineAttackEvent(Event):
else:
return [CAP]
@property
def global_cp_available(self) -> bool:
return True
def flight_name(self, for_task: typing.Type[Task]) -> str:
if for_task == CAS:
return "CAS flight"

View File

@@ -37,6 +37,10 @@ class InterceptEvent(Event):
def threat_description(self):
return "{} aircraft".format(self.enemy_cp.base.scramble_count(self._enemy_scramble_multiplier(), CAP))
@property
def global_cp_available(self) -> bool:
return True
def is_successfull(self, debriefing: Debriefing):
units_destroyed = debriefing.destroyed_units[self.defender_name].get(self.transport_unit, 0)
if self.departure_cp.captured:

View File

@@ -42,6 +42,10 @@ class NavalInterceptEvent(Event):
s += ", {} aircraft".format(self.departure_cp.base.scramble_count(self.game.settings.multiplier))
return s
@property
def global_cp_available(self) -> bool:
return True
def is_successfull(self, debriefing: Debriefing):
total_targets = sum(self.targets.values())
destroyed_targets = 0

View File

@@ -28,6 +28,10 @@ class StrikeEvent(Event):
def ai_banned_tasks(self):
return [CAS]
@property
def global_cp_available(self) -> bool:
return True
def flight_name(self, for_task: typing.Type[Task]) -> str:
if for_task == CAP:
if self.is_player_attacking:

View File

@@ -28,6 +28,9 @@ class ConvoyStrikeOperation(Operation):
conflict=conflict)
def generate(self):
if self.is_player_attack:
self.prepare_carriers(db.unitdict_from(self.strikegroup))
planes_flights = {k: v for k, v in self.strikegroup.items() if k in plane_map.values()}
self.airgen.generate_cas_strikegroup(*assigned_units_split(planes_flights), at=self.attackers_starting_position)

View File

@@ -37,6 +37,9 @@ class FrontlineAttackOperation(Operation):
conflict=conflict)
def generate(self):
if self.is_player_attack:
self.prepare_carriers(db.unitdict_from(self.strikegroup))
self.armorgen.generate_vec(self.attackers, self.target)
planes_flights = {k: v for k, v in self.strikegroup.items() if k in plane_map.values()}

View File

@@ -43,6 +43,9 @@ class FrontlinePatrolOperation(Operation):
conflict=conflict)
def generate(self):
if self.is_player_attack:
self.prepare_carriers(db.unitdict_from(self.interceptors))
self.airgen.generate_defenders_cas(*assigned_units_split(self.cas), at=self.defenders_starting_position)
self.airgen.generate_defenders_escort(*assigned_units_split(self.escort), at=self.defenders_starting_position)
self.airgen.generate_migcap(*assigned_units_split(self.interceptors), at=self.attackers_starting_position)

View File

@@ -43,7 +43,8 @@ class InterceptOperation(Operation):
conflict=conflict)
def generate(self):
self.prepare_carriers(db.unitdict_from(self.interceptors))
if self.is_player_attack:
self.prepare_carriers(db.unitdict_from(self.interceptors))
self.airgen.generate_transport(self.transport, self.to_cp.at)
self.airgen.generate_defenders_escort(*assigned_units_split(self.escort), at=self.defenders_starting_position)

View File

@@ -37,7 +37,8 @@ class NavalInterceptionOperation(Operation):
self.initialize(self.current_mission, conflict)
def generate(self):
self.prepare_carriers(db.unitdict_from(self.strikegroup))
if self.is_player_attack:
self.prepare_carriers(db.unitdict_from(self.strikegroup))
target_groups = self.shipgen.generate_cargo(units=self.targets)

View File

@@ -55,6 +55,10 @@ class Operation:
def is_successfull(self, debriefing: Debriefing) -> bool:
return True
@property
def is_player_attack(self) -> bool:
return self.from_cp.captured
def initialize(self, mission: Mission, conflict: Conflict):
self.current_mission = mission
self.conflict = conflict
@@ -104,7 +108,10 @@ class Operation:
at=global_cp.at)
if global_cp == self.departure_cp and not self.is_quick:
self.attackers_starting_position = ship
if self.to_cp.captured:
self.attackers_starting_position = ship
else:
self.defenders_starting_position = ship
def generate(self):
# air support