hedgewars/GSHandlers.inc
changeset 5624 b6f70f6335ee
parent 5612 2638dec1b323
child 5628 a9a0c67f9656
equal deleted inserted replaced
5622:93e97d3a2c10 5624:b6f70f6335ee
  4580 while i > 0 do
  4580 while i > 0 do
  4581     begin
  4581     begin
  4582     dec(i);
  4582     dec(i);
  4583     tmp:= t^.ar[i];
  4583     tmp:= t^.ar[i];
  4584     if (tmp^.State and gstNoDamage) = 0 then
  4584     if (tmp^.State and gstNoDamage) = 0 then
  4585         if (tmp^.Kind = gtHedgehog) then
  4585         if (tmp^.Kind = gtHedgehog) or (tmp^.Kind = gtMine) or (tmp^.Kind = gtExplosives) then
  4586             begin
  4586             begin
  4587             //tmp^.State:= tmp^.State or gstFlatened;
  4587             //tmp^.State:= tmp^.State or gstFlatened;
  4588             ApplyDamage(tmp, CurrentHedgehog, tmp^.Health div 3, dsUnknown);
  4588             ApplyDamage(tmp, CurrentHedgehog, tmp^.Health div 3, dsUnknown);
  4589             //DrawTunnel(tmp^.X, tmp^.Y - _1, _0, _0_5, cHHRadius * 6, cHHRadius * 3);
  4589             //DrawTunnel(tmp^.X, tmp^.Y - _1, _0, _0_5, cHHRadius * 6, cHHRadius * 3);
  4590             tmp2:= AddGear(hwRound(tmp^.X), hwRound(tmp^.Y), gtHammerHit, 0, _0, _0, 0);
  4590             tmp2:= AddGear(hwRound(tmp^.X), hwRound(tmp^.Y), gtHammerHit, 0, _0, _0, 0);
  4591             tmp2^.Hedgehog:= tmp^.Hedgehog;
  4591             tmp2^.IntersectGear:= tmp;
  4592             SetAllToActive
  4592             SetAllToActive
  4593             end
  4593             end
  4594         else
  4594         else
  4595             begin
  4595             begin
  4596             end
  4596             end
  4602 end;
  4602 end;
  4603 
  4603 
  4604 procedure doStepHammerHitWork(Gear: PGear);
  4604 procedure doStepHammerHitWork(Gear: PGear);
  4605 var 
  4605 var 
  4606     i, ei: LongInt;
  4606     i, ei: LongInt;
  4607     HHGear: PGear;
  4607     HitGear: PGear;
  4608 begin
  4608 begin
  4609     AllInactive := false;
  4609     AllInactive := false;
  4610     HHGear := Gear^.Hedgehog^.Gear;
  4610     HitGear := Gear^.IntersectGear;
  4611     dec(Gear^.Timer);
  4611     dec(Gear^.Timer);
  4612     if (HHGear = nil) or (Gear^.Timer = 0) or ((Gear^.Message and gmDestroy) <> 0) then
  4612     if (HitGear = nil) or (Gear^.Timer = 0) or ((Gear^.Message and gmDestroy) <> 0) then
  4613     begin
  4613     begin
  4614         DeleteGear(Gear);
  4614         DeleteGear(Gear);
  4615         exit
  4615         exit
  4616     end;
  4616     end;
  4617 
  4617 
  4636         SetAllHHToActive;
  4636         SetAllHHToActive;
  4637     end;
  4637     end;
  4638     if TestCollisionYwithGear(Gear, 1) then
  4638     if TestCollisionYwithGear(Gear, 1) then
  4639     begin
  4639     begin
  4640         Gear^.dY := _0;
  4640         Gear^.dY := _0;
  4641         SetLittle(HHGear^.dX);
  4641         SetLittle(HitGear^.dX);
  4642         HHGear^.dY := _0;
  4642         HitGear^.dY := _0;
  4643     end
  4643     end
  4644     else
  4644     else
  4645     begin
  4645     begin
  4646         Gear^.dY := Gear^.dY + cGravity;
  4646         Gear^.dY := Gear^.dY + cGravity;
  4647         Gear^.Y := Gear^.Y + Gear^.dY;
  4647         Gear^.Y := Gear^.Y + Gear^.dY;
  4648         if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer := 1
  4648         if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer := 1
  4649     end;
  4649     end;
  4650 
  4650 
  4651     Gear^.X := Gear^.X + HHGear^.dX;
  4651     Gear^.X := Gear^.X + HitGear^.dX;
  4652     HHGear^.X := Gear^.X;
  4652     HitGear^.X := Gear^.X;
  4653     HHGear^.Y := Gear^.Y - int2hwFloat(cHHRadius);
  4653     HitGear^.Y := Gear^.Y - int2hwFloat(cHHRadius);
  4654 end;
  4654 end;
  4655 
  4655 
  4656 procedure doStepHammerHit(Gear: PGear);
  4656 procedure doStepHammerHit(Gear: PGear);
  4657 var 
  4657 var 
  4658     i, y: LongInt;
  4658     i, y: LongInt;