Skip to content

Instantly share code, notes, and snippets.

@phrohdoh
Created July 12, 2014 18:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phrohdoh/da5ac24aed059792d81c to your computer and use it in GitHub Desktop.
Save phrohdoh/da5ac24aed059792d81c to your computer and use it in GitHub Desktop.
// existing code
Actor ChooseTarget(Actor self, WRange range)
{
nextScanTime = self.World.SharedRandom.Next(info.MinimumScanTimeInterval, info.MaximumScanTimeInterval);
var inRange = self.World.FindActorsInCircle(self.CenterPosition, range);
return inRange
.Where(a =>
a.AppearsHostileTo(self) &&
!a.HasTrait<AutoTargetIgnore>() &&
attack.HasAnyValidWeapons(Target.FromActor(a)) &&
self.Owner.Shroud.IsTargetable(a))
.ClosestTo(self);
}
// new code
Actor ChooseTarget(Actor self, WRange range)
{
nextScanTime = self.World.SharedRandom.Next(info.MinimumScanTimeInterval, info.MaximumScanTimeInterval);
var inRange = self.World.FindActorsInCircle(self.CenterPosition, range)
.Where(a =>
!a.HasTrait<AutoTargetIgnore>() &&
attack.HasAnyValidWeapons(Target.FromActor(a)) &&
self.Owner.Shroud.IsTargetable(a)
);
var healer = attack.Armaments.Any(arm => arm.Weapon.Warheads.Any(w => w.Damage < 0));
if (healer)
return inRange.Where(a => a.AppearsFriendlyTo(self)).ClosestTo(self);
return inRange.Where(a => a.AppearsHostileTo(self)).ClosestTo(self);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment