patch投げ用
Revision | d1a7e94618a8238b897629fde0c0db1e909d91d8 (tree) |
---|---|
Time | 2016-03-24 00:52:19 |
Author | SHIRAKATA Kentaro <argrath@ub32...> |
Commiter | SHIRAKATA Kentaro |
add translation
@@ -2869,7 +2869,10 @@ struct obj *obj; | ||
2869 | 2869 | otmp = getobj(lubricables, "grease"); |
2870 | 2870 | if (!otmp) |
2871 | 2871 | return; |
2872 | +/*JP | |
2872 | 2873 | if (inaccessible_equipment(otmp, "grease", FALSE)) |
2874 | +*/ | |
2875 | + if (inaccessible_equipment(otmp, "に脂を塗る", FALSE)) | |
2873 | 2876 | return; |
2874 | 2877 | consume_obj_charge(obj, TRUE); |
2875 | 2878 |
@@ -119,7 +119,10 @@ const char *goal; | ||
119 | 119 | boolean hilite_state = FALSE; |
120 | 120 | |
121 | 121 | if (!goal) |
122 | +/*JP | |
122 | 123 | goal = "desired location"; |
124 | +*/ | |
125 | + goal = "目的地"; | |
123 | 126 | if (flags.verbose) { |
124 | 127 | /*JP |
125 | 128 | pline("(For instructions type a ?)"); |
@@ -139,7 +142,10 @@ const char *goal; | ||
139 | 142 | #endif |
140 | 143 | for (;;) { |
141 | 144 | if (show_goal_msg) { |
145 | +/*JP | |
142 | 146 | pline("Move cursor to %s:", goal); |
147 | +*/ | |
148 | + pline("カーソルを%sに動かしてください:", goal); | |
143 | 149 | curs(WIN_MAP, cx, cy); |
144 | 150 | flush_screen(0); |
145 | 151 | show_goal_msg = FALSE; |
@@ -241,9 +247,15 @@ const char *goal; | ||
241 | 247 | goto nxtc; |
242 | 248 | } else if (c == '#') { |
243 | 249 | auto_msg = !auto_msg; |
250 | +#if 0 /*JP*/ | |
244 | 251 | pline("Automatic description %sis %s.", |
245 | 252 | flags.verbose ? "of features under cursor " : "", |
246 | 253 | auto_msg ? "on" : "off"); |
254 | +#else | |
255 | + pline("%s説明自動表示:%s", | |
256 | + flags.verbose ? "カーソルの下にあるものの" : "", | |
257 | + auto_msg ? "オン" : "オフ"); | |
258 | +#endif | |
247 | 259 | if (!auto_msg) |
248 | 260 | show_goal_msg = TRUE; |
249 | 261 | msg_given = TRUE; |
@@ -897,8 +909,13 @@ namefloorobj() | ||
897 | 909 | } |
898 | 910 | if (!obj) { |
899 | 911 | /* "under you" is safe here since there's no object to hide under */ |
912 | +#if 0 /*JP*/ | |
900 | 913 | pline("There doesn't seem to be any object %s.", |
901 | 914 | (cc.x == u.ux && cc.y == u.uy) ? "under you" : "there"); |
915 | +#else | |
916 | + pline("%sには何もないようだ.", | |
917 | + (cc.x == u.ux && cc.y == u.uy) ? "あなたの下" : "そこ"); | |
918 | +#endif | |
902 | 919 | return; |
903 | 920 | } |
904 | 921 | /* note well: 'obj' might be as instance of STRANGE_OBJECT if target |
@@ -927,16 +944,35 @@ namefloorobj() | ||
927 | 944 | /* traditional */ |
928 | 945 | unames[4] = roguename(); |
929 | 946 | /* silly */ |
947 | +/*JP | |
930 | 948 | unames[5] = "Wibbly Wobbly"; |
949 | +*/ | |
950 | + unames[5] = "うろうろ"; | |
951 | +#if 0 /*JP*/ | |
931 | 952 | pline("%s %s to call you \"%s.\"", |
932 | 953 | The(buf), use_plural ? "decide" : "decides", |
933 | 954 | unames[rn2(SIZE(unames))]); |
955 | +#else | |
956 | + pline("%sはあなたを「%s」と呼ぶことに決めた.", | |
957 | + buf, | |
958 | + unames[rn2(SIZE(unames))]); | |
959 | +#endif | |
934 | 960 | } else if (!objtyp_is_callable(obj->otyp)) { |
961 | +#if 0 /*JP*/ | |
935 | 962 | pline("%s %s can't be assigned a type name.", |
936 | 963 | use_plural ? "Those" : "That", buf); |
964 | +#else | |
965 | + pline("%sに種類の名前を割り当てることはできない.", | |
966 | + buf); | |
967 | +#endif | |
937 | 968 | } else if (!obj->dknown) { |
969 | +#if 0 /*JP*/ | |
938 | 970 | You("don't know %s %s well enough to name %s.", |
939 | 971 | use_plural ? "those" : "that", buf, use_plural ? "them" : "it"); |
972 | +#else | |
973 | + You("名前を付けられるほど%sのことをよく知らない.", | |
974 | + buf); | |
975 | +#endif | |
940 | 976 | } else { |
941 | 977 | docall(obj); |
942 | 978 | } |
@@ -1055,9 +1091,15 @@ boolean called; | ||
1055 | 1091 | /* an "aligned priest" not flagged as a priest or minion should be |
1056 | 1092 | "priest" or "priestess" (normally handled by priestname()) */ |
1057 | 1093 | if (mdat == &mons[PM_ALIGNED_PRIEST]) |
1094 | +/*JP | |
1058 | 1095 | pm_name = mtmp->female ? "priestess" : "priest"; |
1096 | +*/ | |
1097 | + pm_name = mtmp->female ? "尼僧" : "僧侶"; | |
1059 | 1098 | else if (mdat == &mons[PM_HIGH_PRIEST] && mtmp->female) |
1099 | +/*JP | |
1060 | 1100 | pm_name = "high priestess"; |
1101 | +*/ | |
1102 | + pm_name = "法王"; | |
1061 | 1103 | |
1062 | 1104 | /* Shopkeepers: use shopkeeper name. For normal shopkeepers, just |
1063 | 1105 | * "Asidonhopo"; for unusual ones, "Asidonhopo the invisible |
@@ -134,7 +134,10 @@ boolean on; | ||
134 | 134 | */ |
135 | 135 | Your("静かに動けるようになった."); |
136 | 136 | else if (Levitation || Flying) |
137 | +/*JP | |
137 | 138 | You("float imperceptibly."); |
139 | +*/ | |
140 | + You("いつのまにか浮いていた."); | |
138 | 141 | else |
139 | 142 | /*JP |
140 | 143 | You("walk very quietly."); |
@@ -179,8 +182,13 @@ boolean on; | ||
179 | 182 | || Detect_monsters))) { |
180 | 183 | makeknown(obj->otyp); |
181 | 184 | |
185 | +#if 0 /*JP*/ | |
182 | 186 | You_feel("that monsters%s have difficulty pinpointing your location.", |
183 | 187 | on ? "" : " no longer"); |
188 | +#else | |
189 | + You_feel("怪物はあなたの位置がはっきりと分か%sなったようだ.", | |
190 | + on ? "らなく" : "るように"); | |
191 | +#endif | |
184 | 192 | } |
185 | 193 | } |
186 | 194 |
@@ -508,7 +516,7 @@ Helmet_on(VOID_ARGS) | ||
508 | 516 | You("%sような気がした.", |
509 | 517 | ACURR(A_INT) |
510 | 518 | <= (ABASE(A_INT) + ABON(A_INT) + ATEMP(A_INT)) |
511 | - ? "街角に座っている" | |
519 | + ? "隅っこに座っている" | |
512 | 520 | : "目がまわった"); |
513 | 521 | #endif |
514 | 522 | } else { |
@@ -1461,9 +1469,15 @@ struct obj *stolenobj; /* no message if stolenobj is already being doffing */ | ||
1461 | 1469 | by unmul() since the on or off action isn't completing */ |
1462 | 1470 | afternmv = 0; |
1463 | 1471 | if (putting_on || otmp != stolenobj) { |
1472 | +#if 0 /*JP*/ | |
1464 | 1473 | Sprintf(buf, "You stop %s %s.", |
1465 | 1474 | putting_on ? "putting on" : "taking off", |
1466 | 1475 | thesimpleoname(otmp)); |
1476 | +#else | |
1477 | + Sprintf(buf, "あなたは%sを%sのを止めた.", | |
1478 | + thesimpleoname(otmp), | |
1479 | + putting_on ? "身につける" : "外す"); | |
1480 | +#endif | |
1467 | 1481 | } else { |
1468 | 1482 | buf[0] = '\0'; /* silently stop doffing stolenobj */ |
1469 | 1483 | result = -multi; /* remember this before calling unmul() */ |
@@ -1533,7 +1547,10 @@ armor_or_accessory_off(obj) | ||
1533 | 1547 | struct obj *obj; |
1534 | 1548 | { |
1535 | 1549 | if (!(obj->owornmask & (W_ARMOR | W_ACCESSORY))) { |
1550 | +/*JP | |
1536 | 1551 | You("are not wearing that."); |
1552 | +*/ | |
1553 | + You("それを身につけていない."); | |
1537 | 1554 | return 0; |
1538 | 1555 | } |
1539 | 1556 |
@@ -2099,7 +2116,7 @@ struct obj *obj; | ||
2099 | 2116 | /*JP |
2100 | 2117 | You("cannot make the ring stick to your body."); |
2101 | 2118 | */ |
2102 | - You("指輪をはめれない体だ."); | |
2119 | + You("指輪をはめられない体だ."); | |
2103 | 2120 | return 0; |
2104 | 2121 | } |
2105 | 2122 | if (uleft && uright) { |
@@ -2225,7 +2242,7 @@ struct obj *obj; | ||
2225 | 2242 | /*JP |
2226 | 2243 | You_cant("wear that!"); |
2227 | 2244 | */ |
2228 | - You_cant("wear that!"); | |
2245 | + You_cant("それを身につけられない!"); | |
2229 | 2246 | return 0; |
2230 | 2247 | } |
2231 | 2248 | } |
@@ -2310,7 +2327,10 @@ dowear() | ||
2310 | 2327 | if (uarm && uarmu && uarmc && uarmh && uarms && uarmg && uarmf |
2311 | 2328 | && uleft && uright && uamul && ublindf) { |
2312 | 2329 | /* 'W' message doesn't mention accessories */ |
2330 | +/*JP | |
2313 | 2331 | You("are already wearing a full complement of armor."); |
2332 | +*/ | |
2333 | + You("すでに完全装備している."); | |
2314 | 2334 | return 0; |
2315 | 2335 | } |
2316 | 2336 | otmp = getobj(clothes, "wear"); |
@@ -3125,10 +3145,16 @@ boolean | ||
3125 | 3145 | inaccessible_equipment(obj, verb, only_if_known_cursed) |
3126 | 3146 | struct obj *obj; |
3127 | 3147 | const char *verb; /* "dip" or "grease", or null to avoid messages */ |
3148 | +/*JP:日本語では "を浸す", "に脂を塗る", null のいずれか*/ | |
3128 | 3149 | boolean only_if_known_cursed; /* ignore covering unless known to be cursed */ |
3129 | 3150 | { |
3151 | +#if 0 /*JP*/ | |
3130 | 3152 | static NEARDATA const char need_to_take_off_outer_armor[] = |
3131 | 3153 | "need to take off %s to %s %s."; |
3154 | +#else /*JP:引数が原文と変わっていることに注意*/ | |
3155 | + static NEARDATA const char need_to_take_off_outer_armor[] = | |
3156 | + "%s%sには%sを%s必要がある."; | |
3157 | +#endif | |
3132 | 3158 | char buf[BUFSZ]; |
3133 | 3159 | boolean anycovering = !only_if_known_cursed; /* more comprehensible... */ |
3134 | 3160 | #define BLOCKSACCESS(x) (anycovering || ((x)->cursed && (x)->bknown)) |
@@ -3140,7 +3166,11 @@ boolean only_if_known_cursed; /* ignore covering unless known to be cursed */ | ||
3140 | 3166 | if (obj == uarm && uarmc && BLOCKSACCESS(uarmc)) { |
3141 | 3167 | if (verb) { |
3142 | 3168 | Strcpy(buf, yname(uarmc)); |
3169 | +#if 0 /*JP*/ | |
3143 | 3170 | You(need_to_take_off_outer_armor, buf, verb, yname(obj)); |
3171 | +#else /*JP:対象はクロークなのでjoffmsgを使わず決め撃ち*/ | |
3172 | + You(need_to_take_off_outer_armor, xname(obj), verb, buf, "脱ぐ"); | |
3173 | +#endif | |
3144 | 3174 | } |
3145 | 3175 | return TRUE; |
3146 | 3176 | } |
@@ -3160,10 +3190,17 @@ boolean only_if_known_cursed; /* ignore covering unless known to be cursed */ | ||
3160 | 3190 | if (uarmc) |
3161 | 3191 | Strcat(buf, yname(uarmc)); |
3162 | 3192 | if (uarm && uarmc) |
3193 | +/*JP | |
3163 | 3194 | Strcat(buf, " and "); |
3195 | +*/ | |
3196 | + Strcat(buf, "と"); | |
3164 | 3197 | if (uarm) |
3165 | 3198 | Strcat(buf, sameprefix ? xname(uarm) : yname(uarm)); |
3199 | +#if 0 /*JP*/ | |
3166 | 3200 | You(need_to_take_off_outer_armor, buf, verb, yname(obj)); |
3201 | +#else /*JP:対象はクロークか鎧なのでjoffmsgを使わず決め撃ち*/ | |
3202 | + You(need_to_take_off_outer_armor, xname(obj), verb, buf, "脱ぐ"); | |
3203 | +#endif | |
3167 | 3204 | } |
3168 | 3205 | return TRUE; |
3169 | 3206 | } |
@@ -3171,7 +3208,11 @@ boolean only_if_known_cursed; /* ignore covering unless known to be cursed */ | ||
3171 | 3208 | if ((obj == uleft || obj == uright) && uarmg && BLOCKSACCESS(uarmg)) { |
3172 | 3209 | if (verb) { |
3173 | 3210 | Strcpy(buf, yname(uarmg)); |
3211 | +#if 0 /*JP*/ | |
3174 | 3212 | You(need_to_take_off_outer_armor, buf, verb, yname(obj)); |
3213 | +#else /*JP:対象は小手なのでjoffmsgを使わず決め撃ち*/ | |
3214 | + You(need_to_take_off_outer_armor, xname(obj), verb, buf, "はずす"); | |
3215 | +#endif | |
3175 | 3216 | } |
3176 | 3217 | return TRUE; |
3177 | 3218 | } |
@@ -332,8 +332,13 @@ boolean devour; | ||
332 | 332 | /* edible item owned by shop has been thrown or kicked |
333 | 333 | by hero and caught by tame or food-tameable monst */ |
334 | 334 | oprice = unpaid_cost(obj, TRUE); |
335 | +#if 0 /*JP*/ | |
335 | 336 | pline("That %s will cost you %ld %s.", objnambuf, oprice, |
336 | 337 | currency(oprice)); |
338 | +#else | |
339 | + pline("あの%sは%ld%sだ.", objnambuf, oprice, | |
340 | + currency(oprice)); | |
341 | +#endif | |
337 | 342 | /* delobj->obfree will handle actual shop billing update */ |
338 | 343 | } |
339 | 344 | delobj(obj); |
@@ -1150,6 +1155,7 @@ struct monst *mtmp; | ||
1150 | 1155 | (on the other hand, perhaps you're sensing a brief glimpse |
1151 | 1156 | of its mind as it changes form) */ |
1152 | 1157 | newsym(mtmp->mx, mtmp->my); |
1158 | +#if 0 /*JP*/ | |
1153 | 1159 | You("%s %s appear where %s was!", |
1154 | 1160 | cansee(mtmp->mx, mtmp->my) ? "see" : "sense", |
1155 | 1161 | (mtmp->m_ap_type == M_AP_FURNITURE) |
@@ -1164,6 +1170,22 @@ struct monst *mtmp; | ||
1164 | 1170 | ? an(mons[mtmp->mappearance].mname) |
1165 | 1171 | : something, |
1166 | 1172 | buf); |
1173 | +#else | |
1174 | + You("%sがあったところに%sが現れたの%s!", | |
1175 | + buf, | |
1176 | + (mtmp->m_ap_type == M_AP_FURNITURE) | |
1177 | + ? an(defsyms[mtmp->mappearance].explanation) | |
1178 | + : (mtmp->m_ap_type == M_AP_OBJECT | |
1179 | + && OBJ_DESCR(objects[mtmp->mappearance])) | |
1180 | + ? an(OBJ_DESCR(objects[mtmp->mappearance])) | |
1181 | + : (mtmp->m_ap_type == M_AP_OBJECT | |
1182 | + && OBJ_NAME(objects[mtmp->mappearance])) | |
1183 | + ? an(OBJ_NAME(objects[mtmp->mappearance])) | |
1184 | + : (mtmp->m_ap_type == M_AP_MONSTER) | |
1185 | + ? an(mons[mtmp->mappearance].mname) | |
1186 | + : something, | |
1187 | + cansee(mtmp->mx, mtmp->my) ? "を見た" : "に気づいた"); | |
1188 | +#endif | |
1167 | 1189 | display_nhwindow(WIN_MAP, TRUE); |
1168 | 1190 | } |
1169 | 1191 | } |
@@ -194,8 +194,13 @@ xchar x, y; | ||
194 | 194 | map_invisible(x, y); |
195 | 195 | else |
196 | 196 | newsym(x, y); |
197 | +#if 0 /*JP*/ | |
197 | 198 | There("is %s here.", |
198 | 199 | canspotmon(mon) ? a_monnam(mon) : "something hidden"); |
200 | +#else | |
201 | + There("%sがいる.", | |
202 | + canspotmon(mon) ? a_monnam(mon) : "何か隠れているもの"); | |
203 | +#endif | |
199 | 204 | } |
200 | 205 | |
201 | 206 | /* Kick attacks by kicking monsters are normal attacks, not special. |
@@ -424,6 +429,7 @@ register struct obj *gold; | ||
424 | 429 | out of the vault. If he did do that, player |
425 | 430 | could try fighting, then weasle out of being |
426 | 431 | killed by throwing his/her gold when losing. */ |
432 | +#if 0 /*JP*/ | |
427 | 433 | verbalize( |
428 | 434 | umoney |
429 | 435 | ? "Drop the rest and follow me." |
@@ -432,6 +438,16 @@ register struct obj *gold; | ||
432 | 438 | : mtmp->mpeaceful |
433 | 439 | ? "I'll take care of that; please move along." |
434 | 440 | : "I'll take that; now get moving."); |
441 | +#else | |
442 | + verbalize( | |
443 | + umoney | |
444 | + ? "残りを置いてついてきなさい." | |
445 | + : hidden_gold() | |
446 | + ? "まだ金を隠しているな.置きなさい." | |
447 | + : mtmp->mpeaceful | |
448 | + ? "それは私が拾っておきますからついてきてください." | |
449 | + : "それは拾っておく.来なさい."); | |
450 | +#endif | |
435 | 451 | } else if (is_mercenary(mtmp->data)) { |
436 | 452 | long goldreqd = 0L; |
437 | 453 |
@@ -783,20 +799,36 @@ xchar x, y; | ||
783 | 799 | kickedobj = splitobj(kickedobj, 1L); |
784 | 800 | } else { |
785 | 801 | if (rn2(20)) { |
802 | +#if 0 /*JP*/ | |
786 | 803 | static NEARDATA const char *const flyingcoinmsg[] = { |
787 | 804 | "scatter the coins", "knock coins all over the place", |
788 | 805 | "send coins flying in all directions", |
789 | 806 | }; |
807 | +#else | |
808 | + static NEARDATA const char *const flyingcoinmsg[] = { | |
809 | + "金貨をまき散らした", "金貨をばらまいた", | |
810 | + "金貨をあちこちに飛ばした", | |
811 | + }; | |
812 | +#endif | |
790 | 813 | |
814 | +/*JP | |
791 | 815 | pline("Thwwpingg!"); |
816 | +*/ | |
817 | + pline("ガシャーン!"); | |
818 | +/*JP | |
792 | 819 | You("%s!", flyingcoinmsg[rn2(SIZE(flyingcoinmsg))]); |
820 | +*/ | |
821 | + You("%s!", flyingcoinmsg[rn2(SIZE(flyingcoinmsg))]); | |
793 | 822 | (void) scatter(x, y, rn2(3) + 1, VIS_EFFECTS | MAY_HIT, |
794 | 823 | kickedobj); |
795 | 824 | newsym(x, y); |
796 | 825 | return 1; |
797 | 826 | } |
798 | 827 | if (kickedobj->quan > 300L) { |
828 | +/*JP | |
799 | 829 | pline("Thump!"); |
830 | +*/ | |
831 | + pline("ゴツン!"); | |
800 | 832 | return (!rn2(3) || martial()); |
801 | 833 | } |
802 | 834 | } |
@@ -995,9 +1027,15 @@ dokick() | ||
995 | 1027 | |
996 | 1028 | if (wl == BOTH_SIDES) |
997 | 1029 | bp = makeplural(bp); |
1030 | +#if 0 /*JP*/ | |
998 | 1031 | Your("%s%s %s in no shape for kicking.", |
999 | 1032 | (wl == LEFT_SIDE) ? "left " : (wl == RIGHT_SIDE) ? "right " : "", |
1000 | 1033 | bp, (wl == BOTH_SIDES) ? "are" : "is"); |
1034 | +#else | |
1035 | + Your("%s%sは蹴りができる状態じゃない.", | |
1036 | + (wl == LEFT_SIDE) ? "左" : (wl == RIGHT_SIDE) ? "右" : "", | |
1037 | + bp); | |
1038 | +#endif | |
1001 | 1039 | no_kick = TRUE; |
1002 | 1040 | } else if (near_capacity() > SLT_ENCUMBER) { |
1003 | 1041 | /*JP |
@@ -1362,9 +1400,16 @@ dokick() | ||
1362 | 1400 | (void) mksobj_at(ROCK, x, y, TRUE, FALSE); |
1363 | 1401 | del_engr_at(x, y); |
1364 | 1402 | if (Blind) |
1403 | +#if 0 /*JP*/ | |
1365 | 1404 | pline("Crack! %s broke!", Something); |
1405 | +#else | |
1406 | + pline("ゴツン!何かが壊れた!"); | |
1407 | +#endif | |
1366 | 1408 | else { |
1409 | +/*JP | |
1367 | 1410 | pline_The("headstone topples over and breaks!"); |
1411 | +*/ | |
1412 | + pline("墓石は倒れて壊れた!"); | |
1368 | 1413 | newsym(x, y); |
1369 | 1414 | } |
1370 | 1415 | return 1; |
@@ -282,7 +282,11 @@ int *shotlimit_p; /* (see dothrow()) */ | ||
282 | 282 | You("何かを投げるのは物理的に無理だ."); |
283 | 283 | return FALSE; |
284 | 284 | } else if (nohands(youmonst.data)) { |
285 | +#if 0 /*JP*/ | |
285 | 286 | You_cant("throw or shoot without hands."); /* not body_part(HAND) */ |
287 | +#else | |
288 | + You("手がない."); /* not body_part(HAND) */ | |
289 | +#endif | |
286 | 290 | return FALSE; |
287 | 291 | /*[what about !freehand(), aside from cursed missile launcher?]*/ |
288 | 292 | } |
@@ -428,7 +432,10 @@ dofire() | ||
428 | 432 | /* give feedback if quiver has now been filled */ |
429 | 433 | if (uquiver) { |
430 | 434 | uquiver->owornmask &= ~W_QUIVER; /* less verbose */ |
435 | +/*JP | |
431 | 436 | prinv("You ready:", uquiver, 0L); |
437 | +*/ | |
438 | + prinv("準備:", uquiver, 0L); | |
432 | 439 | uquiver->owornmask |= W_QUIVER; |
433 | 440 | } |
434 | 441 | } |
@@ -1013,7 +1020,10 @@ boolean hitsroof; | ||
1013 | 1020 | /* egg ends up "all over your face"; perhaps |
1014 | 1021 | visored helmet should still save you here */ |
1015 | 1022 | if (uarmh) |
1023 | +/*JP | |
1016 | 1024 | Your("%s fails to protect you.", helm_simple_name(uarmh)); |
1025 | +*/ | |
1026 | + Your("%sはあなたを守れなかった.", helm_simple_name(uarmh)); | |
1017 | 1027 | goto petrify; |
1018 | 1028 | } |
1019 | 1029 | case CREAM_PIE: |
@@ -2009,9 +2019,15 @@ xchar x, y; | ||
2009 | 2019 | && (mtmp = makemon(&mons[rn2(3) ? PM_HOMUNCULUS : PM_IMP], x, y, |
2010 | 2020 | NO_MM_FLAGS)) != 0) { |
2011 | 2021 | if (canspotmon(mtmp)) |
2022 | +#if 0 /*JP*/ | |
2012 | 2023 | pline("%s is released!", Hallucination |
2013 | 2024 | ? An(rndmonnam(NULL)) |
2014 | 2025 | : "The picture-painting demon"); |
2026 | +#else | |
2027 | + pline("%sが解放された!", Hallucination | |
2028 | + ? rndmonnam(NULL) | |
2029 | + : "お絵描きの悪魔"); | |
2030 | +#endif | |
2015 | 2031 | mtmp->mpeaceful = !obj->cursed; |
2016 | 2032 | set_malign(mtmp); |
2017 | 2033 | } |
@@ -31,7 +31,10 @@ nhsym l_syms[SYM_MAX] = DUMMY; /* loaded symbols */ | ||
31 | 31 | nhsym r_syms[SYM_MAX] = DUMMY; /* rogue symbols */ |
32 | 32 | |
33 | 33 | nhsym warnsyms[WARNCOUNT] = DUMMY; /* the current warning display symbols */ |
34 | +/*JP | |
34 | 35 | const char invisexplain[] = "remembered, unseen, creature"; |
36 | +*/ | |
37 | +const char invisexplain[] = "覚えているが見えていない怪物"; | |
35 | 38 | |
36 | 39 | /* Default object class symbols. See objclass.h. |
37 | 40 | * {symbol, name, explain} |
@@ -40,88 +43,319 @@ const char invisexplain[] = "remembered, unseen, creature"; | ||
40 | 43 | */ |
41 | 44 | const struct class_sym def_oc_syms[MAXOCLASSES] = { |
42 | 45 | { '\0', "", "" }, /* placeholder for the "random class" */ |
46 | +/*JP | |
43 | 47 | { ILLOBJ_SYM, "illegal objects", "strange object" }, |
48 | +*/ | |
49 | + { ILLOBJ_SYM, "奇妙な物体", "奇妙な物体" }, | |
50 | +/*JP | |
44 | 51 | { WEAPON_SYM, "weapons", "weapon" }, |
52 | +*/ | |
53 | + { WEAPON_SYM, "武器", "武器" }, | |
54 | +/*JP | |
45 | 55 | { ARMOR_SYM, "armor", "suit or piece of armor" }, |
56 | +*/ | |
57 | + { ARMOR_SYM, "鎧", "服または鎧のたぐい" }, | |
58 | +/*JP | |
46 | 59 | { RING_SYM, "rings", "ring" }, |
60 | +*/ | |
61 | + { RING_SYM, "指輪", "指輪" }, | |
62 | +/*JP | |
47 | 63 | { AMULET_SYM, "amulets", "amulet" }, |
64 | +*/ | |
65 | + { AMULET_SYM, "魔除け", "魔除け" }, | |
66 | +/*JP | |
48 | 67 | { TOOL_SYM, "tools", "useful item (pick-axe, key, lamp...)" }, |
68 | +*/ | |
69 | + { TOOL_SYM, "道具", "便利な道具(つるはし,鍵,ランプ...)" }, | |
70 | +/*JP | |
49 | 71 | { FOOD_SYM, "food", "piece of food" }, |
72 | +*/ | |
73 | + { FOOD_SYM, "食料", "食料" }, | |
74 | +/*JP | |
50 | 75 | { POTION_SYM, "potions", "potion" }, |
76 | +*/ | |
77 | + { POTION_SYM, "薬", "薬" }, | |
78 | +/*JP | |
51 | 79 | { SCROLL_SYM, "scrolls", "scroll" }, |
80 | +*/ | |
81 | + { SCROLL_SYM, "巻物", "巻物" }, | |
82 | +/*JP | |
52 | 83 | { SPBOOK_SYM, "spellbooks", "spellbook" }, |
84 | +*/ | |
85 | + { SPBOOK_SYM, "魔法書", "魔法書" }, | |
86 | +/*JP | |
53 | 87 | { WAND_SYM, "wands", "wand" }, |
88 | +*/ | |
89 | + { WAND_SYM, "杖", "杖" }, | |
90 | +/*JP | |
54 | 91 | { GOLD_SYM, "coins", "pile of coins" }, |
92 | +*/ | |
93 | + { GOLD_SYM, "金貨", "金貨の山" }, | |
94 | +/*JP | |
55 | 95 | { GEM_SYM, "rocks", "gem or rock" }, |
96 | +*/ | |
97 | + { GEM_SYM, "石", "宝石または石" }, | |
98 | +/*JP | |
56 | 99 | { ROCK_SYM, "large stones", "boulder or statue" }, |
100 | +*/ | |
101 | + { ROCK_SYM, "巨石", "岩または像" }, | |
102 | +/*JP | |
57 | 103 | { BALL_SYM, "iron balls", "iron ball" }, |
104 | +*/ | |
105 | + { BALL_SYM, "鉄球", "鉄球" }, | |
106 | +/*JP | |
58 | 107 | { CHAIN_SYM, "chains", "iron chain" }, |
108 | +*/ | |
109 | + { CHAIN_SYM, "鎖", "鉄の鎖" }, | |
110 | +/*JP | |
59 | 111 | { VENOM_SYM, "venoms", "splash of venom" } |
112 | +*/ | |
113 | + { VENOM_SYM, "毒", "毒液" } | |
60 | 114 | }; |
61 | 115 | |
62 | 116 | /* Default monster class symbols. See monsym.h. */ |
63 | 117 | const struct class_sym def_monsyms[MAXMCLASSES] = { |
64 | 118 | { '\0', "", "" }, |
119 | +/*JP | |
65 | 120 | { DEF_ANT, "", "ant or other insect" }, |
121 | +*/ | |
122 | + { DEF_ANT, "", "蟻または他の昆虫" }, | |
123 | +/*JP | |
66 | 124 | { DEF_BLOB, "", "blob" }, |
125 | +*/ | |
126 | + { DEF_BLOB, "", "ブロッブ" }, | |
127 | +/*JP | |
67 | 128 | { DEF_COCKATRICE, "", "cockatrice" }, |
129 | +*/ | |
130 | + { DEF_COCKATRICE, "", "コカトリス" }, | |
131 | +/*JP | |
68 | 132 | { DEF_DOG, "", "dog or other canine" }, |
133 | +*/ | |
134 | + { DEF_DOG, "", "犬またはイヌ科の動物" }, | |
135 | +/*JP | |
69 | 136 | { DEF_EYE, "", "eye or sphere" }, |
137 | +*/ | |
138 | + { DEF_EYE, "", "目または球体" }, | |
139 | +/*JP | |
70 | 140 | { DEF_FELINE, "", "cat or other feline" }, |
141 | +*/ | |
142 | + { DEF_FELINE, "", "猫またはネコ科の動物" }, | |
143 | +/*JP | |
71 | 144 | { DEF_GREMLIN, "", "gremlin" }, |
145 | +*/ | |
146 | + { DEF_GREMLIN, "", "グレムリン" }, | |
147 | +/*JP | |
72 | 148 | { DEF_HUMANOID, "", "humanoid" }, |
149 | +*/ | |
150 | + { DEF_HUMANOID, "", "ヒューマノイド" }, | |
151 | +/*JP | |
73 | 152 | { DEF_IMP, "", "imp or minor demon" }, |
153 | +*/ | |
154 | + { DEF_IMP, "", "インプまたは下級悪魔" }, | |
155 | +/*JP | |
74 | 156 | { DEF_JELLY, "", "jelly" }, |
157 | +*/ | |
158 | + { DEF_JELLY, "", "ゼリー" }, | |
159 | +/*JP | |
75 | 160 | { DEF_KOBOLD, "", "kobold" }, |
161 | +*/ | |
162 | + { DEF_KOBOLD, "", "コボルト" }, | |
163 | +/*JP | |
76 | 164 | { DEF_LEPRECHAUN, "", "leprechaun" }, |
165 | +*/ | |
166 | + { DEF_LEPRECHAUN, "", "レプラコーン" }, | |
167 | +/*JP | |
77 | 168 | { DEF_MIMIC, "", "mimic" }, |
169 | +*/ | |
170 | + { DEF_MIMIC, "", "ミミック" }, | |
171 | +/*JP | |
78 | 172 | { DEF_NYMPH, "", "nymph" }, |
173 | +*/ | |
174 | + { DEF_NYMPH, "", "ニンフ" }, | |
175 | +/*JP | |
79 | 176 | { DEF_ORC, "", "orc" }, |
177 | +*/ | |
178 | + { DEF_ORC, "", "オーク" }, | |
179 | +/*JP | |
80 | 180 | { DEF_PIERCER, "", "piercer" }, |
181 | +*/ | |
182 | + { DEF_PIERCER, "", "穴喰い" }, | |
183 | +/*JP | |
81 | 184 | { DEF_QUADRUPED, "", "quadruped" }, |
185 | +*/ | |
186 | + { DEF_QUADRUPED, "", "四足動物" }, | |
187 | +/*JP | |
82 | 188 | { DEF_RODENT, "", "rodent" }, |
189 | +*/ | |
190 | + { DEF_RODENT, "", "齧歯動物" }, | |
191 | +/*JP | |
83 | 192 | { DEF_SPIDER, "", "arachnid or centipede" }, |
193 | +*/ | |
194 | + { DEF_SPIDER, "", "クモ形類動物またはムカデ" }, | |
195 | +/*JP | |
84 | 196 | { DEF_TRAPPER, "", "trapper or lurker above" }, |
197 | +*/ | |
198 | + { DEF_TRAPPER, "", "トラッパーまたはラーカー" }, | |
199 | +/*JP | |
85 | 200 | { DEF_UNICORN, "", "unicorn or horse" }, |
201 | +*/ | |
202 | + { DEF_UNICORN, "", "ユニコーンまたは馬" }, | |
203 | +/*JP | |
86 | 204 | { DEF_VORTEX, "", "vortex" }, |
205 | +*/ | |
206 | + { DEF_VORTEX, "", "渦" }, | |
207 | +/*JP | |
87 | 208 | { DEF_WORM, "", "worm" }, |
209 | +*/ | |
210 | + { DEF_WORM, "", "ワーム" }, | |
211 | +/*JP | |
88 | 212 | { DEF_XAN, "", "xan or other mythical/fantastic insect" }, |
213 | +*/ | |
214 | + { DEF_XAN, "", "ザンまたは神話やファンタジーの昆虫" }, | |
215 | +/*JP | |
89 | 216 | { DEF_LIGHT, "", "light" }, |
217 | +*/ | |
218 | + { DEF_LIGHT, "", "光" }, | |
219 | +/*JP | |
90 | 220 | { DEF_ZRUTY, "", "zruty" }, |
221 | +*/ | |
222 | + { DEF_ZRUTY, "", "ズルティ" }, | |
223 | +/*JP | |
91 | 224 | { DEF_ANGEL, "", "angelic being" }, |
225 | +*/ | |
226 | + { DEF_ANGEL, "", "天使" }, | |
227 | +/*JP | |
92 | 228 | { DEF_BAT, "", "bat or bird" }, |
229 | +*/ | |
230 | + { DEF_BAT, "", "こうもりまたは鳥" }, | |
231 | +/*JP | |
93 | 232 | { DEF_CENTAUR, "", "centaur" }, |
233 | +*/ | |
234 | + { DEF_CENTAUR, "", "ケンタウロス" }, | |
235 | +/*JP | |
94 | 236 | { DEF_DRAGON, "", "dragon" }, |
237 | +*/ | |
238 | + { DEF_DRAGON, "", "ドラゴン" }, | |
239 | +/*JP | |
95 | 240 | { DEF_ELEMENTAL, "", "elemental" }, |
241 | +*/ | |
242 | + { DEF_ELEMENTAL, "", "精霊" }, | |
243 | +/*JP | |
96 | 244 | { DEF_FUNGUS, "", "fungus or mold" }, |
245 | +*/ | |
246 | + { DEF_FUNGUS, "", "キノコまたはモールド" }, | |
247 | +/*JP | |
97 | 248 | { DEF_GNOME, "", "gnome" }, |
249 | +*/ | |
250 | + { DEF_GNOME, "", "ノーム" }, | |
251 | +/*JP | |
98 | 252 | { DEF_GIANT, "", "giant humanoid" }, |
253 | +*/ | |
254 | + { DEF_GIANT, "", "巨人" }, | |
255 | +/*JP | |
99 | 256 | { '\0', "", "invisible monster" }, |
257 | +*/ | |
258 | + { '\0', "", "透明な怪物" }, | |
259 | +/*JP | |
100 | 260 | { DEF_JABBERWOCK, "", "jabberwock" }, |
261 | +*/ | |
262 | + { DEF_JABBERWOCK, "", "ジャバウォック" }, | |
263 | +/*JP | |
101 | 264 | { DEF_KOP, "", "Keystone Kop" }, |
265 | +*/ | |
266 | + { DEF_KOP, "", "警備員" }, | |
267 | +/*JP | |
102 | 268 | { DEF_LICH, "", "lich" }, |
269 | +*/ | |
270 | + { DEF_LICH, "", "リッチ" }, | |
271 | +/*JP | |
103 | 272 | { DEF_MUMMY, "", "mummy" }, |
273 | +*/ | |
274 | + { DEF_MUMMY, "", "ミイラ" }, | |
275 | +/*JP | |
104 | 276 | { DEF_NAGA, "", "naga" }, |
277 | +*/ | |
278 | + { DEF_NAGA, "", "ナーガ" }, | |
279 | +/*JP | |
105 | 280 | { DEF_OGRE, "", "ogre" }, |
281 | +*/ | |
282 | + { DEF_OGRE, "", "オーガ" }, | |
283 | +/*JP | |
106 | 284 | { DEF_PUDDING, "", "pudding or ooze" }, |
285 | +*/ | |
286 | + { DEF_PUDDING, "", "プリンまたはウーズ" }, | |
287 | +/*JP | |
107 | 288 | { DEF_QUANTMECH, "", "quantum mechanic" }, |
289 | +*/ | |
290 | + { DEF_QUANTMECH, "", "量子場" }, | |
291 | +/*JP | |
108 | 292 | { DEF_RUSTMONST, "", "rust monster or disenchanter" }, |
293 | +*/ | |
294 | + { DEF_RUSTMONST, "", "錆の怪物または吸魔の怪物" }, | |
295 | +/*JP | |
109 | 296 | { DEF_SNAKE, "", "snake" }, |
297 | +*/ | |
298 | + { DEF_SNAKE, "", "ヘビ" }, | |
299 | +/*JP | |
110 | 300 | { DEF_TROLL, "", "troll" }, |
301 | +*/ | |
302 | + { DEF_TROLL, "", "トロル" }, | |
303 | +/*JP | |
111 | 304 | { DEF_UMBER, "", "umber hulk" }, |
305 | +*/ | |
306 | + { DEF_UMBER, "", "アンバーハルク" }, | |
307 | +/*JP | |
112 | 308 | { DEF_VAMPIRE, "", "vampire" }, |
309 | +*/ | |
310 | + { DEF_VAMPIRE, "", "吸血鬼" }, | |
311 | +/*JP | |
113 | 312 | { DEF_WRAITH, "", "wraith" }, |
313 | +*/ | |
314 | + { DEF_WRAITH, "", "レイス" }, | |
315 | +/*JP | |
114 | 316 | { DEF_XORN, "", "xorn" }, |
317 | +*/ | |
318 | + { DEF_XORN, "", "ゾーン" }, | |
319 | +/*JP | |
115 | 320 | { DEF_YETI, "", "apelike creature" }, |
321 | +*/ | |
322 | + { DEF_YETI, "", "猿のような生物" }, | |
323 | +/*JP | |
116 | 324 | { DEF_ZOMBIE, "", "zombie" }, |
325 | +*/ | |
326 | + { DEF_ZOMBIE, "", "ゾンビ" }, | |
327 | +/*JP | |
117 | 328 | { DEF_HUMAN, "", "human or elf" }, |
329 | +*/ | |
330 | + { DEF_HUMAN, "", "人間またはエルフ" }, | |
331 | +/*JP | |
118 | 332 | { DEF_GHOST, "", "ghost" }, |
333 | +*/ | |
334 | + { DEF_GHOST, "", "悪魔" }, | |
335 | +/*JP | |
119 | 336 | { DEF_GOLEM, "", "golem" }, |
337 | +*/ | |
338 | + { DEF_GOLEM, "", "ゴーレム" }, | |
339 | +/*JP | |
120 | 340 | { DEF_DEMON, "", "major demon" }, |
341 | +*/ | |
342 | + { DEF_DEMON, "", "悪魔" }, | |
343 | +/*JP | |
121 | 344 | { DEF_EEL, "", "sea monster" }, |
345 | +*/ | |
346 | + { DEF_EEL, "", "海の怪物" }, | |
347 | +/*JP | |
122 | 348 | { DEF_LIZARD, "", "lizard" }, |
349 | +*/ | |
350 | + { DEF_LIZARD, "", "トカゲ" }, | |
351 | +/*JP | |
123 | 352 | { DEF_WORM_TAIL, "", "long worm tail" }, |
353 | +*/ | |
354 | + { DEF_WORM_TAIL, "", "ロングワームの尻尾" }, | |
355 | +/*JP | |
124 | 356 | { DEF_MIMIC_DEF, "", "mimic" }, |
357 | +*/ | |
358 | + { DEF_MIMIC_DEF, "", "ミミック" }, | |
125 | 359 | }; |
126 | 360 | |
127 | 361 | const struct symdef def_warnsyms[WARNCOUNT] = { |
@@ -161,6 +395,7 @@ const struct symdef def_warnsyms[WARNCOUNT] = { | ||
161 | 395 | * Default screen symbols with explanations and colors. |
162 | 396 | */ |
163 | 397 | const struct symdef defsyms[MAXPCHARS] = { |
398 | +#if 0 /*JP*/ | |
164 | 399 | /* 0*/ { ' ', "dark part of a room", C(NO_COLOR) }, /* stone */ |
165 | 400 | { '|', "wall", C(CLR_GRAY) }, /* vwall */ |
166 | 401 | { '-', "wall", C(CLR_GRAY) }, /* hwall */ |
@@ -171,6 +406,19 @@ const struct symdef defsyms[MAXPCHARS] = { | ||
171 | 406 | { '-', "wall", C(CLR_GRAY) }, /* crwall */ |
172 | 407 | { '-', "wall", C(CLR_GRAY) }, /* tuwall */ |
173 | 408 | { '-', "wall", C(CLR_GRAY) }, /* tdwall */ |
409 | +#else | |
410 | +/* 0*/ { ' ', "部屋の暗い部分", C(NO_COLOR) }, /* stone */ | |
411 | + { '|', "壁", C(CLR_GRAY) }, /* vwall */ | |
412 | + { '-', "壁", C(CLR_GRAY) }, /* hwall */ | |
413 | + { '-', "壁", C(CLR_GRAY) }, /* tlcorn */ | |
414 | + { '-', "壁", C(CLR_GRAY) }, /* trcorn */ | |
415 | + { '-', "壁", C(CLR_GRAY) }, /* blcorn */ | |
416 | + { '-', "壁", C(CLR_GRAY) }, /* brcorn */ | |
417 | + { '-', "壁", C(CLR_GRAY) }, /* crwall */ | |
418 | + { '-', "壁", C(CLR_GRAY) }, /* tuwall */ | |
419 | + { '-', "壁", C(CLR_GRAY) }, /* tdwall */ | |
420 | +#endif | |
421 | +#if 0 /*JP*/ | |
174 | 422 | /*10*/ { '|', "wall", C(CLR_GRAY) }, /* tlwall */ |
175 | 423 | { '|', "wall", C(CLR_GRAY) }, /* trwall */ |
176 | 424 | { '.', "doorway", C(CLR_GRAY) }, /* ndoor */ |
@@ -181,6 +429,19 @@ const struct symdef defsyms[MAXPCHARS] = { | ||
181 | 429 | { '#', "iron bars", C(HI_METAL) }, /* bars */ |
182 | 430 | { '#', "tree", C(CLR_GREEN) }, /* tree */ |
183 | 431 | { '.', "floor of a room", C(CLR_GRAY) }, /* room */ |
432 | +#else | |
433 | +/*10*/ { '|', "壁", C(CLR_GRAY) }, /* tlwall */ | |
434 | + { '|', "壁", C(CLR_GRAY) }, /* trwall */ | |
435 | + { '.', "出入口", C(CLR_GRAY) }, /* ndoor */ | |
436 | + { '-', "開いた扉", C(CLR_BROWN) }, /* vodoor */ | |
437 | + { '|', "開いた扉", C(CLR_BROWN) }, /* hodoor */ | |
438 | + { '+', "閉じた扉", C(CLR_BROWN) }, /* vcdoor */ | |
439 | + { '+', "閉じた扉", C(CLR_BROWN) }, /* hcdoor */ | |
440 | + { '#', "鉄棒", C(HI_METAL) }, /* bars */ | |
441 | + { '#', "木", C(CLR_GREEN) }, /* tree */ | |
442 | + { '.', "部屋の床", C(CLR_GRAY) }, /* room */ | |
443 | +#endif | |
444 | +#if 0 /*JP*/ | |
184 | 445 | /*20*/ { '.', "dark part of a room", C(CLR_BLACK) }, /* dark room */ |
185 | 446 | { '#', "corridor", C(CLR_GRAY) }, /* dark corr */ |
186 | 447 | { '#', "lit corridor", C(CLR_GRAY) }, /* lit corr (see mapglyph.c) */ |
@@ -191,6 +452,19 @@ const struct symdef defsyms[MAXPCHARS] = { | ||
191 | 452 | { '_', "altar", C(CLR_GRAY) }, /* altar */ |
192 | 453 | { '|', "grave", C(CLR_GRAY) }, /* grave */ |
193 | 454 | { '\\', "opulent throne", C(HI_GOLD) }, /* throne */ |
455 | +#else | |
456 | +/*20*/ { '.', "部屋の暗い部分", C(CLR_BLACK) }, /* dark room */ | |
457 | + { '#', "通路", C(CLR_GRAY) }, /* dark corr */ | |
458 | + { '#', "明るい通路", C(CLR_GRAY) }, /* lit corr (see mapglyph.c) */ | |
459 | + { '<', "上り階段", C(CLR_GRAY) }, /* upstair */ | |
460 | + { '>', "下り階段", C(CLR_GRAY) }, /* dnstair */ | |
461 | + { '<', "上りはしご", C(CLR_BROWN) }, /* upladder */ | |
462 | + { '>', "下りはしご", C(CLR_BROWN) }, /* dnladder */ | |
463 | + { '_', "祭壇", C(CLR_GRAY) }, /* altar */ | |
464 | + { '|', "墓", C(CLR_GRAY) }, /* grave */ | |
465 | + { '\\', "華やかな玉座", C(HI_GOLD) }, /* throne */ | |
466 | +#endif | |
467 | +#if 0 /*JP*/ | |
194 | 468 | /*30*/ { '#', "sink", C(CLR_GRAY) }, /* sink */ |
195 | 469 | { '{', "fountain", C(CLR_BLUE) }, /* fountain */ |
196 | 470 | { '}', "water", C(CLR_BLUE) }, /* pool */ |
@@ -201,6 +475,19 @@ const struct symdef defsyms[MAXPCHARS] = { | ||
201 | 475 | { '#', "raised drawbridge", C(CLR_BROWN) }, /* vcdbridge */ |
202 | 476 | { '#', "raised drawbridge", C(CLR_BROWN) }, /* hcdbridge */ |
203 | 477 | { ' ', "air", C(CLR_CYAN) }, /* open air */ |
478 | +#else | |
479 | +/*30*/ { '#', "流し台", C(CLR_GRAY) }, /* sink */ | |
480 | + { '{', "泉", C(CLR_BLUE) }, /* fountain */ | |
481 | + { '}', "水のたまった場所", C(CLR_BLUE) }, /* pool */ | |
482 | + { '.', "氷", C(CLR_CYAN) }, /* ice */ | |
483 | + { '}', "溶岩", C(CLR_RED) }, /* lava */ | |
484 | + { '.', "降りている跳ね橋", C(CLR_BROWN) }, /* vodbridge */ | |
485 | + { '.', "降りている跳ね橋", C(CLR_BROWN) }, /* hodbridge */ | |
486 | + { '#', "上っている跳ね橋", C(CLR_BROWN) }, /* vcdbridge */ | |
487 | + { '#', "上っている跳ね橋", C(CLR_BROWN) }, /* hcdbridge */ | |
488 | + { ' ', "空気のたまった場所", C(CLR_CYAN) }, /* open air */ | |
489 | +#endif | |
490 | +#if 0 /*JP*/ | |
204 | 491 | /*40*/ { '#', "cloud", C(CLR_GRAY) }, /* [part of] a cloud */ |
205 | 492 | { '}', "water", C(CLR_BLUE) }, /* under water */ |
206 | 493 | { '^', "arrow trap", C(HI_METAL) }, /* trap */ |
@@ -211,6 +498,19 @@ const struct symdef defsyms[MAXPCHARS] = { | ||
211 | 498 | { '^', "land mine", C(CLR_RED) }, /* trap */ |
212 | 499 | { '^', "rolling boulder trap", C(CLR_GRAY) }, /* trap */ |
213 | 500 | { '^', "sleeping gas trap", C(HI_ZAP) }, /* trap */ |
501 | +#else | |
502 | +/*40*/ { '#', "雲", C(CLR_GRAY) }, /* [part of] a cloud */ | |
503 | + { '}', "水", C(CLR_BLUE) }, /* under water */ | |
504 | + { '^', "矢の罠", C(HI_METAL) }, /* trap */ | |
505 | + { '^', "投げ矢の罠", C(HI_METAL) }, /* trap */ | |
506 | + { '^', "落石の罠", C(CLR_GRAY) }, /* trap */ | |
507 | + { '^', "きしむ板", C(CLR_BROWN) }, /* trap */ | |
508 | + { '^', "熊の罠", C(HI_METAL) }, /* trap */ | |
509 | + { '^', "地雷", C(CLR_RED) }, /* trap */ | |
510 | + { '^', "巨岩の罠", C(CLR_GRAY) }, /* trap */ | |
511 | + { '^', "睡眠ガスの罠", C(HI_ZAP) }, /* trap */ | |
512 | +#endif | |
513 | +#if 0 /*JP*/ | |
214 | 514 | /*50*/ { '^', "rust trap", C(CLR_BLUE) }, /* trap */ |
215 | 515 | { '^', "fire trap", C(CLR_ORANGE) }, /* trap */ |
216 | 516 | { '^', "pit", C(CLR_BLACK) }, /* trap */ |
@@ -221,6 +521,19 @@ const struct symdef defsyms[MAXPCHARS] = { | ||
221 | 521 | { '^', "level teleporter", C(CLR_MAGENTA) }, /* trap */ |
222 | 522 | { '^', "magic portal", C(CLR_BRIGHT_MAGENTA) }, /* trap */ |
223 | 523 | { '"', "web", C(CLR_GRAY) }, /* web */ |
524 | +#else | |
525 | +/*50*/ { '^', "腐食の罠", C(CLR_BLUE) }, /* trap */ | |
526 | + { '^', "火の罠", C(CLR_ORANGE) }, /* trap */ | |
527 | + { '^', "落し穴", C(CLR_BLACK) }, /* trap */ | |
528 | + { '^', "トゲだらけの落し穴", C(CLR_BLACK) }, /* trap */ | |
529 | + { '^', "穴", C(CLR_BROWN) }, /* trap */ | |
530 | + { '^', "落し扉", C(CLR_BROWN) }, /* trap */ | |
531 | + { '^', "瞬間移動の罠", C(CLR_MAGENTA) }, /* trap */ | |
532 | + { '^', "別の階への瞬間移動の罠", C(CLR_MAGENTA) }, /* trap */ | |
533 | + { '^', "魔法の罠", C(CLR_BRIGHT_MAGENTA) }, /* trap */ | |
534 | + { '"', "くもの巣", C(CLR_GRAY) }, /* web */ | |
535 | +#endif | |
536 | +#if 0 /*JP*/ | |
224 | 537 | /*60*/ { '^', "statue trap", C(CLR_GRAY) }, /* trap */ |
225 | 538 | { '^', "magic trap", C(HI_ZAP) }, /* trap */ |
226 | 539 | { '^', "anti-magic field", C(HI_ZAP) }, /* trap */ |
@@ -233,13 +546,32 @@ const struct symdef defsyms[MAXPCHARS] = { | ||
233 | 546 | { '*', "", C(CLR_WHITE) }, /* dig beam */ |
234 | 547 | { '!', "", C(CLR_WHITE) }, /* camera flash beam */ |
235 | 548 | { ')', "", C(HI_WOOD) }, /* boomerang open left */ |
549 | +#else | |
550 | +/*60*/ { '^', "彫像の罠", C(CLR_GRAY) }, /* trap */ | |
551 | + { '^', "魔法の罠", C(HI_ZAP) }, /* trap */ | |
552 | + { '^', "反魔法空間の罠", C(HI_ZAP) }, /* trap */ | |
553 | + { '^', "変化の罠", C(CLR_BRIGHT_GREEN) }, /* trap */ | |
554 | + { '^', "振動している場所", C(CLR_YELLOW) }, /* trap */ | |
555 | + { '|', "壁", C(CLR_GRAY) }, /* vbeam */ | |
556 | + { '-', "壁", C(CLR_GRAY) }, /* hbeam */ | |
557 | + { '\\', "壁", C(CLR_GRAY) }, /* lslant */ | |
558 | + { '/', "壁", C(CLR_GRAY) }, /* rslant */ | |
559 | + { '*', "", C(CLR_WHITE) }, /* dig beam */ | |
560 | + { '!', "", C(CLR_WHITE) }, /* camera flash beam */ | |
561 | + { ')', "", C(HI_WOOD) }, /* boomerang open left */ | |
562 | +#endif | |
236 | 563 | /*70*/ { '(', "", C(HI_WOOD) }, /* boomerang open right */ |
237 | 564 | { '0', "", C(HI_ZAP) }, /* 4 magic shield symbols */ |
238 | 565 | { '#', "", C(HI_ZAP) }, |
239 | 566 | { '@', "", C(HI_ZAP) }, |
240 | 567 | { '*', "", C(HI_ZAP) }, |
568 | +#if 0 /*JP*/ | |
241 | 569 | { '#', "poison cloud", C(CLR_BRIGHT_GREEN) }, /* part of a cloud */ |
242 | 570 | { '?', "valid position", C(CLR_BRIGHT_GREEN) }, /* target position */ |
571 | +#else | |
572 | + { '#', "毒雲", C(CLR_BRIGHT_GREEN) }, /* part of a cloud */ | |
573 | + { '?', "有効な位置", C(CLR_BRIGHT_GREEN) }, /* target position */ | |
574 | +#endif | |
243 | 575 | { '/', "", C(CLR_GREEN) }, /* swallow top left */ |
244 | 576 | { '-', "", C(CLR_GREEN) }, /* swallow top center */ |
245 | 577 | { '\\', "", C(CLR_GREEN) }, /* swallow top right */ |
@@ -2009,11 +2009,20 @@ donamelevel() | ||
2009 | 2009 | |
2010 | 2010 | if (mptr->custom) { |
2011 | 2011 | char tmpbuf[BUFSZ]; |
2012 | +#if 0 /*JP*/ | |
2012 | 2013 | Sprintf(tmpbuf, "Replace annotation \"%.30s%s\" with?", mptr->custom, |
2013 | 2014 | strlen(mptr->custom) > 30 ? "..." : ""); |
2014 | 2015 | getlin(tmpbuf, nbuf); |
2016 | +#else | |
2017 | + Sprintf(tmpbuf, "現在の名前「%.30s%s」を何に書き換える?", mptr->custom, | |
2018 | + strlen(mptr->custom) > 30 ? "..." : ""); | |
2019 | + getlin(tmpbuf, nbuf); | |
2020 | +#endif | |
2015 | 2021 | } else |
2022 | +/*JP | |
2016 | 2023 | getlin("What do you want to call this dungeon level?", nbuf); |
2024 | +*/ | |
2025 | + getlin("この階を何と呼ぶ?", nbuf); | |
2017 | 2026 | if (index(nbuf, '\033')) |
2018 | 2027 | return 0; |
2019 | 2028 | (void) mungspaces(nbuf); |
@@ -194,13 +194,19 @@ eatmupdate() | ||
194 | 194 | |
195 | 195 | if (is_obj_mappear(&youmonst,ORANGE) && !Hallucination) { |
196 | 196 | /* revert from hallucinatory to "normal" mimicking */ |
197 | +/*JP | |
197 | 198 | altmsg = "You now prefer mimicking yourself."; |
199 | +*/ | |
200 | + altmsg = "あなたは自分自身のまねをすることを選んだ."; | |
198 | 201 | altapp = GOLD_PIECE; |
199 | 202 | } else if (is_obj_mappear(&youmonst,GOLD_PIECE) && Hallucination) { |
200 | 203 | /* won't happen; anything which might make immobilized |
201 | 204 | hero begin hallucinating (black light attack, theft |
202 | 205 | of Grayswandir) will terminate the mimicry first */ |
206 | +/*JP | |
203 | 207 | altmsg = "Your rind escaped intact."; |
208 | +*/ | |
209 | + altmsg = "あなたの皮がそのままの形で逃げていった."; | |
204 | 210 | altapp = ORANGE; |
205 | 211 | } |
206 | 212 |
@@ -519,16 +525,30 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
519 | 525 | |
520 | 526 | if (noncorporeal(pd)) { |
521 | 527 | if (visflag) |
528 | +#if 0 /*JP*/ | |
522 | 529 | pline("%s brain is unharmed.", |
523 | 530 | (mdef == &youmonst) ? "Your" : s_suffix(Monnam(mdef))); |
531 | +#else | |
532 | + pline("%sの脳は無事だった.", | |
533 | + (mdef == &youmonst) ? "あなた" : Monnam(mdef)); | |
534 | +#endif | |
524 | 535 | return MM_MISS; /* side-effects can't occur */ |
525 | 536 | } else if (magr == &youmonst) { |
537 | +/*JP | |
526 | 538 | You("eat %s brain!", s_suffix(mon_nam(mdef))); |
539 | +*/ | |
540 | + You("%sの脳を食べた!", mon_nam(mdef)); | |
527 | 541 | } else if (mdef == &youmonst) { |
542 | +/*JP | |
528 | 543 | Your("brain is eaten!"); |
544 | +*/ | |
545 | + Your("脳は食べられた!"); | |
529 | 546 | } else { /* monster against monster */ |
530 | 547 | if (visflag) |
548 | +/*JP | |
531 | 549 | pline("%s brain is eaten!", s_suffix(Monnam(mdef))); |
550 | +*/ | |
551 | + pline("%sの脳は食べられた!", Monnam(mdef)); | |
532 | 552 | } |
533 | 553 | |
534 | 554 | if (flesh_petrifies(pd)) { |
@@ -542,7 +562,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
542 | 562 | /* no need to check for poly_when_stoned or Stone_resistance; |
543 | 563 | mind flayers don't have those capabilities */ |
544 | 564 | if (visflag) |
565 | +/*JP | |
545 | 566 | pline("%s turns to stone!", Monnam(magr)); |
567 | +*/ | |
568 | + pline("%sは石になった!", Monnam(magr)); | |
546 | 569 | monstone(magr); |
547 | 570 | if (magr->mhp > 0) { |
548 | 571 | /* life-saved; don't continue eating the brains */ |
@@ -550,7 +573,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
550 | 573 | } else { |
551 | 574 | if (magr->mtame && !visflag) |
552 | 575 | /* parallels mhitm.c's brief_feeling */ |
576 | +/*JP | |
553 | 577 | You("have a sad thought for a moment, then is passes."); |
578 | +*/ | |
579 | + You("悲しい考えにおそわれたが、すぐに過ぎさった."); | |
554 | 580 | return MM_AGR_DIED; |
555 | 581 | } |
556 | 582 | } |
@@ -562,12 +588,21 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
562 | 588 | */ |
563 | 589 | eating_conducts(pd); |
564 | 590 | if (mindless(pd)) { /* (cannibalism not possible here) */ |
591 | +/*JP | |
565 | 592 | pline("%s doesn't notice.", Monnam(mdef)); |
593 | +*/ | |
594 | + pline("%sは気づいていない.", Monnam(mdef)); | |
566 | 595 | /* all done; no extra harm inflicted upon target */ |
567 | 596 | return MM_MISS; |
568 | 597 | } else if (is_rider(pd)) { |
598 | +/*JP | |
569 | 599 | pline("Ingesting that is fatal."); |
600 | +*/ | |
601 | + pline("取り込んだらすぐに死んでしまった."); | |
602 | +/*JP | |
570 | 603 | Sprintf(killer.name, "unwisely ate the brain of %s", pd->mname); |
604 | +*/ | |
605 | + Sprintf(killer.name, "愚かにも%sの体を食べて", pd->mname); | |
571 | 606 | killer.format = NO_KILLER_PREFIX; |
572 | 607 | done(DIED); |
573 | 608 | /* life-saving needed to reach here */ |
@@ -595,19 +630,28 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
595 | 630 | */ |
596 | 631 | /* no such thing as mindless players */ |
597 | 632 | if (ABASE(A_INT) <= ATTRMIN(A_INT)) { |
633 | +/*JP | |
598 | 634 | static NEARDATA const char brainlessness[] = "brainlessness"; |
635 | +*/ | |
636 | + static NEARDATA const char brainlessness[] = "脳を失って"; | |
599 | 637 | |
600 | 638 | if (Lifesaved) { |
601 | 639 | Strcpy(killer.name, brainlessness); |
602 | 640 | killer.format = KILLED_BY; |
603 | 641 | done(DIED); |
604 | 642 | /* amulet of life saving has now been used up */ |
643 | +/*JP | |
605 | 644 | pline("Unfortunately your brain is still gone."); |
645 | +*/ | |
646 | + pline("残念ながらあなたには脳がない."); | |
606 | 647 | /* sanity check against adding other forms of life-saving */ |
607 | 648 | u.uprops[LIFESAVED].extrinsic = |
608 | 649 | u.uprops[LIFESAVED].intrinsic = 0L; |
609 | 650 | } else { |
651 | +/*JP | |
610 | 652 | Your("last thought fades away."); |
653 | +*/ | |
654 | + Your("最後の思いが走馬燈のように横ぎった."); | |
611 | 655 | } |
612 | 656 | Strcpy(killer.name, brainlessness); |
613 | 657 | killer.format = KILLED_BY; |
@@ -615,7 +659,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
615 | 659 | /* can only get here when in wizard or explore mode and user has |
616 | 660 | explicitly chosen not to die; arbitrarily boost intelligence */ |
617 | 661 | ABASE(A_INT) = ATTRMIN(A_INT) + 2; |
662 | +/*JP | |
618 | 663 | You_feel("like a scarecrow."); |
664 | +*/ | |
665 | + You("かかしのような気持がした."); | |
619 | 666 | } |
620 | 667 | give_nutrit = TRUE; /* in case a conflicted pet is doing this */ |
621 | 668 | exercise(A_WIS, FALSE); |
@@ -627,7 +674,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
627 | 674 | */ |
628 | 675 | if (mindless(pd)) { |
629 | 676 | if (visflag) |
677 | +/*JP | |
630 | 678 | pline("%s doesn't notice.", Monnam(mdef)); |
679 | +*/ | |
680 | + pline("%sは気づいていない.", Monnam(mdef)); | |
631 | 681 | return MM_MISS; |
632 | 682 | } else if (is_rider(pd)) { |
633 | 683 | mondied(magr); |
@@ -639,7 +689,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */ | ||
639 | 689 | *dmg_p += xtra_dmg; |
640 | 690 | give_nutrit = TRUE; |
641 | 691 | if (*dmg_p >= mdef->mhp && visflag) |
692 | +/*JP | |
642 | 693 | pline("%s last thought fades away...", |
694 | +*/ | |
695 | + pline("%sの最後の思いがよぎる...", | |
643 | 696 | s_suffix(Monnam(mdef))); |
644 | 697 | } |
645 | 698 | } |
@@ -1175,7 +1228,10 @@ register int pm; | ||
1175 | 1228 | case PM_DOPPELGANGER: |
1176 | 1229 | case PM_SANDESTIN: /* moot--they don't leave corpses */ |
1177 | 1230 | if (Unchanging) { |
1178 | - You_feel("momentarily different."); /* same as poly trap */ | |
1231 | +#if 0 /*JP*/ | |
1232 | + You_feel("一瞬違った感じがした."); /* same as poly trap */ | |
1233 | +#else | |
1234 | +#endif | |
1179 | 1235 | } else { |
1180 | 1236 | /*JP |
1181 | 1237 | You_feel("a change coming over you."); |
@@ -1346,6 +1402,7 @@ char *buf; | ||
1346 | 1402 | */ |
1347 | 1403 | Strcat(buf, "空っぽの"); |
1348 | 1404 | else { |
1405 | +#if 0 /*JP*//*日本語は後で*/ | |
1349 | 1406 | if ((obj->cknown || iflags.override_ID) && obj->spe < 0) { |
1350 | 1407 | if (r == ROTTEN_TIN || r == HOMEMADE_TIN) { |
1351 | 1408 | /* put these before the word tin */ |
@@ -1354,19 +1411,32 @@ char *buf; | ||
1354 | 1411 | } else { |
1355 | 1412 | Sprintf(eos(buf), " of %s ", tintxts[r].txt); |
1356 | 1413 | } |
1414 | + Sprintf(eos(buf), "%s", tintxts[r].txt); | |
1357 | 1415 | } else { |
1358 | 1416 | Strcpy(eos(buf), " of "); |
1359 | 1417 | } |
1418 | +#endif | |
1419 | +#if 1 /*JP*//*「の」で始まるなら後置、それ以外なら前置*/ | |
1420 | + if (strstr(tintxts[r].txt, "の") != tintxts[r].txt) { | |
1421 | + Strcpy(eos(buf), tintxts[r].txt); | |
1422 | + } | |
1423 | +#endif | |
1360 | 1424 | if (vegetarian(&mons[mnum])) |
1361 | 1425 | /*JP |
1362 | 1426 | Sprintf(eos(buf), "%s", mons[mnum].mname); |
1363 | 1427 | */ |
1364 | - Sprintf(eos(buf), "%sの", mons[mnum].mname); | |
1428 | + Sprintf(eos(buf), "%s", mons[mnum].mname); | |
1365 | 1429 | else |
1366 | 1430 | /*JP |
1367 | 1431 | Sprintf(eos(buf), "%s meat", mons[mnum].mname); |
1368 | 1432 | */ |
1369 | - Sprintf(eos(buf), "%sの肉の", mons[mnum].mname); | |
1433 | + Sprintf(eos(buf), "%sの肉", mons[mnum].mname); | |
1434 | +#if 1 /*JP*//*「の」で始まるなら後置、それ以外なら前置*/ | |
1435 | + if (strstr(tintxts[r].txt, "の") == tintxts[r].txt) { | |
1436 | + Strcpy(eos(buf), tintxts[r].txt); | |
1437 | + } | |
1438 | + Strcpy(eos(buf), "の"); | |
1439 | +#endif | |
1370 | 1440 | } |
1371 | 1441 | } |
1372 | 1442 | } |
@@ -1436,7 +1506,10 @@ const char *mesg; | ||
1436 | 1506 | |
1437 | 1507 | r = tin_variety(tin, FALSE); |
1438 | 1508 | if (tin->otrapped || (tin->cursed && r != HOMEMADE_TIN && !rn2(8))) { |
1509 | +/*JP | |
1439 | 1510 | b_trapped("tin", 0); |
1511 | +*/ | |
1512 | + b_trapped("缶", 0); | |
1440 | 1513 | costly_tin(COST_DSTROY); |
1441 | 1514 | goto use_up_tin; |
1442 | 1515 | } |
@@ -1458,7 +1531,10 @@ const char *mesg; | ||
1458 | 1531 | which = 0; /* 0=>plural, 1=>as-is, 2=>"the" prefix */ |
1459 | 1532 | if ((mnum == PM_COCKATRICE || mnum == PM_CHICKATRICE) |
1460 | 1533 | && (Stone_resistance || Hallucination)) { |
1534 | +/*JP | |
1461 | 1535 | what = "chicken"; |
1536 | +*/ | |
1537 | + what = "鶏肉"; | |
1462 | 1538 | which = 1; /* suppress pluralization */ |
1463 | 1539 | } else if (Hallucination) { |
1464 | 1540 | what = rndmonnam(NULL); |
@@ -1657,11 +1733,18 @@ struct obj *otmp; | ||
1657 | 1733 | */ |
1658 | 1734 | mesg = "缶は魔法のように開いた!"; |
1659 | 1735 | else |
1736 | +/*JP | |
1660 | 1737 | pline_The("tin seems easy to open."); |
1738 | +*/ | |
1739 | + pline_The("缶は簡単に開けられそうだ."); | |
1661 | 1740 | } else if (uwep) { |
1662 | 1741 | switch (uwep->otyp) { |
1663 | 1742 | case TIN_OPENER: |
1743 | +#if 0 /*JP*/ | |
1664 | 1744 | mesg = "You easily open the tin."; /* iff tmp==0 */ |
1745 | +#else | |
1746 | + mesg = "あなたは簡単に缶を開けた."; /* iff tmp==0 */ | |
1747 | +#endif | |
1665 | 1748 | tmp = rn2(uwep->cursed ? 3 : !uwep->blessed ? 2 : 1); |
1666 | 1749 | break; |
1667 | 1750 | case DAGGER: |
@@ -1939,9 +2022,15 @@ struct obj *otmp; | ||
1939 | 2022 | consume_oeaten(otmp, 2); /* oeaten >>= 2 */ |
1940 | 2023 | } else if ((mnum == PM_COCKATRICE || mnum == PM_CHICKATRICE) |
1941 | 2024 | && (Stone_resistance || Hallucination)) { |
2025 | +/*JP | |
1942 | 2026 | pline("This tastes just like chicken!"); |
2027 | +*/ | |
2028 | + pline("これは鶏肉の味だ!"); | |
1943 | 2029 | } else if (mnum == PM_FLOATING_EYE && u.umonnum == PM_RAVEN) { |
2030 | +/*JP | |
1944 | 2031 | You("peck the eyeball with delight."); |
2032 | +*/ | |
2033 | + You("目玉をつんつんつついた."); | |
1945 | 2034 | } else { |
1946 | 2035 | /* [is this right? omnivores end up always disliking the taste] */ |
1947 | 2036 | boolean yummy = vegan(&mons[mnum]) |
@@ -2046,7 +2135,7 @@ struct obj *otmp; | ||
2046 | 2135 | /*JP |
2047 | 2136 | : "That food really hit the spot!"); |
2048 | 2137 | */ |
2049 | - : "That food really hit the spot!"); | |
2138 | + : "この食べ物は本当に申し分ない!"); | |
2050 | 2139 | else if (u.uhunger <= 700) |
2051 | 2140 | /*JP |
2052 | 2141 | pline("That satiated your %s!", body_part(STOMACH)); |
@@ -2564,11 +2653,20 @@ struct obj *otmp; | ||
2564 | 2653 | not food, so we substitute cursed; fortunately our hero |
2565 | 2654 | won't have to wait for a prince to be rescued/revived */ |
2566 | 2655 | if (Race_if(PM_DWARF) && Hallucination) |
2656 | +/*JP | |
2567 | 2657 | verbalize("Heigh-ho, ho-hum, I think I'll skip work today."); |
2658 | +*/ | |
2659 | + verbalize("ハイホー,ハイホー,今日は休み."); | |
2568 | 2660 | else if (Deaf || !flags.acoustics) |
2661 | +/*JP | |
2569 | 2662 | You("fall asleep."); |
2663 | +*/ | |
2664 | + You("眠りに落ちた."); | |
2570 | 2665 | else |
2666 | +/*JP | |
2571 | 2667 | You_hear("sinister laughter as you fall asleep..."); |
2668 | +*/ | |
2669 | + You_hear("眠りに落ちるときに邪悪な笑い声を聞いた..."); | |
2572 | 2670 | fall_asleep(-rn1(11, 20), TRUE); |
2573 | 2671 | } |
2574 | 2672 | break; |
@@ -2615,7 +2713,11 @@ struct obj *otmp; | ||
2615 | 2713 | int material = objects[otmp->otyp].oc_material, mnum = otmp->corpsenm; |
2616 | 2714 | long rotted = 0L; |
2617 | 2715 | |
2716 | +#if 0 /*JP*/ | |
2618 | 2717 | Strcpy(foodsmell, Tobjnam(otmp, "smell")); |
2718 | +#else | |
2719 | + Strcpy(foodsmell, xname(otmp)); | |
2720 | +#endif | |
2619 | 2721 | Strcpy(it_or_they, (otmp->quan == 1L) ? "it" : "they"); |
2620 | 2722 | #if 0 /*JP*/ |
2621 | 2723 | Sprintf(eat_it_anyway, "Eat %s anyway?", |
@@ -3280,7 +3382,10 @@ void | ||
3280 | 3382 | reset_faint() |
3281 | 3383 | { |
3282 | 3384 | if (afternmv == unfaint) |
3385 | +/*JP | |
3283 | 3386 | unmul("You revive."); |
3387 | +*/ | |
3388 | + unmul("あなたは気がついた."); | |
3284 | 3389 | } |
3285 | 3390 | |
3286 | 3391 | /* compute and comment on your (new?) hunger status */ |
@@ -3612,7 +3717,10 @@ vomit() /* A good idea from David Neves */ | ||
3612 | 3717 | if (cantvomit(youmonst.data)) |
3613 | 3718 | /* doesn't cure food poisoning; message assumes that we aren't |
3614 | 3719 | dealing with some esoteric body_part() */ |
3720 | +/*JP | |
3615 | 3721 | Your("jaw gapes convulsively."); |
3722 | +*/ | |
3723 | + Your("あごは発作的に大きく開いた."); | |
3616 | 3724 | else |
3617 | 3725 | make_sick(0L, (char *) 0, TRUE, SICK_VOMITABLE); |
3618 | 3726 | nomul(-2); |
@@ -467,12 +467,21 @@ int how; | ||
467 | 467 | set up fake mptr for type_is_pname/the_unique_pm */ |
468 | 468 | mptr = &mons[mtmp->mappearance]; |
469 | 469 | fakenm = mptr->mname; |
470 | +#if 0 /*JP*/ | |
470 | 471 | } else if (alt && strstri(realnm, "vampire") |
471 | 472 | && !strcmp(fakenm, "vampire bat")) { |
472 | 473 | /* special case: use "vampire in bat form" in preference |
473 | 474 | to redundant looking "vampire in vampire bat form" */ |
474 | 475 | fakenm = "bat"; |
476 | +#else | |
477 | + } else if (alt && strstri(realnm, "吸血鬼") | |
478 | + && !strcmp(fakenm, "吸血こうもり")) { | |
479 | + /* 「吸血こうもりの姿の吸血鬼」は冗長なので | |
480 | + 「こうもりの姿の吸血鬼」の形にする */ | |
481 | + fakenm = "こうもり"; | |
482 | +#endif | |
475 | 483 | } |
484 | +#if 0 /*JP*/ | |
476 | 485 | /* for the alternate format, always suppress any article; |
477 | 486 | pname and the_unique should also have s_suffix() applied, |
478 | 487 | but vampires don't take on any shapes which warrant that */ |
@@ -482,12 +491,23 @@ int how; | ||
482 | 491 | Sprintf(shape, "the %s", fakenm); |
483 | 492 | else /* "a"/"an" */ |
484 | 493 | Strcpy(shape, an(fakenm)); |
494 | +#else /*JP:日本語ではシンプル*/ | |
495 | + Strcpy(shape, fakenm); | |
496 | +#endif | |
485 | 497 | /* omit "called" to avoid excessive verbosity */ |
498 | +#if 0 /*JP*/ | |
486 | 499 | Sprintf(eos(buf), |
487 | 500 | alt ? "%s in %s form" |
488 | 501 | : mimicker ? "%s disguised as %s" |
489 | 502 | : "%s imitating %s", |
490 | 503 | realnm, shape); |
504 | +#else | |
505 | + Sprintf(eos(buf), | |
506 | + alt ? "%sの姿の%s" | |
507 | + : mimicker ? "%sのふりをしている%s" | |
508 | + : "%sのまねをしている%s", | |
509 | + shape, realnm); | |
510 | +#endif | |
491 | 511 | mptr = mtmp->data; /* reset for mimicker case */ |
492 | 512 | } else if (mptr == &mons[PM_GHOST]) { |
493 | 513 | #if 0 /*JP*/ |
@@ -787,9 +807,15 @@ boolean taken; | ||
787 | 807 | |
788 | 808 | if (!done_stopprint) { |
789 | 809 | ask = should_query_disclose_option('o', &defquery); |
810 | +#if 0 /*JP*/ | |
790 | 811 | c = ask ? yn_function("Do you want to see the dungeon overview?", |
791 | 812 | ynqchars, defquery) |
792 | 813 | : defquery; |
814 | +#else | |
815 | + c = ask ? yn_function("迷宮の概要を見ますか?", | |
816 | + ynqchars, defquery) | |
817 | + : defquery; | |
818 | +#endif | |
793 | 819 | if (c == 'y') |
794 | 820 | show_overview((how >= PANICKED) ? 1 : 2, how); |
795 | 821 | if (c == 'q') |
@@ -1778,7 +1804,10 @@ boolean ask; | ||
1778 | 1804 | } |
1779 | 1805 | } else if (defquery == 'a') { |
1780 | 1806 | /* #dovanquished rather than final disclosure, so pline() is ok */ |
1807 | +/*JP | |
1781 | 1808 | pline("No monsters have been vanquished."); |
1809 | +*/ | |
1810 | + pline("倒した敵はいなかった."); | |
1782 | 1811 | } |
1783 | 1812 | } |
1784 | 1813 |
@@ -191,11 +191,19 @@ cant_reach_floor(x, y, up, check_pit) | ||
191 | 191 | int x, y; |
192 | 192 | boolean up, check_pit; |
193 | 193 | { |
194 | +#if 0 /*JP*/ | |
194 | 195 | You("can't reach the %s.", |
195 | 196 | up ? ceiling(x, y) |
196 | 197 | : (check_pit && can_reach_floor(FALSE)) |
197 | 198 | ? "bottom of the pit" |
198 | 199 | : surface(x, y)); |
200 | +#else | |
201 | + You("%sに届かない.", | |
202 | + up ? ceiling(x, y) | |
203 | + : (check_pit && can_reach_floor(FALSE)) | |
204 | + ? "落し穴の底" | |
205 | + : surface(x, y)); | |
206 | +#endif | |
199 | 207 | } |
200 | 208 | |
201 | 209 | const char * |
@@ -660,7 +668,10 @@ doengrave() | ||
660 | 668 | return 0; |
661 | 669 | |
662 | 670 | if (otmp == &zeroobj) { |
671 | +/*JP | |
663 | 672 | Strcat(strcpy(fbuf, "your "), makeplural(body_part(FINGER))); |
673 | +*/ | |
674 | + Strcat(strcpy(fbuf, "あなたの"), makeplural(body_part(FINGER))); | |
664 | 675 | writer = fbuf; |
665 | 676 | } else |
666 | 677 | writer = yname(otmp); |
@@ -2,6 +2,11 @@ | ||
2 | 2 | /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ |
3 | 3 | /* NetHack may be freely redistributed. See license for details. */ |
4 | 4 | |
5 | +/* JNetHack Copyright */ | |
6 | +/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */ | |
7 | +/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */ | |
8 | +/* JNetHack may be freely redistributed. See license for details. */ | |
9 | + | |
5 | 10 | #include "hack.h" |
6 | 11 | #include <limits.h> |
7 | 12 |
@@ -605,9 +605,15 @@ int expltype; | ||
605 | 605 | if (iflags.last_msg == PLNMSG_CAUGHT_IN_EXPLOSION |
606 | 606 | || iflags.last_msg |
607 | 607 | == PLNMSG_TOWER_OF_FLAME) /*seffects()*/ |
608 | +/*JP | |
608 | 609 | pline("It is fatal."); |
610 | +*/ | |
611 | + pline("それは致命的だ."); | |
609 | 612 | else |
613 | +/*JP | |
610 | 614 | pline_The("%s is fatal.", str); |
615 | +*/ | |
616 | + pline_The("%sは致命的だ.", str); | |
611 | 617 | /* Known BUG: BURNING suppresses corpse in bones data, |
612 | 618 | but done does not handle killer reason correctly */ |
613 | 619 | done((adtyp == AD_FIRE) ? BURNING : DIED); |
@@ -2,6 +2,11 @@ | ||
2 | 2 | /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ |
3 | 3 | /* NetHack may be freely redistributed. See license for details. */ |
4 | 4 | |
5 | +/* JNetHack Copyright */ | |
6 | +/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */ | |
7 | +/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */ | |
8 | +/* JNetHack may be freely redistributed. See license for details. */ | |
9 | + | |
5 | 10 | #include "hack.h" |
6 | 11 | #include "dlb.h" |
7 | 12 |
@@ -2,13 +2,13 @@ | ||
2 | 2 | /* Copyright Scott R. Turner, srt@ucla, 10/27/86 */ |
3 | 3 | /* NetHack may be freely redistributed. See license for details. */ |
4 | 4 | |
5 | -/* Code for drinking from fountains. */ | |
6 | - | |
7 | 5 | /* JNetHack Copyright */ |
8 | 6 | /* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */ |
9 | 7 | /* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */ |
10 | 8 | /* JNetHack may be freely redistributed. See license for details. */ |
11 | 9 | |
10 | +/* Code for drinking from fountains. */ | |
11 | + | |
12 | 12 | #include "hack.h" |
13 | 13 | |
14 | 14 | STATIC_DCL void NDECL(dowatersnakes); |
@@ -797,7 +797,7 @@ drinksink() | ||
797 | 797 | /*JP |
798 | 798 | pline("Yuk, this water tastes awful."); |
799 | 799 | */ |
800 | - pline("オェ,とてもひどい味がする."); | |
800 | + pline("オェ,とてもひどい味がする."); | |
801 | 801 | more_experienced(1, 0); |
802 | 802 | newexplevel(); |
803 | 803 | break; |
@@ -1003,7 +1003,10 @@ int mode; | ||
1003 | 1003 | } else if (dx && dy && worm_cross(ux, uy, x, y)) { |
1004 | 1004 | /* consecutive long worm segments are at <ux,y> and <x,uy> */ |
1005 | 1005 | if (mode == DO_MOVE) |
1006 | +/*JP | |
1006 | 1007 | pline("%s is in your way.", Monnam(m_at(ux, y))); |
1008 | +*/ | |
1009 | + pline("道の途中に%sがいる.", Monnam(m_at(ux, y))); | |
1007 | 1010 | return FALSE; |
1008 | 1011 | } |
1009 | 1012 | /* Pick travel path that does not require crossing a trap. |
@@ -1403,36 +1406,72 @@ struct trap *desttrap; /* nonnull if another trap at <x,y> */ | ||
1403 | 1406 | after this successful move would have its |
1404 | 1407 | can't-do-that message suppressed by Norep */ |
1405 | 1408 | if (flags.verbose) |
1409 | +/*JP | |
1406 | 1410 | Norep("You move within the chain's reach."); |
1411 | +*/ | |
1412 | + Norep("鎖が届く範囲に移動できる."); | |
1407 | 1413 | return TRUE; |
1408 | 1414 | } |
1409 | 1415 | } |
1410 | 1416 | if (--u.utrap) { |
1411 | 1417 | if (flags.verbose) { |
1412 | 1418 | if (anchored) { |
1419 | +#if 0 /*JP*/ | |
1413 | 1420 | predicament = "chained to the"; |
1414 | 1421 | culprit = "buried ball"; |
1422 | +#else | |
1423 | + predicament = "とつながっている"; | |
1424 | + culprit = "埋まっている球"; | |
1425 | +#endif | |
1415 | 1426 | } else { |
1427 | +#if 0 /*JP*/ | |
1416 | 1428 | predicament = "stuck in the"; |
1417 | 1429 | culprit = surface(u.ux, u.uy); |
1430 | +#else | |
1431 | + predicament = "に埋まっている"; | |
1432 | + culprit = surface(u.ux, u.uy); | |
1433 | +#endif | |
1418 | 1434 | } |
1419 | 1435 | if (u.usteed) { |
1420 | 1436 | if (anchored) |
1437 | +#if 0 /*JP*/ | |
1421 | 1438 | Norep("You and %s are %s %s.", steedname, predicament, |
1422 | 1439 | culprit); |
1440 | +#else | |
1441 | + Norep("あなたと%sは%s%s.", steedname, culprit, | |
1442 | + predicament); | |
1443 | +#endif | |
1423 | 1444 | else |
1445 | +#if 0 /*JP*/ | |
1424 | 1446 | Norep("%s is %s %s.", upstart(steedname), predicament, |
1425 | 1447 | culprit); |
1448 | +#else | |
1449 | + Norep("%sは%s%s.", steedname, culprit, | |
1450 | + predicament); | |
1451 | +#endif | |
1426 | 1452 | } else |
1453 | +/*JP | |
1427 | 1454 | Norep("You are %s %s.", predicament, culprit); |
1455 | +*/ | |
1456 | + Norep("あなたは%sに%s.", culprit, predicament); | |
1428 | 1457 | } |
1429 | 1458 | } else { |
1430 | 1459 | if (u.usteed) |
1460 | +#if 0 /*JP*/ | |
1431 | 1461 | pline("%s finally %s free.", upstart(steedname), |
1432 | 1462 | !anchored ? "lurches" : "wrenches the ball"); |
1463 | +#else | |
1464 | + pline("%sは%sやっと自由になった.", upstart(steedname), | |
1465 | + !anchored ? "もがいて" : "鉄球をもぎ取って"); | |
1466 | +#endif | |
1433 | 1467 | else |
1468 | +#if 0 /*JP*/ | |
1434 | 1469 | You("finally %s free.", |
1435 | 1470 | !anchored ? "wriggle" : "wrench the ball"); |
1471 | +#else | |
1472 | + You("%sやっと自由になった.", | |
1473 | + !anchored ? "もがいて" : "鉄球をもぎ取って"); | |
1474 | +#endif | |
1436 | 1475 | if (anchored) |
1437 | 1476 | buried_ball_to_punishment(); |
1438 | 1477 | } |
@@ -1761,27 +1800,51 @@ domove() | ||
1761 | 1800 | because you don't see remembered terrain while underwater; |
1762 | 1801 | although the hero can attack an adjacent monster this way, |
1763 | 1802 | assume he can't reach out far enough to distinguish terrain */ |
1803 | +#if 0 /*JP*/ | |
1764 | 1804 | Sprintf(buf, (Is_waterlevel(&u.uz) && levl[x][y].typ == AIR) |
1765 | 1805 | ? "an air bubble" |
1766 | 1806 | : "nothing"); |
1807 | +#else | |
1808 | + Sprintf(buf, (Is_waterlevel(&u.uz) && levl[x][y].typ == AIR) | |
1809 | + ? "空気の泡" | |
1810 | + : "何もないところ"); | |
1811 | +#endif | |
1767 | 1812 | else if (solid) |
1768 | 1813 | /* glyph might indicate unseen terrain if hero is blind; |
1769 | 1814 | unlike searching, this won't reveal what that terrain is |
1770 | 1815 | (except for solid rock, where the glyph would otherwise |
1771 | 1816 | yield ludicrous "dark part of a room") */ |
1817 | +#if 0 /*JP*/ | |
1772 | 1818 | Strcpy(buf, |
1773 | 1819 | (levl[x][y].typ == STONE) |
1774 | 1820 | ? "solid rock" |
1775 | 1821 | : glyph_is_cmap(glyph) |
1776 | 1822 | ? the(defsyms[glyph_to_cmap(glyph)].explanation) |
1777 | 1823 | : (const char *) "an unknown obstacle"); |
1824 | +#else | |
1825 | + Strcpy(buf, | |
1826 | + (levl[x][y].typ == STONE) | |
1827 | + ? "石" | |
1828 | + : glyph_is_cmap(glyph) | |
1829 | + ? the(defsyms[glyph_to_cmap(glyph)].explanation) | |
1830 | + : (const char *) "不明な障害物"); | |
1831 | +#endif | |
1778 | 1832 | /* note: 'solid' is misleadingly named and catches pools |
1779 | 1833 | of water and lava as well as rock and walls */ |
1780 | 1834 | else |
1835 | +/*JP | |
1781 | 1836 | Strcpy(buf, "thin air"); |
1837 | +*/ | |
1838 | + Strcpy(buf, "何もない空中"); | |
1839 | +#if 0 /*JP*/ | |
1782 | 1840 | You("%s%s %s.", |
1783 | 1841 | !(boulder || solid) ? "" : !explo ? "harmlessly " : "futilely ", |
1784 | 1842 | explo ? "explode at" : "attack", buf); |
1843 | +#else | |
1844 | + You("%s%s%s.", | |
1845 | + !(boulder || solid) ? "" : !explo ? "効果なく" : "むだに", | |
1846 | + buf, explo ? "で爆発した" : "を攻撃した"); | |
1847 | +#endif | |
1785 | 1848 | |
1786 | 1849 | nomul(0); |
1787 | 1850 | if (explo) { |
@@ -1877,7 +1940,10 @@ domove() | ||
1877 | 1940 | } else if (u.ux0 != x && u.uy0 != y && NODIAG(mtmp->data - mons)) { |
1878 | 1941 | /* can't swap places when pet can't move to your spot */ |
1879 | 1942 | u.ux = u.ux0, u.uy = u.uy0; |
1943 | +/*JP | |
1880 | 1944 | You("stop. %s can't move diagonally.", upstart(y_monnam(mtmp))); |
1945 | +*/ | |
1946 | + You("止まった.%sは斜めに動けない.", upstart(y_monnam(mtmp))); | |
1881 | 1947 | } else if (u.ux0 != x && u.uy0 != y && bad_rock(mtmp->data, x, u.uy0) |
1882 | 1948 | && bad_rock(mtmp->data, u.ux0, y) |
1883 | 1949 | && (bigmonst(mtmp->data) || (curr_mon_load(mtmp) > 600))) { |
@@ -2097,7 +2163,10 @@ switch_terrain() | ||
2097 | 2163 | if (blocklev) { |
2098 | 2164 | /* called from spoteffects(), skip float_down() */ |
2099 | 2165 | if (Levitation) |
2166 | +/*JP | |
2100 | 2167 | You_cant("levitate in here."); |
2168 | +*/ | |
2169 | + You_cant("ここでは浮遊できない."); | |
2101 | 2170 | BLevitation |= FROMOUTSIDE; |
2102 | 2171 | } else if (BLevitation) { |
2103 | 2172 | BLevitation &= ~FROMOUTSIDE; |
@@ -2107,7 +2176,10 @@ switch_terrain() | ||
2107 | 2176 | /* the same terrain that blocks levitation also blocks flight */ |
2108 | 2177 | if (blocklev) { |
2109 | 2178 | if (Flying) |
2179 | +/*JP | |
2110 | 2180 | You_cant("fly in here."); |
2181 | +*/ | |
2182 | + You_cant("ここでは飛べない."); | |
2111 | 2183 | BFlying |= FROMOUTSIDE; |
2112 | 2184 | } else if (BFlying) { |
2113 | 2185 | BFlying &= ~FROMOUTSIDE; |
@@ -2116,7 +2188,10 @@ switch_terrain() | ||
2116 | 2188 | resuming it; that could be tracked so that this message could |
2117 | 2189 | be adjusted to "resume flying", but isn't worth the effort...] */ |
2118 | 2190 | if (Flying) |
2191 | +/*JP | |
2119 | 2192 | You("start flying."); |
2193 | +*/ | |
2194 | + You("飛びはじめた."); | |
2120 | 2195 | } |
2121 | 2196 | } |
2122 | 2197 |
@@ -2307,9 +2382,15 @@ boolean pick; | ||
2307 | 2382 | /* Warning alerts you to ice danger */ |
2308 | 2383 | if (Warning && is_ice(u.ux, u.uy)) { |
2309 | 2384 | static const char *const icewarnings[] = { |
2385 | +#if 0 /*JP*/ | |
2310 | 2386 | "The ice seems very soft and slushy.", |
2311 | 2387 | "You feel the ice shift beneath you!", |
2312 | 2388 | "The ice, is gonna BREAK!", /* The Dead Zone */ |
2389 | +#else | |
2390 | + "氷はとても軟らかくて溶けそうだ.", | |
2391 | + "あなたの下の氷が動いたような気がした!", | |
2392 | + "氷が壊れるぞ!", /* The Dead Zone */ | |
2393 | +#endif | |
2313 | 2394 | }; |
2314 | 2395 | long time_left = spot_time_left(u.ux, u.uy, MELT_ICE_AWAY); |
2315 | 2396 | if (time_left && time_left < 15L) |
@@ -2788,15 +2869,30 @@ dopickup() | ||
2788 | 2869 | if (!OBJ_AT(u.ux, u.uy)) { |
2789 | 2870 | register struct rm *lev = &levl[u.ux][u.uy]; |
2790 | 2871 | if (IS_THRONE(lev->typ)) |
2872 | +/*JP | |
2791 | 2873 | pline("It must weigh%s a ton!", lev->looted ? " almost" : ""); |
2874 | +*/ | |
2875 | + pline("これは%s重い!", lev->looted ? "かなり" : "すごく"); | |
2792 | 2876 | else if (IS_SINK(lev->typ)) |
2877 | +/*JP | |
2793 | 2878 | pline_The("plumbing connects it to the floor."); |
2879 | +*/ | |
2880 | + pline_The("配管は床につながっている."); | |
2794 | 2881 | else if (IS_GRAVE(lev->typ)) |
2882 | +/*JP | |
2795 | 2883 | You("don't need a gravestone. Yet."); |
2884 | +*/ | |
2885 | + pline("あなたには墓石は不要だ...今のところ."); | |
2796 | 2886 | else if (IS_FOUNTAIN(lev->typ)) |
2887 | +/*JP | |
2797 | 2888 | You("could drink the water..."); |
2889 | +*/ | |
2890 | + You("水を飲めない..."); | |
2798 | 2891 | else if (IS_DOOR(lev->typ) && (lev->doormask & D_ISOPEN)) |
2892 | +/*JP | |
2799 | 2893 | pline("It won't come off the hinges."); |
2894 | +*/ | |
2895 | + pline("ヒンジを外せない."); | |
2800 | 2896 | else |
2801 | 2897 | /*JP |
2802 | 2898 | There("is nothing here to pick up."); |
@@ -2813,7 +2909,10 @@ dopickup() | ||
2813 | 2909 | else if (u.usteed && P_SKILL(P_RIDING) < P_BASIC) |
2814 | 2910 | rider_cant_reach(); |
2815 | 2911 | else if (Blind && !can_reach_floor(TRUE)) |
2912 | +/*JP | |
2816 | 2913 | You("cannot reach anything here."); |
2914 | +*/ | |
2915 | + You("何にも届かない."); | |
2817 | 2916 | else |
2818 | 2917 | /*JP |
2819 | 2918 | You("cannot reach the %s.", surface(u.ux, u.uy)); |
@@ -3,6 +3,11 @@ | ||
3 | 3 | /* Copyright (c) Robert Patrick Rankin, 1991 */ |
4 | 4 | /* NetHack may be freely redistributed. See license for details. */ |
5 | 5 | |
6 | +/* JNetHack Copyright */ | |
7 | +/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */ | |
8 | +/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */ | |
9 | +/* JNetHack may be freely redistributed. See license for details. */ | |
10 | + | |
6 | 11 | #include "hack.h" /* for config.h+extern.h */ |
7 | 12 | /*= |
8 | 13 | Assorted 'small' utility routines. They're virtually independent of |
@@ -2225,7 +2225,10 @@ dodip() | ||
2225 | 2225 | allowall[1] = '\0'; |
2226 | 2226 | if (!(obj = getobj(allowall, "dip"))) |
2227 | 2227 | return 0; |
2228 | +/*JP | |
2228 | 2229 | if (inaccessible_equipment(obj, "dip", FALSE)) |
2230 | +*/ | |
2231 | + if (inaccessible_equipment(obj, "を浸す", FALSE)) | |
2229 | 2232 | return 0; |
2230 | 2233 | |
2231 | 2234 | #if 0 /*JP*/ |