Greasy Fork is available in English.

GLB Player Value

Puts the real player value on the player page

// ==UserScript==
// @name           GLB Player Value
// @namespace      GLB
// @description   Puts the real player value on the player page
// @include        http://glb.warriorgeneral.com/game/player.pl?player_id=*
// @include        https://glb.warriorgeneral.com/game/player.pl?player_id=*
// @require       https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js
// @version 0.0.1.20190324174004
// ==/UserScript==

var _Total
var _MyStyle

var _Caps = {
	'87.6':0,
	'85.58':0,
	'83.25':0,
	'80.53':0,
	'77.28':0,
	'73.24':0,
	'67.97':0,
	'60.51':0,
	'48.06':0,
	'10.00':0
};
var _PercentBonus = ['Break tackle chance','Fake chance','Hold block chance','Pass distance','Pass quality','Catch ball chance', //offensive
	'Break block chance','Make tackle chance','Force fumble chance','Avoid fake chance','Deflect ball chance','Interception chance']; //defensive
var _PlayerAtts = {
	'Strength':0,
	'Speed':0,
	'Agility':0,
	'Jumping':0,
	'Stamina':0,
	'Vision':0,
	'Confidence':0,
	'Blocking':0,
	'Tackling':0,
	'Throwing':0,
	'Catching':0,
	'Carrying':0,
	'Kicking':0,
	'Punting':0
};

var _saTableValue = {
	'0':  [0,0],
	'1':  [1,2],
	'2':  [2,4],
	'3':  [4,7],
	'4':  [6,10],
	'5':  [9,14],
	'6':  [12,18],
	'7':  [16,23],
	'8':  [20,28],
	'9':  [25,34],
	'10': [30,40]
};
var _vpValue = 0;
var _pctValue = 0;
var _saValue = 0;
var _statValue = 0;

/*
 percent points = (sum %'s) * 3
 vet points = # VA's / 10
 sa points = 	if SA > 10 then
					if SA last in tree then
						40 + (SA # - 10) * 6
					else
						30 + (SA # - 10) * 5
					end if
				else
					value of _saTableValue (if last in tree use idx 1 else 0)
				end if

 stat points =
	(
		for each cap level (starting at the end):
		if value > cap then
			Math.floor(value - sum of previous cap values - the cap)
		else
			0
		end if
	)
	then sum each cap and multiply by the cap # (indexed at 1), then sum all of that

 total points = sum of above points
*/

function setAttStats(){
	var startArea;
	if($('#normalStats').length > 0){
		startArea = $('#normalStats');
	}else{
		startArea = $('DIV#player_stats TABLE.player_stats_table');
	}

	$('DIV.stat_head_tall',startArea).each(function(){
		var att = $(this).text().replace(/\:/gi,'');
		if(!_PlayerAtts[att] && _PlayerAtts[att] != 0){
			alert('cannot find attribute: ' + att);
		}
		var theVal = $(this).next().text();
		if(theVal.indexOf('(') > 0){
			theVal = theVal.substring(0,theVal.indexOf('(') - 1);
		}
		_PlayerAtts[att] = Number(theVal);
	});

	//console.log(_PlayerAtts);

	computeStatValue();
};

function computeStatValue(){
	for(var att in _PlayerAtts){
		for(var cap in _Caps){
			var toUse = (cap == '10.00' ? 0 : Number(cap));
			if(_PlayerAtts[att] > toUse){
				if(toUse == 0){
					var theVal = _PlayerAtts[att] - toUse;
				}else{
					var theVal = Math.floor(_PlayerAtts[att] - toUse);
				}
				_Caps[cap] += theVal;
				_PlayerAtts[att] -= theVal;
				// if(toUse == 80.53){
					// console.log(att + ' - ' + theVal);
				// }
			}
		}
	}
	//console.log(_Caps);
	var cnt = 10;
	for(var cap in _Caps){
		_statValue += (_Caps[cap] * cnt);
		cnt -= 1;
	}
	//console.log('stat value: ' + _statValue);
};

function countVPs(){
	var vpCount = 0;
	$('DIV#vet_skills_box DIV.skill_level').each(function(){
		vpCount += parseInt($(this).text(),10);
	});
	_vpValue = vpCount / 10;
	//console.log('vp value: ' + _vpValue);
};

function addPercents(){
	var pctCount = 0;
	$('DIV.medium_head:contains("Current Bonuses/Penalties")').next('TABLE').find('TR').each(function(){
		var item = $(this).find('TD:eq(0)').text();
		for(var i=0;i<_PercentBonus.length;i++){
			if(_PercentBonus[i] == item){
				var cnt = $(this).find('TD:eq(1)').text();
				pctCount += Number(cnt.replace(/\%/gi,''));
				break;
			}
		}
	});
	_pctValue = pctCount * 3;
	//console.log('percent value: ' + _pctValue);
};

function grabSAs(){
	var elms = $('DIV#skill_trees_content DIV.subhead');
	$('DIV#skill_trees_content DIV.subhead').each(function(){
		var cnt = 0;
		var elm = this;
		while($(elm).next().hasClass('skill_button')){
			elm = $(elm).next();
			cnt += 1;
			var num = parseInt($(elm).find('DIV.skill_level').text(),10);
			if(cnt == 5){
				if(num > 10){
					_saValue += (40 + (num - 10) * 6);
				}else{
					_saValue += _saTableValue[num + ''][1];
				}
			}else{
				if(num > 10){
					_saValue += (30 + (num - 10) * 5);
				}else{
					_saValue += _saTableValue[num + ''][0];
				}
			}
		}
	});
	//console.log('sa value: ' + _saValue);
};

function roundNumber(num){
	return Math.round(num * 100)/100;
};

function drawPlayerValues(){
	var tbl = $('#player_current_stats_table');

	// add header
	$(tbl).find('TR:eq(0) TD:eq(0)').after('<td class="current_stats_head">Value</td>');

	// add data
    _Total = _statValue + _saValue + _vpValue + _pctValue
 	if(_Total > 2000){
		_MyStyle = "font-weight:bold;font-size:8pt;color:blue;"

	}
	var theData = '<span onmouseover="set_tip(\'Attribute Value\',0,1,1,1);" onmouseout="unset_tip();">' + roundNumber(_statValue) + '</span>' +
		' | <span onmouseover="set_tip(\'SA Value\',0,1,1,1);" onmouseout="unset_tip();">' + roundNumber(_saValue) + '</span>' +
		' | <span onmouseover="set_tip(\'Vet Points Value\',0,1,1,1);" onmouseout="unset_tip();">' + roundNumber(_vpValue) + '</span>' +
		' | <span onmouseover="set_tip(\'Percents Value\',0,1,1,1);" onmouseout="unset_tip();">' + roundNumber(_pctValue) + '</span>' +
		'<br /><span onmouseover="set_tip(\'Total Player Value\',0,1,1,1);" onmouseout="unset_tip();" style="font-weight:bold;font-size:8pt;color:green;">' + roundNumber(_Total) + '</span>';
	$(tbl).find('TR:eq(1) TD:eq(0)').after('<td class="current_stats_value" style="font-size:7pt;padding-bottom:0px;">' + theData + '</td>');

	//expand fame cell
	var cell = $(tbl).find('TR:eq(2) TD:eq(1)');
	$(cell).attr('colSpan',$(cell).attr('colSpan') + 1);
};

setAttStats();
countVPs();
addPercents();
grabSAs();
drawPlayerValues();