Pancakes

By RandomBeast Last update Jul 8, 2008 — Installed 8,593 times.
// ==UserScript==
// @name           Pancakes
// @namespace      GLB
// @description    Pancakes
// @include        http://goallineblitz.com/game/replay.pl?pbp_id=*
// ==/UserScript==

window.setTimeout( function() 
{
var playerids = new Array();
var players = unsafeWindow.players;
var play_data = unsafeWindow.play_data;
var pancakes = new Array();

function getElementsByClassName(classname, par)
{
	var a=[];   
	var re = new RegExp('\\b' + classname + '\\b');
    	
	var els = par.getElementsByTagName("*");
 
	for(var i=0,j=els.length; i<j; i++) 
	{       
		if(re.test(els[i].className)) 
		{	
			a.push(els[i]);
		}
	}
    

	return a;
};

var preX = 0;
var preY = 0;
var panCount = 0;

for (var i = 1; i < play_data[0].length; i++) 
{
	var data = play_data[0][i];
	if (data.id != 'ball')
	 {
		playerids.push (data.id);
	}
}

for (var i = 0; i < playerids.length; i++) 
{
	var plyr = players[playerids[i]];
	panCount = 0;

	for (var j = 0; j < play_data.length; j++) {
		var snapdata = getSnap(j, playerids[i]);

		if (preX == snapdata.x && preY == snapdata.y) {
			panCount++;
			
			if (panCount==17) {
				addPancake(i, plyr.name, j-17, snapdata.x, snapdata.y, panCount);
				panCount = 0;
			}
		} else {
			preX = snapdata.x;
			preY = snapdata.y;
			panCount = 0;			
		}
	}
}

var pancaketext = "";

for (var i = 0; i < pancakes.length; i++) {
	pancaketext = pancaketext + pancakes[i] + "<br>";
}

var buttons = getElementsByClassName('prev_next', document);

if (pancaketext != "") {
	if (buttons[0]) {
    		newElement = document.createElement('div'); 
		newElement.className = "small_head";
		newElement.innerHTML = "<font color='black'>The Pancake Stack</font><br>" + pancaketext;
		buttons[0].parentNode.insertBefore(newElement, buttons[0]);
	}	
}

function getSnap(frame, id) {
	for (var i = 0; i < play_data[frame].length; i++) {
		var data = play_data[frame][i];
		if (data.id == id) {
			return data;
		}
	}
}

function addPancake(index, name, frame, x, y, freezecount) 
{
	var closestDistance = 10000;
	var newDist;
	var closestName;
	var distancetext="";
	var closesti = 0;

 	if (index < 11) {
		for (var i = 11; i < playerids.length; i++) {
			var snapdata = getSnap(frame, playerids[i]);
			newDist = Math.sqrt(Math.abs(snapdata.x - x) * Math.abs(snapdata.x - x) + Math.abs(snapdata.y - y) * Math.abs(snapdata.y - y));
			if (newDist < closestDistance && newDist > 0) {
				closestDistance = newDist;
				closestName =players[playerids[i]].name;
			}	
		}
	} else {
		for (var i = 0; i < 11; i++) {
			var snapdata = getSnap(frame, playerids[i]);
			newDist = Math.sqrt(Math.abs(snapdata.x - x) * Math.abs(snapdata.x - x) + Math.abs(snapdata.y - y) * Math.abs(snapdata.y - y));
			if (newDist < closestDistance && newDist > 0) {
				closestDistance = newDist;
				closestName =players[playerids[i]].name;
			}	
		}	
	}		
	
	if (closestDistance < 8) {
		pancakes.push (name + " got pancaked by " + closestName);
	}
}

}
)