equal
deleted
inserted
replaced
671 |
671 |
672 if (Gear^.Kind = gtMelonPiece) |
672 if (Gear^.Kind = gtMelonPiece) |
673 or (Gear^.Kind = gtBall) then |
673 or (Gear^.Kind = gtBall) then |
674 CalcRotationDirAngle(Gear) |
674 CalcRotationDirAngle(Gear) |
675 else if (GameTicks and $1F) = 0 then |
675 else if (GameTicks and $1F) = 0 then |
676 begin |
676 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
677 if hwRound(Gear^.Y) > cWaterLine then |
|
678 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) |
|
679 else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) |
|
680 end |
|
681 end; |
677 end; |
682 |
678 |
683 //////////////////////////////////////////////////////////////////////////////// |
679 //////////////////////////////////////////////////////////////////////////////// |
684 procedure doStepShell(Gear: PGear); |
680 procedure doStepShell(Gear: PGear); |
685 begin |
681 begin |
692 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); |
688 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); |
693 DeleteGear(Gear); |
689 DeleteGear(Gear); |
694 exit |
690 exit |
695 end; |
691 end; |
696 if (GameTicks and $3F) = 0 then |
692 if (GameTicks and $3F) = 0 then |
697 begin |
693 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
698 if hwRound(Gear^.Y) > cWaterLine then |
|
699 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) |
|
700 else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) |
|
701 end |
|
702 end; |
694 end; |
703 |
695 |
704 //////////////////////////////////////////////////////////////////////////////// |
696 //////////////////////////////////////////////////////////////////////////////// |
705 procedure doStepSnowball(Gear: PGear); |
697 procedure doStepSnowball(Gear: PGear); |
706 var kick, i: LongInt; |
698 var kick, i: LongInt; |
999 else |
991 else |
1000 begin |
992 begin |
1001 if (GameTicks and $F) = 0 then |
993 if (GameTicks and $F) = 0 then |
1002 begin |
994 begin |
1003 if (GameTicks and $30) = 0 then |
995 if (GameTicks and $30) = 0 then |
1004 begin |
996 AddVisualGear(gX, gY, vgtBeeTrace); |
1005 if nuw then |
997 |
1006 AddVisualGear(gX, gY, vgtBubble) |
|
1007 else |
|
1008 AddVisualGear(gX, gY, vgtBeeTrace); |
|
1009 end; |
|
1010 Gear^.dX := Gear^.Elasticity * (Gear^.dX + _0_000064 * (Gear^.Target.X - gX)); |
998 Gear^.dX := Gear^.Elasticity * (Gear^.dX + _0_000064 * (Gear^.Target.X - gX)); |
1011 Gear^.dY := Gear^.Elasticity * (Gear^.dY + _0_000064 * (Gear^.Target.Y - gY)); |
999 Gear^.dY := Gear^.Elasticity * (Gear^.dY + _0_000064 * (Gear^.Target.Y - gY)); |
1012 // make sure new speed isn't higher than original one (which we stored in Friction variable) |
1000 // make sure new speed isn't higher than original one (which we stored in Friction variable) |
1013 t := Gear^.Friction / Distance(Gear^.dX, Gear^.dY); |
1001 t := Gear^.Friction / Distance(Gear^.dX, Gear^.dY); |
1014 Gear^.dX := Gear^.dX * t; |
1002 Gear^.dX := Gear^.dX * t; |
2763 DeleteGear(Gear); |
2751 DeleteGear(Gear); |
2764 exit |
2752 exit |
2765 end; |
2753 end; |
2766 |
2754 |
2767 if (GameTicks and $3F) = 0 then |
2755 if (GameTicks and $3F) = 0 then |
2768 begin |
2756 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
2769 if hwRound(Gear^.Y) > cWaterLine then |
|
2770 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) |
|
2771 else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) |
|
2772 end |
|
2773 end; |
2757 end; |
2774 |
2758 |
2775 //////////////////////////////////////////////////////////////////////////////// |
2759 //////////////////////////////////////////////////////////////////////////////// |
2776 procedure doStepKamikazeWork(Gear: PGear); |
2760 procedure doStepKamikazeWork(Gear: PGear); |
2777 var |
2761 var |
3268 oldY := Gear^.Y; |
3252 oldY := Gear^.Y; |
3269 |
3253 |
3270 doStepFallingGear(Gear); |
3254 doStepFallingGear(Gear); |
3271 |
3255 |
3272 if (GameTicks and $3F) = 0 then |
3256 if (GameTicks and $3F) = 0 then |
3273 begin |
3257 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
3274 if hwRound(Gear^.Y) > cWaterLine then |
|
3275 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble) |
|
3276 else AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace) |
|
3277 end; |
|
3278 |
3258 |
3279 if ((Gear^.State and gstCollision) <> 0) then |
3259 if ((Gear^.State and gstCollision) <> 0) then |
3280 begin |
3260 begin |
3281 //hit |
3261 //hit |
3282 Gear^.dX := oldDx; |
3262 Gear^.dX := oldDx; |