Torn: Show Experience

Show weapon experience number & hits required for 100% exp rather than progress bar

  1. // ==UserScript==
  2. // @name Torn: Show Experience
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.5
  5. // @description Show weapon experience number & hits required for 100% exp rather than progress bar
  6. // @author Untouchable [1360035]
  7. // @match https://www.torn.com/item.php
  8. // @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. show();
  16.  
  17. })();
  18.  
  19. function show() {
  20.  
  21. // Set this to false if you do not wish to see Proxima's Weapon Quality
  22. let ShowProxiQual = true;
  23.  
  24. waitForKeyElements('.player-weapon',() => {
  25.  
  26. let keys = ["0","1","2","3"]
  27. Object.keys($('.experience-wrap')).forEach((e) => {
  28. if(keys.includes(e)){
  29. let i = parseInt(e),
  30. percent = $('.experience-wrap')[i].title;
  31.  
  32. let dmg = $('.weapon-box')[i].children[4].childNodes[5].childNodes[1].childNodes[1].innerText;
  33. let acc = $('.weapon-box')[i].children[4].childNodes[5].childNodes[1].childNodes[5].innerText;
  34.  
  35. $('.experience-wrap')[i].title = percent + " experience, " + getHits(percent) + " damage dealing hits required until 100%";
  36.  
  37. if(ShowProxiQual){
  38. $('.experience-wrap')[i].innerHTML = `<span title="Proxima's Magic Quality" class="na t-red">` + getProxiQual(dmg,acc) + `</span>`
  39. + `<span>&nbsp|&nbsp<span><span class="na t-gray-9">` + percent + ` (` + getHits(percent) + `)</span>`;
  40. } else {
  41. $('.experience-wrap')[i].innerHTML = `<span><span class="na t-gray-9">` + percent + ` (` + getHits(percent) + `)</span>`;
  42. }
  43. }
  44. })
  45.  
  46. });
  47.  
  48. }
  49.  
  50. function getHits(experience){
  51.  
  52. let hits, exp = parseInt(experience.replace("%",""));
  53.  
  54. if(exp < 25){
  55. hits = (25 - exp) * 8 + 1800;
  56. } else if (exp >= 25 && exp < 50){
  57. hits = (50 - exp) * 12 + 1500
  58. } else if (exp >= 50 && exp <75) {
  59. hits = (75 - exp) * 20 + 1000;
  60. } else {
  61. hits = (100 - exp) * 40;
  62. }
  63.  
  64. return hits ;
  65.  
  66. }
  67.  
  68. function getProxiQual(dmg,acc){
  69.  
  70. let damage = parseFloat(dmg), accuracy = parseFloat(acc);
  71.  
  72. let ProxiQual = accuracy / 100 * (1 + Math.log( ( ( ( Math.exp( ( damage - 0.005 ) / 19 + 2 ) - 13 ) + ( Math.exp( ( damage + 0.005 ) / 19 + 2 ) - 13 ) ) / 2).toFixed(0) ) ) * 10;
  73.  
  74. return ProxiQual.toFixed(2);
  75.  
  76. }