equal
deleted
inserted
replaced
93 end else isFalling:= true; |
93 end else isFalling:= true; |
94 |
94 |
95 if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
95 if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
96 begin |
96 begin |
97 Gear^.dX:= - Gear^.dX * Gear^.Elasticity; |
97 Gear^.dX:= - Gear^.dX * Gear^.Elasticity; |
|
98 Gear^.dY:= Gear^.dY * Gear^.Elasticity; |
98 Gear^.State:= Gear^.State or gstCollision |
99 Gear^.State:= Gear^.State or gstCollision |
99 end; |
100 end; |
100 |
101 |
101 if isFalling then Gear^.dY:= Gear^.dY + cGravity; |
102 if isFalling then Gear^.dY:= Gear^.dY + cGravity; |
102 |
103 |
1309 begin |
1310 begin |
1310 State:= State and not gstAttacking; |
1311 State:= State and not gstAttacking; |
1311 Message:= Message and not gm_Attack |
1312 Message:= Message and not gm_Attack |
1312 end |
1313 end |
1313 end; |
1314 end; |
|
1315 |
|
1316 //////////////////////////////////////////////////////////////////////////////// |
|
1317 procedure doStepMortar(Gear: PGear); |
|
1318 var dX, dY: hwFloat; |
|
1319 i: LongInt; |
|
1320 begin |
|
1321 AllInactive:= false; |
|
1322 doStepFallingGear(Gear); |
|
1323 if (Gear^.State and gstCollision) <> 0 then |
|
1324 begin |
|
1325 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound); |
|
1326 |
|
1327 for i:= 0 to 4 do |
|
1328 begin |
|
1329 dX:= - Gear^.dX + (GetRandom - _0_5) * _0_03; |
|
1330 dY:= - Gear^.dY + (GetRandom - _0_5) * _0_03; |
|
1331 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 0); |
|
1332 end; |
|
1333 |
|
1334 DeleteGear(Gear); |
|
1335 exit |
|
1336 end; |
|
1337 if (GameTicks and $3F) = 0 then |
|
1338 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0) |
|
1339 end; |