NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name TORN: Gym Percentage
// @version 1.0.1
// @author DeKleineKobini
// @description Instead of showing stats, show the percentage.
// @namespace dekleinekobini.gympercentage
// @require https://openuserjs.org/src/libs/DeKleineKobini/DKK_Torn_Utilities.js
// @match https://www.torn.com/gym.php*
// @license MIT
// @updateURL https://openuserjs.org/meta/DeKleineKobini/TORN_Gym_Percentage.meta.js
// ==/UserScript==
setDebug(false);
/* --------------------
CODE - EDIT ON OWN RISK
-------------------- */
setPrefixEasy("GP");
observeMutations(document, "#gymroot", true, function(mut, obs) {
if (isMobile()) showPercentageAll();
observeMutations($("#gymroot > div").get(0), "#strength-val", false, function(mut, obs) {
observeMutationsFull($("#strength-val").get(0), function(mut, obs) { showPercentageAll(); }, { characterData: true, subtree: true });
observeMutationsFull($("#defense-val").get(0), function(mut, obs) { showPercentageAll(); }, { characterData: true, subtree: true });
observeMutationsFull($("#speed-val").get(0), function(mut, obs) { showPercentageAll(); }, { characterData: true, subtree: true });
observeMutationsFull($("#dexterity-val").get(0), function(mut, obs) { showPercentageAll(); }, { characterData: true, subtree: true });
showPercentageAll();
});
}, { childList: true, subtree: true });
function showPercentageAll() {
showPercentage("strength");
showPercentage("defense");
showPercentage("speed");
showPercentage("dexterity");
}
function showPercentage(type) {
debug(`showPercentage(${type})`);
let elValue = $(`#${type}-val`);
let elParent = elValue.parent()
let elTitle = elParent.find("h3");
let value = parseInt(replaceAll(elValue.html(), ",", ""));
let percent = value / getTotal();
percent = (parseInt(Math.round(percent * 10000)) / 100); // rounding
elTitle.html(`${getShort(type)} ${percent}%`);
}
function getShort(type) {
switch (type) {
case "strength":
return "Str";
case "speed":
return "Sp";
case "defense":
return "Def";
case "dexterity":
return "Dex";
}
return "ERR";
}
function getTotal() {
let strength = parseInt(replaceAll($("#strength-val").html(), ",", ""));
let defense = parseInt(replaceAll($("#defense-val").html(), ",", ""));
let speed = parseInt(replaceAll($("#speed-val").html(), ",", ""));
let dexterity = parseInt(replaceAll($("#dexterity-val").html(), ",", ""));
return strength + defense + speed + dexterity;
}
function isMobile() {
return navigator.userAgent.match(/Android/i)
|| navigator.userAgent.match(/webOS/i)
|| navigator.userAgent.match(/iPhone/i)
|| navigator.userAgent.match(/iPad/i)
|| navigator.userAgent.match(/iPod/i)
|| navigator.userAgent.match(/BlackBerry/i)
|| navigator.userAgent.match(/Windows Phone/i);
}