diff -r fcbdee9cdd74 -r b894922d58cc hedgewars/uGearsHandlersRope.pas --- a/hedgewars/uGearsHandlersRope.pas Tue Sep 08 19:20:58 2015 +0300 +++ b/hedgewars/uGearsHandlersRope.pas Mon Nov 16 22:57:24 2015 +0300 @@ -42,7 +42,8 @@ OutError('ERROR: doStepRopeAfterAttack called while HHGear = nil', IsNilHHFatal); DeleteGear(Gear); exit() - end; + end + else if not CurrentTeam^.ExtDriven and (FollowGear <> nil) then FollowGear := HHGear; tX:= HHGear^.X; if WorldWrap(HHGear) and (WorldEdge = weWrap) and @@ -137,7 +138,8 @@ OutError('ERROR: doStepRopeWork called while HHGear = nil', IsNilHHFatal); DeleteGear(Gear); exit() - end; + end + else if not CurrentTeam^.ExtDriven and (FollowGear <> nil) then FollowGear := HHGear; if ((HHGear^.State and gstHHDriven) = 0) or (CheckGearDrowning(HHGear)) or (Gear^.PortalCounter <> 0) then @@ -425,6 +427,7 @@ HHGear: PGear; tx, ty, tt: hwFloat; begin + Gear^.X := Gear^.X - Gear^.dX; Gear^.Y := Gear^.Y - Gear^.dY; Gear^.Elasticity := Gear^.Elasticity + _1; @@ -435,7 +438,8 @@ OutError('ERROR: doStepRopeAttach called while HHGear = nil', IsNilHHFatal); DeleteGear(Gear); exit() - end; + end + else if not CurrentTeam^.ExtDriven and (FollowGear <> nil) then FollowGear := HHGear; DeleteCI(HHGear);