I have been looking at the API and am wondering, what is the difference between Me.AbilityActivate and AbilityManager.Cast (other than the passed parameters being different)? Are there spells/abilities that are meant to work with one but not the other?
It looks like AbilityActivate just returns a bool (true,false), so I'm guessing AbilityActivate tells the bot if the ability successfully activated.
Code: Spell.DoT("Spell Name, "debuff name", float time) You need the spell name, leave the debuff name blank, and use the float time in milliseconds.
That's a DoT ability, right? So all you have to do is check for the debuff to be missing and cast it then: Code: Spell.CastonGround("Plasma Probe", ret => !Me.CurrentTarget.HasDebuff("whatever the debuff is named"))
its kind of like a shammy fire aoe totem but has no cd, no debuff and it stays up for 9 seconds also how do i put an open on the cr?
Okay I just respeced to Engineering to see what the hell is going on. Yeah, this is difficult. There's no way to track when it's out. Here is what I'm think as a quick fix: The Plasma Probe puts a debuff on the target that lasts 45 seconds. Each tick of the probe refreshes that debuff. We could try tracking the debuff and whenever its time left is less than 42 seconds we refresh the probe. That's cludgy as shit, and I'm not sure how it would work in a group (when someone else is applying the same debuff), but it should work fine solo for now. Longer term, we'll need to write a Spell.DoTonGround function :/ EDIT: it also puts a slow on the target while it's in range. Maybe that's easier to track?
How does this look? Code: public override Composite SingleTarget { get { return new LockSelector( //Movement CombatMovement.CloseDistance(Distance.Melee), //Low Energy new Decorator(ret => Me.EnergyPercent < 60, new LockSelector( Spell.Cast("Rifle Shot", ret => !Me.IsInCover()) )), //Rotation Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled), Spell.Cast("Series of Shots"), Spell.Cast("Explosive Probe"), Spell.Cast("EMP Discharge", ret => Me.CurrentTarget.HasDebuff("Interrogation Probe")), Spell.CastOnGround("Plasma Probe", ret => !Me.CurrentTarget.HasDebuff("Slowed")), Spell.DoT("Interrogation Probe", "Interrogation Probe"), Spell.DoT("Corrosive Dart", "Corrosive Dart"), Spell.Cast("Takedown", ret => Me.CurrentTarget.HealthPercent <= 30), Spell.Cast("Snipe") ); } } public override Composite AreaOfEffect { get { return new Decorator(ret => Targeting.ShouldAoe, new LockSelector( Spell.CastOnGround("Plasma Probe", ret => !Me.CurrentTarget.HasDebuff("Slowed")), Spell.CastOnGround("Orbital Strike"), Spell.Cast("Fragmentation Grenade") )); } } Also, when did they start allowing you to use Snipe outside of cover? I guess that shows how much I play an IA
On my phone right now I will give you my cr in about an hour and a half I was moding the cr before I left for class lol
this is the coding ive come up with so far it still needs the "Plasma Probe" also still need to put in the opener not sure how to do that part Code: using Buddy.BehaviorTree; using DefaultCombat.Core; using DefaultCombat.Helpers; namespace DefaultCombat.Routines { internal class Engineering : RotationBase { public override string Name { get { return "Sniper Engineering"; } } public override Composite Buffs { get { return new PrioritySelector( Spell.Buff("Coordination") ); } } public override Composite Cooldowns { get { return new LockSelector( Spell.Buff("Escape"), Spell.Buff("Shield Probe", ret => Me.HealthPercent <= 50), Spell.Buff("Evasion", ret => Me.HealthPercent <= 30), Spell.Buff("Adrenaline Probe", ret => Me.EnergyPercent <= 50), Spell.Buff("Laze Target"), Spell.Cast("Target Acquired") ); } } public override Composite SingleTarget { get { return new LockSelector( //Movement CombatMovement.CloseDistance(Distance.Melee), //Low Energy new Decorator(ret => Me.EnergyPercent < 60, new LockSelector( Spell.Buff("Laze Target"), Spell.Cast("Series of Shots") )), //Rotation Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled), Spell.Buff("Crouch", ret => !Me.IsInCover() && !Me.IsMoving), Spell.Buff("Target Aquired"), Spell.Cast("Series of Shots", ret => Me.IsInCover()), Spell.Cast("Takedown", ret => Me.CurrentTarget.HealthPercent <= 30), Spell.Cast("Fragmentation Grenade", ret => !Me.CurrentTarget.HasDebuff("Energy Overides")), Spell.CastOnGround("Plasma Probe", ret => !Me.CurrentTarget.HasDebuff("Slowed")), Spell.Cast("Explosive Probe"), Spell.Cast("EMP Discharge"), Spell.DoT("Interrogation Probe", "", 15000), Spell.Cast("Orbital Strike"), Spell.DoT("Corrosive Dart", "", 12000), Spell.Cast("Fragmentation Grenade") ); } } public override Composite AreaOfEffect { get { return new Decorator(ret => Targeting.ShouldAoe, new LockSelector( Spell.CastOnGround("Orbital Strike"), Spell.CastOnGround("Plasma Probe"), Spell.Cast("Fragmentation Grenade") )); } } } }
Nothing from what I can tell jumping in on this. Frag grenade only ability seems to be missing from rotation though, maybe a few more conditions such as cover for series of shots is different. But the double implementation of frag grenade in the rotation as well as preference for Orbital Strike in AoE. Mechanically same though.