# HG changeset patch # User Wuzzy # Date 1531008368 -7200 # Node ID 38814954a2484db633b73dea232003c4665106e5 # Parent 794dcf69a5aae10b900738901333daad22ff6384 Fix GetAmmo getting wrong ammo count diff -r 794dcf69a5aa -r 38814954a248 hedgewars/uAmmos.pas --- a/hedgewars/uAmmos.pas Sun Jul 08 01:30:13 2018 +0200 +++ b/hedgewars/uAmmos.pas Sun Jul 08 02:06:08 2018 +0200 @@ -52,11 +52,10 @@ implementation uses uVariables, uCommands, uUtils, uCaptions, uDebug, uScript; -type TAmmoCounts = array[TAmmoType] of Longword; - TAmmoArray = array[TAmmoType] of TAmmo; +type TAmmoArray = array[TAmmoType] of TAmmo; var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo; ammoLoadout, ammoProbability, ammoDelay, ammoReinforcement: shortstring; - InitialCounts: array[0..Pred(cMaxHHs)] of TAmmoCounts; + InitialCountsLocal: array[0..Pred(cMaxHHs)] of TAmmoCounts; procedure FillAmmoStore(Ammo: PHHAmmo; var newAmmo: TAmmoArray); var mi: array[0..cMaxSlotIndex] of byte; @@ -139,9 +138,15 @@ else ammos[a]:= AMMO_INFINITE; if ((GameFlags and gfPlaceHog) <> 0) and (a = amTeleport) then - InitialCounts[Pred(StoreCnt)][a]:= cnt + begin + InitialCountsLocal[Pred(StoreCnt)][a]:= cnt; + InitialAmmoCounts[a]:= cnt; + end else - InitialCounts[Pred(StoreCnt)][a]:= ammos[a]; + begin + InitialCountsLocal[Pred(StoreCnt)][a]:= ammos[a]; + InitialAmmoCounts[a]:= ammos[a]; + end end; for a:= Low(TAmmoType) to High(TAmmoType) do @@ -457,7 +462,7 @@ if (Propz and ammoprop_NotBorder) <> 0 then begin Count:= 0; - InitialCounts[i][AmmoType]:= 0 + InitialCountsLocal[i][AmmoType]:= 0 end; PackAmmo(StoresList[i], slot) @@ -505,7 +510,7 @@ for i:= 0 to Pred(StoreCnt) do begin for a:= Low(TAmmoType) to High(TAmmoType) do - newAmmos[a].Count:= InitialCounts[i][a]; + newAmmos[a].Count:= InitialCountsLocal[i][a]; FillAmmoStore(StoresList[i], newAmmos); end; @@ -545,7 +550,7 @@ ammoDelay:= ammoDelay + '0'; ammoReinforcement:= ammoReinforcement + '0' end; - FillChar(InitialCounts, sizeof(InitialCounts), 0) + FillChar(InitialCountsLocal, sizeof(InitialCountsLocal), 0) end; procedure freeModule; diff -r 794dcf69a5aa -r 38814954a248 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Sun Jul 08 01:30:13 2018 +0200 +++ b/hedgewars/uScript.pas Sun Jul 08 02:06:08 2018 +0200 @@ -2604,7 +2604,7 @@ if at >= 0 then begin // Ammo count - i:= Ammoz[TAmmoType(at)].Ammo.Count; + i:= InitialAmmoCounts[TAmmoType(at)]; if i = AMMO_INFINITE then i:= 9; lua_pushnumber(L, i); diff -r 794dcf69a5aa -r 38814954a248 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Sun Jul 08 01:30:13 2018 +0200 +++ b/hedgewars/uVariables.pas Sun Jul 08 02:06:08 2018 +0200 @@ -816,9 +816,11 @@ PosSprite: TSprite; ejectX, ejectY: Longint; end; + TAmmoCounts = array[TAmmoType] of Longword; var Ammoz: array [TAmmoType] of TAmmozRec; + InitialAmmoCounts: TAmmoCounts; const AmmozInit: array [TAmmoType] of TAmmozRec = (