コード例 #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);
        }
コード例 #2
0
        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
                );
        }
コード例 #3
0
        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)
                );
        }