Browse Source

Fix possibilities to get outdated movement points info due to creature types

Dydzio 1 year ago
parent
commit
96b18b1b8e
1 changed files with 7 additions and 0 deletions
  1. 7 0
      client/NetPacksClient.cpp

+ 7 - 0
client/NetPacksClient.cpp

@@ -228,6 +228,7 @@ void ApplyClientNetPackVisitor::visitSetStackType(SetStackType & pack)
 void ApplyClientNetPackVisitor::visitEraseStack(EraseStack & pack)
 {
 	dispatchGarrisonChange(cl, pack.army, ObjectInstanceID());
+    cl.invalidatePaths(); //it is possible to remove last non-native unit for current terrain and lose movement penalty
 }
 
 void ApplyClientNetPackVisitor::visitSwapStacks(SwapStacks & pack)
@@ -243,6 +244,9 @@ void ApplyClientNetPackVisitor::visitInsertNewStack(InsertNewStack & pack)
 void ApplyClientNetPackVisitor::visitRebalanceStacks(RebalanceStacks & pack)
 {
 	dispatchGarrisonChange(cl, pack.srcArmy, pack.dstArmy);
+
+    if(pack.srcArmy != pack.dstArmy)
+        cl.invalidatePaths(); // adding/removing units may change terrain type penalty based on creature native terrains
 }
 
 void ApplyClientNetPackVisitor::visitBulkRebalanceStacks(BulkRebalanceStacks & pack)
@@ -253,6 +257,9 @@ void ApplyClientNetPackVisitor::visitBulkRebalanceStacks(BulkRebalanceStacks & p
 			? ObjectInstanceID()
 			: pack.moves[0].dstArmy;
 		dispatchGarrisonChange(cl, pack.moves[0].srcArmy, destArmy);
+
+        if(pack.moves[0].srcArmy != destArmy)
+            cl.invalidatePaths(); // adding/removing units may change terrain type penalty based on creature native terrains
 	}
 }