hedgewars/GSHandlers.inc
changeset 3092 dfeb6fc771f7
parent 3081 27170e35d9ef
child 3094 97c8406acc85
equal deleted inserted replaced
3091:9d05c8000ed4 3092:dfeb6fc771f7
   237     Gear^.State:= Gear^.State or      gstMoving
   237     Gear^.State:= Gear^.State or      gstMoving
   238 end;
   238 end;
   239 
   239 
   240 ////////////////////////////////////////////////////////////////////////////////
   240 ////////////////////////////////////////////////////////////////////////////////
   241 procedure doStepBomb(Gear: PGear);
   241 procedure doStepBomb(Gear: PGear);
   242 var i: LongInt;
   242 var i, x, y: LongInt;
   243     dX, dY: hwFloat;
   243     dX, dY: hwFloat;
   244     Fire: PGear;
   244     Fire: PGear;
   245 begin
   245 begin
   246 AllInactive:= false;
   246 AllInactive:= false;
   247 
   247 
   267     begin
   267     begin
   268     case Gear^.Kind of
   268     case Gear^.Kind of
   269         gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
   269         gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
   270              gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound);
   270              gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound);
   271         gtClusterBomb: begin
   271         gtClusterBomb: begin
   272                 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
   272                 x:= hwRound(Gear^.X);
       
   273                 y:= hwRound(Gear^.Y);
       
   274                 doMakeExplosion(x, y, 20, EXPLAutoSound);
   273                 for i:= 0 to 4 do
   275                 for i:= 0 to 4 do
   274                     begin
   276                     begin
   275                     dX:= rndSign(GetRandom * _0_1);
   277                     dX:= rndSign(GetRandom * _0_1);
   276                     dY:= (GetRandom - _3) * _0_08;
   278                     dY:= (GetRandom - _3) * _0_08;
   277                     AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25);
   279                     AddGear(x, y, gtCluster, 0, dX, dY, 25);
   278                     end
   280                     end
   279                 end;
   281                 end;
   280         gtWatermelon: begin
   282         gtWatermelon: begin
   281                 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound);
   283                 x:= hwRound(Gear^.X);
       
   284                 y:= hwRound(Gear^.Y);
       
   285                 doMakeExplosion(x, y, 75, EXPLAutoSound);
   282                 for i:= 0 to 5 do
   286                 for i:= 0 to 5 do
   283                     begin
   287                     begin
   284                     dX:= rndSign(GetRandom * _0_1);
   288                     dX:= rndSign(GetRandom * _0_1);
   285                     dY:= (GetRandom - _1_5) * _0_3;
   289                     dY:= (GetRandom - _1_5) * _0_3;
   286                     AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMelonPiece, 0, dX, dY, 75)^.DirAngle:= i * 60;
   290                     AddGear(x, y, gtMelonPiece, 0, dX, dY, 75)^.DirAngle:= i * 60;
   287                     end
   291                     end
   288                 end;
   292                 end;
   289         gtHellishBomb: begin
   293         gtHellishBomb: begin
   290                 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 90, EXPLAutoSound);
   294                 x:= hwRound(Gear^.X);
       
   295                 y:= hwRound(Gear^.Y);
       
   296                 doMakeExplosion(x, y, 90, EXPLAutoSound);
       
   297                 
   291                 for i:= 0 to 127 do
   298                 for i:= 0 to 127 do
   292                     begin
   299                     begin
   293                     dX:= AngleCos(i * 16) * _0_5 * (GetRandom + _1);
   300                     dX:= AngleCos(i * 16) * _0_5 * (GetRandom + _1);
   294                     dY:= AngleSin(i * 16) * _0_5 * (GetRandom + _1);
   301                     dY:= AngleSin(i * 16) * _0_5 * (GetRandom + _1);
   295                     Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0);
   302                     Fire:= AddGear(x, y, gtFlame, 0, dX, dY, 0);
   296                     if i mod 2 = 0 then Fire^.State:= Fire^.State or gsttmpFlag;
   303                     if i mod 2 = 0 then Fire^.State:= Fire^.State or gsttmpFlag;
   297                     Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0);
   304                     Fire:= AddGear(x, y, gtFlame, 0, dX, -dY, 0);
   298                     if i mod 2 <> 0 then Fire^.State:= Fire^.State or gsttmpFlag;
   305                     if i mod 2 <> 0 then Fire^.State:= Fire^.State or gsttmpFlag;
   299                     end
   306                     end
   300                 end;
   307                 end;
   301         end;
   308         end;
   302     DeleteGear(Gear);
   309     DeleteGear(Gear);