public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); Pawn pawn = DownedRefugeeQuestUtility.GenerateRefugee(part.site.Tile); part.things = new ThingOwner <Pawn>(part, oneStackOnly: true); part.things.TryAdd(pawn); if (pawn.relations != null) { pawn.relations.everSeenByPlayer = true; } Pawn mostImportantColonyRelative = PawnRelationUtility.GetMostImportantColonyRelative(pawn); if (mostImportantColonyRelative != null) { PawnRelationDef mostImportantRelation = mostImportantColonyRelative.GetMostImportantRelation(pawn); TaggedString text = ""; if (mostImportantRelation != null && mostImportantRelation.opinionOffset > 0) { pawn.relations.relativeInvolvedInRescueQuest = mostImportantColonyRelative; text = "\n\n" + "RelatedPawnInvolvedInQuest".Translate(mostImportantColonyRelative.LabelShort, mostImportantRelation.GetGenderSpecificLabel(pawn), mostImportantColonyRelative.Named("RELATIVE"), pawn.Named("PAWN")).AdjustedFor(pawn); } else { PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, pawn); } outExtraDescriptionRules.Add(new Rule_String("pawnInvolvedInQuestInfo", text)); } slate.Set("refugee", pawn); }
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())); }
public override string GetPostProcessedThreatLabel(Site site, SitePart sitePart) { if (site.MainSitePartDef == def) { return(null); } return(base.GetPostProcessedThreatLabel(site, sitePart)); }
public override string GetPostProcessedThreatLabel(Site site, SitePart sitePart) { string text = base.GetPostProcessedThreatLabel(site, sitePart); if (site.HasWorldObjectTimeout) { text += " (" + "DurationLeft".Translate(site.WorldObjectTimeoutTicksLeft.ToStringTicksToPeriod()) + ")"; } return(text); }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); if (part.site.ActualThreatPoints > 0f) { outExtraDescriptionRules.Add(new Rule_String("lumpThreatDescription", "\n\n" + "PreciousLumpHostileThreat".Translate())); } else { outExtraDescriptionRules.Add(new Rule_String("lumpThreatDescription", "")); } }
public override void Notify_GeneratedByQuestGen(SitePart part, Slate slate, List <Rule> outExtraDescriptionRules, Dictionary <string, string> outExtraDescriptionConstants) { base.Notify_GeneratedByQuestGen(part, slate, outExtraDescriptionRules, outExtraDescriptionConstants); Pawn pawn = PrisonerWillingToJoinQuestUtility.GeneratePrisoner(part.site.Tile, part.site.Faction); part.things = new ThingOwner <Pawn>(part, oneStackOnly: true); part.things.TryAdd(pawn); PawnRelationUtility.Notify_PawnsSeenByPlayer(Gen.YieldSingle(pawn), out string pawnRelationsInfo, informEvenIfSeenBefore: true, writeSeenPawnsNames: false); string output = pawnRelationsInfo.NullOrEmpty() ? "" : ((string)("\n\n" + "PawnHasTheseRelationshipsWithColonists".Translate(pawn.LabelShort, pawn) + "\n\n" + pawnRelationsInfo)); slate.Set("prisoner", pawn); outExtraDescriptionRules.Add(new Rule_String("prisonerFullRelationInfo", output)); }
public override string GetPostProcessedThreatLabel(Site site, SitePart sitePart) { string text = base.GetPostProcessedThreatLabel(site, sitePart); if (sitePart.things != null && sitePart.things.Any) { text = text + ": " + sitePart.things[0].LabelShortCap; } if (site.HasWorldObjectTimeout) { text += " (" + "DurationLeft".Translate(site.WorldObjectTimeoutTicksLeft.ToStringTicksToPeriod()) + ")"; } return(text); }
public override void PostDestroy(SitePart sitePart) { base.PostDestroy(sitePart); if (sitePart.things == null || !sitePart.things.Any) { return; } Pawn pawn = (Pawn)sitePart.things[0]; if (!pawn.Dead) { if (pawn.relations != null) { pawn.relations.Notify_FailedRescueQuest(); } HealthUtility.HealNonPermanentInjuriesAndRestoreLegs(pawn); } }
public void AddPart(SitePart part) { parts.Add(part); part.def.Worker.Init(this, part); }