equal
deleted
inserted
replaced
45 State : Cardinal; |
45 State : Cardinal; |
46 X : Real; |
46 X : Real; |
47 Y : Real; |
47 Y : Real; |
48 dX: Real; |
48 dX: Real; |
49 dY: Real; |
49 dY: Real; |
50 Kind : TGearType; |
50 Kind: TGearType; |
|
51 Pos: Longword; |
51 doStep: TGearStepProcedure; |
52 doStep: TGearStepProcedure; |
52 HalfWidth, HalfHeight: integer; |
53 HalfWidth, HalfHeight: integer; |
53 Angle, Power : Cardinal; |
54 Angle, Power : Cardinal; |
54 DirAngle: real; |
55 DirAngle: real; |
55 Timer : LongWord; |
56 Timer : LongWord; |
495 //!!! ACHTUNG!!!! |
496 //!!! ACHTUNG!!!! |
496 gtDynamite: if ((Gear.State and gstAttacking) = 0)or((Gear.Timer and $3FF) < 420) |
497 gtDynamite: if ((Gear.State and gstAttacking) = 0)or((Gear.Timer and $3FF) < 420) |
497 then DrawSprite(sprMineOff , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface) |
498 then DrawSprite(sprMineOff , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface) |
498 else DrawSprite(sprMineOn , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface); |
499 else DrawSprite(sprMineOn , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface); |
499 //!!! ACHTUNG!!!! |
500 //!!! ACHTUNG!!!! |
500 gtCase: DrawSprite(sprCase, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 16 + WorldDy, 0, Surface); |
501 gtCase: case Gear.Pos of |
|
502 posCaseAmmo : DrawSprite(sprCase, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 16 + WorldDy, 0, Surface); |
|
503 posCaseHealth: DrawSprite(sprFAid, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 16 + WorldDy, (GameTicks shr 6) and $F, Surface); |
|
504 end; |
501 end; |
505 end; |
502 Gear:= Gear.NextGear |
506 Gear:= Gear.NextGear |
503 end; |
507 end; |
504 end; |
508 end; |
505 |
509 |
551 case Gear.Kind of |
555 case Gear.Kind of |
552 gtHedgehog, |
556 gtHedgehog, |
553 gtMine, |
557 gtMine, |
554 gtCase: begin |
558 gtCase: begin |
555 if (Mask and EXPLNoDamage) = 0 then inc(Gear.Damage, dmg); |
559 if (Mask and EXPLNoDamage) = 0 then inc(Gear.Damage, dmg); |
556 Gear.dX:= Gear.dX + dmg / 200 * sign(Gear.X - X); |
560 if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear.Kind <> gtHedgehog) then |
557 Gear.dY:= Gear.dY + dmg / 200 * sign(Gear.Y - Y); |
561 begin |
558 Gear.Active:= true; |
562 Gear.dX:= Gear.dX + dmg / 200 * sign(Gear.X - X); |
559 FollowGear:= Gear |
563 Gear.dY:= Gear.dY + dmg / 200 * sign(Gear.Y - Y); |
|
564 Gear.Active:= true; |
|
565 FollowGear:= Gear |
|
566 end; |
560 end; |
567 end; |
561 gtGrave: Gear.dY:= - dmg / 250; |
568 gtGrave: Gear.dY:= - dmg / 250; |
562 end; |
569 end; |
563 end; |
570 end; |
564 Gear:= Gear.NextGear |
571 Gear:= Gear.NextGear |
566 end; |
573 end; |
567 |
574 |
568 procedure AmmoShove(Ammo, Gear: PGear; Power: Longword); |
575 procedure AmmoShove(Ammo, Gear: PGear; Power: Longword); |
569 begin |
576 begin |
570 case Gear.Kind of |
577 case Gear.Kind of |
571 gtHedgehog: begin |
578 gtHedgehog, |
|
579 gtMine, |
|
580 gtCase: begin |
572 inc(Gear.Damage, Power); |
581 inc(Gear.Damage, Power); |
573 Gear.dX:= Ammo.dX * Power * 0.01; |
582 Gear.dX:= Ammo.dX * Power * 0.01; |
574 Gear.dY:= Ammo.dY * Power * 0.01; |
583 Gear.dY:= Ammo.dY * Power * 0.01; |
575 Gear.Active:= true; |
584 Gear.Active:= true; |
576 FollowGear:= Gear |
585 FollowGear:= Gear |
649 |
658 |
650 procedure SpawnBoxOfSmth; |
659 procedure SpawnBoxOfSmth; |
651 var i, x, y, k: integer; |
660 var i, x, y, k: integer; |
652 b: boolean; |
661 b: boolean; |
653 begin |
662 begin |
654 exit; // temp hack until boxes are fully implemented |
|
655 if CountGears(gtCase) > 2 then exit; |
663 if CountGears(gtCase) > 2 then exit; |
656 k:= 7; |
664 k:= 7; |
657 repeat |
665 repeat |
658 x:= getrandom(2000) + 24; |
666 x:= getrandom(2000) + 24; |
659 {$IFDEF DEBUGFILE}AddFileLog('SpawnBoxOfSmth: check x = '+inttostr(x));{$ENDIF} |
667 // {$IFDEF DEBUGFILE}AddFileLog('SpawnBoxOfSmth: check x = '+inttostr(x));{$ENDIF} |
660 b:= false; |
668 b:= false; |
661 y:= -1; |
669 y:= -1; |
662 while (y < 1023) and not b do |
670 while (y < 1023) and not b do |
663 begin |
671 begin |
664 inc(y); |
672 inc(y); |
675 end; |
683 end; |
676 if b then |
684 if b then |
677 b:= CheckGearsNear(x, y, [gtMine, gtHedgehog, gtCase], 70, 70) = nil; |
685 b:= CheckGearsNear(x, y, [gtMine, gtHedgehog, gtCase], 70, 70) = nil; |
678 dec(k) |
686 dec(k) |
679 until (k = 0) or b; |
687 until (k = 0) or b; |
680 if b then FollowGear:= AddGear(x, -30, gtCase, 0) |
688 if b then |
|
689 begin |
|
690 FollowGear:= AddGear(x, -30, gtCase, 0); |
|
691 FollowGear.Health:= 25; |
|
692 FollowGear.Pos:= posCaseHealth |
|
693 end; |
681 end; |
694 end; |
682 |
695 |
683 initialization |
696 initialization |
684 |
697 |
685 finalization |
698 finalization |