[crossfire] RFC: dynamic alchemy
Mark Wedel
mwedel at sonic.net
Tue Mar 28 00:43:29 CST 2006
Various thoughts:
1) The idea is interesting. However, like most such proposals, balance has to
be maintained - if I can take a couple ancient red dragon steaks and get mithril
chain resist fire +90, the case can be made that that is a bit too power.
2) You mention where to store information about alchemical improvements, and
state your preference for a table instead of the arches. I'd say arches are the
right place - a large table is just unwieldy, and unlikely to get updated (I can
see the relatively common case of someone copying one arch to another, changing
the name, and making some other changes. This won't match in the table, and
thus the table is out of date. Yet if they copy the archetype, they are likely
to see alchemy_... fields.)
The other point is that if anything, the more recent push has been to get rid
of files in the lib directory and put that into archetypes. I'm specifically
thinking of the treasurelists here - no longer do we need a monolithic file for
all the treasure lists, these can be in the arch directory tree.
3) Other things that could be added: hp/sp/grace regen (unless you count those
as stats). sustenance (slower digestion). Bonus movement types (flying,
swimming, etc). This last one is trickier because it is really an all or
nothing type of thing (either the item lets you fly, or it doesn't). An
unrelated but perhaps interesting improvement would by duration items. Eg, this
object will let you fly for up to 1000 ticks. Then, for each tick it doesn't
fly, it recharges 1 tick of duration. In that model, partial movement types
make sense - this object lets you fly, but right now, only for 20 ticks before
it needs to rest - further improvements increase the duration. Doing this
wouldn't be that far off from the rod code.
4) In terms of stats - they are sort of like movement type - either you add a
stat point or don't. However, the key-value lists could be used to hold
fractional improvements. So each improvement gets you say 0.1 of a point - you
could in fact use similar logic to your resistance improvement idea. Thus, it
could a bunch of objects to improve a stat.
5) Direction of resistance - if prepare weapon scroll is used, as said, that
solves the problem. However, as one of the potential bad effects, maybe it does
reverse. One problem with 'low to high' is that if you are starting with
something relatively mundane you want to improve, that is unpredictable. Lets
suppose for some reason you just want to start with a simple +1 sword. That
could be low.
However, I think that given crossfire is multiplayer, binding improved objects
to players isn't a good idea. I should be able to create some cool stuff for a
friend - that will help things IMO than everyone having their own stash. It
also means that not everyone has to be an alchemists - a few powerful player
alchemists in the town could possibly make pretty good business improvement
objects for other players. However, one could perhaps change the enchant item
scrolls - it just marks the object for improvement, but doesn't tie it to the
player.
6) I think even some more dynamic aspects are needed. For example, you can't
really enumerate the normal rings - rings have their resistances added in the
treasure code - there is no way to say a ring of str +1 is this archetype. So
you need some way to say 'if this is a ring, examine what properties it has and
choose one for dynamic alchemy'. Perhaps some for a large majority of food
items. One thought on this is that for a baseline, the object can't improve the
object any more than it grants.
For example, you have a ring str+1 resist fire +18
You toss it in the pot to transfer to your plate armor. If your plate armor
already has str +1 or resist fire +18, this ring can't help out at all.
However, if the plate armor has less than that, this ring can help bring it to
that point.
This does get interesting if you have a ring like 'resist fire +20, resist
cold -20'. Can resistances (or other things) get drained away? Does the code
try to optimize for improvements? That also raises the other interesting point:
Suppose I have plate armor resist cold -20. Can I transfer away that resist
cold -20 to just some other object, or is the only way to get rid of it is via
resist cold + objects?
I bring that point up because that could be used to explain why there are
items with negative resistances - they were used to get rid of the undesirable
aspects of an otherwise good object.
More information about the crossfire
mailing list