I think V combat is fine if you just use a decent blows function. Blows = min {f(str, weight) , g(dex)} should be the format IMO. 3.1+ took the worst parts of the 3.0 blows calculation and then emphasized them some more. Ugh.
It's a shame I haven't released a playable version of "What Eddie Plays", but I felt it necessary to play a game through first clearing levels, and tweak it for the masses. A certain recent event led to playing while angry and YASD. It may be a while.
Here's the blows code I use.
It's a shame I haven't released a playable version of "What Eddie Plays", but I felt it necessary to play a game through first clearing levels, and tweak it for the masses. A certain recent event led to playing while angry and YASD. It may be a while.
Here's the blows code I use.
Code:
#define MAX_TYPICAL_BLOWS 5
double blows;
double str_blows;
int weight;
u32b f1, f2, f3;
/* stat_ind of 0 corresponds to real value of 3 */
str += 3;
dex += 3;
/*
* We could subtract off current weapon str and dex bonuses, then
* add bonusus from o_ptr, but for now o_ptr is guaranteed to
* be the wielded item in calc_bonuses(...)
*/
/*
printf("str %d, dex %d", str, dex);
*/
/* give full benefits to 18/200 stats */
if (str > 37)
str = 40;
if (dex > 37)
dex = 40;
weight = o_ptr->weight;
/* baseline no weight penalty with dagger */
weight -= 12;
if (weight < 0)
weight = 0;
blows = 1.0 + ((MAX_TYPICAL_BLOWS - 1.0) * dex / 40.0);
str_blows = (3.75 + (str * str / 40.0))/(3.0 + efg_sqrt(weight/10.0));
if (str_blows < blows)
blows = str_blows;
/* adjust 20% if not a mixed caster */
if (cp_ptr->max_attacks > MAX_TYPICAL_BLOWS)
blows = 1.2 * blows;
else if (cp_ptr->flags & CF_ZERO_FAIL)
blows = 0.8 * blows;
object_flags(o_ptr, &f1, &f2, &f3);
if (f1 & TR1_BLOWS)
blows += o_ptr->pval;
Comment