RekkasGit / E3Next

12 stars 21 forks source link

Melee Stick Point Addition Support #136

Closed MetalJacx closed 1 year ago

MetalJacx commented 1 year ago

Wondering if we can get support for snaproll.

Current issue with back and behind is when character engage the mob in hallway or or any sort of wall or pillar. The character gets stuck, The character try's to take these large arcs around the mob and it is stuck on a set distance so it doesn't try to move it closer and just constantly slams against the object.

Snaproll function runs through mobs and then turns around. Allowing for much better control in tight places.

I tried just placing snaproll and snaproll rear into the ini and it still just tries to arc around the mob.

Shenlonx commented 1 year ago

The current code already uses snaproll as both Rekka and I showed in Discord.

private static void StickToAssistTarget()
        {
            //needed a case insensitive switch, that was easy to read, thus this.
            string sp = E3.CharacterSettings.Assist_MeleeStickPoint;
            if (_stickSwitch == null)
            {
                var stw = new Dictionary<string, Action>(10, StringComparer.OrdinalIgnoreCase);
                stw.Add("behind", () =>
                {
                    MQ.Write($"Sticking behind target with distance: {_assistDistance}");
                    MQ.Cmd("/stick snaproll uw");
                    MQ.Delay(200, $"${{Bool[${{Stick.Behind}} && ${{Stick.Stopped}}]}}");
                    MQ.Cmd($"/squelch /stick hold moveback behind {_assistDistance} uw");
                });
                stw.Add("front", () =>
                {

                    MQ.Cmd($"/stick hold front {_assistDistance} uw");
                    MQ.Delay(200, "${Stick.Stopped}");

                });
                stw.Add("behindonce", () =>
                {

                    MQ.Cmd("/stick snaproll uw");
                    MQ.Delay(200, $"${{Bool[${{Stick.Behind}} && ${{Stick.Stopped}}]}}");
                    MQ.Cmd($"/squelch /stick hold moveback behindonce {_assistDistance} uw");
                });
                stw.Add("pin", () =>
                {

                    MQ.Cmd("/stick snaproll uw");
                    MQ.Delay(200, $"${{Bool[${{Stick.Behind}} && ${{Stick.Stopped}}]}}");
                    MQ.Cmd($"/squelch /stick hold moveback pin {_assistDistance} uw");
                });
                stw.Add("!front", () =>
                {

                    MQ.Cmd("/stick snaproll uw");
                    MQ.Delay(200, $"${{Bool[${{Stick.Behind}} && ${{Stick.Stopped}}]}}");
                    MQ.Cmd($"/squelch /stick hold moveback !front {_assistDistance} uw");
                });
                _stickSwitch = stw;
            }
            Action action;
            if (_stickSwitch.TryGetValue(sp, out action))
            {
                action();
            }
            else
            {   //defaulting to behind
                _stickSwitch["behind"]();
            }

        }

If you have your ini defined as behind, behindonce, pin or !front, they all use /stick snaproll uw, then there's a 200ms delay and then move to behind, how far away are you engaging targets from? It's possible the delay isn't long enough for the distance your toons need to cover and are then moving on to the /stick hold moveback behind {_assistDistance} uw code. I've definitely seen my melee toons snaproll and haven't seen the large arcs you mention. How big are we talking for "large arcs"? Outside of melee range?

MetalJacx commented 1 year ago

I apologize I didn't realize that what the code was representing. The arcs/circling are whatever the MaxDistance setting is put at for the mob. I have never seen it snaproll since using e3. I have tried placing my monk next to the mob and farther back. It engages and then circles around the mob from where it's starting point is. My buddy I play with, his bard does the exact something with his e3.

If I send them the /stick snaproll command they do it. My ping at the moment is 92ms.

Adding visual: image

If there is a wall or pillar it just keeps running up against it. and never fixes itself to get behind. I can't take manual control either without doing /e3p

RekkasGit commented 1 year ago

Nice chart :) However are you simply sending "/stick snaproll "?

right now sends these commands in order. uw = under water "/stick snaproll uw" (wait 200milliseconds) "/squelch /stick hold moveback behind {_assistDistance} uw"

Maybe we should wait more to allow snaproll to finish?

MetalJacx commented 1 year ago

Yeah I was simply just sending /stick snaproll.

I just test the above command with a /timed 2 which i believe is 200ms. That command worked ran right through mob and turned around.

I made sure to put them both in the same positions and test the command and then /assistme. Your command and normal /snaproll works but when its e3 /assistme it does as picture describe above.

MetalJacx commented 1 year ago

Made a video as well. Hope this helps. https://www.xbox.com/play/media/QSGB9JFQ8X