Advertisement
Guest User

Pvp priest attempt #1

a guest
Jun 27th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var blacklist = ['chin', 'Arcuz', 'Sieghart', 'Spadar', 'jane1', 'SixSix', 'Choko', "Glass"];
  3.  
  4. var clock = 0, lastability = 0, target;
  5. setInterval(function()
  6.     {
  7.     drawstuff(get_targeted_monster());
  8.     },10);
  9. function drawstuff(target)
  10. {
  11.     clear_drawings();
  12.     draw_circle(character.real_x,character.real_y,character.range,.5,0xF00F);
  13.     if (target)
  14.         draw_circle(target.real_x,target.real_y,G.monsters[target.mtype].range,.5,0xFF0000);
  15. }
  16. function SeekAndDestroy() {
  17.         var lowest_health = lowest_health_partymember();
  18.     //If we have a target to heal, heal them. Otherwise attack a target.
  19.     if (lowest_health.health < 0.75) {
  20.         if (distance_to_point(lowest_health.real_x, lowest_health.real_y) < character.range) {
  21.             heal(lowest_health);
  22.         }
  23.         else {
  24.             move_to_target(lowest_health);
  25.         }
  26.     }
  27.  
  28.     if(character.hp<character.max_hp-200) parent.use('hp')
  29.     if(character.mp<character.max_mp-300) parent.use('mp')
  30.     clock = Date.now();
  31.  
  32.     if ( clock < parent.next_attack.getTime() ) return;
  33.  
  34.     // Search for characters to attack first (PVP)
  35.  
  36.     for ( var playername of blacklist ) {
  37.  
  38.             target = get_player(playername);
  39.  
  40.             if ( !target ) continue;
  41.  
  42.             if ( target.type != "character" || target.rip || !target.hp ) continue;
  43.  
  44.             set_message("Attacking "+target.name);
  45.  
  46.             if ( !in_attack_range(target) ) {
  47.  
  48.                 move(
  49.  
  50.                     character.real_x+(target.real_x-character.real_x),
  51.  
  52.                     character.real_y+(target.real_y-character.real_y)
  53.  
  54.                     );
  55.  
  56.             } else if ( target && target.hp && !target.dead ) {
  57.  
  58.                 Ability();
  59.  
  60.                 parent.player_attack.call(target);
  61.  
  62.                 last_attack = clock;
  63.  
  64.             }
  65.  
  66.             parent.ctarget= target;
  67.  
  68.  
  69.  
  70.             //Use a potion
  71.  
  72.             return; // No need to continue.
  73.  
  74.     }
  75.  
  76.  
  77.  
  78.     // Monster attack as a fallback
  79.  
  80.     target = get_nearest_monster({min_xp:50,max_att:character.attack});
  81.  
  82.     if ( !target ) return;
  83.  
  84.     set_message("Hunting "+target.name);
  85.  
  86.     if ( !in_attack_range(target) ) {
  87.  
  88.         move(
  89.  
  90.             character.real_x+(target.real_x-character.real_x),
  91.  
  92.             character.real_y+(target.real_y-character.real_y)
  93.  
  94.             );
  95.  
  96.     } else if ( target && target.hp && !target.dead ) {
  97.  
  98.         Ability();
  99.  
  100.         parent.monster_attack.call(target);
  101.  
  102.         last_attack = clock;
  103.  
  104.     }
  105. // Use a potion
  106.  
  107.    
  108.    
  109.     parent.ctarget = target;
  110.  
  111.     shift(41,'goldbooster');
  112.        
  113.     loot();
  114.  
  115.     shift(41,'xpbooster');
  116.  
  117.    
  118.  
  119. }
  120.  
  121. setInterval(function(){SeekAndDestroy()},350); // Timer every .35 sec
  122.  
  123.  
  124.  
  125. function Ability() {
  126.  
  127.     if ( clock < lastability + 15000 ) return;
  128.  
  129.     lastability = clock;
  130.  
  131.     switch ( character.ctype ) {
  132.  
  133.         case "warrior":
  134.  
  135.     parent.socket.emit("ability",{name:"charge"});
  136.            
  137.     if ( parent.ctarget ) parent.socket.emit("ability",{name:"taunt",id:parent.ctarget.id});
  138.  
  139.             return true;
  140.  
  141.         case "rogue":
  142.  
  143.             parent.socket.emit("ability",{name:"invis"});
  144.  
  145.             return true;
  146.  
  147.     }
  148.  
  149.     if ( !parent.ctarget ) return false;
  150.  
  151.     switch ( character.ctype ) {
  152.  
  153.         case "mage":
  154.  
  155.             parent.socket.emit("ability",{name:"burst",id:parent.ctarget.id});
  156.  
  157.             return true;
  158.  
  159.         case "priest":
  160.  
  161.             parent.socket.emit("ability",{name:"curse",id:parent.ctarget.id});
  162.  
  163.             return true;
  164.  
  165.         case "ranger":
  166.  
  167.             parent.socket.emit("ability",{name:"supershot",id:parent.ctarget.id});
  168.  
  169.             return true;
  170.  
  171.     }
  172.  
  173.     return false;
  174.  
  175. }
  176.  
  177. function NextTarget() {
  178.  
  179.     var min_xp = 50;
  180.  
  181.     var max_attack = character.attack * 0.75;
  182.  
  183.     for( id in parent.entities ) { // Search only in range first
  184.  
  185.         var current = parent.entities[id];
  186.  
  187.         if ( !current || current.type != "monster" || current.dead ) continue;
  188.  
  189.         if ( current.xp<min_xp || current.attack>=max_attack ) continue;
  190.  
  191.         var c_dist = parent.distance(character,current);
  192.  
  193.         if ( c_dist <= character.range ) return current;
  194.  
  195.     }
  196.  
  197.     target = get_nearest_monster({min_xp:min_xp,max_att:max_attack});
  198.  
  199. }
  200.  
  201. //leech: setInterval(function(){respawn();},1500);
  202. partyup=true;
  203.  
  204. var pwhitelist = ['Harold','Saboth', 'nobodyhere', 'nobodytanks'];
  205.  
  206. if (partyup)
  207. {
  208.     parent.window.addEventListener('keydown', (event) => {
  209.    var keyName = event.key;
  210.     if(keyName == 'p' || keyName == 'P')
  211.     {
  212.         invite_party_list();
  213.         request_party_list()
  214.     }        
  215. }, false);
  216.  
  217. setInterval(function()
  218. {
  219.     accept_party_list();
  220. },20000);
  221. }
  222.  
  223.  
  224. //Adds all whitelisted party memebers to party
  225. function invite_party_list() {
  226.   for (members in pwhitelist) send_party_invite(pwhitelist[members],0);
  227. }
  228.  
  229. //Accepts requests from whitelisted party memebers
  230. function accept_party_list() {
  231.     for (members in pwhitelist)
  232.     {
  233.         accept_party_request(pwhitelist[members]);
  234.         accept_party_invite(pwhitelist[members]);
  235.     }
  236. }
  237. function request_party_list() {
  238.   for (members in pwhitelist) send_party_request(pwhitelist[members],0)
  239.       }
  240.   for (members in pwhitelist) send_party_invite(pwhitelist[members],0)
  241.  
  242.   for (members in pwhitelist) send_party_request(pwhitelist[members],0);
  243.  
  244.  
  245. //Returns the party member with the lowest hp -> max_hp ratio.
  246. function lowest_health_partymember() {
  247.     var party = [];
  248.     if (parent.party_list.length > 0) {
  249.         var party = parent.party_list.map(
  250.             function (member) {
  251.                 return {
  252.                     name: member,
  253.                     entity: parent.entities[member]
  254.                 }
  255.             });
  256.     }
  257.     else {
  258.         //Player is not in a party
  259.         party.push(
  260.         {
  261.             name: character.name,
  262.             entity: character
  263.         });
  264.     }
  265.  
  266.     //Populate health percentages
  267.     for (id in party) {
  268.         var member = party[id];
  269.  
  270.         if (member.name == character.name) {
  271.             member.entity = character;
  272.         }
  273.  
  274.         if (member.entity != null) {
  275.             member.health = member.entity.hp / member.entity.max_hp;
  276.         }
  277.         else {
  278.             member.health = 1;
  279.         }
  280.     }
  281.  
  282.     //Order our party array by health percentage
  283.     party.sort(function (current, next) {
  284.         return current.health - member.health;
  285.     });
  286.  
  287.     //Return the lowest health
  288.     return party[0].entity;
  289. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement