summaryrefslogtreecommitdiff
path: root/rules.ts
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2025-03-20 01:22:43 +0100
committerTor Andersson <tor@ccxvii.net>2025-03-20 01:23:42 +0100
commitad43e7881da6202aecf68b22ea5a7db469df1b8e (patch)
tree2d01bbe6f23b380d08b7c77757d9d6f114072d4c /rules.ts
parent3da77df81e8aed49a3c2935b7cc3ff1a735e7924 (diff)
downloadland-and-freedom-ad43e7881da6202aecf68b22ea5a7db469df1b8e.tar.gz
fix get_fronts_closest_to
Diffstat (limited to 'rules.ts')
-rw-r--r--rules.ts32
1 files changed, 16 insertions, 16 deletions
diff --git a/rules.ts b/rules.ts
index ca1f191..4057e40 100644
--- a/rules.ts
+++ b/rules.ts
@@ -3419,27 +3419,27 @@ function lose_hero_points(faction: FactionId, value: number) {
// #region FRONTS
function get_fronts_closest_to(target: ClosestToDefeat | ClosestToVictory): FrontId[] {
- const values = Object.values(game.fronts).reduce(
- (accrued: number[], current: Front) => {
- if (current.status === null) {
- accrued.push(current.value);
- }
- return accrued;
- },
- []
- );
+ let minValue = 100;
+ let maxValue = -100;
+ for (let front of game.fronts) {
+ if (front.status === null) {
+ minValue = Math.min(minValue, front.value);
+ maxValue = Math.max(maxValue, front.value);
+ }
+ }
// Possible if all fronts have either been
// defeated or are victorious
- if (values.length === 0) {
+ if (minValue === 100)
return [];
- }
- const targetValue =
- target === CLOSEST_TO_DEFEAT ? Math.min(...values) : Math.max(...values);
- return game.fronts.findIndex(
- (front) => front.value === targetValue
- ) as unknown as FrontId[];
+ const targetValue = target === CLOSEST_TO_DEFEAT ? minValue : maxValue;
+
+ const closest = []
+ for (let i = 0; i < game.fronts.length; ++i)
+ if (game.fronts[i].value === targetValue)
+ closest.push(i)
+ return closest
}
// #endregion