private void ComputeTameCosts(global::Game game) { System.Random random = new System.Random(World.Seed); IDatabase <ArmyAction> database = Databases.GetDatabase <ArmyAction>(false); Diagnostics.Assert(database != null); Dictionary <string, List <PointOfInterestTemplate> > dictionary = KaijuTechsManager.ComputeLuxuryAbundance(game); for (int i = 0; i < database.Count <ArmyAction>(); i++) { ArmyAction armyAction = database.ElementAt(i); if (armyAction is IArmyActionWithKaijuTameCost) { KaijuTameCost tameCost = (armyAction as IArmyActionWithKaijuTameCost).TameCost; for (int j = 0; j < tameCost.CostDefinitions.Length; j++) { KaijuTameCost.CostDefinition costDefinition = tameCost.CostDefinitions[j]; List <PointOfInterestTemplate> list = new List <PointOfInterestTemplate>(); list.AddRange(dictionary[costDefinition.LuxuryTier]); PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)]; string empty = string.Empty; if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty)) { costDefinition.SetResourceName(empty); } } } } }
private void Client_TurnBegin_RecalculateELCPTameResource() { if (this.ELCPTameCostCooldown < 1) { return; } int num = (this.gameService.Game as global::Game).Turn + 1; int num2 = num % this.ELCPTameCostCooldown; if (num2 != 0 && this.eLCPResourceName != StaticString.Empty) { return; } num -= num2; System.Random random = new System.Random(World.Seed + base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index * base.Empire.Index + num * num); int maxEraNumber = DepartmentOfScience.GetMaxEraNumber(); KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost(); Dictionary <string, List <PointOfInterestTemplate> > dictionary = KaijuTechsManager.ComputeLuxuryAbundance(this.gameService.Game as global::Game); List <PointOfInterestTemplate> list = new List <PointOfInterestTemplate>(); List <string> list2 = new List <string>(); for (int i = 0; i < kaijuTameCost.CostDefinitions.Length; i++) { KaijuTameCost.CostDefinition costDefinition = kaijuTameCost.CostDefinitions[i]; if (!list2.Contains(costDefinition.LuxuryTier)) { string[] array = costDefinition.EraNumber.Split(new char[] { ',' }); bool flag = false; for (int j = 0; j < array.Length; j++) { int num3 = 0; if (int.TryParse(array[j], out num3) && num3 <= maxEraNumber) { flag = true; break; } } if (flag) { list.AddRange(dictionary[costDefinition.LuxuryTier]); list2.Add(costDefinition.LuxuryTier); } } } PointOfInterestTemplate pointOfInterestTemplate = list[random.Next(list.Count)]; string empty = string.Empty; if (pointOfInterestTemplate.Properties.TryGetValue("ResourceName", out empty)) { Diagnostics.Log("ELCP {0} Client_TurnBegin_RecalculateELCPTameResource rolled Resource {1} instead of {2}", new object[] { base.Empire.Index.ToString() + "/" + this.KaijuEmpire.KaijuFaction.LocalizedName, empty, kaijuTameCost.ResourceName }); this.eLCPResourceName = new StaticString(empty); } }