Reduce yields for multi-step alchemy recipes
With potions of healing becoming much more common, the multi-step alchemy recipe from potion of healing to potion of extra healing to potion of full healing is likely to become even more overpowered (and it was somewhat unbalancing even beforehand). This change restricts alchemy involving diluted dipped potions to alchemize only two potions at a time. This means that potions of healing can stil be alchemized into potions of extra healing as efficiently as before this commit, and so can potions of extra healing into potions of full healing; but the multi-step recipe is now limited by requiring a lot of potions of gain level or gain energy. As such, this is intended to make potions of healing into an item primarily useful in the early game, and discourage hoarding them for the late game.
This commit is contained in:
@@ -1300,6 +1300,8 @@ starting inventory: magic markers are more likely (guaranteed for
|
||||
Wizards), but have fewer charges
|
||||
early dungeon (pre-Sokoban) generates extra useful survivability items
|
||||
potion of healing is much more common, and has a unique price
|
||||
alchemy may affect only a portion of the dipped potions if a large
|
||||
stack is dipped (especially if that stack is diluted)
|
||||
|
||||
|
||||
Fixes to 3.7.0-x General Problems Exposed Via git Repository
|
||||
|
||||
15
src/potion.c
15
src/potion.c
@@ -2438,11 +2438,18 @@ potion_dip(struct obj *obj, struct obj *potion)
|
||||
magic = (mixture != STRANGE_OBJECT) ? objects[mixture].oc_magic
|
||||
: (objects[obj->otyp].oc_magic || objects[potion->otyp].oc_magic);
|
||||
Strcpy(qbuf, "The"); /* assume full stack */
|
||||
if (amt > (magic ? 3 : 7)) {
|
||||
/* trying to dip multiple potions will usually affect only a
|
||||
if (amt > (obj->odiluted ? 2 : magic ? 3 : 7)) {
|
||||
/* Trying to dip multiple potions will usually affect only a
|
||||
subset; pick an amount between 3 and 8, inclusive, for magic
|
||||
potion result, between 7 and N for non-magic */
|
||||
if (magic)
|
||||
potion result, between 7 and N for non-magic. If diluted
|
||||
potions are being dipped, only two are affected; this is a
|
||||
balance fix to prevent cheap mass alchemy of the (very
|
||||
common) potion of healing into the (very valuable) potion of
|
||||
full healing, whilst permitting both healing->extra healing
|
||||
and extra healing->full healing. */
|
||||
if (obj->odiluted)
|
||||
amt = 2;
|
||||
else if (magic)
|
||||
amt = rnd(min(amt, 8) - (3 - 1)) + (3 - 1); /* 1..6 + 2 */
|
||||
else
|
||||
amt = rnd(amt - (7 - 1)) + (7 - 1); /* 1..(N-6) + 6 */
|
||||
|
||||
Reference in New Issue
Block a user