patch投げ用
Revision | 6f7170d7edf00b761828d14c904b62f4ae4c7361 (tree) |
---|---|
Zeit | 2016-06-11 04:10:48 |
Autor | SHIRAKATA Kentaro <argrath@ub32...> |
Commiter | SHIRAKATA Kentaro |
add translation
@@ -2291,7 +2291,10 @@ struct obj *obj; | ||
2291 | 2291 | pline("缶詰を作るための缶が切れたようだ."); |
2292 | 2292 | return; |
2293 | 2293 | } |
2294 | +/*JP | |
2294 | 2295 | if (!(corpse = floorfood("tin", 2))) |
2296 | +*/ | |
2297 | + if (!(corpse = floorfood("缶詰めにする", 2))) | |
2295 | 2298 | return; |
2296 | 2299 | if (corpse->oeaten) { |
2297 | 2300 | /*JP |
@@ -2917,7 +2917,10 @@ doeat() | ||
2917 | 2917 | pline("息もできないのに,どうやって食べたらいいんだい?"); |
2918 | 2918 | return 0; |
2919 | 2919 | } |
2920 | +/*JP | |
2920 | 2921 | if (!(otmp = floorfood("eat", 0))) |
2922 | +*/ | |
2923 | + if (!(otmp = floorfood("食べる", 0))) | |
2921 | 2924 | return 0; |
2922 | 2925 | if (check_capacity((char *) 0)) |
2923 | 2926 | return 0; |
@@ -3600,8 +3603,13 @@ int corpsecheck; /* 0, no check, 1, corpses, 2, tinnable corpses */ | ||
3600 | 3603 | register struct obj *otmp; |
3601 | 3604 | char qbuf[QBUFSZ]; |
3602 | 3605 | char c; |
3606 | +#if 0 /*JP*/ | |
3603 | 3607 | boolean feeding = !strcmp(verb, "eat"), /* corpsecheck==0 */ |
3604 | 3608 | offering = !strcmp(verb, "sacrifice"); /* corpsecheck==1 */ |
3609 | +#else | |
3610 | + boolean feeding = !strcmp(verb, "食べる"), /* corpsecheck==0 */ | |
3611 | + offering = !strcmp(verb, "捧げる"); /* corpsecheck==1 */ | |
3612 | +#endif | |
3605 | 3613 | |
3606 | 3614 | #if 1 /*JP*/ |
3607 | 3615 | const char *jverb = trans_verb(verb)->jp; |
@@ -3524,7 +3524,10 @@ unsigned oid; /* book identifier */ | ||
3524 | 3524 | |
3525 | 3525 | int scope = 0; |
3526 | 3526 | int linect = 0, passagecnt = 0, targetpassage = 0; |
3527 | +/*JP | |
3527 | 3528 | const char *badtranslation = "an incomprehensible foreign translation"; |
3529 | +*/ | |
3530 | + const char *badtranslation = "不完全な外国語翻訳"; | |
3528 | 3531 | boolean matchedsection = FALSE, matchedtitle = FALSE; |
3529 | 3532 | winid tribwin = WIN_ERR; |
3530 | 3533 | boolean grasped = FALSE; |
@@ -3533,7 +3536,10 @@ unsigned oid; /* book identifier */ | ||
3533 | 3536 | /* check for mandatories */ |
3534 | 3537 | if (!tribsection || !tribtitle) { |
3535 | 3538 | if (!nowin_buf) |
3539 | +/*JP | |
3536 | 3540 | pline("It's %s of \"%s\"!", badtranslation, tribtitle); |
3541 | +*/ | |
3542 | + pline("これは「%s」の%sだ!", tribtitle, badtranslation); | |
3537 | 3543 | return grasped; |
3538 | 3544 | } |
3539 | 3545 |
@@ -3544,7 +3550,10 @@ unsigned oid; /* book identifier */ | ||
3544 | 3550 | if (!fp) { |
3545 | 3551 | /* this is actually an error - cannot open tribute file! */ |
3546 | 3552 | if (!nowin_buf) |
3553 | +/*JP | |
3547 | 3554 | pline("You feel too overwhelmed to continue!"); |
3555 | +*/ | |
3556 | + pline("あなたは続けられないほど圧倒された!"); | |
3548 | 3557 | return grasped; |
3549 | 3558 | } |
3550 | 3559 |
@@ -3674,7 +3683,10 @@ cleanup: | ||
3674 | 3683 | grasped = TRUE; |
3675 | 3684 | } else { |
3676 | 3685 | if (!nowin_buf) |
3686 | +/*JP | |
3677 | 3687 | pline("It seems to be %s of \"%s\"!", badtranslation, tribtitle); |
3688 | +*/ | |
3689 | + pline("これは「%s」の%sのようだ!", tribtitle, badtranslation); | |
3678 | 3690 | else |
3679 | 3691 | if (foundpassage) |
3680 | 3692 | grasped = TRUE; |
@@ -1613,7 +1613,10 @@ dosacrifice() | ||
1613 | 1613 | highaltar = ((Is_astralevel(&u.uz) || Is_sanctum(&u.uz)) |
1614 | 1614 | && (levl[u.ux][u.uy].altarmask & AM_SHRINE)); |
1615 | 1615 | |
1616 | +/*JP | |
1616 | 1617 | otmp = floorfood("sacrifice", 1); |
1618 | +*/ | |
1619 | + otmp = floorfood("捧げる", 1); | |
1617 | 1620 | if (!otmp) |
1618 | 1621 | return 0; |
1619 | 1622 | /* |
@@ -1868,14 +1871,31 @@ dosacrifice() | ||
1868 | 1871 | if (u.ualign.record > -99) |
1869 | 1872 | u.ualign.record = -99; |
1870 | 1873 | /*[apparently shrug/snarl can be sensed without being seen]*/ |
1874 | +#if 0 /*JP*/ | |
1871 | 1875 | pline("%s shrugs and retains dominion over %s,", Moloch, |
1872 | 1876 | u_gname()); |
1877 | +#else | |
1878 | + pline("%sは肩をすくめ,%sに対する優勢を維持した.", Moloch, | |
1879 | + u_gname()); | |
1880 | +#endif | |
1881 | +/*JP | |
1873 | 1882 | pline("then mercilessly snuffs out your life."); |
1883 | +*/ | |
1884 | + pline("そして無慈悲にあなたの命を奪った."); | |
1885 | +/*JP | |
1886 | +*/ | |
1887 | +#if 0 /*JP*/ | |
1874 | 1888 | Sprintf(killer.name, "%s indifference", s_suffix(Moloch)); |
1889 | +#else | |
1890 | + Sprintf(killer.name, "冷淡な%s", Moloch); | |
1891 | +#endif | |
1875 | 1892 | killer.format = KILLED_BY; |
1876 | 1893 | done(DIED); |
1877 | 1894 | /* life-saved (or declined to die in wizard/explore mode) */ |
1895 | +/*JP | |
1878 | 1896 | pline("%s snarls and tries again...", Moloch); |
1897 | +*/ | |
1898 | + pline("%sはののしり,もう一度試した...", Moloch); | |
1879 | 1899 | fry_by_god(A_NONE, TRUE); /* wrath of Moloch */ |
1880 | 1900 | /* declined to die in wizard or explore mode */ |
1881 | 1901 | pline(cloud_of_smoke, hcolor(NH_BLACK)); |
@@ -2615,6 +2635,7 @@ aligntyp alignment; | ||
2615 | 2635 | } |
2616 | 2636 | |
2617 | 2637 | static const char *hallu_gods[] = { |
2638 | +#if 0 /*JP*/ | |
2618 | 2639 | "the Flying Spaghetti Monster", /* Church of the FSM */ |
2619 | 2640 | "Eris", /* Discordianism */ |
2620 | 2641 | "the Martians", /* every science fiction ever */ |
@@ -2629,6 +2650,22 @@ static const char *hallu_gods[] = { | ||
2629 | 2650 | "the Ori", /* Stargate */ |
2630 | 2651 | "destiny", /* why not? */ |
2631 | 2652 | "your Friend the Computer", /* Paranoia */ |
2653 | +#else | |
2654 | + "空飛ぶスパゲッティモンスター", /* Church of the FSM */ | |
2655 | + "エリス", /* Discordianism */ | |
2656 | + "火星人", /* every science fiction ever */ | |
2657 | + "ゾム", /* Crawl */ | |
2658 | + "アンドール・ドラコン", /* ADOM */ | |
2659 | + "イェンダー中央銀行", /* economics */ | |
2660 | + "歯の妖精", /* real world(?) */ | |
2661 | + "オム", /* Discworld */ | |
2662 | + "ヨーグモス", /* Magic: the Gathering */ | |
2663 | + "モルゴス", /* LoTR */ | |
2664 | + "クトゥルフ", /* Lovecraft */ | |
2665 | + "オーライ", /* Stargate */ | |
2666 | + "ネ申", /* why not? */ | |
2667 | + "親愛なるコンピュータ", /* Paranoia */ | |
2668 | +#endif | |
2632 | 2669 | }; |
2633 | 2670 | |
2634 | 2671 | /* hallucination handling for priest/minion names: select a random god |
@@ -2,6 +2,11 @@ | ||
2 | 2 | /* Copyright 1991, M. Stephenson */ |
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 |
@@ -262,9 +267,11 @@ char who, /* 'd' => deity, 'l' => leader, 'n' => nemesis, 'o' => artifact */ | ||
262 | 267 | : (lwhich == 'j') ? genders[g].his : "?"; |
263 | 268 | } |
264 | 269 | Strcpy(cvt_buf, pnoun); |
270 | +#if 0 /*JP*/ | |
265 | 271 | /* capitalize for H,I,J */ |
266 | 272 | if (lwhich != which) |
267 | 273 | cvt_buf[0] = highc(cvt_buf[0]); |
274 | +#endif | |
268 | 275 | return; |
269 | 276 | } |
270 | 277 |
@@ -322,6 +329,7 @@ char c; | ||
322 | 329 | case 'O': |
323 | 330 | case 'o': |
324 | 331 | str = the(artiname(urole.questarti)); |
332 | +#if 0 /*JP*/ | |
325 | 333 | if (c == 'O') { |
326 | 334 | /* shorten "the Foo of Bar" to "the Foo" |
327 | 335 | (buffer returned by the() is modifiable) */ |
@@ -330,6 +338,7 @@ char c; | ||
330 | 338 | if (p) |
331 | 339 | *p = '\0'; |
332 | 340 | } |
341 | +#endif | |
333 | 342 | break; |
334 | 343 | case 'n': |
335 | 344 | str = neminame(); |
@@ -424,7 +433,9 @@ char *in_line, *out_line; | ||
424 | 433 | |
425 | 434 | /* capitalize */ |
426 | 435 | case 'C': |
436 | +#if 0 /*JP*/ | |
427 | 437 | cvt_buf[0] = highc(cvt_buf[0]); |
438 | +#endif | |
428 | 439 | break; |
429 | 440 | |
430 | 441 | /* replace name with pronoun; |
@@ -443,25 +454,31 @@ char *in_line, *out_line; | ||
443 | 454 | |
444 | 455 | /* pluralize */ |
445 | 456 | case 'P': |
457 | +#if 0 /*JP*/ | |
446 | 458 | cvt_buf[0] = highc(cvt_buf[0]); |
459 | +#endif | |
447 | 460 | case 'p': |
448 | 461 | Strcpy(cvt_buf, makeplural(cvt_buf)); |
449 | 462 | break; |
450 | 463 | |
451 | 464 | /* append possessive suffix */ |
452 | 465 | case 'S': |
466 | +#if 0 /*JP*/ | |
453 | 467 | cvt_buf[0] = highc(cvt_buf[0]); |
468 | +#endif | |
454 | 469 | case 's': |
455 | 470 | Strcpy(cvt_buf, s_suffix(cvt_buf)); |
456 | 471 | break; |
457 | 472 | |
458 | 473 | /* strip any "the" prefix */ |
459 | 474 | case 't': |
475 | +#if 0 /*JP*/ | |
460 | 476 | if (!strncmpi(cvt_buf, "the ", 4)) { |
461 | 477 | Strcat(cc, &cvt_buf[4]); |
462 | 478 | cc += strlen(cc); |
463 | 479 | continue; /* for */ |
464 | 480 | } |
481 | +#endif | |
465 | 482 | break; |
466 | 483 | |
467 | 484 | default: |
@@ -78,6 +78,7 @@ char *buf; | ||
78 | 78 | { |
79 | 79 | static const char *shirt_msgs[] = { |
80 | 80 | /* Scott Bigham */ |
81 | +#if 0 /*JP*/ | |
81 | 82 | "I explored the Dungeons of Doom and all I got was this lousy T-shirt!", |
82 | 83 | "Is that Mjollnir in your pocket or are you just happy to see me?", |
83 | 84 | "It's not the size of your sword, it's how #enhance'd you are with it.", |
@@ -94,7 +95,26 @@ char *buf; | ||
94 | 95 | "Don't Panic", /* HHGTTG */ |
95 | 96 | "Furinkan High School Athletic Dept.", /* Ranma 1/2 */ |
96 | 97 | "Hel-LOOO, Nurse!", /* Animaniacs */ |
98 | +#else | |
99 | + "私は運命の迷宮を調査していたが,手に入れたのはきたないTシャツだけだった!", | |
100 | + "ポケットにミュルニールが入っているの?それとも私に会えてうれしい?", | |
101 | + "剣の大きさが問題なのではない.それが如何に#enhanceされているかなのだ.", | |
102 | + "マダム・エルバイラのサキュバス館 永久顧客", | |
103 | + "マダム・エルバイラのサキュバス館 今月の最優秀功労者", | |
104 | + "ローディオス金庫の番人,それは暗く小さい部屋の中", | |
105 | + "イェンダー軍兵士,それは巨大な団体の中", | |
106 | + "私はイェンダー軍の新兵訓練所を乗り越えました", | |
107 | + "ローディオス会計学校 室内ラクロスチーム", | |
108 | + "Oracle(TM) の泉 第10回濡れTシャツコンテスト", | |
109 | + "おい,黒ドラゴン!こいつを分解しろ!", | |
110 | + "馬鹿と一緒にいます → ", | |
111 | + "私は悪くない!Izchakに投票したもの!", | |
112 | + "あ わ て る な", /* 銀河ヒッチハイクガイド */ | |
113 | + "風林館高校陸上部", /* Ranma 1/2 */ | |
114 | + "Hel−LOOO,Nurse!", /* Animaniacs */ | |
115 | +#endif | |
97 | 116 | "=^.^=", |
117 | +#if 0 /*JP*/ | |
98 | 118 | "100% goblin hair - do not wash", |
99 | 119 | "Aberzombie and Fitch", |
100 | 120 | "cK -- Cockatrice touches the Kop", |
@@ -112,6 +132,26 @@ char *buf; | ||
112 | 132 | "I am not a pack rat - I am a collector", |
113 | 133 | "I bounced off a rubber tree", /* Monkey Island */ |
114 | 134 | "Plunder Island Brimstone Beach Club", /* Monkey Island */ |
135 | +#else | |
136 | + "ゴブリン毛100% - 洗えません", | |
137 | + "アバゾンビ&フィッチ", | |
138 | + "cK -- コカトリスが警官にタッチ", | |
139 | + "質問しないで; 私はここを探検しているだけ", | |
140 | + "Down with pants!", | |
141 | + "dはあなたの犬か殺人者か?", | |
142 | + "FREE PUG AND NEWT!", | |
143 | + "Go team ant!", | |
144 | + "Got newt?", | |
145 | + "こんにちはダーリン!", /* Charlie Drake */ | |
146 | + "やあ!ニンフ!このTシャツを盗んで!", | |
147 | + "I <3 Dungeon of Doom", | |
148 | + "I <3 Maud", | |
149 | + "私はバルキリーだ.私が走っているのを見たら,ついてこい.", | |
150 | + "私はゴミ集めではない.私は収集家だ", | |
151 | + "私はゴムの木に跳ね返った", /* Monkey Island */ | |
152 | + "略奪島硫黄海岸クラブ", /* Monkey Island */ | |
153 | +#endif | |
154 | +#if 0 /*JP*/ | |
115 | 155 | "If you can read this, I can hit you with my polearm", |
116 | 156 | "I'm confused!", |
117 | 157 | "I scored with the princess", |
@@ -127,6 +167,24 @@ char *buf; | ||
127 | 167 | "Somebody stole my Mojo!", |
128 | 168 | "The Hellhound Gang", |
129 | 169 | "The Werewolves", |
170 | +#else | |
171 | + "これが読めるなら、私の長斧が届くということだ", | |
172 | + "私は混乱しています!", | |
173 | + "I scored with the princess", | |
174 | + "私は永遠に生きるか、そのために死にたい.", | |
175 | + "Lichen Park", | |
176 | + "考え込んでいます - 捜索隊を出してください", | |
177 | + "肉はモルドール", | |
178 | + "鉱山街商業改善協会", | |
179 | + "鉱山街の見張り", | |
180 | + "パーム女史の交渉技術の家 -- とても評判の悪評の家", | |
181 | + "鉱山ダッシュ中", | |
182 | + "本物の男はクロムを愛する", | |
183 | + "誰かが俺のアレを盗んだ!", | |
184 | + "The Hellhound Gang", | |
185 | + "The Werewolves", | |
186 | +#endif | |
187 | +#if 0 /*JP*/ | |
130 | 188 | "They Might Be Storm Giants", |
131 | 189 | "Weapons don't kill people, I kill people", |
132 | 190 | "White Zombie", |
@@ -144,6 +202,25 @@ char *buf; | ||
144 | 202 | "Pudding farmer", |
145 | 203 | "Vegetarian", |
146 | 204 | "Hello, I'm War!", |
205 | +#else | |
206 | + "ゼイ・マイト・ビー・ストーム・ジャイアンツ", | |
207 | + "武器が人を殺すのではない,私が人を殺すのだ", | |
208 | + "White Zombie", | |
209 | + "いい加減にして!", | |
210 | + "アンフル州立大学 - 火蟻との戦いの本拠地!", | |
211 | + "FREE HUGS", | |
212 | + "特別昇天者", | |
213 | + "本当の男はバルキリーだ", | |
214 | + "青年洞窟掘削連盟", | |
215 | + "ローディオス砦を占拠せよ", | |
216 | + "このTシャツを買うお金がなかったのでこれは盗んだ!", | |
217 | + "マインドフレヤ氏ね", | |
218 | + "私はパンツを穿いていません", | |
219 | + "Down with the living!", | |
220 | + "プリン農家", | |
221 | + "ベジタリアン", | |
222 | + "やあ,私が『戦争』だ!", | |
223 | +#endif | |
147 | 224 | }; |
148 | 225 | |
149 | 226 | Strcpy(buf, shirt_msgs[tshirt->o_id % SIZE(shirt_msgs)]); |
@@ -233,6 +310,7 @@ doread() | ||
233 | 310 | return 1; |
234 | 311 | } else if (scroll->otyp == CREDIT_CARD) { |
235 | 312 | static const char *card_msgs[] = { |
313 | +#if 0 /*JP*/ | |
236 | 314 | "Leprechaun Gold Tru$t - Shamrock Card", |
237 | 315 | "Magic Memory Vault Charge Card", "Larn National Bank", /* Larn */ |
238 | 316 | "First Bank of Omega", /* Omega */ |
@@ -246,6 +324,21 @@ doread() | ||
246 | 324 | "Yendorian Express - Gold Card", |
247 | 325 | "Yendorian Express - Mithril Card", |
248 | 326 | "Yendorian Express - Platinum Card", /* must be last */ |
327 | +#else | |
328 | + "レプラコーン信用金庫 - クローバーカード", | |
329 | + "魔法記念倉庫クレジットカード", "ラーン国営銀行", /* Larn */ | |
330 | + "オメガ第一銀行", /* Omega */ | |
331 | + "ゾーク銀行 - Bank of Zork - フロボズ魔法カード", /* Zork */ | |
332 | + "アンクモルポーク商人ギルド 交易カード", | |
333 | + "アンクモルポーク盗賊ギルド 無制限取引カード", | |
334 | + "ランスマンスベイ貸金業協会", | |
335 | + "ゲヘナ銀行 - 利子99%カード", | |
336 | + "イェンダー印エキスプレスカード - カッパーカード", | |
337 | + "イェンダー印エキスプレスカード - シルバーカード", | |
338 | + "イェンダー印エキスプレスカード - ゴールドカード", | |
339 | + "イェンダー印エキスプレスカード - ミスリルカード", | |
340 | + "イェンダー印エキスプレスカード - プラチナカード", /* must be last */ | |
341 | +#endif | |
249 | 342 | }; |
250 | 343 | |
251 | 344 | if (Blind) { |
@@ -285,7 +378,7 @@ doread() | ||
285 | 378 | /*JP |
286 | 379 | You_cant("feel any Braille writing."); |
287 | 380 | */ |
288 | - You("点字はどうも書いてないようだ."); | |
381 | + pline("点字はどうも書いてないようだ."); | |
289 | 382 | return 0; |
290 | 383 | } |
291 | 384 | if (flags.verbose) |
@@ -345,7 +438,7 @@ doread() | ||
345 | 438 | /*JP |
346 | 439 | You_cant("feel any Braille writing."); |
347 | 440 | */ |
348 | - You("点字はどうも書いてないようだ."); | |
441 | + pline("点字はどうも書いてないようだ."); | |
349 | 442 | return 0; |
350 | 443 | } |
351 | 444 | /*JP |
@@ -1634,12 +1727,23 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */ | ||
1634 | 1727 | } |
1635 | 1728 | } |
1636 | 1729 | if (!results) { |
1730 | +#if 0 /*JP*/ | |
1637 | 1731 | pline("Nothing interesting %s.", |
1638 | 1732 | !candidates ? "happens" : "seems to happen"); |
1733 | +#else | |
1734 | + pline("何も面白いことはおこらなかった%s.", | |
1735 | + !candidates ? "" : "ようだ"); | |
1736 | +#endif | |
1639 | 1737 | } else { |
1738 | +#if 0 /*JP*/ | |
1640 | 1739 | pline_The("neighborhood %s %sfriendlier.", |
1641 | 1740 | vis_results ? "is" : "seems", |
1642 | 1741 | (results < 0) ? "un" : ""); |
1742 | +#else | |
1743 | + pline_The("お隣との仲が%sくなった%s.", | |
1744 | + (results < 0) ? "悪" : "良", | |
1745 | + vis_results ? "" : "ようだ"); | |
1746 | +#endif | |
1643 | 1747 | if (vis_results > 0) |
1644 | 1748 | known = TRUE; |
1645 | 1749 | } |
@@ -1725,7 +1829,10 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */ | ||
1725 | 1829 | /* when casting a spell we know we're not confused, |
1726 | 1830 | so inventory must be empty (another message has |
1727 | 1831 | already been given above if reading a scroll) */ |
1832 | +/*JP | |
1728 | 1833 | pline("You're not carrying anything to be identified."); |
1834 | +*/ | |
1835 | + pline("あなたは識別できるものをなにも持っていない."); | |
1729 | 1836 | } |
1730 | 1837 | break; |
1731 | 1838 | case SCR_CHARGING: |
@@ -1942,7 +2049,10 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */ | ||
1942 | 2049 | if (!sblessed) { |
1943 | 2050 | drop_boulder_on_player(confused, !scursed, TRUE, FALSE); |
1944 | 2051 | } else if (!nboulders) |
2052 | +/*JP | |
1945 | 2053 | pline("But nothing else happens."); |
2054 | +*/ | |
2055 | + pline("しかし他に何もおこらなかった."); | |
1946 | 2056 | } |
1947 | 2057 | break; |
1948 | 2058 | case SCR_PUNISHMENT: |
@@ -2081,9 +2191,15 @@ boolean confused, byu; | ||
2081 | 2191 | if (mtmp->minvis && !canspotmon(mtmp)) |
2082 | 2192 | map_invisible(mtmp->mx, mtmp->my); |
2083 | 2193 | } else if (u.uswallow && mtmp == u.ustuck) |
2194 | +#if 0 /*JP*/ | |
2084 | 2195 | You_hear("something hit %s %s over your %s!", |
2085 | 2196 | s_suffix(mon_nam(mtmp)), mbodypart(mtmp, STOMACH), |
2086 | 2197 | body_part(HEAD)); |
2198 | +#else | |
2199 | + You_hear("何かがあなたの%sの上の%sの%sに当たった音を聞いた!", | |
2200 | + body_part(HEAD), | |
2201 | + s_suffix(mon_nam(mtmp)), mbodypart(mtmp, STOMACH)); | |
2202 | +#endif | |
2087 | 2203 | |
2088 | 2204 | mdmg = dmgval(otmp2, mtmp) * otmp2->quan; |
2089 | 2205 | if (helmet) { |
@@ -2117,7 +2233,10 @@ boolean confused, byu; | ||
2117 | 2233 | if (byu) |
2118 | 2234 | xkilled(mtmp, 1); |
2119 | 2235 | else { |
2236 | +/*JP | |
2120 | 2237 | pline("%s is killed.", Monnam(mtmp)); |
2238 | +*/ | |
2239 | + pline("%sは死んだ.", Monnam(mtmp)); | |
2121 | 2240 | mondied(mtmp); |
2122 | 2241 | } |
2123 | 2242 | } |
@@ -2661,10 +2780,11 @@ int how; | ||
2661 | 2780 | } else { |
2662 | 2781 | Strcpy(buf, ptr->mname); /* make sure we have standard singular */ |
2663 | 2782 | if ((ptr->geno & G_UNIQ) && ptr != &mons[PM_HIGH_PRIEST]) |
2664 | -/*JP | |
2783 | +#if 0 /*JP*/ | |
2665 | 2784 | which = !type_is_pname(ptr) ? "the " : ""; |
2666 | -*/ | |
2667 | - which = !type_is_pname(ptr) ? "" : ""; | |
2785 | +#else | |
2786 | + which = ""; | |
2787 | +#endif | |
2668 | 2788 | } |
2669 | 2789 | if (how & REALLY) { |
2670 | 2790 | /* setting no-corpse affects wishing and random tin generation */ |
@@ -2,6 +2,11 @@ | ||
2 | 2 | /* Copyright (c) 1996 by Jean-Christophe Collet */ |
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 "lev.h" |
7 | 12 |
@@ -2,6 +2,11 @@ | ||
2 | 2 | /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985-1999. */ |
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 | |
7 | 12 | /*** Table of all roles ***/ |
@@ -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 "lev.h" |
7 | 12 | #include "dlb.h" |
@@ -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 "lev.h" |
7 | 12 |
@@ -34,7 +34,9 @@ STATIC_VAR NEARDATA long int followmsg; /* last time of follow message */ | ||
34 | 34 | STATIC_VAR const char and_its_contents[] = " and its contents"; |
35 | 35 | */ |
36 | 36 | STATIC_VAR const char and_its_contents[] = "中身を合わせて"; |
37 | +#if 0 /*JP*/ | |
37 | 38 | STATIC_VAR const char the_contents_of[] = "the contents of "; |
39 | +#endif | |
38 | 40 | |
39 | 41 | STATIC_DCL void FDECL(append_honorific, (char *)); |
40 | 42 | STATIC_DCL void FDECL(setpaid, (struct monst *)); |
@@ -638,9 +640,15 @@ char *enterstring; | ||
638 | 640 | */ |
639 | 641 | pline("%sは泥棒をののしった.", shkname(shkp)); |
640 | 642 | } else { |
643 | +#if 0 /*JP*/ | |
641 | 644 | verbalize("%s, %s! Welcome%s to %s %s!", Hello(shkp), plname, |
642 | 645 | eshkp->visitct++ ? " again" : "", s_suffix(shkname(shkp)), |
643 | 646 | shtypes[rt - SHOPBASE].name); |
647 | +#else | |
648 | + verbalize("%s!%sの%sに%s!", Hello(shkp), shkname(shkp), | |
649 | + shtypes[rt - SHOPBASE].name, | |
650 | + eshkp->visitct++ ? "また来ましたね" : "ようこそ"); | |
651 | +#endif | |
644 | 652 | } |
645 | 653 | /* can't do anything about blocking if teleported in */ |
646 | 654 | if (!inside_shop(u.ux, u.uy)) { |
@@ -2465,16 +2473,28 @@ boolean quietly; | ||
2465 | 2473 | && obj->otyp == CANDELABRUM_OF_INVOCATION) { |
2466 | 2474 | if (!quietly) { |
2467 | 2475 | if (is_izchak(shkp, TRUE) && !u.uevent.invoked) { |
2476 | +/*JP | |
2468 | 2477 | verbalize("No thanks, I'd hang onto that if I were you."); |
2478 | +*/ | |
2479 | + verbalize("いや,いらない.私ならそれを手放さないね."); | |
2469 | 2480 | if (obj->spe < 7) |
2481 | +#if 0 /*JP*/ | |
2470 | 2482 | verbalize( |
2471 | 2483 | "You'll need %d%s candle%s to go along with it.", |
2472 | 2484 | (7 - obj->spe), (obj->spe > 0) ? " more" : "", |
2473 | 2485 | plur(7 - obj->spe)); |
2486 | +#else | |
2487 | + verbalize( | |
2488 | + "それを使うには%s%d本のろうそくが必要だ.", | |
2489 | + (obj->spe > 0) ? "あと" : "", (7 - obj->spe)); | |
2490 | +#endif | |
2474 | 2491 | /* [what if hero is already carrying enough candles? |
2475 | 2492 | should Izchak explain how to attach them instead] */ |
2476 | 2493 | } else { |
2494 | +/*JP | |
2477 | 2495 | verbalize("I won't stock that. Take it out of here!"); |
2496 | +*/ | |
2497 | + verbalize("それは仕入れないよ.持っていきなさい!"); | |
2478 | 2498 | } |
2479 | 2499 | } |
2480 | 2500 | return TRUE; |
@@ -2605,7 +2625,10 @@ struct monst *shkp; | ||
2605 | 2625 | eshkp = ESHK(shkp); |
2606 | 2626 | |
2607 | 2627 | if (eshkp->billct == BILLSZ) { |
2628 | +/*JP | |
2608 | 2629 | You("got that for free!"); |
2630 | +*/ | |
2631 | + You("それをただで手に入れた!"); | |
2609 | 2632 | return; |
2610 | 2633 | } |
2611 | 2634 |
@@ -2895,11 +2918,13 @@ char *buf; | ||
2895 | 2918 | }; |
2896 | 2919 | #endif |
2897 | 2920 | Strcat(buf, honored[rn2(SIZE(honored) - 1) + u.uevent.udemigod]); |
2921 | +#if 0 /*JP*//*日本語ではそこまでしない*/ | |
2898 | 2922 | if (is_vampire(youmonst.data)) |
2899 | 2923 | Strcat(buf, (flags.female) ? " dark lady" : " dark lord"); |
2900 | 2924 | else if (is_elf(youmonst.data)) |
2901 | 2925 | Strcat(buf, (flags.female) ? " hiril" : " hir"); |
2902 | 2926 | else |
2927 | +#endif | |
2903 | 2928 | #if 0 /*JP*/ |
2904 | 2929 | Strcat(buf, !is_human(youmonst.data) ? " creature" : (flags.female) |
2905 | 2930 | ? " lady" |
@@ -3323,9 +3348,15 @@ xchar x, y; | ||
3323 | 3348 | currency(delta)); |
3324 | 3349 | #endif |
3325 | 3350 | else |
3351 | +#if 0 /*JP*/ | |
3326 | 3352 | pline("%ld %s added to your credit; total is now %ld %s.", |
3327 | 3353 | delta, currency(delta), eshkp->credit, |
3328 | 3354 | currency(eshkp->credit)); |
3355 | +#else | |
3356 | + pline("預け金に%ld%s追加された; 合計は%ld%sになった..", | |
3357 | + delta, currency(delta), eshkp->credit, | |
3358 | + currency(eshkp->credit)); | |
3359 | +#endif | |
3329 | 3360 | } |
3330 | 3361 | |
3331 | 3362 | if (!offer) { |
@@ -4918,7 +4949,7 @@ boolean silent; | ||
4918 | 4949 | pline_The("Kop%s (disappointed) vanish%s into thin air.", |
4919 | 4950 | plur(cnt), (cnt == 1) ? "es" : ""); |
4920 | 4951 | #else |
4921 | - pline("がっかりした警官は空気にとけて消えた."); | |
4952 | + pline("警官は(がっかりして)姿を消した."); | |
4922 | 4953 | #endif |
4923 | 4954 | } |
4924 | 4955 |
@@ -5021,11 +5052,20 @@ boolean altusage; | ||
5021 | 5052 | fmt = "%s%s値段は%ld%s(イェンダー燃料税)だ."; |
5022 | 5053 | } else if (altusage && (otmp->otyp == BAG_OF_TRICKS |
5023 | 5054 | || otmp->otyp == HORN_OF_PLENTY)) { |
5055 | +/*JP | |
5024 | 5056 | fmt = "%s%sEmptying that will cost you %ld %s."; |
5057 | +*/ | |
5058 | + fmt = "%s%sそれの使用料は%ld%sだ."; | |
5025 | 5059 | if (!rn2(3)) |
5060 | +/*JP | |
5026 | 5061 | arg1 = "Whoa! "; |
5062 | +*/ | |
5063 | + arg1 = "うわ!"; | |
5027 | 5064 | if (!rn2(3)) |
5065 | +/*JP | |
5028 | 5066 | arg1 = "Watch it! "; |
5067 | +*/ | |
5068 | + arg1 = "気をつけろ!"; | |
5029 | 5069 | } else { |
5030 | 5070 | /*JP |
5031 | 5071 | fmt = "%s%sUsage fee, %ld %s."; |
@@ -496,8 +496,13 @@ boolean mkspecl; | ||
496 | 496 | int atype; |
497 | 497 | |
498 | 498 | /* 3.6.0 tribute */ |
499 | +#if 0 /*JP*/ | |
499 | 500 | if (mkspecl && (!strcmp(shp->name, "rare books") |
500 | 501 | || !strcmp(shp->name, "second-hand bookstore"))) { |
502 | +#else | |
503 | + if (mkspecl && (!strcmp(shp->name, "幻の本屋") | |
504 | + || !strcmp(shp->name, "古書店"))) { | |
505 | +#endif | |
501 | 506 | struct obj *novel = mksobj_at(SPE_NOVEL, sx, sy, FALSE, FALSE); |
502 | 507 | |
503 | 508 | if (novel) |
@@ -164,7 +164,11 @@ struct obj *bp; | ||
164 | 164 | */ |
165 | 165 | pline("この本は接触型の毒で覆われている!"); |
166 | 166 | if (uarmg) { |
167 | +#if 0 /*JP*/ | |
167 | 168 | erode_obj(uarmg, "gloves", ERODE_CORRODE, EF_GREASE | EF_VERBOSE); |
169 | +#else | |
170 | + erode_obj(uarmg, "小手", ERODE_CORRODE, EF_GREASE | EF_VERBOSE); | |
171 | +#endif | |
168 | 172 | break; |
169 | 173 | } |
170 | 174 | /* temp disable in_use; death should not destroy the book */ |
@@ -534,7 +538,10 @@ register struct obj *spellbook; | ||
534 | 538 | |
535 | 539 | /* attempting to read dull book may make hero fall asleep */ |
536 | 540 | if (!confused && booktype != SPE_BLANK_PAPER |
541 | +/*JP | |
537 | 542 | && !strcmp(OBJ_DESCR(objects[booktype]), "dull")) { |
543 | +*/ | |
544 | + && !strcmp(OBJ_DESCR(objects[booktype]), "鉛色の魔法書")) { | |
538 | 545 | const char *eyes; |
539 | 546 | int dullbook = rnd(25) - ACURR(A_WIS); |
540 | 547 |
@@ -546,7 +553,10 @@ register struct obj *spellbook; | ||
546 | 553 | eyes = body_part(EYE); |
547 | 554 | if (eyecount(youmonst.data) > 1) |
548 | 555 | eyes = makeplural(eyes); |
556 | +/*JP | |
549 | 557 | pline("This book is so dull that you can't keep your %s open.", |
558 | +*/ | |
559 | + pline("この本は退屈すぎて%sを開けていられない.", | |
550 | 560 | eyes); |
551 | 561 | dullbook += rnd(2 * objects[booktype].oc_level); |
552 | 562 | fall_asleep(-dullbook, TRUE); |
@@ -700,7 +710,7 @@ register struct obj *spellbook; | ||
700 | 710 | /*JP |
701 | 711 | set_occupation(learn, "studying", 0); |
702 | 712 | */ |
703 | - set_occupation(learn, "学ぶ", 0); | |
713 | + set_occupation(learn, "学ぶ", 0); | |
704 | 714 | return 1; |
705 | 715 | } |
706 | 716 |
@@ -754,7 +764,10 @@ rejectcasting() | ||
754 | 764 | { |
755 | 765 | /* rejections which take place before selecting a particular spell */ |
756 | 766 | if (Stunned) { |
767 | +/*JP | |
757 | 768 | You("are too impaired to cast a spell."); |
769 | +*/ | |
770 | + You("魔法を唱えられない."); | |
758 | 771 | return TRUE; |
759 | 772 | } else if (!freehand()) { |
760 | 773 | /* Note: !freehand() occurs when weapon and shield (or two-handed |
@@ -1565,24 +1578,51 @@ losespells() | ||
1565 | 1578 | * appended to the end of the list? |
1566 | 1579 | */ |
1567 | 1580 | static const char *spl_sortchoices[] = { |
1581 | +/*JP | |
1568 | 1582 | "by casting letter", |
1583 | +*/ | |
1584 | + "選択する文字順", | |
1569 | 1585 | #define SORTBY_LETTER 0 |
1586 | +/*JP | |
1570 | 1587 | "alphabetically", |
1588 | +*/ | |
1589 | + "文字コード順", | |
1571 | 1590 | #define SORTBY_ALPHA 1 |
1591 | +/*JP | |
1572 | 1592 | "by level, low to high", |
1593 | +*/ | |
1594 | + "レベル昇順", | |
1573 | 1595 | #define SORTBY_LVL_LO 2 |
1596 | +/*JP | |
1574 | 1597 | "by level, high to low", |
1598 | +*/ | |
1599 | + "レベル降順", | |
1575 | 1600 | #define SORTBY_LVL_HI 3 |
1601 | +/*JP | |
1576 | 1602 | "by skill group, alphabetized within each group", |
1603 | +*/ | |
1604 | + "スキルグループ毎に文字コード順", | |
1577 | 1605 | #define SORTBY_SKL_AL 4 |
1606 | +/*JP | |
1578 | 1607 | "by skill group, low to high level within group", |
1608 | +*/ | |
1609 | + "スキルグループ毎にレベル昇順", | |
1579 | 1610 | #define SORTBY_SKL_LO 5 |
1611 | +/*JP | |
1580 | 1612 | "by skill group, high to low level within group", |
1613 | +*/ | |
1614 | + "スキルグループ毎にレベル降順", | |
1581 | 1615 | #define SORTBY_SKL_HI 6 |
1616 | +/*JP | |
1582 | 1617 | "maintain current ordering", |
1618 | +*/ | |
1619 | + "現在の順序を維持", | |
1583 | 1620 | #define SORTBY_CURRENT 7 |
1584 | 1621 | /* a menu choice rather than a sort choice */ |
1622 | +/*JP | |
1585 | 1623 | "reassign casting letters to retain current order", |
1624 | +*/ | |
1625 | + "現在の順序を変えずに選択する文字を再割り当て", | |
1586 | 1626 | #define SORTRETAINORDER 8 |
1587 | 1627 | }; |
1588 | 1628 | static int spl_sortmode = 0; /* index into spl_sortchoices[] */ |
@@ -647,24 +647,39 @@ int ochance, achance; /* percent chance for ordinary item, artifact */ | ||
647 | 647 | if (cansee(mon->mx, mon->my)) { |
648 | 648 | const char *MonName = Monnam(mon); |
649 | 649 | |
650 | +#if 0 /*JP*//*日本語では不要*/ | |
650 | 651 | /* mon might be invisible; avoid "It pulls ... and absorbs it!" */ |
651 | 652 | if (!strcmp(MonName, "It")) |
652 | 653 | MonName = "Something"; |
654 | +#endif | |
655 | +#if 0 /*JP*/ | |
653 | 656 | pline("%s pulls %s away from you and absorbs %s!", MonName, |
654 | 657 | yname(obj), (obj->quan > 1L) ? "them" : "it"); |
658 | +#else | |
659 | + pline("%sは%sを引っぱり込んで吸収した!", MonName, | |
660 | + yname(obj)); | |
661 | +#endif | |
655 | 662 | } else { |
656 | 663 | const char *hand_s = body_part(HAND); |
657 | 664 | |
658 | 665 | if (bimanual(obj)) |
659 | 666 | hand_s = makeplural(hand_s); |
667 | +#if 0 /*JP*/ | |
660 | 668 | pline("%s %s pulled from your %s!", upstart(yname(obj)), |
661 | 669 | otense(obj, "are"), hand_s); |
670 | +#else | |
671 | + pline("%sはあなたの%sから引っぱり込まれた!", upstart(yname(obj)), | |
672 | + hand_s); | |
673 | +#endif | |
662 | 674 | } |
663 | 675 | freeinv(obj); |
664 | 676 | } else { |
665 | 677 | /* not carried; presumably thrown or kicked */ |
666 | 678 | if (canspotmon(mon)) |
679 | +/*JP | |
667 | 680 | pline("%s absorbs %s!", Monnam(mon), yname(obj)); |
681 | +*/ | |
682 | + pline("%sは%sを吸収した!", Monnam(mon), yname(obj)); | |
668 | 683 | } |
669 | 684 | /* add to mon's inventory */ |
670 | 685 | (void) mpickobj(mon, obj); |
@@ -751,8 +766,13 @@ boolean is_pet; /* If true, pet should keep wielded/worn items */ | ||
751 | 766 | /* vault guard's gold goes away rather than be dropped... */ |
752 | 767 | if (mtmp->isgd && (otmp = findgold(mtmp->minvent)) != 0) { |
753 | 768 | if (canspotmon(mtmp)) |
769 | +#if 0 /*JP*/ | |
754 | 770 | pline("%s gold %s.", s_suffix(Monnam(mtmp)), |
755 | 771 | canseemon(mtmp) ? "vanishes" : "seems to vanish"); |
772 | +#else | |
773 | + pline("%sの金は消えた%s.", Monnam(mtmp), | |
774 | + canseemon(mtmp) ? "" : "ようだ"); | |
775 | +#endif | |
756 | 776 | obj_extract_self(otmp); |
757 | 777 | obfree(otmp, (struct obj *) 0); |
758 | 778 | } /* isgd && has gold */ |
@@ -824,7 +824,10 @@ struct monst *steed; | ||
824 | 824 | } |
825 | 825 | } |
826 | 826 | if (wasimmobile && !steed->msleeping && steed->mcanmove) |
827 | +/*JP | |
827 | 828 | pline("%s wakes up.", Monnam(steed)); |
829 | +*/ | |
830 | + pline("%sは起きた.", Monnam(steed)); | |
828 | 831 | /* regardless of waking, terminate any meal in progress */ |
829 | 832 | finish_meating(steed); |
830 | 833 | } |
@@ -840,12 +843,18 @@ boolean checkfeeding; | ||
840 | 843 | if (steed) { |
841 | 844 | /* check whether steed can move */ |
842 | 845 | if (steed->msleeping || !steed->mcanmove) { |
846 | +/*JP | |
843 | 847 | pline("%s won't move!", upstart(y_monnam(steed))); |
848 | +*/ | |
849 | + pline("%sは動けない!", y_monnam(steed)); | |
844 | 850 | return TRUE; |
845 | 851 | } |
846 | 852 | /* optionally check whether steed is in the midst of a meal */ |
847 | 853 | if (checkfeeding && steed->meating) { |
854 | +/*JP | |
848 | 855 | pline("%s is still eating.", upstart(y_monnam(steed))); |
856 | +*/ | |
857 | + pline("%sはまだ食べている.", y_monnam(steed)); | |
849 | 858 | return TRUE; |
850 | 859 | } |
851 | 860 | } |
@@ -498,7 +498,10 @@ struct obj *scroll; | ||
498 | 498 | } |
499 | 499 | } else if (scroll && scroll->blessed) { |
500 | 500 | /* (this used to be handled in seffects()) */ |
501 | +/*JP | |
501 | 502 | if (yn("Do you wish to teleport?") == 'n') |
503 | +*/ | |
504 | + if (yn("瞬間移動しますか?") == 'n') | |
502 | 505 | return TRUE; |
503 | 506 | result = TRUE; |
504 | 507 | } |
@@ -45,8 +45,13 @@ stoned_dialogue() | ||
45 | 45 | char buf[BUFSZ]; |
46 | 46 | |
47 | 47 | Strcpy(buf, stoned_texts[SIZE(stoned_texts) - i]); |
48 | +#if 0 /*JP*/ | |
48 | 49 | if (nolimbs(youmonst.data) && strstri(buf, "limbs")) |
49 | 50 | (void) strsubst(buf, "limbs", "extremities"); |
51 | +#else | |
52 | + if (nolimbs(youmonst.data) && strstri(buf, "手足")) | |
53 | + (void) strsubst(buf, "手足", "先端"); | |
54 | +#endif | |
50 | 55 | pline1(buf); |
51 | 56 | } |
52 | 57 | switch ((int) i) { |
@@ -126,7 +131,10 @@ vomiting_dialogue() | ||
126 | 131 | case 2: |
127 | 132 | txt = vomiting_texts[4]; |
128 | 133 | if (cantvomit(youmonst.data)) |
134 | +/*JP | |
129 | 135 | txt = "gag uncontrolably."; |
136 | +*/ | |
137 | + txt = "気分の悪さが抑えられなくなった."; | |
130 | 138 | break; |
131 | 139 | case 0: |
132 | 140 | stop_occupation(); |
@@ -218,8 +226,13 @@ slime_dialogue() | ||
218 | 226 | char buf[BUFSZ]; |
219 | 227 | |
220 | 228 | Strcpy(buf, slime_texts[SIZE(slime_texts) - i - 1L]); |
229 | +#if 0 /*JP*/ | |
221 | 230 | if (nolimbs(youmonst.data) && strstri(buf, "limbs")) |
222 | 231 | (void) strsubst(buf, "limbs", "extremities"); |
232 | +#else | |
233 | + if (nolimbs(youmonst.data) && strstri(buf, "手足")) | |
234 | + (void) strsubst(buf, "手足", "先端"); | |
235 | +#endif | |
223 | 236 | |
224 | 237 | if (index(buf, '%')) { |
225 | 238 | if (i == 4L) { /* "you are turning green" */ |
@@ -500,7 +513,10 @@ nh_timeout() | ||
500 | 513 | /* must be declining to die in explore|wizard mode; |
501 | 514 | treat like being cured of strangulation by prayer */ |
502 | 515 | if (uamul && uamul->otyp == AMULET_OF_STRANGULATION) { |
516 | +/*JP | |
503 | 517 | Your("amulet vanishes!"); |
518 | +*/ | |
519 | + Your("魔除けは消えた!"); | |
504 | 520 | useup(uamul); |
505 | 521 | } |
506 | 522 | break; |
@@ -732,7 +748,7 @@ long timeout; | ||
732 | 748 | #if 0 /*JP*/ |
733 | 749 | verbalize("Gleep!"); /* Mything eggs :-) */ |
734 | 750 | #else |
735 | - verbalize("ブォー!"); /* Mything eggs :-) */ | |
751 | + verbalize("ブォー!"); /* Mything eggs :-) */ | |
736 | 752 | #endif |
737 | 753 | } |
738 | 754 | break; |
@@ -893,8 +909,13 @@ slip_or_trip() | ||
893 | 909 | } |
894 | 910 | if (!uarmf && otmp->otyp == CORPSE |
895 | 911 | && touch_petrifies(&mons[otmp->corpsenm]) && !Stone_resistance) { |
912 | +#if 0 /*JP*/ | |
896 | 913 | Sprintf(killer.name, "tripping over %s corpse", |
897 | 914 | an(mons[otmp->corpsenm].mname)); |
915 | +#else | |
916 | + Sprintf(killer.name, "%sの死体につまづいて", | |
917 | + mons[otmp->corpsenm].mname); | |
918 | +#endif | |
898 | 919 | instapetrify(killer.name); |
899 | 920 | } |
900 | 921 | } else if (rn2(3) && is_ice(u.ux, u.uy)) { |
@@ -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 | #ifdef SHORT_FILENAMES |
@@ -856,6 +861,11 @@ boolean so; | ||
856 | 861 | #endif |
857 | 862 | #if 0 /*JP*/ |
858 | 863 | if (!strncmp("escaped", t1->death, 7)) { |
864 | +#else | |
865 | + if (!strncmp("脱出した", jdeath, 8) | |
866 | + || !strncmp("escaped", jdeath, 7)) { | |
867 | +#endif | |
868 | +#if 0 /*JP*/ | |
859 | 869 | Sprintf(eos(linebuf), "escaped the dungeon %s[max level %d]", |
860 | 870 | !strncmp(" (", t1->death + 7, 2) ? t1->death + 7 + 2 : "", |
861 | 871 | t1->maxlvl); |
@@ -863,42 +873,40 @@ boolean so; | ||
863 | 873 | if ((bp = index(linebuf, ')')) != 0) |
864 | 874 | *bp = (t1->deathdnum == astral_level.dnum) ? '\0' : ' '; |
865 | 875 | #else |
866 | - if (!strncmp("脱出した", jdeath, 8) | |
867 | - || !strncmp("escaped", jdeath, 7)) { | |
868 | - char jbuf[BUFSZ]; | |
869 | - strncpy(jbuf, t1->death, jdeath - t1->death); | |
870 | - jbuf[jdeath - t1->death] = '\0'; | |
871 | - Sprintf(action, "%s迷宮から脱出した[最大地下%d階]", | |
872 | - jbuf, t1->maxlvl); | |
876 | + char jbuf[BUFSZ]; | |
877 | + strncpy(jbuf, t1->death, jdeath - t1->death); | |
878 | + jbuf[jdeath - t1->death] = '\0'; | |
879 | + Sprintf(action, "%s迷宮から脱出した[最大地下%d階]", | |
880 | + jbuf, t1->maxlvl); | |
873 | 881 | #endif |
874 | 882 | second_line = FALSE; |
875 | 883 | #if 0 /*JP*/ |
876 | 884 | } else if (!strncmp("ascended", t1->death, 8)) { |
877 | 885 | #else |
878 | - } else if (!strncmp("昇天した", jdeath, 8) | |
879 | - || !strncmp("ascended", jdeath, 8)) { | |
886 | + } else if (!strncmp("昇天した", jdeath, 8) | |
887 | + || !strncmp("ascended", jdeath, 8)) { | |
880 | 888 | #endif |
881 | 889 | #if 0 /*JP:T*/ |
882 | 890 | Sprintf(eos(linebuf), "ascended to demigod%s-hood", |
883 | 891 | (t1->plgend[0] == 'F') ? "dess" : ""); |
884 | 892 | #else |
885 | - Sprintf(action, "昇天し%s神となった", | |
886 | - (t1->plgend[0] == 'F') ? "女" : ""); | |
893 | + Sprintf(action, "昇天し%s神となった", | |
894 | + (t1->plgend[0] == 'F') ? "女" : ""); | |
887 | 895 | #endif |
888 | 896 | second_line = FALSE; |
889 | 897 | } else { |
890 | 898 | /*JP |
891 | 899 | if (!strncmp(t1->death, "quit", 4)) { |
892 | 900 | */ |
893 | - if (!strncmp(jdeath, "抜けた", 4)) { | |
901 | + if (!strncmp(jdeath, "抜けた", 4)) { | |
894 | 902 | #if 0 /*JP*/ |
895 | 903 | Strcat(linebuf, "quit"); |
896 | 904 | #else |
897 | - Strcat(action, t1->death); | |
905 | + Strcat(action, t1->death); | |
898 | 906 | #endif |
899 | 907 | second_line = FALSE; |
900 | 908 | #if 1 /*JP*/ |
901 | - } | |
909 | + } | |
902 | 910 | #else |
903 | 911 | } else if (!strncmp(t1->death, "died of st", 10)) { |
904 | 912 | Strcat(linebuf, "starved to death"); |
@@ -252,7 +252,7 @@ int ef_flags; | ||
252 | 252 | /*JP |
253 | 253 | Your("%s %s not affected.", ostr, vtense(ostr, "are")); |
254 | 254 | */ |
255 | - Your("%sは影響を受けなかった.",ostr); | |
255 | + Your("%sは影響を受けなかった.", ostr); | |
256 | 256 | else if (vismon) |
257 | 257 | #if 0 /*JP*/ |
258 | 258 | pline("%s %s %s not affected.", s_suffix(Monnam(victim)), |
@@ -281,8 +281,12 @@ int ef_flags; | ||
281 | 281 | mon_nam(victim), ostr); |
282 | 282 | #endif |
283 | 283 | else if (visobj) |
284 | +#if 0 /*JP*/ | |
284 | 285 | pline("Somehow, the %s %s not affected.", ostr, |
285 | 286 | vtense(ostr, "are")); |
287 | +#else | |
288 | + pline("なぜか,%sは影響を受けなかった.", ostr); | |
289 | +#endif | |
286 | 290 | } |
287 | 291 | /* We assume here that if the object is protected because it |
288 | 292 | * is blessed, it still shows some minor signs of wear, and |
@@ -339,12 +343,23 @@ int ef_flags; | ||
339 | 343 | return ER_DAMAGED; |
340 | 344 | } else if (ef_flags & EF_DESTROY) { |
341 | 345 | if (victim == &youmonst) |
346 | +/*JP | |
342 | 347 | Your("%s %s away!", ostr, vtense(ostr, action[type])); |
348 | +*/ | |
349 | + Your("%sは完全に%s!", ostr, action[type]); | |
343 | 350 | else if (vismon) |
351 | +#if 0 /*JP*/ | |
344 | 352 | pline("%s %s %s away!", s_suffix(Monnam(victim)), ostr, |
345 | 353 | vtense(ostr, action[type])); |
354 | +#else | |
355 | + pline("%sの%sは完全に%s!", Monnam(victim), ostr, | |
356 | + action[type]); | |
357 | +#endif | |
346 | 358 | else if (visobj) |
359 | +/*JP | |
347 | 360 | pline("The %s %s away!", ostr, vtense(ostr, action[type])); |
361 | +*/ | |
362 | + pline("%sは完全に%s!", ostr, action[type]); | |
348 | 363 | |
349 | 364 | if (ef_flags & EF_PAY) |
350 | 365 | costly_alteration(otmp, cost_type); |
@@ -1469,7 +1484,10 @@ unsigned trflags; | ||
1469 | 1484 | SUPPRESS_SADDLE, FALSE)); |
1470 | 1485 | #endif |
1471 | 1486 | } else if (adj_pit) { |
1487 | +/*JP | |
1472 | 1488 | You("move into an adjacent pit."); |
1489 | +*/ | |
1490 | + You("隣の落し穴に移動した."); | |
1473 | 1491 | } else { |
1474 | 1492 | #if 0 /*JP*/ |
1475 | 1493 | Strcpy(verbbuf, |
@@ -1502,7 +1520,7 @@ unsigned trflags; | ||
1502 | 1520 | /*JP |
1503 | 1521 | const char *predicament = "on a set of sharp iron spikes"; |
1504 | 1522 | */ |
1505 | - const char *predicament = "鋭い鉄のトゲトゲの上に落ちた"; | |
1523 | + const char *predicament = "鋭い鉄のトゲトゲの上に"; | |
1506 | 1524 | |
1507 | 1525 | if (u.usteed) { |
1508 | 1526 | #if 0 /*JP*/ |
@@ -1511,16 +1529,16 @@ unsigned trflags; | ||
1511 | 1529 | SUPPRESS_SADDLE, FALSE)), |
1512 | 1530 | adj_pit ? "steps" : "lands", predicament); |
1513 | 1531 | #else |
1514 | - pline("%sは%s!", | |
1532 | + pline("%sは%s%s!", | |
1515 | 1533 | upstart(x_monnam(u.usteed, steed_article, "かわいそうな", |
1516 | 1534 | SUPPRESS_SADDLE, FALSE)), |
1517 | - predicament); | |
1535 | + predicament, adj_pit ? "落ちた" : "降りた"); | |
1518 | 1536 | #endif |
1519 | 1537 | } else |
1520 | 1538 | #if 0 /*JP*/ |
1521 | 1539 | You("%s %s!", adj_pit ? "step" : "land", predicament); |
1522 | 1540 | #else |
1523 | - You("%s!", predicament); | |
1541 | + You("%s%s!", predicament, adj_pit ? "落ちた" : "降りた"); | |
1524 | 1542 | #endif |
1525 | 1543 | } |
1526 | 1544 | u.utrap = rn1(6, 2); |
@@ -3004,7 +3022,7 @@ register struct monst *mtmp; | ||
3004 | 3022 | /*JP |
3005 | 3023 | fallverb = "falls"; |
3006 | 3024 | */ |
3007 | - fallverb = "落ちる"; | |
3025 | + fallverb = "落ちた"; | |
3008 | 3026 | if (is_flyer(mptr) || is_floater(mptr) |
3009 | 3027 | || (mtmp->wormno && count_wsegs(mtmp) > 5) |
3010 | 3028 | || is_clinger(mptr)) { |
@@ -3024,7 +3042,7 @@ register struct monst *mtmp; | ||
3024 | 3042 | #if 0 /*JP*/ |
3025 | 3043 | fallverb = "is dragged"; /* sokoban pit */ |
3026 | 3044 | #else |
3027 | - fallverb = "ずり落ちる"; /* sokoban pit */ | |
3045 | + fallverb = "ずり落ちた"; /* sokoban pit */ | |
3028 | 3046 | #endif |
3029 | 3047 | } |
3030 | 3048 | if (!passes_walls(mptr)) |
@@ -3035,7 +3053,7 @@ register struct monst *mtmp; | ||
3035 | 3053 | a_your[trap->madeby_u]); |
3036 | 3054 | #else |
3037 | 3055 | pline("%sは%s落し穴に%s!", Monnam(mtmp), |
3038 | - set_you[trap->madeby_u], jpast(fallverb)); | |
3056 | + set_you[trap->madeby_u], fallverb); | |
3039 | 3057 | #endif |
3040 | 3058 | if (mptr == &mons[PM_PIT_VIPER] |
3041 | 3059 | || mptr == &mons[PM_PIT_FIEND]) |
@@ -3569,7 +3587,7 @@ float_up() | ||
3569 | 3587 | /*JP |
3570 | 3588 | You("gain control over your movements."); |
3571 | 3589 | */ |
3572 | - You("うまく歩けるようになった."); | |
3590 | + You("うまく動けるようになった."); | |
3573 | 3591 | } else { |
3574 | 3592 | /*JP |
3575 | 3593 | You("start to float in the air!"); |
@@ -3592,7 +3610,10 @@ float_up() | ||
3592 | 3610 | } |
3593 | 3611 | } |
3594 | 3612 | if (Flying) |
3613 | +/*JP | |
3595 | 3614 | You("are no longer able to control your flight."); |
3615 | +*/ | |
3616 | + You("空中でうまく動けなくなった."); | |
3596 | 3617 | BFlying |= I_SPECIAL; |
3597 | 3618 | return; |
3598 | 3619 | } |
@@ -3638,7 +3659,10 @@ long hmask, emask; /* might cancel timeout */ | ||
3638 | 3659 | /* controlled flight no longer overridden by levitation */ |
3639 | 3660 | BFlying &= ~I_SPECIAL; |
3640 | 3661 | if (Flying) { |
3662 | +/*JP | |
3641 | 3663 | You("have stopped levitating and are now flying."); |
3664 | +*/ | |
3665 | + You("空中浮遊を止めて空を飛びはじめた."); | |
3642 | 3666 | return 1; |
3643 | 3667 | } |
3644 | 3668 | } |
@@ -3745,12 +3769,22 @@ long hmask, emask; /* might cancel timeout */ | ||
3745 | 3769 | selftouch("落ちながら,あなたは"); |
3746 | 3770 | } else if (u.usteed && (is_floater(u.usteed->data) |
3747 | 3771 | || is_flyer(u.usteed->data))) { |
3772 | +/*JP | |
3748 | 3773 | You("settle more firmly in the saddle."); |
3774 | +*/ | |
3775 | + You("よりしっかりと鞍に納まった."); | |
3749 | 3776 | } else if (Hallucination) { |
3777 | +#if 0 /*JP*/ | |
3750 | 3778 | pline("Bummer! You've %s.", |
3751 | 3779 | is_pool(u.ux, u.uy) |
3752 | 3780 | ? "splashed down" |
3753 | 3781 | : "hit the ground"); |
3782 | +#else | |
3783 | + pline("やめてぇ!あなたは%sに叩きつけられた.", | |
3784 | + is_pool(u.ux, u.uy) | |
3785 | + ? "水面" | |
3786 | + : "地面"); | |
3787 | +#endif | |
3754 | 3788 | } else { |
3755 | 3789 | /*JP |
3756 | 3790 | You("float gently to the %s.", surface(u.ux, u.uy)); |
@@ -3795,7 +3829,10 @@ climb_pit() | ||
3795 | 3829 | |
3796 | 3830 | if (Passes_walls) { |
3797 | 3831 | /* marked as trapped so they can pick things up */ |
3832 | +/*JP | |
3798 | 3833 | You("ascend from the pit."); |
3834 | +*/ | |
3835 | + You("落し穴を上っていった."); | |
3799 | 3836 | u.utrap = 0; |
3800 | 3837 | fill_pit(u.ux, u.uy); |
3801 | 3838 | vision_full_recalc = 1; /* vision limits change */ |
@@ -3803,28 +3840,49 @@ climb_pit() | ||
3803 | 3840 | Your("%s gets stuck in a crevice.", body_part(LEG)); |
3804 | 3841 | display_nhwindow(WIN_MESSAGE, FALSE); |
3805 | 3842 | clear_nhwindow(WIN_MESSAGE); |
3843 | +/*JP | |
3806 | 3844 | You("free your %s.", body_part(LEG)); |
3845 | +*/ | |
3846 | + Your("%sは自由になった.", body_part(LEG)); | |
3807 | 3847 | } else if ((Flying || is_clinger(youmonst.data)) && !Sokoban) { |
3808 | 3848 | /* eg fell in pit, then poly'd to a flying monster; |
3809 | 3849 | or used '>' to deliberately enter it */ |
3850 | +/*JP | |
3810 | 3851 | You("%s from the pit.", Flying ? "fly" : "climb"); |
3852 | +*/ | |
3853 | + You("落し穴から%sいった.", Flying ? "上って" : "登って"); | |
3811 | 3854 | u.utrap = 0; |
3812 | 3855 | fill_pit(u.ux, u.uy); |
3813 | 3856 | vision_full_recalc = 1; /* vision limits change */ |
3814 | 3857 | } else if (!(--u.utrap)) { |
3858 | +#if 0 /*JP*/ | |
3815 | 3859 | You("%s to the edge of the pit.", |
3816 | 3860 | (Sokoban && Levitation) |
3817 | 3861 | ? "struggle against the air currents and float" |
3818 | 3862 | : u.usteed ? "ride" : "crawl"); |
3863 | +#else | |
3864 | + You("%s落し穴の端にたどり着いた.", | |
3865 | + (Sokoban && Levitation) | |
3866 | + ? "空気の流れの中でもがきながら" : ""); | |
3867 | +#endif | |
3819 | 3868 | fill_pit(u.ux, u.uy); |
3820 | 3869 | vision_full_recalc = 1; /* vision limits change */ |
3821 | 3870 | } else if (u.dz || flags.verbose) { |
3822 | 3871 | if (u.usteed) |
3872 | +/*JP | |
3823 | 3873 | Norep("%s is still in a pit.", upstart(y_monnam(u.usteed))); |
3874 | +*/ | |
3875 | + Norep("%sはまだ落し穴の中にいる.", y_monnam(u.usteed)); | |
3824 | 3876 | else |
3877 | +#if 0 /*JP*/ | |
3825 | 3878 | Norep((Hallucination && !rn2(5)) |
3826 | 3879 | ? "You've fallen, and you can't get up." |
3827 | 3880 | : "You are still in a pit."); |
3881 | +#else | |
3882 | + Norep((Hallucination && !rn2(5)) | |
3883 | + ? "あなたは落ち,上がれない." | |
3884 | + : "あなたはまだ落し穴の中にいる."); | |
3885 | +#endif | |
3828 | 3886 | } |
3829 | 3887 | } |
3830 | 3888 |
@@ -4373,7 +4431,7 @@ boolean force; | ||
4373 | 4431 | : (one ? "Another" : "More"), |
4374 | 4432 | bufp, vtense(bufp, "explode")); |
4375 | 4433 | #else |
4376 | - pline("薬瓶が爆発した!"); | |
4434 | + pline("%sは爆発した!", bufp); | |
4377 | 4435 | #endif |
4378 | 4436 | if (acid_ctx.ctx_valid) { |
4379 | 4437 | if (obj->dknown) |
@@ -4678,9 +4736,11 @@ crawl: | ||
4678 | 4736 | because lifesaving resets them */ |
4679 | 4737 | pool_of_water = waterbody_name(u.ux, u.uy); |
4680 | 4738 | killer.format = KILLED_BY_AN; |
4739 | +#if 0 /*JP*/ | |
4681 | 4740 | /* avoid "drowned in [a] water" */ |
4682 | 4741 | if (!strcmp(pool_of_water, "water")) |
4683 | 4742 | pool_of_water = "deep water", killer.format = KILLED_BY; |
4743 | +#endif | |
4684 | 4744 | Strcpy(killer.name, pool_of_water); |
4685 | 4745 | done(DROWNING); |
4686 | 4746 | /* oops, we're still alive. better get out of the water. */ |
@@ -1514,7 +1514,10 @@ struct obj *otmp; | ||
1514 | 1514 | #endif |
1515 | 1515 | |
1516 | 1516 | /* stealing this corpse is fatal... */ |
1517 | +/*JP | |
1517 | 1518 | instapetrify(corpse_xname(otmp, "stolen", CXN_ARTICLE)); |
1519 | +*/ | |
1520 | + instapetrify(corpse_xname(otmp, "盗まれた", CXN_ARTICLE)); | |
1518 | 1521 | /* apparently wasn't fatal after all... */ |
1519 | 1522 | return TRUE; |
1520 | 1523 | } |
@@ -2253,8 +2256,14 @@ register struct attack *mattk; | ||
2253 | 2256 | |
2254 | 2257 | if (!type_is_pname(pd)) |
2255 | 2258 | mname = an(mname); |
2259 | +/*JP | |
2256 | 2260 | You("englut %s.", mon_nam(mdef)); |
2261 | +*/ | |
2262 | + You("%sを飲み込んだ.", mon_nam(mdef)); | |
2263 | +/*JP | |
2257 | 2264 | Sprintf(kbuf, "swallowing %s whole", mname); |
2265 | +*/ | |
2266 | + Sprintf(kbuf, "%sを飲み込んで", mname); | |
2258 | 2267 | instapetrify(kbuf); |
2259 | 2268 | } else { |
2260 | 2269 | start_engulf(mdef); |
@@ -2478,7 +2487,10 @@ register struct attack *mattk; | ||
2478 | 2487 | boolean wouldhavehit; |
2479 | 2488 | { |
2480 | 2489 | if (wouldhavehit) /* monk is missing due to penalty for wearing suit */ |
2490 | +/*JP | |
2481 | 2491 | Your("armor is rather cumbersome..."); |
2492 | +*/ | |
2493 | + Your("防具は少し邪魔だ..."); | |
2482 | 2494 | |
2483 | 2495 | if (could_seduce(&youmonst, mdef, mattk)) |
2484 | 2496 | /*JP |
@@ -2920,9 +2932,14 @@ boolean wep_was_destroyed; | ||
2920 | 2932 | You("%sのにらみで一瞬硬直した!", |
2921 | 2933 | s_suffix(mon_nam(mon))); |
2922 | 2934 | } else if (Hallucination && rn2(4)) { |
2935 | +#if 0 /*JP*/ | |
2923 | 2936 | pline("%s looks %s%s.", Monnam(mon), |
2924 | 2937 | !rn2(2) ? "" : "rather ", |
2925 | 2938 | !rn2(2) ? "numb" : "stupified"); |
2939 | +#else | |
2940 | + pline("%sは%sばかになったようだ.", Monnam(mon), | |
2941 | + !rn2(2) ? "" : "少し"); | |
2942 | +#endif | |
2926 | 2943 | } else { |
2927 | 2944 | /*JP |
2928 | 2945 | You("are frozen by %s gaze!", s_suffix(mon_nam(mon))); |
@@ -360,9 +360,15 @@ invault() | ||
360 | 360 | newsym(guard->mx, guard->my); |
361 | 361 | if (u.uswallow) { |
362 | 362 | /* can't interrogate hero, don't interrogate engulfer */ |
363 | +/*JP | |
363 | 364 | verbalize("What's going on here?"); |
365 | +*/ | |
366 | + verbalize("ここで何をしているんだ?"); | |
364 | 367 | if (gsensed) |
368 | +/*JP | |
365 | 369 | pline_The("other presence vanishes."); |
370 | +*/ | |
371 | + pline("他人の気配は消えた."); | |
366 | 372 | mongone(guard); |
367 | 373 | return; |
368 | 374 | } |
@@ -651,8 +657,13 @@ register struct monst *grd; | ||
651 | 657 | return -1; /* teleported guard - treat as monster */ |
652 | 658 | |
653 | 659 | if (egrd->witness) { |
660 | +#if 0 /*JP*/ | |
654 | 661 | verbalize("How dare you %s that gold, scoundrel!", |
655 | 662 | (egrd->witness & GD_EATGOLD) ? "consume" : "destroy"); |
663 | +#else | |
664 | + verbalize("よくもまあ金を%sものだ,悪党め!", | |
665 | + (egrd->witness & GD_EATGOLD) ? "使った" : "壊した"); | |
666 | +#endif | |
656 | 667 | egrd->witness = 0; |
657 | 668 | grd->mpeaceful = 0; |
658 | 669 | return -1; |
@@ -968,7 +979,10 @@ newpos: | ||
968 | 979 | it and give an inappropriate message */ |
969 | 980 | mpickgold(grd); |
970 | 981 | if (canspotmon(grd)) |
982 | +/*JP | |
971 | 983 | pline("%s picks up some gold.", Monnam(grd)); |
984 | +*/ | |
985 | + pline("%sは金を拾った.", Monnam(grd)); | |
972 | 986 | } else |
973 | 987 | newsym(grd->mx, grd->my); |
974 | 988 | restfakecorr(grd); |
@@ -2,17 +2,17 @@ | ||
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 | /* |
6 | 11 | * This module contains code for calculation of "to hit" and damage |
7 | 12 | * bonuses for any given weapon used, as well as weapons selection |
8 | 13 | * code for monsters. |
9 | 14 | */ |
10 | 15 | |
11 | -/* JNetHack Copyright */ | |
12 | -/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */ | |
13 | -/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */ | |
14 | -/* JNetHack may be freely redistributed. See license for details. */ | |
15 | - | |
16 | 16 | #include "hack.h" |
17 | 17 | |
18 | 18 | /* Categories whose names don't come from OBJ_NAME(objects[type]) |
@@ -889,16 +889,32 @@ boolean verbose; | ||
889 | 889 | /* new state is only reported if it's an increase */ |
890 | 890 | if (newspe > obj->spe) { |
891 | 891 | if (verbose) { |
892 | +#if 0 /*JP*/ | |
892 | 893 | const char *wetness = (newspe < 3) |
893 | 894 | ? (!obj->spe ? "damp" : "damper") |
894 | 895 | : (!obj->spe ? "wet" : "wetter"); |
896 | +#else | |
897 | + const char *wetness = (newspe < 3) | |
898 | + ? (!obj->spe ? "湿った" : "さらに湿った") | |
899 | + : (!obj->spe ? "濡れた" : "さらに濡れた"); | |
900 | +#endif | |
895 | 901 | |
896 | 902 | if (carried(obj)) |
903 | +#if 0 /*JP*/ | |
897 | 904 | pline("%s gets %s.", Yobjnam2(obj, (const char *) 0), |
898 | 905 | wetness); |
906 | +#else | |
907 | + pline("%sは%s.", Yobjnam2(obj, (const char *) 0), | |
908 | + wetness); | |
909 | +#endif | |
899 | 910 | else if (mcarried(obj) && canseemon(obj->ocarry)) |
911 | +#if 0 /*JP*/ | |
900 | 912 | pline("%s %s gets %s.", s_suffix(Monnam(obj->ocarry)), |
901 | 913 | xname(obj), wetness); |
914 | +#else | |
915 | + pline("%s%sは%s.", s_suffix(Monnam(obj->ocarry)), | |
916 | + xname(obj), wetness); | |
917 | +#endif | |
902 | 918 | } |
903 | 919 | } |
904 | 920 | obj->spe = min(newspe, 7); |
@@ -922,11 +938,21 @@ boolean verbose; | ||
922 | 938 | if (newspe < obj->spe) { |
923 | 939 | if (verbose) { |
924 | 940 | if (carried(obj)) |
941 | +#if 0 /*JP*/ | |
925 | 942 | pline("%s dries%s.", Yobjnam2(obj, (const char *) 0), |
926 | 943 | !newspe ? " out" : ""); |
944 | +#else | |
945 | + pline("%sは%s.", Yobjnam2(obj, (const char *) 0), | |
946 | + !newspe ? "乾ききった" : "乾いた"); | |
947 | +#endif | |
927 | 948 | else if (mcarried(obj) && canseemon(obj->ocarry)) |
949 | +#if 0 /*JP*/ | |
928 | 950 | pline("%s %s drie%s.", s_suffix(Monnam(obj->ocarry)), |
929 | 951 | xname(obj), !newspe ? " out" : ""); |
952 | +#else | |
953 | + pline("%s%sは%s.", s_suffix(Monnam(obj->ocarry)), | |
954 | + xname(obj), !newspe ? "乾ききった" : "乾いた"); | |
955 | +#endif | |
930 | 956 | } |
931 | 957 | } |
932 | 958 | newspe = min(newspe, 7); |
@@ -2,8 +2,28 @@ | ||
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 | |
12 | +#if 1 /*JP*/ | |
13 | +STATIC_DCL char *FDECL(beastname, (const char *)); | |
14 | + | |
15 | +/*JP 「ジャッカル人間」から「ジャッカル」を取り出す */ | |
16 | +STATIC_OVL char * | |
17 | +beastname(name) | |
18 | +const char *name; | |
19 | +{ | |
20 | + static char werebuf[BUFSZ]; | |
21 | + strcpy(werebuf, name); | |
22 | + werebuf[strlen(werebuf) - 4] = '\0'; | |
23 | + return werebuf; | |
24 | +} | |
25 | +#endif | |
26 | + | |
7 | 27 | void |
8 | 28 | were_change(mon) |
9 | 29 | register struct monst *mon; |
@@ -115,7 +135,7 @@ register struct monst *mon; | ||
115 | 135 | is_human(&mons[pm]) ? "human" : mons[pm].mname + 4); |
116 | 136 | #else |
117 | 137 | pline("%sは%sの姿になった.", Monnam(mon), |
118 | - is_human(&mons[pm]) ? "人間" : mons[pm].mname + 4); | |
138 | + is_human(&mons[pm]) ? "人間" : beastname(mons[pm].mname)); | |
119 | 139 | #endif |
120 | 140 | |
121 | 141 | set_mon_data(mon, &mons[pm], 0); |
@@ -204,9 +224,9 @@ you_were() | ||
204 | 224 | /* `+4' => skip "were" prefix to get name of beast */ |
205 | 225 | Sprintf(qbuf, "Do you want to change into %s?", |
206 | 226 | an(mons[u.ulycn].mname + 4)); |
207 | -#else /*JP: 日本語ではそこまでしない */ | |
208 | - Sprintf(qbuf,"%sに変化しますか?", | |
209 | - mons[u.ulycn].mname + 4); | |
227 | +#else | |
228 | + Sprintf(qbuf, "%sに変化しますか?", | |
229 | + beastname(mons[u.ulycn].mname)); | |
210 | 230 | #endif |
211 | 231 | if (yn(qbuf) == 'n') |
212 | 232 | return; |
@@ -238,7 +238,10 @@ struct obj *wep; | ||
238 | 238 | if (Race_if(PM_ELF) && !wep->oartifact |
239 | 239 | && objects[wep->otyp].oc_material == IRON) { |
240 | 240 | /* Elves are averse to wielding cold iron */ |
241 | +/*JP | |
241 | 242 | You("have an uneasy feeling about wielding cold iron."); |
243 | +*/ | |
244 | + You("冷たい鉄を装備することに不安な気持になった."); | |
242 | 245 | change_luck(-1); |
243 | 246 | } |
244 | 247 | #endif |
@@ -65,17 +65,17 @@ amulet() | ||
65 | 65 | /*JP |
66 | 66 | pline("%s hot!", Tobjnam(amu, "feel")); |
67 | 67 | */ |
68 | - pline("%sは熱く感じた!", xname(amu)); | |
68 | + pline("%sは熱く感じた!", xname(amu)); | |
69 | 69 | else if (du <= 64) |
70 | 70 | /*JP |
71 | 71 | pline("%s very warm.", Tobjnam(amu, "feel")); |
72 | 72 | */ |
73 | - pline("%sはとても暖かく感じた.", xname(amu)); | |
73 | + pline("%sはとても暖かく感じた.", xname(amu)); | |
74 | 74 | else if (du <= 144) |
75 | 75 | /*JP |
76 | 76 | pline("%s warm.", Tobjnam(amu, "feel")); |
77 | 77 | */ |
78 | - pline("%sは暖かく感じた.", xname(amu)); | |
78 | + pline("%sは暖かく感じた.", xname(amu)); | |
79 | 79 | /* else, the amulet feels normal */ |
80 | 80 | break; |
81 | 81 | } |
@@ -627,9 +627,15 @@ outer_break: | ||
627 | 627 | distant_name(best,doname)); |
628 | 628 | #endif |
629 | 629 | if (autocurse) |
630 | +#if 0 /*JP*/ | |
630 | 631 | pline("%s %s %s %s for a moment.", s_suffix(Monnam(mon)), |
631 | 632 | simpleonames(best), otense(best, "glow"), |
632 | 633 | hcolor(NH_BLACK)); |
634 | +#else | |
635 | + pline("%s%sはしばらく%s輝いた.", s_suffix(Monnam(mon)), | |
636 | + simpleonames(best), | |
637 | + jconj_adj(hcolor(NH_BLACK))); | |
638 | +#endif | |
633 | 639 | } /* can see it */ |
634 | 640 | m_delay += objects[best->otyp].oc_delay; |
635 | 641 | mon->mfrozen = m_delay; |
@@ -155,7 +155,10 @@ register struct obj *pen; | ||
155 | 155 | return 1; |
156 | 156 | } else if (paper->oclass == SPBOOK_CLASS) { |
157 | 157 | /* can't write a magic book while blind */ |
158 | +/*JP | |
158 | 159 | pline("%s can't create braille text.", |
160 | +*/ | |
161 | + pline("%sでは点字を作れない.", | |
159 | 162 | upstart(ysimple_name(pen))); |
160 | 163 | return 1; |
161 | 164 | } |
@@ -387,7 +390,10 @@ found: | ||
387 | 390 | have passed the write-an-unknown scroll test |
388 | 391 | above we can still fail this one, so it's doubly |
389 | 392 | hard to write an unknown scroll while blind */ |
393 | +/*JP | |
390 | 394 | You("fail to write the scroll correctly and it disappears."); |
395 | +*/ | |
396 | + You("巻物に正しく書くのに失敗した.巻物は消えた."); | |
391 | 397 | useup(paper); |
392 | 398 | obfree(new_obj, (struct obj *) 0); |
393 | 399 | return 1; |
@@ -437,6 +443,7 @@ new_book_description(booktype, outbuf) | ||
437 | 443 | int booktype; |
438 | 444 | char *outbuf; |
439 | 445 | { |
446 | +#if 0 /*JP*//*日本語では不要*/ | |
440 | 447 | /* subset of description strings from objects.c; if it grows |
441 | 448 | much, we may need to add a new flag field to objects[] instead */ |
442 | 449 | static const char *const compositions[] = { |
@@ -457,6 +464,9 @@ char *outbuf; | ||
457 | 464 | break; |
458 | 465 | |
459 | 466 | Sprintf(outbuf, "%s%s", *comp_p ? "into " : "", descr); |
467 | +#else /*JP:単純にコピー*/ | |
468 | + Strcpy(outbuf, OBJ_DESCR(objects[booktype])); | |
469 | +#endif | |
460 | 470 | return outbuf; |
461 | 471 | } |
462 | 472 |