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"); } }
protected override Job TryGiveJob(Pawn pawn) { Lord lord = LordUtility.GetLord(pawn); if (lord != null) { lord.Notify_PawnLost(pawn, PawnLostCondition.LeftVoluntarily); } return(null); }
// 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); }
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))); }
// // Methods // public override float GetPriority(Pawn pawn) { return((LordUtility.GetLord(pawn) != null) ? 9 : 0); }
public static Lord lord(Pawn p) { return(LordUtility.GetLord(p)); }