public override void GenerateFresh(string seed) { var worldobjects = DefDatabase<WorldObjectDef>.AllDefsListForReading.FindAll(wo => wo.HasModExtension<SpawnAtWorldGen>()); foreach (var worldObject in worldobjects) { SpawnAtWorldGen ext = worldObject.GetModExtension<SpawnAtWorldGen>(); for (int i = 0; i < ext.spawnCount; i++) { Site wo = (Site)WorldObjectMaker.MakeWorldObject(worldObject); // Set faction if (ext.spawnPartOfFaction != null) wo.SetFaction(Find.FactionManager.FirstFactionOfDef(ext.spawnPartOfFaction)); // Find tile wo.Tile = RandomTileFor(wo, ext, 500); // Parts SitePartParams parms = new SitePartParams { points = 500f }; foreach (var part in ext.parts) { SitePart sitePart = new SitePart(wo, part, parms); wo.AddPart(sitePart); } Find.WorldObjects.Add(wo); } } }
public override SitePartParams GenerateDefaultParams(float myThreatPoints, int tile, Faction faction) { SitePartParams sitePartParams = base.GenerateDefaultParams(myThreatPoints, tile, faction); sitePartParams.threatPoints = Mathf.Max(sitePartParams.threatPoints, faction.def.MinPointsToGeneratePawnGroup(PawnGroupKindDefOf.Settlement)); return(sitePartParams); }
public override SitePartParams GenerateDefaultParams(float myThreatPoints, int tile, Faction faction) { SitePartParams sitePartParams = base.GenerateDefaultParams(myThreatPoints, tile, faction); sitePartParams.threatPoints = Mathf.Max(sitePartParams.threatPoints, 750f); return(sitePartParams); }
public override SitePartParams GenerateDefaultParams(float myThreatPoints, int tile, Faction faction) { SitePartParams sitePartParams = base.GenerateDefaultParams(myThreatPoints, tile, faction); sitePartParams.mortarsCount = Rand.RangeInclusive(0, 1); sitePartParams.turretsCount = Mathf.Clamp(Mathf.RoundToInt(sitePartParams.threatPoints / ThingDefOf.Turret_MiniTurret.building.combatPower), 2, 11); return(sitePartParams); }
public override SitePartParams GenerateDefaultParams(float myThreatPoints, int tile, Faction faction) { SitePartParams sitePartParams = base.GenerateDefaultParams(myThreatPoints, tile, faction); if (ManhunterPackGenStepUtility.TryGetAnimalsKind(sitePartParams.threatPoints, tile, out sitePartParams.animalKind)) { sitePartParams.threatPoints = Mathf.Max(sitePartParams.threatPoints, sitePartParams.animalKind.combatPower); } return(sitePartParams); }
private int GetMechanoidsCount(Site site, SitePartParams parms) { return(PawnGroupMakerUtility.GeneratePawnKindsExample(new PawnGroupMakerParms { tile = site.Tile, faction = Faction.OfMechanoids, groupKind = PawnGroupKindDefOf.Combat, points = parms.threatPoints, seed = SleepingMechanoidsSitePartUtility.GetPawnGroupMakerSeed(parms) }).Count()); }
protected int GetEnemiesCount(Site site, SitePartParams parms) { return(PawnGroupMakerUtility.GeneratePawnKindsExample(new PawnGroupMakerParms { tile = site.Tile, faction = site.Faction, groupKind = PawnGroupKindDefOf.Settlement, points = parms.threatPoints, inhabitants = true, seed = OutpostSitePartUtility.GetPawnGroupMakerSeed(parms) }).Count()); }
public override SitePartParams GenerateDefaultParams(float myThreatPoints, int tile, Faction faction) { SitePartParams parms = base.GenerateDefaultParams(myThreatPoints, tile, faction); try { parms.threatPoints = Mathf.Max(parms.threatPoints, faction.def.MinPointsToGeneratePawnGroup(PawnGroupKindDefOf.Combat)); } catch (Exception ex) { if (faction == null) { Log.Warning("Faction is null! " + ex.Message + "\n" + ex.StackTrace); } else { Log.Warning("Couldn't find valid threatPoints for faction " + faction.Name + "\n" + ex.Message + "\n" + ex.StackTrace); } } return(parms); }
private int GetPawnCount(Site site, SitePartParams parms) { PawnGroupMakerParms pawnGroupMakerParms1 = new PawnGroupMakerParms(); pawnGroupMakerParms1.tile = site.Tile; pawnGroupMakerParms1.faction = site.Faction; pawnGroupMakerParms1.groupKind = PawnGroupKindDefOf.Combat; pawnGroupMakerParms1.points = parms.threatPoints; pawnGroupMakerParms1.seed = SleepingMechanoidsSitePartUtility.GetPawnGroupMakerSeed(parms); PawnGroupMakerParms pawnGroupMakerParms2 = new PawnGroupMakerParms(); pawnGroupMakerParms2.tile = site.Tile; pawnGroupMakerParms2.faction = site.Faction; pawnGroupMakerParms2.groupKind = PawnGroupKindDefOf.Combat; pawnGroupMakerParms2.points = parms.threatPoints; pawnGroupMakerParms2.seed = SleepingMechanoidsSitePartUtility.GetPawnGroupMakerSeed(parms); return(PawnGroupMakerUtility.GeneratePawnKindsExample(pawnGroupMakerParms1).Count() + PawnGroupMakerUtility.GeneratePawnKindsExample(pawnGroupMakerParms2).Count()); }
private string GetThreatsInfo(SitePartParams parms) { threatsTmp.Clear(); int num = parms.mortarsCount + 1; string text = null; if (parms.turretsCount != 0) { text = ((parms.turretsCount != 1) ? ((string)"Turrets".Translate()) : ((string)"Turret".Translate())); threatsTmp.Add("KnownSiteThreatEnemyCountAppend".Translate(parms.turretsCount.ToString(), text)); } if (parms.mortarsCount != 0) { text = ((parms.mortarsCount != 1) ? ((string)"Mortars".Translate()) : ((string)"Mortar".Translate())); threatsTmp.Add("KnownSiteThreatEnemyCountAppend".Translate(parms.mortarsCount.ToString(), text)); } if (num != 0) { text = ((num != 1) ? ((string)"Enemies".Translate()) : ((string)"Enemy".Translate())); threatsTmp.Add("KnownSiteThreatEnemyCountAppend".Translate(num.ToString(), text)); } return(threatsTmp.ToCommaList(useAnd: true)); }
private string GetThreatsInfo_NewTmp(SitePartParams parms, Faction faction) { threatsTmp.Clear(); int num = parms.mortarsCount + 1; string text = null; if (parms.turretsCount != 0) { text = ((parms.turretsCount != 1) ? ((string)"Turrets".Translate()) : ((string)"Turret".Translate())); threatsTmp.Add("KnownSiteThreatEnemyCountAppend".Translate(parms.turretsCount.ToString(), text)); } if (parms.mortarsCount != 0) { text = ((parms.mortarsCount != 1) ? ((string)"Mortars".Translate()) : ((string)"Mortar".Translate())); threatsTmp.Add("KnownSiteThreatEnemyCountAppend".Translate(parms.mortarsCount.ToString(), text)); } if (num != 0) { text = ((faction != null) ? ((num == 1) ? faction.def.pawnSingular : faction.def.pawnsPlural) : ((string)((num == 1) ? "Enemy".Translate() : "Enemies".Translate()))); threatsTmp.Add("KnownSiteThreatEnemyCountAppend".Translate(num.ToString(), text)); } return(threatsTmp.ToCommaList(useAnd: true)); }
public virtual bool IncreasesPopulation(SitePartParams parms) { return(def.increasesPopulation); }
private string GetThreatsInfo(SitePartParams parms) { return(GetThreatsInfo_NewTmp(parms, null)); }
public static int GetPawnGroupMakerSeed(SitePartParams parms) { return(parms.randomValue); }
private int GetAnimalsCount(SitePartParams parms) { return(ManhunterPackIncidentUtility.GetAnimalsCount(parms.animalKind, parms.threatPoints)); }
public SitePartDefWithParams(SitePartDef def, SitePartParams parms) { this.def = def; this.parms = parms; }
public static Site GenerateSite(IEnumerable <SitePartDefWithParams> sitePartsParams, int tile, Faction faction, bool hiddenSitePartsPossible = false, RulePack singleSitePartRules = null) { _ = QuestGen.slate; bool flag = false; foreach (SitePartDefWithParams sitePartsParam in sitePartsParams) { if (sitePartsParam.def.defaultHidden) { flag = true; break; } } if (flag || hiddenSitePartsPossible) { SitePartParams parms = SitePartDefOf.PossibleUnknownThreatMarker.Worker.GenerateDefaultParams(0f, tile, faction); SitePartDefWithParams val = new SitePartDefWithParams(SitePartDefOf.PossibleUnknownThreatMarker, parms); sitePartsParams = sitePartsParams.Concat(Gen.YieldSingle(val)); } Site site = SiteMaker.MakeSite(sitePartsParams, tile, faction); List <Rule> list = new List <Rule>(); Dictionary <string, string> dictionary = new Dictionary <string, string>(); List <string> list2 = new List <string>(); int num = 0; for (int i = 0; i < site.parts.Count; i++) { List <Rule> list3 = new List <Rule>(); Dictionary <string, string> dictionary2 = new Dictionary <string, string>(); site.parts[i].def.Worker.Notify_GeneratedByQuestGen(site.parts[i], QuestGen.slate, list3, dictionary2); if (site.parts[i].hidden) { continue; } if (singleSitePartRules != null) { List <Rule> list4 = new List <Rule>(); list4.AddRange(list3); list4.AddRange(singleSitePartRules.Rules); string text = QuestGenUtility.ResolveLocalText(list4, dictionary2, "root", capitalizeFirstSentence: false); list.Add(new Rule_String("sitePart" + num + "_description", text)); if (!text.NullOrEmpty()) { list2.Add(text); } } for (int j = 0; j < list3.Count; j++) { Rule rule = list3[j].DeepCopy(); Rule_String rule_String = rule as Rule_String; if (rule_String != null && num != 0) { rule_String.keyword = "sitePart" + num + "_" + rule_String.keyword; } list.Add(rule); } foreach (KeyValuePair <string, string> item in dictionary2) { string text2 = item.Key; if (num != 0) { text2 = "sitePart" + num + "_" + text2; } if (!dictionary.ContainsKey(text2)) { dictionary.Add(text2, item.Value); } } num++; } if (!list2.Any()) { list.Add(new Rule_String("allSitePartsDescriptions", "HiddenOrNoSitePartDescription".Translate())); list.Add(new Rule_String("allSitePartsDescriptionsExceptFirst", "HiddenOrNoSitePartDescription".Translate())); } else { list.Add(new Rule_String("allSitePartsDescriptions", list2.ToClauseSequence().Resolve())); if (list2.Count >= 2) { list.Add(new Rule_String("allSitePartsDescriptionsExceptFirst", list2.Skip(1).ToList().ToClauseSequence())); } else { list.Add(new Rule_String("allSitePartsDescriptionsExceptFirst", "HiddenOrNoSitePartDescription".Translate())); } } QuestGen.AddQuestDescriptionRules(list); QuestGen.AddQuestNameRules(list); QuestGen.AddQuestDescriptionConstants(dictionary); QuestGen.AddQuestNameConstants(dictionary); QuestGen.AddQuestNameRules(new List <Rule> { new Rule_String("site_label", site.Label) }); return(site); }