hedgewars/GSHandlers.inc
changeset 2267 ad372e549cc5
parent 2262 0dc94341bf42
child 2278 28519f4f3f21
equal deleted inserted replaced
2266:289dc8e51210 2267:ad372e549cc5
   571 	while i <= ei do
   571 	while i <= ei do
   572 		begin
   572 		begin
   573 		DrawExplosion(i, hwRound(Gear^.Y) + 3, 3);
   573 		DrawExplosion(i, hwRound(Gear^.Y) + 3, 3);
   574 		inc(i, 1)
   574 		inc(i, 1)
   575 		end;
   575 		end;
   576     if Land[hwRound(Gear^.Y + _1_9) , hwRound(Gear^.X + Gear^.dX)] <> COLOR_INDESTRUCTIBLE then
   576     if Land[hwRound(Gear^.Y + _1_9) , hwRound(Gear^.X + Gear^.dX + SignAs(_16,Gear^.dX))] <> COLOR_INDESTRUCTIBLE then
   577         begin
   577         begin
   578         Gear^.X:= Gear^.X + Gear^.dX;
   578         Gear^.X:= Gear^.X + Gear^.dX;
   579         Gear^.Y:= Gear^.Y + _1_9;
   579         Gear^.Y:= Gear^.Y + _1_9;
   580         end;
   580         end;
   581 	SetAllHHToActive;
   581 	SetAllHHToActive;
   672 		begin
   672 		begin
   673 		HHGear^.State:= HHGear^.State and not gstAttacking;
   673 		HHGear^.State:= HHGear^.State and not gstAttacking;
   674 		prevX:= hwRound(HHGear^.X);
   674 		prevX:= hwRound(HHGear^.X);
   675 	
   675 	
   676 // why the call to HedgehogStep then a further increment of X?	
   676 // why the call to HedgehogStep then a further increment of X?	
   677 		if (prevX = hwRound(HHGear^.X)) and (Land[hwRound(HHGear^.Y) , hwRound(HHGear^.X + SignAs(_1, HHGear^.dX))] <> COLOR_INDESTRUCTIBLE) then HedgehogStep(HHGear);
   677 		if (prevX = hwRound(HHGear^.X)) and (Land[hwRound(HHGear^.Y) , hwRound(HHGear^.X + SignAs(_16, HHGear^.dX))] <> COLOR_INDESTRUCTIBLE) then HedgehogStep(HHGear);
   678 		
   678 		
   679 		if (prevX = hwRound(HHGear^.X)) and (Land[hwRound(HHGear^.Y) , hwRound(HHGear^.X + SignAs(_1, HHGear^.dX))] <> COLOR_INDESTRUCTIBLE) then HHGear^.X:= HHGear^.X + SignAs(_1, HHGear^.dX);
   679 		if (prevX = hwRound(HHGear^.X)) and (Land[hwRound(HHGear^.Y) , hwRound(HHGear^.X + SignAs(_16, HHGear^.dX))] <> COLOR_INDESTRUCTIBLE) then HHGear^.X:= HHGear^.X + SignAs(_1, HHGear^.dX);
   680 		HHGear^.State:= HHGear^.State or gstAttacking
   680 		HHGear^.State:= HHGear^.State or gstAttacking
   681 		end;
   681 		end;
   682 
   682 
   683 	inc(BTSteps);
   683 	inc(BTSteps);
   684 	if BTSteps = 7 then
   684 	if BTSteps = 7 then
   685 		begin
   685 		begin
   686 		BTSteps:= 0;
   686 		BTSteps:= 0;
   687         if Land[hwRound(HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC)) , hwRound(HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC))] <> COLOR_INDESTRUCTIBLE then
   687         if Land[hwRound(HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC)) , hwRound(HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC) + SignAs(_16,Gear^.dX)
       
   688 )] <> COLOR_INDESTRUCTIBLE then
   688             begin
   689             begin
   689 		Gear^.X:= HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC);
   690 		Gear^.X:= HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC);
   690 		Gear^.Y:= HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC);
   691 		Gear^.Y:= HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC);
   691             end;
   692             end;
   692 		HHGear^.State:= HHGear^.State or gstNoDamage;
   693 		HHGear^.State:= HHGear^.State or gstNoDamage;
  1288 	DeleteGear(Gear);
  1289 	DeleteGear(Gear);
  1289 	AfterAttack;
  1290 	AfterAttack;
  1290 	exit
  1291 	exit
  1291 	end;
  1292 	end;
  1292 
  1293 
  1293 if Land[hwRound(HHGear^.Y + HHGear^.dY), hwRound(HHGear^.X)] <> COLOR_INDESTRUCTIBLE then HHGear^.Y:= HHGear^.Y + HHGear^.dY
  1294 if Land[hwRound(HHGear^.Y + HHGear^.dY + SignAs(_16,Gear^.dX)
       
  1295 ), hwRound(HHGear^.X)] <> COLOR_INDESTRUCTIBLE then HHGear^.Y:= HHGear^.Y + HHGear^.dY
  1294 end;
  1296 end;
  1295 
  1297 
  1296 procedure doStepFirePunch(Gear: PGear);
  1298 procedure doStepFirePunch(Gear: PGear);
  1297 var HHGear: PGear;
  1299 var HHGear: PGear;
  1298 begin
  1300 begin