[crossfire] Player-owner shop proof of concept
Mark Wedel
mwedel at sonic.net
Tue Apr 4 00:26:14 CDT 2006
Nicolas Weeger wrote:
> Also, the price estimation seems quite weird - you set the price to eg
> 2000 silver, and player will pay ~500 platinum :)
> I suspect it's due to the query_cost and such functions using charisma /
> shop specialization / ...
yes.
Presumably, shop specialization could be turned off, or made equal for
everything, fixing that problem.
IIRC, the value of the object is largely its sell value (with various
adjustments), buy price is higher.
I'm also not sure how you deal with multiple items (too lazy right now to look
at the patch). If I have 20 arrows and set the price to 5000 sp, is that 5000
sp for all 20 (250 sp each), or 5000 sp each? You could get odd effects with
that also.
I'm also not sure if it being on the shop floor may set the identified flag -
if for example you set the price to 2000 sp, but that is before it is
identified, then once identified, the price could go up quite a bit. IIRC,
unidentified items only get pennies on the dollar (silvers on the platinum?)
The real fix for all this would be to add an object flag like
'flag_true_cost', which causes the buy/sell code to use the op->value without
modifying for various things, basically like the gem code (but with just a minor
increase/decrease for buy/sell, but a fixed amount, so you couldn't sell
something for the same price you bought it). Perhaps even use a key/value in
the object itself to denote that rate?
this I think also fixes other problems, in that price is also tweaked based on
other attributes of an item - wands are basically pro-rated based on the number
of charged. So if the seller set the price for a wand with 10 charges to 10
platinum, the query_cost would effectively reduce that to 2 platinum since the
wand only has 20% of its potential charges, etc.
I'd think that for this code, when you set the price, the player doing so is
already taking all that into consideration and doesn't want the code further
mucking with the values.
More information about the crossfire
mailing list