From 46296dfb5cd29ee14e319c36682bf51f41ead44f Mon Sep 17 00:00:00 2001 From: "nethack.allison" Date: Wed, 15 Oct 2003 12:32:35 +0000 Subject: [PATCH] dipping non-weapon iron in fountain wrote: > Non-weapon iron items don't appear to rust if #dipped in a fountain. Fixed. If something does get rusted, its a 50/50 chance whether other fountain effects take place on the item afterwards. --- doc/fixes34.3 | 2 ++ src/fountain.c | 3 ++- src/potion.c | 38 ++++++++++++++++++++++++++++---------- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/doc/fixes34.3 b/doc/fixes34.3 index a9b4c0ab0..c4701d5b3 100644 --- a/doc/fixes34.3 +++ b/doc/fixes34.3 @@ -48,6 +48,8 @@ bill for all discarded, opened tins monsters that cannot pick things up cannot throw things either eating an amulet of unchanging removes intrinsic polymorph Vlad won't waste time trying to use wand of digging in his own tower +non-weapon iron objects should rust when dipped in fountains since + iron weapons rust Platform- and/or Interface-Specific Fixes diff --git a/src/fountain.c b/src/fountain.c index acbaac2d1..7e1587da8 100644 --- a/src/fountain.c +++ b/src/fountain.c @@ -391,7 +391,8 @@ register struct obj *obj; if(in_town(u.ux, u.uy)) (void) angry_guards(FALSE); return; - } else (void) get_wet(obj); + } else if (get_wet(obj) && !rn2(2)) + return; /* Acid and water don't mix */ if (obj->otyp == POT_ACID) { diff --git a/src/potion.c b/src/potion.c index 020721117..fed833a8c 100644 --- a/src/potion.c +++ b/src/potion.c @@ -1438,16 +1438,6 @@ register struct obj *obj; /* (Rusting shop goods ought to be charged for.) */ switch (obj->oclass) { - case WEAPON_CLASS: - if (!obj->oerodeproof && is_rustprone(obj) && - (obj->oeroded < MAX_ERODE) && !rn2(2)) { - pline("%s some%s.", - Yobjnam2(obj, "rust"), - obj->oeroded ? " more" : "what"); - obj->oeroded++; - update_inventory(); - return TRUE; - } else break; case POTION_CLASS: if (obj->otyp == POT_WATER) return FALSE; /* KMH -- Water into acid causes an explosion */ @@ -1518,6 +1508,20 @@ register struct obj *obj; } return TRUE; } + break; + case WEAPON_CLASS: + /* Just "fall through" to generic rustprone check for now. */ + /* fall through */ + default: + if (!obj->oerodeproof && is_rustprone(obj) && + (obj->oeroded < MAX_ERODE) && !rn2(2)) { + pline("%s %s some%s.", + Your_buf, aobjnam(obj, "rust"), + obj->oeroded ? " more" : "what"); + obj->oeroded++; + update_inventory(); + return TRUE; + } else break; } pline("%s wet.", Yobjnam2(obj, "get")); return FALSE; @@ -1562,6 +1566,20 @@ dodip() } return 1; } + break; + case WEAPON_CLASS: + /* Just "fall through" to generic rustprone check for now. */ + /* fall through */ + default: + if (!obj->oerodeproof && is_rustprone(obj) && + (obj->oeroded < MAX_ERODE) && !rn2(2)) { + pline("%s %s some%s.", + Your_buf, aobjnam(obj, "rust"), + obj->oeroded ? " more" : "what"); + obj->oeroded++; + update_inventory(); + return TRUE; + } else break; } if(!(potion = getobj(beverages, "dip into"))) -- 2.40.0