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 dataclasses import dataclass
from game.commander.tasks.primitive.aggressiveattack import AggressiveAttack
from game.commander.tasks.primitive.cas import PlanCas
from game.commander.tasks.primitive.eliminationattack import EliminationAttack
from game.commander.theaterstate import TheaterState
@ -14,4 +15,5 @@ class DestroyEnemyGroundUnits(CompoundTask[TheaterState]):
def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]:
yield [EliminationAttack(self.front_line, state.player)]
yield [AggressiveAttack(self.front_line, state.player)]
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
def have_sufficient_front_line_advantage(self) -> bool:
return self.ground_force_balance >= 1.2
return self.ground_force_balance >= 2.0
@property
def opposing_garrisons_eliminated(self) -> bool:

View File

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