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;
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 4
0
        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);
        }