hedgewars/uAIAmmoTests.pas
changeset 15685 78e383fff605
parent 15680 3224d0d970ac
child 15686 034955e721a1
equal deleted inserted replaced
15684:c7fe94d56d6e 15685:78e383fff605
    62 function TestMineStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    62 function TestMineStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    63 function TestSMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    63 function TestSMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    64 function TestPiano(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    64 function TestPiano(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    65 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    65 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    66 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    66 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
       
    67 function TestResurrector(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    67 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    68 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    68 function TestSeduction(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    69 function TestSeduction(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    69 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    70 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    70 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    71 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    71 function TestKnife(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    72 function TestKnife(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
   128             (proc: @TestGrenade;     flags: amtest_NoTrackFall), // amGasBomb
   129             (proc: @TestGrenade;     flags: amtest_NoTrackFall), // amGasBomb
   129             (proc: @TestShotgun;     flags: 0), // amSineGun
   130             (proc: @TestShotgun;     flags: 0), // amSineGun
   130             (proc: nil;              flags: 0), // amFlamethrower
   131             (proc: nil;              flags: 0), // amFlamethrower
   131             (proc: @TestSMine;       flags: 0), // amSMine
   132             (proc: @TestSMine;       flags: 0), // amSMine
   132             (proc: @TestHammer;      flags: amtest_NoTarget or amtest_NoInvulnerable), // amHammer
   133             (proc: @TestHammer;      flags: amtest_NoTarget or amtest_NoInvulnerable), // amHammer
   133             (proc: nil;              flags: 0), // amResurrector
   134             (proc: @TestResurrector; flags: amtest_NoTarget or amtest_NoInvulnerable or amtest_NoVampiric), // amResurrector
   134             (proc: @TestDrillStrike; flags: amtest_Rare), // amDrillStrike
   135             (proc: @TestDrillStrike; flags: amtest_Rare), // amDrillStrike
   135             (proc: nil;              flags: 0), // amSnowball
   136             (proc: nil;              flags: 0), // amSnowball
   136             (proc: nil;              flags: 0), // amTardis
   137             (proc: nil;              flags: 0), // amTardis
   137             (proc: nil;              flags: 0), // amLandGun
   138             (proc: nil;              flags: 0), // amLandGun
   138             (proc: nil;              flags: 0), // amIceGun
   139             (proc: nil;              flags: 0), // amIceGun
  1485 if valueResult <= 0 then
  1486 if valueResult <= 0 then
  1486     valueResult:= BadTurn;
  1487     valueResult:= BadTurn;
  1487 TestAirAttack:= valueResult;
  1488 TestAirAttack:= valueResult;
  1488 end;
  1489 end;
  1489 
  1490 
       
  1491 function TestResurrector(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
       
  1492 var rate, heal: LongInt;
       
  1493 begin
       
  1494 Flags:= Flags; // avoid compiler hint
       
  1495 Targ:= Targ;
       
  1496 
       
  1497 if (Level = 5) then
       
  1498     exit(BadTurn);
       
  1499 
       
  1500 if (Me^.Health <= 1) then
       
  1501     exit(BadTurn);
       
  1502 
       
  1503 if (Level <= 2) and (Me^.Hedgehog^.Effects[hePoisoned] > 0) then
       
  1504     // Sacrifice almost all health if poisoned
       
  1505     heal:= Me^.Health - 1
       
  1506 else
       
  1507     // Sacrifice up to 10% of own health
       
  1508     heal:= (Me^.Health div 10);
       
  1509 
       
  1510 ap.ExplR:= 0;
       
  1511 ap.Time:= 0;
       
  1512 if (GameFlags and gfInfAttack) = 0 then
       
  1513     ap.Power:= max(min(500 * heal - 500, 10000), 10)
       
  1514 else
       
  1515     // Shorter attack duration in inf attack because the clock is ticking!
       
  1516     ap.Power:= max(min(500 * heal - 500, 3000), 10);
       
  1517 ap.Angle:= 0;
       
  1518 
       
  1519 rate:= RateResurrector(Me);
       
  1520 if rate <= 0 then
       
  1521     rate:= BadTurn;
       
  1522 TestResurrector:= rate;
       
  1523 end;
       
  1524 
  1490 function TestDrillStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
  1525 function TestDrillStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
  1491 const cShift = 4;
  1526 const cShift = 4;
  1492       Density : real = 1.0;
  1527       Density : real = 1.0;
  1493 var bombsSpeed, X, Y, dX, dY, drillX, drillY: real;
  1528 var bombsSpeed, X, Y, dX, dY, drillX, drillY: real;
  1494     t2: real;
  1529     t2: real;