]> granicus.if.org Git - nethack/commitdiff
fix #4138 - 'text bug' for freezing moat
authorPatR <rankin@nethack.org>
Thu, 7 Jan 2016 01:57:39 +0000 (17:57 -0800)
committerPatR <rankin@nethack.org>
Thu, 7 Jan 2016 01:57:39 +0000 (17:57 -0800)
Freezing a moat--unlike other types of water--substitutes the type
of water (because that isn't "moat" for Medusa's level) in the freeze
message but was doing so after changing the affected terrain to ICE,
yielding "The ice is bridged with ice."

doc/fixes36.1
src/zap.c

index 2602460c0d8953657b24fba261947dcfdee07169..12386fc24004eb7a9761a8a1525549d40259ba8f 100644 (file)
@@ -97,6 +97,7 @@ make vault guard accept names starting with number
 fix weight of containers in special levels
 make the raven medusa level shortsighted
 fix possible segfault in lev_comp when map was too tall
+fix "the ice is bridged with ice" when freezing castle's moat or Medusa's sea
 
 
 Platform- and/or Interface-Specific Fixes
index 0749c8dbf498c852ed28b6a7a70f4fab5e45b7cd..6a695fbacefdae78d6fffa756a6109655929947b 100644 (file)
--- a/src/zap.c
+++ b/src/zap.c
@@ -4234,8 +4234,8 @@ short exploding_wand_typ;
 
     case ZT_COLD:
         if (is_pool(x, y) || is_lava(x, y)) {
-            boolean lava = is_lava(x, y);
-            boolean moat = is_moat(x, y);
+            boolean lava = is_lava(x, y),
+                    moat = is_moat(x, y);
 
             if (lev->typ == WATER) {
                 /* For now, don't let WATER freeze. */
@@ -4245,23 +4245,25 @@ short exploding_wand_typ;
                     You_hear("a soft crackling.");
                 rangemod -= 1000; /* stop */
             } else {
+                char buf[BUFSZ];
+
+                Strcpy(buf, waterbody_name(x, y)); /* for MOAT */
                 rangemod -= 3;
                 if (lev->typ == DRAWBRIDGE_UP) {
                     lev->drawbridgemask &= ~DB_UNDER; /* clear lava */
                     lev->drawbridgemask |= (lava ? DB_FLOOR : DB_ICE);
                 } else {
                     if (!lava)
-                        lev->icedpool =
-                            (lev->typ == POOL ? ICED_POOL : ICED_MOAT);
-                    lev->typ = (lava ? ROOM : ICE);
+                        lev->icedpool = (lev->typ == POOL) ? ICED_POOL
+                                                           : ICED_MOAT;
+                    lev->typ = lava ? ROOM : ICE;
                 }
                 bury_objs(x, y);
                 if (see_it) {
                     if (lava)
                         Norep("The lava cools and solidifies.");
                     else if (moat)
-                        Norep("The %s is bridged with ice!",
-                              waterbody_name(x, y));
+                        Norep("The %s is bridged with ice!", buf);
                     else
                         Norep("The water freezes.");
                     newsym(x, y);