Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name ratsounds Own Units & Weps
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Filters your own units with their own lvl / rarity instead of all
- // @author Zehnzen
- // @match https://ratsounds.github.io/saomddc/
- // @grant none
- // ==/UserScript==
- function useMyWeapons() {
- return true;
- }
- function calcRanking() {
- var myWeapons = [
- { id: "bride_sword1", name_en: "", r: 4},
- { id: "bonds_sword", name_en: "", r: 4},
- { id: "c_sword", name_en: "", r: 4},
- { id: "jr_dual", name_en: "", r: 4},
- { id: "moonlight_sword", name_en: "", r: 4},
- { id: "moonlight_sword1", name_en: "", r: 4},
- { id: "ninja_rapier1", name_en: "", r: 4},
- { id: "princess_sword", name_en: "", r: 4},
- { id: "ps_mace", name_en: "", r: 4},
- { id: "sao_dagger1", name_en: "", r: 4},
- { id: "sao_gun", name_en: "", r: 4},
- { id: "sports_dagger", name_en: "", r: 4},
- { id: "sports_sword", name_en: "", r: 4},
- { id: "steamy_dagger", name_en: "", r: 4},
- { id: "trump_dual", name_en: "", r: 4},
- { id: "cosplay_lance", name_en: "", r: 4},
- ];
- var myUnits = [
- { id: "kr_kirito", name_en: "Kirito [Black Wing]", lv: 80},
- { id: "bonds_leafa", name_en: "Leafa [The Blade - facing the feelings]", lv: 80},
- { id: "sports_leafa", name_en: "", lv: 80},
- { id: "pns_yuuki", name_en: "", lv: 80},
- { id: "jr_asuna", name_en: "", lv: 80},
- { id: "princess_asuna", name_en: "", lv: 80},
- { id: "bride_asuna", name_en: "", lv: 80},
- { id: "groom_kirito", name_en: "", lv: 80},
- { id: "swim_alice", name_en: "", lv: 80},
- { id: "steamyr_strea", name_en: "", lv: 90},
- { id: "swim_kirito", name_en: "", lv: 80},
- { id: "summer_sinon", name_en: "", lv: 80},
- { id: "os_silica", name_en: "", lv: 80},
- { id: "moonlight_asuna", name_en: "", lv: 80},
- { id: "sao_kirito", name_en: "", lv: 80},
- { id: "moonlightr_lisbeth", name_en: "", lv: 90},
- { id: "bonds_asuna", name_en: "", lv: 80},
- { id: "os_asuna", name_en: "", lv: 80},
- { id: "sao_silica", name_en: "", lv: 80},
- { id: "sao_klein", name_en: "", lv: 80},
- { id: "cm_eugeo", name_en: "", lv: 80},
- { id: "cm_kirito", name_en: "", lv: 80},
- { id: "festa_lisbeth", name_en: "", lv: 80},
- { id: "bondsr_heathcliff", name_en: "", lv: 80},
- { id: "yukata_suguha", name_en: "", lv: 80},
- { id: "rainy_sakuya", name_en: "", lv: 80},
- { id: "e16_asuna", name_en: "", lv: 80},
- { id: "e16_kirito", name_en: "", lv: 100},
- { id: "g17_yuna", name_en: "", lv: 80},
- { id: "summer_silica", name_en: "", lv: 80},
- { id: "x17r_rain", name_en: "", lv: 80},
- { id: "x17r_seven", name_en: "", lv: 80},
- ];
- //console.log('calcRanking');
- putBoss();
- ranking = [];
- cs = DC.getChar();
- // console.log(cs);
- // allweps = DC.getWeapon();
- // console.log(allweps);
- for (var i in lvr) {
- var clvr = lvr[i];
- for (var j in cs) {
- var c = cs[j];
- for (var my in myUnits) {
- if ((myUnits[my].id == c.id || myUnits[my].name_en == c.name_en) && myUnits[my].lv == clvr.lv) {
- var dcv;
- if (useMyWeapons()) {
- var allWepCombos = [];
- for (var w in myWeapons) {
- var weapon = DC.getWeapon(myWeapons[w].id);
- //Check for compatible weapon type
- if ((c.id == "bondsr_heathcliff" ? "sword" : c.type.id) != weapon.type.id || clvr.r !== myWeapons[w].r) {
- continue;
- }
- var wepCombo = DC.calcDamage(c, clvr.lv, 4, weapon, clvr.r, c.eq_atk_amr, c.eq_atk_acc, boss);
- allWepCombos.push(wepCombo);
- wepCombo.combo_speed_rate = (1 - wepCombo.sv.c.combo_speed * Math.floor(boss.combo / 10));
- wepCombo.duration = wepCombo.sv.c.s3_duration * wepCombo.combo_speed_rate;
- wepCombo.c2duration = wepCombo.sv.c.s3_c_duration ? wepCombo.sv.c.s3_c_duration : dcv.sv.c.s3_duration * wepCombo.combo_speed_rate;
- wepCombo.duration_50 = wepCombo.sv.c.s3_duration * (1 - wepCombo.sv.c.combo_speed * Math.floor(50 / 10));
- wepCombo.dps = Math.floor(wepCombo.damage / wepCombo.duration);
- wepCombo.dpm = Math.floor(getDPM(wepCombo));
- wepCombo.c2dps = Math.floor(wepCombo.damage / wepCombo.duration + wepCombo.damage / wepCombo.c2duration);
- wepCombo.duration = Math.floor(wepCombo.duration * 100) / 100;
- wepCombo.duration_50 = Math.floor(wepCombo.duration_50 * 100) / 100;
- wepCombo.c2duration = Math.floor((wepCombo.c2duration + wepCombo.duration) * 100) / 100;
- wepCombo.capacity = Math.floor(wepCombo.damage * wepCombo.sv.mp / wepCombo.sv.cost);
- wepCombo.damage = Math.floor(wepCombo.damage);
- wepCombo.mpr = Math.floor(wepCombo.sv.mpr);
- }
- if (allWepCombos.length <= 0) {
- continue;
- }
- var sortKey = elemSort.value;
- switch (sortKey) {
- case 'duration':
- case 'c2duration':
- sortObjectArray(allWepCombos, sortKey, true);
- break;
- default:
- sortObjectArray(allWepCombos, sortKey);
- break;
- }
- if (c.id == "bonds_leafa") {
- console.log(allWepCombos);
- }
- c.eq_atk_wep = allWepCombos[0].sv.wep;
- console.log(c.eq_atk_wep);
- dcv = DC.calcDamage(c, clvr.lv, 4, c.eq_atk_wep, clvr.r, c.eq_atk_amr, c.eq_atk_acc, boss);
- //console.log(dcv.sv.c.id, dcv.sv.r, dcv.sv.c.eq_atk_wep);
- } else if (clvr.r > 0) { // weapon & armor, accessory
- dcv = DC.calcDamage(c, clvr.lv, 4, c.eq_atk_wep, clvr.r, c.eq_atk_amr, c.eq_atk_acc, boss);
- } else { // no weapon & armor, accessory
- dcv = DC.calcDamage(c, clvr.lv, 4, undefined, clvr.r, undefined, undefined, boss);
- }
- ranking.push(dcv);
- dcv.combo_speed_rate = (1 - dcv.sv.c.combo_speed * Math.floor(boss.combo / 10));
- dcv.duration = dcv.sv.c.s3_duration * dcv.combo_speed_rate;
- dcv.c2duration = dcv.sv.c.s3_c_duration ? dcv.sv.c.s3_c_duration : dcv.sv.c.s3_duration * dcv.combo_speed_rate;
- dcv.duration_50 = dcv.sv.c.s3_duration * (1 - dcv.sv.c.combo_speed * Math.floor(50 / 10));
- dcv.dps = Math.floor(dcv.damage / dcv.duration);
- dcv.dpm = Math.floor(getDPM(dcv));
- dcv.c2dps = Math.floor(dcv.damage / dcv.duration + dcv.damage / dcv.c2duration);
- dcv.duration = Math.floor(dcv.duration * 100) / 100;
- dcv.duration_50 = Math.floor(dcv.duration_50 * 100) / 100;
- dcv.c2duration = Math.floor((dcv.c2duration + dcv.duration) * 100) / 100;
- dcv.capacity = Math.floor(dcv.damage * dcv.sv.mp / dcv.sv.cost);
- dcv.damage = Math.floor(dcv.damage);
- dcv.mpr = Math.floor(dcv.sv.mpr);
- }
- }
- }
- }
- var sortKey = elemSort.value;
- switch (sortKey) {
- case 'duration':
- case 'c2duration':
- sortObjectArray(ranking, sortKey, true);
- break;
- default:
- sortObjectArray(ranking, sortKey);
- break;
- }
- //console.log('ranking',ranking);
- }
- function showRanking() {
- var filter = getFilter();
- elemRanking.html('');
- var filtered = [];
- var score_key = elemSort.value;
- var rank = 0;
- var max = 0;
- var min = Number.MAX_VALUE;
- for (var i = 0; i < ranking.length; i++) {
- var dcv = ranking[i];
- 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])) {
- rank++;
- dcv.rank = zero(rank, 3);
- dcv.id = i;
- filtered.push(dcv);
- max = Math.max(max, dcv.capacity);
- min = Math.min(min, dcv.dps);
- }
- }
- var dif = max * 2 / 3 - min;
- var offset = 30;
- var remains = 100 - offset;
- for (var i = 0; i < filtered.length; i++) {
- var dcv = filtered[i];
- dcv.p_dps = offset + remains * (dcv.dps - min) / dif;
- dcv.p_damage = offset + remains * (dcv.damage - min) / dif;
- dcv.p_capacity = offset + remains * (dcv.capacity * 2 / 3 - min) / dif;
- dcv.score = dcv[score_key];
- dcv.color = dcv.sv.c.element.color;
- dcv.cname = dcv.sv.c.cname['name' + lang];
- var html = mapperInfo.map(dcv);
- elemRanking.append(DO.new(html));
- }
- }
- addJS_Node (calcRanking);
- addJS_Node (showRanking);
- addJS_Node (useMyWeapons);
- function addJS_Node (text, s_URL, funcToRun, runOnLoad) {
- var D = document;
- var scriptNode = D.createElement ('script');
- if (runOnLoad) {
- scriptNode.addEventListener ("load", runOnLoad, false);
- }
- scriptNode.type = "text/javascript";
- if (text) scriptNode.textContent = text;
- if (s_URL) scriptNode.src = s_URL;
- if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
- var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
- targ.appendChild (scriptNode);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement