From ceaffcbd47845ce933ad2a83e370f249fbd8761c Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Sun, 11 Jan 2026 22:19:43 +0000 Subject: [PATCH] Large polyforms unequip cloaks rather than destroying them This commit is intended to achieve two things: a) making Vlad's throne a little less dangerous, b) making polymorph traps less dangerous for players who don't have magic resistance. (At present, uncontrolled polymorph is too dangerous in the late game for most players to consider risking it, so they take care to avoid things that have even a small chance of it, cutting out a lot of potential strategies. Toning down polymorphs should make them happen more often by increasing the chance that players will be willing to go without precautions.) Body armor is still destroyed (with the existing exception of dragon armor), in order to mostly preserve the balance effect of polymorph traps in the early game. --- doc/fixes3-7-0.txt | 1 + src/polyself.c | 12 +++--------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index a85c925f7..c86f77a40 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1565,6 +1565,7 @@ scroll of enchant armor formula has changed (in particular, magical armor now uncursed scrolls can sometimes enchant by more than one point) dragonhide can rot throwing ammo without a launcher produces a message +polymorphing into a large polyform unequips rather than destroying cloaks Fixes to 3.7.0-x General Problems Exposed Via git Repository diff --git a/src/polyself.c b/src/polyself.c index 14fe3f1cc..a990a4d5f 100644 --- a/src/polyself.c +++ b/src/polyself.c @@ -1172,15 +1172,9 @@ break_armor(void) if ((otmp = uarmc) != 0 /* mummy wrapping adapts to small and very big sizes */ && (otmp->otyp != MUMMY_WRAPPING || !WrappingAllowed(uptr))) { - if (otmp->oartifact) { - Your("%s falls off!", cloak_simple_name(otmp)); - (void) Cloak_off(); - dropp(otmp); - } else { - Your("%s tears apart!", cloak_simple_name(otmp)); - (void) Cloak_off(); - useup(otmp); - } + pline_The("clasp on your %s breaks open!", cloak_simple_name(otmp)); + (void) Cloak_off(); + dropp(otmp); } if (uarmu) { Your("shirt rips to shreds!");