Gozag shouldn't offer useless potions


Although the central place for this kind of discussion is on the CDO wiki, some may find it helpful to discuss potential requests and suggestions here first.

Dis Charger

Posts: 2011

Joined: Sunday, 18th December 2011, 13:31

Post Sunday, 16th July 2017, 10:56

Gozag shouldn't offer useless potions

Some days ago I was playing a Mu^Gozag and at certain point among the potions choices I had something including berserk rage.
I wasn't sure 100% if would have berserked, but I said, "why not", because the other effects included in that bundle were better than the other offers and zerk would have been a very very good thing.
To my (un)surprise, I did not zerk.

The problem is, this thing is not documented anywhere, as some god powers can bypass racial restrictions while others not, and some are so convoluted (like potion petitioning itself) that can bypass them only partially and learning by trying while using a semi-panic button isn't a very good design.

As far I cant tell, the cases where gozag potions don't work are:
* Zerk for undead|Fo (I refused to check if Vp blodless can zerk with Gozag or to updated myself in what is the situation with Vp gimmicks in trunk)
* Haste for Fo

Just to enjoy some more confusion in already over convoluted power, Heal wounds on VS does work.

So my humble proposal is either:

* remove from potions petitioning useless potions
* a much broader solution - which probably should be addressed in a specific topic: let all the gods' powers bypass racial restrictions, resolving this messy situation with all the problematic powers.
The biggest difference would be probably a huge boom for undead|Fo^Trog but I think this buff is totally worthy in order to have a much clearer and easily understandable design.
screw it I hate this character I'm gonna go melee Gastronok

For this message the author nago has received thanks: 10
Airwolf, amaril, duvessa, Fingolfin, Gigaslurp, Lavandula, Rast, Reptisaurus, VeryAngryFelid, Yknaar
User avatar

Halls Hopper

Posts: 66

Joined: Friday, 2nd September 2016, 02:00

Post Sunday, 16th July 2017, 20:07

Re: Gozag shouldn't offer useless potions

Potion petition itself requires 400$ to activate, but individual potion sets may go as high as 800$. It may generate potion sets player can't afford, and they are given as options. I think it can even generate three expensive sets and lock the game dead.
Spoiler: show
  Code:
bool gozag_potion_petition()
{
    CrawlVector *pots[GOZAG_MAX_POTIONS];
    int prices[GOZAG_MAX_POTIONS];

    item_def dummy;
    dummy.base_type = OBJ_POTIONS;
    dummy.quantity = 1;

    if (!you.props.exists(make_stringf(GOZAG_POTIONS_KEY, 0)))
    {
        bool affordable_potions = false;
        while (!affordable_potions)
        {
            for (int i = 0; i < GOZAG_MAX_POTIONS; i++)
            {
                prices[i] = 0;
                int multiplier = random_range(20, 30); // arbitrary

                if (!you.attribute[ATTR_GOZAG_FIRST_POTION])
                    multiplier = 0;

                string key = make_stringf(GOZAG_POTIONS_KEY, i);
                you.props.erase(key);
                you.props[key].new_vector(SV_INT, SFLAG_CONST_TYPE);
                pots[i] = &you.props[key].get_vector();

                ADD_POTIONS(*pots[i], _gozag_potion_list);
                if (coinflip())
                    ADD_POTIONS(*pots[i], _gozag_potion_list);

                for (const CrawlStoreValue& store : *pots[i])
                {
                    dummy.sub_type = store.get_int();
                    prices[i] += item_value(dummy, true);
                    dprf("%d", item_value(dummy, true));
                }
                dprf("pre: %d", prices[i]);
                prices[i] *= multiplier;
                dprf("mid: %d", prices[i]);
                prices[i] /= 10;
                dprf("post: %d", prices[i]);
                key = make_stringf(GOZAG_PRICE_KEY, i);
                you.props[key].get_int() = prices[i];

                if (prices[i] <= gozag_potion_price())
                    affordable_potions = true;
            }
        }
    }
    else
    {
        for (int i = 0; i < GOZAG_MAX_POTIONS; i++)
        {
            string key = make_stringf(GOZAG_POTIONS_KEY, i);
            pots[i] = &you.props[key].get_vector();
            key = make_stringf(GOZAG_PRICE_KEY, i);
            prices[i] = you.props[key].get_int();
        }
    }

    int keyin = 0;

    while (true)
    {
        if (crawl_state.seen_hups)
            return false;

        clear_messages();
        for (int i = 0; i < GOZAG_MAX_POTIONS; i++)
        {
            string line = make_stringf("  [%c] - %d gold - ", i + 'a',
                                       prices[i]);
            vector<string> pot_names;
            for (const CrawlStoreValue& store : *pots[i])
                pot_names.emplace_back(potion_type_name(store.get_int()));
            line += comma_separated_line(pot_names.begin(), pot_names.end());
            mpr_nojoin(MSGCH_PLAIN, line);
        }
        mprf(MSGCH_PROMPT, "Purchase which effect?");
        keyin = toalower(get_ch()) - 'a';
        if (keyin < 0 || keyin > GOZAG_MAX_POTIONS - 1)
            continue;

        if (you.gold < prices[keyin])
        {
            mpr("You don't have enough gold for that!");
            more();
            continue;
        }

        break;
    }

    ASSERT(you.gold >= prices[keyin]);
    you.del_gold(prices[keyin]);
    you.attribute[ATTR_GOZAG_GOLD_USED] += prices[keyin];

    for (auto pot : *pots[keyin])
        potionlike_effect(static_cast<potion_type>(pot.get_int()), 40);

    if (!you.attribute[ATTR_GOZAG_FIRST_POTION])
        you.attribute[ATTR_GOZAG_FIRST_POTION] = 1;

    for (int i = 0; i < GOZAG_MAX_POTIONS; i++)
    {
        string key = make_stringf(GOZAG_POTIONS_KEY, i);
        you.props.erase(key);
        key = make_stringf(GOZAG_PRICE_KEY, i);
        you.props.erase(key);
    }

    return true;
}


Also, what does "useless" even mean? Is potion set with berserk useful for DE caster? Is heal wounds useful for character with full health?

duvessa wrote:I would go the other way: don't let any gods' powers bypass racial restrictions. No potion petition for Mu, no Trog's Hand regeneration for DD.

And definitely no heal-on-kill from Makhleb.
Sequell says that nobody have beaten the game as DD without divine healing since removal of yellow wands. I'm not sure if it's outright impossible, probably just blatantly grindy, defined by luck and plagued by backtracking.
!lg * sp=DD god=ash|chei|dith|fedhas|hepliaklqana|kikubaaqudgha|nemelex|oka|qazlal|uskayaw|xom|yredelemnul|veh|sif|wu|zin|"" won 0.19|0.20|0.21
Last edited by Lavandula on Sunday, 16th July 2017, 20:31, edited 1 time in total.

Dis Charger

Posts: 2011

Joined: Sunday, 18th December 2011, 13:31

Post Sunday, 16th July 2017, 22:06

Re: Gozag shouldn't offer useless potions

duvessa wrote:
nago wrote:* a much broader solution - which probably should be addressed in a specific topic: let all the gods' powers bypass racial restrictions, resolving this messy situation with all the problematic powers.
I would go the other way: don't let any gods' powers bypass racial restrictions. No potion petition for Mu, no Trog's Hand regeneration for DD.


I don't think it would be the right step, as it would make certain gods much less attractive for certain races (e.g. gozag for mummy, ely for VS), effectively reducing the sensible choices for the player.

The opposite solution, while being a buff for some combo, would be more interesting, gameplay-wise.

Lavandula wrote:Also, what does "useless" even mean? Is potion set with berserk useful for DE caster? Is heal wounds useful for character with full health?


Under certain circumstances !zerk for a DE caster would be useful.

But the problem I pointed out is another: certain potion bundles may contain potion(s) that don't have any effect ever for that race, such the examples I already made: haste for a Fo (they *can't* haste) or zerk for a undead (they *can't* zerk). Thus, useless: they give no real effect.

This is a problem especially because the player *can't* know that beforehand unless knowing already.
Secondarily, it's a minor balance problem because that 100% useless potion is taking the place of a potentially useful potion, thus making that bundle less attractive than the other two.
screw it I hate this character I'm gonna go melee Gastronok

For this message the author nago has received thanks:
Yknaar

Ziggurat Zagger

Posts: 3188

Joined: Friday, 8th May 2015, 17:51

Post Monday, 17th July 2017, 04:32

Re: Gozag shouldn't offer useless potions

Removing gozag's potions from mummies will increase choices, it's like Makh for DD IMHO, too superior to other gods
Underestimated: cleaving, Deep Elf, Formicid, Vehumet, EV
Overestimated: AC, GDS
Twin account of Sandman25

Dis Charger

Posts: 2011

Joined: Sunday, 18th December 2011, 13:31

Post Monday, 17th July 2017, 07:23

Re: Gozag shouldn't offer useless potions

VeryAngryFelid wrote:Removing gozag's potions from mummies will increase choices, it's like Makh for DD IMHO, too superior to other gods


This is certainly true if you find both altars at same time.

But differently from DD, a Kiku|Oka|Trog|Nemelex|Whateverdecentgod D:2 is still a very good choice to Mu in most cases and it is bad to wait for a Gozag altar, because is not like a cat can reliably get a Mu to Lair godless.

Removing gozag potion from Mu would make a D:2 gozag altar not actually attractive to them because the god wouldn't do anything for a very very long time - much after the char had find some better god somewhere else
screw it I hate this character I'm gonna go melee Gastronok

Dis Charger

Posts: 2011

Joined: Sunday, 18th December 2011, 13:31

Post Monday, 17th July 2017, 07:27

Re: Gozag shouldn't offer useless potions

nago wrote:
VeryAngryFelid wrote:Removing gozag's potions from mummies will increase choices, it's like Makh for DD IMHO, too superior to other gods


This is certainly true if you find both altars at same time.

But differently from DD, a Kiku|Oka|Trog|Nemelex|Whateverdecentgod D:2 is still a very good choice to Mu in most cases and it is bad to wait for a Gozag altar, because is not like a cat can reliably get a Mu to Lair godless.

Removing gozag potion from Mu would make a D:2 gozag altar not actually attractive to them because the god wouldn't do anything for a very very long time - much after the char had find some better god somewhere else



Potion petition itself requires 400$ to activate, but individual potion sets may go as high as 800$. It may generate potion sets player can't afford, and they are given as options. I think it can even generate three expensive sets and lock the game dead.


I missed this part: I think the first part should be written in the description ('[...]the actual cost of the sets offered may go up $$$) if there isn't already written. Or just increase the cost of calling potion petitioning to the max possible, that would be a slight nerf to a very strong power and make that much more clearer.
The second part is a straight bug if it actually happens.
screw it I hate this character I'm gonna go melee Gastronok

Spider Stomper

Posts: 219

Joined: Friday, 17th April 2015, 16:22

Post Thursday, 20th July 2017, 00:06

Re: Gozag shouldn't offer useless potions

if a petition with no potion sets less than or equal to the entry fee of using the ability (400 normally, 0 on the first one) would be created, the game flips the table and starts over until it gets an offer that has at least one potion set on it that isn't above the entry fee

if i understand the code correctly this actually means the first use is slightly stronger than normal because it won't veto a set that has been overly blessed with good potion combos

relevant code here: https://github.com/crawl/crawl/blob/mas ... 4074-L4109

For this message the author Doesnt has received thanks: 2
duvessa, nago

Dis Charger

Posts: 2011

Joined: Sunday, 18th December 2011, 13:31

Post Wednesday, 23rd August 2017, 14:41

Re: Gozag shouldn't offer useless potions

screw it I hate this character I'm gonna go melee Gastronok

For this message the author nago has received thanks:
VeryAngryFelid

Return to Game Design Discussion

Who is online

Users browsing this forum: Yahoo [Bot] and 12 guests

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.