if (player_ptr->regenerate) {
regen_amount = regen_amount * 2;
}
- if (!PlayerClass(player_ptr).monk_stance_is(MonkStance::NONE) || !PlayerClass(player_ptr).samurai_stance_is(SamuraiStanceType::NONE)) {
+ if (!PlayerClass(player_ptr).monk_stance_is(MonkStanceType::NONE) || !PlayerClass(player_ptr).samurai_stance_is(SamuraiStanceType::NONE)) {
regen_amount /= 2;
}
if (player_ptr->cursed.has(CurseTraitType::SLOW_REGEN)) {
void rd_special_action(player_type *player_ptr)
{
- if (!PlayerClass(player_ptr).monk_stance_is(MonkStance::NONE)) {
+ if (!PlayerClass(player_ptr).monk_stance_is(MonkStanceType::NONE)) {
player_ptr->action = ACTION_MONK_STANCE;
return;
}
// 古いセーブファイルの修行僧のデータは magic_num には保存されていないので読み捨てる
load_old_savfile_magic_num();
} else {
- monk_data->stance = i2enum<MonkStance>(rd_byte());
+ monk_data->stance = i2enum<MonkStanceType>(rd_byte());
}
}
#include "util/int-char-converter.h"
#include "view/display-messages.h"
-static void set_stance(player_type *player_ptr, const MonkStance new_stance)
+static void set_stance(player_type *player_ptr, const MonkStanceType new_stance)
{
set_action(player_ptr, ACTION_MONK_STANCE);
PlayerClass pc(player_ptr);
prt("", 1, 0);
prt(_(" どの構えをとりますか?", " Choose Stance: "), 1, 14);
- auto new_stance = MonkStance::NONE;
+ auto new_stance = MonkStanceType::NONE;
while (true) {
char choice = inkey();
if (choice == ESCAPE) {
}
if ((choice == 'b') || (choice == 'B')) {
- new_stance = MonkStance::GENBU;
+ new_stance = MonkStanceType::GENBU;
break;
} else if (((choice == 'c') || (choice == 'C')) && (player_ptr->lev > 29)) {
- new_stance = MonkStance::BYAKKO;
+ new_stance = MonkStanceType::BYAKKO;
break;
} else if (((choice == 'd') || (choice == 'D')) && (player_ptr->lev > 34)) {
- new_stance = MonkStance::SEIRYU;
+ new_stance = MonkStanceType::SEIRYU;
break;
} else if (((choice == 'e') || (choice == 'E')) && (player_ptr->lev > 39)) {
- new_stance = MonkStance::SUZAKU;
+ new_stance = MonkStanceType::SUZAKU;
break;
}
}
static int calc_max_blow_selection_times(player_type *player_ptr)
{
PlayerClass pc(player_ptr);
- if (pc.monk_stance_is(MonkStance::BYAKKO))
+ if (pc.monk_stance_is(MonkStanceType::BYAKKO))
return (player_ptr->lev < 3 ? 1 : player_ptr->lev / 3);
- if (pc.monk_stance_is(MonkStance::SUZAKU))
+ if (pc.monk_stance_is(MonkStanceType::SUZAKU))
return 1;
- if (pc.monk_stance_is(MonkStance::GENBU))
+ if (pc.monk_stance_is(MonkStanceType::GENBU))
return 1;
return player_ptr->lev < 7 ? 1 : player_ptr->lev / 7;
static WEIGHT calc_monk_attack_weight(player_type *player_ptr)
{
WEIGHT weight = 8;
- if (PlayerClass(player_ptr).monk_stance_is(MonkStance::SUZAKU))
+ if (PlayerClass(player_ptr).monk_stance_is(MonkStanceType::SUZAKU))
weight = 4;
if ((player_ptr->pclass == PlayerClassType::FORCETRAINER) && (get_current_ki(player_ptr) != 0)) {
result += 5;
}
- if (pc.monk_stance_is(MonkStance::BYAKKO)) {
+ if (pc.monk_stance_is(MonkStanceType::BYAKKO)) {
result -= 3;
- } else if (pc.monk_stance_is(MonkStance::GENBU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::GENBU)) {
result += 3;
- } else if (pc.monk_stance_is(MonkStance::SUZAKU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::SUZAKU)) {
result -= 2;
}
if (this->player_ptr->tsuyoshi) {
result += 5;
}
- if (pc.monk_stance_is(MonkStance::BYAKKO)) {
+ if (pc.monk_stance_is(MonkStanceType::BYAKKO)) {
result += 2;
- } else if (pc.monk_stance_is(MonkStance::GENBU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::GENBU)) {
result -= 2;
- } else if (pc.monk_stance_is(MonkStance::SUZAKU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::SUZAKU)) {
result += 2;
}
result += 5;
}
- if (pc.monk_stance_is(MonkStance::GENBU)) {
+ if (pc.monk_stance_is(MonkStanceType::GENBU)) {
result -= 1;
- } else if (pc.monk_stance_is(MonkStance::SUZAKU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::SUZAKU)) {
result += 1;
}
result += 5;
}
- if (pc.monk_stance_is(MonkStance::BYAKKO)) {
+ if (pc.monk_stance_is(MonkStanceType::BYAKKO)) {
result += 2;
- } else if (pc.monk_stance_is(MonkStance::SUZAKU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::SUZAKU)) {
result -= 2;
}
result += 5;
}
- if (pc.monk_stance_is(MonkStance::GENBU)) {
+ if (pc.monk_stance_is(MonkStanceType::GENBU)) {
result -= 1;
- } else if (pc.monk_stance_is(MonkStance::SUZAKU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::SUZAKU)) {
result += 1;
}
}
switch (this->get_monk_stance()) {
- case MonkStance::GENBU:
+ case MonkStanceType::GENBU:
flags.set(TR_REFLECT);
break;
- case MonkStance::SUZAKU:
+ case MonkStanceType::SUZAKU:
flags.set(TR_LEVITATION);
break;
- case MonkStance::SEIRYU:
+ case MonkStanceType::SEIRYU:
flags.set({ TR_RES_ACID, TR_RES_ELEC, TR_RES_FIRE, TR_RES_COLD, TR_RES_POIS });
flags.set({ TR_SH_FIRE, TR_SH_ELEC, TR_SH_COLD });
flags.set(TR_LEVITATION);
samurai_data->stance = stance;
}
-MonkStance PlayerClass::get_monk_stance() const
+MonkStanceType PlayerClass::get_monk_stance() const
{
auto monk_data = this->get_specific_data<monk_data_type>();
if (!monk_data) {
- return MonkStance::NONE;
+ return MonkStanceType::NONE;
}
return monk_data->stance;
}
-bool PlayerClass::monk_stance_is(MonkStance stance) const
+bool PlayerClass::monk_stance_is(MonkStanceType stance) const
{
return this->get_monk_stance() == stance;
}
-void PlayerClass::set_monk_stance(MonkStance stance) const
+void PlayerClass::set_monk_stance(MonkStanceType stance) const
{
auto monk_data = this->get_specific_data<monk_data_type>();
if (!monk_data) {
#include <variant>
enum class SamuraiStanceType : uint8_t;
-enum class MonkStance : uint8_t;
+enum class MonkStanceType : uint8_t;
class PlayerClass {
public:
bool samurai_stance_is(SamuraiStanceType stance) const;
void set_samurai_stance(SamuraiStanceType stance) const;
- MonkStance get_monk_stance() const;
- bool monk_stance_is(MonkStance stance) const;
- void set_monk_stance(MonkStance stance) const;
+ MonkStanceType get_monk_stance() const;
+ bool monk_stance_is(MonkStanceType stance) const;
+ void set_monk_stance(MonkStanceType stance) const;
void init_specific_data();
template <typename T>
#include "system/angband.h"
-enum class MonkStance : uint8_t {
+enum class MonkStanceType : uint8_t {
NONE = 0,
GENBU = 1, //!< 玄武の構え
BYAKKO = 2, //!< 白虎の構え
};
struct monk_data_type {
- MonkStance stance{};
+ MonkStanceType stance{};
};
int16_t PlayerSpeed::stance_value()
{
int16_t result = 0;
- if (PlayerClass(player_ptr).monk_stance_is(MonkStance::SUZAKU))
+ if (PlayerClass(player_ptr).monk_stance_is(MonkStanceType::SUZAKU))
result += 10;
return result;
}
if (player_ptr->regenerate)
digestion += 20;
PlayerClass pc(player_ptr);
- if (!pc.monk_stance_is(MonkStance::NONE) || !pc.samurai_stance_is(SamuraiStanceType::NONE))
+ if (!pc.monk_stance_is(MonkStanceType::NONE) || !pc.samurai_stance_is(SamuraiStanceType::NONE))
digestion += 20;
if (player_ptr->cursed.has(CurseTraitType::FAST_DIGEST))
digestion += 30;
player_ptr->lite = has_lite(player_ptr);
- if (!PlayerClass(player_ptr).monk_stance_is(MonkStance::NONE)) {
+ if (!PlayerClass(player_ptr).monk_stance_is(MonkStanceType::NONE)) {
if (none_bits(empty_hands_status, EMPTY_HAND_MAIN)) {
set_action(player_ptr, ACTION_NONE);
}
num_blow /= 2;
PlayerClass pc(player_ptr);
- if (pc.monk_stance_is(MonkStance::GENBU)) {
+ if (pc.monk_stance_is(MonkStanceType::GENBU)) {
num_blow -= 2;
if ((player_ptr->pclass == PlayerClassType::MONK) && (player_ptr->lev > 42))
num_blow--;
if (num_blow < 0)
num_blow = 0;
- } else if (pc.monk_stance_is(MonkStance::SUZAKU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::SUZAKU)) {
num_blow /= 2;
}
}
PlayerClass pc(player_ptr);
- if (pc.monk_stance_is(MonkStance::GENBU)) {
+ if (pc.monk_stance_is(MonkStanceType::GENBU)) {
ac += (player_ptr->lev * player_ptr->lev) / 50;
- } else if (pc.monk_stance_is(MonkStance::BYAKKO)) {
+ } else if (pc.monk_stance_is(MonkStanceType::BYAKKO)) {
ac -= 40;
- } else if (pc.monk_stance_is(MonkStance::SEIRYU)) {
+ } else if (pc.monk_stance_is(MonkStanceType::SEIRYU)) {
ac -= 50;
} else if (pc.samurai_stance_is(SamuraiStanceType::KOUKIJIN)) {
ac -= 50;
}
// 朱雀の構えをとっているとき、格闘ダメージに -(レベル)/6 の修正を得る。
- if (PlayerClass(player_ptr).monk_stance_is(MonkStance::SUZAKU)) {
+ if (PlayerClass(player_ptr).monk_stance_is(MonkStanceType::SUZAKU)) {
if (is_martial_arts_mode(player_ptr) && calc_hand == PLAYER_HAND_MAIN) {
damage -= (player_ptr->lev / 6);
}
hit -= calc_double_weapon_penalty(player_ptr, slot);
// 朱雀の構えをとっているとき、格闘命中に -(レベル)/3 の修正を得る。
- if (PlayerClass(player_ptr).monk_stance_is(MonkStance::SUZAKU)) {
+ if (PlayerClass(player_ptr).monk_stance_is(MonkStanceType::SUZAKU)) {
if (is_martial_arts_mode(player_ptr) && calc_hand == PLAYER_HAND_MAIN) {
hit -= (player_ptr->lev / 3);
}
}
case ACTION_MONK_STANCE: {
msg_print(_("構えをといた。", "You stop assuming the special stance."));
- PlayerClass(player_ptr).set_monk_stance(MonkStance::NONE);
+ PlayerClass(player_ptr).set_monk_stance(MonkStanceType::NONE);
break;
}
case ACTION_SAMURAI_STANCE: {
}
if (this->player_ptr->action == ACTION_MONK_STANCE) {
msg_print(_("構えがとけた。", "You lose your stance."));
- PlayerClass(player_ptr).set_monk_stance(MonkStance::NONE);
+ PlayerClass(player_ptr).set_monk_stance(MonkStanceType::NONE);
this->player_ptr->update |= PU_BONUS;
this->player_ptr->redraw |= PR_STATE;
this->player_ptr->action = ACTION_NONE;
return;
PlayerClass pc(player_ptr);
- if (pc.monk_stance_is(MonkStance::NONE)) {
+ if (pc.monk_stance_is(MonkStanceType::NONE)) {
display_player_one_line(ENTRY_POSTURE, _("構えなし", "none"), TERM_YELLOW);
return;
}
if (player_ptr->pclass == PlayerClassType::FORCETRAINER)
level = std::max<short>(1, level - 3);
PlayerClass pc(player_ptr);
- if (pc.monk_stance_is(MonkStance::BYAKKO))
+ if (pc.monk_stance_is(MonkStanceType::BYAKKO))
*basedam = monk_ave_damage[level][1];
- else if (pc.monk_stance_is(MonkStance::GENBU) || pc.monk_stance_is(MonkStance::SUZAKU))
+ else if (pc.monk_stance_is(MonkStanceType::GENBU) || pc.monk_stance_is(MonkStanceType::SUZAKU))
*basedam = monk_ave_damage[level][2];
else
*basedam = monk_ave_damage[level][0];
}
case ACTION_MONK_STANCE: {
if (auto stance = PlayerClass(player_ptr).get_monk_stance();
- stance != MonkStance::NONE) {
+ stance != MonkStanceType::NONE) {
switch (stance) {
- case MonkStance::GENBU:
+ case MonkStanceType::GENBU:
attr = TERM_GREEN;
break;
- case MonkStance::BYAKKO:
+ case MonkStanceType::BYAKKO:
attr = TERM_WHITE;
break;
- case MonkStance::SEIRYU:
+ case MonkStanceType::SEIRYU:
attr = TERM_L_BLUE;
break;
- case MonkStance::SUZAKU:
+ case MonkStanceType::SUZAKU:
attr = TERM_L_RED;
break;
default: