• Visit Rebornbuddy
  • perfect balance not activating?

    Discussion in 'Rebornbuddy Forum' started by exaccuss, Jan 29, 2014.

    1. exaccuss

      exaccuss Active Member

      Joined:
      Nov 10, 2013
      Messages:
      1,021
      Likes Received:
      6
      Trophy Points:
      38
      I have tried stuff like Apply("Perfect Balance", r => !Core.Target.HasAura("Perfect Balance")) and Cast("Perfect Balance"), but it doesn't seem to make PF activate at all.
       
    2. Grimmjow

      Grimmjow New Member

      Joined:
      Nov 11, 2013
      Messages:
      118
      Likes Received:
      1
      Trophy Points:
      0
      Apply("Perfect Balance", r => !Core.Player.HasMyAura("Perfect Balance"))

      Try that.
       
    3. exaccuss

      exaccuss Active Member

      Joined:
      Nov 10, 2013
      Messages:
      1,021
      Likes Received:
      6
      Trophy Points:
      38
      still nothing.. perhaps my rotation is wrong?


      // Flank Rotation Start
      Cast("Snap Punch", r=> Core.Player.CurrentTarget.IsFlanking),
      Cast("Twin Snakes", r=> Core.Player.CurrentTarget.IsFlanking),
      Cast("Dragon Kick", r=> Core.Player.CurrentTarget.IsFlanking),
      Apply("Perfect Balance", r => !Core.Player.HasMyAura("Perfect Balance"))

      // Flank Rotation End
       
    4. Grimmjow

      Grimmjow New Member

      Joined:
      Nov 11, 2013
      Messages:
      118
      Likes Received:
      1
      Trophy Points:
      0
      For my summoner buffs i had to actually put r => Core.Player for them to work, it might be the same issue here.

      Apply("Perfect Balance", r => !Core.Player.HasMyAura("Perfect Balance"), r =>Core.Player)


      Try that, if that doesn't work i can help troubleshoot when i get done at work.
       
    5. exaccuss

      exaccuss Active Member

      Joined:
      Nov 10, 2013
      Messages:
      1,021
      Likes Received:
      6
      Trophy Points:
      38
      Code:
      #region ChangeLogs
      /*
       * v1.0 December 7th, 2013
       * - Initial build
       * 
       * v1.1 December 8th, 2013
       * - Fix: Trying to find non existant party member.
       * - Fix: Change the ground casting to the latest.
       * - Performance: Added an update timer
       * 
       * v1.2 
       * - Function: Lower level AoE rotations
       * 
       * v1.3
       * - Fix: Ground target trying to attack when there's no enemy selected.
       * - Fix: Readjust priorities. Straight shot keeps getting superseeded by ballads.
       * - Change: Separate the ballad switches into Mage, Army, Foe. Not much use of Foe when there's no BLM.
       * 
       * v1.4
       * - Change: Party member in another map is considered null as well. Change the error message to reflect that.
       * - Change: Change attack pattern behaviour. Previous: Cast whatever is in the priority. Current: AoE until TP threshold then do single until TP recover.
       * - Function: Detect if you're currently moving. Don't try to ballad when you're moving.
       * 
       * Known error:
       * - Red error message when trying to attack. 
       *   Possible cause: Trying to cast skill on a dead enemy. 
       *   Note: The way the bot work(I think) is it queue/spam the next attack. So there's an attack in the queue but no target. Need to find how to flush the queue.
       * - Trying to cast ballad twice.
       *   Possible cause: Previous attempt at casting the ballad was interrupted.
       *   Note: The interrupted spell was interrupted so the bot tried to cast it again while the old one is still in the queue. Added a function to detect movement to minimize the happening but, still, needs to find out how to flush the queue. 
       *   
       * ToDo:
       * - Party member error.
       * - Retrieve variable values from external file.
       * - UI.
       * - On the fly changes to variables.
       * 
       */
      #endregion
      
      using System;
      using System.Diagnostics;
      using System.Collections.Generic;
      using System.Linq;
      using System.Runtime.InteropServices;
      using System.Runtime.Remoting.Messaging;
      using System.Text;
      using System.Windows.Forms;
      using ff14bot;
      using ff14bot.Behavior;
      using ff14bot.Enums;
      using ff14bot.Helpers;
      using ff14bot.Managers;
      using ff14bot.Navigation;
      using ff14bot.Objects;
      using TreeSharp;
      using Action = TreeSharp.Action;
      
      namespace Kupo.Rotations
      {
          public class PugilistMonk : KupoRoutine
          {
              // Variables Start
              // Diagnostic purposes
              private static double m_checkTimer = 100; // Check party status every n miliseconds.
      
              // AoE
              private static bool m_useAOE = false; // Set to false to only use single target.
              private static int m_AOERange = 5; // Radius to check for other enemy.
              private static int m_AOEEnemy = 1; // How many other enemy before running the AoE rotation.
              private static int m_AOETP = 30; // In percent. Stop using the AoE rotation when our TP is lower than how many.
      
              private static bool m_useGroundSpell = false; // Set to false to not use any ground spells. Need to set separate from m_useAOE.
              private static bool m_useRainofDeath = false; // Set to false to not use Rain of Death(10% damage reduction). Need to set separate from m_useAOE.
              // Caveat: While separate from m_useAOE. It also control the AoE behaviour.
              // If m_useRainofDeath set to false. You will only do Wide Volley, if you have it, or Quick Nock.
              // Might be useful since Rain of Death cost 200TP
      
             
              // Helper variables. Don't change.
              private bool m_isMoving = false;
              private Vector3 m_oldLocation = Core.Player.Location;
      
              private DateTime m_startTime = DateTime.UtcNow;
              // Helper variables end
      
              private Composite CastGroundSpell(string spell, Selection<Vector3> onLocation, Selection<bool> reqs = null, int msLeft = 0, bool ignoreCanCast = false)
              {
                  return
                      new Decorator(
                          ret =>
                          {
                              if (reqs != null && !reqs(ret)) return false;
      
                              if (!ignoreCanCast && !Actionmanager.CanCast(spell, Core.Player.CurrentTarget)) return false;
      
                              if (Extensions.DoubleCastPreventionDict.Contains(Core.Player.CurrentTarget, spell)) return false;
      
                              if (!Core.Player.HasAura(spell, true, msLeft)) return true;
      
                              return true;
                          },
                          new Action(
                              ret =>
                              {
                                  var castingSpell = Core.Player.SpellCastInfo;
      
                                  if (castingSpell != null && castingSpell.SpellData.Name != spell) Actionmanager.StopCasting();
      
                                  Logging.Write("Casting Ground Spell " + spell + " at " + onLocation(ret));
                                  if (Actionmanager.DoActionLocation(spell, onLocation(ret)))
                                  {
                                      Extensions.UpdateDoubleCastDict(spell, Core.Player.CurrentTarget);
                                  }
                              }));
              }
      
             
              
      
              public override int PullRange
              {
                  get { return 20; }
              }
      
              public override ClassJobType[] Class
              {
                  get { return new ClassJobType[] { ClassJobType.Pugilist, ClassJobType.Monk, }; }
              }
      
              protected override Composite CreatePreCombatBuffs()
              {
                  return SummonChocobo();
              }
      
              protected override Composite CreateRest()
              {
                  return DefaultRestBehavior(r => Core.Player.CurrentTPPercent);
              }
      
              protected override Composite CreatePull()
              {
                  return new PrioritySelector(
                      r => Actionmanager.InSpellInRangeLOS("Perfect Balance", Core.Target),
                      new Decorator(r => (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInRange, new Action(r => Navigator.MoveTo(Core.Target.Location))),
                      Cast("Perfect Balance", r => (r as SpellRangeCheck?) == SpellRangeCheck.Success || (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInFront)
                  );
              }
      
              protected override Composite CreateCombatBuffs()
              {
                  return new PrioritySelector(
                      
                      );
              }
      
              protected override Composite CreateCombat()
              {
                  return new PrioritySelector(
                      Cast("Internal Release", r => Actionmanager.LastSpell.Name == "Bootshine", r => Core.Player),
                      Cast("Blood for Blood", r => Actionmanager.LastSpell.Name == "Dragon Kick", r => Core.Player),
                      Cast("Featherfoot", r => Core.Player.CurrentHealthPercent < 50, r => Core.Player),
                      Cast("Mantra", r => Core.Player.CurrentHealthPercent < 50, r => Core.Player),
                      Cast("Bloodbath", r => Core.Player.CurrentHealthPercent < 50, r => Core.Player),
                      Cast("Foresight", r => Core.Player.CurrentHealthPercent < 50, r => Core.Player),
                      Cast("Second Wind", r => Core.Player.CurrentHealthPercent < 80, r => Core.Player),
                      Cast("Invigorate", r => Core.Player.CurrentTPPercent < 50, r => Core.Player),
                        
                      Cast("Snap Punch", r => Core.Player.HasMyAura("Perfect Balance"),
                      Cast("Snap Punch", r => Core.Player.HasMyAura("Perfect Balance"),
                      Cast("Snap Punch", r => Core.Player.HasMyAura("Perfect Balance"),
                      Cast("Perfect Balance", r => !Core.Player.HasMyAura("Perfect Balance"), r =>Core.Player)
      
                      
      
                     
                      );
              }
          }
      }
      
      I get this: [16:08:16.925 N] Currently a level 50 Monk[16:08:16.930 D] Reloading AssemblyLoader<ff14bot.AClasses.BotBase> - Initializing
      [16:08:17.380 D] [BotManager] Botbases have been reloaded.
      [16:08:17.380 D] Combat Assist v1.0.74.0
      [16:08:17.380 D] Fishing v1.0.74.0
      [16:08:17.380 D] Grinding v1.0.74.0
      [16:08:17.380 D] Gathering v1.0.74.0
      [16:08:17.398 D] Reloading AssemblyLoader<ff14bot.Interfaces.IBotPlugin> - Initializing
      [16:08:17.815 D] Reloading AssemblyLoader<ff14bot.Interfaces.ICombatRoutine> - Initializing
      [16:08:18.183 D] Compiler Error: c:\Users\Administrator\Desktop\New folder\Routines\Kupo\KupoRoutine.cs(14,7) : warning CS0105: The using directive for 'Kupo.Settings' appeared previously in this namespace
      [16:08:18.183 D] Compiler Error: c:\Users\Administrator\Desktop\New folder\Routines\Kupo\Rotations\PugilistMonk.cs(177,18) : error CS1026: ) expected
       

    Share This Page