• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • [PAID] Superbad (Premium Edition)

    Discussion in 'Druid' started by handnavi, Aug 29, 2014.

    1. BluBot

      BluBot New Member

      Joined:
      Dec 13, 2013
      Messages:
      29
      Likes Received:
      0
      Trophy Points:
      1
      This has a very generous trial time.

      After a few test runs I was impressed enough to buy the profile.
       
    2. Winio

      Winio Member Legendary

      Joined:
      Nov 24, 2013
      Messages:
      78
      Likes Received:
      0
      Trophy Points:
      6
      Unfortunately the ChangeLog is missing a whole bunch of fixes that I included in Superbad 4.0 over the time that Handnavi didn't want to include. This are the fixes:

      • Shattering throw is poorly supported, which is surprising since it is a raid wide DPS increase and the additional defensive CD is often not needed otherwise. The following changes are necessary:

        Inside conditions.cs add a new debuff class:
        Code:
                    public class shattering
                    {
                        public static bool up { get; set; }
                    }
        
        Inside DruidAttacks.cs add a check whether Shattering Throw or Shattering Blow is already up in ShatteringBlow method:
        Code:
                private static bool ShatteringBlow()
                {
                    if (!HasSpellShattering)
                        return false;
                    if (!SuperbadSettings.Instance.SymbSpell)
                        return false;
                    if (_currentSpec != WoWSpec.DruidFeral)
                        return false;
                    if (_targetNotBoss)
                        return false;
                    if (StyxWoW.Me.CurrentTarget == null)
                        return false;
                    if (debuff.shattering.up)
                        return false;
                    return Spell.CastSymbSpell(112997, StyxWoW.Me.CurrentTarget);
                }
        
        Inside Main.cs add the Shattering Throw and Shattering Blow debuff check inside PrepareVariables(), so we don't do it when the boss already has one of the debuffs:
        Code:
                        debuff.shattering.up = (StyxWoW.Me.CurrentTarget != null) && (StyxWoW.Me.CurrentTarget.HasAura(64382) || StyxWoW.Me.CurrentTarget.HasAura(112997));
        
      • Symbiosis spells are only checked once during the CR initialization. That means the CR will only ever use the Symbiosis spell you had when you started the bot. The correct way is to refresh the Symbiosis spells whenever we cast or refresh Symbiosis. The easiest way I found is to just extend the Combat Log handler.

        In EventHandlers.cs extend the HandleCombatLog() method to recheck the Symbiosis spells whenever you cast or refresh Symbiosis by adding the following code block to the SPELL_AURA_REFRESH and SPELL_AURA_APPLIED cases:
        Code:
                                if (e.SpellId == 110309)
                                {
                                    Superbad.SetLearnedSpells();
                                }
        
      • The opening rotation is more or less completely fucked up. The problem is, that even though Ravage is part of the single target rotation the routine will always do an auto-attack first. The steps need to be reordered.

        Inside Feral.cs change the HandleSingleTarget() method to reorder the first few skills:
        Code:
                    if (cat_form())
                        return;
                    if (buff.prowl.up)
                    {
                        ravage();
                        return;
                    }
        
                    if (ShatteringBlow())
                        return;
        
                    auto_attack();
        
      • For Garrosh we really don't want to consider the Farseer a valid target until it has taken damage (either by the Star or an idiot player). Trust me, your raid hates you when you trigger the Farseer before it is hit by the Star on Heroic by casting FF on it.

        Extend the cycleTargets LINQ query inside HandleSingleTarget() to not include the Farseer if he is at 100% health:
        Code:
                    List<WoWUnit> cycleTargets =
                        UnitList.Where(
                            u => target.time_to_die_circle(u) > 1 &&
                                 (u.Combat || Unit.IsDummy(u)) && StyxWoW.Me.IsFacing(u) && u.IsWithinMeleeRange && !((u.Entry == 71983) && (u.HealthPercent == 100))).ToList();
        
      • The routine is kind of dumb sometimes when it comes to which targets are valid targets and which aren't. Hint: AoEing the spawns on the trash mobs before Garrosh is a bad idea. So is cleaving the adds that spawn during the empower whirl on Garrosh.

        Extend the IgnoreMobs hash set inside Unit.cs to include the manifestation:
        Code:
                public static HashSet<uint> IgnoreMobs = new HashSet<uint>
                {
                    52288, // Venomous Effusion (NPC near the snake boss in ZG. Its the green lines on the ground. We want to ignore them.)
                    52302, // Venomous Effusion Stalker (Same as above. A dummy unit)
                    52320, // Pool of Acid
                    52525, // Bloodvenom
                    52387, // Cave in stalker - Kilnara
                    72050, // Iron Juggernaut - Crawler Mines
                    73454, // Manifestation
                };
        
        Add a new HashSet to Unit.cs that includes the Minion of Y'Shaarj:
        Code:
                public static HashSet<uint> IgnoreMobsAoE = new HashSet<uint>
                {
                    72272, // Minion of Y'Shaarj
                };
        
        Extend the NearbyUnfriendlyUnits2() inside Unit.cs to not include units that are on the IgnoreMobsAoE list:
        Code:
                public static IEnumerable<WoWUnit> NearbyUnfriendlyUnits2
                {
                    get
                    {
                        return
                            ObjectManager.GetObjectsOfType<WoWUnit>(true, false)
                                .Where(
                                    u =>
                                        u.IsValid && ((u.Attackable && u.CanSelect && !u.IsDead &&
                                                       !u.IsNonCombatPet && !u.IsCritter && u.Distance <= 225)
                                                      || (u.IsCasting && u.CastingSpellId == 145599)) &&
                                        !IgnoreMobs.Contains(u.Entry) && !IgnoreMobsAoE.Contains(u.Entry) && !u.IsFriendly
                                ).ToList();
                    }
                }
        
        Inside Unit.cs extend the UnfriendlyUnits() method to check the IgnoreMobsAoE list:
        Code:
                public static IEnumerable<WoWUnit> UnfriendlyUnits(int maxSpellDist)
                {
                    bool dungeonBot = IsBotInUse("DungeonBuddy");
                    bool questBot = IsBotInUse("Quest");
        
                    bool useTargeting = (dungeonBot || (questBot && StyxWoW.Me.IsInInstance));
        
                    if (useTargeting)
                    {
                        return
                            Targeting.Instance.TargetList.Where(
                                u => u != null && ValidUnit(u) && !IgnoreMobsAoE.Contains(u.Entry) && u.SpellDistance() < maxSpellDist);
                    }
        
                    Type typeWoWUnit = typeof (WoWUnit);
                    Type typeWoWPlayer = typeof (WoWPlayer);
                    List<WoWObject> objectList = ObjectManager.ObjectList;
                    return (from t1 in objectList
                        let type = t1.GetType()
                        where type == typeWoWUnit || type == typeWoWPlayer
                        select t1 as WoWUnit
                        into t
                        where t != null && ValidUnit(t) && !IgnoreMobsAoE.Contains(t.Entry) && t.SpellDistance() < maxSpellDist
                        select t).ToList();
                }
        
        It would technically be possible to include the Minions to the normal IgnoreMobs list, but that would make it impossible to target that unit manually to kill single stray mobs, since the list is checked inside ValidUnit which is consulted in various other places.

      Those are the changes I made. I would appreciate it if they could be included in 4.1 from now on, so I can actually buy your CR which is excellent otherwise :).
       
      Last edited: Sep 1, 2014
    3. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      Thanks for these kind words. :)
       
    4. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      The main target is PVE - but i have heard from different people that the use it for PVP, too.
      Just test it - there is a 5 days trial. :)
       
    5. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      I will consider it, thanks for the input! :)
       
    6. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      Hey BluBot,

      i am really happy that you like this product. Thank you! :)
       
    7. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48

      Hey Winio,

      i am sorry that i might have missed your suggestions before. I have integrated them now.
      Thanks for your contributions!
       
    8. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      Hey Sucubich,

      i think its a good idea to add some "default settings" for Grinding/Questing, Raiding and PVP. I will see what i can do.
       
    9. reeL

      reeL New Member Legendary

      Joined:
      Jan 15, 2010
      Messages:
      47
      Likes Received:
      0
      Trophy Points:
      0
      Hey,

      does the routine support the Rune of Re-Origination?
       
    10. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      Short answer: Yes.
      I am still investigating a better handling of Savage Roar / Rip when RoR is active. Simc and Catus dont deal with it in a good way.
       
    11. Winio

      Winio Member Legendary

      Joined:
      Nov 24, 2013
      Messages:
      78
      Likes Received:
      0
      Trophy Points:
      6
      Thanks for including my patches. You got yourself a new customer now :).
       
    12. toliman

      toliman Member

      Joined:
      Jun 20, 2012
      Messages:
      625
      Likes Received:
      10
      Trophy Points:
      18
      So far, seems like enough to start with. As more routines come along, the value will change for what people expect from a routine, and by October / 6.0, those issues will be magnified.

      Wasn't sure about stars and leaves, but, bought this based on the icon alone.

      Feral, indeed.
       
    13. Slashed

      Slashed New Member

      Joined:
      Apr 4, 2014
      Messages:
      157
      Likes Received:
      1
      Trophy Points:
      0
      Cool version for low price, very good idea :)
      Possibly to add a auto-pull-mod with: Healing Touch > Prowl > Savage Roar > (Boss pulled) > Tiger's Fury > Ravage > Rip when the raid entering in combat ?
      For win the 4T16 part (3CP + 2CP with the critical Ravage) and put Rip with 5CP and 30% DoC. We can win 1/2s on trinkets procs too..
       
      Last edited: Sep 1, 2014
    14. Bamse

      Bamse Member

      Joined:
      Nov 3, 2012
      Messages:
      99
      Likes Received:
      4
      Trophy Points:
      8

      This would be even better :)
       
    15. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      Cool, thank you! :)
       
    16. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      The icon is a beast, for sure. :cool:
      Actually also some more stuff has changed, but i did'nt write it down in the first post.
      I just wanted to be honest at startup. Thats why i wrote this part.

      In my opinion the difference between the free and premium version cannot be soo big (compared to others),
      because the free version is allready very good and full of features. :)

      Nevertheless: have fun with Superbad!
       
    17. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      Mh, and how should we determine that we might pull in some seconds?
      Casting: Healing Touch > Prowl > Savage Roarfor several minutes because the pull got delayed is pretty bad in my opinion. :)
       
    18. Winio

      Winio Member Legendary

      Joined:
      Nov 24, 2013
      Messages:
      78
      Likes Received:
      0
      Trophy Points:
      6
      Hotkey for example. Technically it should also be possible to just run some custom LUA code that reacts to the message broadcasted by the various boss mods to start the pull timer. That could be used by Superbad to figure out when the pull is happening and prepare. In general though, you can just put the opening sequence in a cast sequence macro and use that for the pull, then turn on Superbad to take over.

      Another thing though, which can be really annoying: Any chance you can pause the CR while mounted? It is really annoying if you run around on the Timeless Isle with the CR unpaused, just to pull a tiger or something and instantly dismount and turn into cat form. It is even more annoying if you happen to fly in Kun-Lai for example and aggro one of the birds, so the CR switches to cat form mid air, potentially falling to your death.
       
    19. Batschu

      Batschu New Member

      Joined:
      Nov 16, 2013
      Messages:
      17
      Likes Received:
      0
      Trophy Points:
      0
      583 Feral here 7 times Killed Garrosh HC with youre help ! (Free Version)
      Now i purchased the Premium Version but im not sure how to download it


      *edit
      I AM STUPID ! sorry
       
      Last edited: Sep 2, 2014
    20. handnavi

      handnavi Well-Known Member Buddy Store Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,489
      Likes Received:
      59
      Trophy Points:
      48
      New version sent to the store:

      - Changed: Default setting-directory is now: \HB\Routines\Superbad\
      - Added: Superbad can now embedd predefined config files
      - Added: Sample Heroic-Feral-25 config file
      - Fix: Sigil of Rampage was count twice, so we didnt wait for the second trinket to proc
      - Removed unused options in the GUI ( -> updating)
      - Added: You can now turn off combat behaviour if you are mounted or in flightform

      Please note: it will take some time until the version will be approved.

      And finally one wish by myself:

      If you got some cool settings for a specific case... and you are willing to share it...:
      please upload it here or sent it to me. I will integrate all good presets into Superbad.
       

    Share This Page