Git Product home page Git Product logo

buddywing.defaultcombat's Introduction

Build Status

BuddyWing.DefaultCombat

DefaultCombat is the default, all in one combat routine supplied with BuddyWing, the bot for Star Wars: The Old Republic. For more information, visit http://buddywing.com/

Contributions

This combat routine has always been a community effort. Ever since its inception it has seen many branches, and even completely new combat routines being based off it.

Pull Requests

After forking the repository and making your changes, feel free to submit a pull request to merge your changes into the master branch. When submitting a pull request, please take the following into account:

  • Ensure your pull request is accompanied by an issue on the issue tracker and describe how your PR addresses this issue.
  • Make sure your pull request builds. To help with this, we provide AppVeyor build integration which automatically builds all pull requests. PRs that don't build can unfortunately not be merged.
  • We stick to the dotnet foundation coding guidelines as much as possible, please try to have the code in your PR follow these as well.

Every pull request is reviewed by someone with write access to the repository, and if accepted, will be shipped as a part of BuddyWing.

License

DefaultCombat is licensed under the Apache 2.0 License. For more information, please see the LICENSE file.

The code is licensed very permissively, as long as the notices required by the licenses are included, commercial usage is also allowed.

Contributors

Notable contributors up until this point include:

  • Ama (jfitzpat) for the initial write up and tons of work
  • Alltrueist for keeping the rotations updated
  • Wired203 for massive functionality updates
  • Logandros for his help updating the routine to 5.0
  • Cryogenesis for his help updating the routine for 5.0

buddywing.defaultcombat's People

Contributors

aevitas avatar alltrueist avatar cassrgs avatar dependabot[bot] avatar logandros avatar lonestr9 avatar markeeen avatar th3l0aner avatar trasser avatar wired203 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

buddywing.defaultcombat's Issues

Vanguard Shield Specialist

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

Mercenary routines missing some defensives?

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),

Jedi Knight Sentinel CanNotBeDetermined

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!

Add modifiers to interrupts code

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.

Bug Discipline CanNotBeDetermined Bodyguard

[DefaultCombat] Level: 65
[DefaultCombat] Class: BountyHunter
[DefaultCombat] Advanced Class: Mercenary
[DefaultCombat] Discipline: CanNotBeDetermined

Should be Bodyguard

Also noted were
Commando -> Combat Medic
Sentinel -> Watchman

Defensive should be used to mitigate damage on certain debuffs?

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.

Add harvesting from corpses

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

Revise LockSelector's locking strategy

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.

Spell Cooldown

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)
,

Change on pause button

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

Deception Assassin being read as Sorceror Madness

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

Targeting when playing a healing routine.

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.

DefaultCombat will not work with 5.0 changes.

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:

  • Assassins lose phase walk and their rotation has changed.
  • Marauder carnage rotation has changed with a newer ability added into the mix
  • Rage rotation has been changed.

Many other changes....

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.