From c180eb466d20ec34f92e09cf2ca150d433c835ad Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Mon, 12 Jul 2021 21:28:00 -0700 Subject: [PATCH] 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. --- .../tasks/compound/destroyenemygroundunits.py | 2 ++ game/commander/tasks/primitive/aggressiveattack.py | 14 ++++++++++++++ .../tasks/primitive/breakthroughattack.py | 2 +- .../commander/tasks/primitive/eliminationattack.py | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 game/commander/tasks/primitive/aggressiveattack.py diff --git a/game/commander/tasks/compound/destroyenemygroundunits.py b/game/commander/tasks/compound/destroyenemygroundunits.py index 90bbbb9f..cf83213f 100644 --- a/game/commander/tasks/compound/destroyenemygroundunits.py +++ b/game/commander/tasks/compound/destroyenemygroundunits.py @@ -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)] diff --git a/game/commander/tasks/primitive/aggressiveattack.py b/game/commander/tasks/primitive/aggressiveattack.py new file mode 100644 index 00000000..a5928dd3 --- /dev/null +++ b/game/commander/tasks/primitive/aggressiveattack.py @@ -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 diff --git a/game/commander/tasks/primitive/breakthroughattack.py b/game/commander/tasks/primitive/breakthroughattack.py index 3f32754d..6657bf23 100644 --- a/game/commander/tasks/primitive/breakthroughattack.py +++ b/game/commander/tasks/primitive/breakthroughattack.py @@ -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: diff --git a/game/commander/tasks/primitive/eliminationattack.py b/game/commander/tasks/primitive/eliminationattack.py index 674c5653..409ecf97 100644 --- a/game/commander/tasks/primitive/eliminationattack.py +++ b/game/commander/tasks/primitive/eliminationattack.py @@ -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