I have asked in Discord and have been told that these are fixed calculations regardless of the rank of the attacker nor the defender. My feedback is only relating to that and not the actual % numbers chosen per 100 stats.Base Stats Changes
The secondary effects of base stats, like disrupt from willpower or chance to be critically hit from initiative have been changed. They now scale linearly with the stat value, which means there's no longer any specific thresholds where a stat becomes almost useless, or a debuff becomes extremely strong.
For each 100 stat points they now give the following:
- Strength: 1% parry strikethrough & 0.5% block strikethrough
- Intelligence: 1% disrupt strikethrough & 0.5% block strikethrough
- Ballistic skill: 1% dodge strikethrough & 0.5% block strikethrough
- Willpower: 3% disrupt
- Weapon Skill: 3% parry
- Initiative: 3% dodge & 3% reduced chance to be critically hit
- Toughness: 0.5% block
- Block rating: 3% block
10 Willpower gives 0.3% disrupt etc, you don't have to hit even 100 point marks.
The Problem
Having fixed values works for the rank that these stats have been designed around, e.g. rank 40, but it means they have very little impact for lower ranked characters. Previous combat formulas for these types of stats were typically based on a ratio between the attacker's stats and the defender's stats, which meant that the bonuses provided were impactful at all levels, e.g. rank 10 characters comparing the ratio between 200:200 stats gave the same result as rank 40 characters comparing the ratio of 1000:1000 stats.
The new system means that - for example - a rank 40 player who has soft-capped weapon skill (1050) gets 31.5% base parry chance, while a rank 10 player who has also invested in gear and reached the weapon skill soft-cap (300) only gets a 9% base parry chance which is far less rewarding for maxing out your stats, and is actually much harder to achieve on a lower level character.
The Proposed Solution
To keep the new system feeling impactful at all ranks, I am proposing that the percentage gained per stat scale depending on the stat soft-cap of either attacker or the defender based on their current rank (including bolster rank). Offensive-based stats (strike-through) are based on the rank and soft-cap of the defender as it gets easier/harder to hit depending on who you are attacking, while defensive-based stats (dodge/parry/etc) are based on the rank and soft-cap of the attacker as it gets easier/harder to defend based on who is attacking you. If you are attacking a rank 40 enemy then the scaling is based on a soft-cap of 1050 (which gives far less % per stat point), while if you are attacking a rank 10 enemy then the scaling is based on a soft-cap of 300 (which gives far more % per stat point).
The soft-cap formula for basic stats is: (Rank * 25) + 50. Some example soft-caps:
- Rank 1: (1 * 25) + 50 = 75
- Rank 10: (10 * 25) + 50 = 300
- Rank 20: (20 * 25) + 50 = 550
- Rank 30: (30 * 25) + 50 = 800
- Rank 40: (40 * 25) + 50 = 1050
The bonuses are now expressed in terms of "bonus at soft-cap". Assuming they were balanced around the R40 soft-cap of 1050:
- Strength: 10.50% parry strikethrough & 5.25% block strikethrough
- Intelligence: 10.50% disrupt strikethrough & 5.25% block strikethrough
- Ballistic skill: 10.50% dodge strikethrough & 5.25% block strikethrough
- Willpower: 31.50% disrupt
- Weapon Skill: 31.50% parry
- Initiative: 31.50% dodge & 31.50% reduced chance to be critically hit
- Toughness: 5.25% block
- Block rating: 31.50% block
The final piece of the puzzle is to come up with a formula that works out how much of a % bonus to give based on the soft-cap of the enemy being attacked. This turns out to be pretty simple: you divide the target maximum percentage by the soft-cap of the attacker or defender (depends on the stat), and the answer is how much % to add per stat point. Assuming a target of 10.5% parry strike-through - which in decimal notation is 0.105, the formula would be:
(0.105 / ((Defender’s Rank * 25) + 50)) * Attacker’s Strength = parry strike-through bonus
And for parry, which is 31.5% when soft-capped:
(0.315 / ((Attacker’s Rank * 25) + 50)) * Defender’s Weapon Skill = parry bonus
Note that in both cases, there is a check between one person’s rank and the other person’s stat.
Issues and Other Thoughts
I’m not going to propose it’s perfect, and there are some issues to think about at the extremes. A R40 character with 1050 Strength attacking a R1 enemy will have 147% parry strike-through which isn’t really an issue, however that same R40 character with high defensive stats becomes impossible to hit by low level NPCs. This might not be considered a problem, but something to consider is capping the difference between ranks for the block/disrupt/dodge/parry bonuses to prevent it scaling very high. For example, if there was a cap of 10 ranks difference then a R40 defender vs a R1 attacker would calculate their parry/etc chances based on the defender being R30 instead. Something like that.
Alternatively, the final outcome could be capped at double the max for the soft-cap. So if the chance to defend is 31.5% at soft-cap, then the most the bonus could ever be if being attacked by something low ranked is 63%. Numbers are just used an example and would be for you to determine.
Next, there is a soft-cap and a hard-cap for stats, so perhaps the bonus could be capped at the hard-cap value for the rank? I believe the hard-cap is: Stat * 40 + 25 (the formula on the wiki is nonsense).
Final thing I can think of is that if we are using the soft-cap value of one of the targets, then should stats over that soft-cap be halved? E.g. if you have 300 strength vs something with a soft-cap of 200, should the calculation use 300 strength or 250 strength, as the 100 strength over the cap would be halved.
All things to think about if you decide to implement this, I have no hard preferences though I think being consistent with soft and hard caps would be good.
TL;DR
Please scale the secondary bonuses based on attacker or defender rank to make them feel impactful at all levels rather than just at rank 40.