• Visit Rebornbuddy
  • [Arms] Armed - Quick, dirty, simple, fast

    Discussion in 'Warrior' started by Apoc, Oct 22, 2012.

    1. Blarglarglarg

      Blarglarglarg New Member

      Joined:
      Oct 28, 2012
      Messages:
      57
      Likes Received:
      0
      Trophy Points:
      0
      Hmmm... would I be able to turn this into a simple CC for death knights by changing names of spells and such? I'm not well versed in coding CC's...but I would like a simple CC that works well for dk's too...currently aren't any out there atm.
       
    2. snoopdogg

      snoopdogg New Member

      Joined:
      Nov 12, 2012
      Messages:
      47
      Likes Received:
      0
      Trophy Points:
      0
      Compiler Error: c:\Users\Ros\Documents\HB\Routines\ArmedByApoc\ArmedByApoc.CS(1,1) : error CS0116: A namespace cannot directly contain members such as fields or methods'


      help
       
    3. amputations

      amputations Active Member

      Joined:
      Jan 6, 2011
      Messages:
      2,262
      Likes Received:
      11
      Trophy Points:
      38
      Yeah snoopdogg you can see pretty clearly whats wrong there, change Arm edbByApoc.CS to ArmedByApoc.CS
       
    4. snoopdogg

      snoopdogg New Member

      Joined:
      Nov 12, 2012
      Messages:
      47
      Likes Received:
      0
      Trophy Points:
      0
      Compiler Error: c:\Users\Ros\Documents\HB\Routines\ArmedByApoc\ArmedByApoc.CS(1,1) : error CS0116: A namespace cannot directly contain members such as fields or methods

      still get the same message

      + i have renamed the script the problem is forum
       
    5. amputations

      amputations Active Member

      Joined:
      Jan 6, 2011
      Messages:
      2,262
      Likes Received:
      11
      Trophy Points:
      38
      Why is it called Arm edByApoc.CS(1,1) ? It should be named only ArmedByApoc.CS

      Remove the Armed CR's and redownload it.
       
    6. snoopdogg

      snoopdogg New Member

      Joined:
      Nov 12, 2012
      Messages:
      47
      Likes Received:
      0
      Trophy Points:
      0
      my first message was. that i could not have space between the armed by apoc.cs
      second messsage was that i copy/paste

      in my folder there is not such (1,1) its just armedbyapoc.cs
      i dont know why it comes up in HB
      its clean name without spaces
       
    7. amputations

      amputations Active Member

      Joined:
      Jan 6, 2011
      Messages:
      2,262
      Likes Received:
      11
      Trophy Points:
      38
      That is weird, let me try recreate the problem myself. I havent tried the CC myself so Im gonna do that.
       
    8. snoopdogg

      snoopdogg New Member

      Joined:
      Nov 12, 2012
      Messages:
      47
      Likes Received:
      0
      Trophy Points:
      0
      thanks man
       
    9. snoopdogg

      snoopdogg New Member

      Joined:
      Nov 12, 2012
      Messages:
      47
      Likes Received:
      0
      Trophy Points:
      0
      I solved the problem by delete the file and making a new one and it worked :)
       
    10. amputations

      amputations Active Member

      Joined:
      Jan 6, 2011
      Messages:
      2,262
      Likes Received:
      11
      Trophy Points:
      38
      lol now I got the same problem as you had, how do you really install this? I am clueless, I tried to make a new folder in routines called "armed" and make a txt-file there where I pasted the code and named it "armed.cs" but it wont show when I open HB.
       
    11. snoopdogg

      snoopdogg New Member

      Joined:
      Nov 12, 2012
      Messages:
      47
      Likes Received:
      0
      Trophy Points:
      0
      what i did. delete the folder and text file

      make new folder named armedbyapoc
      name script armedbyapoc.cs and put it in folder.
       
    12. kronie253

      kronie253 New Member

      Joined:
      Jul 7, 2012
      Messages:
      68
      Likes Received:
      0
      Trophy Points:
      0
      How would i know if this is working?? I kinda new at this and im running grind bot with singular. I made the folders/file that was mentioned at the beginning. Im just not sure if its using it or not. I cant exactly load the file like i do a CC. He doesn't use shockwave i know for sure.
       
      Last edited: Dec 10, 2012
    13. Grim32

      Grim32 Member

      Joined:
      Oct 6, 2012
      Messages:
      128
      Likes Received:
      1
      Trophy Points:
      18
      Simple. You place this as suggested within the routines folder. One in game & on your character, & you load HB up, you will be provided with two (or more - depending on how many routines you have for Warr) choices (provided you still have singular in the folder). You select this CC, hit start, attack a mob, the CC will take over & begin slaughtering things. By the way remember the bot does not support movement, so you have to do all that yourself.

      -Grim
       
    14. kronie253

      kronie253 New Member

      Joined:
      Jul 7, 2012
      Messages:
      68
      Likes Received:
      0
      Trophy Points:
      0
      So i made a folder called "armedbyapoc" and a notepad text document named "armedbyapoc.cs" and i saved this inside it

      using System;using System.Collections.Generic;
      using System.Linq;


      using Styx;
      using Styx.CommonBot;
      using Styx.CommonBot.Routines;
      using Styx.Helpers;
      using Styx.TreeSharp;
      using Styx.WoWInternals;
      using Styx.WoWInternals.WoWObjects;


      using Action = Styx.TreeSharp.Action;


      namespace Armed
      {
      public class Routine : CombatRoutine
      {
      /// <summary>
      /// The name of this CombatRoutine
      /// </summary>
      /// <value>
      /// The name.
      /// </value>
      public override string Name { get { return "Armed"; } }


      /// <summary>
      /// The <see cref="T:Styx.WoWClass"/> to be used with this routine
      /// </summary>
      /// <value>
      /// The class.
      /// </value>
      public override WoWClass Class { get { return WoWClass.Warrior; } }


      private Composite _combat, _buffs;


      public override Composite CombatBehavior { get { return _combat; } }
      public override Composite PreCombatBuffBehavior { get { return _buffs; } }
      public override Composite CombatBuffBehavior { get { return _buffs; } }


      public override void Initialize()
      {
      _combat = CreateCombat();
      _buffs = CreateBuffs();
      }


      Composite CreateBuffs()
      {
      return Cast("Battle Shout", ret => !StyxWoW.Me.HasAura("Battle Shout"));
      }


      Composite CreateCombat()
      {
      return new PrioritySelector(


      // Interrupt please.
      //Cast("Pummel", ret => StyxWoW.Me.CurrentTarget.IsCasting && StyxWoW.Me.CurrentTarget.CanInterruptCurrentSpellCast),
      Cast("Impending Victory", ret => StyxWoW.Me.HealthPercent <= 90 && StyxWoW.Me.HasAura("Victorious")),


      // Kee SS up if we've got more than 2 mobs to get to killing.
      new Decorator(ret => UnfriendlyUnits.Count() >= 2,
      CreateAoe()),


      new Decorator(ret => StyxWoW.Me.CurrentTarget.HealthPercent <= 20,
      CreateExecuteRange()),
      new Decorator(ret => StyxWoW.Me.CurrentTarget.HealthPercent > 20,
      new PrioritySelector(
      Cast("Recklessness", ret => StyxWoW.Me.CurrentTarget.IsBoss),
      Cast("Avatar", ret => StyxWoW.Me.CurrentTarget.IsBoss),
      Cast("Skull Banner", ret => StyxWoW.Me.CurrentTarget.IsBoss),


      // Only drop DC if we need to use HS for TFB. This lets us avoid breaking HS as a rage dump, when we don't want it to be one.
      Cast("Deadly Calm", ret => NeedTasteForBloodDump),
      Cast("Heroic Strike", ret => NeedHeroicStrikeDump),


      Cast("Bloodbath", ret => StyxWoW.Me.CurrentTarget.IsBoss),


      Cast("Berserker Rage", ret => GetSpellCooldown("Colossus Smash").TotalSeconds < 1),
      Cast("Colossus Smash", ret => !StyxWoW.Me.CurrentTarget.HasAura("Colossus Smash")),
      Cast("Execute"),
      Cast("Mortal Strike"),


      //HeroicLeap(),


      Cast("Storm Bolt"),
      Cast("Dragon Roar"),
      Cast("Overpower"),


      // Rage dump!
      Cast("Slam", ret => (StyxWoW.Me.RagePercent >= 60 || StyxWoW.Me.CurrentTarget.HasAura("Colossus Smash")) && StyxWoW.Me.CurrentTarget.HealthPercent > 20),


      Cast("Battle Shout", ret => StyxWoW.Me.RagePercent < 30),
      Cast("Heroic Throw"),


      // Don't use this in execute range, unless we need the heal. Thanks!
      Cast("Impending Victory", ret => StyxWoW.Me.CurrentTarget.HealthPercent > 20 || StyxWoW.Me.HealthPercent < 50))
      )
      );
      }
      Composite CreateAoe()
      {
      return new PrioritySelector(
      Cast("Dragon Roar"),
      Cast("Shockwave"),
      Cast("Bladestorm", ret=>UnfriendlyUnits.Count() >= 4),
      Cast("Sweeping Strikes"),
      Cast("Thunder Clap")

      );
      }
      Composite CreateExecuteRange()
      {
      return new PrioritySelector(


      // Pop all our CDs. Get ready to truck the mob.
      Cast("Recklessness", ret => StyxWoW.Me.CurrentTarget.IsBoss),
      Cast("Skull Banner", ret => StyxWoW.Me.CurrentTarget.IsBoss),
      Cast("Avatar", ret => StyxWoW.Me.CurrentTarget.IsBoss),
      Cast("Bloodbath", ret => StyxWoW.Me.CurrentTarget.IsBoss),
      Cast("Berserker Rage"),
      new Action(ret => { UseTrinkets(); return RunStatus.Failure; }),


      Cast("Colossus Smash"),
      Cast("Execute"),
      Cast("Mortal Strike"),
      Cast("Overpower"),
      Cast("Storm Bolt"),
      Cast("Dragon Roar"),
      Cast("Slam"),
      Cast("Battle Shout")



      );
      }


      Composite HeroicLeap()
      {
      return new Decorator(ret=> StyxWoW.Me.CurrentTarget.HasAura("Colossus Smash") && SpellManager.CanCast("Heroic Leap"),
      new Action(ret=>
      {
      var tpos = StyxWoW.Me.CurrentTarget.Location;
      var trot = StyxWoW.Me.CurrentTarget.Rotation;
      var leapRight = WoWMathHelper.CalculatePointAtSide(tpos, trot, 5, true);
      var leapLeft = WoWMathHelper.CalculatePointAtSide(tpos, trot, 5, true);


      var myPos = StyxWoW.Me.Location;


      var leftDist = leapLeft.Distance(myPos);
      var rightDist = leapRight.Distance(myPos);


      var leapPos = WoWMathHelper.CalculatePointBehind(tpos, trot, 8);


      if (leftDist > rightDist && leftDist <= 40 && leftDist >= 8)
      leapPos = leapLeft;
      else if (rightDist > leftDist && rightDist <= 40 && rightDist >= 8)
      leapPos = leapLeft;


      SpellManager.Cast("Heroic Leap");
      SpellManager.ClickRemoteLocation(leapPos);
      StyxWoW.Me.CurrentTarget.Face();
      }));
      }


      void UseTrinkets()
      {
      var firstTrinket = StyxWoW.Me.Inventory.Equipped.Trinket1;
      var secondTrinket = StyxWoW.Me.Inventory.Equipped.Trinket2;


      if(firstTrinket != null && CanUseEquippedItem(firstTrinket))
      firstTrinket.Use();


      if(secondTrinket != null && CanUseEquippedItem(secondTrinket))
      secondTrinket.Use();


      }
      private static bool CanUseEquippedItem(WoWItem item)
      {
      // Check for engineering tinkers!
      string itemSpell = Lua.GetReturnVal<string>("return GetItemSpell(" + item.Entry + ")", 0);
      if (string.IsNullOrEmpty(itemSpell))
      return false;


      return item.Usable && item.Cooldown <= 0;
      }


      IEnumerable<WoWUnit> UnfriendlyUnits
      {
      get { return ObjectManager.GetObjectsOfType<WoWUnit>(true, false).Where(u => !u.IsDead && u.CanSelect && u.Attackable && !u.IsFriendly && u.IsWithinMeleeRange); }
      }


      bool NeedTasteForBloodDump
      {
      get
      {
      var tfb = StyxWoW.Me.GetAuraByName("Taste for Blood");
      if (tfb != null)
      {
      // If we have more than 3 stacks, pop HS
      if (tfb.StackCount >= 3)
      return true;


      // If it's about to drop, and we have at least 2 stacks, then pop HS.
      // If we have 1 stack, then a slam is better used here.
      if (tfb.TimeLeft.TotalSeconds < 1 && tfb.StackCount >= 2)
      return true;
      }
      return false;
      }
      }


      bool NeedHeroicStrikeDump
      {
      get
      {
      // Flat out, drop HS if we need to.
      if (StyxWoW.Me.RagePercent >= 90)
      return true;


      return NeedTasteForBloodDump;
      }
      }


      private delegate T Selection<out T>(object context);
      Composite Cast(string spell, Selection<bool> reqs = null)
      {
      return
      new Decorator(
      ret => ((reqs != null && reqs(ret)) || (reqs == null)) && SpellManager.CanCast(spell),
      new Action(ret => SpellManager.Cast(spell)));
      }


      public static TimeSpan GetSpellCooldown(string spell)
      {
      SpellFindResults results;
      if (SpellManager.FindSpell(spell, out results))
      {
      if (results.Override != null)
      return results.Override.CooldownTimeLeft;
      return results.Original.CooldownTimeLeft;
      }


      return TimeSpan.MaxValue;
      }
      }
      }

      After that i put that folder in routines. It is automatically using singular without giving me any option to switch.
       
      Last edited: Dec 13, 2012
    15. Al3xwh1t3

      Al3xwh1t3 New Member

      Joined:
      Dec 16, 2011
      Messages:
      115
      Likes Received:
      0
      Trophy Points:
      0
      Dont know , but my dps dropped for about 10k on all bosses...strange =/ Arms Warrior 493
       
    16. Galaxy99

      Galaxy99 New Member

      Joined:
      Dec 30, 2012
      Messages:
      1
      Likes Received:
      0
      Trophy Points:
      0
      First of all, thank you for this combat routine. Second of all, I have noticed that my character is not facing some targets. When I am mining and run into mobs, my character will sit next to the node facing away from the mob. Is there an option causing this or could it be the combat routine?

      TIL I am a dumbass. If you are having the same problem I was, you will need a plugin that implements movement and targeting.
       
      Last edited: Dec 30, 2012
    17. emrr.sam

      emrr.sam New Member

      Joined:
      Dec 17, 2012
      Messages:
      6
      Likes Received:
      0
      Trophy Points:
      0
      Im newbie to this langage, so i ask you if you can implant something to do hamstring in pvp, because this routines is fucking pretty good in pvp too.

      Thx alot dude
       
    18. lathrodectus

      lathrodectus Member

      Joined:
      Sep 13, 2011
      Messages:
      403
      Likes Received:
      5
      Trophy Points:
      18
      I've added hamstring, it will use it if your current target is a Player and is NOT snared / rooted / shackled / slowed.
      NOT tested, but it should work ok. NO pvp zone checks so it will use hamstring in every situation checking the above conditions.

      Edit: checks if target is player now.
       

      Attached Files:

      Last edited: Jan 3, 2013
    19. emrr.sam

      emrr.sam New Member

      Joined:
      Dec 17, 2012
      Messages:
      6
      Likes Received:
      0
      Trophy Points:
      0
      That spam hamstring alot, it dont wait the effect disapear on target and use all gcd actually...
       
    20. Vibetribe

      Vibetribe New Member

      Joined:
      Apr 22, 2012
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      0
      Nice CC!Is there any way to optimize it for grinding?
       

    Share This Page