What's new
  • Visit Rebornbuddy
  • Visit Resources
  • Visit API Documentation
  • Visit Downloads
  • Visit Portal
  • Visit Panda Profiles
  • Visit LLamamMagic

LazyRunner - A darkrunner combat routine

trumbe

Member
Joined
Apr 30, 2011
Messages
95
Reaction score
1
I've been playing a Darkrunner for awhile and have written this for combos, Its not perfect but im open to help to improve it so here is what I have so far:

Build:

http://earlygame.net/archeage/builds/72794-DarkRunning_2_0

Key Feature:
This plugin will not force your character to follow the target after it engages, so if you clear your target it will STOP.
This plugin does not chase anything if you deselect your target.

Features:

  • Will NOT loot
  • Will NOT clear your target if it dropped loot.
  • Will cast combos
  • Will try and follow your enemy

I do want to try and add make it cast shadow step and then cast shadowsmite but was having issue with it detecting distances.. if anyone has a possible solution i would greatly appreciate it.

Code:
using System;using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
 
namespace Follower
{
    public class LazyRunner : Core
    {
        public static string GetPluginAuthor()
        {
            return "Trumbe";
        }
 
        public static string GetPluginVersion()
        {
            return "0.1.0";
        }
 
        public static string GetPluginDescription()
        {
            return "LazyRunner for the DarkRunner Class";
        }
        public void UseSkillAndWait(string skillName, bool selfTarget = false)
        {
            //wait for cooldowns to finish first, before we try to cast skill
            while (me.isCasting || me.isGlobalCooldown)
                Thread.Sleep(50);
            if (!UseSkill(skillName, true, selfTarget))
            {
                if (me.target != null && GetLastError() == LastError.NoLineOfSight)
                {
                    //No line of sight, try come to target.
                    if (dist(me.target) <= 5)
                        ComeTo(me.target, 2);
                    else if (dist(me.target) <= 10)
                        ComeTo(me.target, 3);
                    else if (dist(me.target) < 20)
                        ComeTo(me.target, 8);
                    else
                        ComeTo(me.target, 8);
                }
            }
            //wait for cooldown again, after we start cast skill
            while (me.isCasting || me.isGlobalCooldown)
                Thread.Sleep(50);
        }
 
        public void PluginRun()
        {
            while (true)
            {
                while (me.target == null)
                // while we have no target, this loop will make the bot do nothing, and he will check back every 50ms, to see if we have a target
                {
                    Thread.Sleep(50);
                }
 
                while (me.target != null && isAttackable(me.target))
                // once we have a target, and this target is attackable (so its no NPC) the bot will jump into this loop.
                // this loops contains the "combat routine"
                {
                    if (angle(me.target, me) > 45 && angle(me.target, me) < 315)
                    // making sure we are faceing the target. If not, we will turn towards it
                    {
                        TurnDirectly(me.target);
                    }
 
                    //  if(mpp(me) <=25)
                    //   {
                    // UseSkill("Play Instrument", true, true);
                    //  Thread.Sleep(5000);
                    //}
 
                    if (dist(me.target) >= 12 || skillCooldown("Stalker's Mark") != 0)
                    {
                        ComeTo(me.target, 12);
                    }
                    if (skillCooldown("Stalker's Mark") == 0)
                    {
                        UseSkillAndWait("Stalker's Mark");
                        Log("Used: Stalker's Mark");
                    }
                    if (skillCooldown("Overwhelm") == 0)
                    {
                        UseSkillAndWait("Overwhelm");
                        Log("Used: Overwhelm");
                        if (skillCooldown("Shadowsmite") == 0)
                        {
                            UseSkillAndWait("Shadowsmite");
                            Log("Used: Shadowsmite");
                            if (skillCooldown("Precision Strike") != 0)
                            {
                                UseSkillAndWait("Precision Strike");
                                Log("Used: Precision Strike");
                            }
                        }
                    }
                    if (skillCooldown("Precision Strike") == 0)
                    {
                        UseSkillAndWait("Precision Strike");
                        Log("Used: Precision Strike");
                    }
                    if (skillCooldown("Charge") == 0)
                    {
                        UseSkillAndWait("Charge");
                        Log("Used: Charge");
                        if (skillCooldown("Behind Enemy Lines") != 0)
                        {
                            UseSkillAndWait("Behind Enemy Lines");
                            Log("Used: Behind Enemy Lines");
                        }
                    }
                    if (skillCooldown("Charge") == 0)
                    {
                        if (dist(me.target) >= 5)
                        {
                            ComeTo(me.target, 5);
                            UseSkillAndWait("Charge");
                            Log("Used: Charge");
                            if (skillCooldown("Triple Slash") == 0 && dist(me.target) <= 5)
                            {
                                UseSkillAndWait("Triple Slash");
                                Log("Used: Triple Slash");
                            }
                        }
                        UseSkillAndWait("Triple Slash");
                        Log("Used: Triple Slash");
                        if (skillCooldown("Whirlwind Slash") == 0 && dist(me.target) <= 5)
                        {
                            UseSkillAndWait("Whirlwind Slash");
                            Log("Used: Whirlwind Slash");
                        }
                    }
                    if (skillCooldown("Tiger Strike") == 0)
                    {
                        UseSkillAndWait("Tiger Strike");
                        Log("Used: Tiger Strike");
                    }
                    if (skillCooldown("Triple Slash") == 0)
                    {
                        for (int i = 0; i < 2; i++)
                            UseSkillAndWait("Triple Slash");
                        Log("Used: Triple Slash");
                    }
                    while (me.target != null && !isAlive(me.target) && me.target.dropAvailable && isAlive())
                    // we check if we have a target, then check if this target is NOT alive. Then we look if its lootable  and finaly whether we are alive or not.
                    // if all this is true, we will move towards the target and get our loot.
                    {
                        if (me.dist(me.target) > 3)
                            ComeTo(me.target, 1);
                        PickupAllDrop(me.target);
                    }
 
                    // once we looted the target, and made sure its dead we will clear our target.
                    if (me.target != null && !isAlive(me.target) && !me.target.dropAvailable)
                    {
                        CancelTarget();
                    }
                }
            }
        }
    }
}
 

Attachments

Last edited:
I doubt this even works, i quit AA for a LONG time haha only just coming back now so might update who knows..
 
you combos on the right =).

Incidentally, your plugin anymore does it not hit.

; O)

Thank you
 
Last edited:
you combos on the right =).

Incidentally, your plugin anymore does it not hit.

; O)

Thank you

Yeah it hasn't been updated in over a year iv been busy doing other stuff, ill try and update it soonish..
 
you combos on the right =).

Incidentally, your plugin anymore does it not hit.

; O)

Thank you

Check that out, updated it and is working and actually works pretty good, will work on it further at a later time but its good enough now
 
great, it works well thank you.

It deserves to be improved even when compared to the combo but it's good.
 
besides adding in the triple whirlwind idk what else to improve on it
 
cast TWART 14 15 second.

Behindcenemy lines and throw dagger on the target when the enemy is in range ?
 
Back
Top