hedgewars/uGears.pas
changeset 503 2cfdc4bfc2be
parent 498 9c8b385dc9a1
child 505 fcba7d7aea0d
equal deleted inserted replaced
502:bc178daca088 503:2cfdc4bfc2be
   228    gtExplosion: begin
   228    gtExplosion: begin
   229                 Result^.X:= Result^.X - _25;
   229                 Result^.X:= Result^.X - _25;
   230                 Result^.Y:= Result^.Y - _25;
   230                 Result^.Y:= Result^.Y - _25;
   231                 end;
   231                 end;
   232         gtMine: begin
   232         gtMine: begin
       
   233                 Result^.State:= Result^.State or gstMoving;
   233                 Result^.Radius:= 3;
   234                 Result^.Radius:= 3;
   234                 Result^.Elasticity:= _0_55;
   235                 Result^.Elasticity:= _0_55;
   235                 Result^.Friction:= _0_995;
   236                 Result^.Friction:= _0_995;
   236                 Result^.Timer:= 3000;
   237                 Result^.Timer:= 3000;
   237                 end;
   238                 end;
   279 
   280 
   280 procedure DeleteGear(Gear: PGear);
   281 procedure DeleteGear(Gear: PGear);
   281 var team: PTeam;
   282 var team: PTeam;
   282     t: Longword;
   283     t: Longword;
   283 begin
   284 begin
   284 if Gear^.CollIndex < High(Longword) then DeleteCI(Gear);
   285 DeleteCI(Gear);
   285 if Gear^.Surf <> nil then SDL_FreeSurface(Gear^.Surf);
   286 if Gear^.Surf <> nil then SDL_FreeSurface(Gear^.Surf);
   286 if Gear^.Kind = gtHedgehog then
   287 if Gear^.Kind = gtHedgehog then
   287    if CurAmmoGear <> nil then
   288    if CurAmmoGear <> nil then
   288       begin
   289       begin
   289       Gear^.Message:= gm_Destroy;
   290       Gear^.Message:= gm_Destroy;
   448 end;
   449 end;
   449 
   450 
   450 procedure DrawHH(Gear: PGear; Surface: PSDL_Surface);
   451 procedure DrawHH(Gear: PGear; Surface: PSDL_Surface);
   451 var t: LongInt;
   452 var t: LongInt;
   452 begin
   453 begin
   453 DrawHedgehog(hwRound(Gear^.X) - 14 + WorldDx, hwRound(Gear^.Y) - 18 + WorldDy,
   454 DrawHedgehog(hwRound(Gear^.X) - 15 + WorldDx, hwRound(Gear^.Y) - 18 + WorldDy,
   454              hwSign(Gear^.dX), 0,
   455              hwSign(Gear^.dX), 0,
   455              PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
   456              PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
   456              Surface);
   457              Surface);
   457 
   458 
   458 with PHedgehog(Gear^.Hedgehog)^ do
   459 with PHedgehog(Gear^.Hedgehog)^ do
   668                           if (Mask and EXPLNoDamage) = 0 then inc(Gear^.Damage, dmg);
   669                           if (Mask and EXPLNoDamage) = 0 then inc(Gear^.Damage, dmg);
   669                           if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then
   670                           if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then
   670                              begin
   671                              begin
   671                              Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - int2hwFloat(X));
   672                              Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - int2hwFloat(X));
   672                              Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - int2hwFloat(Y));
   673                              Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - int2hwFloat(Y));
       
   674                              Gear^.State:= Gear^.State or gstMoving;
   673                              Gear^.Active:= true;
   675                              Gear^.Active:= true;
   674                              FollowGear:= Gear
   676                              FollowGear:= Gear
   675                              end;
   677                              end;
   676                           end;
   678                           end;
   677                  gtGrave: begin
   679                  gtGrave: begin
   704                        inc(t^.ar[i]^.Damage, Damage);
   706                        inc(t^.ar[i]^.Damage, Damage);
   705                        inc(hh^.DamageGiven, Damage);
   707                        inc(hh^.DamageGiven, Damage);
   706                        t^.ar[i]^.dX:= Ammo^.dX * Power * _0_01;
   708                        t^.ar[i]^.dX:= Ammo^.dX * Power * _0_01;
   707                        t^.ar[i]^.dY:= Ammo^.dY * Power * _0_01;
   709                        t^.ar[i]^.dY:= Ammo^.dY * Power * _0_01;
   708                        t^.ar[i]^.Active:= true;
   710                        t^.ar[i]^.Active:= true;
       
   711                        t^.ar[i]^.State:= t^.ar[i]^.State or gstMoving;
   709                        DeleteCI(t^.ar[i]);
   712                        DeleteCI(t^.ar[i]);
   710                        FollowGear:= t^.ar[i]
   713                        FollowGear:= t^.ar[i]
   711                        end;
   714                        end;
   712            end
   715            end
   713     end;
   716     end;