[crossfire] RFC: dynamic alchemy

Raphaël Quinet quinet at gamers.org
Mon May 22 13:50:14 CDT 2006

On Thu, 18 May 2006 10:34:25 +0200, Wim Villerius <wim-cf at villerius.nl> wrote:
> On Tue, 2006-04-11 at 21:21 +0100, Anton Oussik wrote: 
> > To those unfamiliar with it, shadow alchemy generally involves finding
> > hash collisions for the recipes, fooling the alchemy code into
> > thinking you are doing something else entirely. Since the hashing
> > function is (on purpose) very weak, there is no easy way of making
> > shadow alchemy impossible short of entirely changing the way
> > traditional alchemy works. It is currently hard enough to discourage
> > most people though (thanks to some safeguards in the code). For most
> > purposes, however, it currently does what dynamic alchemy will do, but
> > without the much needed game balancing, and very scarce documentation.
> AFAIK shadow alchemy is indeed in desperate need of game balancing and
> since it is by no means documentated (except that it's written 'in the
> code') it is almost never practised (anymore). At least on MF, I know no
> active players that do anything with it. (Are there any active players
> anyway?)
> Perhaps I could even put it this way: because shadow alchemy is
> undocumented (and almost unknown) there is a request for dynamic
> alchemy!

Sorry for joining this discussion a bit late, but I only restarted plauing
Crossfire a few weeks ago.  In my opinion, the shadow alchemy should be
removed from the game because it will soon be too easy to abuse it (more
on that at the end of this message).  I am not sure that the dynamic
alchemy as proposed here is the best alternative, but at least it is better
than the abuses that are allowed by the shadow alchemy tricks.  Also,
shadow alchemy is player knowledge and not character knowledge: this gives
an unfair advantage to experienced players regardless of their character

One of the reasons for the RFC on dynamic alchemy was that alchemy is
not used that much in the game.  Before reading that RFC (while being
mostly off the net) I started working on a partial solution to that
problem: I have started creating a set of maps for an "alchemy quest".

The basic idea of these quests is that you can apply for being thaught
some alchemy tricks by some some alchemists (and smiths, bowyers).  They
ask you to perform some specific tasks before they reveal more of their
secrets to you.  This is a bit similar to the quest for becoming the
prince of Scorn and the rewards are some formulas, like in the fire temple
quest (by the way, I would like to put a lock code on the potion of cold
resistance, like there is one for the fire potion that can be found in the
fire temple).  Some of the tasks that the alchemists assign to their pupils
involve the creation of specific items that can only be created by alchemy.
For example, you will only get the next task if you sacrifice a Frostbrand
or Firebrand of Slay Dragon.  It will probably still take a few weeks (or
months?) before I am ready with these maps and offer them for testing, but
I am hoping that adding some quests related to alchemy could encourage more
players to develop their alchemy skills.

One of the things that hinder the usage of alchemy in the game is that the
formulas are *much* too difficult to find in dungeons and in shops.  As a
test, I created a new character and I decided to collect all readable items
that I would find in the dungeons (bestiaries, books on religion and of
course alchemy) and to buy any formula that I could find in a shop.  After
a few weeks, I had collected a few hundred books on religions and on the
various monsters and items, but only 53 unique formulas (I got rid of the
multiple copies for the "water of the wise").  As a comparison, I had also
collected 4416 scrolls of identify (various levels) during that time.  More
than four thousand.  Another comparison: before finding the formula for the
Ring of Beguilement, I had already found 15 of them in the dungeons.  And
before finding the formula for the Ring of Mithrandir, I had 4 of them.  It
is not surprising that nobody uses alchemy if it is so hard to find the
formula for any useful item.  Not to mention that having the formula is a
prerequisite, but only a small part of the solution: the ingredients are
usually hard to find and the difficulty for creating the most useful items
is such that there is a very high probability of failure.  I had to slay a
very large number of dragons and many Firebrands/Frostbrands before I was
able to create a (non cursed) weapon of Slay Dragon.

My suggestion would be to increase (by a large amount) the probability of
finding formulas in treasure lists.  On the other hand, there could be
less books on religions.  In my opinion, the random books on religions
could even be removed from the treasure lists: the knowledge of gods is
mostly useful for low-level characters.  After having gained a few levels,
it is likely that the player would have already picked a god and is
unlikely to change.  For that reason, it would be more useful to have the
books on religions as part of some maps near Scorn or Navar so that
beginners could find them easily and decide which god is best for them
instead of having to pick one god early based on incomplete information or
on information available from the web site but not within the game.  If
these religion books were removed and replaced by a larger number of
alchemy books, then maybe alchemy would become more attractive.

Last but not least, I mentioned that abusing shadow alchemy would soon
become too easy...  The reason is that while playing, I was annoyed by the
errors in some maps (broken exits or errors in the lock codes for doors
or altars) and I also wanted to improve the alchemy checking code that I
wrote a long time ago ("crossfire -m9").  So I decided to work on something
that I had in mind for ages but never found the time/motivation to write: a
script that goes through all maps in the game, checks which ones are not
reachable, checks for any broken or blocked exits, collects all archetypes
and all named items available on all maps, checks the lock codes or objects
needed by altars, and so on...  This script is about 1000 lines of Perl code
and I hope that it will be ready in a few days.  It takes around 5 minutes
to perform all checks on the bigworld maps.  I think that it would be a
useful complement to the unit tests that have been added recently: this
script does more or less the same for all maps.  Anyway, one of the outputs
of that script is a complete list of all items that can be found in the game
(including items with a title or flesh items) sorted by number of occurences
in the maps.  Once this full list of all items is available, it is not very
difficult to perform a "brute force attack" on the alchemy hashes.  This
would be easy to do because the large but finite list of all named items
that can be picked up in the game can now be generated easily.  And I am
sure that once I publish my map checking script, it will not take long until
someone does exactly that and publishes the full list of hash collisions for
the alchemy code.  Then the problems of the shadow alchemy code will become
even more apparent.


P.S.: Did you know that there are 5931 random_wealth objects in 405 maps
      and 3833 random_treasure in 309 maps?  Or that there are only two maps
      in which one can find Ancient dragons (and the corresponding dragon
      steaks required for entering the dragon training levels)?

More information about the crossfire mailing list