Пример #1
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            if (map.passingShipManager.passingShips.Count >= 5)
            {
                return(false);
            }
            TraderKindDef def;

            if ((from x in DefDatabase <TraderKindDef> .AllDefs
                 where x.orbital
                 select x).TryRandomElementByWeight((TraderKindDef traderDef) => traderDef.CalculatedCommonality, out def))
            {
                TradeShip tradeShip = new TradeShip(def);
                if (map.listerBuildings.allBuildingsColonist.Any((Building b) => b.def.IsCommsConsole && b.GetComp <CompPowerTrader>().PowerOn))
                {
                    Find.LetterStack.ReceiveLetter(tradeShip.def.LabelCap, "TraderArrival".Translate(new object[]
                    {
                        tradeShip.name,
                        tradeShip.def.label
                    }), LetterDefOf.PositiveEvent, null);
                }
                map.passingShipManager.AddShip(tradeShip);
                tradeShip.GenerateThings();
                return(true);
            }
            throw new InvalidOperationException();
        }
Пример #2
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            if (map.passingShipManager.passingShips.Count >= 5)
            {
                return(false);
            }
            if (DefDatabase <TraderKindDef> .AllDefs.Where((TraderKindDef x) => CanSpawn(map, x)).TryRandomElementByWeight((TraderKindDef traderDef) => traderDef.CalculatedCommonality, out var result))
            {
                TradeShip tradeShip = new TradeShip(result, GetFaction(result));
                if (map.listerBuildings.allBuildingsColonist.Any((Building b) => b.def.IsCommsConsole && (b.GetComp <CompPowerTrader>() == null || b.GetComp <CompPowerTrader>().PowerOn)))
                {
                    SendStandardLetter(tradeShip.def.LabelCap, "TraderArrival".Translate(tradeShip.name, tradeShip.def.label, (tradeShip.Faction == null) ? "TraderArrivalNoFaction".Translate() : "TraderArrivalFromFaction".Translate(tradeShip.Faction.Named("FACTION"))), LetterDefOf.PositiveEvent, parms, LookTargets.Invalid);
                }
                map.passingShipManager.AddShip(tradeShip);
                tradeShip.GenerateThings();
                return(true);
            }
            throw new InvalidOperationException();
        }