Use aggressive stance for similar troop counts.

Bumps the breakthrough requirement to 2x, elimination to 1.5x, and uses
agressive for 0.8-1.5x.
This commit is contained in:
Dan Albert 2021-07-12 21:28:00 -07:00
parent 0a416ab758
commit c180eb466d
4 changed files with 18 additions and 2 deletions

View File

@ -1,6 +1,7 @@
from collections import Iterator from collections import Iterator
from dataclasses import dataclass from dataclasses import dataclass
from game.commander.tasks.primitive.aggressiveattack import AggressiveAttack
from game.commander.tasks.primitive.cas import PlanCas from game.commander.tasks.primitive.cas import PlanCas
from game.commander.tasks.primitive.eliminationattack import EliminationAttack from game.commander.tasks.primitive.eliminationattack import EliminationAttack
from game.commander.theaterstate import TheaterState from game.commander.theaterstate import TheaterState
@ -14,4 +15,5 @@ class DestroyEnemyGroundUnits(CompoundTask[TheaterState]):
def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]: def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]:
yield [EliminationAttack(self.front_line, state.player)] yield [EliminationAttack(self.front_line, state.player)]
yield [AggressiveAttack(self.front_line, state.player)]
yield [PlanCas(self.front_line)] yield [PlanCas(self.front_line)]

View File

@ -0,0 +1,14 @@
from __future__ import annotations
from game.commander.tasks.frontlinestancetask import FrontLineStanceTask
from gen.ground_forces.combat_stance import CombatStance
class AggressiveAttack(FrontLineStanceTask):
@property
def stance(self) -> CombatStance:
return CombatStance.AGGRESSIVE
@property
def have_sufficient_front_line_advantage(self) -> bool:
return self.ground_force_balance >= 0.8

View File

@ -15,7 +15,7 @@ class BreakthroughAttack(FrontLineStanceTask):
@property @property
def have_sufficient_front_line_advantage(self) -> bool: def have_sufficient_front_line_advantage(self) -> bool:
return self.ground_force_balance >= 1.2 return self.ground_force_balance >= 2.0
@property @property
def opposing_garrisons_eliminated(self) -> bool: def opposing_garrisons_eliminated(self) -> bool:

View File

@ -11,4 +11,4 @@ class EliminationAttack(FrontLineStanceTask):
@property @property
def have_sufficient_front_line_advantage(self) -> bool: def have_sufficient_front_line_advantage(self) -> bool:
return self.ground_force_balance >= 1.0 return self.ground_force_balance >= 1.5