public static void DoConditioning(Pawn pawn, PS_Buildings_ReconPod pod, PS_Conditioning_Data conData)
        {
            if (Prefs.DevMode)
            {
                Log.Message("PS_ConditioningHelper: Doing Conditioning Pawn: " + pawn.LabelShort + " AddedTrait: " + conData.AddedTraitDefName + " OrigonalTrait: " + conData.OriginalTraitDefName + " AlterType: " + conData.AlterType.ToString());
            }

            if (!IsReconditioned(pawn))
            {
                var hediff = TryGiveReconditioning(pawn, conData);
                if (hediff != null)
                {
                    DoTraitChange(pawn, conData);
                }
                else
                {
                    Log.Error("PS_ConditioningHelper: Failed to create hediff");
                }
            }
            else
            {
                var hediff = pawn.health.hediffSet.GetHediffs <PS_Hediff_Reconditioned>().FirstOrDefault();
                if (hediff == null)
                {
                    Log.Error("PS_CondidioningHelper: Attempted to add conditioning, but failed to find reconditioned hediff");
                    return;
                }
                hediff.ConditioningDataList.Add(conData);
                DoTraitChange(pawn, conData);
            }
        }
 public void StartPoding(PS_Buildings_ReconPod pod, Pawn pawn)
 {
     if (pod.IsUseable(pawn))
     {
         var window = new PS_Panel_Reconditioning();
         window.SetPawnAndPod(pawn, pod);
         Find.WindowStack.Add(window);
     }
 }
        public static void UndoConditioning(Pawn pawn, PS_Buildings_ReconPod pod, PS_Conditioning_Data conData)
        {
            UndoTraitChange(pawn, conData);
            var hediff = pawn.health.hediffSet.GetHediffs <PS_Hediff_Reconditioned>().FirstOrDefault();

            hediff.ConditioningDataList.Remove(conData);
            if (!hediff.ConditioningDataList.Where(x => x.IsValid()).Any())
            {
                TryRemoveConditioning(pawn);
            }
        }
Exemple #4
0
        protected override IEnumerable <Toil> MakeNewToils()
        {
            this.FailOnDespawnedOrNull(TargetIndex.A);
            yield return(Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.InteractionCell));

            Toil enterPodToil = new Toil();

            enterPodToil.initAction = delegate()
            {
                Pawn actor = enterPodToil.actor;
                PS_Buildings_ReconPod pod = (PS_Buildings_ReconPod)actor.jobs.curJob.GetTarget(TargetIndex.A).Thing;
                //pod.StartDeconditioning(actor);
            };
            yield return(enterPodToil);

            yield break;
        }
        protected override IEnumerable <Toil> MakeNewToils()
        {
            this.FailOnDespawnedOrNull(TargetIndex.A);
            yield return(Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.InteractionCell));

            Toil openMissionSelect = new Toil();

            openMissionSelect.initAction = delegate()
            {
                Pawn actor = openMissionSelect.actor;
                PS_Buildings_ReconPod pod = (PS_Buildings_ReconPod)actor.jobs.curJob.GetTarget(TargetIndex.A).Thing;
                this.StartPoding(pod, actor);
            };
            yield return(openMissionSelect);

            yield break;
        }
Exemple #6
0
        public void SetPawnAndPod(Pawn pawn, PS_Buildings_ReconPod Pod)
        {
            this.ToolTipFunc = (t => t);
            this.Pod         = Pod;
            this.Pawn        = pawn;

            this.StartTraits   = pawn.story.traits.allTraits;
            this.CurrentTraits = new List <Trait>();
            foreach (var t in StartTraits)
            {
                CurrentTraits.Add(t);
            }

            this.StartingConditioning = new List <PS_Conditioning_Data>();
            if (PS_ConditioningHelper.IsReconditioned(pawn))
            {
                var condata = PS_ConditioningHelper.GetConditioningDataFromHediff(pawn);
                this.StartingConditioning = condata;
            }


            this.CheatMode = Pod.CheatMod;
        }
Exemple #7
0
        public static bool CanGetToPod(Pawn pawn, PS_Buildings_ReconPod pod)
        {
            var localTarget = new LocalTargetInfo(pod);

            if (!pawn.CanReach(localTarget, PathEndMode.Touch, Danger.Deadly))
            {
                return(false);
            }

            var possition = pod.Position;

            if (!possition.InAllowedArea(pawn))
            {
                return(false);
            }

            if (!possition.Walkable(pawn.Map))
            {
                return(false);
            }

            return(true);
        }