Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //send_item("nobodyhere",0,1)
- //send_item("Iamanoob",0,1)
- //send_item("nobodythat",3,100)
- //send_item("nobodymerch",2,1)
- var runaway=90;//set how far away to run
- var minxpallowed=10000;//minimum xp for target
- var maxattackmonster=0;//number of hits it takes targeted monster to kill you
- var monster="phoenix";
- var kite=2//0 = no kite, 1 = target based kite, 2 = centerpoint based kite, 3 = static point kite
- useSupershot=false;
- useBurst = false;
- useCursing = true;
- //whitelists
- awhitelist = ['phoenix', 'pinkgoo','mvampire'];
- swhitelist = ['vitscroll'];
- //show_json(character);
- setInterval(function()
- {
- //set_message(character.real_x+ ", " + character.real_y);
- //drawstuff(target);
- hpmp();
- var target=get_targeted_monster();
- target=targetmonster(target,monster);
- var nexttarget=getnexttarget(target,monster);
- //handleboss(target);
- if (kite==0){if (target) run_away(get_nearest_monster(),runaway);}
- else {kiteme(target,runaway,kite);}
- if(kite==0 || target) moveinrange(target,nexttarget);
- attacktarget(target,nexttarget);
- //set_message(`${keyName}`);
- if (useSupershot && target.hp > 6000 && character.ctype === 'ranger') {
- supershot(target);
- }
- if (useBurst && target.hp > 6000 && character.ctype === 'mage') {
- burst(target);
- }
- if (useCursing && target.hp > 3000 && character.ctype === 'priest') {
- curse(target);
- }
- //exchangeAll();
- },1000/4); // Loops every 1/4 seconds.
- setInterval(function()
- {
- drawstuff(get_targeted_monster());
- },10);
- var xptimer=0;
- setInterval(function()
- {
- if (xptimer==0)
- {initGUI()
- init_xptimer()}
- updateGUI();
- update_xptimer();
- xptimer++;
- //combination(3);//maxlevel argument
- //if(character.ctype === 'merchant')
- //auto_upgrade('quiver',7)
- },1000)
- var tempkite=0;
- var temprun=0;
- var istempkite=false;
- function handleboss(target)
- {
- if (target.mtype == "phoenix")
- { if(!istempkite) {tempkite=kite; kite=2;
- temprun=runaway; runaway=120;
- istempkite=true}}
- else if (target.mtype == "mvampire")
- { if(!istempkite) {tempkite=kite; kite=2;
- temprun=runaway; runaway=120;
- istempkite=true}}
- else if(istempkite==true) {istempkite=false; kite=tempkite;runaway=temprun}
- }
- function hpmp()
- {
- if (character.hp <= character.max_hp -200 && new Date() > parent.next_potion) {
- parent.use('hp');
- if (character.hp <= 400)
- heal(character)
- //Panic Button
- }
- if (character.mp <= character.max_mp - 300 && new Date() > parent.next_potion)
- parent.use('mp');
- }
- function targetmonster(target,montype)
- { var targ;
- targ=get_next_nearest_monster({path_check:true,monster_type:montype,no_target:true})
- if (targ) {if (montype==targ.mtype) {change_target(targ); target=targ;}
- if (awhitelist.includes(targ))
- {change_target(nexttarget); target=targ;}
- }
- if(!target || target.target && target.target != character.name)
- {
- target=get_next_nearest_monster({min_xp:minxpallowed,max_att:(character.max_hp/maxattackmonster),path_check:true,
- no_target:true,attacking_me:true});
- if(target) change_target(target);
- else
- {
- //set_message("No Monsters");
- return false;
- }
- }
- return target;
- }
- function getnexttarget(target,montype)
- {
- var nexttarget = get_next_nearest_monster({path_check:true,same_target:target.id,monster_type:montype,no_target:true});
- if (!nexttarget)
- nexttarget = get_next_nearest_monster({min_xp:minxpallowed,max_att: (character.max_hp/maxattackmonster),path_check:true,same_target:target.id,
- no_target:true, attacking_me:true});
- return nexttarget;
- }
- function targetdirection(target)
- {
- if(target)
- {
- var xdist = target.real_x-character.real_x;
- var ydist = target.real_y-character.real_y;
- var direct;
- if (xdist >0)
- direct = Math.atan(ydist/xdist); else
- direct = Math.atan(ydist/xdist) + 3.14;
- return direct;
- }
- return false;
- }
- function pointdirection(mx,my)
- {
- var xdist = mx-character.real_x;
- var ydist = my-character.real_y;
- var direct;
- if (xdist >0)
- direct = Math.atan(ydist/xdist); else
- direct = Math.atan(ydist/xdist) + 3.14;
- return direct;
- }
- function targetdistance(target)
- {
- if (target)
- return Math.pow(Math.pow(character.real_x-target.real_x,2) +
- Math.pow(character.real_y-target.real_y,2),1/2);
- return false;
- }
- function pointdistance(mx,my)
- {
- return Math.pow(Math.pow(character.real_x-mx,2) +
- Math.pow(character.real_y-my,2),1/2);
- }
- function moveinrange(target,nexttarget)
- {
- if (target)
- {
- if(!in_attack_range(target) || (target.target != character.id && targetdistance(target) > character.range))
- {moveindirection(targetdirection(target),targetdistance(target)-
- character.range);}
- else
- {
- if(nexttarget && target.hp<character.attack)
- {
- if(!in_attack_range(nexttarget))
- {moveindirection(targetdirection(nexttarget),
- targetdistance(nexttarget)-character.range);
- }
- }
- }
- }
- else
- move(character.real_x,character.real_y);
- }
- function run_away(target,distance)
- {
- if (targetdistance(target)<distance)
- move(character.real_x+(distance-targetdistance(target))*Math.cos(targetdirection(target)+3.14),
- character.real_y+(distance-targetdistance(target))*Math.sin(targetdirection(target)+3.14));
- }
- var turn_direct=1;
- var kitex=character.real_x;
- var kitey=character.real_y;
- function kiteme(target,distance,kite)
- {
- switch (kite)
- {
- case 1:
- if(target)
- kite_type1(target,distance);
- break;
- case 2:
- kite_type2(distance);
- break;
- case 3:
- kite_type3(target)
- break
- }
- }
- function kite_type3(target)
- {if(target && target.target==character.id)
- move(kitex,kitey)
- }
- function kite_type2(distance)
- {
- if (pointdistance(kitex,kitey)>distance-5)
- {
- var x_go=kitex+distance*Math.cos(pointdirection(kitex,kitey)-3.14)+(20)*Math.cos(pointdirection(kitex,kitey)+turn_direct*3.14/2)
- var y_go=kitey+distance*Math.sin(pointdirection(kitex,kitey)-3.14)+(20)*Math.sin(pointdirection(kitex,kitey)+turn_direct*3.14/2)
- }
- else
- {x_go=kitex+distance*Math.cos(pointdirection(kitex,kitey)-3.14);
- y_go=kitey+distance*Math.sin(pointdirection(kitex,kitey)-3.14);}
- move(x_go,y_go);
- }
- function kite_type1(target,distance)
- {
- var x_go=character.real_x+(distance-targetdistance(target))*Math.cos(targetdirection(target)+3.14)+(character.speed/5)*Math.cos(targetdirection(target)+turn_direct*3.14/2);
- var y_go=character.real_y+(distance-targetdistance(target))*Math.sin(targetdirection(target)+3.14)+(character.speed/5)*Math.sin(targetdirection(target)+turn_direct*3.14/2)
- if(can_move_to(x_go,y_go)) move(x_go,y_go);
- else
- {turn_direct=turn_direct*(-1);
- x_go=character.real_x+(distance-targetdistance(target))*Math.cos(targetdirection(target)+3.14)+(character.speed/5)*Math.cos(targetdirection(target)+turn_direct*3.14/2)
- y_go=character.real_y+(distance-targetdistance(target))*Math.sin(targetdirection(target)+3.14)+(character.speed/5)*Math.sin(targetdirection(target)+turn_direct*3.14/2)
- if(can_move_to(x_go,y_go)) move(x_go,y_go)
- else
- {turn_direct=turn_direct*(-1);
- move(character.real_x+((distance/2)*Math.cos(targetdirection(target))),
- character.real_y+((distance/2)*Math.sin(targetdirection(target))));
- }
- }
- }
- function attacktarget(target,nexttarget)
- {
- if((can_attack(target)) &&
- ((character.hp>target.attack) ||
- (get_target_of(target)==character.id)))
- {
- attack(target);
- if(target.dead && nexttarget && !current.target)
- {change_target(nexttarget);}
- }
- }
- function moveindirection(direction,distance)
- {
- move(character.real_x+distance*Math.cos(direction),
- character.real_y+distance*Math.sin(direction));
- }
- function drawstuff(target)
- {
- clear_drawings();
- draw_circle(character.real_x,character.real_y,character.range,.5,0xFFFFFF);
- if (target)
- draw_circle(target.real_x,target.real_y,G.monsters[target.mtype].range,.5,0xFF0000);
- }
- function get_next_nearest_monster(args)
- {
- //args:
- // max_att - max attack
- // min_xp - min XP
- // target: Only return monsters that target this "name" or player object
- // no_target: Only pick monsters that don't have any target
- // path_check: Checks if the character can move to the target
- var min_d=999999,target=null;
- if(!args) args={};
- if(args && args.target && args.target.name) args.target=args.target.name;
- for(id in parent.entities)
- {
- var current=parent.entities[id];
- if(current.type!="monster" || args.min_xp && current.xp<args.min_xp || args.max_att && current.attack>args.max_att || args.same_target && current.id == args.same_target || current.dead) continue;
- if(args.no_target && current.target && current.target!=character.name) continue;
- if(awhitelist.includes(current.mtype) &&(!get_targeted_monster() || !awhitelist.includes(get_targeted_monster().mtupe))) return current;
- if(args.monster_type && current.mtype != args.monster_type) continue;
- if(args.target && current.target!=args.target) continue;
- if(args.path_check && !can_move_to(current)) continue;
- var c_dist=parent.distance(character,current);
- if(c_dist<min_d)
- {min_d=c_dist; target=current;}
- if(args.attacking_me && current.target == character.name)
- {return current;}
- }
- return target;
- }
- function get_player(args)
- {
- //args:
- // max_att - max attack
- // min_xp - min XP
- // target: Only return monsters that target this "name" or player object
- // no_target: Only pick monsters that don't have any target
- // path_check: Checks if the character can move to the target
- var max_l=0,target=null;
- if(!args) args={};
- if(args && args.target && args.target.name) args.target=args.target.name;
- for(id in parent.entities)
- {
- var current=parent.entities[id];
- if(current.type=="monster" || current.dead) continue;
- var c_level=current.level;
- if(c_level>max_l)
- {max_l=c_level; target=current;}
- }
- return target;
- }
- var lastsupershot;
- function supershot(currentTarget) {
- //Cast supershot on target whenever you're off cd (cd is 30sec).
- if (!lastsupershot || new Date() - lastsupershot > 30000) {
- lastsupershot = new Date();
- parent.socket.emit("ability", {
- name: "supershot",
- id: currentTarget.id
- });
- }
- }
- var lastburst;
- function burst(currentTarget) {
- //Cast burst on target whenever you're off cd (cd is 10sec).
- if (!lastburst || new Date() - lastburst > 10000) {
- lastburst = new Date();
- parent.socket.emit("ability", {
- name: "burst",
- id: currentTarget.id
- });
- }
- }
- var lastcurse;
- function curse(target) {
- //Curse only if target hasn't been cursed and if curse is off cd (cd is 5sec).
- if ((!lastcurse || new Date() - lastcurse > 5000) && !target.cursed) {
- lastcurse = new Date();
- parent.socket.emit("ability", {
- name: "curse",
- id: target.id
- });
- }
- }
- function exchangeAll() {
- for(let slot in character.items) {
- let item = character.items[slot];
- if(item && G.items[item.name].e && G.items[item.name].e <= item.q) {
- parent.exchangeit(slot);
- setTimeout(exchangeAll, 750);
- return;
- }
- }
- }
- if(parent.exchangeit) {
- setTimeout(exchangeAll, 1000);
- }
- else {
- console.error("parent.exchangeit not available for the auto-compound script");
- }
- //Setup gui
- var gui_tl_gold = false; //Enable kill (or xp) till level & GPH [scripted session] = true, Disable kill (or xp) till level & GPH [scripted session] = false
- var gui_timer = false; //Enable time till level [scripted session] = true, Disable time till level [scripted session] = false
- var till_level = 0; //Kills till level = 0, XP till level = 1
- //GUI stuff
- var minute_refresh; //how long before the clock refreshes
- var last_target = null;
- var gold = character.gold;
- var date = new Date();
- var p = parent;
- function init_xptimer(minref) {
- minute_refresh = minref || 1;
- //p.add_log(minute_refresh.toString() + ' min until tracker refresh!', 0x00FFFF);
- let $ = p.$;
- let brc = $('#bottomrightcorner');
- brc.find('#xptimer').remove();
- let xpt_container = $('<div id="xptimer"></div>').css({
- background: 'black',
- border: 'solid gray',
- borderWidth: '5px 5px',
- width: '320px',
- height: '96px',
- fontSize: '28px',
- color: '#77EE77',
- textAlign: 'center',
- display: 'table',
- overflow: 'hidden',
- marginBottom: '-5px'
- });
- //vertical centering in css is fun
- let xptimer = $('<div id="xptimercontent"></div>')
- .css({
- display: 'table-cell',
- verticalAlign: 'middle'
- })
- .html('Estimated time until level up:<br><span id="xpcounter" style="font-size: 40px !important; line-height: 28px">Loading...</span><br><span id="xprate">(Kill something!)</span>')
- .appendTo(xpt_container);
- brc.children().first().after(xpt_container);
- }
- var last_minutes_checked = new Date();
- var last_xp_checked_minutes = character.xp;
- var last_xp_checked_kill = character.xp;
- //lxc_minutes = xp after {minute_refresh} min has passed, lxc_kill = xp after a kill (the timer updates after each kill)
- function update_xptimer() {
- if (character.xp == last_xp_checked_kill) return;
- let $ = p.$;
- let now = new Date();
- let time = Math.round((now.getTime() - last_minutes_checked.getTime()) / 1000);
- if (time < 1) return; //1s safe delay
- let xp_rate = Math.round((character.xp - last_xp_checked_minutes) / time);
- if (time > 60 * minute_refresh) {
- last_minutes_checked = new Date();
- last_xp_checked_minutes = character.xp;
- }
- last_xp_checked_kill = character.xp;
- let xp_missing = p.G.levels[character.level] - character.xp;
- let seconds = Math.round(xp_missing / xp_rate);
- let minutes = Math.round(seconds / 60);
- let hours = Math.round(minutes / 60);
- let counter = `${hours}h ${minutes % 60}min`;
- $('#xpcounter').text(counter);
- $('#xprate').text(`${ncomma(xp_rate)} XP/s`);
- }
- function initGUI() {
- let $ = p.$;
- let brc = $('#bottomrightcorner');
- let blc = $('#bottomleftcorner2');
- $('#xpui').css({
- fontSize: '25px',
- });
- brc.find('.xpsui').css({
- background: 'url("https://i.imgur.com/zCb8PGK.png")',
- backgroundSize: 'cover'
- });
- blc.find('#goldui').remove();
- blc.find('#goldgainloss').remove();
- let gb = $('<div id="goldui"></div>').css({
- background: 'black',
- border: 'solid gray',
- borderWidth: '5px 5px',
- width: '320px',
- height: '34px',
- lineHeight: '34px',
- fontSize: '25px',
- color: '#FFD700',
- textAlign: 'center',
- marginBottom: '-5px'
- });
- let ggl = $('<div id="goldgainloss"></div>').css({ //gold gain loss
- background: 'black',
- border: 'solid gray',
- borderWidth: '5px 5px',
- width: '320px',
- height: '34px',
- lineHeight: '34px',
- fontSize: '25px',
- color: '#FFD700',
- textAlign: 'center',
- marginBottom: '-5px'
- });
- $('#bottomleftcorner2').prepend(ggl);
- $('#bottomleftcorner2').prepend(gb);
- }
- if (till_level === 0)
- function updateGUI() {
- let $ = p.$;
- let xp_percent = ((character.xp / p.G.levels[character.level]) * 100).toFixed(2);
- let xp_string = `LV${character.level} ${xp_percent}%`;
- var goldPerHour = 0;
- if (p.ctarget && p.ctarget.type == 'monster') {
- last_target = p.ctarget.mtype;
- }
- if (last_target) {
- let xp_missing = p.G.levels[character.level] - character.xp;
- let monster_xp = p.G.monsters[last_target].xp;
- goldPerHour = Math.round((character.gold - gold) / ((new Date() - date) / 3600000));
- let party_modifier = character.party ? 1.5 / p.party_list.length : 1;
- let monsters_left = Math.ceil(xp_missing / (monster_xp * party_modifier * character.xpm));
- xp_string += ` (${ncomma(monsters_left)} kills to go!)`;
- }
- $('#xpui').html(xp_string);
- $('#goldui').html(goldPerHour.toLocaleString('en-US', {
- minimumFractionDigits: 0
- }) + " Gold/hour");
- $('#goldgainloss').html(ncomma(character.gold - gold) + " Gold gain/lost");
- } else if (till_level === 1)
- function updateGUI() {
- let $ = p.$;
- let xp_percent = ((character.xp / G.levels[character.level]) * 100).toFixed(2);
- let xp_missing = ncomma(G.levels[character.level] - character.xp);
- let xp_string = `LV${character.level} ${xp_percent}% (${xp_missing}) xp to go!`;
- var goldPerHour = 0;
- if (p.ctarget && p.ctarget.type == 'monster') {
- last_target = p.ctarget.mtype;
- }
- goldPerHour = Math.round((character.gold - gold) / ((new Date() - date) / 3600000));
- let party_modifier = character.party ? 1.5 / p.party_list.length : 1;
- $('#xpui').html(xp_string);
- $('#goldui').html(goldPerHour.toLocaleString('en-US', {
- minimumFractionDigits: 0
- }) + " Gold/hour");
- $('#goldgainloss').html(ncomma(character.gold - gold) + " Gold gain/lost");
- }
- function ncomma(x) {
- return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
- }
- function teleport(dest) {
- parent.socket.emit('transport', {to:teleDictionary[dest].to,s:teleDictionary[dest].s});
- }
- var teleDictionary = {
- "main" : {to:'main', s:0},
- "bank" : {to:'bank', s:0},
- "woffice" : {to:'woffice', s:0},
- "cave" : {to:'cave', s:0},
- "tunnel" : {to:'tunnel', s:0},
- "spookyforest" : {to:'halloween', s:0},
- "winterland" : {to:'winterland', s:0},
- "wbartender" : {to:'wbartender', s:0},
- "winter_cave" : {to:'winter_cave', s:0},
- "desertland" : {to:'desertland', s:0},
- "out_woffice" : {to:'main', s:1},
- "armadillos" : {to:'main', s:2},
- "out_bank" : {to:'main', s:3},
- "bees" : {to:'main', s:4},
- "goos" : {to:'main', s:5},
- "out_igoo" : {to:'main', s:6},
- "tavern" : {to:'main', s:8},
- "winterlandinn" : {to:'winterland', s:2},
- "out_pompom" : {to:'winterland', s:3},
- };
- partyup=true;
- var pwhitelist = [ 'ColorBoy','Iamanoob','nobodythat','nobodyhere'];
- if (partyup)
- {
- parent.window.addEventListener('keydown', (event) => {
- var keyName = event.key;
- if(keyName == 'p' || keyName == 'P')
- {
- invite_party_list();
- }
- }, false);
- setInterval(function()
- {
- if(!character.party)
- accept_party_list();
- },10000);
- }
- //Adds all whitelisted party memebers to party
- function invite_party_list() {
- for (members in pwhitelist) send_party_invite(pwhitelist[members],0);
- }
- //Accepts requests from whitelisted party memebers
- function accept_party_list() {
- for (members in pwhitelist)
- {
- accept_party_invite(pwhitelist[members]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement