public override void ChooseParts() { base.ChooseParts(); target = Find.WorldObjects.Settlements .Where(s => s is City city && city.Visitable && !city.Abandoned && QuestUtility.Reachable(HomeMap?.Parent, s, 50) && !s.HasMap) .RandomElementWithFallback() as City; }
public override void ChooseParts() { base.ChooseParts(); city = Find.WorldObjects.Settlements .OfType <City>() .Where(s => s.Visitable && s.inhabitantFaction != null && s.inhabitantFaction.PlayerGoodwill < 50 && !(s is Citadel) && s.FindQuests().Count == 0 && QuestUtility.Reachable(HomeMap?.Parent, s, 80) && !s.HasMap) .RandomElementWithFallback() as City; }
public override void ChooseParts() { base.ChooseParts(); alliedFaction = Find.FactionManager.RandomAlliedFaction(minTechLevel: TechLevel.Industrial); //alliedFaction = Find.FactionManager.RandomNonHostileFaction(minTechLevel: TechLevel.Industrial); target = Find.WorldObjects.Settlements .Where(s => s is City && s.Faction.HostileTo(Faction.OfPlayer) && QuestUtility.Reachable(HomeMap?.Parent, s, 50) && !s.HasMap) .RandomElementWithFallback() as City; }
public static T RandomByDistance <T>(this IEnumerable <T> source, WorldObject start, int max) where T : WorldObject { var collection = source .Where(s => QuestUtility.Reachable(start, s)) .ToArray(); var filtered = collection .Where(s => Find.WorldGrid.ApproxDistanceInTiles(start.Tile, s.Tile) <= max) .ToArray(); return(filtered.RandomElementWithFallback() ?? (collection.Length == 0 ? null : collection.MinBy(s => Find.WorldGrid.ApproxDistanceInTiles(start.Tile, s.Tile)))); }
public override void ChooseParts() { base.ChooseParts(); city = Find.WorldObjects.Settlements .Where(s => s is City city && city.Visitable && !city.Abandoned && QuestUtility.Reachable(HomeMap?.Parent, s, 50) && !s.HasMap) .RandomElementWithFallback() as City; if (city == null) { return; } var faction = city.Faction; pawn = PawnGenerator.GeneratePawn(new PawnGenerationRequest(faction.RandomPawnKind(), faction, PawnGenerationContext.NonPlayer, city.Tile)); Find.World.worldPawns.PassToWorld(pawn, PawnDiscardDecideMode.KeepForever); }