447 Gear:= GearsList; |
447 Gear:= GearsList; |
448 while Gear <> nil do |
448 while Gear <> nil do |
449 begin |
449 begin |
450 if Gear^.Kind = gtHedgehog then |
450 if Gear^.Kind = gtHedgehog then |
451 begin |
451 begin |
|
452 if (not isInMultiShoot) then inc(Gear^.Damage, Gear^.Karma); |
452 if (Gear^.Damage <> 0) and |
453 if (Gear^.Damage <> 0) and |
453 (not Gear^.Invulnerable) then |
454 (not Gear^.Invulnerable) then |
454 begin |
455 begin |
455 CheckNoDamage:= false; |
456 CheckNoDamage:= false; |
456 uStats.HedgehogDamaged(Gear); |
457 uStats.HedgehogDamaged(Gear); |
459 Gear^.Health:= 0 |
460 Gear^.Health:= 0 |
460 else |
461 else |
461 dec(Gear^.Health, dmg); |
462 dec(Gear^.Health, dmg); |
462 |
463 |
463 if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and |
464 if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and |
|
465 (Gear^.Damage <> Gear^.Karma) and |
464 not SuddenDeathDmg then |
466 not SuddenDeathDmg then |
465 Gear^.State:= Gear^.State or gstLoser; |
467 Gear^.State:= Gear^.State or gstLoser; |
466 |
468 |
467 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12, |
469 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12, |
468 gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; |
470 gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; |
469 |
471 |
470 RenderHealth(PHedgehog(Gear^.Hedgehog)^); |
472 RenderHealth(PHedgehog(Gear^.Hedgehog)^); |
471 RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team); |
473 RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team); |
472 |
474 |
473 end; |
475 end; |
474 Gear^.Damage:= 0; |
476 if (not isInMultiShoot) then Gear^.Karma:= 0; |
|
477 Gear^.Damage:= 0 |
475 end; |
478 end; |
476 Gear:= Gear^.NextGear |
479 Gear:= Gear^.NextGear |
477 end; |
480 end; |
478 SuddenDeathDmg:= false; |
481 SuddenDeathDmg:= false; |
479 end; |
482 end; |
690 end; |
693 end; |
691 if ((GameFlags and gfKarma) <> 0) and |
694 if ((GameFlags and gfKarma) <> 0) and |
692 ((GameFlags and gfInvulnerable) = 0) and |
695 ((GameFlags and gfInvulnerable) = 0) and |
693 not CurrentHedgehog^.Gear^.Invulnerable then |
696 not CurrentHedgehog^.Gear^.Invulnerable then |
694 begin // this cannot just use Damage or it interrupts shotgun and gets you called stupid |
697 begin // this cannot just use Damage or it interrupts shotgun and gets you called stupid |
695 if CurrentHedgehog^.Gear^.Health < int(tmpDmg) then |
698 inc(CurrentHedgehog^.Gear^.Karma, tmpDmg); |
696 begin |
|
697 // Add damage to trigger normal resolution |
|
698 CurrentHedgehog^.Gear^.Health := 0; |
|
699 inc(CurrentHedgehog^.Gear^.Damage); |
|
700 end |
|
701 else |
|
702 dec(CurrentHedgehog^.Gear^.Health, tmpDmg); |
|
703 AddGear(hwRound(CurrentHedgehog^.Gear^.X), |
699 AddGear(hwRound(CurrentHedgehog^.Gear^.X), |
704 hwRound(CurrentHedgehog^.Gear^.Y), |
700 hwRound(CurrentHedgehog^.Gear^.Y), |
705 gtHealthTag, tmpDmg, _0, _0, 0)^.Hedgehog:= CurrentHedgehog; |
701 gtHealthTag, tmpDmg, _0, _0, 0)^.Hedgehog:= CurrentHedgehog; |
706 RenderHealth(CurrentHedgehog^); |
|
707 RecountTeamHealth(CurrentHedgehog^.Team); |
|
708 end; |
702 end; |
709 end; |
703 end; |
710 end; |
704 end; |
711 inc(Gear^.Damage, Damage); |
705 inc(Gear^.Damage, Damage); |
712 end; |
706 end; |