Compare commits

...

3 commits

Author SHA1 Message Date
RojjaCebolla
db38b23d97
Gray dragon scale mail can resist curses 2021-12-20 05:51:42 -05:00
RojjaCebolla
3032da0841
Use matching object materials for gold/silver DSM
A flavor-based nerf to silver dragon scale mail: it is metallic and weighs more, as other silver items are. This makes it unusable for silver-haters and a significant impediment for spellcasters. Non-silver-hating non-spellcasters won't be hit much by this nerf, though those characters can just as easily wear a silver shield in the first place.

Because this nerf relies upon a literal interpretation of "silver dragon", gold armor is also now heavy and metallic, though due to its unpopularity, the impact will likely be small.
2021-12-20 05:29:40 -05:00
RojjaCebolla
2684f55194
Make gray dragon scale mail unenchantable
Scales can be hardened into armour, but after that hardening process they are impervious to further enchantment.
2021-12-18 03:59:28 -05:00
3 changed files with 10 additions and 5 deletions

View file

@ -440,7 +440,7 @@ HELM("helm of telepathy", "visored helmet",
/* 3.4.1: dragon scale mail reclassified as "magic" since magic is
needed to create them */
DRGN_ARMR("gray dragon scale mail", 1, ANTIMAGIC, 1200, 1, CLR_GRAY),
DRGN_ARMR("silver dragon scale mail", 1, REFLECTING, 1200, 1, DRAGON_SILVER),
ARMOR("silver dragon scale mail", None, 1, 1, REFLECTING, 0, 5, 180, 1200, 1, 0, ARM_SUIT, SILVER, DRAGON_SILVER),
DRGN_ARMR("shimmering dragon scale mail", 1, DISPLACED, 1200, 1, CLR_CYAN),
DRGN_ARMR("red dragon scale mail", 1, FIRE_RES, 900, 1, CLR_RED),
DRGN_ARMR("white dragon scale mail", 1, COLD_RES, 900, 1, CLR_WHITE),
@ -449,7 +449,7 @@ DRGN_ARMR("violet dragon scale mail", 1, SONIC_RES, 900, 1, CLR_BRIGHT_MAGENT
DRGN_ARMR("black dragon scale mail", 1, DISINT_RES, 1200, 1, CLR_BLACK),
DRGN_ARMR("blue dragon scale mail", 1, SHOCK_RES, 900, 1, CLR_BLUE),
DRGN_ARMR("green dragon scale mail", 1, POISON_RES, 900, 1, CLR_GREEN),
DRGN_ARMR("gold dragon scale mail", 1, 0, 1200, 1, HI_GOLD),
ARMOR("gold dragon scale mail", None, 1, 1, 1, 0, 0, 5, 180, 1200, 1, 0, ARM_SUIT, GOLD, HI_GOLD),
DRGN_ARMR("yellow dragon scale mail", 1, ACID_RES, 900, 1, CLR_YELLOW),
DRGN_ARMR("ooze dragon scale mail", 1, ACID_RES, 1200, 1, CLR_BRIGHT_GREEN),
DRGN_ARMR("razor dragon scale mail", 1, FAST, 1200, 1, CLR_CYAN),
@ -460,7 +460,7 @@ DRGN_ARMR("void dragon scale mail", 1, DISINT_RES, 1200, 1, CLR_MAGENTA),
/* 3.4.1: dragon scales left classified as "non-magic"; they confer
magical properties but are produced "naturally" */
DRGN_ARMR("gray dragon scales", 0, ANTIMAGIC, 700, 7, CLR_GRAY),
DRGN_ARMR("silver dragon scales", 0, REFLECTING, 700, 7, DRAGON_SILVER),
ARMOR("silver dragon scales", None, 1, 0, 1, REFLECTING, 0, 5, 180, 700, 7, 0, ARM_SUIT, SILVER, DRAGON_SILVER),
DRGN_ARMR("shimmering dragon scales", 0, DISPLACED, 700, 7, CLR_CYAN),
DRGN_ARMR("red dragon scales", 0, FIRE_RES, 500, 7, CLR_RED),
DRGN_ARMR("white dragon scales", 0, COLD_RES, 500, 7, CLR_WHITE),
@ -469,7 +469,7 @@ DRGN_ARMR("violet dragon scales", 0, SONIC_RES, 700, 7, CLR_BRIGHT_MAGENT
DRGN_ARMR("black dragon scales", 0, DISINT_RES, 700, 7, CLR_BLACK),
DRGN_ARMR("blue dragon scales", 0, SHOCK_RES, 500, 7, CLR_BLUE),
DRGN_ARMR("green dragon scales", 0, POISON_RES, 500, 7, CLR_GREEN),
DRGN_ARMR("gold dragon scales", 0, 0, 700, 7, HI_GOLD),
ARMOR("gold dragon scales", None, 1, 0, 1, 0, 0, 5, 180, 700, 7, 0, ARM_SUIT, GOLD, HI_GOLD),
DRGN_ARMR("yellow dragon scales", 0, ACID_RES, 500, 7, CLR_YELLOW),
DRGN_ARMR("ooze dragon scales", 0, POISON_RES, 700, 7, CLR_BRIGHT_GREEN),
DRGN_ARMR("razor dragon scales", 0, FAST, 700, 7, CLR_CYAN),

View file

@ -1283,6 +1283,10 @@ seffects(struct obj *sobj) /* sobj - scroll or fake spellbook for spell */
otmp->oerodeproof = new_erodeproof ? 1 : 0;
break;
}
if (otmp == GRAY_DRAGON_SCALE_MAIL) {
pline("%s thoroughly resists the enchantment!", Yname2(otmp));
break;
}
/* elven armor vibrates warningly when enchanted beyond a limit */
special_armor = is_elven_armor(otmp)
|| (Role_if(PM_WIZARD) && otmp->otyp == CORNUTHAUM);

View file

@ -397,7 +397,8 @@ rndcurse(void)
if (!otmp || otmp->cursed)
continue; /* next target */
if (otmp->oartifact && spec_ability(otmp, SPFX_INTEL)
if ((otmp->oartifact && spec_ability(otmp, SPFX_INTEL)
|| (uarm && uarm->otyp == GRAY_DRAGON_SCALE_MAIL))
&& rn2(10) < 8) {
pline("%s!", Tobjnam(otmp, "resist"));
continue;