NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Websim: Battle Profitability Indicator // @description Indicates the battle profitability in WebSim // @namespace Vess // @author Vesselin Bontchev // @date 2012-07-16 // @version 1.01 // @include http://websim.speedsim.net/* // ==/UserScript== (function () { // The following "if" is not really necessary but with it this script will work for Opera too if (document.location.href.indexOf ("http://websim.speedsim.net/") < 0) return; var strFunc = (function () { var parse_ajax_answer_old = parse_ajax_answer; parse_ajax_answer = function (txt) { // Resource exchange ratio; default 3:2:1 const metalCrystalRatio = 1.5; const metalDeuteriumRatio = 3; function setIndicator (result, indicatorNumber, profit, loss) { function addDots (n) { n += ''; while (/\d{4}/.test (n)) n = n.replace (/(\d+)(\d{3})/, "$1.$2"); return n; } var indicatorColor; var indicatorText = ""; var mySpan = document.getElementById ("id" + indicatorNumber); if (mySpan == null) { mySpan = document.createElement ("span"); mySpan.id = "id" + indicatorNumber; result.appendChild (document.createTextNode ((indicatorNumber == "1") ? " " : " (")); result.appendChild (mySpan); if (indicatorNumber == "2") result.appendChild (document.createTextNode (")")); } if (profit > loss) { indicatorText += "+"; indicatorColor = "lime"; } else if (profit < loss) { indicatorText += "-"; indicatorColor = "red"; } else { indicatorText += "="; indicatorColor = "orange"; } indicatorText += addDots (Math.abs (profit - loss)); mySpan.style.color = indicatorColor; mySpan.textContent = indicatorText; } parse_ajax_answer_old (txt); var resultTable = document.getElementById ("result_table"); var result = resultTable.previousElementSibling; var rows = resultTable.firstElementChild.firstElementChild.children; var debris = rows [2].cells [1].textContent; var losses = rows [4].cells [1].textContent; var plunder = rows [7].cells [1].textContent; var fuel = rows [8].cells [1].textContent; /([\d\.]+)\D+\d+\D+([\d\.]+)/.exec (debris); var debrisMetal = RegExp.$1; var debrisCrystal = RegExp.$2; var debrisProfit = parseInt (debrisMetal.replace (/\D/g, "")) + Math.round (metalCrystalRatio * parseInt (debrisCrystal.replace (/\D/g, ""))); /([\d\.]+)\D+([\d\.]+)\D+([\d\.]+)/.exec (plunder); var plunderMetal = RegExp.$1; var plunderCrystal = RegExp.$2; var plunderDeuterium = RegExp.$3; var plunderProfit = parseInt (plunderMetal.replace (/\D/g, "")) + Math.round (metalCrystalRatio * parseInt (plunderCrystal.replace (/\D/g, ""))) + Math.round (metalDeuteriumRatio * parseInt (plunderDeuterium.replace (/\D/g, ""))); /([\d\.]+)\D+([\d\.]+)\D+([\d\.]+)/.exec (losses); var lossesMetal = RegExp.$1; var lossesCrystal = RegExp.$2; var lossesDeuterium = RegExp.$3; var equivLosses = parseInt (lossesMetal.replace (/\D/g, "")) + Math.round (metalCrystalRatio * parseInt (lossesCrystal.replace (/\D/g, ""))) + Math.round (metalDeuteriumRatio * parseInt (lossesDeuterium.replace (/\D/g, ""))) + Math.round (metalDeuteriumRatio * parseInt (fuel.replace (/\D/g, ""))); var totalProfit = plunderProfit + debrisProfit; setIndicator (result, "1", plunderProfit, equivLosses); setIndicator (result, "2", totalProfit, equivLosses); } }).toString (); var script = document.createElement ("script"); script.setAttribute ("type", "text/javascript"); script.text = "(" + strFunc + ") ();"; document.body.appendChild (script); })();