Go Back   WowAce Forums > World of Warcraft > Addon Requests & Ideas
Addon Requests & Ideas Come here to share your ideas and see if someone is interested in making them!

Reply
 
Thread Tools
Old 06-25-2012   #1
CuteBunny
Newbie
 
Join Date: Apr 2011
Posts: 9
Default Rotation Helper

I do know about existance of such addons like CLC or Ovale but they all does not meet some of my requirements. To be honest I think that TellMeWhen is the best addon for maintaining rotation (for me playing as protection/retribution paladin). It's because of 2 simple things:

1. I totally control all the priority and conditions under which some skill is shown without any knowledge of lua (although I know Lua a little).

2. I can configure all the positioning, sizing, visibility (and opacity which is binded to conditions too). And it supports Masque.

All that is good but there are a few things that I cannot achieve with this tool:

1. Although the grid can be freely positioned across the screen, the icons can be bound to specific cell only. They can be sorted so they will appear in another cell visually but their position or size cannot be changed explicitly. This could be achieved by creating multiple grids but that's not too handy.

2. Conditions don't know anything about past actions except for the current state of things. For example when I want to keep 'CS, filler, CS' rotation for my prot pally, I have to set CS icon to show only when it's cooldown is under ~1.2 seconds. But if have to perform some bunch of actions and become ready to continue my rotation 1.9 seconds after I casted CS, the CS icon is shown in front already although I have plenty of time to perform another cast.

3. Sorting spells by their cooldown is quite a tricky task. And it's hard to figure out which action is going to be next when there is no available cast at the moment.

4. The other problem is that such short buffs like Sacred Duty or The Art of War may proc suddenly and SotR or Exorcism icons can simply push some spell I've almost casted backwards. Another example. I want to cast Consecration only when I have more than 70% of base mana (during my single target rotation). All other possible skills are on CD, but Judgement is going to be available in .5 seconds. And suddenly my mana becomes over 70% and cons stands in front of J. Another example. I want to cast Inquisition whenever I have 3 HoPo or Divine Purpose and Inq duration is under 3 seconds. I've almost casted TV when Inq appeared in front.

What do I want to achieve? An accordion which shows a queue of skills sorted by priority, availability, cooldowns, prediction (for example, I have 2 HoPo, the first icon is CS, the second - TV (or Inq if it's duration is less then 3 + amount of skills casted before I have 3 HoPo * GCD duration)) and soft ordering (not pushing icons with even higher priority before player finished the previous action).

The other not mandatory but quite interesting things are a visual effect on the icon on casting the skill it's presenting and floating of icons which ordering has been changed.

Sorry, my English is quite bad, if you think that this idea is worth a discussion then your questions are welcome.
CuteBunny is offline   Reply With Quote
Old 06-26-2012   #2
Phanx
Seal Cub Clubbing Club
 
Phanx's Avatar
 
Join Date: May 2005
Location: United States
Posts: 8,188
Default Re: Rotation Helper

I'm not completely sure what you're asking... are you looking for other addons to try? Are you looking for someone to help you write a new addon? If the latter, have you already started, or is it just an idea right now? Do you have any programming experience? Do you want to learn how to write an addon, or would you rather someone else just write it for you? etc.

Quote:
Originally Posted by CuteBunny View Post
1. I totally control all the priority and conditions under which some skill is shown without any knowledge of lua (although I know Lua a little).
CLC scripts are pretty simple. I've never used the addon myself, but I have helped people write rotation scripts for it. If you want help customizing a rotation, feel free to post what you have and explain what you want to change.

That said, I'd imagine the reason there aren't any rotation helper addons that are 100% customizable without any Lua knowledge is because such a complicated options UI would be a huge hassle to write and maintain, and probably very confusing for most users to try to use. Already, if you look at the forum threads, comment pages, and ticket trackers for any addon with a complicated options UI, you will see that the overwhelming majority of questions and support requests are from people who simply can't figure out how to use the options.

From an addon author's perspective, this is a pretty frustrating situation, and not one most people want to get into. I personally would never want to write this kind of addon, just for that reason. For the average user, addons with pre-defined rotations (like ShockAndAwe, CLCRet, etc.) that are "good enough". Users who are serious enough about their DPS to want total control and the ability to tweak every last thing are probably also serious enough to put in a little time to learn some basic Lua.

If you want to try to write this kind of addon, good luck, but keep in mind that it would be a huge undertaking, not only in terms of writing it in the first place, but also in terms of maintaining it, and providing support for it.
__________________
Author/maintainer of Grid, PhanxChat, and many more. | PM me on CurseForge
Troubleshoot an addon | Turn any code into an addon | More addon resources
Need help with your code? Attach or paste your whole, real files.
Please don't PM me about addon bugs, requests, or code help. Post a comment, ticket, or thread instead!
Phanx is offline   Reply With Quote
Old 09-22-2012   #3
LordStrucker
Member
 
LordStrucker's Avatar
 
Join Date: Dec 2009
Posts: 18
Default Re: Rotation Helper

Since you forwarded me to this thread I thought I'd replay here. This reply is in the context of What's Next.

Quote:
1. I totally control all the priority and conditions under which some skill is shown without any knowledge of lua (although I know Lua a little).
All set!

Quote:
2. I can configure all the positioning, sizing, visibility (and opacity which is binded to conditions too). And it supports Masque.
Having the appearance be modified by the active logic block is an interesting idea and may be something I look at down the road but I fear I have a lot of items ahead of it on my wish list.

Quote:
1. Although the grid can be freely positioned across the screen, the icons can be bound to specific cell only. They can be sorted so they will appear in another cell visually but their position or size cannot be changed explicitly. This could be achieved by creating multiple grids but that's not too handy.
I'm sorry but I'm not quite sure what you're asking for.

Quote:
2. Conditions don't know anything about past actions except for the current state of things. For example when I want to keep 'CS, filler, CS' rotation for my prot pally, I have to set CS icon to show only when it's cooldown is under ~1.2 seconds. But if have to perform some bunch of actions and become ready to continue my rotation 1.9 seconds after I casted CS, the CS icon is shown in front already although I have plenty of time to perform another cast.
I can add a conditional statement to identify the last spell the player cast. Though I believe the same thing can be accomplished by ordering the logic blocks properly. If you check out the default prot pally logic set that comes with What's Next? I think it accomplishes what you're looking for here.

Quote:
3. Sorting spells by their cooldown is quite a tricky task. And it's hard to figure out which action is going to be next when there is no available cast at the moment.
For the last 1.5 seconds of their cooldown abilities will start appearing in the suggestion display in the order that they come off cooldown. I can add an option to increase that window past 1.5 if it would help though I worry about the suggestion stack being filled with useless suggestions if the gap is set to high.

Quote:
4. The other problem is that such short buffs like Sacred Duty or The Art of War may proc suddenly and SotR or Exorcism icons can simply push some spell I've almost casted backwards. Another example. I want to cast Consecration only when I have more than 70% of base mana (during my single target rotation). All other possible skills are on CD, but Judgement is going to be available in .5 seconds. And suddenly my mana becomes over 70% and cons stands in front of J. Another example. I want to cast Inquisition whenever I have 3 HoPo or Divine Purpose and Inq duration is under 3 seconds. I've almost casted TV when Inq appeared in front.
For situation A what would you expect / desire to see happen in that situation? There is no way for the addon to predict procs coming up and ignoring them would be a DPS loss once they are up : /

For situation B, it would be ugly but you can add conditional statements to the consecration block to check if Judgment (or whatever other spells) are on CD for at least 1 whole second. I might be able to add in a mechanic where a block is marked as being of low importance and is only suggested when there is nothing else to suggest and won't be for a given period of time such as 1 second. That may even work as a conditional statement.

For situation C, the 3 second window is there to give you time to react and cast the Inquisition before it fades. If you're in the middle of casting another spell when it comes up you should have plenty of time to finish the cast your doing before switching to Inquisition. I'm not sure how else such a situation would be handled.

Reading through your post again I think what you might be looking for is an option to have the suggestion display only update immediately after the player has performed an action, rather then periodically several times between each cast. Is that right? If so you could try increasing the time between updates to 1.5 or there about. (Under What's Next's general interface options)
__________________
Projects: What's Next? - AllPlates - Sudoku - Death Clock - Super Loot

Last edited by LordStrucker; 09-22-2012 at 08:45 AM.
LordStrucker is offline   Reply With Quote
Old 10-22-2012   #4
CuteBunny
Newbie
 
Join Date: Apr 2011
Posts: 9
Default Re: Rotation Helper

Okay, so I've finally managed to come back to this post to explain things in more details:

1. Multiple action blocks. For example I've configured TMW to show me 2 blocks: Single-target rotation and Multi-target rotation. Since it is not possible for any addon to figure out how many enemies do we have in X range from self/target/focus and it's not very handy to switch modes in combat, it would be quite nice to be able to see both blocks at the same time.

2. X actions per block. It's very handy to be able to see which actions are likely to be used after the current one. For example I would like to see 3 actions at once. Of course some procs may entirely change everything and that will happen quite often but knowing that stuff is still quite valuable.

3. Configuration of action icon position/opacity/size depending on its number in the action block's priority list. For example, I want to adjust the first action to be at 1.0x scale, 0.8x opacity and at the top right corner of the block, the second icon is going to be smaller, more faded and positioned lefter and lower. And so on. So I still have some valuable info on my screen while it does not attract my attention too much.

4. Accepted state for the 1st action (2nd and all other actions are never in accepted state). It means that the icon may or may not be changed freely for another (better) action. The action icon becomes accepted X seconds before it become usable (player current power, power gain speed, spell cooldown, global cooldown should be taken into account). Before the icon is accepted it may be changed for a better action at any given time, when it is accepted some conditions have to be met before this icon is changed.

5. Waiting time limit for a better action. For example, I've got Judgment that's going to be available in .1 seconds while Crusader's Strike is going to be off cooldown in 0.5 seconds. If we set this limit to be .55 seconds then Crusader's Strike is going to be shown as the 1st action. The waiting time should be applied only once per making a decision: if we have Exorcism going of cooldown in .6 seconds it should not replace Crusader's Strike in .05 seconds.

6. Minimum action show time (for accepted actions). Let's imagine that we set this option to 1 second. This means that, if Crusader's Strike icon is accepted and being shown for 0.3 seconds and The Art of War procs, the Crusader's Strike icon will be shown for 0.7 seconds more before it's going to be replaced by Exorcism. Furthermore it would be nice to be able to set some special effect (e.g. flash) on this icon X seconds before it's going to be changed.

7. Bar indicator of availability of the spell (for the first action) which fills to 100% when the spell is castable. Maybe located around the border of the icon. This indicator can be in 3 states which are indicated by its color (for example, red - when action is not yet accepted, yellow - when the action is accepted but you need to wait some time before the spell is going to be castable, green - when there is little time left before action is available so you can start spamming the button). The last number might be configured as some people have bigger lag or maybe don't want to spam the button at all. Maybe this bar might require some flashing effect when player get's such buff as Clearcasting (for feral druids) when he has not enough energy and the spell is already of CD.

The idea of all that stuff is to maximize the DPS for any given player. Anyone can adjust these numbers so they will push the correct buttons all the time (without panic when actions start to replace one another) depending on their lag and reaction. I will try to answer all the questions that might arise or explain anything that is not clear (my english is not really good). Thanks for reading this.

I have quite a few more ideas but that's too much for one post.

Last edited by CuteBunny; 10-22-2012 at 02:24 PM.
CuteBunny is offline   Reply With Quote
Old 10-22-2012   #5
LordStrucker
Member
 
LordStrucker's Avatar
 
Join Date: Dec 2009
Posts: 18
Default Re: Rotation Helper

1. It is possible to build logic sets that would do what you're looking for here, just go through and remove any enemy count conditional statements from the logic blocks, both the single target and multi target abilities will be suggested 1 as primary 1 as secondary depending on the order.

I do have 2 tools for checking the number of enemy units:

a. The first just checks how many enemies you are in combat with but cannot know any range information. Mobs are added when you first take or deal damage to them and removed only when they die or you exit combat.

b. The second tests how many mobs were hit by a given spell (Not yet released). It looks like "If Consecration last hit 3 or more enemies." The implementation just watches the combat log for damage done by the given spell and checks the number of different units it hits after each cast.

2. Yeah I would like find a way to display upcoming abilities but I have 2 concerns:

a. I worry about the reliability of trying to forecast the situation even 2 GCDs out, especially with how customizable I'm making the rotation logic, without static conditions for all spells trying to figure out what will be suggested next is going to be error prone.

b. There is also the potential for information overload. I'm already displaying multiple suggestions for the present moment. I worry that if I try to display suggestions for multiple GCDs it might end up being difficult for the user to interpret quickly.

I'll look into implementing something that would do this but might by default be turned off in the options.

3. I like the idea of changing the appearance of the display based on the active logic block. I can see a way to implement size/opacity easily enough though I'd likely leave positioning alone that would complicate the setup too much for most users in my opinion.

4/6. I understand the instability of the display can be annoying at times but I'm not convinced that locking in what has become a suboptimal suggestion is any better. When playing my Prot Warrior I want the display to switch to Shield Slam immediately if it procs not wait until the previous suggestion is cast or some period of time elapses. If I come across a way to implement this functionality as a transparent conditional statement I may add it to give people the option. I think using your 5th idea when possible to prevent suggestions that won't be up long from ever being put up would be the better option.

5. I'll add conditional statements for comparing the cooldowns of 2 abilities such as, "If Crusader's Strike will be on cooldown for 1 second longer than Judgment." that you could add to the Judgment logic block to achieve this functionality.

7. Some of what you suggest here is already in place. As the suggested spell comes of cooldown its border fades from white to black (might be the other way around). I'll look into adding something for adjusting based on latency. I'm not entirely sure what your trying to say in the last sentence here.

Some interesting ideas, if I miss understood anything please let me know.
__________________
Projects: What's Next? - AllPlates - Sudoku - Death Clock - Super Loot
LordStrucker is offline   Reply With Quote
Old 10-23-2012   #6
CuteBunny
Newbie
 
Join Date: Apr 2011
Posts: 9
Default Re: Rotation Helper

1. I think that most of the time we can't rely on that tool. Image the situtation when there are lots of targets around but they are all spread out. Maybe that's not a common situation and most of the time they are going to be stacked but anyway we will lose some dps while performing a multi-target rotation on one target. So I would prefer to see both rotations in different blocks (which are a little bit spread out from each other) all the time.


2.
a. There should be a "player state" object which encapsulated all the data which may affect making decisions (e.g. for paladins: all spells cooldowns, mana, holy power, buff/debuff durations, target buff/debuff durations) and all actions modify this data in some way (e.g. Hammer of the Righteous will take some mana, generate 1 Holy Power (3 Holy Power when Holy Avenger is active), put Hammer of the Righteous on cooldown, put Crusader's Strike on cooldown, start global cooldown, apply Weaken Blows debuff on the target or extend to specific duration). Also player has some predictable power regeneration speed (not too valuable for paladins while quite important for hunters and other energy-based classes), predictable GCD duration (based on players haste). So we can generate quite accurate data for a "player state" object based on time and modifications applied by the actions which were performed during this time. Of course the further we predict the less likely this prediction is going to be correct but from the point of programming it does not really matter how many actions do we want to generate (for example, we can generate 500 actions, although this is not going to be valuable to anyone at all... an will cause huge pressure on CPU). So it would be nice to give everyone possibility to customize the number of icons he wants to see and I'm quite sure that some people would choose to see only 1, some whould set this options to 2, 3, 4 or even 5. Personally I would like to see only 3.


b. Just let the user choose how many actions he wants to see. For example, you can set 2 actions as a default number.


3. Actually it's not to hard to setup. Here is the "appearance" set of options which come to my mind at the moment:


a. Basic icon scale. Usually it is a slider (sometimes combined with textbox) which allows to set percentage value in between 25% and 400% with a step of 5%/10%. This option will be applied to the first action. Defaults to 100%.

b. Icon scale step. Same slider (with textbox) between -100% and 100% with a step of 5%/10%. This option will be applied to every action after the first one. For exaple, if basic icon scale is set to 200% and icon scale step is set to -50%, icon scales are going to be at these values: 1st - 200%, 2nd - 150%, 3rd - 100% and so on. If the icon scale becomes smaller than or equal to 0% than this icon and all icons after this one are going to be hidden. Defaults to 0% (all icons are equal size).

c. Basic icon opacity. From 100% to 5% with a step of 5%. Defaults to 100%.

d. Icon opacity step. From 0% to 95% with a step of 5%. Defaults to 0%.

e. Relative point of child icon (top left, top, top right, left, middle, right, bottom left, bottom, bottom right). It's a combobox (dropdown). Defaults to "right".

f. Relative point of parent icon. Defaults to "left". That means that, for example, 2nd icon binds to 1st one, while 3rd binds to 2nd and so on. And the population goes from right to left. With these options any user will be able to define any direction for any block (vertical upwards or downwards, horizontal to the left or to the right and any diagonal).

g. X offset. Absolute value (same slider and textbox) from -200 to 200 range (for example) with a step of 1 pixel. I guess it's obviuos what does this option do.

h. Y offset.

4-6. All these ideas are not anything that replaces one another - they all can work at the same time. And yes, of course user needs options to choose whether he wants to use any of these. For the 4th point, if we set the amount of time (before the action becomes usable) when action becomes accepted to 0, then action becomes accepted only when it is already usable (off cooldown). For the 5th point, if we set maximum waiting time to 0, then it means that when we make a decision we will always put ability with the lowest cooldown left in front of the priority list (the logic is simple: we filter all abilities which cds are lower than or equal to specific value, and then we pick one the most important; if this value is zero then behaviour is going to be default). For the 6th point, simply set minimum display time (this option only work for accepted actions described in point 4, meaning it will never wait not accepted ones) to zero, and it won't wait at all before swaping this action to more important.

That's how my idea is intended to work. For example, we set action accepting threshold to .5 seconds, maximum waiting time to .5 seconds and minimum display time for accepted action to 1 second. We will ignore mana in this example since retribution/protection paladins no longer have to worry about that, also I will not be making any predictions further than the 1st action and will ignore cooldown decreases caused by haste. We have 2 holy power at the moment and target is nearly 21% health. And we have the following cooldowns left: global - 1.5 seconds, Judgment - 0 (ready to use), Crusader's Strike - 2, Exorcism - 15.

a. Since the system is not interested in the present time (as the GCD is active and nothing can be used) it looks forward after 1.5 seconds. The cooldowns on spells are going to be the next: global - 0, Judgment - 0, Crusader's Strike - 0.5, Exorcism - 13.5. It picks spells filtered by waiting time (which CD <= 0.5): Judgment and Crusader's Strike. As Crusader's Strike is more important it's being shown.

b. In 1.5 seconds when its cooldown is 0.5 seconds left Crusader's Strike is being accepted. Since this point we are sure that we are going to use this ability.

c. In 0.5 seconds player casts Crusader's Strike and we have the following situation: 3 holy power, GCD - 1.5, CS - 4.5, J - 0, Exo - 13. We look forward once again: GCD - 0, CS - 3, J - 0, Exo - 11.5. Now Judgement is shown but since we have to wait until it's going to be castable for 1.5 seconds it's not accepted.

d. In 0.7 seconds (0.3 seconds before J would be accepted) The Art of War proced and Exorcism became available (situation changed). As J is not yet accepted we start making a brand new decision and look forward after 0.8 seconds (end of GCD) and see that both J and Exo will match 0.5 seconds limit. So Exo replaces J on the screen.

e. In 0.3 seconds Exo becomes accepted.

f. In 0.5 seconds Exo becomes actually castable (at this point protection timer starts ticking) but player was interrupted somehow and he did not do anything.

g. In 0.2 seconds our targets health dropped below 20% and Hammer of Wrath becomes available. But since our current action is protected by minimum display time we do not make any new decisions yet.

h. In 0.8 seconds (after protection time elapsed) we start making a new decision and replace Exo with HoW.

7. I think we should talk about that visual effects a little bit later.

P.S. When predicting beyond first GCD we should add some user customized value to the each GCD (GCD left for 1st action, GCD left + (full GCD + value) * 1 for the 2nd, GCD left + (full GCD + value) * 2 for the 3rd and so on). It means that user realizes that pushing a button takes some time (different value for different users) and wants measurements to be more accurate.

Last edited by CuteBunny; 10-23-2012 at 01:59 PM.
CuteBunny is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:55 AM.