Пример #1
0
        protected override IEnumerable <int> GetSpecies(BaseMapGenContext map, SpawnList <MobSpawn> specialMobs)
        {
            MobSpawn baseMob = GetSeedChar(map, specialMobs);

            if (baseMob != null)
            {
                int earliestBaseStage = baseMob.BaseForm.Species;

                MonsterFeatureData featureIndex = DataManager.Instance.UniversalData.Get <MonsterFeatureData>();
                FormFeatureSummary baseData     = featureIndex.FeatureData[earliestBaseStage][0];
                yield return(baseData.Family);
            }
        }
Пример #2
0
        protected override List <int> GetTypes(BaseMapGenContext map, SpawnList <MobSpawn> specialMobs)
        {
            Dictionary <int, int> elementFrequency = new Dictionary <int, int>();

            for (int ii = 0; ii < map.TeamSpawns.Count; ii++)
            {
                SpawnList <MobSpawn> mobSpawns = map.TeamSpawns.GetSpawn(ii).GetPossibleSpawns();
                foreach (MobSpawn spawn in mobSpawns.EnumerateOutcomes())
                {
                    MonsterFeatureData featureIndex = DataManager.Instance.UniversalData.Get <MonsterFeatureData>();
                    FormFeatureSummary baseData     = featureIndex.FeatureData[spawn.BaseForm.Species][Math.Max(0, spawn.BaseForm.Form)];
                    if (baseData.Element1 != 00)
                    {
                        MathUtils.AddToDictionary(elementFrequency, baseData.Element1, 1);
                    }
                    if (baseData.Element2 != 00)
                    {
                        MathUtils.AddToDictionary(elementFrequency, baseData.Element2, 1);
                    }
                }
            }

            if (elementFrequency.Count == 0)
            {
                for (int ii = 0; ii < specialMobs.Count; ii++)
                {
                    MobSpawn           spawn        = specialMobs.GetSpawn(ii);
                    MonsterFeatureData featureIndex = DataManager.Instance.UniversalData.Get <MonsterFeatureData>();
                    FormFeatureSummary baseData     = featureIndex.FeatureData[spawn.BaseForm.Species][Math.Max(0, spawn.BaseForm.Form)];
                    if (baseData.Element1 != 00)
                    {
                        MathUtils.AddToDictionary(elementFrequency, baseData.Element1, 1);
                    }
                    if (baseData.Element2 != 00)
                    {
                        MathUtils.AddToDictionary(elementFrequency, baseData.Element2, 1);
                    }
                }
            }

            List <int> result = new List <int>();

            if (elementFrequency.Count > 0)
            {
                //choose randomly from the top 3 types
                List <(int, int)> elements = new List <(int, int)>();
                foreach (int key in elementFrequency.Keys)
                {
                    elements.Add((key, elementFrequency[key]));
Пример #3
0
        protected bool CheckIfAllowed(BaseMapGenContext map, MobSpawn spawn, IEnumerable <int> species)
        {
            MonsterFeatureData featureIndex = DataManager.Instance.UniversalData.Get <MonsterFeatureData>();
            FormFeatureSummary baseData     = featureIndex.FeatureData[spawn.BaseForm.Species][0];

            foreach (int baseStage in species)
            {
                if (baseStage == baseData.Family)
                {
                    return(true);
                }
            }

            return(false);
        }