# HG changeset patch # User Wuzzy # Date 1557793769 -7200 # Node ID d6a8ef85cf53a50430b76ef83a7a922f5277c806 # Parent 4accf3e18dbc8794724694c402e47c612a0104f1 Fix parachute moving hog very fast or making it stuck when bumping into wall while facing the opposite direction (bug 742) diff -r 4accf3e18dbc -r d6a8ef85cf53 ChangeLog.txt --- a/ChangeLog.txt Tue May 14 01:10:02 2019 +0200 +++ b/ChangeLog.txt Tue May 14 02:29:29 2019 +0200 @@ -19,6 +19,7 @@ * Deny placement of piano beyond bounce world edge * Fix cut scenes not being skipped when pressing precise in enemy turn * Fix laser sight not working properly when it starts out of map bounds + * Fix parachute making hog stuck or fast when bumping into wall while looking other way * Add missing winner animation in single missions Styles and schemes: diff -r 4accf3e18dbc -r d6a8ef85cf53 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Tue May 14 01:10:02 2019 +0200 +++ b/hedgewars/uGearsHandlersMess.pas Tue May 14 02:29:29 2019 +0200 @@ -2929,6 +2929,7 @@ procedure doStepParachuteWork(Gear: PGear); var HHGear: PGear; + deltaX: hwFloat; begin HHGear := Gear^.Hedgehog^.Gear; @@ -2954,13 +2955,14 @@ exit end; - HHGear^.X := HHGear^.X + cWindSpeed * 200; + deltaX:= _0; + deltaX:= deltaX + cWindSpeed * 200; if (Gear^.Message and gmLeft) <> 0 then - HHGear^.X := HHGear^.X - cMaxWindSpeed * 80 + deltaX := deltaX - cMaxWindSpeed * 80 else if (Gear^.Message and gmRight) <> 0 then - HHGear^.X := HHGear^.X + cMaxWindSpeed * 80; + deltaX := deltaX + cMaxWindSpeed * 80; if (Gear^.Message and gmUp) <> 0 then HHGear^.Y := HHGear^.Y - cGravity * 40 @@ -2968,9 +2970,10 @@ else if (Gear^.Message and gmDown) <> 0 then HHGear^.Y := HHGear^.Y + cGravity * 40; + HHGear^.X := HHGear^.X + deltaX; // don't drift into obstacles - if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0 then - HHGear^.X := HHGear^.X - int2hwFloat(hwSign(HHGear^.dX)); + if TestCollisionXwithGear(HHGear, hwSign(deltaX)) <> 0 then + HHGear^.X := HHGear^.X - int2hwFloat(hwSign(deltaX)); HHGear^.Y := HHGear^.Y + cGravity * 100; Gear^.X := HHGear^.X; Gear^.Y := HHGear^.Y