예제 #1
0
        public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants)
        {
            base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants);
            ThingDef thingDef = slate.Get <ThingDef>("itemStashSingleThing");
            IEnumerable <ThingDef> enumerable = slate.Get <IEnumerable <ThingDef> >("itemStashThings");
            List <Thing>           list;

            if (thingDef != null)
            {
                list = new List <Thing>();
                list.Add(ThingMaker.MakeThing(thingDef));
            }
            else if (enumerable != null)
            {
                list = new List <Thing>();
                foreach (ThingDef item in enumerable)
                {
                    list.Add(ThingMaker.MakeThing(item));
                }
            }
            else
            {
                float x = slate.Get("points", 0f);
                ThingSetMakerParams parms = default(ThingSetMakerParams);
                parms.totalMarketValueRange = new FloatRange(0.7f, 1.3f) * QuestTuning.PointsToRewardMarketValueCurve.Evaluate(x);
                list = ThingSetMakerDefOf.Reward_ItemsStandard.root.Generate(parms);
            }
            part.things = new ThingOwner <Thing>(part, oneStackOnly: false);
            part.things.TryAddRangeOrTransfer(list, canMergeWithExistingStacks: false);
            slate.Set("generatedItemStashThings", list);
            outExtraDescriptionRules.Add(new Rule_String("itemStashContents", GenLabel.ThingsLabel(list)));
            outExtraDescriptionRules.Add(new Rule_String("itemStashContentsValue", GenThing.GetMarketValue(list).ToStringMoney()));
        }
        private string GetTitle()
        {
            if (thing != null)
            {
                return(thing.LabelCapNoCount);
            }
            if (worldObject != null)
            {
                return(worldObject.LabelCap);
            }
            ThingDef thingDef = Def as ThingDef;

            if (thingDef != null)
            {
                return(GenLabel.ThingLabel(thingDef, stuff).CapitalizeFirst());
            }
            AbilityDef abilityDef = Def as AbilityDef;

            if (abilityDef != null)
            {
                return(abilityDef.LabelCap);
            }
            if (titleDef != null)
            {
                return(titleDef.GetLabelCapForBothGenders());
            }
            if (faction != null)
            {
                return(faction.Name);
            }
            return(Def.LabelCap);
        }
예제 #3
0
        public override string CompInspectStringExtra()
        {
            string txt       = "";
            bool   holeHere  = true;
            Thing  thingHole = this.parent.Map.thingGrid.ThingAt(this.parent.Position, ThingDef.Named("AB_TarHole"));

            if (thingHole == null || thingHole.Position != this.parent.Position)
            {
                txt     += "AB_WarningLowEfficiency".Translate();
                holeHere = false;
            }

            if (this.PropsSpawner.writeTimeLeftToSpawn && (!this.PropsSpawner.requiresPower || this.PowerOn))
            {
                if (!holeHere)
                {
                    txt += "\n" + "NextSpawnedItemIn".Translate(GenLabel.ThingLabel(this.PropsSpawner.thingToSpawn, null, (int)(this.PropsSpawner.spawnCount / 3))) + ": " + this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true) +
                           "\n" + "NextSpawnedItemIn".Translate(GenLabel.ThingLabel(this.PropsSpawner.SecondaryThingToSpawn, null, (int)(this.PropsSpawner.secondarySpawnCount / 3))) + ": " + this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true);
                }
                else
                {
                    txt += "NextSpawnedItemIn".Translate(GenLabel.ThingLabel(this.PropsSpawner.thingToSpawn, null, this.PropsSpawner.spawnCount)) + ": " + this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true) +
                           "\n" + "NextSpawnedItemIn".Translate(GenLabel.ThingLabel(this.PropsSpawner.SecondaryThingToSpawn, null, this.PropsSpawner.secondarySpawnCount)) + ": " + this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true);
                }
            }
            if (txt != "")
            {
                return(txt);
            }
            else
            {
                return(null);
            }
        }
예제 #4
0
        public static void TradeRequests()
        {
            Map currentMap = Find.CurrentMap;
            IncidentWorker_QuestTradeRequest incidentWorker_QuestTradeRequest = (IncidentWorker_QuestTradeRequest)IncidentDefOf.Quest_TradeRequest.Worker;
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendLine("Randomly-generated trade requests for map " + currentMap.ToString() + ":");
            stringBuilder.AppendLine();
            for (int i = 0; i < 50; i++)
            {
                SettlementBase settlementBase = IncidentWorker_QuestTradeRequest.RandomNearbyTradeableSettlement(currentMap.Tile);
                if (settlementBase == null)
                {
                    break;
                }
                stringBuilder.AppendLine("Settlement: " + settlementBase.LabelCap);
                TradeRequestComp component = settlementBase.GetComponent <TradeRequestComp>();
                if (incidentWorker_QuestTradeRequest.TryGenerateTradeRequest(component, currentMap))
                {
                    stringBuilder.AppendLine("Duration: " + (component.expiration - Find.TickManager.TicksGame).ToStringTicksToDays("F1"));
                    string str = GenLabel.ThingLabel(component.requestThingDef, null, component.requestCount) + " ($" + (component.requestThingDef.BaseMarketValue * (float)component.requestCount).ToString("F0") + ")";
                    stringBuilder.AppendLine("Request: " + str);
                    string str2 = GenThing.ThingsToCommaList(component.rewards, false, true, -1) + " ($" + (from t in component.rewards
                                                                                                            select t.MarketValue * (float)t.stackCount).Sum().ToString("F0") + ")";
                    stringBuilder.AppendLine("Reward: " + str2);
                }
                else
                {
                    stringBuilder.AppendLine("TryGenerateTradeRequest failed.");
                }
                stringBuilder.AppendLine();
                settlementBase.GetComponent <TradeRequestComp>().Disable();
            }
            Log.Message(stringBuilder.ToString(), false);
        }
예제 #5
0
        public static bool PatchMethod_Prefix(ref Thing ap, Pawn_ApparelTracker __instance)
        {
            if ((bool)DurableClothes_Settings.toggleFullRepair) // Only do full repair if the setting is enabled
            {
                ap.HitPoints = ap.MaxHitPoints;
                //Log.Message("Repair to full");
                return(false);
            }
            if (DurableClothes_Settings.wearPercent == 0)
            {
                //Log.Message("No deterioraton");
                return(false);
            }
            var num = GenMath.RoundRandom(ap.def.apparel.wearPerDay * DurableClothes_Settings.wearPercent / 100);

            //Log.Message("Take damage "+ num);
            if (num > 0)
            {
                ap.TakeDamage(new DamageInfo(DamageDefOf.Deterioration, (float)num, 0f, -1f, null, null, null, DamageInfo.SourceCategory.ThingOrUnknown, null));
            }
            if (ap.Destroyed && PawnUtility.ShouldSendNotificationAbout(__instance.pawn) && !__instance.pawn.Dead)
            {
                Messages.Message("MessageWornApparelDeterioratedAway".Translate(GenLabel.ThingLabel(ap.def, ap.Stuff, 1), __instance.pawn).CapitalizeFirst(), __instance.pawn, MessageTypeDefOf.NegativeEvent, true);
            }
            return(false); // don't run the original logic to degrade apparel either way
        }
        protected override void RunInt()
        {
            Quest      quest            = QuestGen.quest;
            Slate      slate            = QuestGen.slate;
            Map        map              = QuestGen_Get.GetMap();
            Faction    faction          = slate.Get <Faction>("faction");
            FloatRange marketValueRange = slate.Get <FloatRange>("marketValueRange");
            Pawn       val              = slate.Get <Pawn>("rewardGiver");

            quest.ReservePawns(Gen.YieldSingle(val));
            quest.ReserveFaction(faction);
            int num = Rand.Range(5, 20) * 60000;

            slate.Set("rewardDelayTicks", num);
            quest.Delay(num, delegate
            {
                ThingSetMakerParams parms   = default(ThingSetMakerParams);
                parms.totalMarketValueRange = marketValueRange;
                parms.qualityGenerator      = QualityGenerator.Reward;
                parms.makingFaction         = faction;
                List <Thing> list           = ThingSetMakerDefOf.Reward_ItemsStandard.root.Generate(parms);
                slate.Set("listOfRewards", GenLabel.ThingsLabel(list));
                quest.DropPods(map.Parent, list, null, null, "[rewardLetterText]", null, true);
                QuestGen_End.End(quest, QuestEndOutcome.Unknown);
            }, null, null, null, reactivatable: false, null, null, isQuestTimeout: false, null, null, "RewardDelay");
        }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map  map;
            bool result;

            if (!this.TryGetRandomAvailableTargetMap(out map))
            {
                result = false;
            }
            else
            {
                Settlement settlement = IncidentWorker_ArcaneScriptCaravan.RandomNearbyTradeableSettlement(parms.target.Tile);
                if (settlement == null)
                {
                    return(false);
                }
                else
                {
                    TradeRequestComp component = settlement.GetComponent <TradeRequestComp>();
                    if (!this.GenerateCaravanRequest(component, (Map)parms.target))
                    {
                        return(false);
                    }
                    Find.LetterStack.ReceiveLetter("LetterLabelArcaneScriptCaravan".Translate(), "LetterArcaneScriptCaravan".Translate(new object[]
                    {
                        settlement.Label,
                        GenLabel.ThingLabel(component.requestThingDef, null, component.requestCount).CapitalizeFirst(),
                        component.rewards[0].LabelCap,
                        (component.expiration - Find.TickManager.TicksGame).ToStringTicksToDays("F0")
                    }), LetterDefOf.PositiveEvent, settlement, null);
                    return(true);
                }
            }
            return(result);
        }
예제 #8
0
        private string GetTitle()
        {
            string result;

            if (this.thing != null)
            {
                result = this.thing.LabelCapNoCount;
            }
            else if (this.worldObject != null)
            {
                result = this.worldObject.LabelCap;
            }
            else
            {
                ThingDef thingDef = this.Def as ThingDef;
                if (thingDef != null)
                {
                    result = GenLabel.ThingLabel(thingDef, this.stuff, 1).CapitalizeFirst();
                }
                else
                {
                    result = this.Def.LabelCap;
                }
            }
            return(result);
        }
예제 #9
0
 public override string CompInspectStringExtra()
 {
     if (this.ActiveRequest)
     {
         return("CaravanRequestInfo".Translate(GenLabel.ThingLabel(this.requestThingDef, null, this.requestCount).CapitalizeFirst(), this.rewards[0].LabelCap, (this.expiration - Find.TickManager.TicksGame).ToStringTicksToDays("F1")));
     }
     return(null);
 }
예제 #10
0
 public override string CompInspectStringExtra()
 {
     if (Props.writeTimeLeftToSpawn && (!Props.requiresPower || PowerOn))
     {
         return("NextSpawnedItemIn".Translate(GenLabel.ThingLabel(Props.thingToSpawn, null, Props.spawnCount)) + ": " + ticksUntilSpawn.ToStringTicksToPeriod());
     }
     return(null);
 }
 public override string GetPostProcessedThreatLabel(Site site, SiteCoreOrPartBase siteCoreOrPart)
 {
     return(string.Concat(base.GetPostProcessedThreatLabel(site, siteCoreOrPart),
                          " (",
                          GenLabel.BestKindLabel(siteCoreOrPart.parms.animalKind, Gender.None, true),
                          ")"
                          ));
 }
 // Token: 0x0600575B RID: 22363 RVA: 0x001D481C File Offset: 0x001D2A1C
 public override string CompInspectStringExtra()
 {
     if (this.PropsSpawner.writeTimeLeftToSpawn && (!this.PropsSpawner.requiresPower || this.PowerOn))
     {
         return("NextSpawnedItemIn".Translate(GenLabel.ThingLabel(this.PropsSpawner.thingToSpawn, null, this.PropsSpawner.spawnCount)) + ": " + this.ticksUntilSpawn.ToStringTicksToPeriod(true, false, true, true));
     }
     return(null);
 }
        public static string RequestedThingLabel(ThingDef def, int count)
        {
            string text = GenLabel.ThingLabel(def, null, count);

            if (def.HasComp(typeof(CompQuality)))
            {
                text = text + " (" + "NormalQualityOrBetter".Translate() + ")";
            }
            return(text);
        }
예제 #14
0
 protected void LogInventory()
 {
     foreach (InventoryRecord current in this.allRecords.Values)
     {
         if (current.count != 0)
         {
             Log.Message(GenLabel.ThingLabel(current.thingDef, current.stuffDef, current.count));
         }
     }
 }
예제 #15
0
        public static string GetThingDefLabel(ThingDef thingDef, int count = 1, bool capitalizeFirst = true)
        {
            string label = GenLabel.ThingLabel(thingDef, null, count);

            if (capitalizeFirst)
            {
                label = label.CapitalizeFirst();
            }
            return(label);
        }
예제 #16
0
        internal string RewardsText()
        {
            string stringBuilder = "";

            foreach (Thing current in GetReward())
            {
                string stringLabel = GenLabel.ThingLabel(current.def, null, current.stackCount).CapitalizeFirst();
                stringBuilder += ("   -" + stringLabel + "\n");
            }
            return(stringBuilder);
        }
 public override IEnumerable <string> GetSummaryListEntries(string tag)
 {
     if (tag == "PlayerStartsWith")
     {
         return(new List <string>
         {
             GenText.CapitalizeFirst(GenLabel.ThingLabel(thingDef, stuff, count))
         });
     }
     return(Enumerable.Empty <string>());
 }
        public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants)
        {
            base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants);
            ThingDef thingDef = slate.Get <ThingDef>("itemStashSingleThing", null, false);
            IEnumerable <ThingDef> enumerable = slate.Get <IEnumerable <ThingDef> >("itemStashThings", null, false);
            List <Thing>           list       = this.GenThingList();

            part.things = new ThingOwner <Thing>(part, false, LookMode.Deep);
            part.things.TryAddRangeOrTransfer(list, false, false);
            outExtraDescriptionRules.Add(new Rule_String("itemStashContents", GenLabel.ThingsLabel(list, "  - ")));
            outExtraDescriptionRules.Add(new Rule_String("itemStashContentsValue", GenThing.GetMarketValue(list).ToStringMoney(null)));
        }
        private GenControl CreateGenControl(string groupName, string controlType)
        {
            var        panel     = FindPanel(groupName);
            GenControl control   = null;
            bool       flowbreak = false;

            if (controlType.ToUpper() == "COMBOBOX")
            {
                control = new GenComboBox();
            }

            if (controlType.ToUpper() == "DATE")
            {
                control = new GenDate();
            }

            if (controlType.ToUpper() == "LINEBREAK")
            {
                control   = new GenLineBreak();
                flowbreak = true;
            }

            if (controlType.ToUpper() == "TEXTBOX")
            {
                control = new GenTextBox();
            }

            if (controlType.ToUpper() == "LABEL")
            {
                control = new GenLabel();
            }

            if (controlType.ToUpper() == "MEMO")
            {
                control = new GenMemo();
            }

            if (controlType.ToUpper() == "CHECKBOX")
            {
                control = new GenCheckBox();
            }

            if (controlType.ToUpper() == "RADIOGROUP")
            {
                control = new GenRadioGroup();
            }

            panel.Controls.Add(control);
            panel.SetFlowBreak(control, flowbreak);
            this.GenControls.Add(control);

            return(control);
        }
        public override string GetInspectString()
        {
            StringBuilder builder = new StringBuilder();
            string        str     = base.GetInspectString();

            if (!string.IsNullOrEmpty(str))
            {
                builder.AppendLine(str);
            }
            builder.Append("NextSpawnedItemIn".Translate(GenLabel.ThingLabel(PRFDefOf.Paperclip, null, 10000)) + ": " + ((250 - workDone) * 10).ToStringTicksToPeriod());
            return(builder.ToString().TrimEndNewlines());
        }
 public override IEnumerable <string> GetSummaryListEntries(string tag)
 {
     if (tag == "PlayerStartsWith")
     {
         List <string> entries = new List <string>();
         entries.Add(GenLabel.ThingLabel(thingDef, stuff, count).CapitalizeFirst());
         return(entries);
     }
     else
     {
         return(Enumerable.Empty <string>());
     }
 }
 private static void <DoPlayLoad> m__1()
 {
     DeepProfiler.Start("Inject selected language data into game data.");
     try
     {
         LanguageDatabase.activeLanguage.InjectIntoData_AfterImpliedDefs();
         GenLabel.ClearCache();
     }
     finally
     {
         DeepProfiler.End();
     }
 }
예제 #23
0
        public static void Postfix(Designator_Build __instance, Event ev)
        {
            var _Map    = ((Map)Traverse.Create(__instance).Property("Map").GetValue());
            var _entDef = (BuildableDef)Traverse.Create(__instance).Field("entDef").GetValue();

            ThingDef thingDef = _entDef as ThingDef;

            if (thingDef == null || !thingDef.MadeFromStuff)
            {
                return;
            }

            FloatMenu floatMenu = (FloatMenu)Find.WindowStack.Windows.LastOrDefault(x => x.GetType() == typeof(FloatMenu) && !x.GetType().IsSubclassOf(typeof(FloatMenu)));

            if (floatMenu == null)
            {
                return;
            }

            List <FloatMenuOption> optionsList = (List <FloatMenuOption>)AccessTools.Field(typeof(FloatMenu), "options").GetValue(floatMenu);

            foreach (ThingDef thingDef2 in _Map.resourceCounter.AllCountedAmounts.Keys)
            {
                if (thingDef2.IsStuff && thingDef2.stuffProps.CanMake(thingDef) && _Map.listerThings.ThingsOfDef(thingDef2).Count > 0)
                {
                    ThingDef        localStuffDef = thingDef2;
                    string          label         = GenLabel.ThingLabel(_entDef, localStuffDef, 1).CapitalizeFirst();
                    FloatMenuOption option;
                    try {
                        option = optionsList.SingleOrDefault(x => x.Label == label);
                    } catch (InvalidOperationException e)
                    {
                        option = null;
                        Log.Warning("StuffCount: Two or more different stuff with same name " + label + "!");
                    }

                    if (option != null)
                    {
                        int stuffCount = (localStuffDef.CountAsResource)
                            ? _Map.resourceCounter.GetCount(localStuffDef)
                            : _Map.listerThings.ThingsOfDef(localStuffDef).Count;

                        string labelCapNew = label + " (" + stuffCount + ")";
                        option.Label = labelCapNew;
                    }
                }
            }

            Traverse.Create(floatMenu).Method("SetInitialSizeAndPosition").GetValue();
        }
        public override string GetReport()
        {
            string text = JobDefOf.Sow.reportString;

            if (job.plantDefToSow != null)
            {
                text = text.Replace("TargetA", GenLabel.ThingLabel(job.plantDefToSow, null, 1));
            }
            else
            {
                text = text.Replace("TargetA", "area");
            }
            return(text);
        }
예제 #25
0
        private string GetTitle()
        {
            if (_apparel != null)
            {
                return(_apparel.LabelCap);
            }

            if (Def is ThingDef thingDef)
            {
                return(GenLabel.ThingLabel(thingDef, _stuff).CapitalizeFirst());
            }

            return(Def?.LabelCap);
        }
        private string GetTitle()
        {
            if (this._apparel != null)
            {
                return(this._apparel.LabelCap);
            }

            ThingDef thingDef = this.Def as ThingDef;

            if (thingDef != null)
            {
                return(GenLabel.ThingLabel(thingDef, this._stuff).CapitalizeFirst());
            }

            return(this.Def?.LabelCap);
        }
예제 #27
0
        /// <summary>
        /// Degrades an item
        /// </summary>
        /// <param name="item">The item in question</param>
        /// <param name="pawn">The pawn with the item</param>
        /// <param name="damageIncrease">Extra damage</param>
        /// <param name="random">If damage should be randomized</param>
        public static void Degrade(Thing item, Pawn pawn, float damageIncrease, bool random)
        {
            float damage = random && damageIncrease >= 1
                ? Rand.Range(1, damageIncrease)
                : damageIncrease;

            if (damage > 0)
            {
                item.TakeDamage(new DamageInfo(DamageDefOf.Deterioration, damage));
            }
            if (item != null && item.Destroyed && PawnUtility.ShouldSendNotificationAbout(pawn) && !pawn.Dead)
            {
                pawn.jobs.ClearQueuedJobs();
                string str = "MessageWornApparelDeterioratedAway".Translate(GenLabel.ThingLabel(item.def, item.Stuff), pawn);
                str = str.CapitalizeFirst();
                Messages.Message(str, pawn, MessageTypeDefOf.NegativeEvent);
            }
        }
예제 #28
0
        private string GetTitle()
        {
            if (this.thing != null)
            {
                return(this.thing.LabelCapNoCount);
            }
            if (this.worldObject != null)
            {
                return(this.worldObject.LabelCap);
            }
            ThingDef thingDef = this.Def as ThingDef;

            if (thingDef != null)
            {
                return(GenLabel.ThingLabel(thingDef, this.stuff, 1).CapitalizeFirst());
            }
            return(this.Def.LabelCap);
        }
        private void Outcome_Triumph(Caravan caravan)
        {
            FactionRelationKind playerRelationKind = base.Faction.PlayerRelationKind;
            int randomInRange = DiplomacyTuning.Goodwill_PeaceTalksTriumphRange.RandomInRange;

            base.Faction.TryAffectGoodwillWith(Faction.OfPlayer, randomInRange, false, false, null, null);
            List <Thing> list = ThingSetMakerDefOf.Reward_PeaceTalksGift.root.Generate();

            for (int i = 0; i < list.Count; i++)
            {
                caravan.AddPawnOrItem(list[i], true);
            }
            Find.LetterStack.ReceiveLetter("LetterLabelPeaceTalks_Triumph".Translate(), this.GetLetterText("LetterPeaceTalks_Triumph".Translate(new object[]
            {
                base.Faction.Name,
                randomInRange,
                GenLabel.ThingsLabel(list, "  - ")
            }), caravan, playerRelationKind), LetterDefOf.PositiveEvent, caravan, base.Faction, null);
        }
예제 #30
0
        public static void EnableTwinkie(bool enable)
        {
            var def           = ThingDefOf.MealSurvivalPack;
            var cachedGraphic = Traverse.Create(def.graphicData).Field("cachedGraphic");

            if (mealLabel == null)
            {
                mealLabel = def.label;
            }
            if (mealDescription == null)
            {
                mealDescription = def.description;
            }
            if (mealGraphic == null)
            {
                mealGraphic = cachedGraphic.GetValue <Graphic>();
            }

            if (enable)
            {
                def.label       = "Twinkie";
                def.description = "A Twinkie is an American snack cake, marketed as a \"Golden Sponge Cake with Creamy Filling\".";
                cachedGraphic.SetValue(GraphicsDatabase.TwinkieGraphic);
            }
            else
            {
                def.label       = mealLabel;
                def.description = mealDescription;
                cachedGraphic.SetValue(mealGraphic);
            }

            def.graphic = def.graphicData.Graphic;
            GenLabel.ClearCache();

            var game = Current.Game;

            if (game != null)
            {
                game.Maps.SelectMany(map => map.listerThings.ThingsOfDef(def))
                .Do(meal => { Traverse.Create(meal).Field("graphicInt").SetValue(null); });
            }
        }