hedgewars/GSHandlers.inc
changeset 8030 165aeaaaf445
parent 8003 7d8bce524daf
child 8061 c08e9c3e0737
equal deleted inserted replaced
8027:e5ba3dd12531 8030:165aeaaaf445
  1689         if Gear^.Health <= 0 then
  1689         if Gear^.Health <= 0 then
  1690             exBoom := true;
  1690             exBoom := true;
  1691         end
  1691         end
  1692     else
  1692     else
  1693         begin 
  1693         begin 
  1694         if (Gear^.Pos <> posCaseHealth) and (GameTicks and $3FF = 0) then // stir it up every second or so
  1694         if (Gear^.Pos <> posCaseHealth) and (GameTicks and $1FFF = 0) then // stir 'em up periodically
  1695             begin
  1695             begin
  1696             gi := GearsList;
  1696             gi := GearsList;
  1697             while gi <> nil do
  1697             while gi <> nil do
  1698                 begin
  1698                 begin
  1699                 if gi^.Kind = gtGenericFaller then
  1699                 if gi^.Kind = gtGenericFaller then
  5141     gi := GearsList;
  5141     gi := GearsList;
  5142     while gi <> nil do
  5142     while gi <> nil do
  5143         begin
  5143         begin
  5144         with gi^ do CheckSum:= CheckSum xor X.round xor X.frac xor dX.round xor dX.frac xor Y.round xor Y.frac xor dY.round xor dY.frac;
  5144         with gi^ do CheckSum:= CheckSum xor X.round xor X.frac xor dX.round xor dX.frac xor Y.round xor Y.frac xor dY.round xor dY.frac;
  5145         AddRandomness(CheckSum);
  5145         AddRandomness(CheckSum);
       
  5146         if gi^.Kind = gtGenericFaller then gi^.State:= gi^.State and not gstTmpFlag;
  5146         gi := gi^.NextGear
  5147         gi := gi^.NextGear
  5147         end;
  5148         end;
  5148     AddPickup(Gear^.Hedgehog^, a, Gear^.Power, hwRound(Gear^.X), hwRound(Gear^.Y));
  5149     AddPickup(Gear^.Hedgehog^, a, Gear^.Power, hwRound(Gear^.X), hwRound(Gear^.Y));
  5149     DeleteGear(Gear)
  5150     DeleteGear(Gear)
  5150     end;
  5151     end;
  5158     else
  5159     else
  5159         begin
  5160         begin
  5160         DeleteGear(Gear);
  5161         DeleteGear(Gear);
  5161         exit
  5162         exit
  5162         end;
  5163         end;
  5163     
  5164 if (Gear^.State and gstTmpFlag <> 0) or (GameTicks and $7 = 0) then
  5164 doStepFallingGear(Gear);
  5165     begin
       
  5166     doStepFallingGear(Gear);
       
  5167     if (Gear^.State and gstInvisible <> 0) and (GameTicks and $FF = 0) and ((hwRound(Gear^.X) < leftX) or (hwRound(Gear^.X) > rightX) or (hwRound(Gear^.Y) < topY)) then
       
  5168         begin
       
  5169         Gear^.X:= int2hwFloat(GetRandom(rightX-leftX)+leftX);
       
  5170         Gear^.Y:= int2hwFloat(GetRandom(LAND_HEIGHT-topY)+topY);
       
  5171         Gear^.dX:= _90-(GetRandomf*_360);
       
  5172         Gear^.dY:= _90-(GetRandomf*_360)
       
  5173         end;
       
  5174     end
  5165 end;
  5175 end;
  5166 
  5176 
  5167 procedure doStepCreeper(Gear: PGear);
  5177 procedure doStepCreeper(Gear: PGear);
  5168 var hogs: PGearArrayS;
  5178 var hogs: PGearArrayS;
  5169     HHGear: PGear;
  5179     HHGear: PGear;