hedgewars/GSHandlers.inc
branchicegun
changeset 8557 18330b24b92c
parent 8548 b98631bf2066
child 8560 134a098235fa
equal deleted inserted replaced
8554:84a279d0556c 8557:18330b24b92c
  5059     if GameTicks mod 10 = 0 then dec(Gear^.Health);
  5059     if GameTicks mod 10 = 0 then dec(Gear^.Health);
  5060 end;
  5060 end;
  5061 
  5061 
  5062 
  5062 
  5063 procedure updateTarget(Gear:PGear; newX, newY:HWFloat);
  5063 procedure updateTarget(Gear:PGear; newX, newY:HWFloat);
       
  5064     var
       
  5065     iter:PGear;    
  5064 begin
  5066 begin
  5065   with Gear^ do
  5067   with Gear^ do
  5066   begin
  5068   begin
  5067     dX:= newX;
  5069     dX:= newX;
  5068     dY:= newY;
  5070     dY:= newY;
  5069     Pos:= 0;
  5071     Pos:= 0;
  5070     Target.X:= NoPointX;
  5072     Target.X:= NoPointX;
  5071     LastDamage:= nil;
  5073     LastDamage:= nil;
  5072     X:= Hedgehog^.Gear^.X;
  5074     X:= Hedgehog^.Gear^.X;
  5073     Y:= Hedgehog^.Gear^.Y;
  5075     Y:= Hedgehog^.Gear^.Y;
  5074     (* unfreeze all semifrozen hogs - make this generic hog cleanup
  5076     //unfreeze all semifrozen hogs - make this generic hog cleanup
  5075     iter := GearsList;
  5077     iter := GearsList;
  5076     while iter <> nil do
  5078     while iter <> nil do
  5077         begin
  5079         begin
  5078         if (iter^.Kind = gtHedgehog) and 
  5080         if (iter^.Kind = gtHedgehog) and 
  5079         (iter^.Hedgehog^.Effects[heFrozen] < 0) then 
  5081         (iter^.Hedgehog^.Effects[heFrozen] and $FF = 0) then 
  5080         iter^.Hedgehog^.Effects[heFrozen]:= 0;
  5082         iter^.Hedgehog^.Effects[heFrozen]:= 0;
  5081         iter:= iter^.NextGear
  5083         iter:= iter^.NextGear
  5082         end *)
  5084         end 
  5083   end;
  5085   end;
  5084 end;
  5086 end;
  5085 
  5087 
  5086 
  5088 
  5087 function isLanscapeEdge(weight:Longint):boolean;
  5089 function isLanscapeEdge(weight:Longint):boolean;
  5231                     DrawIce(Gear, Target.X, Target.Y);                    
  5233                     DrawIce(Gear, Target.X, Target.Y);                    
  5232                     IceState := iceWaitNextTarget;
  5234                     IceState := iceWaitNextTarget;
  5233                 end;
  5235                 end;
  5234 
  5236 
  5235 // freeze nearby hogs
  5237 // freeze nearby hogs
  5236                 hogs := GearsNear(Gear^.X, Gear^.Y, gtHedgehog, Gear^.Radius);
  5238                 hogs := GearsNear(int2hwFloat(Target.X), int2hwFloat(Target.Y), gtHedgehog, Gear^.Radius);
  5237                 if hogs.size > 0 then
  5239                 if hogs.size > 0 then
  5238                     for i:= 0 to hogs.size - 1 do
  5240                     for i:= 0 to hogs.size - 1 do
  5239                     begin
  5241                     begin
  5240                         if hogs.ar^[i] <> HHGear then
  5242                         if hogs.ar^[i] <> HHGear then
  5241                         begin
  5243                         begin
  5242                         //if Gear^.Hedgehog^.Effects[heFrozen]:= 0;
  5244                             if GameTicks mod 10 = 0 then 
       
  5245                             if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] < 256 then
       
  5246                                 hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] := hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] + 1;
  5243                         end;                        
  5247                         end;                        
  5244                     end;
  5248                     end;
  5245                 inc(Pos)
  5249                 inc(Pos)
  5246             end
  5250             end
  5247             else if (t > 400) and ((gY > cWaterLine) or
  5251             else if (t > 400) and ((gY > cWaterLine) or
  5251                 Target.X:= gX;
  5255                 Target.X:= gX;
  5252                 Target.Y:= gY;
  5256                 Target.Y:= gY;
  5253                 X:= HHGear^.X;
  5257                 X:= HHGear^.X;
  5254                 Y:= HHGear^.Y
  5258                 Y:= HHGear^.Y
  5255             end;
  5259             end;
  5256             if (gX > max(LAND_WIDTH,4096)*2) or
  5260             {if (gX > max(LAND_WIDTH,4096)*2) or
  5257                     (gX < -max(LAND_WIDTH,4096)) or
  5261                     (gX < -max(LAND_WIDTH,4096)) or
  5258                     (gY < -max(LAND_HEIGHT,4096)) or
  5262                     (gY < -max(LAND_HEIGHT,4096)) or
  5259                     (gY > max(LAND_HEIGHT,4096)+512) then
  5263                     (gY > max(LAND_HEIGHT,4096)+512) then
  5260             begin
  5264             begin
  5261                 X:= HHGear^.X;
  5265                 X:= HHGear^.X;
  5262                 Y:= HHGear^.Y
  5266                 Y:= HHGear^.Y
  5263             end
  5267             end}
  5264         end
  5268         end
  5265     end;
  5269     end;
  5266 end;
  5270 end;
  5267 
  5271 
  5268 procedure doStepAddAmmo(Gear: PGear);
  5272 procedure doStepAddAmmo(Gear: PGear);