Beispiel #1
0
            public override bool Allows(Pawn pawn)
            {
                if (!enabled)
                {
                    return(false);
                }
                if (pawn.IsColonist)
                {
                    return(false);
                }
                Lord lord = LordUtility.GetLord(pawn);

                if (lord != null && lord.LordJob != null && lord.LordJob.CanOpenAnyDoor(pawn))
                {
                    return(true);
                }
                if (pawn.Faction != null && FactionUtility.HostileTo(pawn.Faction, Faction.OfPlayer))
                {
                    return(false);
                }
                if (pawn.Faction == null && WildManUtility.NonHumanlikeOrWildMan(pawn) && (pawn.HostFaction != Faction.OfPlayer || pawn.IsPrisoner))
                {
                    return(false);
                }
                if (pawn.IsPrisoner && pawn.HostFaction == Faction.OfPlayer)
                {
                    return(false);
                }
                return(true);
            }
        public void NotifyAllRepresentativesToLeave()
        {
            var representatives = Find.World.GetComponent <WorldComponent_FactionsTracker>().activeRepresentatives;

            foreach (var representative in representatives)
            {
                LordUtility.GetLord(representative).ReceiveMemo("GetOutOfDodge");
            }
        }
Beispiel #3
0
        protected override Job TryGiveJob(Pawn pawn)
        {
            Lord lord = LordUtility.GetLord(pawn);

            if (lord != null)
            {
                lord.Notify_PawnLost(pawn, PawnLostCondition.LeftVoluntarily);
            }
            return(null);
        }
Beispiel #4
0
        // Token: 0x06000018 RID: 24 RVA: 0x0000264C File Offset: 0x0000084C
        public bool KnowsOfTrap(Pawn p)
        {
            if (p.Faction != null && !FactionUtility.HostileTo(p.Faction, base.Faction))
            {
                return(true);
            }
            if (p.guest != null && p.guest.Released)
            {
                return(true);
            }
            Lord lord = LordUtility.GetLord(p);

            return(p.RaceProps.Humanlike && lord != null && lord.LordJob is LordJob_FormAndSendCaravan);
        }
Beispiel #5
0
        private void TrySpawnMadSailors()
        {
            List <Pawn> lordList = new List <Pawn>();
            Faction     faction  = Find.FactionManager.FirstFactionOfDef(CultsDefOf.Cults_Sailors);

            Cthulhu.Utility.DebugReport(faction.ToString());
            LordJob_DefendPoint lordJob = new LordJob_DefendPoint(this.Position);

            if (this.pointsLeft <= 0f)
            {
                return;
            }
            if (this.lord == null)
            {
                this.lord = LordMaker.MakeNewLord(faction, lordJob, Map, lordList);
            }
            while (pointsLeft > 0f)
            {
                IntVec3 center;
                if ((from cell in GenAdj.CellsAdjacent8Way(this)
                     where cell.Walkable(Map)
                     select cell).TryRandomElement(out center))
                {
                    PawnGenerationRequest request = new PawnGenerationRequest(CultsDefOf.Cults_Sailor, faction, PawnGenerationContext.NonPlayer, Map.Tile, false, false, false, false, true, true, 20f, false, true, true, false, false, false, false, null, null, null, null);
                    Pawn pawn = PawnGenerator.GeneratePawn(request);
                    if (GenPlace.TryPlaceThing(pawn, center, Map, ThingPlaceMode.Near, null))
                    {
                        if (LordUtility.GetLord(pawn) != null)
                        {
                            LordUtility.GetLord(pawn).Cleanup();
                            LordUtility.GetLord(pawn).CurLordToil.Cleanup();
                            LordUtility.GetLord(pawn).LordJob.Cleanup();
                        }
                        this.lord.AddPawn(pawn);
                        this.pointsLeft -= pawn.kindDef.combatPower;
                        Cthulhu.Utility.ApplySanityLoss(pawn, 1f);
                        continue;
                    }
                    //Find.WorldPawns.PassToWorld(pawn, PawnDiscardDecideMode.Discard);
                }
            }
            AvoidGridMaker.RegenerateAvoidGridsFor(faction, Map);
            this.pointsLeft = 0f;
            SoundDefOf.PsychicPulseGlobal.PlayOneShotOnCamera();
            return;
        }
        public override float RandomSelectionWeight(Pawn initiator, Pawn recipient)
        {
            if (!PsycheHelper.PsychologyEnabled(initiator) || !PsycheHelper.PsychologyEnabled(recipient))
            {
                return(0f);
            }
            if (!initiator.health.capacities.CapableOf(PawnCapacityDefOf.Talking) || !recipient.health.capacities.CapableOf(PawnCapacityDefOf.Talking))
            {
                return(0f);
            }
            float baseChance = 0.45f;
            Lord  lord       = LordUtility.GetLord(initiator);

            if (lord != null && (lord.LordJob is LordJob_HangOut || lord.LordJob is LordJob_Date) && LordUtility.GetLord(recipient) == lord)
            {
                baseChance = 0.75f;
            }
            if (initiator.story.traits.HasTrait(TraitDefOfPsychology.Chatty))
            {
                baseChance *= 1.2f;
            }
            return(Mathf.Max(0f, baseChance + (PsycheHelper.Comp(recipient).Psyche.GetPersonalityRating(PersonalityNodeDefOf.Friendly) - 0.6f) + (PsycheHelper.Comp(initiator).Psyche.GetPersonalityRating(PersonalityNodeDefOf.Extroverted) - 0.5f)));
        }
Beispiel #7
0
 //
 // Methods
 //
 public override float GetPriority(Pawn pawn)
 {
     return((LordUtility.GetLord(pawn) != null) ? 9 : 0);
 }
Beispiel #8
0
 public static Lord lord(Pawn p)
 {
     return(LordUtility.GetLord(p));
 }