hedgewars/uAIAmmoTests.pas
changeset 15630 899fd1841399
parent 15627 22d0a3d6e2be
child 15631 308930fe5f4a
equal deleted inserted replaced
15629:c61dddd7c1a8 15630:899fd1841399
    53 function TestWhip(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    53 function TestWhip(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    54 function TestKamikaze(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    54 function TestKamikaze(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    55 function TestAirAttack(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    55 function TestAirAttack(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    56 function TestDrillStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    56 function TestDrillStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    57 function TestMineStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    57 function TestMineStrike(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
       
    58 function TestPiano(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    58 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    59 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    59 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    60 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    60 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    61 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    61 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    62 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    62 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    63 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
   111             (proc: @TestSniperRifle; flags: 0), // amSniperRifle
   112             (proc: @TestSniperRifle; flags: 0), // amSniperRifle
   112             (proc: nil;              flags: 0), // amJetpack
   113             (proc: nil;              flags: 0), // amJetpack
   113             (proc: @TestMolotov;     flags: 0), // amMolotov
   114             (proc: @TestMolotov;     flags: 0), // amMolotov
   114             (proc: nil;              flags: 0), // amBirdy
   115             (proc: nil;              flags: 0), // amBirdy
   115             (proc: nil;              flags: 0), // amPortalGun
   116             (proc: nil;              flags: 0), // amPortalGun
   116             (proc: nil;              flags: 0), // amPiano
   117             (proc: @TestPiano;       flags: amtest_Rare), // amPiano
   117             (proc: @TestGrenade;     flags: amtest_NoTrackFall), // amGasBomb
   118             (proc: @TestGrenade;     flags: amtest_NoTrackFall), // amGasBomb
   118             (proc: @TestShotgun;     flags: 0), // amSineGun
   119             (proc: @TestShotgun;     flags: 0), // amSineGun
   119             (proc: nil;              flags: 0), // amFlamethrower
   120             (proc: nil;              flags: 0), // amFlamethrower
   120             (proc: @TestGrenade;     flags: 0), // amSMine
   121             (proc: @TestGrenade;     flags: 0), // amSMine
   121             (proc: @TestHammer;      flags: amtest_NoTarget), // amHammer
   122             (proc: @TestHammer;      flags: amtest_NoTarget), // amHammer
  1522 if valueResult <= 0 then
  1523 if valueResult <= 0 then
  1523     valueResult:= BadTurn;
  1524     valueResult:= BadTurn;
  1524 TestMineStrike:= valueResult;
  1525 TestMineStrike:= valueResult;
  1525 end;
  1526 end;
  1526 
  1527 
       
  1528 function TestPiano(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
       
  1529 const BOUNCES = 5;
       
  1530 var X, Y: real;
       
  1531     dmg: array[0..BOUNCES-1] of LongInt;
       
  1532     i, valueResult: LongInt;
       
  1533 begin
       
  1534 Flags:= Flags; // avoid compiler hint
       
  1535 ap.ExplR:= 0;
       
  1536 ap.Time:= 0;
       
  1537 if (cGravityf <= 0) then
       
  1538     exit(BadTurn);
       
  1539 
       
  1540 if (Level > 2) then
       
  1541     exit(BadTurn);
       
  1542 
       
  1543 ap.Angle:= 0;
       
  1544 ap.AttackPutX:= Targ.Point.X;
       
  1545 ap.AttackPutY:= Targ.Point.Y;
       
  1546 
       
  1547 X:= Targ.Point.X;
       
  1548 Y:= -128;
       
  1549 
       
  1550 for i:= 0 to BOUNCES-1 do
       
  1551     dmg[i]:= 0;
       
  1552 
       
  1553 i:= 1;
       
  1554 repeat
       
  1555     Y:= Y + 32;
       
  1556     if TestCollExcludingMe(Me^.Hedgehog^.Gear, trunc(X), trunc(Y), 32) then
       
  1557         begin
       
  1558         dmg[i]:= dmg[i] + RateExplosion(Me, trunc(X)-30, trunc(Y)+40, 161);
       
  1559         dmg[i]:= dmg[i] + RateExplosion(Me, trunc(X), trunc(Y)+40, 161);
       
  1560         dmg[i]:= dmg[i] + RateExplosion(Me, trunc(X)+30, trunc(Y)+40, 161);
       
  1561         inc(i);
       
  1562         Y:= Y + 48;
       
  1563         end;
       
  1564 until (i >= BOUNCES) or (Y > cWaterLine);
       
  1565 
       
  1566 if (i = 0) and (Y > cWaterLine) then
       
  1567     exit(BadTurn);
       
  1568 
       
  1569 valueResult:= 0;
       
  1570 for i:= 0 to BOUNCES do
       
  1571     if dmg[i] <> BadTurn then
       
  1572         inc(valueResult, dmg[i]);
       
  1573 ap.AttackPutX:= Targ.Point.X;
       
  1574 
       
  1575 valueResult:= valueResult - KillScore * friendlyfactor div 100 * 1024;
       
  1576 
       
  1577 if valueResult <= 0 then
       
  1578     valueResult:= BadTurn;
       
  1579 TestPiano:= valueResult;
       
  1580 end;
       
  1581 
  1527 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
  1582 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
  1528 var
  1583 var
  1529     i, failNum: longword;
  1584     i, failNum: longword;
  1530     maxTop: longword;
  1585     maxTop: longword;
  1531 begin
  1586 begin