Priest Example Script - lordachoo/adventureland GitHub Wiki
Priest Example Code Description
- Has
attack_mode default crap, move_mode, curseMode and partyHealMode
- Move mode will force bot to be stationary so they don't go wandering off
curseMode enables cursing or not to consume mana - May need to turn this off if group is taking more damage than we can heal and we need more mana
partyHealMode enables partyheal spell casting on or off
debug toggles console.log messages
- Basic potion function
use_potions() - set potionHealAmount and potionManaAmount so extra potion capacity isn't wasted.
- Basic functionality: set
healAmount for how much hp a (partied) character should be missing before bothering to heal them - Every tick the priest will search party members for heal targets and heal
- The
curseMode, partyHealMode` functions can be toggled to fit the encounters needs.
- Has the party code for LordAchoo, LordAsneeze, LordApriest to always create/maintain group
Code
var attack_mode=true
var move_mode=false
var partyHealMode=false
var curseMode=true
var debug=true
async function use_potions() {
var potionHealAmount=200
var potionManaAmount=300
if (character.hp < character.max_hp - potionHealAmount || character.mp < character.max_mp - potionManaAmount) {
set_message("Using Potion");
use_hp_or_mp();
}
}
/*
* Priest Heal Party Code
*/
function ms_to_next_skill(skill) {
const next_skill = parent.next_skill[skill]
if (next_skill == undefined) return 0
const ms = parent.next_skill[skill].getTime() - Date.now() - Math.min(...parent.pings) + 15
return ms < 0 ? 0 : ms
}
async function healParty() {
var healAmount=400 // Threshold for how low character.hp is before healing
if (character.party) {
set_message("Init HP");
for (let char_name in get_party()) {
let party_member = get_entity(char_name); // changed parent.entities
if(party_member == null) {
if(debug) console.log(char_name + " is out of render distance");
continue;
}
if (party_member.hp < party_member.max_hp - healAmount) {
if(debug) {
console.log("HEALING: "+char_name+","+party_member.hp+","+party_member.max_hp);
}
set_message("Healing");
await heal(party_member);
delay = ms_to_next_skill('attack');
break;
} else {
set_message("No Heal Tgt");
}
}
}
}
//////////////////
setInterval(function(){
use_potions();
loot();
// Try to search party for 'attack heals' every iteration
healParty();
if(!attack_mode || character.rip || is_moving(character)) return;
var target=get_targeted_monster();
if(!target)
{
target=get_nearest_monster({min_xp:100,max_att:120});
if(target) change_target(target);
else
{
set_message("No Monsters");
return;
}
}
if(!is_in_range(target))
{
if(move_mode) {
set_message("MOVING...");
move(
character.x+(target.x-character.x)/2,
character.y+(target.y-character.y)/2
);
}
// Walk half the distance - IF move_mode == true
}
else if(can_attack(target))
{
set_message("Attacking!");
use_skill("curse")
attack(target);
}
if(partyHealMode) {
if(!is_on_cooldown("partyheal") && character.mp >= 400)
{
set_message("Party Heal!");
use_skill("partyheal");
}
}
if(curseMode) {
if(!is_on_cooldown("curse") && character.mp >= 400)
{
set_message("Curse Tgt!");
use_skill("curse");
}
}
},1000/4); // Loops every 1/4 seconds.
/*
* PARTY CODE
*/
var group = ["LordAchoo", "LordAsneeze", "LordApriest"];
setInterval(function () {
if(parent.party_list.length < 3 ){
if (character.name == group[0]) {
for (let i = 1; i < group.length; i++) {
let name = group[i];
send_party_invite(name);
}
} else {
if (character.party) {
if (character.party != group[0]) {
parent.socket.emit("party", {event: "leave"})
}
} else {
send_party_request(group[0]);
}
}
}
}, 1000 * 10);
function on_party_request(name) {
console.log("Party Request");
if (group.indexOf(name) != -1) {
accept_party_request(name);
}
}
function on_party_invite(name) {
console.log("Party Invite");
if (group.indexOf(name) != -1) {
accept_party_invite(name);
}
}