hedgewars/uGearsHandlersMess.pas
changeset 10802 089e43d01f74
parent 10800 3c71e5158519
child 10806 02ef8815ec9d
equal deleted inserted replaced
10801:50bc2c75eee7 10802:089e43d01f74
  1781     if targ <> nil then
  1781     if targ <> nil then
  1782         begin
  1782         begin
  1783         tX:=Gear^.X-targ^.X;
  1783         tX:=Gear^.X-targ^.X;
  1784         tY:=Gear^.Y-targ^.Y;
  1784         tY:=Gear^.Y-targ^.Y;
  1785         // allow escaping - should maybe flag this too
  1785         // allow escaping - should maybe flag this too
  1786         if ((tX.Round+tY.Round > Gear^.Angle*4) and
  1786         if (GameTicks > Gear^.FlightTime+10000) or 
  1787             (hwRound(hwSqr(tX) + hwSqr(tY)) > sqr(Gear^.Angle*4))) then
  1787             ((tX.Round+tY.Round > Gear^.Angle*6) and
       
  1788             (hwRound(hwSqr(tX) + hwSqr(tY)) > sqr(Gear^.Angle*6))) then
  1788             targ:= nil
  1789             targ:= nil
  1789         end;
  1790         end;
  1790 
  1791 
  1791     // todo, allow not finding new target, set timeout on target retention
  1792     // todo, allow not finding new target, set timeout on target retention
  1792     if (Gear^.State and (gsttmpFlag or gstAttacking) =  gsttmpFlag) and
  1793     if (ReadyTimeLeft = 0) and (TurnTimeLeft > 0) and ((TurnTimeLeft > cHedgehogTurnTime) or (cHedgehogTurnTime-TurnTimeLeft > 5000)) and
       
  1794        (Gear^.State and (gsttmpFlag or gstAttacking) =  gsttmpFlag) and
  1793        (Gear^.Angle > 0) and ((GameTicks and $FF) = 17) and
  1795        (Gear^.Angle > 0) and ((GameTicks and $FF) = 17) and
  1794        (GameTicks > Gear^.FlightTime) then // recheck hunted hog
  1796        (GameTicks > Gear^.FlightTime) then // recheck hunted hog
  1795         begin
  1797         begin
  1796         if targ <> nil then
  1798         if targ <> nil then
  1797              targDist:= Distance(Gear^.X-targ^.X,Gear^.Y-targ^.Y).Round
  1799              targDist:= Distance(Gear^.X-targ^.X,Gear^.Y-targ^.Y).Round
  1816                                 Gear^.Hedgehog:= @Hedgehogs[i];
  1818                                 Gear^.Hedgehog:= @Hedgehogs[i];
  1817                                 targ:= tmpG;
  1819                                 targ:= tmpG;
  1818                                 end
  1820                                 end
  1819                             end
  1821                             end
  1820                         end;
  1822                         end;
  1821         if targ <> nil then Gear^.FlightTime:= GameTicks + 10000
  1823         if targ <> nil then Gear^.FlightTime:= GameTicks + 5000
  1822         end;
  1824         end;
  1823     if targ <> nil then
  1825     if targ <> nil then
  1824         begin
  1826         begin
  1825         trackSpeed:= _0;
  1827         trackSpeed:= _0;
  1826         trackSpeed.QWordValue:= Gear^.Power;
  1828         trackSpeed.QWordValue:= Gear^.Power;
  1829         else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then
  1831         else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then
  1830             Gear^.dX:= Gear^.dX-trackSpeed;
  1832             Gear^.dX:= Gear^.dX-trackSpeed;
  1831         if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1)  then
  1833         if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1)  then
  1832              Gear^.dY:= Gear^.dY+trackSpeed
  1834              Gear^.dY:= Gear^.dY+trackSpeed
  1833         else if (Gear^.Y > targ^.Y) and (Gear^.dY > -_0_1) then
  1835         else if (Gear^.Y > targ^.Y) and (Gear^.dY > -_0_1) then
  1834             Gear^.dY:= Gear^.dY-trackSpeed;
  1836             Gear^.dY:= Gear^.dY-trackSpeed
  1835         end
  1837         end
  1836     else Gear^.Hedgehog:= nil;
  1838     else Gear^.Hedgehog:= nil;
  1837 
  1839 
  1838     if ((Gear^.State and gsttmpFlag) <> 0) and (Gear^.Health <> 0) then
  1840     if ((Gear^.State and gsttmpFlag) <> 0) and (Gear^.Health <> 0) then
  1839         begin
  1841         begin