WeakAuras

Bandit's Guile Tracking

  • 4 posts
    #2 May 20, 2011 at 19:53 UTC - 0 likes

    Hi there,

    I hope you can help me further with my request, as I myself lack the necessary coding skills. :(

    I recently started playing with my rogue again and took Combat as my main spec. Bandit's Guile is one of the core talents, which gives you an increasing damage buff stacking up to three by doing Sinister Strikes and/or Revealing Strikes

    The mechanic works nearly the same as Combo Points generation:
    By hitting a target with either of those strikes increases a counter and once it reaches 4 you will get the first buff called Shallow Insight. The strike counter resets and you have to do 4 strikes again to gain the next buff called Moderate Insight which overwrites the first. Same applies to the third buff, which is called Deep Insight. Once "Deep Insight" runs out the cycle starts again.

    Same with Combo Points is once you switch to another target while having built up for example 2 of 4 "strike points" and hit it with either SS or RS the cycle resets as well (The buff stays however, if you have built up one already) unless you hit the ability "Redirect" which next to Combo Points also redirects the "strike points". Switching back to the original target without hitting the other target keeps the cycle intact.

    What I now want WeakAuras to to is:

    • Show a counter in combo points style which shows me how many "strike points" I have and resets when I gain a buff up until the third stack where it resets and stops to count as long as the last buff is active.
    • When changing the target keep the old state cached and put it onto the current target when using "Redirect" or reset completely when starting a new strike cycle (CP generation principle)
    • Show a different texture based on the current active buff

    I hope you could help me in this undertaking.

    #3 May 20, 2011 at 21:59 UTC - 0 likes

    Keeping track of "Strike Points" and caching them per target is not too difficult. I would create one "invisible" display with a Custom Trigger to be the master tracker of Strike Points, like so:

    • Main Trigger: Custom - Event
    • Check on Event(s): COMBAT_LOG_EVENT_UNFILTERED
    • Custom Trigger:
      function(_,_,message,_,_,source,_,gestGUID,_,_,_,spell)
        if(message == "SPELL_CAST_SUCCESS" and UnitIsUnit(source or "", "player")) then
          if(spell == "Sinister Strike" or spell == "Revealing Strike") then
            WA_StrikeCache = WA_StrikeCache or {};
            WA_StrikeCache[destGUID] = (WA_StrikeCache[destGuid] + 1) % 4;
            WA_LastStrikeTarget = destGUID;
            WeakAuras.ScanEvents("STRIKE_COUNTER_UPDATE");
          end
        end
      end
      

    Then, you can create other displays with Custom Triggers to show you the information. You could choose either to have a single display show you the Strike Count using the Custom Duration Info field:

    • Main Trigger: Custom - Status
    • Check on Event(s): STRIKE_COUNTER_UPDATE, PLAYER_TARGET_CHANGED
    • Custom Trigger:
      function() return UnitExists("target") end
      
    • Custom Untrigger:
      function() return not UnitExists("target") end
      
    • Duration Info:
      function()
        local targetGUID = UnitGUID("target");
        return WA_StrikeCache and targetGUID WA_StrikeCache[targetGUID] or 0, 4;
      end
      

    or, you can create separate displays that each show at a specific Strike Count. For example, this trigger would only show when your Strike Count is exactly 1.

    • Main Trigger: Custom - Status
    • Check on Event(s): STRIKE_COUNTER_UPDATE, PLAYER_TARGET_CHANGED
    • Custom Trigger:
      function()
        local targetGUID = UnitGUID("target");
        local strikeCount = WA_StrikeCache and targetGUID WA_StrikeCache[targetGUID] or 0;
        return strikeCount == 1;
      end
      
    • Custom Untrigger:
      function()
        local targetGUID = UnitGUID("target");
        local strikeCount = WA_StrikeCache and targetGUID WA_StrikeCache[targetGUID] or 0;
        return strikeCount ~= 1;
      end
      

    Finally, tracking the Shallow/Moderate/Deep Insight buffs can simply be done with regular Aura triggers.


    Now, this does not integrate the Redirect ability. This is mostly because I do not know the exact mechanics, and I'm a little worried that they might be difficult to estimate accurately. Furthermore, I do not have a high level rogue, so it's difficult for me to test the mechanics at all. Specifically, I don't really understand from which targets Combo Points are redirected: just your most recent target, or any targets on which you had Combo Points? When a mob dies, do its points then become lost? What about if you leave the zone that mob was in? What if the mob silently despawns or leaves your phase? Do Combo Points expire after some amount of time? These are all questions that need accurate answers, and then those answers need to be turned into appropriate tracking systems to ensure that the Strike Count can be accurately estimated on use of Redirect.

    Last edited May 20, 2011 by Mirrormn
    #4 May 22, 2011 at 15:29 UTC - 0 likes

    Hi,

    sorry for the late reply and thanks for your answer. :)

    To answer your questions. The Redirect ability only takes your most recent combo points from the last target and redirects them to your current target. So if you have five points it will direct five points, if you have only one point it will only redirect this one point. Also it will not sum up all targets where you put combat points on, because each target will lose its combo points, whenever you build up a combo point on another target. Only one target can have combo points at any time. If you switch from your combo point target and only do auto hits, they will not be lost on this target. The same applies to the Bandit's Guile mechanic.

    Basically you can say, on that target your current combo points are currently accumulated is also the target which your "strike points" are built up.

    Regarding dead mobs and CPs. They stay for a while - (around 8 to 13 sec. and as long as you don't hit another target with cp generating abilities) and can be used for Redirect or abilities, which don't need a target (these are Slice and Dice and Recuperate). This also has the advantage that those non-target spells can somehow track the CP status, as they will be greyed out, if no none are active, be the target dead or alive. "Strike Points" on the other hand seem to stay, even if the mob gets out of combat. I tested it by building up 3 "strike points" and fleeing the mob to get out of combat. During the return of its spawning point it lost the combo points pretty quickly (2-4 seconds). I then reentered combat knowing that 3 strike points were already built up and hit it with SS/RS once I got the buff. Not sure if this is also intended by Blizzard though

    Another test I did was regarding the synchronicity between combo point state and strike point state when using Redirect on a mob. As it turns out they are asynchronous. I attacked a mob and built up three strike points and then got of combat leaving the mob alive. Now I lost the CPs but the Strike Points were still there. The premise for Redirect to work is at least one combo point otherwise the ability won't fire, which is why I killed a critter with a CP generating ability like Solar Plexus in order to gain a combo point. Now I had one combo point and used redirect on another mob. As soon as I used SS/RS on this mob I got the Bandit's Guile buff, meaning I also redirected the three strike points from the initial mob. Also not sure, if this is intended by Blizzard or not.

    To nail it down:

    • Combo Points can be active on only one target at any time.
    • Dead mobs keep combo points for several seconds which can be used for non-target finishers or Redirect.
    • Recuperate/Slice and Dice are non-target finishers and good tracking spells to see, if there are any combo points currently active anywhere.
    • Living creatures getting out of combat lose CPs quick, but keep the "strike point" counter
    • Zoning also resets the strike point counter
    • Redirect works asynchronous and takes the CPs from the target, where you last generated them on as well as the Bandit's Guile state from the target where you last used your SS/RS ability on.
    • Redirect needs CPs to fire.

    I could not test phased content, because I first have to find a place where I still have that (Many quests done).

    Last edited May 22, 2011 by Velasco
    #5 May 22, 2011 at 19:53 UTC - 0 likes

    Well, with this info, I think I can probably construct some proper Redirect tracking code. However, it may need to wait until after 1.4 release.

  • 4 posts

You must login to post a comment. Don't have an account? Register to get one!