hedgewars/uGearsHandlersMess.pas
changeset 13463 f1d349a52bc7
parent 13408 419c5eab88eb
child 13464 7b4643ff60ea
equal deleted inserted replaced
13462:4c47a480009b 13463:f1d349a52bc7
  3633 
  3633 
  3634 procedure doStepCake(Gear: PGear);
  3634 procedure doStepCake(Gear: PGear);
  3635 begin
  3635 begin
  3636     AllInactive := false;
  3636     AllInactive := false;
  3637 
  3637 
  3638     Gear^.CollisionMask:= lfNotCurrentMask;
  3638     Gear^.CollisionMask:= lfNotCurHogCrate;
  3639 
  3639 
  3640     Gear^.dY:= cMaxWindSpeed * 100;
  3640     Gear^.dY:= cMaxWindSpeed * 100;
  3641 
  3641 
  3642     Gear^.doStep := @doStepCakeFall
  3642     Gear^.doStep := @doStepCakeFall
  3643 end;
  3643 end;
  3954         begin
  3954         begin
  3955         rx := rndSign(getRandomf * _0_1);
  3955         rx := rndSign(getRandomf * _0_1);
  3956         ry := rndSign(getRandomf * _0_1);
  3956         ry := rndSign(getRandomf * _0_1);
  3957 
  3957 
  3958         ball:= AddGear(gx, gy, gtBall, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0);
  3958         ball:= AddGear(gx, gy, gtBall, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0);
  3959         ball^.CollisionMask:= lfNotCurrentMask;
  3959         ball^.CollisionMask:= lfNotCurHogCrate;
  3960 
  3960 
  3961         PlaySound(sndGun);
  3961         PlaySound(sndGun);
  3962         end;
  3962         end;
  3963 
  3963 
  3964     if (Gear^.Timer = 0) or ((HHGear^.State and gstHHDriven) = 0) then
  3964     if (Gear^.Timer = 0) or ((HHGear^.State and gstHHDriven) = 0) then
  5440             speed := _0_5 * (_10 / Gear^.Tag);
  5440             speed := _0_5 * (_10 / Gear^.Tag);
  5441 
  5441 
  5442             flame:= AddGear(gx, gy, gtFlame, gstTmpFlag,
  5442             flame:= AddGear(gx, gy, gtFlame, gstTmpFlag,
  5443                     SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  5443                     SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  5444                     AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  5444                     AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  5445             flame^.CollisionMask:= lfNotCurrentMask;
  5445             flame^.CollisionMask:= lfNotCurHogCrate;
  5446             //flame^.FlightTime:= 500;  use the default huge value to avoid sticky flame suddenly being damaging as opposed to other flames
  5446             //flame^.FlightTime:= 500;  use the default huge value to avoid sticky flame suddenly being damaging as opposed to other flames
  5447 
  5447 
  5448             if (Gear^.Health mod 30) = 0 then
  5448             if (Gear^.Health mod 30) = 0 then
  5449                 begin
  5449                 begin
  5450                 flame:= AddGear(gx, gy, gtFlame, 0,
  5450                 flame:= AddGear(gx, gy, gtFlame, 0,
  5451                         SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  5451                         SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  5452                         AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  5452                         AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  5453                 flame^.CollisionMask:= lfNotCurrentMask;
  5453                 flame^.CollisionMask:= lfNotCurHogCrate;
  5454 		//flame^.FlightTime:= 500;
  5454 		//flame^.FlightTime:= 500;
  5455                 end
  5455                 end
  5456             end;
  5456             end;
  5457         Gear^.Timer:= Gear^.Tag
  5457         Gear^.Timer:= Gear^.Tag
  5458         end;
  5458         end;
  5532         speed := (_3 / Gear^.Tag);
  5532         speed := (_3 / Gear^.Tag);
  5533 
  5533 
  5534         land:= AddGear(gx, gy, gtFlake, gstTmpFlag,
  5534         land:= AddGear(gx, gy, gtFlake, gstTmpFlag,
  5535                 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  5535                 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx,
  5536                 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  5536                 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0);
  5537         land^.CollisionMask:= lfNotCurrentMask;
  5537         land^.CollisionMask:= lfNotCurHogCrate;
  5538 
  5538 
  5539         Gear^.Timer:= Gear^.Tag
  5539         Gear^.Timer:= Gear^.Tag
  5540         end;
  5540         end;
  5541 
  5541 
  5542     if (Gear^.Health = 0) or ((HHGear^.State and gstHHDriven) = 0) or ((HHGear^.Message and gmAttack) <> 0) then
  5542     if (Gear^.Health = 0) or ((HHGear^.State and gstHHDriven) = 0) or ((HHGear^.Message and gmAttack) <> 0) then
  6849         gY := hwRound(Gear^.Y) + GetLaunchY(amMinigun, HHGear^.Angle);
  6849         gY := hwRound(Gear^.Y) + GetLaunchY(amMinigun, HHGear^.Angle);
  6850         rx := rndSign(getRandomf * _0_2);
  6850         rx := rndSign(getRandomf * _0_2);
  6851         ry := rndSign(getRandomf * _0_2);
  6851         ry := rndSign(getRandomf * _0_2);
  6852 
  6852 
  6853         bullet:= AddGear(gx, gy, gtMinigunBullet, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0);
  6853         bullet:= AddGear(gx, gy, gtMinigunBullet, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0);
  6854         bullet^.CollisionMask:= lfNotCurrentMask;
  6854         bullet^.CollisionMask:= lfNotCurHogCrate;
  6855         bullet^.WDTimer := Gear^.WDTimer;
  6855         bullet^.WDTimer := Gear^.WDTimer;
  6856         Inc(Gear^.WDTimer);
  6856         Inc(Gear^.WDTimer);
  6857 
  6857 
  6858         CreateShellForGear(Gear, Gear^.Tag and 1);
  6858         CreateShellForGear(Gear, Gear^.Tag and 1);
  6859     end;
  6859     end;