Pandemonium Purger
Posts: 1283
Joined: Thursday, 16th April 2015, 22:39
Nemelex and misc. acquirement
At first it is 5%, then it goes up to a maximum of 19% if you've seen all items.
It's reasonable that a follower of Nemelex would expect to receive a deck upon acquiring misc.
Funny thing: you can guarantee getting a deck from acquirement if you see all items and sacrifice love.
Proposal: increase weight of decks by 10 times if (you_worship(GOD_NEMELEX)).
10 times isn't even a lot. You'd still have a mere 34% chance of getting a deck if you haven't seen anything.
This ought to be a trivial and uncontroversial tweak to acquirement code.
This is the current acquirement code:
- Code:
/**
* Return a miscellaneous evokable item for acquirement.
* @return The item type chosen.
*/
static int _acquirement_misc_subtype(bool /*divine*/, int & /*quantity*/)
{
// Total weight if none have been seen is 100.
int result = random_choose_weighted( // Decks given lowest weight.
1, MISC_DECK_OF_WONDERS,
2, MISC_DECK_OF_CHANGES,
2, MISC_DECK_OF_DEFENCE,
// These have charges, so
// give them a constant
// weight.
(player_mutation_level(MUT_NO_LOVE) ? 0 : 7), MISC_BOX_OF_BEASTS,
(player_mutation_level(MUT_NO_LOVE) ? 0 : 7), MISC_SACK_OF_SPIDERS,
(player_mutation_level(MUT_NO_LOVE) ? 0 : 7), MISC_PHANTOM_MIRROR,
// The player never needs
// more than one.
(you.seen_misc[MISC_DISC_OF_STORMS] ? 0 : 7), MISC_DISC_OF_STORMS,
(you.seen_misc[MISC_LAMP_OF_FIRE] ? 0 : 15), MISC_LAMP_OF_FIRE,
(you.seen_misc[MISC_PHIAL_OF_FLOODS] ? 0 : 15), MISC_PHIAL_OF_FLOODS,
(you.seen_misc[MISC_FAN_OF_GALES] ? 0 : 15), MISC_FAN_OF_GALES,
(you.seen_misc[MISC_STONE_OF_TREMORS] ? 0 : 15), MISC_STONE_OF_TREMORS,
(you.seen_misc[MISC_LANTERN_OF_SHADOWS] ? 0 : 7), MISC_LANTERN_OF_SHADOWS,
0);
// Give a crystal ball based on both evocations and either spellcasting or
// invocations if we haven't seen one.
int skills = you.skills[SK_EVOCATIONS]
* max(you.skills[SK_SPELLCASTING], you.skills[SK_INVOCATIONS]);
if (x_chance_in_y(skills, MAX_SKILL_LEVEL * MAX_SKILL_LEVEL)
&& !you.seen_misc[MISC_CRYSTAL_BALL_OF_ENERGY])
{
result = MISC_CRYSTAL_BALL_OF_ENERGY;
}
return result;
}
Source: https://github.com/crawl/crawl/blob/37f ... acquire.cc