Created
June 17, 2023 18:10
-
-
Save eviltester/d2742f4ccddb2ece0e6ad232fe6f4489 to your computer and use it in GitHub Desktop.
xtype bot and supporting functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ig.game.crosshair.update = function(){ | |
this.currentAnim.angle -= 3 * ig.system.tick; | |
} | |
function hackMoveCrossHairToBaddy(){ | |
var num_baddies = ig.game.entities.length; | |
for(var x=0;x<num_baddies;x++){ | |
var baddy = ig.game.entities[x]; | |
if(baddy["image"]!==undefined){ | |
if(baddy["image"].path.endsWith("heart.png")){ | |
// move cross hair here | |
ig.game.crosshair.pos.x=baddy.pos.x+30; | |
ig.game.crosshair.pos.y=baddy.pos.y+30; | |
//shoot | |
//ig.game.player.shoot(); | |
var event = document.createEvent("MouseEvents"); | |
event.initEvent("mousedown", true, true); | |
//event.synthetic = true; | |
document.getElementById("canvas").dispatchEvent(event, true); | |
break; | |
} | |
} | |
} | |
} | |
var aimingBot = setInterval(hackMoveCrossHairToBaddy,100); | |
function closecall(thing, other, buffer) { | |
if(other["pos"]===undefined){ | |
return false; | |
} | |
return !( | |
thing.pos.x >= other.pos.x + other.size.x + buffer || | |
thing.pos.x + thing.size.x + buffer <= other.pos.x || | |
thing.pos.y >= other.pos.y + other.size.y + buffer || | |
thing.pos.y + thing.size.y + buffer<= other.pos.y); | |
}; | |
// preference is to be about 250, 500 | |
var evadecount=0; | |
var homeposx = 250; | |
var homeposy = 500; | |
function chooseANewHome(){ | |
console.log("Choose a new home"); | |
homeposx = getRandomInt(150, 450); | |
homeposy = getRandomInt(500, 650); | |
} | |
var homeChooserBot = setInterval(chooseANewHome,5000); | |
function getBackToCenter(){ | |
//var homeposx = 250; | |
//var homeposy = 500; | |
//var homeposx = getRandomInt(150, 300); | |
//var homeposy = getRandomInt(500, 650); | |
if(evadecount>0){ | |
evadecount--; | |
return; | |
} | |
// creep back to center since things are a little stable | |
console.log("Back to home"); | |
var playerpos = ig.game.player.pos; | |
if(playerpos.x<homeposx){ | |
playerpos.x+=3; | |
} | |
if(playerpos.x>homeposx){ | |
playerpos.x-=3; | |
} | |
if(playerpos.y>homeposy){ | |
playerpos.y-=3; | |
} | |
if(playerpos.y<homeposy){ | |
playerpos.y+=3; | |
} | |
} | |
var entropyBot = setInterval(getBackToCenter,50); | |
function moveplayer(){ | |
var evadespace = 15; //10 | |
var movespaces = 5; | |
var num_baddies = ig.game.entities.length; | |
for(var x=0;x<num_baddies;x++){ | |
var baddy = ig.game.entities[x]; | |
var player = ig.game.player; | |
if(baddy["image"]!==undefined){ | |
if(baddy["image"].path.endsWith("bullet.png") || | |
baddy["image"].path.endsWith("exp-blue.png") ){ | |
var movedx = 0; | |
if(closecall(player, baddy, evadespace)){ | |
// need to evade | |
console.log("CLOSE"); | |
if( player.pos.x <= baddy.pos.x + baddy.size.x + evadespace && | |
player.pos.x + player.size.x - evadespace >= baddy.pos.x){ | |
// evade x | |
console.log("CLOSE X"); | |
if(player.pos.x<=baddy.pos.x){ | |
// move left | |
console.log("MOVE LEFT"); | |
player.pos.x=player.pos.x-movespaces; | |
evadecount++; | |
movedx=-movespaces; | |
}else{ | |
console.log("MOVE RIGHT"); | |
player.pos.x=player.pos.x+movespaces; | |
movedx=+movespaces; | |
evadecount++; | |
} | |
} | |
if( player.pos.y <= baddy.pos.y + baddy.size.y + evadespace && | |
player.pos.y + player.size.y - evadespace >= baddy.pos.y){ | |
// evade y | |
console.log("CLOSE Y"); | |
if(player.pos.y<=baddy.pos.y){ | |
// move up | |
console.log("MOVE UP"); | |
player.pos.y=player.pos.y-movespaces; | |
evadecount++; | |
}else{ | |
console.log("MOVE DOWN"); | |
player.pos.y=player.pos.y+movespaces; | |
evadecount++; | |
// hack to avoid constant move down | |
if(movedx==0){ | |
// randomly add an x | |
movedx = getRandomInt(movespaces-3,movespaces); | |
if(baddy.vel.x<0){ | |
}else{ | |
movedx = movedx*-1; | |
} | |
console.log("RANDOM X"); | |
} | |
player.pos.x=player.pos.x+movedx; | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
function getRandomInt(min, max) { | |
return Math.floor(Math.random() * (max - min + 1)) + min; | |
} | |
var moveBot = setInterval(moveplayer,20); | |
// function showpos(){ | |
// console.log("x = " + ig.game.player.pos.x + " , y = " + ig.game.player.pos.y) | |
// } | |
// var posBot = setInterval(showpos,100); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment