示例#1
0
        public override int Effect(Deity creator)
        {
            List <WeightedObjects <Province> > possible_target_province = candidate_provinces();

            int number_of_settled_provinces = Constants.BASE_TILES_SETTLED_BY_RACE;

            if (_commanded_race.SocialCulturalCharacteristics.Contains(SocialCulturalCharacteristic.Nomadic))
            {
                number_of_settled_provinces += 1;
            }
            if (_commanded_race.SocialCulturalCharacteristics.Contains(SocialCulturalCharacteristic.Sedentary))
            {
                number_of_settled_provinces -= 1;
            }

            if (number_of_settled_provinces > possible_target_province.Count)
            {
                number_of_settled_provinces = possible_target_province.Count;
            }

            List <Province> target_provinces = WeightedObjects <Province> .ChooseXHeaviestObjects(possible_target_province, number_of_settled_provinces);

            foreach (Province province in target_provinces)
            {
                province.SettledRaces.Add(_commanded_race);
                _commanded_race.SettledProvinces.Add(province);
            }
            return(0);
        }
示例#2
0
        private void chooseBattleLocation()
        {
            List <WeightedObjects <TerrainFeatures> > possible_battle_locations = new List <WeightedObjects <TerrainFeatures> >();

            possible_battle_locations.Add(new WeightedObjects <TerrainFeatures>(Province.PrimaryTerrainFeature));

            foreach (TerrainFeatures terrain in Province.SecondaryTerrainFeatures)
            {
                possible_battle_locations.Add(new WeightedObjects <TerrainFeatures>(terrain));
            }

            foreach (WeightedObjects <TerrainFeatures> terrain in possible_battle_locations)
            {
                terrain.Weight += terrain.Object.Modifiers.NaturalDefenceValue * 10;

                if (Province.Owner == InvolvedArmies[1].Owner)
                {
                    terrain.Weight += terrain.Object.Modifiers.FortificationDefenceValue * 10;
                }
            }

            Location = WeightedObjects <TerrainFeatures> .ChooseXHeaviestObjects(possible_battle_locations, 1)[0];
        }