Created
November 3, 2016 22:01
-
-
Save Kattoor/d7b8c58f95031b6ccf31e75e48df6a0a to your computer and use it in GitHub Desktop.
This file contains 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
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