# HG changeset patch # User nemo # Date 1346644854 14400 # Node ID e7bef1a4fda77b2f9c1d5007c150f44bca5fa38a # Parent b993257902d37ee98dc8366b4dfd4a24e8c2b1d3 So, unc0rr won't let me revert to pre-e496587db93e, but reverting db731c523653 makes the rope less-sticky-enough to actually be usable in an ordinary game without my screaming at the monitor as I drown for the nth time... diff -r b993257902d3 -r e7bef1a4fda7 hedgewars/uGearsHandlersRope.pas --- a/hedgewars/uGearsHandlersRope.pas Sun Sep 02 22:27:01 2012 +0200 +++ b/hedgewars/uGearsHandlersRope.pas Mon Sep 03 00:00:54 2012 -0400 @@ -101,7 +101,7 @@ len, tx, ty, nx, ny, ropeDx, ropeDy, mdX, mdY, sDx, sDy: hwFloat; i, lx, ly, cd: LongInt; haveCollision, - haveDivided, bx, by: boolean; + haveDivided: boolean; begin if GameTicks mod 8 <> 0 then exit; @@ -180,29 +180,23 @@ HHGear^.dX := Gear^.X + mdX * Gear^.Elasticity - tx; HHGear^.dY := Gear^.Y + mdY * Gear^.Elasticity - ty; - sDx:= HHGear^.dX / 4; - sDy:= HHGear^.dY / 4; + sDx:= HHGear^.dX / 8; + sDy:= HHGear^.dY / 8; HHGear^.X:= tx; HHGear^.Y:= ty; i:= 0; - bx:= TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)); - by:= TestCollisionYwithGear(HHGear, hwSign(HHGear^.dY)) <> 0; - while not ((i = 4) - or bx - or by) do + while not ((i = 8) + or TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) + or (TestCollisionYwithGear(HHGear, hwSign(HHGear^.dY)) <> 0)) do begin inc(i); HHGear^.X:= HHGear^.X + sDx; HHGear^.Y:= HHGear^.Y + sDy; - bx:= TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)); - by:= TestCollisionYwithGear(HHGear, hwSign(HHGear^.dY)) <> 0; end; //// - if not bx then HHGear^.dX:= HHGear^.X - tx; - if not by then HHGear^.dY:= HHGear^.Y - ty; haveDivided := false; // check whether rope needs dividing