Skip to content

Instantly share code, notes, and snippets.

@Kattoor
Created November 3, 2016 22:01
Show Gist options
  • Save Kattoor/d7b8c58f95031b6ccf31e75e48df6a0a to your computer and use it in GitHub Desktop.
Save Kattoor/d7b8c58f95031b6ccf31e75e48df6a0a to your computer and use it in GitHub Desktop.
var startXp = getTotalXp();
var startTime = Date.now();
var hourlyXpArray = [];
var xpPerMinute;
function getTarget() {
let entityValues = Object.values(parent.entities);
//let greenWorms = entityValues.filter(entity => entity.mtype === 'armadillo');
//let redWorms = entityValues.filter(entity => entity.mtype === 'squigtoad');
let greenWorms = entityValues.filter(entity => entity.mtype === 'bee');
let redWorms = entityValues.filter(entity => entity.mtype === 'osnake');
let target;
if (redWorms.length > 0)
target = findClosest(redWorms);
else
target = findClosest(greenWorms);
return target;
}
function findClosest(entities) {
let closestEntity, closestEntityDistance
entities.forEach(entity => {
let distance = Math.sqrt(
Math.abs(entity.real_x - character.real_x) +
Math.abs(entity.real_y - character.real_y)
);
if (!closestEntity || distance < closestEntityDistance) {
closestEntity = entity;
closestEntityDistance = distance;
}
});
game_log(closestEntityDistance);
return closestEntity;
}
function getTotalXp() {
let sum = 0;
for (let i = 1; i < character.level; i++)
sum += +G.levels[i];
return sum + character.xp;
}
function showXpPerMinute() {
var deltaXp = getTotalXp() - startXp;
var deltaTime = Date.now() - startTime;
var hourlyXp = (60000 / deltaTime) * deltaXp;
xpPerMinute = Math.round(hourlyXp);
hourlyXpArray.push(xpPerMinute);
if (hourlyXpArray.length >= 100) hourlyXpArray.shift();
set_message(Math.round(hourlyXpArray.reduce((p, c) => p + c, 0) / hourlyXpArray.length));
console.log(hourlyXpArray);
}
function showKillsUntilLevelUp(target) {
let totalXp = character.xp;
let xpNeeded = G.levels[character.level + 1];
let xpByTarget = target.xp;
let xpUntilNextLevel = xpNeeded - totalXp;
let enemiesToBeKilled = Math.ceil(xpUntilNextLevel / xpByTarget);
let minutesUntilNextLevel = Math.ceil(xpUntilNextLevel / xpPerMinute);
game_log("Enemies until next level: " + enemiesToBeKilled);
game_log("Minutes until next level: " + minutesUntilNextLevel);
}
setInterval(() => {
loot();
let hPots1 = character.items.filter(item => item && item.name === 'hpot0')[0];
let hPots2 = character.items.filter(item => item && item.name === 'hpot1')[0];
let mPots1 = character.items.filter(item => item && item.name === 'mpot0')[0];
let mPots2 = character.items.filter(item => item && item.name === 'mpot1')[0];
if ((!hPots1 && !hPots2) || ((hPots1 ? hPots1.q : 0) + (hPots2 ? hPots2.q : 0) < 25)) {
game_log((hPots1 || hPots2) ? `Only ${(hPots1 ? hPots1.q : 0) + (hPots2 ? hPots2.q : 0)} hPots left, buying 25 new ones now.` : "No more hPots! Buying 25 new ones now.");
parent.socket.emit("buy", {name:"hpot1", quantity: 25});
}
if ((!mPots1 && !mPots2) || ((mPots1 ? mPots1.q : 0) + (mPots2 ? mPots2.q : 0) < 25)) {
game_log((mPots1 || mPots2) ? `Only ${(mPots1 ? mPots1.q : 0) + (mPots2 ? mPots2.q : 0)} mPots left, buying 25 new ones now.` : "No more mPots! Buying 25 new ones now.");
parent.socket.emit("buy", {name:"mpot1", quantity: 25});
}
let hp = character.hp;
if (hp <= 800)
parent.use('hp');
let mp = character.mp;
if (mp <= 250)
parent.use('mp');
let target = get_targeted_monster();
if (!target) {
target = getTarget();
if (!target) return;
change_target(target);
showKillsUntilLevelUp(target);
showXpPerMinute();
}
if (!in_attack_range(target))
move(character.real_x + (target.real_x - character.real_x) / 2, character.real_y + (target.real_y - character.real_y) / 2);
if (can_attack(target))
attack(target);
}, 50);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment