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 void SpawnItem() { ThingDef result = Proxy.Stuff?.Thing; if (!Proxy.Thing.Thing.CanBeStuff(Proxy.Stuff?.Thing)) { var stuffs = new List <ThingDef>(); foreach (ThingDef possible in GenStuff.AllowedStuffsFor(Proxy.Thing.Thing)) { if (!Data.ItemData.TryGetValue(possible.defName, out ItemData data) || !data.IsStuffAllowed) { continue; } stuffs.Add(possible); } result = !stuffs.TryRandomElementByWeight(s => s.stuffProps.commonality, out ThingDef stuff) ? GenStuff.RandomStuffByCommonalityFor(Proxy.Thing.Thing) : stuff; } Thing thing = PurchaseHelper.MakeThing(Proxy.Thing.Thing, result, Proxy.Quality); IntVec3 position = DropCellFinder.TradeDropSpot(Map); if (Proxy.Thing.Thing.Minifiable) { ThingDef minifiedDef = Proxy.Thing.Thing.minifiedDef; var minifiedThing = (MinifiedThing)ThingMaker.MakeThing(minifiedDef); minifiedThing.InnerThing = thing; minifiedThing.stackCount = Quantity; PurchaseHelper.SpawnItem(position, Map, minifiedThing); } else { thing.stackCount = Quantity; PurchaseHelper.SpawnItem(position, Map, thing); } Find.LetterStack.ReceiveLetter( (Quantity > 1 ? Proxy.Thing.Name.Pluralize() : Proxy.Thing.Name).Truncate(15, true).CapitalizeFirst(), "TKUtils.ItemLetter.ItemDescription".LocalizeKeyed(Quantity.ToString("N0"), Proxy.AsString(Quantity > 1), Purchaser.username), ItemHelper.GetLetterFromValue(Price), thing ); }
public override void Execute() { if (_map == null || _appointment == null || Viewer == null) { return; } Thing thing = ThingMaker.MakeThing(_appointment.ThingDef); IntVec3 spot = DropCellFinder.TradeDropSpot(_map); if (_appointment.ThingDef.Minifiable) { ThingDef minifiedDef = _appointment.ThingDef.minifiedDef; var minifiedThing = (MinifiedThing)ThingMaker.MakeThing(minifiedDef); minifiedThing.InnerThing = thing; minifiedThing.stackCount = _appointment.Quantity; PurchaseHelper.SpawnItem(spot, _map, minifiedThing); } else { thing.stackCount = _appointment.Quantity; PurchaseHelper.SpawnItem(spot, _map, thing); } _appointment.BookSurgeries(); Viewer.Charge(_appointment.Cost, _appointment.ItemData?.Weight ?? 1f, _appointment.ItemData?.KarmaType ?? storeIncident.karmaType); MessageHelper.SendConfirmation(Viewer.username, "TKUtils.Surgery.Complete".LocalizeKeyed(_appointment.ThingDef.LabelCap)); Find.LetterStack.ReceiveLetter( "TKUtils.SurgeryLetter.Title".Localize(), "TKUtils.SurgeryLetter.Description".LocalizeKeyed(Viewer.username, Find.ActiveLanguageWorker.WithDefiniteArticle(thing.LabelCap)), LetterDefOf.NeutralEvent, new LookTargets(thing) ); }