# HG changeset patch # User nemo # Date 1326338767 18000 # Node ID faa47a7e614a951a590988e77ab8960e97c99073 # Parent 11f82e49d2765c94b8f291cbba92ef915c63a1a5 Allow multiple portals, so long as the team hasn't changed... diff -r 11f82e49d276 -r faa47a7e614a hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Tue Jan 10 22:41:35 2012 -0500 +++ b/hedgewars/GSHandlers.inc Wed Jan 11 22:26:07 2012 -0500 @@ -3831,7 +3831,7 @@ // destroy portal if ground it was attached too is gone if ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) = 0) or (Gear^.Timer < 1) - or (Gear^.Hedgehog <> CurrentHedgehog) + or (Gear^.Hedgehog^.Team <> CurrentHedgehog^.Team) or (hwRound(Gear^.Y) > cWaterLine) then begin deleteGear(Gear); @@ -4218,8 +4218,8 @@ begin doPortalColorSwitch(); doStepPerPixel(Gear, @doStepMovingPortal_real, true); - if (Gear^.Timer < 1) - or (Gear^.Hedgehog <> CurrentHedgehog) then + if (Gear^.Timer < 1) + or (Gear^.Hedgehog^.Team <> CurrentHedgehog^.Team) then deleteGear(Gear); end; @@ -4259,19 +4259,19 @@ while iterator <> nil do begin if (iterator^.Kind = gtPortal) then - if (iterator <> newPortal) and (iterator^.Timer > 0) then + if (iterator <> newPortal) and (iterator^.Timer > 0) and (iterator^.Hedgehog = CurrentHedgehog) then begin - if (iterator^.Tag and 2) = (newPortal^.Tag and 2) then - begin + if ((iterator^.Tag and 2) = (newPortal^.Tag and 2)) then + begin iterator^.Timer:= 0; - end + end else - begin + begin // link portals with each other newPortal^.IntersectGear := iterator; iterator^.IntersectGear := newPortal; iterator^.Health := newPortal^.Health; - end; + end; end; iterator^.PortalCounter:= 0; iterator := iterator^.NextGear