static bool Prefix(ScenPart_PlayerFaction __instance) { if (!PersistentWorldManager.GetInstance().PersistentWorldNotNull()) { return(true); } // In order to prevent cloned factions :/ PersistentWorldManager.GetInstance().PersistentWorld .SetPlayerFactionVarsToNewGeneratedFaction((FactionDef)FactionDefField.GetValue(__instance)); Find.GameInitData.playerFaction = PersistentWorldManager.GetInstance().PersistentWorld.WorldData.FactionManager.OfPlayer; FactionGenerator.EnsureRequiredEnemies(Find.GameInitData.playerFaction); return(false); }
public static Scenario GenScenSkeleton(string _name) { // ***************** // // Set Scenario Head // // ***************** // scen = new Scenario(); scen.name = _name; scen.summary = "Test summary"; scen.description = "Test description"; scen.Category = ScenarioCategory.CustomLocal; //Instantiate and inject player faction ScenPart_PlayerFaction f = new ScenPart_PlayerFaction(); Traverse.Create(f).Field("factionDef").SetValue(FactionDefOf.PlayerTribe); Traverse.Create(scen).Field("playerFaction").SetValue(f); // ***************** // // Set Scenario Body // // ***************** // //List for Scenario.parts List <ScenPart> p = new List <ScenPart>(); //Pawn ConfigPage. Pawncount should be 3 already. ScenPart_ConfigPage_ConfigureStartingPawns SPCPCSP = new ScenPart_ConfigPage_ConfigureStartingPawns(); SPCPCSP.def = ScenPartDefOf.ConfigPage_ConfigureStartingPawns; //Pawn Arrival method ScenPart_PlayerPawnsArriveMethod SPPPAM = new ScenPart_PlayerPawnsArriveMethod(); SPPPAM.def = ScenPartDefOf.PlayerPawnsArriveMethod; Traverse.Create(SPPPAM).Field("method").SetValue(PlayerPawnsArriveMethod.Standing); SPPPAM.visible = false; //Add ScenParts into List p.Add(SPCPCSP); p.Add(SPPPAM); //Inject List into Scenario.parts Traverse.Create(scen).Field("parts").SetValue(p); return(scen); }