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); }
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); }
private static bool Prefix() { CommandRouter.MainThreadCommands.Enqueue( () => { ArgWorker.ItemProxy item = GenerateItem(); if (item == null) { return; } SpawnItem(item); } ); return(false); }