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; |