View difference between Paste ID: p1TM4DgF and JgtUiJJr
SHOW: | | - or go back to the newest paste.
1
// ==UserScript==
2
// @name        Los Clickos Hermanos
3
// @namespace   *
4
// @include     http://clickingbad.nullism.com/
5
// @version     1
6
// @grant       none
7
// ==/UserScript==
8
9-
// LAST UPDATE : 15/12/13 for version 0.8.3
9+
// LAST UPDATE : 23/11/13 for version 0.8.1
10
// - shows efficiency and potential gain for each Manufacturing item : "Costs $4.81M/batch; Is worth $249.63B/s"
11
// - shows efficiency and gain for each Distribution item : "Costs $4.81M/sold batch; Yields $249.63B/s"
12
// - shows efficiency for each Laundering item : "Costs $17,275/laundered $"
13
// - colors! Red = bad value for money, Green = good value for money, White = the average item regarding value for money
14
// - change items description text color as it becomes unreadable when the item becomes Orange/Red
15
16
function addCommas(nStr) {
17
	nStr += '';
18
	x = nStr.split('.');
19
	x1 = x[0];
20
	x2 = x.length > 1 ? '.' + x[1] : '';
21
	var rgx = /(\d+)(\d{3})/;
22
	while (rgx.test(x1)) {
23
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
24
	}
25
	return x1 + x2;
26
}
27
28
function makeRealNumber(nb) {
29
	return eval(
30
		nb.replace(/,/g,"")
31
		  .replace(/M/,"*1E6")
32
		  .replace(/B/,"*1E9")
33
		  .replace(/T/,"*1E12")
34
		  .replace(/Qt/,"*1E18")
35
		  .replace(/Q/,"*1E15")
36
	)
37
}
38
39
// map
40
sortables = {}
41
42
function buildLabels(divName, text1, text2) {
43
	divs = document.querySelectorAll("div#"+divName+" > div.s_div")
44
	
45
	sortables[divName] = []
46
	
47
	batchPrice = document.querySelector("span#sell_roi").textContent
48
	
49
	for (i=0; i<divs.length; i++) {
50
		div = divs[i]
51
		cost = makeRealNumber(div.querySelector("p.small > b > span").textContent)
52
		p = div.querySelector("p[class='pull_right small']")
53
		infosSpans = p.querySelectorAll("b > span")
54
		batchesPerS = makeRealNumber(infosSpans[0].textContent)
55
		
56
		efficiency = Math.round(cost / batchesPerS)
57
		dollarsPerS = Math.round(batchesPerS * batchPrice)
58
59
		zboub1 = p.querySelector("span#zboub1")
60
		zboub2 = p.querySelector("span#zboub2")
61
		if (zboub1 == undefined) {
62
			p.appendChild(document.createElement("br"))
63
			p.appendChild(document.createTextNode(text1[0]))
64
			
65
			b1 = document.createElement("b")
66
			zboub1 = document.createElement("span")
67
			zboub1.id = "zboub1"
68
			b1.appendChild(zboub1)
69
			p.appendChild(b1)
70
			
71
			p.appendChild(document.createTextNode(text1[1]))
72
			
73
			if (text2 !== undefined) {
74
				p.appendChild(document.createTextNode(text2[0]))
75
				
76
				b2 = document.createElement("b")
77
				zboub2 = document.createElement("span")
78
				zboub2.id = "zboub2"
79
				b2.appendChild(zboub2)
80
				p.appendChild(b2)
81
				
82
				p.appendChild(document.createTextNode(text2[1]))
83
			}
84
		}
85
86
		newValue = "$"+ unsafeWindow.pretty_bigint(efficiency)
87
		if (newValue != zboub1.textContent) {
88
			zboub1.textContent = newValue
89
		}
90
		if (text2 !== undefined) {
91
			newValue = "$"+ unsafeWindow.pretty_bigint(dollarsPerS)
92
			if (newValue != zboub2.textContent) {
93
				zboub2.textContent = newValue
94
			}
95
		}
96
		
97
		sortables[divName].push({"efficiency":efficiency, "element":div})
98
	}
99
	sortables[divName].sort(function(a,b) {return parseFloat(b.efficiency) - parseFloat(a.efficiency)})
100
101
	colorize(sortables[divName])
102
	
103
}
104
105
function decimalToHex(d, padding) {
106
    var hex = Number(d).toString(16);
107
    padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;
108
109
    while (hex.length < padding) {
110
        hex = "0" + hex;
111
    }
112
113
    return hex;
114
}
115
116
function colorize(theArray) {
117
	// bad half: red to yellow, FF0000 to FFFF00
118
	// good half: yellow to green, FFFF00 to 00FF00
119
	step = Math.round(206 / (theArray.length-1))
120
	colors=[]
121
	for (i=0 ; i<Math.round(theArray.length)/2 ; i++) {
122
		colors.push("#FF"+decimalToHex(50+i*step)+"00")
123
	}
124
	step = Math.round(256 / (theArray.length-1))
125
	for (i=0 ; i<Math.round(theArray.length)/2 ; i++) {
126
		colors.push("#"+decimalToHex(256-i*step)+"FF00")
127
	}
128
	colors.push("#00FF00")
129
	
130
//	GM_log(JSON.stringify(colors))
131
	
132
	for (i=0 ; i<theArray.length; i++) {
133
		newStyle = "background-color:"+colors[i]
134
		if (theArray[i].element.getAttribute("style") != newStyle) {
135
			theArray[i].element.setAttribute("style", newStyle)
136
		}
137
	}
138
}
139
140
function computeAndShowCost() {
141
	buildLabels("clickers", ["Costs ", "/batch"], ["; Is worth ", "/s"])
142
	buildLabels("sellers", ["Costs ", "/sold batch"], ["; Yields ", "/s"])
143
	buildLabels("banks", ["Costs ", "/laundered $"])
144
}
145
146
setInterval(computeAndShowCost, 1000)
147
148
function addCss(cssString) {
149
	var head = document.getElementsByTagName('head')[0];
150
	if (head) {
151
		var newCss = document.createElement('style');
152
		newCss.type = "text/css";
153
		newCss.innerHTML = cssString;
154
		head.appendChild(newCss);
155
	}
156
}
157
addCss ('.grey { color: black ! important; }');