OSDN Git Service

Merge branch 'For2.2.2-Refactoring' into For3.0.0-Artifact-Monster-Addition
authorHourier <hourier@users.sourceforge.jp>
Mon, 19 Oct 2020 12:30:24 +0000 (21:30 +0900)
committerHourier <hourier@users.sourceforge.jp>
Mon, 19 Oct 2020 12:30:24 +0000 (21:30 +0900)
105 files changed:
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
lib/edit/a_info.txt
lib/edit/misc.txt
lib/edit/q0000021.txt
lib/edit/q0000027.txt
lib/edit/q0000028.txt
lib/edit/q000chao.txt
lib/edit/q000natu.txt
lib/edit/q000sorc.txt
lib/edit/r_info.txt
lib/file/mondeath.txt
lib/file/mondeath_j.txt
lib/file/monspeak.txt
lib/file/monspeak_j.txt
src/Makefile.am
src/action/activation-execution.c
src/art-definition/random-art-effects.h
src/autopick/autopick-finder.c
src/autopick/autopick-reader-writer.c
src/blue-magic/blue-magic-breath.c
src/cmd-io/cmd-floor.c
src/cmd-item/cmd-destroy.c
src/cmd-item/cmd-equipment.c
src/cmd-item/cmd-refill.c
src/core/object-compressor.c
src/effect/effect-monster-resist-hurt.c
src/effect/effect-player-switcher.c
src/flavor/flavor-describer.c
src/floor/line-of-sight.c
src/grid/door.c
src/grid/object-placer.c
src/grid/stair.c
src/info-reader/dungeon-reader.c
src/info-reader/info-reader-util.h
src/info-reader/kind-reader.c
src/info-reader/parse-error-types.h
src/info-reader/race-reader.c
src/io/exit-panic.h
src/main/angband-headers.c
src/main/angband-headers.h
src/main/game-data-initializer.c
src/main/info-initializer.c
src/main/init-error-messages-table.c
src/market/arena-info-table.c
src/market/building-initializer.c
src/mind/mind-archer.c
src/mind/mind-hobbit.c
src/mind/mind-magic-eater.c
src/mind/mind-priest.c
src/monster-attack/monster-attack-lose.c [new file with mode: 0644]
src/monster-attack/monster-attack-lose.h [new file with mode: 0644]
src/monster-attack/monster-attack-switcher.c
src/monster-attack/monster-eating.c
src/monster-floor/monster-death-util.c
src/monster-floor/monster-summon.c
src/monster-floor/one-monster-placer.c
src/monster-floor/special-death-switcher.c
src/monster-race/monster-race-hook.c
src/monster-race/race-indice-types.h
src/monster/monster-update.c
src/monster/monster-util.c
src/monster/monster-util.h
src/mspell/mspell-summon.c
src/mspell/specified-summon.c
src/mspell/specified-summon.h
src/mspell/summon-checker.c
src/object-activation/activation-bolt-ball.c
src/object-activation/activation-breath.c
src/object-activation/activation-genocide.c
src/object-activation/activation-others.c
src/object-activation/activation-others.h
src/object-activation/activation-resistance.c
src/object-activation/activation-switcher.c
src/object-activation/activation-teleport.c
src/object-enchant/activation-info-table.c
src/object-enchant/activation-info-table.h
src/object-enchant/object-boost.c
src/object-enchant/tr-types.h
src/player-info/base-status-info.c
src/player-info/body-improvement-info.c
src/player-info/class-ability-info.c
src/player-info/mutation-info.c
src/player-info/race-ability-info.c
src/player-info/resistance-info.c
src/player-info/weapon-effect-info.c
src/player/player-damage.c
src/room/vault-builder.c
src/specific-object/blade-turner.c
src/specific-object/bloody-moon.c
src/specific-object/monster-ball.c
src/specific-object/muramasa.c
src/specific-object/ring-of-power.c
src/specific-object/toragoroshi.c
src/spell-kind/spells-neighbor.c
src/spell-realm/spells-arcane.c
src/spell-realm/spells-nature.c
src/spell/summon-types.h
src/spell/technic-info-table.c
src/system/object-type-definition.h
src/target/projection-path-calculator.c
src/target/target-describer.c
src/term/z-rand.c
src/term/z-rand.h
src/view/display-self-info.c

index c43d382..ccbec21 100644 (file)
@@ -99,6 +99,7 @@
       <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4061;4062;4127;4244;4255;4668;4710;4820;4996;4774;5045;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
       <ConformanceMode>true</ConformanceMode>\r
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
     </ClCompile>\r
     <Link>\r
       <AdditionalDependencies>winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>WINDOWS;SJIS;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
+      <MinimalRebuild>false</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
       <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4127;4996;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
     </ClCompile>\r
     <Link>\r
       <AdditionalDependencies>winmm.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <WarningLevel>Level3</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <DisableSpecificWarnings>4244;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
     </ClCompile>\r
     <Link>\r
       <AdditionalDependencies>winmm.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
     <ClCompile Include="..\..\src\mind\mind-power-getter.c" />\r
     <ClCompile Include="..\..\src\mind\mind-priest.c" />\r
     <ClCompile Include="..\..\src\mind\mind-weaponsmith.c" />\r
+    <ClCompile Include="..\..\src\monster-attack\monster-attack-lose.c" />\r
     <ClCompile Include="..\..\src\monster-floor\monster-death-util.c" />\r
     <ClCompile Include="..\..\src\monster-floor\monster-lite-util.c" />\r
     <ClCompile Include="..\..\src\monster-floor\monster-lite.c" />\r
     <ClInclude Include="..\..\src\mind\mind-priest.h" />\r
     <ClInclude Include="..\..\src\mind\mind-types.h" />\r
     <ClInclude Include="..\..\src\mind\mind-weaponsmith.h" />\r
+    <ClInclude Include="..\..\src\monster-attack\monster-attack-lose.h" />\r
     <ClInclude Include="..\..\src\monster-floor\monster-death-util.h" />\r
     <ClInclude Include="..\..\src\monster-floor\monster-lite-util.h" />\r
     <ClInclude Include="..\..\src\monster-floor\monster-lite.h" />\r
index a0c521d..71c158d 100644 (file)
     <ClCompile Include="..\..\src\player\player-status-resist.c">
       <Filter>player</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\monster-attack\monster-attack-lose.c">
+      <Filter>monster-attack</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\src\io\record-play-movie.c">
       <Filter>io</Filter>
     </ClCompile>
     <ClInclude Include="..\..\src\player\player-status-resist.h">
       <Filter>player</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\monster-attack\monster-attack-lose.h">
+      <Filter>monster-attack</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\src\io\record-play-movie.h">
       <Filter>io</Filter>
     </ClInclude>
index 754292a..3876fb4 100644 (file)
@@ -3601,14 +3601,19 @@ D:タイトや、ダイアモンドをわざわざ使ってあるくらいだも
 D:(富士見書房「アイスウインド・サーガ1魔石の復活」 R・A・サルヴァトーレ著、
 D:風見潤訳)
 
+# There Will Come Hard Rains
 N:209:『隠者の紫』
 E:'hermit's purple'
 I:21:2:2
 W:40:40:30:40000
 P:0:1d6:10:5:0
-F:INT | WIS | FORCE_WEAPON |
-F:SEE_INVIS | TELEPATHY
-U:PROT_EVIL
+F:INT | WIS | CHR | FORCE_WEAPON | SLAY_UNDEAD | RIDING
+F:SEE_INVIS | TELEPATHY | REGEN | HOLD_EXP
+U:DETECT_UNIQUE
+D:$It's a glam, semi-ghosted whip of thorns.
+D:$  You can convert the mental power of the owner into attack power
+D:$ and protect yourself with the power of ripples.
+When you wear it, you can see what happened in a distant place.
 D:半幽体化した不思議な茨の鞭だ。所有者の精神力を攻撃力に変換し、
 D:波紋の力で身を守ることができる。
 D:身につけると遠い場所の出来事がわかる。
@@ -4197,6 +4202,45 @@ F:INT | FORCE_WEAPON
 F:SHOW_MODS
 F:SLAY_EVIL | SLAY_UNDEAD
 F:FREE_ACT | LITE
+D:$A shining sword that keeps waiting for a hero in the back of the Mirage Tower.
+D:$  The blade was held by many red robes and continued to slaughter the evil ones.
+D:$ (Square, "Final Fantasy", 1987)
 D:蜃気楼の塔の奥で英雄を待ち続ける輝ける剣だ。
 D:その刃は数多くの赤衣の者達に握られ、悪しき者たちを屠り続けてきた。(ファイナルファンタジー1)
 
+N:253:トゲトゲバット『エスカリボルグ』
+E:'Excaliborg, the *thorny* bat'
+I:21:16:2
+W:35:40:190:85000
+P:0:7d7:18:18:10
+F:STR | DEX | CON | SUST_STR | SUST_DEX | SUST_CON
+F:VORPAL | VAMPIRIC | KILL_HUMAN | BLESSED | ACTIVATE
+F:RES_FIRE | RES_LITE | LEVITATION
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:FULL_NAME
+U:ANIM_DEAD
+D:$This glowing black bat is filled with the unremitting love of the user.
+D:この黒光りするバットには使用者のたゆまぬ愛が込められている。
+
+N:254:巨人夸父の
+E:of Kuafu
+I:21:3:2
+W:30:25:440:300000
+P:0:3d9:5:10:0
+F:STR | CON | SPEED | HIDE_TYPE | ACTIVATE
+F:SLAY_EVIL | SLAY_DEMON | SLAY_UNDEAD
+U:TREE_CREATION
+D:$The staff of Kuafu the sun chased giant.
+D:$This wood staff still alive will someday became peach forest.
+D:太陽を追った巨人、夸父の杖だ。まだ生きているこの木の杖はいずれ桃林になるだろう。
+
+N:255:ドン・キホーテの
+E:of Don Quixote
+I:22:29:-3
+W:40:30:300:70000
+P:0:3d8:-12:12:0
+F:INT | WIS | CHR | | IM_ELEC | RES_DARK | RES_CONF | RES_FEAR
+F:FREE_ACT | SUST_INT | SUST_WIS | SUST_CHR | SLAY_EVIL | KILL_GIANT
+D:$Don Quixote born in La Mancha is the brave knight
+D:$ trying to defeat the colossal giant "Windmill".
+D:ラ・マンチャに生まれたドン・キホーテは強大なる巨人『風車』を打ち倒そうとした勇敢な騎士だ。
index 2b03b46..b233a29 100644 (file)
@@ -13,7 +13,7 @@ M:WX:99
 M:WY:66
 
 # Maximum number of monsters in r_info.txt
-M:R:1172
+M:R:1255
 
 # Maximum number of items in k_info.txt
 M:K:672
@@ -25,7 +25,7 @@ M:V:173
 M:F:255
 
 # Maximum number of artifacts in a_info.txt
-M:A:253
+M:A:256
 
 # Maximum number of ego-items in e_info.txt
 M:E:255
index 201eae8..b62bf29 100644 (file)
@@ -61,11 +61,11 @@ F:d:FLOOR:8:357
 # Floor with Revenant
 F:e:FLOOR:8:555
 
-# Floor with Baron of Hell
-F:f:FLOOR:8:609
+# Floor with Duke of Hell
+F:f:FLOOR:8:1244
 
 # Floor with Iron Lich
-F:g:FLOOR:8:666
+F:g:FLOOR:8:1181
 
 # Floor with Maulotaur
 F:h:FLOOR:8:723
index ac4ba77..df629f9 100644 (file)
@@ -89,8 +89,8 @@ F:l:FLOOR:8:611
 # Vampire Lord (level:39, Speed:120, XP:1800, #:6)
 F:L:FLOOR:8:623
 
-# Lesser Titan (level:40, Speed:120, XP:3500, #:2)
-F:t:FLOOR:8:634
+# Mid Titan (level:49, Speed:120, XP:13500, #:2)
+F:t:FLOOR:8:702
 
 # Enchantress (level:40, Speed:130, XP:2100, #:1)
 F:E:FLOOR:8:636
@@ -101,20 +101,20 @@ F:S:FLOOR:8:638
 # Death Drake (level:40, Speed:120, XP:3500, #:1)
 F:K:FLOOR:8:643
 
-# Ancient Red Dragon (level:40, Speed:120, XP:2750, #:2)
-F:N:FLOOR:8:644
+# Daedra Red Dragon (level:48, Speed:120, XP:16000, #:2)
+F:N:FLOOR:8:756
 
 # Fallen Angel (level:41, Speed:130, XP:15000, #:1)
 F:A:FLOOR:8:652
 
-# Iron Lich (level:42, Speed:120, XP:9000, #:1)
-F:I:FLOOR:8:666
+# Bronze Lich (level:47, Speed:120, XP:14000, #:1)
+F:I:FLOOR:8:1180
 
-# DracoLich (level:46, Speed:120, XP:18000, #:1)
+# Dracolich (level:46, Speed:120, XP:16000, #:1)
 F:z:FLOOR:8:701
 
-# Greater Titan (level:46, Speed:120, XP:13500, #:2)
-F:Z:FLOOR:8:702
+# Greater Titan (level:52, Speed:120, XP:18000, #:2)
+F:Z:FLOOR:8:1187
 
 # Random monster 0 levels out of depth and on no Teleportation grid
 F:5:FLOOR:12:*0
index f3bedd5..f6a1926 100644 (file)
@@ -88,7 +88,7 @@ F:f:FLOOR:12:577
 F:g:FLOOR:12:607
 
 # Floor + monastic lich 
-F:h:FLOOR:12:611
+F:h:FLOOR:12:1176
 
 # Floor + nether wraith 
 F:i:FLOOR:12:612
@@ -100,7 +100,7 @@ F:j:FLOOR:12:623
 F:k:FLOOR:12:658
 
 # Floor + iron lich 
-F:l:FLOOR:12:666
+F:l:FLOOR:12:1181
 
 # Floor + dread 
 F:m:FLOOR:12:667
index 1dc87a9..58fb80a 100644 (file)
@@ -49,8 +49,8 @@ F:c:SHALLOW_LAVA:10:510
 # Shallow lava with Magma elemental
 F:d:SHALLOW_LAVA:10:584
 
-# Deep lava with Great hell wyrm
-F:e:DEEP_LAVA:10:756
+# Deep lava with Great Hell Wyrm
+F:e:DEEP_LAVA:10:1193
 
 # Deep lava
 F:l:DEEP_LAVA:2
index 3e9de5a..ba23d8f 100644 (file)
@@ -52,8 +52,8 @@ F:c:GRASS:8:175
 # Floor with Earth elemental
 F:d:GRASS:8:525
 
-# Floor with Great storm wyrm
-F:e:GRASS:8:728
+# Floor with Great Storm Wyrm
+F:e:GRASS:8:1191
 
 # Floor with Colossus
 F:g:GRASS:8:558
index 74ea3aa..f14a47f 100644 (file)
@@ -50,7 +50,7 @@ F:c:FLOOR:8:385
 F:d:SHALLOW_WATER:8:526
 
 # Deep water with Great Wyrm of Many Colours
-F:e:DEEP_WATER:8:790
+F:e:DEEP_WATER:8:1199
 
 # Normal wall
 F:#:GRANITE
index 4acaed1..92f5cc0 100644 (file)
@@ -2642,7 +2642,7 @@ N:163:ベビー・ブルー・ドラゴン
 E:Baby blue dragon
 G:d:B
 I:110:10d10:20:30:70
-W:9:2:0:35:700:459
+W:9:1:0:35:700:459
 B:CLAW:HURT:1d4
 B:CLAW:HURT:1d4
 B:BITE:HURT:1d5
@@ -2650,8 +2650,7 @@ F:FORCE_MAXHP | FORCE_SLEEP | DROP_CORPSE
 F:ONLY_GOLD | DROP_60 | DROP_1D2 | 
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
 F:EVIL | DRAGON | IM_ELEC | EAT_ELEC_RES |
-S:1_IN_11 | 
-S:BR_ELEC
+S:1_IN_11 | BR_ELEC
 D:$This hatchling dragon is still soft, its eyes unaccustomed to light and 
 D:$its scales a pale blue.
 D:このドラゴンは生まれたばかりなので、まだそれほど凶暴ではない。その目は
@@ -2662,7 +2661,7 @@ N:164:ベビー・ホワイト・ドラゴン
 E:Baby white dragon
 G:d:W
 I:110:10d10:20:30:70
-W:9:2:0:35:700:460
+W:9:1:0:35:700:460
 B:CLAW:HURT:1d4
 B:CLAW:HURT:1d4
 B:BITE:HURT:1d5
@@ -2670,8 +2669,7 @@ F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE
 F:ONLY_GOLD | DROP_60 | DROP_1D2 | 
 F:OPEN_DOOR | BASH_DOOR | 
 F:EVIL | DRAGON | IM_COLD | EAT_COLD_RES |
-S:1_IN_11 | 
-S:BR_COLD
+S:1_IN_11 | BR_COLD
 D:$This hatchling dragon is still soft, its eyes unaccustomed to light and 
 D:$its scales a pale white.
 D:このドラゴンは生まれたばかりなので、まだそれほど凶暴ではない。その目は
@@ -2682,7 +2680,7 @@ N:165:ベビー・グリーン・ドラゴン
 E:Baby green dragon
 G:d:G
 I:110:10d10:20:30:70
-W:9:2:0:35:700:461
+W:9:1:0:35:700:461
 B:CLAW:HURT:1d4
 B:CLAW:HURT:1d4
 B:BITE:HURT:1d5
@@ -2690,8 +2688,7 @@ F:FORCE_MAXHP | FORCE_SLEEP |
 F:ONLY_GOLD | DROP_60 | DROP_1D2 | 
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY | DROP_CORPSE
 F:EVIL | DRAGON | IM_POIS | EAT_POIS_RES
-S:1_IN_11 | 
-S:BR_POIS
+S:1_IN_11 | BR_POIS
 D:$This hatchling dragon is still soft, its eyes unaccustomed to light and 
 D:$its scales a sickly green.
 D:このドラゴンは生まれたばかりなので、まだそれほど凶暴ではない。その目は
@@ -2702,7 +2699,7 @@ N:166:ベビー・ブラック・ドラゴン
 E:Baby black dragon
 G:d:s
 I:110:10d10:20:30:70
-W:9:2:0:35:750:546
+W:9:1:0:35:750:546
 B:CLAW:HURT:1d4
 B:CLAW:HURT:1d4
 B:BITE:HURT:1d5
@@ -2710,8 +2707,7 @@ F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE
 F:ONLY_GOLD | DROP_60 | DROP_1D2 | 
 F:OPEN_DOOR | BASH_DOOR | EAT_ACID_RES | 
 F:EVIL | DRAGON | IM_ACID
-S:1_IN_11 | 
-S:BR_ACID
+S:1_IN_11 | BR_ACID
 D:$This hatchling dragon is still soft, its eyes unaccustomed to light and 
 D:$its scales a dull black.
 D:このドラゴンは生まれたばかりなので、まだそれほど凶暴ではない。その目は
@@ -2721,17 +2717,16 @@ D:光に慣れておらず、鱗は鈍い黒色をしている。
 N:167:ベビー・レッド・ドラゴン
 E:Baby red dragon
 G:d:R
-I:110:11d10:20:30:70
-W:9:2:0:35:850:563
-B:CLAW:HURT:1d4
-B:CLAW:HURT:1d4
-B:BITE:HURT:1d5
+I:110:23d5:20:30:70
+W:10:1:0:40:850:563
+B:CLAW:HURT:1d5
+B:CLAW:HURT:1d5
+B:BITE:HURT:1d6
 F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE
 F:ONLY_GOLD | DROP_60 | DROP_1D2 | 
 F:OPEN_DOOR | BASH_DOOR | EAT_FIRE_RES |
 F:EVIL | DRAGON | IM_FIRE
-S:1_IN_11 | 
-S:BR_FIRE
+S:1_IN_11 | BR_FIRE
 D:$This hatchling dragon is still soft, its eyes unaccustomed to light and 
 D:$its scales a pale red.
 D:このドラゴンは生まれたばかりなので、まだそれほど凶暴ではない。その目は
@@ -5570,11 +5565,11 @@ N:334:ワイバーン
 E:Wyvern
 G:d:G
 I:120:100d5:20:65:20
-W:20:2:0:360:0:0
-B:BITE:HURT:2d6
-B:BITE:HURT:2d6
-B:BITE:HURT:2d6
-B:STING:POISON:1d6
+W:22:2:0:400:0:0
+B:BITE:HURT:2d5
+B:BITE:HURT:2d5
+B:BITE:HURT:2d5
+B:STING:POISON:1d5
 F:FORCE_SLEEP | 
 F:ONLY_GOLD | DROP_60 | DROP_90 | IM_POIS | CAN_FLY |
 F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | DRAGON |
@@ -6208,17 +6203,16 @@ D:それは鋭い刺を持った巨大なサソリだ。
 N:370:緑衣の修行僧
 E:Jade monk
 G:p:G
-I:120:54d12:30:46:10
-W:30:2:0:800:0:0
-B:KICK:SUPERHURT:5d2
-B:HIT:SUPERHURT:5d1
-B:KICK:SUPERHURT:5d5
-B:HIT:SUPERHURT:5d1
-F:MALE | DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_ELEC | HAS_LITE_2 |
-F:IM_FIRE | IM_COLD | IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | HUMAN |
-F:DROP_CORPSE | DROP_SKELETON
-S:1_IN_6 | 
-S:BO_ELEC
+I:115:44d12:30:46:10
+W:30:2:0:600:1800:1172
+B:KICK:SUPERHURT:4d2
+B:HIT:SUPERHURT:4d1
+B:KICK:SUPERHURT:4d5
+B:HIT:SUPERHURT:4d1
+F:HUMAN | MALE | DROP_CORPSE | DROP_SKELETON
+F:DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_ELEC | HAS_LITE_2
+F:IM_FIRE | IM_COLD | IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP
+S:1_IN_6 | BO_ELEC
 D:$A green-garbed monk, trained in martial arts.
 D:緑色の法衣を身にまとった、拳法に熟練した修行僧だ。
 
@@ -6621,7 +6615,7 @@ N:393:それ
 E:It
 G:.:W
 I:110:77d11:25:80:25
-W:24:3:0:400:0:0
+W:26:3:0:800:0:0
 B:GAZE:BLIND:8d8
 B:TOUCH:TERRIFY
 B:GAZE:EXP_40
@@ -7535,7 +7529,7 @@ N:441:『ガチャピン』
 E:Gachapin
 G:R:G
 I:120:110d9:10:90:20
-W:29:2:0:500:0:0
+W:29:2:0:1500:0:0
 B:SHOW:LOSE_INT
 B:SHOW:LOSE_WIS
 B:CHARGE:EAT_GOLD
@@ -7592,8 +7586,8 @@ D:感心して夢中になってしまうだろう。
 N:444:サイクロプス
 E:Cyclops
 G:P:u
-I:120:66d12:20:90:20
-W:28:2:0:350:2000:490
+I:120:60d12:20:90:20
+W:30:1:0:350:2000:490
 B:SHOOT:HURT:7d6
 B:HIT:HURT:9d8
 B:HIT:HURT:9d8
@@ -7907,18 +7901,16 @@ D:カオスに汚染された床のタイルだ。
 N:459:ヤング・ブルー・ドラゴン
 E:Young blue dragon
 G:d:b
-I:110:27d10:20:50:70
-W:29:1:0:300:4000:560
-B:CLAW:HURT:1d4
-B:CLAW:HURT:1d4
-B:BITE:HURT:1d6
+I:110:30d10:20:50:70
+W:25:1:0:325:4000:560
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | WILD_MOUNTAIN | WILD_WOOD |
 F:DROP_60 | DROP_90 | DROP_1D2 | DROP_CORPSE | EAT_ELEC_RES |
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
 F:EVIL | DRAGON | IM_ELEC | RIDING | SELF_LITE_1 |
-S:1_IN_11 | 
-S:SCARE | 
-S:BR_ELEC
+S:1_IN_8 | SCARE | BR_ELEC
 D:$It has a form that legends are made of.  Its still-tender scales are a 
 D:$deep blue in hue.  Sparks crackle along its length.
 D:それはまさにこれから伝説を作らんとするかのような活力に満ちた姿をしている。
@@ -7928,18 +7920,16 @@ D:まだ柔らかいその鱗は深い青色をしていて、全身から火花
 N:460:ヤング・ホワイト・ドラゴン
 E:Young white dragon
 G:d:w
-I:110:27d10:20:50:70
-W:29:1:0:275:4000:549
-B:CLAW:HURT:1d4
-B:CLAW:HURT:1d4
-B:BITE:HURT:1d6
+I:110:30d10:20:50:70
+W:25:1:0:325:4000:549
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | WILD_MOUNTAIN | WILD_WASTE |
 F:DROP_60 | DROP_90 | DROP_1D2 | DROP_CORPSE | EAT_COLD_RES |
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
 F:EVIL | DRAGON | IM_COLD | RIDING
-S:1_IN_11 | 
-S:SCARE | 
-S:BR_COLD
+S:1_IN_8 | SCARE | BR_COLD
 D:$It has a form that legends are made of.  Its still-tender scales are a 
 D:$frosty white in hue.  Icy blasts of cold air come from it as it breathes.
 D:それはまさにこれから伝説を作らんとするかのような活力に満ちた姿をしている。
@@ -7950,18 +7940,16 @@ D:冷気がやってくる。
 N:461:ヤング・グリーン・ドラゴン
 E:Young green dragon
 G:d:g
-I:110:27d10:20:60:70
-W:29:1:0:290:4000:561
-B:CLAW:HURT:1d4
-B:CLAW:HURT:1d4
-B:BITE:HURT:1d6
+I:110:30d10:20:50:70
+W:25:1:0:325:4000:561
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | WILD_MOUNTAIN | WILD_SWAMP |
 F:DROP_60 | DROP_90 | DROP_1D2 | DROP_CORPSE | EAT_POIS_RES |
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
 F:EVIL | DRAGON | IM_POIS | RIDING
-S:1_IN_11 | 
-S:SCARE | 
-S:BR_POIS
+S:1_IN_8 | SCARE | BR_POIS
 D:$It has a form that legends are made of.  Its still-tender scales are a 
 D:$deep green in hue.  Foul gas seeps through its scales.
 D:それはまさにこれから伝説を作らんとするかのような活力に満ちた姿をしている。
@@ -7972,18 +7960,16 @@ D:出ている。
 N:462:ヤング・ブロンズ・ドラゴン
 E:Young bronze dragon
 G:d:U
-I:110:27d10:20:63:150
-W:29:3:0:310:4000:562
-B:CLAW:HURT:1d4
-B:CLAW:HURT:1d4
-B:BITE:HURT:1d6
+I:110:33d10:20:65:150
+W:29:3:0:350:4000:562
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | WILD_MOUNTAIN | 
 F:DROP_60 | DROP_90 | DROP_2D2 | DROP_CORPSE |
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
 F:DRAGON | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_11 | 
-S:SCARE | 
-S:BR_CONF
+S:1_IN_8 | SCARE | BR_CONF
 D:$It has a form that legends are made of.  Its still-tender scales are a 
 D:$rich bronze hue, and its shape masks its true form.
 D:それはまさにこれから伝説を作らんとするかのような活力に満ちた姿をしている。
@@ -8133,7 +8119,7 @@ N:471:シャドウ・ドレイク
 E:Shadow drake
 G:d:D
 I:110:30d10:25:50:30
-W:33:3:0:700:15000:643
+W:30:2:0:700:15000:643
 B:CLAW:HURT:2d4
 B:CLAW:HURT:2d4
 B:BITE:EXP_10:3d6
@@ -8141,12 +8127,11 @@ F:FORCE_SLEEP | FORCE_MAXHP | SELF_DARK_1
 F:ONLY_ITEM | DROP_2D2 |
 F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
 F:EVIL | DRAGON | NO_CONF | NO_SLEEP 
-S:1_IN_6 | 
-S:SLOW | CONF | SCARE | DARKNESS | BR_NETH
-D:$It is a dragon-like form wrapped in shadow.  Glowing red eyes shine out in 
-D:$the dark.
-D:それは暗黒に覆われたドラゴンのような姿をしている。赤い目が暗闇の中で光を
-D:発している。
+S:1_IN_6 | SLOW | CONF | SCARE | DARKNESS | BR_NETH
+D:$It is a dragon-like form wrapped in shadow.
+D:$  Glowing red eyes shine out in the dark.
+D:それは暗黒に覆われたドラゴンのような姿をしている。
+D:赤い目が暗闇の中で光を発している。
 
 #J0#
 N:472:マンティコア
@@ -8512,8 +8497,8 @@ D:(ラヴクラフト「サルナスをみまった災厄」他)
 N:490:バイクロプス
 E:Biclops
 G:P:u
-I:120:60d12:20:90:20
-W:33:5:0:1200:0:0
+I:120:66d12:20:90:20
+W:36:1:0:1200:4500:1186
 B:SHOOT:HURT:9d6
 B:HIT:HURT:11d8
 B:HIT:HURT:11d8
@@ -8551,17 +8536,16 @@ D:餌食を探し回っている、巨大で醜い人間とトロルの混血だ
 N:492:白衣の修行僧
 E:Ivory monk
 G:p:w
-I:120:42d13:25:51:7
-W:33:1:0:900:2000:915
-B:KICK:SUPERHURT:8d1
-B:HIT:SUPERHURT:8d1
-B:KICK:SUPERHURT:8d4
-B:HIT:SUPERHURT:8d1
-F:MALE | DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_FIRE | HUMAN |
-F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_CORPSE | HAS_LITE_1 |
-F:DROP_SKELETON | HAS_LITE_2 |
-S:1_IN_7 | 
-S:HEAL
+I:115:41d14:25:51:7
+W:33:1:0:700:2000:1173
+B:KICK:SUPERHURT:7d1
+B:HIT:SUPERHURT:7d1
+B:KICK:SUPERHURT:7d4
+B:HIT:SUPERHURT:7d1
+F:HUMAN | MALE | DROP_CORPSE | DROP_SKELETON
+F:DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_FIRE | IM_POIS
+F:NO_FEAR | NO_CONF | NO_SLEEP | HAS_LITE_1 | HAS_LITE_2
+S:1_IN_7 | HEAL
 D:$A monk in white robes.  He is skilled in martial arts.
 D:純白の法衣を身にまとった、拳法に熟練した修行僧だ。
 
@@ -8726,17 +8710,16 @@ D:それは屈強なトロルの骸骨に生命を吹き込んだものだ。
 N:501:カオス・ドレイク
 E:Chaos drake
 G:d:v
-I:110:50d10:25:100:30
-W:33:3:0:700:150000:783
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
+I:110:50d10:25:80:30
+W:33:3:0:850:150000:783
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
 B:BITE:HURT:2d6
 F:ATTR_MULTI | ATTR_ANY | CAN_FLY | FORCE_SLEEP | FORCE_MAXHP |
 F:ONLY_ITEM | DROP_2D2 | RES_DISE | OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
 F:EVIL | DRAGON | IM_FIRE | RES_CHAO | NO_CONF | NO_SLEEP | RIDING |
 F:EAT_CONF | EAT_INSANITY
-S:1_IN_6 |
-S:SLOW | CONF | SCARE | BR_DISE | BR_CHAO
+S:1_IN_7 | SLOW | CONF | SCARE | BR_DISE | BR_CHAO
 D:$A dragon twisted by the forces of chaos.  It seems first ugly, then fair, 
 D:$as its form shimmers and changes in front of your eyes.
 D:カオスの力で歪んだドラゴンだ。それは一見すると醜いようだが、眼前で刻々と
@@ -8746,16 +8729,15 @@ D:輝きながら変化する姿は独特の美しさを持っている。
 N:502:ロー・ドレイク
 E:Law drake
 G:d:W
-I:110:55d10:25:100:30
-W:33:3:0:700:150000:784
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
+I:110:55d10:25:80:30
+W:33:3:0:850:150000:784
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
 B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | GOOD | ONLY_ITEM | DROP_2D2 | CAN_FLY |
 F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE | DRAGON | IM_COLD | NO_CONF | NO_SLEEP |
 F:RIDING | RES_SOUN | RES_SHAR
-S:1_IN_6 | 
-S:SLOW | CONF | SCARE | BR_SOUN | BR_SHAR
+S:1_IN_7 | SLOW | CONF | SCARE | BR_SOUN | BR_SHAR
 D:$This dragon is clever and cunning.  It laughs at your puny efforts to 
 D:$disturb it.
 D:このドラゴンは頭が良くてずる賢い。攻撃をされても、ものともせずに
@@ -8765,10 +8747,10 @@ D:せせら笑っている。
 N:503:バランス・ドレイク
 E:Balance drake
 G:d:s
-I:110:60d10:25:100:30
+I:110:60d10:25:80:30
 W:33:3:0:700:180000:785
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
 B:BITE:HURT:2d6
 F:ATTR_MULTI | ATTR_ANY |
 F:FORCE_SLEEP | FORCE_MAXHP | 
@@ -8776,9 +8758,7 @@ F:ONLY_ITEM | DROP_2D2 | RES_SOUN | RES_SHAR | RES_DISE | RES_CHAO |
 F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE
 F:DRAGON| CAN_FLY | EAT_CONF | EAT_INSANITY |
 F:IM_FIRE | IM_COLD | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:SLOW | CONF | SCARE | 
-S:BR_SOUN | BR_SHAR | BR_DISE | BR_CHAO
+S:1_IN_7 | SLOW | CONF | SCARE | BR_SOUN | BR_SHAR | BR_DISE | BR_CHAO
 D:$A mighty dragon, the balance drake seeks to maintain the Cosmic Balance, 
 D:$and despises your feeble efforts to destroy evil.
 D:強力なドラゴンであるバランス・ドレイクは、宇宙のバランスを維持することを
@@ -8789,17 +8769,16 @@ D:ている。
 N:504:天上界ドレイク
 E:Ethereal drake
 G:d:o
-I:110:45d10:25:100:15
-W:33:3:0:700:20000:676
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
+I:110:45d10:25:80:15
+W:33:2:0:700:20000:676
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
 B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | 
 F:ONLY_ITEM | DROP_2D2 | CAN_FLY |
 F:INVISIBLE | PASS_WALL |
 F:DRAGON | RES_LITE | RES_DARK | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:SLOW | CONF | SCARE | 
+S:1_IN_7 | SLOW | CONF | SCARE | 
 S:BR_LITE | BR_DARK
 D:$A dragon of elemental power, with control over light and dark, the 
 D:$ethereal drake's eyes glare with white hatred from the shadows.
@@ -9257,17 +9236,16 @@ N:527:ドゥーム・ドレイク
 E:Doom drake
 G:d:v
 I:110:40d11:25:100:30
-W:34:3:0:450:3000:589
-B:CLAW:HURT:1d5
-B:CLAW:HURT:1d5
+W:34:3:0:750:3000:589
+B:CLAW:HURT:2d5
+B:CLAW:HURT:2d5
 B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
 F:ONLY_ITEM | DROP_1D2 | FRIENDS |
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
 F:EVIL | DRAGON | SELF_LITE_1 |
 F:IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:BR_FIRE
+S:1_IN_6 | BR_FIRE
 D:$Doom drakes are trained firedrakes, always moving in pairs, looking 
 D:$for a battle.
 D:ドゥーム・ドレイクは訓練されたファイア・ドレイクで、常に対になって行動し
@@ -9650,18 +9628,16 @@ D:それはそびえ立つような汚物の塊で、見るも汚らわしいウ
 N:546:ヤング・ブラック・ドラゴン
 E:Young black dragon
 G:d:D
-I:110:25d10:20:60:50
-W:35:1:0:620:4000:592
-B:CLAW:HURT:1d5
-B:CLAW:HURT:1d5
-B:BITE:HURT:1d6
+I:110:30d10:20:50:50
+W:25:1:0:325:4000:592
+B:CLAW:HURT:2d5
+B:CLAW:HURT:2d5
+B:BITE:HURT:2d6
 F:FORCE_SLEEP | FORCE_MAXHP | WILD_SWAMP |
 F:DROP_60 | DROP_90 | DROP_1D2 | DROP_CORPSE
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY | 
 F:EVIL | DRAGON | IM_ACID | RIDING
-S:1_IN_11 | 
-S:SCARE | 
-S:BR_ACID
+S:1_IN_8 | SCARE | BR_ACID
 D:$It has a form that legends are made of.  Its still-tender scales are a 
 D:$darkest black hue.  Acid drips from its body.
 D:それはまさにこれから伝説を作らんとするかのような活力に満ちた姿をしている。
@@ -9699,17 +9675,15 @@ D:全身が毛で覆われた巨大なアリだ。その強力な顎は熱に輝
 N:549:ホワイト・ドラゴン
 E:Mature white dragon
 G:d:w
-I:110:40d10:20:65:70
-W:35:1:0:1000:10000:617
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
-B:BITE:HURT:2d8
+I:110:40d10:20:70:70
+W:33:1:0:1000:10000:617
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:3d8
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_2D2 | DROP_CORPSE
 F:OPEN_DOOR | BASH_DOOR | CAN_FLY | WILD_WASTE | WILD_MOUNTAIN | 
 F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_10 |
-S:SCARE |
-S:BR_COLD
+S:1_IN_7 | SCARE | BR_COLD
 D:$A large dragon, scales gleaming bright white.
 D:大きなドラゴンで、微かにきらめく白色の鱗を持っている。
 
@@ -9847,10 +9821,10 @@ D:壊れたプレートメイルを身につけている。
 N:556:ヤング万色ドラゴン
 E:Young multi-hued dragon
 G:d:v
-I:110:32d10:20:60:50
-W:36:1:0:1320:7000:593
-B:CLAW:HURT:1d9
-B:CLAW:HURT:1d9
+I:110:42d10:20:60:50
+W:30:1:0:1320:7000:593
+B:CLAW:HURT:2d9
+B:CLAW:HURT:2d9
 B:BITE:HURT:2d10
 F:ATTR_MULTI | 
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
@@ -9858,9 +9832,7 @@ F:DROP_1D2 | DROP_4D2 | CAN_FLY |
 F:OPEN_DOOR | BASH_DOOR | 
 F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | 
 F:IM_POIS | NO_CONF | NO_SLEEP | RIDING | SELF_LITE_1 |
-S:1_IN_5 | 
-S:SCARE | 
-S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
+S:1_IN_7 | SCARE | BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
 D:$It has a form that legends are made of.  Beautiful scales of shimmering 
 D:$and magical colours cover it.
 D:それはまさにこれから伝説を作らんとするかのような活力に満ちた姿をしている。
@@ -9931,18 +9903,16 @@ D:まだ柔らかいその鱗は曇った金色をしていて、全身で光を
 N:560:ブルー・ドラゴン
 E:Mature blue dragon
 G:d:b
-I:110:40d10:20:75:70
-W:36:1:0:1200:10000:601
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
-B:BITE:HURT:2d10
+I:110:40d10:20:70:70
+W:33:1:0:1200:10000:601
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:3d8
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
 F:DROP_60 | DROP_90 | DROP_2D2 | DROP_CORPSE | RIDING
 F:BASH_DOOR | WILD_MOUNTAIN | WILD_WOOD |
 F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP | SELF_LITE_1
-S:1_IN_9 | 
-S:SCARE | 
-S:BR_ELEC
+S:1_IN_7 | SCARE | BR_ELEC
 D:$A large dragon, scales tinted deep blue.
 D:大きなドラゴンで、深く淡い青色の鱗を持っている。
 
@@ -9951,17 +9921,15 @@ N:561:グリーン・ドラゴン
 E:Mature green dragon
 G:d:g
 I:110:40d10:20:70:70
-W:36:1:0:1100:10000:618
-B:CLAW:HURT:1d4
-B:CLAW:HURT:1d4
-B:BITE:HURT:1d6
+W:33:1:0:1200:10000:618
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:3d8
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
 F:DROP_60 | DROP_90 | DROP_2D2 | DROP_CORPSE
 F:BASH_DOOR | WILD_MOUNTAIN | WILD_WOOD |
 F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_9 | 
-S:SCARE | 
-S:BR_POIS
+S:1_IN_7 | SCARE | BR_POIS
 D:$A large dragon, scales tinted deep green.
 D:大きなドラゴンで、深く淡い緑色の鱗を持っている。
 
@@ -9988,18 +9956,16 @@ D:大きなドラゴンで、豊かな青銅色の鱗を持っている。
 N:563:ヤング・レッド・ドラゴン
 E:Young red dragon
 G:d:r
-I:110:29d10:20:63:50
-W:36:1:0:640:5000:589
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
+I:110:23d15:20:60:50
+W:26:1:0:400:5000:589
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
 B:BITE:HURT:2d8
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
 F:DROP_60 | DROP_90 | DROP_1D2 | WILD_MOUNTAIN | WILD_VOLCANO |
 F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE | RIDING
 F:EVIL | DRAGON | IM_FIRE | SELF_LITE_1 |
-S:1_IN_11 | 
-S:SCARE | 
-S:BR_FIRE
+S:1_IN_8 | SCARE | BR_FIRE
 D:$It has a form that legends are made of.  Its still-tender scales are a 
 D:$deepest red hue.  Heat radiates from its form.
 D:それはまさにこれから伝説を作らんとするかのような活力に満ちた姿をしている。
@@ -10534,18 +10500,16 @@ D:強烈な火炎の渦巻きで、冒険者の足下の床を焦がしている
 N:589:レッド・ドラゴン
 E:Mature red dragon
 G:d:r
-I:110:48d10:20:80:30
-W:37:1:0:1400:10000:644
-B:CLAW:HURT:1d4
-B:CLAW:HURT:1d10
-B:BITE:HURT:2d12
+I:110:46d10:20:75:30
+W:34:1:0:1400:10000:644
+B:CLAW:HURT:2d9
+B:CLAW:HURT:2d9
+B:BITE:HURT:3d9
 F:FORCE_SLEEP | FORCE_MAXHP | WILD_MOUNTAIN | WILD_VOLCANO |
 F:DROP_1D2 | DROP_4D2 | CAN_FLY | DROP_CORPSE | RIDING
 F:BASH_DOOR | SELF_LITE_1 |
 F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP
-S:1_IN_9 | 
-S:CONF | SCARE | 
-S:BR_FIRE
+S:1_IN_7 | CONF | SCARE | BR_FIRE
 D:$A large dragon, scales tinted deep red.
 D:大きなドラゴンで、深く淡い赤色の鱗を持っている。
 
@@ -10593,18 +10557,16 @@ D:目を眩ませる。
 N:592:ブラック・ドラゴン
 E:Mature black dragon
 G:d:D
-I:110:46d10:20:55:30
-W:37:1:0:1350:10000:624
-B:CLAW:HURT:1d8
-B:CLAW:HURT:1d8
-B:BITE:HURT:2d10
+I:110:40d10:20:70:30
+W:33:1:0:1200:10000:624
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:3d8
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE
 F:DROP_60 | DROP_90 | DROP_2D2 | WILD_SWAMP | WILD_MOUNTAIN |
 F:BASH_DOOR | 
 F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_9 | 
-S:SCARE | 
-S:BR_ACID
+S:1_IN_7 | SCARE | BR_ACID
 D:$A large dragon, with scales of deepest black.
 D:大きなドラゴンで、漆黒の鱗を持っている。
 
@@ -10613,18 +10575,17 @@ N:593:万色ドラゴン
 E:Mature multi-hued dragon
 G:d:v
 I:110:64d10:20:65:50
-W:38:2:0:1700:20000:675
-B:CLAW:HURT:1d10
-B:CLAW:HURT:1d10
-B:BITE:HURT:2d12
+W:35:2:0:1700:20000:675
+B:CLAW:HURT:2d10
+B:CLAW:HURT:2d10
+B:BITE:HURT:3d10
 F:ATTR_MULTI | 
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
 F:DROP_3D2 | DROP_4D2 | DROP_CORPSE
 F:OPEN_DOOR | BASH_DOOR | SELF_LITE_1 |
 F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | 
 F:IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_5 | 
-S:BLIND | CONF | SCARE | 
+S:1_IN_5 | BLIND | CONF | SCARE
 S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
 D:$A large dragon, scales shimmering many colours.
 D:大きなドラゴンで、鱗が様々な色に輝いている。
@@ -10802,19 +10763,17 @@ D:ように辺りのモンスターを眠りから目覚めさせる。
 #J0#
 N:601:古代ブルー・ドラゴン
 E:Ancient blue dragon
-G:D:b
-I:120:70d10:20:80:80
-W:38:1:0:1500:100000:728
-B:CLAW:HURT:4d8
-B:CLAW:HURT:4d8
-B:BITE:ELEC:5d8
+G:D:B
+I:120:60d12:20:85:80
+W:39:1:0:2500:100000:728
+B:CLAW:HURT:4d9
+B:CLAW:HURT:4d9
+B:BITE:ELEC:5d12
 F:FORCE_SLEEP | FORCE_MAXHP | SELF_LITE_1 |
-F:DROP_1D2 | DROP_4D2 | DROP_CORPSE | RIDING
+F:DROP_3D2 | DROP_4D2 | DROP_CORPSE | RIDING
 F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | CAN_FLY |
 F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP
-S:1_IN_9 | 
-S:BLIND | CONF | SCARE | 
-S:BR_ELEC
+S:1_IN_6 | BLIND | CONF | SCARE | BR_ELEC
 D:$A huge draconic form.  Lightning crackles along its length.
 D:巨大なドラゴンで、全身が稲妻で覆われている。
 
@@ -10841,40 +10800,37 @@ D:色の流れに身を包まれた巨大なドラゴンだ。
 N:603:ビホルダー
 E:Beholder
 G:e:g
-I:120:16d100:30:80:10
+I:115:16d99:30:70:10
 W:38:4:0:4000:8000:664
 B:GAZE:EXP_20:2d4
 B:GAZE:PARALYZE:2d4
 B:GAZE:LOSE_INT:2d6
-B:GAZE:DR_MANA:2d12
-F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | CAN_FLY |
-F:BASH_DOOR | DROP_CORPSE |
+B:GAZE:DR_MANA:2d10
+F:FORCE_SLEEP | RES_TELE | CAN_FLY | BASH_DOOR | DROP_CORPSE
 F:EVIL | IM_POIS | NO_CONF | NO_SLEEP
-S:1_IN_2 | 
-S:BLIND | SLOW | CONF | SCARE | DRAIN_MANA | MIND_BLAST | FORGET | 
+S:1_IN_4
+S:BLIND | SLOW | CONF | SCARE | DRAIN_MANA | MIND_BLAST | FORGET
 S:DARKNESS | BO_ACID | BO_FIRE | BO_COLD
 D:$A disembodied eye, surrounded by twelve smaller eyes on stalks.
 D:触手の先に付いた12個の小さな目玉に囲まれている、体を持たない目玉だ。
 
-#J0#
-N:604:エンペラー・ワイト
-E:Emperor wight
-G:W:y
-I:120:38d10:20:40:10
-W:38:2:0:1600:0:0
+N:604:ノーブル・ワイト
+E:Noble wight
+G:W:o
+I:115:38d10:20:40:10
+W:38:2:0:1600:4000:1183
 B:HIT:HURT:1d12
 B:HIT:HURT:1d12
-B:TOUCH:EXP_80
-B:TOUCH:EXP_80
-F:FORCE_SLEEP | FORCE_MAXHP | 
-F:ONLY_ITEM | DROP_90 | DROP_4D2 | CAN_FLY |
+B:TOUCH:EXP_40
+B:TOUCH:EXP_40
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_90 | DROP_4D2 | CAN_FLY |
 F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | RES_NETH |
 F:EVIL | UNDEAD | IM_COLD | IM_POIS | RES_DARK | HURT_LITE | NO_CONF | NO_SLEEP
 S:1_IN_6 | 
 S:HOLD | SCARE | CAUSE_3 | BO_NETH
-D:$Your life force is torn from your body as this powerful unearthly being 
-D:$approaches.
-D:この強力なあの世の者が近づいてくると、自分の魂が肉体から引き裂かれるようだ
+D:$If you are trapped in the nightmare created by this wight,
+D:$ you will never wake up forever.
+D:この亡霊が生み出す悪夢に囚われたら最期、あなたは永遠に目覚めることはないだろう
 
 #JZ#
 N:605:熾天使
@@ -10979,19 +10935,17 @@ D:(H・P・ラヴクラフト、大瀧啓裕訳「未知なるカダスを
 D:『ラヴクラフト全集6』、創元推理文庫、p.217)
 
 #JZ#
-#JZ#本当は Lord:公爵  Baron:男爵 ですが、語感からこっちに。
-N:609:地獄の公爵
+N:609:地獄の男爵
 E:Baron of hell
 G:U:U
-I:110:150d12:10:130:40
-W:38:3:0:3000:0:0
-B:CLAW:HURT:11d2
-B:CLAW:HURT:11d2
-B:CLAW:HURT:22d1
+I:110:100d12:10:130:40
+W:38:3:0:3000:20000:1244
+B:CLAW:HURT:10d2
+B:CLAW:HURT:10d2
+B:CLAW:HURT:20d1
 F:IM_POIS | OPEN_DOOR | BASH_DOOR | MALE | RES_PLAS | NONLIVING |
 F:IM_FIRE | NO_CONF | NO_SLEEP | EVIL | DEMON | FORCE_MAXHP | RES_TELE
-S:1_IN_2 |
-S:BO_PLAS
+S:1_IN_3 | BO_PLAS
 D:$A minor demon lord with a goat's head, tough to kill.
 D:山羊の頭を持つ低位の魔王で、簡単には倒せない。
 
@@ -11022,19 +10976,19 @@ D:6つの頭と12本の脚を持つ。
 N:611:リッチの修行僧
 E:Monastic lich
 G:L:u
-I:120:12d100:30:80:30
-W:39:2:0:5000:0:0
-B:KICK:HURT:24d1
-B:HIT:HURT:24d1
+I:115:12d80:30:80:30
+W:39:2:0:2500:5000:1176
+B:KICK:HURT:20d1
+B:HIT:HURT:20d1
 B:CLAW:EXP_80:4d2
 B:CLAW:LOSE_DEX:4d2
-F:FORCE_SLEEP | FORCE_MAXHP | SMART | RES_TELE
+F:UNDEAD | FORCE_SLEEP | FORCE_MAXHP | SMART | RES_TELE
 F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | 
 F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
 F:EVIL | UNDEAD | IM_COLD | IM_POIS | RES_NETH | NO_CONF | NO_SLEEP
-S:1_IN_3 | 
-S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | CAUSE_3 | CAUSE_4 | 
-S:DRAIN_MANA | BRAIN_SMASH | ANIM_DEAD 
+S:1_IN_4 | 
+S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | CAUSE_3
+S:DRAIN_MANA | MIND_BLAST | ANIM_DEAD
 D:$A skeletal form wrapped in priestly robes.  Before its un-death, it 
 D:$was a monk in an evil order...
 D:僧侶の法衣に身を包んだ骸骨のような姿だ。アンデッドになる前は
@@ -11154,24 +11108,24 @@ D:(ロジャー・ゼラズニイ、岡部宏之訳「アンバーの九王子
 
 #J0#
 N:616:多首の『カブラックス』
-E:Kavlax the Many-Headed
+E:Kavlax, the Many-Headed
 G:d:v
 I:120:13d100:20:85:30
-W:39:3:0:3000:0:0
-B:BITE:HURT:2d12
-B:BITE:HURT:2d12
-B:BITE:HURT:2d12
+W:40:3:0:3000:0:0
 B:BITE:HURT:2d12
+B:BITE:HURT:3d12
+B:BUTT:HURT:2d12
+B:BUTT:HURT:3d12
 F:UNIQUE | MALE | ATTR_MULTI | CAN_SPEAK | ATTR_ANY |
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE | SELF_LITE_2 |
 F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | RES_NEXU | RES_SOUN |
 F:OPEN_DOOR | BASH_DOOR | POWERFUL | CAN_FLY |
 F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | RES_SHAR | RES_GRAV |
 F:NO_CONF | NO_SLEEP | RIDING
-S:1_IN_4 | 
+S:1_IN_5 | 
 S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_SOUN | BR_CONF | 
 S:BR_SHAR | BR_GRAV | BR_NEXU
-V:150
+V:140
 D:$A large dragon with a selection of heads, all shouting and arguing as they 
 D:$look for prey, but each with its own deadly breath weapon.
 D:多くの首を使い分ける巨大なドラゴンだ。獲物を探しているときは首同士が
@@ -11182,7 +11136,7 @@ D:ブレスを吐いてくる。
 N:617:古代ホワイト・ドラゴン
 E:Ancient white dragon
 G:D:w
-I:120:70d10:20:90:80
+I:120:60d12:20:85:80
 W:39:1:0:2500:100000:741
 B:CLAW:HURT:4d9
 B:CLAW:HURT:4d9
@@ -11191,28 +11145,24 @@ F:FORCE_SLEEP | FORCE_MAXHP |
 F:DROP_3D2 | DROP_4D2 | DROP_CORPSE
 F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | CAN_FLY |
 F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_9 | 
-S:BLIND | CONF | SCARE | 
-S:BR_COLD
+S:1_IN_6 | BLIND | CONF | SCARE | BR_COLD
 D:$A huge draconic form.  Frost covers it from head to tail.
 D:巨大なドラゴンで、頭の先から爪の先まで冷気に覆われている。
 
 #J0#
 N:618:古代グリーン・ドラゴン
 E:Ancient green dragon
-G:D:g
+G:D:G
 I:120:72d10:20:85:80
 W:39:1:0:2400:100000:890
-B:CLAW:HURT:4d8
-B:CLAW:HURT:4d8
-B:BITE:HURT:5d10
+B:CLAW:HURT:4d9
+B:CLAW:HURT:4d9
+B:BITE:POISON:5d12
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
 F:DROP_3D2 | DROP_4D2 | CAN_FLY |
 F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | 
 F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_9 | 
-S:BLIND | CONF | SCARE | 
-S:BR_POIS
+S:1_IN_6 | BLIND | CONF | SCARE | BR_POIS
 D:$A huge draconic form enveloped in clouds of poisonous vapour.
 D:毒の霧に身を包んだ巨大なドラゴンだ。
 
@@ -11337,19 +11287,17 @@ D:この死人のような存在が近づいてくると、汚れた風が冒険
 #J0#
 N:624:古代ブラック・ドラゴン
 E:Ancient black dragon
-G:D:D
-I:120:72d10:20:90:70
+G:D:s
+I:120:60d12:20:85:80
 W:39:1:0:2500:100000:1066
 B:CLAW:HURT:4d9
 B:CLAW:HURT:4d9
-B:BITE:ACID:5d10
+B:BITE:ACID:5d12
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
 F:DROP_3D2 | DROP_4D2 | DROP_CORPSE
 F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | 
 F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_9 | 
-S:BLIND | CONF | SCARE | 
-S:BR_ACID
+S:1_IN_6 | BLIND | CONF | SCARE | BR_ACID
 D:$A huge draconic form.  Pools of acid melt the floor around it.
 D:巨大なドラゴンで、滴る酸が池のようになって周りの床を溶かしている。
 
@@ -11403,12 +11351,12 @@ N:628:呪われし『マレキス』
 E:Malekith the Accursed
 G:h:v
 I:125:25d100:20:70:10
-W:40:2:0:7500:0:0
+W:47:2:0:7500:0:0
 B:HIT:HURT:12d9
 B:HIT:HURT:12d9
 F:MALE | REGENERATE | UNIQUE | CAN_SPEAK |
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
-F:ONLY_ITEM | DROP_90 | DROP_4D2 | DROP_GOOD |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 | DROP_GOOD | DROP_GREAT
 F:SMART | OPEN_DOOR | BASH_DOOR | 
 F:EVIL | HURT_LITE | RES_DARK | NO_CONF | NO_SLEEP | NO_STUN
 S:1_IN_2 | 
@@ -11514,8 +11462,8 @@ D:それは死と退廃の悪臭を振りまく、脈動する肉塊だ。
 N:634:レッサー・タイタン
 E:Lesser titan
 G:P:y
-I:120:10d100:30:80:15
-W:40:3:0:3500:25000:702
+I:120:30d50:30:80:15
+W:46:1:0:5500:25000:702
 B:HIT:CONFUSE:6d6
 B:HIT:CONFUSE:6d6
 B:HIT:CONFUSE:6d6
@@ -11524,9 +11472,7 @@ F:FORCE_SLEEP | FORCE_MAXHP |
 F:DROP_2D2 | DROP_4D2 | DROP_SKELETON | DROP_CORPSE
 F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
 F:EVIL | GIANT | MALE
-S:1_IN_5 | 
-S:HEAL | TELE_TO | SCARE | 
-S:S_MONSTERS
+S:1_IN_5 | HEAL | TELE_TO | SCARE | S_MONSTERS
 D:$It is a humanoid figure thirty feet tall that gives off an aura of power 
 D:$and hate.
 D:それは力と憎悪のオーラを発散する、背丈が 10 メートル近くある人間型の
@@ -11705,30 +11651,28 @@ D:沈めるほどだが、ブランドは面食いではない。
 N:643:デス・ドレイク
 E:Death drake
 G:D:u
-I:120:10d100:25:100:30
-W:40:2:0:3500:250000:874
+I:120:12d100:25:90:40
+W:41:2:0:3500:30000:874
 B:CLAW:HURT:4d10
 B:CLAW:HURT:4d10
-B:BITE:EXP_80:3d6
-B:BITE:EXP_80:3d6
+B:BITE:EXP_80:4d6
+B:BITE:EXP_80:4d6
 F:FORCE_SLEEP | FORCE_MAXHP | SELF_DARK_1 |
 F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | RES_TELE
 F:INVISIBLE | TAKE_ITEM | CAN_FLY |
 F:PASS_WALL | POWERFUL | MOVE_BODY | RES_NETH |
 F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:SLOW | CONF | SCARE | 
-S:BR_NETH
-D:$It is a dragon-like form wrapped in darkness.  You cannot make out its 
-D:$true form but you sense its evil.
-D:それは暗黒に包まれたドラゴンのようなモンスターだ。その真の姿を把握することは
-D:できないが、その邪悪な気は感じとることができる。
+S:1_IN_6 | SLOW | CONF | SCARE | BR_NETH
+D:$It is a dragon-like form wrapped in darkness. 
+D:$ You cannot make out its true form but you sense its evil.
+D:それは暗黒に包まれたドラゴンのようなモンスターだ。
+D:その真の姿を把握することはできないが、その邪悪な気は感じとることができる。
 
 #J0#
 N:644:古代レッド・ドラゴン
 E:Ancient red dragon
 G:D:r
-I:120:10d100:20:100:70
+I:120:69d12:20:90:80
 W:40:1:0:2750:100000:756
 B:CLAW:HURT:4d10
 B:CLAW:HURT:4d10
@@ -11737,9 +11681,7 @@ F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
 F:DROP_3D2 | DROP_4D2 | CAN_FLY | SELF_LITE_2 |
 F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | 
 F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:BLIND | CONF | SCARE | 
-S:BR_FIRE
+S:1_IN_6 | BLIND | CONF | SCARE | BR_FIRE
 D:$A huge draconic form.  Wisps of smoke steam from its nostrils and the 
 D:$extreme heat surrounding it makes you gasp for breath.
 D:巨大なドラゴンで、その鼻孔から立ち昇る幾筋もの煙と、辺りに充満する
@@ -11749,27 +11691,24 @@ D:高熱で息が苦しくなる。
 N:645:古代ゴールド・ドラゴン
 E:Ancient gold dragon
 G:D:y
-I:120:15d100:20:100:200
-W:40:2:0:4000:0:0
-B:CLAW:HURT:4d10
-B:CLAW:HURT:4d10
-B:BITE:HURT:5d14
+I:120:12d100:20:100:200
+W:41:2:0:3500:30000:1202
+B:CLAW:HURT:4d9
+B:CLAW:HURT:4d9
+B:BITE:HURT:5d12
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
 F:DROP_3D2 | DROP_4D2 | CAN_FLY |
 F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | 
 F:DRAGON | RES_SOUN | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:BLIND | CONF | SCARE | 
-S:BR_SOUN
+S:1_IN_6 | BLIND | CONF | SCARE | BR_SOUN
 D:$A huge draconic form wreathed in a nimbus of light.
 D:後光に身を包まれた巨大なドラゴンだ。
 
-#J0#
-N:646:グレート・クリスタル・ドレイク
-E:Great crystal drake
-G:D:B
-I:120:15d100:25:100:30
-W:40:2:0:3500:0:0
+N:646:古代クリスタル・ドラゴン
+E:Ancient Crystal Dragon
+G:D:W
+I:120:12d100:25:90:40
+W:41:2:0:3500:30000:1201
 B:CLAW:HURT:4d9
 B:CLAW:HURT:4d9
 B:BITE:HURT:5d12
@@ -11777,15 +11716,13 @@ F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | DROP_CORPSE
 F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | CAN_FLY | ATTR_CLEAR |
 F:INVISIBLE | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | 
 F:EVIL | DRAGON | IM_COLD | NO_CONF | RES_SHAR | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:SLOW | CONF | SCARE | 
-S:BR_SHAR
-D:$A huge crystalline dragon.  Its claws could cut you to shreds and its 
-D:$teeth are razor sharp.  Strange colours ripple through it as it moves in 
-D:$the light.
-D:巨大な水晶のようなドラゴンだ。冒険者の体をバラバラに切り刻むことができる
-D:爪と、剃刀のように鋭い歯を持っている。それが動くと光が反射して体中が奇妙
-D:な色にきらめく。
+S:1_IN_6 | SLOW | CONF | SCARE | BR_SHAR
+D:$A huge crystalline dragon.
+D:$  Every time it moves one step, an unpleasant sound of glass rubbing
+D:$ and a confusing light fill the entire floor.
+D:巨大な水晶のようなドラゴンだ。
+D:それは一歩動く度に硝子の擦れ合うような不快な音と、
+D:幻惑的な光を辺り一面に満ちさせる。
 
 N:647:運命の魔女
 E:Wyrd sister
@@ -12233,34 +12170,24 @@ D:日中ではせいぜい2、3時間しか耐えられない。
 D:ナイアルラトホテップによく仕え、猟犬として活躍する事が多い。
 D:(ダーレス「暗黒の儀式」)
 
-#J0#
-N:664:アンデッド・ビホルダー
-E:Undead beholder
-G:e:s
-I:120:27d100:30:100:10
-W:42:4:0:6000:40000:781
-B:GAZE:EXP_40
-B:GAZE:PARALYZE
+N:664:ビッグ・ビホルダー
+E:Big beholder
+G:e:G
+I:120:16d100:30:75:10
+W:45:4:0:4000:8000:781
+B:GAZE:EXP_40:2d4
+B:GAZE:PARALYZE:2d4
 B:GAZE:LOSE_INT:2d6
-B:GAZE:DR_MANA:4d6
-F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | HAS_DARK_1 |
-F:COLD_BLOOD | BASH_DOOR | 
-F:EVIL | UNDEAD | CAN_FLY |
-F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_NETH |
-F:NO_CONF | NO_SLEEP
-S:1_IN_2 | 
-S:SLOW | CAUSE_4 | DRAIN_MANA | MIND_BLAST | BRAIN_SMASH | FORGET | 
-S:BO_MANA | ANIM_DEAD 
-S:S_UNDEAD
-V:60
-D:$A disembodied eye, floating in the air.  Black nether storms rage around 
-D:$its bloodshot pupil and light seems to bend as it sucks its power from the 
-D:$very air around it.  Your soul chills as it drains your vitality for its 
-D:$evil enchantments.
-D:宙に浮かぶ巨大な目玉だ。その血走った瞳の周りでは冥界の暗黒の嵐が
-D:巻き起こっている。
-D:また周辺の大気から力を吸い取っているので、どんどんと光が失われていくようだ。
-D:それは邪悪な魔力を得るために冒険者の生命力を吸い取る。
+B:GAZE:DR_MANA:2d12
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | CAN_FLY | BASH_DOOR | DROP_CORPSE
+F:EVIL | IM_POIS | NO_CONF | NO_SLEEP
+S:1_IN_3
+S:BLIND | SLOW | CONF | SCARE | DRAIN_MANA | MIND_BLAST | FORGET | 
+S:DARKNESS | BO_ACID | BO_FIRE | BO_COLD
+D:$A disembodied eye, surrounded by twenty fourth smaller eyes
+D:$ on undulating stalks.
+D:大きくうねる触手の先に付いた24個の小さな目玉に囲まれている、
+D:体を持たない目玉だ。
 
 #JZ#
 N:665:シャドウ・デーモン
@@ -12284,28 +12211,26 @@ D:$energy from your soul to feed its power.
 D:ぼんやりとした人間のような姿をした強力な暗黒の精霊だ。滑るように近づいては、
 D:その剃刀のような爪で冒険者の生命を奪い、力を得るためにその魂を吸い取る。
 
-N:666:ã\82¢ã\82¤ã\82¢ン・リッチ
-E:Iron lich
-G:L:s
-I:120:28d100:30:100:10
-W:42:4:0:9000:0:0
+N:666:ã\82¹ã\83\88ã\83¼ン・リッチ
+E:Stone lich
+G:L:D
+I:115:40d35:25:70:15
+W:42:1:0:4000:20000:1180
 B:BUTT:COLD:3d6
 B:BUTT:FIRE:3d6
 B:BUTT:ELEC:3d6
-F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING |
-F:COLD_BLOOD | BASH_DOOR | CAN_FLY |
-F:EVIL | UNDEAD | SMART |
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | COLD_BLOOD | BASH_DOOR | CAN_FLY
+F:EVIL | UNDEAD | SMART | ONLY_ITEM | DROP_60 | DROP_GOOD
 F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_NETH | RES_TELE
-F:ONLY_ITEM | DROP_60 | DROP_GOOD |
 F:NO_CONF | NO_SLEEP
-S:1_IN_2 |
-S:BA_WATE | BR_FIRE | BO_ICEE | BA_ELEC | BA_COLD |
-S:CAUSE_4 | DRAIN_MANA | BRAIN_SMASH | 
-S:S_UNDEAD
-D:$It is a huge, twisted grey skull floating through the air. Its cold eyes 
-D:$burn with hatred towards all who live.
-D:ã\81\9dã\82\8cã\81¯å®\99ã\81«æµ®ã\81\84ã\81\9f巨大ã\81§ã\80\81æ\8d»ã\81\98æ\9b²ã\81\92ã\82\89ã\82\8cã\81\9fç\81°è\89²ã\81®é«\91é«\8fã\81 ã\80\82ã\81\9dã\81®å\86·ã\81\9fã\81\84ç\9b®ã\81¯
-D:全ての命ある物への憎しみに燃えている。
+S:1_IN_4 |
+S:BO_WATE | BR_FIRE | BO_ICEE | BA_ELEC | BA_COLD | CAUSE_3 | CAUSE_4
+S:DRAIN_MANA | MIND_BLAST | S_UNDEAD | BLIND | HOLD | CONF | BLINK
+D:$This skeleton is wearing a tattered robe.
+D:$ It unleashes some magics from a pumice stone staff
+D:$ that has been used for a while.
+D:ã\81\93ã\81®éª¸éª¨ã\81¯ã\83\9cã\83­ã\83\9cã\83­ã\81®æ³\95è¡£ã\82\92ç\9d\80ã\81¦ã\81\84ã\81¦ã\80\81
+D:しばらく使い込んだ軽石の杖からいくつもの魔法を繰り出してくる。
 
 #J0#
 #J0#
@@ -12337,21 +12262,20 @@ D:全ての秩序に反して無理矢理に存在しているかのようだ。
 
 #JZ#
 N:668:大バジリスク
-E:Greater basilisk
+E:Large basilisk
 G:R:D
-I:120:20d100:25:100:15
-W:42:2:0:10000:0:0
+I:120:50d30:25:90:15
+W:42:2:0:7000:100000:1243
 B:GAZE:PARALYZE
-B:BITE:HURT:5d12
-B:BITE:HURT:5d12
-B:BITE:HURT:5d12
+B:BITE:HURT:5d11
+B:BITE:HURT:5d11
+B:BITE:HURT:5d11
 F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | POWERFUL | FORCE_MAXHP |
 F:OPEN_DOOR | BASH_DOOR | EVIL | IM_POIS | RES_DARK | DROP_CORPSE
 F:ANIMAL | NO_CONF | NO_SLEEP | CAN_SWIM | RIDING
-S:1_IN_8
-S:BR_POIS | BR_DARK | BR_NETH
-D:$A large basilisk, whose shape resembles that of a great wyrm.
-D:大型のバジリスクで、ワイアームに似た姿をしている。
+S:1_IN_8 | BR_POIS | BR_DARK | BR_NETH
+D:$A large basilisk, whose shape resembles that of a ancient dragon.
+D:大型のバジリスクで、古代ドラゴンに似た姿をしている。
 
 #JZ#
 N:669:『カリブディス』
@@ -12485,8 +12409,8 @@ D:で知られる。
 N:675:古代万色ドラゴン
 E:Ancient multi-hued dragon
 G:D:v
-I:120:21d100:20:100:70
-W:43:1:0:13000:300000:790
+I:120:40d40:20:95:70
+W:41:1:0:10000:300000:790
 B:CLAW:HURT:4d12
 B:CLAW:HURT:4d12
 B:BITE:HURT:6d12
@@ -12496,8 +12420,7 @@ F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 |
 F:SMART | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | 
 F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | 
 F:IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_5 | 
-S:BLIND | CONF | SCARE | 
+S:1_IN_6 | BLIND | CONF | SCARE | 
 S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
 D:$A huge draconic form.  Many colours ripple down its massive frame.  Few 
 D:$live to see another.
@@ -12754,7 +12677,7 @@ N:684:塵の中を歩くもの『クァチル・ウタウス』
 E:Quachil Uttaus, Treader of the Dust
 G:z:D
 I:120:50d66:30:80:15
-W:44:3:0:20000:0:0
+W:52:3:0:20000:0:0
 B:CLAW:HURT:50d1
 B:TOUCH:TIME:1d50
 B:TOUCH:TIME:1d50
@@ -12947,7 +12870,7 @@ N:691:ドローレム
 E:Drolem
 G:g:g
 I:120:30d100:25:130:30
-W:44:3:0:12000:0:0
+W:44:8:0:12000:0:0
 B:BITE:HURT:5d8
 B:BITE:HURT:5d8
 B:CLAW:POISON:3d3
@@ -13187,44 +13110,37 @@ D:爆弾を持ってテロ攻撃を行なう...
 N:701:ドラコリッチ
 E:Dracolich
 G:D:B
-I:120:28d100:25:120:30
-W:46:2:0:18000:0:0
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:BITE:EXP_80:3d6
+I:120:28d70:25:110:30
+W:46:2:0:16000:200000:1241
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:EXP_40:3d6
 B:BITE:EXP_VAMP:3d6
-F:FORCE_SLEEP | FORCE_MAXHP | 
-F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | RES_TELE
-F:COLD_BLOOD | CAN_FLY |
-F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | 
-F:EVIL | DRAGON | UNDEAD | IM_COLD | IM_POIS | RES_NETH |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | COLD_BLOOD | EVIL | DRAGON | UNDEAD
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY
+F:IM_COLD | IM_POIS | RES_NETH | RES_DARK | RES_TELE
 F:NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:CONF | SCARE | 
-S:BR_COLD | BR_NETH
-D:$The skeletal form of a once-great dragon, enchanted by magic most 
-D:$perilous.  Its animated form strikes with speed and drains life from its 
-D:$prey to satisfy its hunger.
-D:古代の偉大なドラゴンの骸骨に、最も危険な魔法によって生命を吹き込んだものだ。
-D:餌食に素早い一撃を食らわせ、その生命を吸い取っては空腹を満たしている。
-
-#J0#
-N:702:グレーター・タイタン
-E:Greater titan
-G:P:v
-I:120:30d100:30:125:15
-W:46:3:0:13500:0:0
-B:HIT:CONFUSE:12d12
-B:HIT:CONFUSE:12d12
-B:HIT:CONFUSE:12d12
-B:HIT:CONFUSE:12d12
+S:1_IN_7 | CONF | SCARE | BR_COLD | BR_NETH
+D:$A monster with evil magic in the bones of a decaying dragon.
+D:$  It is wandering while absorbing the soul of living things.
+D:朽ち果てたドラゴンの骨に邪悪な魔法が宿ったモンスターだ。
+D:それは命あるものの魂を吸いながらさまよい歩いている。
+
+N:702:ミッド・タイタン
+E:Middle titan
+G:P:o
+I:120:50d50:30:110:15
+W:49:1:0:13500:100000:1187
+B:HIT:CONFUSE:9d9
+B:HIT:CONFUSE:9d9
+B:HIT:CONFUSE:9d9
+B:HIT:CONFUSE:9d9
 F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE
 F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | MOVE_BODY |
 F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
 F:EVIL | GIANT | MALE
-S:1_IN_5 | 
-S:HEAL | TELE_TO | 
-S:S_MONSTERS
+S:1_IN_5 | HEAL | TELE_TO | S_MONSTERS
 D:$A forty foot tall humanoid that shakes the ground as it walks.  The power 
 D:$radiating from its frame shakes your courage, its hatred inspired by your 
 D:$defiance.
@@ -13236,24 +13152,22 @@ D:冒険者が挑みかかると彼の憎悪は一層燃え上がる。
 N:703:ドラコリスク
 E:Dracolisk
 G:D:r
-I:120:28d100:25:120:30
-W:46:3:0:14000:0:0
-B:BITE:HURT:5d12
-B:BITE:HURT:5d12
-B:BITE:HURT:8d8
+I:120:28d70:25:110:30
+W:46:2:0:16000:200000:1242
+B:BITE:HURT:5d11
+B:BITE:HURT:5d11
+B:BITE:HURT:8d7
 B:GAZE:PARALYZE
-F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY
 F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_CORPSE
-F:OPEN_DOOR | BASH_DOOR | RES_NETH | RES_TELE
-F:ANIMAL | EVIL | DRAGON | IM_ACID | IM_FIRE | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:HOLD | SCARE | 
-S:BR_FIRE | BR_NETH
-D:$A mixture of dragon and basilisk, the dracolisk stares at you with deep 
-D:$piercing eyes, its evil breath burning the ground where it stands.
-D:ドラゴンとバジリスクの混血であるドラコリスクは、深く突き刺すような
-D:視線で冒険者を睨みつける。その邪悪なブレスは、自分の足下の大地ですら燃え上
-D:がらせる。
+F:OPEN_DOOR | BASH_DOOR | ANIMAL | EVIL | DRAGON
+F:IM_FIRE | IM_POIS | RES_NETH | RES_TELE | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_7 | HOLD | SCARE | BR_FIRE | BR_POIS | BR_NETH
+D:$It's a winged basilisk.
+D:$It is aimed at adventurers in order to show off the evil poison
+D:$ and power that it has stored in its body.
+D:翼のあるバジリスクだ。
+D:その身体に蓄えた邪悪な毒と力を見せつけるべく虎視眈々と冒険者を狙っている。
 
 #JZ#
 #JZ#ボルヘスの「幻獣辞典」に記述あり
@@ -13510,12 +13424,12 @@ N:714:双子のひわいなるもの『ツァール』
 E:Zhar the Twin Obscenity
 G:R:D
 I:120:50d100:30:120:15
-W:47:3:0:15000:0:0
+W:55:3:0:15000:0:0
 B:CRUSH:HURT:23d13
 B:CRUSH:HURT:23d13
 B:CRUSH:HURT:23d13
 F:FORCE_SLEEP | FORCE_MAXHP | UNIQUE | ELDRITCH_HORROR |
-F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | KILL_BODY |
+F:ONLY_ITEM | DROP_4D2 | DROP_GREAT | KILL_BODY |
 F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | CAN_SWIM |
 F:EVIL
 S:1_IN_6
@@ -13595,20 +13509,17 @@ N:717:地獄の番犬『ガルム』
 E:Garm, Guardian of Hel
 G:C:u
 I:120:30d100:20:120:70
-W:49:2:0:22000:0:0
+W:54:2:0:22000:0:0
 B:CLAW:HURT:7d13
 B:CLAW:HURT:7d13
 B:BITE:HURT:8d13
 B:BITE:HURT:8d13
 F:UNIQUE | DROP_CORPSE | 
 F:FORCE_SLEEP | FORCE_MAXHP | 
-F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | 
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | DROP_GREAT
 F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | RES_NETH | RES_DARK |
 F:ANIMAL | EVIL | IM_FIRE | NO_CONF | NO_SLEEP
-S:1_IN_3 | 
-S:BR_NETH | 
-S:BR_COLD | BR_DARK | 
-S:S_HOUND | S_UNDEAD
+S:1_IN_3 | BR_NETH | BR_COLD | BR_DARK | S_HOUND | S_UNDEAD
 D:$Garm is a gigantic hound, whose job is to guard that none escapes 
 D:$the tortures of Hel, the Norse place of punishment for the wicked 
 D:$and cowardly dead.
@@ -13833,38 +13744,26 @@ D:$itself seems to cry out against it.
 D:脈動する肉の塊で、その内部は地獄の業火に輝いている。この世界そのものが
 D:このモンスターの存在を嫌悪しているように感じる。
 
-#J0#
-#J0#
-#J0#(コメント)
-#J0# ワイアームについてはすべて「グレート」がつくのだが、文字数をかせぐため
-#J0# (スペースキーを押す回数を減らすため)グレートをはぶいてある。
-#J0#
-#J0# また「ウィルム」「ワーム」という読み方も聞きましたが、「ワイアーム」が
-#J0# 一番気に入りましたので、そうしてあります。
-#J0#
-N:728:ストーム・ワイアーム
-E:Great Storm Wyrm
+N:728:デイドラ・ブルー・ドラゴン
+E:Daedra Blue Dragon
 G:D:b
-I:120:30d100:30:150:80
-W:51:2:0:13000:0:0
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:BITE:ELEC:5d14
+I:120:42d50:30:110:40
+W:47:1:0:12000:100000:1190
+B:CLAW:HURT:4d10
+B:CLAW:ELEC:6d12
+B:BITE:HURT:4d10
+B:BITE:ELEC:6d12
 F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | CAN_FLY |
 F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD | SELF_LITE_2 |
 F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
 F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:BLIND | CONF | SCARE | 
-S:BR_ELEC
-D:$A vast dragon of power.  Storms and lightning crash around its titanic 
-D:$form.  Deep blue scales reflect the flashes and highlight the creature's 
-D:$great muscles.  It regards you with contempt.
-D:力に満ちた巨大なドラゴンだ。その山のような体の周りには嵐が巻き起こり、稲妻
-D:が光っている。
-D:深い青色の鱗が光を反射して、この生物の隆々たる筋肉を浮き彫りにしている。
-D:それは冒険者を軽蔑すべき者とみなしている。
+S:1_IN_4 | BLIND | CONF | SCARE | BR_ELEC
+D:$It is a dragon that has accumulated great power in the Oblivion
+D:$ and has returned to this world.
+D:$  The electricity produced by this dragon can light one town
+D:$ all year round.
+D:冥界で強大な力を蓄えて現世に舞い戻ってきたドラゴンだ。
+D:この竜一匹が生み出す電気は一つの街に一年中灯りを灯すことができる。
 
 #JZ#
 N:729:トロルの『ウリク』
@@ -13934,8 +13833,8 @@ D:古の鎧に身を包んだ者で、ヘルメットの下から地獄の劫火
 D:睨んでいる。
 
 #JZ#
-N:732:『ブル・ゲイツ』
-E:Bull Gates
+N:732:ã\83ªã\83³ã\82´å«\8cã\81\84ã\80\8eã\83\96ã\83«ã\83»ã\82²ã\82¤ã\83\84ã\80\8f
+E:Bull Gates, the applephobia
 G:p:D
 I:140:25d100:40:90:0
 W:52:3:0:18000:0:0
@@ -13960,7 +13859,7 @@ N:733:『サンタクロース』
 E:Santa Claus
 G:h:r
 I:150:25d100:90:100:10
-W:52:3:0:40000:0:0
+W:57:3:0:40000:0:0
 B:HIT:LOSE_CHR:5d5
 B:TOUCH:LOSE_ALL:10d1
 B:TOUCH:LOSE_ALL:10d1
@@ -14202,36 +14101,32 @@ D:$resembles a gargantuan octopus and its evil is almost tangible.
 D:とてつもなく強く恐ろしい深海の生き物だ。巨大な蛸に似ていて、
 D:見ただけでその邪悪さが伝わってくる。
 
-#J0#
-N:741:アイス・ワイアーム
-E:Great Ice Wyrm
-G:D:w
-I:120:30d100:30:170:80
-W:54:2:0:15000:0:0
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:BITE:COLD:5d14
+N:741:デイドラ・ホワイト・ドラゴン
+E:Daedra White Dragon
+G:D:W
+I:120:42d50:30:110:40
+W:47:1:0:12000:100000:1194
+B:CLAW:HURT:4d10
+B:CLAW:COLD:6d12
+B:BITE:HURT:4d10
+B:BITE:COLD:6d12
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | AURA_COLD |
 F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD | 
 F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
 F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:BLIND | CONF | SCARE | 
-S:BR_COLD
-D:$An immense dragon capable of awesome destruction.  You have never felt 
-D:$such extreme cold, or witnessed such an icy stare.  Begone quickly or feel 
-D:$its wrath!
-D:恐るべき破壊能力を持った巨大なドラゴンだ。このような冷気はかつて感じたこと
-D:がないし、このような冷たい眼差しはかつて見たことがない。素早く逃げないと
-D:恐るべき怒りを呼び覚ましてしまうだろう!
+S:1_IN_4 | BLIND | CONF | SCARE | BR_COLD
+D:$It is a dragon that has accumulated great power in the Oblivion
+D:$ and has returned to this world.
+D:$  Be careful, this dragon can freeze your body and even your soul!
+D:冥界で強大な力を蓄えて現世に舞い戻ってきたドラゴンだ。
+D:魂まで凍らされないように気をつけろ!
 
 #JZ#
 N:742:デミリッチ
 E:Demilich
 G:L:U
 I:120:30d100:20:100:50
-W:54:2:0:12500:80000:776
+W:61:2:0:14500:80000:776
 B:TOUCH:EXP_VAMP:1d12
 B:TOUCH:UN_POWER
 B:TOUCH:LOSE_DEX:4d12
@@ -14244,7 +14139,6 @@ S:1_IN_3 |
 S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | CAUSE_3 | CAUSE_4 | 
 S:DRAIN_MANA | BRAIN_SMASH | S_HI_UNDEAD | S_UNDEAD | FORGET |
 S:TPORT | HEAL | ANIM_DEAD
-V:75
 D:$A lich who is partially immaterial, on its way to a new, ethereal form.
 D:部分的に非物質化したリッチで、霊的な存在に生まれ変わる過程にある。
 
@@ -14360,8 +14254,8 @@ D:邪悪な魔法の産物だ。(TRPG ウォーハンマー)
 #JZ#ブライアン・ラムレイの「盗まれた眼」などで言及されています。
 #JZ#クトーニアンたちの主のようです。 by 久留さん
 #JZ#解説は NeSYS さん
-N:747:『シュド=メル』
-E:Shudde M'ell
+N:747:地底を掘り進むもの『シュド=メル』
+E:Shudde M'ell, The Burrowers Beneath
 G:w:s
 I:125:100d40:20:90:20
 W:54:2:0:23000:0:0
@@ -14381,6 +14275,7 @@ D:$The most powerful and most evil of all Chthonians.
 D:$"A great gray thing a mile long chanting and exuding strange acids... 
 D:$charging through the depths of the earth at a fantastic speed, in a 
 D:$dreadful fury... melting basaltic rocks like butter under a blowtorch."
+D:$  (Lumley "The Burrowers Beneath", 1974)
 D:クトーニアンの中で最も卓越した、巨大な個体。
 D:最も邪悪な個体であり、クトーニアン達の長であると考えられている。
 D:単体でマグニチュード3.5程度の地震を起こすことが可能であり、
@@ -14574,29 +14469,26 @@ D:バンパイア族の中で最も恐るべき存在だ。一見したところ
 D:だが、その羽と瞳を見ればそんな思いはどこかに吹き飛んでしまうだろう。
 
 #J0#
-N:756:ã\83\98ã\83«ã\83»ã\83¯ã\82¤ã\82¢ã\83¼ã\83 
-E:Great Hell Wyrm
+N:756:ã\83\87ã\82¤ã\83\89ã\83©ã\83»ã\83¬ã\83\83ã\83\89ã\83»ã\83\89ã\83©ã\82´ã\83³
+E:Daedra Red Dragon
 G:D:r
-I:120:54d100:40:170:40
-W:55:2:0:18000:0:0
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:BITE:HURT:5d14
+I:120:30d80:40:120:40
+W:48:1:0:16000:360000:1192
+B:CLAW:HURT:4d14
+B:CLAW:FIRE:6d16
+B:CLAW:HURT:4d14
+B:BITE:FIRE:6d16
 F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE | SELF_LITE_1 |
 F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | SELF_LITE_2 |
 F:BASH_DOOR | POWERFUL | MOVE_BODY | AURA_FIRE |
 F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP | RIDING
-S:1_IN_6 | 
-S:BLIND | CONF | SCARE | 
-S:BR_FIRE
-D:$A vast dragon of immense power.  Fire leaps continuously from its huge 
-D:$form.  The air around it scalds you.  Its slightest glance burns you, and 
-D:$you truly realize how insignificant you are.
-D:それは信じ難たい程の力を持った巨大なドラゴンで、その体からは常に炎
-D:が吹き上がっている。その周りに立ちこめる熱気だけでも冒険者を火傷させるのに
-D:は充分であり、そのほんの一瞥だけでも冒険者を燃え上がらせるには十分だ。
-D:冒険者はこの生物の前では自分がなんと無力であるのかを痛感するだろう。
+S:1_IN_4 | BLIND | CONF | SCARE | BR_FIRE
+D:$It is a dragon that has accumulated great power in the Oblivion
+D:$ and has returned to this world.
+D:$In front of this fiery flame,
+D:$ you may not be able to leave a proof that you were alive!
+D:冥界で強大な力を蓄えて現世に舞い戻ってきたドラゴンだ。
+D:この激烈な炎の前では、あなたは生きていた証をこの世に残せないかもしれない!
 
 #JZ#名状しがたきものハスター(ハストゥール)
 #JZ#元来はアンブローズ・ビアスの「羊飼いハイタ」で言及された
@@ -15007,13 +14899,13 @@ N:770:混沌の覇者『はぶ』
 E:Habu the Champion of Chaos
 G:h:G
 I:130:111d66:25:175:10
-W:59:2:0:20000:0:0
+W:61:2:0:22000:0:0
 B:HIT:EXP_VAMP:6d6
 B:HIT:EXP_VAMP:8d8
 B:HIT:EXP_VAMP:10d10
 F:UNIQUE | MALE | CAN_SPEAK | HAS_LITE_2 | HUMAN |
 F:FORCE_SLEEP | FORCE_MAXHP | SMART | DROP_CORPSE |
-F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT
 F:OPEN_DOOR | BASH_DOOR | RES_NEXU | RES_NETH | RES_CHAO | EVIL | 
 F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | 
 S:1_IN_4 | 
@@ -15301,28 +15193,32 @@ S:BRAIN_SMASH | BA_NETH | S_KIN | DARKNESS | BA_DARK
 D:$The most feared of all vampires, the Prince of Darkness himself.
 D:ヴァンパイアの中で最も恐れられている、闇の貴公子その人である。
 
-#JZ#
-N:781:究極ビホルダー
-E:Ultimate beholder
-G:e:o
-I:120:40d100:30:80:10
-W:66:4:0:18000:0:0
-B:GAZE:EXP_40:2d5
-B:GAZE:LOSE_INT:2d6
-B:GAZE:UN_POWER:2d6
-B:GAZE:DR_MANA:5d10
-F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | CAN_FLY |
-F:BASH_DOOR | FEMALE | SMART | DROP_CORPSE |
-F:EVIL | IM_POIS | NO_CONF | NO_SLEEP
-S:1_IN_2 | 
-S:BLIND | CONF | SCARE | DRAIN_MANA | MIND_BLAST | FORGET | 
-S:DARKNESS | BO_ACID | BO_FIRE | BO_COLD | S_KIN | BO_MANA | DISPEL
+#J0#
+N:781:アンデッド・ビホルダー
+E:Undead beholder
+G:e:s
+I:120:37d99:30:80:10
+W:52:4:0:6000:40000:1184
+B:GAZE:EXP_40:4d6
+B:GAZE:PARALYZE:4d6
+B:GAZE:LOSE_INT:4d6
+B:GAZE:DR_MANA:6d6
+F:FORCE_SLEEP | RES_TELE | HAS_DARK_1 | COLD_BLOOD | BASH_DOOR
+F:EVIL | UNDEAD | CAN_FLY
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_NETH |
+F:NO_CONF | NO_SLEEP
+S:1_IN_3 | 
+S:SLOW | CAUSE_4 | DRAIN_MANA | MIND_BLAST | BRAIN_SMASH | FORGET
+S:BO_MANA | ANIM_DEAD | S_UNDEAD
 V:60
-D:$A disembodied eye, surrounded by twelve smaller eyes on stalks. 
-D:$This is a beholder hive-mother, far more powerful than normal 
-D:$beholders.
-D:柄のついた12個の小さい目に囲まれた目玉だ。ビホルダーの巣の女王
-D:であり、普通のビホルダーよりはるかに強力だ。
+D:$A disembodied eye, floating in the air.  Black nether storms rage around 
+D:$its bloodshot pupil and light seems to bend as it sucks its power from the 
+D:$very air around it.  Your soul chills as it drains your vitality for its 
+D:$evil enchantments.
+D:宙に浮かぶ巨大な目玉だ。その血走った瞳の周りでは冥界の暗黒の嵐が
+D:巻き起こっている。
+D:また周辺の大気から力を吸い取っているので、どんどんと光が失われていくようだ。
+D:それは邪悪な魔力を得るために冒険者の生命力を吸い取る。
 
 #JZ#
 N:782:リヴァイアサン
@@ -15566,27 +15462,28 @@ D:工の象眼がある。右手には大きな二つの指輪、左手にも一
 D:ド、ルビー、サファイアのもの。」
 D:(ロジャー・ゼラズニイ、岡部宏之訳「アンバーの九王子」早川書房、p.48)
 
-#JZ#
-N:790:万色ワイアーム
-E:Great Wyrm of Many Colours
+N:790:万色デイドラ・ドラゴン
+E:Daedra Dragon of Many Colours
 G:D:v
-I:120:52d100:40:170:255
-W:68:4:0:31000:0:0
-B:CLAW:HURT:6d12
-B:CLAW:HURT:6d12
-B:CLAW:HURT:6d12
-B:BITE:HURT:9d14
-F:ATTR_MULTI | CAN_FLY | EVIL |
-F:FORCE_SLEEP | FORCE_MAXHP | AURA_FIRE | AURA_ELEC | RES_TELE
-F:IM_FIRE | IM_ACID | IM_POIS | IM_COLD | IM_ELEC | AURA_COLD |
-F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
-F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE 
-F:DRAGON | NO_CONF | NO_SLEEP | RIDING | SELF_LITE_2 |
-S:1_IN_3 |
+I:120:66d50:40:125:40
+W:50:2:0:21000:200000:1198
+B:CLAW:HURT:6d10
+B:BITE:HURT:6d10
+B:BUTT:HURT:6d10
+B:CRUSH:HURT:6d10
+F:ATTR_MULTI | CAN_FLY
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | AURA_FIRE | AURA_COLD
+F:IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | RIDING | SELF_LITE_2
+S:1_IN_4 |
 S:BR_POIS | BR_ELEC | BR_ACID | BR_FIRE | BR_COLD |
 S:CONF | SCARE | BLIND
-D:$A huge dragon whose scales shimmer in myriad hues.
-D:巨大なドラゴンで、その鱗は様々な色に輝いている。
+D:$It is a dragon whose scales change color.
+D:$This giant dragon can control all the elements in this world.
+D:めぐるましく鱗の色が変わるドラゴンだ。
+D:この巨大な竜はこの世界に存在する元素の全てを操ることができる。
 
 #JZ#
 #JZ#フィオナ。愛称ファイ。アンバーの王女。
@@ -15709,7 +15606,7 @@ N:795:地獄界ドラゴン『ティアマット』
 E:Tiamat, Celestial Dragon of Evil
 G:D:v
 I:130:100d100:20:125:70
-W:70:4:0:45000:0:0
+W:80:4:0:45000:0:0
 B:CLAW:HURT:6d12
 B:CLAW:HURT:8d12
 B:CLAW:HURT:8d12
@@ -17999,17 +17896,16 @@ D:(ロジャー・ゼラズニイ、小尾芙佐訳「わが名はコンラッ
 N:870:黒衣の修行僧
 E:Ebony monk
 G:p:D
-I:120:63d11:20:57:5
-W:36:3:0:1100:0:0
-B:KICK:SUPERHURT:7d1
-B:HIT:EXP_10:7d2
-B:KICK:SUPERHURT:7d4
-B:HIT:EXP_10:7d2
-F:MALE | DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_COLD | HAS_LITE_2 |
-F:IM_POIS | RES_NETH | NO_FEAR | NO_CONF | NO_SLEEP | HUMAN |
-F:DROP_CORPSE | DROP_SKELETON
-S:1_IN_9 | 
-S:BO_NETH
+I:115:57d11:20:57:5
+W:36:3:0:1000:2500:1175
+B:KICK:SUPERHURT:6d1
+B:HIT:EXP_10:6d2
+B:KICK:SUPERHURT:6d4
+B:HIT:EXP_10:6d2
+F:HUMAN | MALE | DROP_CORPSE | DROP_SKELETON | DROP_60 | DROP_1D2
+F:OPEN_DOOR | BASH_DOOR | IM_COLD | HAS_LITE_2
+F:IM_POIS | RES_NETH | NO_FEAR | NO_CONF | NO_SLEEP
+S:1_IN_9 | BO_NETH
 D:$A monk in dusky robes trained in the most lethal martial arts.
 D:漆黒の法衣を身にまとい、暗殺拳に熟練した修行僧だ。
 
@@ -18088,28 +17984,26 @@ D:一匹狼。正義感、勇気とも平均以上だがカッとしやすい所
 D:計画的人生より行き当たりばったりの人生を選んでしまうタイプで、
 D:女性の扱いは苦手。
 
-N:874:幽体ワイアーム
-E:Spectral Wyrm
-G:D:w
-I:130:60d100:40:200:255
-W:77:4:0:35000:0:0
-B:CLAW:HURT:10d12
-B:CLAW:HURT:10d12
-B:CLAW:HURT:10d12
-B:BITE:UN_BONUS:8d8
-F:FORCE_MAXHP | EVIL | UNDEAD | CAN_FLY | AURA_COLD |
-F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | 
-F:POWERFUL | MOVE_BODY | PASS_WALL | INVISIBLE |
-F:DRAGON | NO_CONF | NO_SLEEP | RES_TELE |
-F:IM_POIS | IM_COLD |
-F:RES_NETH | RES_NEXU | RES_DISE | RIDING |
-S:1_IN_3 |
-S:BR_NEXU | BR_NETH | BR_DISE |
-S:S_HI_DRAGON
-S:SCARE | BLINK | SHRIEK
-V:133
-D:$The tortured soul of a once powerful wyrm.
-D:かつて強大な力を誇っていたワイアームの怨霊だ。
+N:874:グレート・インフェルノ・ドレイク
+E:Great Inferno Drake
+G:D:D
+I:120:30d90:30:110:30
+W:54:2:0:18000:400000:1200
+B:CLAW:HURT:9d9
+B:CLAW:HURT:9d9
+B:CLAW:HURT:9d9
+B:BITE:UN_BONUS:6d6
+F:FORCE_SLEEP | FORCE_MAXHP | SELF_DARK_2 |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | RES_TELE
+F:INVISIBLE | TAKE_ITEM | CAN_FLY
+F:PASS_WALL | POWERFUL | MOVE_BODY | RES_DARK | RES_NETH
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_4 | BR_NETH | BR_DARK | SCARE | BLINK | SHRIEK
+D:$It draws darkness from the underworld and brings chaos to the dungeon.
+D:$  The space around it is distorted and it is not possible
+D:$ to clearly capture its appearance.
+D:それは冥界から闇を呼び寄せてダンジョンに混沌をもたらしている。
+D:それの周りでは空間が歪み、姿をはっきりと捉えることができない。
 
 N:875:ストームトロル
 E:Storm troll
@@ -18409,29 +18303,24 @@ S:ROCKET | SHOOT | BLINK | BR_POIS | BR_CHAO | BR_NEXU
 D:$It was left here to be used against intruders.
 D:それは侵入者に対して使用するために置かれている。
 
-N:890:ã\83´ã\82§ã\83\8eã\83 ã\83»ã\83¯ã\82¤ã\82¢ã\83¼ã\83 
-E:Great Venom Wyrm
+N:890:ã\83\87ã\82¤ã\83\89ã\83©ã\83»ã\82°ã\83ªã\83¼ã\83³ã\83»ã\83\89ã\83©ã\82´ã\83³
+E:Daedra Green Draon
 G:D:g
-I:120:54d100:30:170:80
-W:55:2:0:16000:0:0
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:BITE:POISON:5d14
+I:120:42d50:30:110:40
+W:47:1:0:12000:100000:1196
+B:CLAW:HURT:4d10
+B:CLAW:POISON:6d11
+B:BITE:HURT:4d10
+B:BITE:POISON:6d11
 F:FORCE_SLEEP | FORCE_MAXHP |
 F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD |
 F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE | CAN_FLY |
 F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | RIDING |
-S:1_IN_6 |
-S:BLIND | CONF | SCARE |
-S:BR_POIS
-V:75
-D:$A huge dragon of incredible destructive power.  Noxious vapours 
-D:$fill the room near it, leaving you gasping for breath.  Flee 
-D:$now while you still can!
-D:信じられない程の破壊的な力を持った巨大なドラゴンだ。
-D:有毒な霧が近くの部屋に充満し、ほとんど息ができない。
-D:逃げられるうちに逃げろ!
+S:1_IN_4 | BLIND | CONF | SCARE | BR_POIS
+D:$It is a dragon that has accumulated great power in the Oblivion
+D:$ and has returned to this world.
+D:冥界で強大な力を蓄えて現世に舞い戻ってきたドラゴンだ。
+D:
 
 N:891:バラヒアを裏切りし『ゴルリム』
 E:Gorlim, Betrayer of Barahir
@@ -18818,11 +18707,30 @@ D:$vigour.  He can prove a troublesome opponent.
 D:彼はけた外れの力と体の大きさが有名な、屈強なホビットだ。彼がやっかいな
 D:強敵であることは間違いがない。
 
-N:915:修験者
-E:Mystic
+N:915:初級修験者
+E:Elementary mystic
+G:p:o
+I:115:35d10:30:50:5
+W:33:3:0:600:5000:916
+B:KICK:HURT:9d2
+B:KICK:HURT:9d2
+B:KICK:HURT:9d2
+B:KICK:HURT:9d2
+F:MALE | GOOD | DROP_CORPSE | DROP_SKELETON |
+F:FORCE_SLEEP | FORCE_MAXHP | HUMAN |
+F:ONLY_ITEM | DROP_1D2 | 
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR | 
+F:IM_ACID | IM_POIS | NO_CONF | NO_SLEEP
+S:1_IN_7 | HEAL | S_SPIDER
+D:$He is constantly training for bears and tigers to sank with a single blow.
+D:彼はクマであれトラであれ一撃で沈めるべく、絶え間ない特訓を続けている。
+
+N:916:中級修験者
+E:Medium mystic
 G:p:o
-I:120:35d10:30:50:5
-W:33:3:0:500:10000:916
+G:p:o
+I:120:35d15:30:50:5
+W:38:3:0:500:10000:917
 B:KICK:HURT:10d2
 B:KICK:HURT:10d2
 B:KICK:HURT:10d2
@@ -18832,21 +18740,19 @@ F:FORCE_SLEEP | FORCE_MAXHP | HUMAN |
 F:ONLY_ITEM | DROP_1D2 | 
 F:INVISIBLE | OPEN_DOOR | BASH_DOOR | 
 F:IM_ACID | IM_POIS | NO_CONF | NO_SLEEP
-S:1_IN_6 | 
-S:HEAL | 
-S:S_SPIDER
-D:$An adept at unarmed combat, the mystic strikes with stunning power.  He 
-D:$can summon help from nature and is able to focus his power to ease any 
-D:$pain.
+S:1_IN_6 | HEAL | S_SPIDER
+D:$An adept at unarmed combat, the mystic strikes with stunning power.
+D:$  He can summon help from nature and is able to focus his power
+D:$ to ease any pain.
 D:素手での戦いに習熟した修験者は、一撃で敵を気絶させることができる。
 D:彼にとって自然は味方であり、自然界の生物を召喚することもできる。
 D:またその鍛えられた精神力によって容易に自分の傷を治癒する。
 
-N:916:上級修験者
-E:Master mystic
+N:917:上級修験者
+E:High mystic
 G:p:o
-I:130:11d100:30:60:5
-W:50:3:0:6000:50000:917
+I:125:11d100:30:60:5
+W:50:3:0:6000:40000:1177
 B:KICK:HURT:15d2
 B:KICK:HURT:15d2
 B:HIT:POISON:20d1
@@ -18857,40 +18763,15 @@ F:ONLY_ITEM | DROP_1D2 | DROP_2D2 |
 F:INVISIBLE | OPEN_DOOR | BASH_DOOR | 
 F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | 
 F:NO_CONF | NO_SLEEP
-S:1_IN_3 | 
-S:HEAL | 
-S:S_SPIDER
-V:75
-D:$A lord of all that is natural, skilled in the mystic ways.  He is a master 
-D:$of martial arts and is at one with nature, able to summon help from the 
-D:$wild if need be.
-D:彼は自然の中で修行をする修験道を極めた者である。彼は肉弾戦の熟練者で
-D:あり、自然の理を深く熟知している者でもある。そのため必要があれば、野生の
-D:生物を召喚することもできる。
-
-N:917:修験道免許皆伝者
-E:Grand master mystic
-G:p:o
-I:130:22d100:30:80:5
-W:59:3:0:15000:0:0
-B:KICK:HURT:20d2
-B:KICK:HURT:20d2
-B:HIT:POISON:20d1
-B:HIT:PARALYZE:20d1
-F:MALE | GOOD | DROP_CORPSE | DROP_SKELETON |
-F:FORCE_SLEEP | FORCE_MAXHP | HUMAN |
-F:ONLY_ITEM | DROP_4D2 | 
-F:INVISIBLE | OPEN_DOOR | BASH_DOOR | 
-F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP
-S:1_IN_2 | 
-S:HEAL | MIND_BLAST | 
-S:S_SPIDER | S_HOUND
-V:75
-D:$He is one of the few true masters of the art, being extremely skillful in 
-D:$all forms of unarmed combat and controlling the world's natural creatures 
-D:$with disdainful ease.
-D:彼は修験道を真に極めた数少ない者であり、全ての種類の肉弾戦をマスター
-D:している。そしてこの世界の自然界の生物に顎で命令を与えることができる。
+S:1_IN_4 | HEAL | S_SPIDER
+D:$He is being at the culmination of martial arts,
+D:$ but he never gives up on himself.
+D:$  He is still not fully manipulating the creatures of nature
+D:$ and suffers from that.
+D:$  However, he does not despair and continues steadily step by step.
+D:彼は修験道を極めつつあるが、決して自分に驕ることはない。
+D:まだまだ彼は自然界の生物を完全には操れておらず、そのことを苦悩している。
+D:しかし彼は絶望せず、一歩ずつ着実に進み続けている。
 
 N:918:チョウチンアンコウ
 E:Devilfish
@@ -18951,20 +18832,22 @@ D:地獄の軍勢の指揮官であると言われている。
 N:921:インターネット・エクスプローダー
 E:Internet Exploder
 G:e:B
-I:140:20d20:25:0:1
-W:50:4:0:1500:0:0
-B:EXPLODE:LOSE_ALL:10d20
-F:RAND_25 | EMPTY_MIND | REFLECTING | FORCE_SLEEP | CAN_SPEAK |
-F:REGENERATE | AURA_ELEC | BASH_DOOR | KILL_BODY | EVIL |
-F:NONLIVING | IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS | 
-F:RES_LITE | RES_DARK | RES_NETH | RES_WATE | RES_PLAS | RES_SHAR | RES_SOUN |
-F:RES_CHAO | RES_DISE | RES_WALL | RES_INER | RES_TIME | RES_GRAV | RES_TELE |
-F:NO_FEAR | NO_STUN | NO_CONF | NO_SLEEP | CAN_FLY |
-S:1_IN_3 |
-S:HOLD | BLIND | CONF | SCARE | SLOW
-D:$This is Bull Gates's most devastating weapon, propagating fear and ruin
-D:$ throughout the world.
-D:ブル・ゲイツの究極兵器であり、全世界に破滅をもたらす恐怖の存在だ。
+I:80:20d20:25:0:1
+W:30:1:0:1500:0:0
+B:EXPLODE:LOSE_INT:10d20
+F:RAND_25 | RAND_50 | STUPID | EMPTY_MIND | REFLECTING | FORCE_SLEEP | CAN_SPEAK
+F:BASH_DOOR | EVIL | NONLIVING | IM_ACID | IM_FIRE | IM_COLD | IM_POIS
+F:RES_LITE | RES_DARK | RES_NETH | RES_WATE | RES_PLAS | RES_SHAR | RES_SOUN
+F:RES_CHAO | RES_DISE | RES_WALL | RES_INER | RES_TIME | RES_GRAV | RES_TELE
+F:NO_FEAR | NO_STUN | NO_CONF | NO_SLEEP | CAN_FLY
+S:1_IN_3 | BLINK | HOLD | BLIND | CONF | SCARE
+D:$This was Bull Gates's most devastating weapon once,
+D:$ propagating fear and ruin throughout all multiverse.
+D:$  Its weaknesses are cyber weapons named CSS and JavaScript,
+D:$ but neither exists in this universe.
+D:かつてはブル・ゲイツの究極兵器であり、
+D:全ての多元世界に破滅をもたらす恐怖の存在だった。
+D:弱点はCSSにJavaScriptと呼ばれる電脳兵器だが、どちらもこの世界には存在しない。
 
 N:922:ピカチャウ
 E:Electric rat
@@ -20170,7 +20053,7 @@ F:NO_CONF | NO_SLEEP | RES_TELE | RIDING |
 S:1_IN_2
 S:S_MONSTERS | CAUSE_3 | CAUSE_4 | CONF | BRAIN_SMASH | DRAIN_MANA | SCARE |
 S:HASTE | HOLD |
-D:It is a fox with nine tails, and you can sense its strong magical power.
+D:$It is a fox with nine tails, and you can sense its strong magical power.
 D:尾が九つに分かれた狐で、強い妖力を秘めている。
 
 N:988:鳳凰
@@ -20536,19 +20419,15 @@ D:なんてこった!そこらじゅうにいるぞ!
 N:1008:悪魔崇拝者
 E:Demonologist
 G:p:R
-I:120:28d10:20:50:10
-W:36:2:0:700:0:0
-B:HIT:HURT:2d6
-B:HIT:HURT:2d6
+I:115:28d10:20:50:10
+W:36:2:0:700:2250:1179
 B:HIT:HURT:2d5
-F:MALE | DROP_CORPSE | DROP_SKELETON | HAS_LITE_2 |
-F:FORCE_SLEEP | FORCE_MAXHP | HUMAN |
-F:ONLY_ITEM | DROP_1D2 | 
-F:SMART | OPEN_DOOR | BASH_DOOR | 
-F:EVIL
-S:1_IN_2 | 
-S:TPORT | HOLD | 
-S:S_DEMON
+B:HIT:HURT:2d5
+B:HIT:HURT:2d4
+F:HUMAN | MALE | EVIL | DROP_CORPSE | DROP_SKELETON | HAS_LITE_2
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_1D2
+F:SMART | OPEN_DOOR | BASH_DOOR
+S:1_IN_4 | TPORT | HOLD | S_DEMON
 D:$A figure twisted by evil standing in robes of deepest crimson.
 D:深紅のローブを身にまとってたたずむ、邪悪に歪んだ人間だ。
 
@@ -21143,6 +21022,8 @@ S:1_IN_1
 S:SPECIAL
 D:$This king of the chameleons, like its lesser kin, can change its appearance
 D:$ to blend in with its surroundings.
+D:カメレオンの王は、その眷属たるカメレオン達と同じように、
+D:周囲の環境に合わせてその姿を変えることができる。
 
 N:1042:幻の鯨『イッカク』
 E:Narwhal
@@ -21243,17 +21124,16 @@ D:背が低くて浅黒い肌をした東夷で、黒い服に身を包んでい
 N:1047:黄衣の修行僧
 E:Topaz monk
 G:p:y
-I:120:59d11:30:46:10
-W:35:2:0:800:0:0
-B:KICK:SUPERHURT:9d1
-B:HIT:SUPERHURT:9d1
-B:KICK:SUPERHURT:9d4
-B:HIT:SUPERHURT:9d1
+I:115:59d11:30:46:10
+W:35:2:0:800:2200:1175
+B:KICK:SUPERHURT:8d1
+B:HIT:SUPERHURT:8d1
+B:KICK:SUPERHURT:8d4
+B:HIT:SUPERHURT:8d1
 F:MALE | DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_ELEC | HAS_LITE_2 |
 F:IM_FIRE | IM_COLD | IM_POIS | IM_ACID | NO_FEAR | NO_CONF | NO_SLEEP | 
 F:HUMAN | DROP_CORPSE | DROP_SKELETON
-S:1_IN_9 | 
-S:HASTE
+S:1_IN_9 | HASTE
 D:$A yellow-garbed monk, trained in martial arts.
 D:黄色の法衣を身にまとった、拳法に熟練した修行僧だ。
 
@@ -21492,12 +21372,11 @@ N:1061:『恐竜バーニーちゃん』
 E:Barney the Dinosaur
 G:R:v
 I:120:110d9:10:90:20
-W:29:255:0:500:0:0
+W:29:255:0:1500:0:0
 B:SHOW:LOSE_INT
 B:SHOW:LOSE_WIS
 B:CHARGE:EAT_GOLD
 B:CHARGE:EAT_GOLD
-#F:DROP_1D2 | DROP_90 | DROP_GOOD | DROP_GREAT | ONLY_ITEM |
 F:EVIL | MALE | CAN_SPEAK | SMART | RES_TELE | CAN_SWIM | DROP_CORPSE |
 F:ANIMAL | IM_POIS | NO_CONF | NO_SLEEP | FORCE_MAXHP | UNIQUE | FORCE_SLEEP |
 F:RES_CHAO
@@ -21591,28 +21470,25 @@ D:敵軍目がけて攻めかかるんや。忽ちに、辺り一面、闇夜の
 D:蛸の吹き出す毒気にむせたんかしらんけど、もんどり打って馬から落ちる奴、
 D:そこらへひっくり返る奴と、ばたばたばたばたと倒れて…」
 
-N:1066:ã\83\90ã\82¤ã\83«ã\83»ã\83¯ã\82¤ã\82¢ã\83¼ã\83 
-E:Great Bile Wyrm
-G:D:s
-I:120:40d100:30:150:80
-W:54:2:0:17000:0:0
-B:CLAW:HURT:4d12
-B:CLAW:HURT:4d12
-B:BITE:ACID:6d14
-B:BITE:ACID:6d14
+N:1066:ã\83\87ã\82¤ã\83\89ã\83©ã\83»ã\83\96ã\83©ã\83\83ã\82¯ã\83»ã\83\89ã\83©ã\82´ã\83³
+E:Daedra Black Dragon
+G:D:D
+I:120:42d50:30:110:40
+W:47:1:0:12000:100000:1188
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:ACID:6d12
+B:BITE:ACID:6d12
 F:FORCE_SLEEP | FORCE_MAXHP | 
 F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | 
 F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE | RIDING | CAN_FLY
 F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP
-S:1_IN_4 | 
-S:BLIND | CONF | SCARE | 
-S:BR_ACID
-D:$A huge and very powerful dragon.  Great steaming pools of acid drip from 
-D:$its form onto the ground.  You shudder when you see the acid eating away 
-D:$the very stones of the dungeon - what could it do to you?
-D:巨大でとても強力なドラゴンだ。激しく蒸気を吹きだす酸を地面に滴らせ、
-D:滴った酸はダンジョンの岩石をあっという間に溶解し穴を空けている…
-D:これがあなたに当たったらどうなることか!
+S:1_IN_4 | BLIND | CONF | SCARE | BR_ACID
+D:$It is a dragon that has accumulated great power in Oblivion
+D:$ and has returned to this world.
+D:$  With half-finished armor, your whole body will be melted!
+D:冥界で強大な力を蓄えて現世に舞い戻ってきたドラゴンだ。
+D:生半可な鎧では肉体ごと溶かされてしまうだろう!
 
 N:1067:たぬき
 E:Tanuki
@@ -22221,7 +22097,7 @@ D:敵であろうと味方であろうと、間合いに入った者全てを斬
 N:1097:ヤング・クイックシルバー・ドラゴン
 E:Young quicksilver dragon
 G:d:s
-I:115:28d10:20:90:150
+I:115:38d10:20:90:150
 W:33:2:0:900:5500:1098
 B:CLAW:HURT:1d12
 B:CLAW:HURT:1d12
@@ -22684,6 +22560,7 @@ F:BASH_DOOR | NO_SLEEP | NO_CONF | NO_FEAR
 F:DROP_GOOD | DROP_GREAT | ONLY_ITEM | DROP_1D2
 S:1_IN_6
 S:ANIM_DEAD | BA_LITE | CAUSE_3 | CONF | HOLD | BLIND | SHRIEK | BLINK
+A:253:1:30
 D:$You are a UNIQUE.
 D:$  She will surely fail your animation!
 D:あなたはユニークな存在だ。
@@ -22859,7 +22736,7 @@ D:それは罪人を処罰すると同時に、下級の鬼達を統率してい
 N:1134:冥界の裁判長『閻魔大王』
 E:Yama, the Judge of the afterlife
 G:O:v
-I:120:50d60:30:100:10
+I:120:55d60:30:100:10
 W:57:2:0:24000:0:0
 B:SLASH:HURT:10d5
 B:SLASH:HURT:10d5
@@ -22895,12 +22772,12 @@ S:S_HI_UNDEAD | S_DEMON | DISPEL
 D:$Undoubtedly, it was this man who released the cursed artifacts
 D:$ and called upon the great old ones who came from the outside world
 D:$ and settled in Llouis.
-D:$  It is said that his book, Necronomicon, namely stargate to the abyss,
+D:$  It is said that his book, Al Azif, namely stargate to the abyss,
 D:$ still sleeps somewhere in the land.
 D:呪われしアーティファクトを世に解き放ち、
 D:外界より来たりてルルイエに住み着いた旧支配者達を呼び寄せたのは、
 D:紛れもなくこの男である。
-D:å½¼ã\81®è\91\97ã\81\97ã\81\9f深淵ã\81®æ\9b¸ã\80\8eã\83\8dã\82¯ã\83­ã\83\8eã\83\9fã\82³ã\83³』は、今もこの地のどこかに眠ると云う。
+D:å½¼ã\81®è\91\97ã\81\97ã\81\9f深淵ã\81®æ\9b¸ã\80\8eã\82¢ã\83«ã\83»ã\82¢ã\82¸ã\83\95』は、今もこの地のどこかに眠ると云う。
 
 N:1136:スケイヴン・ウォーリア
 E:Skaven warrior
@@ -23137,7 +23014,7 @@ F:NO_CONF | NO_SLEEP | NO_FEAR
 S:1_IN_5 | ROCKET
 R:1147:5d5
 D:$It is a ghost of those who made human life a part,
-D:$ ran on the battlefield with iron wings, 
+D:$ flied on the battlefield with iron wings,
 D:$ and continued to shed a lot of blood on both sides.
 D:それは人の命を部品にし、鉄の翼を纏って戦場を駆け、敵味方共に幾多の血を流し続けた者達の亡霊だ。
 
@@ -23152,7 +23029,7 @@ F:COLD_BLOOD | CAN_FLY | GOOD | UNDEAD
 F:NO_CONF | NO_SLEEP | NO_FEAR | DROP_60 | ONLY_ITEM
 S:1_IN_6 | BO_MANA | MISSILE | BLINK
 D:$It is a ghost of those who made human life a part,
-D:$ ran on the battlefield with iron wings,
+D:$ flied on the battlefield with iron wings,
 D:$ and continued to shed a lot of blood on both sides.
 D:それは人の命を部品にし、鉄の翼を纏って戦場を駆け、敵味方共に幾多の血を流し続けた者達の亡霊だ。
 
@@ -23172,7 +23049,7 @@ D:彼は自分の行いを償うつもりはない。
 
 N:1149:全開装甲『カバード・コア』
 E:Opened core, the uncovered fortress
-G:#:G
+G:g:G
 I:110:9d5:35:1:10
 W:4:1:0:40:0:0
 B:SHOOT:HURT:2d6
@@ -23193,7 +23070,7 @@ I:110:20d10:30:30:20
 W:10:1:0:50:0:0
 B:BITE:HURT:2d10
 B:STING:HURT:2d10
-F:UNIQUE | FORCE_MAXHP | EVIL | DROP_CORPSE | DROP_SKELETON
+F:UNIQUE | FORCE_MAXHP | EVIL | DROP_CORPSE | DROP_SKELETON | ESCORT
 F:DROP_60 | DROP_90 | ONLY_ITEM | DROP_GOOD | NO_SLEEP | ANIMAL
 S:1_IN_8 | S_KIN | BLIND
 D:$It waits to prey on all living things.
@@ -23207,7 +23084,7 @@ W:15:1:0:50:0:0
 B:CRUSH:HURT:6d6
 B:CRUSH:HURT:6d6
 F:RAND_25 | RAND_50 | FRIENDS | WILD_SWAMP | NONLIVING | EMPTY_MIND
-F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE
+F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_WATE
 D:$It is a small bubble that makes an weird movement.
 D:$  It collapses suddenly.
 D:不気味な動きをする小さな泡だ。ぷちぷちと潰れる。
@@ -23221,7 +23098,7 @@ W:18:1:0:100:0:0
 B:CRUSH:HURT:7d7
 B:CRUSH:HURT:7d7
 F:RAND_25 | RAND_50 | WILD_SWAMP | NONLIVING | EMPTY_MIND
-F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE
+F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_WATE
 D:$It is a middle bubble that makes an weird movement.
 D:$  When it is crushed, it becomes a small bubble.
 D:不気味な動きをする、やや大きな泡だ。潰すと小さな泡になる。
@@ -23235,7 +23112,7 @@ W:21:1:0:250:0:0
 B:CRUSH:HURT:8d8
 B:CRUSH:HURT:8d8
 F:RAND_25 | RAND_50 | WILD_SWAMP | NONLIVING | EMPTY_MIND
-F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE
+F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_WATE
 D:$It is a large bubble that makes an weird movement.
 D:$  When it is crushed, it becomes a middle bubble.
 D:不気味な動きをする大きな泡だ。潰しても中々なくならない。
@@ -23249,7 +23126,7 @@ W:24:1:0:500:0:0
 B:CRUSH:HURT:9d9
 B:CRUSH:HURT:9d9
 F:RAND_25 | RAND_50 | WILD_SWAMP | NONLIVING | EMPTY_MIND
-F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE
+F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_WATE
 D:$It is a extra large bubble that makes an weird movement.
 D:$  You must decide whether running away or squashing them all!
 D:不気味な動きをする巨大な泡だ。逃げるか潰すか二つに一つだ!
@@ -23264,7 +23141,7 @@ B:CRUSH:HURT:6d6
 B:CRUSH:HURT:6d6
 F:RAND_25 | RAND_50 | FRIENDS | WILD_SWAMP | NONLIVING | EMPTY_MIND
 F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE | POWERFUL
-S:1_IN_4 | MISSILE
+S:1_IN_5 | MISSILE
 D:$Holy shit! It will shoot you back at this bubble!
 D:なんてこった、こいつ泡のくせに撃ち返してくるぞ!
 
@@ -23280,7 +23157,7 @@ B:CRUSH:HURT:7d7
 B:CRUSH:HURT:7d7
 F:RAND_25 | RAND_50 | WILD_SWAMP | NONLIVING | EMPTY_MIND
 F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE | POWERFUL
-S:1_IN_4 | MISSILE
+S:1_IN_5 | MISSILE
 D:$It is a middle bubble that makes an weird movement and shoots you back.
 D:$  When it is crushed, it becomes a small bubble.
 D:不気味な動きをして撃ち返してくる、やや大きな泡だ。潰すと小さな泡になる。
@@ -23296,7 +23173,7 @@ B:CRUSH:HURT:8d8
 B:CRUSH:HURT:8d8
 F:RAND_25 | RAND_50 | WILD_SWAMP | NONLIVING | EMPTY_MIND
 F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE | POWERFUL
-S:1_IN_4 | MISSILE
+S:1_IN_5 | MISSILE
 D:$It is a large bubble that makes an weird movement and shoots you back.
 D:$  When it is crushed, it becomes a middle bubble.
 D:不気味な動きをして撃ち返してくる大きな泡だ。潰しても中々なくならない。
@@ -23312,7 +23189,7 @@ B:CRUSH:HURT:9d9
 B:CRUSH:HURT:9d9
 F:RAND_25 | RAND_50 | WILD_SWAMP | NONLIVING | EMPTY_MIND
 F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | RES_WATE | POWERFUL
-S:1_IN_4 | MISSILE
+S:1_IN_5 | MISSILE
 D:$It is a extra large bubble that makes an weird movement and shoots you back!
 D:$  You must decide whether running away or squashing them all!
 D:不気味な動きをして撃ち返してくる巨大な泡だ。逃げるか潰すか二つに一つだ!
@@ -23505,3 +23382,1523 @@ D:$Its outrageous power will destroy a star and eventually become a new myth.
 D:ヴァジュラエネルギーのおぞましい研究の果てに産みだされた双子の姉妹の融合体だ。
 D:その無法図な力は一個の星を滅ぼし、やがて新たな神話の存在となるに足るものだろう。
 
+N:1172:緑衣の高位修行僧
+E:High jade monk
+G:p:g
+I:120:54d12:30:46:10
+W:35:2:0:800:0:0
+B:KICK:SUPERHURT:5d2
+B:HIT:SUPERHURT:5d1
+B:KICK:SUPERHURT:5d5
+B:HIT:SUPERHURT:5d1
+F:HUMAN | MALE | DROP_CORPSE | DROP_SKELETON
+F:DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_ELEC | HAS_LITE_2
+F:IM_FIRE | IM_COLD | IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP
+S:1_IN_6 | BO_ELEC
+D:$A high-rank green-garbed monk, trained in martial arts.
+D:緑色の法衣を身にまとった、拳法に熟練した高位の修行僧だ。
+
+N:1173:白衣の高位修行僧
+E:High ivory monk
+G:p:W
+I:120:47d17:25:51:7
+W:38:1:0:900:0:0
+B:KICK:SUPERHURT:8d1
+B:HIT:SUPERHURT:8d1
+B:KICK:SUPERHURT:8d4
+B:HIT:SUPERHURT:8d1
+F:HUMAN | MALE | DROP_CORPSE | DROP_SKELETON
+F:DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_FIRE | IM_POIS
+F:NO_FEAR | NO_CONF | NO_SLEEP | HAS_LITE_1 | HAS_LITE_2
+S:1_IN_7 | HEAL
+D:$A high-rank monk in white robes.  He is skilled in martial arts.
+D:純白の法衣を身にまとった、拳法に熟練した高位の修行僧だ。
+
+N:1174:黄衣の高位修行僧
+E:High topaz monk
+G:p:o
+I:120:55d15:30:46:10
+W:40:2:0:800:0:0
+B:KICK:SUPERHURT:9d1
+B:HIT:SUPERHURT:9d1
+B:KICK:SUPERHURT:9d4
+B:HIT:SUPERHURT:9d1
+F:MALE | DROP_60 | DROP_1D2 | OPEN_DOOR | BASH_DOOR | IM_ELEC | HAS_LITE_2 |
+F:IM_FIRE | IM_COLD | IM_POIS | IM_ACID | NO_FEAR | NO_CONF | NO_SLEEP | 
+F:HUMAN | DROP_CORPSE | DROP_SKELETON
+S:1_IN_9 | HASTE
+D:$A high-rank yellow-garbed monk, trained in martial arts.
+D:黄色の法衣を身にまとった、拳法に熟練した高位の修行僧だ。
+
+N:1175:黒衣の高位修行僧
+E:High ebony monk
+G:p:s
+I:120:63d11:20:57:5
+W:41:3:0:1100:0:0
+B:KICK:SUPERHURT:7d1
+B:HIT:EXP_10:7d2
+B:KICK:SUPERHURT:7d4
+B:HIT:EXP_10:7d2
+F:HUMAN | MALE | DROP_CORPSE | DROP_SKELETON | DROP_60 | DROP_1D2
+F:OPEN_DOOR | BASH_DOOR | IM_COLD | HAS_LITE_2
+F:IM_POIS | RES_NETH | NO_FEAR | NO_CONF | NO_SLEEP
+S:1_IN_8 | BO_NETH
+D:$A high-rank monk in dusky robes trained in the most lethal martial arts.
+D:漆黒の法衣を身にまとい、暗殺拳に熟練した高位の修行僧だ。
+
+N:1176:リッチの上級修行僧
+E:High monastic lich
+G:L:U
+I:120:12d100:30:80:30
+W:44:2:0:5000:0:0
+B:KICK:HURT:24d1
+B:HIT:HURT:24d1
+B:CLAW:EXP_80:4d2
+B:CLAW:LOSE_DEX:4d2
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | RES_TELE
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | 
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | RES_NETH | NO_CONF | NO_SLEEP
+S:1_IN_3 | 
+S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | CAUSE_3 | CAUSE_4 | 
+S:DRAIN_MANA | BRAIN_SMASH | ANIM_DEAD 
+D:$A skeletal form wrapped in priestly gold robes.
+D:$  There is a dignity that feels even awe.
+D:金色の僧侶の法衣に身を包んだ骸骨のような姿だ。
+D:そこには畏怖すら感じる気品が漂っている。
+
+N:1177:修験道師範代
+E:Acting master mystic
+G:p:B
+I:125:22d90:30:80:5
+W:59:3:0:15000:60000:1178
+B:KICK:HURT:18d2
+B:KICK:HURT:18d2
+B:HIT:POISON:18d1
+B:HIT:PARALYZE:18d1
+F:HUMAN | MALE | GOOD | DROP_CORPSE | DROP_SKELETON
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_4D2
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP
+S:1_IN_3 | HEAL | MIND_BLAST | S_SPIDER | S_HOUND
+D:$He is a martial arts' examiner who has trained his body and spirit
+D:$ so that he can teach the next generation.
+D:$His fist can catch the rock's deadline and crush it with a single blow.
+D:彼は後進を指導できるほどに肉体も精神も鍛え上げた修験者だ。
+D:彼の拳は岩の死線を捉えて一撃で砕くことができる。
+
+N:1178:修験道免許皆伝者
+E:Grand master mystic
+G:p:v
+I:130:22d100:30:80:5
+W:64:3:0:20000:0:0
+B:KICK:HURT:20d2
+B:KICK:HURT:20d2
+B:HIT:POISON:20d1
+B:HIT:PARALYZE:20d1
+F:HUMAN | MALE | GOOD | DROP_CORPSE | DROP_SKELETON
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_GOOD | DROP_4D2
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP
+S:1_IN_2 | HEAL | MIND_BLAST | S_SPIDER | S_HOUND
+D:$He is one of the few true masters of the art, being extremely skillful in 
+D:$all forms of unarmed combat and controlling the world's natural creatures 
+D:$with disdainful ease.
+D:彼は修験道を真に極めた数少ない者であり、全ての種類の肉弾戦をマスター
+D:している。そしてこの世界の自然界の生物に顎で命令を与えることができる。
+
+N:1179:悪魔崇拝司祭
+E:High demonologist
+G:p:r
+I:120:28d10:20:50:10
+W:41:2:0:700:0:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+B:HIT:HURT:2d5
+F:HUMAN | MALE | EVIL | DROP_CORPSE | DROP_SKELETON | HAS_LITE_2
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_1D2
+F:SMART | OPEN_DOOR | BASH_DOOR
+S:1_IN_2 | TPORT | HOLD | S_DEMON
+D:$This man will soon be absorbed in the devil's world.
+D:$To that extent he continues to devote his strong prayers to the devil.
+D:この男は間もなく悪魔に取り込まれるだろう。
+D:それほどまでに彼は強い祈りを悪魔に捧げ続けている。
+
+N:1180:ブロンズ・リッチ
+E:Bronze lich
+G:L:B
+I:120:95d20:30:85:10
+W:47:1:0:14000:35000:1181
+B:BUTT:COLD:4d6
+B:BUTT:FIRE:4d6
+B:BUTT:ELEC:4d6
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | COLD_BLOOD | BASH_DOOR | CAN_FLY
+F:EVIL | UNDEAD | SMART | ONLY_ITEM | DROP_60 | DROP_90 | DROP_GOOD
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_NETH | RES_TELE
+F:NO_CONF | NO_SLEEP
+S:1_IN_3
+S:BO_WATE | BA_WATE | BR_FIRE | BO_ICEE | BA_ELEC | BA_COLD | CAUSE_3 | CAUSE_4
+S:DRAIN_MANA | BRAIN_SMASH | MIND_BLAST | S_UNDEAD | BLINK
+D:$This skeleton wears a robe which has a neat appearance over the years.
+D:$  It unleashes powerful magic from a bronze staff
+D:$ that has been used for many years.
+D:この骸骨は長い年月を経ても小ざっぱりしている法衣を着ていて、
+D:長年使い込んだ青銅の杖から強力な魔法を繰り出してくる。
+
+N:1181:アイアン・リッチ
+E:Iron lich
+G:L:s
+I:120:28d100:30:100:10
+W:52:4:0:19000:0:0
+B:BUTT:COLD:5d6
+B:BUTT:FIRE:5d6
+B:BUTT:ELEC:5d6
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | COLD_BLOOD | BASH_DOOR | CAN_FLY
+F:EVIL | UNDEAD | SMART | ONLY_ITEM | DROP_2D2 | DROP_GOOD
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_NETH | RES_TELE
+F:NO_CONF | NO_SLEEP
+S:1_IN_2
+S:BA_WATE | BR_FIRE | BO_ICEE | BA_ELEC | BA_COLD | CAUSE_4
+S:DRAIN_MANA | BRAIN_SMASH | S_UNDEAD
+D:$It is a huge, twisted grey skull floating through the air. Its cold eyes 
+D:$burn with hatred towards all who live.
+D:それは宙に浮いた巨大で、捻じ曲げられた灰色の髑髏だ。その冷たい目は
+D:全ての命ある物への憎しみに燃えている。
+
+N:1182:リッチの破戒僧
+E:Depraved monk lich
+G:L:r
+I:120:70d39:25:80:15
+W:46:2:0:10000:0:0
+B:CLAW:SUPERHURT:12d11
+B:BITE:SUPERHURT:12d11
+B:PUNCH:TERRIFY:25d1
+B:KICK:TERRIFY:25d1
+F:UNDEAD | EVIL | COLD_BLOOD | DROP_SKELETON | SMART | HAS_DARK_1
+F:FORCE_SLEEP | ONLY_ITEM | DROP_GOOD | DROP_2D2
+F:BASH_DOOR | IM_COLD | IM_POIS | RES_NETH | NO_CONF | NO_SLEEP
+S:1_IN_5 | BA_FIRE | BA_DARK | BA_CHAO | CAUSE_3 | MIND_BLAST
+S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | ANIM_DEAD | S_UNDEAD
+D:$It is a skull majoring in both scholarship and the martial arts.
+D:$  It is stubborn in his strength and continues to seek blood
+D:$ even when it is dead already.
+D:生前は文武両道だった髑髏だ。強さに拘泥し死してなお血を求め続けている。
+
+#J0#
+N:1183:エンペラー・ワイト
+E:Emperor wight
+G:W:y
+I:120:38d13:20:40:10
+W:43:2:0:2400:0:0
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+B:TOUCH:EXP_80
+B:TOUCH:EXP_80
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_90 | DROP_4D2 | CAN_FLY
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | RES_NETH |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | RES_DARK | HURT_LITE | NO_CONF | NO_SLEEP
+S:1_IN_6 | 
+S:HOLD | SCARE | CAUSE_3 | BO_NETH
+D:$Your life force is torn from your body as this powerful unearthly being 
+D:$approaches.
+D:この強力なあの世の者が近づいてくると、自分の魂が肉体から引き裂かれるようだ。
+
+N:1184:腐敗ビホルダー
+E:Rotten beholder
+G:e:v
+I:120:27d100:30:80:10
+W:57:4:0:6000:40000:1185
+B:GAZE:EXP_80
+B:GAZE:PARALYZE:5d6
+B:GAZE:LOSE_INT:5d6
+B:GAZE:DR_MANA:6d6
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | HAS_DARK_1 |
+F:COLD_BLOOD | BASH_DOOR | 
+F:EVIL | UNDEAD | CAN_FLY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_NETH |
+F:NO_CONF | NO_SLEEP
+S:1_IN_2 | 
+S:SLOW | CAUSE_4 | DRAIN_MANA | MIND_BLAST | BRAIN_SMASH | FORGET | 
+S:BO_MANA | ANIM_DEAD 
+S:S_UNDEAD
+D:$It is a deviant monster with innumerable eyes with muddy tentacles.
+D:$  It spreads nauseous nasty odors around.
+D:ドロドロした触手に爛れた目が無数についている異形のモンスターだ。
+D:それは吐き気を催す異臭を周囲に撒き散らしている。
+
+#JZ#
+N:1185:究極ビホルダー
+E:Ultimate beholder
+G:e:o
+I:120:40d100:30:80:10
+W:73:4:0:18000:0:0
+B:GAZE:EXP_40:5d5
+B:GAZE:LOSE_INT:5d6
+B:GAZE:UN_POWER:5d6
+B:GAZE:DR_MANA:5d10
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | CAN_FLY |
+F:BASH_DOOR | FEMALE | SMART | DROP_CORPSE |
+F:EVIL | IM_POIS | NO_CONF | NO_SLEEP
+S:1_IN_2 | 
+S:BLIND | CONF | SCARE | DRAIN_MANA | MIND_BLAST | FORGET | 
+S:DARKNESS | BO_ACID | BO_FIRE | BO_COLD | S_KIN | BO_MANA | DISPEL
+D:$A disembodied eye, surrounded by twelve smaller eyes on stalks. 
+D:$This is a beholder hive-mother, far more powerful than normal 
+D:$beholders.
+D:柄のついた12個の小さい目に囲まれた目玉だ。ビホルダーの巣の女王
+D:であり、普通のビホルダーよりはるかに強力だ。
+
+N:1186:トリクロプス
+E:Triclops
+G:P:u
+I:120:72d12:20:100:20
+W:42:5:0:2000:0:0
+B:SHOOT:HURT:9d9
+B:HIT:HURT:15d8
+B:HIT:HURT:15d8
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_2D2 | TAKE_ITEM | DROP_CORPSE |
+F:BASH_DOOR | OPEN_DOOR | MOVE_BODY |
+F:EVIL | IM_POIS | IM_ACID | GIANT | EAT_GIVE_STR |
+S:1_IN_8 |
+S:SHOOT
+D:$The thee-eyes cyclops!?  What the hell is going on!?
+D:三つ目のサイクロプス!? 一体何が起きているというんだ!?
+
+#J0#
+N:1187:グレーター・タイタン
+E:Greater titan
+G:P:v
+I:120:70d50:30:125:15
+W:52:1:0:18000:0:0
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | MOVE_BODY |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | MALE
+S:1_IN_5 | HEAL | TELE_TO | S_MONSTERS
+D:$This giant is rampaging with a physical structure that
+D:$ can reach ceiling of the cave.
+D:$  Part of the cave is the traces they passed by.
+D:この巨人は天に届かんばかりの体躯で暴れ回っている。
+D:洞窟や階段の一部は彼らが通り過ぎた跡だ。
+
+N:1188:バイル・ワイアーム
+E:Bile Wyrm
+G:D:s
+I:120:63d50:30:125:20
+W:54:1:0:20000:300000:1189
+B:CLAW:HURT:4d12
+B:CLAW:ACID:12d14
+B:BITE:HURT:4d12
+B:BITE:ACID:12d14
+F:FORCE_SLEEP | FORCE_MAXHP | 
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | 
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE | RIDING | CAN_FLY
+F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP
+S:1_IN_4 | BLIND | CONF | SCARE | BR_ACID
+D:$A huge and very powerful dragon.
+D:$  Steaming pools of acid drip from its form onto the ground.
+D:$  You shudder when you see the acid eating away
+D:$ the very stones of the dungeon - what could it do to you?
+D:巨大でとても強力なドラゴンだ。激しく蒸気を吹きだす酸を地面に滴らせ、
+D:滴った酸はダンジョンの岩石をあっという間に溶解し穴を空けている…
+D:これがあなたに当たったらどうなることか!
+
+N:1189:グレート・バイル・ワイアーム
+E:Great Bile Wyrm
+G:D:D
+I:125:48d100:30:150:10
+W:64:1:0:30000:0:0
+B:CLAW:SUPERHURT:6d12
+B:CLAW:ACID:21d21
+B:BITE:SUPERHURT:6d12
+B:BITE:ACID:21d21
+F:FORCE_SLEEP | FORCE_MAXHP | 
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD 
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE | RIDING | CAN_FLY
+F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP
+S:1_IN_3 | BLIND | CONF | SCARE | BR_ACID
+D:$It is one of the most powerful and brutal dragons in the world.
+D:$  You will be melted by the breath just by approaching!
+D:この世で最も強力で凶悪なドラゴンの一体だ。
+D:近付いただけでその息吹に溶かされてしまうだろう!
+
+N:1190:ストーム・ワイアーム
+E:Storm Wyrm
+G:D:B
+I:120:63d50:30:125:20
+W:54:1:0:20000:300000:1191
+B:CLAW:HURT:4d12
+B:CLAW:ELEC:12d14
+B:BITE:HURT:4d12
+B:BITE:ELEC:12d14
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | CAN_FLY
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD | SELF_LITE_2
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
+F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_4 | BLIND | CONF | SCARE | BR_ELEC
+D:$A vast dragon of power.  Storms and lightning crash around its titanic form.
+D:$  Deep blue scales reflect the flashes and highlight the creature's 
+D:$great muscles.  It regards you with contempt.
+D:力に満ちた巨大なドラゴンだ。その山のような体の周りには嵐が巻き起こり、稲妻
+D:が光っている。
+D:深い青色の鱗が光を反射して、この生物の隆々たる筋肉を浮き彫りにしている。
+D:それは冒険者を軽蔑すべき者とみなしている。
+
+N:1191:グレート・ストーム・ワイアーム
+E:Great Storm Wyrm
+G:D:b
+I:125:48d100:30:150:10
+W:64:1:0:30000:0:0
+B:CLAW:SUPERHURT:6d12
+B:CLAW:ELEC:21d21
+B:BITE:SUPERHURT:6d12
+B:BITE:ELEC:21d21
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | CAN_FLY
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD | SELF_LITE_2
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
+F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_3 | BLIND | CONF | SCARE | BR_ELEC
+D:$It is one of the most powerful and brutal dragons in the world.
+D:$  You will be charred by the breath just by approaching!
+D:この世で最も強力で凶悪なドラゴンの一体だ。
+D:近付いただけでその息吹で黒焦げにされてしまうだろう!
+
+#J0#
+N:1192:ヘル・ワイアーム
+E:Great Hell Wyrm
+G:D:R
+I:120:40d90:30:130:20
+W:55:1:0:23000:340000:1193
+B:CLAW:HURT:5d12
+B:CLAW:FIRE:12d15
+B:BITE:HURT:5d12
+B:BITE:FIRE:12d15
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE | SELF_LITE_1
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | SELF_LITE_2
+F:BASH_DOOR | POWERFUL | MOVE_BODY | AURA_FIRE |
+F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_4 | BLIND | CONF | SCARE | BR_FIRE
+D:$A vast dragon of immense power.  Fire leaps continuously from its huge 
+D:$form.  The air around it scalds you.  Its slightest glance burns you, and 
+D:$you truly realize how insignificant you are.
+D:それは信じ難たい程の力を持った巨大なドラゴンで、その体からは常に炎
+D:が吹き上がっている。その周りに立ちこめる熱気だけでも冒険者を火傷させるのに
+D:は充分であり、そのほんの一瞥だけでも冒険者を燃え上がらせるには十分だ。
+D:冒険者はこの生物の前では自分がなんと無力であるのかを痛感するだろう。
+
+N:1193:グレート・ヘル・ワイアーム
+E:Great Hell Wyrm
+G:D:r
+I:125:110d50:30:155:10
+W:66:1:0:35000:0:0
+B:CLAW:SUPERHURT:7d12
+B:CLAW:FIRE:22d21
+B:BITE:SUPERHURT:7d12
+B:BITE:FIRE:22d21
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE | SELF_LITE_1
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | SELF_LITE_2
+F:BASH_DOOR | POWERFUL | MOVE_BODY | AURA_FIRE |
+F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_3 | BLIND | CONF | SCARE | BR_FIRE
+D:$It is one of the most powerful and brutal dragons in the world.
+D:$  This breath will burn away your body without leaving any bones!
+D:この世で最も強力で凶悪なドラゴンの一体だ。
+D:その息吹はあなたの身体を骨一本残さず焼き尽くす!
+
+#J0#
+N:1194:アイス・ワイアーム
+E:Great Ice Wyrm
+G:D:w
+I:120:63d50:30:125:20
+W:54:1:0:20000:300000:1195
+B:CLAW:HURT:4d12
+B:CLAW:COLD:12d14
+B:BITE:HURT:4d12
+B:BITE:COLD:12d14
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | AURA_COLD
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD | 
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_4 | BLIND | CONF | SCARE | BR_COLD
+D:$An immense dragon capable of awesome destruction.
+D:$  You have never felt such extreme cold, or witnessed such an icy stare.
+D:$  Begone quickly or feel its wrath!
+D:恐るべき破壊能力を持った巨大なドラゴンだ。このような冷気はかつて感じたこと
+D:がないし、このような冷たい眼差しはかつて見たことがない。
+D:素早く逃げないと恐るべき怒りを呼び覚ましてしまうだろう!
+
+#J0#
+N:1195:グレート・アイス・ワイアーム
+E:Great Ice Wyrm
+G:D:W
+I:125:48d100:30:150:10
+W:64:1:0:30000:0:0
+B:CLAW:SUPERHURT:6d12
+B:CLAW:COLD:21d21
+B:BITE:SUPERHURT:6d12
+B:BITE:COLD:21d21
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | AURA_COLD
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD | 
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_3 | BLIND | CONF | SCARE | BR_COLD
+D:$It is one of the most powerful and brutal dragons in the world.
+D:$  Your body will be freeze-dried on the floor
+D:$ by the breath just by approaching!
+D:この世で最も強力で凶悪なドラゴンの一体だ。
+D:その息吹はあなたが近付いただけでフロアごと氷漬けにしてしまうだろう!
+
+N:1196:ヴェノム・ワイアーム
+E:Venom Wyrm
+G:D:G
+I:120:63d50:30:125:20
+W:54:1:0:20000:300000:1197
+B:CLAW:HURT:4d12
+B:CLAW:POISON:12d14
+B:BITE:HURT:4d12
+B:BITE:POISON:12d14
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE | CAN_FLY
+F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_4 | BLIND | CONF | SCARE | BR_POIS
+D:$A huge dragon of incredible destructive power.  Noxious vapours 
+D:$fill the room near it, leaving you gasping for breath.
+D:$  Free now while you still can!
+D:信じられない程の破壊的な力を持った巨大なドラゴンだ。
+D:有毒な霧が近くの部屋に充満し、ほとんど息ができない。
+D:逃げられるうちに逃げろ!
+
+N:1197:グレート・ヴェノム・ワイアーム
+E:Great Venom Wyrm
+G:D:g
+I:125:48d100:30:150:10
+W:64:1:0:30000:0:0
+B:CLAW:SUPERHURT:6d12
+B:CLAW:POISON:18d19
+B:BITE:SUPERHURT:6d12
+B:BITE:POISON:18d19
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE | CAN_FLY
+F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_3 | BLIND | CONF | SCARE | BR_POIS
+D:$It is one of the most powerful and brutal dragons in the world.
+D:$  If you take a breath,
+D:$ the bereaved will not even be able to approach your body!
+D:この世で最も強力で凶悪なドラゴンの一体だ。
+D:一息でも浴びてしまえば、遺族はあなたの遺体に近付くことすらできなくなる!
+
+N:1198:万色ワイアーム
+E:Wyrm of Many Colours
+G:D:v
+I:120:84d50:40:140:255
+W:60:2:0:28000:0:0
+B:CLAW:HURT:6d11
+B:BITE:HURT:6d11
+B:BUTT:HURT:6d11
+B:CRUSH:HURT:6d11
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | AURA_FIRE | AURA_COLD
+F:ATTR_MULTI | CAN_FLY
+F:IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS | RES_TELE
+F:ONLY_ITEM | DROP_60 | DROP_90
+F:DROP_1D2 | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE 
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | RIDING | SELF_LITE_2
+S:1_IN_4 |
+S:BR_POIS | BR_ELEC | BR_ACID | BR_FIRE | BR_COLD |
+S:CONF | SCARE | BLIND
+D:$A huge dragon whose scales shimmer in myriad hues.
+D:巨大なドラゴンで、その鱗は様々な色に輝いている。
+
+N:1199:グレート・万色ワイアーム
+E:Great Wyrm of Many Colours
+G:D:v
+I:125:65d100:40:170:255
+W:72:2:0:38000:0:0
+B:CLAW:SUPERHURT:7d11
+B:BITE:SUPERHURT:7d11
+B:BUTT:SUPERHURT:7d11
+B:CRUSH:SUPERHURT:7d11
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | AURA_FIRE | AURA_COLD
+F:ATTR_MULTI | CAN_FLY
+F:IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS | RES_TELE
+F:ONLY_ITEM | DROP_60 | DROP_90
+F:DROP_1D2 | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE 
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | RIDING | SELF_LITE_2
+S:1_IN_3 |
+S:BR_POIS | BR_ELEC | BR_ACID | BR_FIRE | BR_COLD |
+S:CONF | SCARE | BLIND
+D:$This dragon is the most powerful and evil being in the world
+D:$ who controls all the power of elements.
+D:$  If you want to live, never try to defeat it!!
+D:元素の力を全て支配している、この世で最も強力かつ邪悪な竜だ。
+D:生きていたいなら決して手を出さないことだ!!
+
+N:1200:幽体ワイアーム
+E:Spectral Wyrm
+G:D:w
+I:130:60d100:40:200:255
+W:77:4:0:35000:0:0
+B:CLAW:HURT:10d12
+B:CLAW:HURT:10d12
+B:CLAW:HURT:10d12
+B:BITE:UN_BONUS:8d8
+F:FORCE_MAXHP | EVIL | UNDEAD | CAN_FLY | AURA_COLD |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | 
+F:POWERFUL | MOVE_BODY | PASS_WALL | INVISIBLE |
+F:DRAGON | NO_CONF | NO_SLEEP | RES_TELE |
+F:IM_POIS | IM_COLD |
+F:RES_NETH | RES_NEXU | RES_DISE | RIDING |
+S:1_IN_3 |
+S:BR_NEXU | BR_NETH | BR_DISE |
+S:S_HI_DRAGON
+S:SCARE | BLINK | SHRIEK
+V:133
+D:$The tortured soul of a once powerful wyrm.
+D:かつて強大な力を誇っていたワイアームの怨霊だ。
+
+#J0#
+N:1201:グレート・クリスタル・ドレイク
+E:Great Crystal Drake
+G:D:B
+I:120:30d90:25:110:30
+W:54:2:0:18000:0:0
+B:CLAW:HURT:9d9
+B:CLAW:HURT:9d9
+B:CLAW:HURT:9d9
+B:BITE:HURT:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | DROP_CORPSE
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | CAN_FLY | ATTR_CLEAR
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | 
+F:EVIL | DRAGON | IM_COLD | NO_CONF | RES_SHAR | NO_SLEEP | RIDING
+S:1_IN_4 | SLOW | CONF | SCARE | BR_SHAR
+D:$A huge crystalline dragon.
+D:$  Its claws could cut you to shreds and its teeth are razor sharp.
+D:$  Strange colours ripple through it as it moves in the light.
+D:巨大な水晶のようなドラゴンだ。冒険者の体をバラバラに切り刻むことができる
+D:爪と、剃刀のように鋭い歯を持っている。
+D:それが動くと光が反射して体中が奇妙な色にきらめく。
+
+N:1202:グレート・ロア・ドレイク
+E:Great Roar Drake
+G:D:o
+I:120:30d90:25:110:30
+W:54:2:0:18000:0:0
+B:CLAW:HURT:8d9
+B:CLAW:HURT:8d9
+B:CLAW:HURT:8d9
+B:BITE:HURT:5d14
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | CAN_FLY
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY
+F:DRAGON | RES_SOUN | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_4 | BLIND | CONF | SCARE | BR_SOUN
+D:$A powerful roaring dragon that breaks the dungeon ceiling
+D:$ and creates new terrain.
+D:ダンジョンの天井を崩し新しい地形を生み出すほどの力強い咆哮を放つドラゴンだ。
+
+N:1203:アルドゥインの尖兵『ミルムルニル』
+E:Mirmulnir, the vanguard of Alduin
+G:d:o
+I:115:30d17:20:80:30
+W:21:3:0:850:0:0
+B:CLAW:HURT:8d2
+B:CLAW:HURT:7d2
+B:BITE:HURT:8d2
+F:UNIQUE | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON | EVIL
+F:ONLY_ITEM | DROP_90 | DROP_1D2 | DROP_GOOD
+F:CAN_FLY | IM_FIRE | HURT_COLD
+F:BASH_DOOR | MOVE_BODY | DRAGON | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_9 | SCARE | BR_FIRE | BA_FIRE
+D:$It is a dragon that has returned from Oblivion.
+D:$  It lightly turns the town guard into a cinder.
+D:冥界から舞い戻ってきたドラゴンの一体だ。
+D:街の衛兵ごときは軽く焼き尽くす。
+
+N:1204:幻影の狩人『サーロクニル』
+E:Sahloknir, the hunter of illusion
+G:d:B
+I:110:30d17:20:80:30
+W:21:3:0:850:0:0
+B:CLAW:HURT:8d2
+B:CLAW:HURT:7d2
+B:BITE:HURT:8d2
+F:UNIQUE | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON | EVIL
+F:ONLY_ITEM | DROP_90 | DROP_1D2 | DROP_GOOD
+F:CAN_FLY | IM_COLD | HURT_FIRE
+F:BASH_DOOR | MOVE_BODY | DRAGON | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_9 | SCARE | BR_COLD | BA_COLD
+D:$It is a dragon that has returned from Oblivion.
+D:$  It lightly turns the town guard into an ice statue.
+D:冥界から舞い戻ってきたドラゴンの一体だ。
+D:街の衛兵ごときは軽く氷像にしてしまう。
+
+N:1205:原初への裏切り『オダハヴィーング』
+E:Odahviing, the betrayer of Alduin
+G:d:s
+I:115:30d40:20:95:30
+W:35:3:0:3500:0:0
+B:CLAW:HURT:8d6
+B:CLAW:HURT:7d6
+B:BITE:HURT:8d6
+F:UNIQUE | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON | EVIL | FRIENDLY
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD | CAN_FLY | FRIENDLY | GOOD
+F:IM_COLD | IM_FIRE | IM_ELEC | RES_SOUN
+F:BASH_DOOR | MOVE_BODY | DRAGON | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_8 | SCARE | BA_ELEC | BR_FIRE | BR_COLD | BR_SOUN
+D:$It has a higher pride than the heavens without leaking to other dragons,
+D:$ and it is a character that can quickly rise to provocation.
+D:他のドラゴンに漏れず天より高いプライドを持ち、挑発にはすぐ乗るタチだ。
+
+N:1206:声の道に仇なすもの『デルフィン』
+E:Delphine, the mortal enemy for the way of the voice
+G:p:u
+I:115:55d20:50:90:20
+W:35:1:0:3500:0:0
+B:SHOOT:HURT:8d8
+B:SLASH:HURT:8d8
+B:SLASH:HURT:9d7
+B:HIT:HURT:10d2
+F:UNIQUE | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON | EVIL | BASH_DOOR
+F:HUMAN | FEMALE | ONLY_ITEM | DROP_90 | DROP_1D2 | DROP_GOOD | NO_SLEEP
+F:IM_FIRE | IM_COLD | IM_ELEC
+S:1_IN_8 | SHOOT | HEAL | CAUSE_3
+D:$There are good dragons in this world.
+D:$  She has both an uncomfortable understanding of that
+D:$ and a strength commensurate with it.
+D:この世には善良なドラゴンもいる。
+D:そのことを理解できない頑迷さと、
+D:その意見を貫き通せるだけの強さを併せ持っている。
+
+N:1207:声の道を導きしもの『パーサーナックス』
+E:Paarthurnax, the guru of the way of the voice
+G:D:y
+I:120:50d45:40:120:5
+W:45:3:0:15000:0:0
+F:UNIQUE | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON | GOOD | FRIENDLY
+F:DROP_4D2 | DROP_GOOD | CAN_FLY | IM_COLD | IM_FIRE | IM_ELEC | RES_SOUN
+F:BASH_DOOR | MOVE_BODY | DRAGON | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_5 | SCARE | BA_ELEC | BR_FIRE | BR_COLD | BR_SOUN
+D:$This dragon exists to counter the evil kins.
+D:$  It is said that the dragon's power can be obtained
+D:$ at the end if strict training is done.
+D:このドラゴンは邪悪なる同族達に対抗するために存在する。
+D:厳しい修行を行えば、その果てにドラゴンの力を手に入れられると伝えられている。
+
+N:1208:冥界の支配者『ダーネヴィール』
+E:Durnehviir, the governor of Soul Cairn
+G:D:v
+I:120:50d60:40:130:5
+W:51:2:0:22000:0:0
+F:UNIQUE | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON | UNDEAD
+F:ONLY_ITEM DROP_60 | DROP_90 | DROP_1D2 | DROP_GOOD | DROP_GREAT
+F:CAN_FLY | FRIENDLY | GOOD | IM_COLD | IM_FIRE | IM_ELEC | RES_SOUN
+F:BASH_DOOR | MOVE_BODY | DRAGON | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_7 | SCARE | BR_FIRE | BR_SOUN | BR_NETH
+D:$  It is a dragon who has been in Oblivion for so long that
+D:$ it has become difficult to maintain his body in this world.
+D:$  It fully acknowledges your ability.
+D:あまりにも永い間冥界にい続けたため、
+D:現世で肉体を保つことが困難になったドラゴンだ。
+D:それはあなたの実力を十分に認めている。
+
+N:1209:世界を喰らうもの『アルドゥイン』
+E:Alduin, the World Eater
+G:D:v
+I:125:70d100:45:150:10
+W:73:2:0:38000:0:0
+F:UNIQUE | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON | ATTR_MULTI
+F:DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT | CAN_FLY | EVIL
+F:DROP_GOOD | CAN_FLY | IM_COLD | IM_FIRE | IM_ELEC | RES_SOUN
+F:BASH_DOOR | MOVE_BODY | DRAGON | NO_CONF | NO_SLEEP | NO_STUN | RIDING
+S:1_IN_3 | SCARE | BLINK | S_KIN | ANIM_DEAD
+S:BR_ELEC | BR_FIRE | BR_COLD | BR_SOUN | BR_WALL | BR_MANA
+D:$The first dragon created in one of the plural worlds.
+D:$  It eats people's souls, destroys everything and destroys all dimensions.
+D:$  It had been sealed for too long, but was finally released.
+D:$  Only you can defeat this terrifying dragon!
+D:多元世界の一つにおいて最初に創造されたドラゴンだ。
+D:人の魂を喰らい、次元を消滅させんばかりにあらゆるものを破壊して回っている。
+D:あまりの強さに長い間封印されていたが、ついに解き放たれてしまった。
+D:この恐るべきドラゴンを討ち滅ぼすことができるのはあなただけだ!
+
+N:1210:ミラークの信者
+E:Follower of Miraak
+G:p:U
+I:120:40d40:40:80:20
+W:50:5:0:1600:0:0
+B:SHOOT:HURT:15d15
+B:HIT:HURT:11d10
+B:HIT:HURT:11d10
+B:INSULT:HURT:11d10
+F:HUMAN | EVIL | DROP_CORPSE | DROP_SKELETON | SMART
+F:IM_FIRE | IM_COLD | IM_ELEC | RES_DARK
+F:NO_SLEEP | NO_CONF | DROP_60
+S:1_IN_5 | SHOOT
+D:$It is one of those who agree with Miraak's corrupt wishes.
+D:$They are relentlessly chasing you as against Mirak's noble will.
+D:ミラークの堕落した願いに賛同している者共の一人だ。
+D:彼らはあなたをミラークの崇高な意志に反する者として執拗に追っている。
+
+N:1211:ミラークの信者
+E:Follower of Miraak
+G:p:u
+I:120:40d40:40:80:20
+W:50:5:0:1600:0:0
+B:HIT:HURT:7d9
+B:HIT:HURT:7d9
+B:INSULT:HURT:7d9
+F:HUMAN | EVIL | DROP_CORPSE | DROP_SKELETON | SMART
+F:IM_FIRE | IM_COLD | IM_ELEC | RES_DARK
+F:NO_SLEEP | NO_CONF | DROP_60
+S:1_IN_2 | BLINK | CONF | HOLD | BA_POIS | BA_FIRE | BA_COLD | BA_ELEC
+D:$It is one of those who agree with Miraak's corrupt wishes.
+D:$They are relentlessly chasing you as against Mirak's noble will.
+D:ミラークの堕落した願いに賛同している者共の一人だ。
+D:彼らはあなたをミラークの崇高な意志に反する者として執拗に追っている。
+
+N:1212:原初の竜殺し『ミラーク』
+E:Miraak, the first Dragon-soul Taker
+G:p:v
+I:125:100d90:45:125:10
+W:73:3:0:39000:0:0
+B:SLASH:UN_BONUS:13d11
+B:HIT:UN_POWER:13d11
+B:SLASH:EXP_VAMP:13d11
+B:HIT:SUPERHURT:10d11
+F:UNIQUE | FORCE_MAXHP | HUMAN | MALE | EVIL | DROP_SKELETON
+F:POWERFUL | SMART | IM_FIRE | IM_COLD | IM_ELEC | RES_CHAO
+F:NO_SLEEP | NO_CONF | BASH_DOOR | KILL_BODY | PASS_WALL
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT
+S:1_IN_3 | TELE_TO | TPORT | HEAL | S_KIN | BA_ELEC | BA_FIRE | BA_COLD
+S:BR_SOUN | BR_DISI
+D:$This man can completely absorb the soul of dragons
+D:$ without giving him time to save the power to revive in Mordor nor Oblivion.
+D:$  Will there ever be a dragon who can not hang its head to him?
+D:この男は、冥界で復活する力を蓄える時間すら与えず
+D:ドラゴンの魂を完全に吸収することができる。
+D:彼の前で頭を垂れないドラゴンが果たしてこの世にいるだろうか?
+
+N:1213:ヴォルキハル城の主『ハルコン』
+E:Harkon, the patriarch of Volkihar castle
+G:V:s
+I:120:70d80:45:120:10
+W:61:2:0:32000:0:0
+B:CRUSH:LOSE_INT:10d11
+B:CRUSH:LOSE_WIS:10d11
+B:SLASH:EXP_VAMP:10d11
+B:SLASH:EXP_VAMP:10d11
+F:UNIQUE | FORCE_MAXHP | UNDEAD | EVIL | DEMON | MALE
+F:DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:HURT_LITE | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS
+F:RES_NETH | RES_DARK | RES_SHAR | NO_SLEEP | NO_CONF
+S:1_IN_4 | TPORT | BA_DARK | S_UNDEAD | S_KIN | S_HI_UNDEAD | HEAL
+D:$A terrifying vampire trying to extinguish the sun's rays from this land.
+D:$  For that purpose, he is also a ruthless man
+D:$ who easily throws away the genus.
+D:太陽の光をこの大地から消しさそろうとしている恐るべき吸血鬼だ。
+D:そのためには眷属をも容易く使い捨てにする、冷酷な男でもある。
+
+N:1214:ドラウグル
+E:Draugr
+G:z:y
+I:110:10d9:15:20:30
+W:8:1:0:25:150:1215
+B:HIT:HURT:1d10
+F:UNDEAD | DROP_CORPSE | HURT_FIRE | HURT_LITE | IM_COLD | IM_POIS | RES_NETH
+F:DROP_60 | FRIENDS
+D:$It is a warrior buried in ancient times.
+D:$  It does not forgive intruders for treasure.
+D:太古に埋葬された戦士だ。財宝を狙う侵入者を容赦しない。
+
+N:1215:ドラウグル・ウォーカー
+E:Draugr walker
+G:z:b
+I:110:13d13:20:35:25
+W:16:1:0:70:450:1216
+B:SHOOT:HURT:7d7
+B:HIT:HURT:2d6
+B:SLASH:HURT:2d6
+F:UNDEAD | EVIL | DROP_CORPSE
+F:HURT_FIRE | HURT_LITE | IM_COLD | IM_POIS | RES_NETH | DROP_90 | FRIENDS
+S:1_IN_9 | SHOOT | BA_COLD
+D:$It is a warrior buried in ancient times.
+D:$  It never forgives intruders for treasure.
+D:太古に埋葬された戦士だ。財宝を狙う侵入者を決して容赦しない。
+
+N:1216:ドラウグル・ワイト
+E:Draugr wight
+G:z:W
+I:110:21d21:25:45:20
+W:29:1:0:140:1200:1217
+B:SHOOT:HURT:8d9
+B:HIT:HURT:5d6
+B:SLASH:HURT:5d6
+B:CRUSH:HURT:5d6
+F:UNDEAD | EVIL | DROP_CORPSE
+F:HURT_LITE | IM_COLD | IM_POIS | RES_NETH | DROP_90 | FRIENDS
+S:1_IN_8 | SHOOT | BA_COLD
+D:$This warrior has continued to protect the tomb for a long time.
+D:$  You may also be a dependent!
+D:この戦士は墳墓を延々と守り続けている。あなたも眷属にされるかもしれない!
+
+N:1217:ドラウグル・スカージ
+E:Draugr scourge
+G:z:B
+I:115:25d25:30:55:15
+W:35:1:0:400:2500:1218
+B:SHOOT:HURT:10d9
+B:HIT:HURT:8d6
+B:SLASH:HURT:8d6
+B:CRUSH:HURT:8d6
+F:UNDEAD | EVIL | DROP_CORPSE | HURT_LITE | IM_COLD | IM_POIS | RES_NETH
+F:DROP_90 | DROP_1D2 | ONLY_ITEM | FRIENDS | BASH_DOOR
+S:1_IN_6 | SHOOT | SCARE | BA_COLD | BR_COLD | BR_SOUN
+D:$It is a draugr that has acquired a unique cry.
+D:$  It informs the surroundings of the existence of an intruder.
+D:独特の叫びを会得したドラウグルだ。それは侵入者の存在を周囲に知らせる。
+
+N:1218:ドラウグル・デスロード
+E:Draugr deathlord
+G:z:D
+I:120:21d50:40:80:10
+W:42:1:0:3200:0:0
+B:SHOOT:SUPERHURT:12d12
+B:HIT:SUPERHURT:8d9
+B:SLASH:SUPERHURT:8d9
+B:CRUSH:SUPERHURT:8d9
+F:FORCE_MAXHP | UNDEAD | EVIL | ESCORT | DROP_CORPSE
+F:NO_CONF | BASH_DOOR | MOVE_BODY
+F:HURT_LITE | IM_COLD | IM_POIS | RES_NETH | DROP_2D2 | ONLY_ITEM
+S:1_IN_5 | SHOOT | SCARE | BA_COLD | BR_COLD | BR_SOUN | S_UNDEAD
+D:$It is a warrior buried in ancient times.
+D:$  It oversees the draugrs and closely watches the intruders.
+D:太古に埋葬された戦士だ。
+D:それはドラウグル達を統括し、侵入者を注意深く見守っている。
+
+N:1219:ドラウグル・デス・オーバーロード
+E:Draugr death overload
+G:z:r
+I:120:100d26:50:90:10
+W:51:3:0:13000:0:0
+B:SHOOT:SUPERHURT:15d15
+B:HIT:SUPERHURT:15:d13
+B:SLASH:SUPERHURT:15d13
+B:CRUSH:SUPERHURT:15d13
+F:NAZGUL | FORCE_MAXHP | EVIL | UNDEAD | NO_SLEEP | NO_CONF
+F:ESCORT | ESCORTS | BASH_DOOR | MOVE_BODY
+F:IM_COLD | IM_POIS | RES_NETH | RES_TELE | NO_CONF
+F:DROP_90 | DROP_3D2 | DROP_GOOD | ONLY_ITEM | DROP_CORPSE
+S:1_IN_5 | SHOOT | SCARE | HOLD | BA_POIS | BA_COLD | BR_COLD | BR_SOUN
+S:S_UNDEAD | S_KIN
+D:$It is the strongest warrior on top of all draugrs.
+D:$  They are very few buried in the world.
+D:あらゆるドラウグル達の上位に立つ最強の戦士だ。
+D:世界でも埋葬された数はごく少ない。
+
+N:1220:殺人スカラベ
+E:Killer scarab
+G:K:G
+I:120:10d69:25:70:20
+W:40:1:0:350:0:0
+B:CRUSH:HURT:3d12
+B:KICK:HURT:4d12
+F:WEIRD_MIND | ANIMAL | BASH_DOOR | DROP_60 | FRIENDS | DROP_CORPSE
+F:RES_DARK | RES_NETH
+D:$It will keep you rolling to hell!
+D:それはあなたを地獄まで転がしつつけるだろう!
+
+N:1221:太古の大神官『イムホテップ』
+E:Imhotep, the great ancient priest
+G:z:v
+I:120:30d70:30:80:30
+W:43:2:0:14000:0:0
+B:HIT:EXP_VAMP:6d9
+B:CLAW:DISEASE:6d9
+B:BITE:HURT:9d9
+B:INSULT:LOSE_CHR:6d9
+F:UNIQUE | FORCE_MAXHP | EVIL | UNDEAD | MALE | DROP_SKELETON
+F:IM_COLD | IM_POIS | RES_DARK | RES_NETH
+F:HURT_LITE | NO_SLEEP | NO_CONF | DROP_3D2 | DROP_GOOD
+S:1_IN_6 | HOLD | CONF | S_KIN | MIND_BLAST | S_UNDEAD
+S:BA_POIS | BA_DARK | BA_NETH
+D:$He assassinated his king.
+D:$  After that, he tried to plunder the mistress but failed.
+D:$  He could not even bring her back from the Netherworld,
+D:$ and its eyes are burning with resentment.
+D:彼は王を暗殺した。その後王の愛人を略奪しようとしたが失敗した。
+D:冥府から彼女を呼び戻すこともままならず、その瞳は恨みに燃えている。
+
+N:1222:ファルメル
+E:Falmer
+G:h:o
+I:110:11d11:1:15:50
+W:8:2:0:32:0:0
+B:HIT:POISON:5d5
+F:EVIL | FRIENDS | DROP_CORPSE | DROP_SKELETON | DROP_90
+F:IM_POIS | RES_LITE | RES_DARK | BASH_DOOR
+D:$It is the fallen descendant of the snow elf.
+D:$  It is blind but good ears.
+D:スノーエルフの堕落した末裔だ。目は見えないがとても耳が利く。
+
+N:1223:ファルメル・スクルカー
+E:Falmer skulker
+G:h:U
+I:110:21d13:5:45:50
+W:21:2:0:350:2100:1228
+B:SHOOT:HURT:8d9
+B:HIT:POISON:11d7
+F:EVIL | FRIENDS | DROP_CORPSE | DROP_SKELETON | DROP_90
+F:IM_POIS | RES_LITE | RES_DARK | BASH_DOOR
+S:1_IN_8 | SHOOT | BA_POIS
+D:$A falmer whose body is covered with a chaurus shell.
+D:$  It is blind and does not shrug in the light.
+D:シャウラスの殻で身体を覆ったファルメルだ。
+D:目が見えないので光に身をすくめることもない。
+
+N:1224:ファルメル・グルームルーカー
+E:Falmer gloomlurker
+G:h:u
+I:115:31d31:10:65:50
+W:36:2:0:1400:10000:1229
+B:SHOOT:HURT:13d9
+B:SLASH:POISON:9d9
+B:SLASH:POISON:9d7
+F:EVIL | FRIENDS | DROP_CORPSE | DROP_SKELETON | DROP_90 | ONLY_ITEM
+F:IM_POIS | RES_LITE | RES_DARK | BASH_DOOR
+S:1_IN_7 | SHOOT | BA_POIS | BR_POIS | CONF | HOLD
+D:$A falmel holding a sword and shield made of chaurus shell.
+D:シャウラスの殻でできた剣と盾を手にしたファルメルだ。
+
+N:1225:ファルメル・ナイトプロウラー
+E:Falmer nightprowler
+G:h:B
+I:120:50d49:10:85:50
+W:46:2:0:4200:35000:1230
+B:SHOOT:HURT:15d11
+B:SLASH:POISON:14d12
+B:SLASH:POISON:12d10
+B:SLASH:POISON:12d10
+F:EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_90 | DROP_1D2 | ONLY_ITEM | IM_POIS | RES_LITE | RES_DARK
+S:1_IN_7 | SHOOT | BA_POIS | BR_POIS | CONF | HOLD
+D:$A well-trained falmer heavy warrior.
+D:鍛え上げたファルメルの重戦士だ。
+
+N:1226:ファルメル・シャドウマスター
+E:Falmer shadowmaster
+G:h:s
+I:120:75d49:10:100:50
+W:52:2:0:10000:140000:1231
+B:SHOOT:HURT:18d11
+B:SLASH:POISON:16d13
+B:SLASH:POISON:14d11
+B:SLASH:POISON:14d11
+F:EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_1D2 | DROP_2D2 | ONLY_ITEM | IM_POIS | RES_LITE | RES_DARK
+S:1_IN_6 | SHOOT | BA_ELEC | BA_POIS | BR_POIS | CONF | HOLD
+D:$A falmer who even wore magic.
+D:$  You had better stay away from the detour.
+D:魔術すら身に着けたファルメルだ。迂闊には近寄らない方がいい。
+
+N:1227:ファルメル・ウォーモンガー
+E:Falmer warmonger
+G:h:R
+I:120:100d49:10:120:50
+W:60:2:0:18000:0:1232
+B:SHOOT:HURT:21d11
+B:SLASH:POISON:17d16
+B:SLASH:POISON:17d11
+B:SLASH:POISON:17d11
+F:EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_2D2 | DROP_3D2 | ONLY_ITEM | IM_POIS | RES_LITE | RES_DARK
+S:1_IN_6 | SHOOT | BA_ELEC | BA_POIS | BR_POIS | CONF | HOLD
+D:$It is the strongest falmer among general soldiers.
+D:一般兵士の中では最強のファルメルだ。
+
+N:1228:グレーター・ファルメル・スクルカー
+E:Greater falmer skulker
+G:h:W
+I:115:22d22:15:70:50
+W:25:3:0:700:0:0
+B:SHOOT:HURT:11d9
+B:SLASH:POISON:14d10
+F:FORCE_MAXHP | EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_60 | DROP_90 | DROP_1D2 | ONLY_ITEM | ESCORT
+F:SMART | POWERFUL | IM_POIS | RES_LITE | RES_DARK
+S:1_IN_8 | SHOOT | BA_ELEC | BA_POIS | BR_POIS | CONF | HOLD | S_KIN
+D:$Falmer's nose sniffs any adventurer's nose.
+D:ファルメルの鼻はどんな冒険者の匂いも嗅ぎ分ける。
+
+N:1229:グレーター・ファルメル・グルームルーカー
+E:Greater falmer gloomlurker
+G:h:b
+I:120:31d28:15:95:50
+W:41:3:0:1700:0:0
+B:SHOOT:HURT:13d11
+B:SLASH:POISON:12d10
+B:SLASH:POISON:11d10
+F:FORCE_MAXHP | EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_60 | DROP_90 | DROP_2D2 | ONLY_ITEM | ESCORT
+F:IM_POIS | RES_LITE | RES_DARK
+S:1_IN_6 | SHOOT | BA_ELEC | BA_POIS | BR_POIS | CONF | HOLD
+D:$It has a lot of treasure, but it would be a foolish idea to go hunting.
+D:それは財宝をいくつも抱えているが、探りに行くのは愚策だろう。
+
+N:1230:グレーター・ファルメル・ナイトプロウラー
+E:Greater falmer nightprowler
+G:h:W
+I:120:55d40:15:120:50
+W:51:3:0:10000:0:0
+B:SHOOT:HURT:15d13
+B:SLASH:POISON:17d11
+B:SLASH:POISON:15d11
+B:SLASH:POISON:13d11
+F:FORCE_MAXHP | EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_60 | DROP_90 | DROP_3D2 | ONLY_ITEM | ESCORT
+F:IM_POIS | RES_LITE | RES_DARK
+S:1_IN_5 | SHOOT | BA_ELEC | BA_POIS | BR_POIS | CONF | HOLD
+D:$It's finally dangerous falmer.
+D:$  Be careful not to chop it with a poisonous blade!
+D:いよいよ危険なファルメルだ。毒の刃で切り刻まれないように気をつけろ!
+
+N:1231:グレーター・ファルメル・シャドウマスター
+E:Greater falmer shadowmaster
+G:h:r
+I:120:70d40:15:130:50
+W:59:3:0:18000:0:0
+B:SHOOT:HURT:20d15
+B:SLASH:POISON:22d11
+B:SLASH:POISON:20d11
+B:SLASH:POISON:18d11
+F:FORCE_MAXHP | EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_3D2 | DROP_4D2 | ONLY_ITEM | ESCORT
+F:IM_POIS | RES_LITE | RES_DARK
+S:1_IN_4 | SHOOT | BA_ELEC | BA_POIS | BR_POIS | CONF | HOLD
+D:$It's an extremely dangerous falmer.
+D:$ In exchange for visibility, a powerful blow is delivered.
+D:極めて危険なファルメルの一体だ。視界と引き換えに強烈な一撃を繰り出してくる。
+
+N:1232:グレーター・ファルメル・ウォーモンガー
+E:Greater falmer warmonger
+G:h:v
+I:125:70d55:15:150:50
+W:68:3:0:27000:0:0
+B:SHOOT:HURT:21d17
+B:SLASH:POISON:25d11
+B:SLASH:POISON:23d11
+B:SLASH:POISON:21d11
+F:FORCE_MAXHP | EVIL | DROP_CORPSE | DROP_SKELETON | BASH_DOOR
+F:DROP_2D2 | DROP_3D2 | DROP_4D2 | ONLY_ITEM | ESCORT
+F:IM_POIS | RES_LITE | RES_DARK
+S:1_IN_3 | SHOOT | BA_ELEC | BA_POIS | BR_POIS | CONF | HOLD
+D:$It is the strongest falmer with many genus.
+D:$  It will be shredded before it gets closer!
+D:数多の眷属を抱える最強のファルメルだ。近づく前に細切れにされてしまうだろう!
+
+N:1233:シャウラス
+E:Chaurus
+G:c:D
+I:115:15d13:40:50:15
+W:18:1:0:100:450:1235
+B:BITE:HURT:1d13
+B:STING:HURT:1d13
+F:EVIL | ANIMAL | DROP_CORPSE | BASH_DOOR | DROP_60 | FRIENDS
+F:IM_POIS | RES_DARK
+D:$It is about the size of a human and is covered with crustaceans.
+D:それは人ほどの大きさを誇り、甲殻に覆われている。
+
+N:1234:シャウラス・リーパー
+E:Chaurus reaper
+G:c:s
+I:120:30d25:40:80:15
+W:33:1:0:500:0:0
+B:BITE:HURT:3d13
+B:STING:HURT:3d13
+F:EVIL | ANIMAL | DROP_CORPSE | BASH_DOOR | DROP_90 | FRIENDS
+F:IM_POIS | RES_DARK
+D:$It is large enough to easily exceed humans
+D:$ and is covered with an extremely hard crustacean.
+D:それは人を軽く超えるほどの大きさを誇り、極めて硬い甲殻に覆われている。
+
+N:1235:シャウラス・ハンターの幼体
+E:Chaurus hunter fledgling
+G:F:G
+I:115:21d15:40:55:15
+W:23:1:0:150:650:1236
+B:BITE:HURT:4d11
+B:STING:HURT:4d11
+F:EVIL | ANIMAL | DROP_CORPSE | BASH_DOOR | DROP_1D2 | FRIENDS
+F:IM_POIS | RES_DARK
+D:$It still has a small body, but it can easily prey on adventurers.
+D:それはまだ小さい体躯をしているが、冒険者を容易に捕食できる。
+
+N:1236:シャウラス・ハンター
+E:Chaurus hunter
+G:F:g
+I:120:38d29:40:70:15
+W:37:1:0:1200:0:0
+B:BITE:HURT:4d10
+B:STING:HURT:4d10
+B:CRUSH:HURT:4d10
+F:EVIL | ANIMAL | DROP_CORPSE | BASH_DOOR | DROP_90 | DROP_1D2 | FRIENDS
+F:IM_POIS | RES_DARK
+D:$It is Chaurus who has grown into a human-like body.
+D:$  It is often seen that they are kept in falmer.
+D:人間並みの身体に成長したシャウラスだ。
+D:ファルメルに飼われている姿をよく見かける。
+
+N:1237:バーゲスト
+E:Barghest
+G:C:G
+I:115:25d23:30:45:15
+W:23:1:0:350:0:0
+B:BITE:FIRE:6d5
+B:BITE:FIRE:6d5
+B:CLAW:FIRE:6d5
+F:EVIL | ANIMAL | UNDEAD | DROP_CORPSE
+F:DROP_90 | FRIENDS | IM_FIRE | RES_NETH | RES_DARK
+S:1_IN_8 | BR_FIRE | SCARE
+D:$It's the end of the pathetic dogs whose souls were reaped by people's malice
+D:$ in the middle of the night.
+D:人々の悪意によって真夜中に魂を刈り取られた哀れな犬達の末路だ。
+
+# Here is Wisdom.
+N:1238:悪意の具現『ヘルハウンド』
+E:Hellhound, the Beast
+I:120:30d30:30:70:15
+G:C:R
+W:29:2:0:1200:0:0
+B:BITE:FIRE:12d11
+B:CLAW:FIRE:12d11
+B:CRUSH:SUPERHURT:40d1
+F:UNIQUE | FORCE_MAXHP | EVIL | ANIMAL | UNDEAD | DROP_CORPSE
+F:DROP_2D2 | DROP_GOOD | IM_FIRE | RES_NETH | RES_DARK
+R:1237:13d9
+S:1_IN_5 | S_KIN | BR_FIRE | SCARE | HOLD
+D:$This evil dog wasn't born out of nothing.
+D:$  The illusions created by people's selfishness
+D:$ and fear turned their fangs at people themselves!
+D:この悪しき犬は何もないところから生まれたのではない。
+D:人々の私欲と恐怖が生み出した幻影は、彼ら自身に牙を向けたのだ!
+
+N:1239:惑星生命体『ソラリス』
+E:Solaris, the planet life
+G:j:G
+I:120:50d40:50:90:5
+W:42:1:0:6000:0:0
+B:CRAWL:HURT:13d11
+B:ENGULF:HURT:13d11
+B:GAZE:HURT:13d11
+B:TOUCH:HURT:13d11
+F:UNIQUE | FORCE_MAXHP | NONLIVING | QUANTUM | DROP_2D2 | DROP_GOOD | DROP_GREAT
+F:IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS | RES_LITE | RES_DARK
+F:RES_NEXU | RES_CHAO | RES_DISE | RES_SHAR | RES_WATE | RES_TIME | RES_NETH
+F:RES_SOUN | RES_TELE | WEIRD_MIND | PASS_WALL
+F:SHAPECHANGER | ATTR_MULTI | NO_CONF | NO_SLEEP | NO_STUN | NO_FEAR
+S:1_IN_5 | BR_LITE | BR_GRAV | BR_INER | BR_WALL | BR_NEXU
+S:HASTE | SLOW | MIND_BLAST | BRAIN_SMASH | BLINK | FORGET | DISPEL
+S:TELE_TO | TELE_AWAY
+D:$Communication with the adventurer is not established properly.
+D:それとは冒険者とのコミュニケーションがまともに成立しない。
+
+N:1240:ソードマスター『ヤマト』
+E:Yamato, the sword master
+G:p:s
+I:110:25d12:15:40:20
+W:15:1:0:350:0:0
+B:SLASH:HURT:2d11
+B:CRUSH:HURT:1d13
+F:UNIQUE | FORCE_MAXHP | HUMAN | GOOD | NO_FEAR | CAN_SPEAK
+F:ONLY_ITEM | DROP_4D2
+D:$Hey, girlfriend came to me...
+D:$ (inciting words in Monthly Choi Yong Soo; issue number is unknown)
+D:彼女ができました…(「月刊チェヨンス」アオリ文、号不明)
+
+N:1241:グレート・ドラコリッチ
+E:Greater Dracolich
+G:D:b
+I:120:28d100:25:120:30
+W:52:3:0:23000:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:EXP_80:3d6
+B:BITE:EXP_VAMP:3d6
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | COLD_BLOOD | EVIL | DRAGON | UNDEAD
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY
+F:IM_COLD | IM_POIS | RES_NETH | RES_DARK | RES_TELE
+F:NO_CONF | NO_SLEEP | RIDING
+S:1_IN_6 | CONF | SCARE | BR_COLD | BR_DARK | BR_NETH
+D:$The skeletal form of a once-great dragon, enchanted by magic most 
+D:$perilous.  Its animated form strikes with speed and drains life from its 
+D:$prey to satisfy its hunger.
+D:古代の偉大なドラゴンの骸骨に、最も危険な魔法によって生命を吹き込んだものだ。
+D:餌食に素早い一撃を食らわせ、その生命を吸い取っては空腹を満たしている。
+
+N:1242:グレート・ドラコリスク
+E:Greater Dracolisk
+G:D:r
+I:120:28d100:25:120:30
+W:52:3:0:23000:0:0
+B:BITE:HURT:5d12
+B:BITE:HURT:5d12
+B:BITE:HURT:8d8
+B:GAZE:PARALYZE
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR | ANIMAL | EVIL | DRAGON
+F:IM_FIRE | IM_POIS | RES_NETH | RES_TELE | NO_CONF | NO_SLEEP | RIDING
+S:1_IN_6 | HOLD | SCARE | BR_FIRE | BR_POIS | BR_NETH
+D:$A mixture of dragon and basilisk, the dracolisk stares at you with deep 
+D:$piercing eyes, its evil breath burning the ground where it stands.
+D:ドラゴンとバジリスクの混血であるドラコリスクは、深く突き刺すような
+D:視線で冒険者を睨みつける。その邪悪なブレスは、自分の足下の大地ですら燃え上
+D:がらせる。
+
+N:1243:巨大バジリスク
+E:Greater basilisk
+G:R:D
+I:120:75d30:25:100:15
+W:50:2:0:11000:0:0
+B:GAZE:PARALYZE
+B:BITE:HURT:5d12
+B:BITE:HURT:5d12
+B:BITE:HURT:5d12
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | POWERFUL | FORCE_MAXHP |
+F:OPEN_DOOR | BASH_DOOR | EVIL | IM_POIS | RES_DARK | DROP_CORPSE
+F:ANIMAL | NO_CONF | NO_SLEEP | CAN_SWIM | RIDING
+S:1_IN_6 | BR_POIS | BR_DARK | BR_NETH
+D:$An extra large basilisk, whose shape resembles that of a wyrm.
+D:巨大なバジリスクで、ワイアームに似た姿をしている。
+
+N:1244:地獄の公爵
+E:Duke of hell
+G:U:u
+I:110:150d12:10:130:40
+W:43:3:0:6000:0:0
+B:CLAW:HURT:11d2
+B:CLAW:HURT:11d2
+B:CLAW:HURT:22d1
+F:IM_POIS | OPEN_DOOR | BASH_DOOR | MALE | RES_PLAS | NONLIVING |
+F:IM_FIRE | NO_CONF | NO_SLEEP | EVIL | DEMON | FORCE_MAXHP | RES_TELE
+S:1_IN_2 | BO_PLAS
+D:$A major demon lord with a goat's head, tough to kill.
+D:山羊の頭を持つ高位の魔王で、簡単には倒せない。
+
+N:1245:エッヂ
+E:Chromium edge
+G:e:b
+I:140:20d20:25:0:1
+W:50:1:0:1500:0:0
+B:SLASH:HURT:20d1
+B:SLASH:HURT:20d1
+B:SLASH:HURT:20d1
+B:SLASH:HURT:20d1
+F:RAND_25 | SMART | REFLECTING | FORCE_SLEEP | CAN_SPEAK
+F:REGENERATE | AURA_ELEC | BASH_DOOR | EVIL
+F:NONLIVING | IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS
+F:RES_LITE | RES_DARK | RES_NETH | RES_WATE | RES_PLAS | RES_SHAR | RES_SOUN
+F:RES_CHAO | RES_DISE | RES_WALL | RES_INER | RES_TIME | RES_GRAV | RES_TELE
+F:NO_FEAR | NO_STUN | NO_CONF | NO_SLEEP | CAN_FLY
+S:1_IN_3 | BLINK | HOLD | BLIND | CONF | SCARE
+D:$Bull Gates' new ultimate weapon.
+D:$  It has been eerily enhanced from Internet Exploder
+D:$ with a great deal of help from the world-dominant conglomerates.
+D:ブル・ゲイツの新たなる究極兵器だ。
+D:それは世界を牛耳るコングロマリットから多額の援助を得て、
+D:インターネット・エクスプローダーから不気味なまでに強化されている。
+
+# phorn = (phone + horn) / 2
+N:1246:アイ・ホーン
+E:Eye phorn
+G:e:o
+I:110:20d20:25:0:1
+W:50:1:0:1500:0:0
+B:GAZE:PARALYZE:5d5
+B:TOUCH:TERRIFY:5d5
+B:SPIT:CONFUSE:5d5
+B:SHOW:BLIND:5d5
+F:SMART | FRIENDS | FORCE_SLEEP
+F:IM_POIS | RES_SOUN | RES_PLAS | RES_LITE | RES_DARK | RES_NETH
+F:NO_FEAR | NO_STUN | NO_CONF | NO_SLEEP
+S:1_IN_5 | BR_SOUN | BR_PLAS
+D:$It is the supreme weapon manufactured by Jobz in response to the plan
+D:$ to conquer the world by Bull Gates' weapon "Internet Exploder".
+D:$  It counters their evil desires with loud noises
+D:$ and electromagnetic waves that cause all electronic devices to malfunction.
+D:ブル・ゲイツの究極兵器「インターネット・エクスプローダー」による
+D:世界征服計画に対抗してジョーブツが製造した至高の兵器だ。
+D:それはけたたましい音と、あらゆる電子機器を誤動作させる電磁波で
+D:彼らの邪悪な欲望に対抗している。
+
+# Jobz (成仏: Joubutsu) means 'going to heaven' and 'attaining Buddhahood'.
+# Bull Gates is evil so he is evil also.
+N:1247:ゲイツの宿敵『スティーヴン・ジョーブツ』
+E:Steven Jobz, the rival of Gates
+G:p:s
+I:140:25d100:40:90:0
+W:52:5:0:20000:0:0
+B:INSULT:SUPERHURT:10d10
+B:INSULT:SUPERHURT:10d10
+B:INSULT:SUPERHURT:10d10
+B:INSULT:SUPERHURT:10d10
+F:UNIQUE | FORCE_MAXHP | HUMAN | MALE | UNDEAD | HAS_LITE_1
+F:KILL_BODY | BASH_DOOR | CAN_SPEAK
+F:IM_ACID | RES_NETH | RES_NEXU | RES_CHAO
+S:1_IN_5 | BA_ACID |  BA_ELEC | BA_POIS | BA_CHAO | BA_NETH
+S:S_KIN | BLIND | SCARE | CONF
+D:$This devout Buddhist created every information apples
+D:$ with LSD's inspiration.
+D:$His obsession was terrifying and he sought too much perfection,
+D:$ so he had fired too many employees.
+D:この敬虔な仏教徒は幻覚によるインスピレーションで
+D:あらゆる品種のリンゴを作り上げた。
+D:彼の執念は凄まじく、完璧を求めるがあまり組織が機能不全に陥ることがあった。
+
+N:1248:エキドナの長子『オルトロス』
+E:Orthus, Firstborn of Echidna
+G:C:D
+I:130:100d101:100:165:15
+W:85:1:0:41000:0:0
+B:BITE:HURT:15d15
+B:BITE:HURT:15d15
+B:BITE:POISON:15d15
+F:UNIQUE | MALE | RES_TELE |
+F:BASH_DOOR | DROP_CORPSE | DROP_SKELETON | ANIMAL
+F:FORCE_SLEEP | FORCE_MAXHP | NO_CONF | NO_SLEEP
+F:DROP_4D2 | DROP_1D2 | DROP_GOOD | DROP_60 | DROP_90 | ONLY_ITEM |
+F:EVIL | IM_COLD | IM_ACID | IM_ELEC | IM_FIRE
+S:1_IN_4 |
+S:BR_NETH | S_MONSTERS | S_DEMON | S_HOUND | SCARE
+D:$A two-headed hound with snake tail. He is firstborn of Echidna, father of Sphinx and Lion of Namea, 
+D:$ and deity head the male line in clan. Hades' vassals respond to his call.
+D:2つ首と蛇の尾を持つ猟犬だ。彼はエキドナの長子であり、
+D:スフィンクスとネメアのライオンの父たる一族の男系筆頭の魔神だ。
+D:彼が呼びかければハデスの家臣も応える。
+
+N:1249:『リュキアのキマイラ』
+E:The Lycian Chimaera
+G:H:U
+I:125:45d70:20:200:20
+W:65:2:0:20000:0:0
+B:BITE:FIRE:12d6
+B:BUTT:HURT:12d6
+B:BITE:POISON:8d6
+F:UNIQUE
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | DROP_CORPSE | RIDING |
+F:DROP_3D2 | DROP_4D2
+F:OPEN_DOOR | BASH_DOOR | KILL_BODY | POWERFUL | CAN_FLY
+F:ANIMAL | EVIL | IM_FIRE | IM_POIS | IM_COLD | IM_ACID
+F:NO_CONF | NO_SLEEP | RIDING | ESCORT | ATTR_MULTI
+S:1_IN_4
+S:SCARE
+S:BR_FIRE | BR_POIS | BR_CONF | BR_CHAO | BR_NEXU
+S:S_KIN
+R:354:4d7
+R:884:4d7
+R:1250:4d7
+D:$A massive legendary chimera.  She has powerful lion, goat, snake heads.
+D:$ This chaotic female monster is the ancestor of chimera.
+D:$ She's wants to give birth to more powerful offspring by eating you.
+D:巨大な伝説的キメラだ。彼女は力に満ちあふれた牡獅子、山羊、蛇の首を持っている。
+D:このキメラの祖である混沌の女怪はあなたを食べることで
+D:より強力な仔を産もうとしている。
+
+N:1250:可燃性ガス
+E:Flammable gas
+G:#:o
+I:90:3d3:20:37:30
+W:30:4:0:15:0:0
+B:TOUCH:POISON:1d3
+B:EXPLODE:FIRE:7d8
+F:RAND_25 | RAND_50 | INVISIBLE | MULTIPLY | HURT_FIRE
+F:CAN_FLY | CAN_SWIM | PASS_WALL | KILL_BODY
+F:NONLIVING | EMPTY_MIND | COLD_BLOOD | WILD_VOLCANO | WILD_SWAMP
+F:NO_FEAR | NO_CONF | NO_SLEEP | NO_STUN
+D:$It explodes when shocked.
+D:それは衝撃を与えると爆発する。
+
+N:1251:ギンザメ
+E:Chimaera
+G:l:W
+I:120:6d10:20:45:20
+W:5:2:0:30:0:0
+B:BITE:HURT:2d5
+B:STING:POISON:2d3
+F:AQUATIC | ANIMAL | WILD_ALL | RES_WATE
+D:$This fish is also known as ghost shark, and named after hybrid monster
+D:$ due to its patchwark-like appearance.
+D:$ It has poson needle.
+D:この魚は英語ではキマイラと言い、継ぎ接ぎめいた姿から合成魔獣の名を付けられた。
+D:それは毒針を持っている。
+
+N:1252:ランゴスタ
+E:Vespoid
+G:I:U
+I:125:50d3:10:15:20
+W:17:2:0:50:0:0
+B:STING:PARALYZE:3d3
+B:CRUSH:PARALYZE:3d4
+F:FORCE_SLEEP | ANIMAL | IM_ACID | IM_ELEC | HURT_FIRE | WEIRD_MIND
+F:CAN_FLY | RAND_25 | NO_FEAR | ONLY_ITEM | DROP_60 | DROP_CORPSE
+D:$A bee-like insect that has become huge due to mutation.
+D:$  It has a paralytic stinger on the abdomen.
+D:突然変異で巨大化した蜂の様な虫。腹部にマヒ性の毒針を持つ。 
+
+N:1253:女王虫『クイーンランゴスタ』
+E:Vespoid Queen
+G:I:u
+I:124:120d10:10:80:20
+W:28:4:0:1000:0:0
+B:STING:PARALYZE:3d10
+B:STING:PARALYZE:3d10
+B:CRUSH:SUPERHURT:3d12
+S:1_IN_4 | SHRIEK | S_KIN | BR_ACID
+F:UNIQUE | FEMALE | ANIMAL | FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | RAND_25
+F:ONLY_ITEM | DROP_60 | DROP_1D2 | DROP_GOOD | DROP_CORPSE |
+F:BASH_DOOR | IM_ACID | IM_ELEC | HURT_FIRE | WEIRD_MIND | NO_FEAR
+R:1252:5d5
+D:$The Queen of vespoid, featuring a huge abdomen and bright wings.
+D:$  Command the subordinate vespoid
+D: with a peculiar flight and attack the intruder.
+D:$  The abdominal sting is also very well developed,
+D:$ and in addition to neurological poisons,
+D:$ it may also inject acidic fluids towards its prey.
+D:巨大な腹部と鮮やかな大羽を特徴とするランゴスタの女王。
+D:配下のランゴスタに特異な飛行で命令を行い、侵入者を襲う。
+D:腹部の毒針も非常に発達しており、神経性の毒の他、
+D:酸性の体液を獲物に向けて噴射することもある。
+
+N:1254:踊る道化師『ペニーワイズ』
+E:Pennywise, the dancing clown
+G:S:o
+I:120:10d12:20:70:50
+W:32:3:0:1500:0:0
+B:GAZE:TERRIFY:4d5
+B:GAZE:TERRIFY:4d5
+B:SHOW:LOSE_INT
+B:TOUCH:EAT_ITEM
+F:UNIQUE | CAN_SPEAK | FORCE_MAXHP | FORCE_SLEEP
+F:SHAPECHANGER | ATTR_MULTI | ATTR_ANY | SELF_LITE_1
+F:EVIL | DEMON | CAN_SWIM | OPEN_DOOR
+F:NO_FEAR | NO_SLEEP | WEIRD_MIND | ELDRITCH_HORROR | MOVE_BODY
+F:DROP_CORPSE | DROP_SKELETON | DROP_1D2 | DROP_GREAT
+F:IM_POIS | RES_DARK | RES_CHAO | SMART | NO_CONF
+S:1_IN_3 | BR_CONF | CAUSE_3 | MIND_BLAST | S_SPIDER
+S:FORGET | SCARE | BLINK | CONF | DARKNESS
+D:$"Don't you want balloon?"
+D:$  An unknown life form that can transform into a fearful one.
+D:$  The appearance of the clown is just one of them.
+D:$  When you are dragged down, you float too.
+D:「風船、欲しいだろう?」
+D: 相手が恐怖心を抱くものに姿を変えることができる未知の生命体だ。
+D:ピエロの姿もその一つに過ぎない。
+D:それに下に引きずり込まれるとあなたもプカプカ浮かぶ。
index 3366c1a..6b64dbe 100644 (file)
@@ -52,5 +52,8 @@ points at himself and shouts, 'I finished my life with no regrets!'
 N:1063:lousy, the King of louses
 says, 'Ah, Hengband is too difficult!'
 
+N:1240:Yamato, the sword master
+Believe that Yamato's bravery will save the world...!  Thank you for reading!
+
 N:*:Default
 shouts, 'AAAARRRGGGHHH!!!'
index 786957c..4b70c99 100644 (file)
@@ -73,5 +73,8 @@ N:1106:光の堕天使『エミリオ・ミハイロフ』
 N:1123:巴流『葦名弦一郎』
 「あし…な……」
 
+N:1240:ソードマスター『ヤマト』
+「ヤマトの勇気が世界を救うと信じて…! ご愛読ありがとうございました! 」
+
 N:*:Default
 「グアァァァ!」
index f369ac5..05ef524 100644 (file)
@@ -712,6 +712,27 @@ says, 'Don't look me as I was a louse!'
 says, 'Here a louse.'
 says, 'Die. Die. Damn thing is strong!'
 
+# Some sentences are out of order
+# because the typographical error is the original story.
+# ex. meatred is typo of hatred
+N:1240:Yamato, the sword master
+says, 'I don't forgive only pants ...!'
+says, 'My meatred never disappears!'
+says, 'I'm Potato!'
+says, 'I'll show you my new technarmpit!'
+says, 'Masoppu'
+says, 'Dammmmmn ittttttt!'
+says, 'New technique; sonic flame sword!'
+says, 'Go to heeeeeeell!'
+says, 'I've done it... I've finally defeated the big for...'
+says, 'This will open the door to the siege castle where Beelzebub lives in!!'
+says, 'This... this is the siege castle...!'
+says, 'I feel... Beelzebub's magical power ...'
+says, 'Wh what the hell!?'
+says, 'Huh... good... I have one thing to say'
+says, 'I felt like I had a younger sister who had survived, but that wasn't the case!'
+says, 'Woooooooooooooo! Be prepared!'
+
 N:*:Default lines
 cackles evilly.
 cackles diabolically.
index 4e8c296..5b85697 100644 (file)
@@ -1054,6 +1054,45 @@ N:1123:巴流『葦名弦一郎』
 「卑怯とは言うまいな」
 「巴の雷、見せてやろう」
 
+N:1240:ソードマスター『ヤマト』
+「パンツだけは…許さない!」
+「オレの肉しみは消えないんだ!」
+「オレはポテトだ!」
+「オレの新しい脇を見せてやる!」
+「まそっぷ」
+「チクショオオオオ!」
+「新必殺技音速火炎剣!」
+「くらええええ!」
+「やった…ついに四天王を倒したぞ…」
+「これでベルゼバブのいる魔籠城の扉が開かれる!!」
+「こ…ここが魔籠城だったのか…!」
+「感じる…ベルゼバブの魔力を…」
+「な なんだって!?」
+「フ…上等だ…オレも一つ言っておくことがある」
+「このオレに生き別れた妹がいるような気がしていたが別にそんなことはなかったぜ!」
+「ウオオオいくぞオオオ!」
+
+# これを英訳するのは過激すぎるので保留
+N:1247:ゲイツの宿敵『スティーヴン・ジョーブツ』
+「今日のネクタイは赤だと? オレは赤が嫌いなんだ! 貴様はクビだ!!」
+「今日のネクタイは青だと? オレは青が嫌いなんだ! 貴様はクビだ!!」
+「今日のネクタイは緑だと? オレは緑が嫌いなんだ! 貴様はクビだ!!」
+「今日のネクタイは黄色だと? オレは黄色が嫌いなんだ! 貴様はクビだ!!」
+「今日のネクタイは紫だと? オレは紫が嫌いなんだ! 貴様はクビだ!!」
+「今日のネクタイはオレンジだと? オレはオレンジが嫌いなんだ! 貴様はクビだ!!」
+「今日のネクタイは青だと? オレは赤しか好かん! 貴様はクビだ!!」
+「今日のネクタイは緑だと? オレは赤しか好かん! 貴様はクビだ!!」
+「今日のネクタイは黄色だと? オレは赤しか好かん! 貴様はクビだ!!」
+「今日のネクタイは紫だと? オレは赤しか好かん! 貴様はクビだ!!」
+「今日のネクタイはオレンジだと? オレは赤しか好かん! 貴様はクビだ!!」
+「アシッドをキメればいつだっていいアイディアが浮かんでくる! 貴様もキメろ!!」
+「なんだその新機種のアイディアは! そんなつまらん製品を世に送り出すつもりか!? 貴様はクビだ!!」
+「素晴らしい新機種のアイディアが浮かんだぞ! なに、『それは先週自分で却下した』だと!? ウソをこけ! オレのアイディアは完璧なのだ!」
+「素晴らしい新機種のアイディアが浮かんだぞ! なに、『それは私のアイディアです』だと!? ウソをこけ! オレのアイディアに決まっている!!」
+「株式を上場する! 手元の株主はオレ一人だ!!」
+「明日までにこのコードを書き上げろ! できれば20万ドル、できなきゃクビだ!!」
+「オレが想定した使い方しか認めない! 他の使い方は全てロックしてやる!!」
+
 N:*:Default lines
 #cackles evilly.
 は邪悪に笑っている。
index 3a09711..83f829d 100644 (file)
@@ -466,6 +466,7 @@ hengband_SOURCES = \
        monster-attack/insults-moans.c monster-attack/insults-moans.h \
        monster-attack/monster-attack-describer.c monster-attack/monster-attack-describer.h \
        monster-attack/monster-attack-effect.h \
+       monster-attack/monster-attack-lose.c monster-attack/monster-attack-lose.h \
        monster-attack/monster-attack-player.c monster-attack/monster-attack-player.h \
        monster-attack/monster-attack-processor.c monster-attack/monster-attack-processor.h \
        monster-attack/monster-attack-status.c monster-attack/monster-attack-status.h \
index 886a3a6..c361f5f 100644 (file)
@@ -1,4 +1,4 @@
-#include "action/activation-execution.h"
+#include "action/activation-execution.h"
 #include "action/action-limited.h"
 #include "art-definition/random-art-effects.h"
 #include "artifact/artifact-info.h"
@@ -100,7 +100,7 @@ static bool check_activation_success(ae_type *ae_ptr)
     if (flush_failure)
         flush();
 
-    msg_print(_("\82¤\82Ü\82­\8en\93®\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82È\82©\82Á\82½\81B", "You failed to activate it properly."));
+    msg_print(_("うまく始動させることができなかった。", "You failed to activate it properly."));
     sound(SOUND_FAIL);
     return FALSE;
 }
@@ -111,12 +111,12 @@ static bool check_activation_conditions(player_type *user_ptr, ae_type *ae_ptr)
         return FALSE;
 
     if (ae_ptr->o_ptr->timeout) {
-        msg_print(_("\82»\82ê\82Í\94÷\82©\82É\89¹\82ð\97§\82Ä\81A\8bP\82«\81A\8fÁ\82¦\82½...", "It whines, glows and fades..."));
+        msg_print(_("それは微かに音を立て、輝き、消えた...", "It whines, glows and fades..."));
         return FALSE;
     }
 
     if (!ae_ptr->o_ptr->xtra4 && (ae_ptr->o_ptr->tval == TV_FLASK) && ((ae_ptr->o_ptr->sval == SV_LITE_TORCH) || (ae_ptr->o_ptr->sval == SV_LITE_LANTERN))) {
-        msg_print(_("\94R\97¿\82ª\82È\82¢\81B", "It has no fuel."));
+        msg_print(_("燃料がない。", "It has no fuel."));
         free_turn(user_ptr);
         return FALSE;
     }
@@ -125,10 +125,10 @@ static bool check_activation_conditions(player_type *user_ptr, ae_type *ae_ptr)
 }
 
 /*!
- * @brief \83A\83C\83e\83\80\82Ì\94­\93®\8cø\89Ê\82ð\8f\88\97\9d\82·\82é\81B
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param o_ptr \91Î\8fÛ\82Ì\83I\83u\83W\83F\83N\83g\8d\\91¢\91Ì\83|\83C\83\93\83^
- * @return \94­\93®\8eÀ\8ds\82Ì\90¥\94ñ\82ð\95Ô\82·\81B
+ * @brief アイテムの発動効果を処理する。
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param o_ptr 対象のオブジェクト構造体ポインタ
+ * @return 発動実行の是非を返す。
  */
 static bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 {
@@ -200,11 +200,11 @@ static bool activate_whistle(player_type *user_ptr, ae_type *ae_ptr)
 }
 
 /*!
- * @brief \91\95\94õ\82ð\94­\93®\82·\82é\83R\83}\83\93\83h\82Ì\83T\83u\83\8b\81[\83`\83\93 /
+ * @brief 装備を発動するコマンドのサブルーチン /
  * Activate a wielded object.  Wielded objects never stack.
  * And even if they did, activatable objects never stack.
- * @param item \94­\93®\82·\82é\83I\83u\83W\83F\83N\83g\82Ì\8f\8a\8e\9d\95iID
- * @return \82È\82µ
+ * @param item 発動するオブジェクトの所持品ID
+ * @return なし
  * @details
  * <pre>
  * Currently, only (some) artifacts, and Dragon Scale Mail, can be activated.
@@ -227,7 +227,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
     if (!check_activation_conditions(user_ptr, ae_ptr))
         return;
 
-    msg_print(_("\8en\93®\82³\82¹\82½...", "You activate it..."));
+    msg_print(_("始動させた...", "You activate it..."));
     sound(SOUND_ZAP);
     if (activation_index(user_ptr, ae_ptr->o_ptr)) {
         (void)activate_artifact(user_ptr, ae_ptr->o_ptr);
@@ -241,5 +241,5 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
     if (exe_monster_capture(user_ptr, ae_ptr))
         return;
 
-    msg_print(_("\82¨\82Á\82Æ\81A\82±\82Ì\83A\83C\83e\83\80\82Í\8en\93®\82Å\82«\82È\82¢\81B", "Oops.  That object cannot be activated."));
+    msg_print(_("おっと、このアイテムは始動できない。", "Oops.  That object cannot be activated."));
 }
index ee6bc99..da26b99 100644 (file)
@@ -1,7 +1,7 @@
 #pragma once
 
 typedef enum random_art_activation_type {
-       ACT_SUNLIGHT = 1,
+    ACT_SUNLIGHT = 1,
     ACT_BO_MISS_1 = 2,
     ACT_BA_POIS_1 = 3,
     ACT_BO_ELEC_1 = 4,
@@ -43,7 +43,9 @@ typedef enum random_art_activation_type {
     ACT_BR_DRAGON = 40,
     ACT_BA_FIRE_4 = 41,
     ACT_BA_NUKE_1 = 42,
-    /* 42 - 50 unused */
+    /* 43 - 48 unused */
+    ACT_TREE_CREATION = 49,
+    ACT_ANIM_DEAD = 50,
     ACT_CONFUSE = 51,
     ACT_SLEEP = 52,
     ACT_QUAKE = 53,
@@ -68,6 +70,7 @@ typedef enum random_art_activation_type {
     ACT_SUMMON_HOUND = 75,
     ACT_SUMMON_DAWN = 76,
     ACT_SUMMON_OCTOPUS = 77,
+    /* 78 - 79 unused */
     ACT_CHOIR_SINGS = 80,
     ACT_CURE_LW = 81,
     ACT_CURE_MW = 82,
@@ -121,6 +124,7 @@ typedef enum random_art_activation_type {
     ACT_PHASE_DOOR = 136,
     ACT_DETECT_ALL_MONS = 137,
     ACT_ULTIMATE_RESIST = 138,
+    /* 139 - 245 unused */
     ACT_FALLING_STAR = 246,
     ACT_STRAIN_HASTE = 247,
     ACT_TELEPORT_LEVEL = 248,
@@ -131,4 +135,5 @@ typedef enum random_art_activation_type {
     ACT_MURAMASA = 253,
     ACT_BLOODY_MOON = 254,
     ACT_CRIMSON = 255,
+    ACT_MAX = 255, /* ダミー、最大値と合わせること / Dummy. Please match the value as max value */
 } random_art_activation_type;
index 49a2228..ec94387 100644 (file)
@@ -1,6 +1,6 @@
-/*!
- * todo get_string_for_search() \82Í\92·\82¢\81A\97v\95ª\8a\84
- * @brief \8e©\93®\8fE\82¢\82Ì\8c\9f\8dõ
+/*!
+ * todo get_string_for_search() は長い、要分割
+ * @brief 自動拾いの検索
  * @date 2020/04/26
  * @author Hourier
  */
 #include "util/string-processor.h"
 
 /*
- * @brief \97^\82¦\82ç\82ê\82½\83A\83C\83e\83\80\82ª\8e©\93®\8fE\82¢\82Ì\83\8a\83X\83g\82É\93o\98^\82³\82ê\82Ä\82¢\82é\82©\82Ç\82¤\82©\82ð\8c\9f\8dõ\82·\82é
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @o_ptr \83A\83C\83e\83\80\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8e©\93®\8fE\82¢\82Ì\83\8a\83X\83g\82É\93o\98^\82³\82ê\82Ä\82¢\82½\82ç\82»\82Ì\93o\98^\94Ô\8d\86\81A\82È\82©\82Á\82½\82ç-1
+ * @brief 与えられたアイテムが自動拾いのリストに登録されているかどうかを検索する
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @o_ptr アイテムへの参照ポインタ
+ * @return 自動拾いのリストに登録されていたらその登録番号、なかったら-1
  * @details
  * A function for Auto-picker/destroyer
  * Examine whether the object matches to the list of keywords or not.
@@ -52,8 +52,8 @@ int find_autopick_list(player_type *player_ptr, object_type *o_ptr)
  */
 bool get_object_for_search(player_type *player_ptr, object_type **o_handle, concptr *search_strp)
 {
-    concptr q = _("\82Ç\82Ì\83A\83C\83e\83\80\82ð\8c\9f\8dõ\82µ\82Ü\82·\82©? ", "Enter which item? ");
-    concptr s = _("\83A\83C\83e\83\80\82ð\8e\9d\82Á\82Ä\82¢\82È\82¢\81B", "You have nothing to enter.");
+    concptr q = _("どのアイテムを検索しますか? ", "Enter which item? ");
+    concptr s = _("アイテムを持っていない。", "You have nothing to enter.");
     object_type *o_ptr;
     o_ptr = choose_object(player_ptr, NULL, q, s, USE_INVEN | USE_FLOOR | USE_EQUIP, 0);
     if (!o_ptr)
@@ -96,7 +96,7 @@ byte get_string_for_search(player_type *player_ptr, object_type **o_handle, conc
     byte color = TERM_YELLOW;
     char buf[MAX_NLEN + 20];
     const int len = 80;
-    char prompt[] = _("\8c\9f\8dõ(^I:\8e\9d\82¿\95¨ ^L:\94j\89ó\82³\82ê\82½\95¨): ", "Search key(^I:inven ^L:destroyed): ");
+    char prompt[] = _("検索(^I:持ち物 ^L:破壊された物): ", "Search key(^I:inven ^L:destroyed): ");
     int col = sizeof(prompt) - 1;
     if (*search_strp)
         strcpy(buf, *search_strp);
index 6dd8e47..060d1ec 100644 (file)
@@ -1,4 +1,4 @@
-#include "autopick/autopick-reader-writer.h"
+#include "autopick/autopick-reader-writer.h"
 #include "autopick/autopick-initializer.h"
 #include "autopick/autopick-pref-processor.h"
 #include "io/files-util.h"
@@ -18,7 +18,7 @@ void autopick_load_pref(player_type *player_ptr, bool disp_mes)
        errr err = process_autopick_file(player_ptr, buf, process_autopick_file_command);
        if (err == 0 && disp_mes)
        {
-               msg_format(_("%s\82ð\93Ç\82Ý\8d\9e\82Ý\82Ü\82µ\82½\81B", "Loaded '%s'."), buf);
+               msg_format(_("%sを読み込みました。", "Loaded '%s'."), buf);
        }
 
        if (err < 0)
@@ -27,13 +27,13 @@ void autopick_load_pref(player_type *player_ptr, bool disp_mes)
                err = process_autopick_file(player_ptr, buf, process_autopick_file_command);
                if (err == 0 && disp_mes)
                {
-                       msg_format(_("%s\82ð\93Ç\82Ý\8d\9e\82Ý\82Ü\82µ\82½\81B", "Loaded '%s'."), buf);
+                       msg_format(_("%sを読み込みました。", "Loaded '%s'."), buf);
                }
        }
 
        if (err && disp_mes)
        {
-               msg_print(_("\8e©\93®\8fE\82¢\90Ý\92è\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B", "Failed to reload autopick preference."));
+               msg_print(_("自動拾い設定ファイルの読み込みに失敗しました。", "Failed to reload autopick preference."));
        }
 }
 
@@ -95,9 +95,9 @@ static concptr *read_text_lines(concptr filename)
 static void prepare_default_pickpref(player_type *player_ptr)
 {
        const concptr messages[] = {
-               _("\82 \82È\82½\82Í\81u\8e©\93®\8fE\82¢\83G\83f\83B\83^\81v\82ð\8f\89\82ß\82Ä\8bN\93®\82µ\82Ü\82µ\82½\81B", "You have activated the Auto-Picker Editor for the first time."),
-               _("\8e©\93®\8fE\82¢\82Ì\83\86\81[\83U\81[\90Ý\92è\83t\83@\83C\83\8b\82ª\82Ü\82¾\8f\91\82©\82ê\82Ä\82¢\82È\82¢\82Ì\82Å\81A", "Since user pref file for autopick is not yet created,"),
-               _("\8aî\96{\93I\82È\8e©\93®\8fE\82¢\90Ý\92è\83t\83@\83C\83\8b\82ðlib/pref/picktype.prf\82©\82ç\83R\83s\81[\82µ\82Ü\82·\81B", "the default setting is loaded from lib/pref/pickpref.prf ."),
+               _("あなたは「自動拾いエディタ」を初めて起動しました。", "You have activated the Auto-Picker Editor for the first time."),
+               _("自動拾いのユーザー設定ファイルがまだ書かれていないので、", "Since user pref file for autopick is not yet created,"),
+               _("基本的な自動拾い設定ファイルをlib/pref/picktype.prfからコピーします。", "the default setting is loaded from lib/pref/pickpref.prf ."),
                NULL
        };
 
index d74312a..af0de28 100644 (file)
@@ -234,7 +234,7 @@ bool cast_blue_breath_nuke(player_type *caster_ptr, bmc_type *bmc_ptr)
         return FALSE;
 
     msg_print(_("放射性廃棄物のブレスを吐いた。", "You breathe toxic waste."));
-    bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BR_NUKE), bmc_ptr->plev, DAM_ROLL);
+    bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BR_NUKE, bmc_ptr->plev, DAM_ROLL);
     fire_breath(caster_ptr, GF_NUKE, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
     return TRUE;
 }
@@ -251,7 +251,7 @@ bool cast_blue_breath_disintegration(player_type *caster_ptr, bmc_type *bmc_ptr)
         return FALSE;
 
     msg_print(_("分解のブレスを吐いた。", "You breathe disintegration."));
-    bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BR_DISI), bmc_ptr->plev, DAM_ROLL);
+    bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, MS_BR_DISI, bmc_ptr->plev, DAM_ROLL);
     fire_breath(caster_ptr, GF_DISINTEGRATE, bmc_ptr->dir, bmc_ptr->damage, (bmc_ptr->plev > 40 ? 3 : 2));
     return TRUE;
 }
index 987eb0d..78b1177 100644 (file)
@@ -1,4 +1,4 @@
-#include "cmd-io/cmd-floor.h"
+#include "cmd-io/cmd-floor.h"
 #include "core/asking-player.h"
 #include "core/player-redraw-types.h"
 #include "core/player-update-types.h"
@@ -16,9 +16,9 @@
 #include "window/main-window-util.h"
 
 /*!
- * @brief \83^\81[\83Q\83b\83g\82ð\90Ý\92è\82·\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93
+ * @brief ターゲットを設定するコマンドのメインルーチン
  * Target command
- * @return \82È\82µ
+ * @return なし
  */
 void do_cmd_target(player_type *creature_ptr)
 {
@@ -26,28 +26,28 @@ void do_cmd_target(player_type *creature_ptr)
         return;
 
     if (target_set(creature_ptr, TARGET_KILL))
-        msg_print(_("\83^\81[\83Q\83b\83g\8c\88\92è\81B", "Target Selected."));
+        msg_print(_("ターゲット決定。", "Target Selected."));
     else
-        msg_print(_("\83^\81[\83Q\83b\83g\89ð\8f\9c\81B", "Target Aborted."));
+        msg_print(_("ターゲット解除。", "Target Aborted."));
 }
 
 /*!
- * @brief \8eü\88Í\82ð\8c©\93n\82·\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93
+ * @brief 周囲を見渡すコマンドのメインルーチン
  * Look command
- * @return \82È\82µ
+ * @return なし
  */
 void do_cmd_look(player_type *creature_ptr)
 {
     creature_ptr->window |= PW_MONSTER_LIST;
     handle_stuff(creature_ptr);
     if (target_set(creature_ptr, TARGET_LOOK))
-        msg_print(_("\83^\81[\83Q\83b\83g\8c\88\92è\81B", "Target Selected."));
+        msg_print(_("ターゲット決定。", "Target Selected."));
 }
 
 /*!
- * @brief \88Ê\92u\82ð\8am\94F\82·\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93
+ * @brief 位置を確認するコマンドのメインルーチン
  * Allow the player to examine other sectors on the map
- * @return \82È\82µ
+ * @return なし
  */
 void do_cmd_locate(player_type *creature_ptr)
 {
@@ -61,12 +61,12 @@ void do_cmd_locate(player_type *creature_ptr)
     POSITION x2 = x1 = panel_col_min;
     while (TRUE) {
         if ((y2 == y1) && (x2 == x1))
-            strcpy(tmp_val, _("\90^\8fã", "\0"));
+            strcpy(tmp_val, _("真上", "\0"));
         else
-            sprintf(tmp_val, "%s%s", ((y2 < y1) ? _("\96k", " North") : (y2 > y1) ? _("\93ì", " South") : ""),
-                ((x2 < x1) ? _("\90¼", " West") : (x2 > x1) ? _("\93\8c", " East") : ""));
+            sprintf(tmp_val, "%s%s", ((y2 < y1) ? _("北", " North") : (y2 > y1) ? _("南", " South") : ""),
+                ((x2 < x1) ? _("西", " West") : (x2 > x1) ? _("東", " East") : ""));
 
-        sprintf(out_val, _("\83}\83b\83v\88Ê\92u [%d(%02d),%d(%02d)] (\83v\83\8c\83C\83\84\81[\82Ì%s)  \95û\8cü?", "Map sector [%d(%02d),%d(%02d)], which is%s your sector.  Direction?"),
+        sprintf(out_val, _("マップ位置 [%d(%02d),%d(%02d)] (プレイヤーの%s)  方向?", "Map sector [%d(%02d),%d(%02d)], which is%s your sector.  Direction?"),
             y2 / (hgt / 2), y2 % (hgt / 2), x2 / (wid / 2), x2 % (wid / 2), tmp_val);
 
         dir = 0;
index a89ae7a..163358e 100644 (file)
@@ -1,4 +1,4 @@
-#include "cmd-item/cmd-destroy.h"
+#include "cmd-item/cmd-destroy.h"
 #include "autopick/autopick-registry.h"
 #include "autopick/autopick.h"
 #include "core/asking-player.h"
@@ -57,7 +57,7 @@ static bool check_destory_item(player_type *creature_ptr, destroy_type *destroy_
         return TRUE;
 
     describe_flavor(creature_ptr, destroy_ptr->o_name, destroy_ptr->o_ptr, OD_OMIT_PREFIX);
-    sprintf(destroy_ptr->out_val, _("\96{\93\96\82É%s\82ð\89ó\82µ\82Ü\82·\82©? [y/n/Auto]", "Really destroy %s? [y/n/Auto]"), destroy_ptr->o_name);
+    sprintf(destroy_ptr->out_val, _("本当に%sを壊しますか? [y/n/Auto]", "Really destroy %s? [y/n/Auto]"), destroy_ptr->o_name);
     msg_print(NULL);
     message_add(destroy_ptr->out_val);
     creature_ptr->window |= PW_MESSAGE;
@@ -84,8 +84,8 @@ static bool check_destory_item(player_type *creature_ptr, destroy_type *destroy_
 
 static bool select_destroying_item(player_type *creature_ptr, destroy_type *destroy_ptr)
 {
-    concptr q = _("\82Ç\82Ì\83A\83C\83e\83\80\82ð\89ó\82µ\82Ü\82·\82©? ", "Destroy which item? ");
-    concptr s = _("\89ó\82¹\82é\83A\83C\83e\83\80\82ð\8e\9d\82Á\82Ä\82¢\82È\82¢\81B", "You have nothing to destroy.");
+    concptr q = _("どのアイテムを壊しますか? ", "Destroy which item? ");
+    concptr s = _("壊せるアイテムを持っていない。", "You have nothing to destroy.");
     destroy_ptr->o_ptr = choose_object(creature_ptr, &destroy_ptr->item, q, s, USE_INVEN | USE_FLOOR, 0);
     if (destroy_ptr->o_ptr == NULL)
         return FALSE;
@@ -101,10 +101,10 @@ static bool select_destroying_item(player_type *creature_ptr, destroy_type *dest
 }
 
 /*!
- * @brief \88ê\95\94\90E\8bÆ\82Å\8d\82\88Ê\96\82\96@\8f\91\82Ì\94j\89ó\82É\82æ\82é\8co\8c±\92l\8fã\8f¸\82Ì\94»\92è
- * @param creature_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param destory_ptr \83A\83C\83e\83\80\94j\89ó\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * return \96\82\96@\8f\91\82Ì\94j\89ó\82É\82æ\82Á\82Ä\8co\8c±\92l\82ª\93ü\82é\82È\82ç\82ÎTRUE
+ * @brief 一部職業で高位魔法書の破壊による経験値上昇の判定
+ * @param creature_ptr プレーヤーへの参照ポインタ
+ * @param destory_ptr アイテム破壊構造体への参照ポインタ
+ * return 魔法書の破壊によって経験値が入るならばTRUE
  */
 static bool decide_magic_book_exp(player_type *creature_ptr, destroy_type *destroy_ptr)
 {
@@ -145,7 +145,7 @@ static void gain_exp_by_destroying_magic_book(player_type *creature_ptr, destroy
     if (tester_exp < 1)
         tester_exp = 1;
 
-    msg_print(_("\8dX\82É\8co\8c±\82ð\90Ï\82ñ\82¾\82æ\82¤\82È\8bC\82ª\82·\82é\81B", "You feel more experienced."));
+    msg_print(_("更に経験を積んだような気がする。", "You feel more experienced."));
     gain_exp(creature_ptr, tester_exp * destroy_ptr->amt);
 }
 
@@ -175,7 +175,7 @@ static void process_destroy_magic_book(player_type *creature_ptr, destroy_type *
 static void exe_destroy_item(player_type *creature_ptr, destroy_type *destroy_ptr)
 {
     object_copy(destroy_ptr->q_ptr, destroy_ptr->o_ptr);
-    msg_format(_("%s\82ð\89ó\82µ\82½\81B", "You destroy %s."), destroy_ptr->o_name);
+    msg_format(_("%sを壊した。", "You destroy %s."), destroy_ptr->o_name);
     sound(SOUND_DESTITEM);
     reduce_charges(destroy_ptr->o_ptr, destroy_ptr->amt);
     vary_item(creature_ptr, destroy_ptr->item, -destroy_ptr->amt);
@@ -188,9 +188,9 @@ static void exe_destroy_item(player_type *creature_ptr, destroy_type *destroy_pt
 }
 
 /*!
- * @brief \83A\83C\83e\83\80\82ð\94j\89ó\82·\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 / Destroy an item
- * @param creature_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \82È\82µ
+ * @brief アイテムを破壊するコマンドのメインルーチン / Destroy an item
+ * @param creature_ptr プレーヤーへの参照ポインタ
+ * @return なし
  */
 void do_cmd_destroy(player_type *creature_ptr)
 {
@@ -213,7 +213,7 @@ void do_cmd_destroy(player_type *creature_ptr)
     take_turn(creature_ptr, 100);
     if (!can_player_destroy_object(creature_ptr, destroy_ptr->o_ptr)) {
         free_turn(creature_ptr);
-        msg_format(_("%s\82Í\94j\89ó\95s\89Â\94\\82¾\81B", "You cannot destroy %s."), destroy_ptr->o_name);
+        msg_format(_("%sは破壊不可能だ。", "You cannot destroy %s."), destroy_ptr->o_name);
         return;
     }
 
index 688bebc..c48705b 100644 (file)
@@ -1,4 +1,4 @@
-#include "cmd-item/cmd-equipment.h"
+#include "cmd-item/cmd-equipment.h"
 #include "action/weapon-shield.h"
 #include "art-definition/art-protector-types.h"
 #include "autopick/autopick.h"
@@ -6,7 +6,7 @@
 #include "core/player-redraw-types.h"
 #include "core/player-update-types.h"
 #include "core/window-redrawer.h"
-#include "dungeon/quest.h" // todo \88á\98a\8a´\81A\89½\8cÌ\83A\83C\83e\83\80\82ð\91\95\94õ\82·\82é\82Æ\83N\83G\83X\83g\82Ì\90¬\8c÷\94»\92è\82ª\91\96\82é\82Ì\82©\81H.
+#include "dungeon/quest.h" // todo 違和感、何故アイテムを装備するとクエストの成功判定が走るのか?.
 #include "flavor/flavor-describer.h"
 #include "flavor/object-flavor-types.h"
 #include "floor/floor-object.h"
@@ -43,8 +43,8 @@
 #include "view/display-messages.h"
 
 /*!
- * @brief \91\95\94õ\88ê\97\97\82ð\95\\8e¦\82·\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 / Display equipment
- * @return \82È\82µ
+ * @brief 装備一覧を表示するコマンドのメインルーチン / Display equipment
+ * @return なし
  */
 void do_cmd_equip(player_type *creature_ptr)
 {
@@ -56,7 +56,7 @@ void do_cmd_equip(player_type *creature_ptr)
     screen_save();
     (void)show_equipment(creature_ptr, 0, USE_FULL, 0);
 #ifdef JP
-    sprintf(out_val, "\91\95\94õ\81\8d\87\8cv %3d.%1d kg (\8cÀ\8aE\82Ì%ld%%) \83R\83}\83\93\83h: ", (int)lbtokg1(creature_ptr->total_weight), (int)lbtokg2(creature_ptr->total_weight),
+    sprintf(out_val, "装備: 合計 %3d.%1d kg (限界の%ld%%) コマンド: ", (int)lbtokg1(creature_ptr->total_weight), (int)lbtokg2(creature_ptr->total_weight),
         (long int)((creature_ptr->total_weight * 100) / weight_limit(creature_ptr)));
 #else
     sprintf(out_val, "Equipment: carrying %d.%d pounds (%ld%% of capacity). Command: ", (int)(creature_ptr->total_weight / 10),
@@ -81,9 +81,9 @@ void do_cmd_equip(player_type *creature_ptr)
 bool select_ring_slot = FALSE;
 
 /*!
- * @brief \91\95\94õ\82·\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 / Wield or wear a single item from the pack or floor
- * @param creature_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \82È\82µ
+ * @brief 装備するコマンドのメインルーチン / Wield or wear a single item from the pack or floor
+ * @param creature_ptr プレーヤーへの参照ポインタ
+ * @return なし
  */
 void do_cmd_wield(player_type *creature_ptr)
 {
@@ -98,8 +98,8 @@ void do_cmd_wield(player_type *creature_ptr)
         set_action(creature_ptr, ACTION_NONE);
 
     item_tester_hook = item_tester_hook_wear;
-    concptr q = _("\82Ç\82ê\82ð\91\95\94õ\82µ\82Ü\82·\82©? ", "Wear/Wield which item? ");
-    concptr s = _("\91\95\94õ\89Â\94\\82È\83A\83C\83e\83\80\82ª\82È\82¢\81B", "You have nothing you can wear or wield.");
+    concptr q = _("どれを装備しますか? ", "Wear/Wield which item? ");
+    concptr s = _("装備可能なアイテムがない。", "You have nothing you can wear or wield.");
     o_ptr = choose_object(creature_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), 0);
     if (!o_ptr)
         return;
@@ -112,8 +112,8 @@ void do_cmd_wield(player_type *creature_ptr)
     case TV_CARD:
         if (has_melee_weapon(creature_ptr, INVEN_RARM) && has_melee_weapon(creature_ptr, INVEN_LARM)) {
             item_tester_hook = item_tester_hook_melee_weapon;
-            q = _("\82Ç\82¿\82ç\82Ì\95\90\8aí\82Æ\8eæ\82è\91Ö\82¦\82Ü\82·\82©?", "Replace which weapon? ");
-            s = _("\82¨\82Á\82Æ\81B", "Oops.");
+            q = _("どちらの武器と取り替えますか?", "Replace which weapon? ");
+            s = _("おっと。", "Oops.");
             if (!choose_object(creature_ptr, &slot, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT), 0))
                 return;
 
@@ -124,8 +124,8 @@ void do_cmd_wield(player_type *creature_ptr)
         else if (creature_ptr->inventory_list[INVEN_RARM].k_idx && !object_is_melee_weapon(&creature_ptr->inventory_list[INVEN_RARM])
             && creature_ptr->inventory_list[INVEN_LARM].k_idx && !object_is_melee_weapon(&creature_ptr->inventory_list[INVEN_LARM])) {
             item_tester_hook = item_tester_hook_mochikae;
-            q = _("\82Ç\82¿\82ç\82Ì\8eè\82É\91\95\94õ\82µ\82Ü\82·\82©?", "Equip which hand? ");
-            s = _("\82¨\82Á\82Æ\81B", "Oops.");
+            q = _("どちらの手に装備しますか?", "Equip which hand? ");
+            s = _("おっと。", "Oops.");
             if (!choose_object(creature_ptr, &slot, q, s, (USE_EQUIP), 0))
                 return;
         }
@@ -136,15 +136,15 @@ void do_cmd_wield(player_type *creature_ptr)
     case TV_POLEARM:
     case TV_SWORD:
         if (slot == INVEN_LARM) {
-            if (!get_check(_("\93ñ\93\81\97¬\82Å\90í\82¢\82Ü\82·\82©\81H", "Dual wielding? ")))
+            if (!get_check(_("二刀流で戦いますか?", "Dual wielding? ")))
                 slot = INVEN_RARM;
         } else if (!creature_ptr->inventory_list[INVEN_RARM].k_idx && has_melee_weapon(creature_ptr, INVEN_LARM)) {
-            if (!get_check(_("\93ñ\93\81\97¬\82Å\90í\82¢\82Ü\82·\82©\81H", "Dual wielding? ")))
+            if (!get_check(_("二刀流で戦いますか?", "Dual wielding? ")))
                 slot = INVEN_LARM;
         } else if (creature_ptr->inventory_list[INVEN_LARM].k_idx && creature_ptr->inventory_list[INVEN_RARM].k_idx) {
             item_tester_hook = item_tester_hook_mochikae;
-            q = _("\82Ç\82¿\82ç\82Ì\8eè\82É\91\95\94õ\82µ\82Ü\82·\82©?", "Equip which hand? ");
-            s = _("\82¨\82Á\82Æ\81B", "Oops.");
+            q = _("どちらの手に装備しますか?", "Equip which hand? ");
+            s = _("おっと。", "Oops.");
             if (!choose_object(creature_ptr, &slot, q, s, (USE_EQUIP), 0))
                 return;
 
@@ -155,11 +155,11 @@ void do_cmd_wield(player_type *creature_ptr)
         break;
     case TV_RING:
         if (creature_ptr->inventory_list[INVEN_LEFT].k_idx && creature_ptr->inventory_list[INVEN_RIGHT].k_idx)
-            q = _("\82Ç\82¿\82ç\82Ì\8ew\97Ö\82Æ\8eæ\82è\91Ö\82¦\82Ü\82·\82©?", "Replace which ring? ");
+            q = _("どちらの指輪と取り替えますか?", "Replace which ring? ");
         else
-            q = _("\82Ç\82¿\82ç\82Ì\8eè\82É\91\95\94õ\82µ\82Ü\82·\82©?", "Equip which hand? ");
+            q = _("どちらの手に装備しますか?", "Equip which hand? ");
 
-        s = _("\82¨\82Á\82Æ\81B", "Oops.");
+        s = _("おっと。", "Oops.");
         select_ring_slot = TRUE;
         if (!choose_object(creature_ptr, &slot, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT), 0)) {
             select_ring_slot = FALSE;
@@ -173,7 +173,7 @@ void do_cmd_wield(player_type *creature_ptr)
     if (object_is_cursed(&creature_ptr->inventory_list[slot])) {
         describe_flavor(creature_ptr, o_name, &creature_ptr->inventory_list[slot], OD_OMIT_PREFIX | OD_NAME_ONLY);
 #ifdef JP
-        msg_format("%s%s\82Í\8eô\82í\82ê\82Ä\82¢\82é\82æ\82¤\82¾\81B", describe_use(creature_ptr, slot), o_name);
+        msg_format("%s%sは呪われているようだ。", describe_use(creature_ptr, slot), o_name);
 #else
         msg_format("The %s you are %s appears to be cursed.", o_name, describe_use(creature_ptr, slot));
 #endif
@@ -185,7 +185,7 @@ void do_cmd_wield(player_type *creature_ptr)
             || ((o_ptr->ident & IDENT_SENSE) && (FEEL_BROKEN <= o_ptr->feeling) && (o_ptr->feeling <= FEEL_CURSED)))) {
         char dummy[MAX_NLEN + 80];
         describe_flavor(creature_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
-        sprintf(dummy, _("\96{\93\96\82É%s{\8eô\82í\82ê\82Ä\82¢\82é}\82ð\8eg\82¢\82Ü\82·\82©\81H", "Really use the %s {cursed}? "), o_name);
+        sprintf(dummy, _("本当に%s{呪われている}を使いますか?", "Really use the %s {cursed}? "), o_name);
 
         if (!get_check(dummy))
             return;
@@ -195,7 +195,7 @@ void do_cmd_wield(player_type *creature_ptr)
         char dummy[MAX_NLEN + 100];
         describe_flavor(creature_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
         sprintf(dummy,
-            _("%s\82ð\91\95\94õ\82·\82é\82Æ\8bz\8c\8c\8bS\82É\82È\82è\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H", "%s will transforms you into a vampire permanently when equiped. Do you become a vampire?"),
+            _("%sを装備すると吸血鬼になります。よろしいですか?", "%s will transforms you into a vampire permanently when equiped. Do you become a vampire?"),
             o_name);
 
         if (!get_check(dummy))
@@ -212,8 +212,8 @@ void do_cmd_wield(player_type *creature_ptr)
         object_copy(otmp_ptr, switch_o_ptr);
         object_copy(switch_o_ptr, slot_o_ptr);
         object_copy(slot_o_ptr, otmp_ptr);
-        msg_format(_("%s\82ð%s\82É\8d\\82¦\82È\82¨\82µ\82½\81B", "You wield %s at %s hand."), switch_name,
-            (slot == INVEN_RARM) ? (left_hander ? _("\8d\8eè", "left") : _("\89E\8eè", "right")) : (left_hander ? _("\89E\8eè", "right") : _("\8d\8eè", "left")));
+        msg_format(_("%sを%sに構えなおした。", "You wield %s at %s hand."), switch_name,
+            (slot == INVEN_RARM) ? (left_hander ? _("左手", "left") : _("右手", "right")) : (left_hander ? _("右手", "right") : _("左手", "left")));
         slot = need_switch_wielding;
     }
 
@@ -244,9 +244,9 @@ void do_cmd_wield(player_type *creature_ptr)
     creature_ptr->total_weight += q_ptr->weight;
     creature_ptr->equip_cnt++;
 
-#define STR_WIELD_RARM _("%s(%c)\82ð\89E\8eè\82É\91\95\94õ\82µ\82½\81B", "You are wielding %s (%c) in your right hand.")
-#define STR_WIELD_LARM _("%s(%c)\82ð\8d\8eè\82É\91\95\94õ\82µ\82½\81B", "You are wielding %s (%c) in your left hand.")
-#define STR_WIELD_ARMS _("%s(%c)\82ð\97¼\8eè\82Å\8d\\82¦\82½\81B", "You are wielding %s (%c) with both hands.")
+#define STR_WIELD_RARM _("%s(%c)を右手に装備した。", "You are wielding %s (%c) in your right hand.")
+#define STR_WIELD_LARM _("%s(%c)を左手に装備した。", "You are wielding %s (%c) in your left hand.")
+#define STR_WIELD_ARMS _("%s(%c)を両手で構えた。", "You are wielding %s (%c) with both hands.")
 
     switch (slot) {
     case INVEN_RARM:
@@ -264,20 +264,20 @@ void do_cmd_wield(player_type *creature_ptr)
 
         break;
     case INVEN_BOW:
-        act = _("%s(%c)\82ð\8eË\8c\82\97p\82É\91\95\94õ\82µ\82½\81B", "You are shooting with %s (%c).");
+        act = _("%s(%c)を射撃用に装備した。", "You are shooting with %s (%c).");
         break;
     case INVEN_LITE:
-        act = _("%s(%c)\82ð\8cõ\8c¹\82É\82µ\82½\81B", "Your light source is %s (%c).");
+        act = _("%s(%c)を光源にした。", "Your light source is %s (%c).");
         break;
     default:
-        act = _("%s(%c)\82ð\91\95\94õ\82µ\82½\81B", "You are wearing %s (%c).");
+        act = _("%s(%c)を装備した。", "You are wearing %s (%c).");
         break;
     }
 
     describe_flavor(creature_ptr, o_name, o_ptr, 0);
     msg_format(act, o_name, index_to_label(slot));
     if (object_is_cursed(o_ptr)) {
-        msg_print(_("\82¤\82í\81\82·\82³\82Ü\82\82­\97â\82½\82¢\81I", "Oops! It feels deathly cold!"));
+        msg_print(_("うわ! すさまじく冷たい!", "Oops! It feels deathly cold!"));
         chg_virtue(creature_ptr, V_HARMONY, -1);
         o_ptr->ident |= (IDENT_SENSE);
     }
@@ -292,8 +292,8 @@ void do_cmd_wield(player_type *creature_ptr)
 }
 
 /*!
- * @brief \91\95\94õ\82ð\8aO\82·\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 / Take off an item
- * @return \82È\82µ
+ * @brief 装備を外すコマンドのメインルーチン / Take off an item
+ * @return なし
  */
 void do_cmd_takeoff(player_type *creature_ptr)
 {
@@ -302,28 +302,28 @@ void do_cmd_takeoff(player_type *creature_ptr)
     if (creature_ptr->special_defense & KATA_MUSOU)
         set_action(creature_ptr, ACTION_NONE);
 
-    concptr q = _("\82Ç\82ê\82ð\91\95\94õ\82©\82ç\82Í\82¸\82µ\82Ü\82·\82©? ", "Take off which item? ");
-    concptr s = _("\82Í\82¸\82¹\82é\91\95\94õ\82ª\82È\82¢\81B", "You are not wearing anything to take off.");
+    concptr q = _("どれを装備からはずしますか? ", "Take off which item? ");
+    concptr s = _("はずせる装備がない。", "You are not wearing anything to take off.");
     o_ptr = choose_object(creature_ptr, &item, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT), 0);
     if (!o_ptr)
         return;
 
     if (object_is_cursed(o_ptr)) {
         if ((o_ptr->curse_flags & TRC_PERMA_CURSE) || (creature_ptr->pclass != CLASS_BERSERKER)) {
-            msg_print(_("\82Ó\81[\82Þ\81A\82Ç\82¤\82â\82ç\8eô\82í\82ê\82Ä\82¢\82é\82æ\82¤\82¾\81B", "Hmmm, it seems to be cursed."));
+            msg_print(_("ふーむ、どうやら呪われているようだ。", "Hmmm, it seems to be cursed."));
             return;
         }
 
         if (((o_ptr->curse_flags & TRC_HEAVY_CURSE) && one_in_(7)) || one_in_(4)) {
-            msg_print(_("\8eô\82í\82ê\82½\91\95\94õ\82ð\97Í\82Ã\82­\82Å\94\8d\82ª\82µ\82½\81I", "You tore off a piece of cursed equipment by sheer strength!"));
+            msg_print(_("呪われた装備を力づくで剥がした!", "You tore off a piece of cursed equipment by sheer strength!"));
             o_ptr->ident |= (IDENT_SENSE);
             o_ptr->curse_flags = 0L;
             o_ptr->feeling = FEEL_NONE;
             creature_ptr->update |= PU_BONUS;
             creature_ptr->window |= PW_EQUIP;
-            msg_print(_("\8eô\82¢\82ð\91Å\82¿\94j\82Á\82½\81B", "You break the curse."));
+            msg_print(_("呪いを打ち破った。", "You break the curse."));
         } else {
-            msg_print(_("\91\95\94õ\82ð\8aO\82¹\82È\82©\82Á\82½\81B", "You couldn't remove the equipment."));
+            msg_print(_("装備を外せなかった。", "You couldn't remove the equipment."));
             take_turn(creature_ptr, 50);
             return;
         }
index 77ebd52..752973b 100644 (file)
@@ -1,4 +1,4 @@
-#include "cmd-item/cmd-refill.h"
+#include "cmd-item/cmd-refill.h"
 #include "core/player-redraw-types.h"
 #include "core/player-update-types.h"
 #include "floor/floor-object.h"
@@ -15,9 +15,9 @@
 #include "view/display-messages.h"
 
 /*!
- * @brief \83\89\83\93\83^\83\93\82É\94R\97¿\82ð\89Á\82¦\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93
+ * @brief ランタンに燃料を加えるコマンドのメインルーチン
  * Refill the players lamp (from the pack or floor)
- * @return \82È\82µ
+ * @return なし
  */
 static void do_cmd_refill_lamp(player_type *user_ptr)
 {
@@ -25,8 +25,8 @@ static void do_cmd_refill_lamp(player_type *user_ptr)
     object_type *o_ptr;
     object_type *j_ptr;
     item_tester_hook = item_tester_refill_lantern;
-    concptr q = _("\82Ç\82Ì\96û\82Â\82Ú\82©\82ç\92\8d\82¬\82Ü\82·\82©? ", "Refill with which flask? ");
-    concptr s = _("\96û\82Â\82Ú\82ª\82È\82¢\81B", "You have no flasks of oil.");
+    concptr q = _("どの油つぼから注ぎますか? ", "Refill with which flask? ");
+    concptr s = _("油つぼがない。", "You have no flasks of oil.");
     o_ptr = choose_object(user_ptr, &item, q, s, USE_INVEN | USE_FLOOR, 0);
     if (!o_ptr)
         return;
@@ -34,16 +34,16 @@ static void do_cmd_refill_lamp(player_type *user_ptr)
     take_turn(user_ptr, 50);
     j_ptr = &user_ptr->inventory_list[INVEN_LITE];
     j_ptr->xtra4 += o_ptr->xtra4;
-    msg_print(_("\83\89\83\93\83v\82É\96û\82ð\92\8d\82¢\82¾\81B", "You fuel your lamp."));
+    msg_print(_("ランプに油を注いだ。", "You fuel your lamp."));
     if ((o_ptr->name2 == EGO_LITE_DARKNESS) && (j_ptr->xtra4 > 0)) {
         j_ptr->xtra4 = 0;
-        msg_print(_("\83\89\83\93\83v\82ª\8fÁ\82¦\82Ä\82µ\82Ü\82Á\82½\81I", "Your lamp has gone out!"));
+        msg_print(_("ランプが消えてしまった!", "Your lamp has gone out!"));
     } else if ((o_ptr->name2 == EGO_LITE_DARKNESS) || (j_ptr->name2 == EGO_LITE_DARKNESS)) {
         j_ptr->xtra4 = 0;
-        msg_print(_("\82µ\82©\82µ\83\89\83\93\83v\82Í\91S\82­\8cõ\82ç\82È\82¢\81B", "Curiously, your lamp doesn't light."));
+        msg_print(_("しかしランプは全く光らない。", "Curiously, your lamp doesn't light."));
     } else if (j_ptr->xtra4 >= FUEL_LAMP) {
         j_ptr->xtra4 = FUEL_LAMP;
-        msg_print(_("\83\89\83\93\83v\82Ì\96û\82Í\88ê\94t\82¾\81B", "Your lamp is full."));
+        msg_print(_("ランプの油は一杯だ。", "Your lamp is full."));
     }
 
     vary_item(user_ptr, item, -1);
@@ -51,9 +51,9 @@ static void do_cmd_refill_lamp(player_type *user_ptr)
 }
 
 /*!
- * @brief \8f¼\96¾\82ð\91©\82Ë\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93
+ * @brief 松明を束ねるコマンドのメインルーチン
  * Refuel the players torch (from the pack or floor)
- * @return \82È\82µ
+ * @return なし
  */
 static void do_cmd_refill_torch(player_type *creature_ptr)
 {
@@ -61,8 +61,8 @@ static void do_cmd_refill_torch(player_type *creature_ptr)
     object_type *o_ptr;
     object_type *j_ptr;
     item_tester_hook = object_can_refill_torch;
-    concptr q = _("\82Ç\82Ì\8f¼\96¾\82Å\96¾\82©\82è\82ð\8b­\82ß\82Ü\82·\82©? ", "Refuel with which torch? ");
-    concptr s = _("\91¼\82É\8f¼\96¾\82ª\82È\82¢\81B", "You have no extra torches.");
+    concptr q = _("どの松明で明かりを強めますか? ", "Refuel with which torch? ");
+    concptr s = _("他に松明がない。", "You have no extra torches.");
     o_ptr = choose_object(creature_ptr, &item, q, s, USE_INVEN | USE_FLOOR, 0);
     if (!o_ptr)
         return;
@@ -70,27 +70,27 @@ static void do_cmd_refill_torch(player_type *creature_ptr)
     take_turn(creature_ptr, 50);
     j_ptr = &creature_ptr->inventory_list[INVEN_LITE];
     j_ptr->xtra4 += o_ptr->xtra4 + 5;
-    msg_print(_("\8f¼\96¾\82ð\8c\8b\8d\87\82µ\82½\81B", "You combine the torches."));
+    msg_print(_("松明を結合した。", "You combine the torches."));
     if ((o_ptr->name2 == EGO_LITE_DARKNESS) && (j_ptr->xtra4 > 0)) {
         j_ptr->xtra4 = 0;
-        msg_print(_("\8f¼\96¾\82ª\8fÁ\82¦\82Ä\82µ\82Ü\82Á\82½\81I", "Your torch has gone out!"));
+        msg_print(_("松明が消えてしまった!", "Your torch has gone out!"));
     } else if ((o_ptr->name2 == EGO_LITE_DARKNESS) || (j_ptr->name2 == EGO_LITE_DARKNESS)) {
         j_ptr->xtra4 = 0;
-        msg_print(_("\82µ\82©\82µ\8f¼\96¾\82Í\91S\82­\8cõ\82ç\82È\82¢\81B", "Curiously, your torch doesn't light."));
+        msg_print(_("しかし松明は全く光らない。", "Curiously, your torch doesn't light."));
     } else if (j_ptr->xtra4 >= FUEL_TORCH) {
         j_ptr->xtra4 = FUEL_TORCH;
-        msg_print(_("\8f¼\96¾\82Ì\8eõ\96½\82Í\8f\\95ª\82¾\81B", "Your torch is fully fueled."));
+        msg_print(_("松明の寿命は十分だ。", "Your torch is fully fueled."));
     } else
-        msg_print(_("\8f¼\96¾\82Í\82¢\82Á\82»\82¤\96¾\82é\82­\8bP\82¢\82½\81B", "Your torch glows more brightly."));
+        msg_print(_("松明はいっそう明るく輝いた。", "Your torch glows more brightly."));
 
     vary_item(creature_ptr, item, -1);
     creature_ptr->update |= PU_TORCH;
 }
 
 /*!
- * @brief \94R\97¿\82ð\95â\8f[\82·\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93
+ * @brief 燃料を補充するコマンドのメインルーチン
  * Refill the players lamp, or restock his torches
- * @return \82È\82µ
+ * @return なし
  */
 void do_cmd_refill(player_type *creature_ptr)
 {
@@ -100,11 +100,11 @@ void do_cmd_refill(player_type *creature_ptr)
         set_action(creature_ptr, ACTION_NONE);
 
     if (o_ptr->tval != TV_LITE)
-        msg_print(_("\8cõ\8c¹\82ð\91\95\94õ\82µ\82Ä\82¢\82È\82¢\81B", "You are not wielding a light."));
+        msg_print(_("光源を装備していない。", "You are not wielding a light."));
     else if (o_ptr->sval == SV_LITE_LANTERN)
         do_cmd_refill_lamp(creature_ptr);
     else if (o_ptr->sval == SV_LITE_TORCH)
         do_cmd_refill_torch(creature_ptr);
     else
-        msg_print(_("\82±\82Ì\8cõ\8c¹\82Í\8eõ\96½\82ð\89\84\82Î\82¹\82È\82¢\81B", "Your light cannot be refilled."));
+        msg_print(_("この光源は寿命を延ばせない。", "Your light cannot be refilled."));
 }
index 3362f6c..144f174 100644 (file)
@@ -1,4 +1,4 @@
-#include "core/object-compressor.h"
+#include "core/object-compressor.h"
 #include "core/player-redraw-types.h"
 #include "core/window-redrawer.h"
 #include "floor/floor-object.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief \83O\83\8d\81[\83o\83\8b\83I\83u\83W\83F\83N\83g\94z\97ñ\82É\91Î\82µ\8ew\92è\94Í\88Í\82Ì\83I\83u\83W\83F\83N\83g\82ð\90®\97\9d\82µ\82ÄID\82Ì\8eá\82¢\8f\87\82É\8añ\82¹\82é /
+ * @brief グローバルオブジェクト配列に対し指定範囲のオブジェクトを整理してIDの若い順に寄せる /
  * Move an object from index i1 to index i2 in the object list
- * @param i1 \90®\97\9d\82µ\82½\82¢\94z\97ñ\82Ì\8en\93_
- * @param i2 \90®\97\9d\82µ\82½\82¢\94z\97ñ\82Ì\8fI\93_
- * @return \82È\82µ
+ * @param i1 整理したい配列の始点
+ * @param i2 整理したい配列の終点
+ * @return なし
  */
 static void compact_objects_aux(floor_type *floor_ptr, OBJECT_IDX i1, OBJECT_IDX i2)
 {
@@ -55,13 +55,13 @@ static void compact_objects_aux(floor_type *floor_ptr, OBJECT_IDX i1, OBJECT_IDX
 }
 
 /*!
- * @brief \83O\83\8d\81[\83o\83\8b\83I\83u\83W\83F\83N\83g\94z\97ñ\82©\82ç\97D\90æ\93x\82Ì\92á\82¢\82à\82Ì\82ð\8dí\8f\9c\82µ\81A\83f\81[\83^\82ð\88³\8fk\82·\82é\81B /
+ * @brief グローバルオブジェクト配列から優先度の低いものを削除し、データを圧縮する。 /
  * Compact and Reorder the object list.
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param size \8dÅ\92á\82Å\82à\8c¸\82ç\82µ\82½\82¢\83I\83u\83W\83F\83N\83g\90\94\82Ì\90\85\8f\80
- * @return \82È\82µ
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param size 最低でも減らしたいオブジェクト数の水準
+ * @return なし
  * @details
- * \81i\8aë\8c¯\82È\82Ì\82Å\8eg\97p\82É\82Í\92\8d\88Ó\82·\82é\82±\82Æ\81j
+ * (危険なので使用には注意すること)
  * This function can be very dangerous, use with caution!\n
  *\n
  * When actually "compacting" objects, we base the saving throw on a\n
@@ -75,7 +75,7 @@ void compact_objects(player_type *player_ptr, int size)
 {
     object_type *o_ptr;
     if (size) {
-        msg_print(_("\83A\83C\83e\83\80\8fî\95ñ\82ð\88³\8fk\82µ\82Ä\82¢\82Ü\82·...", "Compacting objects..."));
+        msg_print(_("アイテム情報を圧縮しています...", "Compacting objects..."));
         player_ptr->redraw |= PR_MAP;
         player_ptr->window |= PW_OVERHEAD | PW_DUNGEON;
     }
index fc8c245..0cbd2e8 100644 (file)
 #include "monster-race/race-flags1.h"
 #include "monster-race/race-flags3.h"
 #include "monster-race/race-indice-types.h"
+#include "monster/monster-info.h"
 #include "monster/monster-status-setter.h"
 #include "monster/monster-status.h"
-#include "monster/monster-info.h"
 
 process_result effect_monster_void(effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       return PROCESS_CONTINUE;
+    return PROCESS_CONTINUE;
 }
 
 process_result effect_monster_acid(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_IM_ACID) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
-       em_ptr->dam /= 9;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_IM_ACID);
+    if ((em_ptr->r_ptr->flagsr & RFR_IM_ACID) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
+    em_ptr->dam /= 9;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_IM_ACID);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_elec(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_IM_ELEC) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
-       em_ptr->dam /= 9;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_IM_ELEC);
+    if ((em_ptr->r_ptr->flagsr & RFR_IM_ELEC) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
+    em_ptr->dam /= 9;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_IM_ELEC);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_fire(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if (em_ptr->r_ptr->flagsr & RFR_IM_FIRE)
-       {
-               em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
-               em_ptr->dam /= 9;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= (RFR_IM_FIRE);
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-               return PROCESS_CONTINUE;
-       }
+    if (em_ptr->r_ptr->flagsr & RFR_IM_FIRE) {
+        em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
+        em_ptr->dam /= 9;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= (RFR_IM_FIRE);
 
-       if ((em_ptr->r_ptr->flags3 & (RF3_HURT_FIRE)) == 0) return PROCESS_CONTINUE;
+        return PROCESS_CONTINUE;
+    }
 
-       em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
-       em_ptr->dam *= 2;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flags3 |= (RF3_HURT_FIRE);
+    if ((em_ptr->r_ptr->flags3 & (RF3_HURT_FIRE)) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
+    em_ptr->dam *= 2;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flags3 |= (RF3_HURT_FIRE);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_cold(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if (em_ptr->r_ptr->flagsr & RFR_IM_COLD)
-       {
-               em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
-               em_ptr->dam /= 9;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-               return PROCESS_CONTINUE;
-       }
+    if (em_ptr->r_ptr->flagsr & RFR_IM_COLD) {
+        em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
+        em_ptr->dam /= 9;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
 
-       if ((em_ptr->r_ptr->flags3 & (RF3_HURT_COLD)) == 0) return PROCESS_CONTINUE;
+        return PROCESS_CONTINUE;
+    }
 
-       em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
-       em_ptr->dam *= 2;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
+    if ((em_ptr->r_ptr->flags3 & (RF3_HURT_COLD)) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
+    em_ptr->dam *= 2;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_pois(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_IM_POIS) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
-       em_ptr->dam /= 9;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
+    if ((em_ptr->r_ptr->flagsr & RFR_IM_POIS) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
+    em_ptr->dam /= 9;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_nuke(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if (em_ptr->r_ptr->flagsr & RFR_IM_POIS)
-       {
-               em_ptr->note = _("には耐性がある。", " resists.");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-               return PROCESS_CONTINUE;
-       }
+    if (em_ptr->r_ptr->flagsr & RFR_IM_POIS) {
+        em_ptr->note = _("には耐性がある。", " resists.");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
 
-       if (one_in_(3)) em_ptr->do_polymorph = TRUE;
+        return PROCESS_CONTINUE;
+    }
 
-       return PROCESS_CONTINUE;
-}
+    if (one_in_(3))
+        em_ptr->do_polymorph = TRUE;
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_hell_fire(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flags3 & RF3_GOOD) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
-       em_ptr->dam *= 2;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flags3 |= RF3_GOOD;
+    if ((em_ptr->r_ptr->flags3 & RF3_GOOD) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
+    em_ptr->dam *= 2;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flags3 |= RF3_GOOD;
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_holy_fire(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0)
-       {
-               em_ptr->note = _("には耐性がある。", " resists.");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-               return PROCESS_CONTINUE;
-       }
-
-       em_ptr->dam *= 2;
-       em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flags3 |= RF3_EVIL;
-
-       return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0) {
+        em_ptr->note = _("には耐性がある。", " resists.");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+        return PROCESS_CONTINUE;
+    }
+
+    em_ptr->dam *= 2;
+    em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flags3 |= RF3_EVIL;
+
+    return PROCESS_CONTINUE;
 }
 
-
 process_result effect_monster_plasma(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_PLAS) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_PLAS);
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_PLAS) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 3;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_PLAS);
 
+    return PROCESS_CONTINUE;
+}
 
 static bool effect_monster_nether_resist(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_NETH) == 0) return FALSE;
-
-       if (em_ptr->r_ptr->flags3 & RF3_UNDEAD)
-       {
-               em_ptr->note = _("には完全な耐性がある!", " is immune.");
-               em_ptr->dam = 0;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
-       }
-       else
-       {
-               em_ptr->note = _("には耐性がある。", " resists.");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       }
-
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_NETH);
-
-       return TRUE;
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_NETH) == 0)
+        return FALSE;
+
+    if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) {
+        em_ptr->note = _("には完全な耐性がある!", " is immune.");
+        em_ptr->dam = 0;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
+    } else {
+        em_ptr->note = _("には耐性がある。", " resists.");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+    }
+
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_NETH);
+
+    return TRUE;
 }
 
-
 process_result effect_monster_nether(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       if (effect_monster_nether_resist(caster_ptr, em_ptr)) return PROCESS_CONTINUE;
-       if ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0) return PROCESS_CONTINUE;
+    if (effect_monster_nether_resist(caster_ptr, em_ptr) || ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0))
+        return PROCESS_CONTINUE;
 
-       em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
-       em_ptr->dam /= 2;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
+    em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
+    em_ptr->dam /= 2;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
 
-       return PROCESS_CONTINUE;
+    return PROCESS_CONTINUE;
 }
 
-
 process_result effect_monster_water(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_WATE) == 0) return PROCESS_CONTINUE;
-
-       if ((em_ptr->m_ptr->r_idx == MON_WATER_ELEM) || (em_ptr->m_ptr->r_idx == MON_UNMAKER))
-       {
-               em_ptr->note = _("には完全な耐性がある!", " is immune.");
-               em_ptr->dam = 0;
-       }
-       else
-       {
-               em_ptr->note = _("には耐性がある。", " resists.");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       }
-
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_WATE);
-
-       return PROCESS_CONTINUE;
-}
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_WATE) == 0)
+        return PROCESS_CONTINUE;
+
+    if ((em_ptr->m_ptr->r_idx == MON_WATER_ELEM) || (em_ptr->m_ptr->r_idx == MON_UNMAKER)) {
+        em_ptr->note = _("には完全な耐性がある!", " is immune.");
+        em_ptr->dam = 0;
+    } else {
+        em_ptr->note = _("には耐性がある。", " resists.");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+    }
 
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_WATE);
+
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_chaos(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if (em_ptr->r_ptr->flagsr & RFR_RES_CHAO)
-       {
-               em_ptr->note = _("には耐性がある。", " resists.");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= (RFR_RES_CHAO);
-       }
-       else if ((em_ptr->r_ptr->flags3 & RF3_DEMON) && one_in_(3))
-       {
-               em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
-       }
-       else
-       {
-               em_ptr->do_polymorph = TRUE;
-               em_ptr->do_conf = (5 + randint1(11) + em_ptr->r) / (em_ptr->r + 1);
-       }
-
-       return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if (em_ptr->r_ptr->flagsr & RFR_RES_CHAO) {
+        em_ptr->note = _("には耐性がある。", " resists.");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= (RFR_RES_CHAO);
+    } else if ((em_ptr->r_ptr->flags3 & RF3_DEMON) && one_in_(3)) {
+        em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
+    } else {
+        em_ptr->do_polymorph = TRUE;
+        em_ptr->do_conf = (5 + randint1(11) + em_ptr->r) / (em_ptr->r + 1);
+    }
+
+    return PROCESS_CONTINUE;
 }
 
-
 process_result effect_monster_shards(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 3;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_rocket(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
-       em_ptr->dam /= 2;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
+    em_ptr->dam /= 2;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_sound(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_SOUN) == 0)
-       {
-               em_ptr->do_stun = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
-               return PROCESS_CONTINUE;
-       }
-
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 2; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_SOUN);
-
-       return PROCESS_CONTINUE;
-}
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_SOUN) == 0) {
+        em_ptr->do_stun = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
+        return PROCESS_CONTINUE;
+    }
 
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 2;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_SOUN);
+
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_confusion(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flags3 & RF3_NO_CONF) == 0)
-       {
-               em_ptr->do_conf = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
-               return PROCESS_CONTINUE;
-       }
-
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
-
-       return PROCESS_CONTINUE;
-}
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if ((em_ptr->r_ptr->flags3 & RF3_NO_CONF) == 0) {
+        em_ptr->do_conf = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
+        return PROCESS_CONTINUE;
+    }
 
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 3;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
+
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_disenchant(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_DISE) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_DISE);
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_DISE) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 3;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_DISE);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_nexus(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_NEXU) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_NEXU);
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_NEXU) == 0)
+        return PROCESS_CONTINUE;
 
-       return PROCESS_CONTINUE;
-}
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 3;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_NEXU);
 
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_force(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_WALL) == 0)
-       {
-               em_ptr->do_stun = (randint1(15) + em_ptr->r) / (em_ptr->r + 1);
-               return PROCESS_CONTINUE;
-       }
-
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_WALL);
-
-       return PROCESS_CONTINUE;
-}
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_WALL) == 0) {
+        em_ptr->do_stun = (randint1(15) + em_ptr->r) / (em_ptr->r + 1);
+        return PROCESS_CONTINUE;
+    }
 
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 3;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_WALL);
+
+    return PROCESS_CONTINUE;
+}
 
 // Powerful monsters can resists and normal monsters slow down.
 process_result effect_monster_inertial(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if (em_ptr->r_ptr->flagsr & RFR_RES_INER)
-       {
-               em_ptr->note = _("には耐性がある。", " resists.");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= (RFR_RES_INER);
-
-               return PROCESS_CONTINUE;
-       }
-
-       if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
-               (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
-       {
-               em_ptr->obvious = FALSE;
-               return PROCESS_CONTINUE;
-       }
-
-       if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
-               em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
-
-       return PROCESS_CONTINUE;
-}
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if (em_ptr->r_ptr->flagsr & RFR_RES_INER) {
+        em_ptr->note = _("には耐性がある。", " resists.");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= (RFR_RES_INER);
+
+        return PROCESS_CONTINUE;
+    }
+
+    if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+        em_ptr->obvious = FALSE;
+        return PROCESS_CONTINUE;
+    }
 
+    if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
+        em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
+
+    return PROCESS_CONTINUE;
+}
 
 process_result effect_monster_time(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_TIME) == 0)
-       {
-               em_ptr->do_time = (em_ptr->dam + 1) / 2;
-               return PROCESS_CONTINUE;
-       }
-
-       em_ptr->note = _("には耐性がある。", " resists.");
-       em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= (RFR_RES_TIME);
-
-       return PROCESS_CONTINUE;
-}
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_TIME) == 0) {
+        em_ptr->do_time = (em_ptr->dam + 1) / 2;
+        return PROCESS_CONTINUE;
+    }
 
+    em_ptr->note = _("には耐性がある。", " resists.");
+    em_ptr->dam *= 3;
+    em_ptr->dam /= randint1(6) + 6;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= (RFR_RES_TIME);
+
+    return PROCESS_CONTINUE;
+}
 
 static bool effect_monster_gravity_resist_teleport(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
 
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flagsr & RFR_RES_TELE) == 0) return FALSE;
+    if ((em_ptr->r_ptr->flagsr & RFR_RES_TELE) == 0)
+        return FALSE;
 
-       if (em_ptr->r_ptr->flags1 & (RF1_UNIQUE))
-       {
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
+    if (em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) {
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
 
-               em_ptr->note = _("には効果がなかった。", " is unaffected!");
-               return TRUE;
-       }
+        em_ptr->note = _("には効果がなかった。", " is unaffected!");
+        return TRUE;
+    }
 
-       if (em_ptr->r_ptr->level <= randint1(100)) return FALSE;
+    if (em_ptr->r_ptr->level <= randint1(100))
+        return FALSE;
 
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
 
-       em_ptr->note = _("には耐性がある!", " resists!");
-       return TRUE;
+    em_ptr->note = _("には耐性がある!", " resists!");
+    return TRUE;
 }
 
-
 static void effect_monster_gravity_slow(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
-               (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
-               em_ptr->obvious = FALSE;
+    if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
+        em_ptr->obvious = FALSE;
 
-       if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
-               em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
+    if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
+        em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
 }
 
-
 static void effect_monster_gravity_stun(effect_monster_type *em_ptr)
 {
-       em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
-       if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
-               (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
-       {
-               em_ptr->do_stun = 0;
-               em_ptr->note = _("には効果がなかった。", " is unaffected!");
-               em_ptr->obvious = FALSE;
-       }
+    em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
+    if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+        em_ptr->do_stun = 0;
+        em_ptr->note = _("には効果がなかった。", " is unaffected!");
+        em_ptr->obvious = FALSE;
+    }
 }
 
-
 /*
  * Powerful monsters can resist and normal monsters slow down
  * Furthermore, this magic can make non-unique monsters slow/stun.
  */
 process_result effect_monster_gravity(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       em_ptr->do_dist = effect_monster_gravity_resist_teleport(caster_ptr, em_ptr) ? 0 : 10;
-       if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding)) em_ptr->do_dist = 0;
-
-       if (em_ptr->r_ptr->flagsr & RFR_RES_GRAV)
-       {
-               em_ptr->note = _("には耐性がある!", " resists!");
-               em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
-               em_ptr->do_dist = 0;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= (RFR_RES_GRAV);
-
-               return PROCESS_CONTINUE;
-       }
-
-       effect_monster_gravity_slow(caster_ptr, em_ptr);
-       effect_monster_gravity_stun(em_ptr);
-       return PROCESS_CONTINUE;
+    em_ptr->do_dist = effect_monster_gravity_resist_teleport(caster_ptr, em_ptr) ? 0 : 10;
+    if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding))
+        em_ptr->do_dist = 0;
+
+    if (em_ptr->r_ptr->flagsr & RFR_RES_GRAV) {
+        em_ptr->note = _("には耐性がある!", " resists!");
+        em_ptr->dam *= 3;
+        em_ptr->dam /= randint1(6) + 6;
+        em_ptr->do_dist = 0;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= (RFR_RES_GRAV);
+
+        return PROCESS_CONTINUE;
+    }
+
+    effect_monster_gravity_slow(caster_ptr, em_ptr);
+    effect_monster_gravity_stun(em_ptr);
+    return PROCESS_CONTINUE;
 }
 
-
 process_result effect_monster_disintegration(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-       if ((em_ptr->r_ptr->flags3 & RF3_HURT_ROCK) == 0) return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    if ((em_ptr->r_ptr->flags3 & RF3_HURT_ROCK) == 0)
+        return PROCESS_CONTINUE;
 
-       if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-               em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
+    if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+        em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
 
-       em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
-       em_ptr->note_dies = _("は蒸発した!", " evaporates!");
-       em_ptr->dam *= 2;
-       return PROCESS_CONTINUE;
+    em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
+    em_ptr->note_dies = _("は蒸発した!", " evaporates!");
+    em_ptr->dam *= 2;
+    return PROCESS_CONTINUE;
 }
 
 process_result effect_monster_icee_bolt(player_type *caster_ptr, effect_monster_type *em_ptr)
 {
-       if (em_ptr->seen) em_ptr->obvious = TRUE;
-
-       em_ptr->do_stun = (randint1(15) + 1) / (em_ptr->r + 1);
-       if (em_ptr->r_ptr->flagsr & RFR_IM_COLD)
-       {
-               em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
-               em_ptr->dam /= 9;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
-       }
-       else if (em_ptr->r_ptr->flags3 & (RF3_HURT_COLD))
-       {
-               em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
-               em_ptr->dam *= 2;
-               if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
-                       em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
-       }
-
-       return PROCESS_CONTINUE;
+    if (em_ptr->seen)
+        em_ptr->obvious = TRUE;
+
+    em_ptr->do_stun = (randint1(15) + 1) / (em_ptr->r + 1);
+    if (em_ptr->r_ptr->flagsr & RFR_IM_COLD) {
+        em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
+        em_ptr->dam /= 9;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
+    } else if (em_ptr->r_ptr->flags3 & (RF3_HURT_COLD)) {
+        em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
+        em_ptr->dam *= 2;
+        if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+            em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
+    }
+
+    return PROCESS_CONTINUE;
 }
index d47a355..eda2656 100644 (file)
@@ -1,4 +1,4 @@
-#include "effect/effect-player-switcher.h"
+#include "effect/effect-player-switcher.h"
 #include "effect/effect-player-curse.h"
 #include "effect/effect-player-oldies.h"
 #include "effect/effect-player-resist-hurt.h"
@@ -8,25 +8,25 @@
 
 /*!
  * @brief
- * \96\82\96@\82Ì\8cø\89Ê\82É\82æ\82Á\82Ä\97l\81X\82È\83\81\83b\83Z\81[\82ð\8fo\97Í\82µ\82½\82è\97^\82¦\82é\83_\83\81\81[\83W\82Ì\91\9d\8c¸\82ð\8ds\82Á\82½\82è\82·\82é
- * @param target_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param em_ptr \83v\83\8c\81[\83\84\81[\8cø\89Ê\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \82È\82µ
+ * 魔法の効果によって様々なメッセーを出力したり与えるダメージの増減を行ったりする
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param em_ptr プレーヤー効果構造体への参照ポインタ
+ * @return なし
  */
 void switch_effects_player(player_type *target_ptr, effect_player_type *ep_ptr)
 {
     switch (ep_ptr->effect_type) {
     case GF_ACID:
-        effect_player_elements(target_ptr, ep_ptr, _("\8e_\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by acid!"), acid_dam);
+        effect_player_elements(target_ptr, ep_ptr, _("酸で攻撃された!", "You are hit by acid!"), acid_dam);
         return;
     case GF_FIRE:
-        effect_player_elements(target_ptr, ep_ptr, _("\89Î\89\8a\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by fire!"), fire_dam);
+        effect_player_elements(target_ptr, ep_ptr, _("火炎で攻撃された!", "You are hit by fire!"), fire_dam);
         return;
     case GF_COLD:
-        effect_player_elements(target_ptr, ep_ptr, _("\97â\8bC\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by cold!"), cold_dam);
+        effect_player_elements(target_ptr, ep_ptr, _("冷気で攻撃された!", "You are hit by cold!"), cold_dam);
         return;
     case GF_ELEC:
-        effect_player_elements(target_ptr, ep_ptr, _("\93d\8c\82\82Å\8dU\8c\82\82³\82ê\82½\81I", "You are hit by lightning!"), elec_dam);
+        effect_player_elements(target_ptr, ep_ptr, _("電撃で攻撃された!", "You are hit by lightning!"), elec_dam);
         return;
     case GF_POIS:
         effect_player_poison(target_ptr, ep_ptr);
index 246b510..12902b5 100644 (file)
@@ -402,7 +402,7 @@ static void describe_pval(flavor_type *flavor_ptr)
 
 static void describe_lamp_life(flavor_type *flavor_ptr)
 {
-    if ((flavor_ptr->o_ptr->tval != TV_LITE) || ((object_is_fixed_artifact(flavor_ptr->o_ptr) && (flavor_ptr->o_ptr->sval != SV_LITE_FEANOR))))
+    if ((flavor_ptr->o_ptr->tval != TV_LITE) || (object_is_fixed_artifact(flavor_ptr->o_ptr) || (flavor_ptr->o_ptr->sval == SV_LITE_FEANOR)))
         return;
 
     flavor_ptr->t = object_desc_str(flavor_ptr->t, _("(", " (with "));
index 62ccdee..cde6a27 100644 (file)
@@ -1,15 +1,15 @@
-#include "floor/line-of-sight.h"
+#include "floor/line-of-sight.h"
 #include "floor/cave.h"
 #include "system/floor-type-definition.h"
 
 /*!
- * @brief LOS(Line Of Sight / \8e\8b\90ü\82ª\92Ê\82Á\82Ä\82¢\82é\82©)\82Ì\94»\92è\82ð\8ds\82¤\81B
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y1 \8en\93_\82Ìy\8dÀ\95W
- * @param x1 \8en\93_\82Ìx\8dÀ\95W
- * @param y2 \8fI\93_\82Ìy\8dÀ\95W
- * @param x2 \8fI\93_\82Ìx\8dÀ\95W
- * @return LOS\82ª\92Ê\82Á\82Ä\82¢\82é\82È\82çTRUE\82ð\95Ô\82·\81B
+ * @brief LOS(Line Of Sight / 視線が通っているか)の判定を行う。
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y1 始点のy座標
+ * @param x1 始点のx座標
+ * @param y2 終点のy座標
+ * @param x2 終点のx座標
+ * @return LOSが通っているならTRUEを返す。
  * @details
  * A simple, fast, integer-based line-of-sight algorithm.  By Joseph Hall,\n
  * 4116 Brewster Drive, Raleigh NC 27606.  Email to jnh@ecemwl.ncsu.edu.\n
index f030329..fffa5f4 100644 (file)
@@ -1,4 +1,4 @@
-#include "grid/door.h"
+#include "grid/door.h"
 #include "dungeon/dungeon-flag-types.h"
 #include "dungeon/dungeon.h"
 #include "floor/cave.h"
@@ -52,12 +52,12 @@ void add_door(player_type *player_ptr, POSITION x, POSITION y)
 }
 
 /*!
- * @brief \89B\82µ\83h\83A\82ð\94z\92u\82·\82é
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌY\8dÀ\95W
- * @param x \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌX\8dÀ\95W
- * @param type DOOR_DEFAULT / DOOR_DOOR / DOOR_GLASS_DOOR / DOOR_CURTAIN \82Ì\82¢\82¸\82ê\82©
- * @return \82È\82µ
+ * @brief 隠しドアを配置する
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y 配置したいフロアのY座標
+ * @param x 配置したいフロアのX座標
+ * @param type DOOR_DEFAULT / DOOR_DOOR / DOOR_GLASS_DOOR / DOOR_CURTAIN のいずれか
+ * @return なし
  */
 void place_secret_door(player_type *player_ptr, POSITION y, POSITION x, int type)
 {
@@ -91,11 +91,11 @@ void place_secret_door(player_type *player_ptr, POSITION y, POSITION x, int type
 }
 
 /*!
- * @brief \8c®\82Ì\82©\82©\82Á\82½\83h\83A\82ð\94z\92u\82·\82é
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌY\8dÀ\95W
- * @param x \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌX\8dÀ\95W
- * @return \82È\82µ
+ * @brief 鍵のかかったドアを配置する
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y 配置したいフロアのY座標
+ * @param x 配置したいフロアのX座標
+ * @return なし
  */
 void place_locked_door(player_type *player_ptr, POSITION y, POSITION x)
 {
@@ -111,12 +111,12 @@ void place_locked_door(player_type *player_ptr, POSITION y, POSITION x)
 }
 
 /*!
- * @brief \8f\8a\92è\82Ì\88Ê\92u\82É\82³\82Ü\82´\82Ü\82È\8fó\91Ô\82â\8eí\97Þ\82Ì\83h\83A\82ð\94z\92u\82·\82é / Place a random type of door at the given location
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \83h\83A\82Ì\94z\92u\82ð\8e\8e\82Ý\82½\82¢\83}\83X\82ÌY\8dÀ\95W
- * @param x \83h\83A\82Ì\94z\92u\82ð\8e\8e\82Ý\82½\82¢\83}\83X\82ÌX\8dÀ\95W
- * @param room \95\94\89®\82É\90Ú\82µ\82Ä\82¢\82é\8fê\8d\87\8cü\82¯\82Ì\83h\83A\90\90¬\82©\94Û\82©
- * @return \82È\82µ
+ * @brief 所定の位置にさまざまな状態や種類のドアを配置する / Place a random type of door at the given location
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y ドアの配置を試みたいマスのY座標
+ * @param x ドアの配置を試みたいマスのX座標
+ * @param room 部屋に接している場合向けのドア生成か否か
+ * @return なし
  */
 void place_random_door(player_type *player_ptr, POSITION y, POSITION x, bool room)
 {
@@ -170,12 +170,12 @@ void place_random_door(player_type *player_ptr, POSITION y, POSITION x, bool roo
 }
 
 /*!
- * @brief \8f\8a\92è\82Ì\88Ê\92u\82É\8ae\8eí\82Ì\95Â\82\82½\83h\83A\82ð\94z\92u\82·\82é / Place a random type of normal door at the given location.
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \83h\83A\82Ì\94z\92u\82ð\8e\8e\82Ý\82½\82¢\83}\83X\82ÌY\8dÀ\95W
- * @param x \83h\83A\82Ì\94z\92u\82ð\8e\8e\82Ý\82½\82¢\83}\83X\82ÌX\8dÀ\95W
- * @param type \83h\83A\82Ì\92n\8c`ID
- * @return \82È\82µ
+ * @brief 所定の位置に各種の閉じたドアを配置する / Place a random type of normal door at the given location.
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y ドアの配置を試みたいマスのY座標
+ * @param x ドアの配置を試みたいマスのX座標
+ * @param type ドアの地形ID
+ * @return なし
  */
 void place_closed_door(player_type *player_ptr, POSITION y, POSITION x, int type)
 {
index 53aeb3c..cdb890e 100644 (file)
@@ -1,4 +1,4 @@
-#include "grid/object-placer.h"
+#include "grid/object-placer.h"
 #include "floor/cave.h"
 #include "floor/floor-object.h"
 #include "grid/grid.h"
 #include "world/world-object.h"
 
 /*!
- * @brief \83t\83\8d\83A\82Ì\8ew\92è\88Ê\92u\82É\90\90¬\8aK\82É\89\9e\82\82½\8dà\95ó\83I\83u\83W\83F\83N\83g\82Ì\90\90¬\82ð\8ds\82¤\81B
+ * @brief フロアの指定位置に生成階に応じた財宝オブジェクトの生成を行う。
  * Places a treasure (Gold or Gems) at given location
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌY\8dÀ\95W
- * @param x \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌX\8dÀ\95W
- * @return \90\90¬\82É\90¬\8c÷\82µ\82½\82çTRUE\82ð\95Ô\82·\81B
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y 配置したいフロアのY座標
+ * @param x 配置したいフロアのX座標
+ * @return 生成に成功したらTRUEを返す。
  * @details
  * The location must be a legal, clean, floor grid.
  */
@@ -55,13 +55,13 @@ void place_gold(player_type *player_ptr, POSITION y, POSITION x)
 }
 
 /*!
- * @brief \83t\83\8d\83A\82Ì\8ew\92è\88Ê\92u\82É\90\90¬\8aK\82É\89\9e\82\82½\83x\81[\83X\83A\83C\83e\83\80\82Ì\90\90¬\82ð\8ds\82¤\81B
+ * @brief フロアの指定位置に生成階に応じたベースアイテムの生成を行う。
  * Attempt to place an object (normal or good/great) at the given location.
- * @param owner_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌY\8dÀ\95W
- * @param x \94z\92u\82µ\82½\82¢\83t\83\8d\83A\82ÌX\8dÀ\95W
- * @param mode \83I\83v\83V\83\87\83\93\83t\83\89\83O
- * @return \90\90¬\82É\90¬\8c÷\82µ\82½\82çTRUE\82ð\95Ô\82·\81B
+ * @param owner_ptr プレーヤーへの参照ポインタ
+ * @param y 配置したいフロアのY座標
+ * @param x 配置したいフロアのX座標
+ * @param mode オプションフラグ
+ * @return 生成に成功したらTRUEを返す。
  * @details
  * This routine plays nasty games to generate the "special artifacts".\n
  * This routine uses "object_level" for the "generation level".\n
index a73351c..0e428b0 100644 (file)
@@ -1,4 +1,4 @@
-#include "grid/stair.h"
+#include "grid/stair.h"
 #include "dungeon/dungeon.h"
 #include "dungeon/quest.h"
 #include "game-option/birth-options.h"
@@ -9,11 +9,11 @@
 #include "system/object-type-definition.h"
 
 /*!
- * @brief \8f\8a\92è\82Ì\88Ê\92u\82É\8fã\82è\8aK\92i\82©\89º\82è\8aK\92i\82ð\94z\92u\82·\82é / Place an up/down staircase at given location
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \94z\92u\82ð\8e\8e\82Ý\82½\82¢\83}\83X\82ÌY\8dÀ\95W
- * @param x \94z\92u\82ð\8e\8e\82Ý\82½\82¢\83}\83X\82ÌX\8dÀ\95W
- * @return \82È\82µ
+ * @brief 所定の位置に上り階段か下り階段を配置する / Place an up/down staircase at given location
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y 配置を試みたいマスのY座標
+ * @param x 配置を試みたいマスのX座標
+ * @return なし
  */
 void place_random_stairs(player_type *player_ptr, POSITION y, POSITION x)
 {
@@ -51,13 +51,13 @@ void place_random_stairs(player_type *player_ptr, POSITION y, POSITION x)
 }
 
 /*!
- * @brief \8ew\92è\82³\82ê\82½\8dÀ\95W\82ª\92n\90k\82â\8aK\92i\90\90¬\82Ì\91Î\8fÛ\82Æ\82È\82é\83}\83X\82©\82ð\95Ô\82·\81B / Determine if a given location may be "destroyed"
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y y\8dÀ\95W
- * @param x x\8dÀ\95W
- * @return \8ae\8eí\82Ì\95Ï\8dX\82ª\89Â\94\\82È\82çTRUE\82ð\95Ô\82·\81B
+ * @brief 指定された座標が地震や階段生成の対象となるマスかを返す。 / Determine if a given location may be "destroyed"
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y y座標
+ * @param x x座標
+ * @return 各種の変更が可能ならTRUEを返す。
  * @details
- * \8fð\8c\8f\82Í\89i\8bv\92n\8c`\82Å\82È\82­\81A\82È\82¨\82©\82Â\8aY\93\96\82Ì\83}\83X\82É\83A\81[\83e\83B\83t\83@\83N\83g\82ª\91\8dÝ\82µ\82È\82¢\82©\81A\82Å\82 \82é\81B\89p\8cê\82Ì\8b\8c\83R\83\81\83\93\83g\82É\94½\82µ\82Ä\81\96\94j\89ó\81\96\82Ì\97}\8e~\94»\92è\82É\82Í\8c»\8dÝ\8eg\82í\82ê\82Ä\82¢\82È\82¢\81B
+ * 条件は永久地形でなく、なおかつ該当のマスにアーティファクトが存在しないか、である。英語の旧コメントに反して*破壊*の抑止判定には現在使われていない。
  */
 bool cave_valid_bold(floor_type *floor_ptr, POSITION y, POSITION x)
 {
index 9b1dd97..9d3af53 100644 (file)
@@ -1,4 +1,4 @@
-#include "info-reader/dungeon-reader.h"
+#include "info-reader/dungeon-reader.h"
 #include "dungeon/dungeon.h"
 #include "info-reader/dungeon-info-tokens-table.h"
 #include "info-reader/feature-reader.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief \83e\83L\83X\83g\83g\81[\83N\83\93\82ð\91\96\8d¸\82µ\82Ä\83t\83\89\83O\82ð\88ê\82Â\93¾\82é(\83_\83\93\83W\83\87\83\93\97p) /
+ * @brief テキストトークンを走査してフラグを一つ得る(ダンジョン用) /
  * Grab one flag for a dungeon type from a textual string
- * @param d_ptr \95Û\8aÇ\90æ\82Ì\83_\83\93\83W\83\87\83\93\8d\\91¢\91Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param what \8eQ\8fÆ\8c³\82Ì\95\8e\9a\97ñ\83|\83C\83\93\83^
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param d_ptr 保管先のダンジョン構造体参照ポインタ
+ * @param what 参照元の文字列ポインタ
+ * @return エラーコード
  */
 static errr grab_one_dungeon_flag(dungeon_type *d_ptr, concptr what)
 {
     if (grab_one_flag(&d_ptr->flags1, d_info_flags1, what) == 0)
         return 0;
 
-    msg_format(_("\96¢\92m\82Ì\83_\83\93\83W\83\87\83\93\81E\83t\83\89\83O '%s'\81B", "Unknown dungeon type flag '%s'."), what);
+    msg_format(_("未知のダンジョン・フラグ '%s'。", "Unknown dungeon type flag '%s'."), what);
     return 1;
 }
 
 /*!
- * @brief \83e\83L\83X\83g\83g\81[\83N\83\93\82ð\91\96\8d¸\82µ\82Ä\83t\83\89\83O\82ð\88ê\82Â\93¾\82é(\83\82\83\93\83X\83^\81[\82Ì\83_\83\93\83W\83\87\83\93\8fo\8c»\8fð\8c\8f\97p1) /
+ * @brief テキストトークンを走査してフラグを一つ得る(モンスターのダンジョン出現条件用1) /
  * Grab one (basic) flag in a monster_race from a textual string
- * @param d_ptr \95Û\8aÇ\90æ\82Ì\83_\83\93\83W\83\87\83\93\8d\\91¢\91Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param what \8eQ\8fÆ\8c³\82Ì\95\8e\9a\97ñ\83|\83C\83\93\83^
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param d_ptr 保管先のダンジョン構造体参照ポインタ
+ * @param what 参照元の文字列ポインタ
+ * @return エラーコード
  */
 static errr grab_one_basic_monster_flag(dungeon_type *d_ptr, concptr what)
 {
@@ -55,16 +55,16 @@ static errr grab_one_basic_monster_flag(dungeon_type *d_ptr, concptr what)
     if (grab_one_flag(&d_ptr->mflagsr, r_info_flagsr, what) == 0)
         return 0;
 
-    msg_format(_("\96¢\92m\82Ì\83\82\83\93\83X\83^\81[\81E\83t\83\89\83O '%s'\81B", "Unknown monster flag '%s'."), what);
+    msg_format(_("未知のモンスター・フラグ '%s'。", "Unknown monster flag '%s'."), what);
     return 1;
 }
 
 /*!
- * @brief \83e\83L\83X\83g\83g\81[\83N\83\93\82ð\91\96\8d¸\82µ\82Ä\83t\83\89\83O\82ð\88ê\82Â\93¾\82é(\83\82\83\93\83X\83^\81[\82Ì\83_\83\93\83W\83\87\83\93\8fo\8c»\8fð\8c\8f\97p2) /
+ * @brief テキストトークンを走査してフラグを一つ得る(モンスターのダンジョン出現条件用2) /
  * Grab one (spell) flag in a monster_race from a textual string
- * @param d_ptr \95Û\8aÇ\90æ\82Ì\83_\83\93\83W\83\87\83\93\8d\\91¢\91Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param what \8eQ\8fÆ\8c³\82Ì\95\8e\9a\97ñ\83|\83C\83\93\83^
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param d_ptr 保管先のダンジョン構造体参照ポインタ
+ * @param what 参照元の文字列ポインタ
+ * @return エラーコード
  */
 static errr grab_one_spell_monster_flag(dungeon_type *d_ptr, concptr what)
 {
@@ -77,16 +77,16 @@ static errr grab_one_spell_monster_flag(dungeon_type *d_ptr, concptr what)
     if (grab_one_flag(&d_ptr->m_a_ability_flags2, r_a_ability_flags2, what) == 0)
         return 0;
 
-    msg_format(_("\96¢\92m\82Ì\83\82\83\93\83X\83^\81[\81E\83t\83\89\83O '%s'\81B", "Unknown monster flag '%s'."), what);
+    msg_format(_("未知のモンスター・フラグ '%s'。", "Unknown monster flag '%s'."), what);
     return 1;
 }
 
 /*!
- * @brief \83_\83\93\83W\83\87\83\93\8fî\95ñ(d_info)\82Ì\83p\81[\83X\8aÖ\90\94 /
+ * @brief ダンジョン情報(d_info)のパース関数 /
  * Initialize the "d_info" array, by parsing an ascii "template" file
- * @param buf \83e\83L\83X\83g\97ñ
- * @param head \83w\83b\83_\8d\\91¢\91Ì
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param buf テキスト列
+ * @param head ヘッダ構造体
+ * @return エラーコード
  */
 errr parse_d_info(char *buf, angband_header *head)
 {
index 47cb25a..8e3408a 100644 (file)
@@ -5,7 +5,7 @@
 /*
  * Size of memory reserved for initialization of some arrays
  */
-#define FAKE_NAME_SIZE 40 * 1024L /*!< ゲーム情報の種別毎に用意される名前用バッファの容量 */
+#define FAKE_NAME_SIZE 100 * 1024L /*!< ゲーム情報の種別毎に用意される名前用バッファの容量 */
 #define FAKE_TEXT_SIZE 150 * 1024L /*!< ゲーム情報の種別毎に用意されるテキスト用バッファの容量 */
 #define FAKE_TAG_SIZE 10 * 1024L /*!< ゲーム情報の種別毎に用意されるタグ用バッファの容量 */
 
index 1e859f4..b24240b 100644 (file)
@@ -1,4 +1,4 @@
-#include "info-reader/kind-reader.h"
+#include "info-reader/kind-reader.h"
 #include "info-reader/kind-info-tokens-table.h"
 #include "main/angband-headers.h"
 #include "object-enchant/tr-types.h"
@@ -9,11 +9,11 @@
 #include "view/display-messages.h"
 
 /*!
- * @brief \83e\83L\83X\83g\83g\81[\83N\83\93\82ð\91\96\8d¸\82µ\82Ä\83t\83\89\83O\82ð\88ê\82Â\93¾\82é(\83x\81[\83X\83A\83C\83e\83\80\97p) /
+ * @brief テキストトークンを走査してフラグを一つ得る(ベースアイテム用) /
  * Grab one flag in an object_kind from a textual string
- * @param k_ptr \95Û\8aÇ\90æ\82Ì\83x\81[\83X\83A\83C\83e\83\80\8d\\91¢\91Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param what \8eQ\8fÆ\8c³\82Ì\95\8e\9a\97ñ\83|\83C\83\93\83^
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param k_ptr 保管先のベースアイテム構造体参照ポインタ
+ * @param what 参照元の文字列ポインタ
+ * @return エラーコード
  */
 static errr grab_one_kind_flag(object_kind *k_ptr, concptr what)
 {
@@ -27,16 +27,16 @@ static errr grab_one_kind_flag(object_kind *k_ptr, concptr what)
     if (grab_one_flag(&k_ptr->gen_flags, k_info_gen_flags, what) == 0)
         return 0;
 
-    msg_format(_("\96¢\92m\82Ì\83A\83C\83e\83\80\81E\83t\83\89\83O '%s'\81B", "Unknown object flag '%s'."), what);
+    msg_format(_("未知のアイテム・フラグ '%s'。", "Unknown object flag '%s'."), what);
     return 1;
 }
 
 /*!
- * @brief \83x\81[\83X\83A\83C\83e\83\80(k_info)\82Ì\83p\81[\83X\8aÖ\90\94 /
+ * @brief ベースアイテム(k_info)のパース関数 /
  * Initialize the "k_info" array, by parsing an ascii "template" file
- * @param buf \83e\83L\83X\83g\97ñ
- * @param head \83w\83b\83_\8d\\91¢\91Ì
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param buf テキスト列
+ * @param head ヘッダ構造体
+ * @return エラーコード
  */
 errr parse_k_info(char *buf, angband_header *head)
 {
@@ -80,8 +80,8 @@ errr parse_k_info(char *buf, angband_header *head)
         return 3;
     }
 #ifdef JP
-    /* \89p\8cê\96¼\82ð\93Ç\82Þ\83\8b\81[\83`\83\93\82ð\92Ç\89Á */
-    /* 'E' \82©\82ç\8en\82Ü\82é\8ds\82Í\89p\8cê\96¼\82Æ\82µ\82Ä\82¢\82é */
+    /* 英語名を読むルーチンを追加 */
+    /* 'E' から始まる行は英語名としている */
     else if (buf[0] == 'E') {
         /* nothing to do */
     }
index 7ff0757..3f899cf 100644 (file)
@@ -1,11 +1,11 @@
 #pragma once
 
-/*
- * @details 2 - 4は使われなくなったので欠番
- */
 typedef enum parse_error_type {
     PARSE_ERROR_NONE = 0,
        PARSE_ERROR_GENERIC = 1,
+    PARSE_ERROR_ABSOLETE_FILE = 2,
+    PARSE_ERROR_MISSING_RECORD_HEADER = 3,
+    PARSE_ERROR_NON_SEQUENTIAL_RECORDS = 4,
     PARSE_ERROR_INVALID_FLAG = 5,
     PARSE_ERROR_UNDEFINED_DIRECTIVE = 6,
     PARSE_ERROR_OUT_OF_MEMORY = 7,
index b7a4b69..78a87ce 100644 (file)
@@ -1,4 +1,5 @@
 #include "info-reader/race-reader.h"
+#include "info-reader/parse-error-types.h"
 #include "info-reader/race-info-tokens-table.h"
 #include "main/angband-headers.h"
 #include "monster-race/monster-race.h"
 static errr grab_one_basic_flag(monster_race *r_ptr, concptr what)
 {
     if (grab_one_flag(&r_ptr->flags1, r_info_flags1, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->flags2, r_info_flags2, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->flags3, r_info_flags3, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->flags7, r_info_flags7, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->flags8, r_info_flags8, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->flags9, r_info_flags9, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->flagsr, r_info_flagsr, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     msg_format(_("未知のモンスター・フラグ '%s'。", "Unknown monster flag '%s'."), what);
-    return 1;
+    return PARSE_ERROR_GENERIC;
 }
 
 /*!
@@ -50,16 +51,16 @@ static errr grab_one_basic_flag(monster_race *r_ptr, concptr what)
 static errr grab_one_spell_flag(monster_race *r_ptr, concptr what)
 {
     if (grab_one_flag(&r_ptr->flags4, r_info_flags4, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->a_ability_flags1, r_a_ability_flags1, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     if (grab_one_flag(&r_ptr->a_ability_flags2, r_a_ability_flags2, what) == 0)
-        return 0;
+        return PARSE_ERROR_NONE;
 
     msg_format(_("未知のモンスター・フラグ '%s'。", "Unknown monster flag '%s'."), what);
-    return 1;
+    return PARSE_ERROR_GENERIC;
 }
 
 /*!
@@ -76,28 +77,29 @@ errr parse_r_info(char *buf, angband_header *head)
     if (buf[0] == 'N') {
         s = angband_strchr(buf + 2, ':');
         if (!s)
-            return 1;
+            return PARSE_ERROR_GENERIC;
 
         *s++ = '\0';
 #ifdef JP
         if (!*s)
-            return 1;
+            return PARSE_ERROR_GENERIC;
 #endif
 
         int i = atoi(buf + 2);
         if (i < error_idx)
-            return 4;
+            return PARSE_ERROR_NON_SEQUENTIAL_RECORDS;
+
         if (i >= head->info_num)
-            return 2;
+            return PARSE_ERROR_ABSOLETE_FILE;
 
         error_idx = i;
         r_ptr = &r_info[i];
 #ifdef JP
         if (!add_name(&r_ptr->name, head, s))
-            return 7;
+            return PARSE_ERROR_OUT_OF_MEMORY;
 #endif
     } else if (!r_ptr) {
-        return 3;
+        return PARSE_ERROR_MISSING_RECORD_HEADER;
     }
 #ifdef JP
     /* 英語名を読むルーチンを追加 */
@@ -105,49 +107,43 @@ errr parse_r_info(char *buf, angband_header *head)
     else if (buf[0] == 'E') {
         s = buf + 2;
         if (!add_name(&r_ptr->E_name, head, s))
-            return 7;
+            return PARSE_ERROR_OUT_OF_MEMORY;
     }
 #else
     else if (buf[0] == 'E') {
         s = buf + 2;
         if (!add_name(&r_ptr->name, head, s))
-            return 7;
+            return PARSE_ERROR_OUT_OF_MEMORY;
     }
 #endif
     else if (buf[0] == 'D') {
 #ifdef JP
         if (buf[2] == '$')
-            return 0;
+            return PARSE_ERROR_NONE;
+
         s = buf + 2;
 #else
         if (buf[2] != '$')
-            return 0;
+            return PARSE_ERROR_NONE;
         s = buf + 3;
 #endif
         if (!add_text(&r_ptr->text, head, s, TRUE))
-            return 7;
+            return PARSE_ERROR_OUT_OF_MEMORY;
     } else if (buf[0] == 'G') {
-        if (buf[1] != ':')
-            return 1;
-        if (!buf[2])
-            return 1;
-        if (buf[3] != ':')
-            return 1;
-        if (!buf[4])
-            return 1;
+        if ((buf[1] != ':') || !buf[2] || (buf[3] != ':') || !buf[4])
+            return PARSE_ERROR_GENERIC;
 
         char sym = buf[2];
         byte tmp = color_char_to_attr(buf[4]);
         if (tmp > 127)
-            return 1;
+            return PARSE_ERROR_GENERIC;
 
         r_ptr->d_char = sym;
         r_ptr->d_attr = tmp;
     } else if (buf[0] == 'I') {
         int spd, hp1, hp2, aaf, ac, slp;
-
-        if (6 != sscanf(buf + 2, "%d:%dd%d:%d:%d:%d", &spd, &hp1, &hp2, &aaf, &ac, &slp))
-            return 1;
+        if (sscanf(buf + 2, "%d:%dd%d:%d:%d:%d", &spd, &hp1, &hp2, &aaf, &ac, &slp) != 6)
+            return PARSE_ERROR_GENERIC;
 
         r_ptr->speed = (SPEED)spd;
         r_ptr->hdice = (DICE_NUMBER)MAX(hp1, 1);
@@ -160,8 +156,8 @@ errr parse_r_info(char *buf, angband_header *head)
         long exp;
         long nextexp;
         int nextmon;
-        if (6 != sscanf(buf + 2, "%d:%d:%d:%ld:%ld:%d", &lev, &rar, &pad, &exp, &nextexp, &nextmon))
-            return 1;
+        if (sscanf(buf + 2, "%d:%d:%d:%ld:%ld:%d", &lev, &rar, &pad, &exp, &nextexp, &nextmon) != 6)
+            return PARSE_ERROR_GENERIC;
 
         r_ptr->level = (DEPTH)lev;
         r_ptr->rarity = (RARITY)rar;
@@ -176,11 +172,9 @@ errr parse_r_info(char *buf, angband_header *head)
             if (r_ptr->reinforce_id[i] == 0)
                 break;
 
-        if (i == 6)
-            return 1;
+        if ((i == 6) || (sscanf(buf + 2, "%d:%dd%d", &id, &dd, &ds) != 3))
+            return PARSE_ERROR_GENERIC;
 
-        if (3 != sscanf(buf + 2, "%d:%dd%d", &id, &dd, &ds))
-            return 1;
         r_ptr->reinforce_id[i] = (MONRACE_IDX)id;
         r_ptr->reinforce_dd[i] = (DICE_NUMBER)dd;
         r_ptr->reinforce_ds[i] = (DICE_SID)ds;
@@ -192,7 +186,7 @@ errr parse_r_info(char *buf, angband_header *head)
                 break;
 
         if (i == 4)
-            return 1;
+            return PARSE_ERROR_GENERIC;
 
         /* loop */
         for (s = t = buf + 2; *t && (*t != ':'); t++)
@@ -207,7 +201,7 @@ errr parse_r_info(char *buf, angband_header *head)
         }
 
         if (!r_info_blow_method[n1])
-            return 1;
+            return PARSE_ERROR_GENERIC;
 
         /* loop */
         for (s = t; *t && (*t != ':'); t++)
@@ -222,7 +216,7 @@ errr parse_r_info(char *buf, angband_header *head)
         }
 
         if (!r_info_blow_effect[n2])
-            return 1;
+            return PARSE_ERROR_GENERIC;
 
         /* loop */
         for (s = t; *t && (*t != 'd'); t++)
@@ -248,7 +242,7 @@ errr parse_r_info(char *buf, angband_header *head)
             }
 
             if (0 != grab_one_basic_flag(r_ptr, s))
-                return 5;
+                return PARSE_ERROR_INVALID_FLAG;
 
             s = t;
         }
@@ -272,8 +266,8 @@ errr parse_r_info(char *buf, angband_header *head)
                 continue;
             }
 
-            if (0 != grab_one_spell_flag(r_ptr, s))
-                return 5;
+            if (grab_one_spell_flag(r_ptr, s) != PARSE_ERROR_NONE)
+                return PARSE_ERROR_INVALID_FLAG;
 
             s = t;
         }
@@ -284,22 +278,21 @@ errr parse_r_info(char *buf, angband_header *head)
             if (!r_ptr->artifact_id[i])
                 break;
 
-        if (i == 4)
-            return 1;
+        if ((i == 4) || (sscanf(buf + 2, "%d:%d:%d", &id, &rarity, &per) != 3))
+            return PARSE_ERROR_GENERIC;
 
-        if (3 != sscanf(buf + 2, "%d:%d:%d", &id, &rarity, &per))
-            return 1;
         r_ptr->artifact_id[i] = (ARTIFACT_IDX)id;
         r_ptr->artifact_rarity[i] = (RARITY)rarity;
         r_ptr->artifact_percent[i] = (PERCENTAGE)per;
     } else if (buf[0] == 'V') {
         int val;
-        if (3 != sscanf(buf + 2, "%d", &val))
+        if (sscanf(buf + 2, "%d", &val) != 3)
             return 1;
+
         r_ptr->arena_ratio = (PERCENTAGE)val;
     } else {
-        return 6;
+        return PARSE_ERROR_UNDEFINED_DIRECTIVE;
     }
 
-    return 0;
+    return PARSE_ERROR_NONE;
 }
index bcdc94e..be62e8b 100644 (file)
@@ -1,6 +1,6 @@
-#pragma once
+#pragma once
 /*
- * Windows\82Ì\83R\81[\83h\82©\82ç\82Í\8cÄ\82Î\82ê\82È\82¢\81B\82æ\82Á\82ÄVS\82©\82ç\82Í\8c©\82¦\82È\82¢
+ * Windowsのコードからは呼ばれない。よってVSからは見えない
  */
 
 #include "angband.h"
index 434531d..092ef84 100644 (file)
@@ -1,11 +1,11 @@
-#include "main/angband-headers.h"
+#include "main/angband-headers.h"
 
-angband_header f_head; /*!< \92n\8c`\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header v_head; /*!< Vault\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header k_head; /*!< \83y\81[\83X\83A\83C\83e\83\80\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header a_head; /*!< \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header e_head; /*!< \83A\83C\83e\83\80\83G\83S\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header r_head; /*!< \83\82\83\93\83X\83^\81[\8eí\91°\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header d_head; /*!< \83_\83\93\83W\83\87\83\93\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header s_head; /*!< \83v\83\8c\83C\83\84\81[\90E\8bÆ\8bZ\94\\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
-angband_header m_head; /*!< \83v\83\8c\83C\83\84\81[\90E\8bÆ\96\82\96@\8fî\95ñ\82Ì\83w\83b\83_\8d\\91¢\91Ì */
+angband_header f_head; /*!< 地形情報のヘッダ構造体 */
+angband_header v_head; /*!< Vault情報のヘッダ構造体 */
+angband_header k_head; /*!< ペースアイテム情報のヘッダ構造体 */
+angband_header a_head; /*!< 固定アーティファクト情報のヘッダ構造体 */
+angband_header e_head; /*!< アイテムエゴ情報のヘッダ構造体 */
+angband_header r_head; /*!< モンスター種族情報のヘッダ構造体 */
+angband_header d_head; /*!< ダンジョン情報のヘッダ構造体 */
+angband_header s_head; /*!< プレイヤー職業技能情報のヘッダ構造体 */
+angband_header m_head; /*!< プレイヤー職業魔法情報のヘッダ構造体 */
index 722ff13..a2c8e25 100644 (file)
@@ -1,9 +1,9 @@
-#pragma once
+#pragma once
 
 #include "system/angband.h"
 
 /*!
- * @brief \8ae\8f\89\8aú\83f\81[\83^\97p\83w\83b\83_\8d\\91¢\91Ì / Template file header information (see "init.c").
+ * @brief 各初期データ用ヘッダ構造体 / Template file header information (see "init.c").
  */
 typedef struct angband_header angband_header;
 typedef errr (*parse_info_txt_func)(char *buf, angband_header *head);
index fda1e11..d29b1a3 100644 (file)
@@ -1,4 +1,4 @@
-#include "main/game-data-initializer.h"
+#include "main/game-data-initializer.h"
 #include "cmd-io/macro-util.h"
 #include "dungeon/dungeon.h"
 #include "dungeon/quest.h"
 #include "world/world.h"
 
 /*!
- * @brief \83}\83N\83\8d\93o\98^\82Ì\8dÅ\91å\90\94 / Maximum number of macros (see "io.c")
+ * @brief マクロ登録の最大数 / Maximum number of macros (see "io.c")
  * @note Default: assume at most 256 macros are used
  */
 static const int MACRO_MAX = 256;
 
 /*!
- * @brief \83N\83G\83X\83g\8fî\95ñ\8f\89\8aú\89»\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief クエスト情報初期化のメインルーチン /
  * Initialize quest array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_quests(void)
 {
@@ -38,13 +38,13 @@ errr init_quests(void)
 }
 
 /*!
- * @brief \82»\82Ì\91¼\82Ì\8f\89\8aú\8fî\95ñ\8dX\90V /
+ * @brief その他の初期情報更新 /
  * Initialize some other arrays
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_other(player_type *player_ptr)
 {
-    player_ptr->current_floor_ptr = &floor_info; // TODO:\96{\93\96\82Í\82±\82ñ\82È\82Æ\82±\82ë\82Å\8f\89\8aú\89»\82µ\82½\82­\82È\82¢
+    player_ptr->current_floor_ptr = &floor_info; // TODO:本当はこんなところで初期化したくない
     floor_type *floor_ptr = player_ptr->current_floor_ptr;
     C_MAKE(floor_ptr->o_list, current_world_ptr->max_o_idx, object_type);
     C_MAKE(floor_ptr->m_list, current_world_ptr->max_m_idx, monster_type);
@@ -95,9 +95,9 @@ errr init_other(player_type *player_ptr)
 }
 
 /*!
- * @brief \83I\83u\83W\83F\83N\83g\94z\97ñ\82ð\8f\89\8aú\89»\82·\82é /
+ * @brief オブジェクト配列を初期化する /
  * Initialize some other arrays
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_object_alloc(void)
 {
@@ -126,7 +126,7 @@ errr init_object_alloc(void)
         num[i] += num[i - 1];
 
     if (!num[0])
-        quit(_("\92¬\82Ì\83A\83C\83e\83\80\82ª\82È\82¢\81I", "No town objects!"));
+        quit(_("町のアイテムがない!", "No town objects!"));
 
     C_MAKE(alloc_kind_table, alloc_kind_size, alloc_entry);
     alloc_entry *table;
@@ -155,9 +155,9 @@ errr init_object_alloc(void)
 }
 
 /*!
- * @brief \83\82\83\93\83X\83^\81[\94z\97ñ\82Æ\90\90¬\83e\81[\83u\83\8b\82ð\8f\89\8aú\89»\82·\82é /
+ * @brief モンスター配列と生成テーブルを初期化する /
  * Initialize some other arrays
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_alloc(void)
 {
index 7172121..d4212dd 100644 (file)
@@ -1,4 +1,4 @@
-#include "main/info-initializer.h"
+#include "main/info-initializer.h"
 #include "dungeon/dungeon.h"
 #include "grid/feature.h"
 #include "info-reader/artifact-reader.h"
 #include "world/world.h"
 #include <sys/stat.h>
 #ifndef WINDOWS
-#include <sys/types.h> // Windows \82Å\82Í\8eg\82í\82ê\82Ä\82¢\82È\82¢.
+#include <sys/types.h>
 #endif
 
 /*!
- * @brief \8aî\96{\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 基本情報読み込みのメインルーチン /
  * Initialize misc. values
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @return エラーコード
  */
 errr init_misc(player_type *player_ptr) { return parse_fixed_map(player_ptr, "misc.txt", 0, 0, 0, 0); }
 
 /*!
- * @brief raw\83t\83@\83C\83\8b\82©\82ç\82Ì\83f\81[\83^\82Ì\93Ç\82Ý\8eæ\82è\8f\88\97\9d
+ * @brief rawファイルからのデータの読み取り処理
  * Initialize the "*_info" array, by parsing a binary "image" file
- * @param fd \83t\83@\83C\83\8b\83f\83B\83X\83N\83\8a\83v\83^
- * @param head raw\83t\83@\83C\83\8b\82Ì\83w\83b\83_
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param fd ファイルディスクリプタ
+ * @param head rawファイルのヘッダ
+ * @return エラーコード
  */
 static errr init_info_raw(int fd, angband_header *head)
 {
@@ -93,12 +93,12 @@ static void update_header(angband_header *head, void **info, char **name, char *
 }
 
 /*!
- * @brief \83w\83b\83_\8d\\91¢\91Ì\82Ì\8dX\90V
+ * @brief ヘッダ構造体の更新
  * Initialize the header of an *_info.raw file.
- * @param head raw\83t\83@\83C\83\8b\82Ì\83w\83b\83_
- * @param num \83f\81[\83^\90\94
- * @param len \83f\81[\83^\82Ì\92·\82³
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param head rawファイルのヘッダ
+ * @param num データ数
+ * @param len データの長さ
+ * @return エラーコード
  */
 static void init_header(angband_header *head, IDX num, int len)
 {
@@ -115,11 +115,11 @@ static void init_header(angband_header *head, IDX num, int len)
 }
 
 /*!
- * @brief \83e\83L\83X\83g\83t\83@\83C\83\8b\82Æraw\83t\83@\83C\83\8b\82Ì\8dX\90V\8e\9e\8d\8f\82ð\94ä\8ar\82·\82é
+ * @brief テキストファイルとrawファイルの更新時刻を比較する
  * Find the default paths to all of our important sub-directories.
- * @param fd \83t\83@\83C\83\8b\83f\83B\83X\83N\83\8a\83v\83^
- * @param template_file \83t\83@\83C\83\8b\96¼
- * @return \83e\83L\83X\83g\82Ì\95û\82ª\90V\82µ\82¢\82©\81Araw\83t\83@\83C\83\8b\82ª\82È\82­\8dX\90V\82Ì\95K\97v\82ª\82 \82é\8fê\8d\87-1\81A\8dX\90V\82Ì\95K\97v\82ª\82È\82¢\8fê\8d\870\81B
+ * @param fd ファイルディスクリプタ
+ * @param template_file ファイル名
+ * @return テキストの方が新しいか、rawファイルがなく更新の必要がある場合-1、更新の必要がない場合0。
  */
 static errr check_modification_date(int fd, concptr template_file)
 {
@@ -139,15 +139,15 @@ static errr check_modification_date(int fd, concptr template_file)
 }
 
 /*!
- * @brief \83w\83b\83_\8d\\91¢\91Ì\82Ì\8dX\90V
+ * @brief ヘッダ構造体の更新
  * Initialize the "*_info" array
- * @param filename \83t\83@\83C\83\8b\96¼(\8ag\92£\8eqtxt/raw)
- * @param head \8f\88\97\9d\82É\97p\82¢\82é\83w\83b\83_\8d\\91¢\91Ì
- * @param info \83f\81[\83^\95Û\8aÇ\90æ\82Ì\8d\\91¢\91Ì\83|\83C\83\93\83^
- * @param name \96¼\8fÌ\97p\89Â\95Ï\95\8e\9a\97ñ\82Ì\95Û\8aÇ\90æ
- * @param text \83e\83L\83X\83g\97p\89Â\95Ï\95\8e\9a\97ñ\82Ì\95Û\8aÇ\90æ
- * @param tag \83^\83O\97p\89Â\95Ï\95\8e\9a\97ñ\82Ì\95Û\8aÇ\90æ
- * @return \83G\83\89\81[\83R\81[\83h
+ * @param filename ファイル名(拡張子txt/raw)
+ * @param head 処理に用いるヘッダ構造体
+ * @param info データ保管先の構造体ポインタ
+ * @param name 名称用可変文字列の保管先
+ * @param text テキスト用可変文字列の保管先
+ * @param tag タグ用可変文字列の保管先
+ * @return エラーコード
  * @note
  * Note that we let each entry have a unique "name" and "text" string,
  * even if the string happens to be empty (everyone has a unique '\0').
@@ -198,22 +198,21 @@ static errr init_info(player_type *player_ptr, concptr filename, angband_header
     FILE *fp;
     fp = angband_fopen(buf, "r");
     if (!fp)
-        quit(format(_("'%s.txt'\83t\83@\83C\83\8b\82ð\83I\81[\83v\83\93\82Å\82«\82Ü\82¹\82ñ\81B", "Cannot open '%s.txt' file."), filename));
+        quit(format(_("'%s.txt'ファイルをオープンできません。", "Cannot open '%s.txt' file."), filename));
 
     err = init_info_txt(fp, buf, head, head->parse_info_txt);
     angband_fclose(fp);
     if (err) {
-        concptr oops;
-        oops = (((err > 0) && (err < PARSE_ERROR_MAX)) ? err_str[err] : _("\96¢\92m\82Ì", "unknown"));
+        concptr oops = (((err > 0) && (err < PARSE_ERROR_MAX)) ? err_str[err] : _("未知の", "unknown"));
 #ifdef JP
-        msg_format("'%s.txt'\83t\83@\83C\83\8b\82Ì %d \8ds\96Ú\82É\83G\83\89\81[\81B", filename, error_line);
+        msg_format("'%s.txt'ファイルの %d 行目にエラー。", filename, error_line);
 #else
         msg_format("Error %d at line %d of '%s.txt'.", err, error_line, filename);
 #endif
-        msg_format(_("\83\8c\83R\81[\83h %d \82Í '%s' \83G\83\89\81[\82ª\82 \82è\82Ü\82·\81B", "Record %d contains a '%s' error."), error_idx, oops);
-        msg_format(_("\8d\\95¶ '%s'\81B", "Parsing '%s'."), buf);
+        msg_format(_("レコード %d は '%s' エラーがあります。", "Record %d contains a '%s' error."), error_idx, oops);
+        msg_format(_("構文 '%s'。", "Parsing '%s'."), buf);
         msg_print(NULL);
-        quit(format(_("'%s.txt'\83t\83@\83C\83\8b\82É\83G\83\89\81[", "Error in '%s.txt' file."), filename));
+        quit(format(_("'%s.txt'ファイルにエラー", "Error in '%s.txt' file."), filename));
     }
 
     if (head->retouch)
@@ -246,21 +245,21 @@ static errr init_info(player_type *player_ptr, concptr filename, angband_header
     path_build(buf, sizeof(buf), ANGBAND_DIR_DATA, format(_("%s_j.raw", "%s.raw"), filename));
     fd = fd_open(buf, O_RDONLY);
     if (fd < 0)
-        quit(format(_("'%s_j.raw'\83t\83@\83C\83\8b\82ð\83\8d\81[\83h\82Å\82«\82Ü\82¹\82ñ\81B", "Cannot load '%s.raw' file."), filename));
+        quit(format(_("'%s_j.raw'ファイルをロードできません。", "Cannot load '%s.raw' file."), filename));
 
     err = init_info_raw(fd, head);
     (void)fd_close(fd);
     if (err)
-        quit(format(_("'%s_j.raw'\83t\83@\83C\83\8b\82ð\89ð\90Í\82Å\82«\82Ü\82¹\82ñ\81B", "Cannot parse '%s.raw' file."), filename));
+        quit(format(_("'%s_j.raw'ファイルを解析できません。", "Cannot parse '%s.raw' file."), filename));
 
     update_header(head, info, name, text, tag);
     return 0;
 }
 
 /*!
- * @brief \92n\8c`\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 地形情報読み込みのメインルーチン /
  * Initialize the "f_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_f_info(player_type *player_ptr)
 {
@@ -271,9 +270,9 @@ errr init_f_info(player_type *player_ptr)
 }
 
 /*!
- * @brief \83x\81[\83X\83A\83C\83e\83\80\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief ベースアイテム情報読み込みのメインルーチン /
  * Initialize the "k_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_k_info(player_type *player_ptr)
 {
@@ -283,9 +282,9 @@ errr init_k_info(player_type *player_ptr)
 }
 
 /*!
- * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 固定アーティファクト情報読み込みのメインルーチン /
  * Initialize the "a_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_a_info(player_type *player_ptr)
 {
@@ -295,9 +294,9 @@ errr init_a_info(player_type *player_ptr)
 }
 
 /*!
- * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 固定アーティファクト情報読み込みのメインルーチン /
  * Initialize the "e_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_e_info(player_type *player_ptr)
 {
@@ -307,9 +306,9 @@ errr init_e_info(player_type *player_ptr)
 }
 
 /*!
- * @brief \83\82\83\93\83X\83^\81[\8eí\91°\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief モンスター種族情報読み込みのメインルーチン /
  * Initialize the "r_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_r_info(player_type *player_ptr)
 {
@@ -319,9 +318,9 @@ errr init_r_info(player_type *player_ptr)
 }
 
 /*!
- * @brief \83_\83\93\83W\83\87\83\93\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief ダンジョン情報読み込みのメインルーチン /
  * Initialize the "d_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_d_info(player_type *player_ptr)
 {
@@ -331,9 +330,9 @@ errr init_d_info(player_type *player_ptr)
 }
 
 /*!
- * @brief Vault\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief Vault情報読み込みのメインルーチン /
  * Initialize the "v_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  * @note
  * Note that we let each entry have a unique "name" and "text" string,
  * even if the string happens to be empty (everyone has a unique '\0').
@@ -346,9 +345,9 @@ errr init_v_info(player_type *player_ptr)
 }
 
 /*!
- * @brief \90E\8bÆ\8bZ\94\\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 職業技能情報読み込みのメインルーチン /
  * Initialize the "s_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_s_info(player_type *player_ptr)
 {
@@ -358,9 +357,9 @@ errr init_s_info(player_type *player_ptr)
 }
 
 /*!
- * @brief \90E\8bÆ\96\82\96@\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 職業魔法情報読み込みのメインルーチン /
  * Initialize the "m_info" array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_m_info(player_type *player_ptr)
 {
index 078684d..4afa4e3 100644 (file)
@@ -1,18 +1,18 @@
-#include "main/init-error-messages-table.h"
+#include "main/init-error-messages-table.h"
 
 /*!
- * \83G\83\89\81[\83\81\83b\83Z\81[\83W\82Ì\96¼\8fÌ\92è\8b` / Standard error message text
+ * エラーメッセージの名称定義 / Standard error message text
  */
 concptr err_str[PARSE_ERROR_MAX] = {
     NULL,
-    _("\95\96@\83G\83\89\81[", "parse error"),
-    _("\8cÃ\82¢\83t\83@\83C\83\8b", "obsolete file"),
-    _("\8bL\98^\83w\83b\83_\82ª\82È\82¢", "missing record header"),
-    _("\95s\98A\91±\83\8c\83R\81[\83h", "non-sequential records"),
-    _("\82¨\82©\82µ\82È\83t\83\89\83O\91\8dÝ", "invalid flag specification"),
-    _("\96¢\92è\8b`\96½\97ß", "undefined directive"),
-    _("\83\81\83\82\83\8a\95s\91«", "out of memory"),
-    _("\8dÀ\95W\94Í\88Í\8aO", "coordinates out of bounds"),
-    _("\88ø\90\94\95s\91«", "too few arguments"),
-    _("\96¢\92è\8b`\92n\8c`\83^\83O", "undefined terrain tag"),
+    _("文法エラー", "parse error"),
+    _("古いファイル", "obsolete file"),
+    _("記録ヘッダがない", "missing record header"),
+    _("不連続レコード", "non-sequential records"),
+    _("おかしなフラグ存在", "invalid flag specification"),
+    _("未定義命令", "undefined directive"),
+    _("メモリ不足", "out of memory"),
+    _("座標範囲外", "coordinates out of bounds"),
+    _("引数不足", "too few arguments"),
+    _("未定義地形タグ", "undefined terrain tag"),
 };
index 5cfc749..6bb588a 100644 (file)
 /*!
  * @brief 闘技場のモンスターID及び報酬アイテムテーブル
  */
-const arena_type arena_info[MAX_ARENA_MONS + 2] =
-{
-       { MON_NOBORTA,       TV_AMULET, SV_AMULET_ADORNMENT           },
-       { MON_MORI_TROLL,    TV_FOOD,   SV_FOOD_PINT_OF_WINE          },
-       { MON_IMP,           TV_POTION, SV_POTION_SPEED               },
-       { MON_LION_HEART,    0,         0                             },
-       { MON_MASTER_YEEK,   TV_POTION, SV_POTION_CURING              },
-       { MON_SABRE_TIGER,   TV_WAND,   SV_WAND_STONE_TO_MUD          },
-       { MON_LIZARD_KING,   TV_WAND,   SV_WAND_TELEPORT_AWAY         },
-       { MON_WYVERN,        TV_POTION, SV_POTION_HEALING             },
-       { MON_ARCH_VILE,     TV_POTION, SV_POTION_RESISTANCE          },
-       { MON_ELF_LORD   ,   TV_POTION, SV_POTION_ENLIGHTENMENT       },
-       { MON_GHOUL_KING,    TV_FOOD,   SV_FOOD_RESTORING             },
-       { MON_COLBRAN,       TV_RING,   SV_RING_ELEC                  },
-       { MON_BICLOPS,       TV_WAND,   SV_WAND_ACID_BALL             },
-       { MON_M_MINDCRAFTER, TV_POTION, SV_POTION_SELF_KNOWLEDGE      },
-       { MON_GROO,          TV_SCROLL, SV_SCROLL_ACQUIREMENT         },
-       { MON_RAAL,          TV_SCROLL, SV_SCROLL_STAR_DESTRUCTION    },
-       { MON_DREADMASTER,   TV_WAND,   SV_WAND_HYPODYNAMIA            },
-       { MON_ULTRA_PALADIN, TV_STAFF,  SV_STAFF_DISPEL_EVIL          },
-       { MON_BARNEY,        TV_RING,   SV_RING_RES_CHAOS             },
-       { MON_TROLL_KING,    TV_SCROLL, SV_SCROLL_MASS_GENOCIDE       },
-       { MON_BARON_HELL,    TV_POTION, SV_POTION_AUGMENTATION        },
-       { MON_F_ANGEL,       TV_SCROLL, SV_SCROLL_RUNE_OF_PROTECTION  },
-       { MON_G_C_DRAKE,     TV_WAND,   SV_WAND_DRAGON_FIRE           },
-       { MON_IRON_LICH,     TV_STAFF,  SV_STAFF_DESTRUCTION          },
-       { MON_DROLEM,        TV_POTION, SV_POTION_STAR_HEALING        },
-       { MON_G_TITAN,       TV_WAND,   SV_WAND_GENOCIDE              },
-       { MON_G_BALROG,      TV_POTION, SV_POTION_EXPERIENCE          },
-       { MON_ELDER_VAMPIRE, TV_RING,   SV_RING_SUSTAIN               },
-       { MON_NIGHTWALKER,   TV_WAND,   SV_WAND_STRIKING              },
-       { MON_S_TYRANNO,     TV_SCROLL, SV_SCROLL_STAR_ACQUIREMENT    },
-       { MON_G_MASTER_MYS,  TV_ROD,    SV_ROD_IDENTIFY               },
-       { MON_LORD_CHAOS,    TV_POTION, SV_POTION_LIFE                },
-       { MON_SHADOWLORD,    TV_POTION, SV_POTION_STAR_ENLIGHTENMENT  },
-       { MON_ULT_BEHOLDER,  TV_AMULET, SV_AMULET_REFLECTION          },
-       { MON_JABBERWOCK,    TV_ROD,    SV_ROD_HEALING                },
-       { MON_LOCKE_CLONE,   TV_WAND,   SV_WAND_DISINTEGRATE          },
-       { MON_WYRM_SPACE,    TV_ROD,    SV_ROD_RESTORATION            },
-       { MON_SHAMBLER,      TV_SCROLL, SV_SCROLL_STAR_ACQUIREMENT    },
-       { MON_BLACK_REAVER,  TV_RING,   SV_RING_LORDLY                },
-       { MON_FENGHUANG,     TV_STAFF,  SV_STAFF_THE_MAGI             },
-       { MON_WYRM_POWER,    TV_SCROLL, SV_SCROLL_ARTIFACT            },
-       { 0,                 0,         0                             }, /* Victory prizing */
-       { MON_HAGURE,        TV_SCROLL, SV_SCROLL_ARTIFACT            },
+const arena_type arena_info[MAX_ARENA_MONS + 2] = {
+    { MON_NOBORTA, TV_AMULET, SV_AMULET_ADORNMENT },
+    { MON_MORI_TROLL, TV_FOOD, SV_FOOD_PINT_OF_WINE },
+    { MON_IMP, TV_POTION, SV_POTION_SPEED },
+    { MON_LION_HEART, 0, 0 },
+    { MON_MASTER_YEEK, TV_POTION, SV_POTION_CURING },
+    { MON_SABRE_TIGER, TV_WAND, SV_WAND_STONE_TO_MUD },
+    { MON_LIZARD_KING, TV_WAND, SV_WAND_TELEPORT_AWAY },
+    { MON_WYVERN, TV_POTION, SV_POTION_HEALING },
+    { MON_ARCH_VILE, TV_POTION, SV_POTION_RESISTANCE },
+    { MON_ELF_LORD, TV_POTION, SV_POTION_ENLIGHTENMENT },
+    { MON_GHOUL_KING, TV_FOOD, SV_FOOD_RESTORING },
+    { MON_COLBRAN, TV_RING, SV_RING_ELEC },
+    { MON_BICLOPS, TV_WAND, SV_WAND_ACID_BALL },
+    { MON_M_MINDCRAFTER, TV_POTION, SV_POTION_SELF_KNOWLEDGE },
+    { MON_GROO, TV_SCROLL, SV_SCROLL_ACQUIREMENT },
+    { MON_RAAL, TV_SCROLL, SV_SCROLL_STAR_DESTRUCTION },
+    { MON_DREADMASTER, TV_WAND, SV_WAND_HYPODYNAMIA },
+    { MON_ULTRA_PALADIN, TV_STAFF, SV_STAFF_DISPEL_EVIL },
+    { MON_BARNEY, TV_RING, SV_RING_RES_CHAOS },
+    { MON_TROLL_KING, TV_SCROLL, SV_SCROLL_MASS_GENOCIDE },
+    { MON_BARON_HELL, TV_POTION, SV_SCROLL_RUNE_OF_PROTECTION },
+    { MON_FALLEN_ANGEL, TV_SCROLL, SV_POTION_AUGMENTATION },
+    { MON_ANCIENT_CRISTAL_DRAGON, TV_WAND, SV_WAND_DRAGON_FIRE },
+    { MON_BRONZE_LICH, TV_STAFF, SV_STAFF_DESTRUCTION },
+    { MON_DROLEM, TV_POTION, SV_POTION_STAR_HEALING },
+    { MON_G_TITAN, TV_WAND, SV_WAND_GENOCIDE },
+    { MON_G_BALROG, TV_POTION, SV_POTION_EXPERIENCE },
+    { MON_ELDER_VAMPIRE, TV_RING, SV_RING_SUSTAIN },
+    { MON_NIGHTWALKER, TV_WAND, SV_WAND_STRIKING },
+    { MON_S_TYRANNO, TV_SCROLL, SV_SCROLL_STAR_ACQUIREMENT },
+    { MON_MASTER_MYSTIC, TV_ROD, SV_ROD_IDENTIFY },
+    { MON_LORD_CHAOS, TV_POTION, SV_POTION_LIFE },
+    { MON_SHADOWLORD, TV_POTION, SV_POTION_STAR_ENLIGHTENMENT },
+    { MON_ULT_BEHOLDER, TV_AMULET, SV_AMULET_REFLECTION },
+    { MON_JABBERWOCK, TV_ROD, SV_ROD_HEALING },
+    { MON_LOCKE_CLONE, TV_WAND, SV_WAND_DISINTEGRATE },
+    { MON_WYRM_SPACE, TV_ROD, SV_ROD_RESTORATION },
+    { MON_SHAMBLER, TV_SCROLL, SV_SCROLL_STAR_ACQUIREMENT },
+    { MON_BLACK_REAVER, TV_RING, SV_RING_LORDLY },
+    { MON_FENGHUANG, TV_STAFF, SV_STAFF_THE_MAGI },
+    { MON_WYRM_POWER, TV_SCROLL, SV_SCROLL_ARTIFACT },
+    { 0, 0, 0 }, /* Victory prizing */
+    { MON_HAGURE, TV_SCROLL, SV_SCROLL_ARTIFACT },
 };
index 9ec3ee1..4dbc51a 100644 (file)
@@ -1,4 +1,4 @@
-#include "market/building-initializer.h"
+#include "market/building-initializer.h"
 #include "floor/floor-town.h"
 #include "market/articles-on-sale.h"
 #include "object/object-kind.h"
@@ -9,9 +9,9 @@
 #include "system/object-type-definition.h"
 
 /*!
- * @brief \92¬\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 町情報読み込みのメインルーチン /
  * Initialize town array
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_towns(void)
 {
@@ -24,8 +24,8 @@ errr init_towns(void)
                 continue;
 
             /*
-             * \89ä\82ª\89Æ\82ª 20 \83y\81[\83W\82Ü\82Å\8eg\82¦\82é\89B\82µ\8b@\94\\82Ì\82½\82ß\82Ì\8f\80\94õ\81B
-             * \83I\83v\83V\83\87\83\93\82ª\97L\8cø\82Å\82à\82»\82¤\82Å\82È\82­\82Ä\82à\88ê\89\9e\83X\83y\81[\83X\82ð\8dì\82Á\82Ä\82¨\82­\81B
+             * 我が家が 20 ページまで使える隠し機能のための準備。
+             * オプションが有効でもそうでなくても一応スペースを作っておく。
              */
             if (j == STORE_HOME) {
                 store_ptr->stock_size = STORE_INVEN_MAX * 10;
@@ -63,9 +63,9 @@ errr init_towns(void)
 }
 
 /*!
- * @brief \93X\8fî\95ñ\8f\89\8aú\89»\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * @brief 店情報初期化のメインルーチン /
  * Initialize buildings
- * @return \83G\83\89\81[\83R\81[\83h
+ * @return エラーコード
  */
 errr init_buildings(void)
 {
index 174501d..c1cd473 100644 (file)
@@ -1,4 +1,4 @@
-#include "mind/mind-archer.h"
+#include "mind/mind-archer.h"
 #include "action/action-limited.h"
 #include "autopick/autopick.h"
 #include "core/asking-player.h"
@@ -32,19 +32,19 @@ typedef enum ammo_creation_type {
 } ammo_creation_type;
 
 /*!
- * @brief\81u\92e/\96î\82Ì\90»\91¢\81v\8f\88\97\9d / do_cmd_cast calls this function if the player's class is 'archer'.
+ * @brief「弾/矢の製造」処理 / do_cmd_cast calls this function if the player's class is 'archer'.
  * Hook to determine if an object is contertible in an arrow/bolt
- * @return \90»\91¢\82ð\8eÀ\8dÛ\82É\8ds\82Á\82½\82çTRUE\81A\83L\83\83\83\93\83Z\83\8b\82µ\82½\82çFALSE\82ð\95Ô\82·
+ * @return 製造を実際に行ったらTRUE、キャンセルしたらFALSEを返す
  */
 bool create_ammo(player_type *creature_ptr)
 {
     char com[80];
     if (creature_ptr->lev >= 20)
-        sprintf(com, _("[S]\92e, [A]\96î, [B]\83N\83\8d\83X\83{\83E\82Ì\96î :", "Create [S]hots, Create [A]rrow or Create [B]olt ?"));
+        sprintf(com, _("[S]弾, [A]矢, [B]クロスボウの矢 :", "Create [S]hots, Create [A]rrow or Create [B]olt ?"));
     else if (creature_ptr->lev >= 10)
-        sprintf(com, _("[S]\92e, [A]\96î:", "Create [S]hots or Create [A]rrow ?"));
+        sprintf(com, _("[S]弾, [A]矢:", "Create [S]hots or Create [A]rrow ?"));
     else
-        sprintf(com, _("[S]\92e:", "Create [S]hots ?"));
+        sprintf(com, _("[S]:", "Create [S]hots ?"));
 
     if (cmd_limit_confused(creature_ptr) || cmd_limit_blind(creature_ptr))
         return FALSE;
@@ -82,12 +82,12 @@ bool create_ammo(player_type *creature_ptr)
         POSITION x = creature_ptr->x + ddx[dir];
         grid_type *g_ptr = &creature_ptr->current_floor_ptr->grid_array[y][x];
         if (!has_flag(f_info[get_feat_mimic(g_ptr)].flags, FF_CAN_DIG)) {
-            msg_print(_("\82»\82±\82É\82Í\8aâ\90Î\82ª\82È\82¢\81B", "You need a pile of rubble."));
+            msg_print(_("そこには岩石がない。", "You need a pile of rubble."));
             return FALSE;
         }
 
         if (!cave_has_flag_grid(g_ptr, FF_CAN_DIG) || !cave_has_flag_grid(g_ptr, FF_HURT_ROCK)) {
-            msg_print(_("\8dd\82·\82¬\82Ä\95ö\82¹\82È\82©\82Á\82½\81B", "You failed to make ammo."));
+            msg_print(_("硬すぎて崩せなかった。", "You failed to make ammo."));
             return TRUE;
         }
 
@@ -102,7 +102,7 @@ bool create_ammo(player_type *creature_ptr)
         s16b slot = store_item_to_inventory(creature_ptr, q_ptr);
         GAME_TEXT o_name[MAX_NLEN];
         describe_flavor(creature_ptr, o_name, q_ptr, 0);
-        msg_format(_("%s\82ð\8dì\82Á\82½\81B", "You make some ammo."), o_name);
+        msg_format(_("%sを作った。", "You make some ammo."), o_name);
         if (slot >= 0)
             autopick_alter_item(creature_ptr, slot, FALSE);
 
@@ -112,8 +112,8 @@ bool create_ammo(player_type *creature_ptr)
     }
     case AMMO_ARROW: {
         item_tester_hook = item_tester_hook_convertible;
-        concptr q = _("\82Ç\82Ì\83A\83C\83e\83\80\82©\82ç\8dì\82è\82Ü\82·\82©\81H ", "Convert which item? ");
-        concptr s = _("\8dÞ\97¿\82ð\8e\9d\82Á\82Ä\82¢\82È\82¢\81B", "You have no item to convert.");
+        concptr q = _("どのアイテムから作りますか? ", "Convert which item? ");
+        concptr s = _("材料を持っていない。", "You have no item to convert.");
         OBJECT_IDX item;
         object_type *q_ptr = choose_object(creature_ptr, &item, q, s, USE_INVEN | USE_FLOOR, 0);
         if (!q_ptr)
@@ -129,7 +129,7 @@ bool create_ammo(player_type *creature_ptr)
         q_ptr->discount = 99;
         GAME_TEXT o_name[MAX_NLEN];
         describe_flavor(creature_ptr, o_name, q_ptr, 0);
-        msg_format(_("%s\82ð\8dì\82Á\82½\81B", "You make some ammo."), o_name);
+        msg_format(_("%sを作った。", "You make some ammo."), o_name);
         vary_item(creature_ptr, item, -1);
         s16b slot = store_item_to_inventory(creature_ptr, q_ptr);
         if (slot >= 0)
@@ -139,8 +139,8 @@ bool create_ammo(player_type *creature_ptr)
     }
     case AMMO_BOLT: {
         item_tester_hook = item_tester_hook_convertible;
-        concptr q = _("\82Ç\82Ì\83A\83C\83e\83\80\82©\82ç\8dì\82è\82Ü\82·\82©\81H ", "Convert which item? ");
-        concptr s = _("\8dÞ\97¿\82ð\8e\9d\82Á\82Ä\82¢\82È\82¢\81B", "You have no item to convert.");
+        concptr q = _("どのアイテムから作りますか? ", "Convert which item? ");
+        concptr s = _("材料を持っていない。", "You have no item to convert.");
         OBJECT_IDX item;
         object_type *q_ptr = choose_object(creature_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), 0);
         if (!q_ptr)
@@ -156,7 +156,7 @@ bool create_ammo(player_type *creature_ptr)
         q_ptr->discount = 99;
         GAME_TEXT o_name[MAX_NLEN];
         describe_flavor(creature_ptr, o_name, q_ptr, 0);
-        msg_format(_("%s\82ð\8dì\82Á\82½\81B", "You make some ammo."), o_name);
+        msg_format(_("%sを作った。", "You make some ammo."), o_name);
         vary_item(creature_ptr, item, -1);
         s16b slot = store_item_to_inventory(creature_ptr, q_ptr);
         if (slot >= 0)
index 951ef45..fa2552e 100644 (file)
@@ -1,4 +1,4 @@
-#include "mind/mind-hobbit.h"
+#include "mind/mind-hobbit.h"
 #include "floor/floor-object.h"
 #include "object/object-generator.h"
 #include "object/object-kind-hook.h"
@@ -12,6 +12,6 @@ bool create_ration(player_type *creature_ptr)
     object_type *q_ptr = &forge;
     object_prep(creature_ptr, q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
     (void)drop_near(creature_ptr, q_ptr, -1, creature_ptr->y, creature_ptr->x);
-    msg_print(_("\90H\8e\96\82ð\97¿\97\9d\82µ\82Ä\8dì\82Á\82½\81B", "You cook some food."));
+    msg_print(_("食事を料理して作った。", "You cook some food."));
     return TRUE;
 }
index 0701138..f3b1feb 100644 (file)
@@ -1,4 +1,4 @@
-#include "mind/mind-magic-eater.h"
+#include "mind/mind-magic-eater.h"
 #include "flavor/flavor-describer.h"
 #include "floor/floor-object.h"
 #include "inventory/inventory-object.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief \96\82\93¹\8bï\8fp\8et\82Ì\96\82\97Í\8eæ\82è\8d\9e\82Ý\8f\88\97\9d
- * @param user_ptr \83A\83C\83e\83\80\82ð\8eæ\82è\8d\9e\82Þ\83N\83\8a\81[\83`\83\83\81[
- * @return \8eæ\82è\8d\9e\82Ý\82ð\8eÀ\8ds\82µ\82½\82çTRUE\81A\83L\83\83\83\93\83Z\83\8b\82µ\82½\82çFALSE\82ð\95Ô\82·
+ * @brief 魔道具術師の魔力取り込み処理
+ * @param user_ptr アイテムを取り込むクリーチャー
+ * @return 取り込みを実行したらTRUE、キャンセルしたらFALSEを返す
  */
 bool import_magic_device(player_type *user_ptr)
 {
     item_tester_hook = item_tester_hook_recharge;
-    concptr q = _("\82Ç\82Ì\83A\83C\83e\83\80\82Ì\96\82\97Í\82ð\8eæ\82è\8d\9e\82Ý\82Ü\82·\82©? ", "Gain power of which item? ");
-    concptr s = _("\96\82\97Í\82ð\8eæ\82è\8d\9e\82ß\82é\83A\83C\83e\83\80\82ª\82È\82¢\81B", "You have nothing to gain power.");
+    concptr q = _("どのアイテムの魔力を取り込みますか? ", "Gain power of which item? ");
+    concptr s = _("魔力を取り込めるアイテムがない。", "You have nothing to gain power.");
     OBJECT_IDX item;
     object_type *o_ptr = choose_object(user_ptr, &item, q, s, USE_INVEN | USE_FLOOR, 0);
     if (!o_ptr)
         return FALSE;
 
     if (o_ptr->tval == TV_STAFF && o_ptr->sval == SV_STAFF_NOTHING) {
-        msg_print(_("\82±\82Ì\8fñ\82É\82Í\94­\93®\82Ì\88×\82Ì\94\\97Í\82Í\89½\82à\94õ\82í\82Á\82Ä\82¢\82È\82¢\82æ\82¤\82¾\81B", "This staff doesn't have any magical ability."));
+        msg_print(_("この杖には発動の為の能力は何も備わっていないようだ。", "This staff doesn't have any magical ability."));
         return FALSE;
     }
 
     if (!object_is_known(o_ptr)) {
-        msg_print(_("\8aÓ\92è\82³\82ê\82Ä\82¢\82È\82¢\82Æ\8eæ\82è\8d\9e\82ß\82È\82¢\81B", "You need to identify before absorbing."));
+        msg_print(_("鑑定されていないと取り込めない。", "You need to identify before absorbing."));
         return FALSE;
     }
 
     if (o_ptr->timeout) {
-        msg_print(_("\8f[\93U\92\86\82Ì\83A\83C\83e\83\80\82Í\8eæ\82è\8d\9e\82ß\82È\82¢\81B", "This item is still charging."));
+        msg_print(_("充填中のアイテムは取り込めない。", "This item is still charging."));
         return FALSE;
     }
 
@@ -78,7 +78,7 @@ bool import_magic_device(player_type *user_ptr)
 
     GAME_TEXT o_name[MAX_NLEN];
     describe_flavor(user_ptr, o_name, o_ptr, 0);
-    msg_format(_("%s\82Ì\96\82\97Í\82ð\8eæ\82è\8d\9e\82ñ\82¾\81B", "You absorb magic of %s."), o_name);
+    msg_format(_("%sの魔力を取り込んだ。", "You absorb magic of %s."), o_name);
 
     vary_item(user_ptr, item, -999);
     take_turn(user_ptr, 100);
index 7d1211a..72de8d9 100644 (file)
@@ -1,4 +1,4 @@
-#include "mind/mind-priest.h"
+#include "mind/mind-priest.h"
 #include "core/player-update-types.h"
 #include "core/window-redrawer.h"
 #include "flavor/flavor-describer.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief \95\90\8aí\82Ì\8fj\95\9f\8f\88\97\9d /
+ * @brief 武器の祝福処理 /
  * Bless a weapon
- * @return \83^\81[\83\93\8fÁ\94ï\82ð\97v\82·\82é\8f\88\97\9d\82ð\8ds\82Á\82½\82È\82ç\82ÎTRUE\82ð\95Ô\82·
+ * @return ターン消費を要する処理を行ったならばTRUEを返す
  */
 bool bless_weapon(player_type *caster_ptr)
 {
     item_tester_hook = object_is_weapon;
 
-    concptr q = _("\82Ç\82Ì\83A\83C\83e\83\80\82ð\8fj\95\9f\82µ\82Ü\82·\82©\81H", "Bless which weapon? ");
-    concptr s = _("\8fj\95\9f\82Å\82«\82é\95\90\8aí\82ª\82 \82è\82Ü\82¹\82ñ\81B", "You have weapon to bless.");
+    concptr q = _("どのアイテムを祝福しますか?", "Bless which weapon? ");
+    concptr s = _("祝福できる武器がありません。", "You have weapon to bless.");
 
     OBJECT_IDX item;
     object_type *o_ptr = choose_object(caster_ptr, &item, q, s, USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT, 0);
@@ -45,7 +45,7 @@ bool bless_weapon(player_type *caster_ptr)
         if (((o_ptr->curse_flags & TRC_HEAVY_CURSE) && (randint1(100) < 33)) || has_flag(flgs, TR_ADD_L_CURSE) || has_flag(flgs, TR_ADD_H_CURSE)
             || (o_ptr->curse_flags & TRC_PERMA_CURSE)) {
 #ifdef JP
-            msg_format("%s\82ð\95¢\82¤\8d\95\82¢\83I\81[\83\89\82Í\8fj\95\9f\82ð\92µ\82Ë\95Ô\82µ\82½\81I", o_name);
+            msg_format("%sを覆う黒いオーラは祝福を跳ね返した!", o_name);
 #else
             msg_format("The black aura on %s %s disrupts the blessing!", ((item >= 0) ? "your" : "the"), o_name);
 #endif
@@ -54,7 +54,7 @@ bool bless_weapon(player_type *caster_ptr)
         }
 
 #ifdef JP
-        msg_format("%s \82©\82ç\8e×\88«\82È\83I\81[\83\89\82ª\8fÁ\82¦\82½\81B", o_name);
+        msg_format("%s から邪悪なオーラが消えた。", o_name);
 #else
         msg_format("A malignant aura leaves %s %s.", ((item >= 0) ? "your" : "the"), o_name);
 #endif
@@ -75,7 +75,7 @@ bool bless_weapon(player_type *caster_ptr)
      */
     if (has_flag(flgs, TR_BLESSED)) {
 #ifdef JP
-        msg_format("%s \82Í\8aù\82É\8fj\95\9f\82³\82ê\82Ä\82¢\82é\81B", o_name);
+        msg_format("%s は既に祝福されている。", o_name);
 #else
         msg_format("%s %s %s blessed already.", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "were" : "was"));
 #endif
@@ -84,7 +84,7 @@ bool bless_weapon(player_type *caster_ptr)
 
     if (!(object_is_artifact(o_ptr) || object_is_ego(o_ptr)) || one_in_(3)) {
 #ifdef JP
-        msg_format("%s\82Í\8bP\82¢\82½\81I", o_name);
+        msg_format("%sは輝いた!", o_name);
 #else
         msg_format("%s %s shine%s!", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "" : "s"));
 #endif
@@ -92,7 +92,7 @@ bool bless_weapon(player_type *caster_ptr)
         o_ptr->discount = 99;
     } else {
         bool dis_happened = FALSE;
-        msg_print(_("\82»\82Ì\95\90\8aí\82Í\8fj\95\9f\82ð\8c\99\82Á\82Ä\82¢\82é\81I", "The weapon resists your blessing!"));
+        msg_print(_("その武器は祝福を嫌っている!", "The weapon resists your blessing!"));
 
         /* Disenchant tohit */
         if (o_ptr->to_h > 0) {
@@ -122,10 +122,10 @@ bool bless_weapon(player_type *caster_ptr)
             o_ptr->to_a--;
 
         if (dis_happened) {
-            msg_print(_("\8eü\88Í\82ª\96}\97f\82È\95µ\88Í\8bC\82Å\96\9e\82¿\82½...", "There is a static feeling in the air..."));
+            msg_print(_("周囲が凡庸な雰囲気で満ちた...", "There is a static feeling in the air..."));
 
 #ifdef JP
-            msg_format("%s \82Í\97ò\89»\82µ\82½\81I", o_name);
+            msg_format("%s は劣化した!", o_name);
 #else
             msg_format("%s %s %s disenchanted!", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "were" : "was"));
 #endif
diff --git a/src/monster-attack/monster-attack-lose.c b/src/monster-attack/monster-attack-lose.c
new file mode 100644 (file)
index 0000000..ced3deb
--- /dev/null
@@ -0,0 +1,193 @@
+#include "monster-attack/monster-attack-lose.h"
+#include "mind/mind-mirror-master.h"
+#include "monster-attack/monster-attack-status.h"
+#include "monster-attack/monster-attack-util.h"
+#include "player/player-damage.h"
+#include "player/player-status-flags.h"
+#include "player/player-status-resist.h"
+#include "status/bad-status-setter.h"
+#include "status/base-status.h"
+#include "status/element-resistance.h"
+#include "view/display-messages.h"
+
+/*!
+ * @brief 病気ダメージを計算する (毒耐性があれば、(1d4 + 4) / 9になる。二重耐性なら更に(1d4 + 4) / 9)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ * @details 10% (毒の一次耐性があれば4%、二重耐性ならば1.6%)の確率で耐久が低下し、更に1/10の確率で永久低下する
+ */
+void calc_blow_disease(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_resist_pois(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
+
+    if (is_oppose_pois(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (!(target_ptr->resist_pois || is_oppose_pois(target_ptr)) && set_poisoned(target_ptr, target_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
+        monap_ptr->obvious = TRUE;
+
+    bool disease_possibility = randint1(100) > calc_nuke_damage_rate(target_ptr);
+    if (disease_possibility || (randint1(100) > 10) || (target_ptr->prace == RACE_ANDROID))
+        return;
+
+    bool perm = one_in_(10);
+    if (dec_stat(target_ptr, A_CON, randint1(10), perm)) {
+        msg_print(_("病があなたを蝕んでいる気がする。", "You feel sickly."));
+        monap_ptr->obvious = TRUE;
+    }
+}
+
+/*!
+ * @brief 腕力低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+void calc_blow_lose_strength(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_sustain_str(target_ptr))
+        monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (do_dec_stat(target_ptr, A_STR))
+        monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief 知能低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+void calc_blow_lose_intelligence(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_sustain_int(target_ptr))
+        monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (do_dec_stat(target_ptr, A_INT))
+        monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief 賢さ低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+void calc_blow_lose_wisdom(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_sustain_wis(target_ptr))
+        monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (do_dec_stat(target_ptr, A_WIS))
+        monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief 器用低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+void calc_blow_lose_dexterity(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_sustain_dex(target_ptr))
+        monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (do_dec_stat(target_ptr, A_DEX))
+        monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief 耐久低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+void calc_blow_lose_constitution(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_sustain_con(target_ptr))
+        monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (do_dec_stat(target_ptr, A_CON))
+        monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief 魅力低下ダメージを計算する (維持があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+void calc_blow_lose_charisma(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_sustain_chr(target_ptr))
+        monap_ptr->get_damage = monap_ptr->get_damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (do_dec_stat(target_ptr, A_CHR))
+        monap_ptr->obvious = TRUE;
+}
+
+/*!
+ * @brief 全能力低下ダメージを計算する (維持があれば、1つに付き-3%軽減する)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+void calc_blow_lose_all(player_type *target_ptr, monap_type *monap_ptr)
+{
+    int damage_ratio = 100;
+    if (is_sustain_str(target_ptr))
+        damage_ratio -= 3;
+
+    if (is_sustain_int(target_ptr))
+        damage_ratio -= 3;
+
+    if (is_sustain_wis(target_ptr))
+        damage_ratio -= 3;
+
+    if (is_sustain_dex(target_ptr))
+        damage_ratio -= 3;
+
+    if (is_sustain_con(target_ptr))
+        damage_ratio -= 3;
+
+    if (is_sustain_chr(target_ptr))
+        damage_ratio -= 3;
+
+    monap_ptr->damage = monap_ptr->damage * damage_ratio / 100;
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    process_lose_all_attack(target_ptr, monap_ptr);
+}
diff --git a/src/monster-attack/monster-attack-lose.h b/src/monster-attack/monster-attack-lose.h
new file mode 100644 (file)
index 0000000..70bd2cd
--- /dev/null
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "system/angband.h"
+
+typedef struct monap_type monap_type;
+void calc_blow_disease(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_strength(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_intelligence(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_wisdom(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_dexterity(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_constitution(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_charisma(player_type *target_ptr, monap_type *monap_ptr);
+void calc_blow_lose_all(player_type *target_ptr, monap_type *monap_ptr);
index 605b681..3647c76 100644 (file)
@@ -7,13 +7,16 @@
 
 #include "monster-attack/monster-attack-switcher.h"
 #include "inventory/inventory-slot-types.h"
-#include "monster-attack/monster-attack-status.h"
-#include "monster-attack/monster-eating.h"
 #include "mind/drs-types.h"
 #include "mind/mind-mirror-master.h"
+#include "monster-attack/monster-attack-lose.h"
+#include "monster-attack/monster-attack-status.h"
+#include "monster-attack/monster-eating.h"
 #include "monster/monster-status.h"
 #include "monster/monster-update.h"
 #include "player/player-damage.h"
+#include "player/player-status-flags.h"
+#include "player/player-status-resist.h"
 #include "spell-kind/earthquake.h"
 #include "spell-kind/spells-equipment.h"
 #include "status/bad-status-setter.h"
 #include "system/object-type-definition.h"
 #include "view/display-messages.h"
 
+/*!
+ * @brief 毒ダメージを計算する
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ * @detail 減衰の計算式がpoisではなくnukeなのは仕様 (1/3では減衰が強すぎると判断したため)
+ */
+static void calc_blow_poison(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (monap_ptr->explode)
+        return;
+
+    if (!(target_ptr->resist_pois || is_oppose_pois(target_ptr)) && !check_multishadow(target_ptr)
+        && set_poisoned(target_ptr, target_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
+        monap_ptr->obvious = TRUE;
+
+    monap_ptr->damage = monap_ptr->damage * calc_nuke_damage_rate(target_ptr) / 100;
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_POIS);
+}
+
+/*!
+ * @brief 劣化ダメージを計算する (耐性があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_disenchant(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (monap_ptr->explode)
+        return;
+
+    if (!target_ptr->resist_disen && !check_multishadow(target_ptr) && apply_disenchant(target_ptr, 0)) {
+        update_creature(target_ptr);
+        monap_ptr->obvious = TRUE;
+    }
+
+    if (is_resist_disen(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_DISEN);
+}
+
+/*!
+ * @brief 魔道具吸収ダメージを計算する (消費魔力減少、呪文失敗率減少、魔道具使用能力向上があればそれぞれ-7.5%)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ * @detals 魔道具使用能力向上フラグがあれば、吸収対象のアイテムをスキャンされる回数が半分で済む
+ */
+static void calc_blow_un_power(player_type *target_ptr, monap_type *monap_ptr)
+{
+    int damage_ratio = 1000;
+    if (has_dec_mana(target_ptr))
+        damage_ratio -= 75;
+
+    if (has_easy_spell(target_ptr))
+        damage_ratio -= 75;
+
+    bool is_magic_mastery = has_magic_mastery(target_ptr) != 0;
+    if (is_magic_mastery)
+        damage_ratio -= 75;
+
+    monap_ptr->damage = monap_ptr->damage * damage_ratio / 1000;
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    int max_draining_item = is_magic_mastery ? 5 : 10;
+    for (int i = 0; i < max_draining_item; i++) {
+        INVENTORY_IDX i_idx = (INVENTORY_IDX)randint0(INVEN_PACK);
+        monap_ptr->o_ptr = &target_ptr->inventory_list[i_idx];
+        if (monap_ptr->o_ptr->k_idx == 0)
+            continue;
+
+        if (process_un_power(target_ptr, monap_ptr))
+            break;
+    }
+}
+
+/*!
+ * @brief 盲目ダメージを計算する (耐性があれば、(1d4 + 3) / 8になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_blind(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_resist_blind(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 3) / 8;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead)
+        return;
+
+    process_blind_attack(target_ptr, monap_ptr);
+    update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_BLIND);
+}
+
+/*!
+ * @brief 混乱ダメージを計算する (耐性があれば、(1d4 + 3) / 8になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_confusion(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (monap_ptr->explode)
+        return;
+
+    if (is_resist_conf(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 3) / 8;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead)
+        return;
+
+    if (!target_ptr->resist_conf && !check_multishadow(target_ptr) && set_confused(target_ptr, target_ptr->confused + 3 + randint1(monap_ptr->rlev)))
+        monap_ptr->obvious = TRUE;
+
+    update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_CONF);
+}
+
+/*!
+ * @brief 恐怖ダメージを計算する (耐性があれば、(1d4 + 3) / 8になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_fear(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (is_resist_fear(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 3) / 8;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead)
+        return;
+
+    process_terrify_attack(target_ptr, monap_ptr);
+    update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_FEAR);
+}
+
+/*!
+ * @brief 麻痺ダメージを計算する (耐性があれば、(1d4 + 3) / 8になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_paralysis(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (has_free_act(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 3) / 8;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead)
+        return;
+
+    process_paralyze_attack(target_ptr, monap_ptr);
+    update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_FREE);
+}
+
+/*!
+ * @brief 経験値吸収ダメージを計算する (経験値保持と地獄耐性があれば、それぞれ-7.5%)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_drain_exp(player_type *target_ptr, monap_type *monap_ptr, const int drain_value, const int hold_exp_prob)
+{
+    s32b d = damroll(drain_value, 6) + (target_ptr->exp / 100) * MON_DRAIN_LIFE;
+    monap_ptr->obvious = TRUE;
+    int damage_ratio = 1000;
+    if (has_hold_exp(target_ptr))
+        damage_ratio -= 75;
+
+    if (is_resist_neth(target_ptr))
+        damage_ratio -= 75;
+
+    monap_ptr->damage = monap_ptr->damage * damage_ratio / 1000;
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    (void)drain_exp(target_ptr, d, d / 10, hold_exp_prob);
+}
+
+/*!
+ * @brief 時間逆転ダメージを計算する (耐性があれば、(1d4 + 4) / 9になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_time(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if (monap_ptr->explode)
+        return;
+
+    process_monster_attack_time(target_ptr, monap_ptr);
+    if (is_resist_time(target_ptr))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+}
+
+/*!
+ * @brief 生命力吸収ダメージを計算する (経験値維持があれば9/10になる)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_drain_life(player_type *target_ptr, monap_type *monap_ptr)
+{
+    s32b d = damroll(60, 6) + (target_ptr->exp / 100) * MON_DRAIN_LIFE;
+    monap_ptr->obvious = TRUE;
+    if (target_ptr->hold_exp)
+        monap_ptr->damage = monap_ptr->damage * 9 / 10;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    bool resist_drain = check_drain_hp(target_ptr, d);
+    process_drain_life(target_ptr, monap_ptr, resist_drain);
+}
+
+/*!
+ * @brief MPダメージを計算する (消費魔力減少、呪文失敗率減少、魔道具使用能力向上があればそれぞれ-5%)
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param monap_ptr モンスターからプレーヤーへの直接攻撃構造体への参照ポインタ
+ * @return なし
+ */
+static void calc_blow_drain_mana(player_type *target_ptr, monap_type *monap_ptr)
+{
+    monap_ptr->obvious = TRUE;
+    int damage_ratio = 100;
+    if (has_dec_mana(target_ptr))
+        damage_ratio -= 5;
+
+    if (has_easy_spell(target_ptr))
+        damage_ratio -= 5;
+
+    if (has_magic_mastery(target_ptr))
+        damage_ratio -= 5;
+
+    monap_ptr->damage = monap_ptr->damage * damage_ratio / 100;
+    process_drain_mana(target_ptr, monap_ptr);
+    update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_MANA);
+}
+
+static void calc_blow_inertia(player_type *target_ptr, monap_type *monap_ptr)
+{
+    if ((target_ptr->fast > 0) || (target_ptr->pspeed >= 130))
+        monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
+
+    monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    if (target_ptr->is_dead || check_multishadow(target_ptr))
+        return;
+
+    if (set_slow(target_ptr, (target_ptr->slow + 4 + randint0(monap_ptr->rlev / 10)), FALSE))
+        monap_ptr->obvious = TRUE;
+}
+
 void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_ptr)
 {
     switch (monap_ptr->effect) {
-    case RBE_NONE: {
+    case RBE_NONE:
         monap_ptr->obvious = TRUE;
         monap_ptr->damage = 0;
         break;
-    }
     case RBE_SUPERHURT: { /* AC軽減あり / Player armor reduces total damage */
         if (((randint1(monap_ptr->rlev * 2 + 300) > (monap_ptr->ac + 200)) || one_in_(13)) && !check_multishadow(target_ptr)) {
             int tmp_damage = monap_ptr->damage - (monap_ptr->damage * ((monap_ptr->ac < 150) ? monap_ptr->ac : 150) / 250);
@@ -47,52 +312,15 @@ void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_pt
         monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
         break;
     }
-    case RBE_POISON: {
-        if (monap_ptr->explode)
-            break;
-
-        if (!(target_ptr->resist_pois || is_oppose_pois(target_ptr)) && !check_multishadow(target_ptr)) {
-            if (set_poisoned(target_ptr, target_ptr->poisoned + randint1(monap_ptr->rlev) + 5)) {
-                monap_ptr->obvious = TRUE;
-            }
-        }
-
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_POIS);
+    case RBE_POISON:
+        calc_blow_poison(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_UN_BONUS: {
-        if (monap_ptr->explode)
-            break;
-
-        if (!target_ptr->resist_disen && !check_multishadow(target_ptr)) {
-            if (apply_disenchant(target_ptr, 0)) {
-                update_creature(target_ptr);
-                monap_ptr->obvious = TRUE;
-            }
-        }
-
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_DISEN);
+    case RBE_UN_BONUS:
+        calc_blow_disenchant(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_UN_POWER: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        for (int i = 0; i < 10; i++) {
-            INVENTORY_IDX i_idx = (INVENTORY_IDX)randint0(INVEN_PACK);
-            monap_ptr->o_ptr = &target_ptr->inventory_list[i_idx];
-            if (monap_ptr->o_ptr->k_idx == 0)
-                continue;
-
-            if (process_un_power(target_ptr, monap_ptr))
-                break;
-        }
-
+    case RBE_UN_POWER:
+        calc_blow_un_power(target_ptr, monap_ptr);
         break;
-    }
     case RBE_EAT_GOLD: {
         monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
         if (monster_confused_remaining(monap_ptr->m_ptr))
@@ -145,6 +373,7 @@ void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_pt
     case RBE_ELEC: {
         if (monap_ptr->explode)
             break;
+
         monap_ptr->obvious = TRUE;
         msg_print(_("電撃を浴びせられた!", "You are struck by electricity!"));
         monap_ptr->get_damage += elec_dam(target_ptr, monap_ptr->damage, monap_ptr->ddesc, -1, FALSE);
@@ -154,6 +383,7 @@ void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_pt
     case RBE_FIRE: {
         if (monap_ptr->explode)
             break;
+
         monap_ptr->obvious = TRUE;
         msg_print(_("全身が炎に包まれた!", "You are enveloped in flames!"));
         monap_ptr->get_damage += fire_dam(target_ptr, monap_ptr->damage, monap_ptr->ddesc, -1, FALSE);
@@ -163,125 +393,46 @@ void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_pt
     case RBE_COLD: {
         if (monap_ptr->explode)
             break;
+
         monap_ptr->obvious = TRUE;
         msg_print(_("全身が冷気で覆われた!", "You are covered with frost!"));
         monap_ptr->get_damage += cold_dam(target_ptr, monap_ptr->damage, monap_ptr->ddesc, -1, FALSE);
         update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_COLD);
         break;
     }
-    case RBE_BLIND: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead)
-            break;
-
-        process_blind_attack(target_ptr, monap_ptr);
-        update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_BLIND);
+    case RBE_BLIND:
+        calc_blow_blind(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_CONFUSE: {
-        if (monap_ptr->explode)
-            break;
-
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead)
-            break;
-
-        if (!target_ptr->resist_conf && !check_multishadow(target_ptr)) {
-            if (set_confused(target_ptr, target_ptr->confused + 3 + randint1(monap_ptr->rlev))) {
-                monap_ptr->obvious = TRUE;
-            }
-        }
-
-        update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_CONF);
+    case RBE_CONFUSE:
+        calc_blow_confusion(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_TERRIFY: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead)
-            break;
-
-        process_terrify_attack(target_ptr, monap_ptr);
-        update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_FEAR);
+    case RBE_TERRIFY:
+        calc_blow_fear(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_PARALYZE: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-
-        if (target_ptr->is_dead)
-            break;
-
-        process_paralyze_attack(target_ptr, monap_ptr);
-        update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_FREE);
+    case RBE_PARALYZE:
+        calc_blow_paralysis(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_LOSE_STR: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        if (do_dec_stat(target_ptr, A_STR))
-            monap_ptr->obvious = TRUE;
-
+    case RBE_LOSE_STR:
+        calc_blow_lose_strength(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_LOSE_INT: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        if (do_dec_stat(target_ptr, A_INT))
-            monap_ptr->obvious = TRUE;
-
+    case RBE_LOSE_INT:
+        calc_blow_lose_intelligence(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_LOSE_WIS: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        if (do_dec_stat(target_ptr, A_WIS))
-            monap_ptr->obvious = TRUE;
-
+    case RBE_LOSE_WIS:
+        calc_blow_lose_wisdom(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_LOSE_DEX: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        if (do_dec_stat(target_ptr, A_DEX))
-            monap_ptr->obvious = TRUE;
-
+    case RBE_LOSE_DEX:
+        calc_blow_lose_dexterity(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_LOSE_CON: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        if (do_dec_stat(target_ptr, A_CON))
-            monap_ptr->obvious = TRUE;
-
+    case RBE_LOSE_CON:
+        calc_blow_lose_constitution(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_LOSE_CHR: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        if (do_dec_stat(target_ptr, A_CHR))
-            monap_ptr->obvious = TRUE;
-
+    case RBE_LOSE_CHR:
+        calc_blow_lose_charisma(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_LOSE_ALL: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        process_lose_all_attack(target_ptr, monap_ptr);
+    case RBE_LOSE_ALL:
+        calc_blow_lose_all(target_ptr, monap_ptr);
         break;
-    }
     case RBE_SHATTER: { /* AC軽減あり / Player armor reduces total damage */
         monap_ptr->obvious = TRUE;
         monap_ptr->damage -= (monap_ptr->damage * ((monap_ptr->ac < 150) ? monap_ptr->ac : 150) / 250);
@@ -291,107 +442,33 @@ void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_pt
 
         break;
     }
-    case RBE_EXP_10: {
-        s32b d = damroll(10, 6) + (target_ptr->exp / 100) * MON_DRAIN_LIFE;
-        monap_ptr->obvious = TRUE;
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        (void)drain_exp(target_ptr, d, d / 10, 95);
+    case RBE_EXP_10:
+        calc_blow_drain_exp(target_ptr, monap_ptr, 10, 95);
         break;
-    }
-    case RBE_EXP_20: {
-        s32b d = damroll(20, 6) + (target_ptr->exp / 100) * MON_DRAIN_LIFE;
-        monap_ptr->obvious = TRUE;
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        (void)drain_exp(target_ptr, d, d / 10, 90);
+    case RBE_EXP_20:
+        calc_blow_drain_exp(target_ptr, monap_ptr, 20, 90);
         break;
-    }
-    case RBE_EXP_40: {
-        s32b d = damroll(40, 6) + (target_ptr->exp / 100) * MON_DRAIN_LIFE;
-        monap_ptr->obvious = TRUE;
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        (void)drain_exp(target_ptr, d, d / 10, 75);
+    case RBE_EXP_40:
+        calc_blow_drain_exp(target_ptr, monap_ptr, 40, 75);
         break;
-    }
-    case RBE_EXP_80: {
-        s32b d = damroll(80, 6) + (target_ptr->exp / 100) * MON_DRAIN_LIFE;
-        monap_ptr->obvious = TRUE;
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        (void)drain_exp(target_ptr, d, d / 10, 50);
+    case RBE_EXP_80:
+        calc_blow_drain_exp(target_ptr, monap_ptr, 80, 50);
         break;
-    }
-    case RBE_DISEASE: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        if (!(target_ptr->resist_pois || is_oppose_pois(target_ptr))) {
-            if (set_poisoned(target_ptr, target_ptr->poisoned + randint1(monap_ptr->rlev) + 5)) {
-                monap_ptr->obvious = TRUE;
-            }
-        }
-
-        if ((randint1(100) < 11) && (target_ptr->prace != RACE_ANDROID)) {
-            bool perm = one_in_(10);
-            if (dec_stat(target_ptr, A_CON, randint1(10), perm)) {
-                msg_print(_("病があなたを蝕んでいる気がする。", "You feel sickly."));
-                monap_ptr->obvious = TRUE;
-            }
-        }
-
+    case RBE_DISEASE:
+        calc_blow_disease(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_TIME: {
-        if (monap_ptr->explode)
-            break;
-
-        process_monster_attack_time(target_ptr, monap_ptr);
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
+    case RBE_TIME:
+        calc_blow_time(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_DR_LIFE: {
-        s32b d = damroll(60, 6) + (target_ptr->exp / 100) * MON_DRAIN_LIFE;
-        monap_ptr->obvious = TRUE;
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead || check_multishadow(target_ptr))
-            break;
-
-        bool resist_drain = check_drain_hp(target_ptr, d);
-        process_drain_life(target_ptr, monap_ptr, resist_drain);
+    case RBE_DR_LIFE:
+        calc_blow_drain_life(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_DR_MANA: {
-        monap_ptr->obvious = TRUE;
-        process_drain_mana(target_ptr, monap_ptr);
-        update_smart_learn(target_ptr, monap_ptr->m_idx, DRS_MANA);
+    case RBE_DR_MANA:
+        calc_blow_drain_mana(target_ptr, monap_ptr);
         break;
-    }
-    case RBE_INERTIA: {
-        monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
-        if (target_ptr->is_dead)
-            break;
-
-        if (check_multishadow(target_ptr)) {
-            /* Do nothing */
-        } else {
-            if (set_slow(target_ptr, (target_ptr->slow + 4 + randint0(monap_ptr->rlev / 10)), FALSE)) {
-                monap_ptr->obvious = TRUE;
-            }
-        }
-
+    case RBE_INERTIA:
+        calc_blow_inertia(target_ptr, monap_ptr);
         break;
-    }
     case RBE_STUN: {
         monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc, -1);
         if (target_ptr->is_dead)
index 0c9168f..8b59bf5 100644 (file)
@@ -20,6 +20,7 @@
 #include "object/object-mark-types.h"
 #include "player-info/avatar.h"
 #include "player/mimic-info-table.h"
+#include "player/player-status-flags.h"
 #include "player/player-status-table.h"
 #include "status/experience.h"
 #include "system/floor-type-definition.h"
@@ -196,29 +197,32 @@ void process_eat_lite(player_type *target_ptr, monap_type *monap_ptr)
  * @param target_ptr プレーヤーへの参照ポインタ
  * @monap_ptr モンスターからモンスターへの直接攻撃構造体への参照ポインタ
  * @return 吸収されたらTRUE、されなかったらFALSE
+ * @details 魔道具使用能力向上フラグがあれば、吸収量は全部ではなく半分で済む
  */
 bool process_un_power(player_type *target_ptr, monap_type *monap_ptr)
 {
     if (((monap_ptr->o_ptr->tval != TV_STAFF) && (monap_ptr->o_ptr->tval != TV_WAND)) || (monap_ptr->o_ptr->pval == 0))
         return FALSE;
 
-    int heal = monap_ptr->rlev * monap_ptr->o_ptr->pval;
+    bool is_magic_mastery = has_magic_mastery(target_ptr) != 0;
+    int drain_ratio = is_magic_mastery ? 2 : 1;
+    int heal = monap_ptr->rlev * monap_ptr->o_ptr->pval / drain_ratio;
     if (monap_ptr->o_ptr->tval == TV_STAFF)
         heal *= monap_ptr->o_ptr->number;
 
-    heal = MIN(heal, monap_ptr->m_ptr->maxhp - monap_ptr->m_ptr->hp);
+    heal = MIN(heal, (monap_ptr->m_ptr->maxhp - monap_ptr->m_ptr->hp) / drain_ratio);
     msg_print(_("ザックからエネルギーが吸い取られた!", "Energy drains from your pack!"));
     monap_ptr->obvious = TRUE;
     monap_ptr->m_ptr->hp += (HIT_POINT)heal;
     if (target_ptr->health_who == monap_ptr->m_idx)
-        target_ptr->redraw |= (PR_HEALTH);
+        target_ptr->redraw |= PR_HEALTH;
 
     if (target_ptr->riding == monap_ptr->m_idx)
-        target_ptr->redraw |= (PR_UHEALTH);
+        target_ptr->redraw |= PR_UHEALTH;
 
-    monap_ptr->o_ptr->pval = 0;
-    target_ptr->update |= (PU_COMBINE | PU_REORDER);
-    target_ptr->window |= (PW_INVEN);
+    monap_ptr->o_ptr->pval = !is_magic_mastery || (monap_ptr->o_ptr->pval == 1) ? 0 : (monap_ptr->o_ptr->pval + 1) / 2;
+    target_ptr->update |= PU_COMBINE | PU_REORDER;
+    target_ptr->window |= PW_INVEN;
     return TRUE;
 }
 
index 4809a58..c5af30b 100644 (file)
@@ -1,4 +1,4 @@
-#include "monster-floor/monster-death-util.h"
+#include "monster-floor/monster-death-util.h"
 #include "monster-race/monster-race.h"
 #include "monster-race/race-flags1.h"
 #include "monster-race/race-indice-types.h"
@@ -8,9 +8,9 @@
 #include "system/monster-type-definition.h"
 
 /*!
- * @brief \83\82\83\93\83X\83^\81[\82ð\93|\82µ\82½\8dÛ\82Ì\8dà\95ósval\82ð\95Ô\82·
- * @param r_idx \93|\82µ\82½\83\82\83\93\83X\83^\81[\82Ì\8eí\91°ID
- * @return \8dà\95ó\82Ìsval
+ * @brief モンスターを倒した際の財宝svalを返す
+ * @param r_idx 倒したモンスターの種族ID
+ * @return 財宝のsval
  * @details
  * Hack -- Return the "automatic coin type" of a monster race
  * Used to allocate proper treasure when "Creeping coins" die
index df1d85b..d33afac 100644 (file)
@@ -47,10 +47,8 @@ static bool summon_specific_okay(player_type *player_ptr, MONRACE_IDX r_idx)
         if (monster_has_hostile_align(player_ptr, m_ptr, 0, 0, r_ptr))
             return FALSE;
     } else if (summon_specific_who < 0) {
-        if (monster_has_hostile_align(player_ptr, NULL, 10, -10, r_ptr)) {
-            if (!one_in_(ABS(player_ptr->align) / 2 + 1))
-                return FALSE;
-        }
+        if (monster_has_hostile_align(player_ptr, NULL, 10, -10, r_ptr) && !one_in_(ABS(player_ptr->align) / 2 + 1))
+            return FALSE;
     }
 
     if (!summon_unique_okay && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)))
@@ -59,13 +57,14 @@ static bool summon_specific_okay(player_type *player_ptr, MONRACE_IDX r_idx)
     if (!summon_specific_type)
         return TRUE;
 
-    if ((summon_specific_who < 0) && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) && monster_has_hostile_align(player_ptr, NULL, 10, -10, r_ptr))
+    if ((summon_specific_who < 0) && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL))
+        && monster_has_hostile_align(player_ptr, NULL, 10, -10, r_ptr))
         return FALSE;
 
     if ((r_ptr->flags7 & RF7_CHAMELEON) && (d_info[player_ptr->dungeon_idx].flags1 & DF1_CHAMELEON))
         return TRUE;
 
-    return (check_summon_specific(player_ptr, m_ptr->r_idx, r_idx));
+    return check_summon_specific(player_ptr, m_ptr->r_idx, r_idx);
 }
 
 /*!
@@ -104,7 +103,7 @@ bool summon_specific(player_type *player_ptr, MONSTER_IDX who, POSITION y1, POSI
 
     summon_specific_who = who;
     summon_specific_type = type;
-    summon_unique_okay = (mode & PM_ALLOW_UNIQUE) ? TRUE : FALSE;
+    summon_unique_okay = (mode & PM_ALLOW_UNIQUE) != 0;
     get_mon_num_prep(player_ptr, summon_specific_okay, get_monster_hook2(player_ptr, y, x));
 
     MONRACE_IDX r_idx = get_mon_num(player_ptr, (floor_ptr->dun_level + lev) / 2 + 5, 0);
@@ -142,10 +141,7 @@ bool summon_named_creature(player_type *player_ptr, MONSTER_IDX who, POSITION oy
         return FALSE;
 
     POSITION x, y;
-    if (player_ptr->current_floor_ptr->inside_arena)
-        return FALSE;
-
-    if (!mon_scatter(player_ptr, r_idx, &y, &x, oy, ox, 2))
+    if (player_ptr->current_floor_ptr->inside_arena || !mon_scatter(player_ptr, r_idx, &y, &x, oy, ox, 2))
         return FALSE;
 
     return place_monster_aux(player_ptr, who, y, x, r_idx, (mode | PM_NO_KAGE));
index 2a81994..a650e85 100644 (file)
@@ -52,19 +52,16 @@ static bool is_friendly_idx(player_type *player_ptr, MONSTER_IDX m_idx) { return
 static bool monster_hook_tanuki(player_type *player_ptr, MONRACE_IDX r_idx)
 {
     monster_race *r_ptr = &r_info[r_idx];
-
-    if (r_ptr->flags1 & (RF1_UNIQUE))
-        return FALSE;
-    if (r_ptr->flags2 & RF2_MULTIPLY)
-        return FALSE;
-    if (r_ptr->flags7 & (RF7_FRIENDLY | RF7_CHAMELEON))
-        return FALSE;
-    if (r_ptr->flags7 & RF7_AQUATIC)
+    bool unselectable = (r_ptr->flags1 & RF1_UNIQUE) != 0;
+    unselectable |= (r_ptr->flags2 & RF2_MULTIPLY) != 0;
+    unselectable |= (r_ptr->flags7 & (RF7_FRIENDLY | RF7_CHAMELEON)) != 0;
+    unselectable |= (r_ptr->flags7 & RF7_AQUATIC) != 0;
+    if (unselectable)
         return FALSE;
 
-    if ((r_ptr->blow[0].method == RBM_EXPLODE) || (r_ptr->blow[1].method == RBM_EXPLODE) || (r_ptr->blow[2].method == RBM_EXPLODE)
-        || (r_ptr->blow[3].method == RBM_EXPLODE))
-        return FALSE;
+    for (int i = 0; i < 4; i++)
+        if (r_ptr->blow[i].method == RBM_EXPLODE)
+            return FALSE;
 
     return (*(get_monster_hook(player_ptr)))(player_ptr, r_idx);
 }
@@ -78,15 +75,13 @@ static bool monster_hook_tanuki(player_type *player_ptr, MONRACE_IDX r_idx)
 static MONRACE_IDX initial_r_appearance(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS generate_mode)
 {
     floor_type *floor_ptr = player_ptr->current_floor_ptr;
-    if (player_ptr->pseikaku == PERSONALITY_CHARGEMAN && (generate_mode & PM_JURAL) && !(generate_mode & (PM_MULTIPLY | PM_KAGE))) {
+    if (player_ptr->pseikaku == PERSONALITY_CHARGEMAN && (generate_mode & PM_JURAL) && !(generate_mode & (PM_MULTIPLY | PM_KAGE)))
         return MON_ALIEN_JURAL;
-    }
 
     if (!(r_info[r_idx].flags7 & RF7_TANUKI))
         return r_idx;
 
     get_mon_num_prep(player_ptr, monster_hook_tanuki, NULL);
-
     int attempts = 1000;
     DEPTH min = MIN(floor_ptr->base_level - 5, 50);
     while (--attempts) {
index e3bd8a3..f0d9abc 100644 (file)
@@ -1,5 +1,5 @@
-/*!
- * @brief \83\82\83\93\83X\83^\81[\8e\80\96S\8e\9e\82Ì\93Á\8eê\8f\88\97\9dswitch (\88ê\94Ê\93I\82È\8f\88\97\9d\82àdefault\82Å\8eÀ\8e{)
+/*!
+ * @brief モンスター死亡時の特殊処理switch (一般的な処理もdefaultで実施)
  * @date 2020/08/21
  * @author Hourier
  */
 #include "world/world.h"
 
 /*!
- * @brief \8e\80\96S\8e\9e\8f¢\8a«\8f\88\97\9d (\8d¡\82Ì\82Æ\82±\82ë\8e©\95ª\8e©\90g\82Ì\82Ý)
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param md_ptr \83\82\83\93\83X\83^\81[\8c\82\94j\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param type \8f¢\8a«\83^\83C\83v
- * @param probability \8f¢\8a«\8am\97¦ (\8cv\8eZ\8e®\81F1 - 1/probability)
- * @param radius \8f¢\8a«\94¼\8ca (\83\82\83\93\83X\83^\81[\82ª\8e\80\96S\82µ\82½\8dÀ\95W\82©\82ç\94¼\8ca\89½\83}\83X\88È\93à\82É\8f¢\8a«\82³\82¹\82é\82©)
- * @param message \8f¢\8a«\8e\9e\82Ì\83\81\83b\83Z\81[\83W
- * @return \82È\82µ
+ * @brief 死亡時召喚処理 (今のところ自分自身のみ)
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param md_ptr モンスター撃破構造体への参照ポインタ
+ * @param type 召喚タイプ
+ * @param probability 召喚確率 (計算式:1 - 1/probability)
+ * @param radius 召喚半径 (モンスターが死亡した座標から半径何マス以内に召喚させるか)
+ * @param message 召喚時のメッセージ
+ * @return なし
  */
 static void summon_self(player_type *player_ptr, monster_death_type *md_ptr, summon_type type, int probability, POSITION radius, concptr message)
 {
@@ -91,7 +91,7 @@ static void on_dead_pink_horror(player_type *player_ptr, monster_death_type *md_
     }
 
     if (notice)
-        msg_print(_("\83s\83\93\83N\81E\83z\83\89\81[\82Í\95ª\97ô\82µ\82½\81I", "The Pink horror divides!"));
+        msg_print(_("ピンク・ホラーは分裂した!", "The Pink horror divides!"));
 }
 
 static void on_dead_bloodletter(player_type* player_ptr, monster_death_type* md_ptr)
@@ -125,14 +125,14 @@ static void on_dead_raal(player_type *player_ptr, monster_death_type *md_ptr)
 }
 
 /*!
- * @brief 6/7\82Ì\8am\97¦\82Å\81A20\83}\83X\88È\93à\82É\8bÅ\82Ì\90í\8em\8e©\90g\82ð\8f¢\8a«\82·\82é
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param md_ptr \83\82\83\93\83X\83^\81[\8c\82\94j\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \82È\82µ
+ * @brief 6/7の確率で、20マス以内に暁の戦士自身を召喚する
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param md_ptr モンスター撃破構造体への参照ポインタ
+ * @return なし
  */
 static void on_dead_dawn(player_type *player_ptr, monster_death_type *md_ptr)
 {
-    summon_self(player_ptr, md_ptr, SUMMON_DAWN, 7, 20, _("\90V\82½\82È\90í\8em\82ª\8c»\82ê\82½\81I", "A new warrior steps forth!"));
+    summon_self(player_ptr, md_ptr, SUMMON_DAWN, 7, 20, _("新たな戦士が現れた!", "A new warrior steps forth!"));
 }
 
 static void on_dead_unmaker(player_type *player_ptr, monster_death_type *md_ptr)
@@ -140,7 +140,7 @@ static void on_dead_unmaker(player_type *player_ptr, monster_death_type *md_ptr)
     if (is_seen(player_ptr, md_ptr->m_ptr)) {
         GAME_TEXT m_name[MAX_NLEN];
         monster_desc(player_ptr, m_name, md_ptr->m_ptr, MD_NONE);
-        msg_format(_("%s\82Í\95Ó\82è\82É\83\8d\83O\83\8b\83X\82Ì\8ec\82è\8d\81\82ð\8eT\82«\8eU\82ç\82µ\82½\81I", "%^s sprinkled the remaining incense from Logrus!"), m_name);
+        msg_format(_("%sは辺りにログルスの残り香を撒き散らした!", "%^s sprinkled the remaining incense from Logrus!"), m_name);
     }
 
     (void)project(player_ptr, md_ptr->m_idx, 6, md_ptr->md_y, md_ptr->md_x, 100, GF_CHAOS, PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL, -1);
@@ -231,7 +231,7 @@ static void on_dead_rolento(player_type *player_ptr, monster_death_type *md_ptr)
     if (is_seen(player_ptr, md_ptr->m_ptr)) {
         GAME_TEXT m_name[MAX_NLEN];
         monster_desc(player_ptr, m_name, md_ptr->m_ptr, MD_NONE);
-        msg_format(_("%s\82Í\8eè\9eÖ\92e\82ð\95ø\82¦\82Ä\8e©\94\9a\82µ\82½\81I", "%^s broke himself with grenades!"), m_name);
+        msg_format(_("%sは手榴弾を抱えて自爆した!", "%^s broke himself with grenades!"), m_name);
     }
 
     (void)project(player_ptr, md_ptr->m_idx, 3, md_ptr->md_y, md_ptr->md_x, damroll(20, 10), GF_FIRE, PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL, -1);
@@ -255,18 +255,18 @@ static void on_dead_aqua_illusion(player_type *player_ptr, monster_death_type *m
     }
 
     if (notice)
-        msg_print(_("\96A\82ª\92e\82¯\82½\81I", "The bubble pops!"));
+        msg_print(_("泡が弾けた!", "The bubble pops!"));
 }
 
 /*!
- * @brief 7/8\82Ì\8am\97¦\82Å\81A5\83}\83X\88È\93à\82É\83g\81[\83e\83\80\83\82\83A\83C\8e©\90g\82ð\8f¢\8a«\82·\82é
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param md_ptr \83\82\83\93\83X\83^\81[\8c\82\94j\8d\\91¢\91Ì\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \82È\82µ
+ * @brief 7/8の確率で、5マス以内にトーテムモアイ自身を召喚する
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param md_ptr モンスター撃破構造体への参照ポインタ
+ * @return なし
  */
 static void on_dead_totem_moai(player_type *player_ptr, monster_death_type *md_ptr)
 {
-    summon_self(player_ptr, md_ptr, SUMMON_TOTEM_MOAI, 8, 5, _("\90V\82½\82È\83\82\83A\83C\82ª\8c»\82ê\82½\81I", "A new moai steps forth!"));
+    summon_self(player_ptr, md_ptr, SUMMON_TOTEM_MOAI, 8, 5, _("新たなモアイが現れた!", "A new moai steps forth!"));
 }
 
 static void on_dead_mimics(player_type *player_ptr, monster_death_type *md_ptr)
index 87dec24..aab524f 100644 (file)
@@ -813,19 +813,12 @@ bool monster_can_entry_arena(player_type *player_ptr, MONRACE_IDX r_idx)
 
     HIT_POINT dam = 0;
     monster_race *r_ptr = &r_info[r_idx];
-    if (r_ptr->flags1 & (RF1_NEVER_MOVE))
-        return FALSE;
-
-    if (r_ptr->flags2 & (RF2_MULTIPLY))
-        return FALSE;
-
-    if (r_ptr->flags2 & (RF2_QUANTUM))
-        return FALSE;
-
-    if (r_ptr->flags7 & (RF7_AQUATIC))
-        return FALSE;
-
-    if (r_ptr->flags7 & (RF7_CHAMELEON))
+    bool unselectable = (r_ptr->flags1 & RF1_NEVER_MOVE) != 0;
+    unselectable |= (r_ptr->flags2 & RF2_MULTIPLY) != 0;
+    unselectable |= ((r_ptr->flags2 & RF2_QUANTUM) != 0) && ((r_ptr->flags1 & RF1_UNIQUE) == 0);
+    unselectable |= (r_ptr->flags7 & RF7_AQUATIC) != 0;
+    unselectable |= (r_ptr->flags7 & RF7_CHAMELEON) != 0;
+    if (unselectable)
         return FALSE;
 
     for (int i = 0; i < 4; i++) {
index 51212e5..50aefa4 100644 (file)
@@ -55,10 +55,9 @@ typedef enum monster_race_type {
     MON_RAAL = 557,
     MON_NIGHTBLADE = 564,
     MON_BARON_HELL = 609,
-    MON_G_C_DRAKE = 646,
-    MON_F_ANGEL = 652,
+    MON_ANCIENT_CRISTAL_DRAGON = 646,
+    MON_FALLEN_ANGEL = 652,
     MON_D_ELF_SORC = 657,
-    MON_IRON_LICH = 666,
     MON_DREADMASTER = 690,
     MON_DROLEM = 691,
     MON_DAWN = 693,
@@ -66,7 +65,6 @@ typedef enum monster_race_type {
     MON_SMAUG = 697,
     MON_STORMBRINGER = 698,
     MON_ULTRA_PALADIN = 699,
-    MON_G_TITAN = 702,
     MON_S_TYRANNO = 705,
     MON_FAFNER = 712,
     MON_G_BALROG = 720,
@@ -75,7 +73,6 @@ typedef enum monster_race_type {
     MON_NIGHTWALKER = 768,
     MON_SHADOWLORD = 774,
     MON_JABBERWOCK = 778,
-    MON_ULT_BEHOLDER = 781,
     MON_SHAMBLER = 786,
     MON_BLACK_REAVER = 798,
     MON_UNMAKER = 815,
@@ -98,8 +95,6 @@ typedef enum monster_race_type {
     MON_D_ELF_SHADE = 886,
     MON_TROLL_KING = 894,
     MON_ELF_LORD = 900,
-    MON_G_MASTER_MYS = 917,
-    MON_IE = 921,
     MON_TSUCHINOKO = 926,
     MON_LOCKE_CLONE = 930,
     MON_CALDARM = 931,
@@ -152,4 +147,19 @@ typedef enum monster_race_type {
     MON_VAIF = 1162,
     MON_DEMON_SLAYER_SENIOR = 1164,
     MON_DEMON_SLAYER_MEMBER = 1165,
+    MON_MASTER_MYSTIC = 1178,
+    MON_BRONZE_LICH = 1180,
+    MON_ULT_BEHOLDER = 1185,
+    MON_G_TITAN = 1187,
+    MON_WYRM_COLOURS = 1198,
+    MON_ALDUIN = 1209,
+    MON_FOLLOWER_WARRIOR = 1210,
+    MON_FOLLOWER_MAGE = 1211,
+    MON_MIRAAK = 1212,
+    MON_SCARAB = 1220,
+    MON_IMHOTEP = 1221,
+    MON_EDGE = 1245,
+    MON_JOBZ = 1247,
+    MON_VESPOID = 1252,
+    MON_QUEEN_VESPOID = 1253,
 } monster_race_type;
index 3105e72..8204a0f 100644 (file)
@@ -327,7 +327,7 @@ static void update_specific_race_telepathy(player_type *subject_ptr, um_type *um
     }
 }
 
-static bool check_cold_blood(player_type *subject_ptr, um_type *um_ptr)
+static bool check_cold_blood(player_type *subject_ptr, um_type *um_ptr, const POSITION distance)
 {
     if (distance > subject_ptr->see_infra)
         return FALSE;
@@ -386,7 +386,7 @@ static void decide_sight_invisible_monster(player_type *subject_ptr, um_type *um
         um_ptr->flag = TRUE;
     }
 
-    bool do_cold_blood = check_cold_blood(subject_ptr, um_ptr);
+    bool do_cold_blood = check_cold_blood(subject_ptr, um_ptr, distance);
     bool do_invisible = check_invisible(subject_ptr, um_ptr);
     if (!um_ptr->flag || !is_original_ap(um_ptr->m_ptr) || subject_ptr->image)
         return;
index 3a44977..642d3ea 100644 (file)
@@ -40,7 +40,7 @@ int chameleon_change_m_idx = 0;
  * @brief 召喚条件を指定するグローバル変数 / Hack -- the "type" of the current "summon specific"
  * @todo summon_specific_typeグローバル変数の除去と関数引数への代替を行う
  */
-int summon_specific_type = 0;
+summon_type summon_specific_type = SUMMON_NONE;
 
 static monsterrace_hook_type get_mon_num_hook;
 static monsterrace_hook_type get_mon_num2_hook;
index 4bd0aec..896f883 100644 (file)
@@ -7,7 +7,8 @@ typedef bool (*monsterrace_hook_type)(player_type *, MONRACE_IDX);
 extern MONSTER_IDX hack_m_idx;
 extern MONSTER_IDX hack_m_idx_ii;
 extern int chameleon_change_m_idx;
-extern int summon_specific_type;
+typedef enum summon_type summon_type;
+extern summon_type summon_specific_type;
 
 monsterrace_hook_type get_monster_hook(player_type *player_ptr);
 monsterrace_hook_type get_monster_hook2(player_type *player_ptr, POSITION y, POSITION x);
index c4ee64b..8d1a05a 100644 (file)
@@ -61,6 +61,40 @@ MONSTER_NUMBER summon_Kin(player_type *target_ptr, POSITION y, POSITION x, int r
     return count;
 }
 
+static void decide_summon_kin_caster(
+    player_type *target_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int target_type, concptr m_name, concptr m_poss, const bool known)
+{
+    floor_type *floor_ptr = target_ptr->current_floor_ptr;
+    monster_type *m_ptr = &floor_ptr->m_list[m_idx];
+    bool see_either = see_monster(target_ptr, m_idx) || see_monster(target_ptr, t_idx);
+    bool mon_to_mon = target_type == MONSTER_TO_MONSTER;
+    bool mon_to_player = target_type == MONSTER_TO_PLAYER;
+    if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT) {
+        monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
+            _("%^sがダンジョンの主を召喚した。", "%^s magically summons guardians of dungeons."),
+            _("%^sがダンジョンの主を召喚した。", "%^s magically summons guardians of dungeons."), target_type);
+        return;
+    }
+
+    if (mon_to_player || (mon_to_mon && known && see_either))
+        disturb(target_ptr, TRUE, TRUE);
+
+    if (target_ptr->blind) {
+        if (mon_to_player)
+            msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
+    } else if (mon_to_player || (mon_to_mon && known && see_either)) {
+        monster_race *r_ptr = &r_info[m_ptr->r_idx];
+#ifdef JP
+        (void)m_poss;
+#endif
+        _(msg_format("%sが魔法で%sを召喚した。", m_name, ((r_ptr->flags1 & RF1_UNIQUE) ? "手下" : "仲間")),
+            msg_format("%^s magically summons %s %s.", m_name, m_poss, ((r_ptr->flags1 & RF1_UNIQUE) ? "minions" : "kin")));
+    }
+
+    if (mon_to_mon && known && !see_either)
+        floor_ptr->monster_noise = TRUE;
+}
+
 /*!
  * @brief RF6_S_KINの処理。救援召喚。使用するモンスターの種類により、実処理に分岐させる。 /
  * @param target_ptr プレーヤーへの参照ポインタ
@@ -68,16 +102,14 @@ MONSTER_NUMBER summon_Kin(player_type *target_ptr, POSITION y, POSITION x, int r
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
-void spell_RF6_S_KIN(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_KIN(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int target_type)
 {
     floor_type *floor_ptr = target_ptr->current_floor_ptr;
     monster_type *m_ptr = &floor_ptr->m_list[m_idx];
-    monster_race *r_ptr = &r_info[m_ptr->r_idx];
     DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
-    int count = 0;
     GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN], m_poss[80];
     monster_name(target_ptr, m_idx, m_name);
     monster_name(target_ptr, t_idx, t_name);
@@ -85,31 +117,8 @@ void spell_RF6_S_KIN(player_type *target_ptr, POSITION y, POSITION x, MONSTER_ID
 
     disturb(target_ptr, TRUE, TRUE);
     bool known = monster_near_player(floor_ptr, m_idx, t_idx);
-    bool see_either = see_monster(target_ptr, m_idx) || see_monster(target_ptr, t_idx);
-    bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
-    bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
-    if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT) {
-        monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
-            _("%^sがダンジョンの主を召喚した。", "%^s magically summons guardians of dungeons."),
-            _("%^sがダンジョンの主を召喚した。", "%^s magically summons guardians of dungeons."), TARGET_TYPE);
-    } else {
-        if (mon_to_player || (mon_to_mon && known && see_either))
-            disturb(target_ptr, TRUE, TRUE);
-
-        if (target_ptr->blind) {
-            if (mon_to_player)
-                msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
-        } else {
-            if (mon_to_player || (mon_to_mon && known && see_either)) {
-                _(msg_format("%sが魔法で%sを召喚した。", m_name, ((r_ptr->flags1 & RF1_UNIQUE) ? "手下" : "仲間")),
-                    msg_format("%^s magically summons %s %s.", m_name, m_poss, ((r_ptr->flags1 & RF1_UNIQUE) ? "minions" : "kin")));
-            }
-        }
-
-        if (mon_to_mon && known && !see_either)
-            floor_ptr->monster_noise = TRUE;
-    }
-
+    decide_summon_kin_caster(target_ptr, m_idx, t_idx, target_type, m_name, m_poss, known);
+    int count = 0;
     switch (m_ptr->r_idx) {
     case MON_MENELDOR:
     case MON_GWAIHIR:
@@ -117,11 +126,11 @@ void spell_RF6_S_KIN(player_type *target_ptr, POSITION y, POSITION x, MONSTER_ID
         count += summon_EAGLE(target_ptr, y, x, rlev, m_idx);
         break;
     case MON_BULLGATES:
-        count += summon_IE(target_ptr, y, x, rlev, m_idx);
+        count += summon_EDGE(target_ptr, y, x, rlev, m_idx);
         break;
     case MON_SERPENT:
     case MON_ZOMBI_SERPENT:
-        count += summon_guardian(target_ptr, y, x, rlev, m_idx, t_idx, TARGET_TYPE);
+        count += summon_guardian(target_ptr, y, x, rlev, m_idx, t_idx, target_type);
         break;
     case MON_CALDARM:
         count += summon_LOCKE_CLONE(target_ptr, y, x, m_idx);
@@ -130,20 +139,35 @@ void spell_RF6_S_KIN(player_type *target_ptr, POSITION y, POSITION x, MONSTER_ID
         count += summon_LOUSE(target_ptr, y, x, rlev, m_idx);
         break;
     case MON_VAIF:
-        count += summon_MOAI(target_ptr, y, x, m_idx);
+        count += summon_MOAI(target_ptr, y, x, rlev, m_idx);
         break;
     case MON_DEMON_SLAYER_SENIOR:
         count += summon_DEMON_SLAYER(target_ptr, y, x, m_idx);
         break;
+    case MON_ALDUIN:
+        count += summon_HIGHEST_DRAGON(target_ptr, y, x, m_idx);
+        break;
+    case MON_MIRAAK:
+        count += summon_APOCRYPHA(target_ptr, y, x, m_idx);
+        break;
+    case MON_IMHOTEP:
+        count += summon_PYRAMID(target_ptr, y, x, rlev, m_idx);
+        break;
+    case MON_JOBZ:
+        count += summon_EYE_PHORN(target_ptr, y, x, rlev, m_idx);
+        break;
+    case MON_QUEEN_VESPOID:
+        count += summon_VESPOID(target_ptr, y, x, rlev, m_idx);
+        break;
     default:
         count += summon_Kin(target_ptr, y, x, rlev, m_idx);
         break;
     }
 
-    if (target_ptr->blind && count && mon_to_player)
+    if (target_ptr->blind && count && (target_type == MONSTER_TO_PLAYER))
         msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
 
-    if (known && !see_monster(target_ptr, t_idx) && count && mon_to_mon)
+    if (known && !see_monster(target_ptr, t_idx) && count && (target_type == MONSTER_TO_MONSTER))
         floor_ptr->monster_noise = TRUE;
 }
 
@@ -154,7 +178,7 @@ void spell_RF6_S_KIN(player_type *target_ptr, POSITION y, POSITION x, MONSTER_ID
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_CYBER(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -190,7 +214,7 @@ void spell_RF6_S_CYBER(player_type *target_ptr, POSITION y, POSITION x, MONSTER_
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_MONSTER(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -225,7 +249,7 @@ void spell_RF6_S_MONSTER(player_type *target_ptr, POSITION y, POSITION x, MONSTE
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_MONSTERS(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -261,7 +285,7 @@ void spell_RF6_S_MONSTERS(player_type *target_ptr, POSITION y, POSITION x, MONST
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_ANT(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -292,7 +316,7 @@ void spell_RF6_S_ANT(player_type *target_ptr, POSITION y, POSITION x, MONSTER_ID
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_SPIDER(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -323,7 +347,7 @@ void spell_RF6_S_SPIDER(player_type *target_ptr, POSITION y, POSITION x, MONSTER
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_HOUND(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -355,7 +379,7 @@ void spell_RF6_S_HOUND(player_type *target_ptr, POSITION y, POSITION x, MONSTER_
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_HYDRA(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -386,7 +410,7 @@ void spell_RF6_S_HYDRA(player_type *target_ptr, POSITION y, POSITION x, MONSTER_
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_ANGEL(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -428,7 +452,7 @@ void spell_RF6_S_ANGEL(player_type *target_ptr, POSITION y, POSITION x, MONSTER_
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_DEMON(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -459,7 +483,7 @@ void spell_RF6_S_DEMON(player_type *target_ptr, POSITION y, POSITION x, MONSTER_
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_UNDEAD(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -490,7 +514,7 @@ void spell_RF6_S_UNDEAD(player_type *target_ptr, POSITION y, POSITION x, MONSTER
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_DRAGON(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -521,7 +545,7 @@ void spell_RF6_S_DRAGON(player_type *target_ptr, POSITION y, POSITION x, MONSTER
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_HI_UNDEAD(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -569,7 +593,7 @@ void spell_RF6_S_HI_UNDEAD(player_type *target_ptr, POSITION y, POSITION x, MONS
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_HI_DRAGON(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -606,7 +630,7 @@ void spell_RF6_S_HI_DRAGON(player_type *target_ptr, POSITION y, POSITION x, MONS
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_AMBERITES(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
@@ -639,7 +663,7 @@ void spell_RF6_S_AMBERITES(player_type *target_ptr, POSITION y, POSITION x, MONS
  * @param x 対象の地点のx座標
  * @param m_idx 呪文を唱えるモンスターID
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
+ * @param target_type プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
 void spell_RF6_S_UNIQUE(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
index c85b071..09030ab 100644 (file)
@@ -36,7 +36,7 @@ MONSTER_NUMBER summon_EAGLE(player_type *target_ptr, POSITION y, POSITION x, int
 }
 
 /*!
- * @brief ã\82¤ã\83³ã\82¿ã\83¼ã\83\8dã\83\83ã\83\88ã\83»ã\82¨ã\82¯ã\82¹ã\83\97ã\83­ã\83¼ã\83\80ã\83¼召喚の処理。 /
+ * @brief ã\82¨ã\83\83ã\83\82召喚の処理。 /
  * @param target_ptr プレーヤーへの参照ポインタ
  * @param y 対象の地点のy座標
  * @param x 対象の地点のx座標
@@ -44,13 +44,12 @@ MONSTER_NUMBER summon_EAGLE(player_type *target_ptr, POSITION y, POSITION x, int
  * @param m_idx 呪文を唱えるモンスターID
  * @return 召喚したモンスターの数を返す。
  */
-MONSTER_NUMBER summon_IE(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
+MONSTER_NUMBER summon_EDGE(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 {
     int count = 0;
     int num = 2 + randint1(1 + rlev / 20);
-    for (int k = 0; k < num; k++) {
-        count += summon_named_creature(target_ptr, m_idx, y, x, MON_IE, PM_NONE);
-    }
+    for (int k = 0; k < num; k++)
+        count += summon_named_creature(target_ptr, m_idx, y, x, MON_EDGE, PM_NONE);
 
     return count;
 }
@@ -122,19 +121,18 @@ MONSTER_NUMBER summon_LOUSE(player_type *target_ptr, POSITION y, POSITION x, int
 {
     int count = 0;
     int num = 2 + randint1(3);
-    for (int k = 0; k < num; k++) {
+    for (int k = 0; k < num; k++)
         count += summon_specific(target_ptr, m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP);
-    }
 
     return count;
 }
 
-MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
+MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 {
     int count = 0;
     int num = 3 + randint1(3);
     for (int k = 0; k < num; k++)
-        count += summon_named_creature(target_ptr, m_idx, y, x, MON_SMALL_MOAI, PM_NONE);
+        count += summon_specific(target_ptr, m_idx, y, x, rlev, SUMMON_SMALL_MOAI, PM_NONE);
 
     return count;
 }
@@ -146,6 +144,9 @@ MONSTER_NUMBER summon_DEMON_SLAYER(player_type *target_ptr, POSITION y, POSITION
     for (int k = 0; k < num; k++)
         count += summon_named_creature(target_ptr, m_idx, y, x, MON_DEMON_SLAYER_MEMBER, PM_NONE);
 
+    if (count == 0)
+        msg_print(_("しかし、隊士は全滅していた…。", "However, all demon slayer member were murdered..."));
+
     return count;
 }
 
@@ -207,3 +208,54 @@ MONSTER_NUMBER summon_NAZGUL(player_type *target_ptr, POSITION y, POSITION x, MO
     msg_print(NULL);
     return count;
 }
+
+MONSTER_NUMBER summon_APOCRYPHA(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
+{
+    int count = 0;
+    int num = 4 + randint1(4);
+    summon_type followers = next_bool() ? SUMMON_APOCRYPHA_FOLLOWERS : SUMMON_APOCRYPHA_DRAGONS;
+    for (int k = 0; k < num; k++)
+        count += summon_specific(target_ptr, m_idx, y, x, 200, followers, PM_ALLOW_UNIQUE);
+
+    return count;
+}
+
+MONSTER_NUMBER summon_HIGHEST_DRAGON(player_type* target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
+{
+    int count = 0;
+    int num = 4 + randint1(4);
+    for (int k = 0; k < num; k++)
+        count += summon_specific(target_ptr, m_idx, y, x, 100, SUMMON_APOCRYPHA_DRAGONS, PM_ALLOW_UNIQUE);
+
+    return count;
+}
+
+MONSTER_NUMBER summon_PYRAMID(player_type* target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
+{
+    int count = 0;
+    int num = 2 + randint1(3);
+    for (int k = 0; k < num; k++)
+        count += summon_specific(target_ptr, m_idx, y, x, rlev, SUMMON_PYRAMID, PM_NONE);
+
+    return count;
+}
+
+MONSTER_NUMBER summon_EYE_PHORN(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
+{
+    int count = 0;
+    int num = 2 + randint1(1 + rlev / 20);
+    for (int k = 0; k < num; k++)
+        count += summon_named_creature(target_ptr, m_idx, y, x, MON_EDGE, PM_NONE);
+
+    return count;
+}
+
+MONSTER_NUMBER summon_VESPOID(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
+{
+    int count = 0;
+    int num = 2 + randint1(3);
+    for (int k = 0; k < num; k++)
+        count += summon_specific(target_ptr, m_idx, y, x, rlev, SUMMON_VESPOID, PM_NONE);
+
+    return count;
+}
index 3c260c4..46ffc9e 100644 (file)
@@ -3,10 +3,15 @@
 #include "system/angband.h"
 
 MONSTER_NUMBER summon_EAGLE(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
-MONSTER_NUMBER summon_IE(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_EDGE(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
 MONSTER_NUMBER summon_guardian(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE);
 MONSTER_NUMBER summon_LOCKE_CLONE(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
 MONSTER_NUMBER summon_LOUSE(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
-MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_MOAI(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
 MONSTER_NUMBER summon_DEMON_SLAYER(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
 MONSTER_NUMBER summon_NAZGUL(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_APOCRYPHA(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_HIGHEST_DRAGON(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_PYRAMID(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_EYE_PHORN(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
+MONSTER_NUMBER summon_VESPOID(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx);
index c714fff..c0d8443 100644 (file)
@@ -24,198 +24,164 @@ bool check_summon_specific(player_type *player_ptr, MONRACE_IDX summoner_idx, MO
 {
     monster_race *r_ptr = &r_info[r_idx];
     bool is_match = FALSE;
-
     switch (summon_specific_type) {
-    case SUMMON_ANT: {
-        is_match = (r_ptr->d_char == 'a');
+    case SUMMON_ANT:
+        is_match = r_ptr->d_char == 'a';
         break;
-    }
-    case SUMMON_SPIDER: {
-        is_match = (r_ptr->d_char == 'S');
+    case SUMMON_SPIDER:
+        is_match = r_ptr->d_char == 'S';
         break;
-    }
-    case SUMMON_HOUND: {
-        is_match = ((r_ptr->d_char == 'C') || (r_ptr->d_char == 'Z'));
+    case SUMMON_HOUND:
+        is_match = (r_ptr->d_char == 'C') || (r_ptr->d_char == 'Z');
         break;
-    }
-    case SUMMON_HYDRA: {
-        is_match = (r_ptr->d_char == 'M');
+    case SUMMON_HYDRA:
+        is_match = r_ptr->d_char == 'M';
         break;
-    }
-    case SUMMON_ANGEL: {
-        is_match = (r_ptr->d_char == 'A' && ((r_ptr->flags3 & RF3_EVIL) || (r_ptr->flags3 & RF3_GOOD)));
+    case SUMMON_ANGEL:
+        is_match = (r_ptr->d_char == 'A') && (((r_ptr->flags3 & RF3_EVIL) != 0) || ((r_ptr->flags3 & RF3_GOOD) != 0));
         break;
-    }
-    case SUMMON_DEMON: {
-        is_match = (r_ptr->flags3 & RF3_DEMON);
+    case SUMMON_DEMON:
+        is_match = (r_ptr->flags3 & RF3_DEMON) != 0;
         break;
-    }
-    case SUMMON_UNDEAD: {
-        is_match = (r_ptr->flags3 & RF3_UNDEAD);
+    case SUMMON_UNDEAD:
+        is_match = (r_ptr->flags3 & RF3_UNDEAD) != 0;
         break;
-    }
-    case SUMMON_DRAGON: {
-        is_match = (r_ptr->flags3 & RF3_DRAGON);
+    case SUMMON_DRAGON:
+        is_match = (r_ptr->flags3 & RF3_DRAGON) != 0;
         break;
-    }
-    case SUMMON_HI_UNDEAD: {
-        is_match = ((r_ptr->d_char == 'L') || (r_ptr->d_char == 'V') || (r_ptr->d_char == 'W'));
+    case SUMMON_HI_UNDEAD:
+        is_match = (r_ptr->d_char == 'L') || (r_ptr->d_char == 'V') || (r_ptr->d_char == 'W');
         break;
-    }
-    case SUMMON_HI_DRAGON: {
+    case SUMMON_HI_DRAGON:
         is_match = (r_ptr->d_char == 'D');
         break;
-    }
-    case SUMMON_HI_DEMON: {
-        is_match = (((r_ptr->d_char == 'U') || (r_ptr->d_char == 'H') || (r_ptr->d_char == 'B')) && (r_ptr->flags3 & RF3_DEMON)) ? TRUE : FALSE;
+    case SUMMON_HI_DEMON:
+        is_match = ((r_ptr->d_char == 'U') || (r_ptr->d_char == 'H') || (r_ptr->d_char == 'B')) && ((r_ptr->flags3 & RF3_DEMON) != 0);
         break;
-    }
-    case SUMMON_AMBERITES: {
-        is_match = (r_ptr->flags3 & (RF3_AMBERITE)) ? TRUE : FALSE;
+    case SUMMON_AMBERITES:
+        is_match = (r_ptr->flags3 & RF3_AMBERITE) != 0;
         break;
-    }
-    case SUMMON_UNIQUE: {
-        is_match = (r_ptr->flags1 & (RF1_UNIQUE)) ? TRUE : FALSE;
+    case SUMMON_UNIQUE:
+        is_match = (r_ptr->flags1 & RF1_UNIQUE) != 0;
         break;
-    }
-    case SUMMON_MOLD: {
-        is_match = (r_ptr->d_char == 'm');
+    case SUMMON_MOLD:
+        is_match = r_ptr->d_char == 'm';
         break;
-    }
-    case SUMMON_BAT: {
-        is_match = (r_ptr->d_char == 'b');
+    case SUMMON_BAT:
+        is_match = r_ptr->d_char == 'b';
         break;
-    }
-    case SUMMON_QUYLTHULG: {
-        is_match = (r_ptr->d_char == 'Q');
+    case SUMMON_QUYLTHULG:
+        is_match = r_ptr->d_char == 'Q';
         break;
-    }
-    case SUMMON_COIN_MIMIC: {
-        is_match = (r_ptr->d_char == '$');
+    case SUMMON_COIN_MIMIC:
+        is_match = r_ptr->d_char == '$';
         break;
-    }
-    case SUMMON_MIMIC: {
+    case SUMMON_MIMIC:
         is_match = ((r_ptr->d_char == '!') || (r_ptr->d_char == '?') || (r_ptr->d_char == '=') || (r_ptr->d_char == '$') || (r_ptr->d_char == '|'));
         break;
-    }
-    case SUMMON_GOLEM: {
+    case SUMMON_GOLEM:
         is_match = (r_ptr->d_char == 'g');
         break;
-    }
-    case SUMMON_CYBER: {
-        is_match = ((r_ptr->d_char == 'U') && (r_ptr->flags4 & RF4_ROCKET));
+    case SUMMON_CYBER:
+        is_match = (r_ptr->d_char == 'U') && ((r_ptr->flags4 & RF4_ROCKET) != 0);
         break;
-    }
     case SUMMON_KIN: {
-        SYMBOL_CODE summon_kin_type;
-        if (summoner_idx) {
-            summon_kin_type = r_info[summoner_idx].d_char;
-        } else {
-            summon_kin_type = get_summon_symbol_from_player(player_ptr);
-        }
-
-        is_match = ((r_ptr->d_char == summon_kin_type) && (r_idx != MON_HAGURE));
+        SYMBOL_CODE summon_kin_type = summoner_idx > 0 ? r_info[summoner_idx].d_char : get_summon_symbol_from_player(player_ptr);
+        is_match = (r_ptr->d_char == summon_kin_type) && (r_idx != MON_HAGURE);
         break;
     }
-    case SUMMON_DAWN: {
-        is_match = (r_idx == MON_DAWN);
+    case SUMMON_DAWN:
+        is_match = r_idx == MON_DAWN;
         break;
-    }
-    case SUMMON_ANIMAL: {
-        is_match = (r_ptr->flags3 & (RF3_ANIMAL));
+    case SUMMON_ANIMAL:
+        is_match = (r_ptr->flags3 & RF3_ANIMAL) != 0;
         break;
-    }
-    case SUMMON_ANIMAL_RANGER: {
+    case SUMMON_ANIMAL_RANGER:
         is_match = ((r_ptr->flags3 & (RF3_ANIMAL)) && (angband_strchr("abcflqrwBCHIJKMRS", r_ptr->d_char)) && !(r_ptr->flags3 & (RF3_DRAGON))
             && !(r_ptr->flags3 & (RF3_EVIL)) && !(r_ptr->flags3 & (RF3_UNDEAD)) && !(r_ptr->flags3 & (RF3_DEMON)) && !(r_ptr->flags2 & (RF2_MULTIPLY))
             && !(r_ptr->flags4 || r_ptr->a_ability_flags1 || r_ptr->a_ability_flags2));
         break;
-    }
-    case SUMMON_HI_DRAGON_LIVING: {
-        is_match = ((r_ptr->d_char == 'D') && monster_living(r_idx));
+    case SUMMON_SMALL_MOAI:
+        is_match = r_idx == MON_SMALL_MOAI;
         break;
-    }
-    case SUMMON_LIVING: {
-        is_match = monster_living(r_idx);
+    case SUMMON_PYRAMID:
+        is_match = one_in_(16) ? r_ptr->d_char == 'z' : r_idx == MON_SCARAB;
         break;
-    }
-    case SUMMON_PHANTOM: {
-        is_match = (r_idx == MON_PHANTOM_B || r_idx == MON_PHANTOM_W);
+    case SUMMON_PHANTOM:
+        is_match = (r_idx == MON_PHANTOM_B) || (r_idx == MON_PHANTOM_W);
         break;
-    }
-    case SUMMON_BLUE_HORROR: {
-        is_match = (r_idx == MON_BLUE_HORROR);
+    case SUMMON_BLUE_HORROR:
+        is_match = r_idx == MON_BLUE_HORROR;
         break;
-    }
-    case SUMMON_TOTEM_MOAI: {
+    case SUMMON_TOTEM_MOAI:
         is_match = r_idx == MON_TOTEM_MOAI;
         break;
-    }
-    case SUMMON_ELEMENTAL: {
-        is_match = (r_ptr->d_char == 'E');
+    case SUMMON_LIVING:
+        is_match = monster_living(r_idx);
         break;
-    }
-    case SUMMON_VORTEX: {
-        is_match = (r_ptr->d_char == 'v');
+    case SUMMON_HI_DRAGON_LIVING:
+        is_match = ((r_ptr->d_char == 'D') && monster_living(r_idx));
         break;
-    }
-    case SUMMON_HYBRID: {
-        is_match = (r_ptr->d_char == 'H');
+    case SUMMON_ELEMENTAL:
+        is_match = r_ptr->d_char == 'E';
         break;
-    }
-    case SUMMON_BIRD: {
-        is_match = (r_ptr->d_char == 'B');
+    case SUMMON_VORTEX:
+        is_match = r_ptr->d_char == 'v';
         break;
-    }
-    case SUMMON_KAMIKAZE: {
-        int i;
-        for (i = 0; i < 4; i++)
+    case SUMMON_HYBRID:
+        is_match = r_ptr->d_char == 'H';
+        break;
+    case SUMMON_BIRD:
+        is_match = r_ptr->d_char == 'B';
+        break;
+    case SUMMON_KAMIKAZE:
+        for (int i = 0; i < 4; i++)
             if (r_ptr->blow[i].method == RBM_EXPLODE)
                 is_match = TRUE;
-        break;
-    }
-    case SUMMON_KAMIKAZE_LIVING: {
-        int i;
 
-        for (i = 0; i < 4; i++)
+        break;
+    case SUMMON_KAMIKAZE_LIVING:
+        for (int i = 0; i < 4; i++)
             if (r_ptr->blow[i].method == RBM_EXPLODE)
                 is_match = TRUE;
-        is_match = (is_match && monster_living(r_idx));
+
+        is_match &= monster_living(r_idx);
         break;
-    }
-    case SUMMON_MANES: {
-        is_match = (r_idx == MON_MANES);
+    case SUMMON_MANES:
+        is_match = r_idx == MON_MANES;
         break;
-    }
-    case SUMMON_LOUSE: {
-        is_match = (r_idx == MON_LOUSE);
+    case SUMMON_LOUSE:
+        is_match = r_idx == MON_LOUSE;
         break;
-    }
-    case SUMMON_GUARDIANS: {
-        is_match = (r_ptr->flags7 & RF7_GUARDIAN);
+    case SUMMON_GUARDIANS:
+        is_match = (r_ptr->flags7 & RF7_GUARDIAN) != 0;
         break;
-    }
-    case SUMMON_KNIGHTS: {
+    case SUMMON_KNIGHTS:
         is_match = ((r_idx == MON_NOV_PALADIN) || (r_idx == MON_NOV_PALADIN_G) || (r_idx == MON_PALADIN) || (r_idx == MON_W_KNIGHT)
             || (r_idx == MON_ULTRA_PALADIN) || (r_idx == MON_KNI_TEMPLAR));
         break;
-    }
-    case SUMMON_EAGLES: {
-        is_match = (r_ptr->d_char == 'B' && (r_ptr->flags8 & RF8_WILD_MOUNTAIN) && (r_ptr->flags8 & RF8_WILD_ONLY));
+    case SUMMON_EAGLES:
+        is_match = (r_ptr->d_char == 'B') && ((r_ptr->flags8 & RF8_WILD_MOUNTAIN) != 0) && ((r_ptr->flags8 & RF8_WILD_ONLY) != 0);
         break;
-    }
-    case SUMMON_PIRANHAS: {
-        is_match = (r_idx == MON_PIRANHA);
+    case SUMMON_PIRANHAS:
+        is_match = r_idx == MON_PIRANHA;
         break;
-    }
-    case SUMMON_ARMAGE_GOOD: {
-        is_match = (r_ptr->d_char == 'A' && (r_ptr->flags3 & RF3_GOOD));
+    case SUMMON_ARMAGE_GOOD:
+        is_match = (r_ptr->d_char == 'A') && ((r_ptr->flags3 & RF3_GOOD) != 0);
         break;
-    }
-    case SUMMON_ARMAGE_EVIL: {
-        is_match = ((r_ptr->flags3 & RF3_DEMON) || (r_ptr->d_char == 'A' && (r_ptr->flags3 & RF3_EVIL)));
+    case SUMMON_ARMAGE_EVIL:
+        is_match = ((r_ptr->flags3 & RF3_DEMON) != 0) || ((r_ptr->d_char == 'A') && ((r_ptr->flags3 & RF3_EVIL) != 0));
+        break;
+    case SUMMON_APOCRYPHA_FOLLOWERS:
+        is_match = (r_idx == MON_FOLLOWER_WARRIOR) || (r_idx == MON_FOLLOWER_MAGE);
+        break;
+    case SUMMON_APOCRYPHA_DRAGONS:
+        is_match = (r_ptr->d_char == 'D') && (r_ptr->level >= 60) && (r_idx != MON_WYRM_COLOURS) && (r_idx != MON_ALDUIN);
+        break;
+    case SUMMON_VESPOID:
+        is_match = r_idx == MON_VESPOID;
+    default:
         break;
-    }
     }
 
     return is_match;
index f917216..345659b 100644 (file)
@@ -1,4 +1,4 @@
-#include "object-activation/activation-bolt-ball.h"
+#include "object-activation/activation-bolt-ball.h"
 #include "core/hp-mp-processor.h"
 #include "effect/effect-characteristics.h"
 #include "effect/effect-processor.h"
@@ -14,7 +14,7 @@
 bool activate_missile_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Íá¿\82µ\82¢\82­\82ç\82¢\82É\96¾\82é\82­\8bP\82¢\82Ä\82¢\82é...", "It glows extremely brightly..."));
+    msg_print(_("それは眩しいくらいに明るく輝いている...", "It glows extremely brightly..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -25,7 +25,7 @@ bool activate_missile_1(player_type *user_ptr)
 bool activate_missile_2(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\96\82\96@\82Ì\83g\83Q\82ª\8c»\82ê\82½...", "It grows magical spikes..."));
+    msg_print(_("魔法のトゲが現れた...", "It grows magical spikes..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -39,7 +39,7 @@ bool activate_missile_3(player_type *user_ptr)
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
-    msg_print(_("\82 \82È\82½\82Í\83G\83\8c\83\81\83\93\83g\82Ì\83u\83\8c\83X\82ð\93f\82¢\82½\81B", "You breathe the elements."));
+    msg_print(_("あなたはエレメントのブレスを吐いた。", "You breathe the elements."));
     fire_breath(user_ptr, GF_MISSILE, dir, 300, 4);
     return TRUE;
 }
@@ -47,7 +47,7 @@ bool activate_missile_3(player_type *user_ptr)
 bool activate_bolt_acid_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\8e_\82É\95¢\82í\82ê\82½...", "It is covered in acid..."));
+    msg_print(_("それは酸に覆われた...", "It is covered in acid..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -58,7 +58,7 @@ bool activate_bolt_acid_1(player_type *user_ptr)
 bool activate_bolt_elec_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\89Î\89Ô\82É\95¢\82í\82ê\82½...", "It is covered in sparks..."));
+    msg_print(_("それは火花に覆われた...", "It is covered in sparks..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -69,7 +69,7 @@ bool activate_bolt_elec_1(player_type *user_ptr)
 bool activate_bolt_fire_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\89\8a\82É\95¢\82í\82ê\82½...", "It is covered in fire..."));
+    msg_print(_("それは炎に覆われた...", "It is covered in fire..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -80,7 +80,7 @@ bool activate_bolt_fire_1(player_type *user_ptr)
 bool activate_bolt_cold_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\91\9a\82É\95¢\82í\82ê\82½...", "It is covered in frost..."));
+    msg_print(_("それは霜に覆われた...", "It is covered in frost..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -91,7 +91,7 @@ bool activate_bolt_cold_1(player_type *user_ptr)
 bool activate_bolt_hypodynamia_1(player_type *user_ptr, concptr name)
 {
     DIRECTION dir;
-    msg_format(_("\82 \82È\82½\82Í%s\82É\93G\82ð\92÷\82ß\8eE\82·\82æ\82¤\96½\82\82½\81B", "You order the %s to strangle your opponent."), name);
+    msg_format(_("あなたは%sに敵を締め殺すよう命じた。", "You order the %s to strangle your opponent."), name);
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -102,7 +102,7 @@ bool activate_bolt_hypodynamia_1(player_type *user_ptr, concptr name)
 bool activate_bolt_hypodynamia_2(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\8d\95\82­\8bP\82¢\82Ä\82¢\82é...", "It glows black..."));
+    msg_print(_("黒く輝いている...", "It glows black..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -139,7 +139,7 @@ bool activate_bolt_drain_2(player_type *user_ptr)
 bool activate_bolt_mana(player_type *user_ptr, concptr name)
 {
     DIRECTION dir;
-    msg_format(_("%s\82É\96\82\96@\82Ì\83g\83Q\82ª\8c»\82ê\82½...", "The %s grows magical spikes..."), name);
+    msg_format(_("%sに魔法のトゲが現れた...", "The %s grows magical spikes..."), name);
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -150,7 +150,7 @@ bool activate_bolt_mana(player_type *user_ptr, concptr name)
 bool activate_ball_pois_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\94Z\97Î\90F\82É\96¬\93®\82µ\82Ä\82¢\82é...", "It throbs deep green..."));
+    msg_print(_("それは濃緑色に脈動している...", "It throbs deep green..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -161,7 +161,7 @@ bool activate_ball_pois_1(player_type *user_ptr)
 bool activate_ball_cold_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\91\9a\82É\95¢\82í\82ê\82½...", "It is covered in frost..."));
+    msg_print(_("それは霜に覆われた...", "It is covered in frost..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -172,7 +172,7 @@ bool activate_ball_cold_1(player_type *user_ptr)
 bool activate_ball_cold_2(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\90Â\82­\8c\83\82µ\82­\8bP\82¢\82½...", "It glows an intense blue..."));
+    msg_print(_("それは青く激しく輝いた...", "It glows an intense blue..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -183,7 +183,7 @@ bool activate_ball_cold_2(player_type *user_ptr)
 bool activate_ball_cold_3(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\96¾\82é\82­\94\92\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows bright white..."));
+    msg_print(_("明るく白色に輝いている...", "It glows bright white..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -194,7 +194,7 @@ bool activate_ball_cold_3(player_type *user_ptr)
 bool activate_ball_fire_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\90Ô\82­\8c\83\82µ\82­\8bP\82¢\82½...", "It glows an intense red..."));
+    msg_print(_("それは赤く激しく輝いた...", "It glows an intense red..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -205,7 +205,7 @@ bool activate_ball_fire_1(player_type *user_ptr)
 bool activate_ball_fire_2(player_type *user_ptr, concptr name)
 {
     DIRECTION dir;
-    msg_format(_("%s\82©\82ç\89\8a\82ª\90\81\82«\8fo\82µ\82½...", "The %s rages in fire..."), name);
+    msg_format(_("%sから炎が吹き出した...", "The %s rages in fire..."), name);
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -216,7 +216,7 @@ bool activate_ball_fire_2(player_type *user_ptr, concptr name)
 bool activate_ball_fire_3(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\90[\90Ô\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows deep red..."));
+    msg_print(_("深赤色に輝いている...", "It glows deep red..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -227,7 +227,7 @@ bool activate_ball_fire_3(player_type *user_ptr)
 bool activate_ball_fire_4(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\90Ô\82­\8c\83\82µ\82­\8bP\82¢\82½...", "It glows an intense red..."));
+    msg_print(_("それは赤く激しく輝いた...", "It glows an intense red..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -238,7 +238,7 @@ bool activate_ball_fire_4(player_type *user_ptr)
 bool activate_ball_elec_2(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\93d\8bC\82ª\83p\83`\83p\83`\89¹\82ð\97§\82Ä\82½...", "It crackles with electricity..."));
+    msg_print(_("電気がパチパチ音を立てた...", "It crackles with electricity..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -249,7 +249,7 @@ bool activate_ball_elec_2(player_type *user_ptr)
 bool activate_ball_elec_3(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\90[\90Â\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows deep blue..."));
+    msg_print(_("深青色に輝いている...", "It glows deep blue..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -260,7 +260,7 @@ bool activate_ball_elec_3(player_type *user_ptr)
 bool activate_ball_acid_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\8d\95\82­\8c\83\82µ\82­\8bP\82¢\82½...", "It glows an intense black..."));
+    msg_print(_("それは黒く激しく輝いた...", "It glows an intense black..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -271,7 +271,7 @@ bool activate_ball_acid_1(player_type *user_ptr)
 bool activate_ball_nuke_1(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\82»\82ê\82Í\97Î\82É\8c\83\82µ\82­\8bP\82¢\82½...", "It glows an intense green..."));
+    msg_print(_("それは緑に激しく輝いた...", "It glows an intense green..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -285,7 +285,7 @@ bool activate_rocket(player_type *user_ptr)
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
-    msg_print(_("\83\8d\83P\83b\83g\82ð\94­\8eË\82µ\82½\81I", "You launch a rocket!"));
+    msg_print(_("ロケットを発射した!", "You launch a rocket!"));
     (void)fire_ball(user_ptr, GF_ROCKET, dir, 250 + user_ptr->lev * 3, 2);
     return TRUE;
 }
@@ -293,7 +293,7 @@ bool activate_rocket(player_type *user_ptr)
 bool activate_ball_water(player_type *user_ptr, concptr name)
 {
     DIRECTION dir;
-    msg_format(_("%s\82ª\90[\82¢\90Â\90F\82É\8cÛ\93®\82µ\82Ä\82¢\82é...", "The %s throbs deep blue..."), name);
+    msg_format(_("%sが深い青色に鼓動している...", "The %s throbs deep blue..."), name);
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -305,7 +305,7 @@ bool activate_ball_lite(player_type *user_ptr, concptr name)
 {
     HIT_POINT num = damroll(5, 3);
     POSITION y = 0, x = 0;
-    msg_format(_("%s\82ª\88î\8dÈ\82Å\95¢\82í\82ê\82½...", "The %s is surrounded by lightning..."), name);
+    msg_format(_("%sが稲妻で覆われた...", "The %s is surrounded by lightning..."), name);
     for (int k = 0; k < num; k++) {
         int attempts = 1000;
         while (attempts--) {
@@ -326,7 +326,7 @@ bool activate_ball_lite(player_type *user_ptr, concptr name)
 bool activate_ball_dark(player_type *user_ptr, concptr name)
 {
     DIRECTION dir;
-    msg_format(_("%s\82ª\90[\82¢\88Å\82É\95¢\82í\82ê\82½...", "The %s is coverd in pitch-darkness..."), name);
+    msg_format(_("%sが深い闇に覆われた...", "The %s is coverd in pitch-darkness..."), name);
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -337,7 +337,7 @@ bool activate_ball_dark(player_type *user_ptr, concptr name)
 bool activate_ball_mana(player_type *user_ptr, concptr name)
 {
     DIRECTION dir;
-    msg_format(_("%s\82ª\90Â\94\92\82­\8cõ\82Á\82½\81D\81D\81D", "The %s glows pale..."), name);
+    msg_format(_("%sが青白く光った...", "The %s glows pale..."), name);
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
index 61108be..1047e0b 100644 (file)
@@ -1,4 +1,4 @@
-#include "object-activation/activation-breath.h"
+#include "object-activation/activation-breath.h"
 #include "object-enchant/dragon-breaths-table.h"
 #include "object/object-flags.h"
 #include "spell-kind/spells-launcher.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief \94­\93®\82É\82æ\82é\83u\83\8c\83X\82Ì\91®\90«\82ð\83A\83C\83e\83\80\82Ì\91Ï\90«\82©\82ç\91I\91ð\82µ\81A\8eÀ\8ds\82ð\8f\88\97\9d\82·\82é\81B/ Dragon breath activation
- * @details \91Î\8fÛ\82Æ\82È\82é\91Ï\90«\82Í dragonbreath_info \83e\81[\83u\83\8b\82ð\8eQ\8fÆ\82Ì\82±\82Æ\81B
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param o_ptr \91Î\8fÛ\82Ì\83I\83u\83W\83F\83N\83g\8d\\91¢\91Ì\83|\83C\83\93\83^
- * @return \94­\93®\8eÀ\8ds\82Ì\90¥\94ñ\82ð\95Ô\82·\81B
+ * @brief 発動によるブレスの属性をアイテムの耐性から選択し、実行を処理する。/ Dragon breath activation
+ * @details 対象となる耐性は dragonbreath_info テーブルを参照のこと。
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param o_ptr 対象のオブジェクト構造体ポインタ
+ * @return 発動実行の是非を返す。
  */
 bool activate_dragon_breath(player_type *user_ptr, object_type *o_ptr)
 {
@@ -48,7 +48,7 @@ bool activate_dragon_breath(player_type *user_ptr, object_type *o_ptr)
         stop_hex_spell_all(user_ptr);
 
     int t = randint0(n);
-    msg_format(_("\82 \82È\82½\82Í%s\82Ì\83u\83\8c\83X\82ð\93f\82¢\82½\81B", "You breathe %s."), name[t]);
+    msg_format(_("あなたは%sのブレスを吐いた。", "You breathe %s."), name[t]);
     fire_breath(user_ptr, type[t], dir, 250, 4);
     return TRUE;
 }
index d59727f..3b4d133 100644 (file)
@@ -1,17 +1,17 @@
-#include "object-activation/activation-genocide.h"
+#include "object-activation/activation-genocide.h"
 #include "spell-kind/spells-genocide.h"
 #include "view/display-messages.h"
 
 bool activate_genocide(player_type *user_ptr)
 {
-    msg_print(_("\90[\90Â\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows deep blue..."));
+    msg_print(_("深青色に輝いている...", "It glows deep blue..."));
     (void)symbol_genocide(user_ptr, 200, TRUE);
     return TRUE;
 }
 
 bool activate_mass_genocide(player_type *user_ptr)
 {
-    msg_print(_("\82Ð\82Ç\82­\89s\82¢\89¹\82ª\97¬\82ê\8fo\82½...", "It lets out a long, shrill note..."));
+    msg_print(_("ひどく鋭い音が流れ出た...", "It lets out a long, shrill note..."));
     (void)mass_genocide(user_ptr, 200, TRUE);
     return TRUE;
 }
index 9b15a22..876a92e 100644 (file)
@@ -1,5 +1,5 @@
-/*!
- * @brief \94­\93®\8f\88\97\9d\82»\82Ì\91¼ (\94ì\91å\89»\82µ\82ª\82¿\82È\82Ì\82Å\93K\8bX\82Ü\82Æ\82Ü\82è\82ð\95Ê\83t\83@\83C\83\8b\82Ö\95ª\8a\84\82·\82é\82±\82Æ)
+/*!
+ * @brief 発動処理その他 (肥大化しがちなので適宜まとまりを別ファイルへ分割すること)
  * @date 2020/08/19
  * @author Hourier
  */
@@ -42,6 +42,7 @@
 #include "system/floor-type-definition.h"
 #include "system/object-type-definition.h"
 #include "target/target-getter.h"
+#include "util/quarks.h"
 #include "view/display-messages.h"
 
 bool activate_sunlight(player_type *user_ptr)
@@ -50,7 +51,7 @@ bool activate_sunlight(player_type *user_ptr)
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
-    msg_print(_("\91¾\97z\8cõ\90ü\82ª\95ú\82½\82ê\82½\81B", "A line of sunlight appears."));
+    msg_print(_("太陽光線が放たれた。", "A line of sunlight appears."));
     (void)lite_line(user_ptr, dir, damroll(6, 8));
     return TRUE;
 }
@@ -58,7 +59,7 @@ bool activate_sunlight(player_type *user_ptr)
 bool activate_confusion(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\97l\81X\82È\90F\82Ì\89Î\89Ô\82ð\94­\82µ\82Ä\82¢\82é...", "It glows in scintillating colours..."));
+    msg_print(_("様々な色の火花を発している...", "It glows in scintillating colours..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -69,7 +70,7 @@ bool activate_confusion(player_type *user_ptr)
 bool activate_banish_evil(player_type *user_ptr)
 {
     if (banish_evil(user_ptr, 100))
-        msg_print(_("\83A\81[\83e\83B\83t\83@\83N\83g\82Ì\97Í\82ª\8e×\88«\82ð\91Å\82¿\95¥\82Á\82½\81I", "The power of the artifact banishes evil!"));
+        msg_print(_("アーティファクトの力が邪悪を打ち払った!", "The power of the artifact banishes evil!"));
 
     return TRUE;
 }
@@ -82,7 +83,7 @@ bool activate_scare(player_type *user_ptr)
     if (hex_spelling_any(user_ptr))
         stop_hex_spell_all(user_ptr);
 
-    msg_print(_("\82 \82È\82½\82Í\97Í\8b­\82¢\93Ë\95\97\82ð\90\81\82«\96Â\82ç\82µ\82½\81B\8eü\88Í\82Ì\93G\82ª\90k\82¦\8fã\82Á\82Ä\82¢\82é!", "You wind a mighty blast; your enemies tremble!"));
+    msg_print(_("あなたは力強い突風を吹き鳴らした。周囲の敵が震え上っている!", "You wind a mighty blast; your enemies tremble!"));
     (void)turn_monsters(user_ptr, (3 * user_ptr->lev / 2) + 10);
     return TRUE;
 }
@@ -90,9 +91,9 @@ bool activate_scare(player_type *user_ptr)
 bool activate_aggravation(player_type *user_ptr, object_type *o_ptr, concptr name)
 {
     if (o_ptr->name1 == ART_HYOUSIGI)
-        msg_print(_("\94\8f\8eq\96Ø\82ð\91Å\82Á\82½\81B", "You beat your wooden clappers."));
+        msg_print(_("拍子木を打った。", "You beat your wooden clappers."));
     else
-        msg_format(_("%s\82Í\95s\89õ\82È\95¨\89¹\82ð\97§\82Ä\82½\81B", "The %s sounds an unpleasant noise."), name);
+        msg_format(_("%sは不快な物音を立てた。", "The %s sounds an unpleasant noise."), name);
 
     aggravate_monsters(user_ptr, 0);
     return TRUE;
@@ -101,7 +102,7 @@ bool activate_aggravation(player_type *user_ptr, object_type *o_ptr, concptr nam
 bool activate_stone_mud(player_type *user_ptr)
 {
     DIRECTION dir;
-    msg_print(_("\8cÛ\93®\82µ\82Ä\82¢\82é...", "It pulsates..."));
+    msg_print(_("鼓動している...", "It pulsates..."));
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
@@ -111,19 +112,19 @@ bool activate_stone_mud(player_type *user_ptr)
 
 bool activate_judgement(player_type *user_ptr, concptr name)
 {
-    msg_format(_("%s\82Í\90Ô\82­\96¾\82é\82­\8cõ\82Á\82½\81I", "The %s flashes bright red!"), name);
+    msg_format(_("%sは赤く明るく光った!", "The %s flashes bright red!"), name);
     chg_virtue(user_ptr, V_KNOWLEDGE, 1);
     chg_virtue(user_ptr, V_ENLIGHTEN, 1);
     wiz_lite(user_ptr, FALSE);
 
-    msg_format(_("%s\82Í\82 \82È\82½\82Ì\91Ì\97Í\82ð\92D\82Á\82½...", "The %s drains your vitality..."), name);
-    take_hit(user_ptr, DAMAGE_LOSELIFE, damroll(3, 8), _("\90R\94»\82Ì\95ó\90Î", "the Jewel of Judgement"), -1);
+    msg_format(_("%sはあなたの体力を奪った...", "The %s drains your vitality..."), name);
+    take_hit(user_ptr, DAMAGE_LOSELIFE, damroll(3, 8), _("審判の宝石", "the Jewel of Judgement"), -1);
 
     (void)detect_traps(user_ptr, DETECT_RAD_DEFAULT, TRUE);
     (void)detect_doors(user_ptr, DETECT_RAD_DEFAULT);
     (void)detect_stairs(user_ptr, DETECT_RAD_DEFAULT);
 
-    if (get_check(_("\8bA\8aÒ\82Ì\97Í\82ð\8eg\82¢\82Ü\82·\82©\81H", "Activate recall? ")))
+    if (get_check(_("帰還の力を使いますか?", "Activate recall? ")))
         (void)recall_player(user_ptr, randint0(21) + 15);
 
     return TRUE;
@@ -135,7 +136,7 @@ bool activate_telekinesis(player_type *user_ptr, concptr name)
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
-    msg_format(_("%s\82ð\90L\82Î\82µ\82½\81B", "You stretched your %s."), name);
+    msg_format(_("%sを伸ばした。", "You stretched your %s."), name);
     fetch_item(user_ptr, dir, 500, TRUE);
     return TRUE;
 }
@@ -144,7 +145,7 @@ bool activate_unique_detection(player_type *user_ptr)
 {
     monster_type *m_ptr;
     monster_race *r_ptr;
-    msg_print(_("\8aï\96­\82È\8fê\8f\8a\82ª\93ª\82Ì\92\86\82É\95\82\82©\82ñ\82¾\81D\81D\81D", "Some strange places show up in your mind. And you see ..."));
+    msg_print(_("奇妙な場所が頭の中に浮かんだ...", "Some strange places show up in your mind. And you see ..."));
     for (int i = user_ptr->current_floor_ptr->m_max - 1; i >= 1; i--) {
         m_ptr = &user_ptr->current_floor_ptr->m_list[i];
         if (!monster_is_valid(m_ptr))
@@ -152,7 +153,7 @@ bool activate_unique_detection(player_type *user_ptr)
 
         r_ptr = &r_info[m_ptr->r_idx];
         if (r_ptr->flags1 & RF1_UNIQUE)
-            msg_format(_("%s\81D ", "%s. "), r_name + r_ptr->name);
+            msg_format(_("%s ", "%s. "), r_name + r_ptr->name);
     }
 
     return TRUE;
@@ -160,7 +161,7 @@ bool activate_unique_detection(player_type *user_ptr)
 
 bool activate_dispel_curse(player_type *user_ptr, concptr name)
 {
-    msg_format(_("%s\82ª\90^\8eÀ\82ð\8fÆ\82ç\82µ\8fo\82·...", "The %s exhibits the truth..."), name);
+    msg_format(_("%sが真実を照らし出す...", "The %s exhibits the truth..."), name);
     (void)remove_all_curse(user_ptr);
     (void)probing(user_ptr);
     return TRUE;
@@ -175,28 +176,28 @@ bool activate_cure_lw(player_type *user_ptr)
 
 bool activate_grand_cross(player_type *user_ptr)
 {
-    msg_print(_("\81u\88Å\82É\8aÒ\82ê\81I\81v", "You say, 'Return to darkness!'"));
+    msg_print(_("「闇に還れ!」", "You say, 'Return to darkness!'"));
     (void)project(user_ptr, 0, 8, user_ptr->y, user_ptr->x, (randint1(100) + 200) * 2, GF_HOLY_FIRE, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID, -1);
     return TRUE;
 }
 
 bool activate_call_chaos(player_type *user_ptr)
 {
-    msg_print(_("\97l\81X\82È\90F\82Ì\89Î\89Ô\82ð\94­\82µ\82Ä\82¢\82é...", "It glows in scintillating colours..."));
+    msg_print(_("様々な色の火花を発している...", "It glows in scintillating colours..."));
     call_chaos(user_ptr);
     return TRUE;
 }
 
 bool activate_dispel_evil(player_type *user_ptr)
 {
-    msg_print(_("\90_\90¹\82È\95µ\88Í\8bC\82ª\8f[\96\9e\82µ\82½...", "It floods the area with goodness..."));
+    msg_print(_("神聖な雰囲気が充満した...", "It floods the area with goodness..."));
     dispel_evil(user_ptr, user_ptr->lev * 5);
     return TRUE;
 }
 
 bool activate_dispel_good(player_type *user_ptr)
 {
-    msg_print(_("\8e×\88«\82È\95µ\88Í\8bC\82ª\8f[\96\9e\82µ\82½...", "It floods the area with evil..."));
+    msg_print(_("邪悪な雰囲気が充満した...", "It floods the area with evil..."));
     dispel_good(user_ptr, user_ptr->lev * 5);
     return TRUE;
 }
@@ -210,15 +211,15 @@ bool activate_all_monsters_detection(player_type *user_ptr)
 
 bool activate_all_detection(player_type *user_ptr)
 {
-    msg_print(_("\94\92\82­\96¾\82é\82­\8bP\82¢\82Ä\82¢\82é...", "It glows bright white..."));
-    msg_print(_("\90S\82É\83C\83\81\81[\83W\82ª\95\82\82©\82ñ\82Å\82«\82½...", "An image forms in your mind..."));
+    msg_print(_("白く明るく輝いている...", "It glows bright white..."));
+    msg_print(_("心にイメージが浮かんできた...", "An image forms in your mind..."));
     detect_all(user_ptr, DETECT_RAD_DEFAULT);
     return TRUE;
 }
 
 bool activate_extra_detection(player_type *user_ptr)
 {
-    msg_print(_("\96¾\82é\82­\8bP\82¢\82Ä\82¢\82é...", "It glows brightly..."));
+    msg_print(_("明るく輝いている...", "It glows brightly..."));
     detect_all(user_ptr, DETECT_RAD_DEFAULT);
     probing(user_ptr);
     identify_fully(user_ptr, FALSE, 0);
@@ -227,29 +228,29 @@ bool activate_extra_detection(player_type *user_ptr)
 
 bool activate_fully_identification(player_type *user_ptr)
 {
-    msg_print(_("\89©\90F\82­\8bP\82¢\82Ä\82¢\82é...", "It glows yellow..."));
+    msg_print(_("黄色く輝いている...", "It glows yellow..."));
     identify_fully(user_ptr, FALSE, 0);
     return TRUE;
 }
 
 /*!
- * @brief switch_activation() \82©\82ç\8cÂ\81X\82Ì\83X\83y\83\8b\82Ö\82Ì\88Ë\91\90«\82ð\82È\82­\82·\82½\82ß\82Ì\83V\83\93\83^\83b\83N\83X\83V\83\85\83K\81[
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \94­\93®\82É\90¬\8c÷\82µ\82½\82çTRUE
+ * @brief switch_activation() から個々のスペルへの依存性をなくすためのシンタックスシュガー
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @return 発動に成功したらTRUE
  */
 bool activate_identification(player_type *user_ptr) { return ident_spell(user_ptr, FALSE, 0); }
 
 bool activate_pesticide(player_type *user_ptr)
 {
-    msg_print(_("\82 \82È\82½\82Í\8aQ\92\8e\82ð\88ê\91|\82µ\82½\81B", "You exterminate small life."));
+    msg_print(_("あなたは害虫を一掃した。", "You exterminate small life."));
     (void)dispel_monsters(user_ptr, 4);
     return TRUE;
 }
 
 /*!
- * @brief switch_activation() \82©\82ç\8cÂ\81X\82Ì\83X\83y\83\8b\82Ö\82Ì\88Ë\91\90«\82ð\82È\82­\82·\82½\82ß\82Ì\83V\83\93\83^\83b\83N\83X\83V\83\85\83K\81[
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \94­\93®\82É\90¬\8c÷\82µ\82½\82çTRUE
+ * @brief switch_activation() から個々のスペルへの依存性をなくすためのシンタックスシュガー
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @return 発動に成功したらTRUE
  */
 bool activate_whirlwind(player_type *user_ptr)
 {
@@ -259,7 +260,7 @@ bool activate_whirlwind(player_type *user_ptr)
 
 bool activate_blinding_light(player_type *user_ptr, concptr name)
 {
-    msg_format(_("%s\82ªá¿\82µ\82¢\8cõ\82Å\8bP\82¢\82½...", "The %s gleams with blinding light..."), name);
+    msg_format(_("%sが眩しい光で輝いた...", "The %s gleams with blinding light..."), name);
     (void)fire_ball(user_ptr, GF_LITE, 0, 300, 6);
     confuse_monsters(user_ptr, 3 * user_ptr->lev / 2);
     return TRUE;
@@ -267,14 +268,14 @@ bool activate_blinding_light(player_type *user_ptr, concptr name)
 
 bool activate_sleep(player_type *user_ptr)
 {
-    msg_print(_("\90[\90Â\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows deep blue..."));
+    msg_print(_("深青色に輝いている...", "It glows deep blue..."));
     sleep_monsters_touch(user_ptr);
     return TRUE;
 }
 
 bool activate_door_destroy(player_type *user_ptr)
 {
-    msg_print(_("\96¾\82é\82¢\90Ô\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows bright red..."));
+    msg_print(_("明るい赤色に輝いている...", "It glows bright red..."));
     destroy_doors_touch(user_ptr);
     return TRUE;
 }
@@ -293,13 +294,13 @@ bool activate_recharge(player_type *user_ptr)
 
 bool activate_recharge_extra(player_type *user_ptr, concptr name)
 {
-    msg_format(_("%s\82ª\94\92\82­\8bP\82¢\82½\81D\81D\81D", "The %s gleams with blinding light..."), name);
+    msg_format(_("%sが白く輝いた...", "The %s gleams with blinding light..."), name);
     return recharge(user_ptr, 1000);
 }
 
 bool activate_shikofumi(player_type *user_ptr)
 {
-    msg_print(_("\97Í\8b­\82­\8el\8cÒ\82ð\93¥\82ñ\82¾\81B", "You stamp. (as if you are in a ring.)"));
+    msg_print(_("力強く四股を踏んだ。", "You stamp. (as if you are in a ring.)"));
     (void)set_afraid(user_ptr, 0);
     (void)set_hero(user_ptr, randint1(20) + 20, FALSE);
     (void)dispel_evil(user_ptr, user_ptr->lev * 3);
@@ -314,7 +315,7 @@ bool activate_terror(player_type *user_ptr)
 
 bool activate_map_light(player_type *user_ptr)
 {
-    msg_print(_("á¿\82µ\82­\8bP\82¢\82½...", "It shines brightly..."));
+    msg_print(_("眩しく輝いた...", "It shines brightly..."));
     map_area(user_ptr, DETECT_RAD_MAP);
     lite_area(user_ptr, damroll(2, 15), 3);
     return TRUE;
@@ -322,27 +323,42 @@ bool activate_map_light(player_type *user_ptr)
 
 bool activate_exploding_rune(player_type *user_ptr)
 {
-    msg_print(_("\96¾\82é\82¢\90Ô\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows bright red..."));
+    msg_print(_("明るい赤色に輝いている...", "It glows bright red..."));
     explosive_rune(user_ptr, user_ptr->y, user_ptr->x);
     return TRUE;
 }
 
 bool activate_protection_rune(player_type *user_ptr)
 {
-    msg_print(_("\83u\83\8b\81[\82É\96¾\82é\82­\8bP\82¢\82Ä\82¢\82é...", "It glows light blue..."));
+    msg_print(_("ブルーに明るく輝いている...", "It glows light blue..."));
     warding_glyph(user_ptr);
     return TRUE;
 }
 
 bool activate_light(player_type *user_ptr, concptr name)
 {
-    msg_format(_("%s\82©\82ç\90\9f\82ñ\82¾\8cõ\82ª\82 \82Ó\82ê\8fo\82½...", "The %s wells with clear light..."), name);
-    lite_area(user_ptr, damroll(2, 15), 3);
+    msg_format(_("%sから澄んだ光があふれ出た...", "The %s wells with clear light..."), name);
+    (void)lite_area(user_ptr, damroll(2, 15), 3);
     return TRUE;
 }
 
 bool activate_recall(player_type *user_ptr)
 {
-    msg_print(_("\82â\82í\82ç\82©\82È\94\92\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows soft white..."));
+    msg_print(_("やわらかな白色に輝いている...", "It glows soft white..."));
     return recall_player(user_ptr, randint0(21) + 15);
 }
+
+bool activate_tree_creation(player_type *user_ptr, object_type *o_ptr, concptr name)
+{
+    msg_format(_("%s%sから明るい緑の光があふれ出た...", "The %s%s wells with clear light..."), name, quark_str(o_ptr->art_name));
+    return tree_creation(user_ptr, user_ptr->y, user_ptr->x);
+}
+
+bool activate_animate_dead(player_type *user_ptr, object_type *o_ptr)
+{
+    msg_print(_("黄金色の光が溢れ出た...", "It emitted a golden light..."));
+    if (o_ptr->name1 > 0)
+        msg_print(_("ぴぴるぴるぴるぴぴるぴ~♪", "Pipiru piru piru pipiru pii"));
+
+    return animate_dead(user_ptr, 0, user_ptr->y, user_ptr->x);
+}
index 74e106e..dda2a36 100644 (file)
@@ -37,3 +37,5 @@ bool activate_exploding_rune(player_type *user_ptr);
 bool activate_protection_rune(player_type *user_ptr);
 bool activate_light(player_type *user_ptr, concptr name);
 bool activate_recall(player_type *user_ptr);
+bool activate_tree_creation(player_type *user_ptr, object_type *o_ptr, concptr name);
+bool activate_animate_dead(player_type *user_ptr, object_type *o_ptr);
index afc801b..d560b88 100644 (file)
@@ -1,4 +1,4 @@
-#include "object-activation/activation-resistance.h"
+#include "object-activation/activation-resistance.h"
 #include "core/hp-mp-processor.h"
 #include "spell-kind/spells-launcher.h"
 #include "spell/spell-types.h"
@@ -13,7 +13,7 @@
 
 bool activate_resistance_elements(player_type *user_ptr)
 {
-    msg_print(_("\97l\81X\82È\90F\82É\8bP\82¢\82Ä\82¢\82é...", "It glows many colours..."));
+    msg_print(_("様々な色に輝いている...", "It glows many colours..."));
     (void)set_oppose_acid(user_ptr, randint1(40) + 40, FALSE);
     (void)set_oppose_elec(user_ptr, randint1(40) + 40, FALSE);
     (void)set_oppose_fire(user_ptr, randint1(40) + 40, FALSE);
@@ -23,15 +23,15 @@ bool activate_resistance_elements(player_type *user_ptr)
 }
 
 /*!
- * @brief \83A\83V\83b\83h\81E\83{\81[\83\8b\82ð\95ú\82¿\81A\8dX\82É\8e_\91Ï\90«\82ð\93¾\82é
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param o_ptr \94­\93®\91Î\8fÛ\83A\83C\83e\83\80\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param name \83A\83C\83e\83\80\96¼
- * @return \83{\81[\83\8b\82ð\93\96\82Ä\82ç\82ê\82é\82È\82ç\82ÎTRUE
+ * @brief アシッド・ボールを放ち、更に酸耐性を得る
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param o_ptr 発動対象アイテムへの参照ポインタ
+ * @param name アイテム名
+ * @return ボールを当てられるならばTRUE
  */
 bool activate_resistance_acid(player_type *user_ptr, object_type *o_ptr, concptr name)
 {
-    msg_format(_("%s\82ª\8d\95\82­\8bP\82¢\82½...", "The %s grows black."), name);
+    msg_format(_("%sが黒く輝いた...", "The %s grows black."), name);
     if ((o_ptr->tval != TV_RING) || (o_ptr->sval != SV_RING_ACID))
         return TRUE;
 
@@ -45,15 +45,15 @@ bool activate_resistance_acid(player_type *user_ptr, object_type *o_ptr, concptr
 }
 
 /*!
- * @brief \83T\83\93\83_\81[\81E\83{\81[\83\8b\82ð\95ú\82¿\81A\8dX\82É\93d\8c\82\91Ï\90«\82ð\93¾\82é
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param o_ptr \94­\93®\91Î\8fÛ\83A\83C\83e\83\80\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param name \83A\83C\83e\83\80\96¼
- * @return \83{\81[\83\8b\82ð\93\96\82Ä\82ç\82ê\82é\82È\82ç\82ÎTRUE
+ * @brief サンダー・ボールを放ち、更に電撃耐性を得る
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param o_ptr 発動対象アイテムへの参照ポインタ
+ * @param name アイテム名
+ * @return ボールを当てられるならばTRUE
  */
 bool activate_resistance_elec(player_type *user_ptr, object_type *o_ptr, concptr name)
 {
-    msg_format(_("%s\82ª\90Â\82­\8bP\82¢\82½...", "The %s grows blue."), name);
+    msg_format(_("%sが青く輝いた...", "The %s grows blue."), name);
     if ((o_ptr->tval != TV_RING) || (o_ptr->sval != SV_RING_ELEC))
         return TRUE;
 
@@ -67,15 +67,15 @@ bool activate_resistance_elec(player_type *user_ptr, object_type *o_ptr, concptr
 }
 
 /*!
- * @brief \83t\83@\83C\83A\81E\83{\81[\83\8b\82ð\95ú\82¿\81A\8dX\82É\89Î\89\8a\91Ï\90«\82ð\93¾\82é
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param o_ptr \94­\93®\91Î\8fÛ\83A\83C\83e\83\80\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param name \83A\83C\83e\83\80\96¼
- * @return \83{\81[\83\8b\82ð\93\96\82Ä\82ç\82ê\82é\82È\82ç\82ÎTRUE
+ * @brief ファイア・ボールを放ち、更に火炎耐性を得る
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param o_ptr 発動対象アイテムへの参照ポインタ
+ * @param name アイテム名
+ * @return ボールを当てられるならばTRUE
  */
 bool activate_resistance_fire(player_type *user_ptr, object_type *o_ptr, concptr name)
 {
-    msg_format(_("%s\82ª\90Ô\82­\8bP\82¢\82½...", "The %s grows red."), name);
+    msg_format(_("%sが赤く輝いた...", "The %s grows red."), name);
     if ((o_ptr->tval != TV_RING) || (o_ptr->sval != SV_RING_FLAMES))
         return TRUE;
 
@@ -89,15 +89,15 @@ bool activate_resistance_fire(player_type *user_ptr, object_type *o_ptr, concptr
 }
 
 /*!
- * @brief \83A\83C\83X\81E\83{\81[\83\8b\82ð\95ú\82¿\81A\8dX\82É\97â\8bC\91Ï\90«\82ð\93¾\82é
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param o_ptr \94­\93®\91Î\8fÛ\83A\83C\83e\83\80\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param name \83A\83C\83e\83\80\96¼
- * @return \83{\81[\83\8b\82ð\93\96\82Ä\82ç\82ê\82é\82È\82ç\82ÎTRUE
+ * @brief アイス・ボールを放ち、更に冷気耐性を得る
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param o_ptr 発動対象アイテムへの参照ポインタ
+ * @param name アイテム名
+ * @return ボールを当てられるならばTRUE
  */
 bool activate_resistance_cold(player_type *user_ptr, object_type *o_ptr, concptr name)
 {
-    msg_format(_("%s\82ª\94\92\82­\8bP\82¢\82½...", "The %s grows white."), name);
+    msg_format(_("%sが白く輝いた...", "The %s grows white."), name);
     if ((o_ptr->tval != TV_RING) || (o_ptr->sval != SV_RING_ICE))
         return TRUE;
 
@@ -111,15 +111,15 @@ bool activate_resistance_cold(player_type *user_ptr, object_type *o_ptr, concptr
 }
 
 /*!
- * todo \89½\82©\92Ç\89Á\8cø\89Ê\82ª\97~\82µ\82¢
- * @brief \93Å\91Ï\90«\82ð\93¾\82é
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param name \83A\83C\83e\83\80\96¼
- * @return \8fí\82ÉTRUE
+ * todo 何か追加効果が欲しい
+ * @brief 毒耐性を得る
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param name アイテム名
+ * @return 常にTRUE
  */
 bool activate_resistance_pois(player_type *user_ptr, concptr name)
 {
-    msg_format(_("%s\82ª\97Î\82É\8bP\82¢\82½...", "The %s grows green."), name);
+    msg_format(_("%sが緑に輝いた...", "The %s grows green."), name);
     (void)set_oppose_pois(user_ptr, randint1(20) + 20, FALSE);
     return TRUE;
 }
index b1fd025..2a251eb 100644 (file)
@@ -123,6 +123,10 @@ bool switch_activation(player_type *user_ptr, object_type *o_ptr, const activati
         return activate_breath_cold(user_ptr, o_ptr);
     case ACT_BR_DRAGON:
         return activate_dragon_breath(user_ptr, o_ptr);
+    case ACT_TREE_CREATION:
+        return activate_tree_creation(user_ptr, o_ptr, name);
+    case ACT_ANIM_DEAD:
+        return activate_animate_dead(user_ptr, o_ptr);
     case ACT_CONFUSE:
         return activate_confusion(user_ptr);
     case ACT_SLEEP:
index a4593a9..5b98df0 100644 (file)
@@ -1,4 +1,4 @@
-#include "object-activation/activation-teleport.h"
+#include "object-activation/activation-teleport.h"
 #include "cmd-io/cmd-save.h"
 #include "core/asking-player.h"
 #include "game-option/special-options.h"
@@ -42,7 +42,7 @@ bool activate_escape(player_type *user_ptr)
         (void)stair_creation(user_ptr);
         return TRUE;
     default:
-        if (!get_check(_("\82±\82Ì\8aK\82ð\8b\8e\82è\82Ü\82·\82©\81H", "Leave this level? ")))
+        if (!get_check(_("この階を去りますか?", "Leave this level? ")))
             return TRUE;
 
         if (autosave_l)
@@ -55,7 +55,7 @@ bool activate_escape(player_type *user_ptr)
 
 bool activate_teleport_level(player_type *user_ptr)
 {
-    if (!get_check(_("\96{\93\96\82É\91¼\82Ì\8aK\82É\83e\83\8c\83|\81[\83g\82µ\82Ü\82·\82©\81H", "Are you sure? (Teleport Level)")))
+    if (!get_check(_("本当に他の階にテレポートしますか?", "Are you sure? (Teleport Level)")))
         return FALSE;
 
     teleport_level(user_ptr, 0);
@@ -64,13 +64,13 @@ bool activate_teleport_level(player_type *user_ptr)
 
 bool activate_dimension_door(player_type *user_ptr)
 {
-    msg_print(_("\8e\9f\8c³\82Ì\94à\82ª\8aJ\82¢\82½\81B\96Ú\93I\92n\82ð\91I\82ñ\82Å\89º\82³\82¢\81B", "You open a dimensional gate. Choose a destination."));
+    msg_print(_("次元の扉が開いた。目的地を選んで下さい。", "You open a dimensional gate. Choose a destination."));
     return dimension_door(user_ptr);
 }
 
 bool activate_teleport(player_type *user_ptr)
 {
-    msg_print(_("\8eü\82è\82Ì\8bó\8aÔ\82ª\98c\82ñ\82Å\82¢\82é...", "It twists space around you..."));
+    msg_print(_("周りの空間が歪んでいる...", "It twists space around you..."));
     teleport_player(user_ptr, 100, TELEPORT_SPONTANEOUS);
     return TRUE;
 }
index e8eead6..447aded 100644 (file)
@@ -5,7 +5,8 @@
  * @brief アイテムの発動効果テーブル /
  * Define flags, levels, values of activations
  */
-const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250, { 10, 0 }, _("太陽光線", "beam of sunlight") },
+const activation_type activation_info[MAX_ACTIVATION_TYPE] = {
+    { "SUNLIGHT", ACT_SUNLIGHT, 10, 250, { 10, 0 }, _("太陽光線", "beam of sunlight") },
     { "BO_MISS_1", ACT_BO_MISS_1, 10, 250, { 2, 0 }, _("マジック・ミサイル(2d6)", "magic missile (2d6)") },
     { "BA_POIS_1", ACT_BA_POIS_1, 10, 300, { 4, 0 }, _("悪臭雲(12)", "stinking cloud (12)") },
     { "BO_ELEC_1", ACT_BO_ELEC_1, 20, 250, { 5, 0 }, _("サンダー・ボルト(4d8)", "lightning bolt (4d8)") },
@@ -51,7 +52,8 @@ const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250,
 
     { "CONFUSE", ACT_CONFUSE, 10, 500, { 10, 0 }, _("パニック・モンスター", "confuse monster") },
     { "SLEEP", ACT_SLEEP, 10, 750, { 15, 0 }, _("周囲のモンスターを眠らせる", "sleep nearby monsters") },
-    { "QUAKE", ACT_QUAKE, 30, 600, { 20, 0 }, _("地震", "earthquake") }, { "TERROR", ACT_TERROR, 20, 2500, { -1, 0 }, _("恐慌", "terror") },
+    { "QUAKE", ACT_QUAKE, 30, 600, { 20, 0 }, _("地震", "earthquake") },
+    { "TERROR", ACT_TERROR, 20, 2500, { -1, 0 }, _("恐慌", "terror") },
     { "TELE_AWAY", ACT_TELE_AWAY, 20, 2000, { 15, 0 }, _("テレポート・アウェイ", "teleport away") },
     { "BANISH_EVIL", ACT_BANISH_EVIL, 40, 2000, { 250, 0 }, _("邪悪消滅", "banish evil") },
     { "GENOCIDE", ACT_GENOCIDE, 50, 10000, { 500, 0 }, _("抹殺", "genocide") },
@@ -111,7 +113,8 @@ const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250,
     { "SATIATE", ACT_SATIATE, 10, 2000, { 200, 0 }, _("空腹充足", "satisfy hunger") },
     { "DEST_DOOR", ACT_DEST_DOOR, 10, 100, { 10, 0 }, _("ドア破壊", "destroy doors") },
     { "STONE_MUD", ACT_STONE_MUD, 20, 1000, { 3, 0 }, _("岩石溶解", "stone to mud") },
-    { "RECHARGE", ACT_RECHARGE, 30, 1000, { 70, 0 }, _("魔力充填", "recharging") }, { "ALCHEMY", ACT_ALCHEMY, 50, 10000, { 500, 0 }, _("錬金術", "alchemy") },
+    { "RECHARGE", ACT_RECHARGE, 30, 1000, { 70, 0 }, _("魔力充填", "recharging") },
+    { "ALCHEMY", ACT_ALCHEMY, 50, 10000, { 500, 0 }, _("錬金術", "alchemy") },
     { "DIM_DOOR", ACT_DIM_DOOR, 50, 10000, { 100, 0 }, _("次元の扉", "dimension door") },
     { "TELEPORT", ACT_TELEPORT, 10, 2000, { 25, 0 }, _("テレポート", "teleport") },
     { "RECALL", ACT_RECALL, 30, 7500, { 200, 0 }, _("帰還の詔", "word of recall") },
@@ -138,5 +141,8 @@ const activation_type activation_info[] = { { "SUNLIGHT", ACT_SUNLIGHT, 10, 250,
     { "STRAIN_HASTE", ACT_STRAIN_HASTE, 10, 1000, { 120, 100 }, _("体力と引き換えに加速", "haste with strain") },
     { "GRAND_CROSS", ACT_GRAND_CROSS, 30, 15000, { 250, 200 }, _("グランド・クロス", "grand cross") },
     { "TELEPORT_LEVEL", ACT_TELEPORT_LEVEL, 10, 1500, { 100, 200 }, _("テレポート・レベル", "teleort level") },
-    { "ARTS_FALLING_STAR", ACT_FALLING_STAR, 20, 5500, { 30, 50 }, _("魔剣・流れ星", "blade arts 'falling star'") }, { NULL, 0, 0, 0, { 0, 0 }, "" }
+    { "ARTS_FALLING_STAR", ACT_FALLING_STAR, 20, 5500, { 30, 50 }, _("魔剣・流れ星", "blade arts 'falling star'") },
+    { "ANIM_DEAD", ACT_ANIM_DEAD, 30, 2000, { 10, 10 }, _("死者復活", "animate dead") },
+    { "TREE_CREATION", ACT_TREE_CREATION, 50, 25000, { 1000, 0 }, _("森林生成", "tree creation") },
+    { NULL, 0, 0, 0, { 0, 0 }, "" },
 };
index b4ce797..fad085f 100644 (file)
@@ -14,4 +14,5 @@ typedef struct activation_type {
     concptr desc;
 } activation_type;
 
-extern const activation_type activation_info[];
+#define MAX_ACTIVATION_TYPE 131
+extern const activation_type activation_info[MAX_ACTIVATION_TYPE];
index ca6a08e..95a8f20 100644 (file)
  */
 int m_bonus(int max, DEPTH level)
 {
-       int bonus, stand, extra, value;
+    int bonus, stand, extra, value;
 
+    /* Paranoia -- enforce maximal "level" */
+    if (level > MAX_DEPTH - 1)
+        level = MAX_DEPTH - 1;
 
-       /* Paranoia -- enforce maximal "level" */
-       if (level > MAX_DEPTH - 1) level = MAX_DEPTH - 1;
+    /* The "bonus" moves towards the max */
+    bonus = ((max * level) / MAX_DEPTH);
 
+    /* Hack -- determine fraction of error */
+    extra = ((max * level) % MAX_DEPTH);
 
-       /* The "bonus" moves towards the max */
-       bonus = ((max * level) / MAX_DEPTH);
+    /* Hack -- simulate floating point computations */
+    if (randint0(MAX_DEPTH) < extra)
+        bonus++;
 
-       /* Hack -- determine fraction of error */
-       extra = ((max * level) % MAX_DEPTH);
+    /* The "stand" is equal to one quarter of the max */
+    stand = (max / 4);
 
-       /* Hack -- simulate floating point computations */
-       if (randint0(MAX_DEPTH) < extra) bonus++;
+    /* Hack -- determine fraction of error */
+    extra = (max % 4);
 
+    /* Hack -- simulate floating point computations */
+    if (randint0(4) < extra)
+        stand++;
 
-       /* The "stand" is equal to one quarter of the max */
-       stand = (max / 4);
+    /* Choose an "interesting" value */
+    value = randnor(bonus, stand);
 
-       /* Hack -- determine fraction of error */
-       extra = (max % 4);
+    /* Enforce the minimum value */
+    if (value < 0)
+        return 0;
 
-       /* Hack -- simulate floating point computations */
-       if (randint0(4) < extra) stand++;
-
-
-       /* Choose an "interesting" value */
-       value = randnor(bonus, stand);
-
-       /* Enforce the minimum value */
-       if (value < 0) return 0;
-
-       /* Enforce the maximum value */
-       if (value > max) return (max);
-       return (value);
+    /* Enforce the maximum value */
+    if (value > max)
+        return (max);
+    return (value);
 }
 
 /*!
@@ -96,15 +97,26 @@ int m_bonus(int max, DEPTH level)
  */
 void one_sustain(object_type *o_ptr)
 {
-       switch (randint0(A_MAX))
-       {
-       case 0: add_flag(o_ptr->art_flags, TR_SUST_STR); break;
-       case 1: add_flag(o_ptr->art_flags, TR_SUST_INT); break;
-       case 2: add_flag(o_ptr->art_flags, TR_SUST_WIS); break;
-       case 3: add_flag(o_ptr->art_flags, TR_SUST_DEX); break;
-       case 4: add_flag(o_ptr->art_flags, TR_SUST_CON); break;
-       case 5: add_flag(o_ptr->art_flags, TR_SUST_CHR); break;
-       }
+    switch (randint0(A_MAX)) {
+    case 0:
+        add_flag(o_ptr->art_flags, TR_SUST_STR);
+        break;
+    case 1:
+        add_flag(o_ptr->art_flags, TR_SUST_INT);
+        break;
+    case 2:
+        add_flag(o_ptr->art_flags, TR_SUST_WIS);
+        break;
+    case 3:
+        add_flag(o_ptr->art_flags, TR_SUST_DEX);
+        break;
+    case 4:
+        add_flag(o_ptr->art_flags, TR_SUST_CON);
+        break;
+    case 5:
+        add_flag(o_ptr->art_flags, TR_SUST_CHR);
+        break;
+    }
 }
 
 /*!
@@ -114,16 +126,22 @@ void one_sustain(object_type *o_ptr)
  */
 bool add_esp_strong(object_type *o_ptr)
 {
-       bool nonliv = FALSE;
-
-       switch (randint1(3))
-       {
-       case 1: add_flag(o_ptr->art_flags, TR_ESP_EVIL); break;
-       case 2: add_flag(o_ptr->art_flags, TR_TELEPATHY); break;
-       case 3: add_flag(o_ptr->art_flags, TR_ESP_NONLIVING); nonliv = TRUE; break;
-       }
-
-       return nonliv;
+    bool nonliv = FALSE;
+
+    switch (randint1(3)) {
+    case 1:
+        add_flag(o_ptr->art_flags, TR_ESP_EVIL);
+        break;
+    case 2:
+        add_flag(o_ptr->art_flags, TR_TELEPATHY);
+        break;
+    case 3:
+        add_flag(o_ptr->art_flags, TR_ESP_NONLIVING);
+        nonliv = TRUE;
+        break;
+    }
+
+    return nonliv;
 }
 
 /*!
@@ -134,30 +152,29 @@ bool add_esp_strong(object_type *o_ptr)
  */
 void add_esp_weak(object_type *o_ptr, bool extra)
 {
-       int i;
-       u32b weak_esp_list[] = {
-               TR_ESP_ANIMAL,
-               TR_ESP_UNDEAD,
-               TR_ESP_DEMON,
-               TR_ESP_ORC,
-               TR_ESP_TROLL,
-               TR_ESP_GIANT,
-               TR_ESP_DRAGON,
-               TR_ESP_HUMAN,
-               TR_ESP_GOOD,
-               TR_ESP_UNIQUE,
-       };
-       const int MAX_ESP_WEAK = sizeof(weak_esp_list) / sizeof(weak_esp_list[0]);
-       const int add_count = MIN(MAX_ESP_WEAK, (extra) ? (3 + randint1(randint1(6))) : randint1(3));
-
-       /* Add unduplicated weak esp flags randomly */
-       for (i = 0; i < add_count; ++i)
-       {
-               int choice = rand_range(i, MAX_ESP_WEAK - 1);
-
-               add_flag(o_ptr->art_flags, weak_esp_list[choice]);
-               weak_esp_list[choice] = weak_esp_list[i];
-       }
+    int i;
+    u32b weak_esp_list[] = {
+        TR_ESP_ANIMAL,
+        TR_ESP_UNDEAD,
+        TR_ESP_DEMON,
+        TR_ESP_ORC,
+        TR_ESP_TROLL,
+        TR_ESP_GIANT,
+        TR_ESP_DRAGON,
+        TR_ESP_HUMAN,
+        TR_ESP_GOOD,
+        TR_ESP_UNIQUE,
+    };
+    const int MAX_ESP_WEAK = sizeof(weak_esp_list) / sizeof(weak_esp_list[0]);
+    const int add_count = MIN(MAX_ESP_WEAK, (extra) ? (3 + randint1(randint1(6))) : randint1(3));
+
+    /* Add unduplicated weak esp flags randomly */
+    for (i = 0; i < add_count; ++i) {
+        int choice = rand_range(i, MAX_ESP_WEAK - 1);
+
+        add_flag(o_ptr->art_flags, weak_esp_list[choice]);
+        weak_esp_list[choice] = weak_esp_list[i];
+    }
 }
 
 /*!
@@ -168,13 +185,20 @@ void add_esp_weak(object_type *o_ptr, bool extra)
  */
 void one_ele_resistance(object_type *o_ptr)
 {
-       switch (randint0(4))
-       {
-       case  0: add_flag(o_ptr->art_flags, TR_RES_ACID); break;
-       case  1: add_flag(o_ptr->art_flags, TR_RES_ELEC); break;
-       case  2: add_flag(o_ptr->art_flags, TR_RES_COLD); break;
-       case  3: add_flag(o_ptr->art_flags, TR_RES_FIRE); break;
-       }
+    switch (randint0(4)) {
+    case 0:
+        add_flag(o_ptr->art_flags, TR_RES_ACID);
+        break;
+    case 1:
+        add_flag(o_ptr->art_flags, TR_RES_ELEC);
+        break;
+    case 2:
+        add_flag(o_ptr->art_flags, TR_RES_COLD);
+        break;
+    case 3:
+        add_flag(o_ptr->art_flags, TR_RES_FIRE);
+        break;
+    }
 }
 
 /*!
@@ -185,14 +209,11 @@ void one_ele_resistance(object_type *o_ptr)
  */
 void one_dragon_ele_resistance(object_type *o_ptr)
 {
-       if (one_in_(7))
-       {
-               add_flag(o_ptr->art_flags, TR_RES_POIS);
-       }
-       else
-       {
-               one_ele_resistance(o_ptr);
-       }
+    if (one_in_(7)) {
+        add_flag(o_ptr->art_flags, TR_RES_POIS);
+    } else {
+        one_ele_resistance(o_ptr);
+    }
 }
 
 /*!
@@ -203,24 +224,46 @@ void one_dragon_ele_resistance(object_type *o_ptr)
  */
 void one_high_resistance(object_type *o_ptr)
 {
-       switch (randint0(12))
-       {
-       case  0: add_flag(o_ptr->art_flags, TR_RES_POIS);   break;
-       case  1: add_flag(o_ptr->art_flags, TR_RES_LITE);   break;
-       case  2: add_flag(o_ptr->art_flags, TR_RES_DARK);   break;
-       case  3: add_flag(o_ptr->art_flags, TR_RES_SHARDS); break;
-       case  4: add_flag(o_ptr->art_flags, TR_RES_BLIND);  break;
-       case  5: add_flag(o_ptr->art_flags, TR_RES_CONF);   break;
-       case  6: add_flag(o_ptr->art_flags, TR_RES_SOUND);  break;
-       case  7: add_flag(o_ptr->art_flags, TR_RES_NETHER); break;
-       case  8: add_flag(o_ptr->art_flags, TR_RES_NEXUS);  break;
-       case  9: add_flag(o_ptr->art_flags, TR_RES_CHAOS);  break;
-       case 10: add_flag(o_ptr->art_flags, TR_RES_DISEN);  break;
-       case 11: add_flag(o_ptr->art_flags, TR_RES_FEAR);   break;
-       }
+    switch (randint0(12)) {
+    case 0:
+        add_flag(o_ptr->art_flags, TR_RES_POIS);
+        break;
+    case 1:
+        add_flag(o_ptr->art_flags, TR_RES_LITE);
+        break;
+    case 2:
+        add_flag(o_ptr->art_flags, TR_RES_DARK);
+        break;
+    case 3:
+        add_flag(o_ptr->art_flags, TR_RES_SHARDS);
+        break;
+    case 4:
+        add_flag(o_ptr->art_flags, TR_RES_BLIND);
+        break;
+    case 5:
+        add_flag(o_ptr->art_flags, TR_RES_CONF);
+        break;
+    case 6:
+        add_flag(o_ptr->art_flags, TR_RES_SOUND);
+        break;
+    case 7:
+        add_flag(o_ptr->art_flags, TR_RES_NETHER);
+        break;
+    case 8:
+        add_flag(o_ptr->art_flags, TR_RES_NEXUS);
+        break;
+    case 9:
+        add_flag(o_ptr->art_flags, TR_RES_CHAOS);
+        break;
+    case 10:
+        add_flag(o_ptr->art_flags, TR_RES_DISEN);
+        break;
+    case 11:
+        add_flag(o_ptr->art_flags, TR_RES_FEAR);
+        break;
+    }
 }
 
-
 /*!
  * @brief ドラゴン装備にランダムな耐性を与える
  * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
@@ -228,16 +271,14 @@ void one_high_resistance(object_type *o_ptr)
  */
 void dragon_resist(object_type *o_ptr)
 {
-       do
-       {
-               if (one_in_(4))
-                       one_dragon_ele_resistance(o_ptr);
-               else
-                       one_high_resistance(o_ptr);
-       } while (one_in_(2));
+    do {
+        if (one_in_(4))
+            one_dragon_ele_resistance(o_ptr);
+        else
+            one_high_resistance(o_ptr);
+    } while (one_in_(2));
 }
 
-
 /*!
  * @brief 対象のオブジェクトに耐性を一つ付加する。/ Choose one random resistance
  * @details 1/3で元素耐性(one_ele_resistance())、2/3で上位耐性(one_high_resistance)
@@ -247,17 +288,13 @@ void dragon_resist(object_type *o_ptr)
  */
 void one_resistance(object_type *o_ptr)
 {
-       if (one_in_(3))
-       {
-               one_ele_resistance(o_ptr);
-       }
-       else
-       {
-               one_high_resistance(o_ptr);
-       }
+    if (one_in_(3)) {
+        one_ele_resistance(o_ptr);
+    } else {
+        one_high_resistance(o_ptr);
+    }
 }
 
-
 /*!
  * @brief 対象のオブジェクトに能力を一つ付加する。/ Choose one random ability
  * @details 候補は浮遊、永久光源+1、透明視、警告、遅消化、急回復、麻痺知らず、経験値維持のいずれか。
@@ -267,24 +304,38 @@ void one_resistance(object_type *o_ptr)
  */
 void one_ability(object_type *o_ptr)
 {
-       switch (randint0(10))
-       {
-       case 0: add_flag(o_ptr->art_flags, TR_LEVITATION);  break;
-       case 1: add_flag(o_ptr->art_flags, TR_LITE_1);      break;
-       case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS);   break;
-       case 3: add_flag(o_ptr->art_flags, TR_WARNING);     break;
-       case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
-       case 5: add_flag(o_ptr->art_flags, TR_REGEN);       break;
-       case 6: add_flag(o_ptr->art_flags, TR_FREE_ACT);    break;
-       case 7: add_flag(o_ptr->art_flags, TR_HOLD_EXP);   break;
-       case 8:
-       case 9:
-               one_low_esp(o_ptr);
-               break;
-       }
+    switch (randint0(10)) {
+    case 0:
+        add_flag(o_ptr->art_flags, TR_LEVITATION);
+        break;
+    case 1:
+        add_flag(o_ptr->art_flags, TR_LITE_1);
+        break;
+    case 2:
+        add_flag(o_ptr->art_flags, TR_SEE_INVIS);
+        break;
+    case 3:
+        add_flag(o_ptr->art_flags, TR_WARNING);
+        break;
+    case 4:
+        add_flag(o_ptr->art_flags, TR_SLOW_DIGEST);
+        break;
+    case 5:
+        add_flag(o_ptr->art_flags, TR_REGEN);
+        break;
+    case 6:
+        add_flag(o_ptr->art_flags, TR_FREE_ACT);
+        break;
+    case 7:
+        add_flag(o_ptr->art_flags, TR_HOLD_EXP);
+        break;
+    case 8:
+    case 9:
+        one_low_esp(o_ptr);
+        break;
+    }
 }
 
-
 /*!
  * @brief 対象のオブジェクトに弱いESPを一つ付加する。/ Choose one lower rank esp
  * @details 候補は動物、アンデッド、悪魔、オーク、トロル、巨人、
@@ -294,22 +345,40 @@ void one_ability(object_type *o_ptr)
  */
 void one_low_esp(object_type *o_ptr)
 {
-       switch (randint1(10))
-       {
-       case 1:  add_flag(o_ptr->art_flags, TR_ESP_ANIMAL);   break;
-       case 2:  add_flag(o_ptr->art_flags, TR_ESP_UNDEAD);   break;
-       case 3:  add_flag(o_ptr->art_flags, TR_ESP_DEMON);   break;
-       case 4:  add_flag(o_ptr->art_flags, TR_ESP_ORC);   break;
-       case 5:  add_flag(o_ptr->art_flags, TR_ESP_TROLL);   break;
-       case 6:  add_flag(o_ptr->art_flags, TR_ESP_GIANT);   break;
-       case 7:  add_flag(o_ptr->art_flags, TR_ESP_DRAGON);   break;
-       case 8:  add_flag(o_ptr->art_flags, TR_ESP_HUMAN);   break;
-       case 9:  add_flag(o_ptr->art_flags, TR_ESP_GOOD);   break;
-       case 10: add_flag(o_ptr->art_flags, TR_ESP_UNIQUE);   break;
-       }
+    switch (randint1(10)) {
+    case 1:
+        add_flag(o_ptr->art_flags, TR_ESP_ANIMAL);
+        break;
+    case 2:
+        add_flag(o_ptr->art_flags, TR_ESP_UNDEAD);
+        break;
+    case 3:
+        add_flag(o_ptr->art_flags, TR_ESP_DEMON);
+        break;
+    case 4:
+        add_flag(o_ptr->art_flags, TR_ESP_ORC);
+        break;
+    case 5:
+        add_flag(o_ptr->art_flags, TR_ESP_TROLL);
+        break;
+    case 6:
+        add_flag(o_ptr->art_flags, TR_ESP_GIANT);
+        break;
+    case 7:
+        add_flag(o_ptr->art_flags, TR_ESP_DRAGON);
+        break;
+    case 8:
+        add_flag(o_ptr->art_flags, TR_ESP_HUMAN);
+        break;
+    case 9:
+        add_flag(o_ptr->art_flags, TR_ESP_GOOD);
+        break;
+    case 10:
+        add_flag(o_ptr->art_flags, TR_ESP_UNIQUE);
+        break;
+    }
 }
 
-
 /*!
  * @brief 対象のオブジェクトに発動を一つ付加する。/ Choose one random activation
  * @details 候補多数。ランダムアーティファクトのバイアスには一切依存せず、
@@ -319,119 +388,116 @@ void one_low_esp(object_type *o_ptr)
  */
 void one_activation(object_type *o_ptr)
 {
-       int type = 0;
-       PERCENTAGE chance = 0;
-
-       while (randint1(100) >= chance)
-       {
-               type = randint1(255);
-               switch (type)
-               {
-               case ACT_SUNLIGHT:
-               case ACT_BO_MISS_1:
-               case ACT_BA_POIS_1:
-               case ACT_BO_ELEC_1:
-               case ACT_BO_ACID_1:
-               case ACT_BO_COLD_1:
-               case ACT_BO_FIRE_1:
-               case ACT_CONFUSE:
-               case ACT_SLEEP:
-               case ACT_QUAKE:
-               case ACT_CURE_LW:
-               case ACT_CURE_MW:
-               case ACT_CURE_POISON:
-               case ACT_BERSERK:
-               case ACT_LIGHT:
-               case ACT_MAP_LIGHT:
-               case ACT_DEST_DOOR:
-               case ACT_STONE_MUD:
-               case ACT_TELEPORT:
-                       chance = 101;
-                       break;
-               case ACT_BA_COLD_1:
-               case ACT_BA_FIRE_1:
-               case ACT_HYPODYNAMIA_1:
-               case ACT_TELE_AWAY:
-               case ACT_ESP:
-               case ACT_RESIST_ALL:
-               case ACT_DETECT_ALL:
-               case ACT_RECALL:
-               case ACT_SATIATE:
-               case ACT_RECHARGE:
-                       chance = 85;
-                       break;
-               case ACT_TERROR:
-               case ACT_PROT_EVIL:
-               case ACT_ID_PLAIN:
-                       chance = 75;
-                       break;
-               case ACT_HYPODYNAMIA_2:
-               case ACT_DRAIN_1:
-               case ACT_BO_MISS_2:
-               case ACT_BA_FIRE_2:
-               case ACT_REST_EXP:
-                       chance = 66;
-                       break;
-               case ACT_BA_FIRE_3:
-               case ACT_BA_COLD_3:
-               case ACT_BA_ELEC_3:
-               case ACT_WHIRLWIND:
-               case ACT_DRAIN_2:
-               case ACT_CHARM_ANIMAL:
-                       chance = 50;
-                       break;
-               case ACT_SUMMON_ANIMAL:
-                       chance = 40;
-                       break;
-               case ACT_DISP_EVIL:
-               case ACT_BA_MISS_3:
-               case ACT_DISP_GOOD:
-               case ACT_BANISH_EVIL:
-               case ACT_GENOCIDE:
-               case ACT_MASS_GENO:
-               case ACT_CHARM_UNDEAD:
-               case ACT_CHARM_OTHER:
-               case ACT_SUMMON_PHANTOM:
-               case ACT_REST_ALL:
-               case ACT_RUNE_EXPLO:
-                       chance = 33;
-                       break;
-               case ACT_CALL_CHAOS:
-               case ACT_ROCKET:
-               case ACT_CHARM_ANIMALS:
-               case ACT_CHARM_OTHERS:
-               case ACT_SUMMON_ELEMENTAL:
-               case ACT_CURE_700:
-               case ACT_SPEED:
-               case ACT_ID_FULL:
-               case ACT_RUNE_PROT:
-                       chance = 25;
-                       break;
-               case ACT_CURE_1000:
-               case ACT_XTRA_SPEED:
-               case ACT_DETECT_XTRA:
-               case ACT_DIM_DOOR:
-                       chance = 10;
-                       break;
-               case ACT_SUMMON_UNDEAD:
-               case ACT_SUMMON_DEMON:
-               case ACT_WRAITH:
-               case ACT_INVULN:
-               case ACT_ALCHEMY:
-                       chance = 5;
-                       break;
-               default:
-                       chance = 0;
-               }
-       }
-
-       /* A type was chosen... */
-       o_ptr->xtra2 = (byte)type;
-       add_flag(o_ptr->art_flags, TR_ACTIVATE);
-       o_ptr->timeout = 0;
+    int type = 0;
+    PERCENTAGE chance = 0;
+    while (randint1(100) >= chance) {
+        type = randint1(ACT_MAX);
+        switch (type) {
+        case ACT_SUNLIGHT:
+        case ACT_BO_MISS_1:
+        case ACT_BA_POIS_1:
+        case ACT_BO_ELEC_1:
+        case ACT_BO_ACID_1:
+        case ACT_BO_COLD_1:
+        case ACT_BO_FIRE_1:
+        case ACT_CONFUSE:
+        case ACT_SLEEP:
+        case ACT_QUAKE:
+        case ACT_CURE_LW:
+        case ACT_CURE_MW:
+        case ACT_CURE_POISON:
+        case ACT_BERSERK:
+        case ACT_LIGHT:
+        case ACT_MAP_LIGHT:
+        case ACT_DEST_DOOR:
+        case ACT_STONE_MUD:
+        case ACT_TELEPORT:
+            chance = 101;
+            break;
+        case ACT_BA_COLD_1:
+        case ACT_BA_FIRE_1:
+        case ACT_HYPODYNAMIA_1:
+        case ACT_TELE_AWAY:
+        case ACT_ESP:
+        case ACT_RESIST_ALL:
+        case ACT_DETECT_ALL:
+        case ACT_RECALL:
+        case ACT_SATIATE:
+        case ACT_RECHARGE:
+            chance = 85;
+            break;
+        case ACT_TERROR:
+        case ACT_PROT_EVIL:
+        case ACT_ID_PLAIN:
+            chance = 75;
+            break;
+        case ACT_HYPODYNAMIA_2:
+        case ACT_DRAIN_1:
+        case ACT_BO_MISS_2:
+        case ACT_BA_FIRE_2:
+        case ACT_REST_EXP:
+            chance = 66;
+            break;
+        case ACT_BA_FIRE_3:
+        case ACT_BA_COLD_3:
+        case ACT_BA_ELEC_3:
+        case ACT_WHIRLWIND:
+        case ACT_DRAIN_2:
+        case ACT_CHARM_ANIMAL:
+            chance = 50;
+            break;
+        case ACT_SUMMON_ANIMAL:
+        case ACT_ANIM_DEAD:
+            chance = 40;
+            break;
+        case ACT_DISP_EVIL:
+        case ACT_BA_MISS_3:
+        case ACT_DISP_GOOD:
+        case ACT_BANISH_EVIL:
+        case ACT_GENOCIDE:
+        case ACT_MASS_GENO:
+        case ACT_CHARM_UNDEAD:
+        case ACT_CHARM_OTHER:
+        case ACT_SUMMON_PHANTOM:
+        case ACT_REST_ALL:
+        case ACT_RUNE_EXPLO:
+            chance = 33;
+            break;
+        case ACT_CALL_CHAOS:
+        case ACT_ROCKET:
+        case ACT_CHARM_ANIMALS:
+        case ACT_CHARM_OTHERS:
+        case ACT_SUMMON_ELEMENTAL:
+        case ACT_CURE_700:
+        case ACT_SPEED:
+        case ACT_ID_FULL:
+        case ACT_RUNE_PROT:
+            chance = 25;
+            break;
+        case ACT_CURE_1000:
+        case ACT_XTRA_SPEED:
+        case ACT_DETECT_XTRA:
+        case ACT_DIM_DOOR:
+            chance = 10;
+            break;
+        case ACT_TREE_CREATION:
+        case ACT_SUMMON_DEMON:
+        case ACT_SUMMON_UNDEAD:
+        case ACT_WRAITH:
+        case ACT_INVULN:
+        case ACT_ALCHEMY:
+            chance = 5;
+            break;
+        default:
+            chance = 0;
+        }
+    }
+
+    o_ptr->xtra2 = (byte)type;
+    add_flag(o_ptr->art_flags, TR_ACTIVATE);
+    o_ptr->timeout = 0;
 }
 
-
 /*!
  * @brief 対象のオブジェクトに王者の指輪向けの上位耐性を一つ付加する。/ Choose one random high resistance
  * @details 候補は閃光、暗黒、破片、盲目、混乱、地獄、因果混乱、カオス、恐怖であり
@@ -442,17 +508,36 @@ void one_activation(object_type *o_ptr)
  */
 void one_lordly_high_resistance(object_type *o_ptr)
 {
-       switch (randint0(10))
-       {
-       case 0: add_flag(o_ptr->art_flags, TR_RES_LITE);   break;
-       case 1: add_flag(o_ptr->art_flags, TR_RES_DARK);   break;
-       case 2: add_flag(o_ptr->art_flags, TR_RES_SHARDS); break;
-       case 3: add_flag(o_ptr->art_flags, TR_RES_BLIND);  break;
-       case 4: add_flag(o_ptr->art_flags, TR_RES_CONF);   break;
-       case 5: add_flag(o_ptr->art_flags, TR_RES_SOUND);  break;
-       case 6: add_flag(o_ptr->art_flags, TR_RES_NETHER); break;
-       case 7: add_flag(o_ptr->art_flags, TR_RES_NEXUS);  break;
-       case 8: add_flag(o_ptr->art_flags, TR_RES_CHAOS);  break;
-       case 9: add_flag(o_ptr->art_flags, TR_RES_FEAR);   break;
-       }
+    switch (randint0(10)) {
+    case 0:
+        add_flag(o_ptr->art_flags, TR_RES_LITE);
+        break;
+    case 1:
+        add_flag(o_ptr->art_flags, TR_RES_DARK);
+        break;
+    case 2:
+        add_flag(o_ptr->art_flags, TR_RES_SHARDS);
+        break;
+    case 3:
+        add_flag(o_ptr->art_flags, TR_RES_BLIND);
+        break;
+    case 4:
+        add_flag(o_ptr->art_flags, TR_RES_CONF);
+        break;
+    case 5:
+        add_flag(o_ptr->art_flags, TR_RES_SOUND);
+        break;
+    case 6:
+        add_flag(o_ptr->art_flags, TR_RES_NETHER);
+        break;
+    case 7:
+        add_flag(o_ptr->art_flags, TR_RES_NEXUS);
+        break;
+    case 8:
+        add_flag(o_ptr->art_flags, TR_RES_CHAOS);
+        break;
+    case 9:
+        add_flag(o_ptr->art_flags, TR_RES_FEAR);
+        break;
+    }
 }
index d1986db..94d1100 100644 (file)
@@ -10,7 +10,7 @@ typedef enum tr_type {
     TR_DEX = 3, /* DEX += "pval" */
     TR_CON = 4, /* CON += "pval" */
     TR_CHR = 5, /* CHR += "pval" */
-    TR_MAGIC_MASTERY = 6, /* Later */
+    TR_MAGIC_MASTERY = 6, /* 魔道具使用能力向上 */
     TR_FORCE_WEAPON = 7, /* Later */
     TR_STEALTH = 8, /* Stealth += "pval" */
     TR_SEARCH = 9, /* Search += "pval" */
@@ -44,15 +44,15 @@ typedef enum tr_type {
     TR_SUST_CON = 36,
     TR_SUST_CHR = 37,
     TR_RIDING = 38,
-    TR_EASY_SPELL = 39,
+    TR_EASY_SPELL = 39, /* 呪文失敗率減少 */
     TR_IM_ACID = 40,
     TR_IM_ELEC = 41,
     TR_IM_FIRE = 42,
     TR_IM_COLD = 43,
-    TR_THROW = 44, /* Later */
+    TR_THROW = 44, /* 強力投擲 */
     TR_REFLECT = 45, /* Reflect 'bolts' */
-    TR_FREE_ACT = 46, /* Free Action */
-    TR_HOLD_EXP = 47, /* Hold EXP */
+    TR_FREE_ACT = 46, /* 耐麻痺 */
+    TR_HOLD_EXP = 47, /* 経験値維持 */
     TR_RES_ACID = 48,
     TR_RES_ELEC = 49,
     TR_RES_FIRE = 50,
@@ -74,8 +74,8 @@ typedef enum tr_type {
     TR_SH_ELEC = 65, /* Electric Sheath */
     TR_SLAY_HUMAN = 66, /* Slay human */
     TR_SH_COLD = 67, /* cold aura */
-    TR_NO_TELE = 68, /* Anti-teleportation */
-    TR_NO_MAGIC = 69, /* Anti-magic */
+    TR_NO_TELE = 68, /* 反テレポート */
+    TR_NO_MAGIC = 69, /* 反魔法 */
     TR_DEC_MANA = 70, /* 消費魔力減少 */
     TR_TY_CURSE = 71, /* The Ancient Curse */
     TR_WARNING = 72, /* Warning */
index 2cdcc27..0260ec4 100644 (file)
@@ -1,4 +1,4 @@
-#include "player-info/base-status-info.h"
+#include "player-info/base-status-info.h"
 #include "inventory/inventory-slot-types.h"
 #include "player-info/self-info-util.h"
 #include "object/object-flags.h"
@@ -19,60 +19,60 @@ void set_equipment_influence(player_type *creature_ptr, self_info_type *si_ptr)
     }
 
     if (has_flag(si_ptr->flags, TR_STR))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\98r\97Í\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your strength is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの腕力は装備によって影響を受けている。", "Your strength is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_INT))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\92m\94\\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your intelligence is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの知能は装備によって影響を受けている。", "Your intelligence is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_WIS))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8c«\82³\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your wisdom is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの賢さは装備によって影響を受けている。", "Your wisdom is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_DEX))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8aí\97p\82³\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your dexterity is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの器用さは装備によって影響を受けている。", "Your dexterity is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_CON))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\91Ï\8bv\97Í\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your constitution is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの耐久力は装備によって影響を受けている。", "Your constitution is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_CHR))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\96£\97Í\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your charisma is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの魅力は装備によって影響を受けている。", "Your charisma is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_STEALTH))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\89B\96§\8ds\93®\94\\97Í\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your stealth is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの隠密行動能力は装備によって影響を受けている。", "Your stealth is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_SEARCH))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\92T\8dõ\94\\97Í\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your searching ability is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの探索能力は装備によって影響を受けている。", "Your searching ability is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_INFRA))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\90Ô\8aO\90ü\8e\8b\97Í\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your infravision is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの赤外線視力は装備によって影響を受けている。", "Your infravision is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_TUNNEL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8dÌ\8c@\94\\97Í\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your digging ability is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの採掘能力は装備によって影響を受けている。", "Your digging ability is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_SPEED))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\83X\83s\81[\83h\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your speed is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたのスピードは装備によって影響を受けている。", "Your speed is affected by your equipment.");
 
     if (has_flag(si_ptr->flags, TR_BLOWS))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8dU\8c\82\91¬\93x\82Í\91\95\94õ\82É\82æ\82Á\82Ä\89e\8b¿\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your attack speed is affected by your equipment.");
+        si_ptr->info[si_ptr->line++] = _("あなたの攻撃速度は装備によって影響を受けている。", "Your attack speed is affected by your equipment.");
 }
 
 void set_status_sustain_info(player_type *creature_ptr, self_info_type *si_ptr)
 {
     if (creature_ptr->sustain_str) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\98r\97Í\82Í\88Û\8e\9d\82³\82ê\82Ä\82¢\82é\81B", "Your strength is sustained.");
+        si_ptr->info[si_ptr->line++] = _("あなたの腕力は維持されている。", "Your strength is sustained.");
     }
     if (creature_ptr->sustain_int) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\92m\94\\82Í\88Û\8e\9d\82³\82ê\82Ä\82¢\82é\81B", "Your intelligence is sustained.");
+        si_ptr->info[si_ptr->line++] = _("あなたの知能は維持されている。", "Your intelligence is sustained.");
     }
     if (creature_ptr->sustain_wis) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8c«\82³\82Í\88Û\8e\9d\82³\82ê\82Ä\82¢\82é\81B", "Your wisdom is sustained.");
+        si_ptr->info[si_ptr->line++] = _("あなたの賢さは維持されている。", "Your wisdom is sustained.");
     }
     if (creature_ptr->sustain_con) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\91Ï\8bv\97Í\82Í\88Û\8e\9d\82³\82ê\82Ä\82¢\82é\81B", "Your constitution is sustained.");
+        si_ptr->info[si_ptr->line++] = _("あなたの耐久力は維持されている。", "Your constitution is sustained.");
     }
     if (creature_ptr->sustain_dex) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8aí\97p\82³\82Í\88Û\8e\9d\82³\82ê\82Ä\82¢\82é\81B", "Your dexterity is sustained.");
+        si_ptr->info[si_ptr->line++] = _("あなたの器用さは維持されている。", "Your dexterity is sustained.");
     }
     if (creature_ptr->sustain_chr) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\96£\97Í\82Í\88Û\8e\9d\82³\82ê\82Ä\82¢\82é\81B", "Your charisma is sustained.");
+        si_ptr->info[si_ptr->line++] = _("あなたの魅力は維持されている。", "Your charisma is sustained.");
     }
 }
index 9e8fc0b..f133aef 100644 (file)
-#include "player-info/body-improvement-info.h"
+#include "player-info/body-improvement-info.h"
 #include "player-info/self-info-util.h"
 
-/* todo \95À\82Ñ\8f\87\82Ì\93s\8d\87\82Å\98A\94Ô\82ð\95t\82¯\82é\81B\82Ü\82Æ\82ß\82Ä\82à\97Ç\82¢\82È\82ç\82Ü\82Æ\82ß\82Ä\82µ\82Ü\82¤\97\\92è */
+/* todo 並び順の都合で連番を付ける。まとめても良いならまとめてしまう予定 */
 void set_body_improvement_info_1(player_type *creature_ptr, self_info_type *si_ptr)
 {
     if (is_blessed(creature_ptr))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8d\82\8c\89\82³\82ð\8a´\82\82Ä\82¢\82é\81B", "You feel rightous.");
+        si_ptr->info[si_ptr->line++] = _("あなたは高潔さを感じている。", "You feel rightous.");
 
     if (is_hero(creature_ptr))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83q\81[\83\8d\81[\8bC\95ª\82¾\81B", "You feel heroic.");
+        si_ptr->info[si_ptr->line++] = _("あなたはヒーロー気分だ。", "You feel heroic.");
 
     if (is_shero(creature_ptr))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90í\93¬\8b\82¾\81B", "You are in a battle rage.");
+        si_ptr->info[si_ptr->line++] = _("あなたは戦闘狂だ。", "You are in a battle rage.");
 
     if (creature_ptr->protevil)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e×\88«\82È\82é\91\8dÝ\82©\82ç\8eç\82ç\82ê\82Ä\82¢\82é\81B", "You are protected from evil.");
+        si_ptr->info[si_ptr->line++] = _("あなたは邪悪なる存在から守られている。", "You are protected from evil.");
 
     if (creature_ptr->shield)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90_\94é\82Ì\83V\81[\83\8b\83h\82Å\8eç\82ç\82ê\82Ä\82¢\82é\81B", "You are protected by a mystic shield.");
+        si_ptr->info[si_ptr->line++] = _("あなたは神秘のシールドで守られている。", "You are protected by a mystic shield.");
 
     if (is_invuln(creature_ptr))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8c»\8dÝ\8f\9d\82Â\82©\82È\82¢\81B", "You are temporarily invulnerable.");
+        si_ptr->info[si_ptr->line++] = _("あなたは現在傷つかない。", "You are temporarily invulnerable.");
 
     if (creature_ptr->wraith_form)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\88ê\8e\9e\93I\82É\97H\91Ì\89»\82µ\82Ä\82¢\82é\81B", "You are temporarily incorporeal.");
+        si_ptr->info[si_ptr->line++] = _("あなたは一時的に幽体化している。", "You are temporarily incorporeal.");
 }
 
-/* todo \95À\82Ñ\8f\87\82Ì\93s\8d\87\82Å\98A\94Ô\82ð\95t\82¯\82é\81B\82Ü\82Æ\82ß\82Ä\82à\97Ç\82¢\82È\82ç\82Ü\82Æ\82ß\82Ä\82µ\82Ü\82¤\97\\92è */
+/* todo 並び順の都合で連番を付ける。まとめても良いならまとめてしまう予定 */
 void set_body_improvement_info_2(player_type *creature_ptr, self_info_type *si_ptr)
 {
     if (creature_ptr->new_spells)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8eô\95\82â\8bF\82è\82ð\8aw\82Ô\82±\82Æ\82ª\82Å\82«\82é\81B", "You can learn some spells/prayers.");
+        si_ptr->info[si_ptr->line++] = _("あなたは呪文や祈りを学ぶことができる。", "You can learn some spells/prayers.");
 
     if (creature_ptr->word_recall)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82·\82®\82É\8bA\8aÒ\82·\82é\82¾\82ë\82¤\81B", "You will soon be recalled.");
+        si_ptr->info[si_ptr->line++] = _("あなたはすぐに帰還するだろう。", "You will soon be recalled.");
 
     if (creature_ptr->alter_reality)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82·\82®\82É\82±\82Ì\90¢\8aE\82ð\97£\82ê\82é\82¾\82ë\82¤\81B", "You will soon be altered.");
+        si_ptr->info[si_ptr->line++] = _("あなたはすぐにこの世界を離れるだろう。", "You will soon be altered.");
 
     if (creature_ptr->see_infra)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\93µ\82Í\90Ô\8aO\90ü\82É\95q\8a´\82Å\82 \82é\81B", "Your eyes are sensitive to infrared light.");
+        si_ptr->info[si_ptr->line++] = _("あなたの瞳は赤外線に敏感である。", "Your eyes are sensitive to infrared light.");
 
     if (creature_ptr->see_inv)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93§\96¾\82È\83\82\83\93\83X\83^\81[\82ð\8c©\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can see invisible creatures.");
+        si_ptr->info[si_ptr->line++] = _("あなたは透明なモンスターを見ることができる。", "You can see invisible creatures.");
 
     if (creature_ptr->levitation)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\94ò\82Ô\82±\82Æ\82ª\82Å\82«\82é\81B", "You can fly.");
+        si_ptr->info[si_ptr->line++] = _("あなたは飛ぶことができる。", "You can fly.");
 
     if (creature_ptr->free_act)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\96\83á\83\92m\82ç\82¸\82Ì\8cø\89Ê\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You have free action.");
+        si_ptr->info[si_ptr->line++] = _("あなたは麻痺知らずの効果を持っている。", "You have free action.");
 
     if (creature_ptr->regenerate)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91f\91\81\82­\91Ì\97Í\82ð\89ñ\95\9c\82·\82é\81B", "You regenerate quickly.");
+        si_ptr->info[si_ptr->line++] = _("あなたは素早く体力を回復する。", "You regenerate quickly.");
 
     if (creature_ptr->slow_digest)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90H\97~\82ª\8f­\82È\82¢\81B", "Your appetite is small.");
+        si_ptr->info[si_ptr->line++] = _("あなたは食欲が少ない。", "Your appetite is small.");
 }
 
-/* todo \95À\82Ñ\8f\87\82Ì\93s\8d\87\82Å\98A\94Ô\82ð\95t\82¯\82é\81B\82Ü\82Æ\82ß\82Ä\82à\97Ç\82¢\82È\82ç\82Ü\82Æ\82ß\82Ä\82µ\82Ü\82¤\97\\92è */
+/* todo 並び順の都合で連番を付ける。まとめても良いならまとめてしまう予定 */
 void set_body_improvement_info_3(player_type *creature_ptr, self_info_type *si_ptr)
 {
     if (creature_ptr->hold_exp)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e©\8cÈ\82Ì\8co\8c±\92l\82ð\82µ\82Á\82©\82è\82Æ\88Û\8e\9d\82·\82é\81B", "You have a firm hold on your experience.");
+        si_ptr->info[si_ptr->line++] = _("あなたは自己の経験値をしっかりと維持する。", "You have a firm hold on your experience.");
 
     if (creature_ptr->reflect)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\96î\82Ì\8eô\95\82ð\94½\8eË\82·\82é\81B", "You reflect bolt spells.");
+        si_ptr->info[si_ptr->line++] = _("あなたは矢の呪文を反射する。", "You reflect bolt spells.");
 
     if (creature_ptr->sh_fire)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89\8a\82Ì\83I\81[\83\89\82É\95ï\82Ü\82ê\82Ä\82¢\82é\81B", "You are surrounded with a fiery aura.");
+        si_ptr->info[si_ptr->line++] = _("あなたは炎のオーラに包まれている。", "You are surrounded with a fiery aura.");
 
     if (creature_ptr->sh_elec)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93d\8bC\82É\95ï\82Ü\82ê\82Ä\82¢\82é\81B", "You are surrounded with electricity.");
+        si_ptr->info[si_ptr->line++] = _("あなたは電気に包まれている。", "You are surrounded with electricity.");
 
     if (creature_ptr->sh_cold)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\97â\8bC\82Ì\83I\81[\83\89\82É\95ï\82Ü\82ê\82Ä\82¢\82é\81B", "You are surrounded with an aura of coldness.");
+        si_ptr->info[si_ptr->line++] = _("あなたは冷気のオーラに包まれている。", "You are surrounded with an aura of coldness.");
 
     if (creature_ptr->tim_sh_holy)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90¹\82È\82é\83I\81[\83\89\82É\95ï\82Ü\82ê\82Ä\82¢\82é\81B", "You are surrounded with a holy aura.");
+        si_ptr->info[si_ptr->line++] = _("あなたは聖なるオーラに包まれている。", "You are surrounded with a holy aura.");
 
     if (creature_ptr->tim_sh_touki)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93¬\8bC\82Ì\83I\81[\83\89\82É\95ï\82Ü\82ê\82Ä\82¢\82é\81B", "You are surrounded with an energy aura.");
+        si_ptr->info[si_ptr->line++] = _("あなたは闘気のオーラに包まれている。", "You are surrounded with an energy aura.");
 
     if (creature_ptr->anti_magic)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\94½\96\82\96@\83V\81[\83\8b\83h\82É\95ï\82Ü\82ê\82Ä\82¢\82é\81B", "You are surrounded by an anti-magic shell.");
+        si_ptr->info[si_ptr->line++] = _("あなたは反魔法シールドに包まれている。", "You are surrounded by an anti-magic shell.");
 
     if (creature_ptr->anti_tele)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83e\83\8c\83|\81[\83g\82Å\82«\82È\82¢\81B", "You cannot teleport.");
+        si_ptr->info[si_ptr->line++] = _("あなたはテレポートできない。", "You cannot teleport.");
 
     if (creature_ptr->lite)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\90g\91Ì\82Í\8cõ\82Á\82Ä\82¢\82é\81B", "You are carrying a permanent light.");
+        si_ptr->info[si_ptr->line++] = _("あなたの身体は光っている。", "You are carrying a permanent light.");
 
     if (creature_ptr->warning)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8ds\93®\82Ì\91O\82É\8aë\8c¯\82ð\8e@\92m\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You will be warned before dangerous actions.");
+        si_ptr->info[si_ptr->line++] = _("あなたは行動の前に危険を察知することができる。", "You will be warned before dangerous actions.");
 
     if (creature_ptr->dec_mana)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8f­\82È\82¢\8fÁ\94ï\96\82\97Í\82Å\96\82\96@\82ð\8f¥\82¦\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can cast spells with fewer mana points.");
+        si_ptr->info[si_ptr->line++] = _("あなたは少ない消費魔力で魔法を唱えることができる。", "You can cast spells with fewer mana points.");
 
     if (creature_ptr->easy_spell)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\92á\82¢\8e¸\94s\97¦\82Å\96\82\96@\82ð\8f¥\82¦\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "Fail rate of your magic is decreased.");
+        si_ptr->info[si_ptr->line++] = _("あなたは低い失敗率で魔法を唱えることができる。", "Fail rate of your magic is decreased.");
 
     if (creature_ptr->heavy_spell)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8d\82\82¢\8e¸\94s\97¦\82Å\96\82\96@\82ð\8f¥\82¦\82È\82¯\82ê\82Î\82¢\82¯\82È\82¢\81B", "Fail rate of your magic is increased.");
+        si_ptr->info[si_ptr->line++] = _("あなたは高い失敗率で魔法を唱えなければいけない。", "Fail rate of your magic is increased.");
 
     if (creature_ptr->mighty_throw)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b­\82­\95¨\82ð\93\8a\82°\82é\81B", "You can throw objects powerfully.");
+        si_ptr->info[si_ptr->line++] = _("あなたは強く物を投げる。", "You can throw objects powerfully.");
 }
 
-/* todo \95À\82Ñ\8f\87\82Ì\93s\8d\87\82Å\98A\94Ô\82ð\95t\82¯\82é\81B\82Ü\82Æ\82ß\82Ä\82à\97Ç\82¢\82È\82ç\82Ü\82Æ\82ß\82Ä\82µ\82Ü\82¤\97\\92è */
+/* todo 並び順の都合で連番を付ける。まとめても良いならまとめてしまう予定 */
 void set_body_improvement_info_4(player_type *creature_ptr, self_info_type *si_ptr)
 {
     if (creature_ptr->resist_fear)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91S\82­\8b°\95|\82ð\8a´\82\82È\82¢\81B", "You are completely fearless.");
+        si_ptr->info[si_ptr->line++] = _("あなたは全く恐怖を感じない。", "You are completely fearless.");
     
     if (creature_ptr->resist_blind)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\96Ú\82Í\96Ó\96Ú\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "Your eyes are resistant to blindness.");
+        si_ptr->info[si_ptr->line++] = _("あなたの目は盲目への耐性を持っている。", "Your eyes are resistant to blindness.");
     
     if (creature_ptr->resist_time)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\9e\8aÔ\8bt\93]\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to time.");
+        si_ptr->info[si_ptr->line++] = _("あなたは時間逆転への耐性を持っている。", "You are resistant to time.");
 }
index 7ff2efa..1856bfc 100644 (file)
@@ -1,4 +1,4 @@
-#include "player-info/class-ability-info.h"
+#include "player-info/class-ability-info.h"
 #include "player-info/self-info-util.h"
 #include "realm/realm-names-table.h"
 #include "realm/realm-types.h"
@@ -9,7 +9,7 @@ void set_class_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
     case CLASS_WARRIOR:
         if (creature_ptr->lev > 39)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\83\89\83\93\83_\83\80\82È\95û\8cü\82É\91Î\82µ\82Ä\90\94\89ñ\8dU\8c\82\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(75 MP)", "You can attack some random directions simultaneously (cost 75).");
+                = _("あなたはランダムな方向に対して数回攻撃することができる。(75 MP)", "You can attack some random directions simultaneously (cost 75).");
 
         break;
     case CLASS_HIGH_MAGE:
@@ -19,37 +19,37 @@ void set_class_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
     case CLASS_MAGE:
     case CLASS_SORCERER:
         if (creature_ptr->lev > 24)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83A\83C\83e\83\80\82Ì\96\82\97Í\82ð\8bz\8eû\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(1 MP)", "You can absorb charges from an item (cost 1).");
+            si_ptr->info[si_ptr->line++] = _("あなたはアイテムの魔力を吸収することができる。(1 MP)", "You can absorb charges from an item (cost 1).");
 
         break;
     case CLASS_PRIEST:
         if (is_good_realm(creature_ptr->realm1)) {
             if (creature_ptr->lev > 34)
-                si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\95\90\8aí\82ð\8fj\95\9f\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(70 MP)", "You can bless a weapon (cost 70).");
+                si_ptr->info[si_ptr->line++] = _("あなたは武器を祝福することができる。(70 MP)", "You can bless a weapon (cost 70).");
 
             break;
         }
 
         if (creature_ptr->lev > 41)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\8eü\82è\82Ì\82·\82×\82Ä\82Ì\83\82\83\93\83X\83^\81[\82ð\8dU\8c\82\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(40 MP)", "You can damage all monsters in sight (cost 40).");
+                = _("あなたは周りのすべてのモンスターを攻撃することができる。(40 MP)", "You can damage all monsters in sight (cost 40).");
 
         break;
     case CLASS_ROGUE:
         if (creature_ptr->lev > 7)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\8dU\8c\82\82µ\82Ä\91¦\8dÀ\82É\93¦\82°\82é\82±\82Æ\82ª\82Å\82«\82é\81B(12 MP)", "You can hit a monster and teleport away simultaneously (cost 12).");
+                = _("あなたは攻撃して即座に逃げることができる。(12 MP)", "You can hit a monster and teleport away simultaneously (cost 12).");
 
         break;
     case CLASS_RANGER:
         if (creature_ptr->lev > 14)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89ö\95¨\82ð\92²\8d¸\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(20 MP)", "You can probe monsters (cost 20).");
+            si_ptr->info[si_ptr->line++] = _("あなたは怪物を調査することができる。(20 MP)", "You can probe monsters (cost 20).");
 
         break;
     case CLASS_PALADIN:
         if (is_good_realm(creature_ptr->realm1)) {
             if (creature_ptr->lev > 29) {
-                si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90¹\82È\82é\91\84\82ð\95ú\82Â\82±\82Æ\82ª\82Å\82«\82é\81B(30 MP)", "You can fire a holy spear (cost 30).");
+                si_ptr->info[si_ptr->line++] = _("あなたは聖なる槍を放つことができる。(30 MP)", "You can fire a holy spear (cost 30).");
             }
 
             break;
@@ -57,93 +57,93 @@ void set_class_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
 
         if (creature_ptr->lev > 29)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\90\96½\97Í\82ð\8c¸\8f­\82³\82¹\82é\91\84\82ð\95ú\82Â\82±\82Æ\82ª\82Å\82«\82é\81B(30 MP)", "You can fire a spear which drains vitality (cost 30).");
+                = _("あなたは生命力を減少させる槍を放つことができる。(30 MP)", "You can fire a spear which drains vitality (cost 30).");
 
         break;
     case CLASS_WARRIOR_MAGE:
         if (creature_ptr->lev > 24) {
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82g\82o\82ð\82l\82o\82É\95Ï\8a·\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(0 MP)", "You can convert HP to SP (cost 0).");
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82l\82o\82ð\82g\82o\82É\95Ï\8a·\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(0 MP)", "You can convert SP to HP (cost 0).");
+            si_ptr->info[si_ptr->line++] = _("あなたはHPをMPに変換することができる。(0 MP)", "You can convert HP to SP (cost 0).");
+            si_ptr->info[si_ptr->line++] = _("あなたはMPをHPに変換することができる。(0 MP)", "You can convert SP to HP (cost 0).");
         }
 
         break;
     case CLASS_CHAOS_WARRIOR:
         if (creature_ptr->lev > 39) {
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\8eü\88Í\82É\89ö\95¨\82ð\98f\82í\82·\8cõ\82ð\94­\90\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82é\81B(50 MP)", "You can radiate light which confuses nearby monsters (cost 50).");
+                = _("あなたは周囲に怪物を惑わす光を発生させることができる。(50 MP)", "You can radiate light which confuses nearby monsters (cost 50).");
         }
 
         break;
     case CLASS_MONK:
         if (creature_ptr->lev > 24)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8d\\82¦\82é\82±\82Æ\82ª\82Å\82«\82é\81B(0 MP)", "You can assume a special stance (cost 0).");
+            si_ptr->info[si_ptr->line++] = _("あなたは構えることができる。(0 MP)", "You can assume a special stance (cost 0).");
 
         if (creature_ptr->lev > 29)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\92Ê\8fí\82Ì2\94{\82Ì\8dU\8c\82\82ð\8ds\82¤\82±\82Æ\82ª\82Å\82«\82é\81B(30 MP)", "You can perform two attacks at the same time (cost 30).");
+            si_ptr->info[si_ptr->line++] = _("あなたは通常の2倍の攻撃を行うことができる。(30 MP)", "You can perform two attacks at the same time (cost 30).");
 
         break;
     case CLASS_MINDCRAFTER:
     case CLASS_FORCETRAINER:
         if (creature_ptr->lev > 14)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\90¸\90_\82ð\8fW\92\86\82µ\82Ä\82l\82o\82ð\89ñ\95\9c\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82é\81B(0 MP)", "You can concentrate to regenerate your mana (cost 0).");
+                = _("あなたは精神を集中してMPを回復させることができる。(0 MP)", "You can concentrate to regenerate your mana (cost 0).");
 
         break;
     case CLASS_TOURIST:
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8eÊ\90^\82ð\8eB\89e\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(0 MP)", "You can take a photograph (cost 0).");
+        si_ptr->info[si_ptr->line++] = _("あなたは写真を撮影することができる。(0 MP)", "You can take a photograph (cost 0).");
         if (creature_ptr->lev > 24)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83A\83C\83e\83\80\82ð\8a®\91S\82É\8aÓ\92è\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(20 MP)", "You can *identify* items (cost 20).");
+            si_ptr->info[si_ptr->line++] = _("あなたはアイテムを完全に鑑定することができる。(20 MP)", "You can *identify* items (cost 20).");
 
         break;
     case CLASS_IMITATOR:
         if (creature_ptr->lev > 29)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89ö\95¨\82Ì\93Á\8eê\8dU\8c\82\82ð\83_\83\81\81[\83W2\94{\82Å\82Ü\82Ë\82é\82±\82Æ\82ª\82Å\82«\82é\81B(100 MP)",
+            si_ptr->info[si_ptr->line++] = _("あなたは怪物の特殊攻撃をダメージ2倍でまねることができる。(100 MP)",
                 "You can imitate monster's special attacks with double damage (cost 100).");
 
         break;
     case CLASS_BEASTMASTER:
         si_ptr->info[si_ptr->line++]
-            = _("\82 \82È\82½\82Í1\91Ì\82Ì\90\96½\82Ì\82 \82é\83\82\83\93\83X\83^\81[\82ð\8ex\94z\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(\83\8c\83x\83\8b/4 MP)", "You can dominate a monster (cost level/4).");
+            = _("あなたは1体の生命のあるモンスターを支配することができる。(レベル/4 MP)", "You can dominate a monster (cost level/4).");
         if (creature_ptr->lev > 29)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\8b\8aE\93à\82Ì\90\96½\82Ì\82 \82é\83\82\83\93\83X\83^\81[\82ð\8ex\94z\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B((\83\8c\83x\83\8b+20)/2 MP)",
+            si_ptr->info[si_ptr->line++] = _("あなたは視界内の生命のあるモンスターを支配することができる。((レベル+20)/2 MP)",
                 "You can dominate living monsters in sight (cost (level+20)/4).");
 
         break;
     case CLASS_MAGIC_EATER:
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8fñ/\96\82\96@\96_/\83\8d\83b\83h\82Ì\96\82\97Í\82ð\8e©\95ª\82Ì\82à\82Ì\82É\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can absorb a staff, wand or rod itself.");
+        si_ptr->info[si_ptr->line++] = _("あなたは杖/魔法棒/ロッドの魔力を自分のものにすることができる。", "You can absorb a staff, wand or rod itself.");
         break;
     case CLASS_RED_MAGE:
         if (creature_ptr->lev > 47)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í1\83^\81[\83\93\82É2\89ñ\96\82\96@\82ð\8f¥\82¦\82é\82±\82Æ\82ª\82Å\82«\82é\81B(20 MP)", "You can cast two spells simultaneously (cost 20).");
+            si_ptr->info[si_ptr->line++] = _("あなたは1ターンに2回魔法を唱えることができる。(20 MP)", "You can cast two spells simultaneously (cost 20).");
 
         break;
     case CLASS_SAMURAI:
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90¸\90_\82ð\8fW\92\86\82µ\82Ä\8bC\8d\87\82¢\82ð\97­\82ß\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can concentrate to regenerate your mana.");
+        si_ptr->info[si_ptr->line++] = _("あなたは精神を集中して気合いを溜めることができる。", "You can concentrate to regenerate your mana.");
         if (creature_ptr->lev > 24)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93Á\8eê\82È\8c^\82Å\8d\\82¦\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can assume a special stance.");
+            si_ptr->info[si_ptr->line++] = _("あなたは特殊な型で構えることができる。", "You can assume a special stance.");
 
         break;
     case CLASS_BLUE_MAGE:
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91\8a\8eè\82É\8eg\82í\82ê\82½\96\82\96@\82ð\8aw\82Ô\82±\82Æ\82ª\82Å\82«\82é\81B", "You can study spells which your enemy casts on you.");
+        si_ptr->info[si_ptr->line++] = _("あなたは相手に使われた魔法を学ぶことができる。", "You can study spells which your enemy casts on you.");
         break;
     case CLASS_CAVALRY:
         if (creature_ptr->lev > 9)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\83\82\83\93\83X\83^\81[\82É\8fæ\82Á\82Ä\96³\97\9d\96î\97\9d\83y\83b\83g\82É\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can ride on a hostile monster to forcibly turn it into a pet.");
+                = _("あなたはモンスターに乗って無理矢理ペットにすることができる。", "You can ride on a hostile monster to forcibly turn it into a pet.");
 
         break;
     case CLASS_BERSERKER:
         if (creature_ptr->lev > 9)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8aX\82Æ\83_\83\93\83W\83\87\83\93\82Ì\8aÔ\82ð\8ds\82«\97\88\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can travel between town and the depths.");
+            si_ptr->info[si_ptr->line++] = _("あなたは街とダンジョンの間を行き来することができる。", "You can travel between town and the depths.");
 
         break;
     case CLASS_MIRROR_MASTER:
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b¾\82ð\8dì\82è\8fo\82·\82±\82Æ\82ª\82Å\82«\82é\81B(2 MP)", "You can create a Mirror (cost 2).");
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b¾\82ð\8a\84\82é\82±\82Æ\82ª\82Å\82«\82é\81B(0 MP)", "You can break distant Mirrors (cost 0).");
+        si_ptr->info[si_ptr->line++] = _("あなたは鏡を作り出すことができる。(2 MP)", "You can create a Mirror (cost 2).");
+        si_ptr->info[si_ptr->line++] = _("あなたは鏡を割ることができる。(0 MP)", "You can break distant Mirrors (cost 0).");
         break;
     case CLASS_NINJA:
         if (creature_ptr->lev > 19)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91f\91\81\82­\88Ú\93®\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can walk extremely fast.");
+            si_ptr->info[si_ptr->line++] = _("あなたは素早く移動することができる。", "You can walk extremely fast.");
 
         break;
     }
index 6be29ee..7cea7e5 100644 (file)
@@ -1,4 +1,4 @@
-#include "player-info/mutation-info.h"
+#include "player-info/mutation-info.h"
 #include "mutation/mutation-flag-types.h"
 #include "player-info/self-info-util.h"
 #include "player/player-status-flags.h"
@@ -9,104 +9,104 @@ void set_mutation_info_1(player_type *creature_ptr, self_info_type *si_ptr)
         return;
 
     if (creature_ptr->muta1 & MUT1_SPIT_ACID)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e_\82ð\90\81\82«\82©\82¯\82é\82±\82Æ\82ª\82Å\82«\82é\81B(\83_\83\81\81[\83\83\8c\83x\83\8bX1)", "You can spit acid (dam lvl).");
+        si_ptr->info[si_ptr->line++] = _("あなたは酸を吹きかけることができる。(ダメージ レベルX1)", "You can spit acid (dam lvl).");
 
     if (creature_ptr->muta1 & MUT1_BR_FIRE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89\8a\82Ì\83u\83\8c\83X\82ð\93f\82­\82±\82Æ\82ª\82Å\82«\82é\81B(\83_\83\81\81[\83\83\8c\83x\83\8bX2)", "You can breathe fire (dam lvl * 2).");
+        si_ptr->info[si_ptr->line++] = _("あなたは炎のブレスを吐くことができる。(ダメージ レベルX2)", "You can breathe fire (dam lvl * 2).");
 
     if (creature_ptr->muta1 & MUT1_HYPN_GAZE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82ÌáÉ\82Ý\82Í\8dÃ\96°\8cø\89Ê\82ð\82à\82Â\81B", "Your gaze is hypnotic.");
+        si_ptr->info[si_ptr->line++] = _("あなたの睨みは催眠効果をもつ。", "Your gaze is hypnotic.");
 
     if (creature_ptr->muta1 & MUT1_TELEKINES)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\94O\93®\97Í\82ð\82à\82Á\82Ä\82¢\82é\81B", "You are telekinetic.");
+        si_ptr->info[si_ptr->line++] = _("あなたは念動力をもっている。", "You are telekinetic.");
 
     if (creature_ptr->muta1 & MUT1_VTELEPORT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e©\95ª\82Ì\88Ó\8ev\82Å\83e\83\8c\83|\81[\83g\82Å\82«\82é\81B", "You can teleport at will.");
+        si_ptr->info[si_ptr->line++] = _("あなたは自分の意思でテレポートできる。", "You can teleport at will.");
 
     if (creature_ptr->muta1 & MUT1_MIND_BLST)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90¸\90_\8dU\8c\82\82ð\8ds\82¦\82é\81B(\83_\83\81\81[\83W 3\81`12d3)", "You can Mind Blast your enemies (3 to 12d3 dam).");
+        si_ptr->info[si_ptr->line++] = _("あなたは精神攻撃を行える。(ダメージ 3~12d3)", "You can Mind Blast your enemies (3 to 12d3 dam).");
 
     if (creature_ptr->muta1 & MUT1_RADIATION)
         si_ptr->info[si_ptr->line++]
-            = _("\82 \82È\82½\82Í\8e©\95ª\82Ì\88Ó\8ev\82Å\8b­\82¢\95ú\8eË\90ü\82ð\94­\90\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(\83_\83\81\81[\83\83\8c\83x\83\8bX2)", "You can emit hard radiation at will (dam lvl * 2).");
+            = _("あなたは自分の意思で強い放射線を発生することができる。(ダメージ レベルX2)", "You can emit hard radiation at will (dam lvl * 2).");
 
     if (creature_ptr->muta1 & MUT1_VAMPIRISM)
         si_ptr->info[si_ptr->line++] = _(
-            "\82 \82È\82½\82Í\8bz\8c\8c\8bS\82Ì\82æ\82¤\82É\93G\82©\82ç\90\96½\97Í\82ð\8bz\8eû\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(\83_\83\81\81[\83\83\8c\83x\83\8bX2)", "Like a vampire, you can drain life from a foe (dam lvl * 2).");
+            "あなたは吸血鬼のように敵から生命力を吸収することができる。(ダメージ レベルX2)", "Like a vampire, you can drain life from a foe (dam lvl * 2).");
 
     if (creature_ptr->muta1 & MUT1_SMELL_MET)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8bß\82­\82É\82 \82é\8bM\8bà\91®\82ð\82©\82¬\95ª\82¯\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can smell nearby precious metal.");
+        si_ptr->info[si_ptr->line++] = _("あなたは近くにある貴金属をかぎ分けることができる。", "You can smell nearby precious metal.");
 
     if (creature_ptr->muta1 & MUT1_SMELL_MON)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8bß\82­\82Ì\83\82\83\93\83X\83^\81[\82Ì\91\8dÝ\82ð\82©\82¬\95ª\82¯\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can smell nearby monsters.");
+        si_ptr->info[si_ptr->line++] = _("あなたは近くのモンスターの存在をかぎ分けることができる。", "You can smell nearby monsters.");
 
     if (creature_ptr->muta1 & MUT1_BLINK)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\92Z\82¢\8b\97\97£\82ð\83e\83\8c\83|\81[\83g\82Å\82«\82é\81B", "You can teleport yourself short distances.");
+        si_ptr->info[si_ptr->line++] = _("あなたは短い距離をテレポートできる。", "You can teleport yourself short distances.");
 
     if (creature_ptr->muta1 & MUT1_EAT_ROCK)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8dd\82¢\8aâ\82ð\90H\82×\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can consume solid rock.");
+        si_ptr->info[si_ptr->line++] = _("あなたは硬い岩を食べることができる。", "You can consume solid rock.");
 
     if (creature_ptr->muta1 & MUT1_SWAP_POS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91¼\82Ì\8eÒ\82Æ\8fê\8f\8a\82ð\93ü\82ê\91Ö\82í\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can switch locations with another being.");
+        si_ptr->info[si_ptr->line++] = _("あなたは他の者と場所を入れ替わることができる。", "You can switch locations with another being.");
 
     if (creature_ptr->muta1 & MUT1_SHRIEK)
         si_ptr->info[si_ptr->line++]
-            = _("\82 \82È\82½\82Í\90g\82Ì\96Ñ\82à\82æ\82¾\82Â\8b©\82Ñ\90º\82ð\94­\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(\83_\83\81\81[\83\83\8c\83x\83\8bX2)", "You can emit a horrible shriek (dam 2 * lvl).");
+            = _("あなたは身の毛もよだつ叫び声を発することができる。(ダメージ レベルX2)", "You can emit a horrible shriek (dam 2 * lvl).");
 
     if (creature_ptr->muta1 & MUT1_ILLUMINE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\96¾\82é\82¢\8cõ\82ð\95ú\82Â\82±\82Æ\82ª\82Å\82«\82é\81B", "You can emit bright light.");
+        si_ptr->info[si_ptr->line++] = _("あなたは明るい光を放つことができる。", "You can emit bright light.");
 
     if (creature_ptr->muta1 & MUT1_DET_CURSE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e×\88«\82È\96\82\96@\82Ì\8aë\8c¯\82ð\8a´\82\82Æ\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can feel the danger of evil magic.");
+        si_ptr->info[si_ptr->line++] = _("あなたは邪悪な魔法の危険を感じとることができる。", "You can feel the danger of evil magic.");
 
     if (creature_ptr->muta1 & MUT1_BERSERK)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e©\95ª\82Ì\88Ó\8ev\82Å\8b\97\90\90í\93¬\8fó\91Ô\82É\82È\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can drive yourself into a berserk frenzy.");
+        si_ptr->info[si_ptr->line++] = _("あなたは自分の意思で狂乱戦闘状態になることができる。", "You can drive yourself into a berserk frenzy.");
 
     if (creature_ptr->muta1 & MUT1_POLYMORPH)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e©\95ª\82Ì\88Ó\8eu\82Å\95Ï\89»\82Å\82«\82é\81B", "You can polymorph yourself at will.");
+        si_ptr->info[si_ptr->line++] = _("あなたは自分の意志で変化できる。", "You can polymorph yourself at will.");
 
     if (creature_ptr->muta1 & MUT1_MIDAS_TCH)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\92Ê\8fí\83A\83C\83e\83\80\82ð\8bà\82É\95Ï\82¦\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can turn ordinary items to gold.");
+        si_ptr->info[si_ptr->line++] = _("あなたは通常アイテムを金に変えることができる。", "You can turn ordinary items to gold.");
 
     if (creature_ptr->muta1 & MUT1_GROW_MOLD)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8eü\88Í\82É\83L\83m\83R\82ð\90\82â\82·\82±\82Æ\82ª\82Å\82«\82é\81B", "You can cause mold to grow near you.");
+        si_ptr->info[si_ptr->line++] = _("あなたは周囲にキノコを生やすことができる。", "You can cause mold to grow near you.");
 
     if (creature_ptr->muta1 & MUT1_RESIST)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8c³\91f\82Ì\8dU\8c\82\82É\91Î\82µ\82Ä\90g\82ð\8dd\82­\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can harden yourself to the ravages of the elements.");
+        si_ptr->info[si_ptr->line++] = _("あなたは元素の攻撃に対して身を硬くすることができる。", "You can harden yourself to the ravages of the elements.");
 
     if (creature_ptr->muta1 & MUT1_EARTHQUAKE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8eü\88Í\82Ì\83_\83\93\83W\83\87\83\93\82ð\95ö\89ó\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can bring down the dungeon around your ears.");
+        si_ptr->info[si_ptr->line++] = _("あなたは周囲のダンジョンを崩壊させることができる。", "You can bring down the dungeon around your ears.");
 
     if (creature_ptr->muta1 & MUT1_EAT_MAGIC)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\96\82\96@\82Ì\83G\83l\83\8b\83M\81[\82ð\8e©\95ª\82Ì\95¨\82Æ\82µ\82Ä\8eg\97p\82Å\82«\82é\81B", "You can consume magic energy for your own use.");
+        si_ptr->info[si_ptr->line++] = _("あなたは魔法のエネルギーを自分の物として使用できる。", "You can consume magic energy for your own use.");
 
     if (creature_ptr->muta1 & MUT1_WEIGH_MAG)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e©\95ª\82É\89e\8b¿\82ð\97^\82¦\82é\96\82\96@\82Ì\97Í\82ð\8a´\82\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can feel the strength of the magics affecting you.");
+        si_ptr->info[si_ptr->line++] = _("あなたは自分に影響を与える魔法の力を感じることができる。", "You can feel the strength of the magics affecting you.");
 
     if (creature_ptr->muta1 & MUT1_STERILITY)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8fW\92c\93I\90\90B\95s\94\\82ð\8bN\82±\82·\82±\82Æ\82ª\82Å\82«\82é\81B", "You can cause mass impotence.");
+        si_ptr->info[si_ptr->line++] = _("あなたは集団的生殖不能を起こすことができる。", "You can cause mass impotence.");
 
     if (creature_ptr->muta1 & MUT1_HIT_AND_AWAY)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8dU\8c\82\82µ\82½\8cã\90g\82ð\8eç\82é\82½\82ß\93¦\82°\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can run for your life after hitting something.");
+        si_ptr->info[si_ptr->line++] = _("あなたは攻撃した後身を守るため逃げることができる。", "You can run for your life after hitting something.");
 
     if (creature_ptr->muta1 & MUT1_DAZZLE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8d¬\97\90\82Æ\96Ó\96Ú\82ð\88ø\82«\8bN\82±\82·\95ú\8eË\94\\82ð\94­\90\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B ", "You can emit confusing, blinding radiation.");
+        si_ptr->info[si_ptr->line++] = _("あなたは混乱と盲目を引き起こす放射能を発生することができる。 ", "You can emit confusing, blinding radiation.");
 
     if (creature_ptr->muta1 & MUT1_LASER_EYE)
         si_ptr->info[si_ptr->line++]
-            = _("\82 \82È\82½\82Í\96Ú\82©\82ç\83\8c\81[\83U\81[\8cõ\90ü\82ð\94­\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(\83_\83\81\81[\83\83\8c\83x\83\8bX2)", "Your eyes can fire laser beams (dam 2 * lvl).");
+            = _("あなたは目からレーザー光線を発することができる。(ダメージ レベルX2)", "Your eyes can fire laser beams (dam 2 * lvl).");
 
     if (creature_ptr->muta1 & MUT1_RECALL)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8aX\82Æ\83_\83\93\83W\83\87\83\93\82Ì\8aÔ\82ð\8ds\82«\97\88\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can travel between town and the depths.");
+        si_ptr->info[si_ptr->line++] = _("あなたは街とダンジョンの間を行き来することができる。", "You can travel between town and the depths.");
 
     if (creature_ptr->muta1 & MUT1_BANISH)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e×\88«\82È\83\82\83\93\83X\83^\81[\82ð\92n\8d\96\82É\97\8e\82Æ\82·\82±\82Æ\82ª\82Å\82«\82é\81B", "You can send evil creatures directly to Hell.");
+        si_ptr->info[si_ptr->line++] = _("あなたは邪悪なモンスターを地獄に落とすことができる。", "You can send evil creatures directly to Hell.");
 
     if (creature_ptr->muta1 & MUT1_COLD_TOUCH)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93G\82ð\90G\82Á\82Ä\93\80\82ç\82¹\82é\82±\82Æ\82ª\82Å\82«\82é\81B(\83_\83\81\81[\83\83\8c\83x\83\8bX3)", "You can freeze things with a touch (dam 3 * lvl).");
+        si_ptr->info[si_ptr->line++] = _("あなたは敵を触って凍らせることができる。(ダメージ レベルX3)", "You can freeze things with a touch (dam 3 * lvl).");
 
     if (creature_ptr->muta1 & MUT1_LAUNCHER)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83A\83C\83e\83\80\82ð\97Í\8b­\82­\93\8a\82°\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "You can hurl objects with great force.");
+        si_ptr->info[si_ptr->line++] = _("あなたはアイテムを力強く投げることができる。", "You can hurl objects with great force.");
 }
 
 void set_mutation_info_2(player_type *creature_ptr, self_info_type *si_ptr)
@@ -115,176 +115,176 @@ void set_mutation_info_2(player_type *creature_ptr, self_info_type *si_ptr)
         return;
 
     if (creature_ptr->muta2 & MUT2_BERS_RAGE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b\90í\8em\89»\82Ì\94­\8dì\82ð\8bN\82±\82·\81B", "You are subject to berserker fits.");
+        si_ptr->info[si_ptr->line++] = _("あなたは狂戦士化の発作を起こす。", "You are subject to berserker fits.");
 
     if (creature_ptr->muta2 & MUT2_COWARDICE)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\9e\81X\89°\95a\82É\82È\82é\81B", "You are subject to cowardice.");
+        si_ptr->info[si_ptr->line++] = _("あなたは時々臆病になる。", "You are subject to cowardice.");
 
     if (creature_ptr->muta2 & MUT2_RTELEPORT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83\89\83\93\83_\83\80\82É\83e\83\8c\83|\81[\83g\82·\82é\81B", "You may randomly teleport.");
+        si_ptr->info[si_ptr->line++] = _("あなたはランダムにテレポートする。", "You may randomly teleport.");
 
     if (creature_ptr->muta2 & MUT2_ALCOHOL)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\91Ì\82Í\83A\83\8b\83R\81[\83\8b\82ð\95ª\94å\82·\82é\81B", "Your body produces alcohol.");
+        si_ptr->info[si_ptr->line++] = _("あなたの体はアルコールを分泌する。", "Your body produces alcohol.");
 
     if (creature_ptr->muta2 & MUT2_HALLU)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8c\8ao\82ð\88ø\82«\8bN\82±\82·\90¸\90_\8dö\97\90\82É\90N\82³\82ê\82Ä\82¢\82é\81B", "You have a hallucinatory insanity.");
+        si_ptr->info[si_ptr->line++] = _("あなたは幻覚を引き起こす精神錯乱に侵されている。", "You have a hallucinatory insanity.");
 
     if (creature_ptr->muta2 & MUT2_FLATULENT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90§\8cä\82Å\82«\82È\82¢\8b­\97ó\82È\9b\9b\82ð\82±\82­\81B", "You are subject to uncontrollable flatulence.");
+        si_ptr->info[si_ptr->line++] = _("あなたは制御できない強烈な屁をこく。", "You are subject to uncontrollable flatulence.");
 
     if (creature_ptr->muta2 & MUT2_PROD_MANA)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90§\8cä\95s\94\\82È\96\82\96@\82Ì\83G\83l\83\8b\83M\81[\82ð\94­\82µ\82Ä\82¢\82é\81B", "You produce magical energy uncontrollably.");
+        si_ptr->info[si_ptr->line++] = _("あなたは制御不能な魔法のエネルギーを発している。", "You produce magical energy uncontrollably.");
 
     if (creature_ptr->muta2 & MUT2_ATT_DEMON)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83f\81[\83\82\83\93\82ð\88ø\82«\82Â\82¯\82é\81B", "You attract demons.");
+        si_ptr->info[si_ptr->line++] = _("あなたはデーモンを引きつける。", "You attract demons.");
 
     if (creature_ptr->muta2 & MUT2_SCOR_TAIL)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83T\83\\83\8a\82Ì\90K\94ö\82ª\90\82¦\82Ä\82¢\82é\81B(\93Å\81A\83_\83\81\81[\83W 3d7)", "You have a scorpion tail (poison, 3d7).");
+        si_ptr->info[si_ptr->line++] = _("あなたはサソリの尻尾が生えている。(毒、ダメージ 3d7)", "You have a scorpion tail (poison, 3d7).");
 
     if (creature_ptr->muta2 & MUT2_HORNS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8ap\82ª\90\82¦\82Ä\82¢\82é\81B(\83_\83\81\81[\83W 2d6)", "You have horns (dam. 2d6).");
+        si_ptr->info[si_ptr->line++] = _("あなたは角が生えている。(ダメージ 2d6)", "You have horns (dam. 2d6).");
 
     if (creature_ptr->muta2 & MUT2_BEAK)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83N\83`\83o\83V\82ª\90\82¦\82Ä\82¢\82é\81B(\83_\83\81\81[\83W 2d4)", "You have a beak (dam. 2d4).");
+        si_ptr->info[si_ptr->line++] = _("あなたはクチバシが生えている。(ダメージ 2d4)", "You have a beak (dam. 2d4).");
 
     if (creature_ptr->muta2 & MUT2_SPEED_FLUX)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83\89\83\93\83_\83\80\82É\91\81\82­\93®\82¢\82½\82è\92x\82­\93®\82¢\82½\82è\82·\82é\81B", "You move faster or slower randomly.");
+        si_ptr->info[si_ptr->line++] = _("あなたはランダムに早く動いたり遅く動いたりする。", "You move faster or slower randomly.");
 
     if (creature_ptr->muta2 & MUT2_BANISH_ALL)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\9e\81X\8bß\82­\82Ì\83\82\83\93\83X\83^\81[\82ð\8fÁ\96Å\82³\82¹\82é\81B", "You sometimes cause nearby creatures to vanish.");
+        si_ptr->info[si_ptr->line++] = _("あなたは時々近くのモンスターを消滅させる。", "You sometimes cause nearby creatures to vanish.");
 
     if (creature_ptr->muta2 & MUT2_EAT_LIGHT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\9e\81X\8eü\88Í\82Ì\8cõ\82ð\8bz\8eû\82µ\82Ä\89h\97{\82É\82·\82é\81B", "You sometimes feed off of the light around you.");
+        si_ptr->info[si_ptr->line++] = _("あなたは時々周囲の光を吸収して栄養にする。", "You sometimes feed off of the light around you.");
 
     if (creature_ptr->muta2 & MUT2_TRUNK)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8fÛ\82Ì\82æ\82¤\82È\95@\82ð\8e\9d\82Á\82Ä\82¢\82é\81B(\83_\83\81\81[\83W 1d4)", "You have an elephantine trunk (dam 1d4).");
+        si_ptr->info[si_ptr->line++] = _("あなたは象のような鼻を持っている。(ダメージ 1d4)", "You have an elephantine trunk (dam 1d4).");
 
     if (creature_ptr->muta2 & MUT2_ATT_ANIMAL)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93®\95¨\82ð\88ø\82«\82Â\82¯\82é\81B", "You attract animals.");
+        si_ptr->info[si_ptr->line++] = _("あなたは動物を引きつける。", "You attract animals.");
 
     if (creature_ptr->muta2 & MUT2_TENTACLES)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e×\88«\82È\90G\8eè\82ð\8e\9d\82Á\82Ä\82¢\82é\81B(\83_\83\81\81[\83W 2d5)", "You have evil looking tentacles (dam 2d5).");
+        si_ptr->info[si_ptr->line++] = _("あなたは邪悪な触手を持っている。(ダメージ 2d5)", "You have evil looking tentacles (dam 2d5).");
 
     if (creature_ptr->muta2 & MUT2_RAW_CHAOS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82µ\82Î\82µ\82Î\8f\83\83J\83I\83X\82É\95ï\82Ü\82ê\82é\81B", "You occasionally are surrounded with raw chaos.");
+        si_ptr->info[si_ptr->line++] = _("あなたはしばしば純カオスに包まれる。", "You occasionally are surrounded with raw chaos.");
 
     if (creature_ptr->muta2 & MUT2_NORMALITY)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\95Ï\88Ù\82µ\82Ä\82¢\82½\82ª\81A\89ñ\95\9c\82µ\82Ä\82«\82Ä\82¢\82é\81B", "You may be mutated, but you're recovering.");
+        si_ptr->info[si_ptr->line++] = _("あなたは変異していたが、回復してきている。", "You may be mutated, but you're recovering.");
 
     if (creature_ptr->muta2 & MUT2_WRAITH)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\93÷\91Ì\82Í\97H\91Ì\89»\82µ\82½\82è\8eÀ\91Ì\89»\82µ\82½\82è\82·\82é\81B", "You fade in and out of physical reality.");
+        si_ptr->info[si_ptr->line++] = _("あなたの肉体は幽体化したり実体化したりする。", "You fade in and out of physical reality.");
 
     if (creature_ptr->muta2 & MUT2_POLY_WOUND)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8c\92\8dN\82Í\83J\83I\83X\82Ì\97Í\82É\89e\8b¿\82ð\8eó\82¯\82é\81B", "Your health is subject to chaotic forces.");
+        si_ptr->info[si_ptr->line++] = _("あなたの健康はカオスの力に影響を受ける。", "Your health is subject to chaotic forces.");
 
     if (creature_ptr->muta2 & MUT2_WASTING)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90\8a\8eã\82·\82é\8b°\82ë\82µ\82¢\95a\8bC\82É\82©\82©\82Á\82Ä\82¢\82é\81B", "You have a horrible wasting disease.");
+        si_ptr->info[si_ptr->line++] = _("あなたは衰弱する恐ろしい病気にかかっている。", "You have a horrible wasting disease.");
 
     if (creature_ptr->muta2 & MUT2_ATT_DRAGON)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83h\83\89\83S\83\93\82ð\88ø\82«\82Â\82¯\82é\81B", "You attract dragons.");
+        si_ptr->info[si_ptr->line++] = _("あなたはドラゴンを引きつける。", "You attract dragons.");
 
     if (creature_ptr->muta2 & MUT2_WEIRD_MIND)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\90¸\90_\82Í\83\89\83\93\83_\83\80\82É\8ag\91å\82µ\82½\82è\8fk\8f¬\82µ\82½\82è\82µ\82Ä\82¢\82é\81B", "Your mind randomly expands and contracts.");
+        si_ptr->info[si_ptr->line++] = _("あなたの精神はランダムに拡大したり縮小したりしている。", "Your mind randomly expands and contracts.");
 
     if (creature_ptr->muta2 & MUT2_NAUSEA)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\88Ý\82Í\94ñ\8fí\82É\97\8e\82¿\92\85\82«\82ª\82È\82¢\81B", "You have a seriously upset stomach.");
+        si_ptr->info[si_ptr->line++] = _("あなたの胃は非常に落ち着きがない。", "You have a seriously upset stomach.");
 
     if (creature_ptr->muta2 & MUT2_CHAOS_GIFT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83J\83I\83X\82Ì\8eç\8cì\88«\96\82\82©\82ç\96J\94ü\82ð\82¤\82¯\82Æ\82é\81B", "Chaos deities give you gifts.");
+        si_ptr->info[si_ptr->line++] = _("あなたはカオスの守護悪魔から褒美をうけとる。", "Chaos deities give you gifts.");
 
     if (creature_ptr->muta2 & MUT2_WALK_SHAD)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82µ\82Î\82µ\82Î\91¼\82Ì\81u\89e\81v\82É\96À\82¢\8d\9e\82Þ\81B", "You occasionally stumble into other shadows.");
+        si_ptr->info[si_ptr->line++] = _("あなたはしばしば他の「影」に迷い込む。", "You occasionally stumble into other shadows.");
 
     if (creature_ptr->muta2 & MUT2_WARNING)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93G\82É\8aÖ\82·\82é\8cx\8d\90\82ð\8a´\82\82é\81B", "You receive warnings about your foes.");
+        si_ptr->info[si_ptr->line++] = _("あなたは敵に関する警告を感じる。", "You receive warnings about your foes.");
 
     if (creature_ptr->muta2 & MUT2_INVULN)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\9e\81X\95\89\82¯\92m\82ç\82¸\82È\8bC\95ª\82É\82È\82é\81B", "You occasionally feel invincible.");
+        si_ptr->info[si_ptr->line++] = _("あなたは時々負け知らずな気分になる。", "You occasionally feel invincible.");
 
     if (creature_ptr->muta2 & MUT2_SP_TO_HP)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\9e\81X\8c\8c\82ª\8bØ\93÷\82É\82Ç\82Á\82Æ\97¬\82ê\82é\81B", "Your blood sometimes rushes to your muscles.");
+        si_ptr->info[si_ptr->line++] = _("あなたは時々血が筋肉にどっと流れる。", "Your blood sometimes rushes to your muscles.");
 
     if (creature_ptr->muta2 & MUT2_HP_TO_SP)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e\9e\81X\93ª\82É\8c\8c\82ª\82Ç\82Á\82Æ\97¬\82ê\82é\81B", "Your blood sometimes rushes to your head.");
+        si_ptr->info[si_ptr->line++] = _("あなたは時々頭に血がどっと流れる。", "Your blood sometimes rushes to your head.");
 
     if (creature_ptr->muta2 & MUT2_DISARM)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82æ\82­\82Â\82Ü\82Ã\82¢\82Ä\95¨\82ð\97\8e\82Æ\82·\81B", "You occasionally stumble and drop things.");
+        si_ptr->info[si_ptr->line++] = _("あなたはよくつまづいて物を落とす。", "You occasionally stumble and drop things.");
 }
 
-/* todo FEAELESS \83t\83\89\83O\82à\8bL\8fq\82µ\82Ä\96â\91è\82È\82¢\82Æ\8ev\82í\82ê\82é */
+/* todo FEAELESS フラグも記述して問題ないと思われる */
 void set_mutation_info_3(player_type *creature_ptr, self_info_type *si_ptr)
 {
     if (creature_ptr->muta3 == 0)
         return;
 
     if (creature_ptr->muta3 & MUT3_HYPER_STR)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\92´\90l\93I\82É\8b­\82¢\81B(\98r\97Í+4)", "You are superhumanly strong (+4 STR).");
+        si_ptr->info[si_ptr->line++] = _("あなたは超人的に強い。(腕力+4)", "You are superhumanly strong (+4 STR).");
 
     if (creature_ptr->muta3 & MUT3_PUNY)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b\95\8eã\82¾\81B(\98r\97Í-4)", "You are puny (-4 STR).");
+        si_ptr->info[si_ptr->line++] = _("あなたは虚弱だ。(腕力-4)", "You are puny (-4 STR).");
 
     if (creature_ptr->muta3 & MUT3_HYPER_INT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\94]\82Í\90\91Ì\83R\83\93\83s\83\85\81[\83^\82¾\81B(\92m\94\\81\95\8c«\82³+4)", "Your brain is a living computer (+4 INT/WIS).");
+        si_ptr->info[si_ptr->line++] = _("あなたの脳は生体コンピュータだ。(知能&賢さ+4)", "Your brain is a living computer (+4 INT/WIS).");
 
     if (creature_ptr->muta3 & MUT3_MORONIC)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90¸\90_\94\96\8eã\82¾\81B(\92m\94\\81\95\8c«\82³-4)", "You are moronic (-4 INT/WIS).");
+        si_ptr->info[si_ptr->line++] = _("あなたは精神薄弱だ。(知能&賢さ-4)", "You are moronic (-4 INT/WIS).");
 
     if (creature_ptr->muta3 & MUT3_RESILIENT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\94ñ\8fí\82É\83^\83t\82¾\81B(\91Ï\8bv+4)", "You are very resilient (+4 CON).");
+        si_ptr->info[si_ptr->line++] = _("あなたは非常にタフだ。(耐久+4)", "You are very resilient (+4 CON).");
 
     if (creature_ptr->muta3 & MUT3_XTRA_FAT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8bÉ\92[\82É\91¾\82Á\82Ä\82¢\82é\81B(\91Ï\8bv+2,\83X\83s\81[\83h-2)", "You are extremely fat (+2 CON, -2 speed).");
+        si_ptr->info[si_ptr->line++] = _("あなたは極端に太っている。(耐久+2,スピード-2)", "You are extremely fat (+2 CON, -2 speed).");
 
     if (creature_ptr->muta3 & MUT3_ALBINO)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83A\83\8b\83r\83m\82¾\81B(\91Ï\8bv-4)", "You are an albino (-4 CON).");
+        si_ptr->info[si_ptr->line++] = _("あなたはアルビノだ。(耐久-4)", "You are an albino (-4 CON).");
 
     if (creature_ptr->muta3 & MUT3_FLESH_ROT)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\93÷\91Ì\82Í\95\85\94s\82µ\82Ä\82¢\82é\81B(\91Ï\8bv-2,\96£\97Í-1)", "Your flesh is rotting (-2 CON, -1 CHR).");
+        si_ptr->info[si_ptr->line++] = _("あなたの肉体は腐敗している。(耐久-2,魅力-1)", "Your flesh is rotting (-2 CON, -1 CHR).");
 
     if (creature_ptr->muta3 & MUT3_SILLY_VOI)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\90º\82Í\8aÔ\94²\82¯\82È\83L\81[\83L\81[\90º\82¾\81B(\96£\97Í-4)", "Your voice is a silly squeak (-4 CHR).");
+        si_ptr->info[si_ptr->line++] = _("あなたの声は間抜けなキーキー声だ。(魅力-4)", "Your voice is a silly squeak (-4 CHR).");
 
     if (creature_ptr->muta3 & MUT3_BLANK_FAC)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82Ì\82Á\82Ø\82ç\82Ú\82¤\82¾\81B(\96£\97Í-1)", "Your face is featureless (-1 CHR).");
+        si_ptr->info[si_ptr->line++] = _("あなたはのっぺらぼうだ。(魅力-1)", "Your face is featureless (-1 CHR).");
 
     if (creature_ptr->muta3 & MUT3_ILL_NORM)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8c\89e\82É\95¢\82í\82ê\82Ä\82¢\82é\81B", "Your appearance is masked with illusion.");
+        si_ptr->info[si_ptr->line++] = _("あなたは幻影に覆われている。", "Your appearance is masked with illusion.");
 
     if (creature_ptr->muta3 & MUT3_XTRA_EYES)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\97]\95ª\82É\93ñ\82Â\82Ì\96Ú\82ð\8e\9d\82Á\82Ä\82¢\82é\81B(\92T\8dõ+15)", "You have an extra pair of eyes (+15 search).");
+        si_ptr->info[si_ptr->line++] = _("あなたは余分に二つの目を持っている。(探索+15)", "You have an extra pair of eyes (+15 search).");
 
     if (creature_ptr->muta3 & MUT3_MAGIC_RES)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\96\82\96@\82Ö\82Ì\91Ï\90«\82ð\82à\82Á\82Ä\82¢\82é\81B", "You are resistant to magic.");
+        si_ptr->info[si_ptr->line++] = _("あなたは魔法への耐性をもっている。", "You are resistant to magic.");
 
     if (creature_ptr->muta3 & MUT3_XTRA_NOIS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\95Ï\82È\89¹\82ð\94­\82µ\82Ä\82¢\82é\81B(\89B\96§-3)", "You make a lot of strange noise (-3 stealth).");
+        si_ptr->info[si_ptr->line++] = _("あなたは変な音を発している。(隠密-3)", "You make a lot of strange noise (-3 stealth).");
 
     if (creature_ptr->muta3 & MUT3_INFRAVIS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91f\90°\82ç\82µ\82¢\90Ô\8aO\90ü\8e\8b\97Í\82ð\8e\9d\82Á\82Ä\82¢\82é\81B(+3)", "You have remarkable infravision (+3).");
+        si_ptr->info[si_ptr->line++] = _("あなたは素晴らしい赤外線視力を持っている。(+3)", "You have remarkable infravision (+3).");
 
     if (creature_ptr->muta3 & MUT3_XTRA_LEGS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\97]\95ª\82É\93ñ\96{\82Ì\91«\82ª\90\82¦\82Ä\82¢\82é\81B(\89Á\91¬+3)", "You have an extra pair of legs (+3 speed).");
+        si_ptr->info[si_ptr->line++] = _("あなたは余分に二本の足が生えている。(加速+3)", "You have an extra pair of legs (+3 speed).");
 
     if (creature_ptr->muta3 & MUT3_SHORT_LEG)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\91«\82Í\92Z\82¢\93Ë\8bN\82¾\81B(\89Á\91¬-3)", "Your legs are short stubs (-3 speed).");
+        si_ptr->info[si_ptr->line++] = _("あなたの足は短い突起だ。(加速-3)", "Your legs are short stubs (-3 speed).");
 
     if (creature_ptr->muta3 & MUT3_ELEC_TOUC)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\8c\8c\8aÇ\82É\82Í\93d\97¬\82ª\97¬\82ê\82Ä\82¢\82é\81B", "Electricity is running through your veins.");
+        si_ptr->info[si_ptr->line++] = _("あなたの血管には電流が流れている。", "Electricity is running through your veins.");
 
     if (creature_ptr->muta3 & MUT3_FIRE_BODY)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\91Ì\82Í\89\8a\82É\82Â\82Â\82Ü\82ê\82Ä\82¢\82é\81B", "Your body is enveloped in flames.");
+        si_ptr->info[si_ptr->line++] = _("あなたの体は炎につつまれている。", "Your body is enveloped in flames.");
 
     if (creature_ptr->muta3 & MUT3_WART_SKIN)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\94§\82Í\83C\83{\82É\94í\82í\82ê\82Ä\82¢\82é\81B(\96£\97Í-2, AC+5)", "Your skin is covered with warts (-2 CHR, +5 AC).");
+        si_ptr->info[si_ptr->line++] = _("あなたの肌はイボに被われている。(魅力-2, AC+5)", "Your skin is covered with warts (-2 CHR, +5 AC).");
 
     if (creature_ptr->muta3 & MUT3_SCALES)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\94§\82Í\97Ø\82É\82È\82Á\82Ä\82¢\82é\81B(\96£\97Í-1, AC+10)", "Your skin has turned into scales (-1 CHR, +10 AC).");
+        si_ptr->info[si_ptr->line++] = _("あなたの肌は鱗になっている。(魅力-1, AC+10)", "Your skin has turned into scales (-1 CHR, +10 AC).");
 
     if (creature_ptr->muta3 & MUT3_IRON_SKIN)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\94§\82Í\93S\82Å\82Å\82«\82Ä\82¢\82é\81B(\8aí\97p-1, AC+25)", "Your skin is made of steel (-1 DEX, +25 AC).");
+        si_ptr->info[si_ptr->line++] = _("あなたの肌は鉄でできている。(器用-1, AC+25)", "Your skin is made of steel (-1 DEX, +25 AC).");
 
     if (creature_ptr->muta3 & MUT3_WINGS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89H\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You have wings.");
+        si_ptr->info[si_ptr->line++] = _("あなたは羽を持っている。", "You have wings.");
 
     if (creature_ptr->muta3 & MUT3_FEARLESS) {
         /* Unnecessary */
@@ -299,20 +299,20 @@ void set_mutation_info_3(player_type *creature_ptr, self_info_type *si_ptr)
     }
 
     if (creature_ptr->muta3 & MUT3_LIMBER)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\91Ì\82Í\94ñ\8fí\82É\82µ\82È\82â\82©\82¾\81B(\8aí\97p+3)", "Your body is very limber (+3 DEX).");
+        si_ptr->info[si_ptr->line++] = _("あなたの体は非常にしなやかだ。(器用+3)", "Your body is very limber (+3 DEX).");
 
     if (creature_ptr->muta3 & MUT3_ARTHRITIS)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\82¢\82Â\82à\8aÖ\90ß\82É\92É\82Ý\82ð\8a´\82\82Ä\82¢\82é\81B(\8aí\97p-3)", "Your joints ache constantly (-3 DEX).");
+        si_ptr->info[si_ptr->line++] = _("あなたはいつも関節に痛みを感じている。(器用-3)", "Your joints ache constantly (-3 DEX).");
 
     if (creature_ptr->muta3 & MUT3_VULN_ELEM)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8c³\91f\82Ì\8dU\8c\82\82É\8eã\82¢\81B", "You are susceptible to damage from the elements.");
+        si_ptr->info[si_ptr->line++] = _("あなたは元素の攻撃に弱い。", "You are susceptible to damage from the elements.");
 
     if (creature_ptr->muta3 & MUT3_MOTION)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\93®\8dì\82Í\90³\8am\82Å\97Í\8b­\82¢\81B(\89B\96§+1)", "Your movements are precise and forceful (+1 STL).");
+        si_ptr->info[si_ptr->line++] = _("あなたの動作は正確で力強い。(隠密+1)", "Your movements are precise and forceful (+1 STL).");
 
     if (has_good_luck(creature_ptr))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\94\92\82¢\83I\81[\83\89\82É\82Â\82Â\82Ü\82ê\82Ä\82¢\82é\81B", "There is a white aura surrounding you.");
+        si_ptr->info[si_ptr->line++] = _("あなたは白いオーラにつつまれている。", "There is a white aura surrounding you.");
 
     if (creature_ptr->muta3 & MUT3_BAD_LUCK)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8d\95\82¢\83I\81[\83\89\82É\82Â\82Â\82Ü\82ê\82Ä\82¢\82é\81B", "There is a black aura surrounding you.");
+        si_ptr->info[si_ptr->line++] = _("あなたは黒いオーラにつつまれている。", "There is a black aura surrounding you.");
 }
index fc87d54..a087bc2 100644 (file)
@@ -1,4 +1,4 @@
-#include "player-info/race-ability-info.h"
+#include "player-info/race-ability-info.h"
 #include "player-info/self-info-util.h"
 
 void set_race_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
@@ -7,17 +7,17 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
     case RACE_NIBELUNG:
     case RACE_DWARF:
         if (creature_ptr->lev > 4)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Íã©\82Æ\83h\83A\82Æ\8aK\92i\82ð\8a´\92m\82Å\82«\82é\81B(5 MP)", "You can find traps, doors and stairs (cost 5).");
+            si_ptr->info[si_ptr->line++] = _("あなたは罠とドアと階段を感知できる。(5 MP)", "You can find traps, doors and stairs (cost 5).");
 
         break;
     case RACE_HOBBIT:
         if (creature_ptr->lev > 14)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90H\97¿\82ð\90\90¬\82Å\82«\82é\81B(10 MP)", "You can produce food (cost 10).");
+            si_ptr->info[si_ptr->line++] = _("あなたは食料を生成できる。(10 MP)", "You can produce food (cost 10).");
 
         break;
     case RACE_GNOME:
         if (creature_ptr->lev > 4) {
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í\94Í\88Í %d \88È\93à\82É\83e\83\8c\83|\81[\83g\82Å\82«\82é\81B(%d MP)", "You can teleport, range %d (cost %d)."), (1 + creature_ptr->lev),
+            sprintf(si_ptr->plev_buf, _("あなたは範囲 %d 以内にテレポートできる。(%d MP)", "You can teleport, range %d (cost %d)."), (1 + creature_ptr->lev),
                 (5 + (creature_ptr->lev / 5)));
             si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         }
@@ -25,45 +25,45 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
         break;
     case RACE_HALF_ORC:
         if (creature_ptr->lev > 2)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b°\95|\82ð\8f\9c\8b\8e\82Å\82«\82é\81B(5 MP)", "You can remove fear (cost 5).");
+            si_ptr->info[si_ptr->line++] = _("あなたは恐怖を除去できる。(5 MP)", "You can remove fear (cost 5).");
 
         break;
     case RACE_HALF_TROLL:
         if (creature_ptr->lev > 9)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b\96\\89»\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(12 MP) ", "You can enter a berserk fury (cost 12).");
+            si_ptr->info[si_ptr->line++] = _("あなたは狂暴化することができる。(12 MP) ", "You can enter a berserk fury (cost 12).");
 
         break;
     case RACE_AMBERITE:
         if (creature_ptr->lev > 29)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83V\83\83\83h\83E\83V\83t\83g\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(50 MP)", "You can Shift Shadows (cost 50).");
+            si_ptr->info[si_ptr->line++] = _("あなたはシャドウシフトすることができる。(50 MP)", "You can Shift Shadows (cost 50).");
 
         if (creature_ptr->lev > 39)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\81u\83p\83^\81[\83\93\81v\82ð\90S\82É\95`\82¢\82Ä\95à\82­\82±\82Æ\82ª\82Å\82«\82é\81B(75 MP)", "You can mentally Walk the Pattern (cost 75).");
+            si_ptr->info[si_ptr->line++] = _("あなたは「パターン」を心に描いて歩くことができる。(75 MP)", "You can mentally Walk the Pattern (cost 75).");
 
         break;
     case RACE_BARBARIAN:
         if (creature_ptr->lev > 7)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b\96\\89»\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(10 MP) ", "You can enter a berserk fury (cost 10).");
+            si_ptr->info[si_ptr->line++] = _("あなたは狂暴化することができる。(10 MP) ", "You can enter a berserk fury (cost 10).");
 
         break;
     case RACE_HALF_OGRE:
         if (creature_ptr->lev > 24)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\94\9a\94­\82Ì\83\8b\81[\83\93\82ð\8ed\8a|\82¯\82é\82±\82Æ\82ª\82Å\82«\82é\81B(35 MP)", "You can set an Explosive Rune (cost 35).");
+            si_ptr->info[si_ptr->line++] = _("あなたは爆発のルーンを仕掛けることができる。(35 MP)", "You can set an Explosive Rune (cost 35).");
 
         break;
     case RACE_HALF_GIANT:
         if (creature_ptr->lev > 19)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\90Î\82Ì\95Ç\82ð\89ó\82·\82±\82Æ\82ª\82Å\82«\82é\81B(10 MP)", "You can break stone walls (cost 10).");
+            si_ptr->info[si_ptr->line++] = _("あなたは石の壁を壊すことができる。(10 MP)", "You can break stone walls (cost 10).");
 
         break;
     case RACE_HALF_TITAN:
         if (creature_ptr->lev > 34)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83\82\83\93\83X\83^\81[\82ð\83X\83L\83\83\83\93\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(20 MP)", "You can probe monsters (cost 20).");
+            si_ptr->info[si_ptr->line++] = _("あなたはモンスターをスキャンすることができる。(20 MP)", "You can probe monsters (cost 20).");
 
         break;
     case RACE_CYCLOPS:
         if (creature_ptr->lev > 19) {
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\8aâ\90Î\82ð\93\8a\82°\82é\82±\82Æ\82ª\82Å\82«\82é\81B(15 MP)", "You can throw a boulder, dam. %d (cost 15)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの岩石を投げることができる。(15 MP)", "You can throw a boulder, dam. %d (cost 15)."),
                 3 * creature_ptr->lev);
             si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         }
@@ -71,19 +71,19 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
         break;
     case RACE_YEEK:
         if (creature_ptr->lev > 14)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b°\95|\82ð\8cÄ\82Ñ\8bN\82±\82·\8b©\82Ñ\90º\82ð\94­\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(15 MP)", "You can make a terrifying scream (cost 15).");
+            si_ptr->info[si_ptr->line++] = _("あなたは恐怖を呼び起こす叫び声を発することができる。(15 MP)", "You can make a terrifying scream (cost 15).");
 
         break;
     case RACE_KLACKON:
         if (creature_ptr->lev > 8) {
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\8e_\82ð\90\81\82«\82©\82¯\82é\82±\82Æ\82ª\82Å\82«\82é\81B(9 MP)", "You can spit acid, dam. %d (cost 9)."), creature_ptr->lev);
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの酸を吹きかけることができる。(9 MP)", "You can spit acid, dam. %d (cost 9)."), creature_ptr->lev);
             si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         }
 
         break;
     case RACE_KOBOLD:
         if (creature_ptr->lev > 11) {
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\93Å\96î\82ð\93\8a\82°\82é\82±\82Æ\82ª\82Å\82«\82é\81B(8 MP)", "You can throw a dart of poison, dam. %d (cost 8)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの毒矢を投げることができる。(8 MP)", "You can throw a dart of poison, dam. %d (cost 8)."),
                 creature_ptr->lev);
             si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         }
@@ -91,34 +91,34 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
         break;
     case RACE_DARK_ELF:
         if (creature_ptr->lev > 1) {
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83}\83W\83b\83N\81E\83~\83T\83C\83\8b\82Ì\8eô\95\82ð\8eg\82¦\82é\81B(2 MP)", "You can cast a Magic Missile, dam %d (cost 2)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのマジック・ミサイルの呪文を使える。(2 MP)", "You can cast a Magic Missile, dam %d (cost 2)."),
                 (3 + ((creature_ptr->lev - 1) / 5)));
             si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         }
 
         break;
     case RACE_DRACONIAN:
-        sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83u\83\8c\83X\82ð\93f\82­\82±\82Æ\82ª\82Å\82«\82é\81B(%d MP)", "You can breathe, dam. %d (cost %d)."), 2 * creature_ptr->lev,
+        sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのブレスを吐くことができる。(%d MP)", "You can breathe, dam. %d (cost %d)."), 2 * creature_ptr->lev,
             creature_ptr->lev);
         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         break;
     case RACE_MIND_FLAYER:
         if (creature_ptr->lev > 14)
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\90¸\90_\8dU\8c\82\82ð\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(12 MP)", "You can mind blast your enemies, dam %d (cost 12)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの精神攻撃をすることができる。(12 MP)", "You can mind blast your enemies, dam %d (cost 12)."),
                 creature_ptr->lev);
 
         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         break;
     case RACE_IMP:
         if (creature_ptr->lev > 29) {
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83t\83@\83C\83A\81E\83{\81[\83\8b\82Ì\8eô\95\82ð\8eg\82¦\82é\81B(15 MP)", "You can cast a Fire Ball, dam. %d (cost 15)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのファイア・ボールの呪文を使える。(15 MP)", "You can cast a Fire Ball, dam. %d (cost 15)."),
                 creature_ptr->lev);
             si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
             break;
         }
 
         if (creature_ptr->lev > 8) {
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83t\83@\83C\83A\81E\83{\83\8b\83g\82Ì\8eô\95\82ð\8eg\82¦\82é\81B(15 MP)", "You can cast a Fire Bolt, dam. %d (cost 15)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのファイア・ボルトの呪文を使える。(15 MP)", "You can cast a Fire Bolt, dam. %d (cost 15)."),
                 creature_ptr->lev);
             si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         }
@@ -127,61 +127,61 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *si_ptr)
     case RACE_GOLEM:
         if (creature_ptr->lev > 19)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í d20+30 \83^\81[\83\93\82Ì\8aÔ\94§\82ð\90Î\82É\95Ï\89»\82³\82¹\82ç\82ê\82é\81B(15 MP)", "You can turn your skin to stone, dur d20+30 (cost 15).");
+                = _("あなたは d20+30 ターンの間肌を石に変化させられる。(15 MP)", "You can turn your skin to stone, dur d20+30 (cost 15).");
 
         break;
     case RACE_ZOMBIE:
     case RACE_SKELETON:
         if (creature_ptr->lev > 29)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e¸\82Á\82½\8co\8c±\92l\82ð\89ñ\95\9c\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B(30 MP)", "You can restore lost experience (cost 30).");
+            si_ptr->info[si_ptr->line++] = _("あなたは失った経験値を回復することができる。(30 MP)", "You can restore lost experience (cost 30).");
 
         break;
     case RACE_VAMPIRE:
         if (creature_ptr->lev <= 1)
             break;
 
-        sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í\93G\82©\82ç %d-%d HP \82Ì\90\96½\97Í\82ð\8bz\8eû\82Å\82«\82é\81B(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
+        sprintf(si_ptr->plev_buf, _("あなたは敵から %d-%d HP の生命力を吸収できる。(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
             creature_ptr->lev + MAX(1, creature_ptr->lev / 10), creature_ptr->lev + creature_ptr->lev * MAX(1, creature_ptr->lev / 10),
             1 + (creature_ptr->lev / 3));
         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         break;
     case RACE_SPECTRE:
         if (creature_ptr->lev > 3)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8b\83\82«\8b©\82ñ\82Å\93G\82ð\8b°\95|\82³\82¹\82é\82±\82Æ\82ª\82Å\82«\82é\81B(3 MP)", "You can wail to terrify your enemies (cost 3).");
+            si_ptr->info[si_ptr->line++] = _("あなたは泣き叫んで敵を恐怖させることができる。(3 MP)", "You can wail to terrify your enemies (cost 3).");
 
         break;
     case RACE_SPRITE:
         if (creature_ptr->lev > 11)
             si_ptr->info[si_ptr->line++]
-                = _("\82 \82È\82½\82Í\93G\82ð\96°\82ç\82¹\82é\96\82\96@\82Ì\95²\82ð\93\8a\82°\82é\82±\82Æ\82ª\82Å\82«\82é\81B(12 MP)", "You can throw magical dust which induces sleep (cost 12).");
+                = _("あなたは敵を眠らせる魔法の粉を投げることができる。(12 MP)", "You can throw magical dust which induces sleep (cost 12).");
 
         break;
     case RACE_BALROG:
-        sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\92n\8d\96\82©\89Î\89\8a\82Ì\83u\83\8c\83X\82ð\93f\82­\82±\82Æ\82ª\82Å\82«\82é\81B(%d MP)", "You can breathe nether, dam. %d (cost %d)."),
+        sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", "You can breathe nether, dam. %d (cost %d)."),
             3 * creature_ptr->lev, 10 + creature_ptr->lev / 3);
         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
         break;
     case RACE_KUTAR:
         if (creature_ptr->lev > 19)
-            si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í d20+30 \83^\81[\83\93\82Ì\8aÔ\89¡\82É\90L\82Ñ\82é\82±\82Æ\82ª\82Å\82«\82é\81B(15 MP)", "You can expand horizontally, dur d20+30 (cost 15).");
+            si_ptr->info[si_ptr->line++] = _("あなたは d20+30 ターンの間横に伸びることができる。(15 MP)", "You can expand horizontally, dur d20+30 (cost 15).");
 
         break;
     case RACE_ANDROID:
         if (creature_ptr->lev < 10)
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83\8c\83C\83K\83\93\82ð\8c\82\82Â\82±\82Æ\82ª\82Å\82«\82é\81B(7 MP)", "You can fire a ray gun with damage %d (cost 7)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのレイガンを撃つことができる。(7 MP)", "You can fire a ray gun with damage %d (cost 7)."),
                 (creature_ptr->lev + 1) / 2);
         else if (creature_ptr->lev < 25)
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83u\83\89\83X\83^\81[\82ð\8c\82\82Â\82±\82Æ\82ª\82Å\82«\82é\81B(13 MP)", "You can fire a blaster with damage %d (cost 13)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのブラスターを撃つことができる。(13 MP)", "You can fire a blaster with damage %d (cost 13)."),
                 creature_ptr->lev);
         else if (creature_ptr->lev < 35)
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83o\83Y\81[\83J\82ð\8c\82\82Â\82±\82Æ\82ª\82Å\82«\82é\81B(26 MP)", "You can fire a bazooka with damage %d (cost 26)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのバズーカを撃つことができる。(26 MP)", "You can fire a bazooka with damage %d (cost 26)."),
                 creature_ptr->lev * 2);
         else if (creature_ptr->lev < 45)
             sprintf(si_ptr->plev_buf,
-                _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83r\81[\83\80\83L\83\83\83m\83\93\82ð\8c\82\82Â\82±\82Æ\82ª\82Å\82«\82é\81B(40 MP)", "You can fire a beam cannon with damage %d (cost 40)."),
+                _("あなたは %d ダメージのビームキャノンを撃つことができる。(40 MP)", "You can fire a beam cannon with damage %d (cost 40)."),
                 creature_ptr->lev * 2);
         else
-            sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\83\8d\83P\83b\83g\82ð\8c\82\82Â\82±\82Æ\82ª\82Å\82«\82é\81B(60 MP)", "You can fire a rocket with damage %d (cost 60)."),
+            sprintf(si_ptr->plev_buf, _("あなたは %d ダメージのロケットを撃つことができる。(60 MP)", "You can fire a rocket with damage %d (cost 60)."),
                 creature_ptr->lev * 5);
 
         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
index 2b5abf7..211b5e6 100644 (file)
@@ -1,4 +1,4 @@
-#include "player-info/resistance-info.h"
+#include "player-info/resistance-info.h"
 #include "player-info/self-info-util.h"
 #include "player/player-race.h"
 #include "status/element-resistance.h"
@@ -7,86 +7,86 @@
 void set_element_resistance_info(player_type* creature_ptr, self_info_type* si_ptr)
 {
     if (is_immune_acid(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e_\82É\91Î\82·\82é\8a®\91S\82È\82é\96Æ\89u\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are completely immune to acid.");
+        si_ptr->info[si_ptr->line++] = _("あなたは酸に対する完全なる免疫を持っている。", "You are completely immune to acid.");
     } else if (creature_ptr->resist_acid && is_oppose_acid(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e_\82Ö\82Ì\8b­\97Í\82È\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You resist acid exceptionally well.");
+        si_ptr->info[si_ptr->line++] = _("あなたは酸への強力な耐性を持っている。", "You resist acid exceptionally well.");
     } else if (creature_ptr->resist_acid || is_oppose_acid(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8e_\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to acid.");
+        si_ptr->info[si_ptr->line++] = _("あなたは酸への耐性を持っている。", "You are resistant to acid.");
     }
 
     if (is_immune_elec(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93d\8c\82\82É\91Î\82·\82é\8a®\91S\82È\82é\96Æ\89u\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are completely immune to lightning.");
+        si_ptr->info[si_ptr->line++] = _("あなたは電撃に対する完全なる免疫を持っている。", "You are completely immune to lightning.");
     } else if (creature_ptr->resist_elec && is_oppose_elec(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93d\8c\82\82Ö\82Ì\8b­\97Í\82È\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You resist lightning exceptionally well.");
+        si_ptr->info[si_ptr->line++] = _("あなたは電撃への強力な耐性を持っている。", "You resist lightning exceptionally well.");
     } else if (creature_ptr->resist_elec || is_oppose_elec(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93d\8c\82\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to lightning.");
+        si_ptr->info[si_ptr->line++] = _("あなたは電撃への耐性を持っている。", "You are resistant to lightning.");
     }
 
     if (is_specific_player_race(creature_ptr, RACE_ANDROID) && !is_immune_elec(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93d\8c\82\82É\8eã\82¢\81B", "You are susceptible to damage from lightning.");
+        si_ptr->info[si_ptr->line++] = _("あなたは電撃に弱い。", "You are susceptible to damage from lightning.");
     }
 
     if (is_immune_fire(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89Î\82É\91Î\82·\82é\8a®\91S\82È\82é\96Æ\89u\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are completely immune to fire.");
+        si_ptr->info[si_ptr->line++] = _("あなたは火に対する完全なる免疫を持っている。", "You are completely immune to fire.");
     } else if (creature_ptr->resist_fire && is_oppose_fire(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89Î\82Ö\82Ì\8b­\97Í\82È\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You resist fire exceptionally well.");
+        si_ptr->info[si_ptr->line++] = _("あなたは火への強力な耐性を持っている。", "You resist fire exceptionally well.");
     } else if (creature_ptr->resist_fire || is_oppose_fire(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89Î\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to fire.");
+        si_ptr->info[si_ptr->line++] = _("あなたは火への耐性を持っている。", "You are resistant to fire.");
     }
 
     if (is_specific_player_race(creature_ptr, RACE_ENT) && !is_immune_fire(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89Î\82É\8eã\82¢\81B", "You are susceptible to damage from fire.");
+        si_ptr->info[si_ptr->line++] = _("あなたは火に弱い。", "You are susceptible to damage from fire.");
     }
 
     if (is_immune_cold(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\97â\8bC\82É\91Î\82·\82é\8a®\91S\82È\82é\96Æ\89u\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are completely immune to cold.");
+        si_ptr->info[si_ptr->line++] = _("あなたは冷気に対する完全なる免疫を持っている。", "You are completely immune to cold.");
     } else if (creature_ptr->resist_cold && is_oppose_cold(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\97â\8bC\82Ö\82Ì\8b­\97Í\82È\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You resist cold exceptionally well.");
+        si_ptr->info[si_ptr->line++] = _("あなたは冷気への強力な耐性を持っている。", "You resist cold exceptionally well.");
     } else if (creature_ptr->resist_cold || is_oppose_cold(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\97â\8bC\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to cold.");
+        si_ptr->info[si_ptr->line++] = _("あなたは冷気への耐性を持っている。", "You are resistant to cold.");
     }
 
     if (creature_ptr->resist_pois && is_oppose_pois(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93Å\82Ö\82Ì\8b­\97Í\82È\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You resist poison exceptionally well.");
+        si_ptr->info[si_ptr->line++] = _("あなたは毒への強力な耐性を持っている。", "You resist poison exceptionally well.");
     } else if (creature_ptr->resist_pois || is_oppose_pois(creature_ptr)) {
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\93Å\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to poison.");
+        si_ptr->info[si_ptr->line++] = _("あなたは毒への耐性を持っている。", "You are resistant to poison.");
     }
 }
 
 void set_high_resistance_info(player_type *creature_ptr, self_info_type *si_ptr)
 {
     if (creature_ptr->resist_lite)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91M\8cõ\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to bright light.");
+        si_ptr->info[si_ptr->line++] = _("あなたは閃光への耐性を持っている。", "You are resistant to bright light.");
 
     if (is_specific_player_race(creature_ptr, RACE_VAMPIRE) || is_specific_player_race(creature_ptr, RACE_S_FAIRY)
         || (creature_ptr->mimic_form == MIMIC_VAMPIRE))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\91M\8cõ\82É\8eã\82¢\81B", "You are susceptible to damage from bright light.");
+        si_ptr->info[si_ptr->line++] = _("あなたは閃光に弱い。", "You are susceptible to damage from bright light.");
 
     if (is_specific_player_race(creature_ptr, RACE_VAMPIRE) || (creature_ptr->mimic_form == MIMIC_VAMPIRE) || creature_ptr->wraith_form)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\88Ã\8d\95\82É\91Î\82·\82é\8a®\91S\82È\82é\96Æ\89u\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are completely immune to darkness.");
+        si_ptr->info[si_ptr->line++] = _("あなたは暗黒に対する完全なる免疫を持っている。", "You are completely immune to darkness.");
     else if (creature_ptr->resist_dark)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\88Ã\8d\95\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to darkness.");
+        si_ptr->info[si_ptr->line++] = _("あなたは暗黒への耐性を持っている。", "You are resistant to darkness.");
     
     if (creature_ptr->resist_conf)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\8d¬\97\90\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to confusion.");
+        si_ptr->info[si_ptr->line++] = _("あなたは混乱への耐性を持っている。", "You are resistant to confusion.");
     
     if (creature_ptr->resist_sound)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\89¹\94g\82Ì\8fÕ\8c\82\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to sonic attacks.");
+        si_ptr->info[si_ptr->line++] = _("あなたは音波の衝撃への耐性を持っている。", "You are resistant to sonic attacks.");
     
     if (creature_ptr->resist_disen)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\97ò\89»\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to disenchantment.");
+        si_ptr->info[si_ptr->line++] = _("あなたは劣化への耐性を持っている。", "You are resistant to disenchantment.");
     
     if (creature_ptr->resist_chaos)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\83J\83I\83X\82Ì\97Í\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to chaos.");
+        si_ptr->info[si_ptr->line++] = _("あなたはカオスの力への耐性を持っている。", "You are resistant to chaos.");
     
     if (creature_ptr->resist_shard)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\94j\95Ð\82Ì\8dU\8c\82\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to blasts of shards.");
+        si_ptr->info[si_ptr->line++] = _("あなたは破片の攻撃への耐性を持っている。", "You are resistant to blasts of shards.");
     
     if (creature_ptr->resist_nexus)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\88ö\89Ê\8d¬\97\90\82Ì\8dU\8c\82\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to nexus attacks.");
+        si_ptr->info[si_ptr->line++] = _("あなたは因果混乱の攻撃への耐性を持っている。", "You are resistant to nexus attacks.");
 
     if (is_specific_player_race(creature_ptr, RACE_SPECTRE))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\92n\8d\96\82Ì\97Í\82ð\8bz\8eû\82Å\82«\82é\81B", "You can drain nether forces.");
+        si_ptr->info[si_ptr->line++] = _("あなたは地獄の力を吸収できる。", "You can drain nether forces.");
     else if (creature_ptr->resist_neth)
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Í\92n\8d\96\82Ì\97Í\82Ö\82Ì\91Ï\90«\82ð\8e\9d\82Á\82Ä\82¢\82é\81B", "You are resistant to nether forces.");
+        si_ptr->info[si_ptr->line++] = _("あなたは地獄の力への耐性を持っている。", "You are resistant to nether forces.");
 }
index f10644e..15b3c21 100644 (file)
@@ -1,4 +1,4 @@
-#include "player-info/weapon-effect-info.h"
+#include "player-info/weapon-effect-info.h"
 #include "inventory/inventory-slot-types.h"
 #include "object-enchant/tr-types.h"
 #include "player-info/self-info-util.h"
@@ -7,85 +7,85 @@
 static void set_weapon_bless_info(self_info_type *si_ptr)
 {
     if (has_flag(si_ptr->flags, TR_BLESSED))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\90_\82Ì\8fj\95\9f\82ð\8eó\82¯\82Ä\82¢\82é\81B", "Your weapon has been blessed by the gods.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は神の祝福を受けている。", "Your weapon has been blessed by the gods.");
 
     if (has_flag(si_ptr->flags, TR_CHAOTIC))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83\8d\83O\83\8b\83X\82Ì\92¥\82Ì\91®\90«\82ð\82à\82Â\81B", "Your weapon is branded with the Sign of Logrus.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はログルスの徴の属性をもつ。", "Your weapon is branded with the Sign of Logrus.");
 
     if (has_flag(si_ptr->flags, TR_IMPACT))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\91Å\8c\82\82Å\92n\90k\82ð\94­\90\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B", "The impact of your weapon can cause earthquakes.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は打撃で地震を発生することができる。", "The impact of your weapon can cause earthquakes.");
 
     if (has_flag(si_ptr->flags, TR_VORPAL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\94ñ\8fí\82É\89s\82¢\81B", "Your weapon is very sharp.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は非常に鋭い。", "Your weapon is very sharp.");
 
     if (has_flag(si_ptr->flags, TR_VAMPIRIC))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82©\82ç\90\96½\97Í\82ð\8bz\8eû\82·\82é\81B", "Your weapon drains life from your foes.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は敵から生命力を吸収する。", "Your weapon drains life from your foes.");
 }
 
 static void set_brand_attack_info(self_info_type *si_ptr)
 {
     if (has_flag(si_ptr->flags, TR_BRAND_ACID))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\97n\82©\82·\81B", "Your weapon melts your foes.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を溶かす。", "Your weapon melts your foes.");
 
     if (has_flag(si_ptr->flags, TR_BRAND_ELEC))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\8a´\93d\82³\82¹\82é\81B", "Your weapon shocks your foes.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を感電させる。", "Your weapon shocks your foes.");
 
     if (has_flag(si_ptr->flags, TR_BRAND_FIRE))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\94R\82â\82·\81B", "Your weapon burns your foes.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を燃やす。", "Your weapon burns your foes.");
 
     if (has_flag(si_ptr->flags, TR_BRAND_COLD))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\93\80\82ç\82¹\82é\81B", "Your weapon freezes your foes.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を凍らせる。", "Your weapon freezes your foes.");
 
     if (has_flag(si_ptr->flags, TR_BRAND_POIS))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93G\82ð\93Å\82Å\90N\82·\81B", "Your weapon poisons your foes.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は敵を毒で侵す。", "Your weapon poisons your foes.");
 }
 
 static void set_slay_info(self_info_type *si_ptr)
 {
     if (has_flag(si_ptr->flags, TR_KILL_ANIMAL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93®\95¨\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of animals.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は動物の天敵である。", "Your weapon is a great bane of animals.");
     else if (has_flag(si_ptr->flags, TR_SLAY_ANIMAL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93®\95¨\82É\91Î\82µ\82Ä\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at animals with extra force.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は動物に対して強い力を発揮する。", "Your weapon strikes at animals with extra force.");
 
     if (has_flag(si_ptr->flags, TR_KILL_EVIL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8e×\88«\82È\82é\91\8dÝ\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of evil.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は邪悪なる存在の天敵である。", "Your weapon is a great bane of evil.");
     else if (has_flag(si_ptr->flags, TR_SLAY_EVIL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8e×\88«\82È\82é\91\8dÝ\82É\91Î\82µ\82Ä\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at evil with extra force.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は邪悪なる存在に対して強い力を発揮する。", "Your weapon strikes at evil with extra force.");
 
     if (has_flag(si_ptr->flags, TR_KILL_HUMAN))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\90l\8aÔ\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of humans.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は人間の天敵である。", "Your weapon is a great bane of humans.");
     else if (has_flag(si_ptr->flags, TR_SLAY_HUMAN))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\90l\8aÔ\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against humans.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は人間に対して特に強い力を発揮する。", "Your weapon is especially deadly against humans.");
 
     if (has_flag(si_ptr->flags, TR_KILL_UNDEAD))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83A\83\93\83f\83b\83h\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of undead.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はアンデッドの天敵である。", "Your weapon is a great bane of undead.");
     else if (has_flag(si_ptr->flags, TR_SLAY_UNDEAD))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83A\83\93\83f\83b\83h\82É\91Î\82µ\82Ä\90_\90¹\82È\82é\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at undead with holy wrath.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はアンデッドに対して神聖なる力を発揮する。", "Your weapon strikes at undead with holy wrath.");
 
     if (has_flag(si_ptr->flags, TR_KILL_DEMON))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83f\81[\83\82\83\93\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of demons.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はデーモンの天敵である。", "Your weapon is a great bane of demons.");
     else if (has_flag(si_ptr->flags, TR_SLAY_DEMON))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83f\81[\83\82\83\93\82É\91Î\82µ\82Ä\90_\90¹\82È\82é\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon strikes at demons with holy wrath.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はデーモンに対して神聖なる力を発揮する。", "Your weapon strikes at demons with holy wrath.");
 
     if (has_flag(si_ptr->flags, TR_KILL_ORC))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83I\81[\83N\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of orcs.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はオークの天敵である。", "Your weapon is a great bane of orcs.");
     else if (has_flag(si_ptr->flags, TR_SLAY_ORC))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83I\81[\83N\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against orcs.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はオークに対して特に強い力を発揮する。", "Your weapon is especially deadly against orcs.");
 
     if (has_flag(si_ptr->flags, TR_KILL_TROLL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83g\83\8d\83\8b\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of trolls.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はトロルの天敵である。", "Your weapon is a great bane of trolls.");
     else if (has_flag(si_ptr->flags, TR_SLAY_TROLL))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83g\83\8d\83\8b\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against trolls.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はトロルに対して特に強い力を発揮する。", "Your weapon is especially deadly against trolls.");
 
     if (has_flag(si_ptr->flags, TR_KILL_GIANT))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8b\90\90l\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of giants.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は巨人の天敵である。", "Your weapon is a great bane of giants.");
     else if (has_flag(si_ptr->flags, TR_SLAY_GIANT))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\8b\90\90l\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against giants.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は巨人に対して特に強い力を発揮する。", "Your weapon is especially deadly against giants.");
 
     if (has_flag(si_ptr->flags, TR_KILL_DRAGON))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83h\83\89\83S\83\93\82Ì\93V\93G\82Å\82 \82é\81B", "Your weapon is a great bane of dragons.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はドラゴンの天敵である。", "Your weapon is a great bane of dragons.");
     else if (has_flag(si_ptr->flags, TR_SLAY_DRAGON))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\83h\83\89\83S\83\93\82É\91Î\82µ\82Ä\93Á\82É\8b­\82¢\97Í\82ð\94­\8aö\82·\82é\81B", "Your weapon is especially deadly against dragons.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はドラゴンに対して特に強い力を発揮する。", "Your weapon is especially deadly against dragons.");
 }
 
 void set_weapon_effect_info(player_type *creature_ptr, self_info_type *si_ptr)
@@ -98,8 +98,8 @@ void set_weapon_effect_info(player_type *creature_ptr, self_info_type *si_ptr)
     set_brand_attack_info(si_ptr);
     set_slay_info(si_ptr);
     if (has_flag(si_ptr->flags, TR_FORCE_WEAPON))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82ÍMP\82ð\8eg\82Á\82Ä\8dU\8c\82\82·\82é\81B", "Your weapon causes greate damages using your MP.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器はMPを使って攻撃する。", "Your weapon causes greate damages using your MP.");
 
     if (has_flag(si_ptr->flags, TR_THROW))
-        si_ptr->info[si_ptr->line++] = _("\82 \82È\82½\82Ì\95\90\8aí\82Í\93\8a\82°\82â\82·\82¢\81B", "Your weapon can be thrown well.");
+        si_ptr->info[si_ptr->line++] = _("あなたの武器は投げやすい。", "Your weapon can be thrown well.");
 }
index b1c3b7e..4074512 100644 (file)
 #include "player/player-class.h"
 #include "player/player-personalities-types.h"
 #include "player/player-race-types.h"
-#include "player/race-info-table.h"
-#include "player/special-defense-types.h"
 #include "player/player-status-flags.h"
 #include "player/player-status-resist.h"
+#include "player/race-info-table.h"
+#include "player/special-defense-types.h"
 #include "racial/racial-android.h"
 #include "save/save.h"
 #include "status/base-status.h"
  * @param 酸を浴びたキャラクタへの参照ポインタ
  * @return 装備による軽減があったならTRUEを返す
  * @details
+ * 免疫があったらそもそもこの関数は実行されない (確実に錆びない).
  * Note that the "base armor" of an object never changes.
  * If any armor is damaged (or resists), the player takes less damage.
  */
 static bool acid_minus_ac(player_type *creature_ptr)
 {
     object_type *o_ptr = NULL;
-    BIT_FLAGS flgs[TR_FLAG_SIZE];
-    GAME_TEXT o_name[MAX_NLEN];
-
-    /* Pick a (possibly empty) creature_ptr->inventory_list slot */
     switch (randint1(7)) {
     case 1:
         o_ptr = &creature_ptr->inventory_list[INVEN_RARM];
@@ -101,37 +98,28 @@ static bool acid_minus_ac(player_type *creature_ptr)
         break;
     }
 
-    if (!o_ptr->k_idx)
-        return FALSE;
-    if (!object_is_armour(creature_ptr, o_ptr))
+    if ((o_ptr == NULL) || (o_ptr->k_idx == 0) || !object_is_armour(creature_ptr, o_ptr))
         return FALSE;
 
-    describe_flavor(creature_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
+    GAME_TEXT o_name[MAX_NLEN];
+    describe_flavor(creature_ptr, o_name, o_ptr, OD_OMIT_PREFIX | OD_NAME_ONLY);
+    BIT_FLAGS flgs[TR_FLAG_SIZE];
     object_flags(creature_ptr, o_ptr, flgs);
-    /* No damage left to be done */
     if (o_ptr->ac + o_ptr->to_a <= 0) {
         msg_format(_("%sは既にボロボロだ!", "Your %s is already fully corroded!"), o_name);
         return FALSE;
     }
 
-    /* Object resists */
     if (has_flag(flgs, TR_IGNORE_ACID)) {
         msg_format(_("しかし%sには効果がなかった!", "Your %s is unaffected!"), o_name);
         return TRUE;
     }
 
     msg_format(_("%sが酸で腐食した!", "Your %s is corroded!"), o_name);
-
-    /* Damage the item */
     o_ptr->to_a--;
-
-    /* Calculate bonuses */
-    creature_ptr->update |= (PU_BONUS);
-    creature_ptr->window |= (PW_EQUIP | PW_PLAYER);
-
+    creature_ptr->update |= PU_BONUS;
+    creature_ptr->window |= PW_EQUIP | PW_PLAYER;
     calc_android_exp(creature_ptr);
-
-    /* Item was damaged */
     return TRUE;
 }
 
@@ -144,15 +132,13 @@ static bool acid_minus_ac(player_type *creature_ptr)
  * @param monspell 原因となったモンスター特殊攻撃ID
  * @param aura オーラよるダメージが原因ならばTRUE
  * @return 修正HPダメージ量
+ * @details 酸オーラは存在しないが関数ポインタのために引数だけは用意している
  */
 HIT_POINT acid_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int monspell, bool aura)
 {
-    HIT_POINT get_damage;
     int inv = (dam < 30) ? 1 : (dam < 60) ? 2 : 3;
     bool double_resist = is_oppose_acid(creature_ptr);
-
     dam = dam * calc_acid_damage_rate(creature_ptr) / 100;
-
     if (dam <= 0) {
         learn_spell(creature_ptr, monspell);
         return 0;
@@ -162,16 +148,14 @@ HIT_POINT acid_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int
         if ((!(double_resist || creature_ptr->resist_acid)) && one_in_(HURT_CHANCE))
             (void)do_dec_stat(creature_ptr, A_CHR);
 
-        /* If any armor gets hit, defend the player */
         if (acid_minus_ac(creature_ptr))
             dam = (dam + 1) / 2;
     }
 
-    get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
-
-    /* Inventory damage */
+    HIT_POINT get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
     if (!aura && !(double_resist && creature_ptr->resist_acid))
         inventory_damage(creature_ptr, set_acid_destroy, inv);
+
     return get_damage;
 }
 
@@ -187,7 +171,6 @@ HIT_POINT acid_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int
  */
 HIT_POINT elec_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int monspell, bool aura)
 {
-    HIT_POINT get_damage;
     int inv = (dam < 30) ? 1 : (dam < 60) ? 2 : 3;
     bool double_resist = is_oppose_elec(creature_ptr);
 
@@ -203,9 +186,7 @@ HIT_POINT elec_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int
             (void)do_dec_stat(creature_ptr, A_DEX);
     }
 
-    get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
-
-    /* Inventory damage */
+    HIT_POINT get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
     if (!aura && !(double_resist && creature_ptr->resist_elec))
         inventory_damage(creature_ptr, set_elec_destroy, inv);
 
@@ -224,7 +205,6 @@ HIT_POINT elec_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int
  */
 HIT_POINT fire_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int monspell, bool aura)
 {
-    HIT_POINT get_damage;
     int inv = (dam < 30) ? 1 : (dam < 60) ? 2 : 3;
     bool double_resist = is_oppose_fire(creature_ptr);
 
@@ -235,15 +215,12 @@ HIT_POINT fire_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int
     }
 
     dam = dam * calc_fire_damage_rate(creature_ptr) / 100;
-
     if (aura || !check_multishadow(creature_ptr)) {
         if ((!(double_resist || creature_ptr->resist_fire)) && one_in_(HURT_CHANCE))
             (void)do_dec_stat(creature_ptr, A_STR);
     }
 
-    get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
-
-    /* Inventory damage */
+    HIT_POINT get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
     if (!aura && !(double_resist && creature_ptr->resist_fire))
         inventory_damage(creature_ptr, set_fire_destroy, inv);
 
@@ -262,33 +239,20 @@ HIT_POINT fire_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int
  */
 HIT_POINT cold_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int monspell, bool aura)
 {
-    HIT_POINT get_damage;
     int inv = (dam < 30) ? 1 : (dam < 60) ? 2 : 3;
     bool double_resist = is_oppose_cold(creature_ptr);
-
-    /* Total immunity */
     if (is_immune_cold(creature_ptr) || (dam <= 0)) {
         learn_spell(creature_ptr, monspell);
         return 0;
     }
 
-    /* Vulnerability (Ouch!) */
     dam = dam * calc_cold_damage_rate(creature_ptr) / 100;
-
-    /* Resist the damage */
-    if (creature_ptr->resist_cold)
-        dam = (dam + 2) / 3;
-    if (double_resist)
-        dam = (dam + 2) / 3;
-
     if (aura || !check_multishadow(creature_ptr)) {
         if ((!(double_resist || creature_ptr->resist_cold)) && one_in_(HURT_CHANCE))
             (void)do_dec_stat(creature_ptr, A_STR);
     }
 
-    get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
-
-    /* Inventory damage */
+    HIT_POINT get_damage = take_hit(creature_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
     if (!aura && !(double_resist && creature_ptr->resist_cold))
         inventory_damage(creature_ptr, set_cold_destroy, inv);
 
@@ -333,7 +297,6 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
     if (monspell >= 0)
         learn_spell(creature_ptr, monspell);
 
-    /* Mega-Hack -- Apply "invulnerability" */
     if ((damage_type != DAMAGE_USELIFE) && (damage_type != DAMAGE_LOSELIFE)) {
         if (is_invuln(creature_ptr) && (damage < 9000)) {
             if (damage_type == DAMAGE_FORCE) {
@@ -369,46 +332,36 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
             if ((damage == 0) && one_in_(2))
                 damage = 1;
         }
-    } /* not if LOSELIFE USELIFE */
+    }
 
-    /* Hurt the player */
     creature_ptr->chp -= damage;
     if (damage_type == DAMAGE_GENO && creature_ptr->chp < 0) {
         damage += creature_ptr->chp;
         creature_ptr->chp = 0;
     }
 
-    /* Display the hitpoints */
-    creature_ptr->redraw |= (PR_HP);
-
-    creature_ptr->window |= (PW_PLAYER);
+    creature_ptr->redraw |= PR_HP;
+    creature_ptr->window |= PW_PLAYER;
 
     if (damage_type != DAMAGE_GENO && creature_ptr->chp == 0) {
         chg_virtue(creature_ptr, V_SACRIFICE, 1);
         chg_virtue(creature_ptr, V_CHANCE, 2);
     }
 
-    /* Dead player */
     if (creature_ptr->chp < 0) {
         bool android = (creature_ptr->prace == RACE_ANDROID ? TRUE : FALSE);
 
 #ifdef JP
         /* 死んだ時に強制終了して死を回避できなくしてみた by Habu */
-        if (!cheat_save)
-            if (!save_player(creature_ptr))
-                msg_print("セーブ失敗!");
+        if (!cheat_save && !save_player(creature_ptr))
+            msg_print("セーブ失敗!");
 #endif
 
         sound(SOUND_DEATH);
-
         chg_virtue(creature_ptr, V_SACRIFICE, 10);
-
         handle_stuff(creature_ptr);
         creature_ptr->leaving = TRUE;
-
-        /* Note death */
         creature_ptr->is_dead = TRUE;
-
         if (creature_ptr->current_floor_ptr->inside_arena) {
             concptr m_name = r_name + r_info[arena_info[creature_ptr->arena_number].r_idx].name;
             msg_format(_("あなたは%sの前に敗れ去った。", "You are beaten by %s."), m_name);
@@ -423,11 +376,8 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
             play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_GAMEOVER);
 
 #ifdef WORLD_SCORE
-            /* Make screen dump */
             screen_dump = make_screen_dump(creature_ptr, process_autopick_file_command);
 #endif
-
-            /* Note cause of death */
             if (seppuku) {
                 strcpy(creature_ptr->died_from, hit_from);
 #ifdef JP
@@ -445,9 +395,7 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
                 angband_strcpy(creature_ptr->died_from, dummy, sizeof creature_ptr->died_from);
             }
 
-            /* No longer a winner */
             current_world_ptr->total_winner = FALSE;
-
             if (winning_seppuku) {
                 exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 0, _("勝利の後切腹した。", "committed seppuku after the winning."));
             } else {
@@ -468,21 +416,15 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
 
             exe_write_diary(creature_ptr, DIARY_GAMESTART, 1, _("-------- ゲームオーバー --------", "--------   Game  Over   --------"));
             exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 1, "\n\n\n\n");
-
             flush();
-
-            if (get_check_strict(creature_ptr, _("画面を保存しますか?", "Dump the screen? "), CHECK_NO_HISTORY)) {
+            if (get_check_strict(creature_ptr, _("画面を保存しますか?", "Dump the screen? "), CHECK_NO_HISTORY))
                 do_cmd_save_screen(creature_ptr, process_autopick_file_command);
-            }
 
             flush();
-
-            /* Initialize "last message" buffer */
             if (creature_ptr->last_message)
                 string_free(creature_ptr->last_message);
-            creature_ptr->last_message = NULL;
 
-            /* Hack -- Note death */
+            creature_ptr->last_message = NULL;
             if (!last_words) {
 #ifdef JP
                 msg_format("あなたは%sました。", android ? "壊れ" : "死に");
@@ -500,7 +442,7 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
 
                 do {
 #ifdef JP
-                    while (!get_string(winning_seppuku ? "辞世の句: " : "断末魔の叫び: ", death_message, 1024))
+                    while (!get_string(winning_seppuku ? "辞世の句: " : "断末魔の叫び: ", death_message, sizeof(death_message)))
                         ;
 #else
                     while (!get_string("Last word: ", death_message, 1024))
@@ -560,16 +502,11 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
                             break;
                     }
 
-                    /* Hide cursor */
                     term_putstr(w - 1, h - 1, 1, TERM_WHITE, " ");
-
                     flush();
 #ifdef WORLD_SCORE
-                    /* Make screen dump */
                     screen_dump = make_screen_dump(creature_ptr, process_autopick_file_command);
 #endif
-
-                    /* Wait a key press */
                     (void)inkey();
                 } else
 #endif
@@ -577,20 +514,15 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
             }
         }
 
-        /* Dead */
         return damage;
     }
 
     handle_stuff(creature_ptr);
-
-    /* Hitpoint warning */
     if (creature_ptr->chp < warning) {
-        /* Hack -- bell on first notice */
         if (old_chp > warning)
             bell();
 
         sound(SOUND_WARN);
-
         if (record_danger && (old_chp > warning)) {
             if (creature_ptr->image && damage_type == DAMAGE_ATTACK)
                 hit_from = _("何か", "something");
@@ -599,18 +531,17 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
             exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 0, tmp);
         }
 
-        if (auto_more) {
-            /* stop auto_more even if DAMAGE_USELIFE */
+        if (auto_more)
             creature_ptr->now_damaged = TRUE;
-        }
 
         msg_print(_("*** 警告:低ヒット・ポイント! ***", "*** LOW HITPOINT WARNING! ***"));
         msg_print(NULL);
         flush();
     }
-    if (creature_ptr->wild_mode && !creature_ptr->leaving && (creature_ptr->chp < MAX(warning, creature_ptr->mhp / 5))) {
+
+    if (creature_ptr->wild_mode && !creature_ptr->leaving && (creature_ptr->chp < MAX(warning, creature_ptr->mhp / 5)))
         change_wild_mode(creature_ptr, FALSE);
-    }
+
     return damage;
 }
 
@@ -639,9 +570,8 @@ static void process_aura_damage(monster_type *m_ptr, player_type *touched_ptr, b
     msg_print(message);
     dam_func(touched_ptr, aura_damage, mon_name, -1, TRUE);
 
-    if (is_original_ap_and_seen(touched_ptr, m_ptr)) {
+    if (is_original_ap_and_seen(touched_ptr, m_ptr))
         atoffset(BIT_FLAGS, r_ptr, r_flags_offset) |= aura_flag;
-    }
 
     handle_stuff(touched_ptr);
 }
@@ -654,16 +584,10 @@ static void process_aura_damage(monster_type *m_ptr, player_type *touched_ptr, b
  */
 void touch_zap_player(monster_type *m_ptr, player_type *touched_ptr)
 {
-    process_aura_damage(m_ptr, touched_ptr, (bool)is_immune_fire(touched_ptr), offsetof(monster_race, flags2), offsetof(monster_race, r_flags2),
-        RF2_AURA_FIRE,
-        fire_dam,
-        _("突然とても熱くなった!", "You are suddenly very hot!"));
-    process_aura_damage(m_ptr, touched_ptr, (bool)is_immune_cold(touched_ptr), offsetof(monster_race, flags3), offsetof(monster_race, r_flags3),
-        RF3_AURA_COLD,
-        cold_dam,
-        _("突然とても寒くなった!", "You are suddenly very cold!"));
-    process_aura_damage(m_ptr, touched_ptr, (bool)is_immune_elec(touched_ptr), offsetof(monster_race, flags2), offsetof(monster_race, r_flags2),
-        RF2_AURA_ELEC,
-               elec_dam,
-        _("電撃をくらった!", "You get zapped!"));
+    process_aura_damage(m_ptr, touched_ptr, (bool)is_immune_fire(touched_ptr), offsetof(monster_race, flags2), offsetof(monster_race, r_flags2), RF2_AURA_FIRE,
+        fire_dam, _("突然とても熱くなった!", "You are suddenly very hot!"));
+    process_aura_damage(m_ptr, touched_ptr, (bool)is_immune_cold(touched_ptr), offsetof(monster_race, flags3), offsetof(monster_race, r_flags3), RF3_AURA_COLD,
+        cold_dam, _("突然とても寒くなった!", "You are suddenly very cold!"));
+    process_aura_damage(m_ptr, touched_ptr, (bool)is_immune_elec(touched_ptr), offsetof(monster_race, flags2), offsetof(monster_race, r_flags2), RF2_AURA_ELEC,
+        elec_dam, _("電撃をくらった!", "You get zapped!"));
 }
index fb6e38b..91b3694 100644 (file)
@@ -1,4 +1,4 @@
-#include "room/vault-builder.h"
+#include "room/vault-builder.h"
 #include "floor/cave.h"
 #include "floor/floor-generator-util.h"
 #include "floor/floor-util.h"
@@ -29,12 +29,12 @@ static bool is_cave_empty_grid(player_type *player_ptr, grid_type *g_ptr)
 }
 
 /*!
- * @brief \93Á\8eê\82È\95\94\89®\92n\8c`\8cü\82¯\82É\83\82\83\93\83X\83^\81[\82ð\94z\92u\82·\82é / Place some sleeping monsters near the given location
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y1 \83\82\83\93\83X\83^\81[\82ð\94z\92u\82µ\82½\82¢\83}\83X\82Ì\92\86\90SY\8dÀ\95W
- * @param x1 \83\82\83\93\83X\83^\81[\82ð\94z\92u\82µ\82½\82¢\83}\83X\82Ì\92\86\90SX\8dÀ\95W
- * @param num \94z\92u\82µ\82½\82¢\83\82\83\93\83X\83^\81[\82Ì\90\94
- * @return \82È\82µ
+ * @brief 特殊な部屋地形向けにモンスターを配置する / Place some sleeping monsters near the given location
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y1 モンスターを配置したいマスの中心Y座標
+ * @param x1 モンスターを配置したいマスの中心X座標
+ * @param num 配置したいモンスターの数
+ * @return なし
  * @details
  * Only really called by some of the "vault" routines.
  */
@@ -59,12 +59,12 @@ void vault_monsters(player_type *player_ptr, POSITION y1, POSITION x1, int num)
 }
 
 /*!
- * @brief \93Á\8eê\82È\95\94\89®\8cü\82¯\82É\8ae\8eí\83A\83C\83e\83\80\82ð\94z\92u\82·\82é / Create up to "num" objects near the given coordinates
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \94z\92u\82µ\82½\82¢\92\86\90S\83}\83X\82ÌY\8dÀ\95W
- * @param x \94z\92u\82µ\82½\82¢\92\86\90S\83}\83X\82ÌX\8dÀ\95W
- * @param num \94z\92u\82µ\82½\82¢\90\94
- * @return \82È\82µ
+ * @brief 特殊な部屋向けに各種アイテムを配置する / Create up to "num" objects near the given coordinates
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y 配置したい中心マスのY座標
+ * @param x 配置したい中心マスのX座標
+ * @param num 配置したい数
+ * @return なし
  * @details
  * Only really called by some of the "vault" routines.
  */
@@ -85,7 +85,7 @@ void vault_objects(player_type *player_ptr, POSITION y, POSITION x, int num)
             }
 
             if (dummy >= SAFE_MAX_ATTEMPTS && cheat_room) {
-                msg_print(_("\8cx\8d\90\81I\92n\89º\8eº\82Ì\83A\83C\83e\83\80\82ð\94z\92u\82Å\82«\82Ü\82¹\82ñ\81I", "Warning! Could not place vault object!"));
+                msg_print(_("警告!地下室のアイテムを配置できません!", "Warning! Could not place vault object!"));
             }
 
             grid_type *g_ptr;
@@ -105,12 +105,12 @@ void vault_objects(player_type *player_ptr, POSITION y, POSITION x, int num)
 }
 
 /*!
- * @brief \93Á\8eê\82È\95\94\89®\8cü\82¯\82É\8ae\8eí\83A\83C\83e\83\80\82ð\94z\92u\82·\82é(vault_trap\82Ì\83T\83u\83Z\83b\83g) / Place a trap with a given displacement of point
- * @param y \83g\83\89\83b\83v\82ð\94z\92u\82µ\82½\82¢\83}\83X\82Ì\92\86\90SY\8dÀ\95W
- * @param x \83g\83\89\83b\83v\82ð\94z\92u\82µ\82½\82¢\83}\83X\82Ì\92\86\90SX\8dÀ\95W
- * @param yd Y\95û\8cü\82Ì\94z\92u\95ª\8eU\83}\83X\90\94
- * @param xd X\95û\8cü\82Ì\94z\92u\95ª\8eU\83}\83X\90\94
- * @return \82È\82µ
+ * @brief 特殊な部屋向けに各種アイテムを配置する(vault_trapのサブセット) / Place a trap with a given displacement of point
+ * @param y トラップを配置したいマスの中心Y座標
+ * @param x トラップを配置したいマスの中心X座標
+ * @param yd Y方向の配置分散マス数
+ * @param xd X方向の配置分散マス数
+ * @return なし
  * @details
  * Only really called by some of the "vault" routines.
  */
@@ -131,7 +131,7 @@ static void vault_trap_aux(player_type *player_ptr, POSITION y, POSITION x, POSI
         }
 
         if (dummy >= SAFE_MAX_ATTEMPTS && cheat_room) {
-            msg_print(_("\8cx\8d\90\81I\92n\89º\8eº\82Ì\83g\83\89\83b\83v\82ð\94z\92u\82Å\82«\82Ü\82¹\82ñ\81I", "Warning! Could not place vault trap!"));
+            msg_print(_("警告!地下室のトラップを配置できません!", "Warning! Could not place vault trap!"));
         }
 
         g_ptr = &floor_ptr->grid_array[y1][x1];
@@ -144,15 +144,15 @@ static void vault_trap_aux(player_type *player_ptr, POSITION y, POSITION x, POSI
 }
 
 /*!
- * todo rooms-normal \82©\82ç\82µ\82©\8cÄ\82Î\82ê\82Ä\82¢\82È\82¢\81A\97v\92²\90®
- * @brief \93Á\8eê\82È\95\94\89®\8cü\82¯\82É\8ae\8eí\83A\83C\83e\83\80\82ð\94z\92u\82·\82é(\83\81\83C\83\93\83\8b\81[\83`\83\93) / Place some traps with a given displacement of given location
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \83g\83\89\83b\83v\82ð\94z\92u\82µ\82½\82¢\83}\83X\82Ì\92\86\90SY\8dÀ\95W
- * @param x \83g\83\89\83b\83v\82ð\94z\92u\82µ\82½\82¢\83}\83X\82Ì\92\86\90SX\8dÀ\95W
- * @param yd Y\95û\8cü\82Ì\94z\92u\95ª\8eU\83}\83X\90\94
- * @param xd X\95û\8cü\82Ì\94z\92u\95ª\8eU\83}\83X\90\94
- * @param num \94z\92u\82µ\82½\82¢\83g\83\89\83b\83v\82Ì\90\94
- * @return \82È\82µ
+ * todo rooms-normal からしか呼ばれていない、要調整
+ * @brief 特殊な部屋向けに各種アイテムを配置する(メインルーチン) / Place some traps with a given displacement of given location
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param y トラップを配置したいマスの中心Y座標
+ * @param x トラップを配置したいマスの中心X座標
+ * @param yd Y方向の配置分散マス数
+ * @param xd X方向の配置分散マス数
+ * @param num 配置したいトラップの数
+ * @return なし
  * @details
  * Only really called by some of the "vault" routines.
  */
index 17ff6ab..28ad58c 100644 (file)
@@ -1,4 +1,4 @@
-#include "specific-object/blade-turner.h"
+#include "specific-object/blade-turner.h"
 #include "core/hp-mp-processor.h"
 #include "spell-kind/spells-launcher.h"
 #include "spell/spell-types.h"
@@ -14,9 +14,9 @@ bool activate_bladeturner(player_type *user_ptr)
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
-    msg_print(_("\82 \82È\82½\82Í\83G\83\8c\83\81\83\93\83g\82Ì\83u\83\8c\83X\82ð\93f\82¢\82½\81B", "You breathe the elements."));
+    msg_print(_("あなたはエレメントのブレスを吐いた。", "You breathe the elements."));
     fire_breath(user_ptr, GF_MISSILE, dir, 300, 4);
-    msg_print(_("\8aZ\82ª\97l\81X\82È\90F\82É\8bP\82¢\82½...", "Your armor glows many colours..."));
+    msg_print(_("鎧が様々な色に輝いた...", "Your armor glows many colours..."));
     (void)set_afraid(user_ptr, 0);
     (void)set_hero(user_ptr, randint1(50) + 50, FALSE);
     (void)hp_player(user_ptr, 10);
index 2c3beb6..0e34216 100644 (file)
@@ -1,4 +1,4 @@
-#include "specific-object/bloody-moon.h"
+#include "specific-object/bloody-moon.h"
 #include "art-definition/art-weapon-types.h"
 #include "core/player-update-types.h"
 #include "object-enchant/object-boost.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief \8cÅ\92è\83A\81[\83e\83B\83t\83@\83N\83g\81w\83u\83\89\83b\83f\83B\83\80\81[\83\93\81x\82Ì\93Á\90«\82ð\95Ï\8dX\82·\82é\81B
- * @details \83X\83\8c\83C2d2\8eí\81A\8by\82Ñone_resistance()\82É\82æ\82é\91Ï\90«1d2\8eí\81Apval2\8eí\82ð\93¾\82é\81B
- * @param o_ptr \91Î\8fÛ\82Ì\83I\83u\83W\83F\83N\83g\8d\\91¢\91Ì (\83u\83\89\83b\83f\83B\83\80\81[\83\93)\82Ì\83|\83C\83\93\83^
- * @return \82È\82µ
+ * @brief 固定アーティファクト『ブラッディムーン』の特性を変更する。
+ * @details スレイ2d2種、及びone_resistance()による耐性1d2種、pval2種を得る。
+ * @param o_ptr 対象のオブジェクト構造体 (ブラッディムーン)のポインタ
+ * @return なし
  */
 void get_bloody_moon_flags(object_type *o_ptr)
 {
@@ -48,16 +48,16 @@ void get_bloody_moon_flags(object_type *o_ptr)
 
 /*!
  * @brief Let's dance a RONDO!!
- * @param user_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param o_ptr \83u\83\89\83b\83f\83B\81E\83\80\81[\83\93\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \83I\83u\83W\83F\83N\83g\8fî\95ñ\82É\88Ù\8fí\82ª\82È\82¢\8cÀ\82èTRUE
+ * @param user_ptr プレーヤーへの参照ポインタ
+ * @param o_ptr ブラッディ・ムーンへの参照ポインタ
+ * @return オブジェクト情報に異常がない限りTRUE
  */
 bool activate_bloody_moon(player_type *user_ptr, object_type *o_ptr)
 {
     if (o_ptr->name1 != ART_BLOOD)
         return FALSE;
 
-    msg_print(_("\8a\99\82ª\96¾\82é\82­\8bP\82¢\82½...", "Your scythe glows brightly!"));
+    msg_print(_("鎌が明るく輝いた...", "Your scythe glows brightly!"));
     get_bloody_moon_flags(o_ptr);
     if (user_ptr->prace == RACE_ANDROID)
         calc_android_exp(user_ptr);
index 615a438..a85fed9 100644 (file)
@@ -1,4 +1,4 @@
-#include "specific-object/monster-ball.h"
+#include "specific-object/monster-ball.h"
 #include "effect/spells-effect-util.h"
 #include "floor/geometry.h"
 #include "game-option/input-options.h"
@@ -183,7 +183,7 @@ bool exe_monster_capture(player_type *user_ptr, ae_type *ae_ptr)
 
     check_monster_ball_use(user_ptr, ae_ptr);
     if (!ae_ptr->success)
-        msg_print(_("\82¨\82Á\82Æ\81A\89ð\95ú\82É\8e¸\94s\82µ\82½\81B", "Oops.  You failed to release your pet."));
+        msg_print(_("おっと、解放に失敗した。", "Oops.  You failed to release your pet."));
 
     calc_android_exp(user_ptr);
     return TRUE;
index 0d710f8..c203ded 100644 (file)
@@ -1,4 +1,4 @@
-#include "specific-object/muramasa.h"
+#include "specific-object/muramasa.h"
 #include "core/asking-player.h"
 #include "art-definition/art-sword-types.h"
 #include "spell/spells-object.h"
@@ -11,13 +11,13 @@ bool activate_muramasa(player_type *user_ptr, object_type *o_ptr)
     if (o_ptr->name1 != ART_MURAMASA)
         return FALSE;
 
-    if (!get_check(_("\96{\93\96\82É\8eg\82¢\82Ü\82·\82©\81H", "Are you sure?!")))
+    if (!get_check(_("本当に使いますか?", "Are you sure?!")))
         return TRUE;
 
-    msg_print(_("\91º\90³\82ª\90k\82¦\82½\81D\81D\81D", "The Muramasa pulsates..."));
+    msg_print(_("村正が震えた...", "The Muramasa pulsates..."));
     do_inc_stat(user_ptr, A_STR);
     if (one_in_(2)) {
-        msg_print(_("\91º\90³\82Í\89ó\82ê\82½\81I", "The Muramasa is destroyed!"));
+        msg_print(_("村正は壊れた!", "The Muramasa is destroyed!"));
         curse_weapon_object(user_ptr, TRUE, o_ptr);
     }
 
index d8141ae..b1c2de4 100644 (file)
@@ -1,4 +1,4 @@
-#include "specific-object/ring-of-power.h"
+#include "specific-object/ring-of-power.h"
 #include "main/sound-definitions-table.h"
 #include "main/sound-of-music.h"
 #include "spell-kind/spells-launcher.h"
@@ -9,18 +9,18 @@
 #include "view/display-messages.h"
 
 /*!
- * @brief \81w\88ê\82Â\82Ì\8ew\97Ö\81x\82Ì\8cø\89Ê\8f\88\97\9d /
+ * @brief 『一つの指輪』の効果処理 /
  * Hack -- activate the ring of power
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param dir \94­\93®\82Ì\95û\8cüID
- * @return \82È\82µ
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @param dir 発動の方向ID
+ * @return なし
  */
 static void exe_ring_of_power(player_type *caster_ptr, DIRECTION dir)
 {
     switch (randint1(10)) {
     case 1:
     case 2:
-        msg_print(_("\82 \82È\82½\82Í\88«\90«\82Ì\83I\81[\83\89\82É\95ï\82Ý\8d\9e\82Ü\82ê\82½\81B", "You are surrounded by a malignant aura."));
+        msg_print(_("あなたは悪性のオーラに包み込まれた。", "You are surrounded by a malignant aura."));
         sound(SOUND_EVIL);
         (void)dec_stat(caster_ptr, A_STR, 50, TRUE);
         (void)dec_stat(caster_ptr, A_INT, 50, TRUE);
@@ -33,7 +33,7 @@ static void exe_ring_of_power(player_type *caster_ptr, DIRECTION dir)
         check_experience(caster_ptr);
         break;
     case 3:
-        msg_print(_("\82 \82È\82½\82Í\8b­\97Í\82È\83I\81[\83\89\82É\95ï\82Ý\8d\9e\82Ü\82ê\82½\81B", "You are surrounded by a powerful aura."));
+        msg_print(_("あなたは強力なオーラに包み込まれた。", "You are surrounded by a powerful aura."));
         dispel_monsters(caster_ptr, 1000);
         break;
     case 4:
@@ -55,7 +55,7 @@ static void exe_ring_of_power(player_type *caster_ptr, DIRECTION dir)
 bool activate_ring_of_power(player_type *user_ptr, concptr name)
 {
     DIRECTION dir;
-    msg_format(_("%s\82Í\8e½\8d\95\82É\8bP\82¢\82½...", "The %s glows intensely black..."), name);
+    msg_format(_("%sは漆黒に輝いた...", "The %s glows intensely black..."), name);
     if (!get_aim_dir(user_ptr, &dir))
         return FALSE;
 
index a7de6bc..0b61ed6 100644 (file)
@@ -1,11 +1,11 @@
-#include "specific-object/toragoroshi.h"
+#include "specific-object/toragoroshi.h"
 #include "player-attack/player-attack.h"
 #include "view/display-messages.h"
 
 bool activate_toragoroshi(player_type *user_ptr)
 {
-    msg_print(_("\82 \82È\82½\82Í\97d\93\81\82É\96£\93ü\82ç\82ê\82½\81c", "You are enchanted by cursed blade..."));
-    msg_print(_("\81u\8b\82Ù\82µ\82­ \8c\8c\82Ì\82²\82Æ\82« \8c\8e\82Í\82Ì\82Ú\82ê\82è \94é\82ß\82¨\82«\82µ \96\82\8c\95 \82¢\82¸\82±\82¼\82â\81v", "'Behold the blade arts.'"));
+    msg_print(_("あなたは妖刀に魅入られた…", "You are enchanted by cursed blade..."));
+    msg_print(_("「狂ほしく 血のごとき 月はのぼれり 秘めおきし 魔剣 いずこぞや」", "'Behold the blade arts.'"));
     massacre(user_ptr);
     return TRUE;
 }
index e736f1b..4aea349 100644 (file)
@@ -1,4 +1,4 @@
-#include "spell-kind/spells-neighbor.h"
+#include "spell-kind/spells-neighbor.h"
 #include "core/player-redraw-types.h"
 #include "core/player-update-types.h"
 #include "effect/effect-characteristics.h"
@@ -12,9 +12,9 @@
 #include "util/bit-flags-calculator.h"
 
 /*!
- * @brief \83h\83A\90\90¬\8f\88\97\9d(\83v\83\8c\83C\83\84\81[\92\86\90S\82É\8eü\88Í1\83}\83X) / Hooks -- affect adjacent grids (radius 1 ball attack)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief ドア生成処理(プレイヤー中心に周囲1マス) / Hooks -- affect adjacent grids (radius 1 ball attack)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool door_creation(player_type *caster_ptr, POSITION y, POSITION x)
 {
@@ -23,11 +23,11 @@ bool door_creation(player_type *caster_ptr, POSITION y, POSITION x)
 }
 
 /*!
- * @brief \83g\83\89\83b\83v\90\90¬\8f\88\97\9d(\8bN\93_\82©\82ç\8eü\88Í1\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param y \8bN\93_Y\8dÀ\95W
- * @param x \8bN\93_X\8dÀ\95W
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief トラップ生成処理(起点から周囲1マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @param y 起点Y座標
+ * @param x 起点X座標
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool trap_creation(player_type *caster_ptr, POSITION y, POSITION x)
 {
@@ -36,9 +36,9 @@ bool trap_creation(player_type *caster_ptr, POSITION y, POSITION x)
 }
 
 /*!
- * @brief \90X\97Ñ\90\90¬\8f\88\97\9d(\83v\83\8c\83C\83\84\81[\92\86\90S\82É\8eü\88Í1\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief 森林生成処理(プレイヤー中心に周囲1マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool tree_creation(player_type *caster_ptr, POSITION y, POSITION x)
 {
@@ -47,9 +47,9 @@ bool tree_creation(player_type *caster_ptr, POSITION y, POSITION x)
 }
 
 /*!
- * @brief \96\82\96@\82Ì\83\8b\81[\83\93\90\90¬\8f\88\97\9d(\83v\83\8c\83C\83\84\81[\92\86\90S\82É\8eü\88Í1\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief 魔法のルーン生成処理(プレイヤー中心に周囲1マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool glyph_creation(player_type *caster_ptr, POSITION y, POSITION x)
 {
@@ -58,9 +58,9 @@ bool glyph_creation(player_type *caster_ptr, POSITION y, POSITION x)
 }
 
 /*!
- * @brief \95Ç\90\90¬\8f\88\97\9d(\83v\83\8c\83C\83\84\81[\92\86\90S\82É\8eü\88Í1\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief 壁生成処理(プレイヤー中心に周囲1マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool wall_stone(player_type *caster_ptr)
 {
@@ -72,9 +72,9 @@ bool wall_stone(player_type *caster_ptr)
 }
 
 /*!
- * @brief \83h\83A\94j\89ó\8f\88\97\9d(\83v\83\8c\83C\83\84\81[\92\86\90S\82É\8eü\88Í1\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief ドア破壊処理(プレイヤー中心に周囲1マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool destroy_doors_touch(player_type *caster_ptr)
 {
@@ -83,9 +83,9 @@ bool destroy_doors_touch(player_type *caster_ptr)
 }
 
 /*!
- * @brief \83g\83\89\83b\83v\89ð\8f\9c\8f\88\97\9d(\83v\83\8c\83C\83\84\81[\92\86\90S\82É\8eü\88Í1\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief トラップ解除処理(プレイヤー中心に周囲1マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool disarm_traps_touch(player_type *caster_ptr)
 {
@@ -94,9 +94,9 @@ bool disarm_traps_touch(player_type *caster_ptr)
 }
 
 /*!
- * @brief \83X\83\8a\81[\83v\83\82\83\93\83X\83^\81[\8f\88\97\9d(\83v\83\8c\83C\83\84\81[\92\86\90S\82É\8eü\88Í1\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief スリープモンスター処理(プレイヤー中心に周囲1マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool sleep_monsters_touch(player_type *caster_ptr)
 {
@@ -105,12 +105,12 @@ bool sleep_monsters_touch(player_type *caster_ptr)
 }
 
 /*!
- * @brief \8e\80\8eÒ\95\9c\8a\88\8f\88\97\9d(\8bN\93_\82æ\82è\8eü\88Í5\83}\83X)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param who \8fp\8eÒ\83\82\83\93\83X\83^\81[ID(0\82È\82ç\82Î\83v\83\8c\83C\83\84\81[)
- * @param y \8bN\93_Y\8dÀ\95W
- * @param x \8bN\93_X\8dÀ\95W
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief 死者復活処理(起点より周囲5マス)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @param who 術者モンスターID(0ならばプレイヤー)
+ * @param y 起点Y座標
+ * @param x 起点X座標
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool animate_dead(player_type *caster_ptr, MONSTER_IDX who, POSITION y, POSITION x)
 {
@@ -119,9 +119,9 @@ bool animate_dead(player_type *caster_ptr, MONSTER_IDX who, POSITION y, POSITION
 }
 
 /*!
- * @brief \8eü\95Ó\94j\89ó\8cø\89Ê(\83v\83\8c\83C\83\84\81[\92\86\90S)
- * @param caster_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
+ * @brief 周辺破壊効果(プレイヤー中心)
+ * @param caster_ptr プレーヤーへの参照ポインタ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 void wall_breaker(player_type *caster_ptr)
 {
index 2262922..4f4658a 100644 (file)
@@ -1,4 +1,4 @@
-#include "spell-realm/spells-arcane.h"
+#include "spell-realm/spells-arcane.h"
 #include "core/player-update-types.h"
 #include "inventory/inventory-slot-types.h"
 #include "sv-definition/sv-lite-types.h"
@@ -6,9 +6,9 @@
 #include "view/display-messages.h"
 
 /*!
- * @brief \8eõ\96½\82Â\82«\8cõ\8c¹\82Ì\94R\91f\92Ç\89Á\8f\88\97\9d /
+ * @brief 寿命つき光源の燃素追加処理 /
  * Charge a lite (torch or latern)
- * @return \82È\82µ
+ * @return なし
  */
 void phlogiston(player_type *caster_ptr)
 {
@@ -19,20 +19,20 @@ void phlogiston(player_type *caster_ptr)
     else if ((o_ptr->tval == TV_LITE) && (o_ptr->sval == SV_LITE_TORCH))
         max_flog = FUEL_TORCH;
     else {
-        msg_print(_("\94R\91f\82ð\8fÁ\94ï\82·\82é\83A\83C\83e\83\80\82ð\91\95\94õ\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B", "You are not wielding anything which uses phlogiston."));
+        msg_print(_("燃素を消費するアイテムを装備していません。", "You are not wielding anything which uses phlogiston."));
         return;
     }
 
     if (o_ptr->xtra4 >= max_flog) {
-        msg_print(_("\82±\82Ì\83A\83C\83e\83\80\82É\82Í\82±\82ê\88È\8fã\94R\91f\82ð\95â\8f[\82Å\82«\82Ü\82¹\82ñ\81B", "No more phlogiston can be put in this item."));
+        msg_print(_("このアイテムにはこれ以上燃素を補充できません。", "No more phlogiston can be put in this item."));
         return;
     }
 
     o_ptr->xtra4 += (XTRA16)(max_flog / 2);
-    msg_print(_("\8fÆ\96¾\97p\83A\83C\83e\83\80\82É\94R\91f\82ð\95â\8f[\82µ\82½\81B", "You add phlogiston to your light item."));
+    msg_print(_("照明用アイテムに燃素を補充した。", "You add phlogiston to your light item."));
     if (o_ptr->xtra4 >= max_flog) {
         o_ptr->xtra4 = (XTRA16)max_flog;
-        msg_print(_("\8fÆ\96¾\97p\83A\83C\83e\83\80\82Í\96\9e\83^\83\93\82É\82È\82Á\82½\81B", "Your light item is full."));
+        msg_print(_("照明用アイテムは満タンになった。", "Your light item is full."));
     }
 
     caster_ptr->update |= PU_TORCH;
index 32535f9..2030d3b 100644 (file)
@@ -1,4 +1,4 @@
-#include "spell-realm/spells-nature.h"
+#include "spell-realm/spells-nature.h"
 #include "flavor/flavor-describer.h"
 #include "flavor/object-flavor-types.h"
 #include "floor/floor-object.h"
 #include "view/display-messages.h"
 
 /*!
- * @brief \96h\8bï\82Ì\8eK\8e~\82ß\96h\8e~\8f\88\97\9d
- * @param caster_ptr \8eK\8e~\82ß\8eÀ\8ds\8eÒ\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \83^\81[\83\93\8fÁ\94ï\82ð\97v\82·\82é\8f\88\97\9d\82ð\8ds\82Á\82½\82È\82ç\82ÎTRUE\82ð\95Ô\82·
+ * @brief 防具の錆止め防止処理
+ * @param caster_ptr 錆止め実行者の参照ポインタ
+ * @return ターン消費を要する処理を行ったならばTRUEを返す
  */
 bool rustproof(player_type *caster_ptr)
 {
     item_tester_hook = object_is_armour;
-    concptr q = _("\82Ç\82Ì\96h\8bï\82É\8eK\8e~\82ß\82ð\82µ\82Ü\82·\82©\81H", "Rustproof which piece of armour? ");
-    concptr s = _("\8eK\8e~\82ß\82Å\82«\82é\82à\82Ì\82ª\82 \82è\82Ü\82¹\82ñ\81B", "You have nothing to rustproof.");
+    concptr q = _("どの防具に錆止めをしますか?", "Rustproof which piece of armour? ");
+    concptr s = _("錆止めできるものがありません。", "You have nothing to rustproof.");
     OBJECT_IDX item;
     object_type *o_ptr = choose_object(caster_ptr, &item, q, s, USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT, 0);
     if (o_ptr == NULL)
@@ -31,7 +31,7 @@ bool rustproof(player_type *caster_ptr)
     add_flag(o_ptr->art_flags, TR_IGNORE_ACID);
     if ((o_ptr->to_a < 0) && !object_is_cursed(o_ptr)) {
 #ifdef JP
-        msg_format("%s\82Í\90V\95i\93¯\97l\82É\82È\82Á\82½\81I", o_name);
+        msg_format("%sは新品同様になった!", o_name);
 #else
         msg_format("%s %s look%s as good as new!", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "" : "s"));
 #endif
@@ -39,7 +39,7 @@ bool rustproof(player_type *caster_ptr)
     }
 
 #ifdef JP
-    msg_format("%s\82Í\95\85\90H\82µ\82È\82­\82È\82Á\82½\81B", o_name);
+    msg_format("%sは腐食しなくなった。", o_name);
 #else
     msg_format("%s %s %s now protected against corrosion.", ((item >= 0) ? "Your" : "The"), o_name, ((o_ptr->number > 1) ? "are" : "is"));
 #endif
index 679e6a8..3e2b77c 100644 (file)
@@ -1,49 +1,55 @@
-#pragma once
+#pragma once
 
-/* summon_specific\82Å\8eæ\82è\88µ\82í\82ê\82é\81A\8f¢\8a«\82Ì\8eí\95Ê\92è\8b` / Legal restrictions for "summon_specific()" */
+/* summon_specificで取り扱われる、召喚の種別定義 / Legal restrictions for "summon_specific()" */
 typedef enum summon_type {
-       SUMMON_ANT = 11,  /*!< \8f¢\8a«\83^\83C\83v: \83A\83\8a */
-    SUMMON_SPIDER = 12, /*!< \8f¢\8a«\83^\83C\83v: \92\81 */
-    SUMMON_HOUND = 13, /*!< \8f¢\8a«\83^\83C\83v: \83n\83E\83\93\83h */
-    SUMMON_HYDRA = 14, /*!< \8f¢\8a«\83^\83C\83v: \83q\83h\83\89 */
-    SUMMON_ANGEL = 15, /*!< \8f¢\8a«\83^\83C\83v: \93V\8eg */
-    SUMMON_DEMON = 16, /*!< \8f¢\8a«\83^\83C\83v: \88«\96\82 */
-    SUMMON_UNDEAD = 17, /*!< \8f¢\8a«\83^\83C\83v: \83A\83\93\83f\83b\83h */
-    SUMMON_DRAGON = 18, /*!< \8f¢\8a«\83^\83C\83v: \83h\83\89\83S\83\93 */
-    SUMMON_HI_UNDEAD = 21, /*!< \8f¢\8a«\83^\83C\83v: \8b­\97Í\82È\83A\83\93\83f\83b\83h */
-    SUMMON_HI_DRAGON = 22, /*!< \8f¢\8a«\83^\83C\83v: \8cÃ\91ã\83h\83\89\83S\83\93 */
-    SUMMON_HI_DEMON = 23, /*!< \8f¢\8a«\83^\83C\83v: \8fã\8b\89\83f\81[\83\82\83\93 */
-    SUMMON_AMBERITES = 31, /*!< \8f¢\8a«\83^\83C\83v: \83A\83\93\83o\81[\82Ì\89¤\91° */
-    SUMMON_UNIQUE = 32, /*!< \8f¢\8a«\83^\83C\83v: \83\86\83j\81[\83N */
-    SUMMON_MOLD = 33, /*!< \8f¢\8a«\83^\83C\83v: \83J\83r */
-    SUMMON_BAT = 34, /*!< \8f¢\8a«\83^\83C\83v: \83R\83E\83\82\83\8a */
-    SUMMON_QUYLTHULG = 35, /*!< \8f¢\8a«\83^\83C\83v: \83N\83C\83\8b\83X\83\8b\83O */
-    SUMMON_XXX1 = 36, /*!< \8f¢\8a«\83^\83C\83v: \96¢\8eg\97p */
-    SUMMON_COIN_MIMIC = 37, /*!< \8f¢\8a«\83^\83C\83v: \83N\83\8a\81[\83s\83\93\83O\81E\83R\83C\83\93 */
-    SUMMON_MIMIC = 38, /*!< \8f¢\8a«\83^\83C\83v: \83~\83~\83b\83N */
-    SUMMON_CYBER = 39, /*!< \8f¢\8a«\83^\83C\83v: \83T\83C\83o\81[\83f\81[\83\82\83\93 */
-    SUMMON_KIN = 40, /*!< \8f¢\8a«\83^\83C\83v: \8f¢\8a«\8eÒ\82Ì\93¯\91° */
-    SUMMON_DAWN = 41, /*!< \8f¢\8a«\83^\83C\83v: \8bÅ\82Ì\90í\8em */
-    SUMMON_ANIMAL = 42, /*!< \8f¢\8a«\83^\83C\83v: \8e©\91R\8aE\82Ì\93®\95¨ */
-    SUMMON_ANIMAL_RANGER = 43, /*!< \8f¢\8a«\83^\83C\83v: \83\8c\83\93\83W\83\83\81[\8cü\82¯\8e©\91R\8aE\82Ì\93®\95¨ */
-    SUMMON_PHANTOM = 47, /*!< \8f¢\8a«\83^\83C\83v: \83S\81[\83X\83g */
-    SUMMON_TOTEM_MOAI = 48, /*!< \8f¢\8a«\83^\83C\83v: \83g\81[\83e\83\80\83\82\83A\83C */
-    SUMMON_BLUE_HORROR = 49, /*!< \8f¢\8a«\83^\83C\83v: \83u\83\8b\81[\81E\83z\83\89\81[ */
-    SUMMON_LIVING = 50, /*!< \8f¢\8a«\83^\83C\83v: \90\96½\82Ì\82 \82é\83\82\83\93\83X\83^\81[ */
-    SUMMON_HI_DRAGON_LIVING = 51, /*!< \8f¢\8a«\83^\83C\83v: \90\96½\82Ì\82 \82é\8cÃ\91ã\83h\83\89\83S\83\93 */
-    SUMMON_GOLEM = 52, /*!< \8f¢\8a«\83^\83C\83v: \83S\81[\83\8c\83\80 */
-    SUMMON_ELEMENTAL = 53, /*!< \8f¢\8a«\83^\83C\83v: \83G\83\8c\83\81\83\93\83^\83\8b */
-    SUMMON_VORTEX = 54, /*!< \8f¢\8a«\83^\83C\83v: \83{\83\8b\83e\83b\83N\83X */
-    SUMMON_HYBRID = 55, /*!< \8f¢\8a«\83^\83C\83v: \8d¬\8d\87\90\95¨ */
-    SUMMON_BIRD = 56, /*!< \8f¢\8a«\83^\83C\83v: \92¹ */
-    SUMMON_KAMIKAZE = 58, /*!< \8f¢\8a«\83^\83C\83v: \8e©\94\9a\83\82\83\93\83X\83^\81[ */
-    SUMMON_KAMIKAZE_LIVING = 59, /*!< \8f¢\8a«\83^\83C\83v: \90\96½\82Ì\82 \82é\8e©\94\9a\83\82\83\93\83X\83^\81[ */
-    SUMMON_MANES = 60, /*!< \8f¢\8a«\83^\83C\83v: \8cÃ\91ã\82Ì\8e\80\97ì */
-    SUMMON_LOUSE = 61, /*!< \8f¢\8a«\83^\83C\83v: \83V\83\89\83~ */
-    SUMMON_GUARDIANS = 62, /*!< \8f¢\8a«\83^\83C\83v: \83_\83\93\83W\83\87\83\93\82Ì\8eå */
-    SUMMON_KNIGHTS = 63, /*!< \8f¢\8a«\83^\83C\83v: \90¹\90í\97p\8bR\8em\8cn\83\82\83\93\83X\83^\81[ */
-    SUMMON_EAGLES = 64, /*!< \8f¢\8a«\83^\83C\83v: \98h\8cn\83\82\83\93\83X\83^\81[ */
-    SUMMON_PIRANHAS = 65, /*!< \8f¢\8a«\83^\83C\83v: \83s\83\89\83j\83A\81E\83g\83\89\83b\83v\97p */
-    SUMMON_ARMAGE_GOOD = 66, /*!< \8f¢\8a«\83^\83C\83v: \83n\83\8b\83}\83Q\83h\83\93\81E\83g\83\89\83b\83v\97p\93V\8eg\90w\89c */
-    SUMMON_ARMAGE_EVIL = 67, /*!< \8f¢\8a«\83^\83C\83v: \83n\83\8b\83}\83Q\83h\83\93\81E\83g\83\89\83b\83v\97p\88«\96\82\90w\89c */
+    SUMMON_NONE = 0,
+       SUMMON_ANT = 11,  /*!< 召喚タイプ: アリ */
+    SUMMON_SPIDER = 12, /*!< 召喚タイプ: 蜘蛛 */
+    SUMMON_HOUND = 13, /*!< 召喚タイプ: ハウンド */
+    SUMMON_HYDRA = 14, /*!< 召喚タイプ: ヒドラ */
+    SUMMON_ANGEL = 15, /*!< 召喚タイプ: 天使 */
+    SUMMON_DEMON = 16, /*!< 召喚タイプ: 悪魔 */
+    SUMMON_UNDEAD = 17, /*!< 召喚タイプ: アンデッド */
+    SUMMON_DRAGON = 18, /*!< 召喚タイプ: ドラゴン */
+    SUMMON_HI_UNDEAD = 21, /*!< 召喚タイプ: 強力なアンデッド */
+    SUMMON_HI_DRAGON = 22, /*!< 召喚タイプ: 古代ドラゴン */
+    SUMMON_HI_DEMON = 23, /*!< 召喚タイプ: 上級デーモン */
+    SUMMON_AMBERITES = 31, /*!< 召喚タイプ: アンバーの王族 */
+    SUMMON_UNIQUE = 32, /*!< 召喚タイプ: ユニーク */
+    SUMMON_MOLD = 33, /*!< 召喚タイプ: カビ */
+    SUMMON_BAT = 34, /*!< 召喚タイプ: コウモリ */
+    SUMMON_QUYLTHULG = 35, /*!< 召喚タイプ: クイルスルグ */
+    SUMMON_XXX1 = 36, /*!< 召喚タイプ: 未使用 */
+    SUMMON_COIN_MIMIC = 37, /*!< 召喚タイプ: クリーピング・コイン */
+    SUMMON_MIMIC = 38, /*!< 召喚タイプ: ミミック */
+    SUMMON_CYBER = 39, /*!< 召喚タイプ: サイバーデーモン */
+    SUMMON_KIN = 40, /*!< 召喚タイプ: 召喚者の同族 */
+    SUMMON_DAWN = 41, /*!< 召喚タイプ: 暁の戦士 */
+    SUMMON_ANIMAL = 42, /*!< 召喚タイプ: 自然界の動物 */
+    SUMMON_ANIMAL_RANGER = 43, /*!< 召喚タイプ: レンジャー向け自然界の動物 */
+    SUMMON_SMALL_MOAI = 44, /*!< 召喚タイプ: プチモアイ */
+    SUMMON_PYRAMID = 45, /*!< 召喚タイプ: ピラミッド */
+    SUMMON_PHANTOM = 47, /*!< 召喚タイプ: ゴースト */
+    SUMMON_TOTEM_MOAI = 48, /*!< 召喚タイプ: トーテムモアイ */
+    SUMMON_BLUE_HORROR = 49, /*!< 召喚タイプ: ブルー・ホラー */
+    SUMMON_LIVING = 50, /*!< 召喚タイプ: 生命のあるモンスター */
+    SUMMON_HI_DRAGON_LIVING = 51, /*!< 召喚タイプ: 生命のある古代ドラゴン */
+    SUMMON_GOLEM = 52, /*!< 召喚タイプ: ゴーレム */
+    SUMMON_ELEMENTAL = 53, /*!< 召喚タイプ: エレメンタル */
+    SUMMON_VORTEX = 54, /*!< 召喚タイプ: ボルテックス */
+    SUMMON_HYBRID = 55, /*!< 召喚タイプ: 混合生物 */
+    SUMMON_BIRD = 56, /*!< 召喚タイプ: 鳥 */
+    SUMMON_KAMIKAZE = 58, /*!< 召喚タイプ: 自爆モンスター */
+    SUMMON_KAMIKAZE_LIVING = 59, /*!< 召喚タイプ: 生命のある自爆モンスター */
+    SUMMON_MANES = 60, /*!< 召喚タイプ: 古代の死霊 */
+    SUMMON_LOUSE = 61, /*!< 召喚タイプ: シラミ */
+    SUMMON_GUARDIANS = 62, /*!< 召喚タイプ: ダンジョンの主 */
+    SUMMON_KNIGHTS = 63, /*!< 召喚タイプ: 聖戦用騎士系モンスター */
+    SUMMON_EAGLES = 64, /*!< 召喚タイプ: 鷲系モンスター */
+    SUMMON_PIRANHAS = 65, /*!< 召喚タイプ: ピラニア・トラップ用 */
+    SUMMON_ARMAGE_GOOD = 66, /*!< 召喚タイプ: ハルマゲドン・トラップ用天使陣営 */
+    SUMMON_ARMAGE_EVIL = 67, /*!< 召喚タイプ: ハルマゲドン・トラップ用悪魔陣営 */
+    SUMMON_APOCRYPHA_FOLLOWERS = 68, /*!< 召喚タイプ: 信者 */
+    SUMMON_APOCRYPHA_DRAGONS = 69, /*!< 召喚タイプ: 強力な古代ドラゴン */
+    SUMMON_VESPOID = 70, /*!< 召喚タイプ: ランゴスタ */
 } summon_type;
index b38371b..848af13 100644 (file)
@@ -1,7 +1,7 @@
-#include "spell/technic-info-table.h"
+#include "spell/technic-info-table.h"
 
 /*!
- * @brief \89Ì\81A\8c\95\8fp\81A\8eô\8fp\97Ì\88æ\8fî\95ñ\83e\81[\83u\83\8b
+ * @brief 歌、剣術、呪術領域情報テーブル
  */
 const magic_type technic_info[NUM_TECHNIC][32] =
 {
index bbd0d1b..e45ebc8 100644 (file)
@@ -20,7 +20,7 @@ typedef struct object_type {
     EGO_IDX name2; /* Ego-Item type, if any */
 
     XTRA8 xtra1; /* Extra info type (now unused) */
-    XTRA8 xtra2; /* Extra info activation index */
+    XTRA8 xtra2; /*!< エゴ/アーティファクトの発動ID / Extra info activation index */
     XTRA8 xtra3; /*!< 複数の使用用途 捕らえたモンスターの速度,付加した特殊なエッセンスID / Extra info for weaponsmith */
     XTRA16 xtra4; /*!< 複数の使用用途 光源の残り寿命、あるいは捕らえたモンスターの現HP / Extra info fuel or captured monster's current HP */
     XTRA16 xtra5; /*!< 複数の使用用途 捕らえたモンスターの最大HP / Extra info captured monster's max HP */
index 2c50c10..0e88f59 100644 (file)
@@ -1,4 +1,4 @@
-#include "target/projection-path-calculator.h"
+#include "target/projection-path-calculator.h"
 #include "effect/effect-characteristics.h"
 #include "effect/spells-effect-util.h"
 #include "floor/cave.h"
@@ -30,9 +30,9 @@ typedef struct projection_path_type {
 
 /*
  * @brief Convert a "location" (Y, X) into a "grid" (G)
- * @param y Y\8dÀ\95W
- * @param x X\8dÀ\95W
- * return \8co\98H\8dÀ\95W
+ * @param y Y座標
+ * @param x X座標
+ * return 経路座標
  */
 static u16b location_to_grid(POSITION y, POSITION x) { return 256 * y + x; }
 
@@ -199,17 +199,17 @@ static void calc_projection_others(player_type *player_ptr, projection_path_type
 }
 
 /*!
- * @brief \8en\93_\82©\82ç\8fI\93_\82Ö\82Ì\92¼\90ü\8co\98H\82ð\95Ô\82· /
+ * @brief 始点から終点への直線経路を返す /
  * Determine the path taken by a projection.
- * @param player_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @param gp \8co\98H\8dÀ\95W\83\8a\83X\83g\82ð\95Ô\82·\8eQ\8fÆ\83|\83C\83\93\83^
- * @param range \8b\97\97£
- * @param y1 \8en\93_Y\8dÀ\95W
- * @param x1 \8en\93_X\8dÀ\95W
- * @param y2 \8fI\93_Y\8dÀ\95W
- * @param x2 \8fI\93_X\8dÀ\95W
- * @param flag \83t\83\89\83OID
- * @return \83\8a\83X\83g\82Ì\92·\82³
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @param gp 経路座標リストを返す参照ポインタ
+ * @param range 距離
+ * @param y1 始点Y座標
+ * @param x1 始点X座標
+ * @param y2 終点Y座標
+ * @param x2 終点X座標
+ * @param flag フラグID
+ * @return リストの長さ
  */
 int projection_path(player_type *player_ptr, u16b *gp, POSITION range, POSITION y1, POSITION x1, POSITION y2, POSITION x2, BIT_FLAGS flag)
 {
@@ -258,9 +258,9 @@ bool projectable(player_type *player_ptr, POSITION y1, POSITION x1, POSITION y2,
 }
 
 /*!
- * @brief\83v\83\8c\83C\83\84\81[\82Ì\8dU\8c\82\8eË\92ö(\83}\83X) / Maximum range (spells, etc)
- * @param creature_ptr \83v\83\8c\81[\83\84\81[\82Ö\82Ì\8eQ\8fÆ\83|\83C\83\93\83^
- * @return \8eË\92ö
+ * @briefプレイヤーの攻撃射程(マス) / Maximum range (spells, etc)
+ * @param creature_ptr プレーヤーへの参照ポインタ
+ * @return 射程
  */
 int get_max_range(player_type *creature_ptr) { return creature_ptr->phase_out ? 36 : 18; }
 
index ad6d424..3e3d629 100644 (file)
@@ -151,10 +151,10 @@ static void describe_target(player_type *subject_ptr, eg_type *eg_ptr)
 #endif
 }
 
-static bool describe_hallucinated_target(player_type *subject_ptr, eg_type *eg_ptr)
+static process_result describe_hallucinated_target(player_type *subject_ptr, eg_type *eg_ptr)
 {
     if (!subject_ptr->image)
-        return FALSE;
+        return PROCESS_CONTINUE;
 
     concptr name = _("何か奇妙な物", "something strange");
 #ifdef JP
@@ -166,9 +166,9 @@ static bool describe_hallucinated_target(player_type *subject_ptr, eg_type *eg_p
     move_cursor_relative(eg_ptr->y, eg_ptr->x);
     eg_ptr->query = inkey();
     if ((eg_ptr->query != '\r') && (eg_ptr->query != '\n'))
-        return eg_ptr->query;
+        return PROCESS_TRUE;
 
-    return TRUE;
+    return PROCESS_FALSE;
 }
 
 static bool describe_grid_lore(player_type *subject_ptr, eg_type *eg_ptr)
@@ -444,16 +444,16 @@ static concptr decide_target_floor(player_type *subject_ptr, eg_type *eg_ptr)
         return format(
             _("クエスト「%s」(%d階相当)", "the entrance to the quest '%s'(level %d)"), quest[eg_ptr->g_ptr->special].name, quest[eg_ptr->g_ptr->special].level);
     }
-    
+
     if (has_flag(eg_ptr->f_ptr->flags, FF_BLDG) && !subject_ptr->current_floor_ptr->inside_arena)
         return building[eg_ptr->f_ptr->subtype].name;
-    
+
     if (has_flag(eg_ptr->f_ptr->flags, FF_ENTRANCE))
         return format(_("%s(%d階相当)", "%s(level %d)"), d_text + d_info[eg_ptr->g_ptr->special].text, d_info[eg_ptr->g_ptr->special].mindepth);
-    
+
     if (has_flag(eg_ptr->f_ptr->flags, FF_TOWN))
         return town_info[eg_ptr->g_ptr->special].name;
-    
+
     if (subject_ptr->wild_mode && (eg_ptr->feat == feat_floor))
         return _("道", "road");
 
@@ -483,8 +483,7 @@ static void describe_grid_monster_all(eg_type *eg_ptr)
         travel.cost[eg_ptr->y][eg_ptr->x]);
 #else
     sprintf(eg_ptr->out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, eg_ptr->name, eg_ptr->info, eg_ptr->g_ptr->info,
-        f_idx_str,
-        eg_ptr->g_ptr->dist, eg_ptr->g_ptr->cost, eg_ptr->g_ptr->when, (int)eg_ptr->y, (int)eg_ptr->x);
+        f_idx_str, eg_ptr->g_ptr->dist, eg_ptr->g_ptr->cost, eg_ptr->g_ptr->when, (int)eg_ptr->y, (int)eg_ptr->x);
 #endif
 }
 
@@ -504,9 +503,16 @@ char examine_grid(player_type *subject_ptr, const POSITION y, const POSITION x,
     eg_type *eg_ptr = initialize_eg_type(subject_ptr, &tmp_eg, y, x, mode, info);
     describe_scan_result(subject_ptr, eg_ptr);
     describe_target(subject_ptr, eg_ptr);
-    if (describe_hallucinated_target(subject_ptr, eg_ptr))
+    process_result next_target = describe_hallucinated_target(subject_ptr, eg_ptr);
+    switch (next_target) {
+    case PROCESS_FALSE:
         return 0;
-
+    case PROCESS_TRUE:
+        return eg_ptr->query;
+    case PROCESS_CONTINUE:
+        break;
+    }
+    
     s16b description_grid = describe_grid(subject_ptr, eg_ptr);
     if (within_char_util(description_grid))
         return (char)description_grid;
index c27ebb3..a828325 100644 (file)
@@ -8,7 +8,6 @@
  * are included in all such copies.  Other copyrights may also apply.
  */
 
-
 /* Purpose: a simple random number generator -BEN- */
 
 #if defined(WINDOWS)
@@ -17,9 +16,6 @@
 
 #include "term/z-rand.h"
 
-
-
-
 /*
  * Angband 2.7.9 introduced a new (optimized) random number generator,
  * based loosely on the old "random.c" from Berkeley but with some major
@@ -52,7 +48,6 @@
  * RNG algorithm was fully rewritten. Upper comment is OLD.
  */
 
-
 /*
  * Currently unused
  */
@@ -63,29 +58,25 @@ u16b Rand_place;
  * Only index 0 to 3 are used
  */
 u32b Rand_state[RAND_DEG] = {
-       123456789,
-       362436069,
-       521288629,
-       88675123,
+    123456789,
+    362436069,
+    521288629,
+    88675123,
 };
 
-
-static u32b u32b_rotl(const u32b x, int k)
-{
-       return (x << k) | (x >> (32 - k));
-}
+static u32b u32b_rotl(const u32b x, int k) { return (x << k) | (x >> (32 - k)); }
 
 /*
  * Initialize RNG state
  */
-static void Rand_seed(u32b seed, u32bstate)
+static void Rand_seed(u32b seed, u32b *state)
 {
-       int i;
+    int i;
 
-       for (i = 1; i <= 4; ++ i) {
-               seed = 1812433253UL * (seed ^ (seed >> 30)) + i;
-               state[i-1] = seed;
-       }
+    for (i = 1; i <= 4; ++i) {
+        seed = 1812433253UL * (seed ^ (seed >> 30)) + i;
+        state[i - 1] = seed;
+    }
 }
 
 /*
@@ -93,20 +84,20 @@ static void Rand_seed(u32b seed, u32b* state)
  */
 static u32b Rand_Xoshiro128starstar(u32b *state)
 {
-       const u32b result = u32b_rotl(state[1] * 5, 7) * 9;
+    const u32b result = u32b_rotl(state[1] * 5, 7) * 9;
 
-       const u32b t = state[1] << 9;
+    const u32b t = state[1] << 9;
 
-       state[2] ^= state[0];
-       state[3] ^= state[1];
-       state[1] ^= state[2];
-       state[0] ^= state[3];
+    state[2] ^= state[0];
+    state[3] ^= state[1];
+    state[1] ^= state[2];
+    state[0] ^= state[3];
 
-       state[2] ^= t;
+    state[2] ^= t;
 
-       state[3] = u32b_rotl(state[3], 11);
+    state[3] = u32b_rotl(state[3], 11);
 
-       return result;
+    return result;
 }
 
 static const u32b Rand_Xorshift_max = 0xFFFFFFFF;
@@ -114,46 +105,43 @@ static const u32b Rand_Xorshift_max = 0xFFFFFFFF;
 /*
  * Initialize the RNG using a new seed
  */
-void Rand_state_set(u32b seed)
-{
-       Rand_seed(seed, Rand_state);
-}
+void Rand_state_set(u32b seed) { Rand_seed(seed, Rand_state); }
 
 void Rand_state_init(void)
 {
 #ifdef RNG_DEVICE
 
-       FILE *fp = fopen(RNG_DEVICE, "r");
-       int n;
-       
-       do {
-               n = fread(Rand_state, sizeof(Rand_state[0]), 4, fp);
-       } while (n != 4 || (Rand_state[0] | Rand_state[1] | Rand_state[2] | Rand_state[3]) == 0);
-       
-       fclose(fp);
+    FILE *fp = fopen(RNG_DEVICE, "r");
+    int n;
+
+    do {
+        n = fread(Rand_state, sizeof(Rand_state[0]), 4, fp);
+    } while (n != 4 || (Rand_state[0] | Rand_state[1] | Rand_state[2] | Rand_state[3]) == 0);
+
+    fclose(fp);
 
 #elif defined(WINDOWS)
 
-       HCRYPTPROV hProvider;
+    HCRYPTPROV hProvider;
 
-       CryptAcquireContext(&hProvider, NULL, NULL, PROV_RSA_FULL, 0);
+    CryptAcquireContext(&hProvider, NULL, NULL, PROV_RSA_FULL, 0);
 
-       do {
-               CryptGenRandom(hProvider, sizeof(Rand_state[0]) * 4, (BYTE*)Rand_state);
-       } while ((Rand_state[0] | Rand_state[1] | Rand_state[2] | Rand_state[3]) == 0);
+    do {
+        CryptGenRandom(hProvider, sizeof(Rand_state[0]) * 4, (BYTE *)Rand_state);
+    } while ((Rand_state[0] | Rand_state[1] | Rand_state[2] | Rand_state[3]) == 0);
 
-       CryptReleaseContext(hProvider, 0);      
+    CryptReleaseContext(hProvider, 0);
 
 #else
 
-       /* Basic seed */
-       u32b seed = (time(NULL));
+    /* Basic seed */
+    u32b seed = (time(NULL));
 #ifdef SET_UID
-       /* Mutate the seed on Unix machines */
-       seed = ((seed >> 3) * (getpid() << 1));
+    /* Mutate the seed on Unix machines */
+    seed = ((seed >> 3) * (getpid() << 1));
 #endif
-       /* Seed the RNG */
-       Rand_state_set(seed);
+    /* Seed the RNG */
+    Rand_state_set(seed);
 
 #endif
 }
@@ -161,67 +149,61 @@ void Rand_state_init(void)
 /*
  * Backup the RNG state
  */
-void Rand_state_backup(u32bbackup_state)
+void Rand_state_backup(u32b *backup_state)
 {
-       int i;
+    int i;
 
-       for (i = 0; i < 4; ++ i) {
-               backup_state[i] = Rand_state[i];
-       }
+    for (i = 0; i < 4; ++i) {
+        backup_state[i] = Rand_state[i];
+    }
 }
 
 /*
  * Restore the RNG state
  */
-void Rand_state_restore(u32bbackup_state)
+void Rand_state_restore(u32b *backup_state)
 {
-       int i;
+    int i;
 
-       for (i = 0; i < 4; ++ i) {
-               Rand_state[i] = backup_state[i];
-       }
+    for (i = 0; i < 4; ++i) {
+        Rand_state[i] = backup_state[i];
+    }
 }
 
-
 /*
  * Extract a "random" number from 0 to m-1, via "division"
  */
-static s32b Rand_div_impl(s32b m, u32bstate)
+static s32b Rand_div_impl(s32b m, u32b *state)
 {
-       u32b scaling;
-       u32b past;
-       u32b ret;
-
-       /* Hack -- simple case */
-       if (m <= 1) return 0;
+    u32b scaling;
+    u32b past;
+    u32b ret;
 
-       scaling = Rand_Xorshift_max / m;
-       past = scaling * m;
+    /* Hack -- simple case */
+    if (m <= 1)
+        return 0;
 
-       do {
-               ret = Rand_Xoshiro128starstar(state);
-       } while (ret >= past);
+    scaling = Rand_Xorshift_max / m;
+    past = scaling * m;
 
-       return ret / scaling;
-}
+    do {
+        ret = Rand_Xoshiro128starstar(state);
+    } while (ret >= past);
 
-s32b Rand_div(s32b m)
-{
-       return Rand_div_impl(m, Rand_state);
+    return ret / scaling;
 }
 
-
-
+s32b Rand_div(s32b m) { return Rand_div_impl(m, Rand_state); }
 
 /*
  * The number of entries in the "randnor_table"
  */
-#define RANDNOR_NUM    256
+#define RANDNOR_NUM 256
 
 /*
  * The standard deviation of the "randnor_table"
  */
-#define RANDNOR_STD    64
+#define RANDNOR_STD 64
 
 /*
  * The normal distribution table for the "randnor()" function (below)
@@ -265,8 +247,6 @@ static s16b randnor_table[RANDNOR_NUM] =
        32765,   32765,   32765,   32766,   32766,      32766,   32766,   32767,
 };
 
-
-
 /*
  * Generate a random integer number of NORMAL distribution
  *
@@ -288,65 +268,58 @@ static s16b randnor_table[RANDNOR_NUM] =
  */
 s16b randnor(int mean, int stand)
 {
-       s16b tmp;
-       s16b offset;
-
-       s16b low = 0;
-       s16b high = RANDNOR_NUM;
-       if (stand < 1) return (s16b)(mean);
-
-       /* Roll for probability */
-       tmp = (s16b)randint0(32768);
-
-       /* Binary Search */
-       while (low < high)
-       {
-               int mid = (low + high) >> 1;
-
-               /* Move right if forced */
-               if (randnor_table[mid] < tmp)
-               {
-                       low = mid + 1;
-               }
-
-               /* Move left otherwise */
-               else
-               {
-                       high = (s16b)mid;
-               }
-       }
-
-       /* Convert the index into an offset */
-       offset = (long)stand * (long)low / RANDNOR_STD;
-
-       /* One half should be negative */
-       if (randint0(100) < 50) return (mean - offset);
-
-       /* One half should be positive */
-       return (mean + offset);
-}
+    s16b tmp;
+    s16b offset;
 
+    s16b low = 0;
+    s16b high = RANDNOR_NUM;
+    if (stand < 1)
+        return (s16b)(mean);
 
+    /* Roll for probability */
+    tmp = (s16b)randint0(32768);
+
+    /* Binary Search */
+    while (low < high) {
+        int mid = (low + high) >> 1;
+
+        /* Move right if forced */
+        if (randnor_table[mid] < tmp) {
+            low = mid + 1;
+        }
+
+        /* Move left otherwise */
+        else {
+            high = (s16b)mid;
+        }
+    }
+
+    /* Convert the index into an offset */
+    offset = (long)stand * (long)low / RANDNOR_STD;
+
+    /* One half should be negative */
+    if (randint0(100) < 50)
+        return (mean - offset);
+
+    /* One half should be positive */
+    return (mean + offset);
+}
 
 /*
  * Generates damage for "2d6" style dice rolls
  */
 s16b damroll(DICE_NUMBER num, DICE_SID sides)
 {
-       int i, sum = 0;
-       for (i = 0; i < num; i++) sum += randint1(sides);
-       return (s16b)(sum);
+    int i, sum = 0;
+    for (i = 0; i < num; i++)
+        sum += randint1(sides);
+    return (s16b)(sum);
 }
 
-
 /*
  * Same as above, but always maximal
  */
-s16b maxroll(DICE_NUMBER num, DICE_SID sides)
-{
-       return (num * sides);
-}
-
+s16b maxroll(DICE_NUMBER num, DICE_SID sides) { return (num * sides); }
 
 /*
  * Given a numerator and a denominator, supply a properly rounded result,
@@ -354,29 +327,28 @@ s16b maxroll(DICE_NUMBER num, DICE_SID sides)
  */
 s32b div_round(s32b n, s32b d)
 {
-        s32b tmp;
-
-        /* Refuse to divide by zero */
-        if (!d) return (n);
-
-        /* Division */
-        tmp = n / d;
-
-        /* Rounding */
-        if ((ABS(n) % ABS(d)) > randint0(ABS(d)))
-        {
-                /* Increase the absolute value */
-                if (n * d > 0L) tmp += 1L;
-                else            tmp -= 1L;
-        }
-
-        /* Return */
-        return (tmp);
+    s32b tmp;
+
+    /* Refuse to divide by zero */
+    if (!d)
+        return (n);
+
+    /* Division */
+    tmp = n / d;
+
+    /* Rounding */
+    if ((ABS(n) % ABS(d)) > randint0(ABS(d))) {
+        /* Increase the absolute value */
+        if (n * d > 0L)
+            tmp += 1L;
+        else
+            tmp -= 1L;
+    }
+
+    /* Return */
+    return (tmp);
 }
 
-
-
-
 /*
  * Extract a "random" number from 0 to m-1, using the RNG.
  *
@@ -384,20 +356,21 @@ s32b div_round(s32b n, s32b d)
  * "external" program parts like the main-*.c files.  It preserves
  * the current RNG state to prevent influences on game-play.
  *
- * Could also use rand() from <stdlib.h> directly. 
+ * Could also use rand() from <stdlib.h> directly.
  */
 s32b Rand_external(s32b m)
 {
-       static bool initialized = FALSE;
-       static u32b Rand_state_external[4];
-
-       if (!initialized)
-       {
-               /* Initialize with new seed */
-               u32b seed = (u32b)time(NULL);
-               Rand_seed(seed, Rand_state_external);
-               initialized = TRUE;
-       }
-
-       return Rand_div_impl(m, Rand_state_external);
+    static bool initialized = FALSE;
+    static u32b Rand_state_external[4];
+
+    if (!initialized) {
+        /* Initialize with new seed */
+        u32b seed = (u32b)time(NULL);
+        Rand_seed(seed, Rand_state_external);
+        initialized = TRUE;
+    }
+
+    return Rand_div_impl(m, Rand_state_external);
 }
+
+bool next_bool() { return randint0(2) == 0; }
index c679bde..33f595b 100644 (file)
@@ -8,96 +8,73 @@
  * are included in all such copies.  Other copyrights may also apply.
  */
 
-
 #ifndef INCLUDED_Z_RAND_H
 #define INCLUDED_Z_RAND_H
 
 #include "system/h-basic.h"
 
-
-
 /**** Available constants ****/
 
-
 /*
  * Random Number Generator -- Degree of "complex" RNG -- see "misc.c"
  * This value is hard-coded at 63 for a wide variety of reasons.
  */
 #define RAND_DEG 63
 
-
-
-
 /**** Available macros ****/
 
-
 /*
  * Generates a random long integer X where O<=X<M.
  * The integer X falls along a uniform distribution.
  * For example, if M is 100, you get "percentile dice"
  */
-#define randint0(M) \
-       ((s32b)Rand_div(M))
+#define randint0(M) ((s32b)Rand_div(M))
 
 /*
  * Generates a random long integer X where A<=X<=B
  * The integer X falls along a uniform distribution.
  * Note: rand_range(0,N-1) == randint0(N)
  */
-#define rand_range(A,B) \
-       ((A) + (randint0(1+(B)-(A))))
+#define rand_range(A, B) ((A) + (randint0(1 + (B) - (A))))
 
 /*
  * Generate a random long integer X where A-D<=X<=A+D
  * The integer X falls along a uniform distribution.
  * Note: rand_spread(A,D) == rand_range(A-D,A+D)
  */
-#define rand_spread(A,D) \
-       ((A) + (randint0(1+(D)+(D))) - (D))
-
+#define rand_spread(A, D) ((A) + (randint0(1 + (D) + (D))) - (D))
 
 /*
  * Generate a random long integer X where 1<=X<=M
  * Also, "correctly" handle the case of M<=1
  */
-#define randint1(M) \
-       (randint0(M) + 1)
-
+#define randint1(M) (randint0(M) + 1)
 
 /*
  * Evaluate to TRUE "P" percent of the time
  */
-#define magik(P) \
-       (randint0(100) < (P))
+#define magik(P) (randint0(100) < (P))
 
-
-#define one_in_(X) \
-       (randint0(X) == 0)
+#define one_in_(X) (randint0(X) == 0)
 
 /*
  * Evaluate to TRUE "S" percent of the time
  */
-#define saving_throw(S) \
-       (randint0(100) < (S))
-
-
-/**** Available Variables ****/
+#define saving_throw(S) (randint0(100) < (S))
 
 extern u16b Rand_place;
 extern u32b Rand_state[RAND_DEG];
 
-
-/**** Available Functions ****/
-
-extern void Rand_state_init(void);
-extern void Rand_state_set(u32b seed);
-extern void Rand_state_backup(u32b* backup_state);
-extern void Rand_state_restore(u32b* backup_state);
-extern s32b Rand_div(s32b m);
-extern s16b randnor(int mean, int stand);
-extern s16b damroll(DICE_NUMBER num, DICE_SID sides);
-extern s16b maxroll(DICE_NUMBER num, DICE_SID sides);
-extern s32b div_round(s32b n, s32b d);
-extern s32b Rand_external(s32b m);
+void Rand_state_init(void);
+void Rand_state_set(u32b seed);
+void Rand_state_backup(u32b *backup_state);
+void Rand_state_restore(u32b *backup_state);
+s32b Rand_div(s32b m);
+s16b randnor(int mean, int stand);
+s16b damroll(DICE_NUMBER num, DICE_SID sides);
+s16b maxroll(DICE_NUMBER num, DICE_SID sides);
+s32b div_round(s32b n, s32b d);
+s32b Rand_external(s32b m);
+bool next_bool();
 
 #endif
index 1b977cc..82a44c0 100644 (file)
@@ -1,4 +1,4 @@
-#include "view/display-self-info.h"
+#include "view/display-self-info.h"
 #include "io/input-key-acceptor.h"
 #include "player-info/avatar.h"
 #include "player-info/self-info-util.h"
@@ -12,7 +12,7 @@ void display_life_rating(player_type *creature_ptr, self_info_type *si_ptr)
     strcpy(si_ptr->plev_buf, "");
     int percent
         = (int)(((long)creature_ptr->player_hp[PY_MAX_LEVEL - 1] * 200L) / (2 * creature_ptr->hitdie + ((PY_MAX_LEVEL - 1 + 3) * (creature_ptr->hitdie + 1))));
-    sprintf(si_ptr->plev_buf, _("\8c»\8dÝ\82Ì\91Ì\97Í\83\89\83\93\83N : %d/100", "Your current Life Rating is %d/100."), percent);
+    sprintf(si_ptr->plev_buf, _("現在の体力ランク : %d/100", "Your current Life Rating is %d/100."), percent);
     strcpy(si_ptr->buf[0], si_ptr->plev_buf);
     si_ptr->info[si_ptr->line++] = si_ptr->buf[0];
     si_ptr->info[si_ptr->line++] = "";
@@ -20,7 +20,7 @@ void display_life_rating(player_type *creature_ptr, self_info_type *si_ptr)
 
 void display_max_base_status(player_type *creature_ptr, self_info_type *si_ptr)
 {
-    si_ptr->info[si_ptr->line++] = _("\94\\97Í\82Ì\8dÅ\91å\92l", "Limits of maximum stats");
+    si_ptr->info[si_ptr->line++] = _("能力の最大値", "Limits of maximum stats");
     for (base_status_type v_nr = 0; v_nr < A_MAX; v_nr++) {
         char stat_desc[80];
         sprintf(stat_desc, "%s 18/%d", stat_names[v_nr], creature_ptr->stat_max_max[v_nr] - 18);
@@ -32,7 +32,7 @@ void display_max_base_status(player_type *creature_ptr, self_info_type *si_ptr)
 void display_virtue(player_type *creature_ptr, self_info_type *si_ptr)
 {
     si_ptr->info[si_ptr->line++] = "";
-    sprintf(si_ptr->plev_buf, _("\8c»\8dÝ\82Ì\91®\90« : %s(%ld)", "Your alignment : %s(%ld)"), your_alignment(creature_ptr), (long int)creature_ptr->align);
+    sprintf(si_ptr->plev_buf, _("現在の属性 : %s(%ld)", "Your alignment : %s(%ld)"), your_alignment(creature_ptr), (long int)creature_ptr->align);
     strcpy(si_ptr->buf[1], si_ptr->plev_buf);
     si_ptr->info[si_ptr->line++] = si_ptr->buf[1];
     for (int v_nr = 0; v_nr < 8; v_nr++) {
@@ -40,33 +40,33 @@ void display_virtue(player_type *creature_ptr, self_info_type *si_ptr)
         char vir_desc[80];
         int tester = creature_ptr->virtues[v_nr];
         strcpy(vir_name, virtue[(creature_ptr->vir_types[v_nr]) - 1]);
-        sprintf(vir_desc, _("\82¨\82Á\82Æ\81B%s\82Ì\8fî\95ñ\82È\82µ\81B", "Oops. No info about %s."), vir_name);
+        sprintf(vir_desc, _("おっと。%sの情報なし。", "Oops. No info about %s."), vir_name);
         if (tester < -100)
-            sprintf(vir_desc, _("[%s]\82Ì\91Î\8bÉ (%d)", "You are the polar opposite of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の対極 (%d)", "You are the polar opposite of %s (%d)."), vir_name, tester);
         else if (tester < -80)
-            sprintf(vir_desc, _("[%s]\82Ì\91å\93G (%d)", "You are an arch-enemy of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の大敵 (%d)", "You are an arch-enemy of %s (%d)."), vir_name, tester);
         else if (tester < -60)
-            sprintf(vir_desc, _("[%s]\82Ì\8b­\93G (%d)", "You are a bitter enemy of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の強敵 (%d)", "You are a bitter enemy of %s (%d)."), vir_name, tester);
         else if (tester < -40)
-            sprintf(vir_desc, _("[%s]\82Ì\93G (%d)", "You are an enemy of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の敵 (%d)", "You are an enemy of %s (%d)."), vir_name, tester);
         else if (tester < -20)
-            sprintf(vir_desc, _("[%s]\82Ì\8dß\8eÒ (%d)", "You have sinned against %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の罪者 (%d)", "You have sinned against %s (%d)."), vir_name, tester);
         else if (tester < 0)
-            sprintf(vir_desc, _("[%s]\82Ì\96À\93¹\8eÒ (%d)", "You have strayed from the path of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の迷道者 (%d)", "You have strayed from the path of %s (%d)."), vir_name, tester);
         else if (tester == 0)
-            sprintf(vir_desc, _("[%s]\82Ì\92\86\97§\8eÒ (%d)", "You are neutral to %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の中立者 (%d)", "You are neutral to %s (%d)."), vir_name, tester);
         else if (tester < 20)
-            sprintf(vir_desc, _("[%s]\82Ì\8f¬\93¿\8eÒ (%d)", "You are somewhat virtuous in %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の小徳者 (%d)", "You are somewhat virtuous in %s (%d)."), vir_name, tester);
         else if (tester < 40)
-            sprintf(vir_desc, _("[%s]\82Ì\92\86\93¿\8eÒ (%d)", "You are virtuous in %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の中徳者 (%d)", "You are virtuous in %s (%d)."), vir_name, tester);
         else if (tester < 60)
-            sprintf(vir_desc, _("[%s]\82Ì\8d\82\93¿\8eÒ (%d)", "You are very virtuous in %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の高徳者 (%d)", "You are very virtuous in %s (%d)."), vir_name, tester);
         else if (tester < 80)
-            sprintf(vir_desc, _("[%s]\82Ì\94e\8eÒ (%d)", "You are a champion of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の覇者 (%d)", "You are a champion of %s (%d)."), vir_name, tester);
         else if (tester < 100)
-            sprintf(vir_desc, _("[%s]\82Ì\88Ì\91å\82È\94e\8eÒ (%d)", "You are a great champion of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の偉大な覇者 (%d)", "You are a great champion of %s (%d)."), vir_name, tester);
         else
-            sprintf(vir_desc, _("[%s]\82Ì\8bï\8c»\8eÒ (%d)", "You are the living embodiment of %s (%d)."), vir_name, tester);
+            sprintf(vir_desc, _("[%s]の具現者 (%d)", "You are the living embodiment of %s (%d)."), vir_name, tester);
 
         strcpy(si_ptr->v_string[v_nr], vir_desc);
         si_ptr->info[si_ptr->line++] = si_ptr->v_string[v_nr];
@@ -78,7 +78,7 @@ void display_mimic_race_ability(player_type *creature_ptr, self_info_type *si_pt
     switch (creature_ptr->mimic_form) {
     case MIMIC_DEMON:
     case MIMIC_DEMON_LORD:
-        sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í %d \83_\83\81\81[\83W\82Ì\92n\8d\96\82©\89Î\89\8a\82Ì\83u\83\8c\83X\82ð\93f\82­\82±\82Æ\82ª\82Å\82«\82é\81B(%d MP)", "You can nether breathe, dam. %d (cost %d)."),
+        sprintf(si_ptr->plev_buf, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", "You can nether breathe, dam. %d (cost %d)."),
             3 * creature_ptr->lev, 10 + creature_ptr->lev / 3);
 
         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
@@ -87,7 +87,7 @@ void display_mimic_race_ability(player_type *creature_ptr, self_info_type *si_pt
         if (creature_ptr->lev <= 1)
             break;
 
-        sprintf(si_ptr->plev_buf, _("\82 \82È\82½\82Í\93G\82©\82ç %d-%d HP \82Ì\90\96½\97Í\82ð\8bz\8eû\82Å\82«\82é\81B(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
+        sprintf(si_ptr->plev_buf, _("あなたは敵から %d-%d HP の生命力を吸収できる。(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
             creature_ptr->lev + MAX(1, creature_ptr->lev / 10), creature_ptr->lev + creature_ptr->lev * MAX(1, creature_ptr->lev / 10),
             1 + (creature_ptr->lev / 3));
         si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
@@ -101,7 +101,7 @@ void display_self_info(self_info_type *si_ptr)
     for (int k = 1; k < 24; k++)
         prt("", k, 13);
 
-    prt(_("        \82 \82È\82½\82Ì\8fó\91Ô:", "     Your Attributes:"), 1, 15);
+    prt(_("        あなたの状態:", "     Your Attributes:"), 1, 15);
     int k = 2;
     for (int j = 0; j < si_ptr->line; j++) {
         prt(si_ptr->info[j], k++, 15);
@@ -110,13 +110,13 @@ void display_self_info(self_info_type *si_ptr)
         if ((k != 22) || (j + 1 >= si_ptr->line))
             continue;
 
-        prt(_("-- \91±\82­ --", "-- more --"), k, 15);
+        prt(_("-- 続く --", "-- more --"), k, 15);
         inkey();
         for (; k > 2; k--)
             prt("", k, 15);
     }
 
-    prt(_("[\89½\82©\83L\81[\82ð\89\9f\82·\82Æ\83Q\81[\83\80\82É\96ß\82è\82Ü\82·]", "[Press any key to continue]"), k, 13);
+    prt(_("[何かキーを押すとゲームに戻ります]", "[Press any key to continue]"), k, 13);
     inkey();
     screen_load();
 }