Skip to content

Instantly share code, notes, and snippets.

@Thestias
Last active December 4, 2020 00:09
Show Gist options
  • Select an option

  • Save Thestias/ee04bc71dc5ddde94ef635cbc740a81d to your computer and use it in GitHub Desktop.

Select an option

Save Thestias/ee04bc71dc5ddde94ef635cbc740a81d to your computer and use it in GitHub Desktop.
// ==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