hedgewars/HHHandlers.inc
changeset 863 dfa3aa51ecb5
parent 855 8842c71d16bf
child 864 024369e09a53
equal deleted inserted replaced
862:7c82903753a4 863:dfa3aa51ecb5
   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