Andreas Kirschbaum wrote: > In server/skills.c is a suspicious calculation: > > throw_ob->stats.wc = 25-dex_bonus[op->stats.Dex?dex_bonus[op->stats.Dex]:0]-thaco_bonus[eff_str]-skill->level; > > Essentially it calculates: > > dex_bonus[dex_bonus[Dex]] > > This can't be correct because > > 1. dex_bonus[] contains some negative values so it may access > dex_bonus[-1] > > 2. dex_bonus[1] == -3 so "Dex ? dex_bonus[Dex] : 0" is not a > sensible (monotonic increasing) function > > 3. dex_bonus maps "Dex" into "Wc" so "dex_bonus[Wc]" is incorrect > > > A possible solution could be > > throw_ob->stats.wc = 25-dex_bonus[op->stats.Dex]-thaco_bonus[eff_str]-skill->level; > > Is this the intended behavior? I've made the change you suggested - I think that is the proper behaviour - I'm not sure what the intention of the original code was. Often times, there will be syntax like op->stats.dex?op->stats.dex:1, but the above mentioned code wasn't doing that. And the 0 values for are the stat bonus arrays is properly intialized, so no harm using a 0 stat of dex. _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel