Armor probability tweaks

Armor is now slightly more likely to generate outside Gehennom (at
the expense of gems that generate via random generation rather than
mineralisation or level rules).

Basic nonmagical armor (especially body armor) has had its generation
probabilities reduced *relative to other armor*, but outside
Gehennom, it is no less likely to generate (because armor in general
is now more likely to generate outside Gehennom). It is slightly less
likely to generate in Gehennom (but isn't typically needed in
quantity there).

Armor that has extrinsics is more likely to generate, both due to
having increased probability relative to other armor, and due to the
increased proportion of generated items being armor: this is the
primary goal of this change.

The intention behind this change is to increase the chance that
players naturally find useful armor (especially armor that they might
not have been planning to use, but that they can adapt their strategy
to make use of), rather than needing to wish for it: the chance of
finding useful armor is higher both in the Dungeons (due to the
increased probability) and in Gehennom (because it is more biased
towards armor that might be useful at that stage of the game).  In
practice, in 3.6.x (prior to this change and to wishing changes), it
was quite common for players to wish up an entire set of armor at the
Castle, ignoring almost everything they'd found so far that game; I'm
hoping this change encourages more wish variety rather than spending
the majority of wishes on armor.
This commit is contained in:
Alex Smith
2026-03-21 04:52:51 +00:00
parent f85b5b1c9d
commit 26fd5e7d73
2 changed files with 38 additions and 38 deletions

View File

@@ -455,12 +455,12 @@ HELM("fedora", NoDes,
1, 0, 0, 0, 0, 3, 1, 10, 0, CLOTH, CLR_BROWN,
FEDORA),
HELM("cornuthaum", "conical hat",
0, 1, CLAIRVOYANT, 3, 1, 4, 80, 10, 1, CLOTH, CLR_BLUE,
0, 1, CLAIRVOYANT, 5, 1, 4, 80, 10, 1, CLOTH, CLR_BLUE,
/* name coined by devteam; confers clairvoyance for wizards,
blocks clairvoyance if worn by role other than wizard */
CORNUTHAUM),
HELM("dunce cap", "conical hat",
0, 1, 0, 3, 1, 4, 1, 10, 0, CLOTH, CLR_BLUE,
0, 1, 0, 5, 1, 4, 1, 10, 0, CLOTH, CLR_BLUE,
/* sets Int and Wis to fixed value of 6, so actually provides
protection against death caused by Int being drained below 3 */
DUNCE_CAP),
@@ -468,7 +468,7 @@ HELM("dented pot", NoDes,
1, 0, 0, 2, 0, 10, 8, 9, 0, IRON, CLR_BLACK,
DENTED_POT),
HELM("helm of brilliance", "crystal helmet",
0, 1, 0, 3, 1, 40, 50, 9, 0, GLASS, CLR_WHITE,
0, 1, 0, 6, 1, 40, 50, 9, 0, GLASS, CLR_WHITE,
/* used to be iron and shuffled as "etched helmet" but required
special case for the effect of iron armor on spell casting */
HELM_OF_BRILLIANCE),
@@ -477,13 +477,13 @@ HELM("helmet", "plumed helmet",
0, 0, 0, 10, 1, 30, 10, 9, 0, IRON, HI_METAL,
HELMET),
HELM("helm of caution", "etched helmet",
0, 1, WARNING, 3, 1, 50, 50, 9, 0, IRON, CLR_GREEN,
0, 1, WARNING, 6, 1, 50, 50, 9, 0, IRON, CLR_GREEN,
HELM_OF_CAUTION),
HELM("helm of opposite alignment", "crested helmet",
0, 1, 0, 6, 1, 50, 50, 9, 0, IRON, HI_METAL,
0, 1, 0, 10, 1, 50, 50, 9, 0, IRON, HI_METAL,
HELM_OF_OPPOSITE_ALIGNMENT),
HELM("helm of telepathy", "visored helmet",
0, 1, TELEPAT, 2, 1, 50, 50, 9, 0, IRON, HI_METAL,
0, 1, TELEPAT, 4, 1, 50, 50, 9, 0, IRON, HI_METAL,
HELM_OF_TELEPATHY),
/* suits of armor */
@@ -554,19 +554,19 @@ DRGN_ARMR("yellow dragon scales", 0, ACID_RES, 500, 7, CLR_YELLOW,
#undef DRGN_ARMR
/* other suits */
ARMOR("plate mail", NoDes,
1, 0, 1, 0, 44, 5, 450, 600, 3, 2, ARM_SUIT, IRON, HI_METAL,
1, 0, 1, 0, 40, 5, 450, 600, 3, 2, ARM_SUIT, IRON, HI_METAL,
PLATE_MAIL),
ARMOR("crystal plate mail", NoDes,
1, 0, 1, 0, 10, 5, 415, 820, 3, 2, ARM_SUIT, GLASS, CLR_WHITE,
CRYSTAL_PLATE_MAIL),
ARMOR("bronze plate mail", NoDes,
1, 0, 1, 0, 25, 5, 450, 400, 4, 1, ARM_SUIT, COPPER, HI_COPPER,
1, 0, 1, 0, 23, 5, 450, 400, 4, 1, ARM_SUIT, COPPER, HI_COPPER,
BRONZE_PLATE_MAIL),
ARMOR("splint mail", NoDes,
1, 0, 1, 0, 62, 5, 400, 80, 4, 1, ARM_SUIT, IRON, HI_METAL,
1, 0, 1, 0, 57, 5, 400, 80, 4, 1, ARM_SUIT, IRON, HI_METAL,
SPLINT_MAIL),
ARMOR("banded mail", NoDes,
1, 0, 1, 0, 72, 5, 350, 90, 4, 1, ARM_SUIT, IRON, HI_METAL,
1, 0, 1, 0, 66, 5, 350, 90, 4, 1, ARM_SUIT, IRON, HI_METAL,
BANDED_MAIL),
ARMOR("dwarvish mithril-coat", NoDes,
1, 0, 0, 0, 10, 1, 150, 240, 4, 2, ARM_SUIT, MITHRIL, HI_SILVER,
@@ -575,28 +575,28 @@ ARMOR("elven mithril-coat", NoDes,
1, 0, 0, 0, 15, 1, 150, 240, 5, 2, ARM_SUIT, MITHRIL, HI_SILVER,
ELVEN_MITHRIL_COAT),
ARMOR("chain mail", NoDes,
1, 0, 0, 0, 72, 5, 300, 75, 5, 1, ARM_SUIT, IRON, HI_METAL,
1, 0, 0, 0, 66, 5, 300, 75, 5, 1, ARM_SUIT, IRON, HI_METAL,
CHAIN_MAIL),
ARMOR("orcish chain mail", "crude chain mail",
0, 0, 0, 0, 20, 5, 300, 75, 6, 1, ARM_SUIT, IRON, CLR_BLACK,
0, 0, 0, 0, 19, 5, 300, 75, 6, 1, ARM_SUIT, IRON, CLR_BLACK,
ORCISH_CHAIN_MAIL),
ARMOR("scale mail", NoDes,
1, 0, 0, 0, 72, 5, 250, 45, 6, 1, ARM_SUIT, IRON, HI_METAL,
1, 0, 0, 0, 66, 5, 250, 45, 6, 1, ARM_SUIT, IRON, HI_METAL,
SCALE_MAIL),
ARMOR("studded leather armor", NoDes,
1, 0, 0, 0, 72, 3, 200, 15, 7, 1, ARM_SUIT, LEATHER, HI_LEATHER,
1, 0, 0, 0, 66, 3, 200, 15, 7, 1, ARM_SUIT, LEATHER, HI_LEATHER,
STUDDED_LEATHER_ARMOR),
ARMOR("ring mail", NoDes,
1, 0, 0, 0, 72, 5, 250, 100, 7, 1, ARM_SUIT, IRON, HI_METAL,
1, 0, 0, 0, 66, 5, 250, 100, 7, 1, ARM_SUIT, IRON, HI_METAL,
RING_MAIL),
ARMOR("orcish ring mail", "crude ring mail",
0, 0, 0, 0, 20, 5, 250, 80, 8, 1, ARM_SUIT, IRON, CLR_BLACK,
0, 0, 0, 0, 19, 5, 250, 80, 8, 1, ARM_SUIT, IRON, CLR_BLACK,
ORCISH_RING_MAIL),
ARMOR("leather armor", NoDes,
1, 0, 0, 0, 82, 3, 150, 5, 8, 1, ARM_SUIT, LEATHER, HI_LEATHER,
1, 0, 0, 0, 75, 3, 150, 5, 8, 1, ARM_SUIT, LEATHER, HI_LEATHER,
LEATHER_ARMOR),
ARMOR("leather jacket", NoDes,
1, 0, 0, 0, 12, 0, 30, 10, 9, 0, ARM_SUIT, LEATHER, CLR_BLACK,
1, 0, 0, 0, 11, 0, 30, 10, 9, 0, ARM_SUIT, LEATHER, CLR_BLACK,
LEATHER_JACKET),
/* shirts */
@@ -624,58 +624,58 @@ CLOAK("oilskin cloak", "slippery cloak",
0, 0, 0, 8, 0, 10, 50, 9, 2, CLOTH, HI_CLOTH,
OILSKIN_CLOAK),
CLOAK("robe", NoDes,
1, 1, 0, 3, 0, 15, 50, 8, 2, CLOTH, CLR_RED, ROBE),
1, 1, 0, 6, 0, 15, 50, 8, 2, CLOTH, CLR_RED, ROBE),
/* robe was adopted from slash'em, where it's worn as a suit
rather than as a cloak and there are several variations */
CLOAK("alchemy smock", "apron",
0, 1, POISON_RES, 9, 0, 10, 50, 9, 1, CLOTH, CLR_WHITE,
0, 1, POISON_RES, 11, 0, 10, 50, 9, 1, CLOTH, CLR_WHITE,
ALCHEMY_SMOCK),
CLOAK("leather cloak", NoDes,
1, 0, 0, 8, 0, 15, 40, 9, 1, LEATHER, CLR_BROWN,
LEATHER_CLOAK),
/* with shuffled appearances... */
CLOAK("cloak of protection", "tattered cape",
0, 1, PROTECTION, 9, 0, 10, 50, 7, 3, CLOTH, HI_CLOTH,
0, 1, PROTECTION, 11, 0, 10, 50, 7, 3, CLOTH, HI_CLOTH,
CLOAK_OF_PROTECTION),
/* cloak of protection is now the only item conferring MC 3 */
CLOAK("cloak of invisibility", "opera cloak",
0, 1, INVIS, 10, 0, 10, 60, 9, 1, CLOTH, CLR_BRIGHT_MAGENTA,
0, 1, INVIS, 12, 0, 10, 60, 9, 1, CLOTH, CLR_BRIGHT_MAGENTA,
CLOAK_OF_INVISIBILITY),
CLOAK("cloak of magic resistance", "ornamental cope",
0, 1, ANTIMAGIC, 2, 0, 10, 60, 9, 1, CLOTH, CLR_WHITE,
0, 1, ANTIMAGIC, 6, 0, 10, 60, 9, 1, CLOTH, CLR_WHITE,
CLOAK_OF_MAGIC_RESISTANCE),
/* 'cope' is not a spelling mistake... leave it be */
CLOAK("cloak of displacement", "piece of cloth",
0, 1, DISPLACED, 10, 0, 10, 50, 9, 1, CLOTH, HI_CLOTH,
0, 1, DISPLACED, 12, 0, 10, 50, 9, 1, CLOTH, HI_CLOTH,
CLOAK_OF_DISPLACEMENT),
/* shields */
SHIELD("small shield", "wooden shield",
0, 0, 0, 0, 4, 0, 30, 3, 9, 0, WOOD, HI_WOOD,
0, 0, 0, 0, 6, 0, 30, 3, 9, 0, WOOD, HI_WOOD,
SMALL_SHIELD),
SHIELD("shield of drain resistance", "wooden shield",
0, 1, 0, DRAIN_RES, 3, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
0, 1, 0, DRAIN_RES, 12, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
SHIELD_OF_DRAIN_RESISTANCE),
SHIELD("shield of shock resistance", "wooden shield",
0, 1, 0, SHOCK_RES, 3, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
0, 1, 0, SHOCK_RES, 12, 0, 30, 50, 9, 0, WOOD, HI_WOOD,
SHIELD_OF_SHOCK_RESISTANCE),
SHIELD("elven shield", "blue and green shield",
0, 0, 0, 0, 2, 0, 40, 7, 8, 0, WOOD, CLR_GREEN,
0, 0, 0, 0, 2, 0, 40, 7, 8, 0, WOOD, CLR_GREEN,
ELVEN_SHIELD),
SHIELD("Uruk-hai shield", "white-handed shield",
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, HI_METAL,
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, HI_METAL,
URUK_HAI_SHIELD),
SHIELD("orcish shield", "red-eyed shield",
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, CLR_RED,
0, 0, 0, 0, 2, 0, 50, 7, 9, 0, IRON, CLR_RED,
ORCISH_SHIELD),
SHIELD("large shield", NoDes,
1, 0, 1, 0, 4, 0, 100, 10, 8, 0, IRON, HI_METAL,
1, 0, 1, 0, 4, 0, 100, 10, 8, 0, IRON, HI_METAL,
LARGE_SHIELD),
SHIELD("dwarvish roundshield", "large round shield",
0, 0, 0, 0, 3, 0, 100, 10, 8, 0, IRON, HI_METAL,
0, 0, 0, 0, 3, 0, 100, 10, 8, 0, IRON, HI_METAL,
DWARVISH_ROUNDSHIELD),
SHIELD("shield of reflection", "polished silver shield",
0, 1, 0, REFLECTING, 3, 0, 50, 50, 8, 0, SILVER, HI_SILVER,
0, 1, 0, REFLECTING, 7, 0, 50, 50, 8, 0, SILVER, HI_SILVER,
SHIELD_OF_REFLECTION),
/* gloves */
@@ -684,7 +684,7 @@ SHIELD("shield of reflection", "polished silver shield",
* HI_METAL or CLR_BLACK. All have shuffled descriptions.
*/
GLOVES("leather gloves", "old gloves",
0, 0, 0, 16, 1, 10, 8, 9, 0, LEATHER, HI_LEATHER,
0, 0, 0, 15, 1, 10, 8, 9, 0, LEATHER, HI_LEATHER,
LEATHER_GLOVES),
GLOVES("gauntlets of fumbling", "padded gloves",
0, 1, FUMBLING, 8, 1, 10, 50, 9, 0, LEATHER, HI_LEATHER,
@@ -698,11 +698,11 @@ GLOVES("gauntlets of dexterity", "fencing gloves",
/* boots */
BOOTS("low boots", "walking shoes",
0, 0, 0, 25, 2, 10, 8, 9, 0, LEATHER, HI_LEATHER, LOW_BOOTS),
0, 0, 0, 23, 2, 10, 8, 9, 0, LEATHER, HI_LEATHER, LOW_BOOTS),
BOOTS("iron shoes", "hard shoes",
0, 0, 0, 7, 2, 50, 16, 8, 0, IRON, HI_METAL, IRON_SHOES),
BOOTS("high boots", "jackboots",
0, 0, 0, 15, 2, 20, 12, 8, 0, LEATHER, HI_LEATHER, HIGH_BOOTS),
0, 0, 0, 14, 2, 20, 12, 8, 0, LEATHER, HI_LEATHER, HIGH_BOOTS),
/* with shuffled appearances... */
BOOTS("speed boots", "combat boots",
0, 1, FAST, 12, 2, 20, 50, 9, 0, LEATHER, HI_LEATHER, SPEED_BOOTS),