Exemplo n.º 1
0
        //
        // Methods
        //
        public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            var slave = (Pawn)t;

            if (pawn == slave)
            {
                return(null);
            }

            if (!SlaveUtility.IsPawnColonySlave(slave) || !pawn.CanReserve(slave) || SlaveUtility.GetEnslavedHediff(slave).shackledGoal == SlaveUtility.GetEnslavedHediff(slave).shackled || slave.InAggroMentalState)
            {
                return(null);
            }
            return(JobMaker.MakeJob(SS_JobDefOf.ShackleSlave, slave));
        }
Exemplo n.º 2
0
        protected override IEnumerable <Toil> MakeNewToils()
        {
            this.FailOnDespawnedOrNull(TargetIndex.A);
            this.FailOn(() => !SlaveUtility.IsPawnColonySlave(Victim));
            yield return(Toils_Reserve.Reserve(TargetIndex.A));

            yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.Touch));

            yield return(Toils_General.WaitWith(TargetIndex.A, shackleDuration, true));

            yield return(new Toil {
                initAction = delegate {
                    SlaveUtility.GetEnslavedHediff(Victim).shackled = SlaveUtility.GetEnslavedHediff(Victim).shackledGoal;
                },
                defaultCompleteMode = ToilCompleteMode.Instant
            });
        }
Exemplo n.º 3
0
        public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            if (!ShouldTakeCareOfPrisoner(pawn, t))
            {
                return(null);
            }
            Pawn prisoner    = (Pawn)t;
            var  slaveCollar = (Apparel)pawn.Map.listerThings.ThingsMatching(
                ThingRequest.ForGroup(ThingRequestGroup.Apparel)).Find(x => SlaveUtility.IsSlaveCollar((Apparel)x) && !x.IsForbidden(pawn.Faction));

            if (prisoner.guest.interactionMode != SS_PrisonerInteractionModeDefOf.PIM_Enslave || SlaveUtility.IsPawnColonySlave(pawn) || !pawn.CanReserve(prisoner, 1, -1, null, false) || !pawn.CanReserve(slaveCollar, 1, -1, null, false))
            {
                return(null);
            }
            return(slaveCollar != null?JobMaker.MakeJob(SS_JobDefOf.EnslavePrisoner, prisoner, slaveCollar) : null);
        }
Exemplo n.º 4
0
        public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            // TODO: Look into this deprecation and see if anything needs to actually change for the new signature (which adds an optional bool)
            if (!ShouldTakeCareOfPrisoner(pawn, t))
            {
                return(null);
            }
            Pawn prisoner    = (Pawn)t;
            var  slaveCollar = (Apparel)pawn.Map.listerThings.ThingsMatching(
                ThingRequest.ForGroup(ThingRequestGroup.Apparel)).Find(x => SlaveUtility.IsSlaveCollar((Apparel)x) && !x.IsForbidden(pawn.Faction));

            if (prisoner.guest.interactionMode != SS_PrisonerInteractionModeDefOf.PIM_Enslave || SlaveUtility.IsPawnColonySlave(pawn) || !pawn.CanReserve(prisoner, 1, -1, null, false) || !pawn.CanReserve(slaveCollar, 1, -1, null, false))
            {
                return(null);
            }
            return(slaveCollar != null?JobMaker.MakeJob(SS_JobDefOf.EnslavePrisoner, prisoner, slaveCollar) : null);
        }