[crossfire] RFC: dynamic alchemy

Wim Villerius wim-cf at villerius.nl
Thu May 18 03:34:22 CDT 2006

First of all, apologize for not replying before, I guess you almost
forgot what the proposal was about - so did I. ;-)

A quick summary: Dynamic Alchemy is the art of transferring magical
powers (bonusses) from one object to another. It is not yet clear how
the magical powers travel. There are at least two proposals. 1: mark an
item as receiving object. 2: they flow from low to high.
Due to this unusual direction, items with low magical value cannot be
used to enchant to infinity. All items have an upper limit, above which
they are useless. A dragon steak might raise (in several steps) the fire
resistance from an object to e.g. +30, but not any higher. To make it
+50, better stuff is needed (ancient red dragon's steaks)

Also, it is not defined what 'magical powers' are. In principle, it is
not limited to anything.

The idea is that you can use alchemy without predefined results - and
without fixed ingredients.

Anyone who wants to know more is invited to read the message that opened
the discussion - sent on March 27 2006.

you wrote: Mark Wedel
> 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.
So true. for resist fire+90 one would need more than just ancient red
steaks. Defining a max_resistance in a table (or the arches) would
prevent this can happen. 
In the formula I suggested I included a factor (current_resistance -
max_resistance) which is the upper limit of possible improvement for a
particular source.
Thus if an ancient red dragon's steak is defined to give at
most +50 fire resistance, it will never ever add more fire resistance
using these steaks. For sure, this value of 50 is an arbitrary choice,
balancing issue's should settle the real value.

> 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
> 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.
OK, that's fine too. The main reason to prefer a large table was the
initial work that is needed to change lots of arche files, that I'm
uncommon with them and that in the beginning a lot of things need some
tweaks for balancing purposes - which is easier with a 'huge table'.
Anyway, I would say that it's not up to me to make such a decision.

> 3) Other things that could be added:  hp/sp/grace regen, sustenance.
> 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.
I see no reason why these couldn't be added - as long as the item
remains in balance.
About movement types, I cannot exactly grasp how a platemail could give
the ability to swim, my first guess would be it gives a 'dive' (rather:
sink) ability. Nevertheless, magic is magic, so why not euh?
I like the idea of temporary giving an ability, but what do you do with
a swiming player that looses his abiltiy to swim?
Unless boots of levitation become very rare, nobody will add a flying
ability to their equipment - you can't thrust it. 

> 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.
Or the whole stat-thing should be redesigned to allow stats to grow into
a few hunderd ;-) This requires a lot of work - all items should be
updated. (And I think it's quite a different discussion at all.)
A problem with the approach you suggest is perhaps that stats are stored
as ints (I assume). I have no clue if it is possible to change that

> 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.
Yes, but then first start improving it with other low lvl items. If you
think this is really a problem, then perhaps make a scroll that
increases the magic of an item. This doesn't have to be a prepare item
scroll, just an 'increase magic' scroll.

> 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.
To some lvl of improvement this is fine, but just like some items are
god-given to prevent trade in them (WDSM, cloak of magic resistance),
highly enchanted armour/... should (I think) not be traded for much the
same reasons.

> 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.
Mmm, so rings are a complicating factor? As long as these values are
known, it shouldn't be a big problem, I guess.
I wonder, does this problem arise for some items as well? A shining
dragon scale mail for example is a modified dragon scale mail and I
don't know if it's a different arch or not.
Is it possible to extract properties of genuine (unmodified by anyone)
objects from the item itself (without using the arch-files)? If so, that
is perhaps the way to go.

> One thought on this is that for a baseline, the object can't improve
> the object any more than it grants. <...>
That does make sense. It is fully in line with the way I would like to
threat food items. I think stats are a bit different. It should be
possible to improve a ring with Str+2 with a ring Str+1.

> 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?
Well... that would be very interesting. It depends on how we define
negative resistances. Is this the absense of magical powers, or the
existence of bad power?
In the first case, it is easily fixed by filling the gaps. I doubt if it
makes sense to say that negative resistance is absense of bad magical
power, an item with no modifiers does not have any magical power and it
has no negative anything.
Besides, 'evil magic' does nicely explain why some items are cursed.

To remove bad powers is hard (gamewise). Perhaps we could invent items
that attract bad powers. But maybe it's easier to reuse existing ideas
and say that negative resistances (etc) reduce the upper limit. E.g. if
the max resistance that any object can have is 90, an item with default
cold -30 cannot be enhanted past resist_cold +60 (just like the current
resistance calculation for players works now).

> 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.
Isn't this a little circular? "There are objects with negative
resistances because they are used to remove negative resistances form

I think we should change it to "There are objects with negative
resistances because very powerful achemists where capable to create
power and anti-power from nothing to create good items. The anti-power
went into the thing with negative resistance.
You are not as good as they where, therefore you cannot use their
tricks. But you can transfer anti-power from one object to another."

More information about the crossfire mailing list