hedgewars/uAIMisc.pas
changeset 7432 6dc7ccc0b043
parent 7426 55b49cc1f33a
child 7437 a46ce1812419
equal deleted inserted replaced
7429:fcf13e40d6b6 7432:6dc7ccc0b043
   437                      fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, 0) * dmgMod)
   437                      fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, 0) * dmgMod)
   438                 else fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, erasure) * dmgMod)
   438                 else fallDmg:= trunc(TraceFall(x, y, Point.x, Point.y, dX, dY, erasure) * dmgMod)
   439                 end;
   439                 end;
   440             if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI
   440             if fallDmg < 0 then // drowning. score healthier hogs higher, since their death is more likely to benefit the AI
   441                 if Score > 0 then
   441                 if Score > 0 then
   442                     inc(rate, KillScore + Score div 10)   // Add a bit of a bonus for bigger hog drownings
   442                     inc(rate, (KillScore + Score div 10) * 1024)   // Add a bit of a bonus for bigger hog drownings
   443                 else
   443                 else
   444                     dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs
   444                     dec(rate, (KillScore * friendlyfactor div 100 - Score div 10) * 1024) // and more of a punishment for drowning bigger friendly hogs
   445             else if (dmg+fallDmg) >= abs(Score) then
   445             else if (dmg+fallDmg) >= abs(Score) then
   446                 if Score > 0 then
   446                 if Score > 0 then
   447                     inc(rate, KillScore)
   447                     inc(rate, KillScore * 1024 + (dmg + fallDmg)) // tiny bonus for dealing more damage than needed to kill
   448                 else
   448                 else
   449                     dec(rate, KillScore * friendlyfactor div 100)
   449                     dec(rate, KillScore * friendlyfactor div 100 * 1024)
   450             else
   450             else
   451                 if Score > 0 then
   451                 if Score > 0 then
   452                     inc(rate, dmg+fallDmg)
   452                     inc(rate, (dmg + fallDmg) * 1024)
   453                 else dec(rate, (dmg+fallDmg) * friendlyfactor div 100)
   453                 else dec(rate, (dmg + fallDmg) * friendlyfactor div 100 * 1024)
   454             end;
   454             end;
   455         end;
   455         end;
   456 RateExplosion:= rate * 1024;
   456 RateExplosion:= rate;
   457 end;
   457 end;
   458 
   458 
   459 function RateShove(Me: PGear; x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt;
   459 function RateShove(Me: PGear; x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt;
   460 var i, fallDmg, dmg, rate: LongInt;
   460 var i, fallDmg, dmg, rate: LongInt;
   461     dX, dY, dmgMod: real;
   461     dX, dY, dmgMod: real;