hedgewars/uGearsHandlersMess.pas
changeset 12806 895ef1c8f5ff
parent 12805 6023a4f06013
child 12815 92218a06c9ff
equal deleted inserted replaced
12805:6023a4f06013 12806:895ef1c8f5ff
  1886         if isUnderwater then
  1886         if isUnderwater then
  1887             trackSpeed.QWordValue:= Gear^.Power div 2
  1887             trackSpeed.QWordValue:= Gear^.Power div 2
  1888         else
  1888         else
  1889             trackSpeed.QWordValue:= Gear^.Power;
  1889             trackSpeed.QWordValue:= Gear^.Power;
  1890         if (Gear^.X < targ^.X) and (Gear^.dX < _0_1)  then
  1890         if (Gear^.X < targ^.X) and (Gear^.dX < _0_1)  then
  1891              Gear^.dX:= Gear^.dX+trackSpeed // please leave as an add.  I like the effect
  1891             if (WorldEdge = weWrap) and ((targ^.X - Gear^.X) > ((Gear^.X - int2hwFloat(LeftX)) + (int2hwFloat(RightX) - targ^.X))) then
       
  1892                  Gear^.dX:= Gear^.dX-trackSpeed
       
  1893             else
       
  1894                  Gear^.dX:= Gear^.dX+trackSpeed // please leave as an add.  I like the effect
  1892         else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then
  1895         else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then
  1893             Gear^.dX:= Gear^.dX-trackSpeed;
  1896             if (WorldEdge = weWrap) and ((Gear^.X - targ^.X) > ((targ^.X - int2hwFloat(LeftX)) + (int2hwFloat(RightX) - Gear^.X))) then
       
  1897                 Gear^.dX:= Gear^.dX+trackSpeed
       
  1898             else
       
  1899                 Gear^.dX:= Gear^.dX-trackSpeed;
  1894         if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1)  then
  1900         if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1)  then
  1895              Gear^.dY:= Gear^.dY+trackSpeed
  1901              Gear^.dY:= Gear^.dY+trackSpeed
  1896         else if (Gear^.Y > targ^.Y) and (Gear^.dY > -_0_1) then
  1902         else if (Gear^.Y > targ^.Y) and (Gear^.dY > -_0_1) then
  1897             Gear^.dY:= Gear^.dY-trackSpeed
  1903             Gear^.dY:= Gear^.dY-trackSpeed
  1898         end
  1904         end
  3226 
  3232 
  3227 procedure doStepCakeDown(Gear: PGear);
  3233 procedure doStepCakeDown(Gear: PGear);
  3228 var
  3234 var
  3229     gi: PGear;
  3235     gi: PGear;
  3230     dmg, dmgBase, partyEpicness, i: LongInt;
  3236     dmg, dmgBase, partyEpicness, i: LongInt;
  3231     fX, fY: hwFloat;
  3237     fX, fY, tdX, tdY: hwFloat;
  3232     sparkles: PVisualGear;
  3238     sparkles: PVisualGear;
  3233 begin
  3239 begin
  3234     AllInactive := false;
  3240     AllInactive := false;
  3235 
  3241 
  3236     inc(Gear^.Tag);
  3242     inc(Gear^.Tag);
  3253         while gi <> nil do
  3259         while gi <> nil do
  3254             begin
  3260             begin
  3255             if gi^.Kind = gtHedgehog then
  3261             if gi^.Kind = gtHedgehog then
  3256                 begin
  3262                 begin
  3257                 dmg:= 0;
  3263                 dmg:= 0;
  3258                 if hwRound(PointDistance(gi^.X, fX, gi^.Y, fY, true)) < dmgBase then
  3264                 tdX:= gi^.X-fX;
  3259                     dmg:= dmgBase - max(hwRound(PointDistance(gi^.X, fX, gi^.Y, fY, true)), gi^.Radius);
  3265                 tdY:= gi^.Y-fY;
       
  3266                 if hwRound(hwAbs(tdX)+hwAbs(tdY)) < dmgBase then
       
  3267                     dmg:= dmgBase - max(hwRound(Distance(tdX, tdY)),gi^.Radius);
  3260                 if (dmg > 1) then dmg:= ModifyDamage(min(dmg div 2, Gear^.Boom), gi);
  3268                 if (dmg > 1) then dmg:= ModifyDamage(min(dmg div 2, Gear^.Boom), gi);
  3261                 if (dmg > 1) then
  3269                 if (dmg > 1) then
  3262                     if (CurrentHedgehog^.Gear = gi) and (gi^.Hedgehog^.Effects[heInvulnerable] = 0) then
  3270                     if (CurrentHedgehog^.Gear = gi) and (gi^.Hedgehog^.Effects[heInvulnerable] = 0) then
  3263                         begin
  3271                         begin
  3264                         gi^.State := gi^.State or gstLoser;
  3272                         gi^.State := gi^.State or gstLoser;