Example #1
0
        private static bool AnyFlagsSet(ModifierTag required, ModifierTag set)
        {
            var toCheck = Enum.GetValues(typeof(ModifierTag)) as IEnumerable <ModifierTag>;

            foreach (Enum value in toCheck.Where(x => required.HasFlag(x) && x != ModifierTag.None))
            {
                if (set.HasFlag(value))
                {
                    return(true);
                }
            }

            return(false);
        }
Example #2
0
        public Modifier(ModifierCategory category, ModifierTag tag)
        {
            Tag      = tag;
            Category = category;
            switch (Category)
            {
            case ModifierCategory.Domain:
                defineDomains(tag);
                break;

            case ModifierCategory.Province:
                defineProvincialModifiers(tag);
                break;
            }
        }
Example #3
0
        private void defineProvincialModifiers(ModifierTag tag)
        {
            switch (tag)
            {
            case ModifierTag.ThePlague:
                Excludes        = null;
                Forbids         = new CreationTag[] { CreationTag.Creation };
                IncreasesWeight = null;
                DecreasesWeight = new CreationTag[] { CreationTag.Conquest, CreationTag.Construction, CreationTag.Army };
                IncreaseCost    = null;
                DecreaseCost    = null;
                break;

            case ModifierTag.Permafrost:
                Excludes        = null;
                Forbids         = new CreationTag[] { CreationTag.Tree };
                IncreasesWeight = null;
                DecreasesWeight = new CreationTag[] { CreationTag.Life };
                IncreaseCost    = null;
                DecreaseCost    = null;
                break;
            }
        }
Example #4
0
        private void defineDomains(ModifierTag tag)
        {
            switch (tag)
            {
            case ModifierTag.Architecture:
                Excludes        = null;
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Construction };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Construction };
                break;

            case ModifierTag.Battle:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Peace
                };
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Military, CreationTag.Battle, CreationTag.Combat };
                DecreasesWeight = new CreationTag[] { CreationTag.Peace };

                IncreaseCost = new CreationTag[] { CreationTag.Peace };
                DecreaseCost = new CreationTag[] { CreationTag.Battle };
                break;

            case ModifierTag.Cold:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Heat, ModifierTag.Fire
                };
                Forbids         = new CreationTag[] { CreationTag.Heat };
                IncreasesWeight = new CreationTag[] { CreationTag.Cold };
                DecreasesWeight = new CreationTag[] { CreationTag.Fire, CreationTag.Heat };

                IncreaseCost = new CreationTag[] { CreationTag.Cold };
                DecreaseCost = new CreationTag[] { CreationTag.Heat };
                break;

            case ModifierTag.Community:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Solitary
                };
                Forbids         = new CreationTag[] { CreationTag.Solitary };
                IncreasesWeight = new CreationTag[] { CreationTag.Community };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Community };
                break;

            case ModifierTag.Conquest:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Peace
                };
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Military, CreationTag.War, CreationTag.Expansion };
                DecreasesWeight = new CreationTag[] { CreationTag.Peace };

                IncreaseCost = new CreationTag[] { CreationTag.Peace };
                DecreaseCost = new CreationTag[] { CreationTag.Expansion };
                break;

            case ModifierTag.Creation:
                Excludes        = null;
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Creation };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Creation };
                break;

            case ModifierTag.Drought:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Water
                };
                Forbids         = new CreationTag[] { CreationTag.Water };
                IncreasesWeight = new CreationTag[] { CreationTag.Dry };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Dry };
                break;

            case ModifierTag.Earth:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Water
                };
                Forbids         = new CreationTag[] { CreationTag.Water };
                IncreasesWeight = new CreationTag[] { CreationTag.Earth };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Earth };
                break;

            case ModifierTag.Exploration:
                Excludes        = null;
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Exploration, CreationTag.Expansion };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Exploration };
                break;

            case ModifierTag.Fire:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Water
                };
                Forbids         = new CreationTag[] { CreationTag.Water };
                IncreasesWeight = new CreationTag[] { CreationTag.Fire, CreationTag.Heat, CreationTag.Resurrection };
                DecreasesWeight = new CreationTag[] { CreationTag.Cold };

                IncreaseCost = new CreationTag[] { CreationTag.Cold };
                DecreaseCost = new CreationTag[] { CreationTag.Fire };
                break;

            case ModifierTag.Heat:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Cold
                };
                Forbids         = new CreationTag[] { CreationTag.Cold };
                IncreasesWeight = new CreationTag[] { CreationTag.Heat, CreationTag.Fire };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Heat };
                break;

            case ModifierTag.Magic:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.AntiMagic
                };
                Forbids         = new CreationTag[] { CreationTag.AntiMagic };
                IncreasesWeight = new CreationTag[] { CreationTag.Magic };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Magic };
                break;

            case ModifierTag.Metallurgy:

                Excludes        = null;
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Metal };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Metal };
                break;

            case ModifierTag.Nature:
                Excludes        = null;
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Nature };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Nature };
                break;

            case ModifierTag.Peace:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.War
                };
                Forbids         = new CreationTag[] { CreationTag.War };
                IncreasesWeight = new CreationTag[] { CreationTag.Peace, CreationTag.Alliance };
                DecreasesWeight = new CreationTag[] { CreationTag.Military, CreationTag.Battle };

                IncreaseCost = new CreationTag[] { CreationTag.Military };
                DecreaseCost = new CreationTag[] { CreationTag.Peace };
                break;

            case ModifierTag.Pestilence:

                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Health
                };
                Forbids         = new CreationTag[] { CreationTag.Health };
                IncreasesWeight = new CreationTag[] { CreationTag.Disease };
                DecreasesWeight = new CreationTag[] { CreationTag.Healing };

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Disease };
                break;

            case ModifierTag.Solitary:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Community
                };
                Forbids         = null;
                IncreasesWeight = new CreationTag[] { CreationTag.Solitary, CreationTag.Isolationism };
                DecreasesWeight = new CreationTag[] { CreationTag.Community, CreationTag.Diplomacy };

                IncreaseCost = new CreationTag[] { CreationTag.Community };
                DecreaseCost = new CreationTag[] { CreationTag.Solitary };
                break;

            case ModifierTag.War:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Peace
                };
                Forbids         = new CreationTag[] { CreationTag.Peace };
                IncreasesWeight = new CreationTag[] { CreationTag.War, CreationTag.Military };
                DecreasesWeight = new CreationTag[] { CreationTag.Alliance };

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.War };
                break;

            case ModifierTag.Water:

                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Fire
                };
                Forbids         = new CreationTag[] { CreationTag.Fire };
                IncreasesWeight = new CreationTag[] { CreationTag.Water };
                DecreasesWeight = new CreationTag[] { CreationTag.Earth, CreationTag.Dry };

                IncreaseCost = new CreationTag[] { CreationTag.Dry };
                DecreaseCost = new CreationTag[] { CreationTag.Water };
                break;

            case ModifierTag.Wind:
                Excludes = new List <ModifierTag>()
                {
                    ModifierTag.Earth
                };
                Forbids         = new CreationTag[] { CreationTag.Earth };
                IncreasesWeight = new CreationTag[] { CreationTag.Wind };
                DecreasesWeight = null;

                IncreaseCost = null;
                DecreaseCost = new CreationTag[] { CreationTag.Wind };
                break;
            }
        }
Example #5
0
        public void BasicGeneration()
        {
            for (int i = 0; i < rnd.Next(MinNumberDeities, MaxNumberDeities); i++)
            {
                var deity = new Deity(i * 10293);

                deity.Name = Program.GenerateNames.GetName("deity_names");

                deity.PowerPoints = 0;
                deity.Modifiers   = new DeityModifiers();

                deity.Powers = new List <Power>();

                int nr_domains = rnd.Next(MinNumberDomains, MaxNumberDomains);
                deity.Domains = new Modifier[nr_domains];

                List <ModifierTag> domain_tags = new List <ModifierTag>();
                Array modifier_tags            = Enum.GetValues(typeof(ModifierTag));

                for (int j = (int)ModifierTag.DomainsBegin + 1; j < (int)ModifierTag.DomainsEnd; j++)
                {
                    domain_tags.Add((ModifierTag)modifier_tags.GetValue(j));
                }

                for (int k = 0; k < nr_domains; k++)
                {
                    while (deity.Domains[k] == null)
                    {
                        bool        is_valid_domain = true;
                        ModifierTag domain          = domain_tags[rnd.Next(domain_tags.Count)];

                        // Checks whether there is an incompatible domain and whether there is the same domain already in.
                        for (int l = 0; l < nr_domains; l++)
                        {
                            if (deity.Domains[l] != null && (deity.Domains[l].Excludes != null &&
                                                             deity.Domains[l].Excludes.Contains(domain) || deity.Domains[l].Tag == domain))
                            {
                                is_valid_domain = false;
                            }
                        }

                        if (is_valid_domain)
                        {
                            deity.Domains[k] = new Modifier(ModifierCategory.Domain, domain);
                        }
                    }
                }

                // Shape Land Powers
                deity.Powers.Add(new CreateForest());
                deity.Powers.Add(new CreateGrassland());
                deity.Powers.Add(new CreateDesert());
                deity.Powers.Add(new CreateCave());
                deity.Powers.Add(new CreateLake());
                deity.Powers.Add(new CreateRiver());
                deity.Powers.Add(new CreateMountainRange());
                deity.Powers.Add(new CreateMountain());
                deity.Powers.Add(new CreateHillRange());
                deity.Powers.Add(new CreateHill());
                // Shape Climate Powers
                deity.Powers.Add(new MakeClimateWarmer());
                deity.Powers.Add(new MakeClimateColder());
                deity.Powers.Add(new AddClimateModifier(ClimateModifier.MagicInfused));
                deity.Powers.Add(new CreateSpecialClimate(Climate.Inferno));


                // Create Races Powers
                foreach (var race in DefinedRaces.DefinedRacesList)
                {
                    foreach (var province in Program.State.ProvinceGrid)
                    {
                        deity.Powers.Add(new CreateRace(race, province));
                    }
                }



                GeneratedDeities.Add(deity);
            }
        }