public override void Generate(Map map, GenStepParams parms) { CellRect rectToDefend; if (!MapGenerator.TryGetVar <CellRect>("RectOfInterest", out rectToDefend)) { rectToDefend = CellRect.SingleCell(map.Center); } Faction faction; if (map.ParentFaction == null || map.ParentFaction == Faction.OfPlayer) { faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named( "ROMV_Sabbat")); //Find.FactionManager.RandomEnemyFaction(false, false, true, TechLevel.Undefined); } else { faction = map.ParentFaction; } ResolveParams resolveParams = default(ResolveParams); resolveParams.rect = this.GetOutpostRect(rectToDefend, map); resolveParams.faction = faction; resolveParams.edgeDefenseWidth = new int?(2); //resolveParams.edgeDefenseTurretsCount = new int?(Rand.RangeInclusive(0, 1)); resolveParams.edgeDefenseMortarsCount = new int?(0); resolveParams.settlementPawnGroupPoints = new float?(0.4f); BaseGen.globalSettings.map = map; BaseGen.globalSettings.minBuildings = 1; BaseGen.globalSettings.minBarracks = 1; BaseGen.symbolStack.Push("factionBase", resolveParams); BaseGen.Generate(); }
public static PawnKindDef GetFactionKindDef(PawnKindDef kindDef, Faction faction) { int factionID = 0; if (faction.def == FactionDef.Named("BI_InsectRedFaction")) { factionID = 1; } else if (faction.def == FactionDef.Named("BI_InsectBlackFaction")) { factionID = 2; } else if (faction.def == FactionDef.Named("BI_InsectGreenFaction")) { factionID = 3; } if (queenKindDef.Contains(kindDef)) { return(queenKindDef[factionID]); } else if (megaspiderKindDef.Contains(kindDef)) { return(megaspiderKindDef[factionID]); } else if (spelopedeKindDef.Contains(kindDef)) { return(spelopedeKindDef[factionID]); } else if (megascarabKindDef.Contains(kindDef)) { return(megascarabKindDef[factionID]); } return(null); }
public void CheckFaction() { if (this.parent.Faction == Faction.OfPlayer) { Pawn pawn = parent as Pawn; if (pawn != null) { if (!Props.goesManhunter) { parent.SetFaction(null, null); } else if (Props.factionToReturnTo == "") { pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.ManhunterPermanent); } else { parent.SetFaction(Find.FactionManager.FirstFactionOfDef(FactionDef.Named(Props.factionToReturnTo)), null); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.ManhunterPermanent); }; if (Props.sendMessage) { Messages.Message(Props.message.Translate(pawn.LabelIndefinite().CapitalizeFirst()), pawn, MessageTypeDefOf.NegativeEvent, true); } } } }
protected override bool TryExecuteWorker(IncidentParms parms) { Faction faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("PLAHF_faction")); Map map = (Map)parms.target; //List<TargetInfo> list = new List<TargetInfo>(); float shrapnelDirection = Rand.Range(0f, 360f); Thing lookhere; IntVec3 intVec; if (!CellFinderLoose.TryFindSkyfallerCell(RimWorld.ThingDefOf.DropPodIncoming, map, out intVec, 14, default(IntVec3), -1, false, true, true, true, true, false, null)) { return(false); } Building_TacticalManaBomb building_tacticalmanabomb = (Building_TacticalManaBomb)ThingMaker.MakeThing(DefDatabase <ThingDef> .GetNamed("Building_TacticalManaBomb", true)); building_tacticalmanabomb.SetFaction(faction, null); building_tacticalmanabomb.spawnpoints = (float)(parms.points * 0.8); lookhere = building_tacticalmanabomb; Skyfaller skyfaller = SkyfallerMaker.MakeSkyfaller(RimWorld.ThingDefOf.DropPodIncoming, building_tacticalmanabomb); skyfaller.shrapnelDirection = shrapnelDirection; GenSpawn.Spawn(skyfaller, intVec, map, WipeMode.Vanish); Find.LetterStack.ReceiveLetter("LetterLabelPLAHFTMBAttack".Translate(), "LetterPLAHFTMBAttack".Translate(), LetterDefOf.ThreatBig, lookhere, null, null); Find.TickManager.slower.SignalForceNormalSpeedShort(); Find.StoryWatcher.statsRecord.numRaidsEnemy++; return(true); }
public override void DefsLoaded() { hasAlienRace = GenTypes.GetTypeInAnyAssembly("AlienRace.RaceSettings", "AlienRace") != null; FB_Factions.RemoveAll(x => true); FB_Factions.Add(FactionDef.Named("FactionBlender_Pirate")); FB_Factions.Add(FactionDef.Named("FactionBlender_Civil")); ProcessSettings(); DefInjector.InjectMiscToFactions(FB_Factions); Logger.Message("Injecting pawn groups to our factions"); FillFilterLists(); DefInjector.InjectPawnKindDefsToFactions(FB_Factions); if (hasAlienRace) { Logger.Message("Injecting pawn groups to our race settings"); DefInjector.InjectPawnKindEntriesToRaceSettings(); } else { Logger.Message("AlienRace not loaded; no race settings for us!"); } }
public void CheckFaction() { //If I detect the creature is part of the player's faction (has been tamed) if (AnimalBehaviours_Settings.flagUntameable && this.parent.Faction == Faction.OfPlayer) { Pawn pawn = parent as Pawn; if (pawn != null) { //if goesManhunter is false, the creature is just returned to the wild, no faction if (!Props.goesManhunter) { parent.SetFaction(null, null); } //if goesManhunter is true and factionToReturnTo is not set, the creature is made manhunter else if (Props.factionToReturnTo == "") { pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.ManhunterPermanent); } //if goesManhunter is true and factionToReturnTo is set, the creature is made manhunter and placed on the //faction it should belong to else { parent.SetFaction(Find.FactionManager.FirstFactionOfDef(FactionDef.Named(Props.factionToReturnTo)), null); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.ManhunterPermanent); }; //Optionally a message can be sent when this happens if (Props.sendMessage) { Messages.Message(Props.message.Translate(pawn.LabelIndefinite().CapitalizeFirst()), pawn, MessageTypeDefOf.NegativeEvent, true); } } } }
public override void Init() { ModOptions.SettingsRef settingsRef = new ModOptions.SettingsRef(); if (settingsRef.riftChallenge > 0) { base.Init(); this.disabled = false; this.FindGoodCenterLocation(); this.thing = ThingMaker.MakeThing(ThingDef.Named("TM_ElementalRift"), ThingDefOf.BlocksGranite); GenSpawn.Spawn(thing, centerLocation.ToIntVec3, this.SingleMap, Rot4.North, WipeMode.Vanish, false); Faction faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("TM_ElementalFaction")); if (!faction.HostileTo(Faction.OfPlayer)) { thing.SetFaction(Faction.OfMechanoids, null); } else { thing.SetFaction(faction, null); } } else { this.disabled = true; Log.Message("Rift spawning disabled."); } }
public override void CompTick() { base.CompTick(); if (!AlphaAnimalsEvents_Mod.settings.flagAlphaMechanoids) { if (parent.Map != null && Find.FactionManager.FirstFactionOfDef(FactionDef.Named(Props.factionToChangeTo)) != null) { PawnGenerationRequest request = new PawnGenerationRequest(PawnKindDef.Named(Props.defToChangeTo), Find.FactionManager.FirstFactionOfDef(FactionDef.Named(Props.factionToChangeTo)), PawnGenerationContext.NonPlayer, -1, false, false, false, false, true, false, 1f, false, true, true, false, false); Pawn pawn = PawnGenerator.GeneratePawn(request); GenSpawn.Spawn(pawn, this.parent.Position, parent.Map, WipeMode.Vanish); Lord lord = null; if (pawn.Map.mapPawns.SpawnedPawnsInFaction(Find.FactionManager.FirstFactionOfDef(FactionDef.Named(Props.factionToChangeTo))).Any((Pawn p) => p != pawn)) { lord = ((Pawn)GenClosest.ClosestThing_Global(pawn.Position, pawn.Map.mapPawns.SpawnedPawnsInFaction(Find.FactionManager.FirstFactionOfDef(FactionDef.Named(Props.factionToChangeTo))), 99999f, (Thing p) => p != pawn && ((Pawn)p).GetLord() != null, null)).GetLord(); } if (lord == null) { LordJob_DefendPoint lordJob = new LordJob_DefendPoint(pawn.Position, null, false, true); lord = LordMaker.MakeNewLord(Find.FactionManager.FirstFactionOfDef(FactionDef.Named(Props.factionToChangeTo)), lordJob, Find.CurrentMap, null); } lord.AddPawn(pawn); this.parent.Destroy(); } } }
public override void OnGameLoaded(Game g, Harmony h) { var factionManger = g.World.factionManager; foreach (var fac in factionManger.allFactions.Where(f => f.def == null)) { fac.def = FactionDef.Named("OutlanderCivil"); } foreach (var wo in g.World.worldObjects.worldObjects.Where(w => w.factionInt.def == null)) { var faction = factionManger.allFactions.Where(f => !f.IsPlayer && (!f.hidden ?? true)).RandomElement(); ThreadSafeLogger.Warning($"[Analyzer] Changed the world object {wo.Label}'s faction from {wo.factionInt.name}(Removed) to {faction.name}"); wo.factionInt = faction; } foreach (var wp in g.World.worldPawns.AllPawnsAliveOrDead.Where(p => p.factionInt.def == null)) { var faction = factionManger.allFactions.Where(f => !f.IsPlayer && (!f.hidden ?? true)).RandomElement(); ThreadSafeLogger.Warning($"[Analyzer] Changed the pawn {wp.Label}'s faction from {wp.factionInt.name}(Removed) to {faction.name}"); wp.factionInt = faction; } Active = false; }
public void InjectMiscToFactions(List <FactionDef> FB_Factions) { Base FB = Base.Instance; // Preemptively fix apparelStuffFilters for the basic factions that'll get FB pawn kinds // (See also Harmony patch for GenerateWorkingPossibleApparelSetFor) FB.ModLogger.Message("Injecting apparel filters to basic factions"); if ((SettingHandle <bool>)FB.config["EnableMixedAncients"]) { // Give Ancients the best stuff (Plasteel, Hyperweave, Gold, etc.) InjectApparelStuffIntoFaction(FactionDef.Named("Ancients"), 5, 100_000); InjectApparelStuffIntoFaction(FactionDef.Named("AncientsHostile"), 5, 100_000); } if ((SettingHandle <bool>)FB.config["EnableMixedStartingColonists"]) { // PlayerColony gets average stuff (Synthread, Wool, etc.) InjectApparelStuffIntoFaction(FactionDef.Named("PlayerColony"), 2.5f, 5); // PlayerTribe gets the worst stuff (Cloth, Steel, etc.) InjectApparelStuffIntoFaction(FactionDef.Named("PlayerTribe"), 0, 2.5f); } // Fix caravanTraderKinds, visitorTraderKinds, baseTraderKinds for the civil faction only FB.ModLogger.Message("Injecting trader kinds to our factions"); TraderKindDefInjector.InjectTraderKindDefsToFactions(FB_Factions); }
public override void SpawnSetup(Map map, bool bla) { base.SpawnSetup(map, bla); Building_SignOfDagon toDestroy = null; foreach (Building bld in map.listerBuildings.allBuildingsColonist) { if (bld == this) { continue; } if (bld is Building_SignOfDagon) { toDestroy = (Building_SignOfDagon)bld; } } if (toDestroy != null) { toDestroy.Destroy(0); } List <Pawn> list = map.GetComponent <MapComponent_SacrificeTracker>().defendTheBroodPawns; if (list != null) { if (list.Count > 0) { Faction f = null; if (Cthulhu.Utility.IsCosmicHorrorsLoaded()) { f = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROM_DeepOne")); } else { Messages.Message("Cosmic horrors mod is not loaded. Using insectoids instead.", MessageTypeDefOf.NegativeEvent); f = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROM_DeepOneAlt")); } Lord lord = null; LordJob_DefendPoint lordJob = new LordJob_DefendPoint(this.Position); Cthulhu.Utility.TemporaryGoodwill(f, false); foreach (Pawn current in list) { if (lord == null) { lord = current.GetLord(); } if (lord != null) { map.lordManager.RemoveLord(lord); } } LordMaker.MakeNewLord(f, lordJob, map, list); } } }
public static void Prefix(FactionManager __instance) { for (var i = 0; i < __instance.allFactions.Count; i++) { if (__instance.allFactions[i].def == null) { __instance.allFactions[i].def = FactionDef.Named("OutlanderCivil"); } } }
public void GenerateVillagerCorpses() { Faction faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("TribeCivil")); SpawnPawnCorpse(Map, Position, PawnKindDef.Named("Tribal_ChiefMelee"), faction, GenDate.TicksPerDay, true); SpawnPawnCorpse(Map, Position + new IntVec3(2, 0, 2), PawnKindDef.Named("Tribal_Warrior"), faction, GenDate.TicksPerDay, true); SpawnPawnCorpse(Map, Position + new IntVec3(2, 0, -2), PawnKindDef.Named("Tribal_Warrior"), faction, GenDate.TicksPerDay, true); SpawnPawnCorpse(Map, Position + new IntVec3(-2, 0, -2), PawnKindDef.Named("Tribal_Warrior"), faction, GenDate.TicksPerDay, true); SpawnPawnCorpse(Map, Position + new IntVec3(-2, 0, 2), PawnKindDef.Named("Tribal_Warrior"), faction, GenDate.TicksPerDay, true); }
private static Pawn CreateXenoPawn(string pawnKindDefName) { var faction = FactionUtility.DefaultFactionFrom(FactionDef.Named("THU_Xenomorph")); var pawnKindDef = PawnKindDef.Named(pawnKindDefName); var request = new PawnGenerationRequest(pawnKindDef, newborn: true, faction: faction); return(PawnGenerator.GeneratePawn(request)); }
public void SingleSpawnLoop(SpawnThings spawnables, IntVec3 position, Map map) { bool flag = spawnables.def != null; if (flag) { Faction faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("TM_ElementalFaction")); TMPawnSummoned newPawn = new TMPawnSummoned(); bool flag2 = spawnables.def.race != null; if (flag2) { bool flag3 = spawnables.kindDef == null; if (flag3) { Log.Error("Missing kinddef"); } else { newPawn = (TMPawnSummoned)PawnGenerator.GeneratePawn(spawnables.kindDef, faction); newPawn.validSummoning = true; //newPawn.Spawner = this.Caster; newPawn.Temporary = false; if (newPawn.Faction == null || !newPawn.Faction.HostileTo(Faction.OfPlayer)) { Log.Message("elemental faction was null or not hostile - fixing"); newPawn.SetFaction(faction, null); faction.TrySetRelationKind(Faction.OfPlayer, FactionRelationKind.Hostile, false, null); } GenSpawn.Spawn(newPawn, position, this.Map); if (newPawn.Faction != null && newPawn.Faction != Faction.OfPlayer) { Lord lord = null; if (newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction).Any((Pawn p) => p != newPawn)) { Predicate <Thing> validator = (Thing p) => p != newPawn && ((Pawn)p).GetLord() != null; Pawn p2 = (Pawn)GenClosest.ClosestThing_Global(newPawn.Position, newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction), 99999f, validator, null); lord = p2.GetLord(); } bool flag4 = lord == null; if (flag4) { LordJob_AssaultColony lordJob = new LordJob_AssaultColony(newPawn.Faction, false, false, false, true, false); lord = LordMaker.MakeNewLord(faction, lordJob, this.Map, null); } lord.AddPawn(newPawn); } } } else { Log.Message("Missing race"); } } }
public override void SpawnSetup(Map map, bool respawningAfterLoad) { base.SpawnSetup(map, respawningAfterLoad); if (base.Faction == null) { this.SetFaction(Find.FactionManager.FirstFactionOfDef(FactionDef.Named("Horrors"))); } if (!respawningAfterLoad) { this.ticksToSpawnInitialPawns = 420; } }
private void SpawnPawns_start() { LordJob_AssaultColony lordJob = new LordJob_AssaultColony(this.Faction, true, false, true, false, true); this.lord = LordMaker.MakeNewLord(this.Faction, lordJob, this.Map, null); pointsLeft = spawnpoints; IntVec3 invalid; if (!CellFinder.TryFindRandomCellNear(this.Position, this.Map, 7, (IntVec3 c) => c.Standable(this.Map) && this.Map.reachability.CanReach(c, this, PathEndMode.Touch, TraverseParms.For(TraverseMode.PassDoors, Danger.Deadly, false)), out invalid, -1)) { //Log.Message("Building_TacticalManaBomb. SpawnInitialPawns spawnpoints : " + this.pointsLeft + "...." + this, false); invalid = IntVec3.Invalid; } else if (spawnpoints <= 100) { //Log.Message("Building_TacticalManaBomb. SpawnInitialPawns spawnpoints : " + this.pointsLeft + "...." + this, false); return; } Faction faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("PLAHF_faction")); Pawn pawn; int RRR; while (pointsLeft > 80) { RRR = Rand.Range(0, 7); if (RRR < 1) { pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("PLAHF_Honorary_member"), faction); } else if (RRR < 2) { pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("PLAHF_test_subjectB"), faction); } else if (RRR < 5) { pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("PLAHF_former_Town_Guard"), faction); } else { pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("PLAHF_Lab_slave"), faction); } GenSpawn.Spawn(pawn, CellFinder.RandomClosewalkCellNear(base.Position, base.Map, 3, null), base.Map, WipeMode.Vanish); this.lord.AddPawn(pawn); pointsLeft -= pawn.kindDef.combatPower; } }
public override void PostMake() { base.PostMake(); LongEventHandler.QueueLongEvent(delegate { sealedVampire = VampireGen.GenerateVampire(Rand.Range(4, 7), VampireUtility.RandBloodline, null, Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROMV_LegendaryVampires"))); GenSpawn.Spawn(sealedVampire, this.PositionHeld, this.MapHeld); sealedVampire.DeSpawn(); this.innerContainer.TryAdd(sealedVampire); }, "ROMV_GeneratingAncientVampire", false, exception => { }); }
protected bool TrySetDeepOneFaction(IncidentParms parms) { if (Cthulhu.Utility.IsCosmicHorrorsLoaded()) { parms.faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROM_DeepOne")); } else { Messages.Message("UsingInsectoidsInstead".Translate(), MessageTypeDefOf.NegativeEvent); parms.faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROM_DeepOneAlt")); } return(parms.faction != null); }
private HorrorHive SpawnHiveCluster(Map map) { if (!InfestationCellFinder.TryFindCell(out var loc, map)) { return(null); } var hive = (HorrorHive)GenSpawn.Spawn(ThingMaker.MakeThing(ThingDef.Named("HorrorHive")), loc, map); hive.SetFaction(Find.FactionManager.FirstFactionOfDef(FactionDef.Named("Horrors"))); return(hive); }
public override void Resolve(ResolveParams rp) { foreach (var cell in rp.rect.Cells) { var resolveParams3 = rp; resolveParams3.rect = CellRect.SingleCell(cell); resolveParams3.singleThingDef = CthulhuFactionsDefOf.ROM_TemporaryRegionBarrier; BaseGen.symbolStack.Push("thing", resolveParams3); } PassingParameters(rp); instanceMap = Map; instanceFaction = rp.faction ?? Find.FactionManager.FirstFactionOfDef(FactionDef.Named("TheAgency")); //ResolveParams resolveParams4 = rp; //BaseGen.symbolStack.Push("clear", resolveParams4); UnfogRoomCenter(rp.rect.CenterCell); LongEventHandler.QueueLongEvent(delegate { if (instanceMap == null) { return; } foreach (var cell in instanceMap.AllCells) { var thing = cell.GetThingList(instanceMap) .Find(x => x.def == CthulhuFactionsDefOf.ROM_TemporaryDoorMarker); if (thing == null) { //Log.Warning("Could not destroy temporary region barrier at " + cell + " because it's not here."); } else { if (thing.def == CthulhuFactionsDefOf.ROM_TemporaryDoorMarker) { newThing = null; newThing = ThingMaker.MakeThing(ThingDefOf.Door, ThingDefOf.Steel); newThing.SetFaction(instanceFaction); //newThing.Rotation = thing.Rotation; tempIntVec = new IntVec3(cell.x, 0, cell.z); GenSpawn.Spawn(newThing, tempIntVec, instanceMap); } thing.Destroy(); } } }, "doorResolver", true, null); }
public void Hatch() { PawnGenerationRequest request = new PawnGenerationRequest(this.Props.hatcherPawn, this.hatcheeFaction, PawnGenerationContext.NonPlayer, -1, false, true, false, false, true, false, 1f, false, true, true, false, false, false, false, false, 0, null, 1, null, null, null, null, null); Pawn hatchling = PawnGenerator.GeneratePawn(request); hatchling.SetFactionDirect(Find.FactionManager.FirstFactionOfDef(FactionDef.Named("Horrors"))); PawnUtility.TrySpawnHatchedOrBornPawn(hatchling, this.parent); PawnInventoryGenerator.GenerateInventoryFor(hatchling, request); PawnWeaponGenerator.TryGenerateWeaponFor(hatchling, request); Lord lord = CreateNewLord(); lord.AddPawn(hatchling); this.parent.Destroy(DestroyMode.Vanish); }
public override void SpawnSetup(Map map, bool respawningAfterLoad) { Faction faction = Find.FactionManager.FirstFactionOfDef(FactionDef.Named("PLAHF_faction")); base.SpawnSetup(map, respawningAfterLoad); if (this.Faction == null) { this.SetFaction(faction, null); } if (!respawningAfterLoad) { this.SpawnPawns_start(); } }
public override void SpawnSetup(Map map, bool respawningAfterLoad) { base.SpawnSetup(map, respawningAfterLoad); if (Faction == null) { SetFactionDirect(FactionUtility.DefaultFactionFrom(FactionDef.Named("Horrors"))); } if (Faction != null && Faction.IsPlayer) { contentsKnown = true; } }
private HorrorHive SpawnHiveCluster(int hiveCount, Map map) { IntVec3 loc; if (!InfestationCellFinder.TryFindCell(out loc, map)) { return(null); } HorrorHive hive = (HorrorHive)GenSpawn.Spawn(ThingMaker.MakeThing(ThingDef.Named("HorrorHive"), null), loc, map); hive.SetFaction(Find.FactionManager.FirstFactionOfDef(FactionDef.Named("Horrors"))); return(hive); }
public void Hatch() { var request = new PawnGenerationRequest(Props.hatcherPawn, hatcheeFaction, PawnGenerationContext.NonPlayer, -1, false, true, false, false, true, false, 1f, false, true, true, false); var hatchling = PawnGenerator.GeneratePawn(request); hatchling.SetFactionDirect(Find.FactionManager.FirstFactionOfDef(FactionDef.Named("Horrors"))); PawnUtility.TrySpawnHatchedOrBornPawn(hatchling, parent); PawnInventoryGenerator.GenerateInventoryFor(hatchling, request); PawnWeaponGenerator.TryGenerateWeaponFor(hatchling, request); var lord = CreateNewLord(); lord.AddPawn(hatchling); parent.Destroy(); }
private static void FixHair(Pawn pawn) { int tries = 100; while (!pawn.story.hairDef.hairTags.Any(h => h == "Rural" || h == "Urban") || pawn.story.hairDef.hairGender != HairGender.Female) { pawn.story.hairDef = PawnHairChooser.RandomHairDefFor(pawn, FactionDef.Named("Spacer")); tries--; if (tries <= 0) { Log.Error("Couldn't get backstory."); break; } } }
public override void WorldComponentTick() { base.WorldComponentTick(); if (Find.TickManager.TicksGame % 100 == 0 && !hostilityDeclared && Find.FactionManager.FirstFactionOfDef(FactionDef.Named("PJ_RebelFac")) is Faction rebelFaction && Find.FactionManager.FirstFactionOfDef(FactionDef.Named("PJ_GalacticEmpire")) is Faction impFaction) { hostilityDeclared = true; impFaction.SetHostileTo(rebelFaction, true); rebelFaction.SetHostileTo(impFaction, true); Find.LetterStack.ReceiveLetter("PJ_WarDeclared".Translate(), "PJ_WarDeclaredDesc".Translate( new object[] { rebelFaction.def.label, impFaction.def.label } ), DefDatabase <LetterDef> .GetNamed("PJ_BadUrgent"), null); } }
public void FactionSetup() { Faction ghostFaction = this.Faction; if (this.Faction?.def != FactionDef.Named("PJ_GhostFaction")) { return; } if (ghostFaction != null && ghostFaction != Faction.OfPlayerSilentFail) { foreach (Faction fac in Find.FactionManager.AllFactions) { bool hostile = fac.HostileTo(Faction.OfPlayerSilentFail); ghostFaction.TrySetRelationKind(fac, FactionRelationKind.Hostile); } } }
protected override bool TryExecuteWorker(IncidentParms parms) { int tile; if (!TileFinder.TryFindNewSiteTile(out tile)) { return(false); } Site site = SiteMaker.MakeSite(SitePartDefOf.Outpost, tile, Find.FactionManager.FirstFactionOfDef(FactionDef.Named("ROMV_Sabbat"))); site.Tile = tile; site.GetComponent <HandleVampireQuestComp>().StartQuest(); Find.WorldObjects.Add(site); base.SendStandardLetter(parms, null); return(true); }