equal
deleted
inserted
replaced
318 if Gear^.AdvBounce > 1 then dec(Gear^.AdvBounce); |
318 if Gear^.AdvBounce > 1 then dec(Gear^.AdvBounce); |
319 |
319 |
320 if isFalling then |
320 if isFalling then |
321 begin |
321 begin |
322 Gear^.dY := Gear^.dY + cGravity; |
322 Gear^.dY := Gear^.dY + cGravity; |
323 if (GameFlags and gfMoreWind) <> 0 then Gear^.dX := Gear^.dX + cWindSpeed * _16 / max(12,sqr(Gear^.Radius)); |
323 if (GameFlags and gfMoreWind) <> 0 then Gear^.dX := Gear^.dX + cWindSpeed * _16 / max(12,sqr(Gear^.Radius)) |
324 end; |
324 end; |
325 |
325 |
326 Gear^.X := Gear^.X + Gear^.dX; |
326 Gear^.X := Gear^.X + Gear^.dX; |
327 Gear^.Y := Gear^.Y + Gear^.dY; |
327 Gear^.Y := Gear^.Y + Gear^.dY; |
328 CheckGearDrowning(Gear); |
328 CheckGearDrowning(Gear); |
1108 |
1108 |
1109 if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY := _0; |
1109 if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY := _0; |
1110 HHGear^.X := HHGear^.X + HHGear^.dX; |
1110 HHGear^.X := HHGear^.X + HHGear^.dX; |
1111 HHGear^.Y := HHGear^.Y + HHGear^.dY; |
1111 HHGear^.Y := HHGear^.Y + HHGear^.dY; |
1112 HHGear^.dY := HHGear^.dY + cGravity; |
1112 HHGear^.dY := HHGear^.dY + cGravity; |
|
1113 if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed * _0_2; |
1113 |
1114 |
1114 if (Gear^.Message and gmAttack) <> 0 then |
1115 if (Gear^.Message and gmAttack) <> 0 then |
1115 begin |
1116 begin |
1116 Gear^.X := HHGear^.X; |
1117 Gear^.X := HHGear^.X; |
1117 Gear^.Y := HHGear^.Y; |
1118 Gear^.Y := HHGear^.Y; |
1170 |
1171 |
1171 if (Gear^.Message and gmLeft <> 0) then HHGear^.dX := HHGear^.dX - _0_0002 |
1172 if (Gear^.Message and gmLeft <> 0) then HHGear^.dX := HHGear^.dX - _0_0002 |
1172 else |
1173 else |
1173 if (Gear^.Message and gmRight <> 0) then HHGear^.dX := HHGear^.dX + _0_0002; |
1174 if (Gear^.Message and gmRight <> 0) then HHGear^.dX := HHGear^.dX + _0_0002; |
1174 |
1175 |
1175 if not TestCollisionYwithGear(HHGear, 1) then HHGear^.dY := HHGear^.dY + cGravity; |
1176 if not TestCollisionYwithGear(HHGear, 1) then |
|
1177 begin |
|
1178 HHGear^.dY := HHGear^.dY + cGravity; |
|
1179 if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed * _0_2 |
|
1180 end; |
1176 |
1181 |
1177 ropeDx := HHGear^.X - Gear^.X; |
1182 ropeDx := HHGear^.X - Gear^.X; |
1178 // vector between hedgehog and rope attaching point |
1183 // vector between hedgehog and rope attaching point |
1179 ropeDy := HHGear^.Y - Gear^.Y; |
1184 ropeDy := HHGear^.Y - Gear^.Y; |
1180 |
1185 |
1371 end |
1376 end |
1372 else |
1377 else |
1373 begin |
1378 begin |
1374 HHGear^.Y := HHGear^.Y + HHGear^.dY; |
1379 HHGear^.Y := HHGear^.Y + HHGear^.dY; |
1375 Gear^.Y := Gear^.Y + HHGear^.dY; |
1380 Gear^.Y := Gear^.Y + HHGear^.dY; |
1376 HHGear^.dY := HHGear^.dY + cGravity |
1381 HHGear^.dY := HHGear^.dY + cGravity; |
|
1382 if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed * _0_2 |
1377 end; |
1383 end; |
1378 |
1384 |
1379 tt := Gear^.Elasticity; |
1385 tt := Gear^.Elasticity; |
1380 tx := _0; |
1386 tx := _0; |
1381 ty := _0; |
1387 ty := _0; |
3087 dec(Gear^.Health, fuel div 5); |
3093 dec(Gear^.Health, fuel div 5); |
3088 Gear^.MsgParam := Gear^.MsgParam or (HHGear^.Message and (gmLeft or gmRight)); |
3094 Gear^.MsgParam := Gear^.MsgParam or (HHGear^.Message and (gmLeft or gmRight)); |
3089 Gear^.Timer := GameTicks |
3095 Gear^.Timer := GameTicks |
3090 end |
3096 end |
3091 end; |
3097 end; |
3092 if not isUnderwater and ((GameFlags and gfMoreWind) <> 0) then HHGear^.dX := HHGear^.dX + cWindSpeed * _16 / sqr(cHHRadius); |
|
3093 |
3098 |
3094 // erases them all at once :-/ |
3099 // erases them all at once :-/ |
3095 if (Gear^.Timer <> 0) and (GameTicks - Gear^.Timer > 250) then |
3100 if (Gear^.Timer <> 0) and (GameTicks - Gear^.Timer > 250) then |
3096 begin |
3101 begin |
3097 Gear^.Timer := 0; |
3102 Gear^.Timer := 0; |
3219 begin |
3224 begin |
3220 HHGear^.dX := HHGear^.dX + (move * _0_1); |
3225 HHGear^.dX := HHGear^.dX + (move * _0_1); |
3221 dec(Gear^.Health, fuel div 5); |
3226 dec(Gear^.Health, fuel div 5); |
3222 Gear^.MsgParam := Gear^.MsgParam or (HHGear^.Message and (gmLeft or gmRight)); |
3227 Gear^.MsgParam := Gear^.MsgParam or (HHGear^.Message and (gmLeft or gmRight)); |
3223 end; |
3228 end; |
3224 if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed * _16 / sqr(cHHRadius); |
|
3225 |
3229 |
3226 if Gear^.Health < 0 then Gear^.Health := 0; |
3230 if Gear^.Health < 0 then Gear^.Health := 0; |
3227 if ((GameTicks and $FF) = 0) and (Gear^.Health < 500) then |
3231 if ((GameTicks and $FF) = 0) and (Gear^.Health < 500) then |
3228 for i:= ((500-Gear^.Health) div 250) downto 0 do |
3232 for i:= ((500-Gear^.Health) div 250) downto 0 do |
3229 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFeather); |
3233 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFeather); |