Advertisement
Guest User

xx

a guest
Jul 26th, 2014
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.42 KB | None | 0 0
  1. internal void CreateStatusAtributes(Client.GameClient client)
  2. {
  3. uint oldInner_Strength = Inner_Strength;
  4. Inner_Strength = 0;
  5. foreach (var nstage in ArrayStages)
  6. {
  7. if (!nstage.Activate) continue;
  8.  
  9. var atr = nstage.ArrayStars.Where(p => p.UID != 0).ToArray();
  10.  
  11. byte count_doble = 0;
  12.  
  13. Dictionary<uint, List<Stage.Star>> alignementstars = new Dictionary<uint, List<Stage.Star>>();
  14. List<Stage.Star> normalstarts = new List<Stage.Star>();
  15. ushort counts_alignements = 0;
  16.  
  17. for (byte x = 0; x < atr.Length; x++)
  18. {
  19. var atribut = atr[x];
  20. count_doble = 0;
  21. bool wasadd = false;
  22. for (byte y = (byte)(x + 1); y < atr.Length; y++)
  23. {
  24. var atr2nd = atr[y];
  25. if (atr2nd.Typ == atribut.Typ)
  26. {
  27. if (!wasadd)
  28. {
  29. if (!alignementstars.ContainsKey(counts_alignements))
  30. {
  31. alignementstars.Add(counts_alignements, new List<Stage.Star>());
  32. alignementstars[counts_alignements].Add(atribut);
  33. }
  34. }
  35. if (!alignementstars.ContainsKey(counts_alignements))
  36. {
  37. alignementstars.Add(counts_alignements, new List<Stage.Star>());
  38. alignementstars[counts_alignements].Add(atr2nd);
  39. }
  40. else
  41. alignementstars[counts_alignements].Add(atr2nd);
  42. wasadd = true;
  43. x = y;
  44. count_doble++;
  45. }
  46. else
  47. {
  48. break;
  49. }
  50. }
  51. uint counts = 1;
  52. if (count_doble != 0)
  53. {
  54. counts = (byte)(count_doble + 1);
  55. counts_alignements++;
  56. }
  57. if (counts == 1)
  58. normalstarts.Add(atribut);
  59. byte percent = (byte)Database.JianHuTable.AlignmentExtraPoints(count_doble);
  60. Database.JianHuTable.Atribut Atri_bas = Database.JianHuTable.Atributes[atribut.UID];
  61. if (client != null)
  62. ComputeStatus(client, (Stage.AtributesType)Atri_bas.Type, (ushort)((Atri_bas.Power + (Atri_bas.Power * percent) / 100) * counts));
  63. count_doble = 0;
  64. }
  65.  
  66. foreach (var allignement in alignementstars.Values)
  67. CalculateInner_StrengthAlignments(allignement);
  68. for (int x = 0; x < normalstarts.Count; x++)
  69. {
  70. Inner_Strength += Database.JianHuTable.GetStatusPoints(normalstarts[x].Level);
  71. }
  72. }
  73. if (oldInner_Strength != Inner_Strength)
  74. JiangHuRanking.UpdateRank(this);
  75. }
  76. internal void CalculateInner_StrengthAlignments(List<Stage.Star> collection)
  77. {
  78. ushort points = 0;
  79. for (int x = 0; x < collection.Count; x++)
  80. {
  81. points += Database.JianHuTable.GetStatusPoints(collection[x].Level);
  82. }
  83. if (collection.Count > 0)
  84. Inner_Strength += (uint)(points + (points * (GetPercentALignment(collection.Count) * 10) / 100));
  85. }
  86. internal byte GetPercentALignment(int count)
  87. {
  88. if (count < 8)
  89. return (byte)(count - 1);
  90. if (count == 8)
  91. return (byte)count;
  92. else
  93. return (byte)(count + 1);
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement