From 9b71c8e78f1f95c33189a0ab023ec17dc51f4fa8 Mon Sep 17 00:00:00 2001 From: evanpelle Date: Mon, 10 Mar 2025 14:38:41 -0700 Subject: [PATCH] use ticks instead of Date when retreating for determinism (#208) --- src/core/execution/RetreatExecution.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/execution/RetreatExecution.ts b/src/core/execution/RetreatExecution.ts index fd341765d..bfb865aa0 100644 --- a/src/core/execution/RetreatExecution.ts +++ b/src/core/execution/RetreatExecution.ts @@ -1,13 +1,13 @@ import { Execution, Game, Player, PlayerID } from "../game/Game"; -const cancelDelay = 2; +const cancelDelay = 20; export class RetreatExecution implements Execution { private active = true; private retreatOrdered = false; private player: Player; - private executionDateInSecs = new Date().getTime() / 1000 + cancelDelay; - + private startTick: number; + private mg: Game; constructor( private playerID: PlayerID, private attackID: string, @@ -18,19 +18,19 @@ export class RetreatExecution implements Execution { console.warn(`RetreatExecution: player ${this.player.id()} not found`); return; } + this.mg = mg; this.player = mg.player(this.playerID); + this.startTick = mg.ticks(); } tick(ticks: number): void { - const nowInSecs = new Date().getTime() / 1000; - if (!this.retreatOrdered) { this.player.orderRetreat(this.attackID); this.retreatOrdered = true; } - if (nowInSecs >= this.executionDateInSecs) { + if (this.mg.ticks() >= this.startTick + cancelDelay) { this.player.executeRetreat(this.attackID); this.active = false; }