equal
deleted
inserted
replaced
7243 if (offsetX >= Sentry^.Radius) and (not cGravity.isNegative) then |
7243 if (offsetX >= Sentry^.Radius) and (not cGravity.isNegative) then |
7244 begin |
7244 begin |
7245 Sentry^.dY := -_0_25; |
7245 Sentry^.dY := -_0_25; |
7246 jumpTime := _2 * Sentry^.dY / cGravity; |
7246 jumpTime := _2 * Sentry^.dY / cGravity; |
7247 Sentry^.dX := SignAs(int2hwFloat(offsetX - Sentry^.Radius) / jumpTime, Sentry^.dX); |
7247 Sentry^.dX := SignAs(int2hwFloat(offsetX - Sentry^.Radius) / jumpTime, Sentry^.dX); |
|
7248 Sentry^.State := Sentry^.State or gstHHJumping; |
7248 MakeSentryJump := true; |
7249 MakeSentryJump := true; |
7249 end; |
7250 end; |
7250 end; |
7251 end; |
7251 |
7252 |
7252 function TraceAttackPath(fromX, fromY, toX, toY, step: hwFloat; mask: Word): LongWord; |
7253 function TraceAttackPath(fromX, fromY, toX, toY, step: hwFloat; mask: Word): LongWord; |
7395 end |
7396 end |
7396 end; |
7397 end; |
7397 |
7398 |
7398 procedure doStepSentryLand(Gear: PGear); |
7399 procedure doStepSentryLand(Gear: PGear); |
7399 var HHGear: PGear; |
7400 var HHGear: PGear; |
|
7401 land: Word; |
7400 const sentry_Idle = 0; |
7402 const sentry_Idle = 0; |
7401 sentry_Walking = 1; |
7403 sentry_Walking = 1; |
7402 sentry_Aiming = 2; |
7404 sentry_Aiming = 2; |
7403 sentry_Attacking = 3; |
7405 sentry_Attacking = 3; |
7404 sentry_Reloading = 4; |
7406 sentry_Reloading = 4; |
7409 exit; |
7411 exit; |
7410 |
7412 |
7411 if CheckSentryDestroyed(Gear, sentry_Reloading) then |
7413 if CheckSentryDestroyed(Gear, sentry_Reloading) then |
7412 exit; |
7414 exit; |
7413 |
7415 |
7414 if Gear^.dY.isNegative or (TestCollisionYwithGear(Gear, 1) = 0) then |
7416 land := TestCollisionYwithGear(Gear, 1); |
|
7417 if Gear^.dY.isNegative or (land = 0) or |
|
7418 ((Gear^.dY.QWordValue > _0_01.QWordValue) and ((Gear^.State and gstHHJumping) = 0)) then |
7415 begin |
7419 begin |
7416 DeleteCI(Gear); |
7420 DeleteCI(Gear); |
7417 doStepFallingGear(Gear); |
7421 doStepFallingGear(Gear); |
7418 if not (Gear^.Tag in [sentry_Idle, sentry_Reloading]) then |
7422 if not (Gear^.Tag in [sentry_Idle, sentry_Reloading]) then |
7419 ResetSentryState(Gear, sentry_Idle, 1000); |
7423 ResetSentryState(Gear, sentry_Idle, 1000); |
7420 exit; |
7424 exit; |
7421 end |
7425 end |
7422 else |
7426 else |
|
7427 begin |
7423 AddCI(Gear); |
7428 AddCI(Gear); |
|
7429 Gear^.State := Gear^.State and (not gstHHJumping); |
|
7430 Gear^.dX := SignAs(_0, Gear^.dX); |
|
7431 Gear^.dY := SignAs(_0, Gear^.dY); |
|
7432 end; |
7424 |
7433 |
7425 if Gear^.Timer > 0 then dec(Gear^.Timer); |
7434 if Gear^.Timer > 0 then dec(Gear^.Timer); |
7426 |
7435 |
7427 if Gear^.Timer = 0 then |
7436 if Gear^.Timer = 0 then |
7428 begin |
7437 begin |