Exemplo n.º 1
0
        private static void SpawnItem([NotNull] ArgWorker.ItemProxy item)
        {
            Map map = Current.Game.AnyPlayerHomeMap;

            if (map == null)
            {
                return;
            }

            Thing   thing    = PurchaseHelper.MakeThing(item.Thing.Thing, item.Stuff?.Thing, item.Quality);
            IntVec3 position = DropCellFinder.TradeDropSpot(map);

            if (item.Thing.Thing.Minifiable)
            {
                ThingDef minifiedDef   = item.Thing.Thing.minifiedDef;
                var      minifiedThing = (MinifiedThing)ThingMaker.MakeThing(minifiedDef);
                minifiedThing.InnerThing = thing;
                minifiedThing.stackCount = 1;
                PurchaseHelper.SpawnItem(position, map, minifiedThing);
            }
            else
            {
                thing.stackCount = 1;
                PurchaseHelper.SpawnItem(position, map, thing);
            }

            Find.LetterStack.ReceiveLetter("SirRandoo is here", @"SirRandoo has sent you a rare item! Enjoy!", LetterDefOf.PositiveEvent, thing);
        }
Exemplo n.º 2
0
        private static ArgWorker.ItemProxy GenerateItem()
        {
            var proxy = new ArgWorker.ItemProxy
            {
                Thing = Data.Items.Where(i => i.Thing != null)
                        .Where(i => i.Thing.race == null)
                        .Where(i => i.Cost > 200 && i.Cost < 2000)
                        .InRandomOrder()
                        .FirstOrDefault()
            };

            if (proxy.Thing == null)
            {
                return(null);
            }

            if (!proxy.Thing.Thing.MadeFromStuff)
            {
                return(proxy);
            }

            ThingDef stuff = GenStuff.RandomStuffByCommonalityFor(proxy.Thing.Thing);

            proxy.Stuff = Data.Items.Find(i => string.Equals(i.DefName, stuff.defName));

            return(proxy);
        }
Exemplo n.º 3
0
        private static bool Prefix()
        {
            CommandRouter.MainThreadCommands.Enqueue(
                () =>
            {
                ArgWorker.ItemProxy item = GenerateItem();

                if (item == null)
                {
                    return;
                }

                SpawnItem(item);
            }
                );

            return(false);
        }