• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Balance Druid not casting Rejuvs on self based on Singular Configuration Values

    Discussion in 'Honorbuddy Forum' started by shonishilent, Feb 6, 2013.

    1. shonishilent

      shonishilent New Member

      Joined:
      Jan 27, 2013
      Messages:
      16
      Likes Received:
      0
      Trophy Points:
      0
      I'd like some help in fixing this or perhaps adding this feature.

      For Druid Balance and Singular, when you use Class Config and then Select Class Specific, there is a section called Common. In that section you can define values for Rejuvenation Heath and Healing Touch Health as well as some other items.

      If we look at an OLD Singular .cs file we see the following (at Singular\ClassSpecific\Druid):

      this is in the Common.cs and is dated from 10/1/2010

      Code:
      /* Original Non Resto Healing
              #region Non Resto Healing
      
              public static Composite CreateNonRestoHeals()
              {
                  return
                      new Decorator(
                          ret => !SingularSettings.Instance.Druid.NoHealBalanceAndFeral && !StyxWoW.Me.HasAura("Drink"),
                          new PrioritySelector(
                              Spell.WaitForCast(false,false),
                              Spell.Heal("Rejuvenation",
                                  ret => StyxWoW.Me.HealthPercent <= SingularSettings.Instance.Druid.NonRestoRejuvenation &&
                                          !StyxWoW.Me.HasAura("Rejuvenation")),
                              Spell.Heal("Regrowth",
                                  ret => StyxWoW.Me.HealthPercent <= SingularSettings.Instance.Druid.NonRestoRegrowth &&
                                          !StyxWoW.Me.HasAura("Regrowth")),
                              Spell.Heal("Healing Touch",
                                  ret => StyxWoW.Me.HealthPercent <= SingularSettings.Instance.Druid.NonRestoHealingTouch)));
              }
      
              #endregion
               */
      you can see it uses the values in the Singular Configuration for Rejuvenation at this section:

      Code:
      Spell.Heal("Rejuvenation",
                                  ret => StyxWoW.Me.HealthPercent <= SingularSettings.Instance.Druid.NonRestoRejuvenation &&
                                          !StyxWoW.Me.HasAura("Rejuvenation")),

      however in the latest release of HB and also in the latest release of Singular itself we see the following area for non-resto heals:


      Code:
      #region Heal
      
              [Behavior(BehaviorType.Heal, WoWClass.Druid, WoWSpec.DruidFeral)]
              [Behavior(BehaviorType.Heal, WoWClass.Druid, WoWSpec.DruidGuardian)]
              public static Composite CreateDruidNonRestoHeal()
              {
                  return new PrioritySelector(
                      Spell.WaitForCast(true),
                      new Decorator(
                          ret => !Spell.IsGlobalCooldown(),
      
                          new Sequence(
                              new PrioritySelector(
      
                                  Spell.Cast("Healing Touch",
                                      ret => Me.HealthPercent <= 80
                                          && Me.ActiveAuras.ContainsKey("Predatory Swiftness")),
      
                                  Spell.Cast("Renewal", ret => Me.HealthPercent < DruidSettings.RenewalHealth ),
                                  Spell.BuffSelf("Cenarion Ward", ret => Me.HealthPercent < 75 || Unit.NearbyUnitsInCombatWithMe.Count() >= 2),
      
                                  CreateNaturesSwiftnessHeal( ret => Me.HealthPercent < 60),
      
                                  new Decorator(
                                      ret => Me.HealthPercent < 40,
                                      new PrioritySelector(
      
                                          Spell.Cast("Disorienting Roar", ret => Me.HealthPercent <= 25 && Unit.NearbyUnfriendlyUnits.Any(u => u.Aggro || (u.Combat && u.IsTargetingMeOrPet))),
                                          Spell.Cast("Might of Ursoc", ret => Me.HealthPercent < 25),
      
                                          // heal out of form at this point (try to Barkskin at least)
                                          new Throttle( Spell.BuffSelf( "Barkskin")),
      
                                          new Decorator(
                                              ret => SingularRoutine.CurrentWoWContext != WoWContext.Battlegrounds,
                                              new PrioritySelector(
                                                  Spell.Cast("Rejuvenation", on => Me, ret => Me.HasAuraExpired("Rejuvenation",1)),
                                                  Spell.Cast("Healing Touch", on => Me)
                                                  )
                                              )
                                          )
                                      )
                                  )
                              )
                          )
                      );
              }
      
              public static Composite CreateNaturesSwiftnessHeal(SimpleBooleanDelegate requirements = null)
              {
                  return CreateNaturesSwiftnessHeal(on => Me, requirements);
              }
      
              public static Composite CreateNaturesSwiftnessHeal(UnitSelectionDelegate onUnit, SimpleBooleanDelegate requirements = null)
              {
                  return new Decorator(
                      ret => onUnit != null && onUnit(ret) != null && requirements != null && requirements(ret),
                      new Sequence(
                          Spell.BuffSelf("Nature's Swiftness"),
                          new Wait(TimeSpan.FromMilliseconds(500), ret => Me.HasAura("Nature's Swiftness"), new ActionAlwaysSucceed()),
                          Spell.Cast("Healing Touch", ret => false, onUnit, req => true)
                          )
                      );
              }
      
              public static WoWUnit GetBestHealTarget()
              {
                  if (SingularRoutine.CurrentWoWContext == WoWContext.Normal || Me.HealthPercent < 40)
                      return Me;
      
                  return Unit.NearbyFriendlyPlayers.Where(p=>p.IsAlive).OrderBy(k=>k.GetPredictedHealthPercent(false)).FirstOrDefault();
              }
      
              #endregion

      and notice that the Singular COnfiguration settings aren't even used (Rejuvenation Health NOR Healing Touch) and that it's hard coded for:

      Code:
      ret => Me.HealthPercent < 40,

      and that the Rejuve won't kick in until health is below 40 and all other priority are met.


      I tried to create my OWN rejuv section above this or further up in the priority but it seems to not work and Rejuv isn't cast, but I must admit I don't have any good understanding of coding these things.

      So I would ask the following:

      1) Why was the settings from the Singular Configuration values removed and replaced with hard-coded values (at least for Common.cs for Druid)?
      2) can this be replaced back using the values?
      3) can we again, separate Rejuv and Healing Touch from each other so they aren't hard-coded within the same priority section?
      4) does someone have a quick code fix I can insert into this code section so that Rejuve will be cast if the health of my druid goes below 85 and rejuve isn't already in progress on me?

      thanks in advance-
       
    2. shonishilent

      shonishilent New Member

      Joined:
      Jan 27, 2013
      Messages:
      16
      Likes Received:
      0
      Trophy Points:
      0
      sorry double post.. the forums for HB are maniacally slow and almost intolerable and has been off and on for a couple weeks..
       
    3. imdasandman

      imdasandman Active Member

      Joined:
      Feb 2, 2011
      Messages:
      1,207
      Likes Received:
      6
      Trophy Points:
      38
      change that 40 to 85 would be my first guess...


      ret => Me.HealthPercent < 40
      to

      ret => Me.HealthPercent < 85
       
    4. blacknight1

      blacknight1 New Member

      Joined:
      Aug 8, 2012
      Messages:
      11
      Likes Received:
      1
      Trophy Points:
      0
      open balance.cs from same folder as you found common.cs in search for "rejuvenation"
      it should look like this:
      Code:
       
                          Spell.Cast("Rejuvenation", mov => false, on => Me, ret => _ImaMoonBeast && Me.HasAuraExpired("Rejuvenation", 1)),
      change that line to:
      Code:
       
                          Spell.Cast("Rejuvenation", mov => false, on => Me, ret => Me.HealthPercent < 85 && Me.HasAuraExpired("Rejuvenation", 1)),
      you can also set the health percent in the changed line, mine is set for 85 percent

      have fun
       

    Share This Page