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 TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
56 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
57 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
57 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
58 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
58 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
59 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
59 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
|
60 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
60 |
61 |
61 type TAmmoTestProc = function (Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
62 type TAmmoTestProc = function (Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
62 TAmmoTest = record |
63 TAmmoTest = record |
63 proc: TAmmoTestProc; |
64 proc: TAmmoTestProc; |
64 flags: Longword; |
65 flags: Longword; |
73 (proc: @TestBee; flags: amtest_Rare), // amBee |
74 (proc: @TestBee; flags: amtest_Rare), // amBee |
74 (proc: @TestShotgun; flags: 0), // amShotgun |
75 (proc: @TestShotgun; flags: 0), // amShotgun |
75 (proc: nil; flags: 0), // amPickHammer |
76 (proc: nil; flags: 0), // amPickHammer |
76 (proc: nil; flags: 0), // amSkip |
77 (proc: nil; flags: 0), // amSkip |
77 (proc: nil; flags: 0), // amRope |
78 (proc: nil; flags: 0), // amRope |
78 (proc: nil; flags: 0), // amMine |
79 (proc: @TestMine; flags: amtest_NoTarget), // amMine |
79 (proc: @TestDesertEagle; flags: amtest_MultipleAttacks), // amDEagle |
80 (proc: @TestDesertEagle; flags: amtest_MultipleAttacks), // amDEagle |
80 (proc: @TestDynamite; flags: amtest_NoTarget), // amDynamite |
81 (proc: @TestDynamite; flags: amtest_NoTarget), // amDynamite |
81 (proc: @TestFirePunch; flags: amtest_NoTarget), // amFirePunch |
82 (proc: @TestFirePunch; flags: amtest_NoTarget), // amFirePunch |
82 (proc: @TestWhip; flags: amtest_NoTarget), // amWhip |
83 (proc: @TestWhip; flags: amtest_NoTarget), // amWhip |
83 (proc: @TestBaseballBat; flags: amtest_NoTarget), // amBaseballBat |
84 (proc: @TestBaseballBat; flags: amtest_NoTarget), // amBaseballBat |
1469 valueResult:= BadTurn; |
1470 valueResult:= BadTurn; |
1470 |
1471 |
1471 TestDynamite:= valueResult |
1472 TestDynamite:= valueResult |
1472 end; |
1473 end; |
1473 |
1474 |
|
1475 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt; |
|
1476 var valueResult: LongInt; |
|
1477 x, y, dx, dy: real; |
|
1478 EX, EY, t: LongInt; |
|
1479 begin |
|
1480 Flags:= Flags; // avoid compiler hint |
|
1481 Targ:= Targ; // avoid compiler hint |
|
1482 |
|
1483 x:= hwFloat2Float(Me^.X) + hwSign(Me^.dX) * 7; |
|
1484 y:= hwFloat2Float(Me^.Y); |
|
1485 dx:= hwSign(Me^.dX) * 0.02; |
|
1486 dy:= 0; |
|
1487 t:= 10000; |
|
1488 repeat |
|
1489 dec(t); |
|
1490 x:= x + dx; |
|
1491 dy:= dy + cGravityf; |
|
1492 y:= y + dy; |
|
1493 if ((Me = CurrentHedgehog^.Gear) and TestColl(trunc(x), trunc(y), 2)) or |
|
1494 ((Me <> CurrentHedgehog^.Gear) and TestCollExcludingMe(Me^.Hedgehog^.Gear, trunc(x), trunc(y), 2)) then |
|
1495 t:= 0; |
|
1496 until t = 0; |
|
1497 |
|
1498 EX:= trunc(x); |
|
1499 EY:= trunc(y); |
|
1500 |
|
1501 if Level = 1 then |
|
1502 valueResult:= RateExplosion(Me, EX, EY, 51, afTrackFall or afErasesLand) |
|
1503 else |
|
1504 valueResult:= RateExplosion(Me, EX, EY, 51); |
|
1505 |
|
1506 if (valueResult > 0) then |
|
1507 begin |
|
1508 ap.Angle:= 0; |
|
1509 ap.Power:= 1; |
|
1510 ap.Time:= 0; |
|
1511 ap.ExplR:= 100; |
|
1512 ap.ExplX:= EX; |
|
1513 ap.ExplY:= EY |
|
1514 end else |
|
1515 valueResult:= BadTurn; |
|
1516 |
|
1517 TestMine:= valueResult |
|
1518 end; |
|
1519 |
1474 end. |
1520 end. |