示例#1
0
        /// <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();
        }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#5
0
        /// <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();
                }
            }
        }