hedgewars/uGearsHandlersMess.pas
changeset 15843 4a1e3d824c34
parent 15841 c5198f55ee1c
child 15844 4ede5e84278a
equal deleted inserted replaced
15842:b6379a7ed674 15843:4a1e3d824c34
  7357 
  7357 
  7358     CreateShellForGear(Sentry, Sentry^.WDTimer and 1);
  7358     CreateShellForGear(Sentry, Sentry^.WDTimer and 1);
  7359     PlaySound(sndGun);
  7359     PlaySound(sndGun);
  7360 end;
  7360 end;
  7361 
  7361 
  7362 function GetSentryTarget(): PGear;
  7362 function GetSentryTarget(sentry: PGear): PGear;
  7363 var HHGear: PGear;
  7363 var HHGear: PGear;
       
  7364     friendlyTarget: boolean;
  7364 begin
  7365 begin
  7365     GetSentryTarget := nil;
  7366     GetSentryTarget := nil;
  7366     if (CurrentHedgehog <> nil) then
  7367     friendlyTarget := false;
       
  7368 
       
  7369     if CurrentHedgehog <> nil then
  7367     begin
  7370     begin
  7368         HHGear := CurrentHedgehog^.Gear;
  7371         HHGear := CurrentHedgehog^.Gear;
  7369         if HHGear <> nil then
  7372         if HHGear <> nil then
  7370         begin
  7373             if ((HHGear^.State and gstHHDriven) <> 0) and (HHGear^.CollisionIndex < 0) then
  7371             if ((HHGear^.State and gstHHDriven) <> 0)
  7374             begin
  7372                 and (HHGear^.CollisionIndex < 0) then
  7375                 if sentry^.Hedgehog <> nil then
  7373                 GetSentryTarget := HHGear;
  7376                     friendlyTarget := sentry^.Hedgehog^.Team = CurrentHedgehog^.Team;
  7374         end
  7377                 if not friendlyTarget then
       
  7378                     GetSentryTarget := HHGear;
       
  7379             end
  7375     end
  7380     end
  7376 end;
  7381 end;
  7377 
  7382 
  7378 procedure doStepSentryLand(Gear: PGear);
  7383 procedure doStepSentryLand(Gear: PGear);
  7379 var HHGear: PGear;
  7384 var HHGear: PGear;
  7498         AimSentry(Gear);
  7503         AimSentry(Gear);
  7499 
  7504 
  7500     if ((GameTicks and $FF) = 0)
  7505     if ((GameTicks and $FF) = 0)
  7501         and (Gear^.Tag in [sentry_Idle, sentry_Walking]) then
  7506         and (Gear^.Tag in [sentry_Idle, sentry_Walking]) then
  7502     begin
  7507     begin
  7503         HHGear := GetSentryTarget();
  7508         HHGear := GetSentryTarget(Gear);
  7504         if HHGear <> nil then
  7509         if HHGear <> nil then
  7505             if CheckSentryAttackRange(Gear, HHGear^.X, HHGear^.Y) then
  7510             if CheckSentryAttackRange(Gear, HHGear^.X, HHGear^.Y) then
  7506             begin
  7511             begin
  7507                 Gear^.Target.X := hwRound(HHGear^.X);
  7512                 Gear^.Target.X := hwRound(HHGear^.X);
  7508                 Gear^.Target.Y := hwRound(HHGear^.Y);
  7513                 Gear^.Target.Y := hwRound(HHGear^.Y);
  7600         AimSentry(Gear);
  7605         AimSentry(Gear);
  7601 
  7606 
  7602     if ((GameTicks and $FF) = 0)
  7607     if ((GameTicks and $FF) = 0)
  7603         and (Gear^.Tag in [sentry_Idle, sentry_Walking]) then
  7608         and (Gear^.Tag in [sentry_Idle, sentry_Walking]) then
  7604     begin
  7609     begin
  7605         HHGear := GetSentryTarget();
  7610         HHGear := GetSentryTarget(Gear);
  7606         if HHGear <> nil then
  7611         if HHGear <> nil then
  7607             if CheckSentryAttackRange(Gear, HHGear^.X, HHGear^.Y) then
  7612             if CheckSentryAttackRange(Gear, HHGear^.X, HHGear^.Y) then
  7608             begin
  7613             begin
  7609                 Gear^.Target.X := hwRound(HHGear^.X);
  7614                 Gear^.Target.X := hwRound(HHGear^.X);
  7610                 Gear^.Target.Y := hwRound(HHGear^.Y);
  7615                 Gear^.Target.Y := hwRound(HHGear^.Y);