buddywing / buddywing.defaultcombat Goto Github PK
View Code? Open in Web Editor NEWThe default combat routine included with BuddyWing, the bot for SWTOR
License: Apache License 2.0
The default combat routine included with BuddyWing, the bot for SWTOR
License: Apache License 2.0
I.E Jet Out and Jet Boost are not used as part of cooldowns?
Could add something like so:
// Push back melee damage
Spell.Buff("Jet Boost", ret => Me.EnemiesAttackers.Count(x => x.Distance <= 5 && x.HasMeleeWeapon) > 2),
// Escape for distance
Spell.Buff("Jet Out", ret => Me.Level >= 61 && Me.HealthPercent <= 20 && Me.EnemiesAttackers.Count(attacker => attacker.Distance <= 5 && attacker.HasMeleeWeapon) > 2),
Currently, LockSelector
is used excessively inside the DefaultCombat code base. What this effectively does is acquire a lock for the PrioritySelector
it decorates.
From a theoretical perspective, this ensures the state of the game is guaranteed inside every PrioritySelector
, regardless of whether or not a lock was acquired before or not. However, since the PrioritySelector will have no knowledge of already acquired locks, this could potentially lead to nested locks, which will nuke performance.
There are various possible solutions to this problem, the most obvious being not using a LockSelector
anywhere other than the "root" PrioritySelector for the combat routine. Another option would be a AcquireLockSafe
method or similar, which would ensure a frame lock would only be obtained if none was previously held.
Some routines already have made these changes by the way of pull requests, and it may be a good idea to revise this for all routines, in order to drastically increase performance of the routine.
Routine does not work
2015-11-23 21:15:36,759 [1] INFO Log - Medpac Created!
2015-11-23 21:15:39,114 [7] INFO Log - User is a Trooper
2015-11-23 21:15:40,186 [7] INFO Log - Advanced Class: Vanguard / Discipline: CanNotBeDetermined <--------
2015-11-23 21:15:40,187 [7] INFO Log - Routine Path: Routines
[DefaultCombat] Level: 65
[DefaultCombat] Class: BountyHunter
[DefaultCombat] Advanced Class: Mercenary
[DefaultCombat] Discipline: CanNotBeDetermined
Should be Bodyguard
Also noted were
Commando -> Combat Medic
Sentinel -> Watchman
Many abilities have been changed and moved around in the upcoming 5.0 release. The rotations will mostly stay the same, however the routes will need to be reviewed for each class.
Some examples:
There are times when i do and don't want the interrupts code to trigger, primarily during boss or epic enemy fights where they cannot be stunned / interrupted.
Here is a sample of the modifiers I have added to the Assassin Hatred / Deception code:
//Interrupts
Spell.Cast("Jolt", ret => Me.CurrentTarget.IsCasting && !Me.CurrentTarget.HasDebuff("Unshakeable")),
Spell.Cast("Electrocute", ret => Me.CurrentTarget.IsCasting && !Me.CurrentTarget.HasDebuff("Boss Immunity")),
Spell.Cast("Low Slash", ret => Me.CurrentTarget.IsCasting && !Me.CurrentTarget.HasDebuff("Boss Immunity")),
I am sure others have modifiers they use as well, but this is a simple way to make sure you are only using these abilities where appropriate. If others are interested in updating this, I will work on putting together a list for each spec if possible.
Hello there
On spell.cs there is the GetCooldown() function that states the total cooldown of a spell. This function doesn't take into account alacrity modifiers. Since CanCast() suffer interference from global cooldown it would be an enormous and incredible improvement if we could have another function that states the current cooldown of a spell to use as a conditional on combat rotations as per the example bellow on a lethality operative rotation
Spell.Cast("Overload Shot",
ret =>
Me.EnergyPercent > 85 &&
!Me.HasBuff("Tactical Advantage") &&
**CurrentCooldown**("Shiv") > 1500 &&
**CurrentCooldown**("Toxic Blast") > 1500 &&
Me.CurrentTarget.HasDebuff("Corrosive Dart") &&
Me.CurrentTarget.HasDebuff("Corrosive Grenade") &&
!Me.IsStealthed)
,
Shield Tech discipline is still coming up as CanNotBeDetermined
Something is off with the detection of Deception Assassin.
Its being read as Sorceror Madness.
[DefaultCombat] Class: Inquisitor [DefaultCombat] Advanced Class: Assassin [DefaultCombat] Discipline: Madness [DefaultCombat] [Hot Key][F7] Toggle AOE [DefaultCombat] [Hot Key][F8] Load UI [DefaultCombat] [Hot Key][F12] Set Tank [DefaultCombat] Rotation Selected : Sorcerer Madness
Atm we have plugin https://www.thebuddyforum.com/buddy-wing-forum/buddy-wing-plugins/241185-plugin-proximityinteract-npcs.html
But routine dont know about harvesting. And run to next target after [Poi.Clear] Reason: Done Looting.
Accordingly, the plug-in is trying to collect resources on a routine running to the next target. Because of this plugin sometimes manages to gather resources from one or two corpses, and sometimes nothing at all does not have time to collect. And never has time to gather resources from all dead.
Need any opportunity to get the plugin information about what the harvest is over and we can move on. Or embed the collection function in routine
N/A
2016-01-20 15:34:18,670 [1] INFO Log - Starting Buddy Wing v1.0.1257.822
2016-01-20 15:34:21,327 [6] INFO Log - Logging in...
2016-01-20 15:34:21,552 [6] INFO Log - //removed
2016-01-20 15:34:21,553 [6] INFO Log - Login Success!
2016-01-20 15:34:22,673 [7] INFO Log - //removed
2016-01-20 15:34:22,674 [7] INFO Log - //removed
2016-01-20 15:34:22,675 [7] INFO Log - App Path: //removed
2016-01-20 15:34:26,854 [7] INFO Log - User is a Knight
2016-01-20 15:34:27,721 [7] INFO Log - Advanced Class: Sentinel / Discipline: CanNotBeDetermined
2016-01-20 15:34:27,722 [7] INFO Log - Routine Path: Routines
2016-01-20 15:34:28,830 [7] INFO Log - Medpac Created!
2016-01-20 15:34:28,855 [7] INFO Log - [DefaultCombat] Level: 17
2016-01-20 15:34:28,855 [7] INFO Log - [DefaultCombat] Class: Knight
2016-01-20 15:34:28,856 [7] INFO Log - [DefaultCombat] Advanced Class: Sentinel
2016-01-20 15:34:28,874 [7] INFO Log - [DefaultCombat] Discipline: CanNotBeDetermined
2016-01-20 15:34:28,893 [7] ERROR Log - Unhandled exception during init:
System.ArgumentNullException: Value cannot be null.
Parameter name: type
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at DefaultCombat.Core.RotationFactory.Build(String name) in //removed\Buddywing\Routines\DefaultCombat\Core\RotationFactory.cs:line 54
at DefaultCombat.DefaultCombat.Initialize() in //removed\Buddywing\Routines\DefaultCombat\DefaultCombat.cs:line 69
at Buddy.CommonBot.RoutineManager.set_Current(ICombat value)
at Buddy.CommonBot.BotMain.SetCurrentCombatRoutine()
at Buddywing.MainWindow.?????????????????????????????????????????()
2016-01-20 15:34:28,894 [7] INFO Log - Buddy Wing: The Old Robot is ready!
Like title says, in its current form, trying to play a healing routine is next to impossible.
The targeting is all over the place and sometimes the routine (tried on Sorcerer Corruption) does not work at all.
I heard from people on the forums that they circumvent the problem by removing the targeting and doing it manually.
PureSwtor rotation seems to work for healing right now.
Hello there
It would be awesome for people that use BW as lazyraider a way to use pause as push/release button as a way to use situational cooldowns that need to be used on specific moments.
For example i have a stun on shift+r. When i press shift the rotation pauses when i release it continues
For example, PT sticky bomb explodes after a certain amount of seconds on the target.
Volatile Substance being applied to the user but then say a backstab or poison is applied will proc it. Meaning shroud / Mad dash / Undying rage could be used to mitigate that damage.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.