hedgewars/GSHandlers.inc
changeset 7294 135e4fb3b095
parent 7283 322ff9418461
child 7293 468cf6d561e5
equal deleted inserted replaced
7289:835bb2852579 7294:135e4fb3b095
  2137                 if Gear^.Tag = 1 then 
  2137                 if Gear^.Tag = 1 then 
  2138                     sparkles^.Tint:= $3744D7FF
  2138                     sparkles^.Tint:= $3744D7FF
  2139                 else sparkles^.Tint:= $FAB22CFF
  2139                 else sparkles^.Tint:= $FAB22CFF
  2140                 end;
  2140                 end;
  2141             end;
  2141             end;
  2142         if Gear^.Timer < 1000 then exit;
  2142         if Gear^.Timer < 1000 then 
       
  2143             begin
       
  2144             AllInactive:= false;
       
  2145             exit
       
  2146             end
  2143         end;
  2147         end;
  2144 
  2148 
  2145     if (Gear^.Damage > 0) or exBoom then
  2149     if (Gear^.Damage > 0) or exBoom then
  2146         begin
  2150         begin
  2147         x := hwRound(Gear^.X);
  2151         x := hwRound(Gear^.X);
  4751 end;
  4755 end;
  4752 
  4756 
  4753 ////////////////////////////////////////////////////////////////////////////////
  4757 ////////////////////////////////////////////////////////////////////////////////
  4754 procedure doStepFlamethrowerWork(Gear: PGear);
  4758 procedure doStepFlamethrowerWork(Gear: PGear);
  4755 var 
  4759 var 
  4756     HHGear: PGear;
  4760     HHGear, flame: PGear;
  4757     rx, ry, speed: hwFloat;
  4761     rx, ry, speed: hwFloat;
  4758     i, gX, gY: LongInt;
  4762     i, gX, gY: LongInt;
  4759 begin
  4763 begin
  4760     AllInactive := false;
  4764     AllInactive := false;
  4761     HHGear := Gear^.Hedgehog^.Gear;
  4765     HHGear := Gear^.Hedgehog^.Gear;
  4789             begin
  4793             begin
  4790             rx := rndSign(getRandomf * _0_1);
  4794             rx := rndSign(getRandomf * _0_1);
  4791             ry := rndSign(getRandomf * _0_1);
  4795             ry := rndSign(getRandomf * _0_1);
  4792             speed := _0_5 * (_10 / Gear^.Tag);
  4796             speed := _0_5 * (_10 / Gear^.Tag);
  4793     
  4797     
  4794             AddGear(gx, gy, gtFlame, gstTmpFlag,
  4798             flame:= AddGear(gx, gy, gtFlame, gstTmpFlag,
  4795                     SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  4799                     SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  4796                     AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  4800                     AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
       
  4801             flame^.CollisionMask:= $FF7F;
  4797             
  4802             
  4798             if (Gear^.Health mod 30) = 0 then
  4803             if (Gear^.Health mod 30) = 0 then
  4799                 AddGear(gx, gy, gtFlame, 0,
  4804                 begin
       
  4805                 flame:= AddGear(gx, gy, gtFlame, 0,
  4800                         SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  4806                         SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  4801                         AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  4807                         AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
       
  4808                 flame^.CollisionMask:= $FF7F;
       
  4809                 end
  4802             end;
  4810             end;
  4803         Gear^.Timer:= Gear^.Tag
  4811         Gear^.Timer:= Gear^.Tag
  4804         end;
  4812         end;
  4805 
  4813 
  4806     if (Gear^.Health = 0) or (HHGear^.Damage <> 0) then
  4814     if (Gear^.Health = 0) or (HHGear^.Damage <> 0) then
  4832 end;
  4840 end;
  4833 
  4841 
  4834 ////////////////////////////////////////////////////////////////////////////////
  4842 ////////////////////////////////////////////////////////////////////////////////
  4835 procedure doStepLandGunWork(Gear: PGear);
  4843 procedure doStepLandGunWork(Gear: PGear);
  4836 var 
  4844 var 
  4837     HHGear: PGear;
  4845     HHGear, land: PGear;
  4838     rx, ry, speed: hwFloat;
  4846     rx, ry, speed: hwFloat;
  4839     i, gX, gY: LongInt;
  4847     i, gX, gY: LongInt;
  4840 begin
  4848 begin
  4841     AllInactive := false;
  4849     AllInactive := false;
  4842     HHGear := Gear^.Hedgehog^.Gear;
  4850     HHGear := Gear^.Hedgehog^.Gear;
  4869 
  4877 
  4870         rx := rndSign(getRandomf * _0_1);
  4878         rx := rndSign(getRandomf * _0_1);
  4871         ry := rndSign(getRandomf * _0_1);
  4879         ry := rndSign(getRandomf * _0_1);
  4872         speed := (_3 / Gear^.Tag);
  4880         speed := (_3 / Gear^.Tag);
  4873 
  4881 
  4874         AddGear(gx, gy, gtFlake, gstTmpFlag, 
  4882         land:= AddGear(gx, gy, gtFlake, gstTmpFlag, 
  4875                 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, 
  4883                 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, 
  4876                 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  4884                 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
       
  4885         land^.CollisionMask:= $FF7F;
  4877             
  4886             
  4878         Gear^.Timer:= Gear^.Tag
  4887         Gear^.Timer:= Gear^.Tag
  4879         end;
  4888         end;
  4880 
  4889 
  4881     if (Gear^.Health = 0) or (HHGear^.Damage <> 0) or ((HHGear^.Message and gmAttack) <> 0) then
  4890     if (Gear^.Health = 0) or (HHGear^.Damage <> 0) or ((HHGear^.Message and gmAttack) <> 0) then