Sensuki Posted September 28, 2014 Posted September 28, 2014 (edited) And that's where the "true intention" to make the stat-system utterly and completely uninteresting comes from? Unbelievable. You're really interpreting that into meaning you must - at every cost, including narrative consistency - make the stats equally "important" - for a given value of teapot - in combat. *sigh* And from what you've quoted and what you say, you're literally inventing his approval of changes from nothing. In addition to clearly misinterpreting what the guy actually said. What does that suggest? No you're just an idiot who cannot into searching at all. I just pasted two examples. Here's every single one I could find from a quick search on SA, this board and google interviews ------------------------ PE's Attributes system is designed to avoid dump stats, something that continues to be an issue for every edition of A/D&D. http://forums.somethingawful.com/showthread.php?goto=post&postid=420288807 Some people aren't fans of our overall Attribute design, which I've focused on always providing benefits to characters of any class even if that means the Attributes aren't very realistic. If you want to make a Strength-based rogue, that's viable. So is a Strength-based wizard, an Intellect-based barbarian, etc. As with taking Talents, you may be de-emphasizing some core aspect of your character by using a non-traditional Attribute array, but there aren't class/attribute combos that are fundamentally bad. http://forums.somethingawful.com/showthread.php?goto=post&postid=419616525 Sure, but we're starting simple because it's a lot easier to add complexity than remove it. There are really two things I want every attribute in PoE to accomplish: 1) If a player makes a character of any class, they can look at the attribute and say, "My character will be significantly better at <SIGNIFICANT_THING> for having raised this attribute." And less vital, but still important: 2) If a player makes a character of any class, they will look at at attribute and say, "My character will suffer significantly for having dumped this attribute." http://forums.somethingawful.com/showthread.php?goto=post&postid=423365257 I know this disappoints some people, but PoE is going to have both classes and attributes (ability scores). Exactly what they're named and exactly what they affect is still flexible. My goals for them are what I said before: every attribute can be bumped for some meaningful benefit for every class and every attribute will inflict a meaningful loss for every class if it is dumped (i.e., there are no "opt out" penalties). Meaningful = more than just the bonuses/penalties to the defenses. http://forums.somethingawful.com/showthread.php?goto=post&postid=423392279 What is to "get around", that one stat affects damage and healing? The way to get around that is to balance the per-point increase to damage and healing from That Stat against the per-point increase to other valuable things from other stats. http://forums.somethingawful.com/showthread.php?goto=post&postid=423411132 That said, it's always been a secondary goal to prevent dumping. The main goal is to allow people to play a class with any given set of high attributes and have that be viable/fun. So if someone makes a high Dexterity (soon to be Perception) priest, they should be able to reliably lean more on the priest's offensive spells and personal buffs + weapon-based combat. If someone makes a high Intellect barbarian, they should enjoy bigger Carnage AoEs and longer durations for their Wild Sprint, Frenzy, etc. If we can find a way to always make dumping sting, that's cool, but it's more important that when someone says, "I have an idea for a character based on high X, Y, and Z", that's something that fundamentally works pretty well. Perfect balance has never been a goal. I've seen too many people come up with cool character concepts in class-based RPGs -- cool from a role-playing perspective, but fundamentally bad at doing what their class is supposed to do. http://forums.somethingawful.com/showthread.php?goto=post&postid=434825679 With regards to the attribute system, I've posted previously that players must play to the strengths of their builds. http://forums.obsidian.net/topic/64964-update-70-new-year-project-update/?view=findpost&p=1409030 As for attributes and bad builds, let me put it this way: in D&D 3rd Ed., let's say Str, Dex, and Con are the only three stats in the game. You make a fighter and you can have an 18 in one, 16 in another, and a 10 in the last. The things that fighter is good at will shift significantly based on how you place those stats -- but the character is still clearly a fighter. You may be able to make a convincing case that one build is markedly better than another, but they'll all give you different strengths and weaknesses. Now figure out a way to do the same thing for Int, Wis, and Cha in the core rules and that's essentially what we're trying to do for PoE. "No bad builds" is not the same as "all builds are equal" and "all builds are functionally the same". It means that if you distribute your points in different ways across our attributes for a character of any class, the strengths and weaknesses of the character will shift in interesting ways and still be viable. If you dump Resolve for your fighter, you will suffer. If you boost Resolve for your fighter, you will benefit. Some classes in D&D already do this better than others. Monks and paladins have a more difficult allocation of stats to consider than fighters. If you want to shift the difficulty of combat, we have a level of difficulty slider. The attribute system is not meant to be a covert way of haphazardly achieving difficulty. http://forums.obsidian.net/topic/64949-can-i-even-handle-a-game-like-pe-any-longer-well-i-sure-hope-so/?view=findpost&p=1407606 I believe every attribute, if dumped, should harm every build because there are two logical consequences if they do not: 1) If I can dump without significant consequence, it is likely (though not necessarily true) that bumping it is similarly without consequence. This means character concepts that bump that attribute are inherently worse off for having done so. 2) If one class can dump stats without significant consequence and others cannot, in practice that class has more attribute points to play with. E.g. fighters vs. monks and paladins in 3.5. When one class has abilities that derive benefits from a narrow range of attributes, it becomes difficult to balance their powers against classes that derive benefits from a broader range of attributes. http://forums.obsidian.net/topic/64712-attribute-theory/?view=findpost&p=1401075 Attributes, this is D&D like superficially in the sense that there are six attributes physical and mental. It took us a long time but we made sure that all the attributes are good for all classes. So if you want to make a super genius barbarian, you can, and it's actually good for them because Intellect affects area of effect and duration. For a barbarian, if you want your Wild Sprint last longer, a high Intellect will let it last longer. If you want a bigger AOE on melee attacks, a high Intellect will give you a bigger AOE on your melee attacks. We wanted to avoid—well, not just avoid dump stats, but if you have an idea, like you want to make a super-genius barbarian, I want to make a stupid idiot wizard, I want to make a weakling charismatic fighter, you can do all of that and the system is built so there is a way where you can play with those stats. The other thing, too, is that if you just dump points into the things you typically associate with those classes, like "I want to be a super-strong barbarian," that's great, you're still a really good character and that's fine. But it's the kind of oddball things—my opinion is, if there's only one or two builds you can really make with a character, why have attributes? Why not just say you're a barbarian and you're strong because you're a barbarian. I think that limits the player in a lot of ways, and I'd rather just say "Nope, you can be a super idiot smartie, whatever you want to do, and it's all valid in the game. http://www.gamebanshee.com/interviews/112825-pillars-of-eternity-interview.html Josh: Attributes all determine a variety of bonuses for characters and they are now the main component of a character's defenses, so they are extremely important in that regard. We've put a lot of thought into defining the attributes to ensure that every character class can gain something from a particular build. We're not trying to make everything perfectly balanced, but we do want players to feel like there are viable concepts for every attribute/class combination. Outside of their derived benefits, attributes are the most commonly-checked character elements in dialogue and scripted interactions. We check things like skills, races, and classes as well, but attributes are the stats we check most often. Even the physical attributes will open up possibilities for player to take actions in the context of a conversation. The options that open up are not always beneficial in a conversation, but they do give you a wider range of expression based on your character's build. -------- To be continued Edited September 28, 2014 by Sensuki
Valeris Posted September 28, 2014 Posted September 28, 2014 (edited) No you're just an idiot who cannot into searching at all. I just pasted two examples. Here's every single one I could find from a quick search on SA, this board and google interviews This was really uncalled for! Edited September 28, 2014 by Valeris
Sensuki Posted September 28, 2014 Posted September 28, 2014 So now my perceptive but bumbling priest is not only a super-fast striker, but he also makes incredible critical hits. Success? I guess I'll just have to up his might now, or else he'll be a hobbled priest! Nope. He is accurate and his attacks disrupt the enemy. My understanding was, like I said, that it affected other things as well. That it skewed the severity of the wounds that were inflicted. I wrote this already, and I'm taking that from the "frontline fighters" backer update. Do you pay any attention to the actual mechanical values of attributes or do you just ignore them and make up stuff like this? Look at the freaking numbers jeez. Actually, even better ... here: public static float GetStatDamageHealMultiplier(int might) { return (float) (1.0 + (double) (might - 10) / 50.0); } public static float GetStatAttackSpeedMultiplier(int dexterity) { return (float) (1.0 + (double) (dexterity - 10) / 50.0); } public static float GetStatEffectDurationMultiplier(int resolve) { return (float) (1.0 + (double) (resolve - 10) / 20.0); } public static float GetStatEffectAreaMultiplier(int intellect) { return (float) (1.0 + (double) (intellect - 10) * 3.0 / 100.0); } public static float GetStatInterruptMultiplier(int perception) { return 1f; } public static float GetStatRangedAttackDistanceMultiplier(int perception) { return (float) (1.0 + (double) (perception - 10) / 20.0); } public static float GetStatConcentrationMultiplier(int resolve) { return (float) (1.0 + (double) (resolve - 10) * 3.0 / 100.0); } public static float GetStatBonusAccuracy(int perception) { return (float) (perception - 10); } public static float GetStatBonusDeflection(int intellect) { return (float) (intellect - 10); } This is what the attributes do currently, range is not working however. Do you see intellect being called for anything but Deflection or AoE ? I don't. Here's what they used to be public static float GetStatDamageHealMultiplier(int might) { return (float) (1.0 + (double) might / 50.0); } public static float GetStatEffectDurationMultiplier(int intellect) { return (float) (1.0 + (double) intellect / 20.0); } public static float GetStatEffectAreaMultiplier(int intellect) { return (float) (1.0 + (double) intellect * 3.0 / 100.0); } public static float GetStatInterruptMultiplier(int perception) { return (float) (1.0 + (double) perception * 3.0 / 100.0); } public static float GetStatConcentrationMultiplier(int resolve) { return (float) (1.0 + (double) resolve * 3.0 / 100.0); } My understanding of what the attributes do comes from the code level. Not make believe. So what's the intention, then? You're arguing right over here for a system that ignores role-playing completely. And with that system, I'm left with having to choose between hitting the right dialogue stats I want, and actually building a character that has a fighting chance to survive. This is a direct result of the tweaks. No I'm not. That's just what you believe. All our proposed version did was 1) move Accuracy to Perception to prevent trap builds, making interrupt more useful. Not only does this make perfect sense thematically but it makes perfect mechanical sense as well. 2) We added Deflection to Resolve to balance it against the new Perception, this does not make as concrete thematic sense as Perception does, it depends on what your take on Resolve is. For me it works fine enough. Our reasoning for this was more mechanical, a reaction to the change necessary to prevent trap builds. 3) We added in Action Speed, which makes sense on Dexterity, but the attribute could be renamed to Agility if necessary. Those changes are not that large, and yet you chucked a total hissy fit over them, when all they do is allow you to do two things that you liked to be able to do in the previous system BETTER and also add in a new character concept. Your reaction to these things is completely wacked if you ask me. Then what is there in your opinion? Are you beginning from a starting point that makes all stats equally important for dialogue, and that they therefore then should be equally important mechanically, inside a very specific and narrow system in combat as well? Our changes does not affect the dialogue importance, they are the same as they were before. Perception and Resolve are now more mechanically viable for combat. So that in the end, you're happy with a completely disconnected system where perception has something to do with perception in dialogue, and that it has to do with learned skill and dexterity in combat? Perception governs accuracy and critical chance and stuff in many games. This is not an alien concept. You know, the extremely perceptive Orc fighter, who somehow is able to supernaturally spot the critical points on the opponent right before the strike, in some sort of eternal serial epiphany streak? I don't make up fluff examples like this. Only mechanical ones. to be continued 1
Sensuki Posted September 28, 2014 Posted September 28, 2014 (edited) Why? If that's your opinion, then you can explain what you're basing it on. If not, you're just insulting me for no reason. Which isn't an argument. Haha, are you calling ad hominem? Because that's exactly what he does to everything. The point was that when you build a character based on the abilities you have - perception, might, dexterity, etc. And then when you play the game, that build actually fits into the narrative. Not everyone plays like that, in fact most people probably don't. I am always thinking about what's going on under the hood due to experience with programming. In the way that a very nimble and perceptive archer can make incredibly damaging critical hits, and make them more often, also against fast targets and very quickly in interrupt situations. But he doesn't do as much damage as a character with very high might, can't handle a really big bow perhaps, and just will never beat the damage threshold for heavily armored targets. For example. Then that is a success for the system, since the stats not only make mechanical sense, but they also make narrative sense. Our system does that. It's no different to before. You won't accept that though. And when it makes sense when the game responds to you as well. By letting a perceptive priest notice things intuitively, but be clueless in terms of putting two and two together logically. Or when a strong and intelligent fighter can get by with threats, and clever threats as well - but will miss certain obvious cues - both in combat and dialogue. Then that is also a success for the system. Since it is narratively consistent with how the characters are built. The system is designed with a disconnect between the two. Josh's aim is that you can make whatever character concept you want and be able to play through the game with it if you play to your build and not suffer from any trap choices where your build sucks. This is different from D&D, where I'm used to that a class generally has one stat used for "role-playing". Priest has wisdom. Wizard has intelligence. Fighter has strength. Paladin has charisma. And that the role-playing essentially exists outside of the system altogether. End of story. But that this previous PoE system had opportunities to expand on that somehow simply does not register on your scale. Not only that, but I don't understand "the real system" because I don't agree with the idea that anything outside mechanical consistency across the stats is impossible. No, our system is no different to before. It actually has more opportunities for role playing due to the introduction of Action Speed. It is you who's having a knee-jerk reaction to it and inventing reasons for why it 'feels different' for roleplaying, when it is in fact better. why would you think it's reasonable for me to simply accept your and for example Matt's point of view on this? I don't care whether you accept it or not, you are probably incapable of it due to your bias against me and the fact that you had a negative experience on another game, which was the very first thing you complained about. You didn't read our paper before you commented and complained that armchair designer forum members ruin games. Edited September 28, 2014 by Sensuki
Captain Shrek Posted September 29, 2014 Posted September 29, 2014 (edited) May be some musing on what the attributes OUGHT to represent will help the issue along. Attributes are basically defining aspects of the character. At least in most RPGs I played PnP and cRPGs had this in common. This is in no way to say that this is all attributes do. But still a good game will have BOTH a meaningful (as in an understandable) and a unbroken implementation of attributes. The first one is to mean that if there is an attribute called Intelligence, it should be effing tied to traits / abilities that one associates with being intelligent. The second one means that no single attribute should overwhelmingly be good / bad for ALL classes. As long as these two conditions are met I believe the implementation is reasonably good. The rest is up to what you allow players to do with the mechanics. One can argue that within the "gamism" paradigm the attributes need not really define anything concrete and they just need to be some excle sheet modifiers. This a valid design, sure. But a lazy and incompetent one. Taking this argument to the extreme why even play as humaniform creatures or even have meaningful graphical representations? Just play excel sheets! A good designer is always trying to TIE in the utility and the realism (in the sense being used here in the post) together to create a game. Edited September 29, 2014 by Captain Shrek "The essence of balance is detachment. To embrace a cause, to grow fond or spiteful, is to lose one's balance, after which, no action can be trusted. Our burden is not for the dependent of spirit."
tdphys Posted September 29, 2014 Posted September 29, 2014 Sensuki, how do you have access to the C-code? ( not complaining, just curious, and how much code do you have access to, could you post, for example, damage calculations, etc?) The dependency of crits on Accuracy is not nonlinear. The effect of Accuracy on total DPS is quite modest. Here's how the mechanics work: http://pillarsofeternity.gamepedia.com/Attack_Resolution Thanks, the wiki article made good sense. The dependency of crits probability on accuracy is nonlinear, since above a certain threshold, there is zero crit chance while below it there's a linear dependency. This seems to me to make accuracy a very critical part of DPS by enabling crits, but from what you've said, PER doesn't do that much to affect it compared to class features, and therefore isn't necessarily the buff stat it was hypothesized to be in the beginning of the thread. I actually think that INT as a critical hit modifier (def) is narrative, as the genius/knowledge it takes to exploit a persons anatomy/situation or avoid being exploited. So if Int is still the nerf stat I think it could be buffed by moving crit ranges rather then, or including the AOE mods. Well, it's fully linear within the regime in which crits are possible. 1 point of Accuracy is always +1% crit chance if crits are possible. And accuracy is indeed a very critical part of DPS - but its not more important than Might. 1 point of Accuracy gives, at most +1.5% effective DPS (+1% of 150% damage and -1% of 0% damage in the -5 to 5 range of Accuracy - Defense). 1 point of Might always gives +2% effective DPS. Now, the true value of a point in either one of these is actually dependent on the value of the other (you can't compare the flat percentages) - but in general, Might gives a lot more effective DPS if your Accuracy is higher than their Defense and Accuracy gives a bit more DPS if your Accuracy is lower than their Defense. Might and Accuracy are pretty well balanced as far as DPS goes (assuming there isn't an overwhelming trend of enemies with more or less Defense than Accuracy values, that is). The problem with the attack resolution for me is that all of your expected damage increase from accuracy comes from higher crit percentages. It seems to me that it excludes mechanisms that could meaningfully increase hit chance without increasing crit chance. I realize that some modifiers do this by reducing the baseline crit percentage, but once that's set, higher accuracy only gives higher crit chance, the to-hit chance without critting is always the same. I'm not knocking the decision, I just think crits should be that once in a while awesome thing that happens, not something that happens 50 % of the time because you're against a weak enemy and your accuracy is way better then their def.
illathid Posted September 29, 2014 Posted September 29, 2014 (edited) [Nipsen Quote] Then I guess the most probable thing is that the previous system - that worked surprisingly well - was an accident, and Obsidian simply screwed up and made it by mistake? Which now is made more properly broken again, as was their intention and normal mode? Sounds completely logical. [/Quote] No, I'd suggest that Obsidian thought the system before was good, but could be better. I do play testing for Fantasy Flight Games and one of the things I've learned doing this is just how iterative game design is. The designer will make a system, test it a bunch, tweak it, test it some more, tweak it again, etc. Ok, so you're not mixing up narrative consistency and simulationism. Good. However, now I have absolutely no idea about what your complaint with the v. 301 stat system actually is. What exactly do you think is made the old system more narratively coherent than the new system? Explain it to me like I'm an idiot, because as it stands right now not one stat seems like it is "narratively" out of place. Might = Damage and Healing -damage is no problem, healing is maybe a little weird Constitution = Stamina & Health -no problem Dexterity = Action speed -maybe not the first thing that comes to mind but not ridiculous either Perception = Accuracy and Range -Yep, snipers are typically very detail oriented Intellect = AoE and Deflection -AoE makes sense in the world and deflection is ok. Smart guys know its better to not get hit at all, etc. Resolve = Concentration and Durations -Concentration is a no brainer and durations makes sense (you're keeping the effect going through sheer willpower) Anyways, I get that you like the old system better than the new one, I just have no idea why. Edited September 29, 2014 by illathid 2 "Wizards do not need to be The Dudes Who Can AoE Nuke You and Gish and Take as Many Hits as a Fighter and Make all Skills Irrelevant Because Magic." -Josh Sawyer
Hiro Protagonist II Posted September 29, 2014 Posted September 29, 2014 New system makes sense to me when you put it like that. Please don't change it. Pleaasseee don't change it.... 1
Bryy Posted September 29, 2014 Posted September 29, 2014 Might = Damage and Healing -damage is no problem, healing is maybe a little weird Constitution = Stamina & Health -no problem Dexterity = Action speed -maybe not the first thing that comes to mind but not ridiculous either Perception = Accuracy and Range -Yep, snipers are typically very detail oriented Intellect = AoE and Deflection -AoE makes sense in the world and deflection is ok. Smart guys know its better to not get hit at all, etc. Resolve = Concentration and Durations -Concentration is a no brainer and durations makes sense (you're keeping the effect going through sheer willpower) Anyways, I get that you like the old system better than the new one, I just have no idea why. Plus, certain stats are needed for Event Cards.
Matt516 Posted September 29, 2014 Posted September 29, 2014 (edited) The problem with the attack resolution for me is that all of your expected damage increase from accuracy comes from higher crit percentages. It seems to me that it excludes mechanisms that could meaningfully increase hit chance without increasing crit chance. I realize that some modifiers do this by reducing the baseline crit percentage, but once that's set, higher accuracy only gives higher crit chance, the to-hit chance without critting is always the same. I'm not knocking the decision, I just think crits should be that once in a while awesome thing that happens, not something that happens 50 % of the time because you're against a weak enemy and your accuracy is way better then their def. That's not quite true. The increased damage from Accuracy comes from the increased chances of better attack resolutions and the decreased chances of worse ones. When Accuracy is greater than Defense, that is indeed an increased chance of crit - but the increase in DPS isn't only dependent on what the "good" attack resolution is that is being maximized, but also the "bad" attack resolution that is being minimized. There are distinct 5 regimes of "Accuracy - Defense" - and the effectiveness of one additional point in Accuracy is different based on which regime you are in. In the "-5 < ACC-DEF < 5" regime, each point of Accuracy increases the chance of a crit by 1% and decreases the chance of a miss by 1%. This is the most powerful regime of ACC-DEF for Accuracy, because you're maximizing the best attack resolution and minimizing the worst one. Raw 1.5% DPS increase (before factoring in Might, Speed, and other multipliers to DPS) "-50 < ACC-DEF < -5" regime: 1 point in Accuracy increases the chance of a hit by 1% and decreases the chance of a miss by 1%. Raw 1% DPS increase. "5 < ACC-DEF < 50" regime: 1 point in Accuracy increases the chance of a crit by 1% and decreases the chance of a graze by 1%. Raw 1% DPS increase. "-95 < ACC-DEF < -50" regime: 1 point in Accuracy increases the chance of a graze by 1% and decreases the chance of a miss by 1%. Raw 0.5% DPS increase. "50 < ACC-DEF < 95" regime: 1 point in Accuracy increases the chance of a graze by 1% and decreases the chance of a hit by 1%. Raw 0.5% DPS increase. So as you can see - the benefits of Accuracy are a little more complicated than just "increased crit chance". It very much depends on which regime of the Accuracy - Defense axis you're in. Do note that these "Raw % DPS" increases can't be directly compared to, say, the 2% increase from Might because they actually depend on each other. Low Might means your % DPS increases from Accuracy are worth less, and low ACC-DEF means your % DPS increases from Might are worth less. This means that there is actually a crossover point where either Accuracy or Might is better for increasing DPS. In the last build, below ACC-DEF = -20, Accuracy was generally better, and above ACC-DEF = 5, Might was generally better. The region in between wasn't one or the other. I haven't redone the graphs for the new Might multipliers (centered at 10), but I expect they'll be very similar. EDIT: Granted, the last 2 regimes I showed may or may not see much use in game as those are pretty big differences. Even so, thought I'd include them. Also, I can still see your point about crits maybe being better if they weren't super common, and if Accuracy only increased hit chance. I'm... undecided. I think that argument has merit, but I'm not sure how well that'd work in this system. One thing is for sure - that change would nerf Accuracy quite a bit when compared to Might. YMMV if that's a good idea or not. Could probably be counterbalanced somehow, maybe by moving the attribute boni to +3% and +2 respectively, which gives a little more weight to the Accuracy attribute (currently Perception). Edited September 29, 2014 by Matt516 2
Sensuki Posted September 29, 2014 Posted September 29, 2014 (edited) Sensuki, how do you have access to the C-code? ( not complaining, just curious, and how much code do you have access to, could you post, for example, damage calculations, etc?) I used a program to reverse engineer the Assembly-CSharp.dll to get the source code. I can see pretty much everything. Edited September 29, 2014 by Sensuki
Matt516 Posted September 29, 2014 Posted September 29, 2014 Sensuki, how do you have access to the C-code? ( not complaining, just curious, and how much code do you have access to, could you post, for example, damage calculations, etc?) I used a program to reverse engineer the Assembly-CSharp.dll to get the source code. I can see pretty much everything. So basically http://science.trigunamedia.com/geosound/neo-sees-the-matrix.jpg?
tdphys Posted September 29, 2014 Posted September 29, 2014 (edited) Sensuki, how do you have access to the C-code? ( not complaining, just curious, and how much code do you have access to, could you post, for example, damage calculations, etc?) I used a program to reverse engineer the Assembly-CSharp.dll to get the source code. I can see pretty much everything. Hah.. that's hard core... did you make up the function names? If it was c- c++ I'd expect they'd be mangled unless they're shipping debug builds. Regardless, is it possible that you can post the function where the actual damage is calculated? I assume that's way more complicated and I'd love to see it. The problem with the attack resolution for me is that all of your expected damage increase from accuracy comes from higher crit percentages. It seems to me that it excludes mechanisms that could meaningfully increase hit chance without increasing crit chance. I realize that some modifiers do this by reducing the baseline crit percentage, but once that's set, higher accuracy only gives higher crit chance, the to-hit chance without critting is always the same. I'm not knocking the decision, I just think crits should be that once in a while awesome thing that happens, not something that happens 50 % of the time because you're against a weak enemy and your accuracy is way better then their def. That's not quite true. The increased damage from Accuracy comes from the increased chances of better attack resolutions and the decreased chances of worse ones. When Accuracy is greater than Defense, that is indeed an increased chance of crit - but the increase in DPS isn't only dependent on what the "good" attack resolution is that is being maximized, but also the "bad" attack resolution that is being minimized. There are distinct 5 regimes of "Accuracy - Defense" - and the effectiveness of one additional point in Accuracy is different based on which regime you are in. In the "-5 < ACC-DEF < 5" regime, each point of Accuracy increases the chance of a crit by 1% and decreases the chance of a miss by 1%. This is the most powerful regime of ACC-DEF for Accuracy, because you're maximizing the best attack resolution and minimizing the worst one. Raw 1.5% DPS increase (before factoring in Might, Speed, and other multipliers to DPS) "-50 < ACC-DEF < -5" regime: 1 point in Accuracy increases the chance of a hit by 1% and decreases the chance of a miss by 1%. Raw 1% DPS increase. "5 < ACC-DEF < 50" regime: 1 point in Accuracy increases the chance of a crit by 1% and decreases the chance of a graze by 1%. Raw 1% DPS increase. "-95 < ACC-DEF < -50" regime: 1 point in Accuracy increases the chance of a graze by 1% and decreases the chance of a miss by 1%. Raw 0.5% DPS increase. "50 < ACC-DEF < 95" regime: 1 point in Accuracy increases the chance of a graze by 1% and decreases the chance of a hit by 1%. Raw 0.5% DPS increase. So as you can see - the benefits of Accuracy are a little more complicated than just "increased crit chance". It very much depends on which regime of the Accuracy - Defense axis you're in. Do note that these "Raw % DPS" increases can't be directly compared to, say, the 2% increase from Might because they actually depend on each other. Low Might means your % DPS increases from Accuracy are worth less, and low ACC-DEF means your % DPS increases from Might are worth less. This means that there is actually a crossover point where either Accuracy or Might is better for increasing DPS. In the last build, below ACC-DEF = -20, Accuracy was generally better, and above ACC-DEF = 5, Might was generally better. The region in between wasn't one or the other. I haven't redone the graphs for the new Might multipliers (centered at 10), but I expect they'll be very similar. EDIT: Granted, the last 2 regimes I showed may or may not see much use in game as those are pretty big differences. Even so, thought I'd include them. Also, I can still see your point about crits maybe being better if they weren't super common, and if Accuracy only increased hit chance. I'm... undecided. I think that argument has merit, but I'm not sure how well that'd work in this system. One thing is for sure - that change would nerf Accuracy quite a bit when compared to Might. YMMV if that's a good idea or not. Could probably be counterbalanced somehow, maybe by moving the attribute boni to +3% and +2 respectively, which gives a little more weight to the Accuracy attribute (currently Perception). Yes, it's the third case which I was referring to , where dps comes strictly from higher crit chance. I wasn't counting the reduced graze chance, just to not complicate things. My bias towards crits being an exciting thing is obviously my own D&D based prejudice, so I don't want to get all huffy about things. I'll just call it amplified damage That being said, I think it would be fun to put INT as an added damage multiplier to the amplified ( err crit ) damage along with might. I think that goes along with the int based def narrative, and would be more effective in buffing int then AOE effects. Edited September 29, 2014 by tdphys
Sensuki Posted September 29, 2014 Posted September 29, 2014 (edited) Hah.. that's hard core... did you make up the function names? If it was c- c++ I'd expect they'd be mangled unless they're shipping debug builds. Regardless, is it possible that you can post the function where the actual damage is calculated? I assume that's way more complicated and I'd love to see it. No the program I used got most of the stuff in readable format, there's only some Unity based stuff that doesn't decode correctly. Yes I have read where damage is calculated, it's in the AttackBase class I think. I'll find it later. Edited September 29, 2014 by Sensuki
Matt516 Posted September 29, 2014 Posted September 29, 2014 (edited) I'm a guess... damageBase = ( ( Lower end of weapon damage range + rand(1) * (Higher end - Lower end) ) * Might multiplier * Attack resolution multiplier ) damageReduced = ( damageBase - DT ) * (1 - DR) if damageReduced < 0.1 * damageBase damageFinal = 0.1 * damageBase else damageFinal = damageReduced end Edited September 29, 2014 by Matt516
Sensuki Posted September 29, 2014 Posted September 29, 2014 I think this is the damage roll public float RollDamage(float MinPercentAdjust) { return Random.Range(this.Minimum + (float) ((double) MinPercentAdjust / 100.0 * ((double) this.Maximum - (double) this.Minimum)), this.Maximum); }
tdphys Posted September 29, 2014 Posted September 29, 2014 I think this is the damage roll public float RollDamage(float MinPercentAdjust) { return Random.Range(this.Minimum + (float) ((double) MinPercentAdjust / 100.0 * ((double) this.Maximum - (double) this.Minimum)), this.Maximum); } Hmm, doesn't really state all the modifiers. I'd ask you to post more... but I'm seeing visions of the copyright swat team showing up at your door
Sensuki Posted September 29, 2014 Posted September 29, 2014 There's a few different methods that control everything. There's a lot of unused code and stuff in there as well, and some of the classes are enormous. there's a calcDamage method somewhere, but there's also a few different ones for Procs, bounces .. etc
Matt516 Posted September 29, 2014 Posted September 29, 2014 The one you posted looks to just be the base weapon damage roll before any modifiers.
Sensuki Posted September 29, 2014 Posted September 29, 2014 Yeah it is, another class calls the damage roll method and calculates everything after it.
Matt516 Posted September 29, 2014 Posted September 29, 2014 Real programming languages make me sad. Declaring every single variable every time.. MATLAB is much better.
nipsen Posted September 29, 2014 Posted September 29, 2014 (edited) public static float GetStatDamageHealMultiplier(int might) { return (float) (1.0 + (double) (might - 10) / 50.0); } public static float GetStatAttackSpeedMultiplier(int dexterity) { return (float) (1.0 + (double) (dexterity - 10) / 50.0); } public static float GetStatEffectDurationMultiplier(int resolve) { return (float) (1.0 + (double) (resolve - 10) / 20.0); } public static float GetStatEffectAreaMultiplier(int intellect) { return (float) (1.0 + (double) (intellect - 10) * 3.0 / 100.0); } public static float GetStatInterruptMultiplier(int perception) { return 1f; } public static float GetStatRangedAttackDistanceMultiplier(int perception) { return (float) (1.0 + (double) (perception - 10) / 20.0); } public static float GetStatConcentrationMultiplier(int resolve) { return (float) (1.0 + (double) (resolve - 10) * 3.0 / 100.0); } public static float GetStatBonusAccuracy(int perception) { return (float) (perception - 10); } public static float GetStatBonusDeflection(int intellect) { return (float) (intellect - 10); } This is what the attributes do currently, range is not working however. Do you see intellect being called for anything but Deflection or AoE ? I don't. Here's what they used to be public static float GetStatDamageHealMultiplier(int might) { return (float) (1.0 + (double) might / 50.0); } public static float GetStatEffectDurationMultiplier(int intellect) { return (float) (1.0 + (double) intellect / 20.0); } public static float GetStatEffectAreaMultiplier(int intellect) { return (float) (1.0 + (double) intellect * 3.0 / 100.0); } public static float GetStatInterruptMultiplier(int perception) { return (float) (1.0 + (double) perception * 3.0 / 100.0); } public static float GetStatConcentrationMultiplier(int resolve) { return (float) (1.0 + (double) resolve * 3.0 / 100.0); } My understanding of what the attributes do comes from the code level. Not make believe. Sensuki. Listen to me. This is the code for calculating the bonuses as they are shown in the stats-screen. This is information that you can see from the stats-sheet. It does not show the attack roll, nor does it show where they pull in any bonuses from class, or how - for example - the critical hit is calculated, and where possible wounds are picked from. So "your understanding" of the code is not just rudimentary. It comes from a reverse engineered piece of code, as that code is produced from their compiler. And you are going to have serious difficulty with finding the actual attack roll resolution from that code. Every potential loop is going to have it's own independently completing thread option. You might have difficulties identifying all the branches from the same area of the code as well. Meaning that even if you identify something in the code - which you haven't - that is actually used in the attack roll. We still can't really guarantee that it reflects the entire picture as that code was originally written. So your point of view in this case wouldn't be just wrong. No - you've convinced yourself that it is a "fundamental understanding", because you have one piece of code, and code is fundamental! Seriously - consider for one ****ing moment the idea that I'm not talking out of my arse Sensuki. Edited September 29, 2014 by nipsen The injustice must end! Sign the petition and Free the Krug!
Sensuki Posted September 29, 2014 Posted September 29, 2014 (edited) No I am reading the entire source code and by searching for the word intellect and then the floats/methods/objects/structs that it is connected to/related to I can assure you that nowhere in any of the classes that govern any of the attack or damage data is intellect related to anything regarding reducing the severity of hits/crits or whatever. In the newest patch it gives a Deflection bonus though. You are just pulling the other bit out of your arse, nowhere on the internet and nowhere in the game files has that been mentioned at all. You are delusional. Edited September 29, 2014 by Sensuki
Sensuki Posted September 29, 2014 Posted September 29, 2014 (edited) CalculateDefense method in the CharacterStats class (which calculates Deflection, Fortitude, Reflex and Will scores) public int CalculateDefense(CharacterStats.DefenseType defenseType, AttackBase attack, GameObject enemy) { return this.CalculateDefense(defenseType, attack, enemy, false); } public int CalculateDefense(CharacterStats.DefenseType defenseType, AttackBase attack, GameObject enemy, bool isSecondary) { int num = (this.Level - 1) * CharacterStats.DefensePerLevel; switch (defenseType) { case CharacterStats.DefenseType.Deflect: num += this.Deflect; Equipment equipment1 = (Equipment) ((Component) this).get_gameObject().GetComponent<Equipment>(); if (Object.op_Inequality((Object) equipment1, (Object) null)) { Shield equippedShield = equipment1.EquippedShield; if (Object.op_Inequality((Object) equippedShield, (Object) null)) num += equippedShield.DeflectBonus; } if (Object.op_Inequality((Object) enemy, (Object) null) && this.IsEnemyDistant(enemy)) { num += this.DistantEnemyBonus; goto case 5; } else goto case 5; case CharacterStats.DefenseType.Fortitude: num = num + this.Fortitude + (int) ((double) (this.Might + this.Constitution) * 1.5 + 0.5); goto case 5; case CharacterStats.DefenseType.Reflex: num = num + this.Reflex + (int) ((double) (this.Dexterity + this.Perception) * 1.5 + 0.5); Equipment equipment2 = (Equipment) ((Component) this).get_gameObject().GetComponent<Equipment>(); if (Object.op_Inequality((Object) equipment2, (Object) null)) { Shield equippedShield = equipment2.EquippedShield; if (Object.op_Inequality((Object) equippedShield, (Object) null)) num += equippedShield.ReflexBonus; } if (Object.op_Inequality((Object) enemy, (Object) null) && this.IsEnemyDistant(enemy)) { num += this.DistantEnemyBonus; goto case 5; } else goto case 5; case CharacterStats.DefenseType.Will: num = num + this.Will + (int) ((double) (this.Intellect + this.Resolve) * 1.5 + 0.5); goto case 5; case CharacterStats.DefenseType.None: if (Object.op_Inequality((Object) attack, (Object) null)) { if (attack.HasStatusEffect(StatusEffect.ModifiedStat.Stunned) || attack.HasStatusEffect(StatusEffect.ModifiedStat.CanStun)) num += this.StunDefenseBonus; if (attack.HasStatusEffect(StatusEffect.ModifiedStat.KnockedDown)) num += this.KnockdownDefenseBonus; if (attack.HasKeyword("poison")) num += this.PoisonDefenseBonus; else if (isSecondary && attack.HasAfflictionWithKeyword("poison")) num += this.PoisonDefenseBonus; if (attack.HasKeyword("disease")) num += this.DiseaseDefenseBonus; else if (isSecondary && attack.HasAfflictionWithKeyword("disease")) num += this.DiseaseDefenseBonus; if ((double) attack.PushDistance != 0.0) num += this.PushDefenseBonus; if (attack.IsDisengagementAttack) num += this.DisengagementDefenseBonus; if (Object.op_Inequality((Object) attack.AbilityOrigin, (Object) null) && attack.AbilityOrigin is GenericSpell) num += this.SpellDefenseBonus; if (attack is AttackRanged && defenseType == CharacterStats.DefenseType.Deflect) num += this.RangedDeflectionBonus; } AnimationController animationController = (AnimationController) ((Component) this).get_gameObject().GetComponent<AnimationController>(); if (Object.op_Inequality((Object) animationController, (Object) null)) { if (animationController.CurrentReaction == AnimationController.ReactionType.Knockdown) num += this.WhileKnockeddownDefenseBonus; if (animationController.CurrentReaction == AnimationController.ReactionType.Stun) num += this.WhileStunnedDefenseBonus; } if (this.OnDefenseAdjustment != null) num += this.OnDefenseAdjustment(defenseType, attack, enemy); return (int) ((double) num * (double) this.PotD_Mult); default: num += 50; goto case 5; } } I'm not pasting any more though, go decompile the code yourself. Edited September 29, 2014 by Sensuki
Recommended Posts