Page 1 of 3
1
2
3
LastLast
  1. #1

    Xuen Behavior Questions (SimC)

    Hey all,

    I've seen a few people mention Xuen is bugged in SimC so I took a quick look. I found a few interesting things, but before I report on them I want to make sure I understand how he's supposed to work.

    I really only have one question to start: where can I find his datamined melee attack info (as in frequency, damage range, what he inherits from the player, etc)? I wasn't able to locate it on wowhead, but perhaps I just missed it.
    Last edited by Professor Hurt; 2013-09-05 at 09:05 PM.

  2. #2

  3. #3
    Quote Originally Posted by Reglitch View Post
    That was much more informative than I was expecting. You do some great work on your blog.

  4. #4
    Herald of the Titans Hinalover's Avatar
    15+ Year Old Account
    Join Date
    Sep 2008
    Location
    Virginia
    Posts
    2,765
    First up melee info was taken from testing on target dummies with no clothing on. He himself inherits haste (which will affect his lightning as well as how fast his melee attacks) and crit (how often his lightning and melee crit). His melee attacks are affected by the target's armor. So to get an exact attack amount I would suggest going into either the Orc starting zone or Human starting zone and letting Xuen attack the lvl 1 target dummies there who have 0 armor (they die though so be warned about that).

    In SimC, they are taking the damage info from Wowhead but SimC has their own datamind infomation. reading that information can be a bit convoluted in understanding it so I'll try and break it down as best as I can. There are 3 files you need to worry about

    Live datamined file - https://code.google.com/p/simulation...spell_data.inc
    PTR datamined file - https://code.google.com/p/simulation...l_data_ptr.inc
    Scale Data file - https://code.google.com/p/simulation...scale_data.inc

    The first two as mentioned are the raw spell datamined files. Both are EXTREMELY large so either just open them up in a web browser or a program that can handle large text files. The scale data file contains scaling information for how much haste is required for 1% haste, crit, mastery, and so on. The main section we need is the spell scaling. Each class has a set spell baseline that all spells scale around. This can be a fraction of that baseline or a multiple of that baseline. For monks at 90, that spell scaling baseline is 1094.739746093750000 (https://code.google.com/p/simulation...e_data.inc#256)

    Next we look at all instances of the spell. In this case we will be looking at both the damage component (id 123996) and the component that triggers the damage (id 123999)Here you take the spell id of Crackling Jade Lightning and get the following four (adding in titles to help)
    Code:
    //{ Name                                ,     Id,Flags,    PrjSp,  Sch, Class,  Race,Sca,MSL,ExtraCoeff,SpLv,MxL,MinRange,MaxRange,Cooldown,  GCD,  Cat,  Duration,  RCost, RPG,Stac, PCh,PCr,  ProcFlags,   EqpCl, EqpInvType,EqpSubclass,CastMn,CastMx,Div,       Scaling,SLv, RplcId, {      Attr1,      Attr2,      Attr3,      Attr4,      Attr5,      Attr6,      Attr7,      Attr8,      Attr9,     Attr10,     Attr11,     Attr12 }, Description, Tooltip, Description Variable, Icon, ActiveIcon, Effect1, Effect2, Effect3 },
      { "Crackling Tiger Lightning"         , 123996, 0x00, 0.000000, 0x08, 0x200, 0x000, 10,  0, 0.5050000,   1,  0,     0.0, 50000.0,       0,    0,    0,         0, 0x0000,   0,   0,   0,  0, 0x00000000,       0,      0.000,         0, 0x00000000, 0x00000000,     0,     0, 20,  1.0000000000,  0,      0, { 0x00000000, 0x00000000, 0x00000000, 0x40000200, 0x00000001, 0x00000000, 0x00800000, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0 }, "$@spelldesc123904", 0, 0, "ability_monk_cracklingjadelightning", 0, 0, 0, 0 }, /* 156720 */
    Code:
    //{     Id,Flags,  SpId,Idx, EffectType                  , EffectSubType                              ,       Average,         Delta,       Unknown,   Coefficient,  Ampl,  Radius,  RadMax,   BaseV,   MiscV,  MiscV2, Trigg,   DmgMul,  CboP, RealP,Die, 0, 0 },
      { 156720, 0x00, 123996,  0, E_SCHOOL_DAMAGE             , A_NONE                                     ,  0.2930000126,  0.0000000000,  0.0000000000,  0.0000000000,     0,     0.0,    10.0,       1,       0,       0,     0, 1.000000,   0.0, 0.000,  0, 0, 0 },
    Code:
    /{ Name                                ,     Id,Flags,    PrjSp,  Sch, Class,  Race,Sca,MSL,ExtraCoeff,SpLv,MxL,MinRange,MaxRange,Cooldown,  GCD,  Cat,  Duration,  RCost, RPG,Stac, PCh,PCr,  ProcFlags,   EqpCl, EqpInvType,EqpSubclass,CastMn,CastMx,Div,       Scaling,SLv, RplcId, {      Attr1,      Attr2,      Attr3,      Attr4,      Attr5,      Attr6,      Attr7,      Attr8,      Attr9,     Attr10,     Attr11,     Attr12 }, Description, Tooltip, Description Variable, Icon, ActiveIcon, Effect1, Effect2, Effect3 },
      { "Crackling Tiger Lightning Driver"  , 123999, 0x00, 0.000000, 0x08, 0x200, 0x000, 10,  0, 0.0000000,   0,  0,     0.0,     0.0,       0,    0,    0,        -1, 0x0000,   0,   0,   0,  0, 0x00000000,       0, 0.000,    0, 0x00000000, 0x00000000,     0,     0, 20,  1.0000000000,  0,      0, { 0x09040980, 0x00000000, 0x00000000, 0x00000000, 0x00000080, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00000000, 0 }, 0, 0, 0, "ability_monk_summontigerstatue", 0, 0, 0, 0 }, /* 156723 */
    Code:
    //{     Id,Flags,  SpId,Idx, EffectType                  , EffectSubType                              ,       Average,         Delta,       Unknown,   Coefficient,  Ampl,  Radius,  RadMax,   BaseV,   MiscV,  MiscV2, Trigg,   DmgMul,  CboP, RealP,Die, 0, 0 },
      { 156723, 0x00, 123999,  0, E_APPLY_AURA                , A_PERIODIC_TRIGGER_SPELL                   ,  0.0000000000,  0.0000000000,  0.0000000000,  0.0000000000,  1000,     0.0,     0.0,       1,       0,       0, 123996, 1.000000,   0.0, 0.000,  0, 0, 0 },
    First thing I would like to point out is, the ExtraCoeff value of Crackling Tiger Lightning. This is the AP multiplier that is added to the damage. In this case it's 0.5050000, or 50.5% of AP. The rest of that line isn't needed per-se but interesting to look at (like giving cooldowns, whether it's affected by GCD, etc). The next section is where the damage component is located this tells us the type of damage (Elemental) as well as base value and so on. BaseV indicated the minimum the attack does (in this case 1 damage). The Average is what we need to be looking at. As indicated before, all spells work around a base spell scale, 1094.739746093750000 for lvl 90 monks. The average multiplies it's number and provides a base value for the damage. So in the case of CTL, it's 1094.739746093750000 * 0.2930000126 or 320.75875939918955078125

    Other stuff about that line that people might find interesting is Delta. Delta refers to a range that it can hit. So say for example a spell did 1000 damage but had a delta of 0.1, you divide that delta in half (0.05) and add and subtract that from 1 (0.95 & 1.05) and multiply those by the damage to get the range of your damage (950 - 1050). The Ampl is how much time in between each cast does the spell happen in milliseconds (1000 milliseconds = 1 second)
    Last edited by Hinalover; 2013-09-05 at 10:16 PM.

  5. #5
    Dreadlord Callimonk's Avatar
    10+ Year Old Account
    Join Date
    Nov 2012
    Location
    San Francisco
    Posts
    854
    Quote Originally Posted by Professor Hurt View Post
    Hey all,

    I've seen a few people mention Xuen is bugged in SimC so I took a quick look. I found a few interesting things, but before I report on them I want to make sure I understand how he's supposed to work.

    I really only have one question to start: where can I find his datamined melee attack info (as in frequency, damage range, what he inherits from the player, etc)? I wasn't able to locate it on wowhead, but perhaps I just missed it.
    Hey Oneton. He's pulled from Wowhead in SimC's current iteration. You can find the spell data under sc_spell_data.inc, which is an automatically generated file.

    Edit: Looks like Delritha got the info before me And wrote a very good, very thorough post.
    Last edited by Callimonk; 2013-09-05 at 10:28 PM.

  6. #6
    Thanks everyone, the info is much appreciated. I'll post more here if/when I confirm my findings!

    - - - Updated - - -

    So, nothing quite as interesting as I originally thought.

    PTR Xuen wasn't casting tiger Lightning as often as he should, but it wasn't that far off. He was actually only casting 40 of them over his 45 second cooldown, or one every 1.125 seconds. By removing the line "cooldown->duration = 1", it got him up to 44 attacks over 45 seconds, which is more accurate, but still 1 short. He should be doing 45.

    I'm so new to SimC, I'm not sure if it's even possible to solve that problem, but I'll keep looking.

    So: yes, there's a bug with PTR Xuen but it's pretty negligible.
    Last edited by Professor Hurt; 2013-09-06 at 02:03 AM.

  7. #7
    There's more to it than that. In 5.4 Xuen only sims for ~10k DPS. If you simply login to the PTR and put Xuen on a dummy he does much higher DPS (somewhere around 30-40k DPS). Seems unlikely to me that increasing his number of attacks by 10% will increase his DPS by 300-400%.

  8. #8
    Deleted
    Quote Originally Posted by Greencap View Post
    There's more to it than that. In 5.4 Xuen only sims for ~10k DPS. If you simply login to the PTR and put Xuen on a dummy he does much higher DPS (somewhere around 30-40k DPS). Seems unlikely to me that increasing his number of attacks by 10% will increase his DPS by 300-400%.
    He cleaves to other dummies, 10k is low as hell though. I'm a MW and I've seen him do like 150k DPS on encounters in PTR testing...
    Last edited by mmoc3f252392be; 2013-09-06 at 04:56 PM.

  9. #9
    I mean 30-40k DPS single target obviously. That is also what he sims for in 5.3 and in 5.4 he should actually do more DPS.

  10. #10
    Quote Originally Posted by Greencap View Post
    There's more to it than that. In 5.4 Xuen only sims for ~10k DPS. If you simply login to the PTR and put Xuen on a dummy he does much higher DPS (somewhere around 30-40k DPS). Seems unlikely to me that increasing his number of attacks by 10% will increase his DPS by 300-400%.
    Before I dove in to the code I did a PTR Xuen test, logged it, and used it as a comparison for damage ranges and attack frequency. In my test he did a clean ~24k dps. I compared that to the PTR SimC output of exactly a 45 second fight (his entire life cycle) and, outside of the anomalies I outlined above, it was pretty close to accurate. My character did roughly 300k dps and Xuen did about 10% of that. Now, it's entirely possible there are other bugs with him (I'm just starting to look at the code), but it seems pretty accurate overall.

    One thing to remember is that just because he does, say, 30k DPS when alive, he's on cooldown for an additional 2 minutes and 15 seconds. You have to average his DPS over the entire cooldown to get an accurate contribution of his damage.

  11. #11
    Quote Originally Posted by Professor Hurt View Post
    Before I dove in to the code I did a PTR Xuen test, logged it, and used it as a comparison for damage ranges and attack frequency. In my test he did a clean ~24k dps. I compared that to the PTR SimC output of exactly a 45 second fight (his entire life cycle) and, outside of the anomalies I outlined above, it was pretty close to accurate. My character did roughly 300k dps and Xuen did about 10% of that. Now, it's entirely possible there are other bugs with him (I'm just starting to look at the code), but it seems pretty accurate overall.

    One thing to remember is that just because he does, say, 30k DPS when alive, he's on cooldown for an additional 2 minutes and 15 seconds. You have to average his DPS over the entire cooldown to get an accurate contribution of his damage.
    Simcraft shows 2 numbers actually. His DPS and his DPS(e). If you are still not convinced, just try simming him on 5.3 and then sim him on 5.4. You'll find that he does way less damage on the 5.4 codepath.

  12. #12
    Quote Originally Posted by Greencap View Post
    I mean 30-40k DPS single target obviously. That is also what he sims for in 5.3 and in 5.4 he should actually do more DPS.
    Also, to provide more information here, Xuen should do *slightly* more DPS on live, not a lot more.

    On live he casts Tiger Lightning (TL) every 6 seconds for 1605 + (252.5% * AP). With 45000 AP, his TL will hit for 115,230 over 5 seconds. That's 23046 every second for the first 5 seconds, and then a second of downtime before the next cast.

    On PTR, he casts TL every second for 321 + (50.5% * AP). Note that all they did was take the live numbers and divide them by 5. So, with the same AP he'll hit for 23046 every second. Exactly the same damage, but he'll no longer have a second of downtime.

    The net gain in DPS from Live to PTR is one more hit for 23046 in a six second period. TL isn't his only source of damage either, so overall we're looking at a 10-15% damage buff for Xuen.

    - - - Updated - - -

    Quote Originally Posted by Greencap View Post
    Simcraft shows 2 numbers actually. His DPS and his DPS(e). If you are still not convinced, just try simming him on 5.3 and then sim him on 5.4. You'll find that he does way less damage on the 5.4 codepath.
    I don't trust his 5.3 behavior in SimC. Not because I know of a bug or anything, but because I haven't confirmed it actually works correctly. All I'm concerned with is making his numbers look like they do on the PTR.

    To reiterate, I'm not done with my investigation. I'll definitely be sure to take your advice when I look more this weekend!

  13. #13
    On Live: 1605 + (252.5% * AP) / 6 seconds
    On PTR: 1926 + (303.0% * AP) / 6 seconds

    That looks like a 20% buff to me. Regardless though, it doesn't really change the fact that the 5.4 codepath in simcraft seems bugged. It's also very easy to see actually if you look at his damage breakdown. For example:



    You can see that crackling tiger lightning almost does no damage at all. That's clearly bugged.

  14. #14
    Quote Originally Posted by Greencap View Post
    On Live: 1605 + (252.5% * AP) / 6 seconds
    On PTR: 1926 + (303.0% * AP) / 6 seconds

    That looks like a 20% buff to me. Regardless though, it doesn't really change the fact that the 5.4 codepath in simcraft seems bugged. It's also very easy to see actually if you look at his damage breakdown. For example:



    You can see that crackling tiger lightning almost does no damage at all. That's clearly bugged.
    20% buff to TL isn't a 20% buff to his DPS.

    I haven't checked in my changes to PTR Xuen yet so stay tuned.

  15. #15
    That's a good point . I completely overlooked that. On 5.3 sim his TL seems to be ~75% of his damage (single target), so that would make it a ~15% buff then. That is of course assuming that 5.3 is simming him correctly, but it doesn't seem to be that far off to my own experiences (on those rare few fights where he doesn't jump around like a retard).

    I would be interested to see your fix, but what would probably be even more interesting is if (more) people sensecheck the 5.4 codepath of windwalkers in general. I would love to have a sim that I know is (reasonably) accurate.

  16. #16
    Herald of the Titans Hinalover's Avatar
    15+ Year Old Account
    Join Date
    Sep 2008
    Location
    Virginia
    Posts
    2,765
    Quote Originally Posted by Greencap View Post
    On Live: 1605 + (252.5% * AP) / 6 seconds
    On PTR: 1926 + (303.0% * AP) / 6 seconds

    That looks like a 20% buff to me. Regardless though, it doesn't really change the fact that the 5.4 codepath in simcraft seems bugged. It's also very easy to see actually if you look at his damage breakdown. For example:



    You can see that crackling tiger lightning almost does no damage at all. That's clearly bugged.
    Based on just the damage, it appears that it is not applying the 50.5% of AP to the damage.

  17. #17
    Looks like it. Also note the following:

    5.3 spelldata:


    5.4 spelldata:


    If I interpret it correctly we just need to set may_crit to true and direct_power_mod to 0.505000.

    Funnily enough how it is implemented in 5.3 seems to be (almost) how it is actually working in 5.4. Can't we just make it behave the same as in 5.3, but just remove the extra 1 second per 6 seconds cooldown? (or is this exactly what you have been doing Professor Hurt?)
    Last edited by Greencap; 2013-09-06 at 06:30 PM.

  18. #18
    Quote Originally Posted by Greencap View Post
    Looks like it. Also note the following:

    5.3 spelldata:
    <snip>

    5.4 spelldata:
    <snip>

    If I interpret it correctly we just need to set may_crit to true and direct_power_mod to 0.505000.

    Funnily enough how it is implemented in 5.3 seems to be (almost) how it is actually working in 5.4. Can't we just make it behave the same as in 5.3, but just remove the extra 1 second per 6 seconds cooldown? (or is this exactly what you have been doing Professor Hurt?)
    Blizzard changed the entire spell functionality from a rolling dot to a single hit. In other words, he's not doing 6 ticks over 6 seconds, he's doing 1 hit every 1 second. It maths out to be the same, but is important to understand when looking at the debug output of SimC (there is no more mention of ticks).

    I've only spent 30 minutes in SimC so far (my goal being to eventually go over the entire Monk module), but most of the functionality is driven by the imported spell data. You can override the imported settings (such as setting may_crit to true) via code, but we'd want to make sure it CAN crit before doing so. To answer the next question, yes it can crit , and going by memory, I already think the code is forcing this flag to true.

    FWIW, in my version, his TL damage is exactly what I would have expected it to be (~24,000 damage per hit based on my AP). I'm not sure why you guys are seeing different. I'll pull down the latest code this weekend, redo my change(s), and retest to make sure.
    Last edited by Professor Hurt; 2013-09-06 at 07:19 PM.

  19. #19
    Herald of the Titans Hinalover's Avatar
    15+ Year Old Account
    Join Date
    Sep 2008
    Location
    Virginia
    Posts
    2,765
    Quote Originally Posted by Professor Hurt View Post
    They changed the entire functionality from a rolling dot to a single hit. In other words, he's not doing 6 ticks over 6 seconds, he's doing 1 hit every 1 second. It maths out to be the same, but is important to understand when looking at the debug output of SimC (there is no more mention of ticks).
    Actually on live it's 5 second "channel" cast every 6 seconds, with each channel tick hitting for the 321 + 50.5% AP each tick. Even then, the first "cast" doesn't happen for 6 seconds after summoning. See Reg's image on the difference:


  20. #20
    Not talking about live. I just wanted to clarify something from one of Greencap's earlier statements about the PTR functionality. Yes, on live, its 5 ticks in 5 seconds, with 1 second of additional cooldown.

    Edit: Thanks for the info! That first-channel business is interesting to know, but I'm not really to concerned with Live (5.3) functionality. I really just want to isolate Xuen on the PTR and make sure SimC's 5.4 logic matches exactly.

    Edit 2: I'm not sure who was/is maintaining the Monk module but all of the credit goes to them. I'm just starting to scratch the surface!
    Last edited by Professor Hurt; 2013-09-06 at 07:26 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •