private void AddEffectsToUnits(MapBoostDefinition definition, Unit[] units, global::Empire empire) { List <MapBoostEffect> list = new List <MapBoostEffect>(); definition.GetValidEffects(empire, out list); if (list != null) { for (int i = 0; i < units.Length; i++) { for (int j = 0; j < list.Count; j++) { SimulationDescriptorReference[] simulationDescriptorReferences = list[j].SimulationDescriptorReferences; for (int k = 0; k < simulationDescriptorReferences.Length; k++) { SimulationDescriptor simulationDescriptor; if (this.simulationDescriptorsDatabase.TryGetValue(simulationDescriptorReferences[k].Name, out simulationDescriptor) && !units[i].SimulationObject.Tags.Contains(simulationDescriptor.Name)) { units[i].AddMapBoost(definition.Name, simulationDescriptor); units[i].HasMapBoost = true; } } if (list[j].ExperienceReward > 0f) { units[i].GainXp(list[j].ExperienceReward, false, true); } } } } }