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