<ClCompile Include="..\..\src\object-activation\activation-resistance.c" />\r
<ClCompile Include="..\..\src\object-activation\activation-teleport.c" />\r
<ClCompile Include="..\..\src\object-activation\activation-util.c" />\r
+ <ClCompile Include="..\..\src\player-info\race-ability-info.c" />\r
<ClCompile Include="..\..\src\player-info\self-info-util.c" />\r
<ClCompile Include="..\..\src\room\vault-builder.c" />\r
<ClCompile Include="..\..\src\specific-object\blade-turner.c" />\r
<ClInclude Include="..\..\src\object-activation\activation-teleport.h" />\r
<ClInclude Include="..\..\src\object-activation\activation-util.h" />\r
<ClInclude Include="..\..\src\player-info\base-status-types.h" />\r
+ <ClInclude Include="..\..\src\player-info\race-ability-info.h" />\r
<ClInclude Include="..\..\src\player-info\self-info-util.h" />\r
<ClInclude Include="..\..\src\room\vault-builder.h" />\r
<ClInclude Include="..\..\src\specific-object\blade-turner.h" />\r
<ClCompile Include="..\..\src\player-info\avatar.c">
<Filter>player-info</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\player-info\race-ability-info.c">
+ <Filter>player-info</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\combat\shoot.h">
<ClInclude Include="..\..\src\player-info\base-status-types.h">
<Filter>player-info</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\player-info\race-ability-info.h">
+ <Filter>player-info</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
\
player-info/avatar.h player-info/avatar.c \
player-info/base-status-types.h \
+ player-info/race-ability-info.c player-info/race-ability-info.h \
player-info/self-info.c player-info/self-info.h \
player-info/self-info-util.c player-info/self-info-util.h \
\
--- /dev/null
+#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)
+{
+ switch (creature_ptr->prace) {
+ 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).");
+
+ 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).");
+
+ 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),
+ (5 + (creature_ptr->lev / 5)));
+ si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
+ }
+
+ 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).");
+
+ 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).");
+
+ 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).");
+
+ 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).");
+
+ 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).");
+
+ 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).");
+
+ 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).");
+
+ 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).");
+
+ 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)."),
+ 3 * creature_ptr->lev);
+ si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
+ }
+
+ 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).");
+
+ 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);
+ 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)."),
+ creature_ptr->lev);
+ si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
+ }
+
+ 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)."),
+ (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,
+ 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)."),
+ 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)."),
+ 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)."),
+ creature_ptr->lev);
+ si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
+ }
+
+ break;
+ 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).");
+
+ 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).");
+
+ 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)."),
+ 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).");
+
+ 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).");
+
+ 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)."),
+ 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).");
+
+ 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)."),
+ (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)."),
+ 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)."),
+ 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)."),
+ 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)."),
+ creature_ptr->lev * 5);
+
+ si_ptr->info[si_ptr->line++] = si_ptr->plev_buf;
+ break;
+ default:
+ break;
+ }
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+
+typedef struct self_info_type self_info_type;
+void set_race_ability_info(player_type *creature_ptr, self_info_type *si_ptr);
#include "object-enchant/trc-types.h"
#include "object/object-flags.h"
#include "player-info/avatar.h"
+#include "player-info/race-ability-info.h"
#include "player-info/self-info-util.h"
#include "player/attack-defense-types.h"
#include "player/player-class.h"
display_max_base_status(creature_ptr, si_ptr);
display_virtue(creature_ptr, si_ptr);
si_ptr->info[si_ptr->line++] = "";
- if (creature_ptr->mimic_form) {
+ if (creature_ptr->mimic_form)
display_mimic_race_ability(creature_ptr, si_ptr);
- } else {
- switch (creature_ptr->prace) {
- case RACE_NIBELUNG:
- case RACE_DWARF:
- if (creature_ptr->lev > 4)
- 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++] = _("あなたは食料を生成できる。(10 MP)", "You can produce food (cost 10).");
-
- break;
- case RACE_GNOME:
- if (creature_ptr->lev > 4) {
- 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;
- }
-
- break;
- case RACE_HALF_ORC:
- if (creature_ptr->lev > 2)
- 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++] = _("あなたは狂暴化することができる。(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++] = _("あなたはシャドウシフトすることができる。(50 MP)", "You can Shift Shadows (cost 50).");
-
- if (creature_ptr->lev > 39)
- 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++] = _("あなたは狂暴化することができる。(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++] = _("あなたは爆発のルーンを仕掛けることができる。(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++] = _("あなたは石の壁を壊すことができる。(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++] = _("あなたはモンスターをスキャンすることができる。(20 MP)", "You can probe monsters (cost 20).");
-
- break;
- case RACE_CYCLOPS:
- if (creature_ptr->lev > 19) {
- 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;
- }
-
- break;
- case RACE_YEEK:
- if (creature_ptr->lev > 14)
- 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, _("あなたは %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, _("あなたは %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;
- }
-
- break;
- case RACE_DARK_ELF:
- if (creature_ptr->lev > 1) {
- 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, _("あなたは %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, _("あなたは %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, _("あなたは %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, _("あなたは %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;
- }
-
- break;
- case RACE_GOLEM:
- if (creature_ptr->lev > 19)
- si_ptr->info[si_ptr->line++]
- = _("あなたは 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++] = _("あなたは失った経験値を回復することができる。(30 MP)", "You can restore lost experience (cost 30).");
-
- break;
- case RACE_VAMPIRE:
- if (creature_ptr->lev <= 1)
- break;
-
- 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++] = _("あなたは泣き叫んで敵を恐怖させることができる。(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++]
- = _("あなたは敵を眠らせる魔法の粉を投げることができる。(12 MP)", "You can throw magical dust which induces sleep (cost 12).");
-
- break;
- case RACE_BALROG:
- 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++]
- = _("あなたは 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, _("あなたは %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, _("あなたは %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, _("あなたは %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,
- _("あなたは %d ダメージのビームキャノンを撃つことができる。(40 MP)", "You can fire a beam cannon with damage %d (cost 40)."),
- creature_ptr->lev * 2);
- else
- 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;
- break;
- default:
- break;
- }
- }
-
+ else
+ set_race_ability_info(creature_ptr, si_ptr);
+
switch (creature_ptr->pclass) {
case CLASS_WARRIOR:
if (creature_ptr->lev > 39) {