On Sat, 25 Oct 2003, Mark Wedel wrote: > > Bargaining skill gives you a bonus to your charisma. > > The bonus is (player level + 2) / 3. So at low levels, it doesn't give you > much a bonus. > > Realistic, the bonus should be related to the skill level, and not player > level. But to do that, some way to get exp in bargaining is needed. > IMO, one should only get optimal prices if one has cha=30 AND maxlevel in bargaining. Otherwise, the charisma stat is more irrelevant than need be. now: server/shop.c line 160: if (find_skill(who,SK_BARGAINING)) { charisma += (who->level+2)/3; ... /* Diff is now a float between 0 and 1 */ diff=(cha_bonus[charisma]-1)/(1+cha_bonus[charisma]); /* we need to multiply these by 4.0 to keep buy costs roughly the same * (otherwise, you could buy a potion of charisma for around 400 pp. * Arguable, the costs in the archetypes should be updated to better * reflect values (potion charisma list for 1250 gold) */ if(flag==F_BUY) val=(4.0*(float)val*(1.0+diff)); else if (flag==F_SELL) val=(4.0*(float)val*(1.0-diff)); else val *=4; } Looking at cha_bonus[] i see that diff actually only spans 0.2 - ~0.82. Thus one buys and sells for +/- 20-82%. My suggestion: 1. No bonus on charisma for bargaining. 2. Calculate a bonus for bargaining: 2a. additive: diff += .1 - .2 * SQRT((level(bargaining)+5)/(maxlevel+5)) Thus diff would be between 0.1 and 0.92. 2b. multiplicative: diff2 = .1 - .2 * SQRT((level(bargaining)+5)/(maxlevel+5)) ... if(flag==F_BUY) val=(4.0*(float)val*(1.0+diff)*(1.0+diff2)); else if (flag==F_SELL) val=(4.0*(float)val*(1.0-diff)*(1.0-diff2)); The SQRT would help to generate diminishing returns for higher levels. The actual formula / weighting between cha and bargaining has to be tuned of course. 3. Experience in bargaining: If we actually buy/sell an item, we calculate the actual price for the player and the price for a dummy-player with cha=0 and no bargaining skill. Then exp += abs(price_for_player-price_for_dummy)*somefactor. Thus one would not get exp. for gems. I suggest to set the ratio for overall level to zero. With the 64bit exp. high level players could waste bizzarre amounts of money to level up in bargaining. :) And lazy players (too lazy to bother with +cha equipment) would waste money no matter what level they are. I could start coding right away, but i'd rather wait for some comments/discussion. Bernd Edler _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel