Page 57 of 78 FirstFirst ... 7 47 55 56 57 58 59 67 ... LastLast
Results 561 to 570 of 780
  1. #561
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    I wanted to show yall the current logic for the rotation, by far the most complicated one yet.

    Even if you don't understand code the logic should be in place.

    Let me know if something is glaringly wrong =D

    ps, || means logical OR , and && means logical AND.

    Code:
    //this checks to see if we have a GCD to consume
                if(bs.isGCD())
                {
                    //this gets the timings for the time since the last time we cast those attacks.
                    lastGL = currEvent.eventTime() - bs.getLastGL();
                    lastTwin = currEvent.eventTime() - bs.getLastTwin();
                    lastDK = currEvent.eventTime() - myTarget.getLastDK();
                    //basically sets the last time we did demo to a million years ago if we're lacking demo (for PB)
                    lastDemo = (myTarget.demo()?currEvent.eventTime() - myTarget.getLastDEMO().eventTime():-100000);
                    
                    //this gets our current GCD (modified by GL stacks)
                    currGCD = bs.getGCD();
                    
                    //this just does PB at the start of the fight
                    if(currEvent.eventTime()==0 && !bs.pbCD())
                    {
                        bs.addAction(MNKEvent.EventType.PB, myTarget);
                        continue;
                    }
                    
                    //this tells us what we do inside a PB
                    if(bs.pb())
                    {
                        //setup GL and buffs, first priority during PB
                        if(bs.gl() < 3)
                        {
                            //only Demo during PB only after buffs if we're starting with pb
                            if(!myTarget.demo() && (currEvent.eventTime() > 1000 || bs.bfb() && bs.ir()))
                                bs.addAction(MNKEvent.EventType.DEMO, myTarget);
                            else    //otherwise SP
                                bs.addAction(MNKEvent.EventType.SP, myTarget);
                        }
                        else
                        {
                            //once we have GL3, setup other buffs, prioritizing DK before OPO form runs out
                            if(bs.getLastStance() == MNKSimulator.Stance.OPO && !myTarget.dk())
                                bs.addAction(MNKEvent.EventType.DK, myTarget);
                            else if(!bs.twin())
                                bs.addAction(MNKEvent.EventType.TWIN, myTarget);
                            else    //if we have all buffs, just SP for max damage.
                            {
                                bs.addAction(MNKEvent.EventType.SP, myTarget);
                            }
                        }
                    }
                    else
                    {
                        //do different timings based on stance
                        switch(bs.getLastStance())
                        {
                            //we only have NONE stance if we just came out of PB or we had to leave target
                            case NONE:
                                //basically if we don't have DK, Twin or GL3, or demo, immediately start GL combo
                                if(!myTarget.dk() || lastDemo >= 1800 - currGCD * 2 || lastGL >= 1200 - currGCD*3 || lastTwin >= 1200 - currGCD * 2 || bs.gl() < 3)
                                    bs.addAction(MNKEvent.EventType.DK, myTarget);
                                else if(!myTarget.tod())    //otherwise, we have time to ToD
                                    bs.addAction(MNKEvent.EventType.TOD, myTarget);
                                else if(!myTarget.fr())     //otherwise, we have time to FR
                                    bs.addAction(MNKEvent.EventType.FR, myTarget);
                                else    //otherwise ID filler
                                    bs.addAction(MNKEvent.EventType.ID, myTarget);
                                break;
                            case RAPTOR:
                                if(lastTwin >= 1200 - currGCD*3)    //if twin will fall off within next combo
                                    bs.addAction(MNKEvent.EventType.TWIN, myTarget);
                                //this tests timings to see whether we have time to filler
                                else if(lastGL < 1200 - currGCD*2 && lastDemo < 1800 - currGCD && lastTwin < 1200 - currGCD && lastDK < 1500 - currGCD*3)
                                {
                                    //filler priority is ToD > FR > ID
                                    if(!myTarget.tod())
                                        bs.addAction(MNKEvent.EventType.TOD, myTarget);
                                    else if(!myTarget.fr())
                                        bs.addAction(MNKEvent.EventType.FR, myTarget);
                                    else
                                        bs.addAction(MNKEvent.EventType.ID, myTarget);
                                }
                                else
                                    bs.addAction(MNKEvent.EventType.TRUE, myTarget);
                                break;
                            case COEURL:
                                //more timings, demo if it will expire in less than 3 seconds (arbitrary number here)
                                if(!myTarget.demo() || (lastDemo > 1500 && currEvent.numBuffs() > myTarget.getLastDEMO().numBuffs()))
                                    bs.addAction(MNKEvent.EventType.DEMO, myTarget);
                                //otherwise SP if DK, GL, or Twin will fall off
                                else if(lastGL >= 1200 - currGCD || lastDK >= 1500 - currGCD*2 || lastTwin >= 1200 - currGCD*3)
                                    bs.addAction(MNKEvent.EventType.SP, myTarget);
                                else
                                {
                                    //otherwise filler
                                    if(!myTarget.tod())
                                        bs.addAction(MNKEvent.EventType.TOD, myTarget);
                                    else if(!myTarget.fr())
                                        bs.addAction(MNKEvent.EventType.FR, myTarget);
                                    else
                                        bs.addAction(MNKEvent.EventType.ID, myTarget);
                                }
                                break;
                            case OPO:
                                //dk if dk is going to fall off
                                if(!myTarget.dk() || lastDK > 1500 - currGCD*3)
                                    bs.addAction(MNKEvent.EventType.DK, myTarget);
                                //if nothing's going to fall off we can filler
                                else if(lastGL < 1200 - currGCD*3 && lastDemo < 1800 - currGCD * 2 && lastTwin < 1200 - currGCD*2 && lastDK < 1500 - currGCD)
                                {
                                    if(!myTarget.tod())
                                        bs.addAction(MNKEvent.EventType.TOD, myTarget);
                                    else if(!myTarget.fr())
                                        bs.addAction(MNKEvent.EventType.FR, myTarget);
                                    else
                                        bs.addAction(MNKEvent.EventType.ID, myTarget);
                                }
                                //if somehow we get here (usually because i've disabled ID filler, we can BS if DK won't fall off
                                else if(myTarget.dk() && lastDK < 1500 - currGCD*3 && myTarget.canBackstab())
                                    bs.addAction(MNKEvent.EventType.BS, myTarget);
                                else
                                    //if we run out of stuff to do might as well DK to continue rotation
                                    bs.addAction(MNKEvent.EventType.DK, myTarget);
                                break;
                        }
                    }
                }
                //this checks to see if there is an oGCD slot for an action
                else if(bs.isOGCD())
                {
                    //do all OGCD actions here
                    //PB if its up, and we are either missing GL stacks or the stance isn't COEURL (so we don't waste a coeurl)
                    if(!bs.pbCD() && (bs.gl() < 3 || bs.getLastStance() != MNKSimulator.Stance.COEURL))
                    {
                        bs.addAction(MNKEvent.EventType.PB, myTarget);
                    }
                    //do BfB > IR > HF > Peak > invig cooldowns, too lazy (and not much point) in saving to stack.
                    else if(!bs.bfbCD())
                        bs.addAction(MNKEvent.EventType.BFB, myTarget);
                    else if(!bs.irCD() && (!myTarget.demo() || lastDemo > 1200))
                        bs.addAction(MNKEvent.EventType.IR, myTarget);
                    else if(!bs.hfCD())
                        bs.addAction(MNKEvent.EventType.HF, myTarget);
                    else if(!bs.peakCD())
                        bs.addAction(MNKEvent.EventType.PEAK, myTarget);
                    else if(bs.getTPBalance() < 540)
                        bs.addAction(MNKEvent.EventType.INVIG, myTarget);
                }
    (0)

  2. #562
    Player
    Cynric's Avatar
    Join Date
    Aug 2013
    Location
    Uldah
    Posts
    1,215
    Character
    Cynric Caliburn
    World
    Cactuar
    Main Class
    Viper Lv 100
    If you're going to use PB as a starter why not do.

    PB > DK(B4B) > TwS(IR) > SnapPunch(HowlingFist)> SnapPunch(SteelPeak) > Demolish

    Why use howling fist/steel peak before setting up DK, and TwS? Seems like a waste of extra damage, I'd actually like to see the math in comparison on this one.
    (0)

  3. #563
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    Quote Originally Posted by Cynric View Post
    If you're going to use PB as a starter why not do.

    PB > DK(B4B) > TwS(IR) > SnapPunch(HowlingFist)> SnapPunch(SteelPeak) > Demolish

    Why use howling fist/steel peak before setting up DK, and TwS? Seems like a waste of extra damage, I'd actually like to see the math in comparison on this one.
    Not sure, but for one thing, I assumed since you are not in Opo stance at the beginning of PB you shouldn't DK until after the first SP at least. DK only applies debuff if used in Opo.
    (1)

  4. #564
    Player
    NoctisUmbra's Avatar
    Join Date
    Mar 2011
    Posts
    2,546
    Character
    Noctis Umbra
    World
    Excalibur
    Main Class
    Pugilist Lv 50
    Quote Originally Posted by pandabearcat View Post
    Not sure, but for one thing, I assumed since you are not in Opo stance at the beginning of PB you shouldn't DK until after the first SP at least. DK only applies debuff if used in Opo.
    This was actually changed during Retail version. Not sure if right off the bat, or with one of the early patches.

    DK debuff is in fact applied during PB. PB effectively removes any stance you have up, and acts as a sort of universal stance, at least as far as Dragon Kick's debuff is concerned. I have not tested other bonus effects actually.

    That being said, I prefer getting to the GL3 buff first and foremost before I apply DK or TS.

    MY PB opener is PB > SPx3 > DK > TS > PB wears off. Then I simply continue with DK > TS > Demo > ToD. If I have reason to not keep my rotation flank-only I will start with BS > TS > Deemo > ToD.
    (0)
    Last edited by NoctisUmbra; 11-01-2013 at 06:56 AM.

  5. #565
    Player
    Cynric's Avatar
    Join Date
    Aug 2013
    Location
    Uldah
    Posts
    1,215
    Character
    Cynric Caliburn
    World
    Cactuar
    Main Class
    Viper Lv 100
    Yeah PB has been applying DK's debuff, and arm of destroyer has been silencing in it since early access.


    Also Noctis I prefer to setup twin snakes and DK before hand since usually by the time I finish the PB rotation TwS is starting to fall off then afterward DK starts to fall off so it fits pretty well for me to start back up. But yours lets you true strike once so I guess its a matter of preference.
    (0)
    Last edited by Cynric; 11-01-2013 at 07:05 AM.

  6. #566
    Player
    NoctisUmbra's Avatar
    Join Date
    Mar 2011
    Posts
    2,546
    Character
    Noctis Umbra
    World
    Excalibur
    Main Class
    Pugilist Lv 50
    Quote Originally Posted by Cynric View Post
    Yeah PB has been applying DK's debuff, and arm of destroyer has been silencing in it since early access.


    Also Noctis I prefer to setup twin snakes and DK before hand since usually by the time I finish the PB rotation TwS is starting to fall off then afterward DK starts to fall off so it fits pretty well for me to start back up. But yours lets you true strike once so I guess its a matter of preference.
    I don't even True Strike honestly. I just consider a stack of Greased Lightning a higher priority buff due to the collective 7% damage buff and the 5% attack speed buff in one. Applying them earlier lets me get through the sequence faster.

    Overall, I'd say there isn't much of a difference if at all in terms of DPS for that segment. What really matters is setting your rotation up properly based on your preference like you said.
    (0)

  7. #567
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    Oh okay, well PB applying all buffs, I need to indicate that in my sim, thanks for the info.

    As for opening rotation, I have no idea what is better, but tbh, mathing it out is better than simming it, because this is a thing that doesn't greatly affect total dps and variance in simming is going to give you skewed results.

    Also as far as I can see you can only fit 4 abilities into PB, even if you start with SP/Demo, so you either exit it missing Twin, 1 stack of GL, or DK.

    Because it only takes 2 GCDs to setup twin, while it takes 4 for Dk and 3 for GL, I would suggest leaving Twin out of the PB opener.

    If someone has a good reason why their opening rotation is the best I'd be happy to use it, I don't know monk well enough really.
    (0)

  8. #568
    Player
    Cynric's Avatar
    Join Date
    Aug 2013
    Location
    Uldah
    Posts
    1,215
    Character
    Cynric Caliburn
    World
    Cactuar
    Main Class
    Viper Lv 100
    The reasoning behind leaving out Twin Snakes seems plausible. If that were the case I'd just use Noctis' rotation.

    Also with enough Skill speed if you start your rotation building GL then you can manage to eek out extra skills in PB.
    (0)

  9. #569
    Player
    Blooregard's Avatar
    Join Date
    Oct 2013
    Location
    Ul'dah.
    Posts
    14
    Character
    Blooregard Kazoo
    World
    Ultros
    Main Class
    Pugilist Lv 50
    If Arm of The Destroyer silences in PB, and Dragon Kick applies it's debuff, safe to assume Bootshine not always critting in Perfect Balance is an oversight?
    (0)

  10. #570
    Player
    Cynric's Avatar
    Join Date
    Aug 2013
    Location
    Uldah
    Posts
    1,215
    Character
    Cynric Caliburn
    World
    Cactuar
    Main Class
    Viper Lv 100
    Quote Originally Posted by Blooregard View Post
    If Arm of The Destroyer silences in PB, and Dragon Kick applies it's debuff, safe to assume Bootshine not always critting in Perfect Balance is an oversight?
    Probably intentional, the buffs are utility things where as if bootshine crit inside perfect balance it'd just be a damage thing. Could be anything though, the way the stances work, the way PB was scripted, the way bootshine is, whether the crit is handled differently. Could be a bug too.
    (1)

Page 57 of 78 FirstFirst ... 7 47 55 56 57 58 59 67 ... LastLast