• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • [Build] Wizard Tank Bot Build For Inferno Champion Farming.

    Discussion in 'Archives' started by Kazak, Jul 13, 2012.

    1. lypnn

      lypnn New Member

      Joined:
      Jul 15, 2012
      Messages:
      131
      Likes Received:
      4
      Trophy Points:
      0
      yes its a bug, like all the other bugs no one cares to report. Instead people write plugins which then stop to work at the next version.
       
    2. Kazak

      Kazak New Member

      Joined:
      May 29, 2011
      Messages:
      248
      Likes Received:
      5
      Trophy Points:
      0
      Potions works fine with belphegor. Diamond skin too can be both set in the guy.

      Using .146 http://www.thebuddyforum.com/demonbuddy-forum/combat-routines/58270-belphegor-test-release.html

      If only we could find some way to tune it well with wicked winds. The bot is not going for more than 3 tornadoes at once but with 40% crit and 20 arcane regen per crit we can get up to 6 at once and that's true good dps. The bot is not spammy enough imo.

      Edit: Here we go!! I found Wicked Twister was an AoE skill in Belph, this turned out that the bot had no skill left to single target so I switched Twister to 1.

      Belphegor\Routines\Wizard.cs

      Code:
      using System;using Belphegor.Composites;
      using Belphegor.Dynamics;
      using Belphegor.Helpers;
      using Belphegor.Settings;
      using Zeta;
      using Zeta.Common.Helpers;
      using Zeta.CommonBot;
      using Zeta.Internals.Actors;
      using Zeta.TreeSharp;
      using Action = Zeta.TreeSharp.Action;
      
      
      namespace Belphegor.Routines
      {
          public class Wizard
          {
              [Class(ActorClass.Wizard)]
              [Behavior(BehaviorType.Buff)]
              public static Composite WizardBuffs()
              {
                  return new PrioritySelector(
                      Common.CreateWaitForAttack(),
                      Common.CreateWaitForCast(),
                      new SelfCast(SNOPower.Wizard_MagicWeapon, extra => !ZetaDia.Me.HasBuff(SNOPower.Wizard_MagicWeapon)),
                      new SelfCast(SNOPower.Wizard_Familiar, extra => _familiarTimer.IsFinished, s => _familiarTimer.Reset()),
                      new SelfCast(SNOPower.Wizard_EnergyArmor, extra => !ZetaDia.Me.HasBuff(SNOPower.Wizard_EnergyArmor)),
                      new SelfCast(SNOPower.Wizard_StormArmor, extra => !ZetaDia.Me.HasBuff(SNOPower.Wizard_StormArmor)),
                      new SelfCast(SNOPower.Wizard_IceArmor, extra => !ZetaDia.Me.HasBuff(SNOPower.Wizard_IceArmor))
                      );
              }
      
      
      
      
              [Class(ActorClass.Wizard)]
              [Behavior(BehaviorType.Combat)]
              public static Composite WizardCombat()
              {
                  return
                      new PrioritySelector(ctx => CombatTargeting.Instance.FirstNpc,
                          new Decorator(ctx => ctx != null,
                              new PrioritySelector(
      
      
                          new SelfCast(SNOPower.Wizard_DiamondSkin, extra => ZetaDia.Me.HitpointsCurrentPct <= BelphegorSettings.Instance.Wizard.DiamondSkinHp || Unit.MeIncapacited),
      
      
                          Common.CreateWaitWhileIncapacitated(),
                          Common.CreateWaitForAttack(),
                          Common.CreateUsePotion(),
                          Movement.MoveTo(ctx => ((DiaUnit)ctx).Position, 30f),
      
      
                          new Decorator(ret => ZetaDia.Me.HasBuff(SNOPower.Wizard_Archon),
                              new PrioritySelector(
                                  new SelfCast(SNOPower.Wizard_Archon_SlowTime, extra => ZetaDia.Me.HitpointsCurrentPct <= 0.4),
                                  new SelfCast(SNOPower.Wizard_Archon_ArcaneBlast, ctx => Unit.IsElite((DiaUnit)ctx, 16f)
                                      || Clusters.GetClusterCount(ZetaDia.Me, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 16f) >= 2),
                                  new CastOnUnit(SNOPower.Wizard_Archon_DisintegrationWave, ctx => ((DiaUnit)ctx).ACDGuid),
                                  new CastOnUnit(SNOPower.Wizard_Archon_ArcaneStrike, ctx => ((DiaUnit)ctx).ACDGuid)
                                  )),
      
      
                          // Low health stuff
                          new SelfCast(SNOPower.Wizard_MirrorImage, extra => ZetaDia.Me.HitpointsCurrentPct <= BelphegorSettings.Instance.Wizard.MirrorImageHp),
                          new SelfCast(SNOPower.Wizard_SlowTime, extra => ZetaDia.Me.HitpointsCurrentPct <= BelphegorSettings.Instance.Wizard.SlowTimeHp),
      
      
      
      
                          // AoE spells.
                          new SelfCast(SNOPower.Wizard_WaveOfForce,
                              ctx => Clusters.GetClusterCount(ZetaDia.Me, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 12f) >= 2 ||
                              (Unit.IsElite((DiaUnit)ctx, 16f))),
      
      
                          new SelfCast(SNOPower.Wizard_FrostNova,
                              ctx => Clusters.GetClusterCount(ZetaDia.Me, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 16f) >= 2 ||
                                      (Unit.IsElite((DiaUnit)ctx, 16f))),
      
      
                          //Hydra
                          new CastAtLocation(SNOPower.Wizard_Hydra, ctx => ((DiaUnit)ctx).Position, ctx => _hydraTimer.IsFinished && !Unit.HasPet("Hydra")
                              && Unit.IsElite((DiaUnit)ctx) || Clusters.GetClusterCount((DiaUnit)ctx, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 12f) >= 4,
                              s => _hydraTimer.Reset()),
      
      
                          new SelfCast(SNOPower.Wizard_Archon, ctx => Unit.IsElite((DiaUnit)ctx) ||
                              Clusters.GetClusterCount(ZetaDia.Me, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 60f) >= BelphegorSettings.Instance.Wizard.ArchonAoECount),
      
      
                          new CastOnUnit(SNOPower.Wizard_EnergyTwister, ctx => ((DiaUnit)ctx).ACDGuid,
                              ctx => Clusters.GetClusterCount((DiaUnit)ctx, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 20f) >= [COLOR=#ff0000]1[/COLOR]),
      
      
      
      
                          new CastAtLocation(SNOPower.Wizard_Meteor, ctx => ((DiaUnit)ctx).Position,
                              ctx => _meteorTimer.IsFinished && (Unit.IsElite((DiaUnit)ctx) || 
                                  Clusters.GetClusterCount((DiaUnit)ctx, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 16f) >= 4),
                              s => _meteorTimer.Reset()),
      
      
                          new CastAtLocation(SNOPower.Wizard_Blizzard, ctx => ((DiaUnit)ctx).Position,
                              ctx => _blizzardTimer.IsFinished && Clusters.GetClusterCount((DiaUnit)ctx, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 16f) >= 4,
                              s => _blizzardTimer.Reset()),
      
      
                          new SelfCast(SNOPower.Wizard_ExplosiveBlast,
                              ctx => _explosiveBlast.IsFinished && (Unit.IsElite((DiaUnit)ctx, 12f) ||
                                      Clusters.GetClusterCount(ZetaDia.Me, CombatTargeting.Instance.LastObjects, ClusterType.Radius, 12f) >= 2),
                              s => _explosiveBlast.Reset()),
      
      
                          // Arcane power spenders.
                          new CastOnUnit(SNOPower.Wizard_ArcaneOrb, ctx => ((DiaUnit)ctx).ACDGuid),
                          new CastOnUnit(SNOPower.Wizard_RayOfFrost, ctx => ((DiaUnit)ctx).ACDGuid),
                          new CastOnUnit(SNOPower.Wizard_ArcaneTorrent, ctx => ((DiaUnit)ctx).ACDGuid),
                          new CastOnUnit(SNOPower.Wizard_Disintegrate, ctx => ((DiaUnit)ctx).ACDGuid),
      
      
                          // Signature spells.
                          new CastOnUnit(SNOPower.Wizard_SpectralBlade, ctx => ((DiaUnit)ctx).ACDGuid),
                          new CastOnUnit(SNOPower.Wizard_Electrocute, ctx => ((DiaUnit)ctx).ACDGuid),
                          new CastOnUnit(SNOPower.Wizard_ShockPulse, ctx => ((DiaUnit)ctx).ACDGuid),
                          new CastOnUnit(SNOPower.Wizard_MagicMissile, ctx => ((DiaUnit)ctx).ACDGuid)
                          )),
      
      
                         new Action(ret => RunStatus.Success)
                         );
              }
      
      
              #region Timers
              static Wizard()
              {
                  GameEvents.OnGameLeft += ResetTimers;
                  GameEvents.OnPlayerDied += ResetTimers;
              }
      
      
              static void ResetTimers(object sender, EventArgs e)
              {
                  _familiarTimer.Stop();
                  _blizzardTimer.Stop();
                  _hydraTimer.Stop();
                  _meteorTimer.Stop();
                  _explosiveBlast.Stop();
              }
      
      
              private static WaitTimer _explosiveBlast = new WaitTimer(TimeSpan.FromSeconds(5));
              private static WaitTimer _blizzardTimer = new WaitTimer(TimeSpan.FromSeconds(5));
              private static WaitTimer _meteorTimer = new WaitTimer(TimeSpan.FromSeconds(5));
              private static WaitTimer _familiarTimer = new WaitTimer(TimeSpan.FromMinutes(5));
              private static WaitTimer _hydraTimer = new WaitTimer(TimeSpan.FromSeconds(10));
      
      
              #endregion
      
      
      
      
              public static void WizardOnLevelUp(object sender, EventArgs e)
              {
                  if (ZetaDia.Me.ActorClass != ActorClass.Wizard)
                      return;
      
      
                  int myLevel = ZetaDia.Me.Level;
      
      
                  Logger.Write("Player leveled up, congrats! Your level is now: {0}",
                      myLevel
                      );
      
      
      
      
                  // ********** PRIMARY SLOT CHANGES **********
                  // Set Shock Pulse as primary.
                  if (myLevel == 3)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_ShockPulse, -1, 0);
                      Logger.Write("Setting Shock Pulse as Primary");
                  }
                  // Set Shock Pulse-Explosive bolts as primary.
                  if (myLevel == 9)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_ShockPulse, 1, 0);
                      Logger.Write("Changing rune for Shock Pulse: \"Explosive Bolts\"");
                  }
                  // Set Electrocute as primary.
                  if (myLevel == 15)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_Electrocute, -1, 0);
                      Logger.Write("Setting Electrocute as Primary");
                  }
                  // Set Electrocute-Chain lightning as primary.
                  if (myLevel == 22)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_Electrocute, 1, 0);
                      Logger.Write("Changing rune for Electrocute: \"Chain Lightning\"");
                  }
      
      
                  // ********** SECONDARY SLOT CHANGES **********
                  // Set Ray of Frost as secondary spell.
                  if (myLevel == 2)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_RayOfFrost, -1, 1);
                      Logger.Write("Setting Ray of Frost as Secondary");
                  }
                  // Set arcane orb as secondary
                  if (myLevel == 5)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_ArcaneOrb, -1, 1);
                      Logger.Write("Setting Arcane Orb as Secondary");
                  }
                  // Set arcane orb rune to "obliteration"
                  if (myLevel == 11)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_ArcaneOrb, 1, 1);
                      Logger.Write("Changing rune for Arcane Orb: \"Obliteration\"");
                  }
                  // ********** SKILL SLOTS 1-4 **********
                  // Set Frost Nova as slot 1
                  if (myLevel == 4)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_FrostNova, -1, 2);
                      Logger.Write("Setting Frost Nova as slot 1");
                  }
                  // Set Diamond Skin as slot 1
                  if (myLevel == 8)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_DiamondSkin, -1, 2);
                      Logger.Write("Setting Diamond Skin as slot 1");
                  }
                  // Level 9, slot 2 unlocked!
                  // Set Wave of Force as slot 2
                  if (myLevel == 9)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_WaveOfForce, -1, 3);
                      Logger.Write("Setting Wave of Force as slot 2");
                  }
                  // Level 14, slot 3 unlocked!
                  // Set Diamond Skin-Crystal Shell as slot 1, Ice Armor as slot 3
                  if (myLevel == 14)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_DiamondSkin, 1, 2);
                      Logger.Write("Changing rune for Diamond Skin: \"Crystal Shell\"");
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_IceArmor, -1, 4);
                      Logger.Write("Setting Ice Armor as slot 3");
                  }
                  // Set Wave of Force-Impactful Wave as slot 2
                  if (myLevel == 15)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_WaveOfForce, 1, 3);
                      Logger.Write("Changing rune for Wave of Force: \"Impactful Wave\"");
                  }
                  // Level 19, slot 4 unlocked!
                  // Set Explosive Blast as slot 4
                  if (myLevel == 19)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_ExplosiveBlast, -1, 5);
                      Logger.Write("Setting Explosive Blast as slot 4");
                  }
                  // Set Ice Armor-Chilling Aura as slot 3, Hydra as slot 4
                  if (myLevel == 21)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_IceArmor, 1, 4);
                      Logger.Write("Changing rune for Ice Armor: \"Chilling Aura\"");
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_Hydra, -1, 5);
                      Logger.Write("Setting Hydra as slot 4");
                  }
                  // Set Hydra-Arcane Hydra as slot 4
                  if (myLevel == 26)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_Hydra, 1, 5);
                      Logger.Write("Changing rune for Hydra: \"Arcane Hydra\"");
                  }
                  // Set Energy Armor as slot 3
                  if (myLevel == 28)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_EnergyArmor, -1, 4);
                      Logger.Write("Setting Energy Armor as slot 3");
                  }
                  // Set Energy Armor-Absorption as slot 3
                  if (myLevel == 32)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_EnergyArmor, 1, 4);
                      Logger.Write("Changing rune for Energy Armor: \"Absorption\"");
                  }
                  // Set Hydra-Venom Hydra as slot 4
                  if (myLevel == 38)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_Hydra, 3, 5);
                      Logger.Write("Changing rune for Hydra: \"Venom Hydra\"");
                  }
                  // Set Energy Armor-Pinpoint Barrier as slot 3
                  if (myLevel == 41)
                  {
                      ZetaDia.Me.SetActiveSkill(SNOPower.Wizard_EnergyArmor, 2, 4);
                      Logger.Write("Changing rune for Energy Armor: \"Pinpoint Barrier\"");
                  }
      
      
                  // ********** PASSIVE SKILLS **********
                  if (myLevel == 10)
                  {
                      // Blur - Decreases melee damage taken by 20%.
                      ZetaDia.Me.SetTraits(SNOPower.Wizard_Passive_Blur);
                  }
                  if (myLevel == 20)
                  {
                      // Blur - Decreases melee damage taken by 20%.
                      // Prodigy - 4 arcane power from signature casts
                      ZetaDia.Me.SetTraits(SNOPower.Wizard_Passive_Blur, SNOPower.Wizard_Passive_Prodigy);
                  }
                  if (myLevel == 30)
                  {
                      // Blur - Decreases melee damage taken by 20%.
                      // Prodigy - 4 arcane power from signature casts
                      // Astral Presence - +20 arcane power, +2 arcane regen
                      ZetaDia.Me.SetTraits(SNOPower.Wizard_Passive_Blur, SNOPower.Wizard_Passive_Prodigy, SNOPower.Wizard_Passive_AstralPresence);
                  }
      
      
              }
          }
      }
      Going to see how well it goes with Belph! In setting I switched Diamond Skin to 99, potions to 55% and I modified the Twister value.
       
      Last edited: Jul 21, 2012
    3. xergz

      xergz Member

      Joined:
      Apr 16, 2010
      Messages:
      309
      Likes Received:
      1
      Trophy Points:
      18
      tried belphegor 146,the twister part is not spammy enough sadly.belphegor like 3 twisters at a time max,then it just stands around waiting for 1 to expire..really frustrating with fast elites.

      also..
      survival tip if you find yourself dying a lot :
      EQUIP A SHIELD!
      i got a int vit mf shield with 1400 armor cheap on the ah...increased my surviability a lot!
       
      Last edited: Jul 22, 2012
    4. Kazak

      Kazak New Member

      Joined:
      May 29, 2011
      Messages:
      248
      Likes Received:
      5
      Trophy Points:
      0
      Yeah agreed shield is a must I will put it in the guide thx for input I forgot to mention!

      About Belph did you try it with my mod to Energy Twister on 1 target Xergz?

      On my side it seems to work very well at least with the test release and some tweaks. At least the bot will take potions.
       
    5. xergz

      xergz Member

      Joined:
      Apr 16, 2010
      Messages:
      309
      Likes Received:
      1
      Trophy Points:
      18
      yeah,i tried the mod to make twister single target..but belp still refuses to spam it even though we have the arcane power to do so.max i've seen is 3-4 twisters at a time
       
    6. Kazak

      Kazak New Member

      Joined:
      May 29, 2011
      Messages:
      248
      Likes Received:
      5
      Trophy Points:
      0
      You are right, didnt have time to see it in action yesterday but tried it again this morning, Generic is way more efficient.
       
    7. icebox

      icebox New Member

      Joined:
      Jun 25, 2012
      Messages:
      95
      Likes Received:
      0
      Trophy Points:
      0
      any idea of the general cost of a formidable build? debating on whether to build another barb build which cost under 15 mil or this.
       
    8. xergz

      xergz Member

      Joined:
      Apr 16, 2010
      Messages:
      309
      Likes Received:
      1
      Trophy Points:
      18
      i got cheap gall res gear from the ah..on a US server,my wizard has cost ~6 mil.maybe less
       
    9. xergz

      xergz Member

      Joined:
      Apr 16, 2010
      Messages:
      309
      Likes Received:
      1
      Trophy Points:
      18
      i wonder how the bot would perform with belp routine and archon instead of fimiliar..if it works the way a barbarian I.E : blow cooldown on elites,it may just work..will try it out tomorrow.if anyone tries it before that..please post results.thanks
       
    10. Kazak

      Kazak New Member

      Joined:
      May 29, 2011
      Messages:
      248
      Likes Received:
      5
      Trophy Points:
      0
      Bad side of Archon in a tank build is that Swapping to archon makes you more vulnerable as you cannot abuse Diamond skin and wicked winds will stop generating mass criticals cooldown reduction, just saying, this might work who knows!!
       
    11. dumptruck

      dumptruck New Member

      Joined:
      Jun 14, 2012
      Messages:
      99
      Likes Received:
      0
      Trophy Points:
      0
      my wizard won't attack any monsters at all with the generic routine, any idea what is wrong? i have all settings as recommended in the first post the same and have tried db 180 and 185
       
    12. dumptruck

      dumptruck New Member

      Joined:
      Jun 14, 2012
      Messages:
      99
      Likes Received:
      0
      Trophy Points:
      0
      nevermind, it was a problem with a plugin "giles anti-object/pickup stuff"
       
    13. okostibi

      okostibi New Member

      Joined:
      Jun 19, 2012
      Messages:
      14
      Likes Received:
      0
      Trophy Points:
      0

      I'm no expert here, but my guess is, you have a function called CreateUsePotion, but there is no call for it.

      There are other Create* functions, which is called on pulse:

      I belive, if you put CreateUsePotion, it would work, but never had a chance to try it yet, tomorrow I will my a new char where i could test it
       
    14. rizarjay

      rizarjay Member

      Joined:
      Jan 29, 2010
      Messages:
      397
      Likes Received:
      2
      Trophy Points:
      18
      Hmm.. Started using this a few days ago, and for the most part, it works well, but it definitely dies quite a bit.. I wonder what I'm doing wrong. :p

      23k HP
      21k DPS
      33% Crit Chance
      960+ all resists
      215 LoH
      10 Arcane Power on Crit

      The Arcane Power on crit is a little lower than the recommended, but I don't think that's the problem, since it doesn't seem to be struggling with arcane power.
       
      Last edited: Jul 25, 2012
    15. lypnn

      lypnn New Member

      Joined:
      Jul 15, 2012
      Messages:
      131
      Likes Received:
      4
      Trophy Points:
      0
      aim for
      30k HP
      40% crit chance
      1.1k arcane res
      400 LoH
      and more APoC from wand and hat
       
    16. xergz

      xergz Member

      Joined:
      Apr 16, 2010
      Messages:
      309
      Likes Received:
      1
      Trophy Points:
      18
      Try making diamond skin "on cool down" in generic settings.also,if you stay above 20k dps,you can change your rune on either familiar to the guardian rune or magic weapon to the life on hit rune.
      helped me initially
       
    17. zacke10

      zacke10 New Member

      Joined:
      Jun 25, 2012
      Messages:
      18
      Likes Received:
      0
      Trophy Points:
      1
      So this is working perfectly for me, except one big problem... My wizard dies against Arcane Enhanced creatures... The damage unbelieveable...

      My stats:
      23k HP
      30k DPS
      41% Crit Chance
      920+ all resists (Arcane 1004)
      423 LoH

      I wont go with profit if I dont solve the arcane enhanced creature problem... Can anyone share a few tips on how to survive against them?
       
    18. Gardettos

      Gardettos New Member

      Joined:
      Jun 11, 2012
      Messages:
      522
      Likes Received:
      6
      Trophy Points:
      0
    19. lypnn

      lypnn New Member

      Joined:
      Jul 15, 2012
      Messages:
      131
      Likes Received:
      4
      Trophy Points:
      0
      Having the same problem still even with 35k hp / 1120 arcane / 400 loh and 1k life per second, guess I'll try out the new plugin for arcane sentries in the plugin forum now.
       
    20. zacke10

      zacke10 New Member

      Joined:
      Jun 25, 2012
      Messages:
      18
      Likes Received:
      0
      Trophy Points:
      1

    Share This Page