hedgewars/uGears.pas
changeset 355 40c68869899e
parent 351 29bc9c36ad5f
child 357 165a040e4cfa
equal deleted inserted replaced
354:60e4af0a4375 355:40c68869899e
   651 begin
   651 begin
   652 TargetPoint.X:= NoPointX;
   652 TargetPoint.X:= NoPointX;
   653 {$IFDEF DEBUGFILE}if Radius > 3 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF}
   653 {$IFDEF DEBUGFILE}if Radius > 3 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF}
   654 if (Mask and EXPLDontDraw) = 0 then DrawExplosion(X, Y, Radius);
   654 if (Mask and EXPLDontDraw) = 0 then DrawExplosion(X, Y, Radius);
   655 if Radius = 50 then AddGear(X, Y, gtExplosion, 0, 0, 0, 0);
   655 if Radius = 50 then AddGear(X, Y, gtExplosion, 0, 0, 0, 0);
   656 if (Mask and EXPLAutoSound)<>0 then PlaySound(sndExplosion, false);
   656 if (Mask and EXPLAutoSound) <> 0 then PlaySound(sndExplosion, false);
   657 if (Mask and EXPLAllDamageInRadius)=0 then Radius:= Radius shl 1;
   657 if (Mask and EXPLAllDamageInRadius)=0 then Radius:= Radius shl 1;
   658 Gear:= GearsList;
   658 Gear:= GearsList;
   659 while Gear <> nil do
   659 while Gear <> nil do
   660       begin
   660       begin
   661       dmg:= Radius - hwRound(Distance(Gear^.X - X, Gear^.Y - Y));
   661       dmg:= Radius - hwRound(Distance(Gear^.X - X, Gear^.Y - Y));
   662       if dmg > 0 then
   662       if dmg > 0 then
   663          begin
   663          begin
   664          dmg:= dmg shr 1;
   664          dmg:= dmg div 2;
   665          case Gear^.Kind of
   665          case Gear^.Kind of
   666               gtHedgehog,
   666               gtHedgehog,
   667                   gtMine,
   667                   gtMine,
   668                   gtCase,
   668                   gtCase,
   669                  gtFlame: begin
   669                  gtFlame: begin
       
   670                           {$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF}
   670                           if (Mask and EXPLNoDamage) = 0 then inc(Gear^.Damage, dmg);
   671                           if (Mask and EXPLNoDamage) = 0 then inc(Gear^.Damage, dmg);
   671                           if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then
   672                           if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then
   672                              begin
   673                              begin
   673                              Gear^.dX:= Gear^.dX + (_0_005 * dmg + cHHKick)* hwSign(Gear^.X - X);
   674                              Gear^.dX:= Gear^.dX + (_0_005 * dmg + cHHKick) * hwSign(Gear^.X - X);
   674                              Gear^.dY:= Gear^.dY + (_0_005 * dmg + cHHKick)* hwSign(Gear^.Y - Y);
   675                              addfilelog(' >> _0_005 * dmg = '+floattostr(_0_005 * dmg));
       
   676                              addfilelog(' >> dx = '+floattostr(Gear^.dX));
       
   677                              Gear^.dY:= Gear^.dY + (_0_005 * dmg + cHHKick) * hwSign(Gear^.Y - Y);
   675                              Gear^.Active:= true;
   678                              Gear^.Active:= true;
   676                              FollowGear:= Gear
   679                              FollowGear:= Gear
   677                              end;
   680                              end;
   678                           end;
   681                           end;
   679                  gtGrave: begin
   682                  gtGrave: begin