From eb36e62db5a74c24ea97317193f2d0cf3b42e614 Mon Sep 17 00:00:00 2001
From: Aaron Veden <veden@vedbyte.com>
Date: Sun, 4 Apr 2021 21:46:43 -0700
Subject: [PATCH] see changelog

---
 changelog.txt          |  6 +++++-
 control.lua            |  2 +-
 libs/BaseUtils.lua     | 24 ++++++++++++++----------
 libs/Constants.lua     |  1 +
 libs/MovementUtils.lua |  6 +++---
 libs/SquadAttack.lua   | 15 ++++++++-------
 6 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/changelog.txt b/changelog.txt
index 5feef9c..07ce5aa 100755
--- a/changelog.txt
+++ b/changelog.txt
@@ -10,10 +10,14 @@ Date: 03. 04. 2021
     - Decreased Poison faction cloud damage by 25%
     - Increased suicide biters damage by 50%
     - Added scorchmark scaling to new enemies
+    - Increased squad used chunks that are tracked by 30%
+    - Reduced movement penalty on chunks added by squad movement by 50%
   Bugfixes:
     - Fixed nocturnal biters mod setting description. As vanilla attacks have been integrated
     - Fixed missing locale for fire spitter acid pool
-    - Fixed tooltip for suicide and nuclear biters 
+    - Fixed tooltip for suicide and nuclear biters
+    - Fixed removing a faction mid play-through caused a crash
+    - Fixed squads not getting commands processed every ticks
 
 ---------------------------------------------------------------------------------------------------
 Version: 1.0.6
diff --git a/control.lua b/control.lua
index 4ed47c6..4ccd097 100755
--- a/control.lua
+++ b/control.lua
@@ -957,7 +957,6 @@ script.on_event(defines.events.on_tick,
                     elseif (pick == 3) then
                         processStaticMap(map)
                         disperseVictoryScent(map)
-                        cleanSquads(map)
                         processVengence(map)
                     elseif (pick == 4) then
                         scanResourceMap(map, tick)
@@ -971,6 +970,7 @@ script.on_event(defines.events.on_tick,
                     end
 
                     processActiveNests(map, tick)
+                    cleanSquads(map)
 
                     -- game.print({"", "--dispatch4 ", profiler, ", ", pick, ", ", game.tick, "       ", mRandom()})
 end)
diff --git a/libs/BaseUtils.lua b/libs/BaseUtils.lua
index ee5cf30..0420999 100755
--- a/libs/BaseUtils.lua
+++ b/libs/BaseUtils.lua
@@ -598,17 +598,21 @@ function baseUtils.rebuildNativeTables(universe, rg)
         end
     end
 
-    -- local evoIndex = evoToTier(universe, universe.evolutionLevel)
+    local evoIndex = evoToTier(universe, universe.evolutionLevel)
 
-    -- for _,base in pairs(universe.bases) do
-    --     for x=1,#base.alignment do
-    --         local alignment = base.alignment[x]
-    --         if not universe.buildingEvolveLookup[alignment] then
-    --             base.alignment = findBaseInitialAlignment(universe, evoIndex)
-    --             break
-    --         end
-    --     end
-    -- end
+    if universe.maps then
+        for _,map in pairs(universe.maps) do
+            for _,base in pairs(map.bases) do
+                for x=1,#base.alignment do
+                    local alignment = base.alignment[x]
+                    if not universe.buildingEvolveLookup[alignment] then
+                        base.alignment = findBaseInitialAlignment(universe, evoIndex)
+                        break
+                    end
+                end
+            end
+        end
+    end
 end
 
 baseUtilsG = baseUtils
diff --git a/libs/Constants.lua b/libs/Constants.lua
index 5bcc4c2..b3dbbf8 100755
--- a/libs/Constants.lua
+++ b/libs/Constants.lua
@@ -193,6 +193,7 @@ constants.MOVEMENT_PENALTY_AMOUNT = 300000
 constants.DEATH_PHEROMONE_GENERATOR_AMOUNT = 1300
 constants.DOUBLE_DEATH_PHEROMONE_GENERATOR_AMOUNT = constants.DEATH_PHEROMONE_GENERATOR_AMOUNT * 2
 constants.TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT = constants.DEATH_PHEROMONE_GENERATOR_AMOUNT * 10
+constants.FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT = constants.DEATH_PHEROMONE_GENERATOR_AMOUNT * 5
 constants.PLAYER_PHEROMONE_GENERATOR_AMOUNT = 300
 
 constants.IMPASSABLE_TERRAIN_GENERATOR_AMOUNT = 0
diff --git a/libs/MovementUtils.lua b/libs/MovementUtils.lua
index 03df8e6..aab591a 100755
--- a/libs/MovementUtils.lua
+++ b/libs/MovementUtils.lua
@@ -52,15 +52,15 @@ function movementUtils.addMovementPenalty(squad, chunk)
     for i=1,penaltyCount do
         local penalty = penalties[i]
         if (penalty.c == chunk) then
-            penalty.v = ((penaltyCount > 1) and penalty.v + 1) or penalty.v
+            penalty.v = penalty.v + 1
             if (penalty.v > 2) then
                 squad.kamikaze = true
             end
             return
         end
     end
-    if (penaltyCount == 7) then
-        tableRemove(penalties, 7)
+    if (penaltyCount == 10) then
+        tableRemove(penalties, 10)
     end
     tableInsert(penalties,
                 1,
diff --git a/libs/SquadAttack.lua b/libs/SquadAttack.lua
index 4868de4..9f31861 100755
--- a/libs/SquadAttack.lua
+++ b/libs/SquadAttack.lua
@@ -18,6 +18,7 @@ local BASE_PHEROMONE = constants.BASE_PHEROMONE
 local RESOURCE_PHEROMONE = constants.RESOURCE_PHEROMONE
 
 local TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT = constants.TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT
+local FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT = constants.FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT
 
 local SQUAD_BUILDING = constants.SQUAD_BUILDING
 
@@ -117,7 +118,7 @@ local function settleMove(map, squad)
     elseif squad.kamikaze then
         scoreFunction = scoreResourceLocationKamikaze
     end
-    addDeathGenerator(map, chunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT)
+    addDeathGenerator(map, chunk, FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT)
     addSquadToChunk(map, chunk, squad)
     addMovementPenalty(squad, chunk)
     local distance = euclideanDistancePoints(groupPosition.x,
@@ -179,9 +180,9 @@ local function settleMove(map, squad)
                 targetPosition.x = position.x
                 targetPosition.y = position.y
                 if nextAttackChunk then
-                    addDeathGenerator(map, nextAttackChunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT)
+                    addDeathGenerator(map, nextAttackChunk, FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT)
                 else
-                    addDeathGenerator(map, attackChunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT)
+                    addDeathGenerator(map, attackChunk, FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT)
                 end
             else
                 cmd = universe.wonderCommand
@@ -243,7 +244,7 @@ local function attackMove(map, squad)
         attackScorer = scoreAttackKamikazeLocation
     end
     local squadChunk = squad.chunk
-    addDeathGenerator(map, squadChunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT)
+    addDeathGenerator(map, squadChunk, FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT)
     addSquadToChunk(map, chunk, squad)
     addMovementPenalty(squad, chunk)
     squad.frenzy = (squad.frenzy and (euclideanDistanceNamed(groupPosition, squad.frenzyPosition) < 100))
@@ -275,9 +276,9 @@ local function attackMove(map, squad)
         targetPosition.x = position.x
         targetPosition.y = position.y
         if nextAttackChunk then
-            addDeathGenerator(map, nextAttackChunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT)
+            addDeathGenerator(map, nextAttackChunk, FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT)
         else
-            addDeathGenerator(map, attackChunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT)
+            addDeathGenerator(map, attackChunk, FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT)
         end
     end
 
@@ -332,7 +333,7 @@ function squadAttack.cleanSquads(map)
     else
         local group = squad.group
         if not group.valid then
-            addDeathGenerator(map, squad.chunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT)
+            addDeathGenerator(map, squad.chunk, FIVE_DEATH_PHEROMONE_GENERATOR_AMOUNT)
             removeSquadFromChunk(map, squad)
             if (map.regroupIterator == k) then
                 map.regroupIterator = nil