Derakon's combat revamp

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • buzzkill
    Prophet
    • May 2008
    • 2939

    #76
    Originally posted by Derakon
    * Why shouldn't a character want to fill in their deficiencies rather than overemphasize their strengths?
    On the flip side, stats are good for more than combat. A rouge will want high DEX to aid him in other ways, which will lead him to prefer a rougish weapon.
    www.mediafire.com/buzzkill - Get your 32x32 tiles here. UT32 now compatible Ironband and Quickband 9/6/2012.
    My banding life on Buzzkill's ladder.

    Comment

    • Derakon
      Prophet
      • Dec 2009
      • 9022

      #77
      Progress so far:

      * Objects now have optional Balance and Heft ratings (scored in hundredths, e.g. "50" means .5x multiplier). These names were chosen to distinguish the finesse multiplier from the bonus to the finesse skill, since both will be on all weapons. All weapons have default values of 50/50 filled in. Artifacts can optionally specify their own values; if they don't, then they inherit the values from their base types. So you could change e.g. Haradekket to have a 1.5x finesse multiplier if you wanted to (wanted to be insane, that is), instead of the current +2 blows.

      * Renamed SKILL_TO_HIT_MELEE to SKILL_FINESSE_MELEE, added SKILL_PROWESS_MELEE right after. No skill behavior changed yet.

      * Semi-arbitrary skill levels and growths have been created for races and classes. For races, I took the existing to-hit skill and made it be either finesse or prowess, then flipped the sign on it and made that the other skill. So for example, elves had -5 melee skill, so I gave them -5 prowess and 5 finesse. Half-trolls had +20 skill, so I gave them +20 prowess and -20 finesse. Etc. This will all need to be tuned. Later.

      * Renamed all 500+ instances of "to_h" and "to_d" (and "dis_to_h" and "dis_to_d") to "to_finesse", "to_prowess", etc. There are still plenty of areas that refer to hit/damage bonuses, especially when it comes to parsing info files.

      * Updated the damage display when 'I'nspecting weapons and on the character screen to show the prowess damage multiplier and to calculate blows correctly. Actual damage dealt is still spotty though.

      * Multiplied all brands and slays by 100 and then divided by 100 when damage is actually dealt -- i.e. laid some groundwork for fractional slays.

      There's plenty of places where the old combat system and the new one are butting heads (e.g. criticals, to-hit chance calculations), and there's plenty of bugs, but this is a good start.

      If you want to check this out for some reason, the branch is on Github here.

      Comment

      • Magnate
        Angband Devteam member
        • May 2007
        • 5110

        #78
        Originally posted by Derakon
        Progress so far:

        * Objects now have optional Balance and Heft ratings (scored in hundredths, e.g. "50" means .5x multiplier). These names were chosen to distinguish the finesse multiplier from the bonus to the finesse skill, since both will be on all weapons. All weapons have default values of 50/50 filled in. Artifacts can optionally specify their own values; if they don't, then they inherit the values from their base types. So you could change e.g. Haradekket to have a 1.5x finesse multiplier if you wanted to (wanted to be insane, that is), instead of the current +2 blows.

        * Renamed SKILL_TO_HIT_MELEE to SKILL_FINESSE_MELEE, added SKILL_PROWESS_MELEE right after. No skill behavior changed yet.

        * Semi-arbitrary skill levels and growths have been created for races and classes. For races, I took the existing to-hit skill and made it be either finesse or prowess, then flipped the sign on it and made that the other skill. So for example, elves had -5 melee skill, so I gave them -5 prowess and 5 finesse. Half-trolls had +20 skill, so I gave them +20 prowess and -20 finesse. Etc. This will all need to be tuned. Later.

        * Renamed all 500+ instances of "to_h" and "to_d" (and "dis_to_h" and "dis_to_d") to "to_finesse", "to_prowess", etc. There are still plenty of areas that refer to hit/damage bonuses, especially when it comes to parsing info files.

        * Updated the damage display when 'I'nspecting weapons and on the character screen to show the prowess damage multiplier and to calculate blows correctly. Actual damage dealt is still spotty though.

        * Multiplied all brands and slays by 100 and then divided by 100 when damage is actually dealt -- i.e. laid some groundwork for fractional slays.

        There's plenty of places where the old combat system and the new one are butting heads (e.g. criticals, to-hit chance calculations), and there's plenty of bugs, but this is a good start.

        If you want to check this out for some reason, the branch is on Github here.
        And that's in one day. Awesome. Such is the advantage of professional coders on the devteam - that would have taken me weeks! (In fact only me / fizzix / takkaria are not pros - though I guess I ought to honour myshkin's distinction as sysadmin rather than programmer!).
        "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

        Comment

        • Mikko Lehtinen
          Veteran
          • Sep 2010
          • 1246

          #79
          Impressive indeed!

          I had another though about to-hit. Maybe you could use pure Finesse for to-hit calculations without making it too powerful. Like this:

          Normally, to-hit chance is 90%, as per Estie's suggestion. Only in special conditions, like when trying to hit monsters that are good dodgers, would hit chance be reduced. Finesse skill could be used to eliminate these special hindrances, but not to bring to-hit higher than 90%.

          That would give Finesse a similar edge against evasive monsters that Prowess gives against armored ones.

          Comment

          • fizzix
            Prophet
            • Aug 2009
            • 3025

            #80
            Some general comments on things stated in the thread.

            * While I generally agree that it's frustrating to have a lot of misses in combat, it's ok to have specific monsters that are very hard to hit or very hard to damage. Think of a mithril golem that can't be scratched except with the most powerful (prowessest?) of weapons, or a will o' the wisp which is fragile but almost impossible to hit.

            * Not every character needs to be able to hit every monster with their most ideal weapon. There should be expectations that early-midgame characters will have two options for damage, and midgame - endgame will have 3 options. The options can be filled by either finesse/prowess swaps, launchers, spells/devices. In this way spells/devices work as a way of compensating for ineffectual combat. They do less damage for each connecting hit, but always hit.

            * As swap weapons become more important, streamlining their use is probably necessary to avoid annoying gameplay. It may be desirable to allow the bow slot to be filled with a generic swap weapon. For streamlining, if the player has a weapon equipped in the swap slot, the game automatically chooses the weapon that is best against any given monster. Of course sometimes you don't know enough about a monster to make a good decision, so then you use the primary weapon.

            * There will be a lot of monsters in the game. There is no need to worry about killing every one. However, Morgoth and Sauron should both be killable using all prowess/finesse/magic. Furthermore, any important monsters (spellbook holders for example) should be killable by at least 2 methods. (priest enemies should be killable by prowess, mage enemies by magic.) With those exceptions, there could be monsters that are extremely difficult to kille by certain characters.

            * I'm perfectly willing to go through monster AC values and adjust them to match whatever values are necessary for the new combat system (assuming it's more difficult than a simple multiplication factor). And then redo everything again to add absorption/evasion for monsters after the effects refactor.

            * I haven't heard much about slays/brands. Are they working the same as before? If dice are very important a 3x damage due to a brand seems very powerful. On the other hand, brand/slay damage could be added as a separate effect, one the refactor comes in. You could imagine an acid/cold branded dagger that does 10 damage to monsters, 5 additional damage if the monster does not resist acid, and 5 additional damage if the monster does not resist cold. so 20 to monsters vulnerable to both.

            Comment

            • Magnate
              Angband Devteam member
              • May 2007
              • 5110

              #81
              Originally posted by Mikko Lehtinen
              Impressive indeed!

              I had another though about to-hit. Maybe you could use pure Finesse for to-hit calculations without making it too powerful. Like this:

              Normally, to-hit chance is 90%, as per Estie's suggestion. Only in special conditions, like when trying to hit monsters that are good dodgers, would hit chance be reduced. Finesse skill could be used to eliminate these special hindrances, but not to bring to-hit higher than 90%.

              That would give Finesse a similar edge against evasive monsters that Prowess gives against armored ones.
              I like this because it has a beautiful simplicity. To use the language of the future, we assume that an average monster's evasion score increases with mlev in the same way an average player's finesse score increases with clev. That is, an average player will hit an average monster 90% of the time where clev == mlev / 2. Then, boosts to finesse from race/class/stat/equipment bonuses will offset boosts to evasion (which can be intrinsic higher evasion, or buffs from a spell - I can see dark elven sorcerors self-buffing in this way).

              While I like the simplicity, I might argue about the constant. 90% seems a little high. I'd go with 66% or 75% as the average, with 90% or 95% as a cap for high-finesse chars.

              By average player we mean human, and I'd guess we mean ranger or paladin. Warriors and rogues will have higher than average finesse, and priests and magi lower. Rangers will have a higher archery skill, but that's calculated separately from melee finesse.

              Oh. Since I've strayed onto archery, I might as well share my recent epiphany about it. IMO we need three skills but not four: finesse with melee weapons is completely different from accuracy of shooting, but power is power, whether it's to pound your weapon home or draw your bow.

              But the equations are not the same. The relevant finesse score affects to-hit, and power affects damage for both melee and shooting. But melee blows depend (more) on finesse (subject to the weapon preference, as discussed), while shots depend more on power because how quickly you can draw/cock the launcher is more of a determinant of shooting speed than how good your aim is.

              That's probably not very well articulated, but hopefully it allows a consistent approach to archery in this new system without any additional complexity (except the extra finesse score). Launchers would have a finesse mult and a power mult just like melee weapons, with the latter replacing the traditional launcher mult.

              There's a whole load of questions about how we display this info on items and on the character sheet, but let's worry about that after the mechanics are working ok.
              "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

              Comment

              • Magnate
                Angband Devteam member
                • May 2007
                • 5110

                #82
                Originally posted by fizzix
                * I'm perfectly willing to go through monster AC values and adjust them to match whatever values are necessary for the new combat system (assuming it's more difficult than a simple multiplication factor). And then redo everything again to add absorption/evasion for monsters after the effects refactor.

                * I haven't heard much about slays/brands. Are they working the same as before? If dice are very important a 3x damage due to a brand seems very powerful. On the other hand, brand/slay damage could be added as a separate effect, one the refactor comes in. You could imagine an acid/cold branded dagger that does 10 damage to monsters, 5 additional damage if the monster does not resist acid, and 5 additional damage if the monster does not resist cold. so 20 to monsters vulnerable to both.
                Completely in agreement with all your other points. Slays now have 100x more granularity, so multipliers are effectively percentages (like Ey, in fact). So we can tone the "default" slay mult right down from 3x to 1.75x or whatever works best. We may want to revisit this further with evasion/absorption (which I'm going to truncate to EvAbs 'cos I'm typing it a lot), because I rather liked one of your earlier ideas about slays neutralising one or the other but not both. Though the more I think about it now, the more I think they ought to just overcome absorption, which is the same add-to-damage effect as now. But definitely open to alternatives.

                The other thing I wanted to ask is why EvAbs needs to wait until after the effects refactor. It doesn't matter if it does, I just want to understand. Since Derakon's work is all about redefining the algorithms for to-hit and damage, now is exactly the time to do EvAbs. Otherwise Derakon will produce something vaguely balanced, and then we'll have to mess with it all over again.

                Breaking this down, it needs:

                1. A new field in monster.txt, so AC becomes Evasion and we add Absorption (using a regex to add :0 as a default). EDIT: of course, this needs to be added to the r_ptr struct too (r_ptr->evasion and r_ptr->absorption instead of r_ptr->ac).

                2. Then the Absorption values need to be tweaked for tough monsters (dragons, golems etc.) and the Evasion values need to be toned down for slow/big monsters and up for fast/evasive ones. This is where most of the work is.

                3. The new to-hit algorithm needs to reference Evasion rather than AC.

                4. The new damage calculation needs to subtract Absorption.

                Did I miss anything (apart from possible new mechanics for slays, and the usual savefile increment)?

                P.S. Andrew Doull recently posted a link to this thread which has 3.0.x's monsters rebalanced in terms of depth and xp (but no other changes to their abilities or stats IIRC). If you were interested, it might be worth looking at this before we make too many more changes to monster.txt, 'cos it will get harder and harder to port changes over efficiently. (I know there have already been a bunch of changes in the last few years, but hopefully not too many.)
                Last edited by Magnate; December 18, 2011, 15:16.
                "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

                Comment

                • fizzix
                  Prophet
                  • Aug 2009
                  • 3025

                  #83
                  Originally posted by Magnate

                  The other thing I wanted to ask is why EvAbs needs to wait until after the effects refactor. It doesn't matter if it does, I just want to understand. Since Derakon's work is all about redefining the algorithms for to-hit and damage, now is exactly the time to do EvAbs. Otherwise Derakon will produce something vaguely balanced, and then we'll have to mess with it all over again.
                  Well it doesn't. One of the main difficulties I had previously with evasion/absorption was that absorption became negligible if you had a slay/brand. In the last attempt, if the monster was vulnerable to a slay, I divided the absorption value by 3, making it meaningless for all monsters that you had a slay for. This, admittedly, was a ham-fisted approach, but I felt that it was better than reducing fire damage to a monster that was did not resist fire.

                  What I would prefer is to send the damage from the slays/weapons separately. So that at the point of combat, I could say that the player gives 20 damage from weapon impact, 20 damage from xxx brand and 10 damage from xxx slay. Then absorption reduces the damage from impact. For example, resist fire would reduce the fire damage by 1/3. Immune fire would take no damage from fire. Vuln fire would double the damage from fire only.

                  This part can be separate from splitting absorption/evasion but it was the major problem with the first splitting attempt.

                  Comment

                  • Derakon
                    Prophet
                    • Dec 2009
                    • 9022

                    #84
                    Thanks for the positive feedback, guys. I want to make it clear that while it appears I've made a lot of progress, I've been doing the easy stuff so far -- diving into the code, ripping things apart, and then doing positive testing ("does my new stuff work?"). The negative testing ("does anything else not work?") hasn't been done yet, and in my experience is a big part of any change. Also, props to everyone on IRC for helping me out when I was looking for a function and didn't know what it was named, let alone where it was.

                    Now.

                    Regarding slays: I fully expect the current multipliers to be overpowered with damage coming entirely from dice under the new system, which is why I went ahead and multiplied everything by 100. Fortunately this at least is easy to tweak. I'll leave the effects of slays on EvAbs to you guys, though if there's somewhere I need to leave room open to make your job easier, please do let me know.

                    Regarding to-hit: I agree with Magnate that having a constant that we deviate from for specific monsters is pretty elegant. Magnate went ahead with specifying a bunch of possible factors, though, so I want to ask:

                    1) Are we planning to make player's chance to hit any monster = X% +- specific monster modifiers?
                    or,
                    2) Is it X% + a*(player level * 2 - monster level) + b*(finesse - evasion)?

                    Finally, regarding damage dice: we need to figure out how to scale these across the course of the game. Currently, a broadsword is a 2d5 weapon, average output 6 damage. There's no way that we're going to make that able to deal 400 damage/round without getting absurd numbers of blows/round and/or absurd damage multipliers (with implicit absurd stats on the player and on the weapon). For example, at 6 blows/round we'd need a prowess multiplier of 11! However, if we increase the base dice then early damage dealt will be too high.

                    It seems likely we need some way to model the impact that +to-dam has on weapons in the current system, where you simply can't find or buy high base damage weapons early on, but they become readily more available as the game goes on. We have affixes that add to dice or die sides, so that's one possible route to take -- scale that broadsword up to be 5d5 or whatever and it becomes more viable (at six blows/round, prowess multiplier is 4.4). Do we have any concern about basically requiring endgame-quality weapons to have gotten a certain number of bonus dice?

                    Incidentally, the Big Three weapons (blades of chaos, scythes of slicing, maces of disruption) have high base dice and are excellent candidates for endgame weapons under this system for that reason. Especially since their unusual weight is less of a barrier to them being used effectively since that no longer impacts #blows.

                    And fizzix asked me to post the current damage formula here, so here it is:
                    Code:
                    Damage/blow = (dice damage) * (slay multiplier) * (weapon heft * prowess + 1)
                    Damage/round = (damage per blow) * (weapon balance * finesse + 1)
                    Balance + heft = 1, barring exceptions.

                    Comment

                    • LostTemplar
                      Knight
                      • Aug 2009
                      • 670

                      #85
                      scale that broadsword up to be 5d5
                      dont you think, that such change may fix problem in original combat system too.

                      Comment

                      • Derakon
                        Prophet
                        • Dec 2009
                        • 9022

                        #86
                        Originally posted by LostTemplar
                        dont you think, that such change may fix problem in original combat system too.
                        Compare Ringil's damage as a 4d5 weapon vs. as a 2d5 weapon. How much do the dice matter compared to the +25 to-damage enchantment? Not so much in either case. In both cases the dice are less than half the damage you're outputting. In more extreme cases, it's not that uncommon to have a character wandering around with a 1d4 dagger or 1d6 rapier that's been enchanted to +12 or more to-damage.

                        We had a discussion about this stuff years ago back on RGRA, I think when O combat was first making its debut. I mentioned the +15 dagger and someone else called it a "pie in the face of reality". I always liked that phrase.

                        Comment

                        • ekolis
                          Knight
                          • Apr 2007
                          • 921

                          #87
                          Am I the only one who doesn't like the term "prowess" in this context? Maybe I'm misunderstanding the definition of the word, but I thought "prowess" means just "skill" or "aptitude". So a "weapon prowess skill" seems rather redundant to me, and it doesn't necessarily have anything at all to do with pounding monsters harder; it could be that you know their weak spots or even that you have "finesse"!

                          I'm not sure what a better term would be to use - I'd suggest "power", but it appears that that was the original one that got vetoed and replaced by "prowess"...
                          You read the scroll labeled NOBIMUS UPSCOTI...
                          You are surrounded by a stasis field!
                          The tengu tries to teleport, but fails!

                          Comment

                          • LostTemplar
                            Knight
                            • Aug 2009
                            • 670

                            #88
                            Too low dice and too high pluses is exectly the problem in vanilla combat. So increasing dice and decreasing pluses may fix it. I dont see in your post any argument against this.

                            Comment

                            • buzzkill
                              Prophet
                              • May 2008
                              • 2939

                              #89
                              Originally posted by ekolis
                              I'm not sure what a better term would be to use - I'd suggest "power", but it appears that that was the original one that got vetoed and replaced by "prowess"...
                              I thought so from the first moment it was mentioned, but didn't care enough to buck the trend as the whole renaming issue was mostly settled by the time I ran across it. How about "funk" (finesse) and "ker-plunk" (power).
                              www.mediafire.com/buzzkill - Get your 32x32 tiles here. UT32 now compatible Ironband and Quickband 9/6/2012.
                              My banding life on Buzzkill's ladder.

                              Comment

                              • Mikko Lehtinen
                                Veteran
                                • Sep 2010
                                • 1246

                                #90
                                Originally posted by ekolis
                                I'm not sure what a better term would be to use - I'd suggest "power", but it appears that that was the original one that got vetoed and replaced by "prowess"...
                                Might? Potency? Peppiness? Punch? Forcefulness? Oomph?

                                Comment

                                Working...
                                😀
                                😂
                                🥰
                                😘
                                🤢
                                😎
                                😞
                                😡
                                👍
                                👎