#Red Team - SideKick
var possibleMoves = [
{newX: x, newY: y, value: 1},
{newX: x, newY: y + 1, value: 1},
{newX: x, newY: y - 1, value: 1},
{newX: x + 1, newY: y - 1, value: 1},
{newX: x - 1, newY: y - 1, value: 1},
{newX: x - 1, newY: y + 1, value: 1},
{newX: x + 1, newY: y + 1, value: 1}
];
var isDeadly = function(myX, myY, eX, eY) {
return (Math.abs(myY - eY) === 1 && Math.abs(myX - eX) <= 1);
}
//stay near helpful friends!
if (tNear.length > 0) {
for (var i = 0; i < tNear.length; i++) {
if (Math.abs(tNear[i].x - x) > 2) {
if (tNear[i].x > x) {
possibleMoves[3].value = possibleMoves[3].value + 5;
possibleMoves[1].value = possibleMoves[1].value + 5;
possibleMoves[6].value = possibleMoves[6].value + 5;
} else {
possibleMoves[4].value = possibleMoves[4].value + 5;
possibleMoves[2].value = possibleMoves[2].value + 5;
possibleMoves[5].value = possibleMoves[5].value + 5;
}
}
if (Math.abs(tNear[i].y - y) > 2) {
if (tNear[i].y > y) {
possibleMoves[5].value = possibleMoves[5].value + 5;
possibleMoves[6].value = possibleMoves[6].value + 5;
} else {
possibleMoves[4].value = possibleMoves[4].value + 5;
possibleMoves[3].value = possibleMoves[3].value + 5;
}
}
}
}
//chase those enemies!
if (eNear.length > 0) {
for (var i = 0; i < eNear.length; i++) {
if (Math.abs(eNear[i].x - x) > 2) {
if (eNear[i].x > x) {
possibleMoves[3].value = possibleMoves[3].value + 5;
possibleMoves[1].value = possibleMoves[1].value + 5;
possibleMoves[6].value = possibleMoves[6].value + 5;
} else {
possibleMoves[4].value = possibleMoves[4].value + 5;
possibleMoves[2].value = possibleMoves[2].value + 5;
possibleMoves[5].value = possibleMoves[5].value + 5;
}
}
if (Math.abs(eNear[i].y - y) > 2) {
if (eNear[i].y > y) {
possibleMoves[5].value = possibleMoves[5].value + 5;
possibleMoves[6].value = possibleMoves[6].value + 5;
} else {
possibleMoves[4].value = possibleMoves[4].value + 5;
possibleMoves[3].value = possibleMoves[3].value + 5;
}
}
}
}
//walls
if (x === 127){
possibleMoves[3] = null;
possibleMoves[1] = null;
possibleMoves[6] = null;
}
if (x === 0){
possibleMoves[4] = null;
possibleMoves[2] = null;
possibleMoves[5] = null;
}
if (y === 0){
possibleMoves[3] = null;
possibleMoves[4] = null;
}
if (y === 127){
possibleMoves[5] = null;
possibleMoves[6] = null;
}
//deadly enemies
for (var i = 0; i < eNear.length; i++) {
for (var j = 0; j < possibleMoves.length; j++) {
if (possibleMoves[j] !== null && isDeadly(possibleMoves[j].newX, possibleMoves[j].newY, eNear[i].x, eNear[i].y)) {
possibleMoves[j] = null;
}
}
}
var bestMoves = [];
for (var i = 0; i < possibleMoves.length; i++)
{
if (possibleMoves[i] !== null) {
if (bestMoves.length === 0 || possibleMoves[i].value > possibleMoves[bestMoves[0]].value) {
bestMoves = [i];
}
else if (possibleMoves[i].value === possibleMoves[bestMoves[0]].value) {
bestMoves.push(i);
}
}
}
var returnValue = bestMoves[Math.floor(Math.random()*(bestMoves.length))];
return returnValue;
Likes to follow teammates around, good thing there's plenty of them!