All ideas tagged "rub command"

#4780

 · 
vanilla

In variants that have randomized alchemy recipes (rather than fixed, as is the case in vanilla): Randomly generated potions can sometimes be “labeled”, and labeled potions can be read. The label will say one of three things, albeit the text will be garbled like graffiti:

  • The true identity of the potion’s type.
  • A false identity of the potion’s type, chosen randomly, which will be “polymorph” somewhat more frequently than the actual distribution of potions would produce.
  • A true clue towards a randomized alchemy recipe that involves this type of potion, but does not mention this type of potion (i.e. “Mix with speed to make levitation”).

Labeled potions never stack with unlabeled potions, even if they are otherwise identical and would merge into one stack.

Water damage will always remove the label from a potion. Possibly there should be some way to non-damagingly get rid of the label, such as using the #rub command to rub your hands on the potion.

There are a couple possibilities for the internal implementation of the label:

  1. The label is deterministically computed based on the potion’s object ID, and labeled potions do not stack with each other. If the potion gets canceled, alchemized, or polymorphed, the object ID is still the same so the label will be the same, even though it’s now incorrect.
  2. The label is stored using the unused-for-potions “usecount” field, which encodes which of the above three texts is on the label and the object types involved in what the label says. If the potion is canceled, alchemized, or polymorphed, the label still does not change. Labeled potions may stack, but only with another label that happens to convey the same exact information.
  3. The text of the label is simply stored in an oextra field.