hedgewars/GSHandlers.inc
changeset 6555 11f82e49d276
parent 6535 51a7e71ad317
child 6556 faa47a7e614a
equal deleted inserted replaced
6554:a262ef09c7e6 6555:11f82e49d276
  1411 
  1411 
  1412 begin
  1412 begin
  1413     HHGear := Gear^.Hedgehog^.Gear;
  1413     HHGear := Gear^.Hedgehog^.Gear;
  1414 
  1414 
  1415     if ((HHGear^.State and gstHHDriven) = 0)
  1415     if ((HHGear^.State and gstHHDriven) = 0)
  1416        or (CheckGearDrowning(HHGear)) then
  1416        or (CheckGearDrowning(HHGear)) or (Gear^.PortalCounter <> 0) then
  1417         begin
  1417         begin
  1418         PlaySound(sndRopeRelease);
  1418         PlaySound(sndRopeRelease);
  1419         RopeDeleteMe(Gear, HHGear);
  1419         RopeDeleteMe(Gear, HHGear);
  1420         exit
  1420         exit
  1421         end;
  1421         end;
  3874              continue;
  3874              continue;
  3875 
  3875 
  3876         // don't port hogs on rope
  3876         // don't port hogs on rope
  3877         // TODO: this will also prevent hogs while falling after rope use from
  3877         // TODO: this will also prevent hogs while falling after rope use from
  3878         //       falling through portals... fix that!
  3878         //       falling through portals... fix that!
  3879         if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil)
       
  3880            and (iterator = CurrentHedgehog^.Gear) and (CurAmmoGear <> nil) and (CurAmmoGear^.Kind =
       
  3881            gtRope) then
       
  3882             continue;
       
  3883 
  3879 
  3884         // check if gear fits through portal
  3880         // check if gear fits through portal
  3885         if (iterator^.Radius > Gear^.Radius) then
  3881         if (iterator^.Radius > Gear^.Radius) then
  3886             continue;
  3882             continue;
  3887 
  3883 
  4106         else
  4102         else
  4107             begin
  4103             begin
  4108             inc(iterator^.PortalCounter);
  4104             inc(iterator^.PortalCounter);
  4109             iterator^.State:= iterator^.State and (not gstHHHJump)
  4105             iterator^.State:= iterator^.State and (not gstHHHJump)
  4110             end;
  4106             end;
       
  4107 
       
  4108         if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil)
       
  4109            and (iterator = CurrentHedgehog^.Gear) and (CurAmmoGear <> nil) and (CurAmmoGear^.Kind =
       
  4110            gtRope) then CurAmmoGear^.PortalCounter:= 1;
  4111 
  4111 
  4112         if not isbullet and (iterator^.Kind <> gtFlake) then
  4112         if not isbullet and (iterator^.Kind <> gtFlake) then
  4113             FollowGear := iterator;
  4113             FollowGear := iterator;
  4114 
  4114 
  4115         // store X/Y values of exit for net bullet trail
  4115         // store X/Y values of exit for net bullet trail