From 703d1dfc630e652d33cc6a6942c02c2b66daca2e Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Wed, 6 Oct 2021 19:56:55 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#1752=20PlayerClassType=E3=82=92enu?= =?utf8?q?m=E3=81=8B=E3=82=89enum=20class=E3=81=B8=E5=A4=89=E6=9B=B4?= =?utf8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/action/action-limited.cpp | 2 +- src/action/activation-execution.cpp | 2 +- src/action/movement-execution.cpp | 4 +- src/action/open-close-execution.cpp | 2 +- src/action/racial-execution.cpp | 2 +- src/artifact/fixed-art-generator.cpp | 14 +- src/artifact/random-art-characteristics.cpp | 4 +- src/artifact/random-art-generator.cpp | 60 +++---- src/autopick/autopick-destroyer.cpp | 8 +- src/autopick/autopick-entry.cpp | 2 +- src/autopick/autopick-matcher.cpp | 2 +- src/avatar/avatar.cpp | 60 +++---- src/birth/auto-roller.cpp | 5 +- src/birth/birth-body-spec.cpp | 2 +- src/birth/birth-select-class.cpp | 50 +++--- src/birth/birth-select-realm.cpp | 8 +- src/birth/birth-stat.cpp | 13 +- src/birth/birth-wizard.cpp | 6 +- src/birth/character-builder.cpp | 4 +- src/birth/game-play-initializer.cpp | 2 +- src/birth/inventory-initializer.cpp | 37 +++-- src/birth/quick-start.cpp | 9 +- src/cmd-action/cmd-attack.cpp | 6 +- src/cmd-action/cmd-mind.cpp | 24 +-- src/cmd-action/cmd-move.cpp | 2 +- src/cmd-action/cmd-pet.cpp | 6 +- src/cmd-action/cmd-shoot.cpp | 2 +- src/cmd-action/cmd-spell.cpp | 34 ++-- src/cmd-io/cmd-diary.cpp | 4 +- src/cmd-io/cmd-menu-content-table.cpp | 30 ++-- src/cmd-io/cmd-menu-content-table.h | 11 +- src/cmd-item/cmd-destroy.cpp | 4 +- src/cmd-item/cmd-equipment.cpp | 2 +- src/cmd-item/cmd-throw.cpp | 2 +- src/combat/attack-accuracy.cpp | 2 +- src/combat/attack-criticality.cpp | 4 +- src/combat/shoot.cpp | 12 +- src/combat/slaying.cpp | 4 +- src/core/game-play.cpp | 12 +- src/core/player-processor.cpp | 4 +- src/core/scores.cpp | 4 +- src/core/window-redrawer.cpp | 2 +- src/dungeon/dungeon-processor.cpp | 2 +- src/effect/effect-monster-charm.cpp | 2 +- src/effect/effect-monster-psi.cpp | 2 +- src/flavor/flavor-describer.cpp | 2 +- src/floor/floor-changer.cpp | 2 +- src/hpmp/hp-mp-processor.cpp | 2 +- src/info-reader/general-parser.cpp | 11 +- src/io-dump/special-class-dump.cpp | 6 +- src/io/input-key-processor.cpp | 58 +++---- src/io/input-key-requester.cpp | 4 +- src/io/report.cpp | 2 +- src/knowledge/knowledge-experiences.cpp | 4 +- src/knowledge/knowledge-self.cpp | 7 +- src/load/load-zangband.cpp | 12 +- src/load/load.cpp | 9 +- src/load/player-info-loader.cpp | 4 +- src/lore/magic-types-setter.cpp | 2 +- src/main/info-initializer.cpp | 4 +- src/market/arena.cpp | 2 +- src/market/building-craft-weapon.cpp | 2 +- src/market/building-initializer.cpp | 4 +- src/market/building-service.cpp | 6 +- src/melee/melee-spell-flags-checker.cpp | 2 +- src/melee/melee-spell.cpp | 2 +- src/mind/mind-elementalist.cpp | 2 +- src/mind/mind-power-getter.cpp | 10 +- src/mind/monk-attack.cpp | 6 +- src/monster-attack/monster-attack-player.cpp | 2 +- src/mspell/mspell-attack.cpp | 2 +- src/mspell/mspell-floor.cpp | 2 +- src/mspell/mspell-judgement.cpp | 4 +- src/mspell/mspell-lite.cpp | 4 +- src/mutation/gain-mutation-switcher.cpp | 4 +- src/object-hook/hook-magic.cpp | 6 +- src/object-hook/hook-weapon.cpp | 21 +-- src/object-use/quaff-execution.cpp | 4 +- src/object-use/read-execution.cpp | 12 +- src/object-use/throw-execution.cpp | 4 +- src/object-use/use-execution.cpp | 2 +- src/object-use/zaprod-execution.cpp | 2 +- src/object-use/zapwand-execution.cpp | 2 +- src/object/object-info.cpp | 4 +- src/perception/simple-perception.cpp | 120 +++++++------- src/pet/pet-fall-off.cpp | 4 +- src/pet/pet-util.cpp | 2 +- src/player-attack/player-attack.cpp | 18 +-- src/player-base/player-class.cpp | 62 ++++---- src/player-info/class-ability-info.cpp | 60 +++---- src/player-info/class-types.h | 62 ++++---- src/player-info/equipment-info.cpp | 2 +- src/player-info/mimic-info-table.cpp | 2 +- src/player-status/player-basic-statistics.cpp | 2 +- src/player-status/player-speed.cpp | 6 +- src/player-status/player-stealth.cpp | 4 +- src/player/patron.cpp | 2 +- src/player/permanent-resistances.cpp | 2 +- src/player/player-move.cpp | 2 +- src/player/player-realm.cpp | 4 +- src/player/player-realm.h | 5 +- src/player/player-status-flags.cpp | 18 +-- src/player/player-status.cpp | 217 +++++++++++++------------- src/player/process-death.cpp | 2 +- src/player/race-info-table.cpp | 6 +- src/racial/class-racial-switcher.cpp | 58 +++---- src/racial/racial-draconian.cpp | 52 +++--- src/racial/racial-switcher.cpp | 58 +++---- src/racial/racial-util.cpp | 2 +- src/realm/realm-crusade.cpp | 2 +- src/realm/realm-trump.cpp | 6 +- src/save/player-writer.cpp | 2 +- src/specific-object/death-crimson.cpp | 2 +- src/specific-object/death-scythe.cpp | 2 +- src/spell-kind/spells-random.cpp | 2 +- src/spell-kind/spells-teleport.cpp | 2 +- src/spell-realm/spells-song.cpp | 4 +- src/spell-realm/spells-trump.cpp | 2 +- src/spell/spell-info.cpp | 20 +-- src/spell/spells-diceroll.cpp | 4 +- src/spell/spells-staff-only.cpp | 12 +- src/spell/spells-status.cpp | 4 +- src/status/buff-setter.cpp | 4 +- src/status/element-resistance.cpp | 4 +- src/status/shape-changer.cpp | 8 +- src/store/store-key-processor.cpp | 12 +- src/view/display-player-middle.cpp | 2 +- src/view/display-player.cpp | 4 +- src/view/object-describer.cpp | 4 +- src/view/status-first-page.cpp | 8 +- src/window/display-sub-window-spells.cpp | 22 +-- src/window/main-window-left-frame.cpp | 2 +- src/window/main-window-stat-poster.cpp | 2 +- src/wizard/cmd-wizard.cpp | 6 +- src/wizard/wizard-special-process.cpp | 19 ++- src/wizard/wizard-spoiler.cpp | 2 +- src/world/world.cpp | 4 +- src/world/world.h | 4 +- 138 files changed, 841 insertions(+), 817 deletions(-) diff --git a/src/action/action-limited.cpp b/src/action/action-limited.cpp index 5edb2aedb..c55572014 100644 --- a/src/action/action-limited.cpp +++ b/src/action/action-limited.cpp @@ -35,7 +35,7 @@ bool cmd_limit_cast(player_type *player_ptr) return true; } - if (is_shero(player_ptr) && (player_ptr->pclass != CLASS_BERSERKER)) { + if (is_shero(player_ptr) && (player_ptr->pclass != PlayerClassType::BERSERKER)) { msg_format(_("狂戦士化していて頭が回らない!", "You cannot think directly!")); return true; } diff --git a/src/action/activation-execution.cpp b/src/action/activation-execution.cpp index e7bf027ed..27d3e691b 100644 --- a/src/action/activation-execution.cpp +++ b/src/action/activation-execution.cpp @@ -88,7 +88,7 @@ static void decide_chance_fail(player_type *player_ptr, ae_type *ae_ptr) static void decide_activation_success(player_type *player_ptr, ae_type *ae_ptr) { - if (player_ptr->pclass == CLASS_BERSERKER) { + if (player_ptr->pclass == PlayerClassType::BERSERKER) { ae_ptr->success = false; return; } diff --git a/src/action/movement-execution.cpp b/src/action/movement-execution.cpp index 9767e8a76..b57c3adc1 100644 --- a/src/action/movement-execution.cpp +++ b/src/action/movement-execution.cpp @@ -177,7 +177,7 @@ void exe_movement(player_type *player_ptr, DIRECTION dir, bool do_pickup, bool b health_track(player_ptr, g_ptr->m_idx); } - if ((stormbringer && (randint1(1000) > 666)) || (player_ptr->pclass == CLASS_BERSERKER)) { + if ((stormbringer && (randint1(1000) > 666)) || (player_ptr->pclass == PlayerClassType::BERSERKER)) { do_cmd_attack(player_ptr, y, x, HISSATSU_NONE); can_move = false; } else if (monster_can_cross_terrain(player_ptr, floor_ptr->grid_array[player_ptr->y][player_ptr->x].feat, r_ptr, 0)) { @@ -249,7 +249,7 @@ void exe_movement(player_type *player_ptr, DIRECTION dir, bool do_pickup, bool b player_ptr->running = 0; can_move = false; } else if (f_ptr->flags.has(FF::TREE) && !p_can_kill_walls) { - if ((player_ptr->pclass != CLASS_RANGER) && !player_ptr->levitation && (!player_ptr->riding || !(riding_r_ptr->flags8 & RF8_WILD_WOOD))) { + if ((player_ptr->pclass != PlayerClassType::RANGER) && !player_ptr->levitation && (!player_ptr->riding || !(riding_r_ptr->flags8 & RF8_WILD_WOOD))) { energy.mul_player_turn_energy(2); } } else if ((do_pickup != easy_disarm) && f_ptr->flags.has(FF::DISARM) && !g_ptr->mimic) { diff --git a/src/action/open-close-execution.cpp b/src/action/open-close-execution.cpp index 0e20b7f04..70ebfce49 100644 --- a/src/action/open-close-execution.cpp +++ b/src/action/open-close-execution.cpp @@ -305,7 +305,7 @@ bool exe_bash(player_type *player_ptr, POSITION y, POSITION x, DIRECTION dir) PlayerEnergy(player_ptr).set_player_turn_energy(100); msg_format(_("%sに体当たりをした!", "You smash into the %s!"), name); temp = (bash - (temp * 10)); - if (player_ptr->pclass == CLASS_BERSERKER) + if (player_ptr->pclass == PlayerClassType::BERSERKER) temp *= 2; if (temp < 1) diff --git a/src/action/racial-execution.cpp b/src/action/racial-execution.cpp index 90c1a1d6b..ea4455114 100644 --- a/src/action/racial-execution.cpp +++ b/src/action/racial-execution.cpp @@ -61,7 +61,7 @@ PERCENTAGE racial_chance(player_type *player_ptr, rpi_type *rpi_ptr) difficulty -= lev_adj; } - auto special_easy = player_ptr->pclass == CLASS_IMITATOR; + auto special_easy = player_ptr->pclass == PlayerClassType::IMITATOR; special_easy &= player_ptr->inventory_list[INVEN_NECK].name1 == ART_GOGO_PENDANT; special_easy &= rpi_ptr->racial_name.compare("倍返し") == 0; if (special_easy) { diff --git a/src/artifact/fixed-art-generator.cpp b/src/artifact/fixed-art-generator.cpp index e3cd59100..a470184c2 100644 --- a/src/artifact/fixed-art-generator.cpp +++ b/src/artifact/fixed-art-generator.cpp @@ -45,10 +45,10 @@ static bool invest_terror_mask(player_type *player_ptr, object_type *o_ptr) return false; switch (player_ptr->pclass) { - case CLASS_WARRIOR: - case CLASS_ARCHER: - case CLASS_CAVALRY: - case CLASS_BERSERKER: + case PlayerClassType::WARRIOR: + case PlayerClassType::ARCHER: + case PlayerClassType::CAVALRY: + case PlayerClassType::BERSERKER: return true; default: o_ptr->art_flags.set(TR_AGGRAVATE); @@ -92,17 +92,17 @@ static void invest_special_artifact_abilities(player_type *player_ptr, object_ty { switch (o_ptr->name1) { case ART_MURAMASA: - if (player_ptr->pclass != CLASS_SAMURAI) { + if (player_ptr->pclass != PlayerClassType::SAMURAI) { o_ptr->art_flags.set(TR_NO_MAGIC); o_ptr->curse_flags.set(TRC::HEAVY_CURSE); } return; case ART_ROBINTON: - if (player_ptr->pclass == CLASS_BARD) + if (player_ptr->pclass == PlayerClassType::BARD) o_ptr->art_flags.set(TR_DEC_MANA); return; case ART_XIAOLONG: - if (player_ptr->pclass == CLASS_MONK) + if (player_ptr->pclass == PlayerClassType::MONK) o_ptr->art_flags.set(TR_BLOWS); return; case ART_BLOOD: diff --git a/src/artifact/random-art-characteristics.cpp b/src/artifact/random-art-characteristics.cpp index 9a8fa4d76..7050d1dc0 100644 --- a/src/artifact/random-art-characteristics.cpp +++ b/src/artifact/random-art-characteristics.cpp @@ -79,8 +79,8 @@ void curse_artifact(player_type *player_ptr, object_type *o_ptr) o_ptr->curse_flags.set({ TRC::HEAVY_CURSE, TRC::CURSED }); o_ptr->art_flags.reset(TR_BLESSED); add_negative_flags(o_ptr); - if ((player_ptr->pclass != CLASS_WARRIOR) && (player_ptr->pclass != CLASS_ARCHER) && (player_ptr->pclass != CLASS_CAVALRY) - && (player_ptr->pclass != CLASS_BERSERKER) && (player_ptr->pclass != CLASS_SMITH) && one_in_(3)) + if ((player_ptr->pclass != PlayerClassType::WARRIOR) && (player_ptr->pclass != PlayerClassType::ARCHER) && (player_ptr->pclass != PlayerClassType::CAVALRY) + && (player_ptr->pclass != PlayerClassType::BERSERKER) && (player_ptr->pclass != PlayerClassType::SMITH) && one_in_(3)) o_ptr->art_flags.set(TR_NO_MAGIC); } diff --git a/src/artifact/random-art-generator.cpp b/src/artifact/random-art-generator.cpp index ee287b7de..6067cf0d6 100644 --- a/src/artifact/random-art-generator.cpp +++ b/src/artifact/random-art-generator.cpp @@ -76,79 +76,79 @@ static bool weakening_artifact(object_type *o_ptr) static void set_artifact_bias(player_type *player_ptr, object_type *o_ptr, int *warrior_artifact_bias) { switch (player_ptr->pclass) { - case CLASS_WARRIOR: - case CLASS_BERSERKER: - case CLASS_ARCHER: - case CLASS_SAMURAI: - case CLASS_CAVALRY: - case CLASS_SMITH: + case PlayerClassType::WARRIOR: + case PlayerClassType::BERSERKER: + case PlayerClassType::ARCHER: + case PlayerClassType::SAMURAI: + case PlayerClassType::CAVALRY: + case PlayerClassType::SMITH: o_ptr->artifact_bias = BIAS_WARRIOR; break; - case CLASS_MAGE: - case CLASS_HIGH_MAGE: - case CLASS_SORCERER: - case CLASS_MAGIC_EATER: - case CLASS_BLUE_MAGE: + case PlayerClassType::MAGE: + case PlayerClassType::HIGH_MAGE: + case PlayerClassType::SORCERER: + case PlayerClassType::MAGIC_EATER: + case PlayerClassType::BLUE_MAGE: o_ptr->artifact_bias = BIAS_MAGE; break; - case CLASS_PRIEST: + case PlayerClassType::PRIEST: o_ptr->artifact_bias = BIAS_PRIESTLY; break; - case CLASS_ROGUE: - case CLASS_NINJA: + case PlayerClassType::ROGUE: + case PlayerClassType::NINJA: o_ptr->artifact_bias = BIAS_ROGUE; *warrior_artifact_bias = 25; break; - case CLASS_RANGER: - case CLASS_SNIPER: + case PlayerClassType::RANGER: + case PlayerClassType::SNIPER: o_ptr->artifact_bias = BIAS_RANGER; *warrior_artifact_bias = 30; break; - case CLASS_PALADIN: + case PlayerClassType::PALADIN: o_ptr->artifact_bias = BIAS_PRIESTLY; *warrior_artifact_bias = 40; break; - case CLASS_WARRIOR_MAGE: - case CLASS_RED_MAGE: + case PlayerClassType::WARRIOR_MAGE: + case PlayerClassType::RED_MAGE: o_ptr->artifact_bias = BIAS_MAGE; *warrior_artifact_bias = 40; break; - case CLASS_CHAOS_WARRIOR: + case PlayerClassType::CHAOS_WARRIOR: o_ptr->artifact_bias = BIAS_CHAOS; *warrior_artifact_bias = 40; break; - case CLASS_MONK: - case CLASS_FORCETRAINER: + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: o_ptr->artifact_bias = BIAS_PRIESTLY; break; - case CLASS_MINDCRAFTER: - case CLASS_BARD: + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::BARD: if (randint1(5) > 2) o_ptr->artifact_bias = BIAS_PRIESTLY; break; - case CLASS_TOURIST: + case PlayerClassType::TOURIST: if (randint1(5) > 2) o_ptr->artifact_bias = BIAS_WARRIOR; break; - case CLASS_IMITATOR: + case PlayerClassType::IMITATOR: if (randint1(2) > 1) o_ptr->artifact_bias = BIAS_RANGER; break; - case CLASS_BEASTMASTER: + case PlayerClassType::BEASTMASTER: o_ptr->artifact_bias = BIAS_CHR; *warrior_artifact_bias = 50; break; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: if (randint1(4) > 1) o_ptr->artifact_bias = BIAS_MAGE; else o_ptr->artifact_bias = BIAS_ROGUE; break; - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: o_ptr->artifact_bias = one_in_(2) ? BIAS_MAGE : BIAS_INT; break; - case MAX_CLASS: + case PlayerClassType::MAX: break; } } diff --git a/src/autopick/autopick-destroyer.cpp b/src/autopick/autopick-destroyer.cpp index 6600e412b..3bebed28b 100644 --- a/src/autopick/autopick-destroyer.cpp +++ b/src/autopick/autopick-destroyer.cpp @@ -44,15 +44,15 @@ static bool is_leave_special_item(player_type *player_ptr, object_type *o_ptr) if (player_ptr->prace == PlayerRaceType::BALROG) { if (o_ptr->tval == ItemKindType::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) { + } else if (player_ptr->pclass == PlayerClassType::ARCHER) { if (o_ptr->tval == ItemKindType::SKELETON || (o_ptr->tval == ItemKindType::CORPSE && o_ptr->sval == SV_SKELETON)) return false; - } else if (player_ptr->pclass == CLASS_NINJA) { + } else if (player_ptr->pclass == PlayerClassType::NINJA) { if (o_ptr->tval == ItemKindType::LITE && o_ptr->name2 == EGO_LITE_DARKNESS && o_ptr->is_known()) return false; - } else if (player_ptr->pclass == CLASS_BEASTMASTER || player_ptr->pclass == CLASS_CAVALRY) { + } else if (player_ptr->pclass == PlayerClassType::BEASTMASTER || player_ptr->pclass == PlayerClassType::CAVALRY) { if (o_ptr->tval == ItemKindType::WAND && o_ptr->sval == SV_WAND_HEAL_MONSTER && o_ptr->is_aware()) - return false; + return false; } return true; diff --git a/src/autopick/autopick-entry.cpp b/src/autopick/autopick-entry.cpp index 463cbed62..c3d57e89d 100644 --- a/src/autopick/autopick-entry.cpp +++ b/src/autopick/autopick-entry.cpp @@ -396,7 +396,7 @@ void autopick_entry_from_object(player_type *player_ptr, autopick_type *entry, o name = false; } - bool realm_except_class = player_ptr->pclass == CLASS_SORCERER || player_ptr->pclass == CLASS_RED_MAGE; + bool realm_except_class = player_ptr->pclass == PlayerClassType::SORCERER || player_ptr->pclass == PlayerClassType::RED_MAGE; if ((get_realm1_book(player_ptr) == o_ptr->tval) && !realm_except_class) { ADD_FLG(FLG_REALM1); diff --git a/src/autopick/autopick-matcher.cpp b/src/autopick/autopick-matcher.cpp index 633f199dd..5f2f20f4e 100644 --- a/src/autopick/autopick-matcher.cpp +++ b/src/autopick/autopick-matcher.cpp @@ -180,7 +180,7 @@ bool is_autopick_match(player_type *player_ptr, object_type *o_ptr, autopick_typ if (IS_FLG(FLG_UNREADABLE) && (o_ptr->tval < ItemKindType::LIFE_BOOK || check_book_realm(player_ptr, o_ptr->tval, o_ptr->sval))) return false; - bool realm_except_class = player_ptr->pclass == CLASS_SORCERER || player_ptr->pclass == CLASS_RED_MAGE; + bool realm_except_class = player_ptr->pclass == PlayerClassType::SORCERER || player_ptr->pclass == PlayerClassType::RED_MAGE; if (IS_FLG(FLG_REALM1) && ((get_realm1_book(player_ptr) != o_ptr->tval) || realm_except_class)) return false; diff --git a/src/avatar/avatar.cpp b/src/avatar/avatar.cpp index 37d7a8fde..7b25bd6f5 100644 --- a/src/avatar/avatar.cpp +++ b/src/avatar/avatar.cpp @@ -227,108 +227,108 @@ void initialize_virtues(player_type *player_ptr) /* Get pre-defined types */ /* 1 or more virtues based on class */ switch (player_ptr->pclass) { - case CLASS_WARRIOR: - case CLASS_SAMURAI: + case PlayerClassType::WARRIOR: + case PlayerClassType::SAMURAI: player_ptr->vir_types[i++] = V_VALOUR; player_ptr->vir_types[i++] = V_HONOUR; break; - case CLASS_MAGE: + case PlayerClassType::MAGE: player_ptr->vir_types[i++] = V_KNOWLEDGE; player_ptr->vir_types[i++] = V_ENCHANT; break; - case CLASS_PRIEST: + case PlayerClassType::PRIEST: player_ptr->vir_types[i++] = V_FAITH; player_ptr->vir_types[i++] = V_TEMPERANCE; break; - case CLASS_ROGUE: - case CLASS_SNIPER: + case PlayerClassType::ROGUE: + case PlayerClassType::SNIPER: player_ptr->vir_types[i++] = V_HONOUR; break; - case CLASS_RANGER: - case CLASS_ARCHER: + case PlayerClassType::RANGER: + case PlayerClassType::ARCHER: player_ptr->vir_types[i++] = V_NATURE; player_ptr->vir_types[i++] = V_TEMPERANCE; break; - case CLASS_PALADIN: + case PlayerClassType::PALADIN: player_ptr->vir_types[i++] = V_JUSTICE; player_ptr->vir_types[i++] = V_VALOUR; player_ptr->vir_types[i++] = V_HONOUR; player_ptr->vir_types[i++] = V_FAITH; break; - case CLASS_WARRIOR_MAGE: - case CLASS_RED_MAGE: + case PlayerClassType::WARRIOR_MAGE: + case PlayerClassType::RED_MAGE: player_ptr->vir_types[i++] = V_ENCHANT; player_ptr->vir_types[i++] = V_VALOUR; break; - case CLASS_CHAOS_WARRIOR: + case PlayerClassType::CHAOS_WARRIOR: player_ptr->vir_types[i++] = V_CHANCE; player_ptr->vir_types[i++] = V_INDIVIDUALISM; break; - case CLASS_MONK: - case CLASS_FORCETRAINER: + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: player_ptr->vir_types[i++] = V_FAITH; player_ptr->vir_types[i++] = V_HARMONY; player_ptr->vir_types[i++] = V_TEMPERANCE; player_ptr->vir_types[i++] = V_PATIENCE; break; - case CLASS_MINDCRAFTER: - case CLASS_MIRROR_MASTER: + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::MIRROR_MASTER: player_ptr->vir_types[i++] = V_HARMONY; player_ptr->vir_types[i++] = V_ENLIGHTEN; player_ptr->vir_types[i++] = V_PATIENCE; break; - case CLASS_HIGH_MAGE: - case CLASS_SORCERER: + case PlayerClassType::HIGH_MAGE: + case PlayerClassType::SORCERER: player_ptr->vir_types[i++] = V_ENLIGHTEN; player_ptr->vir_types[i++] = V_ENCHANT; player_ptr->vir_types[i++] = V_KNOWLEDGE; break; - case CLASS_TOURIST: + case PlayerClassType::TOURIST: player_ptr->vir_types[i++] = V_ENLIGHTEN; player_ptr->vir_types[i++] = V_CHANCE; break; - case CLASS_IMITATOR: + case PlayerClassType::IMITATOR: player_ptr->vir_types[i++] = V_CHANCE; break; - case CLASS_BLUE_MAGE: + case PlayerClassType::BLUE_MAGE: player_ptr->vir_types[i++] = V_CHANCE; player_ptr->vir_types[i++] = V_KNOWLEDGE; break; - case CLASS_BEASTMASTER: + case PlayerClassType::BEASTMASTER: player_ptr->vir_types[i++] = V_NATURE; player_ptr->vir_types[i++] = V_CHANCE; player_ptr->vir_types[i++] = V_VITALITY; break; - case CLASS_MAGIC_EATER: + case PlayerClassType::MAGIC_EATER: player_ptr->vir_types[i++] = V_ENCHANT; player_ptr->vir_types[i++] = V_KNOWLEDGE; break; - case CLASS_BARD: + case PlayerClassType::BARD: player_ptr->vir_types[i++] = V_HARMONY; player_ptr->vir_types[i++] = V_COMPASSION; break; - case CLASS_CAVALRY: + case PlayerClassType::CAVALRY: player_ptr->vir_types[i++] = V_VALOUR; player_ptr->vir_types[i++] = V_HARMONY; break; - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: player_ptr->vir_types[i++] = V_VALOUR; player_ptr->vir_types[i++] = V_INDIVIDUALISM; break; - case CLASS_SMITH: + case PlayerClassType::SMITH: player_ptr->vir_types[i++] = V_HONOUR; player_ptr->vir_types[i++] = V_KNOWLEDGE; break; - case CLASS_NINJA: + case PlayerClassType::NINJA: player_ptr->vir_types[i++] = V_PATIENCE; player_ptr->vir_types[i++] = V_KNOWLEDGE; player_ptr->vir_types[i++] = V_FAITH; player_ptr->vir_types[i++] = V_UNLIFE; break; - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: player_ptr->vir_types[i++] = V_NATURE; break; - case MAX_CLASS: + case PlayerClassType::MAX: break; }; diff --git a/src/birth/auto-roller.cpp b/src/birth/auto-roller.cpp index 2f9c38da4..74c079c89 100644 --- a/src/birth/auto-roller.cpp +++ b/src/birth/auto-roller.cpp @@ -111,8 +111,9 @@ static int32_t get_autoroller_prob(int *minval) */ static void decide_initial_stat(player_type *player_ptr, int *cval) { - auto &class_ptr = class_info[player_ptr->pclass]; - auto &magic_ptr = m_info[player_ptr->pclass]; + auto pclass = enum2i(player_ptr->pclass); + auto &class_ptr = class_info[pclass]; + auto &magic_ptr = m_info[pclass]; auto is_magic_user = magic_ptr.spell_stat == A_INT || magic_ptr.spell_stat == A_WIS || magic_ptr.spell_stat == A_CHR; auto is_attacker = class_ptr.num > 3; diff --git a/src/birth/birth-body-spec.cpp b/src/birth/birth-body-spec.cpp index f12ec3ed1..11fedde48 100644 --- a/src/birth/birth-body-spec.cpp +++ b/src/birth/birth-body-spec.cpp @@ -43,7 +43,7 @@ void get_ahw(player_type *player_ptr) void get_money(player_type *player_ptr) { int gold = (player_ptr->sc * 6) + randint1(100) + 300; - if (player_ptr->pclass == CLASS_TOURIST) + if (player_ptr->pclass == PlayerClassType::TOURIST) gold += 2000; for (int i = 0; i < A_MAX; i++) { diff --git a/src/birth/birth-select-class.cpp b/src/birth/birth-select-class.cpp index 38bfacf63..a2f89ef2d 100644 --- a/src/birth/birth-select-class.cpp +++ b/src/birth/birth-select-class.cpp @@ -13,7 +13,7 @@ static const char p2 = ')'; static TERM_COLOR birth_class_color(int cs) { - if (cs < MAX_CLASS) { + if (i2enum(cs) < PlayerClassType::MAX) { if (is_retired_class(i2enum(cs))) return TERM_L_DARK; if (is_winner_class(i2enum(cs))) @@ -24,7 +24,7 @@ static TERM_COLOR birth_class_color(int cs) static void enumerate_class_list(char *sym) { - for (int n = 0; n < MAX_CLASS; n++) { + for (auto n = 0; i2enum(n) < PlayerClassType::MAX; n++) { cp_ptr = &class_info[n]; mp_ptr = &m_info[n]; concptr str = cp_ptr->title; @@ -50,7 +50,7 @@ static void display_class_stat(int cs, int *os, char *cur, char *sym) c_put_str(birth_class_color(*os), cur, 13 + (*os / 4), 2 + 19 * (*os % 4)); put_str(" ", 3, 40); - if (cs == MAX_CLASS) { + if (i2enum(cs) == PlayerClassType::MAX) { sprintf(cur, "%c%c%s", '*', p2, _("ランダム", "Random")); put_str(" ", 4, 40); put_str(" ", 5, 40); @@ -77,7 +77,7 @@ static void display_class_stat(int cs, int *os, char *cur, char *sym) c_put_str(TERM_L_BLUE, buf, 6, 42); put_str(_("隠密", "Stealth"), 6, 47); - if (cs == CLASS_BERSERKER) + if (i2enum(cs) == PlayerClassType::BERSERKER) strcpy(buf, " xx"); else sprintf(buf, " %+2d", cp_ptr->c_stl); @@ -101,28 +101,29 @@ static void interpret_class_select_key_move(char c, int *cs) } if (c == '6') { - if (*cs < MAX_CLASS) + if (i2enum(*cs) < PlayerClassType::MAX) (*cs)++; } if (c == '2') { - if ((*cs + 4) <= MAX_CLASS) + if (i2enum(*cs + 4) <= PlayerClassType::MAX) *cs += 4; } } static bool select_class(player_type *player_ptr, char *cur, char *sym, int *k) { - int cs = player_ptr->pclass; - int os = MAX_CLASS; + auto cs = player_ptr->pclass; + auto os = PlayerClassType::MAX; while (true) { - display_class_stat(cs, &os, cur, sym); + int int_os = enum2i(os); + display_class_stat(enum2i(cs), &int_os, cur, sym); if (*k >= 0) break; char buf[80]; sprintf(buf, _("職業を選んで下さい (%c-%c) ('='初期オプション設定, 灰色:勝利済): ", "Choose a class (%c-%c) ('=' for options, Gray is winner): "), - sym[0], sym[MAX_CLASS - 1]); + sym[0], sym[enum2i(PlayerClassType::MAX) - 1]); put_str(buf, 10, 6); char c = inkey(); @@ -133,32 +134,33 @@ static bool select_class(player_type *player_ptr, char *cur, char *sym, int *k) return false; if (c == ' ' || c == '\r' || c == '\n') { - if (cs == MAX_CLASS) { - *k = randint0(MAX_CLASS); - cs = *k; + if (cs == PlayerClassType::MAX) { + *k = randint0(enum2i(PlayerClassType::MAX)); + cs = i2enum(*k); continue; } else { - *k = cs; + *k = enum2i(cs); break; } } - interpret_class_select_key_move(c, &cs); + int int_cs = enum2i(cs); + interpret_class_select_key_move(c, &int_cs); if (c == '*') { - *k = randint0(MAX_CLASS); - cs = *k; + *k = randint0(enum2i(PlayerClassType::MAX)); + cs = i2enum(*k); continue; } *k = (islower(c) ? A2I(c) : -1); - if ((*k >= 0) && (*k < MAX_CLASS)) { - cs = *k; + if ((*k >= 0) && (i2enum(*k) < PlayerClassType::MAX)) { + cs = i2enum(*k); continue; } *k = (isupper(c) ? (26 + c - 'A') : -1); - if ((*k >= 26) && (*k < MAX_CLASS)) { - cs = *k; + if ((*k >= 26) && (i2enum(*k) < PlayerClassType::MAX)) { + cs = i2enum(*k); continue; } else *k = -1; @@ -181,7 +183,7 @@ bool get_player_class(player_type *player_ptr) put_str(_("()で囲まれた選択肢はこの種族には似合わない職業です。", "Any entries in parentheses should only be used by advanced players."), 11, 5); put_str(" ", 6, 40); - char sym[MAX_CLASS]; + char sym[enum2i(PlayerClassType::MAX)]; enumerate_class_list(sym); char cur[80]; @@ -191,8 +193,8 @@ bool get_player_class(player_type *player_ptr) return false; player_ptr->pclass = i2enum(k); - cp_ptr = &class_info[player_ptr->pclass]; - mp_ptr = &m_info[player_ptr->pclass]; + cp_ptr = &class_info[enum2i(player_ptr->pclass)]; + mp_ptr = &m_info[enum2i(player_ptr->pclass)]; c_put_str(TERM_L_BLUE, cp_ptr->title, 5, 15); return true; } diff --git a/src/birth/birth-select-realm.cpp b/src/birth/birth-select-realm.cpp index 92c62a152..dd604c6fa 100644 --- a/src/birth/birth-select-realm.cpp +++ b/src/birth/birth-select-realm.cpp @@ -114,7 +114,7 @@ static void impose_first_realm(const player_type *player_ptr, uint32_t *choices) if (player_ptr->realm2 == REALM_SELECT_CANCEL) return; - if (player_ptr->pclass != CLASS_PRIEST) + if (player_ptr->pclass != PlayerClassType::PRIEST) return; if (is_good_realm(player_ptr->realm1)) { @@ -318,7 +318,7 @@ bool get_player_realms(player_type *player_ptr) player_ptr->realm1 = REALM_NONE; player_ptr->realm2 = REALM_SELECT_CANCEL; - if (player_ptr->pclass == CLASS_ELEMENTALIST) { + if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) { player_ptr->element = select_element_realm(player_ptr); if (player_ptr->element == REALM_SELECT_CANCEL) return false; @@ -332,7 +332,7 @@ bool get_player_realms(player_type *player_ptr) while (true) { char temp[80 * 10]; int count = 0; - player_ptr->realm1 = select_realm(player_ptr, realm_choices1[player_ptr->pclass], &count); + player_ptr->realm1 = select_realm(player_ptr, realm_choices1[enum2i(player_ptr->pclass)], &count); if (player_ptr->realm1 == REALM_SELECT_CANCEL) return false; if (!player_ptr->realm1) @@ -367,7 +367,7 @@ bool get_player_realms(player_type *player_ptr) while (true) { char temp[80 * 8]; int count = 0; - player_ptr->realm2 = select_realm(player_ptr, realm_choices2[player_ptr->pclass], &count); + player_ptr->realm2 = select_realm(player_ptr, realm_choices2[enum2i(player_ptr->pclass)], &count); if (player_ptr->realm2 == REALM_SELECT_CANCEL) return false; diff --git a/src/birth/birth-stat.cpp b/src/birth/birth-stat.cpp index e365dfa67..4da36eac0 100644 --- a/src/birth/birth-stat.cpp +++ b/src/birth/birth-stat.cpp @@ -94,7 +94,7 @@ uint16_t get_expfact(player_type *player_ptr) if (player_ptr->prace != PlayerRaceType::ANDROID) expfact += cp_ptr->c_exp; - if (((player_ptr->pclass == CLASS_MONK) || (player_ptr->pclass == CLASS_FORCETRAINER) || (player_ptr->pclass == CLASS_NINJA)) + if (((player_ptr->pclass == PlayerClassType::MONK) || (player_ptr->pclass == PlayerClassType::FORCETRAINER) || (player_ptr->pclass == PlayerClassType::NINJA)) && ((player_ptr->prace == PlayerRaceType::KLACKON) || (player_ptr->prace == PlayerRaceType::SPRITE))) expfact -= 15; @@ -115,17 +115,18 @@ void get_extra(player_type *player_ptr, bool roll_hitdie) player_ptr->old_realm = 0; for (int i = 0; i < 64; i++) { - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::SORCERER) player_ptr->spell_exp[i] = SPELL_EXP_MASTER; - else if (player_ptr->pclass == CLASS_RED_MAGE) + else if (player_ptr->pclass == PlayerClassType::RED_MAGE) player_ptr->spell_exp[i] = SPELL_EXP_SKILLED; else player_ptr->spell_exp[i] = SPELL_EXP_UNSKILLED; } + auto pclass = enum2i(player_ptr->pclass); for (int i = 0; i < 5; i++) for (int j = 0; j < 64; j++) - player_ptr->weapon_exp[i][j] = s_info[player_ptr->pclass].w_start[i][j]; + player_ptr->weapon_exp[i][j] = s_info[pclass].w_start[i][j]; auto sexy_tval = ItemKindType::HAFTED - TV_WEAPON_BEGIN; if ((player_ptr->ppersonality == PERSONALITY_SEXY) && (player_ptr->weapon_exp[sexy_tval][SV_WHIP] < WEAPON_EXP_BEGINNER)) { @@ -133,9 +134,9 @@ void get_extra(player_type *player_ptr, bool roll_hitdie) } for (int i = 0; i < MAX_SKILLS; i++) - player_ptr->skill_exp[i] = s_info[player_ptr->pclass].s_start[i]; + player_ptr->skill_exp[i] = s_info[pclass].s_start[i]; - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::SORCERER) player_ptr->hitdie = rp_ptr->r_mhp / 2 + cp_ptr->c_mhp + ap_ptr->a_mhp; else player_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp; diff --git a/src/birth/birth-wizard.cpp b/src/birth/birth-wizard.cpp index 19670b595..5b60929e2 100644 --- a/src/birth/birth-wizard.cpp +++ b/src/birth/birth-wizard.cpp @@ -191,14 +191,14 @@ static bool let_player_select_race(player_type *player_ptr) static bool let_player_select_class(player_type *player_ptr) { clear_from(10); - player_ptr->pclass = CLASS_WARRIOR; + player_ptr->pclass = PlayerClassType::WARRIOR; while (true) { char temp[80 * 9]; if (!get_player_class(player_ptr)) return false; clear_from(10); - shape_buffer(class_explanations[player_ptr->pclass].data(), 74, temp, sizeof(temp)); + shape_buffer(class_explanations[enum2i(player_ptr->pclass)].data(), 74, temp, sizeof(temp)); concptr t = temp; for (int i = 0; i < 9; i++) { if (t[0] == 0) @@ -291,7 +291,7 @@ static void display_initial_options(player_type *player_ptr) c_put_str(TERM_L_BLUE, buf, 6, 43); put_str(_("隠密", "Stealth"), 6, 47); - if (player_ptr->pclass == CLASS_BERSERKER) + if (player_ptr->pclass == PlayerClassType::BERSERKER) strcpy(buf, "xx"); else sprintf(buf, "%+2d", rp_ptr->r_stl + cp_ptr->c_stl + ap_ptr->a_stl); diff --git a/src/birth/character-builder.cpp b/src/birth/character-builder.cpp index cf72dba02..31275b2e0 100644 --- a/src/birth/character-builder.cpp +++ b/src/birth/character-builder.cpp @@ -60,7 +60,7 @@ static void write_birth_diary(player_type *player_ptr) exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, buf); sprintf(buf, _("%s種族に%sを選択した。", "%schose %s race."), indent, race_info[enum2i(player_ptr->prace)].title); exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, buf); - sprintf(buf, _("%s職業に%sを選択した。", "%schose %s class."), indent, class_info[player_ptr->pclass].title); + sprintf(buf, _("%s職業に%sを選択した。", "%schose %s class."), indent, class_info[enum2i(player_ptr->pclass)].title); exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, buf); if (player_ptr->realm1) { sprintf(buf, _("%s魔法の領域に%s%sを選択した。", "%schose %s%s."), indent, realm_names[player_ptr->realm1], @@ -73,7 +73,7 @@ static void write_birth_diary(player_type *player_ptr) } sprintf(buf, _("%s性格に%sを選択した。", "%schose %s personality."), indent, personality_info[player_ptr->ppersonality].title); exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, buf); - if (player_ptr->pclass == CLASS_CHAOS_WARRIOR) { + if (player_ptr->pclass == PlayerClassType::CHAOS_WARRIOR) { sprintf(buf, _("%s守護神%sと契約を交わした。", "%smade a contract with patron %s."), indent, patron_list[player_ptr->chaos_patron].name.c_str()); exe_write_diary(player_ptr, DIARY_DESCRIPTION, 1, buf); } diff --git a/src/birth/game-play-initializer.cpp b/src/birth/game-play-initializer.cpp index 8c47ba711..a8639f6cf 100644 --- a/src/birth/game-play-initializer.cpp +++ b/src/birth/game-play-initializer.cpp @@ -96,7 +96,7 @@ void player_wipe_without_name(player_type *player_ptr) } player_ptr->food = PY_FOOD_FULL - 1; - if (player_ptr->pclass == CLASS_SORCERER) { + if (player_ptr->pclass == PlayerClassType::SORCERER) { player_ptr->spell_learned1 = player_ptr->spell_learned2 = 0xffffffffL; player_ptr->spell_worked1 = player_ptr->spell_worked2 = 0xffffffffL; } else { diff --git a/src/birth/inventory-initializer.cpp b/src/birth/inventory-initializer.cpp index e02e40a65..fb9b14ada 100644 --- a/src/birth/inventory-initializer.cpp +++ b/src/birth/inventory-initializer.cpp @@ -148,11 +148,11 @@ void player_outfit(player_type *player_ptr) decide_initial_items(player_ptr, q_ptr); q_ptr = &forge; - if ((player_ptr->prace == PlayerRaceType::VAMPIRE) && (player_ptr->pclass != CLASS_NINJA)) { + if ((player_ptr->prace == PlayerRaceType::VAMPIRE) && (player_ptr->pclass != PlayerClassType::NINJA)) { q_ptr->prep(lookup_kind(ItemKindType::SCROLL, SV_SCROLL_DARKNESS)); q_ptr->number = (ITEM_NUMBER)rand_range(2, 5); add_outfit(player_ptr, q_ptr); - } else if (player_ptr->pclass != CLASS_NINJA) { + } else if (player_ptr->pclass != PlayerClassType::NINJA) { q_ptr->prep(lookup_kind(ItemKindType::LITE, SV_LITE_TORCH)); q_ptr->number = (ITEM_NUMBER)rand_range(3, 7); q_ptr->xtra4 = rand_range(3, 7) * 500; @@ -167,31 +167,31 @@ void player_outfit(player_type *player_ptr) add_outfit(player_ptr, q_ptr); } - if ((player_ptr->pclass == CLASS_RANGER) || (player_ptr->pclass == CLASS_CAVALRY)) { + if ((player_ptr->pclass == PlayerClassType::RANGER) || (player_ptr->pclass == PlayerClassType::CAVALRY)) { q_ptr->prep(lookup_kind(ItemKindType::ARROW, SV_AMMO_NORMAL)); q_ptr->number = (byte)rand_range(15, 20); add_outfit(player_ptr, q_ptr); } - if (player_ptr->pclass == CLASS_RANGER) { + if (player_ptr->pclass == PlayerClassType::RANGER) { q_ptr->prep(lookup_kind(ItemKindType::BOW, SV_SHORT_BOW)); add_outfit(player_ptr, q_ptr); - } else if (player_ptr->pclass == CLASS_ARCHER) { + } else if (player_ptr->pclass == PlayerClassType::ARCHER) { q_ptr->prep(lookup_kind(ItemKindType::ARROW, SV_AMMO_NORMAL)); q_ptr->number = (ITEM_NUMBER)rand_range(15, 20); add_outfit(player_ptr, q_ptr); - } else if (player_ptr->pclass == CLASS_HIGH_MAGE || player_ptr->pclass == CLASS_ELEMENTALIST) { + } else if (player_ptr->pclass == PlayerClassType::HIGH_MAGE || player_ptr->pclass == PlayerClassType::ELEMENTALIST) { q_ptr->prep(lookup_kind(ItemKindType::WAND, SV_WAND_MAGIC_MISSILE)); q_ptr->number = 1; q_ptr->pval = (PARAMETER_VALUE)rand_range(25, 30); add_outfit(player_ptr, q_ptr); - } else if (player_ptr->pclass == CLASS_SORCERER) { + } else if (player_ptr->pclass == PlayerClassType::SORCERER) { for (auto book_tval = enum2i(ItemKindType::LIFE_BOOK); book_tval <= enum2i(ItemKindType::LIFE_BOOK) + MAX_MAGIC - 1; book_tval++) { q_ptr->prep(lookup_kind(i2enum(book_tval), 0)); q_ptr->number = 1; add_outfit(player_ptr, q_ptr); } - } else if (player_ptr->pclass == CLASS_TOURIST) { + } else if (player_ptr->pclass == PlayerClassType::TOURIST) { if (player_ptr->ppersonality != PERSONALITY_SEXY) { q_ptr->prep(lookup_kind(ItemKindType::SHOT, SV_AMMO_LIGHT)); q_ptr->number = rand_range(15, 20); @@ -222,11 +222,11 @@ void player_outfit(player_type *player_ptr) q_ptr->number = rand_range(2, 4); add_outfit(player_ptr, q_ptr); - } else if (player_ptr->pclass == CLASS_NINJA) { + } else if (player_ptr->pclass == PlayerClassType::NINJA) { q_ptr->prep(lookup_kind(ItemKindType::SPIKE, 0)); q_ptr->number = rand_range(15, 20); add_outfit(player_ptr, q_ptr); - } else if (player_ptr->pclass == CLASS_SNIPER) { + } else if (player_ptr->pclass == PlayerClassType::SNIPER) { q_ptr->prep(lookup_kind(ItemKindType::BOLT, SV_AMMO_NORMAL)); q_ptr->number = rand_range(15, 20); add_outfit(player_ptr, q_ptr); @@ -234,16 +234,17 @@ void player_outfit(player_type *player_ptr) // @todo 本来read-onlyであるべきプリセットテーブルを書き換えている. 良くないパターン. // 「状況によって特別に持たせたいアイテム」は別途定義すべき. - if (player_ptr->pclass != CLASS_SORCERER) { + if (player_ptr->pclass != PlayerClassType::SORCERER) { + auto short_pclass = enum2i(player_ptr->pclass); if (player_ptr->ppersonality == PERSONALITY_SEXY) { - player_init[player_ptr->pclass][2] = std::make_tuple(ItemKindType::HAFTED, SV_WHIP); + player_init[short_pclass][2] = std::make_tuple(ItemKindType::HAFTED, SV_WHIP); } else if (player_ptr->prace == PlayerRaceType::MERFOLK) { - player_init[player_ptr->pclass][2] = std::make_tuple(ItemKindType::POLEARM, SV_TRIDENT); + player_init[short_pclass][2] = std::make_tuple(ItemKindType::POLEARM, SV_TRIDENT); } } for (auto i = 0; i < 3; i++) { - auto &[tv, sv] = player_init[player_ptr->pclass][i]; + auto &[tv, sv] = player_init[enum2i(player_ptr->pclass)][i]; if ((player_ptr->prace == PlayerRaceType::ANDROID) && ((tv == ItemKindType::SOFT_ARMOR) || (tv == ItemKindType::HARD_ARMOR))) continue; @@ -260,10 +261,12 @@ void player_outfit(player_type *player_ptr) q_ptr = &forge; q_ptr->prep(lookup_kind(tv, sv)); - if ((tv == ItemKindType::SWORD || tv == ItemKindType::HAFTED) - && (player_ptr->pclass == CLASS_ROGUE && player_ptr->realm1 == REALM_DEATH)) /* Only assassins get a poisoned weapon */ - q_ptr->name2 = EGO_BRAND_POIS; + /* Only assassins get a poisoned weapon */ + if (((tv == ItemKindType::SWORD) || (tv == ItemKindType::HAFTED)) && ((player_ptr->pclass == PlayerClassType::ROGUE) && (player_ptr->realm1 == REALM_DEATH))) { + q_ptr->name2 = EGO_BRAND_POIS; + } + add_outfit(player_ptr, q_ptr); } diff --git a/src/birth/quick-start.cpp b/src/birth/quick-start.cpp index 3bb5c2394..6013d7aa7 100644 --- a/src/birth/quick-start.cpp +++ b/src/birth/quick-start.cpp @@ -56,8 +56,9 @@ bool ask_quick_start(player_type *player_ptr) sp_ptr = &sex_info[player_ptr->psex]; rp_ptr = &race_info[enum2i(player_ptr->prace)]; - cp_ptr = &class_info[player_ptr->pclass]; - mp_ptr = &m_info[player_ptr->pclass]; + auto short_pclass = enum2i(player_ptr->pclass); + cp_ptr = &class_info[short_pclass]; + mp_ptr = &m_info[short_pclass]; ap_ptr = &personality_info[player_ptr->ppersonality]; get_extra(player_ptr, false); @@ -80,7 +81,7 @@ void save_prev_data(player_type *player_ptr, birther *birther_ptr) birther_ptr->pclass = player_ptr->pclass; birther_ptr->ppersonality = player_ptr->ppersonality; - if (player_ptr->pclass == CLASS_ELEMENTALIST) + if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) birther_ptr->realm1 = player_ptr->element; else birther_ptr->realm1 = player_ptr->realm1; @@ -127,7 +128,7 @@ void load_prev_data(player_type *player_ptr, bool swap) player_ptr->pclass = previous_char.pclass; player_ptr->ppersonality = previous_char.ppersonality; - if (player_ptr->pclass == CLASS_ELEMENTALIST) + if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) player_ptr->element = previous_char.realm1; else player_ptr->realm1 = previous_char.realm1; diff --git a/src/cmd-action/cmd-attack.cpp b/src/cmd-action/cmd-attack.cpp index 9fc7f3221..3dbd3739c 100644 --- a/src/cmd-action/cmd-attack.cpp +++ b/src/cmd-action/cmd-attack.cpp @@ -220,7 +220,7 @@ bool do_cmd_attack(player_type *player_ptr, POSITION y, POSITION x, combat_optio chg_virtue(player_ptr, V_HONOUR, -1); chg_virtue(player_ptr, V_JUSTICE, -1); chg_virtue(player_ptr, V_COMPASSION, -1); - } else if (player_ptr->pclass != CLASS_BERSERKER) { + } else if (player_ptr->pclass != PlayerClassType::BERSERKER) { if (get_check(_("本当に攻撃しますか?", "Really hit it? "))) { chg_virtue(player_ptr, V_INDIVIDUALISM, 1); chg_virtue(player_ptr, V_HONOUR, -1); @@ -251,7 +251,7 @@ bool do_cmd_attack(player_type *player_ptr, POSITION y, POSITION x, combat_optio } if (can_attack_with_main_hand(player_ptr) && can_attack_with_sub_hand(player_ptr)) { - if ((player_ptr->skill_exp[SKILL_TWO_WEAPON] < s_info[player_ptr->pclass].s_max[SKILL_TWO_WEAPON]) + if ((player_ptr->skill_exp[SKILL_TWO_WEAPON] < s_info[enum2i(player_ptr->pclass)].s_max[SKILL_TWO_WEAPON]) && ((player_ptr->skill_exp[SKILL_TWO_WEAPON] - 1000) / 200 < r_ptr->level)) { if (player_ptr->skill_exp[SKILL_TWO_WEAPON] < WEAPON_EXP_BEGINNER) player_ptr->skill_exp[SKILL_TWO_WEAPON] += 80; @@ -268,7 +268,7 @@ bool do_cmd_attack(player_type *player_ptr, POSITION y, POSITION x, combat_optio if (player_ptr->riding) { int cur = player_ptr->skill_exp[SKILL_RIDING]; - int max = s_info[player_ptr->pclass].s_max[SKILL_RIDING]; + int max = s_info[enum2i(player_ptr->pclass)].s_max[SKILL_RIDING]; if (cur < max) { DEPTH ridinglevel = r_info[player_ptr->current_floor_ptr->m_list[player_ptr->riding].r_idx].level; diff --git a/src/cmd-action/cmd-mind.cpp b/src/cmd-action/cmd-mind.cpp index c66cb9400..7b9c7c3f3 100644 --- a/src/cmd-action/cmd-mind.cpp +++ b/src/cmd-action/cmd-mind.cpp @@ -91,23 +91,23 @@ static cm_type *initialize_cm_type(player_type *player_ptr, cm_type *cm_ptr) static void switch_mind_kind(player_type *player_ptr, cm_type *cm_ptr) { switch (player_ptr->pclass) { - case CLASS_MINDCRAFTER: + case PlayerClassType::MINDCRAFTER: cm_ptr->use_mind = mind_kind_type::MINDCRAFTER; cm_ptr->mind_explanation = _("精神", "skill"); break; - case CLASS_FORCETRAINER: + case PlayerClassType::FORCETRAINER: cm_ptr->use_mind = mind_kind_type::KI; cm_ptr->mind_explanation = _("気", "skill"); break; - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: cm_ptr->use_mind = mind_kind_type::BERSERKER; cm_ptr->mind_explanation = _("怒り", "skill"); break; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: cm_ptr->use_mind = mind_kind_type::MIRROR_MASTER; cm_ptr->mind_explanation = _("鏡魔法", "skill"); break; - case CLASS_NINJA: + case PlayerClassType::NINJA: cm_ptr->use_mind = mind_kind_type::NINJUTSU; cm_ptr->mind_explanation = _("精神", "skill"); break; @@ -302,7 +302,7 @@ static bool switch_mind_class(player_type *player_ptr, cm_type *cm_ptr) static void mind_turn_passing(player_type *player_ptr, cm_type *cm_ptr) { PlayerEnergy energy(player_ptr); - if (cm_ptr->on_mirror && (player_ptr->pclass == CLASS_MIRROR_MASTER)) { + if (cm_ptr->on_mirror && (player_ptr->pclass == PlayerClassType::MIRROR_MASTER)) { if (cm_ptr->n == 3 || cm_ptr->n == 5 || cm_ptr->n == 7 || cm_ptr->n == 16) { energy.set_player_turn_energy(50); return; @@ -403,18 +403,18 @@ void do_cmd_mind(player_type *player_ptr) static mind_kind_type decide_use_mind_browse(player_type *player_ptr) { switch (player_ptr->pclass) { - case CLASS_MINDCRAFTER: + case PlayerClassType::MINDCRAFTER: return mind_kind_type::MINDCRAFTER; - case CLASS_FORCETRAINER: + case PlayerClassType::FORCETRAINER: return mind_kind_type::KI; - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: return mind_kind_type::BERSERKER; - case CLASS_NINJA: + case PlayerClassType::NINJA: return mind_kind_type::NINJUTSU; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: return mind_kind_type::MIRROR_MASTER; default: - return (mind_kind_type)0; // 実質CLASS_MINDCRAFTERと同じ. + return (mind_kind_type)0; // 実質PlayerClassType::MINDCRAFTERと同じ. } } diff --git a/src/cmd-action/cmd-move.cpp b/src/cmd-action/cmd-move.cpp index 395300d6d..00b2668a3 100644 --- a/src/cmd-action/cmd-move.cpp +++ b/src/cmd-action/cmd-move.cpp @@ -406,7 +406,7 @@ void do_cmd_stay(player_type *player_ptr, bool pickup) void do_cmd_rest(player_type *player_ptr) { set_action(player_ptr, ACTION_NONE); - if ((player_ptr->pclass == CLASS_BARD) && ((get_singing_song_effect(player_ptr) != 0) || (get_interrupting_song_effect(player_ptr) != 0))) + if ((player_ptr->pclass == PlayerClassType::BARD) && ((get_singing_song_effect(player_ptr) != 0) || (get_interrupting_song_effect(player_ptr) != 0))) stop_singing(player_ptr); SpellHex spell_hex(player_ptr); diff --git a/src/cmd-action/cmd-pet.cpp b/src/cmd-action/cmd-pet.cpp index fa470c0ed..879036e05 100644 --- a/src/cmd-action/cmd-pet.cpp +++ b/src/cmd-action/cmd-pet.cpp @@ -500,9 +500,9 @@ void do_cmd_pet(player_type *player_ptr) powers[num++] = PET_TWO_HANDS; } else { switch (player_ptr->pclass) { - case CLASS_MONK: - case CLASS_FORCETRAINER: - case CLASS_BERSERKER: + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: + case PlayerClassType::BERSERKER: if (empty_hands(player_ptr, false) == (EMPTY_HAND_MAIN | EMPTY_HAND_SUB)) { if (player_ptr->pet_extra_flags & PF_TWO_HANDS) { power_desc[num] = _("片手で格闘する", "use one hand to control the pet you are riding"); diff --git a/src/cmd-action/cmd-shoot.cpp b/src/cmd-action/cmd-shoot.cpp index affb037eb..d1d10d694 100644 --- a/src/cmd-action/cmd-shoot.cpp +++ b/src/cmd-action/cmd-shoot.cpp @@ -62,7 +62,7 @@ void do_cmd_fire(player_type *player_ptr, SPELL_IDX snipe_type) } exe_fire(player_ptr, item, j_ptr, snipe_type); - if (!player_ptr->is_fired || player_ptr->pclass != CLASS_SNIPER) + if (!player_ptr->is_fired || player_ptr->pclass != PlayerClassType::SNIPER) return; if (snipe_type == SP_AWAY) { diff --git a/src/cmd-action/cmd-spell.cpp b/src/cmd-action/cmd-spell.cpp index 032e0d284..c3ae70e3e 100644 --- a/src/cmd-action/cmd-spell.cpp +++ b/src/cmd-action/cmd-spell.cpp @@ -269,9 +269,9 @@ static bool spell_okay(player_type *player_ptr, int spell, bool learned, bool st return false; } - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::SORCERER) return true; - if (player_ptr->pclass == CLASS_RED_MAGE) + if (player_ptr->pclass == PlayerClassType::RED_MAGE) return true; /* Spell is learned */ @@ -357,12 +357,12 @@ static int get_spell(player_type *player_ptr, SPELL_IDX *sn, concptr prompt, OBJ /* No "okay" spells */ if (!okay) return false; - if (((use_realm) != player_ptr->realm1) && ((use_realm) != player_ptr->realm2) && (player_ptr->pclass != CLASS_SORCERER) - && (player_ptr->pclass != CLASS_RED_MAGE)) + if (((use_realm) != player_ptr->realm1) && ((use_realm) != player_ptr->realm2) && (player_ptr->pclass != PlayerClassType::SORCERER) + && (player_ptr->pclass != PlayerClassType::RED_MAGE)) return false; - if (((player_ptr->pclass == CLASS_SORCERER) || (player_ptr->pclass == CLASS_RED_MAGE)) && !is_magic(use_realm)) + if (((player_ptr->pclass == PlayerClassType::SORCERER) || (player_ptr->pclass == PlayerClassType::RED_MAGE)) && !is_magic(use_realm)) return false; - if ((player_ptr->pclass == CLASS_RED_MAGE) && ((use_realm) != REALM_ARCANE) && (sval > 1)) + if ((player_ptr->pclass == PlayerClassType::RED_MAGE) && ((use_realm) != REALM_ARCANE) && (sval > 1)) return false; /* Assume cancelled */ @@ -621,14 +621,14 @@ void do_cmd_browse(player_type *player_ptr) concptr q, s; /* Warriors are illiterate */ - if (!(player_ptr->realm1 || player_ptr->realm2) && (player_ptr->pclass != CLASS_SORCERER) && (player_ptr->pclass != CLASS_RED_MAGE)) { + if (!(player_ptr->realm1 || player_ptr->realm2) && (player_ptr->pclass != PlayerClassType::SORCERER) && (player_ptr->pclass != PlayerClassType::RED_MAGE)) { msg_print(_("本を読むことができない!", "You cannot read books!")); return; } PlayerClass(player_ptr).break_samurai_stance({ SamuraiStance::MUSOU }); - if (player_ptr->pclass == CLASS_FORCETRAINER) { + if (player_ptr->pclass == PlayerClassType::FORCETRAINER) { if (player_has_no_spellbooks(player_ptr)) { confirm_use_force(player_ptr, true); return; @@ -641,7 +641,7 @@ void do_cmd_browse(player_type *player_ptr) q = _("どの本を読みますか? ", "Browse which book? "); s = _("読める本がない。", "You have no books that you can read."); - o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR | (player_ptr->pclass == CLASS_FORCETRAINER ? USE_FORCE : 0)), item_tester); + o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR | (player_ptr->pclass == PlayerClassType::FORCETRAINER ? USE_FORCE : 0)), item_tester); if (!o_ptr) { if (item == INVEN_FORCE) /* the_force */ @@ -994,13 +994,13 @@ bool do_cmd_cast(player_type *player_ptr) bool over_exerted = false; /* Require spell ability */ - if (!player_ptr->realm1 && (player_ptr->pclass != CLASS_SORCERER) && (player_ptr->pclass != CLASS_RED_MAGE)) { + if (!player_ptr->realm1 && (player_ptr->pclass != PlayerClassType::SORCERER) && (player_ptr->pclass != PlayerClassType::RED_MAGE)) { msg_print(_("呪文を唱えられない!", "You cannot cast spells!")); return false; } if (player_ptr->blind || no_lite(player_ptr)) { - if (player_ptr->pclass == CLASS_FORCETRAINER) + if (player_ptr->pclass == PlayerClassType::FORCETRAINER) confirm_use_force(player_ptr, false); else { msg_print(_("目が見えない!", "You cannot see!")); @@ -1027,7 +1027,7 @@ bool do_cmd_cast(player_type *player_ptr) } } - if (player_ptr->pclass == CLASS_FORCETRAINER) { + if (player_ptr->pclass == PlayerClassType::FORCETRAINER) { if (player_has_no_spellbooks(player_ptr)) { confirm_use_force(player_ptr, false); return true; //!< 錬気キャンセル時の処理がない @@ -1041,7 +1041,7 @@ bool do_cmd_cast(player_type *player_ptr) auto item_tester = get_castable_spellbook_tester(player_ptr); - o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR | (player_ptr->pclass == CLASS_FORCETRAINER ? USE_FORCE : 0)), item_tester); + o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR | (player_ptr->pclass == PlayerClassType::FORCETRAINER ? USE_FORCE : 0)), item_tester); if (!o_ptr) { if (item == INVEN_FORCE) /* the_force */ { @@ -1054,14 +1054,14 @@ bool do_cmd_cast(player_type *player_ptr) /* Access the item's sval */ sval = o_ptr->sval; - if ((player_ptr->pclass != CLASS_SORCERER) && (player_ptr->pclass != CLASS_RED_MAGE) && (o_ptr->tval == get_realm2_book(player_ptr))) + if ((player_ptr->pclass != PlayerClassType::SORCERER) && (player_ptr->pclass != PlayerClassType::RED_MAGE) && (o_ptr->tval == get_realm2_book(player_ptr))) increment = 32; /* Track the object kind */ object_kind_track(player_ptr, o_ptr->k_idx); handle_stuff(player_ptr); - if ((player_ptr->pclass == CLASS_SORCERER) || (player_ptr->pclass == CLASS_RED_MAGE)) + if ((player_ptr->pclass == PlayerClassType::SORCERER) || (player_ptr->pclass == PlayerClassType::RED_MAGE)) realm = tval2realm(o_ptr->tval); else if (increment) realm = player_ptr->realm2; @@ -1203,8 +1203,8 @@ bool do_cmd_cast(player_type *player_ptr) chg_virtue(player_ptr, V_CHANCE, 1); /* A spell was cast */ - if (!(increment ? (player_ptr->spell_worked2 & (1UL << spell)) : (player_ptr->spell_worked1 & (1UL << spell))) && (player_ptr->pclass != CLASS_SORCERER) - && (player_ptr->pclass != CLASS_RED_MAGE)) { + if (!(increment ? (player_ptr->spell_worked2 & (1UL << spell)) : (player_ptr->spell_worked1 & (1UL << spell))) && (player_ptr->pclass != PlayerClassType::SORCERER) + && (player_ptr->pclass != PlayerClassType::RED_MAGE)) { int e = s_ptr->sexp; /* The spell worked */ diff --git a/src/cmd-io/cmd-diary.cpp b/src/cmd-io/cmd-diary.cpp index 2454fd9cd..0ca234592 100644 --- a/src/cmd-io/cmd-diary.cpp +++ b/src/cmd-io/cmd-diary.cpp @@ -30,8 +30,8 @@ static void display_diary(player_type *player_ptr) sprintf(file_name, _("playrecord-%s.txt", "playrec-%s.txt"), savefile_base); path_build(buf, sizeof(buf), ANGBAND_DIR_USER, file_name); - if (player_ptr->pclass == CLASS_WARRIOR || player_ptr->pclass == CLASS_MONK || player_ptr->pclass == CLASS_SAMURAI - || player_ptr->pclass == CLASS_BERSERKER) + if (player_ptr->pclass == PlayerClassType::WARRIOR || player_ptr->pclass == PlayerClassType::MONK || player_ptr->pclass == PlayerClassType::SAMURAI + || player_ptr->pclass == PlayerClassType::BERSERKER) strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 1)]); else if (PlayerClass(player_ptr).is_wizard()) strcpy(tmp, subtitle[randint0(MAX_SUBTITLE - 1) + 1]); diff --git a/src/cmd-io/cmd-menu-content-table.cpp b/src/cmd-io/cmd-menu-content-table.cpp index 5f1d151c8..cfc3da86f 100644 --- a/src/cmd-io/cmd-menu-content-table.cpp +++ b/src/cmd-io/cmd-menu-content-table.cpp @@ -1,20 +1,26 @@ #include "cmd-io/cmd-menu-content-table.h" #include "player-info/class-types.h" +#include "util/enum-converter.h" #include "util/int-char-converter.h" +/* + * @todo 遅くともv2.2.1の頃には職業enumとboolとintが混じっているゴミ配列であった + * jouken_naiyou (フィールド名もゴミ)が複数目的に利用されているようである + * 後で何とかする + */ special_menu_content special_menu_info[MAX_SPECIAL_MENU_NUM] = { - { _("超能力/特殊能力", "MindCraft/Special"), 0, 0, MENU_CLASS, CLASS_MINDCRAFTER }, - { _("ものまね/特殊能力", "Imitation/Special"), 0, 0, MENU_CLASS, CLASS_IMITATOR }, - { _("歌/特殊能力", "Song/Special"), 0, 0, MENU_CLASS, CLASS_BARD }, - { _("必殺技/特殊能力", "Technique/Special"), 0, 0, MENU_CLASS, CLASS_SAMURAI }, - { _("練気術/魔法/特殊能力", "Mind/Magic/Special"), 0, 0, MENU_CLASS, CLASS_FORCETRAINER }, - { _("技/特殊能力", "BrutalPower/Special"), 0, 0, MENU_CLASS, CLASS_BERSERKER }, - { _("技術/特殊能力", "Technique/Special"), 0, 0, MENU_CLASS, CLASS_SMITH }, - { _("鏡魔法/特殊能力", "MirrorMagic/Special"), 0, 0, MENU_CLASS, CLASS_MIRROR_MASTER }, - { _("忍術/特殊能力", "Ninjutsu/Special"), 0, 0, MENU_CLASS, CLASS_NINJA }, - { _("広域マップ(<)", "Enter global map(<)"), 2, 6, MENU_WILD, false }, - { _("通常マップ(>)", "Enter local map(>)"), 2, 7, MENU_WILD, true }, - { "", 0, 0, 0, 0 }, + { _("超能力/特殊能力", "MindCraft/Special"), 0, 0, MENU_CLASS, PlayerClassType::MINDCRAFTER }, + { _("ものまね/特殊能力", "Imitation/Special"), 0, 0, MENU_CLASS, PlayerClassType::IMITATOR }, + { _("歌/特殊能力", "Song/Special"), 0, 0, MENU_CLASS, PlayerClassType::BARD }, + { _("必殺技/特殊能力", "Technique/Special"), 0, 0, MENU_CLASS, PlayerClassType::SAMURAI }, + { _("練気術/魔法/特殊能力", "Mind/Magic/Special"), 0, 0, MENU_CLASS, PlayerClassType::FORCETRAINER }, + { _("技/特殊能力", "BrutalPower/Special"), 0, 0, MENU_CLASS, PlayerClassType::BERSERKER }, + { _("技術/特殊能力", "Technique/Special"), 0, 0, MENU_CLASS, PlayerClassType::SMITH }, + { _("鏡魔法/特殊能力", "MirrorMagic/Special"), 0, 0, MENU_CLASS, PlayerClassType::MIRROR_MASTER }, + { _("忍術/特殊能力", "Ninjutsu/Special"), 0, 0, MENU_CLASS, PlayerClassType::NINJA }, + { _("広域マップ(<)", "Enter global map(<)"), 2, 6, MENU_WILD, i2enum(0) }, + { _("通常マップ(>)", "Enter local map(>)"), 2, 7, MENU_WILD, i2enum(1) }, + { "", 0, 0, 0, i2enum(0) }, }; menu_content menu_info[MAX_COMMAND_MENU_NUM][MAX_COMMAND_PER_SCREEN] = { diff --git a/src/cmd-io/cmd-menu-content-table.h b/src/cmd-io/cmd-menu-content-table.h index e0811ae5d..a1f0075a4 100644 --- a/src/cmd-io/cmd-menu-content-table.h +++ b/src/cmd-io/cmd-menu-content-table.h @@ -2,19 +2,20 @@ #include "system/angband.h" -typedef struct menu_content { +struct menu_content { concptr name; byte cmd; bool fin; -} menu_content; +}; -typedef struct special_menu_content { +enum class PlayerClassType : short; +struct special_menu_content { concptr name; byte window; byte number; byte jouken; - byte jouken_naiyou; -} special_menu_content; + PlayerClassType jouken_naiyou; +}; #define MAX_COMMAND_PER_SCREEN 10 #define MAX_COMMAND_MENU_NUM 10 diff --git a/src/cmd-item/cmd-destroy.cpp b/src/cmd-item/cmd-destroy.cpp index 8acef33b9..ac6b223e7 100644 --- a/src/cmd-item/cmd-destroy.cpp +++ b/src/cmd-item/cmd-destroy.cpp @@ -114,10 +114,10 @@ static bool decide_magic_book_exp(player_type *player_ptr, destroy_type *destroy if (player_ptr->prace == PlayerRaceType::ANDROID) return false; - if ((player_ptr->pclass == CLASS_WARRIOR) || (player_ptr->pclass == CLASS_BERSERKER)) + if ((player_ptr->pclass == PlayerClassType::WARRIOR) || (player_ptr->pclass == PlayerClassType::BERSERKER)) return true; - if (player_ptr->pclass != CLASS_PALADIN) + if (player_ptr->pclass != PlayerClassType::PALADIN) return false; bool gain_expr = false; diff --git a/src/cmd-item/cmd-equipment.cpp b/src/cmd-item/cmd-equipment.cpp index adb120704..bd9f9ffd1 100644 --- a/src/cmd-item/cmd-equipment.cpp +++ b/src/cmd-item/cmd-equipment.cpp @@ -314,7 +314,7 @@ void do_cmd_takeoff(player_type *player_ptr) PlayerEnergy energy(player_ptr); if (o_ptr->is_cursed()) { - if (o_ptr->curse_flags.has(TRC::PERMA_CURSE) || (player_ptr->pclass != CLASS_BERSERKER)) { + if (o_ptr->curse_flags.has(TRC::PERMA_CURSE) || (player_ptr->pclass != PlayerClassType::BERSERKER)) { msg_print(_("ふーむ、どうやら呪われているようだ。", "Hmmm, it seems to be cursed.")); return; } diff --git a/src/cmd-item/cmd-throw.cpp b/src/cmd-item/cmd-throw.cpp index 13a1b01fc..90707d542 100644 --- a/src/cmd-item/cmd-throw.cpp +++ b/src/cmd-item/cmd-throw.cpp @@ -74,7 +74,7 @@ bool ThrowCommand::do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken) torch_lost_fuel(ote.q_ptr); } - ote.corruption_possibility = ote.hit_body ? breakage_chance(this->player_ptr, ote.q_ptr, this->player_ptr->pclass == CLASS_ARCHER, 0) : 0; + ote.corruption_possibility = ote.hit_body ? breakage_chance(this->player_ptr, ote.q_ptr, this->player_ptr->pclass == PlayerClassType::ARCHER, 0) : 0; ote.display_figurine_throw(); ote.display_potion_throw(); ote.check_boomerang_throw(); diff --git a/src/combat/attack-accuracy.cpp b/src/combat/attack-accuracy.cpp index 96ccf1957..a3da1a5b7 100644 --- a/src/combat/attack-accuracy.cpp +++ b/src/combat/attack-accuracy.cpp @@ -124,7 +124,7 @@ static bool decide_attack_hit(player_type *player_ptr, player_attack_type *pa_pt n *= 2; success_hit = one_in_(n); - } else if ((player_ptr->pclass == CLASS_NINJA) && ((pa_ptr->backstab || pa_ptr->surprise_attack) && !(r_ptr->flagsr & RFR_RES_ALL))) + } else if ((player_ptr->pclass == PlayerClassType::NINJA) && ((pa_ptr->backstab || pa_ptr->surprise_attack) && !(r_ptr->flagsr & RFR_RES_ALL))) success_hit = true; else success_hit = test_hit_norm(player_ptr, chance, r_ptr->ac, pa_ptr->m_ptr->ml); diff --git a/src/combat/attack-criticality.cpp b/src/combat/attack-criticality.cpp index 9c8d31310..80b46dd6a 100644 --- a/src/combat/attack-criticality.cpp +++ b/src/combat/attack-criticality.cpp @@ -54,7 +54,7 @@ HIT_POINT critical_norm(player_type *player_ptr, WEIGHT weight, int plus, HIT_PO int i = (weight + (meichuu * 3 + plus * 5) + player_ptr->skill_thn); /* Chance */ - auto pow = (player_ptr->pclass == CLASS_NINJA) ? 4444 : 5000; + auto pow = (player_ptr->pclass == PlayerClassType::NINJA) ? 4444 : 5000; if (impact) pow /= 2; @@ -129,7 +129,7 @@ void critical_attack(player_type *player_ptr, player_attack_type *pa_ptr) return; } - bool is_ninja_hit = (player_ptr->pclass == CLASS_NINJA) && has_melee_weapon(player_ptr, INVEN_MAIN_HAND + pa_ptr->hand) + bool is_ninja_hit = (player_ptr->pclass == PlayerClassType::NINJA) && has_melee_weapon(player_ptr, INVEN_MAIN_HAND + pa_ptr->hand) && !player_ptr->is_icky_wield[pa_ptr->hand] && ((player_ptr->cur_lite <= 0) || one_in_(7)); if (is_ninja_hit) ninja_critical(player_ptr, pa_ptr); diff --git a/src/combat/shoot.cpp b/src/combat/shoot.cpp index d093c4aac..79a232217 100644 --- a/src/combat/shoot.cpp +++ b/src/combat/shoot.cpp @@ -638,7 +638,7 @@ void exe_fire(player_type *player_ptr, INVENTORY_IDX item, object_type *j_ptr, S if ((r_ptr->level + 10) > player_ptr->lev) { int now_exp = player_ptr->weapon_exp[0][j_ptr->sval]; - if (now_exp < s_info[player_ptr->pclass].w_max[0][j_ptr->sval]) { + if (now_exp < s_info[enum2i(player_ptr->pclass)].w_max[0][j_ptr->sval]) { SUB_EXP amount = 0; if (now_exp < WEAPON_EXP_BEGINNER) amount = 80; @@ -654,7 +654,7 @@ void exe_fire(player_type *player_ptr, INVENTORY_IDX item, object_type *j_ptr, S } if (player_ptr->riding) { - if ((player_ptr->skill_exp[SKILL_RIDING] < s_info[player_ptr->pclass].s_max[SKILL_RIDING]) + if ((player_ptr->skill_exp[SKILL_RIDING] < s_info[enum2i(player_ptr->pclass)].s_max[SKILL_RIDING]) && ((player_ptr->skill_exp[SKILL_RIDING] - (RIDING_EXP_BEGINNER * 2)) / 200 < r_info[player_ptr->current_floor_ptr->m_list[player_ptr->riding].r_idx].level) && one_in_(2)) { @@ -838,7 +838,7 @@ void exe_fire(player_type *player_ptr, INVENTORY_IDX item, object_type *j_ptr, S } /* Chance of breakage (during attacks) */ - j = (hit_body ? breakage_chance(player_ptr, q_ptr, player_ptr->pclass == CLASS_ARCHER, snipe_type) : 0); + j = (hit_body ? breakage_chance(player_ptr, q_ptr, player_ptr->pclass == PlayerClassType::ARCHER, snipe_type) : 0); if (stick_to) { MONSTER_IDX m_idx = player_ptr->current_floor_ptr->grid_array[y][x].m_idx; @@ -972,7 +972,7 @@ HIT_POINT critical_shot(player_type *player_ptr, WEIGHT weight, int plus_ammo, i /* Snipers can shot more critically with crossbows */ i += ((i * sniper_concent) / 5); - if ((player_ptr->pclass == CLASS_SNIPER) && (player_ptr->tval_ammo == ItemKindType::BOLT)) + if ((player_ptr->pclass == PlayerClassType::SNIPER) && (player_ptr->tval_ammo == ItemKindType::BOLT)) i *= 2; /* Good bow makes more critical */ @@ -1123,7 +1123,7 @@ HIT_POINT calc_crit_ratio_shot(player_type *player_ptr, HIT_POINT plus_ammo, HIT /* Snipers can shot more critically with crossbows */ i += ((i * sniper_concent) / 5); - if ((player_ptr->pclass == CLASS_SNIPER) && (player_ptr->tval_ammo == ItemKindType::BOLT)) + if ((player_ptr->pclass == PlayerClassType::SNIPER) && (player_ptr->tval_ammo == ItemKindType::BOLT)) i *= 2; /* Good bow makes more critical */ @@ -1216,7 +1216,7 @@ HIT_POINT calc_expect_crit(player_type *player_ptr, WEIGHT weight, int plus, HIT num += calc_weight_expect_dam(dam, weight); } - int pow = (player_ptr->pclass == CLASS_NINJA) ? 4444 : 5000; + int pow = (player_ptr->pclass == PlayerClassType::NINJA) ? 4444 : 5000; if (impact) pow /= 2; diff --git a/src/combat/slaying.cpp b/src/combat/slaying.cpp index 7b26d044b..a713da2aa 100644 --- a/src/combat/slaying.cpp +++ b/src/combat/slaying.cpp @@ -183,11 +183,11 @@ HIT_POINT calc_attack_damage_with_slay(player_type *player_ptr, object_type *o_p mult = mult_brand(player_ptr, mult, flgs, m_ptr); - if (player_ptr->pclass == CLASS_SAMURAI) { + if (player_ptr->pclass == PlayerClassType::SAMURAI) { mult = mult_hissatsu(player_ptr, mult, flgs, m_ptr, mode); } - if ((player_ptr->pclass != CLASS_SAMURAI) && (flgs.has(TR_FORCE_WEAPON)) && (player_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) { + if ((player_ptr->pclass != PlayerClassType::SAMURAI) && (flgs.has(TR_FORCE_WEAPON)) && (player_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) { player_ptr->csp -= (1 + (o_ptr->dd * o_ptr->ds / 5)); player_ptr->redraw |= (PR_MANA); mult = mult * 3 / 2 + 20; diff --git a/src/core/game-play.cpp b/src/core/game-play.cpp index 97d0e463d..0e910da8f 100644 --- a/src/core/game-play.cpp +++ b/src/core/game-play.cpp @@ -257,13 +257,13 @@ static void generate_world(player_type *player_ptr, bool new_game) panel_row_min = floor_ptr->height; panel_col_min = floor_ptr->width; - if (player_ptr->pclass != CLASS_SORCERER) { + if (player_ptr->pclass != PlayerClassType::SORCERER) { auto begin = enum2i(TV_WEAPON_BEGIN); if (player_ptr->ppersonality == PERSONALITY_SEXY) - s_info[player_ptr->pclass].w_max[enum2i(ItemKindType::HAFTED) - begin][SV_WHIP] = WEAPON_EXP_MASTER; + s_info[enum2i(player_ptr->pclass)].w_max[enum2i(ItemKindType::HAFTED) - begin][SV_WHIP] = WEAPON_EXP_MASTER; if (player_ptr->prace == PlayerRaceType::MERFOLK) { - s_info[player_ptr->pclass].w_max[enum2i(ItemKindType::POLEARM) - begin][SV_TRIDENT] = WEAPON_EXP_MASTER; - s_info[player_ptr->pclass].w_max[enum2i(ItemKindType::POLEARM) - begin][SV_TRIFURCATE_SPEAR] = WEAPON_EXP_MASTER; + s_info[enum2i(player_ptr->pclass)].w_max[enum2i(ItemKindType::POLEARM) - begin][SV_TRIDENT] = WEAPON_EXP_MASTER; + s_info[enum2i(player_ptr->pclass)].w_max[enum2i(ItemKindType::POLEARM) - begin][SV_TRIFURCATE_SPEAR] = WEAPON_EXP_MASTER; } } @@ -297,10 +297,10 @@ static void init_io(player_type *player_ptr) static void init_riding_pet(player_type *player_ptr, bool new_game) { - if (!new_game || ((player_ptr->pclass != CLASS_CAVALRY) && (player_ptr->pclass != CLASS_BEASTMASTER))) + if (!new_game || ((player_ptr->pclass != PlayerClassType::CAVALRY) && (player_ptr->pclass != PlayerClassType::BEASTMASTER))) return; - MONRACE_IDX pet_r_idx = ((player_ptr->pclass == CLASS_CAVALRY) ? MON_HORSE : MON_YASE_HORSE); + MONRACE_IDX pet_r_idx = ((player_ptr->pclass == PlayerClassType::CAVALRY) ? MON_HORSE : MON_YASE_HORSE); monster_race *r_ptr = &r_info[pet_r_idx]; place_monster_aux(player_ptr, 0, player_ptr->y, player_ptr->x - 1, pet_r_idx, (PM_FORCE_PET | PM_NO_KAGE)); monster_type *m_ptr = &player_ptr->current_floor_ptr->m_list[hack_m_idx_ii]; diff --git a/src/core/player-processor.cpp b/src/core/player-processor.cpp index c6a1d3a13..d89e73b61 100644 --- a/src/core/player-processor.cpp +++ b/src/core/player-processor.cpp @@ -225,7 +225,7 @@ void process_player(player_type *player_ptr) if (player_ptr->lightspeed) set_lightspeed(player_ptr, player_ptr->lightspeed - 1, true); - if ((player_ptr->pclass == CLASS_FORCETRAINER) && get_current_ki(player_ptr)) { + if ((player_ptr->pclass == PlayerClassType::FORCETRAINER) && get_current_ki(player_ptr)) { if (get_current_ki(player_ptr) < 40) set_current_ki(player_ptr, true, 0); else @@ -372,7 +372,7 @@ void process_player(player_type *player_ptr) } } - if (player_ptr->pclass == CLASS_IMITATOR) { + if (player_ptr->pclass == PlayerClassType::IMITATOR) { auto mane_data = PlayerClass(player_ptr).get_specific_data(); if (static_cast(mane_data->mane_list.size()) > (player_ptr->lev > 44 ? 3 : player_ptr->lev > 29 ? 2 : 1)) { mane_data->mane_list.pop_front(); diff --git a/src/core/scores.cpp b/src/core/scores.cpp index e72213c1b..5db22ae80 100644 --- a/src/core/scores.cpp +++ b/src/core/scores.cpp @@ -211,7 +211,7 @@ errr top_twenty(player_type *current_player_ptr) sprintf(the_score.sex, "%c", (current_player_ptr->psex ? 'm' : 'f')); snprintf(buf, sizeof(buf), "%2d", MIN(enum2i(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)); + snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->pclass, PlayerClassType::MAX)); memcpy(the_score.p_c, buf, 3); snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->ppersonality, MAX_PERSONALITIES)); memcpy(the_score.p_a, buf, 3); @@ -314,7 +314,7 @@ errr predict_score(player_type *current_player_ptr) sprintf(the_score.sex, "%c", (current_player_ptr->psex ? 'm' : 'f')); snprintf(buf, sizeof(buf), "%2d", MIN(enum2i(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)); + snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->pclass, PlayerClassType::MAX)); memcpy(the_score.p_c, buf, 3); snprintf(buf, sizeof(buf), "%2d", MIN(current_player_ptr->ppersonality, MAX_PERSONALITIES)); memcpy(the_score.p_a, buf, 3); diff --git a/src/core/window-redrawer.cpp b/src/core/window-redrawer.cpp index f1a2efcf1..a2f4b22af 100644 --- a/src/core/window-redrawer.cpp +++ b/src/core/window-redrawer.cpp @@ -202,7 +202,7 @@ void redraw_stuff(player_type *player_ptr) print_speed(player_ptr); } - if (player_ptr->pclass == CLASS_IMITATOR) { + if (player_ptr->pclass == PlayerClassType::IMITATOR) { if (player_ptr->redraw & (PR_IMITATION)) { player_ptr->redraw &= ~(PR_IMITATION); print_imitation(player_ptr); diff --git a/src/dungeon/dungeon-processor.cpp b/src/dungeon/dungeon-processor.cpp index 4f3549b2b..f645ecb56 100644 --- a/src/dungeon/dungeon-processor.cpp +++ b/src/dungeon/dungeon-processor.cpp @@ -121,7 +121,7 @@ void process_dungeon(player_type *player_ptr, bool load_game) } } - if ((player_ptr->pclass == CLASS_BARD) && (get_singing_song_effect(player_ptr) > MUSIC_DETECT)) + if ((player_ptr->pclass == PlayerClassType::BARD) && (get_singing_song_effect(player_ptr) > MUSIC_DETECT)) set_singing_song_effect(player_ptr, MUSIC_DETECT); if (!player_ptr->playing || player_ptr->is_dead) diff --git a/src/effect/effect-monster-charm.cpp b/src/effect/effect-monster-charm.cpp index af78747a1..d83aa73cf 100644 --- a/src/effect/effect-monster-charm.cpp +++ b/src/effect/effect-monster-charm.cpp @@ -362,7 +362,7 @@ static HIT_POINT calcutate_capturable_hp(player_type *player_ptr, monster_type * if (is_pet(m_ptr)) return hp * 4L; - if ((player_ptr->pclass == CLASS_BEASTMASTER) && monster_living(m_ptr->r_idx)) + if ((player_ptr->pclass == PlayerClassType::BEASTMASTER) && monster_living(m_ptr->r_idx)) return hp * 3 / 10; return hp * 3 / 20; diff --git a/src/effect/effect-monster-psi.cpp b/src/effect/effect-monster-psi.cpp index 5a0ad9b96..91e3367a9 100644 --- a/src/effect/effect-monster-psi.cpp +++ b/src/effect/effect-monster-psi.cpp @@ -260,7 +260,7 @@ static void effect_monster_psi_drain_resist(player_type *player_ptr, effect_mons static void effect_monster_psi_drain_change_power(player_type *player_ptr, effect_monster_type *em_ptr) { int b = damroll(5, em_ptr->dam) / 4; - concptr str = (player_ptr->pclass == CLASS_MINDCRAFTER) ? _("超能力パワー", "psychic energy") : _("魔力", "mana"); + concptr str = (player_ptr->pclass == PlayerClassType::MINDCRAFTER) ? _("超能力パワー", "psychic energy") : _("魔力", "mana"); concptr msg = _("あなたは%sの苦痛を%sに変換した!", (em_ptr->seen ? "You convert %s's pain into %s!" : "You convert %ss pain into %s!")); msg_format(msg, em_ptr->m_name, str); diff --git a/src/flavor/flavor-describer.cpp b/src/flavor/flavor-describer.cpp index 24d40f577..ebe4fdfc3 100644 --- a/src/flavor/flavor-describer.cpp +++ b/src/flavor/flavor-describer.cpp @@ -517,7 +517,7 @@ void describe_flavor(player_type *player_ptr, char *buf, object_type *o_ptr, BIT flavor_ptr->bow_ptr = &player_ptr->inventory_list[INVEN_BOW]; if ((flavor_ptr->bow_ptr->k_idx != 0) && (flavor_ptr->o_ptr->tval == bow_tval_ammo(flavor_ptr->bow_ptr))) describe_bow_power(player_ptr, flavor_ptr); - else if ((player_ptr->pclass == CLASS_NINJA) && (flavor_ptr->o_ptr->tval == ItemKindType::SPIKE)) + else if ((player_ptr->pclass == PlayerClassType::NINJA) && (flavor_ptr->o_ptr->tval == ItemKindType::SPIKE)) describe_spike_power(player_ptr, flavor_ptr); } diff --git a/src/floor/floor-changer.cpp b/src/floor/floor-changer.cpp index dd7ee6846..86707d4bf 100644 --- a/src/floor/floor-changer.cpp +++ b/src/floor/floor-changer.cpp @@ -384,7 +384,7 @@ void change_floor(player_type *player_ptr) player_ptr->floor_id = new_floor_id; w_ptr->character_dungeon = true; if (player_ptr->ppersonality == PERSONALITY_MUNCHKIN) - wiz_lite(player_ptr, (bool)(player_ptr->pclass == CLASS_NINJA)); + wiz_lite(player_ptr, (bool)(player_ptr->pclass == PlayerClassType::NINJA)); player_ptr->current_floor_ptr->generated_turn = w_ptr->game_turn; player_ptr->feeling_turn = player_ptr->current_floor_ptr->generated_turn; diff --git a/src/hpmp/hp-mp-processor.cpp b/src/hpmp/hp-mp-processor.cpp index 58b18d6b2..af4e78525 100644 --- a/src/hpmp/hp-mp-processor.cpp +++ b/src/hpmp/hp-mp-processor.cpp @@ -304,7 +304,7 @@ void process_player_hp_mp(player_type *player_ptr) } regenmana(player_ptr, upkeep_factor, regen_amount); - if (player_ptr->pclass == CLASS_MAGIC_EATER) { + if (player_ptr->pclass == PlayerClassType::MAGIC_EATER) { regenmagic(player_ptr, regen_amount); } diff --git a/src/info-reader/general-parser.cpp b/src/info-reader/general-parser.cpp index a771b454a..ee5a1cb6f 100644 --- a/src/info-reader/general-parser.cpp +++ b/src/info-reader/general-parser.cpp @@ -230,17 +230,16 @@ parse_error_type parse_line_building(char *buf) return (PARSE_ERROR_TOO_FEW_ARGUMENTS); } case 'C': { - int n; - n = tokenize(s + 2, MAX_CLASS, zz, 0); - for (int i = 0; i < MAX_CLASS; i++) { - building[index].member_class.push_back(i2enum((i < n) ? atoi(zz[i]) : 1)); + auto pct_max = enum2i(PlayerClassType::MAX); + auto n = tokenize(s + 2, pct_max, zz, 0); + for (int i = 0; i < pct_max; i++) { + building[index].member_class.push_back((i < n) ? atoi(zz[i]) : 1); } break; } case 'R': { - int n; - n = tokenize(s + 2, MAX_RACES, zz, 0); + auto n = tokenize(s + 2, MAX_RACES, zz, 0); for (int i = 0; i < MAX_RACES; i++) { building[index].member_race[i] = (i < n) ? atoi(zz[i]) : 1; } diff --git a/src/io-dump/special-class-dump.cpp b/src/io-dump/special-class-dump.cpp index 5dea21c9d..d91577842 100644 --- a/src/io-dump/special-class-dump.cpp +++ b/src/io-dump/special-class-dump.cpp @@ -231,15 +231,15 @@ static void dump_blue_mage(player_type *player_ptr, FILE *fff) void dump_aux_class_special(player_type *player_ptr, FILE *fff) { switch (player_ptr->pclass) { - case CLASS_MAGIC_EATER: { + case PlayerClassType::MAGIC_EATER: { dump_magic_eater(player_ptr, fff); return; } - case CLASS_SMITH: { + case PlayerClassType::SMITH: { dump_smith(player_ptr, fff); return; } - case CLASS_BLUE_MAGE: { + case PlayerClassType::BLUE_MAGE: { dump_blue_mage(player_ptr, fff); return; } diff --git a/src/io/input-key-processor.cpp b/src/io/input-key-processor.cpp index 2fd207d9a..bfb39dd4b 100644 --- a/src/io/input-key-processor.cpp +++ b/src/io/input-key-processor.cpp @@ -307,11 +307,11 @@ void process_command(player_type *player_ptr) break; } case 'G': { - if (player_ptr->pclass == CLASS_SORCERER || player_ptr->pclass == CLASS_RED_MAGE || player_ptr->pclass == CLASS_ELEMENTALIST) + if (player_ptr->pclass == PlayerClassType::SORCERER || player_ptr->pclass == PlayerClassType::RED_MAGE || player_ptr->pclass == PlayerClassType::ELEMENTALIST) msg_print(_("呪文を学習する必要はない!", "You don't have to learn spells!")); - else if (player_ptr->pclass == CLASS_SAMURAI) + else if (player_ptr->pclass == PlayerClassType::SAMURAI) do_cmd_gain_hissatsu(player_ptr); - else if (player_ptr->pclass == CLASS_MAGIC_EATER) + else if (player_ptr->pclass == PlayerClassType::MAGIC_EATER) import_magic_device(player_ptr); else do_cmd_study(player_ptr); @@ -319,16 +319,16 @@ void process_command(player_type *player_ptr) break; } case 'b': { - if ((player_ptr->pclass == CLASS_MINDCRAFTER) || (player_ptr->pclass == CLASS_BERSERKER) || (player_ptr->pclass == CLASS_NINJA) - || (player_ptr->pclass == CLASS_MIRROR_MASTER)) + if ((player_ptr->pclass == PlayerClassType::MINDCRAFTER) || (player_ptr->pclass == PlayerClassType::BERSERKER) || (player_ptr->pclass == PlayerClassType::NINJA) + || (player_ptr->pclass == PlayerClassType::MIRROR_MASTER)) do_cmd_mind_browse(player_ptr); - else if (player_ptr->pclass == CLASS_ELEMENTALIST) + else if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) do_cmd_element_browse(player_ptr); - else if (player_ptr->pclass == CLASS_SMITH) + else if (player_ptr->pclass == PlayerClassType::SMITH) do_cmd_kaji(player_ptr, true); - else if (player_ptr->pclass == CLASS_MAGIC_EATER) + else if (player_ptr->pclass == PlayerClassType::MAGIC_EATER) do_cmd_magic_eater(player_ptr, true, false); - else if (player_ptr->pclass == CLASS_SNIPER) + else if (player_ptr->pclass == PlayerClassType::SNIPER) do_cmd_snipe_browse(player_ptr); else do_cmd_browse(player_ptr); @@ -340,37 +340,37 @@ void process_command(player_type *player_ptr) break; } - if ((player_ptr->pclass == CLASS_WARRIOR) || (player_ptr->pclass == CLASS_ARCHER) || (player_ptr->pclass == CLASS_CAVALRY)) { + if ((player_ptr->pclass == PlayerClassType::WARRIOR) || (player_ptr->pclass == PlayerClassType::ARCHER) || (player_ptr->pclass == PlayerClassType::CAVALRY)) { msg_print(_("呪文を唱えられない!", "You cannot cast spells!")); break; } - if (floor_ptr->dun_level && d_info[player_ptr->dungeon_idx].flags.has(DF::NO_MAGIC) && (player_ptr->pclass != CLASS_BERSERKER) - && (player_ptr->pclass != CLASS_SMITH)) { + if (floor_ptr->dun_level && d_info[player_ptr->dungeon_idx].flags.has(DF::NO_MAGIC) && (player_ptr->pclass != PlayerClassType::BERSERKER) + && (player_ptr->pclass != PlayerClassType::SMITH)) { msg_print(_("ダンジョンが魔法を吸収した!", "The dungeon absorbs all attempted magic!")); msg_print(nullptr); break; } - if (player_ptr->anti_magic && (player_ptr->pclass != CLASS_BERSERKER) && (player_ptr->pclass != CLASS_SMITH)) { + if (player_ptr->anti_magic && (player_ptr->pclass != PlayerClassType::BERSERKER) && (player_ptr->pclass != PlayerClassType::SMITH)) { concptr which_power = _("魔法", "magic"); switch (player_ptr->pclass) { - case CLASS_MINDCRAFTER: + case PlayerClassType::MINDCRAFTER: which_power = _("超能力", "psionic powers"); break; - case CLASS_IMITATOR: + case PlayerClassType::IMITATOR: which_power = _("ものまね", "imitation"); break; - case CLASS_SAMURAI: + case PlayerClassType::SAMURAI: which_power = _("必殺剣", "hissatsu"); break; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: which_power = _("鏡魔法", "mirror magic"); break; - case CLASS_NINJA: + case PlayerClassType::NINJA: which_power = _("忍術", "ninjutsu"); break; - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: which_power = _("元素魔法", "magic"); break; default: @@ -384,28 +384,28 @@ void process_command(player_type *player_ptr) break; } - if (is_shero(player_ptr) && (player_ptr->pclass != CLASS_BERSERKER)) { + if (is_shero(player_ptr) && (player_ptr->pclass != PlayerClassType::BERSERKER)) { msg_format(_("狂戦士化していて頭が回らない!", "You cannot think directly!")); PlayerEnergy(player_ptr).reset_player_turn(); break; } - if ((player_ptr->pclass == CLASS_MINDCRAFTER) || (player_ptr->pclass == CLASS_BERSERKER) || (player_ptr->pclass == CLASS_NINJA) - || (player_ptr->pclass == CLASS_MIRROR_MASTER)) + if ((player_ptr->pclass == PlayerClassType::MINDCRAFTER) || (player_ptr->pclass == PlayerClassType::BERSERKER) || (player_ptr->pclass == PlayerClassType::NINJA) + || (player_ptr->pclass == PlayerClassType::MIRROR_MASTER)) do_cmd_mind(player_ptr); - else if (player_ptr->pclass == CLASS_ELEMENTALIST) + else if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) do_cmd_element(player_ptr); - else if (player_ptr->pclass == CLASS_IMITATOR) + else if (player_ptr->pclass == PlayerClassType::IMITATOR) do_cmd_mane(player_ptr, false); - else if (player_ptr->pclass == CLASS_MAGIC_EATER) + else if (player_ptr->pclass == PlayerClassType::MAGIC_EATER) do_cmd_magic_eater(player_ptr, false, false); - else if (player_ptr->pclass == CLASS_SAMURAI) + else if (player_ptr->pclass == PlayerClassType::SAMURAI) do_cmd_hissatsu(player_ptr); - else if (player_ptr->pclass == CLASS_BLUE_MAGE) + else if (player_ptr->pclass == PlayerClassType::BLUE_MAGE) do_cmd_cast_learned(player_ptr); - else if (player_ptr->pclass == CLASS_SMITH) + else if (player_ptr->pclass == PlayerClassType::SMITH) do_cmd_kaji(player_ptr, false); - else if (player_ptr->pclass == CLASS_SNIPER) + else if (player_ptr->pclass == PlayerClassType::SNIPER) do_cmd_snipe(player_ptr); else (void)do_cmd_cast(player_ptr); diff --git a/src/io/input-key-requester.cpp b/src/io/input-key-requester.cpp index de2a2e9ee..0aa3b26c1 100644 --- a/src/io/input-key-requester.cpp +++ b/src/io/input-key-requester.cpp @@ -95,8 +95,10 @@ static char inkey_from_menu(player_type *player_ptr) break; case MENU_WILD: if (!floor_ptr->dun_level && !floor_ptr->inside_arena && !floor_ptr->inside_quest) { - if ((byte)player_ptr->wild_mode == special_menu_info[hoge].jouken_naiyou) + auto can_do_in_wilderness = enum2i(special_menu_info[hoge].jouken_naiyou) > 0; + if (player_ptr->wild_mode == can_do_in_wilderness) { menu_name = special_menu_info[hoge].name; + } } break; default: diff --git a/src/io/report.cpp b/src/io/report.cpp index de2aa7f6c..b875a717a 100644 --- a/src/io/report.cpp +++ b/src/io/report.cpp @@ -415,7 +415,7 @@ bool report_score(player_type *player_ptr, display_player_pf display_player) sprintf(personality_desc, "%s ", ap_ptr->title); #endif - auto realm1_name = player_ptr->pclass == CLASS_ELEMENTALIST ? get_element_title(player_ptr->element) : realm_names[player_ptr->realm1]; + auto realm1_name = player_ptr->pclass == PlayerClassType::ELEMENTALIST ? get_element_title(player_ptr->element) : realm_names[player_ptr->realm1]; buf_sprintf(score, "name: %s\n", player_ptr->name); buf_sprintf(score, "version: %s\n", title); buf_sprintf(score, "score: %d\n", calc_score(player_ptr)); diff --git a/src/knowledge/knowledge-experiences.cpp b/src/knowledge/knowledge-experiences.cpp index 8384eee9f..d7501fb54 100644 --- a/src/knowledge/knowledge-experiences.cpp +++ b/src/knowledge/knowledge-experiences.cpp @@ -41,7 +41,7 @@ void do_cmd_knowledge_weapon_exp(player_type *player_ptr) continue; SUB_EXP weapon_exp = player_ptr->weapon_exp[4 - i][num]; - SUB_EXP weapon_max = s_info[player_ptr->pclass].w_max[4 - i][num]; + SUB_EXP weapon_max = s_info[enum2i(player_ptr->pclass)].w_max[4 - i][num]; strip_name(tmp, k_ref.idx); fprintf(fff, "%-25s ", tmp); if (show_actual_value) @@ -160,7 +160,7 @@ void do_cmd_knowledge_skill_exp(player_type *player_ptr) for (int i = 0; i < SKILL_MAX; i++) { SUB_EXP skill_exp = player_ptr->skill_exp[i]; - SUB_EXP skill_max = s_info[player_ptr->pclass].s_max[i]; + SUB_EXP skill_max = s_info[enum2i(player_ptr->pclass)].s_max[i]; fprintf(fff, "%-20s ", skill_name[i]); if (show_actual_value) fprintf(fff, "%4d/%4d ", MIN(skill_exp, skill_max), skill_max); diff --git a/src/knowledge/knowledge-self.cpp b/src/knowledge/knowledge-self.cpp index 1a817adfb..5229fb573 100644 --- a/src/knowledge/knowledge-self.cpp +++ b/src/knowledge/knowledge-self.cpp @@ -70,9 +70,10 @@ static void dump_yourself(player_type *player_ptr, FILE *fff) t += strlen(t) + 1; } - shape_buffer(class_explanations[player_ptr->pclass].data(), 78, temp, sizeof(temp)); + auto short_pclass = enum2i(player_ptr->pclass); + shape_buffer(class_explanations[short_pclass].data(), 78, temp, sizeof(temp)); fprintf(fff, "\n"); - fprintf(fff, _("職業: %s\n", "Class: %s\n"), class_info[player_ptr->pclass].title); + fprintf(fff, _("職業: %s\n", "Class: %s\n"), class_info[short_pclass].title); t = temp; for (int i = 0; i < 10; i++) { @@ -140,7 +141,7 @@ static void dump_winner_classes(FILE *fff) size_t max_len = 75; std::string s = ""; std::string l = ""; - for (int c = 0; c < MAX_CLASS; c++) { + for (int c = 0; c < enum2i(PlayerClassType::MAX); c++) { if (w_ptr->sf_winner.has_not(i2enum(c))) continue; diff --git a/src/load/load-zangband.cpp b/src/load/load-zangband.cpp index b73eb0024..ba53f06b6 100644 --- a/src/load/load-zangband.cpp +++ b/src/load/load-zangband.cpp @@ -89,10 +89,10 @@ void set_zangband_realm(player_type *player_ptr) void set_zangband_skill(player_type *player_ptr) { - if (player_ptr->pclass != CLASS_BEASTMASTER) + if (player_ptr->pclass != PlayerClassType::BEASTMASTER) player_ptr->skill_exp[SKILL_RIDING] /= 2; - player_ptr->skill_exp[SKILL_RIDING] = MIN(player_ptr->skill_exp[SKILL_RIDING], s_info[player_ptr->pclass].s_max[SKILL_RIDING]); + player_ptr->skill_exp[SKILL_RIDING] = MIN(player_ptr->skill_exp[SKILL_RIDING], s_info[enum2i(player_ptr->pclass)].s_max[SKILL_RIDING]); } void set_zangband_race(player_type *player_ptr) @@ -202,22 +202,22 @@ void set_zangband_quest(player_type *player_ptr, quest_type *const q_ptr, int lo void set_zangband_class(player_type *player_ptr) { - if (h_older_than(0, 2, 2) && (player_ptr->pclass == CLASS_BEASTMASTER) && !player_ptr->is_dead) { + if (h_older_than(0, 2, 2) && (player_ptr->pclass == PlayerClassType::BEASTMASTER) && !player_ptr->is_dead) { player_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp; roll_hitdice(player_ptr, SPOP_NONE); } - if (h_older_than(0, 3, 2) && (player_ptr->pclass == CLASS_ARCHER) && !player_ptr->is_dead) { + if (h_older_than(0, 3, 2) && (player_ptr->pclass == PlayerClassType::ARCHER) && !player_ptr->is_dead) { player_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp; roll_hitdice(player_ptr, SPOP_NONE); } - if (h_older_than(0, 2, 6) && (player_ptr->pclass == CLASS_SORCERER) && !player_ptr->is_dead) { + if (h_older_than(0, 2, 6) && (player_ptr->pclass == PlayerClassType::SORCERER) && !player_ptr->is_dead) { player_ptr->hitdie = rp_ptr->r_mhp / 2 + cp_ptr->c_mhp + ap_ptr->a_mhp; roll_hitdice(player_ptr, SPOP_NONE); } - if (h_older_than(0, 4, 7) && (player_ptr->pclass == CLASS_BLUE_MAGE) && !player_ptr->is_dead) { + if (h_older_than(0, 4, 7) && (player_ptr->pclass == PlayerClassType::BLUE_MAGE) && !player_ptr->is_dead) { player_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp; roll_hitdice(player_ptr, SPOP_NONE); } diff --git a/src/load/load.cpp b/src/load/load.cpp index 3fee59bab..90da3e60d 100644 --- a/src/load/load.cpp +++ b/src/load/load.cpp @@ -212,16 +212,17 @@ static errr exe_reading_savefile(player_type *player_ptr) if (load_hp_result != 0) return load_hp_result; + auto short_pclass = enum2i(player_ptr->pclass); sp_ptr = &sex_info[player_ptr->psex]; rp_ptr = &race_info[enum2i(player_ptr->prace)]; - cp_ptr = &class_info[player_ptr->pclass]; + cp_ptr = &class_info[short_pclass]; ap_ptr = &personality_info[player_ptr->ppersonality]; set_zangband_class(player_ptr); - mp_ptr = &m_info[player_ptr->pclass]; + mp_ptr = &m_info[short_pclass]; load_spells(player_ptr); - if (player_ptr->pclass == CLASS_MINDCRAFTER) + if (player_ptr->pclass == PlayerClassType::MINDCRAFTER) player_ptr->add_spells = 0; errr load_inventory_result = load_inventory(player_ptr); @@ -288,7 +289,7 @@ static errr rd_savefile(player_type *player_ptr) */ static bool can_takeover_savefile(const player_type *player_ptr) { - if (loading_savefile_version_is_older_than(8) && player_ptr->pclass == CLASS_SMITH) { + if (loading_savefile_version_is_older_than(8) && player_ptr->pclass == PlayerClassType::SMITH) { return false; } diff --git a/src/load/player-info-loader.cpp b/src/load/player-info-loader.cpp index 8da867b8a..eaa887271 100644 --- a/src/load/player-info-loader.cpp +++ b/src/load/player-info-loader.cpp @@ -35,7 +35,7 @@ static void rd_realms(player_type *player_ptr) byte tmp8u; rd_byte(&tmp8u); - if (player_ptr->pclass == CLASS_ELEMENTALIST) + if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) player_ptr->element = (int16_t)tmp8u; else player_ptr->realm1 = (int16_t)tmp8u; @@ -112,7 +112,7 @@ void rd_experience(player_type *player_ptr) for (int i = 0; i < 64; i++) rd_s16b(&player_ptr->spell_exp[i]); - if ((player_ptr->pclass == CLASS_SORCERER) && h_older_than(0, 4, 2)) + if ((player_ptr->pclass == PlayerClassType::SORCERER) && h_older_than(0, 4, 2)) for (int i = 0; i < 64; i++) player_ptr->spell_exp[i] = SPELL_EXP_MASTER; diff --git a/src/lore/magic-types-setter.cpp b/src/lore/magic-types-setter.cpp index 7b40b815b..dd6f4cb0f 100644 --- a/src/lore/magic-types-setter.cpp +++ b/src/lore/magic-types-setter.cpp @@ -424,7 +424,7 @@ void set_teleport_types(lore_type *lore_ptr) void set_floor_types(player_type *player_ptr, lore_type *lore_ptr) { if (lore_ptr->ability_flags.has(RF_ABILITY::DARKNESS)) { - if ((player_ptr->pclass != CLASS_NINJA) || (lore_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) || (lore_ptr->r_ptr->flags7 & RF7_DARK_MASK)) { + if ((player_ptr->pclass != PlayerClassType::NINJA) || (lore_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) || (lore_ptr->r_ptr->flags7 & RF7_DARK_MASK)) { lore_ptr->vp[lore_ptr->vn] = _("暗闇", "create darkness"); lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK; } else { diff --git a/src/main/info-initializer.cpp b/src/main/info-initializer.cpp index b15c76f69..fdc25049e 100644 --- a/src/main/info-initializer.cpp +++ b/src/main/info-initializer.cpp @@ -203,7 +203,7 @@ errr init_v_info() */ errr init_s_info() { - init_header(&s_head, MAX_CLASS); + init_header(&s_head, enum2i(PlayerClassType::MAX)); return init_info("s_info", s_head, s_info, parse_s_info, nullptr); } @@ -214,6 +214,6 @@ errr init_s_info() */ errr init_m_info() { - init_header(&m_head, MAX_CLASS); + init_header(&m_head, enum2i(PlayerClassType::MAX)); return init_info("m_info", m_head, m_info, parse_m_info, nullptr); } diff --git a/src/market/arena.cpp b/src/market/arena.cpp index 6cafea396..c082aaafd 100644 --- a/src/market/arena.cpp +++ b/src/market/arena.cpp @@ -98,7 +98,7 @@ static void go_to_arena(player_type *player_ptr) if (battle_metal_babble(player_ptr)) return; - if (player_ptr->riding && (player_ptr->pclass != CLASS_BEASTMASTER) && (player_ptr->pclass != CLASS_CAVALRY)) { + if (player_ptr->riding && (player_ptr->pclass != PlayerClassType::BEASTMASTER) && (player_ptr->pclass != PlayerClassType::CAVALRY)) { msg_print(_("ペットに乗ったままではアリーナへ入れさせてもらえなかった。", "You don't have permission to enter with pet.")); msg_print(nullptr); return; diff --git a/src/market/building-craft-weapon.cpp b/src/market/building-craft-weapon.cpp index 1e3822d10..28b70b863 100644 --- a/src/market/building-craft-weapon.cpp +++ b/src/market/building-craft-weapon.cpp @@ -155,7 +155,7 @@ static void compare_weapon_aux(player_type *player_ptr, object_type *o_ptr, int show_weapon_dmg(r++, col, mindam, maxdam, blow, dmg_bonus, _("切れ味:", "Vorpal:"), TERM_L_RED); } - if ((player_ptr->pclass != CLASS_SAMURAI) && flgs.has(TR_FORCE_WEAPON) && (player_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) { + if ((player_ptr->pclass != PlayerClassType::SAMURAI) && flgs.has(TR_FORCE_WEAPON) && (player_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) { force = true; mindam = calc_expect_dice(player_ptr, mindice, 1, 1, force, o_ptr->weight, o_ptr->to_h, player_ptr->to_h[0], dokubari, impact, vorpal_mult, vorpal_div); diff --git a/src/market/building-initializer.cpp b/src/market/building-initializer.cpp index 1dbd91246..ba6bf1108 100644 --- a/src/market/building-initializer.cpp +++ b/src/market/building-initializer.cpp @@ -88,8 +88,8 @@ errr init_buildings(void) building[i].action_restr[j] = 0; } - for (int j = 0; j < MAX_CLASS; j++) - building[i].member_class[j] = CLASS_WARRIOR; + for (int j = 0; j < enum2i(PlayerClassType::MAX); j++) + building[i].member_class[j] = static_cast(PlayerClassType::WARRIOR); for (int j = 0; j < MAX_RACES; j++) building[i].member_race[j] = static_cast(PlayerRaceType::HUMAN); diff --git a/src/market/building-service.cpp b/src/market/building-service.cpp index f9d7d3c89..02afa9631 100644 --- a/src/market/building-service.cpp +++ b/src/market/building-service.cpp @@ -17,7 +17,7 @@ */ bool is_owner(player_type *player_ptr, building_type *bldg) { - if (bldg->member_class[player_ptr->pclass] == BUILDING_OWNER) { + if (bldg->member_class[enum2i(player_ptr->pclass)] == BUILDING_OWNER) { return true; } @@ -46,7 +46,7 @@ bool is_owner(player_type *player_ptr, building_type *bldg) */ bool is_member(player_type *player_ptr, building_type *bldg) { - if (bldg->member_class[player_ptr->pclass]) { + if (static_cast(bldg->member_class[enum2i(player_ptr->pclass)])) { return true; } @@ -60,7 +60,7 @@ bool is_member(player_type *player_ptr, building_type *bldg) return true; } - if (player_ptr->pclass != CLASS_SORCERER) + if (player_ptr->pclass != PlayerClassType::SORCERER) return false; for (int i = 0; i < MAX_MAGIC; i++) { diff --git a/src/melee/melee-spell-flags-checker.cpp b/src/melee/melee-spell-flags-checker.cpp index 4b90a1329..9dda097f2 100644 --- a/src/melee/melee-spell-flags-checker.cpp +++ b/src/melee/melee-spell-flags-checker.cpp @@ -99,7 +99,7 @@ static void check_darkness(player_type *player_ptr, melee_spell_type *ms_ptr) if (ms_ptr->ability_flags.has_not(RF_ABILITY::DARKNESS)) return; - bool vs_ninja = (player_ptr->pclass == CLASS_NINJA) && !is_hostile(ms_ptr->t_ptr); + bool vs_ninja = (player_ptr->pclass == PlayerClassType::NINJA) && !is_hostile(ms_ptr->t_ptr); bool can_use_lite_area = vs_ninja && !(ms_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) && !(ms_ptr->r_ptr->flags7 & RF7_DARK_MASK); if ((ms_ptr->r_ptr->flags2 & RF2_STUPID) != 0) return; diff --git a/src/melee/melee-spell.cpp b/src/melee/melee-spell.cpp index 29d360cb4..4c292e818 100644 --- a/src/melee/melee-spell.cpp +++ b/src/melee/melee-spell.cpp @@ -58,7 +58,7 @@ static void process_special_melee_spell(player_type *player_ptr, melee_spell_typ is_special_magic &= ms_ptr->maneable; is_special_magic &= w_ptr->timewalk_m_idx == 0; is_special_magic &= !player_ptr->blind; - is_special_magic &= player_ptr->pclass == CLASS_IMITATOR; + is_special_magic &= player_ptr->pclass == PlayerClassType::IMITATOR; is_special_magic &= ms_ptr->thrown_spell != RF_ABILITY::SPECIAL; if (!is_special_magic) return; diff --git a/src/mind/mind-elementalist.cpp b/src/mind/mind-elementalist.cpp index 5be1f2ab1..466e56f48 100644 --- a/src/mind/mind-elementalist.cpp +++ b/src/mind/mind-elementalist.cpp @@ -1061,7 +1061,7 @@ process_result effect_monster_elemental_genocide(player_type *player_ptr, effect */ bool has_element_resist(player_type *player_ptr, ElementRealm realm, PLAYER_LEVEL lev) { - if (player_ptr->pclass != CLASS_ELEMENTALIST) + if (player_ptr->pclass != PlayerClassType::ELEMENTALIST) return false; auto prealm = i2enum(player_ptr->element); diff --git a/src/mind/mind-power-getter.cpp b/src/mind/mind-power-getter.cpp index e874570b6..716facdaf 100644 --- a/src/mind/mind-power-getter.cpp +++ b/src/mind/mind-power-getter.cpp @@ -94,23 +94,23 @@ bool MindPowerGetter::get_mind_power(SPELL_IDX *sn, bool only_browse) void MindPowerGetter::select_mind_description() { switch (this->player_ptr->pclass) - case CLASS_MINDCRAFTER: { + case PlayerClassType::MINDCRAFTER: { this->use_mind = mind_kind_type::MINDCRAFTER; this->mind_description = _("超能力", "mindcraft"); break; - case CLASS_FORCETRAINER: + case PlayerClassType::FORCETRAINER: this->use_mind = mind_kind_type::KI; this->mind_description = _("練気術", "Force"); break; - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: this->use_mind = mind_kind_type::BERSERKER; this->mind_description = _("技", "brutal power"); break; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: this->use_mind = mind_kind_type::MIRROR_MASTER; this->mind_description = _("鏡魔法", "magic"); break; - case CLASS_NINJA: + case PlayerClassType::NINJA: this->use_mind = mind_kind_type::NINJUTSU; this->mind_description = _("忍術", "ninjutsu"); break; diff --git a/src/mind/monk-attack.cpp b/src/mind/monk-attack.cpp index 1ce895d89..7f44018d4 100644 --- a/src/mind/monk-attack.cpp +++ b/src/mind/monk-attack.cpp @@ -98,7 +98,7 @@ static int select_blow(player_type *player_ptr, player_attack_type *pa_ptr, int for (int times = 0; times < max_blow_selection_times; times++) { do { pa_ptr->ma_ptr = &ma_blows[randint0(MAX_MA)]; - if ((player_ptr->pclass == CLASS_FORCETRAINER) && (pa_ptr->ma_ptr->min_level > 1)) + if ((player_ptr->pclass == PlayerClassType::FORCETRAINER) && (pa_ptr->ma_ptr->min_level > 1)) min_level = pa_ptr->ma_ptr->min_level + 3; else min_level = pa_ptr->ma_ptr->min_level; @@ -116,7 +116,7 @@ static int select_blow(player_type *player_ptr, player_attack_type *pa_ptr, int msg_print(_("攻撃を再選択しました。", "Attack re-selected.")); } - if (player_ptr->pclass == CLASS_FORCETRAINER) + if (player_ptr->pclass == PlayerClassType::FORCETRAINER) min_level = MAX(1, pa_ptr->ma_ptr->min_level - 3); else min_level = pa_ptr->ma_ptr->min_level; @@ -165,7 +165,7 @@ static WEIGHT calc_monk_attack_weight(player_type *player_ptr) if (PlayerClass(player_ptr).monk_stance_is(MonkStance::SUZAKU)) weight = 4; - if ((player_ptr->pclass == CLASS_FORCETRAINER) && (get_current_ki(player_ptr) != 0)) { + if ((player_ptr->pclass == PlayerClassType::FORCETRAINER) && (get_current_ki(player_ptr) != 0)) { weight += (get_current_ki(player_ptr) / 30); if (weight > 20) weight = 20; diff --git a/src/monster-attack/monster-attack-player.cpp b/src/monster-attack/monster-attack-player.cpp index 1eda8c686..80721098d 100644 --- a/src/monster-attack/monster-attack-player.cpp +++ b/src/monster-attack/monster-attack-player.cpp @@ -280,7 +280,7 @@ static void gain_armor_exp(player_type *player_ptr, monap_type *monap_ptr) } auto cur = player_ptr->skill_exp[SKILL_SHIELD]; - auto max = s_info[player_ptr->pclass].s_max[SKILL_SHIELD]; + auto max = s_info[enum2i(player_ptr->pclass)].s_max[SKILL_SHIELD]; if (cur >= max) { return; } diff --git a/src/mspell/mspell-attack.cpp b/src/mspell/mspell-attack.cpp index 7d5562148..3ab5f34ee 100644 --- a/src/mspell/mspell-attack.cpp +++ b/src/mspell/mspell-attack.cpp @@ -260,7 +260,7 @@ static void check_mspell_imitation(player_type *player_ptr, msa_type *msa_ptr) { bool seen = (!player_ptr->blind && msa_ptr->m_ptr->ml); bool can_imitate = player_has_los_bold(player_ptr, msa_ptr->m_ptr->fy, msa_ptr->m_ptr->fx); - if (!seen || !can_imitate || (w_ptr->timewalk_m_idx != 0) || (player_ptr->pclass != CLASS_IMITATOR)) + if (!seen || !can_imitate || (w_ptr->timewalk_m_idx != 0) || (player_ptr->pclass != PlayerClassType::IMITATOR)) return; /* Not RF_ABILITY::SPECIAL */ diff --git a/src/mspell/mspell-floor.cpp b/src/mspell/mspell-floor.cpp index 5c6a1e126..652b41c3c 100644 --- a/src/mspell/mspell-floor.cpp +++ b/src/mspell/mspell-floor.cpp @@ -382,7 +382,7 @@ MonsterSpellResult spell_RF6_DARKNESS(player_type *player_ptr, POSITION y, POSIT GAME_TEXT t_name[MAX_NLEN]; monster_name(player_ptr, t_idx, t_name); - if ((player_ptr->pclass == CLASS_NINJA) && !(r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) && !(r_ptr->flags7 & RF7_DARK_MASK)) + if ((player_ptr->pclass == PlayerClassType::NINJA) && !(r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) && !(r_ptr->flags7 & RF7_DARK_MASK)) can_use_lite_area = true; if (monster_to_monster && !is_hostile(t_ptr)) diff --git a/src/mspell/mspell-judgement.cpp b/src/mspell/mspell-judgement.cpp index 5ba511faa..1d87985fc 100644 --- a/src/mspell/mspell-judgement.cpp +++ b/src/mspell/mspell-judgement.cpp @@ -251,7 +251,7 @@ bool dispel_check(player_type *player_ptr, MONSTER_IDX m_idx) if (player_ptr->dustrobe) return true; - if (player_ptr->shero && (player_ptr->pclass != CLASS_BERSERKER)) + if (player_ptr->shero && (player_ptr->pclass != PlayerClassType::BERSERKER)) return true; if (player_ptr->mimic_form == MIMIC_DEMON_LORD) @@ -293,7 +293,7 @@ bool dispel_check(player_type *player_ptr, MONSTER_IDX m_idx) return true; } - if (r_ptr->ability_flags.has_any_of({ RF_ABILITY::BR_POIS, RF_ABILITY::BR_NUKE }) && !((player_ptr->pclass == CLASS_NINJA) && (player_ptr->lev > 44))) { + if (r_ptr->ability_flags.has_any_of({ RF_ABILITY::BR_POIS, RF_ABILITY::BR_NUKE }) && !((player_ptr->pclass == PlayerClassType::NINJA) && (player_ptr->lev > 44))) { if (player_ptr->oppose_pois || music_singing(player_ptr, MUSIC_RESIST)) return true; diff --git a/src/mspell/mspell-lite.cpp b/src/mspell/mspell-lite.cpp index 35921cb07..f1821a168 100644 --- a/src/mspell/mspell-lite.cpp +++ b/src/mspell/mspell-lite.cpp @@ -181,7 +181,7 @@ void decide_lite_area(player_type *player_ptr, msa_type *msa_ptr) if (msa_ptr->ability_flags.has_not(RF_ABILITY::DARKNESS)) return; - bool can_use_lite_area = (player_ptr->pclass == CLASS_NINJA) && ((msa_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) == 0) + bool can_use_lite_area = (player_ptr->pclass == PlayerClassType::NINJA) && ((msa_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) == 0) && ((msa_ptr->r_ptr->flags7 & RF7_DARK_MASK) == 0); if ((msa_ptr->r_ptr->flags2 & RF2_STUPID) != 0) @@ -192,6 +192,6 @@ void decide_lite_area(player_type *player_ptr, msa_type *msa_ptr) return; } - if ((player_ptr->pclass == CLASS_NINJA) && !can_use_lite_area) + if ((player_ptr->pclass == PlayerClassType::NINJA) && !can_use_lite_area) msa_ptr->ability_flags.reset(RF_ABILITY::DARKNESS); } diff --git a/src/mutation/gain-mutation-switcher.cpp b/src/mutation/gain-mutation-switcher.cpp index 00477e0a3..b3182b68d 100644 --- a/src/mutation/gain-mutation-switcher.cpp +++ b/src/mutation/gain-mutation-switcher.cpp @@ -5,7 +5,7 @@ void switch_gain_mutation(player_type *player_ptr, glm_type *glm_ptr) { - switch (glm_ptr->choose_mut ? glm_ptr->choose_mut : (player_ptr->pclass == CLASS_BERSERKER ? 74 + randint1(119) : randint1(193))) { + switch (glm_ptr->choose_mut ? glm_ptr->choose_mut : (player_ptr->pclass == PlayerClassType::BERSERKER ? 74 + randint1(119) : randint1(193))) { case 1: case 2: case 3: @@ -288,7 +288,7 @@ void switch_gain_mutation(player_type *player_ptr, glm_type *glm_ptr) break; case 110: case 111: - if (player_ptr->pclass == CLASS_CHAOS_WARRIOR) + if (player_ptr->pclass == PlayerClassType::CHAOS_WARRIOR) break; glm_ptr->muta_which = MUTA::CHAOS_GIFT; diff --git a/src/object-hook/hook-magic.cpp b/src/object-hook/hook-magic.cpp index d0b83ab79..7bf68e5d0 100644 --- a/src/object-hook/hook-magic.cpp +++ b/src/object-hook/hook-magic.cpp @@ -55,8 +55,8 @@ bool item_tester_hook_use(player_type *player_ptr, const object_type *o_ptr) */ bool item_tester_learn_spell(player_type *player_ptr, const object_type *o_ptr) { - int32_t choices = realm_choices2[player_ptr->pclass]; - if (player_ptr->pclass == CLASS_PRIEST) { + int32_t choices = realm_choices2[enum2i(player_ptr->pclass)]; + if (player_ptr->pclass == PlayerClassType::PRIEST) { if (is_good_realm(player_ptr->realm1)) { choices &= ~(CH_DEATH | CH_DAEMON); } else { @@ -67,7 +67,7 @@ bool item_tester_learn_spell(player_type *player_ptr, const object_type *o_ptr) if ((o_ptr->tval < ItemKindType::LIFE_BOOK) || (o_ptr->tval > ItemKindType::HEX_BOOK)) return false; - if ((o_ptr->tval == ItemKindType::MUSIC_BOOK) && (player_ptr->pclass == CLASS_BARD)) + if ((o_ptr->tval == ItemKindType::MUSIC_BOOK) && (player_ptr->pclass == PlayerClassType::BARD)) return true; else if (!is_magic(tval2realm(o_ptr->tval))) return false; diff --git a/src/object-hook/hook-weapon.cpp b/src/object-hook/hook-weapon.cpp index d9e2d23df..7e37616e2 100644 --- a/src/object-hook/hook-weapon.cpp +++ b/src/object-hook/hook-weapon.cpp @@ -21,8 +21,9 @@ bool object_is_favorite(player_type *player_ptr, const object_type *o_ptr) } /* Favorite weapons are varied depend on the class */ + auto short_pclass = enum2i(player_ptr->pclass); switch (player_ptr->pclass) { - case CLASS_PRIEST: { + case PlayerClassType::PRIEST: { auto flgs = object_flags_known(o_ptr); if (flgs.has_not(TR_BLESSED) && !(o_ptr->tval == ItemKindType::HAFTED)) @@ -30,15 +31,15 @@ bool object_is_favorite(player_type *player_ptr, const object_type *o_ptr) break; } - case CLASS_MONK: - case CLASS_FORCETRAINER: + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: /* Icky to wield? */ - if (!(s_info[player_ptr->pclass].w_max[o_ptr->tval - TV_WEAPON_BEGIN][o_ptr->sval])) + if (!(s_info[short_pclass].w_max[o_ptr->tval - TV_WEAPON_BEGIN][o_ptr->sval])) return false; break; - case CLASS_BEASTMASTER: - case CLASS_CAVALRY: { + case PlayerClassType::BEASTMASTER: + case PlayerClassType::CAVALRY: { auto flgs = object_flags_known(o_ptr); /* Is it known to be suitable to using while riding? */ @@ -48,14 +49,14 @@ bool object_is_favorite(player_type *player_ptr, const object_type *o_ptr) break; } - case CLASS_SORCERER: - if (s_info[player_ptr->pclass].w_max[o_ptr->tval - TV_WEAPON_BEGIN][o_ptr->sval] < WEAPON_EXP_MASTER) + case PlayerClassType::SORCERER: + if (s_info[short_pclass].w_max[o_ptr->tval - TV_WEAPON_BEGIN][o_ptr->sval] < WEAPON_EXP_MASTER) return false; break; - case CLASS_NINJA: + case PlayerClassType::NINJA: /* Icky to wield? */ - if (s_info[player_ptr->pclass].w_max[o_ptr->tval - TV_WEAPON_BEGIN][o_ptr->sval] <= WEAPON_EXP_BEGINNER) + if (s_info[short_pclass].w_max[o_ptr->tval - TV_WEAPON_BEGIN][o_ptr->sval] <= WEAPON_EXP_BEGINNER) return false; break; diff --git a/src/object-use/quaff-execution.cpp b/src/object-use/quaff-execution.cpp index de1226b66..28b1c4180 100644 --- a/src/object-use/quaff-execution.cpp +++ b/src/object-use/quaff-execution.cpp @@ -586,7 +586,7 @@ bool ObjectQuaffEntity::check_can_quaff() bool ObjectQuaffEntity::booze() { bool ident = false; - if (this->player_ptr->pclass != CLASS_MONK) + if (this->player_ptr->pclass != PlayerClassType::MONK) chg_virtue(this->player_ptr, V_HARMONY, -1); else if (!has_resist_conf(this->player_ptr)) this->player_ptr->special_attack |= ATTACK_SUIKEN; @@ -604,7 +604,7 @@ bool ObjectQuaffEntity::booze() ident = true; } - if (one_in_(13) && (this->player_ptr->pclass != CLASS_MONK)) { + if (one_in_(13) && (this->player_ptr->pclass != PlayerClassType::MONK)) { ident = true; if (one_in_(3)) lose_all_info(this->player_ptr); diff --git a/src/object-use/read-execution.cpp b/src/object-use/read-execution.cpp index e6fbe8fc4..d4db1e8d6 100644 --- a/src/object-use/read-execution.cpp +++ b/src/object-use/read-execution.cpp @@ -382,11 +382,11 @@ void ObjectReadEntity::execute(bool known) break; } case SV_SCROLL_SPELL: { - if ((this->player_ptr->pclass == CLASS_WARRIOR) || (this->player_ptr->pclass == CLASS_IMITATOR) || (this->player_ptr->pclass == CLASS_MINDCRAFTER) - || (this->player_ptr->pclass == CLASS_SORCERER) || (this->player_ptr->pclass == CLASS_ARCHER) || (this->player_ptr->pclass == CLASS_MAGIC_EATER) - || (this->player_ptr->pclass == CLASS_RED_MAGE) || (this->player_ptr->pclass == CLASS_SAMURAI) || (this->player_ptr->pclass == CLASS_BLUE_MAGE) - || (this->player_ptr->pclass == CLASS_CAVALRY) || (this->player_ptr->pclass == CLASS_BERSERKER) || (this->player_ptr->pclass == CLASS_SMITH) - || (this->player_ptr->pclass == CLASS_MIRROR_MASTER) || (this->player_ptr->pclass == CLASS_NINJA) || (this->player_ptr->pclass == CLASS_SNIPER)) + if ((this->player_ptr->pclass == PlayerClassType::WARRIOR) || (this->player_ptr->pclass == PlayerClassType::IMITATOR) || (this->player_ptr->pclass == PlayerClassType::MINDCRAFTER) + || (this->player_ptr->pclass == PlayerClassType::SORCERER) || (this->player_ptr->pclass == PlayerClassType::ARCHER) || (this->player_ptr->pclass == PlayerClassType::MAGIC_EATER) + || (this->player_ptr->pclass == PlayerClassType::RED_MAGE) || (this->player_ptr->pclass == PlayerClassType::SAMURAI) || (this->player_ptr->pclass == PlayerClassType::BLUE_MAGE) + || (this->player_ptr->pclass == PlayerClassType::CAVALRY) || (this->player_ptr->pclass == PlayerClassType::BERSERKER) || (this->player_ptr->pclass == PlayerClassType::SMITH) + || (this->player_ptr->pclass == PlayerClassType::MIRROR_MASTER) || (this->player_ptr->pclass == PlayerClassType::NINJA) || (this->player_ptr->pclass == PlayerClassType::SNIPER)) break; this->player_ptr->add_spells++; @@ -527,7 +527,7 @@ bool ObjectReadEntity::check_can_read() return false; } - if (this->player_ptr->pclass == CLASS_BERSERKER) { + if (this->player_ptr->pclass == PlayerClassType::BERSERKER) { msg_print(_("巻物なんて読めない。", "You cannot read.")); return false; } diff --git a/src/object-use/throw-execution.cpp b/src/object-use/throw-execution.cpp index 1869f4dc8..0d96282d7 100644 --- a/src/object-use/throw-execution.cpp +++ b/src/object-use/throw-execution.cpp @@ -168,14 +168,14 @@ void ObjectThrowEntity::set_class_specific_throw_params() { PlayerEnergy energy(this->player_ptr); energy.set_player_turn_energy(100); - if ((this->player_ptr->pclass == CLASS_ROGUE) || (this->player_ptr->pclass == CLASS_NINJA)) { + if ((this->player_ptr->pclass == PlayerClassType::ROGUE) || (this->player_ptr->pclass == PlayerClassType::NINJA)) { energy.sub_player_turn_energy(this->player_ptr->lev); } this->y = this->player_ptr->y; this->x = this->player_ptr->x; handle_stuff(this->player_ptr); - this->shuriken = (this->player_ptr->pclass == CLASS_NINJA) + this->shuriken = (this->player_ptr->pclass == PlayerClassType::NINJA) && ((this->q_ptr->tval == ItemKindType::SPIKE) || ((this->obj_flags.has(TR_THROW)) && (this->q_ptr->tval == ItemKindType::SWORD))); } diff --git a/src/object-use/use-execution.cpp b/src/object-use/use-execution.cpp index dca09ce5e..3219de144 100644 --- a/src/object-use/use-execution.cpp +++ b/src/object-use/use-execution.cpp @@ -71,7 +71,7 @@ void ObjectUseEntity::execute() chance = USE_DEVICE; } - if ((chance < USE_DEVICE) || (randint1(chance) < USE_DEVICE) || (this->player_ptr->pclass == CLASS_BERSERKER)) { + if ((chance < USE_DEVICE) || (randint1(chance) < USE_DEVICE) || (this->player_ptr->pclass == PlayerClassType::BERSERKER)) { if (flush_failure) { flush(); } diff --git a/src/object-use/zaprod-execution.cpp b/src/object-use/zaprod-execution.cpp index 8a72ad1b0..1baf726e3 100644 --- a/src/object-use/zaprod-execution.cpp +++ b/src/object-use/zaprod-execution.cpp @@ -84,7 +84,7 @@ void ObjectZapRodEntity::execute(INVENTORY_IDX item) } bool success; - if (this->player_ptr->pclass == CLASS_BERSERKER) { + if (this->player_ptr->pclass == PlayerClassType::BERSERKER) { success = false; } else if (chance > fail) { success = randint0(chance * 2) >= fail; diff --git a/src/object-use/zapwand-execution.cpp b/src/object-use/zapwand-execution.cpp index 2ab01dcaf..16157a869 100644 --- a/src/object-use/zapwand-execution.cpp +++ b/src/object-use/zapwand-execution.cpp @@ -74,7 +74,7 @@ void ObjectZapWandEntity::execute(INVENTORY_IDX item) chance = USE_DEVICE; } - if ((chance < USE_DEVICE) || (randint1(chance) < USE_DEVICE) || (this->player_ptr->pclass == CLASS_BERSERKER)) { + if ((chance < USE_DEVICE) || (randint1(chance) < USE_DEVICE) || (this->player_ptr->pclass == PlayerClassType::BERSERKER)) { if (flush_failure) { flush(); } diff --git a/src/object/object-info.cpp b/src/object/object-info.cpp index 0dd5966bd..57e08efdd 100644 --- a/src/object/object-info.cpp +++ b/src/object/object-info.cpp @@ -282,9 +282,9 @@ bool check_book_realm(player_type *player_ptr, const ItemKindType book_tval, con { if (book_tval < ItemKindType::LIFE_BOOK) return false; - if (player_ptr->pclass == CLASS_SORCERER) { + if (player_ptr->pclass == PlayerClassType::SORCERER) { return is_magic(tval2realm(book_tval)); - } else if (player_ptr->pclass == CLASS_RED_MAGE) { + } else if (player_ptr->pclass == PlayerClassType::RED_MAGE) { if (is_magic(tval2realm(book_tval))) return ((book_tval == ItemKindType::ARCANE_BOOK) || (book_sval < 2)); } diff --git a/src/perception/simple-perception.cpp b/src/perception/simple-perception.cpp index 8883797b1..47e2e616f 100644 --- a/src/perception/simple-perception.cpp +++ b/src/perception/simple-perception.cpp @@ -136,112 +136,112 @@ void sense_inventory1(player_type *player_ptr) return; switch (player_ptr->pclass) { - case CLASS_WARRIOR: - case CLASS_ARCHER: - case CLASS_SAMURAI: - case CLASS_CAVALRY: { + case PlayerClassType::WARRIOR: + case PlayerClassType::ARCHER: + case PlayerClassType::SAMURAI: + case PlayerClassType::CAVALRY: { if (0 != randint0(9000L / (plev * plev + 40))) return; heavy = true; break; } - case CLASS_SMITH: { + case PlayerClassType::SMITH: { if (0 != randint0(6000L / (plev * plev + 50))) return; heavy = true; break; } - case CLASS_MAGE: - case CLASS_HIGH_MAGE: - case CLASS_SORCERER: - case CLASS_MAGIC_EATER: - case CLASS_ELEMENTALIST: { + case PlayerClassType::MAGE: + case PlayerClassType::HIGH_MAGE: + case PlayerClassType::SORCERER: + case PlayerClassType::MAGIC_EATER: + case PlayerClassType::ELEMENTALIST: { if (0 != randint0(240000L / (plev + 5))) return; break; } - case CLASS_PRIEST: - case CLASS_BARD: { + case PlayerClassType::PRIEST: + case PlayerClassType::BARD: { if (0 != randint0(10000L / (plev * plev + 40))) return; break; } - case CLASS_ROGUE: - case CLASS_NINJA: { + case PlayerClassType::ROGUE: + case PlayerClassType::NINJA: { if (0 != randint0(20000L / (plev * plev + 40))) return; heavy = true; break; } - case CLASS_RANGER: { + case PlayerClassType::RANGER: { if (0 != randint0(95000L / (plev * plev + 40))) return; heavy = true; break; } - case CLASS_PALADIN: - case CLASS_SNIPER: { + case PlayerClassType::PALADIN: + case PlayerClassType::SNIPER: { if (0 != randint0(77777L / (plev * plev + 40))) return; heavy = true; break; } - case CLASS_WARRIOR_MAGE: - case CLASS_RED_MAGE: { + case PlayerClassType::WARRIOR_MAGE: + case PlayerClassType::RED_MAGE: { if (0 != randint0(75000L / (plev * plev + 40))) return; break; } - case CLASS_MINDCRAFTER: - case CLASS_IMITATOR: - case CLASS_BLUE_MAGE: - case CLASS_MIRROR_MASTER: { + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::IMITATOR: + case PlayerClassType::BLUE_MAGE: + case PlayerClassType::MIRROR_MASTER: { if (0 != randint0(55000L / (plev * plev + 40))) return; break; } - case CLASS_CHAOS_WARRIOR: { + case PlayerClassType::CHAOS_WARRIOR: { if (0 != randint0(80000L / (plev * plev + 40))) return; heavy = true; break; } - case CLASS_MONK: - case CLASS_FORCETRAINER: { + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: { if (0 != randint0(20000L / (plev * plev + 40))) return; break; } - case CLASS_TOURIST: { + case PlayerClassType::TOURIST: { if (0 != randint0(20000L / ((plev + 50) * (plev + 50)))) return; heavy = true; break; } - case CLASS_BEASTMASTER: { + case PlayerClassType::BEASTMASTER: { if (0 != randint0(65000L / (plev * plev + 40))) return; break; } - case CLASS_BERSERKER: { + case PlayerClassType::BERSERKER: { heavy = true; break; } - case MAX_CLASS: + case PlayerClassType::MAX: break; } @@ -308,64 +308,64 @@ void sense_inventory2(player_type *player_ptr) return; switch (player_ptr->pclass) { - case CLASS_WARRIOR: - case CLASS_ARCHER: - case CLASS_SAMURAI: - case CLASS_CAVALRY: - case CLASS_BERSERKER: - case CLASS_SNIPER: { + case PlayerClassType::WARRIOR: + case PlayerClassType::ARCHER: + case PlayerClassType::SAMURAI: + case PlayerClassType::CAVALRY: + case PlayerClassType::BERSERKER: + case PlayerClassType::SNIPER: { return; } - case CLASS_SMITH: - case CLASS_PALADIN: - case CLASS_CHAOS_WARRIOR: - case CLASS_IMITATOR: - case CLASS_BEASTMASTER: - case CLASS_NINJA: { + case PlayerClassType::SMITH: + case PlayerClassType::PALADIN: + case PlayerClassType::CHAOS_WARRIOR: + case PlayerClassType::IMITATOR: + case PlayerClassType::BEASTMASTER: + case PlayerClassType::NINJA: { if (0 != randint0(240000L / (plev + 5))) return; break; } - case CLASS_RANGER: - case CLASS_WARRIOR_MAGE: - case CLASS_RED_MAGE: - case CLASS_MONK: { + case PlayerClassType::RANGER: + case PlayerClassType::WARRIOR_MAGE: + case PlayerClassType::RED_MAGE: + case PlayerClassType::MONK: { if (0 != randint0(95000L / (plev * plev + 40))) return; break; } - case CLASS_PRIEST: - case CLASS_BARD: - case CLASS_ROGUE: - case CLASS_FORCETRAINER: - case CLASS_MINDCRAFTER: { + case PlayerClassType::PRIEST: + case PlayerClassType::BARD: + case PlayerClassType::ROGUE: + case PlayerClassType::FORCETRAINER: + case PlayerClassType::MINDCRAFTER: { if (0 != randint0(20000L / (plev * plev + 40))) return; break; } - case CLASS_MAGE: - case CLASS_HIGH_MAGE: - case CLASS_SORCERER: - case CLASS_MAGIC_EATER: - case CLASS_MIRROR_MASTER: - case CLASS_BLUE_MAGE: - case CLASS_ELEMENTALIST: { + case PlayerClassType::MAGE: + case PlayerClassType::HIGH_MAGE: + case PlayerClassType::SORCERER: + case PlayerClassType::MAGIC_EATER: + case PlayerClassType::MIRROR_MASTER: + case PlayerClassType::BLUE_MAGE: + case PlayerClassType::ELEMENTALIST: { if (0 != randint0(9000L / (plev * plev + 40))) return; break; } - case CLASS_TOURIST: { + case PlayerClassType::TOURIST: { if (0 != randint0(20000L / ((plev + 50) * (plev + 50)))) return; break; } - case MAX_CLASS: + case PlayerClassType::MAX: break; } diff --git a/src/pet/pet-fall-off.cpp b/src/pet/pet-fall-off.cpp index fbd1a4ccc..c35222cd4 100644 --- a/src/pet/pet-fall-off.cpp +++ b/src/pet/pet-fall-off.cpp @@ -59,7 +59,7 @@ static bool calc_fall_off_possibility(player_type *player_ptr, const HIT_POINT d return true; int cur = player_ptr->skill_exp[SKILL_RIDING]; - int max = s_info[player_ptr->pclass].s_max[SKILL_RIDING]; + int max = s_info[enum2i(player_ptr->pclass)].s_max[SKILL_RIDING]; int ridinglevel = r_ptr->level; int fall_off_level = r_ptr->level; @@ -79,7 +79,7 @@ static bool calc_fall_off_possibility(player_type *player_ptr, const HIT_POINT d if (randint0(dam / 2 + fall_off_level * 2) >= cur / 30 + 10) return true; - if ((((player_ptr->pclass == CLASS_BEASTMASTER) || (player_ptr->pclass == CLASS_CAVALRY)) && !player_ptr->riding_ryoute) + if ((((player_ptr->pclass == PlayerClassType::BEASTMASTER) || (player_ptr->pclass == PlayerClassType::CAVALRY)) && !player_ptr->riding_ryoute) || !one_in_(player_ptr->lev * (player_ptr->riding_ryoute ? 2 : 3) + 30)) { return false; } diff --git a/src/pet/pet-util.cpp b/src/pet/pet-util.cpp index a4a2895a2..95f33023b 100644 --- a/src/pet/pet-util.cpp +++ b/src/pet/pet-util.cpp @@ -85,7 +85,7 @@ PERCENTAGE calculate_upkeep(player_type *player_ptr) continue; } - if (player_ptr->pclass != CLASS_CAVALRY) { + if (player_ptr->pclass != PlayerClassType::CAVALRY) { total_friend_levels += (r_ptr->level + 5) * 10; continue; } diff --git a/src/player-attack/player-attack.cpp b/src/player-attack/player-attack.cpp index e7af692ad..7a5fa844c 100644 --- a/src/player-attack/player-attack.cpp +++ b/src/player-attack/player-attack.cpp @@ -93,13 +93,13 @@ static player_attack_type *initialize_player_attack_type( static void attack_classify(player_type *player_ptr, player_attack_type *pa_ptr) { switch (player_ptr->pclass) { - case CLASS_ROGUE: - case CLASS_NINJA: + case PlayerClassType::ROGUE: + case PlayerClassType::NINJA: process_surprise_attack(player_ptr, pa_ptr); return; - case CLASS_MONK: - case CLASS_FORCETRAINER: - case CLASS_BERSERKER: + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: + case PlayerClassType::BERSERKER: if ((empty_hands(player_ptr, true) & EMPTY_HAND_MAIN) && !player_ptr->riding) pa_ptr->monk_attack = true; return; @@ -116,7 +116,7 @@ static void attack_classify(player_type *player_ptr, player_attack_type *pa_ptr) static void get_bare_knuckle_exp(player_type *player_ptr, player_attack_type *pa_ptr) { monster_race *r_ptr = &r_info[pa_ptr->m_ptr->r_idx]; - if ((r_ptr->level + 10) <= player_ptr->lev || (player_ptr->skill_exp[SKILL_MARTIAL_ARTS] >= s_info[player_ptr->pclass].s_max[SKILL_MARTIAL_ARTS])) + if ((r_ptr->level + 10) <= player_ptr->lev || (player_ptr->skill_exp[SKILL_MARTIAL_ARTS] >= s_info[enum2i(player_ptr->pclass)].s_max[SKILL_MARTIAL_ARTS])) return; if (player_ptr->skill_exp[SKILL_MARTIAL_ARTS] < WEAPON_EXP_BEGINNER) @@ -142,7 +142,7 @@ static void get_weapon_exp(player_type *player_ptr, player_attack_type *pa_ptr) int tval = player_ptr->inventory_list[INVEN_MAIN_HAND + pa_ptr->hand].tval - TV_WEAPON_BEGIN; OBJECT_SUBTYPE_VALUE sval = player_ptr->inventory_list[INVEN_MAIN_HAND + pa_ptr->hand].sval; int now_exp = player_ptr->weapon_exp[tval][sval]; - if (now_exp >= s_info[player_ptr->pclass].w_max[tval][sval]) + if (now_exp >= s_info[enum2i(player_ptr->pclass)].w_max[tval][sval]) return; SUB_EXP amount = 0; @@ -444,7 +444,7 @@ static bool check_fear_death(player_type *player_ptr, player_attack_type *pa_ptr return false; *(pa_ptr->mdeath) = true; - if ((player_ptr->pclass == CLASS_BERSERKER) && player_ptr->energy_use) { + if ((player_ptr->pclass == PlayerClassType::BERSERKER) && player_ptr->energy_use) { PlayerEnergy energy(player_ptr); if (can_attack_with_main_hand(player_ptr) && can_attack_with_sub_hand(player_ptr)) { ENERGY energy_use; @@ -498,7 +498,7 @@ static void apply_actual_attack( mineuchi(player_ptr, pa_ptr); pa_ptr->attack_damage = mon_damage_mod(player_ptr, pa_ptr->m_ptr, pa_ptr->attack_damage, - (bool)(((o_ptr->tval == ItemKindType::POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE)) || ((player_ptr->pclass == CLASS_BERSERKER) && one_in_(2)))); + ((o_ptr->tval == ItemKindType::POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE)) || ((player_ptr->pclass == PlayerClassType::BERSERKER) && one_in_(2))); critical_attack(player_ptr, pa_ptr); msg_format_wizard(player_ptr, CHEAT_MONSTER, _("%dのダメージを与えた。(残りHP %d/%d(%d))", "You do %d damage. (left HP %d/%d(%d))"), pa_ptr->attack_damage, pa_ptr->m_ptr->hp - pa_ptr->attack_damage, pa_ptr->m_ptr->maxhp, pa_ptr->m_ptr->max_maxhp); diff --git a/src/player-base/player-class.cpp b/src/player-base/player-class.cpp index 0fcb14c85..bc9a2d4da 100644 --- a/src/player-base/player-class.cpp +++ b/src/player-base/player-class.cpp @@ -43,7 +43,7 @@ TrFlags PlayerClass::tr_flags() const const auto plev = this->player_ptr->lev; switch (this->player_ptr->pclass) { - case CLASS_WARRIOR: { + case PlayerClassType::WARRIOR: { if (plev > 29) flags.set(TR_RES_FEAR); if (plev > 44) @@ -51,19 +51,19 @@ TrFlags PlayerClass::tr_flags() const break; } - case CLASS_SAMURAI: { + case PlayerClassType::SAMURAI: { if (plev > 29) flags.set(TR_RES_FEAR); break; } - case CLASS_PALADIN: { + case PlayerClassType::PALADIN: { if (plev > 39) flags.set(TR_RES_FEAR); break; } - case CLASS_CHAOS_WARRIOR: { + case PlayerClassType::CHAOS_WARRIOR: { if (plev > 29) flags.set(TR_RES_CHAOS); if (plev > 39) @@ -71,8 +71,8 @@ TrFlags PlayerClass::tr_flags() const break; } - case CLASS_MONK: - case CLASS_FORCETRAINER: { + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: { if ((plev > 9) && !heavy_armor(this->player_ptr)) flags.set(TR_SPEED); if ((plev > 24) && !heavy_armor(this->player_ptr)) @@ -80,7 +80,7 @@ TrFlags PlayerClass::tr_flags() const break; } - case CLASS_NINJA: { + case PlayerClassType::NINJA: { if (heavy_armor(this->player_ptr)) { flags.set(TR_SPEED); } else { @@ -101,7 +101,7 @@ TrFlags PlayerClass::tr_flags() const break; } - case CLASS_MINDCRAFTER: { + case PlayerClassType::MINDCRAFTER: { if (plev > 9) flags.set(TR_RES_FEAR); if (plev > 19) @@ -113,11 +113,11 @@ TrFlags PlayerClass::tr_flags() const break; } - case CLASS_BARD: { + case PlayerClassType::BARD: { flags.set(TR_RES_SOUND); break; } - case CLASS_BERSERKER: { + case PlayerClassType::BERSERKER: { flags.set(TR_SUST_STR); flags.set(TR_SUST_DEX); flags.set(TR_SUST_CON); @@ -129,13 +129,13 @@ TrFlags PlayerClass::tr_flags() const break; } - case CLASS_MIRROR_MASTER: { + case PlayerClassType::MIRROR_MASTER: { if (plev > 39) flags.set(TR_REFLECT); break; } - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: if (has_element_resist(this->player_ptr, ElementRealm::FIRE, 1)) flags.set(TR_RES_FIRE); if (has_element_resist(this->player_ptr, ElementRealm::FIRE, 30)) @@ -223,23 +223,23 @@ TrFlags PlayerClass::form_tr_flags() const bool PlayerClass::can_resist_stun() const { - return (this->player_ptr->pclass == CLASS_BERSERKER) && (this->player_ptr->lev > 34); + return (this->player_ptr->pclass == PlayerClassType::BERSERKER) && (this->player_ptr->lev > 34); } bool PlayerClass::is_wizard() const { - auto is_wizard = this->player_ptr->pclass == CLASS_MAGE; - is_wizard |= this->player_ptr->pclass == CLASS_HIGH_MAGE; - is_wizard |= this->player_ptr->pclass == CLASS_SORCERER; - is_wizard |= this->player_ptr->pclass == CLASS_MAGIC_EATER; - is_wizard |= this->player_ptr->pclass == CLASS_BLUE_MAGE; - is_wizard |= this->player_ptr->pclass == CLASS_ELEMENTALIST; + auto is_wizard = this->player_ptr->pclass == PlayerClassType::MAGE; + is_wizard |= this->player_ptr->pclass == PlayerClassType::HIGH_MAGE; + is_wizard |= this->player_ptr->pclass == PlayerClassType::SORCERER; + is_wizard |= this->player_ptr->pclass == PlayerClassType::MAGIC_EATER; + is_wizard |= this->player_ptr->pclass == PlayerClassType::BLUE_MAGE; + is_wizard |= this->player_ptr->pclass == PlayerClassType::ELEMENTALIST; return is_wizard; } bool PlayerClass::lose_balance() { - if (this->player_ptr->pclass != CLASS_SAMURAI) { + if (this->player_ptr->pclass != PlayerClassType::SAMURAI) { return false; } @@ -334,37 +334,37 @@ void PlayerClass::set_monk_stance(MonkStance stance) const void PlayerClass::init_specific_data() { switch (this->player_ptr->pclass) { - case CLASS_SMITH: + case PlayerClassType::SMITH: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_FORCETRAINER: + case PlayerClassType::FORCETRAINER: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_BLUE_MAGE: + case PlayerClassType::BLUE_MAGE: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_MAGIC_EATER: + case PlayerClassType::MAGIC_EATER: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_BARD: + case PlayerClassType::BARD: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_IMITATOR: + case PlayerClassType::IMITATOR: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_SNIPER: + case PlayerClassType::SNIPER: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_SAMURAI: + case PlayerClassType::SAMURAI: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_MONK: + case PlayerClassType::MONK: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_NINJA: + case PlayerClassType::NINJA: this->player_ptr->class_specific_data = std::make_shared(); break; - case CLASS_HIGH_MAGE: + case PlayerClassType::HIGH_MAGE: if (this->player_ptr->realm1 == REALM_HEX) { this->player_ptr->class_specific_data = std::make_shared(); } else { diff --git a/src/player-info/class-ability-info.cpp b/src/player-info/class-ability-info.cpp index 518843c35..39ad26e8f 100644 --- a/src/player-info/class-ability-info.cpp +++ b/src/player-info/class-ability-info.cpp @@ -7,23 +7,23 @@ void set_class_ability_info(player_type *player_ptr, self_info_type *self_ptr) { switch (player_ptr->pclass) { - case CLASS_WARRIOR: + case PlayerClassType::WARRIOR: if (player_ptr->lev > 39) self_ptr->info[self_ptr->line++] = _("あなたはランダムな方向に対して数回攻撃することができる。(75 HP)", "You can attack some random directions simultaneously (cost 75)."); break; - case CLASS_HIGH_MAGE: + case PlayerClassType::HIGH_MAGE: if (player_ptr->realm1 == REALM_HEX) break; /* Fall through */ - case CLASS_MAGE: - case CLASS_SORCERER: + case PlayerClassType::MAGE: + case PlayerClassType::SORCERER: if (player_ptr->lev > 24) self_ptr->info[self_ptr->line++] = _("あなたはアイテムの魔力を吸収することができる。(1 MP)", "You can absorb charges from an item (cost 1)."); break; - case CLASS_PRIEST: + case PlayerClassType::PRIEST: if (is_good_realm(player_ptr->realm1)) { if (player_ptr->lev > 34) self_ptr->info[self_ptr->line++] = _("あなたは武器を祝福することができる。(70 MP)", "You can bless a weapon (cost 70)."); @@ -36,18 +36,18 @@ void set_class_ability_info(player_type *player_ptr, self_info_type *self_ptr) = _("あなたは周りのすべてのモンスターを攻撃することができる。(40 MP)", "You can damage all monsters in sight (cost 40)."); break; - case CLASS_ROGUE: + case PlayerClassType::ROGUE: if (player_ptr->lev > 7) self_ptr->info[self_ptr->line++] = _("あなたは攻撃して即座に逃げることができる。(12 MP)", "You can hit a monster and teleport away simultaneously (cost 12)."); break; - case CLASS_RANGER: + case PlayerClassType::RANGER: if (player_ptr->lev > 14) self_ptr->info[self_ptr->line++] = _("あなたは怪物を調査することができる。(20 MP)", "You can probe monsters (cost 20)."); break; - case CLASS_PALADIN: + case PlayerClassType::PALADIN: if (is_good_realm(player_ptr->realm1)) { if (player_ptr->lev > 29) { self_ptr->info[self_ptr->line++] = _("あなたは聖なる槍を放つことができる。(30 MP)", "You can fire a holy spear (cost 30)."); @@ -61,21 +61,21 @@ void set_class_ability_info(player_type *player_ptr, self_info_type *self_ptr) = _("あなたは生命力を減少させる槍を放つことができる。(30 MP)", "You can fire a spear which drains vitality (cost 30)."); break; - case CLASS_WARRIOR_MAGE: + case PlayerClassType::WARRIOR_MAGE: if (player_ptr->lev > 24) { self_ptr->info[self_ptr->line++] = _("あなたはHPをMPに変換することができる。(消費なし)", "You can convert HP to SP (cost 0)."); self_ptr->info[self_ptr->line++] = _("あなたはMPをHPに変換することができる。(消費なし)", "You can convert SP to HP (cost 0)."); } break; - case CLASS_CHAOS_WARRIOR: + case PlayerClassType::CHAOS_WARRIOR: if (player_ptr->lev > 39) { self_ptr->info[self_ptr->line++] = _("あなたは周囲に怪物を惑わす光を発生させることができる。(50 MP)", "You can radiate light which confuses nearby monsters (cost 50)."); } break; - case CLASS_MONK: + case PlayerClassType::MONK: if (player_ptr->lev > 24) self_ptr->info[self_ptr->line++] = _("あなたは構えることができる。(消費なし)", "You can assume a special stance (cost 0)."); @@ -84,28 +84,28 @@ void set_class_ability_info(player_type *player_ptr, self_info_type *self_ptr) = _("あなたは通常の2倍の攻撃を行うことができる。(30 MP)", "You can perform two attacks at the same time (cost 30)."); break; - case CLASS_MINDCRAFTER: - case CLASS_FORCETRAINER: - case CLASS_ELEMENTALIST: + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::FORCETRAINER: + case PlayerClassType::ELEMENTALIST: if (player_ptr->lev > 14) self_ptr->info[self_ptr->line++] = _("あなたは精神を集中してMPを回復させることができる。(消費なし)", "You can concentrate to regenerate your mana (cost 0)."); break; - case CLASS_TOURIST: + case PlayerClassType::TOURIST: self_ptr->info[self_ptr->line++] = _("あなたは写真を撮影することができる。(消費なし)", "You can take a photograph (cost 0)."); if (player_ptr->lev > 24) self_ptr->info[self_ptr->line++] = _("あなたはアイテムを完全に鑑定することができる。(20 MP)", "You can *identify* items (cost 20)."); break; - case CLASS_IMITATOR: + case PlayerClassType::IMITATOR: if (player_ptr->lev > 29) self_ptr->info[self_ptr->line++] = _("あなたは怪物の特殊攻撃をダメージ2倍でまねることができる。(100 MP)", "You can imitate monster's special attacks with double damage (cost 100)."); break; - case CLASS_BEASTMASTER: + case PlayerClassType::BEASTMASTER: self_ptr->info[self_ptr->line++] = _("あなたは1体の生命のあるモンスターを支配することができる。((レベル+3)/4 MP)", "You can dominate a monster (cost (level+3)/4)."); @@ -114,7 +114,7 @@ void set_class_ability_info(player_type *player_ptr, self_info_type *self_ptr) "You can dominate living monsters in sight (cost (level+20)/2)."); break; - case CLASS_MAGIC_EATER: + case PlayerClassType::MAGIC_EATER: self_ptr->info[self_ptr->line++] = _("あなたは杖/魔法棒/ロッドの魔力を自分のものにすることができる。(消費なし)", "You can absorb a staff, wand or rod itself (cost 0)."); @@ -123,12 +123,12 @@ void set_class_ability_info(player_type *player_ptr, self_info_type *self_ptr) "You can powerfully activate a staff, wand or rod (cost 10+(level-10)/2)."); break; - case CLASS_RED_MAGE: + case PlayerClassType::RED_MAGE: if (player_ptr->lev > 47) self_ptr->info[self_ptr->line++] = _("あなたは1ターンに2回魔法を唱えることができる。(20 MP)", "You can cast two spells simultaneously (cost 20)."); break; - case CLASS_SAMURAI: + case PlayerClassType::SAMURAI: self_ptr->info[self_ptr->line++] = _("あなたは精神を集中して気合いを溜めることができる。(消費なし)", "You can concentrate to regenerate your mana (cost 0)."); @@ -136,41 +136,41 @@ void set_class_ability_info(player_type *player_ptr, self_info_type *self_ptr) self_ptr->info[self_ptr->line++] = _("あなたは特殊な型で構えることができる。(消費なし)", "You can assume a special stance (cost 0)."); break; - case CLASS_BLUE_MAGE: + case PlayerClassType::BLUE_MAGE: self_ptr->info[self_ptr->line++] = _("あなたは相手に使われた魔法を学ぶことができる。(消費なし)", "You can study spells which your enemy casts on you (cost 0)."); break; - case CLASS_CAVALRY: + case PlayerClassType::CAVALRY: if (player_ptr->lev > 9) self_ptr->info[self_ptr->line++] = _("あなたはモンスターに乗って無理矢理ペットにすることができる。(消費なし)", "You can ride on a hostile monster to forcibly turn it into a pet (cost 0)."); break; - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: if (player_ptr->lev > 9) self_ptr->info[self_ptr->line++] = _("あなたは街とダンジョンの間を行き来することができる。(10 HP)", "You can travel between town and the depths (cost 10)."); break; - case CLASS_SMITH: + case PlayerClassType::SMITH: if (player_ptr->lev > 4) self_ptr->info[self_ptr->line++] = _("あなたは武器や防具を鑑定することができる。(15 HP)", "You can identify weapons or armours (cost 15)."); break; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: self_ptr->info[self_ptr->line++] = _("あなたは鏡を作り出すことができる。(2 MP)", "You can create a Mirror (cost 2)."); self_ptr->info[self_ptr->line++] = _("あなたは鏡を割ることができる。(消費なし)", "You can break distant Mirrors (cost 0)."); break; - case CLASS_NINJA: + case PlayerClassType::NINJA: if (player_ptr->lev > 19) self_ptr->info[self_ptr->line++] = _("あなたは素早く移動することができる。(消費なし)", "You can walk extremely fast (cost 0)."); break; - case CLASS_ARCHER: - case CLASS_BARD: - case CLASS_SNIPER: - case MAX_CLASS: + case PlayerClassType::ARCHER: + case PlayerClassType::BARD: + case PlayerClassType::SNIPER: + case PlayerClassType::MAX: break; } } diff --git a/src/player-info/class-types.h b/src/player-info/class-types.h index acbbe58e4..98c4c6979 100644 --- a/src/player-info/class-types.h +++ b/src/player-info/class-types.h @@ -1,34 +1,34 @@ #pragma once -enum PlayerClassType { - CLASS_WARRIOR = 0, - CLASS_MAGE = 1, - CLASS_PRIEST = 2, - CLASS_ROGUE = 3, - CLASS_RANGER = 4, - CLASS_PALADIN = 5, - CLASS_WARRIOR_MAGE = 6, - CLASS_CHAOS_WARRIOR = 7, - CLASS_MONK = 8, - CLASS_MINDCRAFTER = 9, - CLASS_HIGH_MAGE = 10, - CLASS_TOURIST = 11, - CLASS_IMITATOR = 12, - CLASS_BEASTMASTER = 13, - CLASS_SORCERER = 14, - CLASS_ARCHER = 15, - CLASS_MAGIC_EATER = 16, - CLASS_BARD = 17, - CLASS_RED_MAGE = 18, - CLASS_SAMURAI = 19, - CLASS_FORCETRAINER = 20, - CLASS_BLUE_MAGE = 21, - CLASS_CAVALRY = 22, - CLASS_BERSERKER = 23, - CLASS_SMITH = 24, - CLASS_MIRROR_MASTER = 25, - CLASS_NINJA = 26, - CLASS_SNIPER = 27, - CLASS_ELEMENTALIST = 28, - MAX_CLASS = 29, /*!< 職業の最大定義数 Maximum number of player "class" types (see "table.c", etc) */ +enum class PlayerClassType : short { + WARRIOR = 0, + MAGE = 1, + PRIEST = 2, + ROGUE = 3, + RANGER = 4, + PALADIN = 5, + WARRIOR_MAGE = 6, + CHAOS_WARRIOR = 7, + MONK = 8, + MINDCRAFTER = 9, + HIGH_MAGE = 10, + TOURIST = 11, + IMITATOR = 12, + BEASTMASTER = 13, + SORCERER = 14, + ARCHER = 15, + MAGIC_EATER = 16, + BARD = 17, + RED_MAGE = 18, + SAMURAI = 19, + FORCETRAINER = 20, + BLUE_MAGE = 21, + CAVALRY = 22, + BERSERKER = 23, + SMITH = 24, + MIRROR_MASTER = 25, + NINJA = 26, + SNIPER = 27, + ELEMENTALIST = 28, + MAX, }; diff --git a/src/player-info/equipment-info.cpp b/src/player-info/equipment-info.cpp index e59485a1a..595ee990b 100644 --- a/src/player-info/equipment-info.cpp +++ b/src/player-info/equipment-info.cpp @@ -52,7 +52,7 @@ bool can_two_hands_wielding(player_type *player_ptr) */ bool heavy_armor(player_type *player_ptr) { - if ((player_ptr->pclass != CLASS_MONK) && (player_ptr->pclass != CLASS_FORCETRAINER) && (player_ptr->pclass != CLASS_NINJA)) + if ((player_ptr->pclass != PlayerClassType::MONK) && (player_ptr->pclass != PlayerClassType::FORCETRAINER) && (player_ptr->pclass != PlayerClassType::NINJA)) return false; WEIGHT monk_arm_wgt = 0; diff --git a/src/player-info/mimic-info-table.cpp b/src/player-info/mimic-info-table.cpp index 895a9878c..cfac0adfc 100644 --- a/src/player-info/mimic-info-table.cpp +++ b/src/player-info/mimic-info-table.cpp @@ -99,7 +99,7 @@ const player_race_info mimic_info[MAX_MIMIC_FORMS] = { TR_RES_NETHER }, { TR_SEE_INVIS }, { TR_HOLD_EXP }, - { TR_LITE_1, 1, CLASS_NINJA, true }, + { TR_LITE_1, 1, PlayerClassType::NINJA, true }, { TR_SPEED }, }, }, diff --git a/src/player-status/player-basic-statistics.cpp b/src/player-status/player-basic-statistics.cpp index 2e9e77a06..a918c9ff9 100644 --- a/src/player-status/player-basic-statistics.cpp +++ b/src/player-status/player-basic-statistics.cpp @@ -64,7 +64,7 @@ int16_t PlayerBasicStatistics::race_value() */ int16_t PlayerBasicStatistics::class_value() { - const player_class_info *c_ptr = &class_info[this->player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(this->player_ptr->pclass)]; return c_ptr->c_adj[this->ability_type]; } diff --git a/src/player-status/player-speed.cpp b/src/player-status/player-speed.cpp index e79fbfd99..0d61ff9b4 100644 --- a/src/player-status/player-speed.cpp +++ b/src/player-status/player-speed.cpp @@ -102,7 +102,7 @@ int16_t PlayerSpeed::class_value() { SPEED result = 0; - if (this->player_ptr->pclass == CLASS_NINJA) { + if (this->player_ptr->pclass == PlayerClassType::NINJA) { if (heavy_armor(this->player_ptr)) { result -= (this->player_ptr->lev) / 10; } else if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx || can_attack_with_main_hand(this->player_ptr)) @@ -114,13 +114,13 @@ int16_t PlayerSpeed::class_value() } } - if ((this->player_ptr->pclass == CLASS_MONK || this->player_ptr->pclass == CLASS_FORCETRAINER) && !(heavy_armor(this->player_ptr))) { + if ((this->player_ptr->pclass == PlayerClassType::MONK || this->player_ptr->pclass == PlayerClassType::FORCETRAINER) && !(heavy_armor(this->player_ptr))) { if (!(PlayerRace(this->player_ptr).equals(PlayerRaceType::KLACKON) || PlayerRace(this->player_ptr).equals(PlayerRaceType::SPRITE) || (this->player_ptr->ppersonality == PERSONALITY_MUNCHKIN))) result += (this->player_ptr->lev) / 10; } - if (this->player_ptr->pclass == CLASS_BERSERKER) { + if (this->player_ptr->pclass == PlayerClassType::BERSERKER) { result += 2; if (this->player_ptr->lev > 29) result++; diff --git a/src/player-status/player-stealth.cpp b/src/player-status/player-stealth.cpp index d5c84141f..14ae3d425 100644 --- a/src/player-status/player-stealth.cpp +++ b/src/player-status/player-stealth.cpp @@ -54,7 +54,7 @@ int16_t PlayerStealth::personality_value() */ int16_t PlayerStealth::class_base_value() { - const player_class_info *c_ptr = &class_info[this->player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(this->player_ptr->pclass)]; return c_ptr->c_stl + (c_ptr->x_stl * this->player_ptr->lev / 10); } @@ -69,7 +69,7 @@ int16_t PlayerStealth::class_value() { ACTION_SKILL_POWER result = 0; - if (this->player_ptr->pclass == CLASS_NINJA) { + if (this->player_ptr->pclass == PlayerClassType::NINJA) { if (heavy_armor(this->player_ptr)) { result -= (this->player_ptr->lev) / 10; } else if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx || can_attack_with_main_hand(this->player_ptr)) diff --git a/src/player/patron.cpp b/src/player/patron.cpp index e7006fc74..cadbd180e 100644 --- a/src/player/patron.cpp +++ b/src/player/patron.cpp @@ -564,7 +564,7 @@ void Patron::gain_level_reward(player_type *player_ptr_, int chosen_reward) void Patron::admire(player_type *player_ptr_) { this->player_ptr = player_ptr_; - if ((this->player_ptr->pclass == CLASS_CHAOS_WARRIOR) || this->player_ptr->muta.has(MUTA::CHAOS_GIFT)) { + if ((this->player_ptr->pclass == PlayerClassType::CHAOS_WARRIOR) || this->player_ptr->muta.has(MUTA::CHAOS_GIFT)) { msg_format(_("%sからの声が響いた。", "The voice of %s booms out:"), this->name.c_str()); msg_print(_("『よくやった、定命の者よ!』", "'Thou art donst well, mortal!'")); } diff --git a/src/player/permanent-resistances.cpp b/src/player/permanent-resistances.cpp index 3c847a047..231151a9d 100644 --- a/src/player/permanent-resistances.cpp +++ b/src/player/permanent-resistances.cpp @@ -67,7 +67,7 @@ static void add_personality_flags(player_type *player_ptr, TrFlags &flags) flags.set(TR_RES_BLIND); flags.set(TR_RES_CONF); flags.set(TR_HOLD_EXP); - if (player_ptr->pclass != CLASS_NINJA) + if (player_ptr->pclass != PlayerClassType::NINJA) flags.set(TR_LITE_1); if (player_ptr->lev > 9) flags.set(TR_SPEED); diff --git a/src/player/player-move.cpp b/src/player/player-move.cpp index f99298b7a..9638e4c0b 100644 --- a/src/player/player-move.cpp +++ b/src/player/player-move.cpp @@ -170,7 +170,7 @@ bool move_player_effect(player_type *player_ptr, POSITION ny, POSITION nx, BIT_F if (mpe_mode & MPE_HANDLE_STUFF) handle_stuff(player_ptr); - if (player_ptr->pclass == CLASS_NINJA) { + if (player_ptr->pclass == PlayerClassType::NINJA) { if (g_ptr->info & (CAVE_GLOW)) set_superstealth(player_ptr, false); else if (player_ptr->cur_lite <= 0) diff --git a/src/player/player-realm.cpp b/src/player/player-realm.cpp index e9c1935d6..7bb3a20a0 100644 --- a/src/player/player-realm.cpp +++ b/src/player/player-realm.cpp @@ -5,7 +5,7 @@ /*! * 職業毎に選択可能な第一領域魔法テーブル */ -const uint32_t realm_choices1[MAX_CLASS] = { +const std::vector realm_choices1 = { (CH_NONE), /* Warrior */ (CH_LIFE | CH_SORCERY | CH_NATURE | CH_CHAOS | CH_DEATH | CH_TRUMP | CH_ARCANE | CH_ENCHANT | CH_DAEMON | CH_CRUSADE), /* Mage */ (CH_LIFE | CH_DEATH | CH_DAEMON | CH_CRUSADE), /* Priest */ @@ -40,7 +40,7 @@ const uint32_t realm_choices1[MAX_CLASS] = { /*! * 職業毎に選択可能な第二領域魔法テーブル */ -const uint32_t realm_choices2[MAX_CLASS] = { +const std::vector realm_choices2 = { (CH_NONE), /* Warrior */ (CH_LIFE | CH_SORCERY | CH_NATURE | CH_CHAOS | CH_DEATH | CH_TRUMP | CH_ARCANE | CH_ENCHANT | CH_DAEMON | CH_CRUSADE), /* Mage */ (CH_LIFE | CH_SORCERY | CH_NATURE | CH_CHAOS | CH_DEATH | CH_TRUMP | CH_ARCANE | CH_ENCHANT | CH_DAEMON | CH_CRUSADE), /* Priest */ diff --git a/src/player/player-realm.h b/src/player/player-realm.h index 0e800477a..73a262bfb 100644 --- a/src/player/player-realm.h +++ b/src/player/player-realm.h @@ -1,6 +1,7 @@ #pragma once #include "system/angband.h" +#include /* 職業ごとの選択可能な魔法領域 / Possible realms that can be chosen. */ enum choosable_realm { @@ -21,8 +22,8 @@ enum choosable_realm { CH_HEX = 0x20000, }; -extern const uint32_t realm_choices1[]; -extern const uint32_t realm_choices2[]; +extern const std::vector realm_choices1; +extern const std::vector realm_choices2; struct player_type; enum class ItemKindType : short; diff --git a/src/player/player-status-flags.cpp b/src/player/player-status-flags.cpp index 5d543e91f..44ec8b569 100644 --- a/src/player/player-status-flags.cpp +++ b/src/player/player-status-flags.cpp @@ -718,13 +718,13 @@ void check_no_flowed(player_type *player_ptr) has_kabe = true; } - if (has_sw && ((player_ptr->realm1 == REALM_NATURE) || (player_ptr->realm2 == REALM_NATURE) || (player_ptr->pclass == CLASS_SORCERER))) { + if (has_sw && ((player_ptr->realm1 == REALM_NATURE) || (player_ptr->realm2 == REALM_NATURE) || (player_ptr->pclass == PlayerClassType::SORCERER))) { const magic_type *s_ptr = &mp_ptr->info[REALM_NATURE - 1][SPELL_SW]; if (player_ptr->lev >= s_ptr->slevel) player_ptr->no_flowed = true; } - if (has_kabe && ((player_ptr->realm1 == REALM_CRAFT) || (player_ptr->realm2 == REALM_CRAFT) || (player_ptr->pclass == CLASS_SORCERER))) { + if (has_kabe && ((player_ptr->realm1 == REALM_CRAFT) || (player_ptr->realm2 == REALM_CRAFT) || (player_ptr->pclass == PlayerClassType::SORCERER))) { const magic_type *s_ptr = &mp_ptr->info[REALM_CRAFT - 1][SPELL_WALL]; if (player_ptr->lev >= s_ptr->slevel) player_ptr->no_flowed = true; @@ -754,7 +754,7 @@ BIT_FLAGS has_reflect(player_type *player_ptr) BIT_FLAGS has_see_nocto(player_type *player_ptr) { - return (player_ptr->pclass == CLASS_NINJA) ? FLAG_CAUSE_CLASS : FLAG_CAUSE_NONE; + return (player_ptr->pclass == PlayerClassType::NINJA) ? FLAG_CAUSE_CLASS : FLAG_CAUSE_NONE; } BIT_FLAGS has_warning(player_type *player_ptr) @@ -1550,7 +1550,7 @@ bool has_two_handed_weapons(player_type *player_ptr) BIT_FLAGS has_lite(player_type *player_ptr) { BIT_FLAGS result = 0L; - if (player_ptr->pclass == CLASS_NINJA) + if (player_ptr->pclass == PlayerClassType::NINJA) return 0L; if (player_ptr->ppersonality == PERSONALITY_MUNCHKIN) { @@ -1600,13 +1600,13 @@ bool is_wielding_icky_weapon(player_type *player_ptr, int i) auto flgs = object_flags(o_ptr); auto has_no_weapon = (o_ptr->tval == ItemKindType::NONE) || (o_ptr->tval == ItemKindType::SHIELD); - if (player_ptr->pclass == CLASS_PRIEST) { + if (player_ptr->pclass == PlayerClassType::PRIEST) { auto is_suitable_weapon = flgs.has(TR_BLESSED); is_suitable_weapon |= (o_ptr->tval != ItemKindType::SWORD) && (o_ptr->tval != ItemKindType::POLEARM); return !has_no_weapon && !is_suitable_weapon; } - if (player_ptr->pclass == CLASS_SORCERER) { + if (player_ptr->pclass == PlayerClassType::SORCERER) { auto is_suitable_weapon = o_ptr->tval == ItemKindType::HAFTED; is_suitable_weapon &= (o_ptr->sval == SV_WIZSTAFF) || (o_ptr->sval == SV_NAMAKE_HAMMER); return !has_no_weapon && !is_suitable_weapon; @@ -1637,8 +1637,8 @@ bool has_not_ninja_weapon(player_type *player_ptr, int i) auto tval = player_ptr->inventory_list[INVEN_MAIN_HAND + i].tval - TV_WEAPON_BEGIN; OBJECT_SUBTYPE_VALUE sval = player_ptr->inventory_list[INVEN_MAIN_HAND + i].sval; - return player_ptr->pclass == CLASS_NINJA - && !((s_info[CLASS_NINJA].w_max[tval][sval] > WEAPON_EXP_BEGINNER) && (player_ptr->inventory_list[INVEN_SUB_HAND - i].tval != ItemKindType::SHIELD)); + return player_ptr->pclass == PlayerClassType::NINJA + && !((s_info[enum2i(PlayerClassType::NINJA)].w_max[tval][sval] > WEAPON_EXP_BEGINNER) && (player_ptr->inventory_list[INVEN_SUB_HAND - i].tval != ItemKindType::SHIELD)); } bool has_not_monk_weapon(player_type *player_ptr, int i) @@ -1649,7 +1649,7 @@ bool has_not_monk_weapon(player_type *player_ptr, int i) auto tval = player_ptr->inventory_list[INVEN_MAIN_HAND + i].tval - TV_WEAPON_BEGIN; OBJECT_SUBTYPE_VALUE sval = player_ptr->inventory_list[INVEN_MAIN_HAND + i].sval; - return ((player_ptr->pclass == CLASS_MONK) || (player_ptr->pclass == CLASS_FORCETRAINER)) && !(s_info[player_ptr->pclass].w_max[tval][sval]); + return ((player_ptr->pclass == PlayerClassType::MONK) || (player_ptr->pclass == PlayerClassType::FORCETRAINER)) && !(s_info[enum2i(player_ptr->pclass)].w_max[tval][sval]); } bool has_good_luck(player_type *player_ptr) diff --git a/src/player/player-status.cpp b/src/player/player-status.cpp index d7c11b755..791ec85a3 100644 --- a/src/player/player-status.cpp +++ b/src/player/player-status.cpp @@ -468,14 +468,14 @@ static void update_max_hitpoints(player_type *player_ptr) byte tmp_hitdie; if (player_ptr->mimic_form) { - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::SORCERER) tmp_hitdie = mimic_info[player_ptr->mimic_form].r_mhp / 2 + cp_ptr->c_mhp + ap_ptr->a_mhp; else tmp_hitdie = mimic_info[player_ptr->mimic_form].r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp; mhp = mhp * tmp_hitdie / player_ptr->hitdie; } - if (player_ptr->pclass == CLASS_SORCERER) { + if (player_ptr->pclass == PlayerClassType::SORCERER) { if (player_ptr->lev < 30) mhp = (mhp * (45 + player_ptr->lev) / 100); else @@ -485,7 +485,7 @@ static void update_max_hitpoints(player_type *player_ptr) mhp += bonus; - if (player_ptr->pclass == CLASS_BERSERKER) { + if (player_ptr->pclass == PlayerClassType::BERSERKER) { mhp = mhp * (110 + (((player_ptr->lev + 40) * (player_ptr->lev + 40) - 1550) / 110)) / 100; } @@ -536,7 +536,7 @@ static void update_num_of_spells(player_type *player_ptr) return; if (w_ptr->character_xtra) return; - if ((player_ptr->pclass == CLASS_SORCERER) || (player_ptr->pclass == CLASS_RED_MAGE)) { + if ((player_ptr->pclass == PlayerClassType::SORCERER) || (player_ptr->pclass == PlayerClassType::RED_MAGE)) { player_ptr->new_spells = 0; return; } @@ -548,17 +548,17 @@ static void update_num_of_spells(player_type *player_ptr) int num_allowed = (adj_mag_study[player_ptr->stat_index[mp_ptr->spell_stat]] * levels / 2); int bonus = 0; - if ((player_ptr->pclass != CLASS_SAMURAI) && (mp_ptr->spell_book != ItemKindType::LIFE_BOOK)) { + if ((player_ptr->pclass != PlayerClassType::SAMURAI) && (mp_ptr->spell_book != ItemKindType::LIFE_BOOK)) { bonus = 4; } - if (player_ptr->pclass == CLASS_SAMURAI) { + if (player_ptr->pclass == PlayerClassType::SAMURAI) { num_allowed = 32; } else if (player_ptr->realm2 == REALM_NONE) { num_allowed = (num_allowed + 1) / 2; if (num_allowed > (32 + bonus)) num_allowed = 32 + bonus; - } else if ((player_ptr->pclass == CLASS_MAGE) || (player_ptr->pclass == CLASS_PRIEST)) { + } else if ((player_ptr->pclass == PlayerClassType::MAGE) || (player_ptr->pclass == PlayerClassType::PRIEST)) { if (num_allowed > (96 + bonus)) num_allowed = 96 + bonus; } else { @@ -780,8 +780,8 @@ static void update_max_mana(player_type *player_ptr) return; int levels; - if ((player_ptr->pclass == CLASS_MINDCRAFTER) || (player_ptr->pclass == CLASS_MIRROR_MASTER) || (player_ptr->pclass == CLASS_BLUE_MAGE) - || player_ptr->pclass == CLASS_ELEMENTALIST) { + if ((player_ptr->pclass == PlayerClassType::MINDCRAFTER) || (player_ptr->pclass == PlayerClassType::MIRROR_MASTER) || (player_ptr->pclass == PlayerClassType::BLUE_MAGE) + || player_ptr->pclass == PlayerClassType::ELEMENTALIST) { levels = player_ptr->lev; } else { if (mp_ptr->spell_first > player_ptr->lev) { @@ -794,7 +794,7 @@ static void update_max_mana(player_type *player_ptr) } int msp; - if (player_ptr->pclass == CLASS_SAMURAI) { + if (player_ptr->pclass == PlayerClassType::SAMURAI) { msp = (adj_mag_mana[player_ptr->stat_index[mp_ptr->spell_stat]] + 10) * 2; if (msp) msp += (msp * rp_ptr->r_adj[mp_ptr->spell_stat] / 20); @@ -806,9 +806,9 @@ static void update_max_mana(player_type *player_ptr) msp += (msp * rp_ptr->r_adj[mp_ptr->spell_stat] / 20); if (msp && (player_ptr->ppersonality == PERSONALITY_MUNCHKIN)) msp += msp / 2; - if (msp && (player_ptr->pclass == CLASS_HIGH_MAGE)) + if (msp && (player_ptr->pclass == PlayerClassType::HIGH_MAGE)) msp += msp / 4; - if (msp && (player_ptr->pclass == CLASS_SORCERER)) + if (msp && (player_ptr->pclass == PlayerClassType::SORCERER)) msp += msp * (25 + player_ptr->lev) / 100; } @@ -838,49 +838,49 @@ static void update_max_mana(player_type *player_ptr) cur_wgt += player_ptr->inventory_list[INVEN_FEET].weight; switch (player_ptr->pclass) { - case CLASS_MAGE: - case CLASS_HIGH_MAGE: - case CLASS_BLUE_MAGE: - case CLASS_MONK: - case CLASS_FORCETRAINER: - case CLASS_SORCERER: - case CLASS_ELEMENTALIST: { + case PlayerClassType::MAGE: + case PlayerClassType::HIGH_MAGE: + case PlayerClassType::BLUE_MAGE: + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: + case PlayerClassType::SORCERER: + case PlayerClassType::ELEMENTALIST: { if (player_ptr->inventory_list[INVEN_MAIN_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_MAIN_HAND].weight; if (player_ptr->inventory_list[INVEN_SUB_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_SUB_HAND].weight; break; } - case CLASS_PRIEST: - case CLASS_BARD: - case CLASS_TOURIST: { + case PlayerClassType::PRIEST: + case PlayerClassType::BARD: + case PlayerClassType::TOURIST: { if (player_ptr->inventory_list[INVEN_MAIN_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_MAIN_HAND].weight * 2 / 3; if (player_ptr->inventory_list[INVEN_SUB_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_SUB_HAND].weight * 2 / 3; break; } - case CLASS_MINDCRAFTER: - case CLASS_BEASTMASTER: - case CLASS_MIRROR_MASTER: { + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::BEASTMASTER: + case PlayerClassType::MIRROR_MASTER: { if (player_ptr->inventory_list[INVEN_MAIN_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_MAIN_HAND].weight / 2; if (player_ptr->inventory_list[INVEN_SUB_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_SUB_HAND].weight / 2; break; } - case CLASS_ROGUE: - case CLASS_RANGER: - case CLASS_RED_MAGE: - case CLASS_WARRIOR_MAGE: { + case PlayerClassType::ROGUE: + case PlayerClassType::RANGER: + case PlayerClassType::RED_MAGE: + case PlayerClassType::WARRIOR_MAGE: { if (player_ptr->inventory_list[INVEN_MAIN_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_MAIN_HAND].weight / 3; if (player_ptr->inventory_list[INVEN_SUB_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_SUB_HAND].weight / 3; break; } - case CLASS_PALADIN: - case CLASS_CHAOS_WARRIOR: { + case PlayerClassType::PALADIN: + case PlayerClassType::CHAOS_WARRIOR: { if (player_ptr->inventory_list[INVEN_MAIN_HAND].tval <= ItemKindType::SWORD) cur_wgt += player_ptr->inventory_list[INVEN_MAIN_HAND].weight / 5; if (player_ptr->inventory_list[INVEN_SUB_HAND].tval <= ItemKindType::SWORD) @@ -896,41 +896,41 @@ static void update_max_mana(player_type *player_ptr) if ((cur_wgt - max_wgt) > 0) { player_ptr->cumber_armor = true; switch (player_ptr->pclass) { - case CLASS_MAGE: - case CLASS_HIGH_MAGE: - case CLASS_BLUE_MAGE: - case CLASS_ELEMENTALIST: { + case PlayerClassType::MAGE: + case PlayerClassType::HIGH_MAGE: + case PlayerClassType::BLUE_MAGE: + case PlayerClassType::ELEMENTALIST: { msp -= msp * (cur_wgt - max_wgt) / 600; break; } - case CLASS_PRIEST: - case CLASS_MINDCRAFTER: - case CLASS_BEASTMASTER: - case CLASS_BARD: - case CLASS_FORCETRAINER: - case CLASS_TOURIST: - case CLASS_MIRROR_MASTER: { + case PlayerClassType::PRIEST: + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::BEASTMASTER: + case PlayerClassType::BARD: + case PlayerClassType::FORCETRAINER: + case PlayerClassType::TOURIST: + case PlayerClassType::MIRROR_MASTER: { msp -= msp * (cur_wgt - max_wgt) / 800; break; } - case CLASS_SORCERER: { + case PlayerClassType::SORCERER: { msp -= msp * (cur_wgt - max_wgt) / 900; break; } - case CLASS_ROGUE: - case CLASS_RANGER: - case CLASS_MONK: - case CLASS_RED_MAGE: { + case PlayerClassType::ROGUE: + case PlayerClassType::RANGER: + case PlayerClassType::MONK: + case PlayerClassType::RED_MAGE: { msp -= msp * (cur_wgt - max_wgt) / 1000; break; } - case CLASS_PALADIN: - case CLASS_CHAOS_WARRIOR: - case CLASS_WARRIOR_MAGE: { + case PlayerClassType::PALADIN: + case PlayerClassType::CHAOS_WARRIOR: + case PlayerClassType::WARRIOR_MAGE: { msp -= msp * (cur_wgt - max_wgt) / 1200; break; } - case CLASS_SAMURAI: { + case PlayerClassType::SAMURAI: { player_ptr->cumber_armor = false; break; } @@ -945,7 +945,7 @@ static void update_max_mana(player_type *player_ptr) msp = 0; if (player_ptr->msp != msp) { - if ((player_ptr->csp >= msp) && (player_ptr->pclass != CLASS_SAMURAI)) { + if ((player_ptr->csp >= msp) && (player_ptr->pclass != PlayerClassType::SAMURAI)) { player_ptr->csp = msp; player_ptr->csp_frac = 0; } @@ -1022,26 +1022,26 @@ int16_t calc_num_fire(player_type *player_ptr, object_type *o_ptr) return (int16_t)num; ItemKindType tval_ammo = bow_tval_ammo(o_ptr); - if ((player_ptr->pclass == CLASS_RANGER) && (tval_ammo == ItemKindType::ARROW)) { + if ((player_ptr->pclass == PlayerClassType::RANGER) && (tval_ammo == ItemKindType::ARROW)) { num += (player_ptr->lev * 4); } - if ((player_ptr->pclass == CLASS_CAVALRY) && (tval_ammo == ItemKindType::ARROW)) { + if ((player_ptr->pclass == PlayerClassType::CAVALRY) && (tval_ammo == ItemKindType::ARROW)) { num += (player_ptr->lev * 3); } - if (player_ptr->pclass == CLASS_ARCHER) { + if (player_ptr->pclass == PlayerClassType::ARCHER) { if (tval_ammo == ItemKindType::ARROW) num += ((player_ptr->lev * 5) + 50); else if ((tval_ammo == ItemKindType::BOLT) || (tval_ammo == ItemKindType::SHOT)) num += (player_ptr->lev * 4); } - if (player_ptr->pclass == CLASS_WARRIOR && (tval_ammo <= ItemKindType::BOLT) && (tval_ammo >= ItemKindType::SHOT)) { + if (player_ptr->pclass == PlayerClassType::WARRIOR && (tval_ammo <= ItemKindType::BOLT) && (tval_ammo >= ItemKindType::SHOT)) { num += (player_ptr->lev * 2); } - if ((player_ptr->pclass == CLASS_ROGUE) && (tval_ammo == ItemKindType::SHOT)) { + if ((player_ptr->pclass == PlayerClassType::ROGUE) && (tval_ammo == ItemKindType::SHOT)) { num += (player_ptr->lev * 4); } @@ -1067,7 +1067,7 @@ static ACTION_SKILL_POWER calc_disarming(player_type *player_ptr) tmp_rp_ptr = &mimic_info[player_ptr->mimic_form]; else tmp_rp_ptr = &race_info[enum2i(player_ptr->prace)]; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; pow = tmp_rp_ptr->r_dis + c_ptr->c_dis + a_ptr->a_dis; @@ -1097,7 +1097,7 @@ static ACTION_SKILL_POWER calc_device_ability(player_type *player_ptr) tmp_rp_ptr = &mimic_info[player_ptr->mimic_form]; else tmp_rp_ptr = &race_info[enum2i(player_ptr->prace)]; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; pow = tmp_rp_ptr->r_dev + c_ptr->c_dev + a_ptr->a_dev; @@ -1147,7 +1147,7 @@ static ACTION_SKILL_POWER calc_saving_throw(player_type *player_ptr) tmp_rp_ptr = &mimic_info[player_ptr->mimic_form]; else tmp_rp_ptr = &race_info[enum2i(player_ptr->prace)]; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; pow = tmp_rp_ptr->r_sav + c_ptr->c_sav + a_ptr->a_sav; @@ -1202,7 +1202,7 @@ static ACTION_SKILL_POWER calc_search(player_type *player_ptr) tmp_rp_ptr = &mimic_info[player_ptr->mimic_form]; else tmp_rp_ptr = &race_info[enum2i(player_ptr->prace)]; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; pow = tmp_rp_ptr->r_srh + c_ptr->c_srh + a_ptr->a_srh; @@ -1249,7 +1249,7 @@ static ACTION_SKILL_POWER calc_search_freq(player_type *player_ptr) tmp_rp_ptr = &mimic_info[player_ptr->mimic_form]; else tmp_rp_ptr = &race_info[enum2i(player_ptr->prace)]; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; pow = tmp_rp_ptr->r_fos + c_ptr->c_fos + a_ptr->a_fos; @@ -1287,7 +1287,7 @@ static ACTION_SKILL_POWER calc_to_hit_melee(player_type *player_ptr) { ACTION_SKILL_POWER pow; const player_race_info *tmp_rp_ptr; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; if (player_ptr->mimic_form) @@ -1311,7 +1311,7 @@ static ACTION_SKILL_POWER calc_to_hit_shoot(player_type *player_ptr) { ACTION_SKILL_POWER pow; const player_race_info *tmp_rp_ptr; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; if (player_ptr->mimic_form) @@ -1336,7 +1336,7 @@ static ACTION_SKILL_POWER calc_to_hit_throw(player_type *player_ptr) { ACTION_SKILL_POWER pow; const player_race_info *tmp_rp_ptr; - const player_class_info *c_ptr = &class_info[player_ptr->pclass]; + const player_class_info *c_ptr = &class_info[enum2i(player_ptr->pclass)]; const player_personality *a_ptr = &personality_info[player_ptr->ppersonality]; if (player_ptr->mimic_form) @@ -1384,7 +1384,7 @@ static ACTION_SKILL_POWER calc_skill_dig(player_type *player_ptr) pow += adj_str_dig[player_ptr->stat_index[A_STR]]; - if (player_ptr->pclass == CLASS_BERSERKER) + if (player_ptr->pclass == PlayerClassType::BERSERKER) pow += (100 + player_ptr->lev * 8); for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) { @@ -1415,7 +1415,7 @@ static ACTION_SKILL_POWER calc_skill_dig(player_type *player_ptr) static bool is_martial_arts_mode(player_type *player_ptr) { - return ((player_ptr->pclass == CLASS_MONK) || (player_ptr->pclass == CLASS_FORCETRAINER) || (player_ptr->pclass == CLASS_BERSERKER)) + return ((player_ptr->pclass == PlayerClassType::MONK) || (player_ptr->pclass == PlayerClassType::FORCETRAINER) || (player_ptr->pclass == PlayerClassType::BERSERKER)) && (any_bits(empty_hands(player_ptr, true), EMPTY_HAND_MAIN)) && !can_attack_with_sub_hand(player_ptr); } @@ -1438,11 +1438,12 @@ static int16_t calc_num_blow(player_type *player_ptr, int i) int str_index, dex_index; int num = 0, wgt = 0, mul = 0, div = 0; - num = class_info[player_ptr->pclass].num; - wgt = class_info[player_ptr->pclass].wgt; - mul = class_info[player_ptr->pclass].mul; + auto info = class_info[enum2i(player_ptr->pclass)]; + num = info.num; + wgt = info.wgt; + mul = info.mul; - if (player_ptr->pclass == CLASS_CAVALRY && (player_ptr->riding) && (flgs.has(TR_RIDING))) { + if (player_ptr->pclass == PlayerClassType::CAVALRY && (player_ptr->riding) && (flgs.has(TR_RIDING))) { num = 5; wgt = 70; mul = 4; @@ -1458,8 +1459,8 @@ static int16_t calc_num_blow(player_type *player_ptr, int i) str_index = (adj_str_blow[player_ptr->stat_index[A_STR]] * mul / div); if (has_two_handed_weapons(player_ptr) && !has_disable_two_handed_bonus(player_ptr, 0)) - str_index += (player_ptr->pclass == CLASS_WARRIOR || player_ptr->pclass == CLASS_BERSERKER) ? (player_ptr->lev / 23 + 1) : 1; - if (player_ptr->pclass == CLASS_NINJA) + str_index += (player_ptr->pclass == PlayerClassType::WARRIOR || player_ptr->pclass == PlayerClassType::BERSERKER) ? (player_ptr->lev / 23 + 1) : 1; + if (player_ptr->pclass == PlayerClassType::NINJA) str_index = MAX(0, str_index - 1); if (str_index > 11) str_index = 11; @@ -1473,11 +1474,11 @@ static int16_t calc_num_blow(player_type *player_ptr, int i) num_blow = (int16_t)num; num_blow += (int16_t)player_ptr->extra_blows[i]; - if (player_ptr->pclass == CLASS_WARRIOR) + if (player_ptr->pclass == PlayerClassType::WARRIOR) num_blow += (player_ptr->lev / 40); - else if (player_ptr->pclass == CLASS_BERSERKER) + else if (player_ptr->pclass == PlayerClassType::BERSERKER) num_blow += (player_ptr->lev / 23); - else if ((player_ptr->pclass == CLASS_ROGUE) && (o_ptr->weight < 50) && (player_ptr->stat_index[A_DEX] >= 30)) + else if ((player_ptr->pclass == PlayerClassType::ROGUE) && (o_ptr->weight < 50) && (player_ptr->stat_index[A_DEX] >= 30)) num_blow++; if (PlayerClass(player_ptr).samurai_stance_is(SamuraiStance::FUUJIN)) @@ -1498,7 +1499,7 @@ static int16_t calc_num_blow(player_type *player_ptr, int i) int blow_base = player_ptr->lev + adj_dex_blow[player_ptr->stat_index[A_DEX]]; num_blow = 0; - if (player_ptr->pclass == CLASS_FORCETRAINER) { + if (player_ptr->pclass == PlayerClassType::FORCETRAINER) { if (blow_base > 18) num_blow++; if (blow_base > 31) @@ -1524,13 +1525,13 @@ static int16_t calc_num_blow(player_type *player_ptr, int i) num_blow++; } - if (heavy_armor(player_ptr) && (player_ptr->pclass != CLASS_BERSERKER)) + if (heavy_armor(player_ptr) && (player_ptr->pclass != PlayerClassType::BERSERKER)) num_blow /= 2; PlayerClass pc(player_ptr); if (pc.monk_stance_is(MonkStance::GENBU)) { num_blow -= 2; - if ((player_ptr->pclass == CLASS_MONK) && (player_ptr->lev > 42)) + if ((player_ptr->pclass == PlayerClassType::MONK) && (player_ptr->lev > 42)) num_blow--; if (num_blow < 0) num_blow = 0; @@ -1635,10 +1636,10 @@ static ARMOUR_CLASS calc_to_ac(player_type *player_ptr, bool is_real_value) } } - if (player_ptr->pclass == CLASS_BERSERKER) { + if (player_ptr->pclass == PlayerClassType::BERSERKER) { ac += 10 + player_ptr->lev / 2; } - if (player_ptr->pclass == CLASS_SORCERER) { + if (player_ptr->pclass == PlayerClassType::SORCERER) { ac -= 50; } @@ -1695,7 +1696,7 @@ static ARMOUR_CLASS calc_to_ac(player_type *player_ptr, bool is_real_value) ac += 25; } - if (((player_ptr->pclass == CLASS_MONK) || (player_ptr->pclass == CLASS_FORCETRAINER)) && !heavy_armor(player_ptr)) { + if (((player_ptr->pclass == PlayerClassType::MONK) || (player_ptr->pclass == PlayerClassType::FORCETRAINER)) && !heavy_armor(player_ptr)) { if (!(player_ptr->inventory_list[INVEN_BODY].k_idx)) { ac += (player_ptr->lev * 3) / 2; } @@ -1763,7 +1764,7 @@ static ARMOUR_CLASS calc_to_ac(player_type *player_ptr, bool is_real_value) ac -= 10; } - if (player_ptr->pclass == CLASS_NINJA) { + if (player_ptr->pclass == PlayerClassType::NINJA) { if ((!player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx || can_attack_with_main_hand(player_ptr)) && (!player_ptr->inventory_list[INVEN_SUB_HAND].k_idx || can_attack_with_sub_hand(player_ptr))) { ac += player_ptr->lev / 2 + 5; @@ -1828,9 +1829,9 @@ static bool is_riding_two_hands(player_type *player_ptr) return true; else if (any_bits(player_ptr->pet_extra_flags, PF_TWO_HANDS)) { switch (player_ptr->pclass) { - case CLASS_MONK: - case CLASS_FORCETRAINER: - case CLASS_BERSERKER: + case PlayerClassType::MONK: + case PlayerClassType::FORCETRAINER: + case PlayerClassType::BERSERKER: if ((empty_hands(player_ptr, false) != EMPTY_HAND_NONE) && !has_melee_weapon(player_ptr, INVEN_MAIN_HAND) && !has_melee_weapon(player_ptr, INVEN_SUB_HAND)) return true; @@ -1851,7 +1852,7 @@ static int16_t calc_riding_bow_penalty(player_type *player_ptr) int16_t penalty = 0; - if ((player_ptr->pclass == CLASS_BEASTMASTER) || (player_ptr->pclass == CLASS_CAVALRY)) { + if ((player_ptr->pclass == PlayerClassType::BEASTMASTER) || (player_ptr->pclass == PlayerClassType::CAVALRY)) { if (player_ptr->tval_ammo != ItemKindType::ARROW) penalty = 5; } else { @@ -1943,7 +1944,7 @@ void put_equipment_warning(player_type *player_ptr) player_ptr->old_riding_ryoute = player_ptr->riding_ryoute; } - if (((player_ptr->pclass == CLASS_MONK) || (player_ptr->pclass == CLASS_FORCETRAINER) || (player_ptr->pclass == CLASS_NINJA)) + if (((player_ptr->pclass == PlayerClassType::MONK) || (player_ptr->pclass == PlayerClassType::FORCETRAINER) || (player_ptr->pclass == PlayerClassType::NINJA)) && (heavy_armor(player_ptr) != player_ptr->monk_notify_aux)) { if (heavy_armor(player_ptr)) { msg_print(_("装備が重くてバランスを取れない。", "The weight of your armor disrupts your balance.")); @@ -1978,20 +1979,20 @@ static int16_t calc_to_damage(player_type *player_ptr, INVENTORY_IDX slot, bool auto player_stun = player_ptr->effects()->stun(); damage -= player_stun->get_damage_penalty(); - if ((player_ptr->pclass == CLASS_PRIEST) && (flgs.has_not(TR_BLESSED)) && ((o_ptr->tval == ItemKindType::SWORD) || (o_ptr->tval == ItemKindType::POLEARM))) { + if ((player_ptr->pclass == PlayerClassType::PRIEST) && (flgs.has_not(TR_BLESSED)) && ((o_ptr->tval == ItemKindType::SWORD) || (o_ptr->tval == ItemKindType::POLEARM))) { damage -= 2; - } else if (player_ptr->pclass == CLASS_BERSERKER) { + } else if (player_ptr->pclass == PlayerClassType::BERSERKER) { damage += player_ptr->lev / 6; if (((calc_hand == PLAYER_HAND_MAIN) && !can_attack_with_sub_hand(player_ptr)) || has_two_handed_weapons(player_ptr)) { damage += player_ptr->lev / 6; } - } else if (player_ptr->pclass == CLASS_SORCERER) { + } else if (player_ptr->pclass == PlayerClassType::SORCERER) { if (!((o_ptr->tval == ItemKindType::HAFTED) && ((o_ptr->sval == SV_WIZSTAFF) || (o_ptr->sval == SV_NAMAKE_HAMMER)))) { damage -= 200; } else { damage -= 10; } - } else if (player_ptr->pclass == CLASS_FORCETRAINER) { + } else if (player_ptr->pclass == PlayerClassType::FORCETRAINER) { // 練気術師は格闘ダメージに (気)/5 の修正を得る。 if (is_martial_arts_mode(player_ptr) && calc_hand == PLAYER_HAND_MAIN) { damage += get_current_ki(player_ptr) / 5; @@ -2023,7 +2024,7 @@ static int16_t calc_to_damage(player_type *player_ptr, INVENTORY_IDX slot, bool continue; bonus_to_d = o_ptr->to_d; - if (player_ptr->pclass == CLASS_NINJA) { + if (player_ptr->pclass == PlayerClassType::NINJA) { if (o_ptr->to_d > 0) bonus_to_d = (o_ptr->to_d + 1) / 2; } @@ -2081,7 +2082,7 @@ static int16_t calc_to_damage(player_type *player_ptr, INVENTORY_IDX slot, bool } } - if (is_martial_arts_mode(player_ptr) && (!heavy_armor(player_ptr) || player_ptr->pclass != CLASS_BERSERKER)) { + if (is_martial_arts_mode(player_ptr) && (!heavy_armor(player_ptr) || player_ptr->pclass != PlayerClassType::BERSERKER)) { damage += (player_ptr->lev / 6); } @@ -2187,7 +2188,7 @@ static int16_t calc_to_hit(player_type *player_ptr, INVENTORY_IDX slot, bool is_ hit += 15; } else if (flgs.has_not(TR_RIDING)) { short penalty; - if ((player_ptr->pclass == CLASS_BEASTMASTER) || (player_ptr->pclass == CLASS_CAVALRY)) { + if ((player_ptr->pclass == PlayerClassType::BEASTMASTER) || (player_ptr->pclass == PlayerClassType::CAVALRY)) { penalty = 5; } else { penalty = r_info[player_ptr->current_floor_ptr->m_list[player_ptr->riding].r_idx].level - player_ptr->skill_exp[SKILL_RIDING] / 80; @@ -2202,14 +2203,14 @@ static int16_t calc_to_hit(player_type *player_ptr, INVENTORY_IDX slot, bool is_ } /* Class penalties */ - if ((player_ptr->pclass == CLASS_PRIEST) && (flgs.has_not(TR_BLESSED)) && ((o_ptr->tval == ItemKindType::SWORD) || (o_ptr->tval == ItemKindType::POLEARM))) { + if ((player_ptr->pclass == PlayerClassType::PRIEST) && (flgs.has_not(TR_BLESSED)) && ((o_ptr->tval == ItemKindType::SWORD) || (o_ptr->tval == ItemKindType::POLEARM))) { hit -= 2; - } else if (player_ptr->pclass == CLASS_BERSERKER) { + } else if (player_ptr->pclass == PlayerClassType::BERSERKER) { hit += player_ptr->lev / 5; if (((calc_hand == PLAYER_HAND_MAIN) && !can_attack_with_sub_hand(player_ptr)) || has_two_handed_weapons(player_ptr)) { hit += player_ptr->lev / 5; } - } else if (player_ptr->pclass == CLASS_SORCERER) { + } else if (player_ptr->pclass == PlayerClassType::SORCERER) { if (!((o_ptr->tval == ItemKindType::HAFTED) && ((o_ptr->sval == SV_WIZSTAFF) || (o_ptr->sval == SV_NAMAKE_HAMMER)))) { hit -= 200; } else { @@ -2254,7 +2255,7 @@ static int16_t calc_to_hit(player_type *player_ptr, INVENTORY_IDX slot, bool is_ int bonus_to_h = o_ptr->to_h; /* When wields only a weapon */ - if (player_ptr->pclass == CLASS_NINJA) { + if (player_ptr->pclass == PlayerClassType::NINJA) { if (o_ptr->to_h > 0) bonus_to_h = (o_ptr->to_h + 1) / 2; } @@ -2304,7 +2305,7 @@ static int16_t calc_to_hit(player_type *player_ptr, INVENTORY_IDX slot, bool is_ } /* Martial arts bonus */ - if (is_martial_arts_mode(player_ptr) && (!heavy_armor(player_ptr) || player_ptr->pclass != CLASS_BERSERKER)) { + if (is_martial_arts_mode(player_ptr) && (!heavy_armor(player_ptr) || player_ptr->pclass != PlayerClassType::BERSERKER)) { hit += (player_ptr->lev / 3); } @@ -2364,7 +2365,7 @@ static int16_t calc_to_hit_bow(player_type *player_ptr, bool is_real_value) if (o_ptr->k_idx) { if (o_ptr->k_idx && !is_heavy_shoot(player_ptr, &player_ptr->inventory_list[INVEN_BOW])) { - if ((player_ptr->pclass == CLASS_SNIPER) && (player_ptr->tval_ammo == ItemKindType::BOLT)) { + if ((player_ptr->pclass == PlayerClassType::SNIPER) && (player_ptr->tval_ammo == ItemKindType::BOLT)) { pow += (10 + (player_ptr->lev / 5)); } } @@ -2380,7 +2381,7 @@ static int16_t calc_to_hit_bow(player_type *player_ptr, bool is_real_value) bonus_to_h = o_ptr->to_h; - if (player_ptr->pclass == CLASS_NINJA) { + if (player_ptr->pclass == PlayerClassType::NINJA) { if (o_ptr->to_h > 0) bonus_to_h = (o_ptr->to_h + 1) / 2; } @@ -2406,7 +2407,7 @@ static int16_t calc_to_damage_misc(player_type *player_ptr) continue; int bonus_to_d = o_ptr->to_d; - if (player_ptr->pclass == CLASS_NINJA) { + if (player_ptr->pclass == PlayerClassType::NINJA) { if (o_ptr->to_d > 0) bonus_to_d = (o_ptr->to_d + 1) / 2; } @@ -2435,7 +2436,7 @@ static int16_t calc_to_hit_misc(player_type *player_ptr) continue; int bonus_to_h = o_ptr->to_h; - if (player_ptr->pclass == CLASS_NINJA) { + if (player_ptr->pclass == PlayerClassType::NINJA) { if (o_ptr->to_h > 0) bonus_to_h = (o_ptr->to_h + 1) / 2; } @@ -2476,7 +2477,7 @@ static DICE_NUMBER calc_to_weapon_dice_num(player_type *player_ptr, INVENTORY_ID WEIGHT calc_weight_limit(player_type *player_ptr) { WEIGHT i = (WEIGHT)adj_str_wgt[player_ptr->stat_index[A_STR]] * 50; - if (player_ptr->pclass == CLASS_BERSERKER) + if (player_ptr->pclass == PlayerClassType::BERSERKER) i = i * 3 / 2; return i; } @@ -2699,7 +2700,7 @@ void check_experience(player_type *player_ptr) if (player_ptr->lev > player_ptr->max_plv) { player_ptr->max_plv = player_ptr->lev; - if ((player_ptr->pclass == CLASS_CHAOS_WARRIOR) || player_ptr->muta.has(MUTA::CHAOS_GIFT)) { + if ((player_ptr->pclass == PlayerClassType::CHAOS_WARRIOR) || player_ptr->muta.has(MUTA::CHAOS_GIFT)) { level_reward = true; } if (player_ptr->prace == PlayerRaceType::BEASTMAN) { @@ -2902,7 +2903,7 @@ long calc_score(player_type *player_ptr) if (ironman_downward) point *= 2; - if (player_ptr->pclass == CLASS_BERSERKER) { + if (player_ptr->pclass == PlayerClassType::BERSERKER) { if (player_ptr->prace == PlayerRaceType::SPECTRE) point = point / 5; } @@ -2980,7 +2981,7 @@ bool is_hero(player_type *player_ptr) bool is_shero(player_type *player_ptr) { - return player_ptr->shero || player_ptr->pclass == CLASS_BERSERKER; + return player_ptr->shero || player_ptr->pclass == PlayerClassType::BERSERKER; } bool is_echizen(player_type *player_ptr) diff --git a/src/player/process-death.cpp b/src/player/process-death.cpp index 8e82122fe..3d079bf5b 100644 --- a/src/player/process-death.cpp +++ b/src/player/process-death.cpp @@ -216,7 +216,7 @@ void print_tomb(player_type *player_ptr) char buf[1024]; read_dead_file(buf, sizeof(buf)); concptr p = (w_ptr->total_winner || (player_ptr->lev > PY_MAX_LEVEL)) ? _("偉大なる者", "Magnificent") - : player_titles[player_ptr->pclass][(player_ptr->lev - 1) / 5].data(); + : player_titles[enum2i(player_ptr->pclass)][(player_ptr->lev - 1) / 5].data(); center_string(buf, player_ptr->name); put_str(buf, 6, 11); diff --git a/src/player/race-info-table.cpp b/src/player/race-info-table.cpp index 2e79b5d6f..709eb6bb7 100644 --- a/src/player/race-info-table.cpp +++ b/src/player/race-info-table.cpp @@ -147,8 +147,8 @@ const player_race_info race_info[MAX_RACES] = { { TR_SUST_STR }, { TR_REGEN, 15 }, - { TR_SLOW_DIGEST, 15, CLASS_WARRIOR }, - { TR_SLOW_DIGEST, 15, CLASS_BERSERKER }, + { TR_SLOW_DIGEST, 15, PlayerClassType::WARRIOR }, + { TR_SLOW_DIGEST, 15, PlayerClassType::BERSERKER }, }, }, { @@ -490,7 +490,7 @@ const player_race_info race_info[MAX_RACES] = { TR_IM_DARK }, { TR_RES_NETHER }, { TR_HOLD_EXP }, - { TR_LITE_1, 1, CLASS_NINJA, true }, + { TR_LITE_1, 1, PlayerClassType::NINJA, true }, }, }, { diff --git a/src/racial/class-racial-switcher.cpp b/src/racial/class-racial-switcher.cpp index fef3d9923..8262886e0 100644 --- a/src/racial/class-racial-switcher.cpp +++ b/src/racial/class-racial-switcher.cpp @@ -10,7 +10,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) { rpi_type rpi; switch (player_ptr->pclass) { - case CLASS_WARRIOR: + case PlayerClassType::WARRIOR: rpi = rpi_type(_("剣の舞い", "Sword Dancing")); rpi.text = _("ランダムな方向に数回攻撃する。", "Attacks some times to random directions."); rpi.min_level = 40; @@ -19,7 +19,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 35; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_HIGH_MAGE: + case PlayerClassType::HIGH_MAGE: if (player_ptr->realm1 == REALM_HEX) { rpi = rpi_type(_("詠唱をやめる", "Stop spell casting")); rpi.text = _("呪術の詠唱を全てやめる。", "Stops all casting hex spells."); @@ -31,8 +31,8 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) break; } /* Fall through */ - case CLASS_MAGE: - case CLASS_SORCERER: + case PlayerClassType::MAGE: + case PlayerClassType::SORCERER: rpi = rpi_type(_("魔力食い", "Eat Magic")); rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl * 2); rpi.text = _("魔法道具から魔力を吸収してMPを回復する。", "Absorbs mana from a magic device to heal your SP."); @@ -42,7 +42,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 25; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_PRIEST: + case PlayerClassType::PRIEST: if (is_good_realm(player_ptr->realm1)) { rpi = rpi_type(_("武器祝福", "Bless Weapon")); rpi.text = _("武器を祝福する。抵抗されることがある。", "Blesses a weapon. Some weapons can resist it."); @@ -63,7 +63,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) } break; - case CLASS_ROGUE: + case PlayerClassType::ROGUE: rpi = rpi_type(_("ヒット&アウェイ", "Hit and Away")); rpi.info = format("%s%d", KWD_SPHERE, 30); rpi.text = _("対象のモンスターを攻撃したあと短距離テレポートする。", "Attacks a monster then tereports you a short range."); @@ -73,8 +73,8 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 14; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_RANGER: - case CLASS_SNIPER: + case PlayerClassType::RANGER: + case PlayerClassType::SNIPER: rpi = rpi_type(_("モンスター調査", "Probe Monster")); rpi.text = _("モンスターの属性、残り体力、最大体力、スピード、正体を知る。", "Probes all monsters' alignment, HP, speed and their true character."); rpi.min_level = 15; @@ -83,7 +83,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 12; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_PALADIN: + case PlayerClassType::PALADIN: if (is_good_realm(player_ptr->realm1)) { rpi = rpi_type(_("ホーリー・ランス", "Holy Lance")); rpi.info = format("%s%d", KWD_DAM, rc_ptr->lvl * 3); @@ -105,7 +105,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) } break; - case CLASS_WARRIOR_MAGE: + case PlayerClassType::WARRIOR_MAGE: rpi = rpi_type(_("変換: HP→MP", "Convert HP to SP")); rpi.text = _("HPを少しMPに変換する。", "Transfers a few HP to SP."); rpi.min_level = 25; @@ -122,7 +122,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 10; rc_ptr->add_power(rpi, RC_IDX_CLASS_1); break; - case CLASS_CHAOS_WARRIOR: + case PlayerClassType::CHAOS_WARRIOR: rpi = rpi_type(_("幻惑の光", "Confusing Light")); rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl * 4); rpi.text = _("周辺のモンスターを減速・朦朧・混乱・朦朧・恐怖・睡眠させようとする。抵抗されると無効。", @@ -133,7 +133,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 25; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_MONK: + case PlayerClassType::MONK: rpi = rpi_type(_("構える", "Assume a Stance")); rpi.text = _("型に構えて特殊な能力を得る。", "Gains extra abilities with posing a 'kata'."); rpi.min_level = 25; @@ -150,8 +150,8 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 20; rc_ptr->add_power(rpi, -4); break; - case CLASS_MINDCRAFTER: - case CLASS_FORCETRAINER: + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::FORCETRAINER: rpi = rpi_type(_("明鏡止水", "Clear Mind")); rpi.info = format("%s%d", KWD_MANA, 3 + rc_ptr->lvl / 20); rpi.text = _("精神を集中してMPを少し回復する。", "Concentrates deeply to heal your SP a little."); @@ -161,7 +161,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 10; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_TOURIST: + case PlayerClassType::TOURIST: rpi = rpi_type(_("写真撮影", "Take a Photograph")); rpi.text = _("対象のモンスター1体の写真を撮影する。", "Takes a picture of a monster."); rpi.min_level = 1; @@ -178,7 +178,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 20; rc_ptr->add_power(rpi, -4); break; - case CLASS_IMITATOR: + case PlayerClassType::IMITATOR: rpi = rpi_type(_("倍返し", "Double Revenge")); rpi.text = _("威力を倍にしてものまねを行う。", "Fires an imitation a damage of which you makes doubled."); rpi.min_level = 30; @@ -187,7 +187,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 30; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_BEASTMASTER: + case PlayerClassType::BEASTMASTER: rpi = rpi_type(_("生物支配", "Dominate a Living Thing")); rpi.info = format("%s%d", KWD_POWER, rc_ptr->lvl); rpi.text = _("1体のモンスターをペットにする。抵抗されると無効。", "Attempts to charm a monster."); @@ -206,7 +206,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 10; rc_ptr->add_power(rpi, -4); break; - case CLASS_ARCHER: + case PlayerClassType::ARCHER: rpi = rpi_type(_("弾/矢の製造", "Create Ammo")); rpi.text = _("弾または矢を製造する。原料となるアイテムが必要。", "Creates ammos from materials."); rpi.min_level = 1; @@ -215,7 +215,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 0; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_MAGIC_EATER: + case PlayerClassType::MAGIC_EATER: rpi = rpi_type(_("魔力の取り込み", "Absorb Magic")); rpi.text = _("魔法道具を取りこんで魔力とする。取りこんだ魔法道具は取り出せない。", "Absorbs a magic device as your mana. Cannot take out it from your mana later."); @@ -233,7 +233,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 0; rc_ptr->add_power(rpi, -4); break; - case CLASS_BARD: + case PlayerClassType::BARD: rpi = rpi_type(_("歌を止める", "Stop Singing")); rpi.text = _("現在詠唱中の歌をやめる。", "Stops singing a song."); rpi.min_level = 1; @@ -242,7 +242,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 0; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_RED_MAGE: + case PlayerClassType::RED_MAGE: rpi = rpi_type(_("連続魔", "Double Magic")); rpi.text = _("1回の行動で2つの呪文を詠唱する。", "Casts two spells in an action."); rpi.min_level = 48; @@ -251,7 +251,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 0; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_SAMURAI: + case PlayerClassType::SAMURAI: rpi = rpi_type(_("気合いため", "Concentration")); rpi.text = _("気合を溜めてMPを増やす。上限値をある程度超えられる。", "Increases SP for Kendo over SP limit."); rpi.min_level = 1; @@ -268,7 +268,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 0; rc_ptr->add_power(rpi, -4); break; - case CLASS_BLUE_MAGE: + case PlayerClassType::BLUE_MAGE: rpi = rpi_type(_("ラーニング", "Learning")); rpi.text = _("青魔法の学習を開始または終了する。学習中はMPを消費する。", "Starts or ends to learn blue magics. Pays SP for upkeep costs during it."); rpi.min_level = 1; @@ -277,7 +277,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 0; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_CAVALRY: + case PlayerClassType::CAVALRY: rpi = rpi_type(_("荒馬ならし", "Rodeo")); rpi.text = _("対象のモンスターの無理やり乗馬しペットにする。", "Rides to target monster and tame it focibly."); rpi.min_level = 10; @@ -286,7 +286,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 10; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: rpi = rpi_type(_("帰還", "Recall")); rpi.text = _("地上にいるときはダンジョンの最深階へ、ダンジョンにいるときは地上へと移動する。", "Recalls player from dungeon to town or from town to the deepest level of dungeon."); @@ -296,7 +296,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 20; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: rpi = rpi_type(_("鏡割り", "Break Mirrors")); rpi.text = _("現在の階に設置した鏡を全て割る。割られた鏡はなくなり、破片属性のボールが発生する。", "Destroys all mirrors located in current level. They are deleted from the level."); rpi.min_level = 1; @@ -314,7 +314,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 20; rc_ptr->add_power(rpi, -4); break; - case CLASS_SMITH: + case PlayerClassType::SMITH: rpi = rpi_type(_("目利き", "Judgment")); rpi.text = _("武器・矢弾・防具を鑑定する。", "Identifies an equipment or an ammo object."); rpi.min_level = 5; @@ -323,7 +323,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 20; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_NINJA: + case PlayerClassType::NINJA: rpi = rpi_type(_("速駆け", "Quick Walk")); rpi.text = _("身体を酷使して素早く移動する。", "Moves quickly but cannot regenerate HP naturally."); rpi.min_level = 20; @@ -332,7 +332,7 @@ void switch_class_racial(player_type *player_ptr, rc_type *rc_ptr) rpi.fail = 0; rc_ptr->add_power(rpi, RC_IDX_CLASS_0); break; - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: rpi = rpi_type(_("明鏡止水", "Clear Mind")); rpi.info = format("%s%d", KWD_MANA, 3 + rc_ptr->lvl / 20); rpi.text = _("精神を集中してMPを少し回復する。", "Concentrates deeply to heal your SP a little."); diff --git a/src/racial/racial-draconian.cpp b/src/racial/racial-draconian.cpp index 15d82a0e4..c5b9da5c4 100644 --- a/src/racial/racial-draconian.cpp +++ b/src/racial/racial-draconian.cpp @@ -13,13 +13,13 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt return; switch (player_ptr->pclass) { - case CLASS_WARRIOR: - case CLASS_BERSERKER: - case CLASS_RANGER: - case CLASS_TOURIST: - case CLASS_IMITATOR: - case CLASS_ARCHER: - case CLASS_SMITH: + case PlayerClassType::WARRIOR: + case PlayerClassType::BERSERKER: + case PlayerClassType::RANGER: + case PlayerClassType::TOURIST: + case PlayerClassType::IMITATOR: + case PlayerClassType::ARCHER: + case PlayerClassType::SMITH: if (one_in_(3)) { *breath_type = GF_MISSILE; *breath_type_description = _("エレメント", "the elements"); @@ -29,14 +29,14 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_MAGE: - case CLASS_WARRIOR_MAGE: - case CLASS_HIGH_MAGE: - case CLASS_SORCERER: - case CLASS_MAGIC_EATER: - case CLASS_RED_MAGE: - case CLASS_BLUE_MAGE: - case CLASS_MIRROR_MASTER: + case PlayerClassType::MAGE: + case PlayerClassType::WARRIOR_MAGE: + case PlayerClassType::HIGH_MAGE: + case PlayerClassType::SORCERER: + case PlayerClassType::MAGIC_EATER: + case PlayerClassType::RED_MAGE: + case PlayerClassType::BLUE_MAGE: + case PlayerClassType::MIRROR_MASTER: if (one_in_(3)) { *breath_type = GF_MANA; *breath_type_description = _("魔力", "mana"); @@ -46,7 +46,7 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_CHAOS_WARRIOR: + case PlayerClassType::CHAOS_WARRIOR: if (!one_in_(3)) { *breath_type = GF_CONFUSION; *breath_type_description = _("混乱", "confusion"); @@ -56,9 +56,9 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_MONK: - case CLASS_SAMURAI: - case CLASS_FORCETRAINER: + case PlayerClassType::MONK: + case PlayerClassType::SAMURAI: + case PlayerClassType::FORCETRAINER: if (!one_in_(3)) { *breath_type = GF_CONFUSION; *breath_type_description = _("混乱", "confusion"); @@ -68,7 +68,7 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_MINDCRAFTER: + case PlayerClassType::MINDCRAFTER: if (!one_in_(3)) { *breath_type = GF_CONFUSION; *breath_type_description = _("混乱", "confusion"); @@ -78,8 +78,8 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_PRIEST: - case CLASS_PALADIN: + case PlayerClassType::PRIEST: + case PlayerClassType::PALADIN: if (one_in_(3)) { *breath_type = GF_HELL_FIRE; *breath_type_description = _("地獄の劫火", "hellfire"); @@ -89,8 +89,8 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_ROGUE: - case CLASS_NINJA: + case PlayerClassType::ROGUE: + case PlayerClassType::NINJA: if (one_in_(3)) { *breath_type = GF_DARK; *breath_type_description = _("暗黒", "darkness"); @@ -100,7 +100,7 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_BARD: + case PlayerClassType::BARD: if (!one_in_(3)) { *breath_type = GF_SOUND; *breath_type_description = _("轟音", "sound"); @@ -110,7 +110,7 @@ static void decide_breath_kind(player_type *player_ptr, int *breath_type, concpt } break; - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: *breath_type = get_element_type(player_ptr->element, 0); *breath_type_description = get_element_name(player_ptr->element, 0); break; diff --git a/src/racial/racial-switcher.cpp b/src/racial/racial-switcher.cpp index d3928f4ca..71f437ff9 100644 --- a/src/racial/racial-switcher.cpp +++ b/src/racial/racial-switcher.cpp @@ -88,9 +88,9 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman { DIRECTION dir = 0; switch (player_ptr->pclass) { - case CLASS_WARRIOR: + case PlayerClassType::WARRIOR: return sword_dancing(player_ptr); - case CLASS_HIGH_MAGE: + case PlayerClassType::HIGH_MAGE: if (player_ptr->realm1 == REALM_HEX) { auto retval = SpellHex(player_ptr).stop_spells_with_selection(); if (retval) { @@ -101,10 +101,10 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman } /* Fall through */ - case CLASS_MAGE: - case CLASS_SORCERER: + case PlayerClassType::MAGE: + case PlayerClassType::SORCERER: return eat_magic(player_ptr, player_ptr->lev * 2); - case CLASS_PRIEST: + case PlayerClassType::PRIEST: if (!is_good_realm(player_ptr->realm1)) { (void)dispel_monsters(player_ptr, player_ptr->lev * 4); turn_monsters(player_ptr, player_ptr->lev * 4); @@ -113,29 +113,29 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman } return bless_weapon(player_ptr); - case CLASS_ROGUE: + case PlayerClassType::ROGUE: return hit_and_away(player_ptr); - case CLASS_RANGER: - case CLASS_SNIPER: + case PlayerClassType::RANGER: + case PlayerClassType::SNIPER: msg_print(_("敵を調査した...", "You examine your foes...")); probing(player_ptr); return true; - case CLASS_PALADIN: + case PlayerClassType::PALADIN: if (!get_aim_dir(player_ptr, &dir)) return false; fire_beam(player_ptr, is_good_realm(player_ptr->realm1) ? GF_HOLY_FIRE : GF_HELL_FIRE, dir, player_ptr->lev * 3); return true; - case CLASS_WARRIOR_MAGE: + case PlayerClassType::WARRIOR_MAGE: if (command == -3) return comvert_hp_to_mp(player_ptr); else if (command == -4) return comvert_mp_to_hp(player_ptr); return true; - case CLASS_CHAOS_WARRIOR: + case PlayerClassType::CHAOS_WARRIOR: return confusing_light(player_ptr); - case CLASS_MONK: + case PlayerClassType::MONK: if (none_bits(empty_hands(player_ptr, true), EMPTY_HAND_MAIN)) { msg_print(_("素手じゃないとできません。", "You need to be barehanded.")); return false; @@ -158,10 +158,10 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman return double_attack(player_ptr); return true; - case CLASS_MINDCRAFTER: - case CLASS_FORCETRAINER: + case PlayerClassType::MINDCRAFTER: + case PlayerClassType::FORCETRAINER: return clear_mind(player_ptr); - case CLASS_TOURIST: + case PlayerClassType::TOURIST: if (command == -3) { if (!get_aim_dir(player_ptr, &dir)) return false; @@ -172,10 +172,10 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman } return (command != -4) || identify_fully(player_ptr, false); - case CLASS_IMITATOR: + case PlayerClassType::IMITATOR: handle_stuff(player_ptr); return do_cmd_mane(player_ptr, true); - case CLASS_BEASTMASTER: + case PlayerClassType::BEASTMASTER: if (command == -3) { if (!get_aim_dir(player_ptr, &dir)) return false; @@ -188,21 +188,21 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman project_all_los(player_ptr, GF_CHARM_LIVING, player_ptr->lev); return true; - case CLASS_ARCHER: + case PlayerClassType::ARCHER: return create_ammo(player_ptr); - case CLASS_MAGIC_EATER: + case PlayerClassType::MAGIC_EATER: if (command == -3) return import_magic_device(player_ptr); return (command != -4) || (!cmd_limit_cast(player_ptr) && do_cmd_magic_eater(player_ptr, false, true)); - case CLASS_BARD: + case PlayerClassType::BARD: if ((get_singing_song_effect(player_ptr) == 0) && (get_interrupting_song_effect(player_ptr) == 0)) return false; stop_singing(player_ptr); PlayerEnergy(player_ptr).set_player_turn_energy(10); return true; - case CLASS_RED_MAGE: + case PlayerClassType::RED_MAGE: if (cmd_limit_cast(player_ptr)) return false; @@ -216,7 +216,7 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman (void)do_cmd_cast(player_ptr); } return true; - case CLASS_SAMURAI: + case PlayerClassType::SAMURAI: if (command == -3) { concentration(player_ptr); return true; @@ -235,20 +235,20 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman set_bits(player_ptr->update, PU_BONUS); return true; - case CLASS_BLUE_MAGE: + case PlayerClassType::BLUE_MAGE: set_action(player_ptr, player_ptr->action == ACTION_LEARN ? ACTION_NONE : ACTION_LEARN); PlayerEnergy(player_ptr).reset_player_turn(); return true; - case CLASS_CAVALRY: + case PlayerClassType::CAVALRY: return rodeo(player_ptr); - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: return recall_player(player_ptr, randint0(21) + 15); - case CLASS_SMITH: + case PlayerClassType::SMITH: if (player_ptr->lev <= 29) return ident_spell(player_ptr, true); return identify_fully(player_ptr, true); - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: if (command == -3) { remove_all_mirrors(player_ptr, true); return true; @@ -258,9 +258,9 @@ bool switch_class_racial_execution(player_type *player_ptr, const int32_t comman return mirror_concentration(player_ptr); return true; - case CLASS_NINJA: + case PlayerClassType::NINJA: return hayagake(player_ptr); - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: if (command == -3) return clear_mind(player_ptr); if (command == -4) diff --git a/src/racial/racial-util.cpp b/src/racial/racial-util.cpp index ed408a337..9ca660d8b 100644 --- a/src/racial/racial-util.cpp +++ b/src/racial/racial-util.cpp @@ -7,7 +7,7 @@ rc_type::rc_type(player_type *player_ptr) { this->ask = true; this->lvl = player_ptr->lev; - this->is_warrior = (player_ptr->pclass == CLASS_WARRIOR || player_ptr->pclass == CLASS_BERSERKER); + this->is_warrior = (player_ptr->pclass == PlayerClassType::WARRIOR || player_ptr->pclass == PlayerClassType::BERSERKER); } void rc_type::add_power(rpi_type& rpi, int number) diff --git a/src/realm/realm-crusade.cpp b/src/realm/realm-crusade.cpp index c3f5f2f0f..d80980c06 100644 --- a/src/realm/realm-crusade.cpp +++ b/src/realm/realm-crusade.cpp @@ -210,7 +210,7 @@ concptr do_crusade_spell(player_type *player_ptr, SPELL_IDX spell, spell_type mo DICE_SID sides = 6; POSITION rad = (plev < 30) ? 2 : 3; int base; - if (player_ptr->pclass == CLASS_PRIEST || player_ptr->pclass == CLASS_HIGH_MAGE || player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::PRIEST || player_ptr->pclass == PlayerClassType::HIGH_MAGE || player_ptr->pclass == PlayerClassType::SORCERER) base = plev + plev / 2; else base = plev + plev / 4; diff --git a/src/realm/realm-trump.cpp b/src/realm/realm-trump.cpp index edd6297f1..e7e19b81f 100644 --- a/src/realm/realm-trump.cpp +++ b/src/realm/realm-trump.cpp @@ -233,7 +233,7 @@ concptr do_trump_spell(player_type *player_ptr, SPELL_IDX spell, spell_type mode y = player_ptr->y; } - if (player_ptr->pclass == CLASS_BEASTMASTER) + if (player_ptr->pclass == PlayerClassType::BEASTMASTER) type = SUMMON_KAMIKAZE_LIVING; else type = SUMMON_KAMIKAZE; @@ -439,7 +439,7 @@ concptr do_trump_spell(player_type *player_ptr, SPELL_IDX spell, spell_type mode if (cast || fail) { summon_type type; msg_print(_("あなたはモンスターのカードに集中する...", "You concentrate on several trumps at once...")); - if (player_ptr->pclass == CLASS_BEASTMASTER) + if (player_ptr->pclass == PlayerClassType::BEASTMASTER) type = SUMMON_LIVING; else type = SUMMON_NONE; @@ -661,7 +661,7 @@ concptr do_trump_spell(player_type *player_ptr, SPELL_IDX spell, spell_type mode if (cast) { summon_type type; - if (player_ptr->pclass == CLASS_BEASTMASTER) + if (player_ptr->pclass == PlayerClassType::BEASTMASTER) type = SUMMON_HI_DRAGON_LIVING; else type = SUMMON_HI_DRAGON; diff --git a/src/save/player-writer.cpp b/src/save/player-writer.cpp index f05d16c7b..e24566e18 100644 --- a/src/save/player-writer.cpp +++ b/src/save/player-writer.cpp @@ -21,7 +21,7 @@ */ static void wr_relams(player_type *player_ptr) { - if (player_ptr->pclass == CLASS_ELEMENTALIST) + if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) wr_byte((byte)player_ptr->element); else wr_byte((byte)player_ptr->realm1); diff --git a/src/specific-object/death-crimson.cpp b/src/specific-object/death-crimson.cpp index 80b1ca0d3..acadf35eb 100644 --- a/src/specific-object/death-crimson.cpp +++ b/src/specific-object/death-crimson.cpp @@ -32,7 +32,7 @@ static bool fire_crimson(player_type *player_ptr) } int num = 1; - if (player_ptr->pclass == CLASS_ARCHER) { + if (player_ptr->pclass == PlayerClassType::ARCHER) { if (player_ptr->lev >= 10) num++; diff --git a/src/specific-object/death-scythe.cpp b/src/specific-object/death-scythe.cpp index edbf32449..d9b728454 100644 --- a/src/specific-object/death-scythe.cpp +++ b/src/specific-object/death-scythe.cpp @@ -104,7 +104,7 @@ static void compensate_death_scythe_reflection_magnification(player_type *player if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr)) && (*magnification < 25)) *magnification = 25; - if ((player_ptr->pclass != CLASS_SAMURAI) && (death_scythe_flags.has(TR_FORCE_WEAPON)) && (player_ptr->csp > (player_ptr->msp / 30))) { + if ((player_ptr->pclass != PlayerClassType::SAMURAI) && (death_scythe_flags.has(TR_FORCE_WEAPON)) && (player_ptr->csp > (player_ptr->msp / 30))) { player_ptr->csp -= (1 + (player_ptr->msp / 30)); player_ptr->redraw |= (PR_MANA); *magnification = *magnification * 3 / 2 + 20; diff --git a/src/spell-kind/spells-random.cpp b/src/spell-kind/spells-random.cpp index ba3901a84..917f4a01b 100644 --- a/src/spell-kind/spells-random.cpp +++ b/src/spell-kind/spells-random.cpp @@ -180,7 +180,7 @@ bool activate_ty_curse(player_type *player_ptr, bool stop_ty, int *count) case 20: { auto is_statue = stop_ty; is_statue |= player_ptr->free_act && (randint1(125) < player_ptr->skill_sav); - is_statue |= player_ptr->pclass == CLASS_BERSERKER; + is_statue |= player_ptr->pclass == PlayerClassType::BERSERKER; if (!is_statue) { msg_print(_("彫像になった気分だ!", "You feel like a statue!")); TIME_EFFECT turns = player_ptr->free_act ? randint1(3) : randint1(13); diff --git a/src/spell-kind/spells-teleport.cpp b/src/spell-kind/spells-teleport.cpp index d5ab36c8c..f0cec3dac 100644 --- a/src/spell-kind/spells-teleport.cpp +++ b/src/spell-kind/spells-teleport.cpp @@ -512,7 +512,7 @@ void teleport_away_followable(player_type *player_ptr, MONSTER_IDX m_idx) return; bool follow = false; - if (player_ptr->muta.has(MUTA::VTELEPORT) || (player_ptr->pclass == CLASS_IMITATOR)) + if (player_ptr->muta.has(MUTA::VTELEPORT) || (player_ptr->pclass == PlayerClassType::IMITATOR)) follow = true; else { object_type *o_ptr; diff --git a/src/spell-realm/spells-song.cpp b/src/spell-realm/spells-song.cpp index a3f258cfb..64340c428 100644 --- a/src/spell-realm/spells-song.cpp +++ b/src/spell-realm/spells-song.cpp @@ -25,7 +25,7 @@ */ void check_music(player_type *player_ptr) { - if (player_ptr->pclass != CLASS_BARD) + if (player_ptr->pclass != PlayerClassType::BARD) return; auto interupting_song_effect = get_interrupting_song_effect(player_ptr); @@ -127,7 +127,7 @@ bool set_tim_stealth(player_type *player_ptr, TIME_EFFECT v, bool do_dec) */ void stop_singing(player_type *player_ptr) { - if (player_ptr->pclass != CLASS_BARD) + if (player_ptr->pclass != PlayerClassType::BARD) return; if (get_interrupting_song_effect(player_ptr) != 0) { diff --git a/src/spell-realm/spells-trump.cpp b/src/spell-realm/spells-trump.cpp index a9157db31..d2cd94a4e 100644 --- a/src/spell-realm/spells-trump.cpp +++ b/src/spell-realm/spells-trump.cpp @@ -34,7 +34,7 @@ void cast_shuffle(player_type *player_ptr) int vir = virtue_number(player_ptr, V_CHANCE); int i; - if ((player_ptr->pclass == CLASS_ROGUE) || (player_ptr->pclass == CLASS_HIGH_MAGE) || (player_ptr->pclass == CLASS_SORCERER)) + if ((player_ptr->pclass == PlayerClassType::ROGUE) || (player_ptr->pclass == PlayerClassType::HIGH_MAGE) || (player_ptr->pclass == PlayerClassType::SORCERER)) die = (randint1(110)) + plev / 5; else die = randint1(120); diff --git a/src/spell/spell-info.cpp b/src/spell/spell-info.cpp index 5c226cc3b..d2aeceffc 100644 --- a/src/spell/spell-info.cpp +++ b/src/spell/spell-info.cpp @@ -34,9 +34,9 @@ static const int extra_min_magic_fail_rate = 2; */ EXP experience_of_spell(player_type *player_ptr, SPELL_IDX spell, int16_t use_realm) { - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::SORCERER) return SPELL_EXP_MASTER; - else if (player_ptr->pclass == CLASS_RED_MAGE) + else if (player_ptr->pclass == PlayerClassType::RED_MAGE) return SPELL_EXP_SKILLED; else if (use_realm == player_ptr->realm1) return player_ptr->spell_exp[spell]; @@ -158,7 +158,7 @@ PERCENTAGE spell_chance(player_type *player_ptr, SPELL_IDX spell, int16_t use_re chance += 5 * (need_mana - player_ptr->csp); } - if ((use_realm != player_ptr->realm1) && ((player_ptr->pclass == CLASS_MAGE) || (player_ptr->pclass == CLASS_PRIEST))) + if ((use_realm != player_ptr->realm1) && ((player_ptr->pclass == PlayerClassType::MAGE) || (player_ptr->pclass == PlayerClassType::PRIEST))) chance += 5; PERCENTAGE minfail = adj_mag_fail[player_ptr->stat_index[mp_ptr->spell_stat]]; @@ -167,9 +167,9 @@ PERCENTAGE spell_chance(player_type *player_ptr, SPELL_IDX spell, int16_t use_re minfail = 5; } - if (((player_ptr->pclass == CLASS_PRIEST) || (player_ptr->pclass == CLASS_SORCERER)) && player_ptr->is_icky_wield[0]) + if (((player_ptr->pclass == PlayerClassType::PRIEST) || (player_ptr->pclass == PlayerClassType::SORCERER)) && player_ptr->is_icky_wield[0]) chance += 25; - if (((player_ptr->pclass == CLASS_PRIEST) || (player_ptr->pclass == CLASS_SORCERER)) && player_ptr->is_icky_wield[1]) + if (((player_ptr->pclass == PlayerClassType::PRIEST) || (player_ptr->pclass == PlayerClassType::SORCERER)) && player_ptr->is_icky_wield[1]) chance += 25; chance = mod_spell_chance_1(player_ptr, chance); @@ -201,8 +201,8 @@ PERCENTAGE spell_chance(player_type *player_ptr, SPELL_IDX spell, int16_t use_re chance = 95; } - if ((use_realm == player_ptr->realm1) || (use_realm == player_ptr->realm2) || (player_ptr->pclass == CLASS_SORCERER) - || (player_ptr->pclass == CLASS_RED_MAGE)) { + if ((use_realm == player_ptr->realm1) || (use_realm == player_ptr->realm2) || (player_ptr->pclass == PlayerClassType::SORCERER) + || (player_ptr->pclass == PlayerClassType::RED_MAGE)) { EXP exp = experience_of_spell(player_ptr, spell, use_realm); if (exp >= SPELL_EXP_EXPERT) chance--; @@ -240,7 +240,7 @@ void print_spells(player_type *player_ptr, SPELL_IDX target_spell, SPELL_IDX *sp put_str(buf, y, x + 29); int increment = 64; - if ((player_ptr->pclass == CLASS_SORCERER) || (player_ptr->pclass == CLASS_RED_MAGE)) + if ((player_ptr->pclass == PlayerClassType::SORCERER) || (player_ptr->pclass == PlayerClassType::RED_MAGE)) increment = 0; else if (use_realm == player_ptr->realm1) increment = 0; @@ -281,7 +281,7 @@ void print_spells(player_type *player_ptr, SPELL_IDX target_spell, SPELL_IDX *sp max = true; else if (s_ptr->slevel >= 99) max = true; - else if ((player_ptr->pclass == CLASS_RED_MAGE) && (exp_level >= EXP_LEVEL_SKILLED)) + else if ((player_ptr->pclass == PlayerClassType::RED_MAGE) && (exp_level >= EXP_LEVEL_SKILLED)) max = true; strncpy(ryakuji, exp_level_str[exp_level], 4); @@ -306,7 +306,7 @@ void print_spells(player_type *player_ptr, SPELL_IDX target_spell, SPELL_IDX *sp strcpy(info, exe_spell(player_ptr, use_realm, spell, SPELL_INFO)); concptr comment = info; byte line_attr = TERM_WHITE; - if ((player_ptr->pclass == CLASS_SORCERER) || (player_ptr->pclass == CLASS_RED_MAGE)) { + if ((player_ptr->pclass == PlayerClassType::SORCERER) || (player_ptr->pclass == PlayerClassType::RED_MAGE)) { if (s_ptr->slevel > player_ptr->max_plv) { comment = _("未知", "unknown"); line_attr = TERM_L_BLUE; diff --git a/src/spell/spells-diceroll.cpp b/src/spell/spells-diceroll.cpp index 1ed9c7c5c..ab490f10a 100644 --- a/src/spell/spells-diceroll.cpp +++ b/src/spell/spells-diceroll.cpp @@ -88,9 +88,9 @@ bool common_saving_throw_control(player_type *player_ptr, HIT_POINT pow, monster */ PERCENTAGE beam_chance(player_type *player_ptr) { - if (player_ptr->pclass == CLASS_MAGE) + if (player_ptr->pclass == PlayerClassType::MAGE) return (PERCENTAGE)(player_ptr->lev); - if (player_ptr->pclass == CLASS_HIGH_MAGE || player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::HIGH_MAGE || player_ptr->pclass == PlayerClassType::SORCERER) return (PERCENTAGE)(player_ptr->lev + 10); return (PERCENTAGE)(player_ptr->lev / 2); diff --git a/src/spell/spells-staff-only.cpp b/src/spell/spells-staff-only.cpp index 58bca870a..81e0ea8c4 100644 --- a/src/spell/spells-staff-only.cpp +++ b/src/spell/spells-staff-only.cpp @@ -63,12 +63,12 @@ bool unleash_mana_storm(player_type *player_ptr, bool powerful) project(player_ptr, 0, (powerful ? 7 : 5), player_ptr->y, player_ptr->x, (randint1(200) + (powerful ? 500 : 300)) * 2, GF_MANA, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID); - bool is_special_class = player_ptr->pclass != CLASS_MAGE; - is_special_class &= player_ptr->pclass != CLASS_HIGH_MAGE; - is_special_class &= player_ptr->pclass != CLASS_SORCERER; - is_special_class &= player_ptr->pclass != CLASS_MAGIC_EATER; - is_special_class &= player_ptr->pclass != CLASS_BLUE_MAGE; - is_special_class &= player_ptr->pclass != CLASS_ELEMENTALIST; + bool is_special_class = player_ptr->pclass != PlayerClassType::MAGE; + is_special_class &= player_ptr->pclass != PlayerClassType::HIGH_MAGE; + is_special_class &= player_ptr->pclass != PlayerClassType::SORCERER; + is_special_class &= player_ptr->pclass != PlayerClassType::MAGIC_EATER; + is_special_class &= player_ptr->pclass != PlayerClassType::BLUE_MAGE; + is_special_class &= player_ptr->pclass != PlayerClassType::ELEMENTALIST; if (is_special_class) (void)take_hit(player_ptr, DAMAGE_NOESCAPE, 50, _("コントロールし難い強力な魔力の解放", "unleashing magics too mighty to control")); diff --git a/src/spell/spells-status.cpp b/src/spell/spells-status.cpp index 78009bf52..f63503e89 100644 --- a/src/spell/spells-status.cpp +++ b/src/spell/spells-status.cpp @@ -459,7 +459,7 @@ bool true_healing(player_type *player_ptr, HIT_POINT pow) bool restore_mana(player_type *player_ptr, bool magic_eater) { - if (player_ptr->pclass == CLASS_MAGIC_EATER && magic_eater) { + if (player_ptr->pclass == PlayerClassType::MAGIC_EATER && magic_eater) { // 魔力復活による、魔道具術師の取り込んだ魔法の回復量 // 取り込み数が10回未満: 3 回分回復 // 取り込み数が10回以上: 取り込み回数/3 回分回復 @@ -587,7 +587,7 @@ bool cosmic_cast_off(player_type *player_ptr, object_type **o_ptr_ptr) (void)set_blessed(player_ptr, player_ptr->blessed + t, false); (void)set_fast(player_ptr, player_ptr->fast + t, false); (void)set_shero(player_ptr, player_ptr->shero + t, false); - if (player_ptr->pclass == CLASS_FORCETRAINER) { + if (player_ptr->pclass == PlayerClassType::FORCETRAINER) { set_current_ki(player_ptr, true, player_ptr->lev * 5 + 190); msg_print(_("気が爆発寸前になった。", "Your force absorbs the explosion.")); } diff --git a/src/status/buff-setter.cpp b/src/status/buff-setter.cpp index 67a76401f..e6b569a8f 100644 --- a/src/status/buff-setter.cpp +++ b/src/status/buff-setter.cpp @@ -98,7 +98,7 @@ void reset_tim_flags(player_type *player_ptr) (void)set_monster_invulner(player_ptr, player_ptr->riding, 0, false); } - if (player_ptr->pclass == CLASS_BARD) { + if (player_ptr->pclass == PlayerClassType::BARD) { set_singing_song_effect(player_ptr, MUSIC_NONE); set_singing_song_id(player_ptr, 0); } @@ -380,7 +380,7 @@ bool set_shero(player_type *player_ptr, TIME_EFFECT v, bool do_dec) if (player_ptr->is_dead) return false; - if (player_ptr->pclass == CLASS_BERSERKER) { + if (player_ptr->pclass == PlayerClassType::BERSERKER) { v = 1; return false; } diff --git a/src/status/element-resistance.cpp b/src/status/element-resistance.cpp index 6d7d8a2c3..053a4d410 100644 --- a/src/status/element-resistance.cpp +++ b/src/status/element-resistance.cpp @@ -190,7 +190,7 @@ bool set_oppose_pois(player_type *player_ptr, TIME_EFFECT v, bool do_dec) { bool notice = false; v = (v > 10000) ? 10000 : (v < 0) ? 0 : v; - if ((player_ptr->pclass == CLASS_NINJA) && (player_ptr->lev > 44)) + if ((player_ptr->pclass == PlayerClassType::NINJA) && (player_ptr->lev > 44)) v = 1; if (player_ptr->is_dead) return false; @@ -247,5 +247,5 @@ bool is_oppose_cold(player_type *player_ptr) bool is_oppose_pois(player_type *player_ptr) { return player_ptr->oppose_pois || music_singing(player_ptr, MUSIC_RESIST) - || (PlayerClass(player_ptr).samurai_stance_is(SamuraiStance::MUSOU) || (player_ptr->pclass == CLASS_NINJA && player_ptr->lev > 44)); + || (PlayerClass(player_ptr).samurai_stance_is(SamuraiStance::MUSOU) || (player_ptr->pclass == PlayerClassType::NINJA && player_ptr->lev > 44)); } diff --git a/src/status/shape-changer.cpp b/src/status/shape-changer.cpp index 9839c6221..2e37fe4e8 100644 --- a/src/status/shape-changer.cpp +++ b/src/status/shape-changer.cpp @@ -76,9 +76,9 @@ void change_race(player_type *player_ptr, PlayerRaceType new_race, concptr effec rp_ptr = &race_info[enum2i(player_ptr->prace)]; player_ptr->expfact = rp_ptr->r_exp + cp_ptr->c_exp; - bool is_special_class = player_ptr->pclass == CLASS_MONK; - is_special_class |= player_ptr->pclass == CLASS_FORCETRAINER; - is_special_class |= player_ptr->pclass == CLASS_NINJA; + bool is_special_class = player_ptr->pclass == PlayerClassType::MONK; + is_special_class |= player_ptr->pclass == PlayerClassType::FORCETRAINER; + is_special_class |= player_ptr->pclass == PlayerClassType::NINJA; bool is_special_race = player_ptr->prace == PlayerRaceType::KLACKON; is_special_race |= player_ptr->prace == PlayerRaceType::SPRITE; if (is_special_class && is_special_race) @@ -86,7 +86,7 @@ void change_race(player_type *player_ptr, PlayerRaceType new_race, concptr effec get_height_weight(player_ptr); - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::SORCERER) player_ptr->hitdie = rp_ptr->r_mhp / 2 + cp_ptr->c_mhp + ap_ptr->a_mhp; else player_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp; diff --git a/src/store/store-key-processor.cpp b/src/store/store-key-processor.cpp index fd08a16f4..007ad7b80 100644 --- a/src/store/store-key-processor.cpp +++ b/src/store/store-key-processor.cpp @@ -148,16 +148,16 @@ void store_process_command(player_type *player_ptr) break; } case 'b': { - if ((player_ptr->pclass == CLASS_MINDCRAFTER) || (player_ptr->pclass == CLASS_BERSERKER) || (player_ptr->pclass == CLASS_NINJA) - || (player_ptr->pclass == CLASS_MIRROR_MASTER)) + if ((player_ptr->pclass == PlayerClassType::MINDCRAFTER) || (player_ptr->pclass == PlayerClassType::BERSERKER) || (player_ptr->pclass == PlayerClassType::NINJA) + || (player_ptr->pclass == PlayerClassType::MIRROR_MASTER)) do_cmd_mind_browse(player_ptr); - else if (player_ptr->pclass == CLASS_ELEMENTALIST) + else if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) do_cmd_element_browse(player_ptr); - else if (player_ptr->pclass == CLASS_SMITH) + else if (player_ptr->pclass == PlayerClassType::SMITH) do_cmd_kaji(player_ptr, true); - else if (player_ptr->pclass == CLASS_MAGIC_EATER) + else if (player_ptr->pclass == PlayerClassType::MAGIC_EATER) do_cmd_magic_eater(player_ptr, true, false); - else if (player_ptr->pclass == CLASS_SNIPER) + else if (player_ptr->pclass == PlayerClassType::SNIPER) do_cmd_snipe_browse(player_ptr); else do_cmd_browse(player_ptr); diff --git a/src/view/display-player-middle.cpp b/src/view/display-player-middle.cpp index 42e67ff4e..eeabbcc14 100644 --- a/src/view/display-player-middle.cpp +++ b/src/view/display-player-middle.cpp @@ -68,7 +68,7 @@ static void display_sub_hand(player_type *player_ptr) return; } - if ((player_ptr->pclass != CLASS_MONK) || ((empty_hands(player_ptr, true) & EMPTY_HAND_MAIN) == 0)) + if ((player_ptr->pclass != PlayerClassType::MONK) || ((empty_hands(player_ptr, true) & EMPTY_HAND_MAIN) == 0)) return; PlayerClass pc(player_ptr); diff --git a/src/view/display-player.cpp b/src/view/display-player.cpp index 68ba7b212..0ea6dbd8a 100644 --- a/src/view/display-player.cpp +++ b/src/view/display-player.cpp @@ -104,7 +104,7 @@ static void display_magic_realms(player_type *player_ptr) return; char tmp[64]; - if (player_ptr->pclass == CLASS_ELEMENTALIST) + if (player_ptr->pclass == PlayerClassType::ELEMENTALIST) sprintf(tmp, "%s", get_element_title(player_ptr->element)); else if (player_ptr->realm2) sprintf(tmp, "%s, %s", realm_names[player_ptr->realm1], realm_names[player_ptr->realm2]); @@ -312,7 +312,7 @@ void display_player(player_type *player_ptr, int mode) display_player_basic_info(player_ptr); display_magic_realms(player_ptr); - if ((player_ptr->pclass == CLASS_CHAOS_WARRIOR) || (player_ptr->muta.has(MUTA::CHAOS_GIFT))) + if ((player_ptr->pclass == PlayerClassType::CHAOS_WARRIOR) || (player_ptr->muta.has(MUTA::CHAOS_GIFT))) display_player_one_line(ENTRY_PATRON, patron_list[player_ptr->chaos_patron].name.c_str(), TERM_L_BLUE); display_phisique(player_ptr); diff --git a/src/view/object-describer.cpp b/src/view/object-describer.cpp index 63966d4ae..a548deb8a 100644 --- a/src/view/object-describer.cpp +++ b/src/view/object-describer.cpp @@ -98,11 +98,11 @@ void display_koff(player_type *player_ptr, KIND_OBJECT_IDX k_idx) if ((use_realm != player_ptr->realm1) && (use_realm != player_ptr->realm2)) return; } else { - if ((player_ptr->pclass != CLASS_SORCERER) && (player_ptr->pclass != CLASS_RED_MAGE)) + if ((player_ptr->pclass != PlayerClassType::SORCERER) && (player_ptr->pclass != PlayerClassType::RED_MAGE)) return; if (!is_magic(use_realm)) return; - if ((player_ptr->pclass == CLASS_RED_MAGE) && (use_realm != REALM_ARCANE) && (sval > 1)) + if ((player_ptr->pclass == PlayerClassType::RED_MAGE) && (use_realm != REALM_ARCANE) && (sval > 1)) return; } diff --git a/src/view/status-first-page.cpp b/src/view/status-first-page.cpp index 22eb87c70..177863689 100644 --- a/src/view/status-first-page.cpp +++ b/src/view/status-first-page.cpp @@ -52,7 +52,7 @@ static void calc_shot_params(player_type *player_ptr, object_type *o_ptr, int *s *shots = 1; *shot_frac = 0; - if (player_ptr->pclass != CLASS_ARCHER) + if (player_ptr->pclass != PlayerClassType::ARCHER) return; if (player_ptr->lev >= 10) @@ -80,7 +80,7 @@ static bool calc_weapon_damage_limit(player_type *player_ptr, int hand, int *dam return false; } - if (player_ptr->pclass == CLASS_FORCETRAINER) + if (player_ptr->pclass == PlayerClassType::FORCETRAINER) level = MAX(1, level - 3); PlayerClass pc(player_ptr); if (pc.monk_stance_is(MonkStance::BYAKKO)) @@ -144,7 +144,7 @@ static int strengthen_basedam(player_type *player_ptr, object_type *o_ptr, int b } // 理力 - bool is_force = player_ptr->pclass != CLASS_SAMURAI; + bool is_force = player_ptr->pclass != PlayerClassType::SAMURAI; is_force &= flgs.has(TR_FORCE_WEAPON); is_force &= player_ptr->csp > (o_ptr->dd * o_ptr->ds / 5); if (is_force) @@ -252,7 +252,7 @@ static void calc_two_hands(player_type *player_ptr, int *damage, int *to_h) for (int i = 0; i < 2; i++) { int basedam; damage[i] = player_ptr->dis_to_d[i] * 100; - if (((player_ptr->pclass == CLASS_MONK) || (player_ptr->pclass == CLASS_FORCETRAINER)) && (empty_hands(player_ptr, true) & EMPTY_HAND_MAIN)) { + if (((player_ptr->pclass == PlayerClassType::MONK) || (player_ptr->pclass == PlayerClassType::FORCETRAINER)) && (empty_hands(player_ptr, true) & EMPTY_HAND_MAIN)) { if (!calc_weapon_damage_limit(player_ptr, i, damage, &basedam, o_ptr)) break; diff --git a/src/window/display-sub-window-spells.cpp b/src/window/display-sub-window-spells.cpp index 1cb0efb1b..0c331a35d 100644 --- a/src/window/display-sub-window-spells.cpp +++ b/src/window/display-sub-window-spells.cpp @@ -36,17 +36,17 @@ static void display_spell_list(player_type *player_ptr) clear_from(0); - if (player_ptr->pclass == CLASS_SORCERER) + if (player_ptr->pclass == PlayerClassType::SORCERER) return; - if (player_ptr->pclass == CLASS_RED_MAGE) + if (player_ptr->pclass == PlayerClassType::RED_MAGE) return; - if (player_ptr->pclass == CLASS_SNIPER) { + if (player_ptr->pclass == PlayerClassType::SNIPER) { display_snipe_list(player_ptr); return; } - if ((player_ptr->pclass == CLASS_MINDCRAFTER) || (player_ptr->pclass == CLASS_BERSERKER) || (player_ptr->pclass == CLASS_NINJA) - || (player_ptr->pclass == CLASS_MIRROR_MASTER) || (player_ptr->pclass == CLASS_FORCETRAINER) || player_ptr->pclass == CLASS_ELEMENTALIST) { + if ((player_ptr->pclass == PlayerClassType::MINDCRAFTER) || (player_ptr->pclass == PlayerClassType::BERSERKER) || (player_ptr->pclass == PlayerClassType::NINJA) + || (player_ptr->pclass == PlayerClassType::MIRROR_MASTER) || (player_ptr->pclass == PlayerClassType::FORCETRAINER) || player_ptr->pclass == PlayerClassType::ELEMENTALIST) { PERCENTAGE minfail = 0; PLAYER_LEVEL plev = player_ptr->lev; PERCENTAGE chance = 0; @@ -64,24 +64,24 @@ static void display_spell_list(player_type *player_ptr) put_str(_("Lv MP 失率 効果", "Lv Mana Fail Info"), y, x + 35); switch (player_ptr->pclass) { - case CLASS_MINDCRAFTER: + case PlayerClassType::MINDCRAFTER: use_mind = mind_kind_type::MINDCRAFTER; break; - case CLASS_FORCETRAINER: + case PlayerClassType::FORCETRAINER: use_mind = mind_kind_type::KI; break; - case CLASS_BERSERKER: + case PlayerClassType::BERSERKER: use_mind = mind_kind_type::BERSERKER; use_hp = true; break; - case CLASS_MIRROR_MASTER: + case PlayerClassType::MIRROR_MASTER: use_mind = mind_kind_type::MIRROR_MASTER; break; - case CLASS_NINJA: + case PlayerClassType::NINJA: use_mind = mind_kind_type::NINJUTSU; use_hp = true; break; - case CLASS_ELEMENTALIST: + case PlayerClassType::ELEMENTALIST: use_mind = mind_kind_type::ELEMENTAL; break; default: diff --git a/src/window/main-window-left-frame.cpp b/src/window/main-window-left-frame.cpp index 67aa99d4f..19f62e871 100644 --- a/src/window/main-window-left-frame.cpp +++ b/src/window/main-window-left-frame.cpp @@ -33,7 +33,7 @@ void print_title(player_type *player_ptr) p = _("***勝利者***", "***WINNER***"); } } else { - angband_strcpy(str, player_titles[player_ptr->pclass][(player_ptr->lev - 1) / 5].data(), sizeof(str)); + angband_strcpy(str, player_titles[enum2i(player_ptr->pclass)][(player_ptr->lev - 1) / 5].data(), sizeof(str)); p = str; } diff --git a/src/window/main-window-stat-poster.cpp b/src/window/main-window-stat-poster.cpp index 60fe00b6a..8a611d6f9 100644 --- a/src/window/main-window-stat-poster.cpp +++ b/src/window/main-window-stat-poster.cpp @@ -326,7 +326,7 @@ void print_imitation(player_type *player_ptr) TERM_LEN col_study = wid + COL_STUDY; TERM_LEN row_study = hgt + ROW_STUDY; - if (player_ptr->pclass != CLASS_IMITATOR) + if (player_ptr->pclass != PlayerClassType::IMITATOR) return; auto mane_data = PlayerClass(player_ptr).get_specific_data(); diff --git a/src/wizard/cmd-wizard.cpp b/src/wizard/cmd-wizard.cpp index bc674e395..3979f2ce5 100644 --- a/src/wizard/cmd-wizard.cpp +++ b/src/wizard/cmd-wizard.cpp @@ -153,10 +153,10 @@ bool exe_cmd_debug(player_type *player_ptr, char cmd) break; case 'E': switch (player_ptr->pclass) { - case CLASS_BLUE_MAGE: + case PlayerClassType::BLUE_MAGE: wiz_learn_blue_magic_all(player_ptr); break; - case CLASS_SMITH: + case PlayerClassType::SMITH: wiz_fillup_all_smith_essences(player_ptr); break; default: @@ -228,7 +228,7 @@ bool exe_cmd_debug(player_type *player_ptr, char cmd) wiz_lite(player_ptr, false); break; case 'w': - wiz_lite(player_ptr, (bool)(player_ptr->pclass == CLASS_NINJA)); + wiz_lite(player_ptr, (bool)(player_ptr->pclass == PlayerClassType::NINJA)); break; case 'x': gain_exp(player_ptr, command_arg ? command_arg : (player_ptr->exp + 1)); diff --git a/src/wizard/wizard-special-process.cpp b/src/wizard/wizard-special-process.cpp index 085a92699..43fea4166 100644 --- a/src/wizard/wizard-special-process.cpp +++ b/src/wizard/wizard-special-process.cpp @@ -423,15 +423,17 @@ void wiz_change_status(player_type *player_ptr) for (auto j = 0; j <= TV_WEAPON_END - TV_WEAPON_BEGIN; j++) { for (int i = 0; i < 64; i++) { player_ptr->weapon_exp[j][i] = tmp_s16b; - if (player_ptr->weapon_exp[j][i] > s_info[player_ptr->pclass].w_max[j][i]) - player_ptr->weapon_exp[j][i] = s_info[player_ptr->pclass].w_max[j][i]; + auto short_pclass = enum2i(player_ptr->pclass); + if (player_ptr->weapon_exp[j][i] > s_info[short_pclass].w_max[j][i]) + player_ptr->weapon_exp[j][i] = s_info[short_pclass].w_max[j][i]; } } for (int j = 0; j < 10; j++) { player_ptr->skill_exp[j] = tmp_s16b; - if (player_ptr->skill_exp[j] > s_info[player_ptr->pclass].s_max[j]) - player_ptr->skill_exp[j] = s_info[player_ptr->pclass].s_max[j]; + auto short_pclass = enum2i(player_ptr->pclass); + if (player_ptr->skill_exp[j] > s_info[short_pclass].s_max[j]) + player_ptr->skill_exp[j] = s_info[short_pclass].s_max[j]; } int k; @@ -678,7 +680,7 @@ void wiz_reset_race(player_type *player_ptr) void wiz_reset_class(player_type *player_ptr) { char ppp[80]; - sprintf(ppp, "Class (0-%d): ", MAX_CLASS - 1); + sprintf(ppp, "Class (0-%d): ", enum2i(PlayerClassType::MAX) - 1); char tmp_val[160]; sprintf(tmp_val, "%d", player_ptr->pclass); @@ -687,12 +689,13 @@ void wiz_reset_class(player_type *player_ptr) return; int tmp_int = atoi(tmp_val); - if (tmp_int < 0 || tmp_int >= MAX_CLASS) + if (tmp_int < 0 || tmp_int >= enum2i(PlayerClassType::MAX)) return; player_ptr->pclass = i2enum(tmp_int); - cp_ptr = &class_info[player_ptr->pclass]; - mp_ptr = &m_info[player_ptr->pclass]; + auto short_pclass = enum2i(player_ptr->pclass); + cp_ptr = &class_info[short_pclass]; + mp_ptr = &m_info[short_pclass]; PlayerClass(player_ptr).init_specific_data(); player_ptr->window_flags |= PW_PLAYER; player_ptr->update |= PU_BONUS | PU_HP | PU_MANA | PU_SPELLS; diff --git a/src/wizard/wizard-spoiler.cpp b/src/wizard/wizard-spoiler.cpp index 48163e84b..8973b21ac 100644 --- a/src/wizard/wizard-spoiler.cpp +++ b/src/wizard/wizard-spoiler.cpp @@ -195,7 +195,7 @@ static spoiler_output_status spoil_player_spell(concptr fname) player_type dummy_p; dummy_p.lev = 1; - for (int c = 0; c < MAX_CLASS; c++) { + for (int c = 0; c < enum2i(PlayerClassType::MAX); c++) { auto class_ptr = &class_info[c]; sprintf(buf, "[[Class: %s]]\n", class_ptr->title); spoil_out(buf); diff --git a/src/world/world.cpp b/src/world/world.cpp index 410f6a36f..fcce3494e 100644 --- a/src/world/world.cpp +++ b/src/world/world.cpp @@ -83,7 +83,7 @@ void add_retired_class(PlayerClassType c) */ bool is_winner_class(PlayerClassType c) { - if (c == MAX_CLASS) + if (c == PlayerClassType::MAX) return false; return w_ptr->sf_winner.has(c); } @@ -93,7 +93,7 @@ bool is_winner_class(PlayerClassType c) */ bool is_retired_class(PlayerClassType c) { - if (c == MAX_CLASS) + if (c == PlayerClassType::MAX) return false; return w_ptr->sf_retired.has(c); } diff --git a/src/world/world.h b/src/world/world.h index 7e989299e..aa00c6ba3 100644 --- a/src/world/world.h +++ b/src/world/world.h @@ -49,8 +49,8 @@ struct world_type { uint16_t sf_lives{}; //!< このセーブファイルで何人プレイしたか / Number of past "lives" with this file uint16_t sf_saves{}; //!< 現在のプレイで何回セーブしたか / Number of "saves" during this life uint32_t sf_play_time{}; //!< このセーブファイルで遊んだ合計のプレイ時間 - FlagGroup sf_winner{}; //!< このセーブファイルで*勝利*した職業 - FlagGroup sf_retired{}; //!< このセーブファイルで引退した職業 + FlagGroup sf_winner{}; //!< このセーブファイルで*勝利*した職業 + FlagGroup sf_retired{}; //!< このセーブファイルで引退した職業 bool character_generated{}; /* The character exists */ bool character_dungeon{}; /* The character has a dungeon */ -- 2.11.0