[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