equal
deleted
inserted
replaced
100 end; |
100 end; |
101 end; |
101 end; |
102 gi := gi^.NextGear |
102 gi := gi^.NextGear |
103 end; |
103 end; |
104 end; |
104 end; |
|
105 |
105 //////////////////////////////////////////////////////////////////////////////// |
106 //////////////////////////////////////////////////////////////////////////////// |
106 procedure doStepDrowningGear(Gear: PGear); |
107 procedure doStepDrowningGear(Gear: PGear); |
107 forward; |
108 forward; |
108 |
109 |
109 function CheckGearDrowning(Gear: PGear): boolean; |
110 function CheckGearDrowning(Gear: PGear): boolean; |
233 else |
234 else |
234 ApplyDamage(Gear, CurrentHedgehog, dmg, dsFall); |
235 ApplyDamage(Gear, CurrentHedgehog, dmg, dsFall); |
235 end |
236 end |
236 end; |
237 end; |
237 |
238 |
238 //////////////////////////////////////////////////////////////////////////////// |
|
239 //////////////////////////////////////////////////////////////////////////////// |
239 //////////////////////////////////////////////////////////////////////////////// |
240 procedure CalcRotationDirAngle(Gear: PGear); |
240 procedure CalcRotationDirAngle(Gear: PGear); |
241 var |
241 var |
242 dAngle: real; |
242 dAngle: real; |
243 begin |
243 begin |
475 if (GameTicks and $3F) = 0 then |
475 if (GameTicks and $3F) = 0 then |
476 if (Gear^.State and gstCollision) = 0 then |
476 if (Gear^.State and gstCollision) = 0 then |
477 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace); |
477 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace); |
478 end; |
478 end; |
479 end; |
479 end; |
|
480 |
480 //////////////////////////////////////////////////////////////////////////////// |
481 //////////////////////////////////////////////////////////////////////////////// |
481 procedure doStepMolotov(Gear: PGear); |
482 procedure doStepMolotov(Gear: PGear); |
482 var |
483 var |
483 i, gX, gY: LongInt; |
484 i, gX, gY: LongInt; |
484 dX, dY: hwFloat; |
485 dX, dY: hwFloat; |
511 DeleteGear(Gear); |
512 DeleteGear(Gear); |
512 exit |
513 exit |
513 end; |
514 end; |
514 end; |
515 end; |
515 |
516 |
516 procedure doStepWatermelon(Gear: PGear); |
517 //////////////////////////////////////////////////////////////////////////////// |
517 begin |
|
518 AllInactive := false; |
|
519 Gear^.doStep := @doStepBomb |
|
520 end; |
|
521 |
518 |
522 procedure doStepCluster(Gear: PGear); |
519 procedure doStepCluster(Gear: PGear); |
523 begin |
520 begin |
524 AllInactive := false; |
521 AllInactive := false; |
525 doStepFallingGear(Gear); |
522 doStepFallingGear(Gear); |
580 particle:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtDust); |
577 particle:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtDust); |
581 if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480) |
578 if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480) |
582 end |
579 end |
583 end; |
580 end; |
584 |
581 |
|
582 //////////////////////////////////////////////////////////////////////////////// |
585 procedure doStepSnowflake(Gear: PGear); |
583 procedure doStepSnowflake(Gear: PGear); |
586 var xx, yy, px, py: LongInt; |
584 var xx, yy, px, py: LongInt; |
587 move, draw, allpx, gun: Boolean; |
585 move, draw, allpx, gun: Boolean; |
588 s: PSDL_Surface; |
586 s: PSDL_Surface; |
589 p: PLongwordArray; |
587 p: PLongwordArray; |
2072 DeleteGear(Gear); |
2070 DeleteGear(Gear); |
2073 AfterAttack |
2071 AfterAttack |
2074 end |
2072 end |
2075 end; |
2073 end; |
2076 |
2074 |
|
2075 //////////////////////////////////////////////////////////////////////////////// |
2077 procedure doStepShover(Gear: PGear); |
2076 procedure doStepShover(Gear: PGear); |
2078 var |
2077 var |
2079 HHGear: PGear; |
2078 HHGear: PGear; |
2080 begin |
2079 begin |
2081 HHGear := Gear^.Hedgehog^.Gear; |
2080 HHGear := Gear^.Hedgehog^.Gear; |
3306 Gear^.Tag := hwSign(HHGear^.dX); |
3305 Gear^.Tag := hwSign(HHGear^.dX); |
3307 if HHGear^.dX.isNegative then Gear^.Angle := 4096 - Gear^.Angle; |
3306 if HHGear^.dX.isNegative then Gear^.Angle := 4096 - Gear^.Angle; |
3308 Gear^.doStep := @doStepRCPlaneWork |
3307 Gear^.doStep := @doStepRCPlaneWork |
3309 end; |
3308 end; |
3310 |
3309 |
|
3310 //////////////////////////////////////////////////////////////////////////////// |
3311 procedure doStepJetpackWork(Gear: PGear); |
3311 procedure doStepJetpackWork(Gear: PGear); |
3312 var |
3312 var |
3313 HHGear: PGear; |
3313 HHGear: PGear; |
3314 fuel, i: LongInt; |
3314 fuel, i: LongInt; |
3315 move: hwFloat; |
3315 move: hwFloat; |
3433 |
3433 |
3434 //AddCaption(trmsg[sidFuel]+': '+inttostr(round(Gear^.Health/20))+'%', cWhiteColor, capgrpAmmostate); |
3434 //AddCaption(trmsg[sidFuel]+': '+inttostr(round(Gear^.Health/20))+'%', cWhiteColor, capgrpAmmostate); |
3435 end |
3435 end |
3436 end; |
3436 end; |
3437 |
3437 |
3438 //////////////////////////////////////////////////////////////////////////////// |
|
3439 procedure doStepJetpack(Gear: PGear); |
3438 procedure doStepJetpack(Gear: PGear); |
3440 var |
3439 var |
3441 HHGear: PGear; |
3440 HHGear: PGear; |
3442 begin |
3441 begin |
3443 Gear^.Pos:= 0; |
3442 Gear^.Pos:= 0; |
3469 begin |
3468 begin |
3470 DeleteGear(Gear); |
3469 DeleteGear(Gear); |
3471 end; |
3470 end; |
3472 end; |
3471 end; |
3473 |
3472 |
3474 //////////////////////////////////////////////////////////////////////////////// |
|
3475 procedure doStepBirdyFly(Gear: PGear); |
3473 procedure doStepBirdyFly(Gear: PGear); |
3476 var |
3474 var |
3477 HHGear: PGear; |
3475 HHGear: PGear; |
3478 fuel, i: LongInt; |
3476 fuel, i: LongInt; |
3479 move: hwFloat; |
3477 move: hwFloat; |
3563 isCursorVisible := false; |
3561 isCursorVisible := false; |
3564 AfterAttack; |
3562 AfterAttack; |
3565 end |
3563 end |
3566 end; |
3564 end; |
3567 |
3565 |
3568 //////////////////////////////////////////////////////////////////////////////// |
|
3569 procedure doStepBirdyDescend(Gear: PGear); |
3566 procedure doStepBirdyDescend(Gear: PGear); |
3570 var |
3567 var |
3571 HHGear: PGear; |
3568 HHGear: PGear; |
3572 begin |
3569 begin |
3573 if Gear^.Timer > 0 then |
3570 if Gear^.Timer > 0 then |
3605 Gear^.State := Gear^.State and not gstAnimation; |
3602 Gear^.State := Gear^.State and not gstAnimation; |
3606 Gear^.doStep := @doStepBirdyDescend; |
3603 Gear^.doStep := @doStepBirdyDescend; |
3607 end |
3604 end |
3608 end; |
3605 end; |
3609 |
3606 |
3610 //////////////////////////////////////////////////////////////////////////////// |
|
3611 procedure doStepBirdy(Gear: PGear); |
3607 procedure doStepBirdy(Gear: PGear); |
3612 var |
3608 var |
3613 HHGear: PGear; |
3609 HHGear: PGear; |
3614 begin |
3610 begin |
3615 gear^.State := gear^.State or gstAnimation and not gstTmpFlag; |
3611 gear^.State := gear^.State or gstAnimation and not gstTmpFlag; |
4143 newPortal^.State := newPortal^.State and not gstCollision; |
4139 newPortal^.State := newPortal^.State and not gstCollision; |
4144 newPortal^.State := newPortal^.State or gstMoving; |
4140 newPortal^.State := newPortal^.State or gstMoving; |
4145 newPortal^.doStep := @doStepMovingPortal; |
4141 newPortal^.doStep := @doStepMovingPortal; |
4146 end; |
4142 end; |
4147 |
4143 |
|
4144 //////////////////////////////////////////////////////////////////////////////// |
4148 procedure doStepPiano(Gear: PGear); |
4145 procedure doStepPiano(Gear: PGear); |
4149 var |
4146 var |
4150 r0, r1: LongInt; |
4147 r0, r1: LongInt; |
4151 odY: hwFloat; |
4148 odY: hwFloat; |
4152 begin |
4149 begin |
4442 HHGear^.Message := HHGear^.Message and not (gmUp or gmDown or gmLeft or gmRight); |
4439 HHGear^.Message := HHGear^.Message and not (gmUp or gmDown or gmLeft or gmRight); |
4443 HHGear^.State := HHGear^.State or gstNotKickable; |
4440 HHGear^.State := HHGear^.State or gstNotKickable; |
4444 Gear^.doStep := @doStepFlamethrowerWork |
4441 Gear^.doStep := @doStepFlamethrowerWork |
4445 end; |
4442 end; |
4446 |
4443 |
|
4444 //////////////////////////////////////////////////////////////////////////////// |
4447 procedure doStepLandGunWork(Gear: PGear); |
4445 procedure doStepLandGunWork(Gear: PGear); |
4448 var |
4446 var |
4449 HHGear: PGear; |
4447 HHGear: PGear; |
4450 rx, ry, speed: hwFloat; |
4448 rx, ry, speed: hwFloat; |
4451 i, gX, gY: LongInt; |
4449 i, gX, gY: LongInt; |
4517 HHGear^.Message := HHGear^.Message and not (gmUp or gmDown or gmLeft or gmRight or gmAttack); |
4515 HHGear^.Message := HHGear^.Message and not (gmUp or gmDown or gmLeft or gmRight or gmAttack); |
4518 HHGear^.State := HHGear^.State or gstNotKickable; |
4516 HHGear^.State := HHGear^.State or gstNotKickable; |
4519 Gear^.doStep := @doStepLandGunWork |
4517 Gear^.doStep := @doStepLandGunWork |
4520 end; |
4518 end; |
4521 |
4519 |
|
4520 //////////////////////////////////////////////////////////////////////////////// |
4522 procedure doStepPoisonCloud(Gear: PGear); |
4521 procedure doStepPoisonCloud(Gear: PGear); |
4523 begin |
4522 begin |
4524 if Gear^.Timer = 0 then |
4523 if Gear^.Timer = 0 then |
4525 begin |
4524 begin |
4526 DeleteGear(Gear); |
4525 DeleteGear(Gear); |
4574 HHGear^.State:= HHGear^.State and not gstNoDamage; |
4573 HHGear^.State:= HHGear^.State and not gstNoDamage; |
4575 Gear^.Timer:= 250; |
4574 Gear^.Timer:= 250; |
4576 Gear^.doStep:= @doStepIdle |
4575 Gear^.doStep:= @doStepIdle |
4577 end; |
4576 end; |
4578 |
4577 |
4579 //////////////////////////////////////////////////////////////////////////////// |
|
4580 procedure doStepHammerHitWork(Gear: PGear); |
4578 procedure doStepHammerHitWork(Gear: PGear); |
4581 var |
4579 var |
4582 i, ei: LongInt; |
4580 i, ei: LongInt; |
4583 HHGear: PGear; |
4581 HHGear: PGear; |
4584 begin |
4582 begin |
4810 //////////////////////////////////////////////////////////////////////////////// |
4808 //////////////////////////////////////////////////////////////////////////////// |
4811 procedure doStepStructure(Gear: PGear); |
4809 procedure doStepStructure(Gear: PGear); |
4812 var |
4810 var |
4813 x, y: LongInt; |
4811 x, y: LongInt; |
4814 begin |
4812 begin |
|
4813 if (Gear^.State and gstMoving) <> 0 then |
|
4814 begin |
|
4815 AddGearCI(Gear); |
|
4816 Gear^.dX:= _0; |
|
4817 Gear^.dY:= _0; |
|
4818 Gear^.State:= Gear^.State and not gstMoving; |
|
4819 end; |
|
4820 |
4815 if CurAmmoGear = Gear then |
4821 if CurAmmoGear = Gear then |
4816 begin |
4822 begin |
4817 if (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then |
4823 if (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then |
4818 begin |
4824 begin |
4819 DeleteGear(Gear); |
4825 DeleteGear(Gear); |
4858 |
4864 |
4859 doMakeExplosion(x, y, 50, CurrentHedgehog, EXPLAutoSound); |
4865 doMakeExplosion(x, y, 50, CurrentHedgehog, EXPLAutoSound); |
4860 end; |
4866 end; |
4861 end; |
4867 end; |
4862 |
4868 |
|
4869 //////////////////////////////////////////////////////////////////////////////// |
4863 procedure doStepTardis(Gear: PGear); |
4870 procedure doStepTardis(Gear: PGear); |
4864 (*var |
4871 (*var |
4865 i, x, y: LongInt; |
4872 i, x, y: LongInt; |
4866 dX, dY: hwFloat; |
4873 dX, dY: hwFloat; |
4867 Fire: PGear; |
4874 Fire: PGear; |
4900 SetAllHHToActive; |
4907 SetAllHHToActive; |
4901 end; |
4908 end; |
4902 DeleteGear(Gear) |
4909 DeleteGear(Gear) |
4903 end |
4910 end |
4904 end; |
4911 end; |
|
4912 |
|
4913 //////////////////////////////////////////////////////////////////////////////// |
|
4914 |