• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • WingIt - All In One

    Discussion in 'Archives' started by Neo93, May 7, 2012.

    1. Neo93

      Neo93 Member

      Joined:
      Aug 30, 2011
      Messages:
      342
      Likes Received:
      4
      Trophy Points:
      18
      F
      Ofc, it will heal and do dmg if youre not in a group or in a group with less than 3 player.

      @protopally
      When I add a gui to relicmanager, u can choose when to use the relicts e.g. If u have buff xyz

      Another cc just for 2 lines of code?srsly?Just add a boolean ?useAoe?
       
    2. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      Will have the updated Madness Assassin CC as well as Deception and Darkness in about 24 hours. These are entirely based upon Ops best priority list. I will add in coding for lower level ability support if it actually does need extra code for that.
       
    3. clownfish

      clownfish New Member

      Joined:
      Jan 29, 2010
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      0
      Hello all, impressive work actually. Still a lots of things to fix but really impressive.

      When a CC is updated, is it updated directly on the Wingit-All-In-One SVN ?

      I was testing the sage seer yesterday, it work really well.
       
    4. Neo93

      Neo93 Member

      Joined:
      Aug 30, 2011
      Messages:
      342
      Likes Received:
      4
      Trophy Points:
      18
      Well its normally the same code, just with extra conditions.

      When I commit a CC u can directly update it via the SVN.

      Sounds good. Where did u test it? Solo, group?
       
      Last edited: May 14, 2012
    5. clownfish

      clownfish New Member

      Joined:
      Jan 29, 2010
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      0
      Sounds good. Where did u test it? Solo, group?

      Tested on Correlia, level 50 with a companion. Healing work really well but always slow to kill as a seer.

      I didnt see if we are low on mana, the CC will use Noble Sacrifice. And if Healing Trance crits, Noble Sacrifice is automaticaly used.

      Will be great if we can add force lift to the CC when there is more than one strong target (and breaking force lift with an attack when everything else is already dead).
       
    6. in2fun

      in2fun New Member

      Joined:
      Sep 23, 2010
      Messages:
      871
      Likes Received:
      8
      Trophy Points:
      0
      Sorry Neo93 I have no idea on CC's. I will try to learn and add the 2 lines.
       
    7. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      We will Soon... now could someone assist me with some coding for getting behind a target? I need this for the two DPS specs on Assassin, Two DPS specs on Shadow and the 2 Operative Specs for DPS. Without it i can not complete a combat pull sequence and I am at a loss atm. This is my first few things coding for thebuddyforums and TBH I am not a pro-coder. I am just a man that knows how to use his noodle and do by example.
       
    8. Stealthadin

      Stealthadin New Member

      Joined:
      Oct 12, 2011
      Messages:
      52
      Likes Received:
      1
      Trophy Points:
      0
      Converted the Neo's Marauder CC to Sentinel>Combat.

      This works really well except the detection of the Centering buff. Currently using:

      castWhen => BuddyTor.Me.HasBuff("Centering")

      This doesn't seem to ever be true.

      The rest of the spell conditions have tested out and the CC works awesome (replaced the single Sentinel advanced class CS to test)
       

      Attached Files:

    9. Neo93

      Neo93 Member

      Joined:
      Aug 30, 2011
      Messages:
      342
      Likes Received:
      4
      Trophy Points:
      18
      N
      Thank you :)
       
    10. stewiethecat

      stewiethecat Member

      Joined:
      Feb 4, 2011
      Messages:
      454
      Likes Received:
      0
      Trophy Points:
      16
      tried 4 different classes now, love the sith warrior, rapes everything :p
       
    11. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      New Madness Assassin... and can we change the "Assasin" Directory to "Assassin", which is how it is spelled? Also, the basefile too...

      Code:
      // Madness Assassin v1.0 - Cystacae
      // Known Bugs: Can't Maul on Stealth Pull.  Waiting for some help on this.
      
      using System;
      using System.Linq;
      using Buddy.BehaviorTree;
      using Buddy.Common;
      using Buddy.CommonBot;
      using Buddy.Swtor;
      using WingIt.Dynamics;
      using Action = Buddy.BehaviorTree.Action;
      
      namespace WingIt.Routines
      {
          public static class AssassinMadness
          {
              
              [Behavior(BehaviorType.Pull)]
              [Class(CharacterClass.Inquisitor, AdvancedClass.Assassin, SkillTreeId.AssassinMadness)]
              public static Composite AssassinMadnessPull()
              {
              	return new PrioritySelector(
              	Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
      		Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist),
      		Spell.Cast("Maul", ret => BuddyTor.Me.HasBuff("Stealth")),
      		//Spell.WaitForCast(),
      	        Spell.CastOnGround("Death Field", castWhen => Helpers.Targets.Count() >= 1 && BuddyTor.Me.CurrentTarget.Distance <= Global.rangeDist, location => BuddyTor.Me.CurrentTarget.Position)
      		);		  
      	}
      
              [Behavior(BehaviorType.Combat)]
              [Class(CharacterClass.Inquisitor, AdvancedClass.Assassin, SkillTreeId.AssassinMadness)]
              public static Composite AssassinMadnessCombat()
              {
                  return new PrioritySelector(
                  Movement.StopInRange(Global.meleeDist),
                  Spell.WaitForCast(),
      
         	    // General Abilities
                  Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
                  Spell.Cast("Lightning Charge", ret => !BuddyTor.Me.HasBuff("Lightning Charge")),
                  Spell.Cast("Mark of Power", ret => !BuddyTor.Me.HasBuff("Mark of Power")),
                  Spell.Cast("Unbreakable Will", ret => BuddyTor.Me.IsStunned),
      
                  // Crowd controls!
                  Spell.Cast("Whirlwind", onUnit =>
                                              {
                                               var previousTarget = BuddyTor.Me.CurrentTarget;
                                               return
                                               Helpers.Targets.FirstOrDefault(
                                               t =>
                                               t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                              }, castWhen => Helpers.Targets.Count() >= 3),             
                  Spell.Cast("Electrocute", onUnit => 
                                              {
                                               var previousTarget = BuddyTor.Me.CurrentTarget;
                                               return
                                               Helpers.Targets.FirstOrDefault(
                                               t =>
                                               t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                              }, castWhen => Helpers.Targets.Count() >= 3),  
      
                  // Interrupts
                  Spell.Cast("Jolt", ret => BuddyTor.Me.CurrentTarget.IsCasting),
                  Spell.Cast("Electrocute", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      	    Spell.Cast("Overload", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      
                  // Defensive Cooldowns
                  Spell.Cast("Deflection", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 80),
                  Spell.Cast("Force Shroud", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 70),
      
                  // Buffs
                  Spell.Cast("Recklessness", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Recklessness")),
                  Spell.Cast("Force Cloak", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Dark Embrace")),
                  Spell.Cast("Overcharge Saber", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Overcharge")),
      
      	    // General Attack Sequence
                  Spell.Cast("Maul", ret => BuddyTor.Me.HasBuff("Stealth")),
      	    Spell.CastOnGround("Death Field", castWhen => Helpers.Targets.Count() >= 1 && BuddyTor.Me.CurrentTarget.Distance <= Global.rangeDist, location => BuddyTor.Me.CurrentTarget.Position),
                  Spell.Debuff("Crushing Darkness", castWhen => BuddyTor.Me.HasBuff("Raze") && !BuddyTor.Me.CurrentTarget.HasDebuff("Crushed (Force)")),
                  Spell.Debuff("Discharge", castWhen => !BuddyTor.Me.CurrentTarget.HasDebuff("Shocked (Force)")),
                  Spell.Cast("Assassinate", castWhen => BuddyTor.Me.CurrentTarget.HealthPercent <= 30),
                  Spell.Debuff("Creeping Terror", castWhen => !BuddyTor.Me.CurrentTarget.HasDebuff("Creeping Terror (Force)")),
                  Spell.Cast("Maul", castWhen => BuddyTor.Me.HasBuff("Exploit Weakness")),
                  Spell.Cast("Lacerate", castWhen => Helpers.Targets.Count() >= 3), 
                  Spell.Cast("Thrash", castWhen => BuddyTor.Me.ResourceStat > 45),
                  Spell.Cast("Saber Strike"),
                  Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist)
                  );
              }
      
              [Behavior(BehaviorType.OutOfCombat)]
              [Class(CharacterClass.Inquisitor, AdvancedClass.Assassin, SkillTreeId.AssassinMadness)]
      	public static Composite AssassinMadnessRest()
              {
                  return new PrioritySelector(
                  Spell.Cast("Seethe", ret => BuddyTor.Me.HealthPercent <= 90),
                  Spell.Cast("Stealth", castWhen => !BuddyTor.Me.HasBuff("Stealth")),
      	    Spell.Cast("Lightning Charge", ret => !BuddyTor.Me.HasBuff("Lightning Charge")),
      	    Spell.Cast("Mark of Power", ret => !BuddyTor.Me.HasBuff("Mark of Power"))
      	    );
              }
      
          }
      }
       
      Last edited: May 22, 2012
    12. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      Balance Shadow is done and tested... except for Battle Readiness as I am not 50 yet on my shadow (only 44) and 50 is Battle Readiness. This is based upon a similar build to Madness Assassin I believe 5/5/31.

      Code:
      // Balance Shadow v1.0 - Cystacae
      // Known Bugs: I am nearly sure Base Shadow file interferes with proper rotation as well as Telekinetic Throw (Similar to Madness Assassin).  Force Breach and Mind Crush share same "Crushed (Force)" debuff name.  Can't Shadow Strike on Stealth Pull.  Waiting for some help on this.
      
      using System;
      using System.Linq;
      using Buddy.BehaviorTree;
      using Buddy.Common;
      using Buddy.CommonBot;
      using Buddy.Swtor;
      using WingIt.Dynamics;
      using Action = Buddy.BehaviorTree.Action;
      
      namespace WingIt.Routines
      {
          public static class ShadowBalance
          {
      
      	[Behavior(BehaviorType.Pull)]
      	[Class(CharacterClass.Consular, AdvancedClass.Shadow, SkillTreeId.ShadowBalance)]
              public static Composite ShadowBalancePull()
              {
      		return new PrioritySelector(
      		Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
      		Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist), 
      		Spell.Cast("Shadow Strike", ret => BuddyTor.Me.HasBuff("Stealth")),
      		//Spell.WaitForCast(),
         	        Spell.CastOnGround("Force in Balance", castWhen => Helpers.Targets.Count() >= 1 && BuddyTor.Me.CurrentTarget.Distance <= Global.rangeDist, location => BuddyTor.Me.CurrentTarget.Position)
      		);
          	}
      
              [Behavior(BehaviorType.Combat)]
      	[Class(CharacterClass.Consular, AdvancedClass.Shadow, SkillTreeId.ShadowBalance)]
              public static Composite ShadowBalanceCombat()
              {
                  return new PrioritySelector(
      		Movement.StopInRange(Global.meleeDist),
                      Spell.WaitForCast(),
      
      		// General
                      Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
                      Spell.Cast("Force Technique", ret => !BuddyTor.Me.HasBuff("Force Technique")),
                      Spell.Cast("Force Valor", ret => !BuddyTor.Me.HasBuff("Force Valor")),
      		Spell.Cast("Force of Will", ret => BuddyTor.Me.IsStunned),
      
                      // Crowd controls!
                      Spell.Cast("Force Lift", onUnit =>
                                                          {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 3),             
      		Spell.Cast("Force Stun", onUnit =>                                                     {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 3), 
      
                      // Interrupts
                      Spell.Cast("Mind Snap", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      		Spell.Cast("Force Stun", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      		Spell.Cast("Force Wave", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      
                      // Defensive Cooldowns
                      Spell.Cast("Deflection", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 80),
                      Spell.Cast("Resilience", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 70),
      		
      		// Buffs
      		Spell.Cast("Force Potency", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Force Potency")),
      		Spell.Cast("Force Cloak", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Shadow's Respite")),
                      Spell.Cast("Battle Readiness", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Battle Readiness")),
                      
      		// Attack Sequence
      		Spell.Cast("Shadow Strike", castWhen => BuddyTor.Me.HasBuff("Stealth")),
      		Spell.CastOnGround("Force in Balance", castWhen => Helpers.Targets.Count() >= 1 && BuddyTor.Me.CurrentTarget.Distance <= Global.rangeDist, location => BuddyTor.Me.CurrentTarget.Position),
      		Spell.Debuff("Mind Crush", castWhen => BuddyTor.Me.HasBuff("Force Strike")),
      		Spell.Debuff("Force Breach", castWhen => !BuddyTor.Me.CurrentTarget.HasDebuff("Crushed (Force)")),
                      Spell.Cast("Spinning Strike", castWhen => BuddyTor.Me.CurrentTarget.HealthPercent <= 30),
                      Spell.Debuff("Sever Force", castWhen => !BuddyTor.Me.CurrentTarget.HasDebuff("Sever Force (Force)")),
                      Spell.Cast("Shadow Strike", castWhen => BuddyTor.Me.HasBuff("Find Weakness")),
      		Spell.Cast("Whirling Blow", castWhen => Helpers.Targets.Count() >= 3),                
      		Spell.Cast("Double Strike", castWhen => BuddyTor.Me.ResourceStat > 45),
                      Spell.Cast("Saber Strike"),                
      		Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist)
                      );
              }
      
      	[Behavior(BehaviorType.OutOfCombat)]
      	[Class(CharacterClass.Consular, AdvancedClass.Shadow, SkillTreeId.ShadowBalance)]
              public static Composite ShadowBalanceRest()
              {
                  	return new PrioritySelector(
                      Spell.Cast("Meditation", ret => BuddyTor.Me.HealthPercent <= 90),
      		Spell.Cast("Stealth", ret => !BuddyTor.Me.HasBuff("Stealth")),
      		Spell.Cast("Force Technique", ret => !BuddyTor.Me.HasBuff("Force Technique")),
                      Spell.Cast("Force Valor", ret => !BuddyTor.Me.HasBuff("Force Valor"))
      		);        
      	}
          }
      }
      
       
      Last edited: May 18, 2012
    13. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      Deception Assassin CC based on simulations being the best possible build and rotation 2/31/8.

      Code:
      // Deception Assassin v1.0 - Cystacae
      // Known Bugs:  Can't get behind on pull, Also same as Madness Assassin that randomly Force Lightning may interfere.  I only say may because I have yet to see it but Madness code is relatively the same.
      
      using System;
      using System.Linq;
      using Buddy.BehaviorTree;
      using Buddy.Common;
      using Buddy.CommonBot;
      using Buddy.Swtor;
      
      using WingIt.Dynamics;
      
      using Action = Buddy.BehaviorTree.Action;
      
      namespace WingIt.Routines
      {
          public static class AssassinDeception
          {        
      	
              [Behavior(BehaviorType.Pull)]
              [Class(CharacterClass.Inquisitor, AdvancedClass.Assassin, SkillTreeId.AssassinDeception)]
      	public static Composite AssassinDeceptionPull()
              {
              	return new PrioritySelector(
              	Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
      		Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist),
      		Spell.Cast("Maul", ret => BuddyTor.Me.HasBuff("Stealth")) //,
      		//Spell.WaitForCast(),
      		);		  
      	}
      	
              [Behavior(BehaviorType.Combat)]
              [Class(CharacterClass.Inquisitor, AdvancedClass.Assassin, SkillTreeId.AssassinDeception)]
      	public static Composite AssassinDeceptionCombat()
              {
                  return new PrioritySelector(
                      Movement.StopInRange(Global.meleeDist),
                      Spell.WaitForCast(),
      
      	        // General Abilities		
      		Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
      		Spell.Cast("Surging Charge", ret => !BuddyTor.Me.HasBuff("Surging Charge")),
                      Spell.Cast("Mark of Power", ret => !BuddyTor.Me.HasBuff("Mark of Power")),
                      Spell.Cast("Unbreakable Will", ret => BuddyTor.Me.IsStunned),
      
                      // Crowd Controls
      		Spell.Cast("Whirlwind", onUnit =>
                                                          {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 3),             
      	        Spell.Cast("Electrocute", onUnit => 
      						    {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 3),
      	        Spell.Cast("Low Slash", onUnit => 
      						    {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 3),
      
      	        // Interrupts
                      Spell.Cast("Jolt", ret => BuddyTor.Me.CurrentTarget.IsCasting),
                      Spell.Cast("Electrocute", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      	        Spell.Cast("Low Slash", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      	        Spell.Cast("Overload", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      		
                      // Defensive Cooldowns
                      Spell.Cast("Deflection", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 80),
                      Spell.Cast("Force Shroud", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 70),
      		
      		// Buffs
      		Spell.Cast("Recklessness", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Recklessness")),
      		Spell.Cast("Blackout", castWhen => BuddyTor.Me.InCombat && BuddyTor.Me.ResourceStat < 90 && !BuddyTor.Me.HasBuff("Dark Embrace")),
      		Spell.Cast("Force Cloak", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Dark Embrace")),
                      Spell.Cast("Overcharge Saber", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Overcharge")),
                      
      	        // General Attack Sequence
      		Spell.Cast("Maul", castWhen => BuddyTor.Me.HasBuff("Stealth")),
      		Spell.Cast("Shock", ret => BuddyTor.Me.HasBuff("Induction") && BuddyTor.Me.Buffs.FirstOrDefault(B => B.Name == "Induction").Stacks > 1),
      	        Spell.Cast("Assassinate", castWhen => BuddyTor.Me.CurrentTarget.HealthPercent <= 30),
      	        Spell.Cast("Maul", castWhen => BuddyTor.Me.HasBuff("Exploit Weakness")),
      		Spell.Cast("Discharge", ret => BuddyTor.Me.HasBuff("Static Charge") && BuddyTor.Me.Buffs.FirstOrDefault(B => B.Name == "Static Charge").Stacks > 0),
                      Spell.Cast("Lacerate", castWhen => Helpers.Targets.Count() >= 3), 
                      Spell.Cast("Voltaic Slash", castWhen => BuddyTor.Me.ResourceStat > 45),
                      Spell.Cast("Saber Strike"),
                      Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist)
                      );
              }
      
              [Behavior(BehaviorType.OutOfCombat)]
              [Class(CharacterClass.Inquisitor, AdvancedClass.Assassin, SkillTreeId.AssassinDeception)]
      	public static Composite AssassinDeceptionRest()
              {
                  return new PrioritySelector(
                  Spell.Cast("Seethe", ret => BuddyTor.Me.HealthPercent <= 90),
                  Spell.Cast("Stealth", castWhen => !BuddyTor.Me.HasBuff("Stealth")),
      	    Spell.Cast("Surging Charge", ret => !BuddyTor.Me.HasBuff("Surging Charge")),
      	    Spell.Cast("Mark of Power", ret => !BuddyTor.Me.HasBuff("Mark of Power"))
                      );
              }  
          }
      }
       
      Last edited: May 18, 2012
    14. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      Infiltration Shadow Based upon similar simcraft reports from the counterpart Deception Assassin 2/31/8. this was Tested at level 44 so Battle Readiness was not sure about.
      Code:
      // Infiltration Shadow v1.0 - Cystacae
      // Known Bugs:  Can't get behind on pull, and same as madness/balance about their cast spell from base class.
      
      using System;
      using System.Linq;
      using Buddy.BehaviorTree;
      using Buddy.Common;
      using Buddy.CommonBot;
      using Buddy.Swtor;
      
      using WingIt.Dynamics;
      
      using Action = Buddy.BehaviorTree.Action;
      
      namespace WingIt.Routines
      {
          public static class ShadowInfiltration
          {        
      	
              [Behavior(BehaviorType.Pull)]
              [Class(CharacterClass.Consular, AdvancedClass.Shadow, SkillTreeId.ShadowInfiltration)]
      	public static Composite ShadowInfiltrationPull()
              {
              	return new PrioritySelector(
              	Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
      		Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist),
      		Spell.Cast("Shadow Strike", ret => BuddyTor.Me.HasBuff("Stealth")) //,
      		//Spell.WaitForCast(),
      		);		  
      	}
      	
              [Behavior(BehaviorType.Combat)]
              [Class(CharacterClass.Consular, AdvancedClass.Shadow, SkillTreeId.ShadowInfiltration)]
      	public static Composite ShadowInfiltrationCombat()
              {
                  return new PrioritySelector(
                      Movement.StopInRange(Global.meleeDist),
                      Spell.WaitForCast(),
      
      	        // General Abilities		
      		Spell.Cast("Force Speed", ret => BuddyTor.Me.CurrentTarget.Distance >= Global.meleeDist && BuddyTor.Me.CurrentTarget.Distance <= 4f),
      		Spell.Cast("Shadow Technique", ret => !BuddyTor.Me.HasBuff("Shadow Technique")),
                      Spell.Cast("Force Valor", ret => !BuddyTor.Me.HasBuff("Force Valor")),
                      Spell.Cast("Force of Will", ret => BuddyTor.Me.IsStunned),
      
                      // Crowd Controls
      		Spell.Cast("Force Lift", onUnit =>
                                                          {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 2),             
      	        Spell.Cast("Force Stun", onUnit => 
      						    {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 2),
      	        Spell.Cast("Low Slash", onUnit => 
      						    {
                                                            var previousTarget = BuddyTor.Me.CurrentTarget;
                                                            return
                                                               Helpers.Targets.FirstOrDefault(
                                                                    t =>
                                                                    t != previousTarget && (t.Toughness == CombatToughness.Player || t.Toughness == CombatToughness.Strong || t.Toughness == CombatToughness.Standard || t.Toughness == CombatToughness.Weak) && !t.IsDead) ??
                                                               Helpers.Targets.FirstOrDefault(t => t != previousTarget);
                                                          }, castWhen => Helpers.Targets.Count() >= 2),
      
      	        // Interrupts
                      Spell.Cast("Mind Snap", ret => BuddyTor.Me.CurrentTarget.IsCasting),
                      Spell.Cast("Force Stun", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      	        Spell.Cast("Low Slash", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      	        Spell.Cast("Force Wave", ret => BuddyTor.Me.CurrentTarget.IsCasting),
      		
                      // Defensive Cooldowns
                      Spell.Cast("Deflection", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 80),
                      Spell.Cast("Force Shroud", ret => BuddyTor.Me.InCombat && BuddyTor.Me.HealthPercent <= 70),
      		
      		// Buffs
      		Spell.Cast("Force Potency", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Force Potency")),
      		Spell.Cast("Blackout", castWhen => BuddyTor.Me.InCombat && BuddyTor.Me.ResourceStat < 90 && !BuddyTor.Me.HasBuff("Shadow's Respite")),
      		Spell.Cast("Force Cloak", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Shadow's Respite")),
                      Spell.Cast("Battle Readiness", castWhen => BuddyTor.Me.InCombat && !BuddyTor.Me.HasBuff("Battle Readiness")),
                      
      	        // General Attack Sequence
      		Spell.Cast("Shadow Strike", castWhen => BuddyTor.Me.HasBuff("Stealth")),
      		Spell.Cast("Project", ret => BuddyTor.Me.HasBuff("Circling Shadows") && BuddyTor.Me.Buffs.FirstOrDefault(B => B.Name == "Circling Shadows").Stacks > 1),
      	        Spell.Cast("Spinning Strike", castWhen => BuddyTor.Me.CurrentTarget.HealthPercent <= 30),
      	        Spell.Cast("Shadow Strike", castWhen => BuddyTor.Me.HasBuff("Find Weakness")),
      		Spell.Cast("Force Breach", ret => BuddyTor.Me.HasBuff("Exit Strategy") && BuddyTor.Me.Buffs.FirstOrDefault(B => B.Name == "Exit Strategy").Stacks > 0),
      		Spell.Cast("Whirling Blow", castWhen => Helpers.Targets.Count() >= 3), 
                      Spell.Cast("Clairvoyant Strike", castWhen => BuddyTor.Me.ResourceStat > 45),
                      Spell.Cast("Saber Strike"),
                      Movement.MoveTo(ret => BuddyTor.Me.CurrentTarget.Position, Global.meleeDist)
                      );
              }
      
              [Behavior(BehaviorType.OutOfCombat)]
              [Class(CharacterClass.Consular, AdvancedClass.Shadow, SkillTreeId.ShadowInfiltration)]
      	public static Composite ShadowInfiltrationRest()
              {
                  return new PrioritySelector(
                  Spell.Cast("Meditation", ret => BuddyTor.Me.HealthPercent <= 90),
                  Spell.Cast("Stealth", castWhen => !BuddyTor.Me.HasBuff("Stealth")),
      	    Spell.Cast("Shadow Technique", ret => !BuddyTor.Me.HasBuff("Shadow Technique")),
      	    Spell.Cast("Force Valor", ret => !BuddyTor.Me.HasBuff("Force Valor"))
                      );
              }  
          }
      }
       
      Last edited: May 18, 2012
    15. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      Working on Darkness Assassin and Kinetic Combat Shadow. These are primarily tank specs and the CC will be written as such. The hybrid Darkness/Madness build that is NOT tanking I will also build but after these last two. Notice, I have some known bugs and I have been trying to squash them but I am stuck.
       
    16. Neo93

      Neo93 Member

      Joined:
      Aug 30, 2011
      Messages:
      342
      Likes Received:
      4
      Trophy Points:
      18
      @cystacae
      Thank you :)

      Edit:

      You don't need to add an extra buff in the priorityselector and you dont need to add the rest buff to you OOC comp, its all there....
       
      Last edited: May 19, 2012
    17. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      Still learning man... you have access to it so where you see it needs fixing be my guest and I will re-evaluate it after that to see if it still adheres properly to rotational needs by the simulations. I am having issues with the darkness build. I can get it to do the rotation properly and then after a little bit there seems to be a conflicting issue that causes the script to lockup until I manually cast lightning so I know it is a conflict of something then going into force lightning but no error to report only a stall.
       
    18. xsol

      xsol Member

      Joined:
      Nov 7, 2011
      Messages:
      503
      Likes Received:
      12
      Trophy Points:
      18
      Here is the updated code for Sniper/Gunslinger. From now on to edit gunslinger just edit sniper classes and use Sniper.Cast etc... these functions mirror so a call to Sniper.Cast("Ambush") will auto cast the mirror skill on a gunslinger.

      View attachment SniperPlusMirror.zip

      The marksmanship rotation is working very well for OpsRotations. Back to d3
       
    19. cystacae

      cystacae New Member

      Joined:
      Jul 17, 2011
      Messages:
      56
      Likes Received:
      1
      Trophy Points:
      0
      Dude, great idea, may I look at your coding and see how you handled it and use it for assassin/shadow and operative/scoundrel when I can figure out how to do it properly?
       
    20. xsol

      xsol Member

      Joined:
      Nov 7, 2011
      Messages:
      503
      Likes Received:
      12
      Trophy Points:
      18
      Sure, the code is not anything fancy, but it gets the jobs done.
       

    Share This Page