Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.01 KB | None | 0 0
  1. // ==UserScript==
  2. // @name ratsounds Own Units & Weps
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Filters your own units with their own lvl + your own weapons and their rarity if set to true in the useMyWeapons function
  6. // @author Zehnzen
  7. // @match https://ratsounds.github.io/saomddc/
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. function useMyWeapons() {
  12. return true;
  13. }
  14.  
  15. function calcRanking() {
  16. var myWeapons = [
  17. { id: "bride_sword1", name_en: "", r: 4},
  18. { id: "bonds_sword", name_en: "", r: 4},
  19. { id: "c_sword", name_en: "", r: 4},
  20. { id: "jr_dual", name_en: "", r: 4},
  21. { id: "moonlight_sword", name_en: "", r: 4},
  22. { id: "moonlight_sword1", name_en: "", r: 4},
  23. { id: "ninja_rapier1", name_en: "", r: 4},
  24. { id: "princess_sword", name_en: "", r: 4},
  25. { id: "ps_mace", name_en: "", r: 4},
  26. { id: "sao_dagger1", name_en: "", r: 4},
  27. { id: "sao_gun", name_en: "", r: 4},
  28. { id: "sports_dagger", name_en: "", r: 4},
  29. { id: "sports_sword", name_en: "", r: 4},
  30. { id: "steamy_dagger", name_en: "", r: 4},
  31. { id: "trump_dual", name_en: "", r: 4},
  32. { id: "cosplay_lance", name_en: "", r: 4},
  33. ];
  34. var myUnits = [
  35. { id: "kr_kirito", name_en: "Kirito [Black Wing]", lv: 80},
  36. { id: "bonds_leafa", name_en: "Leafa [The Blade - facing the feelings]", lv: 80},
  37. { id: "sports_leafa", name_en: "", lv: 80},
  38. { id: "pns_yuuki", name_en: "", lv: 80},
  39. { id: "jr_asuna", name_en: "", lv: 80},
  40. { id: "princess_asuna", name_en: "", lv: 80},
  41. { id: "bride_asuna", name_en: "", lv: 80},
  42. { id: "groom_kirito", name_en: "", lv: 80},
  43. { id: "swim_alice", name_en: "", lv: 80},
  44. { id: "steamyr_strea", name_en: "", lv: 90},
  45. { id: "swim_kirito", name_en: "", lv: 80},
  46. { id: "summer_sinon", name_en: "", lv: 80},
  47. { id: "os_silica", name_en: "", lv: 80},
  48. { id: "moonlight_asuna", name_en: "", lv: 80},
  49. { id: "sao_kirito", name_en: "", lv: 80},
  50. { id: "moonlightr_lisbeth", name_en: "", lv: 90},
  51. { id: "bonds_asuna", name_en: "", lv: 80},
  52. { id: "os_asuna", name_en: "", lv: 80},
  53. { id: "sao_silica", name_en: "", lv: 80},
  54. { id: "sao_klein", name_en: "", lv: 80},
  55. { id: "cm_eugeo", name_en: "", lv: 80},
  56. { id: "cm_kirito", name_en: "", lv: 80},
  57. { id: "festa_lisbeth", name_en: "", lv: 80},
  58. { id: "bondsr_heathcliff", name_en: "", lv: 80},
  59. { id: "yukata_suguha", name_en: "", lv: 80},
  60. { id: "rainy_sakuya", name_en: "", lv: 80},
  61. { id: "e16_asuna", name_en: "", lv: 80},
  62. { id: "e16_kirito", name_en: "", lv: 100},
  63. { id: "g17_yuna", name_en: "", lv: 80},
  64. { id: "summer_silica", name_en: "", lv: 80},
  65. { id: "x17r_rain", name_en: "", lv: 80},
  66. { id: "x17r_seven", name_en: "", lv: 80},
  67. ];
  68.  
  69. //console.log('calcRanking');
  70. putBoss();
  71. ranking = [];
  72. cs = DC.getChar();
  73. // console.log(cs);
  74. // allweps = DC.getWeapon();
  75. // console.log(allweps);
  76.  
  77. for (var i in lvr) {
  78. var clvr = lvr[i];
  79.  
  80. for (var j in cs) {
  81. var c = cs[j];
  82.  
  83. for (var my in myUnits) {
  84. if ((myUnits[my].id == c.id || myUnits[my].name_en == c.name_en) && myUnits[my].lv == clvr.lv) {
  85. var dcv;
  86.  
  87. if (useMyWeapons()) {
  88. var allWepCombos = [];
  89. for (var w in myWeapons) {
  90. var weapon = DC.getWeapon(myWeapons[w].id);
  91. //Check for compatible weapon type
  92. if ((c.id == "bondsr_heathcliff" ? "sword" : c.type.id) != weapon.type.id || clvr.r !== myWeapons[w].r) {
  93. continue;
  94. }
  95.  
  96. var wepCombo = DC.calcDamage(c, clvr.lv, 4, weapon, clvr.r, c.eq_atk_amr, c.eq_atk_acc, boss);
  97. allWepCombos.push(wepCombo);
  98. wepCombo.combo_speed_rate = (1 - wepCombo.sv.c.combo_speed * Math.floor(boss.combo / 10));
  99. wepCombo.duration = wepCombo.sv.c.s3_duration * wepCombo.combo_speed_rate;
  100. wepCombo.c2duration = wepCombo.sv.c.s3_c_duration ? wepCombo.sv.c.s3_c_duration : dcv.sv.c.s3_duration * wepCombo.combo_speed_rate;
  101. wepCombo.duration_50 = wepCombo.sv.c.s3_duration * (1 - wepCombo.sv.c.combo_speed * Math.floor(50 / 10));
  102. wepCombo.dps = Math.floor(wepCombo.damage / wepCombo.duration);
  103. wepCombo.dpm = Math.floor(getDPM(wepCombo));
  104. wepCombo.c2dps = Math.floor(wepCombo.damage / wepCombo.duration + wepCombo.damage / wepCombo.c2duration);
  105. wepCombo.duration = Math.floor(wepCombo.duration * 100) / 100;
  106. wepCombo.duration_50 = Math.floor(wepCombo.duration_50 * 100) / 100;
  107. wepCombo.c2duration = Math.floor((wepCombo.c2duration + wepCombo.duration) * 100) / 100;
  108. wepCombo.capacity = Math.floor(wepCombo.damage * wepCombo.sv.mp / wepCombo.sv.cost);
  109. wepCombo.damage = Math.floor(wepCombo.damage);
  110. wepCombo.mpr = Math.floor(wepCombo.sv.mpr);
  111. }
  112.  
  113. if (allWepCombos.length <= 0) {
  114. continue;
  115. }
  116.  
  117. var sortKey = elemSort.value;
  118. switch (sortKey) {
  119. case 'duration':
  120. case 'c2duration':
  121. sortObjectArray(allWepCombos, sortKey, true);
  122. break;
  123. default:
  124. sortObjectArray(allWepCombos, sortKey);
  125. break;
  126. }
  127. if (c.id == "bonds_leafa") {
  128. console.log(allWepCombos);
  129. }
  130. c.eq_atk_wep = allWepCombos[0].sv.wep;
  131. console.log(c.eq_atk_wep);
  132. dcv = DC.calcDamage(c, clvr.lv, 4, c.eq_atk_wep, clvr.r, c.eq_atk_amr, c.eq_atk_acc, boss);
  133. //console.log(dcv.sv.c.id, dcv.sv.r, dcv.sv.c.eq_atk_wep);
  134.  
  135. } else if (clvr.r > 0) { // weapon & armor, accessory
  136. dcv = DC.calcDamage(c, clvr.lv, 4, c.eq_atk_wep, clvr.r, c.eq_atk_amr, c.eq_atk_acc, boss);
  137. } else { // no weapon & armor, accessory
  138. dcv = DC.calcDamage(c, clvr.lv, 4, undefined, clvr.r, undefined, undefined, boss);
  139. }
  140.  
  141. ranking.push(dcv);
  142. dcv.combo_speed_rate = (1 - dcv.sv.c.combo_speed * Math.floor(boss.combo / 10));
  143. dcv.duration = dcv.sv.c.s3_duration * dcv.combo_speed_rate;
  144. dcv.c2duration = dcv.sv.c.s3_c_duration ? dcv.sv.c.s3_c_duration : dcv.sv.c.s3_duration * dcv.combo_speed_rate;
  145. dcv.duration_50 = dcv.sv.c.s3_duration * (1 - dcv.sv.c.combo_speed * Math.floor(50 / 10));
  146. dcv.dps = Math.floor(dcv.damage / dcv.duration);
  147. dcv.dpm = Math.floor(getDPM(dcv));
  148. dcv.c2dps = Math.floor(dcv.damage / dcv.duration + dcv.damage / dcv.c2duration);
  149. dcv.duration = Math.floor(dcv.duration * 100) / 100;
  150. dcv.duration_50 = Math.floor(dcv.duration_50 * 100) / 100;
  151. dcv.c2duration = Math.floor((dcv.c2duration + dcv.duration) * 100) / 100;
  152. dcv.capacity = Math.floor(dcv.damage * dcv.sv.mp / dcv.sv.cost);
  153. dcv.damage = Math.floor(dcv.damage);
  154. dcv.mpr = Math.floor(dcv.sv.mpr);
  155. }
  156. }
  157. }
  158. }
  159.  
  160. var sortKey = elemSort.value;
  161. switch (sortKey) {
  162. case 'duration':
  163. case 'c2duration':
  164. sortObjectArray(ranking, sortKey, true);
  165. break;
  166. default:
  167. sortObjectArray(ranking, sortKey);
  168. break;
  169. }
  170. //console.log('ranking',ranking);
  171. }
  172.  
  173. function showRanking() {
  174. var filter = getFilter();
  175. elemRanking.html('');
  176. var filtered = [];
  177. var score_key = elemSort.value;
  178. var rank = 0;
  179.  
  180. var max = 0;
  181. var min = Number.MAX_VALUE;
  182. for (var i = 0; i < ranking.length; i++) {
  183. var dcv = ranking[i];
  184. if (match(dcv.sv.c.meta, filter.keyword) && (useMyWeapons ? true : filter.lv[dcv.sv.lv] && filter.r[dcv.sv.r] && filter.type[dcv.sv.c.type.id])) {
  185. rank++;
  186. dcv.rank = zero(rank, 3);
  187. dcv.id = i;
  188. filtered.push(dcv);
  189. max = Math.max(max, dcv.capacity);
  190. min = Math.min(min, dcv.dps);
  191. }
  192. }
  193. var dif = max * 2 / 3 - min;
  194. var offset = 30;
  195. var remains = 100 - offset;
  196. for (var i = 0; i < filtered.length; i++) {
  197. var dcv = filtered[i];
  198. dcv.p_dps = offset + remains * (dcv.dps - min) / dif;
  199. dcv.p_damage = offset + remains * (dcv.damage - min) / dif;
  200. dcv.p_capacity = offset + remains * (dcv.capacity * 2 / 3 - min) / dif;
  201. dcv.score = dcv[score_key];
  202. dcv.color = dcv.sv.c.element.color;
  203. dcv.cname = dcv.sv.c.cname['name' + lang];
  204. var html = mapperInfo.map(dcv);
  205. elemRanking.append(DO.new(html));
  206. }
  207. }
  208.  
  209. addJS_Node (calcRanking);
  210. addJS_Node (showRanking);
  211. addJS_Node (useMyWeapons);
  212.  
  213. function addJS_Node (text, s_URL, funcToRun, runOnLoad) {
  214. var D = document;
  215. var scriptNode = D.createElement ('script');
  216. if (runOnLoad) {
  217. scriptNode.addEventListener ("load", runOnLoad, false);
  218. }
  219. scriptNode.type = "text/javascript";
  220. if (text) scriptNode.textContent = text;
  221. if (s_URL) scriptNode.src = s_URL;
  222. if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
  223.  
  224. var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
  225. targ.appendChild (scriptNode);
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement