• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • [Raid Bot]Master Frost Death Knight

    Discussion in 'Archives' started by Vastico, Feb 24, 2012.

    1. Vastico

      Vastico New Member

      Joined:
      Jul 28, 2011
      Messages:
      424
      Likes Received:
      10
      Trophy Points:
      0
      Master Frost Death Knight

      Introduction
      This custom class is built around the Raid Bot, this can be found here: http://www.thebuddyforum.com/honorb...45436-botbase-raidbot-30fps-cc-execution.html. I have used Noxxic.com, Elitist Jerks, MMO Champion to get the best rotation and priority order.

      For more information on Master Frost please see here: Frost DPS | Winter of Discontent [4.3] - Elitist Jerks

      This custom class does not pop any cooldowns so they are for you to do manually.

      Media
      No media yet, I have modified this from an old Singular class of mine.

      Source - Last Update: 9th May 2012 @ 3:00PM

      GitHub - https://github.com/MichaelRob92/masterfrost-death-knight

      Code:
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using Styx.Combat.CombatRoutine;
      using TreeSharp;
      using CommonBehaviors.Actions;
      using Styx;
      using Styx.Logic.Combat;
      using Styx.WoWInternals.WoWObjects;
      using Styx.Logic.Pathing;
      using Styx.Helpers;
      using System.Drawing;
      using Styx.WoWInternals;
      
      namespace RaidBot
      {
      
          public class DeathKnightMasterFrostRoutine : CombatRoutine
          {
      
              public delegate WoWUnit UnitSelectionDelegate(object context);
      
              public delegate bool SimpleBooleanDelegate(object context);
      
              public delegate WoWPoint LocationRetriverDelegate(object context);
      
              public override WoWClass Class
              {
                  get { return WoWClass.DeathKnight; }
              }
      
              public override string Name
              {
                  get { return "MasterFrost DeathKnight"; }
              }
      
              private Composite _root;
      
              public override Composite CombatBehavior
              {
                  get
                  {
                      return _root ?? (_root = GetCombatBehavior());
                  }
              }
      
              private Composite GetCombatBehavior()
              {
                  return new PrioritySelector(
                      EnsureTarget(),
                      Cast("Blood Tap", ret => GetAllRuneCooldowns(1, 2) > 2),
      
                      Cast("Outbreak", ret => !HasMyAuraTimeLeft(StyxWoW.Me.CurrentTarget, "Frost Fever", 2) || !HasMyAuraTimeLeft(StyxWoW.Me.CurrentTarget, "Blood Plague", 2)),
                      Cast("Howling Blast", ret => !HasMyAuraTimeLeft(StyxWoW.Me.CurrentTarget, "Frost Fever", 2)),
                      Cast("Plague Strike", ret => !HasMyAuraTimeLeft(StyxWoW.Me.CurrentTarget, "Blood Plague", 2) && StyxWoW.Me.UnholyRuneCount == 2),
      
                      Cast("Obliterate", ret => (StyxWoW.Me.DeathRuneCount == 2 && StyxWoW.Me.FrostRuneCount == 2) ||
                          (StyxWoW.Me.DeathRuneCount == 2 && StyxWoW.Me.UnholyRuneCount == 2) ||
                          (StyxWoW.Me.UnholyRuneCount == 2 && StyxWoW.Me.FrostRuneCount == 2)),
                      Cast("Obliterate", ret => StyxWoW.Me.DeathRuneCount == 2 || StyxWoW.Me.UnholyRuneCount == 2 || StyxWoW.Me.FrostRuneCount == 2),
                      
                      Cast("Frost Strike", ret => StyxWoW.Me.CurrentRunicPower >= 110),
                      Cast("Howling Blast", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Freezing Fog")),
                      Cast("Obliterate", ret => StyxWoW.Me.UnholyRuneCount == 2 || GetAllRuneCooldowns(5, 6) < 2),
                      Cast("Howling Blast", ret => StyxWoW.Me.CurrentRunicPower < 90),
                      Cast("Frost Strike", ret => StyxWoW.Me.CurrentRunicPower > 90),
                      Cast("Howling Blast", ret => StyxWoW.Me.CurrentRunicPower < 60),
      
                      Cast("Frost Strike"),
      
                      Cast("Empower Rune Weapon", ret => GetAllRuneCooldowns(1, 2) + GetAllRuneCooldowns(3, 4) + GetAllRuneCooldowns(5, 6) > 8),
      
                      Cast("Horn of Winter")
                  );
              }
      
              public Composite Cast(string spellName)
              {
                  return Cast(spellName, ret => StyxWoW.Me.CurrentTarget);
              }
      
              public Composite Cast(string spellName, UnitSelectionDelegate unit)
              {
                  return Cast(spellName, unit, ret => true);
              }
      
              public Composite Cast(string spellName, SimpleBooleanDelegate requirement)
              {
                  return Cast(spellName, ret => StyxWoW.Me.CurrentTarget, requirement);
              }
      
              public Composite Cast(string spellName, UnitSelectionDelegate unit, SimpleBooleanDelegate requirement)
              {
                  return new Decorator(
                      ctx => SpellManager.CanCast(SpellManager.Spells[spellName], unit(ctx), false, false, true) && requirement(ctx),
                      new TreeSharp.Action(
                          ret =>
                          {
                              Logging.Write(Color.Crimson, "Spell Cast[{0}]", spellName);
                              SpellManager.Cast(spellName, unit(ret));
                          }
                      )
                  );
              }
      
              public Composite CastOnGround(string spellName, LocationRetriverDelegate onLocation, SimpleBooleanDelegate requirement)
              {
                  return new Decorator(
                      ret =>
                          requirement(ret) && onLocation != null && SpellManager.CanCast(spellName)
                              && (StyxWoW.Me.Location.Distance(onLocation(ret)) <= SpellManager.Spells[spellName].MaxRange || SpellManager.Spells[spellName].MaxRange == 0),
                      new Sequence(
                          new TreeSharp.Action(ret => SpellManager.Cast(spellName)),
                          new WaitContinue(1, ret => StyxWoW.Me.CurrentPendingCursorSpell != null && StyxWoW.Me.CurrentPendingCursorSpell.Name == spellName, new ActionAlwaysSucceed()),
                          new TreeSharp.Action(ret => LegacySpellManager.ClickRemoteLocation(onLocation(ret)))
                      )
                  );
              }
      
              public Composite EnsureTarget()
              {
                  return new Decorator(ctx => StyxWoW.Me.CurrentTarget == null, new ActionAlwaysSucceed());
              }
      
              public bool HasMyAuraTimeLeft(WoWUnit unit, string aura, int timeLeft)
              {
                  return unit.GetAllAuras().Any(a => a.Name == aura && a.CreatorGuid == StyxWoW.Me.Guid && a.TimeLeft.TotalSeconds > timeLeft);
              }
      
              public int GetAllRuneCooldowns(params int[] runes)
              {
                  int cooldown = 0;
                  foreach (int rune in runes)
                  {
                      cooldown += GetRuneCooldown(rune);
                  }
                  return cooldown;
              }
      
              public int GetRuneCooldown(int rune)
              {
                  float finish = Lua.GetReturnVal<float>(string.Format("local start, dur, ready = GetRuneCooldown({0}); local finish = start + dur; return finish", rune), 0);
                  float time_now = Lua.GetReturnVal<float>("return GetTime()", 0);
                  return (int)Math.Round(finish - time_now);
              }
      
          }
      
      }
      
      Credits
      • Singular Developers
      • Apoc
       
      Last edited: May 20, 2012
      emmark and shlord like this.
    2. Danamian

      Danamian New Member

      Joined:
      Jan 15, 2010
      Messages:
      77
      Likes Received:
      0
      Trophy Points:
      0
      Works great, lazyraider was 11k dps and this is 15-17k!
       
    3. Vastico

      Vastico New Member

      Joined:
      Jul 28, 2011
      Messages:
      424
      Likes Received:
      10
      Trophy Points:
      0
      Where you Dual Wielding? You need to be dual wielding and to reforge into mastery instead of haste for this to work very very well
       
    4. SkiCycleFun

      SkiCycleFun New Member

      Joined:
      Jan 18, 2012
      Messages:
      87
      Likes Received:
      0
      Trophy Points:
      0
      This is a killer CC thanks mucho
       
    5. Danamian

      Danamian New Member

      Joined:
      Jan 15, 2010
      Messages:
      77
      Likes Received:
      0
      Trophy Points:
      0
      I was duel wielding but my gear kinda sucks ;)
       
    6. dshiizznitt

      dshiizznitt Member

      Joined:
      Feb 14, 2010
      Messages:
      82
      Likes Received:
      0
      Trophy Points:
      6
      gonna try this out and see how it compares to my PQR Masterfrost profile
       
    7. babydragon

      babydragon New Member

      Joined:
      Aug 30, 2011
      Messages:
      40
      Likes Received:
      0
      Trophy Points:
      0
      Its working great for me thanks alot :)
       
    8. shlord

      shlord Member

      Joined:
      Jan 4, 2012
      Messages:
      457
      Likes Received:
      1
      Trophy Points:
      18
      just tested, worked great, idk about dps cuz im only 84 but, it worked really well and FAST ;O

      +rep <3
       
    9. Rusty_Trombone

      Rusty_Trombone Member

      Joined:
      Oct 30, 2011
      Messages:
      348
      Likes Received:
      0
      Trophy Points:
      16
      Another very good CC. The only thing I observed is that it cannot find a spare GCD to cast Horn of Winter.
       
    10. Rohalan

      Rohalan Member

      Joined:
      May 6, 2010
      Messages:
      50
      Likes Received:
      0
      Trophy Points:
      6
      nice cc, on a trainingdummy i make with my toon (itemlevel 385) 25dps, more then i doo with combatbot (17,5k).
       
    11. bmertler

      bmertler Member

      Joined:
      Jul 15, 2010
      Messages:
      248
      Likes Received:
      1
      Trophy Points:
      18
      if you were doing 17.5 using combat bot you are doing something wrong, my dk does around 30k at 380 on dummy and raid bosses.


      I AM NOT SAYING THE OP's CC DOESNT WORK BETTER.
       
    12. thaone0523

      thaone0523 Member

      Joined:
      Jul 25, 2011
      Messages:
      130
      Likes Received:
      0
      Trophy Points:
      16
      I got the RaidBot after your post. Thanks for that.

      My question is the code you have in your first page do i use that as its own cc? Where is the CC he is talking about that everyone has used?
       
    13. Vitaman

      Vitaman New Member

      Joined:
      Nov 20, 2011
      Messages:
      45
      Likes Received:
      0
      Trophy Points:
      0
      Do you cut paste code or was CC file taken down?
       
    14. ChrisAttackk

      ChrisAttackk New Member

      Joined:
      Apr 4, 2011
      Messages:
      229
      Likes Received:
      1
      Trophy Points:
      0
      This thing is amazing!!!! Doing 25k in Full PvP gear!
       
    15. thatgliderguy

      thatgliderguy New Member

      Joined:
      Jan 7, 2012
      Messages:
      164
      Likes Received:
      0
      Trophy Points:
      0
      Im new to honor buddy im not sure how to make this work?

      Could anyone help me quickly please as its not a custom class??
       
    16. thatgliderguy

      thatgliderguy New Member

      Joined:
      Jan 7, 2012
      Messages:
      164
      Likes Received:
      0
      Trophy Points:
      0
      ignore my last comment, pulled 36k dps on zon'ozz with this in LFR i think thats pretty good?

      Running dw 387 itemlvl
       
    17. Rusty_Trombone

      Rusty_Trombone Member

      Joined:
      Oct 30, 2011
      Messages:
      348
      Likes Received:
      0
      Trophy Points:
      16
      I wonder if we change the fps value in the Bot, will it increase the performance?
       
    18. thatgliderguy

      thatgliderguy New Member

      Joined:
      Jan 7, 2012
      Messages:
      164
      Likes Received:
      0
      Trophy Points:
      0
      the only thing i can say for is the bot doesn't use obliterate enought -> this is my dps outlay - 1 frost strike - howling - meele - oblit.

      according to my recount thats what its saying, obliterate should be first tbh
       
    19. Vastico

      Vastico New Member

      Joined:
      Jul 28, 2011
      Messages:
      424
      Likes Received:
      10
      Trophy Points:
      0
      "Master" Frost

      Master Frost isn't supposed to use Obliterate as much...
       
    20. incognitto

      incognitto New Member

      Joined:
      Aug 15, 2010
      Messages:
      404
      Likes Received:
      3
      Trophy Points:
      0
      Here's the CC as a file for those who dont know wtf to do

      Also are u able to implement the code for the 2 major cd's Pillar of Frost(1 min CD) and Raise Dead(3min CD)(please ensure pillar is cast first then raise dead is cast straight after as ur ghoul takes on the extra atribute from ur pillar of frost cd)?
       

      Attached Files:

      Last edited: Mar 3, 2012

    Share This Page