hedgewars/uGearsUtils.pas
changeset 9814 c740c865294d
parent 9809 1e32628eb167
child 9950 2759212a27de
child 9998 736015b847e3
equal deleted inserted replaced
9813:4132b0bfcac5 9814:c740c865294d
   156                             if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.Effects[heInvulnerable] = 0) and (Gear^.State and gstHHDeath = 0) then
   156                             if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.Effects[heInvulnerable] = 0) and (Gear^.State and gstHHDeath = 0) then
   157                                 Gear^.Hedgehog^.Effects[hePoisoned] := 1;
   157                                 Gear^.Hedgehog^.Effects[hePoisoned] := 1;
   158                             end;
   158                             end;
   159 
   159 
   160                         end;
   160                         end;
   161                 gtGrave: begin
   161                 gtGrave: if Mask and EXPLDoNotTouchAny = 0 then
   162 // Run the calcs only once we know we have a type that will need damage
   162 // Run the calcs only once we know we have a type that will need damage
   163                         tdX:= Gear^.X-fX;
       
   164                         tdY:= Gear^.Y-fY;
       
   165                         if LongInt(tdX.Round + tdY.Round + 2) < dmgBase then
       
   166                             dmg:= dmgBase - hwRound(Distance(tdX, tdY));
       
   167                         if dmg > 1 then
       
   168                             begin
   163                             begin
   169                             dmg:= ModifyDamage(min(dmg div 2, Radius), Gear);
   164                             tdX:= Gear^.X-fX;
   170                             Gear^.dY:= - _0_004 * dmg;
   165                             tdY:= Gear^.Y-fY;
   171                             Gear^.Active:= true
   166                             if LongInt(tdX.Round + tdY.Round + 2) < dmgBase then
   172                             end
   167                                 dmg:= dmgBase - hwRound(Distance(tdX, tdY));
   173                         end;
   168                             if dmg > 1 then
       
   169                                 begin
       
   170                                 dmg:= ModifyDamage(min(dmg div 2, Radius), Gear);
       
   171                                 Gear^.dY:= - _0_004 * dmg;
       
   172                                 Gear^.Active:= true
       
   173                                 end
       
   174                             end;
   174             end;
   175             end;
   175         end;
   176         end;
   176     Gear:= Gear^.NextGear
   177     Gear:= Gear^.NextGear
   177     end;
   178     end;
   178 
   179