Skip to content

Commit

Permalink
Made overdrive not spend all excess energy unless every player has fu…
Browse files Browse the repository at this point in the history
…ll storage. Fixes #2649.
  • Loading branch information
GoogleFrog committed Jan 8, 2018
1 parent ececd52 commit 0569085
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions LuaRules/Gadgets/unit_mex_overdrive.lua
Original file line number Diff line number Diff line change
Expand Up @@ -989,6 +989,7 @@ function gadget:GameFrame(n)
local allyTeamNegativeSpare = 0
local allyTeamEnergyCurrent = 0
local allyTeamEnergyMax = 0
local allyTeamEnergyMaxCurMax = 0

local allyTeamMiscMetalIncome = 0

Expand Down Expand Up @@ -1046,6 +1047,7 @@ function gadget:GameFrame(n)
allyTeamEnergyCurrent = allyTeamEnergyCurrent + te.cur
allyTeamEnergyMax = allyTeamEnergyMax + te.max
allyTeamExpense = allyTeamExpense + te.exp
allyTeamEnergyMaxCurMax = allyTeamEnergyMaxCurMax + math.max(te.max, te.cur) -- This prevents full overdrive until everyone has full energy storage.

te.spare = te.inc - te.exp
if te.max == MIN_STORAGE and te.spare < MIN_STORAGE then
Expand Down Expand Up @@ -1083,12 +1085,12 @@ function gadget:GameFrame(n)

-- This is how much energy will be spent on overdrive. It remains to determine how much
-- is spent by each player.
local energyForOverdrive = max(0, allyTeamEnergySpare)*((allyTeamEnergyMax > 0 and max(0, min(1, allyTeamEnergyCurrent/allyTeamEnergyMax))) or 1)
local energyForOverdrive = max(0, allyTeamEnergySpare)*((allyTeamEnergyMaxCurMax > 0 and max(0, min(1, allyTeamEnergyCurrent/allyTeamEnergyMaxCurMax))) or 1)

if debugMode then
Spring.Echo("=========== AllyTeam Economy ===========", allyTeamID)
Spring.Echo("inc", allyTeamEnergyIncome, "exp", allyTeamExpense, "spare", allyTeamEnergySpare)
Spring.Echo("+spare", allyTeamPositiveSpare, "-spare", allyTeamNegativeSpare, "cur", allyTeamEnergyCurrent, "max", allyTeamEnergyMax, "energyForOverdrive", energyForOverdrive)
Spring.Echo("+spare", allyTeamPositiveSpare, "-spare", allyTeamNegativeSpare, "cur", allyTeamEnergyCurrent, "max", allyTeamEnergyMax, "maxCurMax", allyTeamEnergyMaxCurMax, "energyForOverdrive", energyForOverdrive)
end

-- The following inequality holds:
Expand Down

0 comments on commit 0569085

Please sign in to comment.