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); }
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]; }