Only fork on new moves into a season

This commit is contained in:
Jaculabilis 2022-11-08 19:12:03 -08:00
parent 069cb4c548
commit b241d206f4
1 changed files with 6 additions and 8 deletions

View File

@ -492,13 +492,12 @@ public class MovementPhaseAdjudicator : IPhaseAdjudicator
return progress; return progress;
} }
// The season target of a successful move always advances. // The season target of a new (i.e. not previously adjudicated) and successful move always advances.
IEnumerable<MoveOrder> incomingMoveOrders = decision.Orders IEnumerable<MoveOrder> newIncomingMoves = decision.Orders
.OfType<MoveOrder>() .OfType<MoveOrder>()
.Where(order => order.Season == decision.Season); .Where(order => order.Season == decision.Season
logger.Log(depth, "decision.Orders = {0}", string.Join(", ", decision.Orders)); && !world.OrderHistory[order.Season].DoesMoveOutcomes.ContainsKey(order));
logger.Log(depth, "incomingMoveOrders = {0}", string.Join(", ", incomingMoveOrders)); foreach (MoveOrder moveOrder in newIncomingMoves)
foreach (MoveOrder moveOrder in incomingMoveOrders)
{ {
DoesMove doesMove = decisions.DoesMove[moveOrder]; DoesMove doesMove = decisions.DoesMove[moveOrder];
progress |= ResolveDecision(doesMove, world, decisions, depth + 1); progress |= ResolveDecision(doesMove, world, decisions, depth + 1);
@ -513,8 +512,7 @@ public class MovementPhaseAdjudicator : IPhaseAdjudicator
// The outcome of a battle is changed if: // The outcome of a battle is changed if:
// 1. The outcome of a dislodge decision is changed, // 1. The outcome of a dislodge decision is changed,
// 2. The outcome of an intra-timeline move decision is changed, or // 2. The outcome of an intra-timeline move decision is changed, or
// 3. The outcome of an inter-timeline move decision with that season as the destination is // 3. The outcome of an inter-timeline move decision with that season as the destination is changed.
// changed.
OrderHistory history = world.OrderHistory[decision.Season]; OrderHistory history = world.OrderHistory[decision.Season];
bool anyUnresolved = false; bool anyUnresolved = false;
foreach (UnitOrder order in decision.Orders) foreach (UnitOrder order in decision.Orders)