Results 1 to 10 of 112

Thread: A DPS Simulator

Hybrid View

  1. #1
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    Update 5
    Massive DoT and Event overhaul complete! The engine is now complete and ready for action!
    • DoT overwriting will now follow rules of the game. The engine will not warn you when your DoT will not overwrite, just like real life!
    • DoTs will now snapshot their crit and potency profiles.
    • DoTs have been separated from the "TICK" event. They now tick separately, making it much easier to track individual damage contributions.
    • All Events now track their own "buffs" at time of cast. This way, you can retroactively see what buffs are active for a given event.
    • Similarly, all events track whether or not they have crit. Crits are symbolized with a (!) in the output, and can also be retrieved programmatically.
    • All events are fully exposed and can be consumed by a Metrics package to track "realtime" DPS and other factors.
    • TP has been added to the engine. If your attack consumes more TP than is available, it will fail.
    • TP balance is now tracked as well as total TP usage.
    • Invigorate has been added as a usable cooldown.
    • Woops, RoB stopped working. Am fixing now - Now working again.

    I am writing the documentation for the engine now, and hopefully it will be available over the weekend!
    (1)
    Last edited by pandabearcat; 10-19-2013 at 03:34 AM. Reason: can't count

  2. #2
    Player
    EasymodeX's Avatar
    Join Date
    Sep 2013
    Posts
    900
    Character
    Lunairetic Emx
    World
    Midgardsormr
    Main Class
    Lancer Lv 50
    Quote Originally Posted by pandabearcat View Post
    Update 6
    The engine will not warn you when your DoT will not overwrite, just like real life!
    Err, what's the point of that? If the player is entering logic for the engine, then they'd want to wait for the DOT to drop before recasting. If the player is entering a sequence, then the engine should flag a rejected DOT so the player can fix it, IMO, and run the sim again.

    This should be the set of Dragoon events:

    Code:
    //attacks
    AA ("Autoattack", 100, 0, false, false),
    HT ("Heavy Thrust", 170, 70, true, true),
    HT_RECAST ("HT Recast Timer", 0, 0, false, false),
    HT_END ("HT Ends", 0, 0, false, false),
    PH ("Phlebotomize", 170, 90, true, true),
    PH_DOT ("Phlebotomize (DoT)", 20, 0, false, false),
    PH_RECAST ("PH Recast Timer", 0, 0, false, false),
    PH_END ("PH Ends", 0, 0, false, false),
    ID ("Impulse Drive", 180, 70, true, true),
    ID_ENDc ("ID Ends (combo)", 0, 0, false, false),
    DE ("Disembowel", 220, 60, true, true),
    DE_RECAST ("DE Recast Timer", 0, 0, false, false),
    DE_END ("DE Ends", 0, 0, false, false),
    DE_ENDc ("DE Ends (combo)", 0, 0, false, false),
    CT ("Chaos Thrust", 160, 60, true, true),
    CT_DOT ("Chaos Thrust (DoT)", 20, 0, false, false),
    CT_RECAST ("CT Recast Timer", 0, 0, false, false),
    CT_END ("CT Ends", 0, 0, false, false),
    TT ("True Thrust", 150, 70, true, true),
    TT_ENDc ("TT Ends (combo)", 0, 0, false, false),
    VT ("Vorpal Thrust", 200, 60, true, true),
    VT_ENDc ("VT Ends (combo)", 0, 0, false, false),
    FT ("Full Thrust", 300, 60, true, true),
    FR ("Fracture", 100, 80, true, true),
    FR_DOT ("Fracture", 20, 0, false, false),
    FR_RECAST ("Fracture", 0, 0, false, false),
    FR_END ("Fracture", 0, 0, false, false),
    //OGCD attacks
    LS ("Leg Sweep", 130, 0, true, false),
    LS_CD_END ("LS CD Ends", 0, 0, false, false),
    JU ("Jump", 200, 0, true, false),
    SSD ("Spineshatter Dive", 170, 0, true, false),
    DFD ("Dragonfire Dive", 250, 0, true, false),
    //buffs
    BFBt ("Blood for Blood (traited)", 0, 0, true, false),
    BFBt_END ("BFB (traited) Ends", 0, 0, false, false),
    BFBt_CD_END ("BFB (traited) CD Ends", 0, 0, false, false),
    IR ("Internal Release", 0, 0, true, false),
    IR_END ("IR Ends", 0, 0, false, false),
    IR_CD_END ("IR CD Ends", 0, 0, false, false),
    LSURGE ("Life Surge", 0, 0, true, false),
    LSURGE_CD_END ("LSurge CD Ends", 0, 0, false, false),
    PSURGE ("Power Surge", 0, 0, true, false),
    PSURGE_END ("PSurge Ends", 0, 0, false, false),
    PSURGE_CD_END ("PSurge CD Ends", 0, 0, false, false),
    (1)
    Last edited by EasymodeX; 10-19-2013 at 04:09 AM.

  3. #3
    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 EasymodeX View Post
    Err, what's the point of that? If the player is entering logic for the engine, then they'd want to wait for the DOT to drop before recasting. If the player is entering a sequence, then the engine should flag a rejected DOT so the player can fix it, IMO, and run the sim again.
    The point of the engine is to simulate the game.

    It will not prevent you from doing any actions that are not expressly illegal.

    For instance, if you wanted to you could spam windbiter all day long until you run out of TP, and it won't have a problem with it.

    Its up to the user to program (or think through) their priorities when doing the rotation. Also this way, you can compare overwriting, etc, between different rotations easily to see which is superior.

    I only give you the tools! Its up to you to use them effectively. On that note though, I will be writing a metrics program over the weekend to easily visualize your dps profile. Anyone else is welcome to do so as well.

    I do not want the base engine to throw out too much text spam, esp since it is already slow since its in Java.

    Every single event that the engine handles is exposed.

    If you wish, you could easily write a module that will warn you whenever your dot will not overwrite.
    (0)