![]() |
#1 |
Prophet
Join Date: Aug 2009
Location: Madison, Wisconsin, US
Posts: 3,025
![]() |
blows per turn
I've always felt that the blows per round calculation felt a little shoddy and after reading this 6 month old thread: http://angband.oook.cz/forum/showthread.php?t=1691 I've become convinced that my original feeling is correct.
I was thinking of trying my hand at a simplified calculation, but before I start, I'd like to know if any significant progress has already been accomplished. If this is a settled issue or not. (I'm guessing it isn't) The basic idea is that a new calculation would have to satisfy the following conditions: It is a function of STR, DEX, weapon weight, character class, and possibly character level It is simpler than the current calculation It is compatible with either an integral or a fractional blows per round system It will not require any weapon rebalancing any other conditions I'm missing? |
![]() |
![]() |
![]() |
#2 |
Prophet
Join Date: Aug 2009
Location: Madison, Wisconsin, US
Posts: 3,025
![]() |
I have played around with a couple formulas for blows per turn. Right now I'm leaning towards something that looks like:
1+(str*dex)/(a*weight^2 + b*weight + c) + clevel*class_factor STR and DEX would be numbers from 3-38 with 18/200 corresponding to the maximum value of 38. I'm trying to completely avoid having table values and to minimize the number of arbitrary constants. Although, I may have to go to higher order polynomials, either in the numerator or the denominator. This first ratio term is designed to go between 0 and 2. The constants a,b,c will have to be empirically determined, And there may need to be some fudging by forcing maximums and minimums on each term. ("may" here means, "definitely") The class_factor would look like 1/15 for warriors, 1/20 for rangers, rogues, paladins and 1/30 for priests and mages. This term be capped at 3,2 and 1 respectively. In the current integral blow system, warriors would get additional blows at clevel 15, 30 and 45 regardless of weapon weight. paladins, rogues and rangers would get blows at 20 and 40, mages and priests at 30. Basic guidelines for the constants is that STR 17, DEX 17 should barely get an extra blow with the lightest weapons at game start. and STR 38, DEX 38 should barely get maximum blows with the heaviest weapons. Some minor tweaks will be needed to change between an integral and a fractional blow system, but it would follow much easier with this formula than with the current implementation. |
![]() |
![]() |
![]() |
#3 |
Swordsman
Join Date: Jun 2008
Location: Portland, OR, USA
Posts: 412
![]() |
I seem to recall someone getting somewhat close to emulating the current table system with a formula, but I don't remember which thread I read that in, nor is simply emulating the current system a good goal.
Under a system such as you propose, everyone would get 1 blow to start, and optionally up to 2 extra blows depending on str, dex, and weapon weight. Warriors would gain an extra 3 blows by leveling, hybrids would gain 2, and casters 1, leaving the total number of max blows per class unchanged. I think I'm in favor of the general premise, by moving some of the blows over to character level you de-emphasize the need to scum for stat potions, without completely removing the importance of stats for melee attacks. A similar approach is being considered for caster SP. This would limit the number of starting blows to 3, which would be worse than what is currently attainable by some warriors builds, but they'd get the lost blow back at level 15. This could possibly also make it more difficult for low level warrior winners, since they won't get their last blow until 45, but maybe low level warrior winners wouldn't normally have the stats for all 6 blows anyway? |
![]() |
![]() |
![]() |
#4 | |||
Prophet
Join Date: Aug 2009
Location: Madison, Wisconsin, US
Posts: 3,025
![]() |
Quote:
Quote:
Quote:
|
|||
![]() |
![]() |
![]() |
#5 |
Prophet
Join Date: Aug 2009
Location: Madison, Wisconsin, US
Posts: 3,025
![]() |
So I came up with some numbers that work fairly well. These can be tweaked even more.
blowsperturn = STR*DEX/(175 + MINIMUM(200, 2*weight^2) + 10*weight) STR and DEX go from 3-38 with 18/200 equaling 38. weight is capped at 3 on the lower end. A cap at the higher end is also possible, but not necessary. At start, 17 STR and 17 DEX will get two blows per round with anything 5 pounds or lighter. 3 blows per round is attainable at start with anything 3 pounds or lighter, but not really if you want to invest significantly in INT or WIS. To get max blows with a 30 pounds weapon you will need to be near maximum in both STR and DEX. The heaviest weapon that has attainable max blows is 34 lbs. I ran through some intermediate values and they seem pretty good. I don't have a convenient graphical way to present the results though. Perhaps contour plots for individual weapon weights? |
![]() |
![]() |
![]() |
#6 |
Prophet
Join Date: Mar 2008
Posts: 2,755
![]() |
It probably does not matter, but in these formulas you should assume that 18/200 gets boosted from a value of 38 to a value of 40 for the bonus of maxing it out.
My view is instead of making things multiplicative, to have several different formulas and take the min value. So you might be str limited, dex limited, or class/clvl limited. I don't really see how to decide which approach is better. |
![]() |
![]() |
![]() |
#7 | |
Swordsman
Join Date: Sep 2008
Posts: 289
![]() |
Quote:
I suspect the best route for this would be to build several linear functions atop one another (summing), such that the sum of all of them, maxxed, would provide the optimal blows/round with the heaviest weapon. This would then be easily ported into a more granular system like fractional blows, as it would already be linear in nature, and hence potentially more fair... I'll try to whip something up here that demonstrates what I mean. |
|
![]() |
![]() |
![]() |
#8 |
Swordsman
Join Date: Sep 2008
Posts: 289
![]() |
![]()
OK - assumptions:
STR and DEX range 1-40. Weapon Weight [WW] ranges 1-40. Character Level [CL] ranges 1-50. Everyone gets 1 blow no matter what. Then add to it the result of... Formula: Fighter (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL/3 Paladins and Rogues (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL*4/15 Rangers and Priests (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL*2/5 Mages (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL*2/15 I wanted to make a very simple line y=mx, so... Basically I averaged STR and DEX, then divided by the weight of the weapon. I then add .3 to this (due to the nature of the LOG function) Taking the LOG will linearize a wide range of possible values (1-40). This is the slope of my line. I then multiplied by an appropriate modifier based on CL. Round the result up or down to the nearest whole integer, and you have the number of bonus blows that round. Naturally, at higher stats and CL it becomes necessary to enforce a hard cap on the max number of bonus blows based on class. (Nobody should get 17 bonus blows/round, for example) I am not claiming this is a 1:1 replacement of the current system. It weights things a bit more heavily towards CL, especially in the early game. For example, a CL1 fighter with 18/50 STR and 18/30 DEX will not get a bonus blow until CL3, even with a whip (WW=3). This could be easily remedied by reducing the weight of the lightest weapons somewhat. I also recognize that this means a fighter with those stats will be getting 6 blows/round with a whip by CL12. However, I think that's OK, as you could also be getting 4 blows with WW=6, 3 with WW=18, and 2 with WW=32 It's not perfect, but I think it might be close. Furthermore, eliminate the rounding, and it is an easy switch to a fractional system. if someone can tell me how to share it, I've made a spreadsheet with dropdowns for STR DEX CL and WW, which will automatically calculate the blows/round for each class under this method. I'll happily post it here or email it to anyone who'd like to play with it. Cheers |
![]() |
![]() |
![]() |
#9 |
Knight
Join Date: Jan 2009
Posts: 910
![]() |
You almost certainly don't want to treat STR and DEX symmetrically. For example, when wielding a dagger, you shouldn't get more blows for having a higher strength, as you are dexterity limited with that weapon. In general, each weapon would benefit from extra strength only up to a certain amount of strength which depends on the weapon's weight. I think you want a formula that limits blows based on dex (in a weight independent manner?) and also limits blows based on strength in a very weight dependent manner. For example, you could have a function to deal with the strength part that lies between 0 and 1 and multiplies the dex part of the function. For example:
blows = 1 + (dex_part) * (strength_and_weight_part) strength_and_weight_part = MIN(1, strength / weight * k) dex_part = ? ------ Another point is that you might want to use this opportunity to redo weapon weights in a sensible manner, since the people who put in the original values knew nothing about real weapons weights (perhaps they used values from D&D?). It is not that hard to find real weights based on old collections online, and I can provide sensible values for most weapons if people want them. eg Longsword = 3lb, Shortsword = 1.5lb etc. |
![]() |
![]() |
![]() |
#10 | |
Prophet
Join Date: Aug 2009
Location: Madison, Wisconsin, US
Posts: 3,025
![]() |
Quote:
The main problem I have with this system is that it, by necessity, creates arbitrary absolute break points in DEX. These break points would go away with a fractional blows system, but there's no way to get around it in a integral blows system. If you want a formula flexible for both, you need to make sure one of your limiting factors is not a single variable. The second thing I was looking for was simplicity, trying to lose the arbitrary values from the strength, dexterity and bpt tables. I originally looked at functions that were ratios of STR/(WW - DEX) with appropriate numerical factors eliminated. This did not yield any suitable functions. The next set of functions I looked at were very similar to Hariolor's with STR+DEX in the numerator and a linear function of WW in the denominator. I switched to the product of STR and DEX and a quadratic in the denominator because I liked the idea of BPT being maximized when STR and DEX are roughly equal. In Hariolor's system, DEX becomes a useless stat to put points into until it's inefficient to put more into STR. I'm not wedded to this idea. However, I think *something* simpler, without arbitrary break points in DEX, and adaptable to a fractional system is important. Lastly, if there is a desire to reweigh the weapons, this will throw all of this off. And an entirely new set of functions will be necessary, perhaps even more contrived than before. Furthermore, it might require a reevaluation of the encumberance calculation. I think the current weights of weapons were not meant to be realistic, but rather were chosen for gameplay issues. After all, the same size long sword for a kobold and a dunadan is laughable. It might be better to not think of lbs as Imperial (or US) pounds but rather as MIddle-Earth pounds, an entirely different unit of measure. |
|
![]() |
![]() |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
stochastic energy and fractional blows | tigen | Vanilla | 22 | September 13, 2009 21:47 |
Feature request: display char creation blows as if wielding whip | Donald Jonker | Vanilla | 14 | March 3, 2009 22:47 |
weapons: multiple blows versus multiple slays | vorondil | Vanilla | 24 | December 24, 2008 19:13 |
Max Blows | Conker | AAR | 2 | November 9, 2007 04:40 |
AAR - Don't Forget to Turn Out the Light | ShinX3 | AAR | 3 | November 6, 2007 08:09 |