What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal
RebornBuddy Forums

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Would it be possible to rework the Pyro PT from the new guide from Dulfy that was put out a few days ago?

http://dulfy.net/2015/12/27/swtor-4-0-pyrotech-powertech-pve-guide-by-kwerty/

Pyro is pretty bad imo, why don't you go Advanced Prototype?

Also that guide has Fillers that require you to have set bonuses, i could try and rework the rotation but you would need to do the opener manually and then he does the main rotation for you.

Edit: Try this out.

Code:
// Copyright (C) 2011-2015 Bossland GmbH// See the file LICENSE for the source code's detailed license


using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;


namespace DefaultCombat.Routines
{
	public class Pyrotech : RotationBase
	{
		public override string Name
		{
			get { return "PowerTech Pyrotech"; }
		}


		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Combustible Gas Cylinder"),
					Spell.Buff("Hunter's Boon")
					);
			}
		}


		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Determination"),
					Spell.Buff("Vent Heat", ret => Me.ResourcePercent() >= 65),
					Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 60),
					Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30)
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Melee),
					
					//Low Energy
					new Decorator(ret => Me.ResourcePercent() > 40,
						new PrioritySelector(
							Spell.Cast("Flame Burst", ret => Me.HasBuff("Flame Barrage")),
							Spell.Cast("Rapid Shots")
							)),
							
					//Rotation
                    Spell.Cast("Quell", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.DoT("Scorch", "Scorch"),
					Spell.DoT("Incendiary Missile", "Burning (Incendiary Missile)"),
					Spell.Cast("Flaming Fist"),
                    Spell.Cast("Flame Thrower", ret => Me.BuffCount("Superheated Flame Thrower") == 2),
					Spell.Cast("Rail Shot", ret => Me.HasBuff("Charged Gauntlets")),
					Spell.Cast("Immolate"),
					Spell.Cast("Flame Burst"),
					Spell.Cast("Rapid Shots")
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new PrioritySelector(
					new Decorator(ret => Targeting.ShouldAoe,
						new PrioritySelector(
							Spell.DoT("Scorch", "Scorch"),
							Spell.CastOnGround("Death from Above"),
							Spell.Cast("Explosive Dart")
							)),
					new Decorator(ret => Targeting.ShouldPbaoe,
						new PrioritySelector(
							Spell.DoT("Scorch", "Scorch"),
							Spell.Cast("Flame Thrower"),
							Spell.Cast("Flame Sweep")
							)));
			}
		}
	}
}
 
Last edited:
Pyro is pretty bad imo, why don't you go Advanced Prototype?

Also that guide has Fillers that require you to have set bonuses, i could try and rework the rotation but you would need to do the opener manually and then he does the main rotation for you.

Pyro parses higher than AP and it has fire. In regard to BW, is AP easier to do well with than Pyro?
 
I tried it on Operations Dummy but it feels weird to be honest ^^, it definitely works but after the 5th rotation you will run into energy problems.
 
From the author,

With that in mind, use Vent Heat some time after the second flamethrower in the cycle, and Thermal Sensor Override on the second flamethrower in the cycle.
So, somewhere between the 2
[*] symbols i've added here. Oh and if its after the Immolate (IML), make that last Rapid Shots a Flame Burst instead.

SCH -> IMS -> FF -> FT -> RS -> FB -> IML -> FB -> FF ->
FB -> IMS -> FB -> FT -> * RS -> FF -> IML -> FB * -> RpS ->
 
From the author,

With that in mind, use Vent Heat some time after the second flamethrower in the cycle, and Thermal Sensor Override on the second flamethrower in the cycle.
So, somewhere between the 2
[*] symbols i've added here. Oh and if its after the Immolate (IML), make that last Rapid Shots a Flame Burst instead.

SCH -> IMS -> FF -> FT -> RS -> FB -> IML -> FB -> FF ->
FB -> IMS -> FB -> FT -> * RS -> FF -> IML -> FB * -> RpS ->

My coding skills aren't really good to be honest but from what i saw so far the bot is really limited, so making a rotation that is 100% like that from the guide will be unlikely. You could remove the cooldowns from the rotation and do them manually thou.

2nd try, i added some of the cooldowns and switched some of the priority's and added Shoulder Cannon.

Code:
// Copyright (C) 2011-2015 Bossland GmbH// See the file LICENSE for the source code's detailed license


using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;


namespace DefaultCombat.Routines
{
    public class Pyrotech : RotationBase
    {
        public override string Name
        {
            get { return "PowerTech Pyrotech"; }
        }


        public override Composite Buffs
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Combustible Gas Cylinder"),
                    Spell.Buff("Hunter's Boon")
                    );
            }
        }


        public override Composite Cooldowns
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Determination"),
                    Spell.Buff("Thermal Sensor Override", ret => Me.InCombat),
                    Spell.Buff("Explosive Fuel", ret => Me.InCombat),
                    Spell.Buff("Vent Heat", ret => Me.ResourcePercent() >= 65),
                    Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 60),
                    Spell.Buff("Shoulder Cannon", ret => !Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater()),
                    Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30)
                    );
            }
        }


        public override Composite SingleTarget
        {
            get
            {
                return new PrioritySelector(
                    //Movement
                    CombatMovement.CloseDistance(Distance.Melee),
                    
                    //Low Energy
                    new Decorator(ret => Me.ResourcePercent() > 40,
                        new PrioritySelector(
                            Spell.Cast("Flame Burst", ret => Me.HasBuff("Flame Barrage")),
                            Spell.Cast("Rapid Shots")
                            )),
                            
                    //Rotation
                    Spell.Cast("Shoulder Cannon", ret => Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater()),
                    Spell.Cast("Quell", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.Cast("Flame Thrower", ret => Me.BuffCount("Superheated Flame Thrower") == 2),
                    Spell.DoT("Scorch", "Scorch"),
                    Spell.DoT("Incendiary Missile", "Burning (Incendiary Missile)"),
                    Spell.Cast("Rail Shot", ret => Me.HasBuff("Charged Gauntlets")),
                    Spell.Cast("Flaming Fist", ret => Me.HasBuff("Flame Barrage")),
                    Spell.Cast("Flaming Fist"),
                    Spell.Cast("Immolate"),
                    Spell.Cast("Flame Burst")
                    );
            }
        }


        public override Composite AreaOfEffect
        {
            get
            {
                return new PrioritySelector(
                    new Decorator(ret => Targeting.ShouldAoe,
                        new PrioritySelector(
                            Spell.DoT("Scorch", "Scorch"),
                            Spell.CastOnGround("Death from Above"),
                            Spell.Cast("Explosive Dart")
                            )),
                    new Decorator(ret => Targeting.ShouldPbaoe,
                        new PrioritySelector(
                            Spell.DoT("Scorch", "Scorch"),
                            Spell.Cast("Flame Thrower"),
                            Spell.Cast("Flame Sweep")
                            )));
            }
        }
    }
}


Maybe someone else can help you out thou.
 
I appreciate the help. I understand that there are some limitations with the bot. In your opinion, is there bot more efficient using AP or Pyro?
 
I appreciate the help. I understand that there are some limitations with the bot. In your opinion, is there bot more efficient using AP or Pyro?

I don't play BH that much, but the best class to bot would be a Force class, the bot really hates being resource depended because he will blow all Energy even if you put in restrictions. So getting a Sorc or Warrior who aren't limited by resources will play the best.

I am pretty sure the best "botable" rotation is the Sorc/Sage, the Warrior has a few issues with it's PBOE but the rotations are also pretty good.

I also play Marksman and Gunslinger but they have the issue that the non Force classes will run into.
 
Advanced Prototype - added Shoulder Cannon and some buffs

Code:
// Copyright (C) 2011-2015 Bossland GmbH
// See the file LICENSE for the source code's detailed license


using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;


namespace DefaultCombat.Routines
{
	public class AdvancedPrototype : RotationBase
	{
		public override string Name
		{
			get { return "PowerTech Advanced Prototype"; }
		}


		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("High Energy Gas Cylinder"),
					Spell.Buff("Hunter's Boon")
					);
			}
		}


		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Determination"),
					Spell.Buff("Shoulder Cannon"),
					Spell.Buff("Thermal Sensor Override", ret => Me.InCombat && Me.CurrentTarget.BossOrGreater()),
					Spell.Buff("Explosive Fuel", ret => Me.InCombat && Me.CurrentTarget.BossOrGreater()),
					Spell.Buff("Vent Heat", ret => Me.ResourcePercent() >= 50),
					Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 60),
					Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30)
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Melee),
					
					//Low Energy
					new Decorator(ret => Me.ResourcePercent() < 50,
						new PrioritySelector(
							Spell.Cast("Rail Shot", ret => Me.HasBuff("Prototype Particle Accelerator")),
							Spell.Cast("Rapid Shots")
							)),
							
					//Rotation
					Spell.Cast("Shoulder Cannon", ret => Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater()),
					Spell.Cast("Quell", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Cast("Energy Burst", ret => Me.BuffCount("Energy Lode") == 4),
					Spell.Cast("Rail Shot",
						ret => Me.CurrentTarget.HasDebuff("Bleeding (Retractable Blade)") && Me.HasBuff("Prototype Particle Accelerator")),
					Spell.DoT("Retractable Blade", "Bleeding (Retractable Blade)"),
					Spell.Cast("Thermal Detonator"),
					Spell.Cast("Rocket Punch"),
					Spell.Cast("Magnetic Blast", ret => Me.Level >= 26),
					Spell.Cast("Flame Burst", ret => Me.Level < 26)
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new PrioritySelector(
					new Decorator(ret => Targeting.ShouldAoe,
						new PrioritySelector(
							Spell.CastOnGround("Death from Above"),
							Spell.Cast("Explosive Dart", ret => Me.CurrentTarget.HasDebuff("Bleeding (Retractable Blade)"))
							)),
					new Decorator(ret => Targeting.ShouldPbaoe,
						new PrioritySelector(
							Spell.Cast("Flame Thrower"),
							Spell.Cast("Flame Sweep"))
						));
			}
		}
	}
}
 
I don't play BH that much, but the best class to bot would be a Force class, the bot really hates being resource depended because he will blow all Energy even if you put in restrictions. So getting a Sorc or Warrior who aren't limited by resources will play the best.

I am pretty sure the best "botable" rotation is the Sorc/Sage, the Warrior has a few issues with it's PBOE but the rotations are also pretty good.

I also play Marksman and Gunslinger but they have the issue that the non Force classes will run into.

My main is a marauder and it does quite well with Nexis5000's edit. It is difficult to use the default because of the lag even with changing to priority selector.
 
Last edited:
Gunslinger Saboteur rewrite/fix, took the rotation from dulfy.

Code:
// Copyright (C) 2011-2015 Bossland GmbH// See the file LICENSE for the source code's detailed license


using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;


namespace DefaultCombat.Routines
{
    internal class Saboteur : RotationBase
    {
        public override string Name
        {
            get { return "Gunslinger Saboteur"; }
        }


        public override Composite Buffs
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Lucky Shots")
                    );
            }
        }


        public override Composite Cooldowns
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Escape"),
                    Spell.Buff("Defense Screen", ret => Me.HealthPercent <= 50),
                    Spell.Buff("Dodge", ret => Me.HealthPercent <= 30),
                    Spell.Buff("Cool Head", ret => Me.EnergyPercent <= 50),
                    Spell.Buff("Smuggler's Luck"),
                    Spell.Buff("Illegal Mods")
                    );
            }
        }


        public override Composite SingleTarget
        {
            get
            {
                return new PrioritySelector(
                    //Low Energy
                    new Decorator(ret => Me.EnergyPercent < 60,
                        new PrioritySelector(
                        Spell.Cast("Thermal Grenade", ret => Me.HasBuff("Seize the Moment")),
                        Spell.Cast("Rifle Shot")
                        )),


                    //Movement
                    CombatMovement.CloseDistance(Distance.Ranged),


                    //Rotation
                    Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.Cast("Sabotage Charge"),
                    Spell.DoTGround("Incendiary Grenade", 9000),
                    Spell.Cast("Speed Shot"),
                    Spell.DoT("Shock Charge", "Shock Charge"),
                    Spell.Cast("Sabotage", ret => Me.CurrentTarget.HasDebuff("Shock Charge")),
                    Spell.Cast("Thermal Grenade", ret => Me.HasBuff("Seize the Moment")),
                    Spell.CastOnGround("XS Freighter Flyby", ret => Me.EnergyPercent > 75),
                    Spell.DoT("Vital Shot", "Vital Shot"),
                    Spell.Cast("Quickdraw", ret => Me.CurrentTarget.HealthPercent <= 30),
                    Spell.Cast("Rifle Shot")
                    );
            }
        }


        public override Composite AreaOfEffect
        {
            get
            {
                return new Decorator(ret => Targeting.ShouldAoe,
                    new PrioritySelector(
                        Spell.CastOnGround("XS Freighter Flyby"),
                        Spell.Cast("Incendiary Grenade"),
                        Spell.Cast("Thermal Grenade")
                        ));
            }
        }
    }
}

Should be Flurry of Bolts not Rifle Shot, no?
 
Should be Flurry of Bolts not Rifle Shot, no?

Yes, you are correct.

Code:
// Copyright (C) 2011-2015 Bossland GmbH// See the file LICENSE for the source code's detailed license


using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;


namespace DefaultCombat.Routines
{
    internal class Saboteur : RotationBase
    {
        public override string Name
        {
            get { return "Gunslinger Saboteur"; }
        }


        public override Composite Buffs
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Lucky Shots")
                    );
            }
        }


        public override Composite Cooldowns
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Escape"),
                    Spell.Buff("Defense Screen", ret => Me.HealthPercent <= 50),
                    Spell.Buff("Dodge", ret => Me.HealthPercent <= 30),
                    Spell.Buff("Cool Head", ret => Me.EnergyPercent <= 50),
                    Spell.Buff("Smuggler's Luck", ret => Me.CurrentTarget.BossOrGreater()),
                    Spell.Buff("Illegal Mods", ret => Me.CurrentTarget.BossOrGreater())
                    );
            }
        }


        public override Composite SingleTarget
        {
            get
            {
                return new PrioritySelector(
                    //Low Energy
                    new Decorator(ret => Me.EnergyPercent < 60,
                        new PrioritySelector(
                        Spell.Cast("Thermal Grenade", ret => Me.HasBuff("Seize the Moment")),
                        Spell.Cast("Flurry of Bolts")
                        )),


                    //Movement
                    CombatMovement.CloseDistance(Distance.Ranged),


                    //Rotation
                    Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.Cast("Sabotage Charge"),
                    Spell.DoTGround("Incendiary Grenade", 9000),
                    Spell.Cast("Speed Shot"),
                    Spell.DoT("Shock Charge", "Shock Charge"),
                    Spell.Cast("Sabotage", ret => Me.CurrentTarget.HasDebuff("Shock Charge")),
                    Spell.Cast("Thermal Grenade", ret => Me.HasBuff("Seize the Moment")),
                    Spell.CastOnGround("XS Freighter Flyby", ret => Me.EnergyPercent > 75),
                    Spell.DoT("Vital Shot", "Vital Shot"),
                    Spell.Cast("Quickdraw", ret => Me.CurrentTarget.HealthPercent <= 30)
                    );
            }
        }


        public override Composite AreaOfEffect
        {
            get
            {
                return new Decorator(ret => Targeting.ShouldAoe,
                    new PrioritySelector(
                        Spell.CastOnGround("XS Freighter Flyby"),
                        Spell.Cast("Incendiary Grenade"),
                        Spell.Cast("Thermal Grenade")
                        ));
            }
        }
    }
}

Corrected Rifle Shot to Flurry of Bolts and changed the buffs to only activate at Gold mobs.
 
Last edited:
Gunslinger Dirty Fighting rewrite/fix.

Code:
// Copyright (C) 2011-2015 Bossland GmbH// See the file LICENSE for the source code's detailed license


using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;


namespace DefaultCombat.Routines
{
    internal class DirtyFighting : RotationBase
    {
        public override string Name
        {
            get { return "Gunslinger Dirty Fighting"; }
        }


        public override Composite Buffs
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Lucky Shots")
                    );
            }
        }


        public override Composite Cooldowns
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Escape"),
                    Spell.Buff("Defense Screen", ret => Me.HealthPercent <= 50),
                    Spell.Buff("Dodge", ret => Me.HealthPercent <= 30),
                    Spell.Buff("Cool Head", ret => Me.EnergyPercent <= 50),
                    Spell.Buff("Smuggler's Luck", ret => Me.CurrentTarget.BossOrGreater()),
                    Spell.Buff("Illegal Mods", ret => Me.CurrentTarget.BossOrGreater())
                    );
            }
        }


        public override Composite SingleTarget
        {
            get
            {
                return new PrioritySelector(
                    //Movement
                    CombatMovement.CloseDistance(Distance.Ranged),
                    
                    //Low Energy
                    Spell.Cast("Flurry of Bolts", ret => Me.EnergyPercent < 60),


                    //Rotation
                    Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.DoT("Vital Shot", "Vital Shot"),
                    Spell.DoT("Shrap Bomb", "Shrap Bomb"),
                    Spell.Cast("Hemorrhaging Blast", ret => Me.CurrentTarget.HasDebuff("Vital Shot") && Me.CurrentTarget.HasDebuff("Shrap Bomb")),
                    Spell.Cast("Wounding Shots", ret => Me.CurrentTarget.DebuffTimeLeft("Vital Shot") > 3 && Me.CurrentTarget.DebuffTimeLeft("Shrap Bomb") > 3),
                    Spell.Cast("Quickdraw", ret => Me.CurrentTarget.HealthPercent <= 30),
                    Spell.Cast("Speed Shot"),
                    Spell.Cast("Dirty Blast", ret => Me.Level >= 57),
                    Spell.Cast("Charged Burst", ret => Me.Level < 57)
                    );
            }
        }


        public override Composite AreaOfEffect
        {
            get
            {
                return new Decorator(ret => Targeting.ShouldAoe,
                    new PrioritySelector(
                        Spell.CastOnGround("XS Freighter Flyby"),
                        Spell.Cast("Thermal Grenade"),
                        Spell.Cast("Shrap Bomb", ret => Me.CurrentTarget.HasDebuff("Vital Shot") && !Me.CurrentTarget.HasDebuff("Shrap Bomb")),
                        Spell.CastOnGround("Sweeping Gunfire")
                        ));
            }
        }
    }
}
 
My main is a marauder and it does quite well with Nexis5000's edit. It is difficult to use the default because of the lag even with changing to priority selector.

You need to change DefaultCombat.cs in your Buddywing->Routines-> folder to make the lag disappear there is a line above medpack that has Lockselector in it, change it to PrioritySelector and you are good to go.

Just changing the combat routine won't work, i already made the suggestion on github to change it by default (when you download buddywing) and it seems it's already through.
 
You need to change DefaultCombat.cs in your Buddywing->Routines-> folder to make the lag disappear there is a line above medpack that has Lockselector in it, change it to PrioritySelector and you are good to go.

Just changing the combat routine won't work, i already made the suggestion on github to change it by default (when you download buddywing) and it seems it's already through.

Just submitted a pull request that changes the remaining LockSelectors to PrioritySelectors: https://github.com/BosslandGmbH/BuddyWing.DefaultCombat/pull/10

After that one goes through we'll have to do some testing and make changes in BW's core if required.

Edit: Thanks for your contributions to the routines, it's good to see people getting involved with the routine. :)
 
Last edited:
You need to change DefaultCombat.cs in your Buddywing->Routines-> folder to make the lag disappear there is a line above medpack that has Lockselector in it, change it to PrioritySelector and you are good to go.

Just changing the combat routine won't work, i already made the suggestion on github to change it by default (when you download buddywing) and it seems it's already through.

There isnt a shred of lag while using the bot now. Repped
 
Gunslinger Dirty Fighting rewrite/fix.

Code:
// Copyright (C) 2011-2015 Bossland GmbH// See the file LICENSE for the source code's detailed license


using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;


namespace DefaultCombat.Routines
{
    internal class DirtyFighting : RotationBase
    {
        public override string Name
        {
            get { return "Gunslinger Dirty Fighting"; }
        }


        public override Composite Buffs
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Lucky Shots")
                    );
            }
        }


        public override Composite Cooldowns
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Escape"),
                    Spell.Buff("Defense Screen", ret => Me.HealthPercent <= 50),
                    Spell.Buff("Dodge", ret => Me.HealthPercent <= 30),
                    Spell.Buff("Cool Head", ret => Me.EnergyPercent <= 50),
                    Spell.Buff("Smuggler's Luck", ret => Me.CurrentTarget.BossOrGreater()),
                    Spell.Buff("Illegal Mods", ret => Me.CurrentTarget.BossOrGreater())
                    );
            }
        }


        public override Composite SingleTarget
        {
            get
            {
                return new PrioritySelector(
                    //Movement
                    CombatMovement.CloseDistance(Distance.Ranged),
                    
                    //Low Energy
                    Spell.Cast("Flurry of Bolts", ret => Me.EnergyPercent < 60),


                    //Rotation
                    Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.DoT("Vital Shot", "Vital Shot"),
                    Spell.DoT("Shrap Bomb", "Shrap Bomb"),
                    Spell.Cast("Hemorrhaging Blast", ret => Me.CurrentTarget.HasDebuff("Vital Shot") && Me.CurrentTarget.HasDebuff("Shrap Bomb")),
                    Spell.Cast("Wounding Shots", ret => Me.CurrentTarget.DebuffTimeLeft("Vital Shot") > 3 && Me.CurrentTarget.DebuffTimeLeft("Shrap Bomb") > 3),
                    Spell.Cast("Quickdraw", ret => Me.CurrentTarget.HealthPercent <= 30),
                    Spell.Cast("Speed Shot"),
                    Spell.Cast("Dirty Blast", ret => Me.Level >= 57),
                    Spell.Cast("Charged Burst", ret => Me.Level < 57)
                    );
            }
        }


        public override Composite AreaOfEffect
        {
            get
            {
                return new Decorator(ret => Targeting.ShouldAoe,
                    new PrioritySelector(
                        Spell.CastOnGround("XS Freighter Flyby"),
                        Spell.Cast("Thermal Grenade"),
                        Spell.Cast("Shrap Bomb", ret => Me.CurrentTarget.HasDebuff("Vital Shot") && !Me.CurrentTarget.HasDebuff("Shrap Bomb")),
                        Spell.CastOnGround("Sweeping Gunfire")
                        ));
            }
        }
    }
}
Working great so far. Thanks Markeen!
 
did a translation from seer to corruption so if your seer was good your corruption is good now **i cant check to see if it works cause i dont have a healer lol**
**EDIT**
missed some buffs
Code:
 // Copyright (C) 2011-2015 Bossland GmbH
// See the file LICENSE for the source code's detailed license

using Buddy.BehaviorTree;
using DefaultCombat.Core;
using DefaultCombat.Helpers;

namespace DefaultCombat.Routines
{
	internal class Corruption : RotationBase
	{
		public override string Name
		{
			get { return "Sorcerer Corruption"; }
		}

		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Mark of Power")
					);
			}
		}

        public override Composite Cooldowns
        {
            get
            {
                return new PrioritySelector(
                    Spell.Buff("Recklessness", ret => Targeting.ShouldAoeHeal),
                    Spell.Buff("Polarity Shift", ret => Targeting.ShouldAoeHeal),
                    Spell.Buff("Consuming Darkness", ret => NeedForce()),
                    Spell.Buff("Unnatural Preservation", ret => Me.HealthPercent <= 75)
                    );
            }
        }

        public override Composite SingleTarget
        {
            get
            {
                return new PrioritySelector(
                    //Movement
                    CombatMovement.CloseDistance(Distance.Ranged),
                    Spell.Cast("Mind Snap", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.Cast("Force Stun", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.Cast("Force Storm", ret => Targeting.ShouldAoe),
                    Spell.Cast("Crushing Darkness"),
                    Spell.DoT("Affliction", "Affliction"),
                    Spell.Cast("Shock"),
                    Spell.Cast("Force Lightning"),
                    Spell.Cast("Lightning Strike")
                    );
            }
        }

        public override Composite AreaOfEffect
        {
            get
            {
                return new PrioritySelector(
                    //Cleanse if needed
                    Spell.Cleanse("Expunge"),

                    //Emergency Heal (Insta-cast)
                    Spell.Heal("Dark Heal", 80, ret => Me.HasBuff("Dark Concentration")),

                    //Aoe Heal
                    Spell.HealGround("Revivification", ret => Targeting.ShouldAoe),

                    //Single Target Healing
                    Spell.Heal("Innervate", 80),
                    Spell.Heal("Static Barrier", 90,
                        ret => HealTarget != null && !HealTarget.HasDebuff("Deionized") && !HealTarget.HasBuff("Static Barrier")),

                    //Buff Tank
                    Spell.Heal("Static Barrier", on => Tank, 100,
                        ret => Tank != null && Tank.InCombat && !Tank.HasDebuff("Deionized") && !Tank.HasBuff("Static Barrier")),
                    Spell.Heal("Roaming Mend", on => Tank, 100, ret => Tank != null && Tank.InCombat && Me.BuffCount("Roaming Mend Charges") <= 1),

                    //Use Force Bending
                    new Decorator(ret => Me.HasBuff("Force Bending"),
                        new LockSelector(
                            Spell.Heal("Innervate", 90),
                            Spell.Heal("Dark Infusion", 50)
                            )),

                    //Build Force Bending
                    Spell.HoT("Resurgence", 80),
                    Spell.HoT("Resurgence", on => Tank, 100, ret => Tank != null && Tank.InCombat),

                    //Single Target Healing                  
                    Spell.Heal("Dark Heal", 35),
                    Spell.Heal("Dark Infusion", 80)
                    );
            }
        }

        private bool NeedForce()
        {
            if (Me.ForcePercent <= 20)
                return true;
            if (Me.HasBuff("Revivification") && Me.ForcePercent < 80 && !Me.HasBuff("Reverse Corruptions"))
                return true;
            return false;
        }
    }
}

Doesn't swap targets or let you swap targets
 
Back
Top