Jump to content

thebk150

Members
  • Posts

    15
  • Joined

  • Last visited

Posts posted by thebk150

  1. Hey all, I'm hoping someone can provide some ideas.  I'm currently using wRotation with a combat routine that I've made.  It does not use framelock at the moment. 

     

    I've run into an issue where when I run any of the LFR raids on Tauri, my WoW client performance is very bad.  The performance is really bad during the first pull of any boss.  My WoW client will be rendering 4-5 FPS and sometimes even lower.  This is with a 980ti and 6700k. 

     

    I believe it's due to the amount of players, pets, and enemies within close proximity to my character.  Has anyone run into this before?

  2. I've created a basic fight class in C# and I'm running into an issue where it casts spells in the wrong order.  Does anyone have any experience with this?  I had originally tried using frame lock and locking the frame before invoking CombatRotation() and then unlocking the frame as soon as it returned but that didn't fix the issue and caused other performance issues.

     

    The issue appears to be the worst when multiple spells are off cooldown.  For example, when I first go into a fight with all of my burst spells, they are almost all invoked in the wrong order.

     

    Here's the actual logic I'm using for CombatRotation() and how I'm casting spells.

        public void CombatRotation()
        {
    
            // Fire Elemental Totem
            if (burstMode && FireElementalTotem.IsSpellUsable)
            {
                SpellManager.CastSpellByNameLUA("Fire Elemental Totem");
                return;
            }
    
            // Elemental Mastery
            if (burstMode && ElementalMastery.IsSpellUsable)
            {
                SpellManager.CastSpellByNameLUA("Elemental Mastery");
                return;
            }
    
            // Feral Spirit
            if (burstMode && FeralSpirit.IsSpellUsable)
            {
                SpellManager.CastSpellByNameLUA("Feral Spirit");
                return;
            }
    
            // Ascendance
            if (burstMode && Ascendance.IsSpellUsable)
            {
                SpellManager.CastSpellByNameLUA("Ascendance");
                return;
            }
    
            // Stormlash Totem
            if (burstMode && StormlashTotem.IsSpellUsable)
            {
                SpellManager.CastSpellByNameLUA("Stormlash Totem");
                return;
            }
    
            // Flame Shock
            if (aoeMode && FlameShock.IsSpellUsable && FlameShock.IsDistanceGood && (ObjectManager.Target.BuffTimeLeft("Flame Shock") < 15000))
            {
                SpellManager.CastSpellByNameLUA("Flame Shock");
                return;
            }
    
            // Fire Nova
            if (aoeMode && FireNova.IsSpellUsable && (ObjectManager.Target.HaveBuff("Flame Shock")))
            {
                Lua.LuaDoString("CastSpellByName('Fire Nova')");
                return;
            }
    
            // Searing Totem
            if (SearingTotem.IsSpellUsable && !ObjectManager.Me.TotemExist(TotemType.Fire))
            {
                SpellManager.CastSpellByNameLUA("Searing Totem");
                return;
            }
    
            // Chain Lightning - MW5
            if (aoeMode && ChainLightning.IsSpellUsable && ChainLightning.IsDistanceGood && ObjectManager.Me.BuffStack("Maelstrom Weapon") == 5)
            {
                Lua.LuaDoString("CastSpellByName('Chain Lightning')");
                return;
            }
    
            // Lightning Bolt - MW5
            if (LightningBolt.IsSpellUsable && LightningBolt.IsDistanceGood && ObjectManager.Me.BuffStack("Maelstrom Weapon") == 5)
            {
                SpellManager.CastSpellByNameLUA("Lightning Bolt");
                return;
            }
    
            //Stormstrike
            if (Stormstrike.IsSpellUsable && Stormstrike.IsDistanceGood)
            {
                SpellManager.CastSpellByNameLUA("Stormstrike");
                return;
            }
    
            // Flame Shock
            if (FlameShock.IsSpellUsable && FlameShock.IsDistanceGood && (!ObjectManager.Target.HaveBuff("Flame Shock") || (ObjectManager.Target.BuffTimeLeft("Flame Shock") < 10000)))
            {
                SpellManager.CastSpellByNameLUA("Flame Shock");
                return;
            }
    
            // Lava Lash
            if (LavaLash.IsSpellUsable && LavaLash.IsDistanceGood)
            {
                SpellManager.CastSpellByNameLUA("Lava Lash");
                return;
            }
    
            // Unleash Elements
            if (UnleashElements.IsSpellUsable && UnleashElements.IsDistanceGood)
            {
                SpellManager.CastSpellByNameLUA("Unleash Elements");
                return;
            }
    
            // Earth Shock
            if (EarthShock.IsSpellUsable && EarthShock.IsDistanceGood && ((SpellManager.GetSpellCooldownTimeLeft("Stormstrike") > 1.5) || (SpellManager.GetSpellCooldownTimeLeft("Lava Lash") > 1.5)))
            {
                SpellManager.CastSpellByNameLUA("Earth Shock");
                return;
            }
        }

     

  3. I'm planning on leaving most interrupt logic out and having that be manually done.  I'm also planning on having a manual toggle between single-target and AoE so there shouldn't be too much positional check stuff going on.

    As far as the above, I'm attempting to invoke spells using Lua instead of spell.launch now.  Just to make sure I have it working, I've added a

    Lua.LuaDoString("CastSpellByName('Lava Lash')");

    That always runs unconditionally.  I've verified that is spelled correctly on my current game client but it does not cast.

     

    I've also tried the following:

    wManager.Wow.Helpers.SpellManager.CastSpellByNameLUA("Lava Lash");
    wManager.Wow.Helpers.SpellManager.CastSpellByIdLUA(60103);

     

  4. I'm writing a simple combat routine for an Enhancement shaman in 5.4.8 and am running into an issue that I'm hoping someone can provide a bit of insight.  I'm using Marsbars' video as a framework.  I have a while loop that runs when _IsRunning is true and invokes a function that has cascading 'if' statements that checks which spell to run.  Before the combat routine function is called, I lock the frame and immediately unlock the frame after running spell.Launch().

     

    The issue is that every time a spell is launcher, the client locks up for 1/3 of a second.  I've added a simple timer to time how long the .launch() function is taking and it appears to be taking ~300 ms per invocation which makes sense why I'm seeing frame jutter as everything needs to execute faster than 16.67 ms. 

    ...
            var watch = System.Diagnostics.Stopwatch.StartNew();
            FlameShock.Launch();
            Logging.WriteFight("Iteration took " + watch.ElapsedMilliseconds + "ms");
    ...
    [F] 12:18:13 - Iteration took 306ms
    [F] 12:18:13 - [Spell] Cast Stormstrike (Stormstrike)

     

    Is there a better way to invoke the use of spells?  Am I way off base and in over my head with how I'm implementing my combat routine?

     

     

     

×
×
  • Create New...