/// <summary> /// called after the parent thing is spawned /// </summary> /// <param name="respawningAfterLoad">if set to <c>true</c> [respawning after load].</param> public override void PostSpawnSetup(bool respawningAfterLoad) { base.PostSpawnSetup(respawningAfterLoad); if (respawningAfterLoad) { return; } RandUtilities.PushState(); if (!triggered) { triggered = true; if (CanBeFormerHuman() && Rand.RangeInclusive(0, 100) <= Props.Chance) { float sL = Rand.Value; FormerHumanUtilities.MakeAnimalSapient((Pawn)parent, sL, false); FormerHumanUtilities.NotifyRelatedPawnsFormerHuman((Pawn)parent, FormerHumanUtilities.RELATED_WILD_FORMER_HUMAN_LETTER, FormerHumanUtilities .RELATED_WILD_FORMER_HUMAN_LETTER_LABEL); _isRelatedToColonist = Pawn.IsRelatedToColonistPawn(); } } RandUtilities.PopState(); }
/// <summary> /// called every tick /// </summary> public override void CompTick() { base.CompTick(); if (parent.def.GetModExtension <FormerHumanSettings>()?.neverFormerHuman == true) { Log.Error($"{nameof(CompAlwaysFormerHuman)} found on {parent.def.defName} which should never be a former human!"); triggered = true; return; } if (!triggered) { triggered = true; if (Pawn.IsFormerHuman()) { return; } bool isManhunter = Pawn.MentalStateDef == MentalStateDefOf.Manhunter || Pawn.MentalStateDef == MentalStateDefOf.ManhunterPermanent; float sL = Rand.Value; FormerHumanUtilities.MakeAnimalSapient((Pawn)parent, sL, !isManhunter); FormerHumanUtilities.NotifyRelatedPawnsFormerHuman((Pawn)parent, FormerHumanUtilities.RELATED_WILD_FORMER_HUMAN_LETTER, FormerHumanUtilities .RELATED_WILD_FORMER_HUMAN_LETTER_LABEL); } }
/// <summary> /// called after the parent thing is spawned /// </summary> /// <param name="respawningAfterLoad">if set to <c>true</c> [respawning after load].</param> public override void PostSpawnSetup(bool respawningAfterLoad) { base.PostSpawnSetup(respawningAfterLoad); if (respawningAfterLoad) { return; } if (!triggered) { triggered = true; if (Pawn.health.hediffSet.HasHediff(TfHediffDefOf.TransformedHuman)) { return; } float sL = Rand.Value; FormerHumanUtilities.MakeAnimalSapient((Pawn)parent, sL, false); FormerHumanUtilities.NotifyRelatedPawnsFormerHuman((Pawn)parent, FormerHumanUtilities.RELATED_WILD_FORMER_HUMAN_LETTER, FormerHumanUtilities .RELATED_WILD_FORMER_HUMAN_LETTER_LABEL); } }
/// <summary> /// called after the parent thing is spawned /// </summary> /// <param name="respawningAfterLoad">if set to <c>true</c> [respawning after load].</param> public override void PostSpawnSetup(bool respawningAfterLoad) { base.PostSpawnSetup(respawningAfterLoad); if (respawningAfterLoad) { return; } if (parent.def.GetModExtension <FormerHumanSettings>()?.neverFormerHuman == true) { Log.Error($"{nameof(CompAlwaysFormerHuman)} found on {parent.def.defName} which should never be a former human!"); triggered = true; return; } if (!triggered) { triggered = true; if (Pawn.IsFormerHuman()) { return; } float sL = Rand.Value; FormerHumanUtilities.MakeAnimalSapient((Pawn)parent, sL, false); FormerHumanUtilities.NotifyRelatedPawnsFormerHuman((Pawn)parent, FormerHumanUtilities.RELATED_WILD_FORMER_HUMAN_LETTER, FormerHumanUtilities .RELATED_WILD_FORMER_HUMAN_LETTER_LABEL); } }
/// <summary> /// Generates the things that can be sold /// </summary> /// <param name="forTile">For tile.</param> /// <param name="forFaction">For faction.</param> /// <returns></returns> public override IEnumerable <Thing> GenerateThings(int forTile, Faction forFaction = null) { var enumer = GenerateThingEnumer(forTile, forFaction).ToList(); foreach (Pawn pawn in enumer.OfType <Pawn>()) { if (!pawn.IsFormerHuman()) { continue; } FormerHumanUtilities.NotifyRelatedPawnsFormerHuman(pawn, FormerHumanUtilities.RELATED_SOLD_FORMER_HUMAN_LETTER, FormerHumanUtilities.RELATED_SOLD_FORMER_HUMAN_LETTER_LABEL); } return(enumer); }
/// <summary> /// called every tick /// </summary> public override void CompTick() { base.CompTick(); if (!triggered) { triggered = true; if (CanBeFormerHuman() && Rand.RangeInclusive(0, 100) <= Props.Chance) { float sL = Rand.Value; FormerHumanUtilities.MakeAnimalSapient((Pawn)parent, sL); FormerHumanUtilities.NotifyRelatedPawnsFormerHuman((Pawn)parent, FormerHumanUtilities.RELATED_WILD_FORMER_HUMAN_LETTER, FormerHumanUtilities .RELATED_WILD_FORMER_HUMAN_LETTER_LABEL); _isRelatedToColonist = Pawn.IsRelatedToColonistPawn(); } } }