private static void Postfix(bool __result, InspirationHandler __instance, InspirationDef def, string reason = null) { if (__result) { VSIE_Utils.SocialInteractionsManager.TryRegisterNewIspiration(__instance.pawn, def); } }
public static void RandomInspirationMtb_Postfix(InspirationHandler __instance) { if (__instance.pawn.IsHashIntervalTick(100)) { CheckStartTrait_RandomInspiration(__instance); } }
public Pawn_MindState(Pawn pawn) { this.pawn = pawn; this.mentalStateHandler = new MentalStateHandler(pawn); this.mentalBreaker = new MentalBreaker(pawn); this.inspirationHandler = new InspirationHandler(pawn); this.priorityWork = new PriorityWork(pawn); }
public static void Postfix(InspirationHandler __instance) { if (!__instance.pawn.IsFreeColonist) { return; } BCBManager.SetColonistBarDirty(); }
private bool TryStartInspiration() { InspirationHandler ih = pawn.mindState.inspirationHandler; if (ih.Inspired || !pawn.health.capacities.CanBeAwake) { return(false); } return(ih.TryStartInspiration_NewTemp(InspirationDefOf.Inspired_Creativity, "LetterInspirationBeginThanksToHighMoodPart".Translate())); }
// inspiration function, see below public virtual float MTBDays(InspirationHandler ih) { float curLevel = ih.pawn.needs.mood.CurLevel; if (curLevel < inspirationMoodThreshold) { return(-1f); } return(GenMath.LerpDouble(inspirationMoodThreshold, 1f, 210f, 10f, curLevel) / inspirationChanceMultiplier); }
public static void CheckStartTrait_RandomInspiration(InspirationHandler __instance) { if (!__instance.Inspired && __instance?.pawn?.story != null) { List <Trait> allTraits = __instance.pawn.story.traits.allTraits; for (int m = 0; m < allTraits.Count; m++) { RandomInspirationMtbDays currentData = allTraits[m].CurrentData as RandomInspirationMtbDays; if (currentData != null && currentData.randomInspirationMtbDays > 0f && Rand.MTBEventOccurs(currentData.randomInspirationMtbDays, 60000f, 100f)) { InspirationDef randomAvailableInspirationDef = GetRandomAvailableInspirationDef(__instance); if (randomAvailableInspirationDef != null) { __instance.TryStartInspiration(randomAvailableInspirationDef); } } } } }
// runs every 100 ticks, postfix to stub StartInspirationMTBDays patch public static void HandleInspirationMTB(ref float result, InspirationHandler ih) { if (interestList.inspirers.Count == 0) { return; } if (ih.pawn.needs.mood == null) // result = -1, no mood value yet, so return { return; } // go through each skill this pawn has, see if they have an inspiring passion Pawn_SkillTracker pst = ih.pawn.skills; if (pst == null) { return; } if (pst.skills == null) { return; } // find any inspiring interests this pawn has and get their indices List <int> inspiringList = pst.skills.Select(s => (int)s.passion).Where(x => interestList[x].inspires).ToList(); if (inspiringList.Count < 1) // no pawn skill with inspiring passion { return; } InterestDef interest = getBestInspirer(inspiringList); result = interest.MTBDays(ih); }
private static InspirationDef GetRandomAvailableInspirationDef(InspirationHandler __instance) { return((from x in DefDatabase <InspirationDef> .AllDefsListForReading where x.Worker.InspirationCanOccur(__instance.pawn) && (x != InspirationDefOf.Inspired_Surgery) && (x != SyrTraitDefOf.Frenzy_Shoot) select x).RandomElementByWeightWithFallback((InspirationDef x) => x.Worker.CommonalityFor(__instance.pawn), null)); }
// Token: 0x06000041 RID: 65 RVA: 0x00004144 File Offset: 0x00002344 public static bool CompatPatch_InspirationHandlerTick(ref InspirationHandler __instance) { bool flag = __instance.pawn.def.HasModExtension <MechanicalPawnProperties>(); return(!flag); }
private static void Postfix(ref float __result, InspirationHandler __instance) { InterestBase.HandleInspirationMTB(ref __result, __instance); }
private static void Postfix(InspirationHandler __instance, Inspiration inspiration) { VSIE_Utils.SocialInteractionsManager.Notify_InspirationExpired(__instance.pawn, inspiration.def); }
public static void Postfix(ref float __result, ref InspirationHandler __instance) { int expo = __instance.pawn?.needs?.mood?.thoughts?.memories?.Memories?.FindAll(mem => mem is Thought_WishSucceed).Count ?? 0; __result *= Mathf.Pow(WishUtility.Def.inspirationMTBFactorPerWishSucceed, expo); }