MAPPING.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. import json
  2. import math
  3. MAINSTAT = json.loads("""
  4. {
  5. "mainstat": {
  6. "1": {
  7. "max": {
  8. "1": 804,
  9. "2": 1092,
  10. "3": 1380,
  11. "4": 1704,
  12. "5": 2088,
  13. "6": 2448
  14. }
  15. },
  16. "2": {
  17. "max": {
  18. "1": 18,
  19. "2": 20,
  20. "3": 38,
  21. "4": 43,
  22. "5": 51,
  23. "6": 63
  24. }
  25. },
  26. "3": {
  27. "max": {
  28. "1": 54,
  29. "2": 74,
  30. "3": 93,
  31. "4": 113,
  32. "5": 135,
  33. "6": 160
  34. }
  35. },
  36. "4": {
  37. "max": {
  38. "1": 18,
  39. "2": 20,
  40. "3": 38,
  41. "4": 43,
  42. "5": 51,
  43. "6": 63
  44. }
  45. },
  46. "5": {
  47. "max": {
  48. "1": 54,
  49. "2": 74,
  50. "3": 93,
  51. "4": 113,
  52. "5": 135,
  53. "6": 160
  54. }
  55. },
  56. "6": {
  57. "max": {
  58. "1": 18,
  59. "2": 20,
  60. "3": 38,
  61. "4": 43,
  62. "5": 51,
  63. "6": 63
  64. }
  65. },
  66. "8": {
  67. "max": {
  68. "1": 18,
  69. "2": 19,
  70. "3": 25,
  71. "4": 30,
  72. "5": 39,
  73. "6": 42
  74. }
  75. },
  76. "9": {
  77. "max": {
  78. "1": 18,
  79. "2": 20,
  80. "3": 37,
  81. "4": 41,
  82. "5": 47,
  83. "6": 58
  84. }
  85. },
  86. "10": {
  87. "max": {
  88. "1": 20,
  89. "2": 37,
  90. "3": 43,
  91. "4": 58,
  92. "5": 65,
  93. "6": 80
  94. }
  95. },
  96. "11": {
  97. "max": {
  98. "1": 18,
  99. "2": 20,
  100. "3": 38,
  101. "4": 44,
  102. "5": 51,
  103. "6": 64
  104. }
  105. },
  106. "12": {
  107. "max": {
  108. "1": 18,
  109. "2": 20,
  110. "3": 38,
  111. "4": 44,
  112. "5": 51,
  113. "6": 64
  114. }
  115. }
  116. },
  117. "substat": {
  118. "1": {
  119. "max": {
  120. "1": 300,
  121. "2": 525,
  122. "3": 825,
  123. "4": 1125,
  124. "5": 1500,
  125. "6": 1875
  126. }
  127. },
  128. "2": {
  129. "max": {
  130. "1": 10,
  131. "2": 15,
  132. "3": 25,
  133. "4": 30,
  134. "5": 35,
  135. "6": 40
  136. }
  137. },
  138. "3": {
  139. "max": {
  140. "1": 20,
  141. "2": 25,
  142. "3": 40,
  143. "4": 50,
  144. "5": 75,
  145. "6": 100
  146. }
  147. },
  148. "4": {
  149. "max": {
  150. "1": 10,
  151. "2": 15,
  152. "3": 25,
  153. "4": 30,
  154. "5": 35,
  155. "6": 40
  156. }
  157. },
  158. "5": {
  159. "max": {
  160. "1": 20,
  161. "2": 25,
  162. "3": 40,
  163. "4": 50,
  164. "5": 75,
  165. "6": 100
  166. }
  167. },
  168. "6": {
  169. "max": {
  170. "1": 10,
  171. "2": 15,
  172. "3": 25,
  173. "4": 30,
  174. "5": 35,
  175. "6": 40
  176. }
  177. },
  178. "8": {
  179. "max": {
  180. "1": 5,
  181. "2": 10,
  182. "3": 15,
  183. "4": 20,
  184. "5": 25,
  185. "6": 30
  186. }
  187. },
  188. "9": {
  189. "max": {
  190. "1": 5,
  191. "2": 10,
  192. "3": 15,
  193. "4": 20,
  194. "5": 25,
  195. "6": 30
  196. }
  197. },
  198. "10": {
  199. "max": {
  200. "1": 10,
  201. "2": 15,
  202. "3": 20,
  203. "4": 25,
  204. "5": 25,
  205. "6": 35
  206. }
  207. },
  208. "11": {
  209. "max": {
  210. "1": 10,
  211. "2": 15,
  212. "3": 20,
  213. "4": 25,
  214. "5": 35,
  215. "6": 40
  216. }
  217. },
  218. "12": {
  219. "max": {
  220. "1": 10,
  221. "2": 15,
  222. "3": 20,
  223. "4": 25,
  224. "5": 35,
  225. "6": 40
  226. }
  227. }
  228. }
  229. }
  230. """)
  231. SUBSTAT = json.loads("""
  232. {
  233. "substat": {
  234. "1": {
  235. "max": {
  236. "1": 300,
  237. "2": 525,
  238. "3": 825,
  239. "4": 1125,
  240. "5": 1500,
  241. "6": 1875
  242. }
  243. },
  244. "2": {
  245. "max": {
  246. "1": 10,
  247. "2": 15,
  248. "3": 25,
  249. "4": 30,
  250. "5": 35,
  251. "6": 40
  252. }
  253. },
  254. "3": {
  255. "max": {
  256. "1": 20,
  257. "2": 25,
  258. "3": 40,
  259. "4": 50,
  260. "5": 75,
  261. "6": 100
  262. }
  263. },
  264. "4": {
  265. "max": {
  266. "1": 10,
  267. "2": 15,
  268. "3": 25,
  269. "4": 30,
  270. "5": 35,
  271. "6": 40
  272. }
  273. },
  274. "5": {
  275. "max": {
  276. "1": 20,
  277. "2": 25,
  278. "3": 40,
  279. "4": 50,
  280. "5": 75,
  281. "6": 100
  282. }
  283. },
  284. "6": {
  285. "max": {
  286. "1": 10,
  287. "2": 15,
  288. "3": 25,
  289. "4": 30,
  290. "5": 35,
  291. "6": 40
  292. }
  293. },
  294. "8": {
  295. "max": {
  296. "1": 5,
  297. "2": 10,
  298. "3": 15,
  299. "4": 20,
  300. "5": 25,
  301. "6": 30
  302. }
  303. },
  304. "9": {
  305. "max": {
  306. "1": 5,
  307. "2": 10,
  308. "3": 15,
  309. "4": 20,
  310. "5": 25,
  311. "6": 30
  312. }
  313. },
  314. "10": {
  315. "max": {
  316. "1": 10,
  317. "2": 15,
  318. "3": 20,
  319. "4": 25,
  320. "5": 25,
  321. "6": 35
  322. }
  323. },
  324. "11": {
  325. "max": {
  326. "1": 10,
  327. "2": 15,
  328. "3": 20,
  329. "4": 25,
  330. "5": 35,
  331. "6": 40
  332. }
  333. },
  334. "12": {
  335. "max": {
  336. "1": 10,
  337. "2": 15,
  338. "3": 20,
  339. "4": 25,
  340. "5": 35,
  341. "6": 40
  342. }
  343. }
  344. }
  345. }
  346. """)
  347. """
  348. Calculates a rune current and max efficiency.
  349. :param rune: JSON woth rune info.
  350. :return: current, max efficiency.
  351. """
  352. def calculate_efficiency(rune):
  353. #getRuneEfficiency(rune, toFixed = 2) {
  354. ratio = 0.0;
  355. # Get actual stars (ancient are +10)
  356. r_class = rune["class"]
  357. if r_class > 10:
  358. r_class -= 10
  359. r_class = str(r_class)
  360. # Main stat
  361. ratio += MAINSTAT["mainstat"][str(rune["pri_eff"][0])]["max"][r_class] / MAINSTAT["mainstat"][str(rune["pri_eff"][0])]["max"]["6"]
  362. # Innate stat
  363. if (rune["prefix_eff"] and rune["prefix_eff"][0] > 0):
  364. ratio += rune["prefix_eff"][1] / SUBSTAT["substat"][str(rune["prefix_eff"][0])]["max"]["6"];
  365. # Sub stats
  366. for substat in rune["sec_eff"]:
  367. value = substat[1]
  368. if "3" in substat and substat[3] > 0:
  369. value += substat[3]
  370. ratio += (value / SUBSTAT["substat"][str(substat[0])]["max"]["6"])
  371. efficiency = (ratio / 2.8) * 100;
  372. return ((ratio / 2.8) * 100), (efficiency + ((max(math.ceil((12 - rune["upgrade_curr"]) / 3.0), 0) * 0.2) / 2.8) * 100)