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);
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #5
0
        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());
 }
Example #7
0
 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());
        }
Example #10
0
        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));
        }
Example #12
0
 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);
 }
Example #15
0
 private int GetAnimalsCount(SitePartParams parms)
 {
     return(ManhunterPackIncidentUtility.GetAnimalsCount(parms.animalKind, parms.threatPoints));
 }
 public SitePartDefWithParams(SitePartDef def, SitePartParams parms)
 {
     this.def   = def;
     this.parms = parms;
 }
Example #17
0
        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);
        }