Guest User

Untitled

a guest
Mar 20th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. private static void oneSecondReinforce_Step2(Coordinate location)
  2. {
  3. Hashtable hashtable = new Hashtable();
  4. hashtable["uid"] = PlayerData.inst.uid;
  5. hashtable["opp_uid"] = PVPMapData.MapData.GetReferenceAt(location).UserData.uid;
  6. MessageHub.inst.GetPortByAction("PVP:getReinforceList").SendRequest(hashtable, delegate (bool ret, object data1)
  7. {
  8. if (ret)
  9. {
  10. Hashtable hashtable1 = data1 as Hashtable;
  11. long totalTroop = 0;
  12. long totalCapacity = 0;
  13. if (hashtable1.ContainsKey("capacity_info"))
  14. {
  15. hashtable1 = (hashtable1["capacity_info"] as Hashtable);
  16. if (hashtable1 != null)
  17. {
  18. if (hashtable1.ContainsKey("troops_amount"))
  19. {
  20. totalTroop = (long)int.Parse(hashtable1["troops_amount"].ToString());
  21. }
  22. if (hashtable1.ContainsKey("capacity"))
  23. {
  24. totalCapacity = int.Parse(hashtable1["capacity"].ToString());
  25. }
  26. }
  27. }
  28. long remainCapacity = totalCapacity - totalTroop;
  29. BetterDebugMenu.m_Logs += "\n\nTarget City has " + remainCapacity + " capacity to reinforce";
  30. bool isDragonIn = false;
  31. if (PlayerData.inst.dragonData != null && PlayerData.inst.dragonData.MarchId == 0L && GameEngine.Instance.CurrentGameMode != GameEngine.GameMode.DragonKnight)
  32. {
  33. isDragonIn = true;
  34. }
  35.  
  36. int maxTroopCount = (int)DBManager.inst.DB_Local_Benefit.Get("prop_march_capacity_base_value").total;
  37. maxTroopCount = (int)ConfigManager.inst.DB_BenefitCalc.GetFinalData((float)maxTroopCount, "calc_march_capacity", ConfigBenefitCalc.CalcOption.dragonAttack);
  38. if(maxTroopCount > remainCapacity)
  39. {
  40. maxTroopCount = (int)remainCapacity;
  41. }
  42. CityTroopsInfo cityTroops = PlayerData.inst.playerCityData.cityTroops;
  43. Hashtable troops = new Hashtable();
  44. int remain = maxTroopCount;
  45. foreach (var key in cityTroops.troops.Keys)
  46. {
  47. Unit_StatisticsInfo data = ConfigManager.inst.DB_Unit_Statistics.GetData(key);
  48. if (data == null || data.Type == "trap") continue;
  49. var troop = cityTroops.troops[key];
  50. int val = 0;
  51. if (key.Equals("infantry_t11"))
  52. {
  53. val = (int)Math.Min(troop, Math.Floor(maxTroopCount * 0.25));
  54. val = (int)Math.Min(val, remain);
  55. troops.Add(key, val);//25% or available count
  56. }
  57. else if (key.Equals("infantry_t10"))
  58. {
  59. val = (int)Math.Min(troop, Math.Floor(maxTroopCount * 0.03));
  60. val = (int)Math.Min(val, remain);
  61. troops.Add(key, val);//3% or available count
  62. }
  63. else if (key.Equals("ranged_t11"))
  64. {
  65. val = (int)Math.Min(troop, Math.Floor(maxTroopCount * 0.325));
  66. val = (int)Math.Min(val, remain);
  67. troops.Add(key, val);//32.5% or available count
  68. }
  69. else if (key.Equals("ranged_t10"))
  70. {
  71. val = (int)Math.Min(troop, Math.Floor(maxTroopCount * 0.08));
  72. val = (int)Math.Min(val, remain);
  73. troops.Add(key, val);//8% or available count
  74. }
  75. else if (key.Equals("ranged_t9"))
  76. {
  77. val = (int)Math.Min(troop, Math.Floor(maxTroopCount * 0.03));
  78. val = (int)Math.Min(val, remain);
  79. troops.Add(key, val);//3% or available count
  80. }
  81. else if (key.Equals("cavalry_t11"))
  82. {
  83. val = (int)Math.Min(troop, Math.Floor(maxTroopCount * 0.22));
  84. val = (int)Math.Min(val, remain);
  85. troops.Add(key, val);//22% or available count
  86. }
  87. else if (key.Equals("cavalry_t8"))
  88. {
  89. val = (int)Math.Min(troop, Math.Floor(maxTroopCount * 0.015));
  90. val = (int)Math.Min(val, remain);
  91. troops.Add(key, val);//1.5% or available count
  92. }
  93. else if (!key.Equals("cavalry_t10"))
  94. {
  95. val = Math.Min(1, troop);
  96. val = (int)Math.Min(val, remain);
  97. if (val > 0) troops.Add(key, val);//1 troop for all other troops
  98. }
  99. remain -= val;
  100. }
  101. if (cityTroops.troops.ContainsKey("cavalry_t10") && cityTroops.troops["cavalry_t10"] > 0)
  102. {
  103. troops.Add("cavalry_t10", Math.Min(cityTroops.troops["cavalry_t10"], remain)); // remaining for t10 cavalry
  104. }
  105. GameEngine.Instance.marchSystem.StartReinforce(location, troops, isDragonIn, new Action<bool, object>(OnStartMarchCallback));
  106. }
  107. }, true);
  108. }
Add Comment
Please, Sign In to add comment