OSDN Git Service

[Refactor] player_race_type を enum から enum class に置換.キャストはstatic_cast<>を利用.
authorDeskull <61610939+sikabane-works@users.noreply.github.com>
Sat, 14 Aug 2021 03:03:07 +0000 (12:03 +0900)
committerDeskull <61610939+sikabane-works@users.noreply.github.com>
Sat, 14 Aug 2021 03:03:07 +0000 (12:03 +0900)
75 files changed:
src/autopick/autopick-destroyer.cpp
src/avatar/avatar.cpp
src/birth/birth-body-spec.cpp
src/birth/birth-select-race.cpp
src/birth/birth-stat.cpp
src/birth/birth-wizard.cpp
src/birth/character-builder.cpp
src/birth/history-generator.cpp
src/birth/inventory-initializer.cpp
src/birth/quick-start.cpp
src/cmd-item/cmd-destroy.cpp
src/cmd-item/cmd-eat.cpp
src/cmd-item/cmd-equipment.cpp
src/cmd-visual/cmd-draw.cpp
src/core/game-play.cpp
src/core/scores.cpp
src/core/turn-compensator.cpp
src/effect/effect-player-resist-hurt.cpp
src/floor/fixed-map-generator.cpp
src/floor/pattern-walk.cpp
src/inventory/inventory-curse.cpp
src/io-dump/character-dump.cpp
src/knowledge/knowledge-self.cpp
src/load/load.cpp
src/load/world-loader.cpp
src/market/building-initializer.cpp
src/market/building-service.cpp
src/monster-attack/monster-attack-lose.cpp
src/monster-attack/monster-attack-status.cpp
src/monster-attack/monster-eating.cpp
src/mspell/high-resistance-checker.cpp
src/mspell/mspell-judgement.cpp
src/mutation/mutation-calculator.cpp
src/mutation/mutation-investor-remover.cpp
src/object-use/quaff-execution.cpp
src/object/warning.cpp
src/player-ability/player-constitution.cpp
src/player-ability/player-dexterity.cpp
src/player-ability/player-strength.cpp
src/player-info/alignment.cpp
src/player-info/race-ability-info.cpp
src/player-info/resistance-info.cpp
src/player-status/player-basic-statistics.cpp
src/player-status/player-infravision.cpp
src/player-status/player-speed.cpp
src/player-status/player-stealth.cpp
src/player/patron.cpp
src/player/player-damage.cpp
src/player/player-move.cpp
src/player/player-race-types.h
src/player/player-race.cpp
src/player/player-status-flags.cpp
src/player/player-status-resist.cpp
src/player/player-status.cpp
src/player/race-resistances.cpp
src/racial/race-racial-command-setter.cpp
src/racial/racial-android.cpp
src/racial/racial-switcher.cpp
src/specific-object/bloody-moon.cpp
src/specific-object/death-scythe.cpp
src/status/bad-status-setter.cpp
src/status/element-resistance.cpp
src/status/experience.cpp
src/status/shape-changer.cpp
src/store/pricing.cpp
src/store/purchase-order.cpp
src/store/store-owners.cpp
src/store/store-owners.h
src/target/target-describer.cpp
src/view/display-player-middle.cpp
src/view/display-player-stat-info.cpp
src/view/display-store.cpp
src/window/main-window-left-frame.cpp
src/wizard/wizard-special-process.cpp
src/world/world.cpp

index 754aa93..42bcfe9 100644 (file)
@@ -41,7 +41,7 @@ static bool is_leave_special_item(player_type *player_ptr, object_type *o_ptr)
     if (!leave_special)
         return true;
 
-    if (player_ptr->prace == RACE_BALROG) {
+    if (player_ptr->prace == player_race_type::RACE_BALROG) {
         if (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_CORPSE && angband_strchr("pht", r_info[o_ptr->pval].d_char))
             return false;
     } else if (player_ptr->pclass == CLASS_ARCHER) {
index bc5bf01..285f33d 100644 (file)
@@ -334,79 +334,79 @@ void initialize_virtues(player_type *creature_ptr)
 
     /* Get one virtue based on race */
     switch (creature_ptr->prace) {
-    case RACE_HUMAN:
-    case RACE_HALF_ELF:
-    case RACE_DUNADAN:
+    case player_race_type::RACE_HUMAN:
+    case player_race_type::RACE_HALF_ELF:
+    case player_race_type::RACE_DUNADAN:
         creature_ptr->vir_types[i++] = V_INDIVIDUALISM;
         break;
-    case RACE_ELF:
-    case RACE_SPRITE:
-    case RACE_ENT:
-    case RACE_MERFOLK:
+    case player_race_type::RACE_ELF:
+    case player_race_type::RACE_SPRITE:
+    case player_race_type::RACE_ENT:
+    case player_race_type::RACE_MERFOLK:
         creature_ptr->vir_types[i++] = V_NATURE;
         break;
-    case RACE_HOBBIT:
-    case RACE_HALF_OGRE:
+    case player_race_type::RACE_HOBBIT:
+    case player_race_type::RACE_HALF_OGRE:
         creature_ptr->vir_types[i++] = V_TEMPERANCE;
         break;
-    case RACE_DWARF:
-    case RACE_KLACKON:
-    case RACE_ANDROID:
+    case player_race_type::RACE_DWARF:
+    case player_race_type::RACE_KLACKON:
+    case player_race_type::RACE_ANDROID:
         creature_ptr->vir_types[i++] = V_DILIGENCE;
         break;
-    case RACE_GNOME:
-    case RACE_CYCLOPS:
+    case player_race_type::RACE_GNOME:
+    case player_race_type::RACE_CYCLOPS:
         creature_ptr->vir_types[i++] = V_KNOWLEDGE;
         break;
-    case RACE_HALF_ORC:
-    case RACE_AMBERITE:
-    case RACE_KOBOLD:
+    case player_race_type::RACE_HALF_ORC:
+    case player_race_type::RACE_AMBERITE:
+    case player_race_type::RACE_KOBOLD:
         creature_ptr->vir_types[i++] = V_HONOUR;
         break;
-    case RACE_HALF_TROLL:
-    case RACE_BARBARIAN:
+    case player_race_type::RACE_HALF_TROLL:
+    case player_race_type::RACE_BARBARIAN:
         creature_ptr->vir_types[i++] = V_VALOUR;
         break;
-    case RACE_HIGH_ELF:
-    case RACE_KUTAR:
+    case player_race_type::RACE_HIGH_ELF:
+    case player_race_type::RACE_KUTAR:
         creature_ptr->vir_types[i++] = V_VITALITY;
         break;
-    case RACE_HALF_GIANT:
-    case RACE_GOLEM:
-    case RACE_ARCHON:
-    case RACE_BALROG:
+    case player_race_type::RACE_HALF_GIANT:
+    case player_race_type::RACE_GOLEM:
+    case player_race_type::RACE_ARCHON:
+    case player_race_type::RACE_BALROG:
         creature_ptr->vir_types[i++] = V_JUSTICE;
         break;
-    case RACE_HALF_TITAN:
+    case player_race_type::RACE_HALF_TITAN:
         creature_ptr->vir_types[i++] = V_HARMONY;
         break;
-    case RACE_YEEK:
+    case player_race_type::RACE_YEEK:
         creature_ptr->vir_types[i++] = V_SACRIFICE;
         break;
-    case RACE_MIND_FLAYER:
+    case player_race_type::RACE_MIND_FLAYER:
         creature_ptr->vir_types[i++] = V_ENLIGHTEN;
         break;
-    case RACE_DARK_ELF:
-    case RACE_DRACONIAN:
-    case RACE_S_FAIRY:
+    case player_race_type::RACE_DARK_ELF:
+    case player_race_type::RACE_DRACONIAN:
+    case player_race_type::RACE_S_FAIRY:
         creature_ptr->vir_types[i++] = V_ENCHANT;
         break;
-    case RACE_NIBELUNG:
+    case player_race_type::RACE_NIBELUNG:
         creature_ptr->vir_types[i++] = V_PATIENCE;
         break;
-    case RACE_IMP:
+    case player_race_type::RACE_IMP:
         creature_ptr->vir_types[i++] = V_FAITH;
         break;
-    case RACE_ZOMBIE:
-    case RACE_SKELETON:
-    case RACE_VAMPIRE:
-    case RACE_SPECTRE:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_VAMPIRE:
+    case player_race_type::RACE_SPECTRE:
         creature_ptr->vir_types[i++] = V_UNLIFE;
         break;
-    case RACE_BEASTMAN:
+    case player_race_type::RACE_BEASTMAN:
         creature_ptr->vir_types[i++] = V_CHANCE;
         break;
-    case MAX_RACES:
+    case player_race_type::MAX:
         break;
     }
 
index f8c640f..9e87017 100644 (file)
@@ -65,7 +65,7 @@ void get_money(player_type *creature_ptr)
         gold /= 2;
     else if (creature_ptr->pseikaku == PERSONALITY_MUNCHKIN)
         gold = 10000000;
-    if (creature_ptr->prace == RACE_ANDROID)
+    if (creature_ptr->prace == player_race_type::RACE_ANDROID)
         gold /= 5;
 
     creature_ptr->au = gold;
index a19d645..a2228f9 100644 (file)
@@ -95,7 +95,7 @@ static bool select_race(player_type *creature_ptr, char *sym, int *k)
 {
     char cur[80];
     sprintf(cur, "%c%c%s", '*', p2, _("ランダム", "Random"));
-    int cs = creature_ptr->prace;
+    int cs = static_cast<int>(creature_ptr->prace);
     int os = MAX_RACES;
     while (true) {
         display_race_stat(cs, &os, cur, sym);
@@ -166,7 +166,7 @@ bool get_player_race(player_type *creature_ptr)
         return false;
 
     creature_ptr->prace = static_cast<player_race_type>(k);
-    rp_ptr = &race_info[creature_ptr->prace];
+    rp_ptr = &race_info[k];
     c_put_str(TERM_L_BLUE, rp_ptr->title, 4, 15);
     return true;
 }
index 98e9af0..213621c 100644 (file)
@@ -92,10 +92,10 @@ u16b get_expfact(player_type *creature_ptr)
 {
     u16b expfact = rp_ptr->r_exp;
 
-    if (creature_ptr->prace != RACE_ANDROID)
+    if (creature_ptr->prace != player_race_type::RACE_ANDROID)
         expfact += cp_ptr->c_exp;
     if (((creature_ptr->pclass == CLASS_MONK) || (creature_ptr->pclass == CLASS_FORCETRAINER) || (creature_ptr->pclass == CLASS_NINJA))
-        && ((creature_ptr->prace == RACE_KLACKON) || (creature_ptr->prace == RACE_SPRITE)))
+        && ((creature_ptr->prace == player_race_type::RACE_KLACKON) || (creature_ptr->prace == player_race_type::RACE_SPRITE)))
         expfact -= 15;
 
     return expfact;
index e7d7516..4030a9f 100644 (file)
@@ -158,14 +158,14 @@ static bool get_player_sex(player_type *creature_ptr, char *buf)
 static bool let_player_select_race(player_type *creature_ptr)
 {
     clear_from(10);
-    creature_ptr->prace = RACE_HUMAN;
+    creature_ptr->prace = player_race_type::RACE_HUMAN;
     while (true) {
         char temp[80 * 10];
         if (!get_player_race(creature_ptr))
             return false;
 
         clear_from(10);
-        shape_buffer(race_explanations[creature_ptr->prace], 74, temp, sizeof(temp));
+        shape_buffer(race_explanations[static_cast<int>(creature_ptr->prace)], 74, temp, sizeof(temp));
         concptr t = temp;
         for (int i = 0; i < 10; i++) {
             if (t[0] == 0)
index 489d16e..1349c89 100644 (file)
@@ -55,7 +55,7 @@ static void write_birth_diary(player_type *creature_ptr)
     char buf[80];
     sprintf(buf, _("%s性別に%sを選択した。", "%schose %s gender."), indent, sex_info[creature_ptr->psex].title);
     exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 1, buf);
-    sprintf(buf, _("%s種族に%sを選択した。", "%schose %s race."), indent, race_info[creature_ptr->prace].title);
+    sprintf(buf, _("%s種族に%sを選択した。", "%schose %s race."), indent, race_info[static_cast<int>(creature_ptr->prace)].title);
     exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 1, buf);
     sprintf(buf, _("%s職業に%sを選択した。", "%schose %s class."), indent, class_info[creature_ptr->pclass].title);
     exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 1, buf);
@@ -105,7 +105,7 @@ void player_birth(player_type *creature_ptr)
     }
 
     seed_wilderness();
-    if (creature_ptr->prace == RACE_BEASTMAN)
+    if (creature_ptr->prace == player_race_type::RACE_BEASTMAN)
         creature_ptr->hack_mutation = true;
     else
         creature_ptr->hack_mutation = false;
index 61efdb6..6d95bd9 100644 (file)
@@ -7,78 +7,78 @@
 static int get_history_chart(player_type *creature_ptr)
 {
     switch (creature_ptr->prace) {
-    case RACE_AMBERITE:
+    case player_race_type::RACE_AMBERITE:
         return 67;
-    case RACE_HUMAN:
-    case RACE_BARBARIAN:
-    case RACE_DUNADAN:
+    case player_race_type::RACE_HUMAN:
+    case player_race_type::RACE_BARBARIAN:
+    case player_race_type::RACE_DUNADAN:
         return 1;
-    case RACE_HALF_ELF:
+    case player_race_type::RACE_HALF_ELF:
         return 4;
-    case RACE_ELF:
-    case RACE_HIGH_ELF:
+    case player_race_type::RACE_ELF:
+    case player_race_type::RACE_HIGH_ELF:
         return 7;
-    case RACE_HOBBIT:
+    case player_race_type::RACE_HOBBIT:
         return 10;
-    case RACE_GNOME:
+    case player_race_type::RACE_GNOME:
         return 13;
-    case RACE_DWARF:
+    case player_race_type::RACE_DWARF:
         return 16;
-    case RACE_HALF_ORC:
+    case player_race_type::RACE_HALF_ORC:
         return 19;
-    case RACE_HALF_TROLL:
+    case player_race_type::RACE_HALF_TROLL:
         return 22;
-    case RACE_DARK_ELF:
+    case player_race_type::RACE_DARK_ELF:
         return 69;
-    case RACE_HALF_OGRE:
+    case player_race_type::RACE_HALF_OGRE:
         return 74;
-    case RACE_HALF_GIANT:
+    case player_race_type::RACE_HALF_GIANT:
         return 75;
-    case RACE_HALF_TITAN:
+    case player_race_type::RACE_HALF_TITAN:
         return 76;
-    case RACE_CYCLOPS:
+    case player_race_type::RACE_CYCLOPS:
         return 77;
-    case RACE_YEEK:
+    case player_race_type::RACE_YEEK:
         return 78;
-    case RACE_KOBOLD:
+    case player_race_type::RACE_KOBOLD:
         return 82;
-    case RACE_KLACKON:
+    case player_race_type::RACE_KLACKON:
         return 84;
-    case RACE_NIBELUNG:
+    case player_race_type::RACE_NIBELUNG:
         return 87;
-    case RACE_DRACONIAN:
+    case player_race_type::RACE_DRACONIAN:
         return 89;
-    case RACE_MIND_FLAYER:
+    case player_race_type::RACE_MIND_FLAYER:
         return 92;
-    case RACE_IMP:
+    case player_race_type::RACE_IMP:
         return 94;
-    case RACE_GOLEM:
+    case player_race_type::RACE_GOLEM:
         return 98;
-    case RACE_SKELETON:
+    case player_race_type::RACE_SKELETON:
         return 102;
-    case RACE_ZOMBIE:
+    case player_race_type::RACE_ZOMBIE:
         return 107;
-    case RACE_VAMPIRE:
+    case player_race_type::RACE_VAMPIRE:
         return 113;
-    case RACE_SPECTRE:
+    case player_race_type::RACE_SPECTRE:
         return 118;
-    case RACE_SPRITE:
+    case player_race_type::RACE_SPRITE:
         return 124;
-    case RACE_BEASTMAN:
+    case player_race_type::RACE_BEASTMAN:
         return 129;
-    case RACE_ENT:
+    case player_race_type::RACE_ENT:
         return 137;
-    case RACE_ARCHON:
+    case player_race_type::RACE_ARCHON:
         return 142;
-    case RACE_BALROG:
+    case player_race_type::RACE_BALROG:
         return 145;
-    case RACE_S_FAIRY:
+    case player_race_type::RACE_S_FAIRY:
         return 148;
-    case RACE_KUTAR:
+    case player_race_type::RACE_KUTAR:
         return 154;
-    case RACE_ANDROID:
+    case player_race_type::RACE_ANDROID:
         return 155;
-    case RACE_MERFOLK:
+    case player_race_type::RACE_MERFOLK:
         return 170;
     default:
         return 0;
index f7d57bc..2ad7540 100644 (file)
@@ -86,11 +86,11 @@ void add_outfit(player_type *creature_ptr, object_type *o_ptr)
 static void decide_initial_items(player_type *creature_ptr, object_type *q_ptr)
 {
     switch (creature_ptr->prace) {
-    case RACE_VAMPIRE:
+    case player_race_type::RACE_VAMPIRE:
         /* Nothing! */
         /* Vampires can drain blood of creatures */
         break;
-    case RACE_BALROG:
+    case player_race_type::RACE_BALROG:
         /* Demon can drain vitality from humanoid corpse */
         get_mon_num_prep(creature_ptr, monster_hook_human, NULL);
         for (int i = rand_range(3, 4); i > 0; i--) {
@@ -103,22 +103,22 @@ static void decide_initial_items(player_type *creature_ptr, object_type *q_ptr)
         }
 
         break;
-    case RACE_SKELETON:
-    case RACE_GOLEM:
-    case RACE_ZOMBIE:
-    case RACE_SPECTRE:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_GOLEM:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_SPECTRE:
         /* Staff (of Nothing) */
         q_ptr->prep(creature_ptr, lookup_kind(TV_STAFF, SV_STAFF_NOTHING));
         q_ptr->number = 1;
         add_outfit(creature_ptr, q_ptr);
         break;
-    case RACE_ENT:
+    case player_race_type::RACE_ENT:
         /* Potions of Water */
         q_ptr->prep(creature_ptr, lookup_kind(TV_POTION, SV_POTION_WATER));
         q_ptr->number = (ITEM_NUMBER)rand_range(15, 23);
         add_outfit(creature_ptr, q_ptr);
         break;
-    case RACE_ANDROID:
+    case player_race_type::RACE_ANDROID:
         /* Flasks of oil */
         q_ptr->prep(creature_ptr, lookup_kind(TV_FLASK, SV_ANY));
         apply_magic_to_object(creature_ptr, q_ptr, 1, AM_NO_FIXED_ART);
@@ -146,7 +146,7 @@ void player_outfit(player_type *creature_ptr)
     decide_initial_items(creature_ptr, q_ptr);
     q_ptr = &forge;
 
-    if ((creature_ptr->prace == RACE_VAMPIRE) && (creature_ptr->pclass != CLASS_NINJA)) {
+    if ((creature_ptr->prace == player_race_type::RACE_VAMPIRE) && (creature_ptr->pclass != CLASS_NINJA)) {
         q_ptr->prep(creature_ptr, lookup_kind(TV_SCROLL, SV_SCROLL_DARKNESS));
         q_ptr->number = (ITEM_NUMBER)rand_range(2, 5);
         add_outfit(creature_ptr, q_ptr);
@@ -159,7 +159,7 @@ void player_outfit(player_type *creature_ptr)
     }
 
     q_ptr = &forge;
-    if (creature_ptr->prace == RACE_MERFOLK) {
+    if (creature_ptr->prace == player_race_type::RACE_MERFOLK) {
         q_ptr->prep(creature_ptr, lookup_kind(TV_RING, SV_RING_LEVITATION_FALL));
         q_ptr->number = 1;
         add_outfit(creature_ptr, q_ptr);
@@ -235,7 +235,7 @@ void player_outfit(player_type *creature_ptr)
         if (creature_ptr->pseikaku == PERSONALITY_SEXY) {
             player_init[creature_ptr->pclass][2][0] = TV_HAFTED;
             player_init[creature_ptr->pclass][2][1] = SV_WHIP;
-        } else if (creature_ptr->prace == RACE_MERFOLK) {
+        } else if (creature_ptr->prace == player_race_type::RACE_MERFOLK) {
             player_init[creature_ptr->pclass][2][0] = TV_POLEARM;
             player_init[creature_ptr->pclass][2][1] = SV_TRIDENT;
         }
@@ -244,16 +244,16 @@ void player_outfit(player_type *creature_ptr)
     for (int i = 0; i < 3; i++) {
         int tv = player_init[creature_ptr->pclass][i][0];
         OBJECT_SUBTYPE_VALUE sv = player_init[creature_ptr->pclass][i][1];
-        if ((creature_ptr->prace == RACE_ANDROID) && ((tv == TV_SOFT_ARMOR) || (tv == TV_HARD_ARMOR)))
+        if ((creature_ptr->prace == player_race_type::RACE_ANDROID) && ((tv == TV_SOFT_ARMOR) || (tv == TV_HARD_ARMOR)))
             continue;
 
         if (tv == TV_SORCERY_BOOK)
             tv = TV_LIFE_BOOK + creature_ptr->realm1 - 1;
         else if (tv == TV_DEATH_BOOK)
             tv = TV_LIFE_BOOK + creature_ptr->realm2 - 1;
-        else if (tv == TV_RING && sv == SV_RING_RES_FEAR && creature_ptr->prace == RACE_BARBARIAN)
+        else if (tv == TV_RING && sv == SV_RING_RES_FEAR && creature_ptr->prace == player_race_type::RACE_BARBARIAN)
             sv = SV_RING_SUSTAIN_STR;
-        else if (tv == TV_RING && sv == SV_RING_SUSTAIN_INT && creature_ptr->prace == RACE_MIND_FLAYER) {
+        else if (tv == TV_RING && sv == SV_RING_SUSTAIN_INT && creature_ptr->prace == player_race_type::RACE_MIND_FLAYER) {
             tv = TV_POTION;
             sv = SV_POTION_RESTORE_MANA;
         }
index e36a3e3..da13661 100644 (file)
@@ -53,7 +53,7 @@ bool ask_quick_start(player_type *creature_ptr)
     init_dungeon_quests(creature_ptr);
 
     sp_ptr = &sex_info[creature_ptr->psex];
-    rp_ptr = &race_info[creature_ptr->prace];
+    rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     cp_ptr = &class_info[creature_ptr->pclass];
     mp_ptr = &m_info[creature_ptr->pclass];
     ap_ptr = &personality_info[creature_ptr->pseikaku];
index 30fd872..52ab6a2 100644 (file)
@@ -109,7 +109,7 @@ static bool select_destroying_item(player_type *creature_ptr, destroy_type *dest
  */
 static bool decide_magic_book_exp(player_type *creature_ptr, destroy_type *destroy_ptr)
 {
-    if (creature_ptr->prace == RACE_ANDROID)
+    if (creature_ptr->prace == player_race_type::RACE_ANDROID)
         return false;
 
     if ((creature_ptr->pclass == CLASS_WARRIOR) || (creature_ptr->pclass == CLASS_BERSERKER))
index 6272908..da5172a 100644 (file)
@@ -322,7 +322,7 @@ void exe_eat_food(player_type *creature_ptr, INVENTORY_IDX item)
         return;
     }
 
-    if (is_specific_player_race(creature_ptr, RACE_SKELETON)) {
+    if (is_specific_player_race(creature_ptr, player_race_type::RACE_SKELETON)) {
         if (!((o_ptr->sval == SV_FOOD_WAYBREAD) || (o_ptr->sval < SV_FOOD_BISCUIT))) {
             object_type forge;
             object_type *q_ptr = &forge;
index b496320..0cd60bd 100644 (file)
@@ -197,7 +197,7 @@ void do_cmd_wield(player_type *creature_ptr)
             return;
     }
 
-    if ((o_ptr->name1 == ART_STONEMASK) && object_is_known(o_ptr) && (creature_ptr->prace != RACE_VAMPIRE) && (creature_ptr->prace != RACE_ANDROID)) {
+    if ((o_ptr->name1 == ART_STONEMASK) && object_is_known(o_ptr) && (creature_ptr->prace != player_race_type::RACE_VAMPIRE) && (creature_ptr->prace != player_race_type::RACE_ANDROID)) {
         char dummy[MAX_NLEN + 100];
         describe_flavor(creature_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
         sprintf(dummy,
@@ -288,8 +288,8 @@ void do_cmd_wield(player_type *creature_ptr)
         o_ptr->ident |= (IDENT_SENSE);
     }
 
-    if ((o_ptr->name1 == ART_STONEMASK) && (creature_ptr->prace != RACE_VAMPIRE) && (creature_ptr->prace != RACE_ANDROID))
-        change_race(creature_ptr, RACE_VAMPIRE, "");
+    if ((o_ptr->name1 == ART_STONEMASK) && (creature_ptr->prace != player_race_type::RACE_VAMPIRE) && (creature_ptr->prace != player_race_type::RACE_ANDROID))
+        change_race(creature_ptr, player_race_type::RACE_VAMPIRE, "");
 
     calc_android_exp(creature_ptr);
     creature_ptr->update |= PU_BONUS | PU_TORCH | PU_MANA;
index e6c23b6..58dd8e1 100644 (file)
@@ -53,7 +53,7 @@ void do_cmd_redraw(player_type *creature_ptr)
 
        update_playtime();
        handle_stuff(creature_ptr);
-       if (creature_ptr->prace == RACE_ANDROID) calc_android_exp(creature_ptr);
+       if (creature_ptr->prace == player_race_type::RACE_ANDROID) calc_android_exp(creature_ptr);
 
        term_type *old = Term;
        for (int j = 0; j < 8; j++)
index 54d627b..f8af55f 100644 (file)
@@ -280,7 +280,7 @@ static void generate_world(player_type *player_ptr, bool new_game)
     if (player_ptr->pclass != CLASS_SORCERER) {
         if (player_ptr->pseikaku == PERSONALITY_SEXY)
             s_info[player_ptr->pclass].w_max[TV_HAFTED - TV_WEAPON_BEGIN][SV_WHIP] = WEAPON_EXP_MASTER;
-        if (player_ptr->prace == RACE_MERFOLK) {
+        if (player_ptr->prace == player_race_type::RACE_MERFOLK) {
             s_info[player_ptr->pclass].w_max[TV_POLEARM - TV_WEAPON_BEGIN][SV_TRIDENT] = WEAPON_EXP_MASTER;
             s_info[player_ptr->pclass].w_max[TV_POLEARM - TV_WEAPON_BEGIN][SV_TRIFURCATE_SPEAR] = WEAPON_EXP_MASTER;
         }
@@ -433,7 +433,7 @@ void play_game(player_type *player_ptr, bool new_game, bool browsing_movie)
     if (player_ptr->chp < 0 && !cheat_immortal)
         player_ptr->is_dead = true;
 
-    if (player_ptr->prace == RACE_ANDROID)
+    if (player_ptr->prace == player_race_type::RACE_ANDROID)
         calc_android_exp(player_ptr);
 
     init_riding_pet(player_ptr, new_game);
index 9e5884a..1da8be4 100644 (file)
@@ -214,7 +214,7 @@ errr top_twenty(player_type *current_player_ptr)
     /* Save the player info */
     sprintf(the_score.uid, "%7u", current_player_ptr->player_uid);
     sprintf(the_score.sex, "%c", (current_player_ptr->psex ? 'm' : 'f'));
-    snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->prace, MAX_RACES));
+    snprintf(buf, sizeof(buf), "%2d", MIN(static_cast<int>(current_player_ptr->prace), MAX_RACES));
     memcpy(the_score.p_r, buf, 3);
     snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->pclass, MAX_CLASS));
     memcpy(the_score.p_c, buf, 3);
@@ -317,7 +317,7 @@ errr predict_score(player_type *current_player_ptr)
     /* Save the player info */
     sprintf(the_score.uid, "%7u", current_player_ptr->player_uid);
     sprintf(the_score.sex, "%c", (current_player_ptr->psex ? 'm' : 'f'));
-    snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->prace, MAX_RACES));
+    snprintf(buf, sizeof(buf), "%2d", MIN(static_cast<int>(current_player_ptr->prace), MAX_RACES));
     memcpy(the_score.p_r, buf, 3);
     snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->pclass, MAX_CLASS));
     memcpy(the_score.p_c, buf, 3);
@@ -398,9 +398,9 @@ void show_highclass(player_type *current_player_ptr)
     }
 
 #ifdef JP
-    sprintf(out_val, "あなた) %sの%s (レベル %2d)", race_info[current_player_ptr->prace].title, current_player_ptr->name, current_player_ptr->lev);
+    sprintf(out_val, "あなた) %sの%s (レベル %2d)", race_info[static_cast<int>(current_player_ptr->prace)].title, current_player_ptr->name, current_player_ptr->lev);
 #else
-    sprintf(out_val, "You) %s the %s (Level %2d)", current_player_ptr->name, race_info[current_player_ptr->prace].title, current_player_ptr->lev);
+    sprintf(out_val, "You) %s the %s (Level %2d)", current_player_ptr->name, race_info[static_cast<int>(current_player_ptr->prace)].title, current_player_ptr->lev);
 #endif
 
     prt(out_val, (m + 8), 0);
@@ -478,11 +478,11 @@ void race_score(player_type *current_player_ptr, int race_num)
     }
 
     /* add player if qualified */
-    if ((current_player_ptr->prace == race_num) && (current_player_ptr->lev >= lastlev)) {
+    if ((static_cast<int>(current_player_ptr->prace) == race_num) && (current_player_ptr->lev >= lastlev)) {
 #ifdef JP
-        sprintf(out_val, "あなた) %sの%s (レベル %2d)", race_info[current_player_ptr->prace].title, current_player_ptr->name, current_player_ptr->lev);
+        sprintf(out_val, "あなた) %sの%s (レベル %2d)", race_info[static_cast<int>(current_player_ptr->prace)].title, current_player_ptr->name, current_player_ptr->lev);
 #else
-        sprintf(out_val, "You) %s the %s (Level %3d)", current_player_ptr->name, race_info[current_player_ptr->prace].title, current_player_ptr->lev);
+        sprintf(out_val, "You) %s the %s (Level %3d)", current_player_ptr->name, race_info[static_cast<int>(current_player_ptr->prace)].title, current_player_ptr->lev);
 #endif
 
         prt(out_val, (m + 8), 0);
index 78184f8..a831597 100644 (file)
 s32b turn_real(player_type *player_ptr, s32b hoge)
 {
     switch (player_ptr->start_race) {
-    case RACE_VAMPIRE:
-    case RACE_SKELETON:
-    case RACE_ZOMBIE:
-    case RACE_SPECTRE:
+    case player_race_type::RACE_VAMPIRE:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_SPECTRE:
         return hoge - (TURNS_PER_TICK * TOWN_DAWN * 3 / 4);
     default:
         return hoge;
index 97ae1de..9c08b42 100644 (file)
@@ -164,7 +164,7 @@ void effect_player_nether(player_type *target_ptr, effect_player_type *ep_ptr)
 
     bool evaded = check_multishadow(target_ptr);
 
-    if (is_specific_player_race(target_ptr, RACE_SPECTRE)) {
+    if (is_specific_player_race(target_ptr, player_race_type::RACE_SPECTRE)) {
         if (!evaded) {
             msg_print(_("気分がよくなった。", "You feel invigorated!"));
             hp_player(target_ptr, ep_ptr->dam / 4);
@@ -471,7 +471,7 @@ static void effect_player_time_addition(player_type *target_ptr)
     case 3:
     case 4:
     case 5: {
-        if (target_ptr->prace == RACE_ANDROID)
+        if (target_ptr->prace == player_race_type::RACE_ANDROID)
             break;
 
         msg_print(_("人生が逆戻りした気がする。", "You feel like a chunk of the past has been ripped away."));
index 5fb5f53..9450b9b 100644 (file)
@@ -365,7 +365,7 @@ static bool parse_qtw_M(qtwg_type *qtwg_ptr, char **zz)
     } else if (zz[0][0] == 'Q') {
         max_q_idx = (QUEST_IDX)atoi(zz[1]);
     } else if (zz[0][0] == 'R') {
-        max_r_idx = (player_race_type)atoi(zz[1]);
+        max_r_idx = (MONRACE_IDX)atoi(zz[1]);
     } else if (zz[0][0] == 'K') {
         max_k_idx = (KIND_OBJECT_IDX)atoi(zz[1]);
     } else if (zz[0][0] == 'V') {
index ab791af..eaf5373 100644 (file)
@@ -102,7 +102,7 @@ bool pattern_effect(player_type *creature_ptr)
     if (!pattern_tile(floor_ptr, creature_ptr->y, creature_ptr->x))
         return false;
 
-    if ((is_specific_player_race(creature_ptr, RACE_AMBERITE)) && (creature_ptr->cut > 0) && one_in_(10)) {
+    if ((is_specific_player_race(creature_ptr, player_race_type::RACE_AMBERITE)) && (creature_ptr->cut > 0) && one_in_(10)) {
         wreck_the_pattern(creature_ptr);
     }
 
@@ -139,7 +139,7 @@ bool pattern_effect(player_type *creature_ptr)
         break;
 
     default:
-        if (is_specific_player_race(creature_ptr, RACE_AMBERITE) && !one_in_(2))
+        if (is_specific_player_race(creature_ptr, player_race_type::RACE_AMBERITE) && !one_in_(2))
             return true;
         else if (!is_invuln(creature_ptr))
             take_hit(creature_ptr, DAMAGE_NOESCAPE, damroll(1, 3), _("「パターン」を歩いたダメージ", "walking the Pattern"));
index bba26f4..fda6f92 100644 (file)
@@ -215,7 +215,7 @@ static void occur_chainsword_effect(player_type *creature_ptr)
 
 static void curse_drain_exp(player_type *creature_ptr)
 {
-    if ((creature_ptr->prace == RACE_ANDROID) || (creature_ptr->cursed.has_not(TRC::DRAIN_EXP)) || !one_in_(4))
+    if ((creature_ptr->prace == player_race_type::RACE_ANDROID) || (creature_ptr->cursed.has_not(TRC::DRAIN_EXP)) || !one_in_(4))
         return;
 
     creature_ptr->exp -= (creature_ptr->lev + 1) / 2;
index 00e2ae7..08a107d 100644 (file)
@@ -372,9 +372,9 @@ static void dump_aux_race_history(player_type *creature_ptr, FILE *fff)
     if (!creature_ptr->old_race1 && !creature_ptr->old_race2)
         return;
 
-    fprintf(fff, _("\n\n あなたは%sとして生まれた。", "\n\n You were born as %s."), race_info[creature_ptr->start_race].title);
+    fprintf(fff, _("\n\n あなたは%sとして生まれた。", "\n\n You were born as %s."), race_info[static_cast<int>(creature_ptr->start_race)].title);
     for (int i = 0; i < MAX_RACES; i++) {
-        if (creature_ptr->start_race == i)
+        if (static_cast<int>(creature_ptr->start_race) == i)
             continue;
         if (i < 32) {
             if (!(creature_ptr->old_race1 & 1UL << i))
index 4cb40f3..f0230d1 100644 (file)
@@ -55,9 +55,9 @@ static void dump_yourself(player_type *creature_ptr, FILE *fff)
         return;
 
     char temp[80 * 10];
-    shape_buffer(race_explanations[creature_ptr->prace], 78, temp, sizeof(temp));
+    shape_buffer(race_explanations[static_cast<int>(creature_ptr->prace)], 78, temp, sizeof(temp));
     fprintf(fff, "\n\n");
-    fprintf(fff, _("種族: %s\n", "Race: %s\n"), race_info[creature_ptr->prace].title);
+    fprintf(fff, _("種族: %s\n", "Race: %s\n"), race_info[static_cast<int>(creature_ptr->prace)].title);
     concptr t = temp;
 
     for (int i = 0; i < 10; i++) {
index 880b43b..5602077 100644 (file)
@@ -216,7 +216,7 @@ static errr exe_reading_savefile(player_type *creature_ptr)
         return load_hp_result;
 
     sp_ptr = &sex_info[creature_ptr->psex];
-    rp_ptr = &race_info[creature_ptr->prace];
+    rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     cp_ptr = &class_info[creature_ptr->pclass];
     ap_ptr = &personality_info[creature_ptr->pseikaku];
 
index c90e35d..0237987 100644 (file)
@@ -80,10 +80,10 @@ void rd_autopick(player_type *creature_ptr)
 static void set_undead_turn_limit(player_type *creature_ptr)
 {
     switch (creature_ptr->start_race) {
-    case RACE_VAMPIRE:
-    case RACE_SKELETON:
-    case RACE_ZOMBIE:
-    case RACE_SPECTRE:
+    case player_race_type::RACE_VAMPIRE:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_SPECTRE:
         current_world_ptr->game_turn_limit = TURNS_PER_TICK * TOWN_DAWN * MAX_DAYS + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
         break;
     default:
index a88c2af..565099a 100644 (file)
@@ -92,7 +92,7 @@ errr init_buildings(void)
             building[i].member_class[j] = CLASS_WARRIOR;
 
         for (int j = 0; j < MAX_RACES; j++)
-            building[i].member_race[j] = RACE_HUMAN;
+            building[i].member_race[j] = player_race_type::RACE_HUMAN;
 
         for (int j = 0; j < MAX_MAGIC + 1; j++)
             building[i].member_realm[j] = 0;
index bca5d89..0d7ced9 100644 (file)
@@ -20,7 +20,7 @@ bool is_owner(player_type *player_ptr, building_type *bldg)
         return true;
     }
 
-    if (bldg->member_race[player_ptr->prace] == BUILDING_OWNER) {
+    if (static_cast<int>(bldg->member_race[static_cast<int>(player_ptr->prace)]) == BUILDING_OWNER) {
         return true;
     }
 
@@ -49,7 +49,7 @@ bool is_member(player_type *player_ptr, building_type *bldg)
         return true;
     }
 
-    if (bldg->member_race[player_ptr->prace]) {
+    if (static_cast<bool>(bldg->member_race[static_cast<int>(player_ptr->prace)])) {
         return true;
     }
 
index 98142fd..0960973 100644 (file)
@@ -33,7 +33,7 @@ void calc_blow_disease(player_type *target_ptr, monap_type *monap_ptr)
         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))
+    if (disease_possibility || (randint1(100) > 10) || (target_ptr->prace == player_race_type::RACE_ANDROID))
         return;
 
     bool perm = one_in_(10);
index ca08789..c868d1f 100644 (file)
@@ -27,7 +27,7 @@ void process_blind_attack(player_type *target_ptr, monap_type *monap_ptr)
 
     auto is_dio = monap_ptr->m_ptr->r_idx == MON_DIO;
     auto dio_msg = _("どうだッ!この血の目潰しはッ!", "How is it! This blood-blinding!");
-    if (is_dio && target_ptr->prace == RACE_SKELETON) {
+    if (is_dio && target_ptr->prace == player_race_type::RACE_SKELETON) {
         msg_print(dio_msg);
         msg_print(_("しかし、あなたには元々目はなかった!", "However, you don't have eyes!"));
         return;
@@ -178,7 +178,7 @@ void process_monster_attack_time(player_type *target_ptr, monap_type *monap_ptr)
     case 3:
     case 4:
     case 5:
-        if (target_ptr->prace == RACE_ANDROID) {
+        if (target_ptr->prace == player_race_type::RACE_ANDROID) {
             break;
         }
 
index 6891c47..6447287 100644 (file)
@@ -246,13 +246,13 @@ bool check_drain_hp(player_type *target_ptr, const s32b d)
         return (mimic_info[target_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING) != 0 ? true : resist_drain;
 
     switch (target_ptr->prace) {
-    case RACE_ZOMBIE:
-    case RACE_VAMPIRE:
-    case RACE_SPECTRE:
-    case RACE_SKELETON:
-    case RACE_BALROG:
-    case RACE_GOLEM:
-    case RACE_ANDROID:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_VAMPIRE:
+    case player_race_type::RACE_SPECTRE:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_BALROG:
+    case player_race_type::RACE_GOLEM:
+    case player_race_type::RACE_ANDROID:
         return true;
     default:
         return resist_drain;
index c914073..65f6bc7 100644 (file)
@@ -57,7 +57,7 @@ static void check_nether_resistance(player_type *target_ptr, msr_type *msr_ptr)
     if (msr_ptr->smart.has_not(SM::RES_NETH))
         return;
 
-    if (is_specific_player_race(target_ptr, RACE_SPECTRE)) {
+    if (is_specific_player_race(target_ptr, player_race_type::RACE_SPECTRE)) {
         msr_ptr->ability_flags.reset(RF_ABILITY::BR_NETH);
         msr_ptr->ability_flags.reset(RF_ABILITY::BA_NETH);
         msr_ptr->ability_flags.reset(RF_ABILITY::BO_NETH);
index 51db1da..5781413 100644 (file)
@@ -268,7 +268,7 @@ bool dispel_check(player_type *creature_ptr, MONSTER_IDX m_idx)
     }
 
     if (r_ptr->ability_flags.has(RF_ABILITY::BR_FIRE)) {
-        if (!((creature_ptr->prace == RACE_BALROG) && creature_ptr->lev > 44)) {
+        if (!((creature_ptr->prace == player_race_type::RACE_BALROG) && creature_ptr->lev > 44)) {
             if (!has_immune_fire(creature_ptr) && (creature_ptr->oppose_fire || music_singing(creature_ptr, MUSIC_RESIST)))
                 return true;
 
index 8cba703..ffe0fb9 100644 (file)
@@ -40,7 +40,7 @@ int calc_mutant_regenerate_mod(player_type *creature_ptr)
     if (creature_ptr->pseikaku == PERSONALITY_LUCKY)
         count--;
 
-    if (creature_ptr->prace == RACE_BEASTMAN) {
+    if (creature_ptr->prace == player_race_type::RACE_BEASTMAN) {
         count -= 10;
         mod = 5;
     }
index c9bc8c9..b708bce 100644 (file)
@@ -32,31 +32,31 @@ static void race_dependent_mutation(player_type *creature_ptr, glm_type *gm_ptr)
     if (gm_ptr->choose_mut != 0)
         return;
 
-    if (creature_ptr->prace == RACE_VAMPIRE && creature_ptr->muta.has_not(MUTA::HYPN_GAZE) && (randint1(10) < 7)) {
+    if (creature_ptr->prace == player_race_type::RACE_VAMPIRE && creature_ptr->muta.has_not(MUTA::HYPN_GAZE) && (randint1(10) < 7)) {
         gm_ptr->muta_which = MUTA::HYPN_GAZE;
         gm_ptr->muta_desc = _("眼が幻惑的になった...", "Your eyes look mesmerizing...");
         return;
     }
 
-    if (creature_ptr->prace == RACE_IMP && creature_ptr->muta.has_not(MUTA::HORNS) && (randint1(10) < 7)) {
+    if (creature_ptr->prace == player_race_type::RACE_IMP && creature_ptr->muta.has_not(MUTA::HORNS) && (randint1(10) < 7)) {
         gm_ptr->muta_which = MUTA::HORNS;
         gm_ptr->muta_desc = _("角が額から生えてきた!", "Horns pop forth into your forehead!");
         return;
     }
 
-    if (creature_ptr->prace == RACE_YEEK && creature_ptr->muta.has_not(MUTA::SHRIEK) && (randint1(10) < 7)) {
+    if (creature_ptr->prace == player_race_type::RACE_YEEK && creature_ptr->muta.has_not(MUTA::SHRIEK) && (randint1(10) < 7)) {
         gm_ptr->muta_which = MUTA::SHRIEK;
         gm_ptr->muta_desc = _("声質がかなり強くなった。", "Your vocal cords get much tougher.");
         return;
     }
 
-    if (creature_ptr->prace == RACE_BEASTMAN && creature_ptr->muta.has_not(MUTA::POLYMORPH) && (randint1(10) < 2)) {
+    if (creature_ptr->prace == player_race_type::RACE_BEASTMAN && creature_ptr->muta.has_not(MUTA::POLYMORPH) && (randint1(10) < 2)) {
         gm_ptr->muta_which = MUTA::POLYMORPH;
         gm_ptr->muta_desc = _("あなたの肉体は変化できるようになった、", "Your body seems mutable.");
         return;
     }
 
-    if (creature_ptr->prace == RACE_MIND_FLAYER && creature_ptr->muta.has_not(MUTA::TENTACLES) && (randint1(10) < 7)) {
+    if (creature_ptr->prace == player_race_type::RACE_MIND_FLAYER && creature_ptr->muta.has_not(MUTA::TENTACLES) && (randint1(10) < 7)) {
         gm_ptr->muta_which = MUTA::TENTACLES;
         gm_ptr->muta_desc = _("邪悪な触手が口の周りに生えた。", "Evil-looking tentacles sprout from your mouth.");
     }
index 204d3f5..4c52344 100644 (file)
@@ -493,7 +493,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item)
             break;
 
         case SV_POTION_EXPERIENCE:
-            if (creature_ptr->prace == RACE_ANDROID)
+            if (creature_ptr->prace == player_race_type::RACE_ANDROID)
                 break;
             chg_virtue(creature_ptr, V_ENLIGHTEN, 1);
             if (creature_ptr->exp < PY_MAX_EXP) {
@@ -566,7 +566,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item)
         }
     }
 
-    if (is_specific_player_race(creature_ptr, RACE_SKELETON)) {
+    if (is_specific_player_race(creature_ptr, player_race_type::RACE_SKELETON)) {
         msg_print(_("液体の一部はあなたのアゴを素通りして落ちた!", "Some of the fluid falls through your jaws!"));
         (void)potion_smash_effect(creature_ptr, 0, creature_ptr->y, creature_ptr->x, q_ptr->k_idx);
     }
@@ -589,7 +589,7 @@ void exe_quaff_potion(player_type *creature_ptr, INVENTORY_IDX item)
 
     creature_ptr->window_flags |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
 
-    if (is_specific_player_race(creature_ptr, RACE_SKELETON))
+    if (is_specific_player_race(creature_ptr, player_race_type::RACE_SKELETON))
         return; //!< @note スケルトンは水分で飢えを満たせない
 
     switch (player_race_food(creature_ptr)) {
index 881fda0..bec1406 100644 (file)
@@ -160,7 +160,7 @@ static void spell_damcalc(player_type *target_ptr, monster_type *m_ptr, EFFECT_I
 
     case GF_NETHER:
         dam = dam * calc_nether_damage_rate(target_ptr, CALC_MAX) / 100;
-        if (is_specific_player_race(target_ptr, RACE_SPECTRE)) {
+        if (is_specific_player_race(target_ptr, player_race_type::RACE_SPECTRE)) {
             ignore_wraith_form = true;
             dam = 0;
         }
index f441a5c..8755aa3 100644 (file)
@@ -31,7 +31,7 @@ s16b PlayerConstitution::race_value()
 {
     s16b result = PlayerBasicStatistics::race_value();
 
-    if (is_specific_player_race(this->owner_ptr, RACE_ENT)) {
+    if (is_specific_player_race(this->owner_ptr, player_race_type::RACE_ENT)) {
         if (this->owner_ptr->lev > 25)
             result++;
         if (this->owner_ptr->lev > 40)
index 4fa4364..1917e7b 100644 (file)
@@ -31,7 +31,7 @@ s16b PlayerDexterity::race_value()
 {
     s16b result = PlayerBasicStatistics::race_value();
 
-    if (is_specific_player_race(this->owner_ptr, RACE_ENT)) {
+    if (is_specific_player_race(this->owner_ptr, player_race_type::RACE_ENT)) {
         if (this->owner_ptr->lev > 25)
             result--;
         if (this->owner_ptr->lev > 40)
index 2d2b291..25306a9 100644 (file)
@@ -31,7 +31,7 @@ s16b PlayerStrength::race_value()
 {
     s16b result = PlayerBasicStatistics::race_value();
 
-    if (is_specific_player_race(this->owner_ptr, RACE_ENT)) {
+    if (is_specific_player_race(this->owner_ptr, player_race_type::RACE_ENT)) {
         if (this->owner_ptr->lev > 25)
             result++;
         if (this->owner_ptr->lev > 40)
index 24f6834..2eb189f 100644 (file)
@@ -72,10 +72,10 @@ void PlayerAlignment::update_alignment()
         }
     } else {
         switch (creature_ptr->prace) {
-        case RACE_ARCHON:
+        case player_race_type::RACE_ARCHON:
             this->bias_good_alignment(200);
             break;
-        case RACE_BALROG:
+        case player_race_type::RACE_BALROG:
             this->bias_evil_alignment(200);
             break;
 
index f9d43c5..0319d96 100644 (file)
 void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
 {
     switch (creature_ptr->prace) {
-    case RACE_DWARF:
+    case player_race_type::RACE_DWARF:
         if (creature_ptr->lev >= 5)
             self_ptr->info[self_ptr->line++] = _("あなたは罠とドアと階段を感知できる。(5 MP)", "You can find traps, doors and stairs (cost 5).");
 
         break;
-    case RACE_NIBELUNG:
+    case player_race_type::RACE_NIBELUNG:
         if (creature_ptr->lev >= 10)
             self_ptr->info[self_ptr->line++] = _("あなたは罠とドアと階段を感知できる。(5 MP)", "You can find traps, doors and stairs (cost 5).");
 
         break;
-    case RACE_HOBBIT:
+    case player_race_type::RACE_HOBBIT:
         if (creature_ptr->lev >= 15)
             self_ptr->info[self_ptr->line++] = _("あなたは食料を生成できる。(10 MP)", "You can produce food (cost 10).");
 
         break;
-    case RACE_GNOME:
+    case player_race_type::RACE_GNOME:
         if (creature_ptr->lev >= 5)
             self_ptr->info[self_ptr->line++] = _("あなたは範囲 10 以内にテレポートできる。(5 MP)", "You can teleport, range 10 (cost 5).");
 
         break;
-    case RACE_HALF_ORC:
+    case player_race_type::RACE_HALF_ORC:
         if (creature_ptr->lev >= 3)
             self_ptr->info[self_ptr->line++] = _("あなたは恐怖を除去できる。(5 MP)", "You can remove fear (cost 5).");
 
         break;
-    case RACE_HALF_TROLL:
+    case player_race_type::RACE_HALF_TROLL:
         if (creature_ptr->lev >= 10)
             self_ptr->info[self_ptr->line++] = _("あなたは狂暴化することができる。(12 MP) ", "You can enter a berserk fury (cost 12).");
 
         break;
-    case RACE_AMBERITE:
+    case player_race_type::RACE_AMBERITE:
         if (creature_ptr->lev >= 30)
             self_ptr->info[self_ptr->line++] = _("あなたはシャドウシフトすることができる。(50 MP)", "You can Shift Shadows (cost 50).");
 
@@ -50,27 +50,27 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
             self_ptr->info[self_ptr->line++] = _("あなたは「パターン」を心に描いて歩くことができる。(75 MP)", "You can mentally Walk the Pattern (cost 75).");
 
         break;
-    case RACE_BARBARIAN:
+    case player_race_type::RACE_BARBARIAN:
         if (creature_ptr->lev >= 8)
             self_ptr->info[self_ptr->line++] = _("あなたは狂暴化することができる。(10 MP) ", "You can enter a berserk fury (cost 10).");
 
         break;
-    case RACE_HALF_OGRE:
+    case player_race_type::RACE_HALF_OGRE:
         if (creature_ptr->lev >= 25)
             self_ptr->info[self_ptr->line++] = _("あなたは爆発のルーンを仕掛けることができる。(35 MP)", "You can set an Explosive Rune (cost 35).");
 
         break;
-    case RACE_HALF_GIANT:
+    case player_race_type::RACE_HALF_GIANT:
         if (creature_ptr->lev >= 20)
             self_ptr->info[self_ptr->line++] = _("あなたは石の壁を壊すことができる。(10 MP)", "You can break stone walls (cost 10).");
 
         break;
-    case RACE_HALF_TITAN:
+    case player_race_type::RACE_HALF_TITAN:
         if (creature_ptr->lev >= 15)
             self_ptr->info[self_ptr->line++] = _("あなたはモンスターをスキャンすることができる。(10 MP)", "You can probe monsters (cost 10).");
 
         break;
-    case RACE_CYCLOPS:
+    case player_race_type::RACE_CYCLOPS:
         if (creature_ptr->lev >= 20) {
             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの岩石を投げることができる。(15 MP)", "You can throw a boulder, dam. %d (cost 15)."),
                 (3 * creature_ptr->lev) / 2);
@@ -78,12 +78,12 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
         }
 
         break;
-    case RACE_YEEK:
+    case player_race_type::RACE_YEEK:
         if (creature_ptr->lev >= 15)
             self_ptr->info[self_ptr->line++] = _("あなたは恐怖を呼び起こす叫び声を発することができる。(15 MP)", "You can make a terrifying scream (cost 15).");
 
         break;
-    case RACE_KLACKON:
+    case player_race_type::RACE_KLACKON:
         if (creature_ptr->lev >= 9) {
             sprintf(
                 self_ptr->plev_buf, _("あなたは %d ダメージの酸を吹きかけることができる。(9 MP)", "You can spit acid, dam. %d (cost 9)."), creature_ptr->lev);
@@ -91,7 +91,7 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
         }
 
         break;
-    case RACE_KOBOLD:
+    case player_race_type::RACE_KOBOLD:
         if (creature_ptr->lev >= 12) {
             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの毒矢を投げることができる。(8 MP)", "You can throw a dart of poison, dam. %d (cost 8)."),
                 creature_ptr->lev);
@@ -99,7 +99,7 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
         }
 
         break;
-    case RACE_DARK_ELF:
+    case player_race_type::RACE_DARK_ELF:
         if (creature_ptr->lev >= 2) {
             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのマジック・ミサイルの呪文を使える。(2 MP)", "You can cast a Magic Missile, dam %d (cost 2)."),
                 (3 + ((creature_ptr->lev - 1) / 5)));
@@ -107,19 +107,19 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
         }
 
         break;
-    case RACE_DRACONIAN:
+    case player_race_type::RACE_DRACONIAN:
         sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのブレスを吐くことができる。(%d MP)", "You can breathe, dam. %d (cost %d)."), 2 * creature_ptr->lev,
             creature_ptr->lev);
         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
         break;
-    case RACE_MIND_FLAYER:
+    case player_race_type::RACE_MIND_FLAYER:
         if (creature_ptr->lev >= 15)
             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの精神攻撃をすることができる。(12 MP)", "You can mind blast your enemies, dam %d (cost 12)."),
                 creature_ptr->lev);
 
         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
         break;
-    case RACE_IMP:
+    case player_race_type::RACE_IMP:
         if (creature_ptr->lev >= 30) {
             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのファイア・ボールの呪文を使える。(15 MP)", "You can cast a Fire Ball, dam. %d (cost 15)."),
                 creature_ptr->lev);
@@ -134,19 +134,19 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
         }
 
         break;
-    case RACE_GOLEM:
+    case player_race_type::RACE_GOLEM:
         if (creature_ptr->lev >= 20)
             self_ptr->info[self_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:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_SKELETON:
         if (creature_ptr->lev >= 30)
             self_ptr->info[self_ptr->line++] = _("あなたは失った経験値を回復することができる。(30 MP)", "You can restore lost experience (cost 30).");
 
         break;
-    case RACE_VAMPIRE:
+    case player_race_type::RACE_VAMPIRE:
         if (creature_ptr->lev < 2)
             break;
 
@@ -154,29 +154,29 @@ void set_race_ability_info(player_type *creature_ptr, self_info_type *self_ptr)
             creature_ptr->lev * 2, 1 + (creature_ptr->lev / 3));
         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
         break;
-    case RACE_SPECTRE:
+    case player_race_type::RACE_SPECTRE:
         if (creature_ptr->lev >= 4)
             self_ptr->info[self_ptr->line++] = _("あなたは泣き叫んで敵を恐怖させることができる。(6 MP)", "You can wail to terrify your enemies (cost 6).");
 
         break;
-    case RACE_SPRITE:
+    case player_race_type::RACE_SPRITE:
         if (creature_ptr->lev >= 12)
             self_ptr->info[self_ptr->line++]
                 = _("あなたは敵を眠らせる魔法の粉を投げることができる。(12 MP)", "You can throw magical dust which induces sleep (cost 12).");
 
         break;
-    case RACE_BALROG:
+    case player_race_type::RACE_BALROG:
         sprintf(self_ptr->plev_buf, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", "You can breathe nether, dam. %d (cost %d)."),
             3 * creature_ptr->lev, 10 + creature_ptr->lev / 3);
         self_ptr->info[self_ptr->line++] = self_ptr->plev_buf;
         break;
-    case RACE_KUTAR:
+    case player_race_type::RACE_KUTAR:
         if (creature_ptr->lev >= 20)
             self_ptr->info[self_ptr->line++]
                 = _("あなたは d20+30 ターンの間横に伸びることができる。(15 MP)", "You can expand horizontally, dur d20+30 (cost 15).");
 
         break;
-    case RACE_ANDROID:
+    case player_race_type::RACE_ANDROID:
         if (creature_ptr->lev < 10)
             sprintf(self_ptr->plev_buf, _("あなたは %d ダメージのレイガンを撃つことができる。(7 MP)", "You can fire a ray gun with damage %d (cost 7)."),
                 (creature_ptr->lev + 1) / 2);
index bcea852..eccba59 100644 (file)
@@ -84,7 +84,7 @@ void set_high_resistance_info(player_type *creature_ptr, self_info_type *self_pt
     if (has_resist_nexus(creature_ptr))
         self_ptr->info[self_ptr->line++] = _("あなたは因果混乱の攻撃への耐性を持っている。", "You are resistant to nexus attacks.");
 
-    if (is_specific_player_race(creature_ptr, RACE_SPECTRE))
+    if (is_specific_player_race(creature_ptr, player_race_type::RACE_SPECTRE))
         self_ptr->info[self_ptr->line++] = _("あなたは地獄の力を吸収できる。", "You can drain nether forces.");
     else if (has_resist_neth(creature_ptr))
         self_ptr->info[self_ptr->line++] = _("あなたは地獄の力への耐性を持っている。", "You are resistant to nether forces.");
index d8c5d47..d463195 100644 (file)
@@ -49,7 +49,7 @@ s16b PlayerBasicStatistics::race_value()
     if (this->owner_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[this->owner_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[this->owner_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(this->owner_ptr->prace)];
 
     return tmp_rp_ptr->r_adj[this->ability_type];
 }
index 9ced307..53e6f5b 100644 (file)
@@ -29,7 +29,7 @@ s16b PlayerInfravision::race_value()
     if (this->owner_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[this->owner_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[this->owner_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(this->owner_ptr->prace)];
 
     return tmp_rp_ptr->infra;
 }
index 622f1b1..263d30d 100644 (file)
@@ -57,10 +57,10 @@ s16b PlayerSpeed::race_value()
 {
     s16b result = 0;
 
-    if (is_specific_player_race(this->owner_ptr, RACE_KLACKON) || is_specific_player_race(this->owner_ptr, RACE_SPRITE))
+    if (is_specific_player_race(this->owner_ptr, player_race_type::RACE_KLACKON) || is_specific_player_race(this->owner_ptr, player_race_type::RACE_SPRITE))
         result += (this->owner_ptr->lev) / 10;
 
-    if (is_specific_player_race(this->owner_ptr, RACE_MERFOLK)) {
+    if (is_specific_player_race(this->owner_ptr, player_race_type::RACE_MERFOLK)) {
         floor_type *floor_ptr = this->owner_ptr->current_floor_ptr;
         feature_type *f_ptr = &f_info[floor_ptr->grid_array[this->owner_ptr->y][this->owner_ptr->x].feat];
         if (has_flag(f_ptr->flags, FF_WATER)) {
@@ -105,14 +105,14 @@ s16b PlayerSpeed::class_value()
         } else if ((!this->owner_ptr->inventory_list[INVEN_MAIN_HAND].k_idx || can_attack_with_main_hand(this->owner_ptr))
             && (!this->owner_ptr->inventory_list[INVEN_SUB_HAND].k_idx || can_attack_with_sub_hand(this->owner_ptr))) {
             result += 3;
-            if (!(is_specific_player_race(this->owner_ptr, RACE_KLACKON) || is_specific_player_race(this->owner_ptr, RACE_SPRITE)
+            if (!(is_specific_player_race(this->owner_ptr, player_race_type::RACE_KLACKON) || is_specific_player_race(this->owner_ptr, player_race_type::RACE_SPRITE)
                     || (this->owner_ptr->pseikaku == PERSONALITY_MUNCHKIN)))
                 result += (this->owner_ptr->lev) / 10;
         }
     }
 
     if ((this->owner_ptr->pclass == CLASS_MONK || this->owner_ptr->pclass == CLASS_FORCETRAINER) && !(heavy_armor(this->owner_ptr))) {
-        if (!(is_specific_player_race(this->owner_ptr, RACE_KLACKON) || is_specific_player_race(this->owner_ptr, RACE_SPRITE)
+        if (!(is_specific_player_race(this->owner_ptr, player_race_type::RACE_KLACKON) || is_specific_player_race(this->owner_ptr, player_race_type::RACE_SPRITE)
                 || (this->owner_ptr->pseikaku == PERSONALITY_MUNCHKIN)))
             result += (this->owner_ptr->lev) / 10;
     }
@@ -140,7 +140,7 @@ s16b PlayerSpeed::class_value()
 s16b PlayerSpeed::personality_value()
 {
     s16b result = 0;
-    if (this->owner_ptr->pseikaku == PERSONALITY_MUNCHKIN && this->owner_ptr->prace != RACE_KLACKON && this->owner_ptr->prace != RACE_SPRITE) {
+    if (this->owner_ptr->pseikaku == PERSONALITY_MUNCHKIN && this->owner_ptr->prace != player_race_type::RACE_KLACKON && this->owner_ptr->prace != player_race_type::RACE_SPRITE) {
         result += (this->owner_ptr->lev) / 10 + 5;
     }
     return result;
index 19f7644..57cefe6 100644 (file)
@@ -28,7 +28,7 @@ s16b PlayerStealth::race_value()
     if (this->owner_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[this->owner_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[this->owner_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(this->owner_ptr->prace)];
 
     return tmp_rp_ptr->r_stl;
 }
index 10e41e5..e5e2810 100644 (file)
@@ -210,7 +210,7 @@ void gain_level_reward(player_type *creature_ptr, int chosen_reward)
             msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[creature_ptr->chaos_patron]);
             msg_print(_("「汝は良く行いたり!続けよ!」", "'Well done, mortal! Lead on!'"));
 
-            if (creature_ptr->prace == RACE_ANDROID) {
+            if (creature_ptr->prace == player_race_type::RACE_ANDROID) {
                 msg_print(_("しかし何も起こらなかった。", "But, nothing happens."));
             } else if (creature_ptr->exp < PY_MAX_EXP) {
                 s32b ee = (creature_ptr->exp / 2) + 10;
@@ -228,7 +228,7 @@ void gain_level_reward(player_type *creature_ptr, int chosen_reward)
             msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[creature_ptr->chaos_patron]);
             msg_print(_("「下僕よ、汝それに値せず。」", "'Thou didst not deserve that, slave.'"));
 
-            if (creature_ptr->prace == RACE_ANDROID) {
+            if (creature_ptr->prace == player_race_type::RACE_ANDROID) {
                 msg_print(_("しかし何も起こらなかった。", "But, nothing happens."));
             } else {
                 lose_exp(creature_ptr, creature_ptr->exp / 6);
index 7773d72..eecec3e 100644 (file)
@@ -347,7 +347,7 @@ int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concp
     }
 
     if (creature_ptr->chp < 0 && !cheat_immortal) {
-        bool android = (creature_ptr->prace == RACE_ANDROID ? true : false);
+        bool android = (creature_ptr->prace == player_race_type::RACE_ANDROID ? true : false);
 
         /* 死んだ時に強制終了して死を回避できなくしてみた by Habu */
         if (!cheat_save && !save_player(creature_ptr, SAVE_TYPE_CLOSE_GAME))
index b43b668..fa0c0b5 100644 (file)
@@ -183,7 +183,7 @@ bool move_player_effect(player_type *creature_ptr, POSITION ny, POSITION nx, BIT
             set_action(creature_ptr, ACTION_NONE);
         }
 
-        if (creature_ptr->prace == RACE_MERFOLK) {
+        if (creature_ptr->prace == player_race_type::RACE_MERFOLK) {
             if (has_flag(f_ptr->flags, FF_WATER) ^ has_flag(of_ptr->flags, FF_WATER)) {
                 creature_ptr->update |= PU_BONUS;
                 update_creature(creature_ptr);
index e794194..72b2a09 100644 (file)
@@ -3,7 +3,7 @@
 /*!
  * @details 既にplayer_raceが存在するので_typeと付けた
  */
-enum player_race_type {
+enum class player_race_type {
     RACE_HUMAN = 0,
     RACE_HALF_ELF = 1,
     RACE_ELF = 2,
@@ -42,5 +42,7 @@ enum player_race_type {
     RACE_KUTAR = 35,
     RACE_ANDROID = 36,
     RACE_MERFOLK = 37,
-    MAX_RACES = 38,
+    MAX,
 };
+
+constexpr int MAX_RACES = static_cast<int>(player_race_type::MAX);
index 9ff6457..8870ece 100644 (file)
@@ -12,8 +12,9 @@ const player_race *rp_ptr;
 
 const player_race *get_player_race_info(player_type* creature_ptr, bool base_race = false)
 {
-    if (base_race)
-        return &race_info[creature_ptr->prace];
+    if (base_race) {
+        return &race_info[static_cast<int>(creature_ptr->prace)];
+    }
 
     switch (creature_ptr->mimic_form) {
     case MIMIC_DEMON:
@@ -21,7 +22,7 @@ const player_race *get_player_race_info(player_type* creature_ptr, bool base_rac
     case MIMIC_VAMPIRE:
         return &mimic_info[creature_ptr->mimic_form];
     default: // MIMIC_NONE or undefined
-        return &race_info[creature_ptr->prace];
+        return &race_info[static_cast<int>(creature_ptr->prace)];
     }
 }
 
index 0c7fab8..531b4b0 100644 (file)
@@ -461,7 +461,7 @@ bool has_pass_wall(player_type *creature_ptr)
 {
     bool pow = false;
 
-    if (creature_ptr->wraith_form || creature_ptr->tim_pass_wall || (!creature_ptr->mimic_form && creature_ptr->prace == RACE_SPECTRE)) {
+    if (creature_ptr->wraith_form || creature_ptr->tim_pass_wall || (!creature_ptr->mimic_form && creature_ptr->prace == player_race_type::RACE_SPECTRE)) {
         pow = true;
     }
 
@@ -2097,7 +2097,7 @@ bool has_good_luck(player_type *creature_ptr)
 BIT_FLAGS player_aggravate_state(player_type *creature_ptr)
 {
     if (creature_ptr->cursed.has(TRC::AGGRAVATE)) {
-        if ((is_specific_player_race(creature_ptr, RACE_S_FAIRY)) && (creature_ptr->pseikaku != PERSONALITY_SEXY)) {
+        if ((is_specific_player_race(creature_ptr, player_race_type::RACE_S_FAIRY)) && (creature_ptr->pseikaku != PERSONALITY_SEXY)) {
             return AGGRAVATE_S_FAIRY;
         }
         return AGGRAVATE_NORMAL;
index a517332..da8b091 100644 (file)
@@ -212,12 +212,12 @@ PERCENTAGE calc_deathray_damage_rate(player_type *creature_ptr, rate_calc_type_m
     }
 
     switch (creature_ptr->prace) {
-    case RACE_GOLEM:
-    case RACE_SKELETON:
-    case RACE_ZOMBIE:
-    case RACE_VAMPIRE:
-    case RACE_BALROG:
-    case RACE_SPECTRE:
+    case player_race_type::RACE_GOLEM:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_VAMPIRE:
+    case player_race_type::RACE_BALROG:
+    case player_race_type::RACE_SPECTRE:
         return 0;
         break;
 
@@ -388,7 +388,7 @@ PERCENTAGE calc_nether_damage_rate(player_type *creature_ptr, rate_calc_type_mod
     PERCENTAGE per = 100;
 
     if (has_resist_neth(creature_ptr)) {
-        if (!is_specific_player_race(creature_ptr, RACE_SPECTRE))
+        if (!is_specific_player_race(creature_ptr, player_race_type::RACE_SPECTRE))
             per *= 6;
         per *= 100;
         per /= randrate(4, 7, mode);
index 0545d12..2840ef2 100644 (file)
@@ -1063,7 +1063,7 @@ static ACTION_SKILL_POWER calc_disarming(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     const player_class *c_ptr = &class_info[creature_ptr->pclass];
     const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
 
@@ -1093,7 +1093,7 @@ static ACTION_SKILL_POWER calc_device_ability(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     const player_class *c_ptr = &class_info[creature_ptr->pclass];
     const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
 
@@ -1144,7 +1144,7 @@ static ACTION_SKILL_POWER calc_saving_throw(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     const player_class *c_ptr = &class_info[creature_ptr->pclass];
     const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
 
@@ -1199,7 +1199,7 @@ static ACTION_SKILL_POWER calc_search(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     const player_class *c_ptr = &class_info[creature_ptr->pclass];
     const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
 
@@ -1247,7 +1247,7 @@ static ACTION_SKILL_POWER calc_search_freq(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     const player_class *c_ptr = &class_info[creature_ptr->pclass];
     const player_personality *a_ptr = &personality_info[creature_ptr->pseikaku];
 
@@ -1293,7 +1293,7 @@ static ACTION_SKILL_POWER calc_to_hit_melee(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
 
     pow = tmp_rp_ptr->r_thn + c_ptr->c_thn + a_ptr->a_thn;
     pow += ((c_ptr->x_thn * creature_ptr->lev / 10) + (a_ptr->a_thn * creature_ptr->lev / 50));
@@ -1317,7 +1317,7 @@ static ACTION_SKILL_POWER calc_to_hit_shoot(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
 
     pow = tmp_rp_ptr->r_thb + c_ptr->c_thb + a_ptr->a_thb;
     pow += ((c_ptr->x_thb * creature_ptr->lev / 10) + (a_ptr->a_thb * creature_ptr->lev / 50));
@@ -1342,7 +1342,7 @@ static ACTION_SKILL_POWER calc_to_hit_throw(player_type *creature_ptr)
     if (creature_ptr->mimic_form)
         tmp_rp_ptr = &mimic_info[creature_ptr->mimic_form];
     else
-        tmp_rp_ptr = &race_info[creature_ptr->prace];
+        tmp_rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
 
     pow = tmp_rp_ptr->r_thb + c_ptr->c_thb + a_ptr->a_thb;
     pow += ((c_ptr->x_thb * creature_ptr->lev / 10) + (a_ptr->a_thb * creature_ptr->lev / 50));
@@ -1376,7 +1376,7 @@ static ACTION_SKILL_POWER calc_skill_dig(player_type *creature_ptr)
 
     pow = 0;
 
-    if (!creature_ptr->mimic_form && creature_ptr->prace == RACE_ENT && !creature_ptr->inventory_list[INVEN_MAIN_HAND].k_idx) {
+    if (!creature_ptr->mimic_form && creature_ptr->prace == player_race_type::RACE_ENT && !creature_ptr->inventory_list[INVEN_MAIN_HAND].k_idx) {
         pow += creature_ptr->lev * 10;
     }
 
@@ -1668,7 +1668,7 @@ static ARMOUR_CLASS calc_to_ac(player_type *creature_ptr, bool is_real_value)
         }
     }
 
-    if (is_specific_player_race(creature_ptr, RACE_GOLEM) || is_specific_player_race(creature_ptr, RACE_ANDROID)) {
+    if (is_specific_player_race(creature_ptr, player_race_type::RACE_GOLEM) || is_specific_player_race(creature_ptr, player_race_type::RACE_ANDROID)) {
         ac += 10 + (creature_ptr->lev * 2 / 5);
     }
 
@@ -2722,7 +2722,7 @@ void check_experience(player_type *creature_ptr)
     set_bits(creature_ptr->redraw, PR_EXP);
     handle_stuff(creature_ptr);
 
-    bool android = (creature_ptr->prace == RACE_ANDROID ? true : false);
+    bool android = (creature_ptr->prace == player_race_type::RACE_ANDROID ? true : false);
     PLAYER_LEVEL old_lev = creature_ptr->lev;
     while ((creature_ptr->lev > 1) && (creature_ptr->exp < ((android ? player_exp_a : player_exp)[creature_ptr->lev - 2] * creature_ptr->expfact / 100L))) {
         creature_ptr->lev--;
@@ -2744,7 +2744,7 @@ void check_experience(player_type *creature_ptr)
             if ((creature_ptr->pclass == CLASS_CHAOS_WARRIOR) || creature_ptr->muta.has(MUTA::CHAOS_GIFT)) {
                 level_reward = true;
             }
-            if (creature_ptr->prace == RACE_BEASTMAN) {
+            if (creature_ptr->prace == player_race_type::RACE_BEASTMAN) {
                 if (one_in_(5))
                     level_mutation = true;
             }
@@ -2945,7 +2945,7 @@ long calc_score(player_type *creature_ptr)
     if (ironman_downward)
         point *= 2;
     if (creature_ptr->pclass == CLASS_BERSERKER) {
-        if (creature_ptr->prace == RACE_SPECTRE)
+        if (creature_ptr->prace == player_race_type::RACE_SPECTRE)
             point = point / 5;
     }
 
index 120379b..913fa6e 100644 (file)
@@ -33,7 +33,7 @@ void player_immunity(player_type *creature_ptr, BIT_FLAGS *flags)
     if (player_race_has_flag(creature_ptr, TR_IM_FIRE))
         add_flag(flags, TR_RES_FIRE);
 
-    if (is_specific_player_race(creature_ptr, RACE_SPECTRE))
+    if (is_specific_player_race(creature_ptr, player_race_type::RACE_SPECTRE))
         add_flag(flags, TR_RES_NETHER);
     if (player_race_has_flag(creature_ptr, TR_IM_DARK))
         add_flag(flags, TR_RES_DARK);
index 0645187..67ad54d 100644 (file)
@@ -37,7 +37,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
 {
     rpi_type rpi;
     switch (creature_ptr->prace) {
-    case RACE_DWARF:
+    case player_race_type::RACE_DWARF:
         rpi = rpi_type(_("ドアと罠 感知", "Detect Doors+Traps"));
         rpi.text = _("近くの全ての扉と罠、階段を感知する。", "Detects traps, doors, and stairs in your vicinity.");
         rpi.min_level = 5;
@@ -46,7 +46,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_NIBELUNG:
+    case player_race_type::RACE_NIBELUNG:
         rpi = rpi_type(_("ドアと罠 感知", "Detect Doors+Traps"));
         rpi.text = _("近くの全ての扉と罠、階段を感知する。", "Detects traps, doors, and stairs in your vicinity.");
         rpi.min_level = 10;
@@ -55,7 +55,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 10;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_HOBBIT:
+    case player_race_type::RACE_HOBBIT:
         rpi = rpi_type(_("食糧生成", "Create Food"));
         rpi.text = _("食料を一つ作り出す。", "Produces a Ration of Food.");
         rpi.min_level = 15;
@@ -64,7 +64,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 10;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_GNOME:
+    case player_race_type::RACE_GNOME:
         rpi = rpi_type(_("ショート・テレポート", "Blink"));
         rpi.info = format("%s%d", KWD_SPHERE, 10);
         rpi.text = _("近距離のテレポートをする。", "Teleports you a short distance.");
@@ -74,7 +74,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_HALF_ORC:
+    case player_race_type::RACE_HALF_ORC:
         rpi = rpi_type(_("恐怖除去", "Remove Fear"));
         rpi.text = _("恐怖を取り除く。", "Removes fear.");
         rpi.min_level = 3;
@@ -83,7 +83,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = rc_ptr->is_warrior ? 5 : 10;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_HALF_TROLL:
+    case player_race_type::RACE_HALF_TROLL:
         rpi = rpi_type(_("狂戦士化", "Berserk"));
         rpi.info = format("%s%d+d%d", KWD_DURATION, 10, rc_ptr->lvl);
         rpi.text = _("狂戦士化し、恐怖を除去する。防御力が少し低下する。", "Gives a bonus to hit and HP, immunity to fear for a while. But decreases AC.");
@@ -93,7 +93,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = rc_ptr->is_warrior ? 6 : 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_BARBARIAN:
+    case player_race_type::RACE_BARBARIAN:
         rpi = rpi_type(_("狂戦士化", "Berserk"));
         rpi.info = format("%s%d+d%d", KWD_DURATION, 10, rc_ptr->lvl);
         rpi.text = _("狂戦士化し、恐怖を除去する。防御力が少し低下する。", "Gives a bonus to hit and HP, immunity to fear for a while. But decreases AC.");
@@ -103,7 +103,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = rc_ptr->is_warrior ? 6 : 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_AMBERITE:
+    case player_race_type::RACE_AMBERITE:
         rpi = rpi_type(_("シャドウ・シフト", "Shadow Shifting"));
         rpi.text = _("現在の階を再構成する。", "Recreates current dungeon level.");
         rpi.min_level = 30;
@@ -120,7 +120,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 50;
         rc_ptr->add_power(rpi, RC_IDX_RACE_1);
         break;
-    case RACE_HALF_OGRE:
+    case player_race_type::RACE_HALF_OGRE:
         rpi = rpi_type(_("爆発のルーン", "Explosive Rune"));
         rpi.text = _("自分のいる床の上に、モンスターが上を通ろうとすると爆発するルーンを描く。",
             "Sets a rune on the floor beneath you which exprodes if a monster through upon it. Monsters can try to disarm it.");
@@ -130,7 +130,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 15;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_HALF_GIANT:
+    case player_race_type::RACE_HALF_GIANT:
         rpi = rpi_type(_("岩石溶解", "Stone to Mud"));
         rpi.text = _("壁を溶かして床にする。", "Turns one rock square to mud.");
         rpi.min_level = 20;
@@ -139,7 +139,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_HALF_TITAN:
+    case player_race_type::RACE_HALF_TITAN:
         rpi = rpi_type(_("スキャン・モンスター", "Probing"));
         rpi.text = _("モンスターの属性、残り体力、最大体力、スピード、正体を知る。", "Probes all monsters' alignment, HP, speed and their true character.");
         rpi.min_level = 15;
@@ -148,7 +148,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_CYCLOPS:
+    case player_race_type::RACE_CYCLOPS:
         rpi = rpi_type(_("岩石投げ", "Throw Boulder"));
         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3 / 2);
         rpi.text = _("弱い魔法のボールを放つ", "Fires a weak boll of magic.");
@@ -158,7 +158,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_YEEK:
+    case player_race_type::RACE_YEEK:
         rpi = rpi_type(_("モンスター恐慌", "Scare Monster"));
         rpi.text = _("モンスター1体を恐怖させる。抵抗されると無効。", "Attempts to scare a monster.");
         rpi.min_level = 15;
@@ -167,7 +167,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 10;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_SPECTRE:
+    case player_race_type::RACE_SPECTRE:
         rpi = rpi_type(_("モンスター恐慌", "Scare Monster"));
         rpi.text = _("モンスター1体を恐怖させる。抵抗されると無効。", "Attempts to scare a monster.");
         rpi.min_level = 4;
@@ -176,7 +176,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 3;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_KLACKON:
+    case player_race_type::RACE_KLACKON:
         rpi = rpi_type(_("酸の唾", "Spit Acid"));
         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
         if (rc_ptr->lvl >= 25)
@@ -189,7 +189,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 14;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_KOBOLD:
+    case player_race_type::RACE_KOBOLD:
         rpi = rpi_type(_("毒のダーツ", "Poison Dart"));
         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
         rpi.text = _("毒の矢を放つ", "Fires a bolt of poison.");
@@ -199,7 +199,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 14;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_DARK_ELF:
+    case player_race_type::RACE_DARK_ELF:
         rpi = rpi_type(_("マジック・ミサイル", "Magic Missile"));
         rpi.info = format("%s%dd%d", KWD_DAM, 3 + ((rc_ptr->lvl - 1) / 5), 4);
         rpi.text = _("弱い魔法の矢を放つ。", "Fires a weak bolt of magic.");
@@ -209,7 +209,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 9;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_DRACONIAN:
+    case player_race_type::RACE_DRACONIAN:
         rpi = rpi_type(_("ブレス", "Breath Weapon"));
         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 2);
         rpi.text = _("元素のブレスを放つ", "Fires a breath of an element.");
@@ -219,7 +219,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 12;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_MIND_FLAYER:
+    case player_race_type::RACE_MIND_FLAYER:
         rpi = rpi_type(_("精神攻撃", "Mind Blast"));
         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl);
         rpi.text = _("モンスター1体に精神攻撃を行う。", "Deals a PSI damage to a monster.");
@@ -229,7 +229,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 14;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_IMP:
+    case player_race_type::RACE_IMP:
         if (rc_ptr->lvl > 30) {
             rpi = rpi_type(_("ファイア・ボール", "Fire Ball"));
             rpi.text = _("火炎のボールを放つ。", "Fires a ball of fire.");
@@ -244,7 +244,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 15;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_GOLEM:
+    case player_race_type::RACE_GOLEM:
         rpi = rpi_type(_("肌石化", "Stone Skin"));
         rpi.info = format("%s%d+d%d", KWD_DURATION, 30, 20);
         rpi.text = _("一定期間防御力を高める。", "Increases your AC temporary");
@@ -254,8 +254,8 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 8;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_SKELETON:
-    case RACE_ZOMBIE:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_ZOMBIE:
         rpi = rpi_type(_("経験値復活", "Restore Experience"));
         rpi.text = _("経験値を回復する。", "Restores experience.");
         rpi.min_level = 30;
@@ -264,7 +264,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 18;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_VAMPIRE:
+    case player_race_type::RACE_VAMPIRE:
         rpi = rpi_type(_("吸血", "Vampiric Drain"));
         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 2);
         rpi.text = _("隣接したモンスター1体から生命力を吸い取る。吸い取った生命力によって満腹度があがる。",
@@ -275,7 +275,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 9;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_SPRITE:
+    case player_race_type::RACE_SPRITE:
         rpi = rpi_type(_("眠り粉", "Sleeping Dust"));
         rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl);
         rpi.text = _("モンスター1体を眠らせる。抵抗されると無効。", "Attempts to put a monster to sleep.");
@@ -285,7 +285,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 15;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_BALROG:
+    case player_race_type::RACE_BALROG:
         rpi = rpi_type(_("地獄/火炎のブレス", "Nether or Fire Breath"));
         rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3);
         rpi.text = _("火炎または地獄のブレスを放つ。", "Fires a breath of fire or nether.");
@@ -295,7 +295,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 20;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_KUTAR:
+    case player_race_type::RACE_KUTAR:
         rpi = rpi_type(_("横に伸びる", "Expand Horizontally"));
         rpi.info = format("%s%d+d%d", KWD_DURATION, 30, 20);
         rpi.text = _("横に伸びて防御力を高める。魔法防御力は低下する。",
@@ -306,7 +306,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rpi.fail = 8;
         rc_ptr->add_power(rpi, RC_IDX_RACE_0);
         break;
-    case RACE_ANDROID:
+    case player_race_type::RACE_ANDROID:
         if (creature_ptr->lev < 10) {
             rpi = rpi_type(_("レイガン", "Ray Gun"));
             rpi.info = format("%s%d", KWD_DAM, (rc_ptr->lvl + 1) / 2);
index 1990040..53c9855 100644 (file)
@@ -58,7 +58,7 @@ bool android_inside_weapon(player_type *creature_ptr)
 void calc_android_exp(player_type *creature_ptr)
 {
     u32b total_exp = 0;
-    if (creature_ptr->is_dead || (creature_ptr->prace != RACE_ANDROID))
+    if (creature_ptr->is_dead || (creature_ptr->prace != player_race_type::RACE_ANDROID))
         return;
 
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
index 6ba03a8..8399c50 100644 (file)
@@ -290,27 +290,27 @@ bool switch_race_racial_execution(player_type *creature_ptr, const s32b command)
 {
     DIRECTION dir = 0;
     switch (creature_ptr->prace) {
-    case RACE_DWARF:
+    case player_race_type::RACE_DWARF:
         msg_print(_("周囲を調べた。", "You examine your surroundings."));
         (void)detect_traps(creature_ptr, DETECT_RAD_DEFAULT, true);
         (void)detect_doors(creature_ptr, DETECT_RAD_DEFAULT);
         (void)detect_stairs(creature_ptr, DETECT_RAD_DEFAULT);
         return true;
-    case RACE_HOBBIT:
+    case player_race_type::RACE_HOBBIT:
         return create_ration(creature_ptr);
-    case RACE_GNOME:
+    case player_race_type::RACE_GNOME:
         msg_print(_("パッ!", "Blink!"));
         teleport_player(creature_ptr, 10, TELEPORT_SPONTANEOUS);
         return true;
-    case RACE_HALF_ORC:
+    case player_race_type::RACE_HALF_ORC:
         msg_print(_("勇気を出した。", "You play tough."));
         (void)set_afraid(creature_ptr, 0);
         return true;
-    case RACE_HALF_TROLL:
+    case player_race_type::RACE_HALF_TROLL:
         msg_print(_("うがぁぁ!", "RAAAGH!"));
         (void)berserk(creature_ptr, 10 + randint1(creature_ptr->lev));
         return true;
-    case RACE_AMBERITE:
+    case player_race_type::RACE_AMBERITE:
         if (command == -1) {
             msg_print(_("あなたは歩き周り始めた。", "You start walking around. "));
             reserve_alter_reality(creature_ptr, randint0(21) + 15);
@@ -325,32 +325,32 @@ bool switch_race_racial_execution(player_type *creature_ptr, const s32b command)
         (void)restore_all_status(creature_ptr);
         (void)restore_level(creature_ptr);
         return true;
-    case RACE_BARBARIAN:
+    case player_race_type::RACE_BARBARIAN:
         msg_print(_("うぉぉおお!", "Raaagh!"));
         (void)berserk(creature_ptr, 10 + randint1(creature_ptr->lev));
         return true;
-    case RACE_HALF_OGRE:
+    case player_race_type::RACE_HALF_OGRE:
         msg_print(_("爆発のルーンを慎重に仕掛けた...", "You carefully set an explosive rune..."));
         (void)create_rune_explosion(creature_ptr, creature_ptr->y, creature_ptr->x);
         return true;
-    case RACE_HALF_GIANT:
+    case player_race_type::RACE_HALF_GIANT:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
         (void)wall_to_mud(creature_ptr, dir, 20 + randint1(30));
         return true;
-    case RACE_HALF_TITAN:
+    case player_race_type::RACE_HALF_TITAN:
         msg_print(_("敵を調査した...", "You examine your foes..."));
         (void)probing(creature_ptr);
         return true;
-    case RACE_CYCLOPS:
+    case player_race_type::RACE_CYCLOPS:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
         msg_print(_("巨大な岩を投げた。", "You throw a huge boulder."));
         (void)fire_bolt(creature_ptr, GF_MISSILE, dir, (3 * creature_ptr->lev) / 2);
         return true;
-    case RACE_YEEK:
+    case player_race_type::RACE_YEEK:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
@@ -358,7 +358,7 @@ bool switch_race_racial_execution(player_type *creature_ptr, const s32b command)
         msg_print(_("身の毛もよだつ叫び声を上げた!", "You make a horrible scream!"));
         (void)fear_monster(creature_ptr, dir, creature_ptr->lev);
         return true;
-    case RACE_KLACKON:
+    case player_race_type::RACE_KLACKON:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
@@ -370,36 +370,36 @@ bool switch_race_racial_execution(player_type *creature_ptr, const s32b command)
             (void)fire_ball(creature_ptr, GF_ACID, dir, creature_ptr->lev, 2);
 
         return true;
-    case RACE_KOBOLD:
+    case player_race_type::RACE_KOBOLD:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
         msg_print(_("毒のダーツを投げた。", "You throw a poisoned dart."));
         (void)fire_bolt(creature_ptr, GF_POIS, dir, creature_ptr->lev);
         return true;
-    case RACE_NIBELUNG:
+    case player_race_type::RACE_NIBELUNG:
         msg_print(_("周囲を調査した。", "You examine your surroundings."));
         (void)detect_traps(creature_ptr, DETECT_RAD_DEFAULT, true);
         (void)detect_doors(creature_ptr, DETECT_RAD_DEFAULT);
         (void)detect_stairs(creature_ptr, DETECT_RAD_DEFAULT);
         return true;
-    case RACE_DARK_ELF:
+    case player_race_type::RACE_DARK_ELF:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
         msg_print(_("マジック・ミサイルを放った。", "You cast a magic missile."));
         (void)fire_bolt_or_beam(creature_ptr, 10, GF_MISSILE, dir, damroll(3 + ((creature_ptr->lev - 1) / 5), 4));
         return true;
-    case RACE_DRACONIAN:
+    case player_race_type::RACE_DRACONIAN:
         return draconian_breath(creature_ptr);
-    case RACE_MIND_FLAYER:
+    case player_race_type::RACE_MIND_FLAYER:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
         msg_print(_("あなたは集中し、目が赤く輝いた...", "You concentrate and your eyes glow red..."));
         (void)fire_bolt(creature_ptr, GF_PSI, dir, creature_ptr->lev);
         return true;
-    case RACE_IMP:
+    case player_race_type::RACE_IMP:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
@@ -412,18 +412,18 @@ bool switch_race_racial_execution(player_type *creature_ptr, const s32b command)
         }
 
         return true;
-    case RACE_GOLEM:
+    case player_race_type::RACE_GOLEM:
         (void)set_shield(creature_ptr, randint1(20) + 30, false);
         return true;
-    case RACE_SKELETON:
-    case RACE_ZOMBIE:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_ZOMBIE:
         msg_print(_("あなたは失ったエネルギーを取り戻そうと試みた。", "You attempt to restore your lost energies."));
         (void)restore_level(creature_ptr);
         return true;
-    case RACE_VAMPIRE:
+    case player_race_type::RACE_VAMPIRE:
         (void)vampirism(creature_ptr);
         return true;
-    case RACE_SPECTRE:
+    case player_race_type::RACE_SPECTRE:
         if (!get_aim_dir(creature_ptr, &dir))
             return false;
 
@@ -431,7 +431,7 @@ bool switch_race_racial_execution(player_type *creature_ptr, const s32b command)
         msg_print(_("あなたはおどろおどろしい叫び声をあげた!", "You emit an eldritch howl!"));
         (void)fear_monster(creature_ptr, dir, creature_ptr->lev);
         return true;
-    case RACE_SPRITE:
+    case player_race_type::RACE_SPRITE:
         msg_print(_("あなたは魔法の粉を投げつけた...", "You throw some magic dust..."));
         if (creature_ptr->lev < 25)
             (void)sleep_monsters_touch(creature_ptr);
@@ -439,12 +439,12 @@ bool switch_race_racial_execution(player_type *creature_ptr, const s32b command)
             (void)sleep_monsters(creature_ptr, creature_ptr->lev);
 
         return true;
-    case RACE_BALROG:
+    case player_race_type::RACE_BALROG:
         return demonic_breath(creature_ptr);
-    case RACE_KUTAR:
+    case player_race_type::RACE_KUTAR:
         (void)set_leveling(creature_ptr, randint1(20) + 30, false);
         return true;
-    case RACE_ANDROID:
+    case player_race_type::RACE_ANDROID:
         return android_inside_weapon(creature_ptr);
     default:
         msg_print(_("この種族は特殊な能力を持っていません。", "This race has no bonus power."));
index cd4d198..4baedc9 100644 (file)
@@ -59,7 +59,7 @@ bool activate_bloody_moon(player_type *user_ptr, object_type *o_ptr)
 
     msg_print(_("鎌が明るく輝いた...", "Your scythe glows brightly!"));
     get_bloody_moon_flags(o_ptr);
-    if (user_ptr->prace == RACE_ANDROID)
+    if (user_ptr->prace == player_race_type::RACE_ANDROID)
         calc_android_exp(user_ptr);
 
     user_ptr->update |= PU_BONUS | PU_HP;
index 1927785..a6f6a17 100644 (file)
 static int calc_death_scythe_reflection_magnification_mimic_none(player_type *attacker_ptr)
 {
     switch (attacker_ptr->prace) {
-    case RACE_YEEK:
-    case RACE_KLACKON:
-    case RACE_HUMAN:
-    case RACE_AMBERITE:
-    case RACE_DUNADAN:
-    case RACE_BARBARIAN:
-    case RACE_BEASTMAN:
+    case player_race_type::RACE_YEEK:
+    case player_race_type::RACE_KLACKON:
+    case player_race_type::RACE_HUMAN:
+    case player_race_type::RACE_AMBERITE:
+    case player_race_type::RACE_DUNADAN:
+    case player_race_type::RACE_BARBARIAN:
+    case player_race_type::RACE_BEASTMAN:
         return 25;
-    case RACE_HALF_ORC:
-    case RACE_HALF_TROLL:
-    case RACE_HALF_OGRE:
-    case RACE_HALF_GIANT:
-    case RACE_HALF_TITAN:
-    case RACE_CYCLOPS:
-    case RACE_IMP:
-    case RACE_SKELETON:
-    case RACE_ZOMBIE:
-    case RACE_VAMPIRE:
-    case RACE_SPECTRE:
-    case RACE_BALROG:
-    case RACE_DRACONIAN:
+    case player_race_type::RACE_HALF_ORC:
+    case player_race_type::RACE_HALF_TROLL:
+    case player_race_type::RACE_HALF_OGRE:
+    case player_race_type::RACE_HALF_GIANT:
+    case player_race_type::RACE_HALF_TITAN:
+    case player_race_type::RACE_CYCLOPS:
+    case player_race_type::RACE_IMP:
+    case player_race_type::RACE_SKELETON:
+    case player_race_type::RACE_ZOMBIE:
+    case player_race_type::RACE_VAMPIRE:
+    case player_race_type::RACE_SPECTRE:
+    case player_race_type::RACE_BALROG:
+    case player_race_type::RACE_DRACONIAN:
         return 30;
     default:
         return 10;
index 7bd1812..197c4ad 100644 (file)
@@ -38,7 +38,7 @@ bool set_blind(player_type *creature_ptr, TIME_EFFECT v)
 
     if (v) {
         if (!creature_ptr->blind) {
-            if (creature_ptr->prace == RACE_ANDROID) {
+            if (creature_ptr->prace == player_race_type::RACE_ANDROID) {
                 msg_print(_("センサーをやられた!", "The sensor broke!"));
             } else {
                 msg_print(_("目が見えなくなってしまった!", "You are blind!"));
@@ -51,7 +51,7 @@ bool set_blind(player_type *creature_ptr, TIME_EFFECT v)
 
     else {
         if (creature_ptr->blind) {
-            if (creature_ptr->prace == RACE_ANDROID) {
+            if (creature_ptr->prace == player_race_type::RACE_ANDROID) {
                 msg_print(_("センサーが復旧した。", "The sensor has been restored."));
             } else {
                 msg_print(_("やっと目が見えるようになった。", "You can see again."));
@@ -382,7 +382,7 @@ bool set_stun(player_type *creature_ptr, TIME_EFFECT v)
     v = (v > 10000) ? 10000 : (v < 0) ? 0 : v;
     if (creature_ptr->is_dead)
         return false;
-    if (is_specific_player_race(creature_ptr, RACE_GOLEM) || ((creature_ptr->pclass == CLASS_BERSERKER) && (creature_ptr->lev > 34)))
+    if (is_specific_player_race(creature_ptr, player_race_type::RACE_GOLEM) || ((creature_ptr->pclass == CLASS_BERSERKER) && (creature_ptr->lev > 34)))
         v = 0;
 
     if (creature_ptr->stun > 100) {
@@ -489,8 +489,8 @@ bool set_cut(player_type *creature_ptr, TIME_EFFECT v)
     if (creature_ptr->is_dead)
         return false;
 
-    if ((creature_ptr->prace == RACE_GOLEM || creature_ptr->prace == RACE_SKELETON || creature_ptr->prace == RACE_SPECTRE
-            || (creature_ptr->prace == RACE_ZOMBIE && creature_ptr->lev > 11))
+    if ((creature_ptr->prace == player_race_type::RACE_GOLEM || creature_ptr->prace == player_race_type::RACE_SKELETON || creature_ptr->prace == player_race_type::RACE_SPECTRE
+            || (creature_ptr->prace == player_race_type::RACE_ZOMBIE && creature_ptr->lev > 11))
         && !creature_ptr->mimic_form)
         v = 0;
 
@@ -565,7 +565,7 @@ bool set_cut(player_type *creature_ptr, TIME_EFFECT v)
     } else if (new_aux < old_aux) {
         if (new_aux == 0) {
             msg_format(_("やっと%s。", "You are no longer %s."),
-                creature_ptr->prace == RACE_ANDROID ? _("怪我が直った", "leaking fluid") : _("出血が止まった", "bleeding"));
+                creature_ptr->prace == player_race_type::RACE_ANDROID ? _("怪我が直った", "leaking fluid") : _("出血が止まった", "bleeding"));
             if (disturb_state)
                 disturb(creature_ptr, false, false);
         }
index 1ba9e7f..e2df13d 100644 (file)
@@ -104,7 +104,7 @@ bool set_oppose_fire(player_type *creature_ptr, TIME_EFFECT v, bool do_dec)
     if (creature_ptr->is_dead)
         return false;
 
-    if ((is_specific_player_race(creature_ptr, RACE_BALROG) && (creature_ptr->lev > 44)) || (creature_ptr->mimic_form == MIMIC_DEMON))
+    if ((is_specific_player_race(creature_ptr, player_race_type::RACE_BALROG) && (creature_ptr->lev > 44)) || (creature_ptr->mimic_form == MIMIC_DEMON))
         v = 1;
     if (v) {
         if (creature_ptr->oppose_fire && !do_dec) {
@@ -228,7 +228,7 @@ bool is_oppose_fire(player_type *creature_ptr)
 {
     return creature_ptr->oppose_fire || music_singing(creature_ptr, MUSIC_RESIST)
         || (creature_ptr->special_defense & KATA_MUSOU || (creature_ptr->mimic_form == MIMIC_DEMON)
-            || (is_specific_player_race(creature_ptr, RACE_BALROG) && creature_ptr->lev > 44));
+            || (is_specific_player_race(creature_ptr, player_race_type::RACE_BALROG) && creature_ptr->lev > 44));
 }
 
 bool is_oppose_cold(player_type *creature_ptr)
index 7ad61e3..726da00 100644 (file)
@@ -10,7 +10,7 @@ void gain_exp_64(player_type *creature_ptr, s32b amount, u32b amount_frac)
 {
     if (creature_ptr->is_dead)
         return;
-    if (creature_ptr->prace == RACE_ANDROID)
+    if (creature_ptr->prace == player_race_type::RACE_ANDROID)
         return;
 
     s64b_add(&(creature_ptr->exp), &(creature_ptr->exp_frac), amount, amount_frac);
@@ -32,7 +32,7 @@ void gain_exp(player_type *creature_ptr, s32b amount) { gain_exp_64(creature_ptr
  */
 void lose_exp(player_type *creature_ptr, s32b amount)
 {
-    if (creature_ptr->prace == RACE_ANDROID)
+    if (creature_ptr->prace == player_race_type::RACE_ANDROID)
         return;
     if (amount > creature_ptr->exp)
         amount = creature_ptr->exp;
@@ -63,7 +63,7 @@ bool restore_level(player_type *creature_ptr)
  */
 bool drain_exp(player_type *creature_ptr, s32b drain, s32b slip, int hold_exp_prob)
 {
-    if (creature_ptr->prace == RACE_ANDROID)
+    if (creature_ptr->prace == player_race_type::RACE_ANDROID)
         return false;
 
     if (creature_ptr->hold_exp && (randint0(100) < hold_exp_prob)) {
index 25de24b..9ddf7ff 100644 (file)
@@ -52,8 +52,8 @@ void do_poly_wounds(player_type *creature_ptr)
  */
 void change_race(player_type *creature_ptr, player_race_type new_race, concptr effect_msg)
 {
-    concptr title = race_info[new_race].title;
-    int old_race = creature_ptr->prace;
+    concptr title = race_info[static_cast<int>(new_race)].title;
+    player_race_type old_race = creature_ptr->prace;
 #ifdef JP
     msg_format("あなたは%s%sに変化した!", effect_msg, title);
 #else
@@ -61,21 +61,21 @@ void change_race(player_type *creature_ptr, player_race_type new_race, concptr e
 #endif
 
     chg_virtue(creature_ptr, V_CHANCE, 2);
-    if (creature_ptr->prace < 32) {
-        creature_ptr->old_race1 |= 1UL << creature_ptr->prace;
+    if (static_cast<int>(creature_ptr->prace) < 32) {
+        creature_ptr->old_race1 |= 1UL << static_cast<int>(creature_ptr->prace);
     } else {
-        creature_ptr->old_race2 |= 1UL << (creature_ptr->prace - 32);
+        creature_ptr->old_race2 |= 1UL << (static_cast<int>(creature_ptr->prace) - 32);
     }
 
     creature_ptr->prace = new_race;
-    rp_ptr = &race_info[creature_ptr->prace];
+    rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
     creature_ptr->expfact = rp_ptr->r_exp + cp_ptr->c_exp;
 
     bool is_special_class = creature_ptr->pclass == CLASS_MONK;
     is_special_class |= creature_ptr->pclass == CLASS_FORCETRAINER;
     is_special_class |= creature_ptr->pclass == CLASS_NINJA;
-    bool is_special_race = creature_ptr->prace == RACE_KLACKON;
-    is_special_race |= creature_ptr->prace == RACE_SPRITE;
+    bool is_special_race = creature_ptr->prace == player_race_type::RACE_KLACKON;
+    is_special_race |= creature_ptr->prace == player_race_type::RACE_SPRITE;
     if (is_special_class && is_special_race)
         creature_ptr->expfact -= 15;
 
@@ -105,7 +105,7 @@ void do_poly_self(player_type *creature_ptr)
     msg_print(_("あなたは変化の訪れを感じた...", "You feel a change coming over you..."));
     chg_virtue(creature_ptr, V_CHANCE, 1);
 
-    if ((power > randint0(20)) && one_in_(3) && (creature_ptr->prace != RACE_ANDROID)) {
+    if ((power > randint0(20)) && one_in_(3) && (creature_ptr->prace != player_race_type::RACE_ANDROID)) {
         char effect_msg[80] = "";
         char sex_msg[32] = "";
         player_race_type new_race;
@@ -153,7 +153,7 @@ void do_poly_self(player_type *creature_ptr)
 
         do {
             new_race = (player_race_type)randint0(MAX_RACES);
-        } while ((new_race == creature_ptr->prace) || (new_race == RACE_ANDROID));
+        } while ((new_race == creature_ptr->prace) || (new_race == player_race_type::RACE_ANDROID));
 
         change_race(creature_ptr, new_race, effect_msg);
     }
@@ -161,7 +161,7 @@ void do_poly_self(player_type *creature_ptr)
     if ((power > randint0(30)) && one_in_(6)) {
         int tmp = 0;
         power -= 20;
-        msg_format(_("%sの構成が変化した!", "Your internal organs are rearranged!"), creature_ptr->prace == RACE_ANDROID ? "機械" : "内臓");
+        msg_format(_("%sの構成が変化した!", "Your internal organs are rearranged!"), creature_ptr->prace == player_race_type::RACE_ANDROID ? "機械" : "内臓");
 
         while (tmp < A_MAX) {
             (void)dec_stat(creature_ptr, tmp, randint1(6) + 6, one_in_(3));
index 0cb3860..0f46562 100644 (file)
@@ -36,7 +36,7 @@ PRICE price_item(player_type *player_ptr, object_type *o_ptr, int greed, bool fl
     if (price <= 0)
         return 0L;
 
-    int factor = rgold_adj[ot_ptr->owner_race][player_ptr->prace];
+    int factor = rgold_adj[static_cast<int>(ot_ptr->owner_race)][static_cast<int>(player_ptr->prace)];
     factor += adj_chr_gold[player_ptr->stat_index[A_CHR]];
     int adjust;
     if (flip) {
index 4c784f1..093f7b8 100644 (file)
@@ -141,7 +141,7 @@ static void shuffle_store(player_type *player_ptr)
     msg_print(_("店主は引退した。", "The shopkeeper retires."));
     store_shuffle(player_ptr, cur_store_num);
     prt("", 3, 0);
-    sprintf(buf, "%s (%s)", ot_ptr->owner_name, race_info[ot_ptr->owner_race].title);
+    sprintf(buf, "%s (%s)", ot_ptr->owner_name, race_info[static_cast<int>(ot_ptr->owner_race)].title);
     put_str(buf, 3, 10);
     sprintf(buf, "%s (%ld)", f_info[cur_store_feat].name.c_str(), (long)(ot_ptr->max_cost));
     prt(buf, 3, 50);
index 607ca4d..5d0d312 100644 (file)
@@ -10,644 +10,644 @@ const owner_type owners[MAX_STORES][MAX_OWNERS] = {
         /*
           Raistlin は dragonlance の powerful wizard 。
           Rincewind the Chicken は Terry Pratchett の Discworld の登場人物 上記のパロディ?、
-          { "憶病者ラストリン",  200, 108, RACE_HUMAN},
-          { "Raistlin the Chicken", 200, 108, RACE_HUMAN},
+          { "憶病者ラストリン",  200, 108, player_race_type::RACE_HUMAN},
+          { "Raistlin the Chicken", 200, 108, player_race_type::RACE_HUMAN},
         */
 #ifdef JP
-        { "フレンドリーなビルボ", 30000, 108, RACE_HOBBIT },
-        { "憶病者リンスウィンド", 30000, 108, RACE_HUMAN },
-        { "背の低いサルタン", 30000, 107, RACE_GNOME },
-        { "ハンサムなライア=エル", 30000, 107, RACE_ELF },
-        { "親切なファリルマウエン", 30000, 108, RACE_HOBBIT },
-        { "臆病者ヴォワラン", 30000, 108, RACE_HUMAN },
-        { "チビのエラシュナク", 30000, 107, RACE_BEASTMAN },
-        { "ハンサムなグラッグ", 30000, 107, RACE_HALF_TITAN },
-        { "ケチなフォロビア", 30000, 108, RACE_HUMAN },
-        { "馬鹿のエリス", 30000, 108, RACE_HUMAN },
-        { "腹ペコのフィルバート", 30000, 107, RACE_VAMPIRE },
-        { "スナーグル・サシグア", 30000, 107, RACE_MIND_FLAYER },
-        { "長死きエロワーズ", 30000, 108, RACE_SPECTRE },
-        { "ノロマのフンディ", 30000, 108, RACE_ZOMBIE },
-        { "グランサス", 30000, 107, RACE_SKELETON },
-        { "丁寧なロラックス", 30000, 107, RACE_VAMPIRE },
-        { "ブッチ", 30000, 108, RACE_HALF_ORC },
-        { "美しきエルベレス", 30000, 108, RACE_HIGH_ELF },
-        { "こそこそサーレス", 30000, 107, RACE_GNOME },
-        { "ナーロック", 30000, 107, RACE_DWARF },
-        { "チビのヘイネッカ", 30000, 108, RACE_GNOME },
-        { "きちがいロワラン", 30000, 108, RACE_HALF_GIANT },
-        { "毒息のウート", 30000, 107, RACE_DRACONIAN },
-        { "でぶっちょアラァカ", 30000, 107, RACE_DRACONIAN },
-        { "低能なプーゴー", 30000, 108, RACE_BEASTMAN },
-        { "フェロールフィリアン", 30000, 108, RACE_ELF },
-        { "年寄りマロカ", 30000, 107, RACE_GNOME },
-        { "勇敢なサシン", 30000, 107, RACE_HALF_GIANT },
-        { "田舎者アビエマール", 30000, 108, RACE_HUMAN },
-        { "貧乏なハーク", 30000, 108, RACE_HALF_ORC },
-        { "みじめなソアリン", 30000, 107, RACE_ZOMBIE },
-        { "質素なメルラ", 30000, 107, RACE_ELF },
+        { "フレンドリーなビルボ", 30000, 108, player_race_type::RACE_HOBBIT },
+        { "憶病者リンスウィンド", 30000, 108, player_race_type::RACE_HUMAN },
+        { "背の低いサルタン", 30000, 107, player_race_type::RACE_GNOME },
+        { "ハンサムなライア=エル", 30000, 107, player_race_type::RACE_ELF },
+        { "親切なファリルマウエン", 30000, 108, player_race_type::RACE_HOBBIT },
+        { "臆病者ヴォワラン", 30000, 108, player_race_type::RACE_HUMAN },
+        { "チビのエラシュナク", 30000, 107, player_race_type::RACE_BEASTMAN },
+        { "ハンサムなグラッグ", 30000, 107, player_race_type::RACE_HALF_TITAN },
+        { "ケチなフォロビア", 30000, 108, player_race_type::RACE_HUMAN },
+        { "馬鹿のエリス", 30000, 108, player_race_type::RACE_HUMAN },
+        { "腹ペコのフィルバート", 30000, 107, player_race_type::RACE_VAMPIRE },
+        { "スナーグル・サシグア", 30000, 107, player_race_type::RACE_MIND_FLAYER },
+        { "長死きエロワーズ", 30000, 108, player_race_type::RACE_SPECTRE },
+        { "ノロマのフンディ", 30000, 108, player_race_type::RACE_ZOMBIE },
+        { "グランサス", 30000, 107, player_race_type::RACE_SKELETON },
+        { "丁寧なロラックス", 30000, 107, player_race_type::RACE_VAMPIRE },
+        { "ブッチ", 30000, 108, player_race_type::RACE_HALF_ORC },
+        { "美しきエルベレス", 30000, 108, player_race_type::RACE_HIGH_ELF },
+        { "こそこそサーレス", 30000, 107, player_race_type::RACE_GNOME },
+        { "ナーロック", 30000, 107, player_race_type::RACE_DWARF },
+        { "チビのヘイネッカ", 30000, 108, player_race_type::RACE_GNOME },
+        { "きちがいロワラン", 30000, 108, player_race_type::RACE_HALF_GIANT },
+        { "毒息のウート", 30000, 107, player_race_type::RACE_DRACONIAN },
+        { "でぶっちょアラァカ", 30000, 107, player_race_type::RACE_DRACONIAN },
+        { "低能なプーゴー", 30000, 108, player_race_type::RACE_BEASTMAN },
+        { "フェロールフィリアン", 30000, 108, player_race_type::RACE_ELF },
+        { "年寄りマロカ", 30000, 107, player_race_type::RACE_GNOME },
+        { "勇敢なサシン", 30000, 107, player_race_type::RACE_HALF_GIANT },
+        { "田舎者アビエマール", 30000, 108, player_race_type::RACE_HUMAN },
+        { "貧乏なハーク", 30000, 108, player_race_type::RACE_HALF_ORC },
+        { "みじめなソアリン", 30000, 107, player_race_type::RACE_ZOMBIE },
+        { "質素なメルラ", 30000, 107, player_race_type::RACE_ELF },
 #else
-        { "Bilbo the Friendly", 30000, 108, RACE_HOBBIT },
-        { "Rincewind the Chicken", 30000, 108, RACE_HUMAN },
-        { "Sultan the Midget", 30000, 107, RACE_GNOME },
-        { "Lyar-el the Comely", 30000, 107, RACE_ELF },
-        { "Falilmawen the Friendly", 30000, 108, RACE_HOBBIT },
-        { "Voirin the Cowardly", 30000, 108, RACE_HUMAN },
-        { "Erashnak the Midget", 30000, 107, RACE_BEASTMAN },
-        { "Grug the Comely", 30000, 107, RACE_HALF_TITAN },
-        { "Forovir the Cheap", 30000, 108, RACE_HUMAN },
-        { "Ellis the Fool", 30000, 108, RACE_HUMAN },
-        { "Filbert the Hungry", 30000, 107, RACE_VAMPIRE },
-        { "Fthnargl Psathiggua", 30000, 107, RACE_MIND_FLAYER },
-        { "Eloise Long-Dead", 30000, 108, RACE_SPECTRE },
-        { "Fundi the Slow", 30000, 108, RACE_ZOMBIE },
-        { "Granthus", 30000, 107, RACE_SKELETON },
-        { "Lorax the Suave", 30000, 107, RACE_VAMPIRE },
-        { "Butch", 30000, 108, RACE_HALF_ORC },
-        { "Elbereth the Beautiful", 30000, 108, RACE_HIGH_ELF },
-        { "Sarleth the Sneaky", 30000, 107, RACE_GNOME },
-        { "Narlock", 30000, 107, RACE_DWARF },
-        { "Haneka the Small", 30000, 108, RACE_GNOME },
-        { "Loirin the Mad", 30000, 108, RACE_HALF_GIANT },
-        { "Wuto Poisonbreath", 30000, 107, RACE_DRACONIAN },
-        { "Araaka the Rotund", 30000, 107, RACE_DRACONIAN },
-        { "Poogor the Dumb", 30000, 108, RACE_BEASTMAN },
-        { "Felorfiliand", 30000, 108, RACE_ELF },
-        { "Maroka the Aged", 30000, 107, RACE_GNOME },
-        { "Sasin the Bold", 30000, 107, RACE_HALF_GIANT },
-        { "Abiemar the Peasant", 30000, 108, RACE_HUMAN },
-        { "Hurk the Poor", 30000, 108, RACE_HALF_ORC },
-        { "Soalin the Wretched", 30000, 107, RACE_ZOMBIE },
-        { "Merulla the Humble", 30000, 107, RACE_ELF },
+        { "Bilbo the Friendly", 30000, 108, player_race_type::RACE_HOBBIT },
+        { "Rincewind the Chicken", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Sultan the Midget", 30000, 107, player_race_type::RACE_GNOME },
+        { "Lyar-el the Comely", 30000, 107, player_race_type::RACE_ELF },
+        { "Falilmawen the Friendly", 30000, 108, player_race_type::RACE_HOBBIT },
+        { "Voirin the Cowardly", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Erashnak the Midget", 30000, 107, player_race_type::RACE_BEASTMAN },
+        { "Grug the Comely", 30000, 107, player_race_type::RACE_HALF_TITAN },
+        { "Forovir the Cheap", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Ellis the Fool", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Filbert the Hungry", 30000, 107, player_race_type::RACE_VAMPIRE },
+        { "Fthnargl Psathiggua", 30000, 107, player_race_type::RACE_MIND_FLAYER },
+        { "Eloise Long-Dead", 30000, 108, player_race_type::RACE_SPECTRE },
+        { "Fundi the Slow", 30000, 108, player_race_type::RACE_ZOMBIE },
+        { "Granthus", 30000, 107, player_race_type::RACE_SKELETON },
+        { "Lorax the Suave", 30000, 107, player_race_type::RACE_VAMPIRE },
+        { "Butch", 30000, 108, player_race_type::RACE_HALF_ORC },
+        { "Elbereth the Beautiful", 30000, 108, player_race_type::RACE_HIGH_ELF },
+        { "Sarleth the Sneaky", 30000, 107, player_race_type::RACE_GNOME },
+        { "Narlock", 30000, 107, player_race_type::RACE_DWARF },
+        { "Haneka the Small", 30000, 108, player_race_type::RACE_GNOME },
+        { "Loirin the Mad", 30000, 108, player_race_type::RACE_HALF_GIANT },
+        { "Wuto Poisonbreath", 30000, 107, player_race_type::RACE_DRACONIAN },
+        { "Araaka the Rotund", 30000, 107, player_race_type::RACE_DRACONIAN },
+        { "Poogor the Dumb", 30000, 108, player_race_type::RACE_BEASTMAN },
+        { "Felorfiliand", 30000, 108, player_race_type::RACE_ELF },
+        { "Maroka the Aged", 30000, 107, player_race_type::RACE_GNOME },
+        { "Sasin the Bold", 30000, 107, player_race_type::RACE_HALF_GIANT },
+        { "Abiemar the Peasant", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Hurk the Poor", 30000, 108, player_race_type::RACE_HALF_ORC },
+        { "Soalin the Wretched", 30000, 107, player_race_type::RACE_ZOMBIE },
+        { "Merulla the Humble", 30000, 107, player_race_type::RACE_ELF },
 #endif
     },
     {
         /* Armoury - 28 unique names */
 #ifdef JP
-        { "醜悪コン=ダー", 30000, 115, RACE_HALF_ORC },
-        { "頑固者ダーグ=ロウ", 30000, 111, RACE_HUMAN },
-        { "賢者デカド", 30000, 112, RACE_DUNADAN },
-        { "鍛冶屋のウィーランド", 30000, 112, RACE_DWARF },
-        { "醜悪コン=ダー", 30000, 115, RACE_HALF_ORC },
-        { "頑固者ダーグ=ロウ", 30000, 111, RACE_HUMAN },
-        { "ハンサムなデカド", 30000, 112, RACE_AMBERITE },
-        { "エロー・ドラゴンスケイル", 30000, 112, RACE_ELF },
-        { "デリカトス", 30000, 115, RACE_SPRITE },
-        { "巨大なグルース", 30000, 111, RACE_HALF_GIANT },
-        { "アニムス", 30000, 112, RACE_GOLEM },
-        { "マルヴァス", 30000, 112, RACE_HALF_TITAN },
-        { "セラクシス", 30000, 115, RACE_ZOMBIE },
-        { "デス・チル", 30000, 111, RACE_SPECTRE },
-        { "微かなドリオス", 30000, 112, RACE_SPECTRE },
-        { "冷たいバスリック", 30000, 112, RACE_VAMPIRE },
-        { "冷酷ヴェンジェラ", 30000, 115, RACE_HALF_TROLL },
-        { "強者ウィラナ", 30000, 111, RACE_HUMAN },
-        { "ヨジョ二世", 30000, 112, RACE_DWARF },
-        { "優しいラナラー", 30000, 112, RACE_AMBERITE },
-        { "不浄のホルバグ", 30000, 115, RACE_HALF_ORC },
-        { "テレパスのエレレン", 30000, 111, RACE_DARK_ELF },
-        { "イスドリリアス", 30000, 112, RACE_SPRITE },
-        { "一つ目ヴェグナー", 30000, 112, RACE_CYCLOPS },
-        { "混沌のロディッシュ", 30000, 115, RACE_BEASTMAN },
-        { "剣豪ヘジン", 30000, 111, RACE_NIBELUNG },
-        { "ずる屋のエルベレリス", 30000, 112, RACE_DARK_ELF },
-        { "インプのザサス", 30000, 112, RACE_IMP },
-        { "醜悪コン=ダー", 30000, 115, RACE_HALF_ORC },
-        { "頑固者ダーグ=ロウ", 30000, 111, RACE_HUMAN },
-        { "ハンサムなデカド", 30000, 112, RACE_AMBERITE },
-        { "鍛冶屋のウィーランド", 30000, 112, RACE_DWARF },
+        { "醜悪コン=ダー", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "頑固者ダーグ=ロウ", 30000, 111, player_race_type::RACE_HUMAN },
+        { "賢者デカド", 30000, 112, player_race_type::RACE_DUNADAN },
+        { "鍛冶屋のウィーランド", 30000, 112, player_race_type::RACE_DWARF },
+        { "醜悪コン=ダー", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "頑固者ダーグ=ロウ", 30000, 111, player_race_type::RACE_HUMAN },
+        { "ハンサムなデカド", 30000, 112, player_race_type::RACE_AMBERITE },
+        { "エロー・ドラゴンスケイル", 30000, 112, player_race_type::RACE_ELF },
+        { "デリカトス", 30000, 115, player_race_type::RACE_SPRITE },
+        { "巨大なグルース", 30000, 111, player_race_type::RACE_HALF_GIANT },
+        { "アニムス", 30000, 112, player_race_type::RACE_GOLEM },
+        { "マルヴァス", 30000, 112, player_race_type::RACE_HALF_TITAN },
+        { "セラクシス", 30000, 115, player_race_type::RACE_ZOMBIE },
+        { "デス・チル", 30000, 111, player_race_type::RACE_SPECTRE },
+        { "微かなドリオス", 30000, 112, player_race_type::RACE_SPECTRE },
+        { "冷たいバスリック", 30000, 112, player_race_type::RACE_VAMPIRE },
+        { "冷酷ヴェンジェラ", 30000, 115, player_race_type::RACE_HALF_TROLL },
+        { "強者ウィラナ", 30000, 111, player_race_type::RACE_HUMAN },
+        { "ヨジョ二世", 30000, 112, player_race_type::RACE_DWARF },
+        { "優しいラナラー", 30000, 112, player_race_type::RACE_AMBERITE },
+        { "不浄のホルバグ", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "テレパスのエレレン", 30000, 111, player_race_type::RACE_DARK_ELF },
+        { "イスドリリアス", 30000, 112, player_race_type::RACE_SPRITE },
+        { "一つ目ヴェグナー", 30000, 112, player_race_type::RACE_CYCLOPS },
+        { "混沌のロディッシュ", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "剣豪ヘジン", 30000, 111, player_race_type::RACE_NIBELUNG },
+        { "ずる屋のエルベレリス", 30000, 112, player_race_type::RACE_DARK_ELF },
+        { "インプのザサス", 30000, 112, player_race_type::RACE_IMP },
+        { "醜悪コン=ダー", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "頑固者ダーグ=ロウ", 30000, 111, player_race_type::RACE_HUMAN },
+        { "ハンサムなデカド", 30000, 112, player_race_type::RACE_AMBERITE },
+        { "鍛冶屋のウィーランド", 30000, 112, player_race_type::RACE_DWARF },
 #else
-        { "Kon-Dar the Ugly", 30000, 115, RACE_HALF_ORC },
-        { "Darg-Low the Grim", 30000, 111, RACE_HUMAN },
-        { "Decado the Handsome", 30000, 112, RACE_DUNADAN },
-        { "Wieland the Smith", 30000, 112, RACE_DWARF },
-        { "Kon-Dar the Ugly", 30000, 115, RACE_HALF_ORC },
-        { "Darg-Low the Grim", 30000, 111, RACE_HUMAN },
-        { "Decado the Handsome", 30000, 112, RACE_AMBERITE },
-        { "Elo Dragonscale", 30000, 112, RACE_ELF },
-        { "Delicatus", 30000, 115, RACE_SPRITE },
-        { "Gruce the Huge", 30000, 111, RACE_HALF_GIANT },
-        { "Animus", 30000, 112, RACE_GOLEM },
-        { "Malvus", 30000, 112, RACE_HALF_TITAN },
-        { "Selaxis", 30000, 115, RACE_ZOMBIE },
-        { "Deathchill", 30000, 111, RACE_SPECTRE },
-        { "Drios the Faint", 30000, 112, RACE_SPECTRE },
-        { "Bathric the Cold", 30000, 112, RACE_VAMPIRE },
-        { "Vengella the Cruel", 30000, 115, RACE_HALF_TROLL },
-        { "Wyrana the Mighty", 30000, 111, RACE_HUMAN },
-        { "Yojo II", 30000, 112, RACE_DWARF },
-        { "Ranalar the Sweet", 30000, 112, RACE_AMBERITE },
-        { "Horbag the Unclean", 30000, 115, RACE_HALF_ORC },
-        { "Elelen the Telepath", 30000, 111, RACE_DARK_ELF },
-        { "Isedrelias", 30000, 112, RACE_SPRITE },
-        { "Vegnar One-eye", 30000, 112, RACE_CYCLOPS },
-        { "Rodish the Chaotic", 30000, 115, RACE_BEASTMAN },
-        { "Hesin Swordmaster", 30000, 111, RACE_NIBELUNG },
-        { "Elvererith the Cheat", 30000, 112, RACE_DARK_ELF },
-        { "Zzathath the Imp", 30000, 112, RACE_IMP },
-        { "Kon-Dar the Ugly", 30000, 115, RACE_HALF_ORC },
-        { "Darg-Low the Grim", 30000, 111, RACE_HUMAN },
-        { "Decado the Handsome", 30000, 112, RACE_AMBERITE },
-        { "Wieland the Smith", 30000, 112, RACE_DWARF },
+        { "Kon-Dar the Ugly", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "Darg-Low the Grim", 30000, 111, player_race_type::RACE_HUMAN },
+        { "Decado the Handsome", 30000, 112, player_race_type::RACE_DUNADAN },
+        { "Wieland the Smith", 30000, 112, player_race_type::RACE_DWARF },
+        { "Kon-Dar the Ugly", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "Darg-Low the Grim", 30000, 111, player_race_type::RACE_HUMAN },
+        { "Decado the Handsome", 30000, 112, player_race_type::RACE_AMBERITE },
+        { "Elo Dragonscale", 30000, 112, player_race_type::RACE_ELF },
+        { "Delicatus", 30000, 115, player_race_type::RACE_SPRITE },
+        { "Gruce the Huge", 30000, 111, player_race_type::RACE_HALF_GIANT },
+        { "Animus", 30000, 112, player_race_type::RACE_GOLEM },
+        { "Malvus", 30000, 112, player_race_type::RACE_HALF_TITAN },
+        { "Selaxis", 30000, 115, player_race_type::RACE_ZOMBIE },
+        { "Deathchill", 30000, 111, player_race_type::RACE_SPECTRE },
+        { "Drios the Faint", 30000, 112, player_race_type::RACE_SPECTRE },
+        { "Bathric the Cold", 30000, 112, player_race_type::RACE_VAMPIRE },
+        { "Vengella the Cruel", 30000, 115, player_race_type::RACE_HALF_TROLL },
+        { "Wyrana the Mighty", 30000, 111, player_race_type::RACE_HUMAN },
+        { "Yojo II", 30000, 112, player_race_type::RACE_DWARF },
+        { "Ranalar the Sweet", 30000, 112, player_race_type::RACE_AMBERITE },
+        { "Horbag the Unclean", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "Elelen the Telepath", 30000, 111, player_race_type::RACE_DARK_ELF },
+        { "Isedrelias", 30000, 112, player_race_type::RACE_SPRITE },
+        { "Vegnar One-eye", 30000, 112, player_race_type::RACE_CYCLOPS },
+        { "Rodish the Chaotic", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "Hesin Swordmaster", 30000, 111, player_race_type::RACE_NIBELUNG },
+        { "Elvererith the Cheat", 30000, 112, player_race_type::RACE_DARK_ELF },
+        { "Zzathath the Imp", 30000, 112, player_race_type::RACE_IMP },
+        { "Kon-Dar the Ugly", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "Darg-Low the Grim", 30000, 111, player_race_type::RACE_HUMAN },
+        { "Decado the Handsome", 30000, 112, player_race_type::RACE_AMBERITE },
+        { "Wieland the Smith", 30000, 112, player_race_type::RACE_DWARF },
 #endif
     },
 
     {
         /* Weapon Smith - 28 unique names */
 #ifdef JP
-        { "残忍なるアーノルド", 30000, 115, RACE_HALF_TROLL },
-        { "獣殺しのアーンダル", 30000, 110, RACE_HALF_ELF },
-        { "獣マスターのエディー", 30000, 115, RACE_HOBBIT },
-        { "竜殺しのオグライン", 30000, 112, RACE_DWARF },
-        { "熟練者ドリュー", 30000, 115, RACE_HUMAN },
-        { "龍の子オラックス", 30000, 110, RACE_DRACONIAN },
-        { "病気持ちのアンスラックス", 30000, 115, RACE_BEASTMAN },
-        { "頑丈者アルコス", 30000, 112, RACE_DWARF },
-        { "腐れ者のサリアス", 30000, 115, RACE_ZOMBIE },
-        { "晒し骨のトゥエシク", 30000, 110, RACE_SKELETON },
-        { "ビリオス", 30000, 115, RACE_BEASTMAN },
-        { "ファスガル", 30000, 112, RACE_ZOMBIE },
-        { "パラディンのエレフリス", 30000, 115, RACE_BARBARIAN },
-        { "キ'トリッ'ク", 30000, 110, RACE_KLACKON },
-        { "蜘蛛の友ドゥロカス", 30000, 115, RACE_DARK_ELF },
-        { "巨人殺しのフングス", 30000, 112, RACE_DWARF },
-        { "デランサ", 30000, 115, RACE_ELF },
-        { "レンジャーのソルビスタニ", 30000, 110, RACE_HALF_ELF },
-        { "ノロマのゾリル", 30000, 115, RACE_GOLEM },
-        { "イーオン・フラックス", 30000, 112, RACE_HALF_ELF },
-        { "強者ナドック", 30000, 115, RACE_HOBBIT },
-        { "弱虫エラモグ", 30000, 110, RACE_KOBOLD },
-        { "公正なエオウィリス", 30000, 115, RACE_VAMPIRE },
-        { "バルログ殺しのヒュイモグ", 30000, 112, RACE_HALF_ORC },
-        { "冷酷ピーダス", 30000, 115, RACE_HUMAN },
-        { "ヴァモグ スレイヤー", 30000, 110, RACE_HALF_OGRE },
-        { "性悪フーシュナク", 30000, 115, RACE_BEASTMAN },
-        { "舞闘バレン", 30000, 112, RACE_BARBARIAN },
-        { "残忍なるアーノルド", 30000, 115, RACE_BARBARIAN },
-        { "獣殺しのアーンダル", 30000, 110, RACE_HALF_ELF },
-        { "ビーストマスター・エディー", 30000, 115, RACE_HALF_ORC },
-        { "竜殺しのオグライン", 30000, 112, RACE_DWARF },
+        { "残忍なるアーノルド", 30000, 115, player_race_type::RACE_HALF_TROLL },
+        { "獣殺しのアーンダル", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "獣マスターのエディー", 30000, 115, player_race_type::RACE_HOBBIT },
+        { "竜殺しのオグライン", 30000, 112, player_race_type::RACE_DWARF },
+        { "熟練者ドリュー", 30000, 115, player_race_type::RACE_HUMAN },
+        { "龍の子オラックス", 30000, 110, player_race_type::RACE_DRACONIAN },
+        { "病気持ちのアンスラックス", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "頑丈者アルコス", 30000, 112, player_race_type::RACE_DWARF },
+        { "腐れ者のサリアス", 30000, 115, player_race_type::RACE_ZOMBIE },
+        { "晒し骨のトゥエシク", 30000, 110, player_race_type::RACE_SKELETON },
+        { "ビリオス", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "ファスガル", 30000, 112, player_race_type::RACE_ZOMBIE },
+        { "パラディンのエレフリス", 30000, 115, player_race_type::RACE_BARBARIAN },
+        { "キ'トリッ'ク", 30000, 110, player_race_type::RACE_KLACKON },
+        { "蜘蛛の友ドゥロカス", 30000, 115, player_race_type::RACE_DARK_ELF },
+        { "巨人殺しのフングス", 30000, 112, player_race_type::RACE_DWARF },
+        { "デランサ", 30000, 115, player_race_type::RACE_ELF },
+        { "レンジャーのソルビスタニ", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "ノロマのゾリル", 30000, 115, player_race_type::RACE_GOLEM },
+        { "イーオン・フラックス", 30000, 112, player_race_type::RACE_HALF_ELF },
+        { "強者ナドック", 30000, 115, player_race_type::RACE_HOBBIT },
+        { "弱虫エラモグ", 30000, 110, player_race_type::RACE_KOBOLD },
+        { "公正なエオウィリス", 30000, 115, player_race_type::RACE_VAMPIRE },
+        { "バルログ殺しのヒュイモグ", 30000, 112, player_race_type::RACE_HALF_ORC },
+        { "冷酷ピーダス", 30000, 115, player_race_type::RACE_HUMAN },
+        { "ヴァモグ スレイヤー", 30000, 110, player_race_type::RACE_HALF_OGRE },
+        { "性悪フーシュナク", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "舞闘バレン", 30000, 112, player_race_type::RACE_BARBARIAN },
+        { "残忍なるアーノルド", 30000, 115, player_race_type::RACE_BARBARIAN },
+        { "獣殺しのアーンダル", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "ビーストマスター・エディー", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "竜殺しのオグライン", 30000, 112, player_race_type::RACE_DWARF },
 #else
-        { "Arnold the Beastly", 30000, 115, RACE_BARBARIAN },
-        { "Arndal Beast-Slayer", 30000, 110, RACE_HALF_ELF },
-        { "Eddie Beast-Master", 30000, 115, RACE_HALF_ORC },
-        { "Oglign Dragon-Slayer", 30000, 112, RACE_DWARF },
-        { "Drew the Skilled", 30000, 115, RACE_HUMAN },
-        { "Orrax Dragonson", 30000, 110, RACE_DRACONIAN },
-        { "Anthrax Disease-Carrier", 30000, 115, RACE_BEASTMAN },
-        { "Arkhoth the Stout", 30000, 112, RACE_DWARF },
-        { "Sarlyas the Rotten", 30000, 115, RACE_ZOMBIE },
-        { "Tuethic Bare-Bones", 30000, 110, RACE_SKELETON },
-        { "Bilious", 30000, 115, RACE_BEASTMAN },
-        { "Fasgul", 30000, 112, RACE_ZOMBIE },
-        { "Ellefris the Paladin", 30000, 115, RACE_BARBARIAN },
-        { "K'trrik'k", 30000, 110, RACE_KLACKON },
-        { "Drocus Spiderfriend", 30000, 115, RACE_DARK_ELF },
-        { "Fungus Giant-Slayer", 30000, 112, RACE_DWARF },
-        { "Delantha", 30000, 115, RACE_ELF },
-        { "Solvistani the Ranger", 30000, 110, RACE_HALF_ELF },
-        { "Xoril the Slow", 30000, 115, RACE_GOLEM },
-        { "Aeon Flux", 30000, 112, RACE_HALF_ELF },
-        { "Nadoc the Strong", 30000, 115, RACE_HOBBIT },
-        { "Eramog the Weak", 30000, 110, RACE_KOBOLD },
-        { "Eowilith the Fair", 30000, 115, RACE_VAMPIRE },
-        { "Huimog Balrog-Slayer", 30000, 112, RACE_HALF_ORC },
-        { "Peadus the Cruel", 30000, 115, RACE_HUMAN },
-        { "Vamog Slayer", 30000, 110, RACE_HALF_OGRE },
-        { "Hooshnak the Vicious", 30000, 115, RACE_BEASTMAN },
-        { "Balenn War-Dancer", 30000, 112, RACE_BARBARIAN },
-        { "Arnold the Beastly", 30000, 115, RACE_BARBARIAN },
-        { "Arndal Beast-Slayer", 30000, 110, RACE_HALF_ELF },
-        { "Eddie Beast-Master", 30000, 115, RACE_HALF_ORC },
-        { "Oglign Dragon-Slayer", 30000, 112, RACE_DWARF },
+        { "Arnold the Beastly", 30000, 115, player_race_type::RACE_BARBARIAN },
+        { "Arndal Beast-Slayer", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "Eddie Beast-Master", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "Oglign Dragon-Slayer", 30000, 112, player_race_type::RACE_DWARF },
+        { "Drew the Skilled", 30000, 115, player_race_type::RACE_HUMAN },
+        { "Orrax Dragonson", 30000, 110, player_race_type::RACE_DRACONIAN },
+        { "Anthrax Disease-Carrier", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "Arkhoth the Stout", 30000, 112, player_race_type::RACE_DWARF },
+        { "Sarlyas the Rotten", 30000, 115, player_race_type::RACE_ZOMBIE },
+        { "Tuethic Bare-Bones", 30000, 110, player_race_type::RACE_SKELETON },
+        { "Bilious", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "Fasgul", 30000, 112, player_race_type::RACE_ZOMBIE },
+        { "Ellefris the Paladin", 30000, 115, player_race_type::RACE_BARBARIAN },
+        { "K'trrik'k", 30000, 110, player_race_type::RACE_KLACKON },
+        { "Drocus Spiderfriend", 30000, 115, player_race_type::RACE_DARK_ELF },
+        { "Fungus Giant-Slayer", 30000, 112, player_race_type::RACE_DWARF },
+        { "Delantha", 30000, 115, player_race_type::RACE_ELF },
+        { "Solvistani the Ranger", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "Xoril the Slow", 30000, 115, player_race_type::RACE_GOLEM },
+        { "Aeon Flux", 30000, 112, player_race_type::RACE_HALF_ELF },
+        { "Nadoc the Strong", 30000, 115, player_race_type::RACE_HOBBIT },
+        { "Eramog the Weak", 30000, 110, player_race_type::RACE_KOBOLD },
+        { "Eowilith the Fair", 30000, 115, player_race_type::RACE_VAMPIRE },
+        { "Huimog Balrog-Slayer", 30000, 112, player_race_type::RACE_HALF_ORC },
+        { "Peadus the Cruel", 30000, 115, player_race_type::RACE_HUMAN },
+        { "Vamog Slayer", 30000, 110, player_race_type::RACE_HALF_OGRE },
+        { "Hooshnak the Vicious", 30000, 115, player_race_type::RACE_BEASTMAN },
+        { "Balenn War-Dancer", 30000, 112, player_race_type::RACE_BARBARIAN },
+        { "Arnold the Beastly", 30000, 115, player_race_type::RACE_BARBARIAN },
+        { "Arndal Beast-Slayer", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "Eddie Beast-Master", 30000, 115, player_race_type::RACE_HALF_ORC },
+        { "Oglign Dragon-Slayer", 30000, 112, player_race_type::RACE_DWARF },
 #endif
     },
     {
         /* Temple - 22 unique names */
 #ifdef JP
-        { "質素なルードヴィヒ", 30000, 109, RACE_HUMAN },
-        { "パラディンのガンナー", 30000, 110, RACE_HUMAN },
-        { "選ばれしトリン", 30000, 107, RACE_ELF },
-        { "賢明なるサラストロ", 30000, 109, RACE_DWARF },
-        { "パーシヴァル卿", 30000, 107, RACE_HIGH_ELF },
-        { "神聖なるアセナス", 30000, 109, RACE_HUMAN },
-        { "マッキノン", 30000, 109, RACE_HUMAN },
-        { "謹み婦人", 30000, 110, RACE_HIGH_ELF },
-        { "ドルイドのハシュニック", 30000, 107, RACE_HOBBIT },
-        { "フィナク", 30000, 109, RACE_YEEK },
-        { "クリキック", 30000, 109, RACE_KLACKON },
-        { "荒くれ者モリヴァル", 30000, 110, RACE_ELF },
-        { "暗きホシャック", 30000, 107, RACE_IMP },
-        { "賢者アタール", 30000, 109, RACE_HUMAN },
-        { "清きイベニッド", 30000, 109, RACE_HUMAN },
-        { "エリディシュ", 30000, 110, RACE_HALF_TROLL },
-        { "呪術師ヴルドゥシュ", 30000, 107, RACE_HALF_OGRE },
-        { "狂戦士ハオブ", 30000, 109, RACE_BARBARIAN },
-        { "若きプルーグディシュ", 30000, 109, RACE_HALF_OGRE },
-        { "きちがいラムワイズ", 30000, 110, RACE_YEEK },
-        { "有徳者ムワート", 30000, 107, RACE_KOBOLD },
-        { "弱虫ダードバード", 30000, 109, RACE_SPECTRE },
-        { "質素なルードヴィヒ", 30000, 109, RACE_HUMAN },
-        { "パラディンのガンナー", 30000, 110, RACE_HUMAN },
-        { "選ばれしトリン", 30000, 107, RACE_ELF },
-        { "賢明なるサラストロ", 30000, 109, RACE_DWARF },
-        { "パーシヴァル卿", 30000, 107, RACE_HIGH_ELF },
-        { "神聖なるアセナス", 30000, 109, RACE_HUMAN },
-        { "マッキノン", 30000, 109, RACE_HUMAN },
-        { "謹み婦人", 30000, 110, RACE_HIGH_ELF },
-        { "ドルイドのハシュニック", 30000, 107, RACE_HOBBIT },
-        { "フィナク", 30000, 109, RACE_YEEK },
+        { "質素なルードヴィヒ", 30000, 109, player_race_type::RACE_HUMAN },
+        { "パラディンのガンナー", 30000, 110, player_race_type::RACE_HUMAN },
+        { "選ばれしトリン", 30000, 107, player_race_type::RACE_ELF },
+        { "賢明なるサラストロ", 30000, 109, player_race_type::RACE_DWARF },
+        { "パーシヴァル卿", 30000, 107, player_race_type::RACE_HIGH_ELF },
+        { "神聖なるアセナス", 30000, 109, player_race_type::RACE_HUMAN },
+        { "マッキノン", 30000, 109, player_race_type::RACE_HUMAN },
+        { "謹み婦人", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "ドルイドのハシュニック", 30000, 107, player_race_type::RACE_HOBBIT },
+        { "フィナク", 30000, 109, player_race_type::RACE_YEEK },
+        { "クリキック", 30000, 109, player_race_type::RACE_KLACKON },
+        { "荒くれ者モリヴァル", 30000, 110, player_race_type::RACE_ELF },
+        { "暗きホシャック", 30000, 107, player_race_type::RACE_IMP },
+        { "賢者アタール", 30000, 109, player_race_type::RACE_HUMAN },
+        { "清きイベニッド", 30000, 109, player_race_type::RACE_HUMAN },
+        { "エリディシュ", 30000, 110, player_race_type::RACE_HALF_TROLL },
+        { "呪術師ヴルドゥシュ", 30000, 107, player_race_type::RACE_HALF_OGRE },
+        { "狂戦士ハオブ", 30000, 109, player_race_type::RACE_BARBARIAN },
+        { "若きプルーグディシュ", 30000, 109, player_race_type::RACE_HALF_OGRE },
+        { "きちがいラムワイズ", 30000, 110, player_race_type::RACE_YEEK },
+        { "有徳者ムワート", 30000, 107, player_race_type::RACE_KOBOLD },
+        { "弱虫ダードバード", 30000, 109, player_race_type::RACE_SPECTRE },
+        { "質素なルードヴィヒ", 30000, 109, player_race_type::RACE_HUMAN },
+        { "パラディンのガンナー", 30000, 110, player_race_type::RACE_HUMAN },
+        { "選ばれしトリン", 30000, 107, player_race_type::RACE_ELF },
+        { "賢明なるサラストロ", 30000, 109, player_race_type::RACE_DWARF },
+        { "パーシヴァル卿", 30000, 107, player_race_type::RACE_HIGH_ELF },
+        { "神聖なるアセナス", 30000, 109, player_race_type::RACE_HUMAN },
+        { "マッキノン", 30000, 109, player_race_type::RACE_HUMAN },
+        { "謹み婦人", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "ドルイドのハシュニック", 30000, 107, player_race_type::RACE_HOBBIT },
+        { "フィナク", 30000, 109, player_race_type::RACE_YEEK },
 #else
-        { "Ludwig the Humble", 30000, 109, RACE_DWARF },
-        { "Gunnar the Paladin", 30000, 110, RACE_HALF_TROLL },
-        { "Torin the Chosen", 30000, 107, RACE_HIGH_ELF },
-        { "Sarastro the Wise", 30000, 109, RACE_HUMAN },
-        { "Sir Parsival the Pure", 30000, 107, RACE_HIGH_ELF },
-        { "Asenath the Holy", 30000, 109, RACE_HUMAN },
-        { "McKinnon", 30000, 109, RACE_HUMAN },
-        { "Mistress Chastity", 30000, 110, RACE_HIGH_ELF },
-        { "Hashnik the Druid", 30000, 107, RACE_HOBBIT },
-        { "Finak", 30000, 109, RACE_YEEK },
-        { "Krikkik", 30000, 109, RACE_KLACKON },
-        { "Morival the Wild", 30000, 110, RACE_ELF },
-        { "Hoshak the Dark", 30000, 107, RACE_IMP },
-        { "Atal the Wise", 30000, 109, RACE_HUMAN },
-        { "Ibenidd the Chaste", 30000, 109, RACE_HUMAN },
-        { "Eridish", 30000, 110, RACE_HALF_TROLL },
-        { "Vrudush the Shaman", 30000, 107, RACE_HALF_OGRE },
-        { "Haob the Berserker", 30000, 109, RACE_BARBARIAN },
-        { "Proogdish the Youthfull", 30000, 109, RACE_HALF_OGRE },
-        { "Lumwise the Mad", 30000, 110, RACE_YEEK },
-        { "Muirt the Virtuous", 30000, 107, RACE_KOBOLD },
-        { "Dardobard the Weak", 30000, 109, RACE_SPECTRE },
-        { "Ludwig the Humble", 30000, 109, RACE_DWARF },
-        { "Gunnar the Paladin", 30000, 110, RACE_HALF_TROLL },
-        { "Torin the Chosen", 30000, 107, RACE_HIGH_ELF },
-        { "Sarastro the Wise", 30000, 109, RACE_HUMAN },
-        { "Sir Parsival the Pure", 30000, 107, RACE_HIGH_ELF },
-        { "Asenath the Holy", 30000, 109, RACE_HUMAN },
-        { "McKinnon", 30000, 109, RACE_HUMAN },
-        { "Mistress Chastity", 30000, 110, RACE_HIGH_ELF },
-        { "Hashnik the Druid", 30000, 107, RACE_HOBBIT },
-        { "Finak", 30000, 109, RACE_YEEK },
+        { "Ludwig the Humble", 30000, 109, player_race_type::RACE_DWARF },
+        { "Gunnar the Paladin", 30000, 110, player_race_type::RACE_HALF_TROLL },
+        { "Torin the Chosen", 30000, 107, player_race_type::RACE_HIGH_ELF },
+        { "Sarastro the Wise", 30000, 109, player_race_type::RACE_HUMAN },
+        { "Sir Parsival the Pure", 30000, 107, player_race_type::RACE_HIGH_ELF },
+        { "Asenath the Holy", 30000, 109, player_race_type::RACE_HUMAN },
+        { "McKinnon", 30000, 109, player_race_type::RACE_HUMAN },
+        { "Mistress Chastity", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "Hashnik the Druid", 30000, 107, player_race_type::RACE_HOBBIT },
+        { "Finak", 30000, 109, player_race_type::RACE_YEEK },
+        { "Krikkik", 30000, 109, player_race_type::RACE_KLACKON },
+        { "Morival the Wild", 30000, 110, player_race_type::RACE_ELF },
+        { "Hoshak the Dark", 30000, 107, player_race_type::RACE_IMP },
+        { "Atal the Wise", 30000, 109, player_race_type::RACE_HUMAN },
+        { "Ibenidd the Chaste", 30000, 109, player_race_type::RACE_HUMAN },
+        { "Eridish", 30000, 110, player_race_type::RACE_HALF_TROLL },
+        { "Vrudush the Shaman", 30000, 107, player_race_type::RACE_HALF_OGRE },
+        { "Haob the Berserker", 30000, 109, player_race_type::RACE_BARBARIAN },
+        { "Proogdish the Youthfull", 30000, 109, player_race_type::RACE_HALF_OGRE },
+        { "Lumwise the Mad", 30000, 110, player_race_type::RACE_YEEK },
+        { "Muirt the Virtuous", 30000, 107, player_race_type::RACE_KOBOLD },
+        { "Dardobard the Weak", 30000, 109, player_race_type::RACE_SPECTRE },
+        { "Ludwig the Humble", 30000, 109, player_race_type::RACE_DWARF },
+        { "Gunnar the Paladin", 30000, 110, player_race_type::RACE_HALF_TROLL },
+        { "Torin the Chosen", 30000, 107, player_race_type::RACE_HIGH_ELF },
+        { "Sarastro the Wise", 30000, 109, player_race_type::RACE_HUMAN },
+        { "Sir Parsival the Pure", 30000, 107, player_race_type::RACE_HIGH_ELF },
+        { "Asenath the Holy", 30000, 109, player_race_type::RACE_HUMAN },
+        { "McKinnon", 30000, 109, player_race_type::RACE_HUMAN },
+        { "Mistress Chastity", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "Hashnik the Druid", 30000, 107, player_race_type::RACE_HOBBIT },
+        { "Finak", 30000, 109, player_race_type::RACE_YEEK },
 #endif
     },
     {
         /* Alchemist - 26 unique names */
 #ifdef JP
-        { "化学者マウザー", 30000, 111, RACE_HALF_ELF },
-        { "カオスのウィズル", 30000, 110, RACE_HOBBIT },
-        { "強欲ミダス", 30000, 116, RACE_GNOME },
-        { "貧弱ジャ=ファー", 30000, 111, RACE_ELF }, /*FIRST*/
-        { "カカルラカカル", 30000, 116, RACE_KLACKON },
-        { "錬金術師ジャル=エス", 30000, 111, RACE_ELF },
-        { "用心深いファネラス", 30000, 111, RACE_DWARF },
-        { "キチガイのルンシー", 30000, 110, RACE_HUMAN },
-        { "グランブルワース", 30000, 116, RACE_GNOME },
-        { "フリッター", 30000, 111, RACE_SPRITE },
-        { "ザリルス", 30000, 111, RACE_HUMAN },
-        { "古きエグバート", 30000, 110, RACE_DWARF },
-        { "誇り高きヴァリンドラ", 30000, 116, RACE_HIGH_ELF },
-        { "錬金術師タエン", 30000, 111, RACE_HUMAN },
-        { "巧言カイド", 30000, 111, RACE_VAMPIRE },
-        { "暗きフリア", 30000, 110, RACE_NIBELUNG },
-        { "質素なドムリ", 30000, 116, RACE_DWARF },
-        { "魔の子ヤァジュッカ", 30000, 111, RACE_IMP },
-        { "薬草師ジェララルドール", 30000, 111, RACE_HIGH_ELF },
-        { "賢者オレラルダン", 30000, 110, RACE_BARBARIAN },
-        { "デモニシストのフゾグロ", 30000, 116, RACE_IMP },
-        { "錬金術師ドゥリアシュ", 30000, 111, RACE_HALF_ORC },
-        { "強者ネリア", 30000, 111, RACE_CYCLOPS },
-        { "辛口リグナス", 30000, 110, RACE_HALF_ORC },
-        { "ティルバ", 30000, 116, RACE_HOBBIT },
-        { "金持ちミリルドリック", 30000, 111, RACE_HUMAN },
+        { "化学者マウザー", 30000, 111, player_race_type::RACE_HALF_ELF },
+        { "カオスのウィズル", 30000, 110, player_race_type::RACE_HOBBIT },
+        { "強欲ミダス", 30000, 116, player_race_type::RACE_GNOME },
+        { "貧弱ジャ=ファー", 30000, 111, player_race_type::RACE_ELF }, /*FIRST*/
+        { "カカルラカカル", 30000, 116, player_race_type::RACE_KLACKON },
+        { "錬金術師ジャル=エス", 30000, 111, player_race_type::RACE_ELF },
+        { "用心深いファネラス", 30000, 111, player_race_type::RACE_DWARF },
+        { "キチガイのルンシー", 30000, 110, player_race_type::RACE_HUMAN },
+        { "グランブルワース", 30000, 116, player_race_type::RACE_GNOME },
+        { "フリッター", 30000, 111, player_race_type::RACE_SPRITE },
+        { "ザリルス", 30000, 111, player_race_type::RACE_HUMAN },
+        { "古きエグバート", 30000, 110, player_race_type::RACE_DWARF },
+        { "誇り高きヴァリンドラ", 30000, 116, player_race_type::RACE_HIGH_ELF },
+        { "錬金術師タエン", 30000, 111, player_race_type::RACE_HUMAN },
+        { "巧言カイド", 30000, 111, player_race_type::RACE_VAMPIRE },
+        { "暗きフリア", 30000, 110, player_race_type::RACE_NIBELUNG },
+        { "質素なドムリ", 30000, 116, player_race_type::RACE_DWARF },
+        { "魔の子ヤァジュッカ", 30000, 111, player_race_type::RACE_IMP },
+        { "薬草師ジェララルドール", 30000, 111, player_race_type::RACE_HIGH_ELF },
+        { "賢者オレラルダン", 30000, 110, player_race_type::RACE_BARBARIAN },
+        { "デモニシストのフゾグロ", 30000, 116, player_race_type::RACE_IMP },
+        { "錬金術師ドゥリアシュ", 30000, 111, player_race_type::RACE_HALF_ORC },
+        { "強者ネリア", 30000, 111, player_race_type::RACE_CYCLOPS },
+        { "辛口リグナス", 30000, 110, player_race_type::RACE_HALF_ORC },
+        { "ティルバ", 30000, 116, player_race_type::RACE_HOBBIT },
+        { "金持ちミリルドリック", 30000, 111, player_race_type::RACE_HUMAN },
 
-        { "科学者マウザー", 30000, 111, RACE_HALF_ELF },
-        { "カオスのウィズル", 30000, 110, RACE_HOBBIT },
-        { "強欲ミダス", 30000, 116, RACE_GNOME },
-        { "錬金術師ジャ=ファー", 30000, 111, RACE_ELF },
-        { "カカルラカカル", 30000, 116, RACE_KLACKON },
-        { "錬金術師ジャル=エス", 30000, 111, RACE_ELF },
+        { "科学者マウザー", 30000, 111, player_race_type::RACE_HALF_ELF },
+        { "カオスのウィズル", 30000, 110, player_race_type::RACE_HOBBIT },
+        { "強欲ミダス", 30000, 116, player_race_type::RACE_GNOME },
+        { "錬金術師ジャ=ファー", 30000, 111, player_race_type::RACE_ELF },
+        { "カカルラカカル", 30000, 116, player_race_type::RACE_KLACKON },
+        { "錬金術師ジャル=エス", 30000, 111, player_race_type::RACE_ELF },
 #else
-        { "Mauser the Chemist", 30000, 111, RACE_HALF_ELF },
-        { "Wizzle the Chaotic", 30000, 110, RACE_HOBBIT },
-        { "Midas the Greedy", 30000, 116, RACE_GNOME },
-        { "Ja-Far the Alchemist", 30000, 111, RACE_ELF },
-        { "Kakalrakakal", 30000, 116, RACE_KLACKON },
-        { "Jal-Eth the Alchemist", 30000, 111, RACE_ELF },
-        { "Fanelath the Cautious", 30000, 111, RACE_DWARF },
-        { "Runcie the Insane", 30000, 110, RACE_HUMAN },
-        { "Grumbleworth", 30000, 116, RACE_GNOME },
-        { "Flitter", 30000, 111, RACE_SPRITE },
-        { "Xarillus", 30000, 111, RACE_HUMAN },
-        { "Egbert the Old", 30000, 110, RACE_DWARF },
-        { "Valindra the Proud", 30000, 116, RACE_HIGH_ELF },
-        { "Taen the Alchemist", 30000, 111, RACE_HUMAN },
-        { "Cayd the Sweet", 30000, 111, RACE_VAMPIRE },
-        { "Fulir the Dark", 30000, 110, RACE_NIBELUNG },
-        { "Domli the Humble", 30000, 116, RACE_DWARF },
-        { "Yaarjukka Demonspawn", 30000, 111, RACE_IMP },
-        { "Gelaraldor the Herbmaster", 30000, 111, RACE_HIGH_ELF },
-        { "Olelaldan the Wise", 30000, 110, RACE_BARBARIAN },
-        { "Fthoglo the Demonicist", 30000, 116, RACE_IMP },
-        { "Dridash the Alchemist", 30000, 111, RACE_HALF_ORC },
-        { "Nelir the Strong", 30000, 111, RACE_CYCLOPS },
-        { "Lignus the Pungent", 30000, 110, RACE_HALF_ORC },
-        { "Tilba", 30000, 116, RACE_HOBBIT },
-        { "Myrildric the Wealthy", 30000, 111, RACE_HUMAN },
+        { "Mauser the Chemist", 30000, 111, player_race_type::RACE_HALF_ELF },
+        { "Wizzle the Chaotic", 30000, 110, player_race_type::RACE_HOBBIT },
+        { "Midas the Greedy", 30000, 116, player_race_type::RACE_GNOME },
+        { "Ja-Far the Alchemist", 30000, 111, player_race_type::RACE_ELF },
+        { "Kakalrakakal", 30000, 116, player_race_type::RACE_KLACKON },
+        { "Jal-Eth the Alchemist", 30000, 111, player_race_type::RACE_ELF },
+        { "Fanelath the Cautious", 30000, 111, player_race_type::RACE_DWARF },
+        { "Runcie the Insane", 30000, 110, player_race_type::RACE_HUMAN },
+        { "Grumbleworth", 30000, 116, player_race_type::RACE_GNOME },
+        { "Flitter", 30000, 111, player_race_type::RACE_SPRITE },
+        { "Xarillus", 30000, 111, player_race_type::RACE_HUMAN },
+        { "Egbert the Old", 30000, 110, player_race_type::RACE_DWARF },
+        { "Valindra the Proud", 30000, 116, player_race_type::RACE_HIGH_ELF },
+        { "Taen the Alchemist", 30000, 111, player_race_type::RACE_HUMAN },
+        { "Cayd the Sweet", 30000, 111, player_race_type::RACE_VAMPIRE },
+        { "Fulir the Dark", 30000, 110, player_race_type::RACE_NIBELUNG },
+        { "Domli the Humble", 30000, 116, player_race_type::RACE_DWARF },
+        { "Yaarjukka Demonspawn", 30000, 111, player_race_type::RACE_IMP },
+        { "Gelaraldor the Herbmaster", 30000, 111, player_race_type::RACE_HIGH_ELF },
+        { "Olelaldan the Wise", 30000, 110, player_race_type::RACE_BARBARIAN },
+        { "Fthoglo the Demonicist", 30000, 116, player_race_type::RACE_IMP },
+        { "Dridash the Alchemist", 30000, 111, player_race_type::RACE_HALF_ORC },
+        { "Nelir the Strong", 30000, 111, player_race_type::RACE_CYCLOPS },
+        { "Lignus the Pungent", 30000, 110, player_race_type::RACE_HALF_ORC },
+        { "Tilba", 30000, 116, player_race_type::RACE_HOBBIT },
+        { "Myrildric the Wealthy", 30000, 111, player_race_type::RACE_HUMAN },
 
-        { "Mauser the Chemist", 30000, 111, RACE_HALF_ELF },
-        { "Wizzle the Chaotic", 30000, 110, RACE_HOBBIT },
-        { "Midas the Greedy", 30000, 116, RACE_GNOME },
-        { "Ja-Far the Alchemist", 30000, 111, RACE_ELF },
-        { "Kakalrakakal", 30000, 116, RACE_KLACKON },
-        { "Jal-Eth the Alchemist", 30000, 111, RACE_ELF },
+        { "Mauser the Chemist", 30000, 111, player_race_type::RACE_HALF_ELF },
+        { "Wizzle the Chaotic", 30000, 110, player_race_type::RACE_HOBBIT },
+        { "Midas the Greedy", 30000, 116, player_race_type::RACE_GNOME },
+        { "Ja-Far the Alchemist", 30000, 111, player_race_type::RACE_ELF },
+        { "Kakalrakakal", 30000, 116, player_race_type::RACE_KLACKON },
+        { "Jal-Eth the Alchemist", 30000, 111, player_race_type::RACE_ELF },
 #endif
     },
 
     {
         /* Magic Shop - 23 unique names */
 #ifdef JP
-        { "ソーサラーのロ=パン", 30000, 110, RACE_HALF_ELF },
-        { "偉大なるブガービイ", 30000, 113, RACE_GNOME },
-        { "イェンダーの魔法使い", 30000, 110, RACE_HUMAN },
-        { "死霊使いリャク", 30000, 110, RACE_HIGH_ELF },
-        { "魔術師スキドゥニー", 30000, 110, RACE_HALF_ELF },
-        { "幻術師キリア", 30000, 110, RACE_HUMAN },
-        { "死霊術師ニッキ", 30000, 110, RACE_DARK_ELF },
-        { "ソロストラン", 30000, 110, RACE_SPRITE },
-        { "烏賊口アチシェ", 30000, 113, RACE_MIND_FLAYER },
-        { "貴族のカザ", 30000, 110, RACE_HIGH_ELF },
-        { "暗きファジル", 30000, 110, RACE_DARK_ELF },
-        { "偉大なるケルドーン", 30000, 110, RACE_DWARF },
-        { "フィランスロプス", 30000, 113, RACE_HOBBIT },
-        { "魔女のアグナー", 30000, 110, RACE_HUMAN },
-        { "死霊術師ビュリアンス", 30000, 110, RACE_BEASTMAN },
-        { "ハイメイジのヴイラク", 30000, 110, RACE_BEASTMAN },
-        { "知恵者マディッシュ", 30000, 113, RACE_BEASTMAN },
-        { "ファレブリンボール", 30000, 110, RACE_HIGH_ELF },
-        { "陰険フェリル=ガンド", 30000, 110, RACE_DARK_ELF },
-        { "呪術師サレゴード", 30000, 110, RACE_BARBARIAN },
-        { "神秘家クトゥアロス", 30000, 113, RACE_MIND_FLAYER },
-        { "幻術師イベリ", 30000, 110, RACE_SKELETON },
-        { "死霊術師ヘトー", 30000, 110, RACE_YEEK },
-        { "魔術師ロ=パン", 30000, 110, RACE_HALF_ELF },
-        { "偉大なるブガービイ", 30000, 113, RACE_GNOME },
-        { "イェンダーの魔法使い", 30000, 110, RACE_HUMAN },
-        { "死霊術師リャク", 30000, 110, RACE_DARK_ELF },
-        { "魔術師スキドゥニー", 30000, 110, RACE_HALF_ELF },
-        { "幻術師キリア", 30000, 110, RACE_HUMAN },
-        { "死霊術師ニッキ", 30000, 110, RACE_DARK_ELF },
-        { "ソロストラン", 30000, 110, RACE_SPRITE },
-        { "烏賊口アチシェ", 30000, 113, RACE_MIND_FLAYER },
+        { "ソーサラーのロ=パン", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "偉大なるブガービイ", 30000, 113, player_race_type::RACE_GNOME },
+        { "イェンダーの魔法使い", 30000, 110, player_race_type::RACE_HUMAN },
+        { "死霊使いリャク", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "魔術師スキドゥニー", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "幻術師キリア", 30000, 110, player_race_type::RACE_HUMAN },
+        { "死霊術師ニッキ", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "ソロストラン", 30000, 110, player_race_type::RACE_SPRITE },
+        { "烏賊口アチシェ", 30000, 113, player_race_type::RACE_MIND_FLAYER },
+        { "貴族のカザ", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "暗きファジル", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "偉大なるケルドーン", 30000, 110, player_race_type::RACE_DWARF },
+        { "フィランスロプス", 30000, 113, player_race_type::RACE_HOBBIT },
+        { "魔女のアグナー", 30000, 110, player_race_type::RACE_HUMAN },
+        { "死霊術師ビュリアンス", 30000, 110, player_race_type::RACE_BEASTMAN },
+        { "ハイメイジのヴイラク", 30000, 110, player_race_type::RACE_BEASTMAN },
+        { "知恵者マディッシュ", 30000, 113, player_race_type::RACE_BEASTMAN },
+        { "ファレブリンボール", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "陰険フェリル=ガンド", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "呪術師サレゴード", 30000, 110, player_race_type::RACE_BARBARIAN },
+        { "神秘家クトゥアロス", 30000, 113, player_race_type::RACE_MIND_FLAYER },
+        { "幻術師イベリ", 30000, 110, player_race_type::RACE_SKELETON },
+        { "死霊術師ヘトー", 30000, 110, player_race_type::RACE_YEEK },
+        { "魔術師ロ=パン", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "偉大なるブガービイ", 30000, 113, player_race_type::RACE_GNOME },
+        { "イェンダーの魔法使い", 30000, 110, player_race_type::RACE_HUMAN },
+        { "死霊術師リャク", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "魔術師スキドゥニー", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "幻術師キリア", 30000, 110, player_race_type::RACE_HUMAN },
+        { "死霊術師ニッキ", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "ソロストラン", 30000, 110, player_race_type::RACE_SPRITE },
+        { "烏賊口アチシェ", 30000, 113, player_race_type::RACE_MIND_FLAYER },
 #else
-        { "Lo Pan the Sorcerer", 30000, 110, RACE_HALF_ELF },
-        { "Buggerby the Great", 30000, 113, RACE_GNOME },
-        { "The Wizard of Yendor", 30000, 110, RACE_HUMAN },
-        { "Rjak the Necromancer", 30000, 110, RACE_DARK_ELF },
-        { "Skidney the Sorcerer", 30000, 110, RACE_HALF_ELF },
-        { "Kyria the Illusionist", 30000, 110, RACE_HUMAN },
-        { "Nikki the Necromancer", 30000, 110, RACE_DARK_ELF },
-        { "Solostoran", 30000, 110, RACE_SPRITE },
-        { "Achshe the Tentacled", 30000, 113, RACE_MIND_FLAYER },
-        { "Kaza the Noble", 30000, 110, RACE_HIGH_ELF },
-        { "Fazzil the Dark", 30000, 110, RACE_DARK_ELF },
-        { "Keldorn the Grand", 30000, 110, RACE_DWARF },
-        { "Philanthropus", 30000, 113, RACE_HOBBIT },
-        { "Agnar the Enchantress", 30000, 110, RACE_HUMAN },
-        { "Buliance the Necromancer", 30000, 110, RACE_BEASTMAN },
-        { "Vuirak the High-Mage", 30000, 110, RACE_BEASTMAN },
-        { "Madish the Smart", 30000, 113, RACE_BEASTMAN },
-        { "Falebrimbor", 30000, 110, RACE_HIGH_ELF },
-        { "Felil-Gand the Subtle", 30000, 110, RACE_DARK_ELF },
-        { "Thalegord the Shaman", 30000, 110, RACE_BARBARIAN },
-        { "Cthoaloth the Mystic", 30000, 113, RACE_MIND_FLAYER },
-        { "Ibeli the Illusionist", 30000, 110, RACE_SKELETON },
-        { "Heto the Necromancer", 30000, 110, RACE_YEEK },
-        { "Lo Pan the Sorcerer", 30000, 110, RACE_HALF_ELF },
-        { "Buggerby the Great", 30000, 113, RACE_GNOME },
-        { "The Wizard of Yendor", 30000, 110, RACE_HUMAN },
-        { "Rjak the Necromancer", 30000, 110, RACE_DARK_ELF },
-        { "Skidney the Sorcerer", 30000, 110, RACE_HALF_ELF },
-        { "Kyria the Illusionist", 30000, 110, RACE_HUMAN },
-        { "Nikki the Necromancer", 30000, 110, RACE_DARK_ELF },
-        { "Solostoran", 30000, 110, RACE_SPRITE },
-        { "Achshe the Tentacled", 30000, 113, RACE_MIND_FLAYER },
+        { "Lo Pan the Sorcerer", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "Buggerby the Great", 30000, 113, player_race_type::RACE_GNOME },
+        { "The Wizard of Yendor", 30000, 110, player_race_type::RACE_HUMAN },
+        { "Rjak the Necromancer", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Skidney the Sorcerer", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "Kyria the Illusionist", 30000, 110, player_race_type::RACE_HUMAN },
+        { "Nikki the Necromancer", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Solostoran", 30000, 110, player_race_type::RACE_SPRITE },
+        { "Achshe the Tentacled", 30000, 113, player_race_type::RACE_MIND_FLAYER },
+        { "Kaza the Noble", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "Fazzil the Dark", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Keldorn the Grand", 30000, 110, player_race_type::RACE_DWARF },
+        { "Philanthropus", 30000, 113, player_race_type::RACE_HOBBIT },
+        { "Agnar the Enchantress", 30000, 110, player_race_type::RACE_HUMAN },
+        { "Buliance the Necromancer", 30000, 110, player_race_type::RACE_BEASTMAN },
+        { "Vuirak the High-Mage", 30000, 110, player_race_type::RACE_BEASTMAN },
+        { "Madish the Smart", 30000, 113, player_race_type::RACE_BEASTMAN },
+        { "Falebrimbor", 30000, 110, player_race_type::RACE_HIGH_ELF },
+        { "Felil-Gand the Subtle", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Thalegord the Shaman", 30000, 110, player_race_type::RACE_BARBARIAN },
+        { "Cthoaloth the Mystic", 30000, 113, player_race_type::RACE_MIND_FLAYER },
+        { "Ibeli the Illusionist", 30000, 110, player_race_type::RACE_SKELETON },
+        { "Heto the Necromancer", 30000, 110, player_race_type::RACE_YEEK },
+        { "Lo Pan the Sorcerer", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "Buggerby the Great", 30000, 113, player_race_type::RACE_GNOME },
+        { "The Wizard of Yendor", 30000, 110, player_race_type::RACE_HUMAN },
+        { "Rjak the Necromancer", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Skidney the Sorcerer", 30000, 110, player_race_type::RACE_HALF_ELF },
+        { "Kyria the Illusionist", 30000, 110, player_race_type::RACE_HUMAN },
+        { "Nikki the Necromancer", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Solostoran", 30000, 110, player_race_type::RACE_SPRITE },
+        { "Achshe the Tentacled", 30000, 113, player_race_type::RACE_MIND_FLAYER },
 #endif
     },
     {
         /* Black Market - 32 unique names */
 #ifdef JP
-        { "ガリー=ギガズ", 60000, 150, RACE_HALF_TROLL },
-        { "ゴブリンのヒストーア", 60000, 150, RACE_HALF_ORC },
-        { "フェレンギ人クアーク", 60000, 150, RACE_HUMAN },
-        { "公正なる(?)トッピ", 60000, 150, RACE_ELF },
-        { "死人ヴァッサ", 60000, 150, RACE_ZOMBIE },
-        { "裏切り者カイン", 60000, 150, RACE_VAMPIRE },
-        { "ブボニカス", 60000, 150, RACE_BEASTMAN },
-        { "コープスライト", 60000, 150, RACE_SPECTRE },
-        { "血に飢えしパリッシュ", 60000, 150, RACE_VAMPIRE },
-        { "ヴァイル", 60000, 150, RACE_SKELETON },
-        { "信頼のプレンティス", 60000, 150, RACE_SKELETON },
-        { "人間殺しのグリエラ", 60000, 150, RACE_IMP },
-        { "エンジェル", 60000, 150, RACE_VAMPIRE },
-        { "水膨れフロツァム", 60000, 150, RACE_ZOMBIE },
-        { "ニーヴァル", 60000, 150, RACE_VAMPIRE },
-        { "明るいアナスタシア", 60000, 150, RACE_SPECTRE },
-        { "死霊術師チャリティー", 60000, 150, RACE_DARK_ELF },
-        { "ボクサーのプグナシオス", 60000, 150, RACE_HALF_ORC },
-        { "幸運なフットソア", 60000, 150, RACE_BEASTMAN },
-        { "光指のシドリア", 60000, 150, RACE_HUMAN },
-        { "手品師リアソー", 60000, 150, RACE_HOBBIT },
-        { "やりくり上手のジャナッカ", 60000, 150, RACE_GNOME },
-        { "悪党シーナ", 60000, 150, RACE_GNOME },
-        { "大爪アルニッキ", 60000, 150, RACE_DRACONIAN },
-        { "貧乏チャエアンド", 60000, 150, RACE_HUMAN },
-        { "山賊アファードーフ", 60000, 150, RACE_BARBARIAN },
-        { "強欲ラザクスル", 60000, 150, RACE_MIND_FLAYER },
-        { "ファラレウィン", 60000, 150, RACE_SPRITE },
-        { "しわしわヴォスール", 60000, 150, RACE_NIBELUNG },
-        { "ハンサムなアラオード", 60000, 150, RACE_AMBERITE },
-        { "負け犬セラドフリド", 60000, 150, RACE_HUMAN },
-        { "片足のエルーロ", 60000, 150, RACE_HALF_OGRE },
+        { "ガリー=ギガズ", 60000, 150, player_race_type::RACE_HALF_TROLL },
+        { "ゴブリンのヒストーア", 60000, 150, player_race_type::RACE_HALF_ORC },
+        { "フェレンギ人クアーク", 60000, 150, player_race_type::RACE_HUMAN },
+        { "公正なる(?)トッピ", 60000, 150, player_race_type::RACE_ELF },
+        { "死人ヴァッサ", 60000, 150, player_race_type::RACE_ZOMBIE },
+        { "裏切り者カイン", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "ブボニカス", 60000, 150, player_race_type::RACE_BEASTMAN },
+        { "コープスライト", 60000, 150, player_race_type::RACE_SPECTRE },
+        { "血に飢えしパリッシュ", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "ヴァイル", 60000, 150, player_race_type::RACE_SKELETON },
+        { "信頼のプレンティス", 60000, 150, player_race_type::RACE_SKELETON },
+        { "人間殺しのグリエラ", 60000, 150, player_race_type::RACE_IMP },
+        { "エンジェル", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "水膨れフロツァム", 60000, 150, player_race_type::RACE_ZOMBIE },
+        { "ニーヴァル", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "明るいアナスタシア", 60000, 150, player_race_type::RACE_SPECTRE },
+        { "死霊術師チャリティー", 60000, 150, player_race_type::RACE_DARK_ELF },
+        { "ボクサーのプグナシオス", 60000, 150, player_race_type::RACE_HALF_ORC },
+        { "幸運なフットソア", 60000, 150, player_race_type::RACE_BEASTMAN },
+        { "光指のシドリア", 60000, 150, player_race_type::RACE_HUMAN },
+        { "手品師リアソー", 60000, 150, player_race_type::RACE_HOBBIT },
+        { "やりくり上手のジャナッカ", 60000, 150, player_race_type::RACE_GNOME },
+        { "悪党シーナ", 60000, 150, player_race_type::RACE_GNOME },
+        { "大爪アルニッキ", 60000, 150, player_race_type::RACE_DRACONIAN },
+        { "貧乏チャエアンド", 60000, 150, player_race_type::RACE_HUMAN },
+        { "山賊アファードーフ", 60000, 150, player_race_type::RACE_BARBARIAN },
+        { "強欲ラザクスル", 60000, 150, player_race_type::RACE_MIND_FLAYER },
+        { "ファラレウィン", 60000, 150, player_race_type::RACE_SPRITE },
+        { "しわしわヴォスール", 60000, 150, player_race_type::RACE_NIBELUNG },
+        { "ハンサムなアラオード", 60000, 150, player_race_type::RACE_AMBERITE },
+        { "負け犬セラドフリド", 60000, 150, player_race_type::RACE_HUMAN },
+        { "片足のエルーロ", 60000, 150, player_race_type::RACE_HALF_OGRE },
 #else
-        { "Gary Gygaz", 60000, 150, RACE_HALF_TROLL },
-        { "Histor the Goblin", 60000, 150, RACE_HALF_ORC },
-        { "Quark the Ferengi", 60000, 150, RACE_DWARF },
-        { "Topi the Fair(?)", 60000, 150, RACE_HUMAN },
-        { "Vhassa the Dead", 60000, 150, RACE_ZOMBIE },
-        { "Kyn the Treacherous", 60000, 150, RACE_VAMPIRE },
-        { "Bubonicus", 60000, 150, RACE_BEASTMAN },
-        { "Corpselight", 60000, 150, RACE_SPECTRE },
-        { "Parrish the Bloodthirsty", 60000, 150, RACE_VAMPIRE },
-        { "Vile", 60000, 150, RACE_SKELETON },
-        { "Prentice the Trusted", 60000, 150, RACE_SKELETON },
-        { "Griella Humanslayer", 60000, 150, RACE_IMP },
-        { "Angel", 60000, 150, RACE_VAMPIRE },
-        { "Flotsam the Bloated", 60000, 150, RACE_ZOMBIE },
-        { "Nieval", 60000, 150, RACE_VAMPIRE },
-        { "Anastasia the Luminous", 60000, 150, RACE_SPECTRE },
-        { "Charity the Necromancer", 60000, 150, RACE_DARK_ELF },
-        { "Pugnacious the Pugilist", 60000, 150, RACE_HALF_ORC },
-        { "Footsore the Lucky", 60000, 150, RACE_BEASTMAN },
-        { "Sidria Lighfingered", 60000, 150, RACE_HUMAN },
-        { "Riatho the Juggler", 60000, 150, RACE_HOBBIT },
-        { "Janaaka the Shifty", 60000, 150, RACE_GNOME },
-        { "Cina the Rogue", 60000, 150, RACE_GNOME },
-        { "Arunikki Greatclaw", 60000, 150, RACE_DRACONIAN },
-        { "Chaeand the Poor", 60000, 150, RACE_HUMAN },
-        { "Afardorf the Brigand", 60000, 150, RACE_BARBARIAN },
-        { "Lathaxl the Greedy", 60000, 150, RACE_MIND_FLAYER },
-        { "Falarewyn", 60000, 150, RACE_SPRITE },
-        { "Vosur the Wrinkled", 60000, 150, RACE_NIBELUNG },
-        { "Araord the Handsome", 60000, 150, RACE_AMBERITE },
-        { "Theradfrid the Loser", 60000, 150, RACE_HUMAN },
-        { "One-Legged Eroolo", 60000, 150, RACE_HALF_OGRE },
+        { "Gary Gygaz", 60000, 150, player_race_type::RACE_HALF_TROLL },
+        { "Histor the Goblin", 60000, 150, player_race_type::RACE_HALF_ORC },
+        { "Quark the Ferengi", 60000, 150, player_race_type::RACE_DWARF },
+        { "Topi the Fair(?)", 60000, 150, player_race_type::RACE_HUMAN },
+        { "Vhassa the Dead", 60000, 150, player_race_type::RACE_ZOMBIE },
+        { "Kyn the Treacherous", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "Bubonicus", 60000, 150, player_race_type::RACE_BEASTMAN },
+        { "Corpselight", 60000, 150, player_race_type::RACE_SPECTRE },
+        { "Parrish the Bloodthirsty", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "Vile", 60000, 150, player_race_type::RACE_SKELETON },
+        { "Prentice the Trusted", 60000, 150, player_race_type::RACE_SKELETON },
+        { "Griella Humanslayer", 60000, 150, player_race_type::RACE_IMP },
+        { "Angel", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "Flotsam the Bloated", 60000, 150, player_race_type::RACE_ZOMBIE },
+        { "Nieval", 60000, 150, player_race_type::RACE_VAMPIRE },
+        { "Anastasia the Luminous", 60000, 150, player_race_type::RACE_SPECTRE },
+        { "Charity the Necromancer", 60000, 150, player_race_type::RACE_DARK_ELF },
+        { "Pugnacious the Pugilist", 60000, 150, player_race_type::RACE_HALF_ORC },
+        { "Footsore the Lucky", 60000, 150, player_race_type::RACE_BEASTMAN },
+        { "Sidria Lighfingered", 60000, 150, player_race_type::RACE_HUMAN },
+        { "Riatho the Juggler", 60000, 150, player_race_type::RACE_HOBBIT },
+        { "Janaaka the Shifty", 60000, 150, player_race_type::RACE_GNOME },
+        { "Cina the Rogue", 60000, 150, player_race_type::RACE_GNOME },
+        { "Arunikki Greatclaw", 60000, 150, player_race_type::RACE_DRACONIAN },
+        { "Chaeand the Poor", 60000, 150, player_race_type::RACE_HUMAN },
+        { "Afardorf the Brigand", 60000, 150, player_race_type::RACE_BARBARIAN },
+        { "Lathaxl the Greedy", 60000, 150, player_race_type::RACE_MIND_FLAYER },
+        { "Falarewyn", 60000, 150, player_race_type::RACE_SPRITE },
+        { "Vosur the Wrinkled", 60000, 150, player_race_type::RACE_NIBELUNG },
+        { "Araord the Handsome", 60000, 150, player_race_type::RACE_AMBERITE },
+        { "Theradfrid the Loser", 60000, 150, player_race_type::RACE_HUMAN },
+        { "One-Legged Eroolo", 60000, 150, player_race_type::RACE_HALF_OGRE },
 #endif
     },
     {
         /* Home */
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
-        { _("我が家", "Your home"), 0, 100, 99 },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("我が家", "Your home"), 0, 100, player_race_type::RACE_HUMAN },
     },
 
     {
         /* Bookstore - 21 unique names */
 #ifdef JP
-        { "強欲ドラフ", 30000, 108, RACE_HUMAN },
-        { "賢者オドナー", 30000, 105, RACE_HIGH_ELF },
-        { "中立のガンダー", 30000, 110, RACE_DARK_ELF },
-        { "忍耐の人ロ=シャ", 30000, 105, RACE_ELF },
-        { "ランドルフ・カーター", 30000, 108, RACE_HUMAN },
-        { "隼のサライ", 30000, 108, RACE_HUMAN },
-        { "千里眼ボドリル", 30000, 105, RACE_HIGH_ELF },
-        { "沈黙のヴェオロイン", 30000, 110, RACE_ZOMBIE },
-        { "学者のヴァンシラス", 30000, 105, RACE_MIND_FLAYER },
-        { "物書きオセイン", 30000, 108, RACE_SKELETON },
-        { "本の虫オルヴァー", 30000, 105, RACE_VAMPIRE },
-        { "浅井墓男", 30000, 110, RACE_ZOMBIE },
-        { "デスマスク", 30000, 105, RACE_ZOMBIE },
-        { "学者のアスーヌ", 30000, 108, RACE_MIND_FLAYER },
-        { "死人のプリランド", 30000, 105, RACE_ZOMBIE },
-        { "鉄のロナール", 30000, 110, RACE_GOLEM },
+        { "強欲ドラフ", 30000, 108, player_race_type::RACE_HUMAN },
+        { "賢者オドナー", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "中立のガンダー", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "忍耐の人ロ=シャ", 30000, 105, player_race_type::RACE_ELF },
+        { "ランドルフ・カーター", 30000, 108, player_race_type::RACE_HUMAN },
+        { "隼のサライ", 30000, 108, player_race_type::RACE_HUMAN },
+        { "千里眼ボドリル", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "沈黙のヴェオロイン", 30000, 110, player_race_type::RACE_ZOMBIE },
+        { "学者のヴァンシラス", 30000, 105, player_race_type::RACE_MIND_FLAYER },
+        { "物書きオセイン", 30000, 108, player_race_type::RACE_SKELETON },
+        { "本の虫オルヴァー", 30000, 105, player_race_type::RACE_VAMPIRE },
+        { "浅井墓男", 30000, 110, player_race_type::RACE_ZOMBIE },
+        { "デスマスク", 30000, 105, player_race_type::RACE_ZOMBIE },
+        { "学者のアスーヌ", 30000, 108, player_race_type::RACE_MIND_FLAYER },
+        { "死人のプリランド", 30000, 105, player_race_type::RACE_ZOMBIE },
+        { "鉄のロナール", 30000, 110, player_race_type::RACE_GOLEM },
 #else
-        { "Dolaf the Greedy", 30000, 108, RACE_HUMAN },
-        { "Odnar the Sage", 30000, 105, RACE_HIGH_ELF },
-        { "Gandar the Neutral", 30000, 110, RACE_DARK_ELF },
-        { "Ro-sha the Patient", 30000, 105, RACE_ELF },
-        { "Randolph Carter", 30000, 108, RACE_HUMAN },
-        { "Sarai the Swift", 30000, 108, RACE_HUMAN },
-        { "Bodril the Seer", 30000, 105, RACE_HIGH_ELF },
-        { "Veloin the Quiet", 30000, 110, RACE_ZOMBIE },
-        { "Vanthylas the Learned", 30000, 105, RACE_MIND_FLAYER },
-        { "Ossein the Literate", 30000, 108, RACE_SKELETON },
-        { "Olvar Bookworm", 30000, 105, RACE_VAMPIRE },
-        { "Shallowgrave", 30000, 110, RACE_ZOMBIE },
-        { "Death Mask", 30000, 105, RACE_ZOMBIE },
-        { "Asuunu the Learned", 30000, 108, RACE_MIND_FLAYER },
-        { "Prirand the Dead", 30000, 105, RACE_ZOMBIE },
-        { "Ronar the Iron", 30000, 110, RACE_GOLEM },
+        { "Dolaf the Greedy", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Odnar the Sage", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "Gandar the Neutral", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Ro-sha the Patient", 30000, 105, player_race_type::RACE_ELF },
+        { "Randolph Carter", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Sarai the Swift", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Bodril the Seer", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "Veloin the Quiet", 30000, 110, player_race_type::RACE_ZOMBIE },
+        { "Vanthylas the Learned", 30000, 105, player_race_type::RACE_MIND_FLAYER },
+        { "Ossein the Literate", 30000, 108, player_race_type::RACE_SKELETON },
+        { "Olvar Bookworm", 30000, 105, player_race_type::RACE_VAMPIRE },
+        { "Shallowgrave", 30000, 110, player_race_type::RACE_ZOMBIE },
+        { "Death Mask", 30000, 105, player_race_type::RACE_ZOMBIE },
+        { "Asuunu the Learned", 30000, 108, player_race_type::RACE_MIND_FLAYER },
+        { "Prirand the Dead", 30000, 105, player_race_type::RACE_ZOMBIE },
+        { "Ronar the Iron", 30000, 110, player_race_type::RACE_GOLEM },
 #endif
 #ifdef JP
-        { "ガリル=ガミル", 30000, 105, RACE_ELF },
-        { "本食いローバグ", 30000, 108, RACE_KOBOLD },
-        { "キリアリキーク", 30000, 105, RACE_KLACKON },
-        { "静かなるリリン", 30000, 110, RACE_DWARF },
-        { "王者イサング", 30000, 105, RACE_HIGH_ELF },
-        { "強欲ドラフ", 30000, 108, RACE_HUMAN },
-        { "賢者オドナー", 30000, 105, RACE_HIGH_ELF },
-        { "中立のガンダー", 30000, 110, RACE_DARK_ELF },
-        { "忍耐の人ロ=シャ", 30000, 105, RACE_ELF },
-        { "ランドルフ・カーター", 30000, 108, RACE_HUMAN },
-        { "隼サライ", 30000, 108, RACE_HUMAN },
-        { "千里眼ボドリル", 30000, 105, RACE_HIGH_ELF },
-        { "沈黙のヴェオロイン", 30000, 110, RACE_ZOMBIE },
-        { "学者のヴァンシラス", 30000, 105, RACE_MIND_FLAYER },
-        { "物書きオセイン", 30000, 108, RACE_SKELETON },
-        { "本の虫オルヴァー", 30000, 105, RACE_VAMPIRE },
+        { "ガリル=ガミル", 30000, 105, player_race_type::RACE_ELF },
+        { "本食いローバグ", 30000, 108, player_race_type::RACE_KOBOLD },
+        { "キリアリキーク", 30000, 105, player_race_type::RACE_KLACKON },
+        { "静かなるリリン", 30000, 110, player_race_type::RACE_DWARF },
+        { "王者イサング", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "強欲ドラフ", 30000, 108, player_race_type::RACE_HUMAN },
+        { "賢者オドナー", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "中立のガンダー", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "忍耐の人ロ=シャ", 30000, 105, player_race_type::RACE_ELF },
+        { "ランドルフ・カーター", 30000, 108, player_race_type::RACE_HUMAN },
+        { "隼サライ", 30000, 108, player_race_type::RACE_HUMAN },
+        { "千里眼ボドリル", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "沈黙のヴェオロイン", 30000, 110, player_race_type::RACE_ZOMBIE },
+        { "学者のヴァンシラス", 30000, 105, player_race_type::RACE_MIND_FLAYER },
+        { "物書きオセイン", 30000, 108, player_race_type::RACE_SKELETON },
+        { "本の虫オルヴァー", 30000, 105, player_race_type::RACE_VAMPIRE },
 #else
-        { "Galil-Gamir", 30000, 105, RACE_ELF },
-        { "Rorbag Book-Eater", 30000, 108, RACE_KOBOLD },
-        { "Kiriarikirk", 30000, 105, RACE_KLACKON },
-        { "Rilin the Quiet", 30000, 110, RACE_DWARF },
-        { "Isung the Lord", 30000, 105, RACE_HIGH_ELF },
-        { "Dolaf the Greedy", 30000, 108, RACE_HUMAN },
-        { "Odnar the Sage", 30000, 105, RACE_HIGH_ELF },
-        { "Gandar the Neutral", 30000, 110, RACE_DARK_ELF },
-        { "Ro-sha the Patient", 30000, 105, RACE_ELF },
-        { "Randolph Carter", 30000, 108, RACE_HUMAN },
-        { "Sarai the Swift", 30000, 108, RACE_HUMAN },
-        { "Bodril the Seer", 30000, 105, RACE_HIGH_ELF },
-        { "Veloin the Quiet", 30000, 110, RACE_ZOMBIE },
-        { "Vanthylas the Learned", 30000, 105, RACE_MIND_FLAYER },
-        { "Ossein the Literate", 30000, 108, RACE_SKELETON },
-        { "Olvar Bookworm", 30000, 105, RACE_VAMPIRE },
+        { "Galil-Gamir", 30000, 105, player_race_type::RACE_ELF },
+        { "Rorbag Book-Eater", 30000, 108, player_race_type::RACE_KOBOLD },
+        { "Kiriarikirk", 30000, 105, player_race_type::RACE_KLACKON },
+        { "Rilin the Quiet", 30000, 110, player_race_type::RACE_DWARF },
+        { "Isung the Lord", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "Dolaf the Greedy", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Odnar the Sage", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "Gandar the Neutral", 30000, 110, player_race_type::RACE_DARK_ELF },
+        { "Ro-sha the Patient", 30000, 105, player_race_type::RACE_ELF },
+        { "Randolph Carter", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Sarai the Swift", 30000, 108, player_race_type::RACE_HUMAN },
+        { "Bodril the Seer", 30000, 105, player_race_type::RACE_HIGH_ELF },
+        { "Veloin the Quiet", 30000, 110, player_race_type::RACE_ZOMBIE },
+        { "Vanthylas the Learned", 30000, 105, player_race_type::RACE_MIND_FLAYER },
+        { "Ossein the Literate", 30000, 108, player_race_type::RACE_SKELETON },
+        { "Olvar Bookworm", 30000, 105, player_race_type::RACE_VAMPIRE },
 #endif
     },
 
     {
         /* Museum */
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
-        { _("博物館", "Museum"), 0, 100, 99 },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
+        { _("博物館", "Museum"), 0, 100, player_race_type::RACE_HUMAN },
     },
 };
index fc25210..46a7506 100644 (file)
@@ -1,6 +1,7 @@
 #pragma once
 
 #include "system/angband.h"
+#include "player/player-race-types.h"
 #include <array>
 
 #define MAX_STORES      10 /*!< 店舗の種類最大数 / Total number of stores (see "store.c", etc) */
@@ -13,7 +14,7 @@ struct owner_type {
        concptr owner_name;     //!< 名前 / Name
        PRICE max_cost; //!< 買取上限 / Purse limit
        byte inflate; //!< 価格上乗せ率 / Inflation
-       byte owner_race; //!< 店主種族 / Owner race
+       player_race_type owner_race; //!< 店主種族 / Owner race
 };
 
 extern const owner_type owners[MAX_STORES][MAX_OWNERS];
index 74b1993..edaac55 100644 (file)
@@ -99,7 +99,7 @@ static eg_type *initialize_eg_type(player_type *subject_ptr, eg_type *eg_ptr, PO
 static void evaluate_monster_exp(player_type *creature_ptr, char *buf, monster_type *m_ptr)
 {
     monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx];
-    if ((creature_ptr->lev >= PY_MAX_LEVEL) || (creature_ptr->prace == RACE_ANDROID)) {
+    if ((creature_ptr->lev >= PY_MAX_LEVEL) || (creature_ptr->prace == player_race_type::RACE_ANDROID)) {
         sprintf(buf, "**");
         return;
     }
index 8afce53..aca68fd 100644 (file)
@@ -221,20 +221,20 @@ static void display_player_speed(player_type *creature_ptr, TERM_COLOR attr, int
  */
 static void display_player_exp(player_type *creature_ptr)
 {
-    int e = (creature_ptr->prace == RACE_ANDROID) ? ENTRY_EXP_ANDR : ENTRY_CUR_EXP;
+    int e = (creature_ptr->prace == player_race_type::RACE_ANDROID) ? ENTRY_EXP_ANDR : ENTRY_CUR_EXP;
     if (creature_ptr->exp >= creature_ptr->max_exp)
         display_player_one_line(e, format("%ld", creature_ptr->exp), TERM_L_GREEN);
     else
         display_player_one_line(e, format("%ld", creature_ptr->exp), TERM_YELLOW);
 
-    if (creature_ptr->prace != RACE_ANDROID)
+    if (creature_ptr->prace != player_race_type::RACE_ANDROID)
         display_player_one_line(ENTRY_MAX_EXP, format("%ld", creature_ptr->max_exp), TERM_L_GREEN);
 
-    e = (creature_ptr->prace == RACE_ANDROID) ? ENTRY_EXP_TO_ADV_ANDR : ENTRY_EXP_TO_ADV;
+    e = (creature_ptr->prace == player_race_type::RACE_ANDROID) ? ENTRY_EXP_TO_ADV_ANDR : ENTRY_EXP_TO_ADV;
 
     if (creature_ptr->lev >= PY_MAX_LEVEL)
         display_player_one_line(e, "*****", TERM_L_GREEN);
-    else if (creature_ptr->prace == RACE_ANDROID)
+    else if (creature_ptr->prace == player_race_type::RACE_ANDROID)
         display_player_one_line(e, format("%ld", (s32b)(player_exp_a[creature_ptr->lev - 1] * creature_ptr->expfact / 100L)), TERM_L_GREEN);
     else
         display_player_one_line(e, format("%ld", (s32b)(player_exp[creature_ptr->lev - 1] * creature_ptr->expfact / 100L)), TERM_L_GREEN);
index c14f1ce..26123de 100644 (file)
@@ -57,7 +57,7 @@ static int calc_basic_stat(player_type *creature_ptr, int stat_num)
  */
 static int compensate_special_race(player_type *creature_ptr, int stat_num)
 {
-    if (!is_specific_player_race(creature_ptr, RACE_ENT))
+    if (!is_specific_player_race(creature_ptr, player_race_type::RACE_ENT))
         return 0;
 
     int r_adj = 0;
index e7165c7..1dffb48 100644 (file)
@@ -172,7 +172,7 @@ void display_store(player_type *player_ptr)
 
     concptr store_name = f_info[cur_store_feat].name.c_str();
     concptr owner_name = (ot_ptr->owner_name);
-    concptr race_name = race_info[ot_ptr->owner_race].title;
+    concptr race_name = race_info[static_cast<int>(ot_ptr->owner_race)].title;
     char buf[80];
     sprintf(buf, "%s (%s)", owner_name, race_name);
     put_str(buf, 3, 10);
index 4eb4251..bec76ef 100644 (file)
@@ -65,7 +65,7 @@ void print_exp(player_type *creature_ptr)
 {
     char out_val[32];
 
-    if ((!exp_need) || (creature_ptr->prace == RACE_ANDROID)) {
+    if ((!exp_need) || (creature_ptr->prace == player_race_type::RACE_ANDROID)) {
         (void)sprintf(out_val, "%8ld", (long)creature_ptr->exp);
     } else {
         if (creature_ptr->lev >= PY_MAX_LEVEL) {
@@ -76,7 +76,7 @@ void print_exp(player_type *creature_ptr)
     }
 
     if (creature_ptr->exp >= creature_ptr->max_exp) {
-        if (creature_ptr->prace == RACE_ANDROID)
+        if (creature_ptr->prace == player_race_type::RACE_ANDROID)
             put_str(_("強化 ", "Cst "), ROW_EXP, 0);
         else
             put_str(_("経験 ", "EXP "), ROW_EXP, 0);
index a009f52..0c73db0 100644 (file)
@@ -307,7 +307,7 @@ void wiz_change_status(player_type *creature_ptr)
     if (tmp_long < 0)
         tmp_long = 0L;
 
-    if (creature_ptr->prace == RACE_ANDROID)
+    if (creature_ptr->prace == player_race_type::RACE_ANDROID)
         return;
 
     creature_ptr->max_exp = tmp_long;
@@ -513,7 +513,7 @@ void wiz_reset_race(player_type *creature_ptr)
         return;
 
     creature_ptr->prace = static_cast<player_race_type>(tmp_int);
-    rp_ptr = &race_info[creature_ptr->prace];
+    rp_ptr = &race_info[static_cast<int>(creature_ptr->prace)];
 
     creature_ptr->window_flags |= PW_PLAYER;
     creature_ptr->update |= PU_BONUS | PU_HP | PU_MANA | PU_SPELLS;
index 7d34821..3978dc3 100644 (file)
@@ -35,10 +35,10 @@ void extract_day_hour_min(player_type *player_ptr, int *day, int *hour, int *min
 
        switch (player_ptr->start_race)
        {
-       case RACE_VAMPIRE:
-       case RACE_SKELETON:
-       case RACE_ZOMBIE:
-       case RACE_SPECTRE:
+       case player_race_type::RACE_VAMPIRE:
+       case player_race_type::RACE_SKELETON:
+       case player_race_type::RACE_ZOMBIE:
+       case player_race_type::RACE_SPECTRE:
                *day = (current_world_ptr->game_turn - A_DAY * 3 / 4) / A_DAY + 1;
                break;
        default: