Last active
December 4, 2020 00:09
-
-
Save Thestias/ee04bc71dc5ddde94ef635cbc740a81d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==UserScript== | |
| // @name Equipment More Info | |
| // @namespace http://tampermonkey.net/ | |
| // @version 0.3 | |
| // @description try to take over the world! | |
| // @author ConraF / Sadavir | |
| // @match *.e-sim.org/showEquipment.html?id=* | |
| // @grant none | |
| // ==/UserScript== | |
| (function() { | |
| let equipmentDescContainer = document.querySelectorAll('.dashedLine')[1]; | |
| let equipment_id = (document.querySelector('.testDivblue').querySelector('a').text.replace('#', '')); | |
| let url = `https://${window.location.host.split('.')[0]}.e-sim.org/apiEquipmentById.html?id=${equipment_id}`; | |
| let div_eq_data_container = document.createElement('div'); | |
| equipmentDescContainer.insertAdjacentElement('beforebegin', div_eq_data_container); | |
| $.ajax({ | |
| type:'GET', | |
| url:url, | |
| success: function(msg) { | |
| let eq_data = JSON.parse(msg); | |
| let eq_quality = eq_data.EqInfo[0].quality; | |
| let server = window.location.host.split('.')[0]; | |
| let parameters_object = eq_data.EqInfo[0].Parameters[0]; | |
| let parameters_array_of_keys = Object.keys(parameters_object); | |
| let first_stat = calculate_eq_data(eq_quality, parameters_array_of_keys[0], parameters_object[parameters_array_of_keys[0]]); | |
| let second_stat = calculate_eq_data(eq_quality, parameters_array_of_keys[1], parameters_object[parameters_array_of_keys[1]]); | |
| let first_stat_value = precise(first_stat[0]); | |
| let second_stat_value = precise(second_stat[0]); | |
| let third_stat; | |
| if (parameters_array_of_keys.length >= 3) { | |
| third_stat = calculate_eq_data(eq_quality, parameters_array_of_keys[2], parameters_object[parameters_array_of_keys[2]]) | |
| let third_stat_value = precise(third_stat[0]) | |
| div_eq_data_container.innerHTML = create_table_data( | |
| parameters_array_of_keys[0], first_stat_value, | |
| parameters_array_of_keys[1], second_stat_value, | |
| first_stat[1], second_stat[1], | |
| eq_data.EqInfo[0].ownerId, server, | |
| parameters_array_of_keys[2], third_stat_value, third_stat[1] | |
| ) | |
| } else { | |
| div_eq_data_container.innerHTML = create_table_data( | |
| parameters_array_of_keys[0], first_stat_value, | |
| parameters_array_of_keys[1], second_stat_value, | |
| first_stat[1], second_stat[1], | |
| eq_data.EqInfo[0].ownerId, server | |
| )} | |
| } | |
| }) | |
| function calculate_eq_data(quality, parameter, value) { | |
| let maximun_for_stat; | |
| let minimun_for_stat; | |
| switch (parameter) { | |
| case 'Increased maximum damage': | |
| if (quality === 1) {maximun_for_stat = 2; minimun_for_stat = 0} | |
| if (quality === 2) {maximun_for_stat = 4; minimun_for_stat = 2} | |
| if (quality === 3) {maximun_for_stat = 6; minimun_for_stat = 4} | |
| if (quality === 4) {maximun_for_stat = 8; minimun_for_stat = 6} | |
| if (quality === 5) {maximun_for_stat = 12; minimun_for_stat = 8} | |
| if (quality === 6) {maximun_for_stat = 16; minimun_for_stat = 12} | |
| if (quality === 7) {maximun_for_stat = 20; minimun_for_stat = 16} | |
| break | |
| case 'Chance to avoid damage': | |
| case 'Increased damage': | |
| case 'Increased critical hit chance': | |
| if (quality === 1) {maximun_for_stat = 1; minimun_for_stat = 0} | |
| if (quality === 2) {maximun_for_stat = 2; minimun_for_stat = 1} | |
| if (quality === 3) {maximun_for_stat = 3; minimun_for_stat = 2} | |
| if (quality === 4) {maximun_for_stat = 4; minimun_for_stat = 3} | |
| if (quality === 5) {maximun_for_stat = 6; minimun_for_stat = 4} | |
| if (quality === 6) {maximun_for_stat = 8; minimun_for_stat = 6} | |
| if (quality === 7) {maximun_for_stat = 8.5; minimun_for_stat = 8} | |
| break | |
| case 'Increased economy skill': | |
| if (quality === 1) {maximun_for_stat = 0.2; minimun_for_stat = 0.1} | |
| if (quality === 2) {maximun_for_stat = 0.4; minimun_for_stat = 0.2} | |
| if (quality === 3) {maximun_for_stat = 0.6; minimun_for_stat = 0.4} | |
| if (quality === 4) {maximun_for_stat = 0.8; minimun_for_stat = 0.6} | |
| if (quality === 5) {maximun_for_stat = 1.1; minimun_for_stat = 0.8} | |
| if (quality === 6) {maximun_for_stat = 1.4; minimun_for_stat = 1.1} | |
| if (quality === 7) {maximun_for_stat = 1.6; minimun_for_stat = 1.4} | |
| break | |
| case 'Miss chance reduction': | |
| if (quality <= 5) {maximun_for_stat = (quality * 1.5); minimun_for_stat = (quality - 1) * 1.5} | |
| if (quality === 6) {maximun_for_stat = 9; minimun_for_stat = 7.5} | |
| if (quality === 7) {maximun_for_stat = 9.5; minimun_for_stat = 9} | |
| break | |
| case 'Increased hit': | |
| if (quality === 1) {maximun_for_stat = 40; minimun_for_stat = 20} | |
| if (quality === 2) {maximun_for_stat = 50; minimun_for_stat = 40} | |
| if (quality === 3) {maximun_for_stat = 60; minimun_for_stat = 50} | |
| if (quality === 4) {maximun_for_stat = 70; minimun_for_stat = 60} | |
| if (quality === 5) {maximun_for_stat = 90; minimun_for_stat = 70} | |
| if (quality === 6) {maximun_for_stat = 130; minimun_for_stat = 90} | |
| if (quality === 7) {maximun_for_stat = 150; minimun_for_stat = 130} | |
| break | |
| case 'Increased strength': | |
| if (quality === 1) {maximun_for_stat = 16; minimun_for_stat = 10} | |
| if (quality === 2) {maximun_for_stat = 20; minimun_for_stat = 16} | |
| if (quality === 3) {maximun_for_stat = 24; minimun_for_stat = 20} | |
| if (quality === 4) {maximun_for_stat = 28; minimun_for_stat = 24} | |
| if (quality === 5) {maximun_for_stat = 40; minimun_for_stat = 28} | |
| if (quality === 6) {maximun_for_stat = 60; minimun_for_stat = 40} | |
| if (quality === 7) {maximun_for_stat = 80; minimun_for_stat = 60} | |
| break | |
| case 'Less weapons for Berserk': | |
| if (quality <= 5) {maximun_for_stat = 4 + (quality - 1); minimun_for_stat = 3 + (quality - 1)} | |
| if (quality === 6) {maximun_for_stat = 10; minimun_for_stat = 8} | |
| if (quality === 7) {maximun_for_stat = 10; minimun_for_stat = 10.5} | |
| break | |
| case 'Find a weapon': | |
| if (quality <= 6) {maximun_for_stat = 2 + (0.5 * quality); minimun_for_stat = 1.5 + (0.5 * quality)} | |
| if (quality === 7) {maximun_for_stat = 6; minimun_for_stat = 5.5} | |
| break | |
| case 'Improved split': | |
| if (quality === 7) {maximun_for_stat = 5; minimun_for_stat = 4} | |
| break | |
| case 'Bonus iron production': | |
| case 'Bonus oil production': | |
| case 'Bonus wood production': | |
| case 'Bonus grain production': | |
| if (quality === 7) {maximun_for_stat = 3; minimun_for_stat = 2.5} | |
| break | |
| case 'Chance for free flight': | |
| if (quality === 1) {maximun_for_stat = 1; minimun_for_stat = 0.5} | |
| if (quality === 2) {maximun_for_stat = 1.5; minimun_for_stat = 1} | |
| if (quality === 3) {maximun_for_stat = 2; minimun_for_stat = 1.5} | |
| if (quality === 4) {maximun_for_stat = 3; minimun_for_stat = 2} | |
| if (quality === 5) {maximun_for_stat = 4; minimun_for_stat = 3} | |
| if (quality === 6) {maximun_for_stat = 5.5; minimun_for_stat = 4} | |
| if (quality === 7) {maximun_for_stat = 6; minimun_for_stat = 5.5} | |
| break | |
| } | |
| return [(100-((maximun_for_stat - value) / (maximun_for_stat - minimun_for_stat)) * 100), calculate_upgrade(maximun_for_stat, value, minimun_for_stat)] | |
| } | |
| function calculate_upgrade(maximum_value_for_stat, current_value, minimum_value_for_stat) { | |
| let upgrade_values = []; | |
| let first_above_ninety = true; | |
| let new_upgrade_value; | |
| let calculate_if_above_ninety; | |
| current_value = parseFloat(current_value); | |
| upgrade_values.push(current_value) | |
| for (let i = 0; i < 5; i++) { | |
| new_upgrade_value = upgrade_values[upgrade_values.length - 1]; | |
| if (typeof new_upgrade_value === 'string') {upgrade_values.push('Max Allowed'); continue} | |
| /* New Upgrade Calculation */ | |
| new_upgrade_value = (maximum_value_for_stat - new_upgrade_value) / 3 + upgrade_values[upgrade_values.length - 1]; | |
| /* Calculates if the new upgrade is above 90% */ | |
| calculate_if_above_ninety = 100 - ((maximum_value_for_stat - new_upgrade_value) / (maximum_value_for_stat - minimum_value_for_stat)) * 100 | |
| if (calculate_if_above_ninety >= 90) { | |
| if (first_above_ninety === true) { | |
| first_above_ninety = false | |
| new_upgrade_value = maximum_value_for_stat - (90 - 100) * (maximum_value_for_stat - minimum_value_for_stat) / (-100) | |
| if (new_upgrade_value <= upgrade_values[0]) {upgrade_values.push('Max Allowed'); continue} | |
| else {upgrade_values.push(parseFloat(new_upgrade_value))} | |
| } | |
| else {upgrade_values.push('Max Allowed')} | |
| } | |
| else { | |
| upgrade_values.push(parseFloat(new_upgrade_value)) | |
| } | |
| } | |
| return upgrade_values | |
| } | |
| function create_table_data( | |
| parameter_uno, parameter_uno_value, | |
| parameter_dos, parameter_dos_value, | |
| array_upgrade_uno, array_upgrade_dos, | |
| owner_id, server, | |
| parameter_tres = 'empty', parameter_tres_value, array_upgrade_tres) { | |
| let promedio_percentaje; | |
| if (parameter_tres != 'empty') { | |
| array_upgrade_tres = array_upgrade_tres.map(precise) | |
| promedio_percentaje = precise(((parseFloat(parameter_uno_value) + parseFloat(parameter_dos_value) + parseFloat(parameter_tres_value)) / 3)) | |
| } else {promedio_percentaje = precise(((parseFloat(parameter_uno_value) + parseFloat(parameter_dos_value)) / 2))} | |
| array_upgrade_dos = array_upgrade_dos.map(precise) | |
| array_upgrade_uno = array_upgrade_uno.map(precise) | |
| let container_div = document.createElement('div') | |
| container_div.innerHTML = ` | |
| <h3>Overall quality: ${promedio_percentaje}%</h3> | |
| ` | |
| if (owner_id != null) {container_div.innerHTML += `<a href="https://${server}.e-sim.org/profile.html?id=${owner_id}">Owner</a>`} | |
| let table_data = document.createElement('table') | |
| table_data.className = 'bbTable' | |
| table_data.style = 'margin: auto;px;' | |
| let tbody_data = document.createElement('tbody') | |
| if (parameter_tres === 'empty') { | |
| tbody_data.innerHTML = ` | |
| <tr> | |
| <td></td> | |
| <td>${parameter_uno}</td> | |
| <td>${parameter_dos}</td> | |
| </tr> | |
| <tr> | |
| <td>Stat Quality</td> | |
| <td>${parameter_uno_value}%</td> | |
| <td>${parameter_dos_value}%</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 1</td> | |
| <td>${array_upgrade_uno[1]}</td> | |
| <td>${array_upgrade_dos[1]}</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 2</td> | |
| <td>${array_upgrade_uno[2]}</td> | |
| <td>${array_upgrade_dos[2]}</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 3</td> | |
| <td>${array_upgrade_uno[3]}</td> | |
| <td>${array_upgrade_dos[3]}</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 4</td> | |
| <td>${array_upgrade_uno[4]}</td> | |
| <td>${array_upgrade_dos[4]}</td> | |
| </tr> | |
| ` | |
| } | |
| else { | |
| tbody_data.innerHTML = ` | |
| <tr> | |
| <td></td> | |
| <td>${parameter_uno}</td> | |
| <td>${parameter_dos}</td> | |
| <td>${parameter_tres}</td> | |
| </tr> | |
| <tr> | |
| <td>Stat Quality</td> | |
| <td>${parameter_uno_value}%</td> | |
| <td>${parameter_dos_value}%</td> | |
| <td>${parameter_tres_value}</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 1</td> | |
| <td>${array_upgrade_uno[1]}</td> | |
| <td>${array_upgrade_dos[1]}</td> | |
| <td>${array_upgrade_tres[1]}</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 2</td> | |
| <td>${array_upgrade_uno[2]}</td> | |
| <td>${array_upgrade_dos[2]}</td> | |
| <td>${array_upgrade_tres[2]}</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 3</td> | |
| <td>${array_upgrade_uno[3]}</td> | |
| <td>${array_upgrade_dos[3]}</td> | |
| <td>${array_upgrade_tres[3]}</td> | |
| </tr> | |
| <tr> | |
| <td>Upgrade 4</td> | |
| <td>${array_upgrade_uno[4]}</td> | |
| <td>${array_upgrade_dos[4]}</td> | |
| <td>${array_upgrade_tres[4]}</td> | |
| </tr> | |
| ` | |
| } | |
| table_data.insertAdjacentElement('beforeend', tbody_data) | |
| container_div.insertAdjacentElement('beforeend', table_data) | |
| return container_div.innerHTML | |
| } | |
| function precise(x) { | |
| if (typeof x === 'string') {return x} | |
| else { return Number.parseFloat(x).toFixed(3); } | |
| } | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment