hedgewars/uVisualGearsList.pas
branch0.9.24
changeset 13550 d42237d16acf
parent 13329 e8801220c13f
child 13568 470982c05f7e
child 13682 f60b3998ba56
equal deleted inserted replaced
13549:bc6f3d5309f4 13550:d42237d16acf
    81     vgtNote,
    81     vgtNote,
    82     vgtFeather,
    82     vgtFeather,
    83     vgtSmoothWindBar])) then
    83     vgtSmoothWindBar])) then
    84 
    84 
    85         exit;
    85         exit;
       
    86 
       
    87 // 0.9.24.2 workaround for minigun droplet spam.
       
    88 // Limit the max. number of droplets.
       
    89 if ((Kind = vgtDroplet) or (Kind = vgtSplash)) and (numDroplets > maxDroplets) and (not Critical) then
       
    90     exit;
    86 
    91 
    87 inc(VGCounter);
    92 inc(VGCounter);
    88 New(gear);
    93 New(gear);
    89 FillChar(gear^, sizeof(TVisualGear), 0);
    94 FillChar(gear^, sizeof(TVisualGear), 0);
    90 gear^.X:= real(X);
    95 gear^.X:= real(X);
   229                 Scale:= 0.75;
   234                 Scale:= 0.75;
   230                 Timer:= 1;
   235                 Timer:= 1;
   231                 end;
   236                 end;
   232     vgtDroplet:
   237     vgtDroplet:
   233                 begin
   238                 begin
       
   239                 // droplet counter for 0.9.24.2 bugfix
       
   240                 inc(numDroplets);
   234                 // old dx & dy calcs
   241                 // old dx & dy calcs
   235                 // dx:= 0.001 * (random(180) - 90);
   242                 // dx:= 0.001 * (random(180) - 90);
   236                 // dy:= -0.001 * (random(160) + 40);
   243                 // dy:= -0.001 * (random(160) + 40);
   237                 // => min speed ~ 0.098, max speed ~ 0.218, speed range ~ 0.120
   244                 // => min speed ~ 0.098, max speed ~ 0.218, speed range ~ 0.120
   238                 // => min angle(4096) ~ 129, max angle ~ 1919, angle range ~ 1790
   245                 // => min angle(4096) ~ 129, max angle ~ 1919, angle range ~ 1790
   456     else
   463     else
   457         VisualGearLayers[Gear^.Layer]:= Gear^.NextGear;
   464         VisualGearLayers[Gear^.Layer]:= Gear^.NextGear;
   458 
   465 
   459     if lastVisualGearByUID = Gear then
   466     if lastVisualGearByUID = Gear then
   460         lastVisualGearByUID:= nil;
   467         lastVisualGearByUID:= nil;
       
   468 
       
   469     if (Gear^.Kind = vgtDroplet) and (numDroplets > 0) then
       
   470         dec(numDroplets);
   461 
   471 
   462     Dispose(Gear);
   472     Dispose(Gear);
   463 end;
   473 end;
   464 
   474 
   465 function  VisualGearByUID(uid : Longword) : PVisualGear;
   475 function  VisualGearByUID(uid : Longword) : PVisualGear;