The Gold Road Chapter – which includes the Scribing system – and Update 42 is now available to test on the PTS! You can read the latest patch notes here: https://forums.elderscrollsonline.com/en/discussion/656454/
Maintenance for the week of April 29:
• PC/Mac: No maintenance – April 29

Selective noncommutivity of Warrior CP

  • Draqone
    Draqone
    ✭✭✭✭
    WhiteMage wrote: »
    Jeez, how does one even program it that way?

    I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...
    ESO Balance:
    “All skills are equal, but some skills are more equal than others.”
  • Weng
    Weng
    ✭✭✭
    Draqone wrote: »
    WhiteMage wrote: »
    Jeez, how does one even program it that way?

    I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

    Depends on the programming language and framework, but if I had to mimic that behavior, that's quite simple:

    Take the calculations for hardy and ironclad and put them into different functions. As soon as a player chooses one of the perks put the function into an array. For calculations take the functions from the array and execute them on the values. The calculations will run in the order they occur in the array. That is they will be executed in the order the player chose them.
  • tordr86b16_ESO
    tordr86b16_ESO
    ✭✭✭✭✭
    Why is this even a thing ? @ZOS_GinaBruno @Wrobel
  • Asayre
    Asayre
    ✭✭✭✭✭
    Draqone wrote: »
    WhiteMage wrote: »
    Jeez, how does one even program it that way?

    I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

    I think someone was tasked with updating all the other champion points and did it additively but then someone else was tasked with adding in Ironclad and through a miscommunication they went for a multiplicative model. This only happen when you do Ironclad > Hardy/Elemental Defender. Everything works properly if you do Thick Skinned > Hardy/Elemental Defender.
    code65536 wrote: »
    I wonder what would happen if you assigned them at the same time...

    Usually additive but sometimes not
    @Asayre
    Im not sure if you have this information, but ...

    Which is correct/intended? Should it be additive or multiplicative?

    Probably additive because that's how Thick Skinned and Hardy/Elemental Defender works and how Mage CP works.
    Reference for any calculation I make Introduction to PvE Damage Calculation
  • code65536
    code65536
    ✭✭✭✭✭
    ✭✭✭✭✭
    Asayre wrote: »
    I think someone was tasked with updating all the other champion points and did it additively but then someone else was tasked with adding in Ironclad and through a miscommunication they went for a multiplicative model. This only happen when you do Ironclad > Hardy/Elemental Defender. Everything works properly if you do Thick Skinned > Hardy/Elemental Defender.

    That would make sense if it red was all multiplicative while blue was additive. But for it to change behavior depending on the order in which you assign points seems... very perplexing from a programming standpoint.
    Edited by code65536 on May 29, 2017 12:46AM
    Nightfighters ― PC/NA and PC/EU

    Dungeons and Trials:
    Personal best scores:
    Dungeon trifectas:
    Media: YouTubeTwitch
  • Dyride
    Dyride
    ✭✭✭✭✭
    Does the inverse work with Master At Arms? Assign it last?
    V Є H Є M Є И C Є
      Ḍ̼̭͔yride

      Revenge of the Bear

      ØMNI
      Solongandthanksforallthef
      Revenge of the Hist
      Revenge of the Deer


      Remember the Great Burn of of the Blackwater War!


      #FreeArgonia
    1. Asayre
      Asayre
      ✭✭✭✭✭
      Dyride wrote: »
      Does the inverse work with Master At Arms? Assign it last?

      Doesn't matter. This seems to only affect Ironclad and Hardy/Elemental Defender.
      Reference for any calculation I make Introduction to PvE Damage Calculation
    2. frozywozy
      frozywozy
      ✭✭✭✭✭
      ✭✭
      Zenimax code never stop surprising me. This is disgusting. Thanks for the report anyway.
      facepalm-15-1000-images-about-facepalm-frenzy-on-pinterest.jpg

      Frozn - Stamdk - AR50
      Frosted - Magplar - AR50
      Frodn - Magden - AR50
      Warmed - Magblade - AR50
      Mmfrozy - Magsorc - AR44
      Necrozn - Magcro - AR32
      Twitch.TV/FrozyTV
      PvP Group Builds

      “Small minds discuss people, average minds discuss events, and great minds discuss ideas.” -Eleanor Roosevelt
      • Fix Volendrung (spawn location - weapon white on the map causing the wielder to keep it forever - usable with emperorship)
      • Remove / Change CPs System, remove current CP/noCP campaigns and introduce one 30days with lock, one with no locks
      • Fix crashes when approaching a keep under attack because of bad / wrong rendering prioritization system
      • Change emperorship to value faction score points and not alliance points - see this and this
      • Fix long loading screens (mostly caused by players joining group out of rendering range)
      • Add 2 more quickslots to the wheel or add a different wheel for sieges weaponry only
      • Fix Balista Bolts not dealing damage on walls or doors if deployed at a certain place
      • Release bigger battlegrounds with 8 to 16 players per team and only two teams
      • Fix the permanent block animation - see examples : link1 link2 link3 link4 link5
      • Gives players 10 minutes to get back into Cyrodiil after relogging / crashing
      • Add a function to ignore the Claiming system of useless rewards
      • Improve the Mailing System / Rewards of the Worthy stacking
      • Assign specific group sizes to specific campaigns (24-16-8)
      • Make forward camps impossible to place near objectives
      • Make snares only available from ground effects abilities
      • Change emperorship to last minimum 24hours
      • Fix body sliding after cc breaking too quickly
      • Remove Block Casting through Battle Spirit
      • Fix the speed drop while jumping - see video
      • Fix loading screens when keeps upgrade
      • Fix Rams going crazy (spinning around)
      • Bring back dynamic ulti regeneration
      • Fix speed bug (abilities locked)
      • Introduce dynamic population
      • Lower population cap by 20%
      • Add Snare Immunity potions
      • Bring resurrection sickness
      • Fix character desync
      • Fix cc breaking bug
      • Fix gap closer bug
      • Fix health desync
      • Fix combat bug
      • Fix streak bug
      • Fix server lag
    3. Chilly-McFreeze
      Chilly-McFreeze
      ✭✭✭✭✭
      ✭✭✭✭
      Basic question about warrior CP. Since it costs less cp to gain more % in ironclad and thick skinned, would it be better to invest more into these than in hardy/ ele. def?
      Ironclad says it mitigates direct dmg, so it shouldn't matter if that direct dmg is physical or magical.
      I ask this with an eye on PvP as I read somewhere that NPC dmg sources are a bit off as to what is considered direct/indirect.
    4. smacx250
      smacx250
      ✭✭✭✭✭
      Draqone wrote: »
      WhiteMage wrote: »
      Jeez, how does one even program it that way?

      I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

      Depends on the programming language and framework, but if I had to mimic that behavior, that's quite simple:

      Take the calculations for hardy and ironclad and put them into different functions. As soon as a player chooses one of the perks put the function into an array. For calculations take the functions from the array and execute them on the values. The calculations will run in the order they occur in the array. That is they will be executed in the order the player chose them.
      I agree - this type of error would be quite reasonable when considering a dynamic collection of damage modification objects being associated with a character. If one of the objects is borked such that the calculation isn't commutative, then ordering issues can result. That it relates to the order of application implies that the container implementation probably isn't keyed, and is likely just a list where new objects are added to the end.

    5. Asayre
      Asayre
      ✭✭✭✭✭
      Basic question about warrior CP. Since it costs less cp to gain more % in ironclad and thick skinned, would it be better to invest more into these than in hardy/ ele. def?
      Ironclad says it mitigates direct dmg, so it shouldn't matter if that direct dmg is physical or magical.
      I ask this with an eye on PvP as I read somewhere that NPC dmg sources are a bit off as to what is considered direct/indirect.

      I stood at Mantikora and the Twin Hunters (first boss of Halls of Fabrication) and found that my intuivitve guess for the ability classification was right. Anyway, I have a Warrior CP optimiser
      http://solinur.de/AsayreCP/WarriorCPOptimisation.html
      If you guesstimate some of the inputs it might help out with your question a bit. For Physical and Spell Resistance put in your buffed resistance less expected penetration. I didn't put in damage from LA/HA yet.
      Reference for any calculation I make Introduction to PvE Damage Calculation
    6. MasterLenman
      MasterLenman
      ✭✭✭✭
      smacx250 wrote: »
      Draqone wrote: »
      WhiteMage wrote: »
      Jeez, how does one even program it that way?

      I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

      Depends on the programming language and framework, but if I had to mimic that behavior, that's quite simple:

      Take the calculations for hardy and ironclad and put them into different functions. As soon as a player chooses one of the perks put the function into an array. For calculations take the functions from the array and execute them on the values. The calculations will run in the order they occur in the array. That is they will be executed in the order the player chose them.
      I agree - this type of error would be quite reasonable when considering a dynamic collection of damage modification objects being associated with a character. If one of the objects is borked such that the calculation isn't commutative, then ordering issues can result. That it relates to the order of application implies that the container implementation probably isn't keyed, and is likely just a list where new objects are added to the end.

      Now imagine if ESO was Open Source... you and 5 other people would already have a patch done and ready to be pushed to PTS (which would then be running some kind of nightly build). Oh the dream...
    7. Rickter
      Rickter
      ✭✭✭✭✭
      ✭✭✭✭✭
      now you know why ZOS is making PvP noCP

      :)
      RickterESO
      PC | NA | DC
      YouTube
      ______________________
      Guilds:
      Requiem GM | Dark Sisterhood Blood Knight | Legend Mod | Legend GvG Mod
      PvP:
      Bloodletter | StamDK | Alliance Rank 46 | Former Emperor of Shor (2018) | Former Emperor of Thornblade #4terms (2015)
      PvE:
      vAA HM | vHRC HM | vSO HM | vMA | vDSA | vMoL | ALL Vet 4 Man Dungeons


    8. Gilliamtherogue
      Gilliamtherogue
      ✭✭✭✭✭
      A very similar bug is happening with abilities that have % amplifications (mainly executes), where they're losing out on tons of damage.
      Old member of The Order of Mundus, Mostly Harmless, Hostile, and Genesis Elite. Avid theorycrafter. Herald to competitive stamina DPS pre 1.5. How far we've come!

      Have questions? Send me a message on the forums or my other social media. Seeing people learn is my dream and passion.

      Guides and other fun videos at https://youtube.com/c/gilliamtherogue
    9. necronomniconb14_ESO
      A very similar bug is happening with abilities that have % amplifications (mainly executes), where they're losing out on tons of damage.

      Sounds as if things are working as intended, balance my friend, balance = slow and unfun

      just recognized the name... like some of your vidyas

      Edited by necronomniconb14_ESO on May 30, 2017 1:24PM
    10. F7sus4
      F7sus4
      ✭✭✭✭✭
      Asayre wrote: »
      Probably additive because that's how Thick Skinned and Hardy/Elemental Defender works and how Mage CP works.
      Additive. This was mentioned in one of the Patch Notes that I'm too lazy to swipe through now.
    11. STEVIL
      STEVIL
      ✭✭✭✭✭
      ✭✭✭
      Draqone wrote: »
      WhiteMage wrote: »
      Jeez, how does one even program it that way?

      I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

      Depends on the programming language and framework, but if I had to mimic that behavior, that's quite simple:

      Take the calculations for hardy and ironclad and put them into different functions. As soon as a player chooses one of the perks put the function into an array. For calculations take the functions from the array and execute them on the values. The calculations will run in the order they occur in the array. That is they will be executed in the order the player chose them.

      good rule of thumb is most computational errors are not about what you do, but when and where you do them.

      :)
      Proudly skooma free while talks-when-drunk is in mandatory public housing.
      YFMV Your Fun May Vary.

      First Law of Nerf-o-Dynamics
      "The good way I used to get good kills *with good skill* was good but the way others kill me now is bad."

    12. Inklings
      Inklings
      ✭✭✭✭✭
      Zenimath.... Working as intended.
    13. Kiwi
      Kiwi
      ✭✭✭✭
      tagging for later reference
      A large yellow rectangle
      
    14. Patouf
      Patouf
      ✭✭✭
      Asayre
      ✭✭✭✭✭


      You rock.
      Ruined Laggy Broken Game
      Sithis & Psijic Order
      Sithis and spacetime. From nothing to everything.
      Dark, Aurbis, Aetherius-Oblivion, Mundus, Nirn, Tamriel. Dark again, something else.
      Dark is categorical, the absolute zero.
      VØID

    15. bebynnag
      bebynnag
      ✭✭✭✭✭
      WT(actual)F?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
    16. Bobby_V_Rockit
      Bobby_V_Rockit
      ✭✭✭✭✭
      ... wut?
    17. Kammakazi
      Kammakazi
      ✭✭✭✭✭
      ✭✭
      This getting fixed or nah
    18. Teridaxus
      Teridaxus
      ✭✭✭✭✭
      Kammakazi wrote: »
      This getting fixed or nah

      It's a feature now
    19. Berenhir
      Berenhir
      ✭✭✭✭✭
      smacx250 wrote: »
      Draqone wrote: »
      WhiteMage wrote: »
      Jeez, how does one even program it that way?

      I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

      Depends on the programming language and framework, but if I had to mimic that behavior, that's quite simple:

      Take the calculations for hardy and ironclad and put them into different functions. As soon as a player chooses one of the perks put the function into an array. For calculations take the functions from the array and execute them on the values. The calculations will run in the order they occur in the array. That is they will be executed in the order the player chose them.
      I agree - this type of error would be quite reasonable when considering a dynamic collection of damage modification objects being associated with a character. If one of the objects is borked such that the calculation isn't commutative, then ordering issues can result. That it relates to the order of application implies that the container implementation probably isn't keyed, and is likely just a list where new objects are added to the end.

      Why should anyone ever program it like that?
      I believe they just have a database table where all constant damage modificators are saved (like "direct damage taken modificator") and they update this value when new calculations are made.

      The damage calculation then pull their numbers from there.

      This would be awful code design, but there are a lot of hints they coded it this way. That would explain why skills often have pulled the wrong penetration numbers after they have been switched to stam or magicka (looking at you, dawnbreaker).

      In the presented case of warrior cp, the calculations done when updating the database field seem to not be within the same function. So the order of updating the database has an impact on the value.
      PC EU - Ebonheart Pact - Gray Host - Death Recap -#zergfarming -
    20. smacx250
      smacx250
      ✭✭✭✭✭
      STEVIL wrote: »
      Draqone wrote: »
      WhiteMage wrote: »
      Jeez, how does one even program it that way?

      I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

      Depends on the programming language and framework, but if I had to mimic that behavior, that's quite simple:

      Take the calculations for hardy and ironclad and put them into different functions. As soon as a player chooses one of the perks put the function into an array. For calculations take the functions from the array and execute them on the values. The calculations will run in the order they occur in the array. That is they will be executed in the order the player chose them.

      good rule of thumb is most computational errors are not about what you do, but when and where you do them.

      :)
      But it is a rule of thumb that doesn't necessarily relate to anyone's given work experience. "Most" of the computational errors that I've corrected over the years required modifying a single line of code, with no code movement at all. The next set required small co-ordinated changes in multiple places. The next required deleting/inserting/moving/changing behaviors in a more global sense. The last required re-architecture of overall behaviors, which can be quite global in scope. The effort required to address is generally in inverse to their frequency (unless you've got someone who designed-by-hack). The distribution from the first to the last class as code is changed tends to flatten over time - that is, a larger number of more significant changes are required to fix errors the longer code is altered/updated from it's original intent. We spent a lot of effort looking into bug causes and ways to prevent them, as the product functionality that was committed to hardware was essentially "unpatchable" once released.
      Berenhir wrote: »
      smacx250 wrote: »
      Draqone wrote: »
      WhiteMage wrote: »
      Jeez, how does one even program it that way?

      I am interested in that too... I can't imagine what must happen to have those kind of quirks pop up...

      Depends on the programming language and framework, but if I had to mimic that behavior, that's quite simple:

      Take the calculations for hardy and ironclad and put them into different functions. As soon as a player chooses one of the perks put the function into an array. For calculations take the functions from the array and execute them on the values. The calculations will run in the order they occur in the array. That is they will be executed in the order the player chose them.
      I agree - this type of error would be quite reasonable when considering a dynamic collection of damage modification objects being associated with a character. If one of the objects is borked such that the calculation isn't commutative, then ordering issues can result. That it relates to the order of application implies that the container implementation probably isn't keyed, and is likely just a list where new objects are added to the end.

      Why should anyone ever program it like that?
      I believe they just have a database table where all constant damage modificators are saved (like "direct damage taken modificator") and they update this value when new calculations are made.

      The damage calculation then pull their numbers from there.

      This would be awful code design, but there are a lot of hints they coded it this way. That would explain why skills often have pulled the wrong penetration numbers after they have been switched to stam or magicka (looking at you, dawnbreaker).

      In the presented case of warrior cp, the calculations done when updating the database field seem to not be within the same function. So the order of updating the database has an impact on the value.
      Why? Because it is a common object oriented method of programming. For example, every effect has an object, and that object includes all the functions and data storage necessary for describing all the various effects, tracking the timers, etc. When an effect is enabled, the object is then created and used in all the various places that other code needs to calculate effects. For example, each object has a "get damage modifier" method, a "get time remaining" method, etc. All the base code needs to do is go through the list of objects that are associated with the character, calling the appropriate methods at the appropriate times. The details of how a given effect actually works is hidden inside the object that implements it, and not in the general code itself. It may very well be that the list of objects is traversed infrequently compared to how often, for example, the overall direct damage modifier is used, but the important aspect would be that it is traversed whenever a change is made and the overall value needs to be recalculated. I'm not saying that this is how it is actually done, but given what people have observed, and typical OO programming techniques, I can see where it may have been implemented that way.

    21. max_only
      max_only
      ✭✭✭✭✭
      ✭✭✭✭✭
      This is still relevant right? I already reset my cp and then did this" hardy before ironclad" thing just to be sure.
      #FiteForYourRite Bosmer = Stealth
      #OppositeResourceSiphoningAttacks
      || CP 1000+ || PC/NA || GUILDS: LWH; IA; CH; XA
      ""All gods' creatures (you lot) are equal when covered in A1 sauce"" -- Old Bosmeri Wisdom
    22. ssewallb14_ESO
      ssewallb14_ESO
      ✭✭✭✭✭
      This is still a thing. I was wondering why I was getting hit harder on my Sorc, despite having nearly the same stats as my Warden. I was losing ~4% damage reduction between this bug and jump points, which are now on most stars. This is pretty sloppy ZoS.
    23. Personofsecrets
      Personofsecrets
      ✭✭✭✭✭
      ✭✭✭
      Isn't this funny.

      Thank you @Asayre for everything.
      Don't tank

      "In future content we will probably adjust this model somewhat (The BOP model). It's definitely nice to be able to find a cool item that you don't need and trade it to someone who can't wait to get their hands on it." - Wrobel
    24. WreckfulAbandon
      WreckfulAbandon
      ✭✭✭✭✭
      Terrible that this is still borked
      PC NA

      All my comments are regarding PvP
    Sign In or Register to comment.