OSDN Git Service

update year to 2020
[jnethack/source.git] / src / uhitm.c
index 5d7c8b5..b8be518 100644 (file)
@@ -1,11 +1,11 @@
-/* NetHack 3.6 uhitm.c $NHDT-Date: 1555720104 2019/04/20 00:28:24 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.207 $ */
+/* NetHack 3.6 uhitm.c $NHDT-Date: 1573764936 2019/11/14 20:55:36 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.215 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /*-Copyright (c) Robert Patrick Rankin, 2012. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 /* JNetHack Copyright */
 /* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000  */
-/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2019            */
+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2020            */
 /* JNetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
@@ -197,15 +197,20 @@ struct obj *wep; /* uwep for attack(), null for kick_monster() */
             struct obj *obj;
 
             if (!Blind && Hallucination)
+#if 0 /*JP:T*/
                 pline("A %s %s appeared!",
                       mtmp->mtame ? "tame" : "wild", l_monnam(mtmp));
+#else
+                pline("%s%s\82ª\8c»\82ê\82½\81I",
+                      mtmp->mtame ? "\8eè\82È\82Ã\82¯\82ç\82ê\82½" : "\96ì\90\82Ì", l_monnam(mtmp));
+#endif
             else if (Blind || (is_pool(mtmp->mx, mtmp->my) && !Underwater))
 /*JP
                 pline("Wait!  There's a hidden monster there!");
 */
                 pline("\91Ò\82Ä\81I\89ö\95¨\82ª\89B\82ê\82Ä\82¢\82é\81I");
             else if ((obj = level.objects[mtmp->mx][mtmp->my]) != 0)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                 pline("Wait!  There's %s hiding under %s!",
                       an(l_monnam(mtmp)), doname(obj));
 #else
@@ -457,7 +462,7 @@ register struct monst *mtmp;
 */
                 You("%s\82Å\89ö\95¨\82ð\82È\82®\82è\82Â\82¯\82½\81D", yname(uwep));
             else if (!cantwield(youmonst.data))
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                 You("begin %s monsters with your %s %s.",
                     ing_suffix(Role_if(PM_MONK) ? "strike" : "bash"),
                     uarmg ? "gloved" : "bare", /* Del Lamb */
@@ -480,7 +485,10 @@ register struct monst *mtmp;
         && (m_move(mtmp, 0) == 2 /* it died */
             || mtmp->mx != u.ux + u.dx
             || mtmp->my != u.uy + u.dy)) { /* it moved */
+/*JP
         You("miss wildly and stumble forwards.");
+*/
+        You("\91å\82«\82­\8aO\82µ\82Ä\91O\82É\82Â\82Ü\82Ã\82¢\82½\81D");
         return FALSE;
     }
 
@@ -746,14 +754,8 @@ int dieroll;
     long silverhit = 0L;
     int wtype;
     struct obj *monwep;
-#if 0 /*JP*/
-    char unconventional[BUFSZ]; /* substituted for word "attack" in msg */
-#endif
     char saved_oname[BUFSZ];
 
-#if 0 /*JP*/
-    unconventional[0] = '\0';
-#endif
     saved_oname[0] = '\0';
 
     wakeup(mon, TRUE);
@@ -807,7 +809,7 @@ int dieroll;
                     && rnl(4) == 4 - 1) {
                     boolean more_than_1 = (obj->quan > 1L);
 
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                     pline("As you hit %s, %s%s breaks into splinters.",
                           mon_nam(mon), more_than_1 ? "one of " : "",
                           yname(obj));
@@ -868,7 +870,7 @@ int dieroll;
                      */
                     setmnotwielded(mon, monwep);
                     mon->weapon_check = NEED_WEAPON;
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                     pline("%s from the force of your blow!",
                           Yobjnam2(monwep, "shatter"));
 #else
@@ -940,9 +942,6 @@ int dieroll;
         } else {
             if (mdat == &mons[PM_SHADE] && !shade_aware(obj)) {
                 tmp = 0;
-#if 0 /*JP*/
-                Strcpy(unconventional, cxname(obj));
-#endif
             } else {
                 switch (obj->otyp) {
                 case BOULDER:         /* 1d20 */
@@ -978,7 +977,7 @@ int dieroll;
                     if (touch_petrifies(&mons[obj->corpsenm])) {
                         tmp = 1;
                         hittxt = TRUE;
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                         You("hit %s with %s.", mon_nam(mon),
                             corpse_xname(obj, (const char *) 0,
                                          obj->dknown ? CXN_PFX_THE
@@ -1032,7 +1031,7 @@ int dieroll;
 
                     if (touch_petrifies(&mons[obj->corpsenm])) {
                         /*learn_egg_type(obj->corpsenm);*/
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                         pline("Splat!  You hit %s with %s %s egg%s!",
                               mon_nam(mon),
                               obj->known ? "the" : cnt > 1L ? "some" : "a",
@@ -1054,7 +1053,7 @@ int dieroll;
                             break;
                         return (boolean) (!DEADMONSTER(mon));
                     } else { /* ordinary egg(s) */
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                         const char *eggp = (obj->corpsenm != NON_PM
                                             && obj->known)
                                            ? the(mons[obj->corpsenm].mname)
@@ -1071,7 +1070,7 @@ int dieroll;
                                 mon_nam(mon), eggp, *eggp ? "\82Ì" : "");
 #endif
                         if (touch_petrifies(mdat) && !stale_egg(obj)) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                             pline_The("egg%s %s alive any more...", plur(cnt),
                                       (cnt == 1L) ? "isn't" : "aren't");
 #else
@@ -1114,7 +1113,7 @@ int dieroll;
                                              : AT_WEAP),
                                  obj)) {
                         if (Blind) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                             pline(obj->otyp == CREAM_PIE ? "Splat!"
                                                          : "Splash!");
 #else
@@ -1122,7 +1121,7 @@ int dieroll;
                                                          : "\83s\83`\83\83\83b\81I");
 #endif
                         } else if (obj->otyp == BLINDING_VENOM) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                             pline_The("venom blinds %s%s!", mon_nam(mon),
                                       mon->mcansee ? "" : " further");
 #else
@@ -1145,7 +1144,7 @@ int dieroll;
                                 whom = strcat(s_suffix(whom),
                                               mbodypart(mon, FACE));
 #endif
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                             pline("%s %s over %s!", what,
                                   vtense(what, "splash"), whom);
 #else
@@ -1285,25 +1284,14 @@ int dieroll;
             poiskilled = TRUE;
     }
     if (tmp < 1) {
+        boolean mon_is_shade = (mon->data == &mons[PM_SHADE]);
+
         /* make sure that negative damage adjustment can't result
            in inadvertently boosting the victim's hit points */
-        tmp = 0;
-        if (mdat == &mons[PM_SHADE]) {
-            if (!hittxt) {
-#if 0 /*JP*/
-                const char *what = *unconventional ? unconventional : "attack";
-
-                Your("%s %s harmlessly through %s.", what,
-                     vtense(what, "pass"), mon_nam(mon));
-#else
-                Your("\8dU\8c\82\82Í%s\82ð\92Ê\82è\82Ê\82¯\82½\81D", mon_nam(mon));
-#endif
-                hittxt = TRUE;
-            }
-        } else {
-            if (get_dmg_bonus)
-                tmp = 1;
-        }
+        tmp = (get_dmg_bonus && !mon_is_shade) ? 1 : 0;
+        if (mon_is_shade && !hittxt
+            && thrown != HMON_THROWN && thrown != HMON_KICKED)
+            hittxt = shade_miss(&youmonst, mon, obj, FALSE, TRUE);
     }
 
     if (jousting) {
@@ -1338,7 +1326,7 @@ int dieroll;
         if (rnd(100) < P_SKILL(P_BARE_HANDED_COMBAT) && !bigmonst(mdat)
             && !thick_skinned(mdat)) {
             if (canspotmon(mon))
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                 pline("%s %s from your powerful strike!", Monnam(mon),
                       makeplural(stagger(mon->data, "stagger")));
 #else
@@ -1389,7 +1377,7 @@ int dieroll;
             char withwhat[BUFSZ];
 
             withwhat[0] = '\0';
-#if 0 /*JP*/
+#if 0 /*JP:T*/
             if (u.twoweap && flags.verbose)
                 Sprintf(withwhat, " with %s", yname(obj));
             pline("%s divides as you hit it%s!", Monnam(mon), withwhat);
@@ -1448,14 +1436,15 @@ int dieroll;
                 Sprintf(silverobjbuf, "Your %s%s %s",
                         strstri(saved_oname, "silver") ? "" : "silver ",
                         saved_oname, vtense(saved_oname, "sear"));
+                (void) strNsubst(silverobjbuf, "%", "%%", 0);
+                Strcat(silverobjbuf, " %s!");
 #else
                 Sprintf(silverobjbuf, "%%s\82Í%s%s\82Å\8fÄ\82©\82ê\82½\81I",
                         strstri(saved_oname, "\8bâ") ?
                         "" : "\8bâ\82Ì",
                         saved_oname);
+                (void) strNsubst(silverobjbuf, "%%", "%", 0);
 #endif
-                (void) strNsubst(silverobjbuf, "%", "%%", 0);
-                Strcat(silverobjbuf, " %s!");
                 fmt = silverobjbuf;
             } else
 /*JP
@@ -1484,20 +1473,37 @@ int dieroll;
 
         if (canspotmon(mon)) {
             if (saved_oname[0]) {
+#if 0 /*JP*/
                 Sprintf(emitlightobjbuf,
                         "%s radiance penetrates deep into",
                         s_suffix(saved_oname));
                 Strcat(emitlightobjbuf, " %s!");
+#else
+                Sprintf(emitlightobjbuf,
+                        "%s\8cõ\82ª%%s\82É\90[\82­\8aÑ\92Ê\82µ\82½\81I",
+                        s_suffix(saved_oname));
+#endif
                 fmt = emitlightobjbuf;
             } else
+/*JP
                 fmt = "The light sears %s!";
+*/
+                fmt = "\8cõ\82Í%s\82ð\8fÄ\82¢\82½\81I";
         } else {
+#if 0 /*JP*/
             *whom = highc(*whom); /* "it" -> "It" */
+#endif
+/*JP
             fmt = "%s is seared!";
+*/
+            fmt = "%s\82Í\8fÄ\82©\82ê\82½\81I";
         }
         /* note: s_suffix returns a modifiable buffer */
         if (!noncorporeal(mdat) && !amorphous(mdat))
+/*JP
             whom = strcat(s_suffix(whom), " flesh");
+*/
+            whom = strcat(s_suffix(whom), "\93÷");
         pline(fmt, whom);
     }
     /* if a "no longer poisoned" message is coming, it will be last;
@@ -1540,7 +1546,7 @@ int dieroll;
         }
     }
     if (unpoisonmsg)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
         Your("%s %s no longer poisoned.", saved_oname,
              vtense(saved_oname, "are"));
 #else
@@ -1573,6 +1579,64 @@ struct obj *obj;
     return FALSE;
 }
 
+/* used for hero vs monster and monster vs monster; also handles
+   monster vs hero but that won't happen because hero can't be a shade */
+boolean
+shade_miss(magr, mdef, obj, thrown, verbose)
+struct monst *magr, *mdef;
+struct obj *obj;
+boolean thrown, verbose;
+{
+    const char *what, *whose, *target;
+    boolean youagr = (magr == &youmonst), youdef = (mdef == &youmonst);
+
+    /* we're using dmgval() for zero/not-zero, not for actual damage amount */
+    if (mdef->data != &mons[PM_SHADE] || (obj && dmgval(obj, mdef)))
+        return FALSE;
+
+    if (verbose
+        && ((youdef || cansee(mdef->mx, mdef->my) || sensemon(mdef))
+            || (magr == &youmonst && distu(mdef->mx, mdef->my) <= 2))) {
+#if 0 /*JP*/
+        static const char harmlessly_thru[] = " harmlessly through ";
+#endif
+
+/*JP
+        what = (!obj || shade_aware(obj)) ? "attack" : cxname(obj);
+*/
+        what = (!obj || shade_aware(obj)) ? "\8dU\8c\82" : cxname(obj);
+/*JP
+        target = youdef ? "you" : mon_nam(mdef);
+*/
+        target = youdef ? "\82 \82È\82½" : mon_nam(mdef);
+        if (!thrown) {
+/*JP
+            whose = youagr ? "Your" : s_suffix(Monnam(magr));
+*/
+            whose = youagr ? "\82 \82È\82½\82Ì" : s_suffix(Monnam(magr));
+#if 0 /*JP:T*/
+            pline("%s %s %s%s%s.", whose, what,
+                  vtense(what, "pass"), harmlessly_thru, target);
+#else
+            pline("%s%s\82Í%s\82ð\92Ê\82è\82Ê\82¯\82½\81D", whose, what,
+                  target);
+#endif
+        } else {
+#if 0 /*JP:T*/
+            pline("%s %s%s%s.", The(what), /* note: not pline_The() */
+                  vtense(what, "pass"), harmlessly_thru, target);
+#else
+            pline("%s\82Í%s\82ð\92Ê\82è\82Ê\82¯\82½\81D", what, target);
+#endif
+        }
+        if (!youdef && !canspotmon(mdef))
+            map_invisible(mdef->mx, mdef->my);
+    }
+    if (!youdef)
+        mdef->msleeping = 0;
+    return TRUE;
+}
+
 /* check whether slippery clothing protects from hug or wrap attack */
 /* [currently assumes that you are the attacker] */
 STATIC_OVL boolean
@@ -1598,7 +1662,7 @@ struct attack *mattk;
        protection might fail (33% chance) when the armor is cursed */
     if (obj && (obj->greased || obj->otyp == OILSKIN_CLOAK)
         && (!obj->cursed || rn2(3))) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
         You("%s %s %s %s!",
             mattk->adtyp == AD_WRAP ? "slip off of"
                                     : "grab, but cannot hold onto",
@@ -1723,10 +1787,11 @@ steal_it(mdef, mattk)
 struct monst *mdef;
 struct attack *mattk;
 {
-    struct obj *otmp, *stealoid, **minvent_ptr;
+    struct obj *otmp, *gold = 0, *stealoid, **minvent_ptr;
     long unwornmask;
 
-    if (!mdef->minvent)
+    otmp = mdef->minvent;
+    if (!otmp || (otmp->oclass == COIN_CLASS && !otmp->nobj))
         return; /* nothing to take */
 
     /* look for worn body armor */
@@ -1746,16 +1811,19 @@ struct attack *mattk;
             }
         *minvent_ptr = stealoid; /* put armor back into minvent */
     }
+    gold = findgold(mdef->minvent);
 
     if (stealoid) { /* we will be taking everything */
         if (gender(mdef) == (int) u.mfemale && youmonst.data->mlet == S_NYMPH)
-/*JP
-            You("charm %s.  She gladly hands over her possessions.",
-*/
-            You("%s\82ð\82¤\82Á\82Æ\82è\82³\82¹\82½\81D\94Þ\8f\97\82Í\82æ\82ë\82±\82ñ\82Å\8e\9d\82¿\95¨\82ð\82³\82µ\82¾\82µ\82½\81D",
-                mon_nam(mdef));
+#if 0 /*JP:T*/
+            You("charm %s.  She gladly hands over %sher possessions.",
+                mon_nam(mdef), !gold ? "" : "most of ");
+#else
+            You("%s\82ð\82¤\82Á\82Æ\82è\82³\82¹\82½\81D\94Þ\8f\97\82Í\82æ\82ë\82±\82ñ\82Å\8e\9d\82¿\95¨%s\82ð\82³\82µ\82¾\82µ\82½\81D",
+                mon_nam(mdef), !gold ? "" : "\82Ì\82Ù\82Æ\82ñ\82Ç");
+#endif
         else
-#if 0 /*JP*/
+#if 0 /*JP:T*/
             You("seduce %s and %s starts to take off %s clothes.",
                 mon_nam(mdef), mhe(mdef), mhis(mdef));
 #else
@@ -1764,7 +1832,18 @@ struct attack *mattk;
 #endif
     }
 
+    /* prevent gold from being stolen so that steal-item isn't a superset
+       of steal-gold; shuffling it out of minvent before selecting next
+       item, and then back in case hero or monster dies (hero touching
+       stolen c'trice corpse or monster wielding one and having gloves
+       stolen) is less bookkeeping than skipping it within the loop or
+       taking it out once and then trying to figure out how to put it back */
+    if (gold)
+        obj_extract_self(gold);
+
     while ((otmp = mdef->minvent) != 0) {
+        if (gold) /* put 'mdef's gold back after remembering mdef->minvent */
+            mpickobj(mdef, gold), gold = 0;
         if (!Upolyd)
             break; /* no longer have ability to steal */
         /* take the object away from the monster */
@@ -1780,7 +1859,7 @@ struct attack *mattk;
             mdef->misc_worn_check |= I_SPECIAL;
 
             if (otmp == stealoid) /* special message for final item */
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                 pline("%s finishes taking off %s suit.", Monnam(mdef),
                       mhis(mdef));
 #else
@@ -1788,7 +1867,7 @@ struct attack *mattk;
 #endif
         }
         /* give the object to the character */
-#if 0 /*JP*/
+#if 0 /*JP:T*/
         otmp = hold_another_object(otmp, "You snatched but dropped %s.",
                                    doname(otmp), "You steal: ");
 #else
@@ -1806,12 +1885,25 @@ struct attack *mattk;
         } else if (unwornmask & W_ARMG) { /* stole worn gloves */
             mselftouch(mdef, (const char *) 0, TRUE);
             if (DEADMONSTER(mdef)) /* it's now a statue */
-                return;         /* can't continue stealing */
+                break; /* can't continue stealing */
         }
 
         if (!stealoid)
             break; /* only taking one item */
+
+        /* take gold out of minvent before making next selection; if it
+           is the only thing left, the loop will terminate and it will be
+           put back below */
+        if ((gold = findgold(mdef->minvent)) != 0)
+            obj_extract_self(gold);
     }
+
+    /* put gold back; won't happen if either hero or 'mdef' dies because
+       gold will be back in monster's inventory at either of those times
+       (so will be present in mdef's minvent for bones, or in its statue
+       now if it has just been turned into one) */
+    if (gold)
+        mpickobj(mdef, gold);
 }
 
 int
@@ -1838,7 +1930,7 @@ int specialdmg; /* blessed and/or silver bonus against various things */
     switch (mattk->adtyp) {
     case AD_STUN:
         if (!Blind)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
             pline("%s %s for a moment.", Monnam(mdef),
                   makeplural(stagger(pd, "stagger")));
 #else
@@ -1907,9 +1999,15 @@ int specialdmg; /* blessed and/or silver bonus against various things */
 */
                 pline("%s\82Í\8a®\91S\82É\94R\82¦\90s\82«\82½\81I", Monnam(mdef));
             else
+#if 0 /*JP:T*/
                 You("smell burning%s.",
                     (pd == &mons[PM_PAPER_GOLEM]) ? " paper"
                       : (pd == &mons[PM_STRAW_GOLEM]) ? " straw" : "");
+#else
+                You("%s\82ª\94R\82¦\82é\82É\82¨\82¢\82ª\82µ\82½\81D",
+                    (pd == &mons[PM_PAPER_GOLEM]) ? "\8e\86"
+                      : (pd == &mons[PM_STRAW_GOLEM]) ? "\82í\82ç" : "\89½\82©");
+#endif
             xkilled(mdef, XKILL_NOMSG | XKILL_NOCORPSE);
             tmp = 0;
             break;
@@ -2000,14 +2098,14 @@ int specialdmg; /* blessed and/or silver bonus against various things */
             if (merge_choice(invent, mongold) || inv_cnt(FALSE) < 52) {
                 addinv(mongold);
 /*JP
-                    Your("purse feels heavier.");
+                Your("purse feels heavier.");
 */
-                    You("\8dà\95z\82ª\8fd\82­\82È\82Á\82½\82æ\82¤\82È\8bC\82ª\82µ\82½\81D");
+                You("\8dà\95z\82ª\8fd\82­\82È\82Á\82½\82æ\82¤\82È\8bC\82ª\82µ\82½\81D");
             } else {
 /*JP
-                    You("grab %s's gold, but find no room in your knapsack.",
+                You("grab %s's gold, but find no room in your knapsack.",
 */
-                    You("%s\82Ì\82¨\8bà\82ð\82Â\82©\82ñ\82¾\82ª\81C\8e\9d\82¿\95¨\91Ü\82É\93ü\82ç\82È\82©\82Á\82½\81D",
+                You("%s\82Ì\82¨\8bà\82ð\82Â\82©\82ñ\82¾\82ª\81C\8e\9d\82¿\95¨\91Ü\82É\93ü\82ç\82È\82©\82Á\82½\81D",
                     mon_nam(mdef));
                 dropy(mongold);
             }
@@ -2057,7 +2155,7 @@ int specialdmg; /* blessed and/or silver bonus against various things */
         if (night() && !rn2(10) && !mdef->mcan) {
             if (pd == &mons[PM_CLAY_GOLEM]) {
                 if (!Blind)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                     pline("Some writing vanishes from %s head!",
                           s_suffix(mon_nam(mdef)));
 #else
@@ -2179,7 +2277,7 @@ int specialdmg; /* blessed and/or silver bonus against various things */
             break;
 
         if ((helmet = which_armor(mdef, W_ARMH)) != 0 && rn2(8)) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
             pline("%s %s blocks your attack to %s head.",
                   s_suffix(Monnam(mdef)), helm_simple_name(helmet),
                   mhis(mdef));
@@ -2226,7 +2324,7 @@ int specialdmg; /* blessed and/or silver bonus against various things */
             } else {
                 tmp = 0;
                 if (flags.verbose)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                     You("brush against %s %s.", s_suffix(mon_nam(mdef)),
                         mbodypart(mdef, LEG));
 #else
@@ -2705,7 +2803,7 @@ register struct attack *mattk;
                 if (DEADMONSTER(mdef)) /* not lifesaved */
                     return 2;
             }
-#if 0 /*JP*/
+#if 0 /*JP:T*/
             You("%s %s!", is_animal(youmonst.data) ? "regurgitate" : "expel",
                 mon_nam(mdef));
 #else
@@ -2713,7 +2811,7 @@ register struct attack *mattk;
                 is_animal(youmonst.data) ? "\93f\82«\96ß" : "\94r\8fo");
 #endif
             if (Slow_digestion || is_animal(youmonst.data)) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                 pline("Obviously, you didn't like %s taste.",
                       s_suffix(mon_nam(mdef)));
 #else
@@ -2881,11 +2979,13 @@ register struct monst *mon;
             if (dhit) {
                 int compat, specialdmg;
                 long silverhit = 0L;
+#if 0 /*JP*//* \82·\82×\82Ä\81u\8dU\8c\82\82µ\82½\81v\82É\82·\82é */
                 const char *verb = 0; /* verb or body part */
+#endif
 
                 if (!u.uswallow
                     && (compat = could_seduce(&youmonst, mon, mattk)) != 0) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                     You("%s %s %s.",
                         (mon->mcansee && haseyes(mon->data)) ? "smile at"
                                                              : "talk to",
@@ -2909,7 +3009,9 @@ register struct monst *mon;
                 case AT_CLAW:
                 case AT_TUCH:
                     /* verb=="claws" may be overridden below */
+#if 0 /*JP*/
                     verb = (mattk->aatyp == AT_TUCH) ? "touch" : "claws";
+#endif
                     /* decide if silver-hater will be hit by silver ring(s);
                        for 'multi_claw' where attacks alternate right/left,
                        assume 'even' claw or touch attacks use right hand
@@ -2930,35 +3032,49 @@ register struct monst *mon;
                 case AT_TENT:
                     /* assumes mind flayer's tentacles-on-head rather
                        than sea monster's tentacle-as-arm */
+#if 0 /*JP*/
                     verb = "tentacles";
+#endif
                     break;
                 case AT_KICK:
+#if 0 /*JP*/
                     verb = "kick";
+#endif
                     specialdmg = special_dmgval(&youmonst, mon, W_ARMF,
                                                 &silverhit);
                     break;
                 case AT_BUTT:
+#if 0 /*JP*/
                     verb = "head butt"; /* mbodypart(mon,HEAD)=="head" */
                     /* hypothetical; if any form with a head-butt attack
                        could wear a helmet, it would hit shades when
                        wearing a blessed (or silver) one */
+#endif
                     specialdmg = special_dmgval(&youmonst, mon, W_ARMH,
                                                 &silverhit);
                     break;
                 case AT_BITE:
+#if 0 /*JP*/
                     verb = "bite";
+#endif
                     break;
                 case AT_STNG:
+#if 0 /*JP*/
                     verb = "sting";
+#endif
                     break;
                 default:
+#if 0 /*JP*/
                     verb = "hit";
+#endif
                     break;
                 }
                 if (mon->data == &mons[PM_SHADE] && !specialdmg) {
+#if 0 /*JP*/
                     if (!strcmp(verb, "hit")
                         || (mattk->aatyp == AT_CLAW && humanoid(mon->data)))
                         verb = "attack";
+#endif
 #if 0 /*JP*/
                     Your("%s %s harmlessly through %s.",
                          verb, vtense(verb, "pass"), mon_nam(mon));
@@ -2969,13 +3085,19 @@ register struct monst *mon;
                 } else {
                     if (mattk->aatyp == AT_TENT) {
 /*JP
-                    Your("tentacles suck %s.", mon_nam(mon));
+                        Your("tentacles suck %s.", mon_nam(mon));
 */
-                    Your("\90G\8eè\82ª%s\82Ì\91Ì\89t\82ð\8bz\82¢\82Æ\82Á\82½\81D", mon_nam(mon));
+                        Your("\90G\8eè\82ª%s\82Ì\91Ì\89t\82ð\8bz\82¢\82Æ\82Á\82½\81D", mon_nam(mon));
                     } else {
+#if 0 /*JP*/
                         if (mattk->aatyp == AT_CLAW)
                             verb = "hit"; /* not "claws" */
+#endif
+#if 0 /*JP*/
                         You("%s %s.", verb, mon_nam(mon));
+#else
+                        You("%s\82ð\8dU\8c\82\82µ\82½\81D", mon_nam(mon));
+#endif
                         if (silverhit && flags.verbose)
                             silver_sears(&youmonst, mon, silverhit);
                     }
@@ -3033,13 +3155,19 @@ register struct monst *mon;
                     unconcerned = FALSE;
             }
             if (mon->data == &mons[PM_SHADE]) {
+#if 0 /*JP*/
                 const char *verb = byhand ? "grasp" : "hug";
+#endif
 
                 /* hugging a shade; successful if blessed outermost armor
                    for normal hug, or blessed gloves or silver ring(s) for
                    choking hug; deals damage but never grabs hold */
                 if (specialdmg) {
+#if 0 /*JP:T*/
                     You("%s %s%s", verb, mon_nam(mon), exclam(specialdmg));
+#else
+                    You("%s\82ð\82Â\82©\82ñ\82¾%s", mon_nam(mon), exclam(specialdmg));
+#endif
                     if (silverhit && flags.verbose)
                         silver_sears(&youmonst, mon, silverhit);
                     sum[i] = damageum(mon, mattk, specialdmg);
@@ -3056,7 +3184,7 @@ register struct monst *mon;
             }
             /* hug attack against ordinary foe */
             if (mon == u.ustuck) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                 pline("%s is being %s%s.", Monnam(mon),
                       byhand ? "throttled" : "crushed",
                       /* extra feedback for non-breather being choked */
@@ -3077,9 +3205,9 @@ register struct monst *mon;
                 if (u.ustuck && u.ustuck != mon)
                     uunstick();
 /*JP
-                    You("grab %s!", mon_nam(mon));
+                You("grab %s!", mon_nam(mon));
 */
-                    You("%s\82ð\82Â\82©\82Ü\82¦\82½\81I", mon_nam(mon));
+                You("%s\82ð\82Â\82©\82Ü\82¦\82½\81I", mon_nam(mon));
                 u.ustuck = mon;
                 if (silverhit && flags.verbose)
                     silver_sears(&youmonst, mon, silverhit);
@@ -3308,7 +3436,7 @@ boolean wep_was_destroyed;
 /*JP
             pline("A hail of magic missiles narrowly misses you!");
 */
-            pline("\96\82\96@\82Ì\96î\82Ì\89J\82ð\82È\82ñ\82Æ\82©\82©\82í\82µ\82½\81I");
+            pline("\96\82\96@\82Ì\96î\82Ì\89J\82ª\82©\82·\82ß\82Ä\82¢\82Á\82½\81I");
         } else {
 /*JP
             You("are hit by magic missiles appearing from thin air!");
@@ -3343,7 +3471,7 @@ boolean wep_was_destroyed;
                     break;
                 }
                 if (mon->mcansee) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                     if (ureflects("%s gaze is reflected by your %s.",
                                   s_suffix(Monnam(mon)))) {
 #else
@@ -3351,23 +3479,26 @@ boolean wep_was_destroyed;
                                   Monnam(mon))) {
 #endif
                         ;
-                    } else if (Free_action) {
-#if 0 /*JP*/
-                        You("momentarily stiffen under %s gaze!",
-                            s_suffix(mon_nam(mon)));
-#else
-                        You("%s\82Ì\82É\82ç\82Ý\82Å\88ê\8fu\8dd\92¼\82µ\82½\81I",
-                            mon_nam(mon));
-#endif
                     } else if (Hallucination && rn2(4)) {
-#if 0 /*JP*/
+                        /* [it's the hero who should be getting paralyzed
+                           and isn't; this message describes the monster's
+                           reaction rather than the hero's escape] */
+#if 0 /*JP:T*/
                         pline("%s looks %s%s.", Monnam(mon),
                               !rn2(2) ? "" : "rather ",
-                              !rn2(2) ? "numb" : "stupified");
+                              !rn2(2) ? "numb" : "stupefied");
 #else
                         pline("%s\82Í%s\82Î\82©\82É\82È\82Á\82½\82æ\82¤\82¾\81D", Monnam(mon),
                               !rn2(2) ? "" : "\8f­\82µ");
 #endif
+                    } else if (Free_action) {
+#if 0 /*JP:T*/
+                        You("momentarily stiffen under %s gaze!",
+                            s_suffix(mon_nam(mon)));
+#else
+                        You("%s\82Ì\82É\82ç\82Ý\82Å\88ê\8fu\8dd\92¼\82µ\82½\81I",
+                            mon_nam(mon));
+#endif
                     } else {
 /*JP
                         You("are frozen by %s gaze!", s_suffix(mon_nam(mon)));
@@ -3381,7 +3512,7 @@ boolean wep_was_destroyed;
                         nomovemsg = 0;
                     }
                 } else {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
                     pline("%s cannot defend itself.",
                           Adjmonnam(mon, "blind"));
 #else
@@ -3691,7 +3822,7 @@ light_hits_gremlin(mon, dmg)
 struct monst *mon;
 int dmg;
 {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
     pline("%s %s!", Monnam(mon),
           (dmg > mon->mhp / 2) ? "wails in agony" : "cries out in pain");
 #else