]> granicus.if.org Git - nethack/commitdiff
Revert "fix up a bad commit"
authornhmall <nhmall@nethack.org>
Fri, 5 Oct 2018 02:00:08 +0000 (22:00 -0400)
committernhmall <nhmall@nethack.org>
Fri, 5 Oct 2018 02:00:08 +0000 (22:00 -0400)
This reverts commit 2eb8436db2b8a7123857f386a89003aed18c71d4.

src/dothrow.c

index 8777401930abaf1fb9bfec224efcda61da315b53..81487a5b6a4915ccdd7629c3647a094a8ecab5b9 100644 (file)
@@ -571,7 +571,7 @@ int x, y;
     int ox, oy, *range = (int *) arg;
     struct obj *obj;
     struct monst *mon;
-    boolean may_pass = TRUE, via_jumping, stopping_short;
+    boolean may_pass = TRUE;
     struct trap *ttmp;
     int dmg = 0;
 
@@ -583,8 +583,6 @@ int x, y;
     } else if (*range == 0) {
         return FALSE; /* previous step wants to stop now */
     }
-    via_jumping = (EWwalking & I_SPECIAL) != 0L;
-    stopping_short = (via_jumping && *range < 2);
 
     if (!Passes_walls || !(may_pass = may_passwall(x, y))) {
         boolean odoor_diag = (IS_DOOR(levl[x][y].typ)
@@ -664,8 +662,12 @@ int x, y;
 
         mon->mundetected = 0; /* wakeup() will handle mimic */
         mnam = a_monnam(mon); /* after unhiding */
-        pronoun = noit_mhim(mon);
+        pronoun = mhim(mon);
         if (!strcmp(mnam, "it")) {
+            /* mhim() uses pronoun_gender() which forces neuter if monster
+               can't be seen; we want him/her for humanoid sensed by touch */
+            if (!strcmp(pronoun, "it") && humanoid(mon->data))
+                pronoun = genders[mon->female].him;
             mnam = !strcmp(pronoun, "it") ? "something" : "someone";
         }
         if (!glyph_is_monster(glyph) && !glyph_is_invisible(glyph))
@@ -708,17 +710,12 @@ int x, y;
     vision_recalc(1);  /* update for new position */
     flush_screen(1);
 
-    if (is_pool(x, y) && !u.uinwater) {
-        if ((Is_waterlevel(&u.uz) && levl[x][y].typ == WATER)
-            || !(Levitation || Flying || Wwalking)) {
-            multi = 0; /* can move, so drown() allows crawling out of water */
-            (void) drown();
-            return FALSE;
-        } else if (!Is_waterlevel(&u.uz) && !stopping_short) {
-            Norep("You move over %s.", an(is_moat(x, y) ? "moat" : "pool"));
-       }
-    } else if (is_lava(x, y) && !stopping_short) {
-        Norep("You move over some lava.");
+    if (is_pool(x, y) && !u.uinwater
+        && ((Is_waterlevel(&u.uz) && levl[x][y].typ == WATER)
+            || !(Levitation || Flying || Wwalking))) {
+        multi = 0; /* can move, so drown() allows crawling out of water */
+        (void) drown();
+        return FALSE;
     }
 
     /* FIXME:
@@ -730,9 +727,7 @@ int x, y;
      * ones that we have not yet tested.
      */
     if ((ttmp = t_at(x, y)) != 0) {
-        if (stopping_short) {
-            ; /* see the comment above hurtle_jump() */
-        } else if (ttmp->ttyp == MAGIC_PORTAL) {
+        if (ttmp->ttyp == MAGIC_PORTAL) {
             dotrap(ttmp, 0);
             return FALSE;
         } else if (ttmp->ttyp == VIBRATING_SQUARE) {
@@ -740,12 +735,11 @@ int x, y;
             dotrap(ttmp, 0); /* doesn't print messages */
         } else if (ttmp->ttyp == FIRE_TRAP) {
             dotrap(ttmp, 0);
-        } else if ((is_pit(ttmp->ttyp) || is_hole(ttmp->ttyp))
+        } else if ((ttmp->ttyp == PIT || ttmp->ttyp == SPIKED_PIT
+                    || ttmp->ttyp == HOLE || ttmp->ttyp == TRAPDOOR)
                    && Sokoban) {
-            /* air currents overcome the recoil in Sokoban;
-               when jumping, caller performs last step and enters trap */
-            if (!via_jumping)
-                dotrap(ttmp, 0);
+            /* Air currents overcome the recoil */
+            dotrap(ttmp, 0);
             *range = 0;
             return TRUE;
         } else {
@@ -1134,8 +1128,6 @@ boolean twoweap; /* used to restore twoweapon mode if wielded weapon returns */
         mon = u.ustuck;
         bhitpos.x = mon->mx;
         bhitpos.y = mon->my;
-        if (tethered_weapon)
-            tmp_at(DISP_TETHER, obj_to_glyph(obj));
     } else if (u.dz) {
         if (u.dz < 0
             /* Mjollnir must we wielded to be thrown--caller verifies this;
@@ -1282,27 +1274,19 @@ boolean twoweap; /* used to restore twoweapon mode if wielded weapon returns */
         /* missile has already been handled */
         if (tethered_weapon) tmp_at(DISP_END, 0);
     } else if (u.uswallow) {
-        if (tethered_weapon) {
+        if (tethered_weapon)
             tmp_at(DISP_END, 0);
-            pline("%s returns to your hand!", The(xname(thrownobj)));
-            thrownobj = addinv(thrownobj);
-            (void) encumber_msg();
-            if (thrownobj->owornmask & W_QUIVER) /* in case addinv() autoquivered */
-                setuqwep((struct obj *) 0);
-            setuwep(thrownobj);            
-        } else {
-            /* ball is not picked up by monster */
-            if (obj != uball)
-                (void) mpickobj(u.ustuck, obj);
-            thrownobj = (struct obj *) 0;
-        }
+        /* ball is not picked up by monster */
+        if (obj != uball)
+            (void) mpickobj(u.ustuck, obj);
+        thrownobj = (struct obj *) 0;
     } else {
         /* Mjollnir must we wielded to be thrown--caller verifies this;
            aklys must we wielded as primary to return when thrown */
         if ((obj->oartifact == ART_MJOLLNIR && Role_if(PM_VALKYRIE))
             || tethered_weapon) {
             if (rn2(100)) {
-                if (tethered_weapon)
+                if (tethered_weapon)        
                     tmp_at(DISP_END, BACKTRACK);
                 else
                     sho_obj_return_to_u(obj); /* display its flight */