105 amShotgun: begin |
105 amShotgun: begin |
106 PlaySound(sndShotgunReload, false); |
106 PlaySound(sndShotgunReload, false); |
107 CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtShotgunShot, 0, xx * _0_5, yy * _0_5, 0); |
107 CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtShotgunShot, 0, xx * _0_5, yy * _0_5, 0); |
108 end; |
108 end; |
109 amPickHammer: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, gtPickHammer, 0, _0, _0, 0); |
109 amPickHammer: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, gtPickHammer, 0, _0, _0, 0); |
110 amSkip: TurnTimeLeft:= 0; |
110 amSkip: begin |
|
111 TurnTimeLeft:= 0; |
|
112 PlaySound(sndBoring, false) |
|
113 end; |
111 amRope: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtRope, 0, xx, yy, 0); |
114 amRope: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtRope, 0, xx, yy, 0); |
112 amMine: begin |
115 amMine: begin |
113 AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtMine, 0, SignAs(_0_02, dX), _0, 3000); |
116 AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtMine, 0, SignAs(_0_02, dX), _0, 3000); |
114 PlaySound(sndLaugh, false) |
117 PlaySound(sndLaugh, false) |
115 end; |
118 end; |
156 State:= State or gstAttacked; |
159 State:= State or gstAttacked; |
157 OnUsedAmmo(CurrentHedgehog^) |
160 OnUsedAmmo(CurrentHedgehog^) |
158 end; |
161 end; |
159 AttackBar:= 0; |
162 AttackBar:= 0; |
160 end |
163 end |
|
164 end; |
|
165 |
|
166 //////////////////////////////////////////////////////////////////////////////// |
|
167 procedure doStepHedgehogDead(Gear: PGear); |
|
168 begin |
|
169 if Gear^.Timer > 1 then |
|
170 begin |
|
171 AllInactive:= false; |
|
172 dec(Gear^.Timer) |
|
173 end else |
|
174 if Gear^.Timer = 1 then |
|
175 begin |
|
176 Gear^.State:= Gear^.State or gstNoDamage; |
|
177 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); |
|
178 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; |
|
179 DeleteGear(Gear); |
|
180 SetAllToActive |
|
181 end else // Gear^.Timer = 0 |
|
182 begin |
|
183 AllInactive:= false; |
|
184 PlaySound(sndByeBye, false); |
|
185 Gear^.Timer:= 1250 |
|
186 end |
161 end; |
187 end; |
162 |
188 |
163 //////////////////////////////////////////////////////////////////////////////// |
189 //////////////////////////////////////////////////////////////////////////////// |
164 procedure PickUp(HH, Gear: PGear); |
190 procedure PickUp(HH, Gear: PGear); |
165 var s: shortstring; |
191 var s: shortstring; |
477 begin |
503 begin |
478 prevState:= Gear^.State; |
504 prevState:= Gear^.State; |
479 |
505 |
480 doStepHedgehogMoving(Gear); |
506 doStepHedgehogMoving(Gear); |
481 |
507 |
482 if (Gear^.State and gstMoving) = 0 then |
508 if (Gear^.State and gstMoving) <> 0 then exit; |
483 if Gear^.Health = 0 then |
509 |
484 begin |
510 if (Gear^.Health = 0) then |
485 if AllInactive then |
511 begin |
486 begin |
512 if AllInactive then |
487 Gear^.State:= Gear^.State or gstNoDamage; |
513 Gear^.doStep:= @doStepHedgehogDead; |
488 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); |
514 AllInactive:= false; |
489 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; |
515 exit |
490 DeleteGear(Gear); |
516 end; |
491 SetAllToActive |
517 |
492 end; |
518 if ((Gear^.State and gstAnimation) = 0) and |
493 AllInactive:= false; |
519 (prevState <> Gear^.State) then |
494 exit |
520 begin |
495 end; |
521 Gear^.State:= gstAnimation; |
496 |
522 Gear^.Timer:= 150 |
497 AllInactive:= false; |
523 end else |
498 |
524 begin |
499 if ((Gear^.State and gstMoving) = 0) then |
525 if Gear^.Timer = 0 then |
500 if ((Gear^.State and gstAnimation) = 0) and |
526 begin |
501 (prevState <> Gear^.State) then |
527 Gear^.State:= 0; |
502 begin |
528 Gear^.Active:= false; |
503 Gear^.State:= gstAnimation; |
529 AddGearCI(Gear); |
504 Gear^.Timer:= 150 |
530 exit |
505 end else |
531 end else dec(Gear^.Timer) |
506 begin |
532 end; |
507 if Gear^.Timer = 0 then |
533 |
508 begin |
534 AllInactive:= false |
509 Gear^.State:= 0; |
|
510 Gear^.Active:= false; |
|
511 AddGearCI(Gear); |
|
512 exit |
|
513 end else dec(Gear^.Timer) |
|
514 end |
|
515 end; |
535 end; |
516 |
536 |
517 //////////////////////////////////////////////////////////////////////////////// |
537 //////////////////////////////////////////////////////////////////////////////// |
518 procedure doStepHedgehog(Gear: PGear); |
538 procedure doStepHedgehog(Gear: PGear); |
519 begin |
539 begin |