# HG changeset patch # User Wuzzy # Date 1532455678 -7200 # Node ID d42237d16acf2b5b78e46ada2234e1caa9e3c4a7 # Parent bc6f3d5309f40d27a88bde14f4eac98e4f2eadcc Limit max droplet count to 50 (fix for 0.9.24 branch only) This fixes the issue with insane amounts of droplets in 0.9.24. It's temporary, the real fix is in default branch, but would be desyncing. diff -r bc6f3d5309f4 -r d42237d16acf ChangeLog.txt --- a/ChangeLog.txt Tue Jul 24 19:34:04 2018 +0200 +++ b/ChangeLog.txt Tue Jul 24 20:07:58 2018 +0200 @@ -3,6 +3,8 @@ ====================== 0.9.24.2 ==================== * Restore joystick/controller functionality * Fix crash when starting game with 2 controllers or more + * Fix insane amount of droplets appearing when shooting minigun into ocean world edge + * Limit number of droplets to 50 (temporary bugfix) + Add default controls for controllers (see README) ====================== 0.9.24.1 ==================== diff -r bc6f3d5309f4 -r d42237d16acf hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Tue Jul 24 19:34:04 2018 +0200 +++ b/hedgewars/uConsts.pas Tue Jul 24 20:07:58 2018 +0200 @@ -349,6 +349,8 @@ cMinPlayWidth = 200; cWorldEdgeDist = 200; + maxDroplets = 50; + implementation end. diff -r bc6f3d5309f4 -r d42237d16acf hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Tue Jul 24 19:34:04 2018 +0200 +++ b/hedgewars/uGearsUtils.pas Tue Jul 24 20:07:58 2018 +0200 @@ -516,12 +516,13 @@ // adjust water impact sound based on gear speed and density hwTmp:= hwAbs(Gear^.Density * speed); - if hwTmp > _1 then - PlaySound(sndSplash) - else if hwTmp > _0_5 then - PlaySound(sndSkip) - else if hwTmp > _0_0002 then // arbitrary sanity cutoff. mostly for airmines - PlaySound(sndDroplet2); + if (numDroplets < maxDroplets) then + if hwTmp > _1 then + PlaySound(sndSplash) + else if hwTmp > _0_5 then + PlaySound(sndSkip) + else if hwTmp > _0_0002 then // arbitrary sanity cutoff. mostly for airmines + PlaySound(sndDroplet2); end; diff -r bc6f3d5309f4 -r d42237d16acf hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Tue Jul 24 19:34:04 2018 +0200 +++ b/hedgewars/uVariables.pas Tue Jul 24 20:07:58 2018 +0200 @@ -264,6 +264,10 @@ SDLwindow: PSDL_Window; SDLGLcontext: PSDL_GLContext; + +// 0.9.24.2 TEMPORARY BUGFIXES + + numDroplets: LongInt; // number of droplets in game ///////////////////////////////////// //Buttons @@ -2956,6 +2960,8 @@ CountTexz[i]:= nil; end; + numDroplets:= 0; + end; procedure freeModule; diff -r bc6f3d5309f4 -r d42237d16acf hedgewars/uVisualGearsList.pas --- a/hedgewars/uVisualGearsList.pas Tue Jul 24 19:34:04 2018 +0200 +++ b/hedgewars/uVisualGearsList.pas Tue Jul 24 20:07:58 2018 +0200 @@ -84,6 +84,11 @@ exit; +// 0.9.24.2 workaround for minigun droplet spam. +// Limit the max. number of droplets. +if ((Kind = vgtDroplet) or (Kind = vgtSplash)) and (numDroplets > maxDroplets) and (not Critical) then + exit; + inc(VGCounter); New(gear); FillChar(gear^, sizeof(TVisualGear), 0); @@ -231,6 +236,8 @@ end; vgtDroplet: begin + // droplet counter for 0.9.24.2 bugfix + inc(numDroplets); // old dx & dy calcs // dx:= 0.001 * (random(180) - 90); // dy:= -0.001 * (random(160) + 40); @@ -459,6 +466,9 @@ if lastVisualGearByUID = Gear then lastVisualGearByUID:= nil; + if (Gear^.Kind = vgtDroplet) and (numDroplets > 0) then + dec(numDroplets); + Dispose(Gear); end;