equal
deleted
inserted
replaced
512 else |
512 else |
513 dec(Gear^.Health, dmg); |
513 dec(Gear^.Health, dmg); |
514 |
514 |
515 if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and |
515 if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and |
516 (Gear^.Damage <> Gear^.Karma) and |
516 (Gear^.Damage <> Gear^.Karma) and |
|
517 not PHedgehog(Gear^.Hedgehog)^.King and |
517 not SuddenDeathDmg then |
518 not SuddenDeathDmg then |
518 Gear^.State:= Gear^.State or gstLoser; |
519 Gear^.State:= Gear^.State or gstLoser; |
519 |
520 |
520 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12, |
521 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12, |
521 gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; |
522 gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; |
532 SuddenDeathDmg:= false; |
533 SuddenDeathDmg:= false; |
533 end; |
534 end; |
534 |
535 |
535 procedure HealthMachine; |
536 procedure HealthMachine; |
536 var Gear: PGear; |
537 var Gear: PGear; |
|
538 team: PTeam; |
|
539 i: LongWord; |
|
540 flag: Boolean; |
537 begin |
541 begin |
538 Gear:= GearsList; |
542 Gear:= GearsList; |
539 |
543 |
540 while Gear <> nil do |
544 while Gear <> nil do |
541 begin |
545 begin |
542 if Gear^.Kind = gtHedgehog then |
546 if Gear^.Kind = gtHedgehog then |
543 Gear^.Damage:= min(cHealthDecrease, Gear^.Health - 1); |
547 begin |
|
548 inc(Gear^.Damage, min(cHealthDecrease, max(0,Gear^.Health - 1 - Gear^.Damage))); |
|
549 if PHedgehog(Gear^.Hedgehog)^.King then |
|
550 begin |
|
551 flag:= false; |
|
552 team:= PHedgehog(Gear^.Hedgehog)^.Team; |
|
553 for i:= 0 to Pred(team^.HedgehogsNumber) do |
|
554 if (team^.Hedgehogs[i].Gear <> nil) and |
|
555 (not team^.Hedgehogs[i].King) and |
|
556 (team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) then flag:= true; |
|
557 if not flag then inc(Gear^.Damage, min(5, max(0,Gear^.Health - 1 - Gear^.Damage))) |
|
558 end |
|
559 end; |
544 |
560 |
545 Gear:= Gear^.NextGear |
561 Gear:= Gear^.NextGear |
546 end; |
562 end; |
547 end; |
563 end; |
548 |
564 |
630 cHealthDecrease:= 5; |
646 cHealthDecrease:= 5; |
631 AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState); |
647 AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState); |
632 playSound(sndSuddenDeath) |
648 playSound(sndSuddenDeath) |
633 end; |
649 end; |
634 |
650 |
635 if (cHealthDecrease = 0) |
651 if bBetweenTurns |
636 or bBetweenTurns |
|
637 or isInMultiShoot |
652 or isInMultiShoot |
638 or (TotalRounds = 0) then inc(step) |
653 or (TotalRounds = 0) then inc(step) |
639 else begin |
654 else begin |
640 bBetweenTurns:= true; |
655 bBetweenTurns:= true; |
641 HealthMachine; |
656 HealthMachine; |
642 SuddenDeathDmg:= true; |
657 if cHealthDecrease > 0 then SuddenDeathDmg:= true; |
643 step:= stChDmg |
658 step:= stChDmg |
644 end |
659 end |
645 end; |
660 end; |
646 stSpawn: begin |
661 stSpawn: begin |
647 if not isInMultiShoot then SpawnBoxOfSmth; |
662 if not isInMultiShoot then SpawnBoxOfSmth; |