if (lm_ptr->chance < minfail)
lm_ptr->chance = minfail;
- if (player_ptr->stun > 50)
- lm_ptr->chance += 25;
- else if (player_ptr->stun)
- lm_ptr->chance += 15;
-
- if (lm_ptr->chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ lm_ptr->chance += player_stun->decrease_chance();
+ if (lm_ptr->chance > 95) {
lm_ptr->chance = 95;
+ }
lm_ptr->chance = mod_spell_chance_2(player_ptr, lm_ptr->chance);
}
if (chance < minfail)
chance = minfail;
- /* Stunning makes spells harder */
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
- /* Always a 5 percent chance of working */
- if (chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
+ if (chance > 95) {
chance = 95;
+ }
/* Get info */
mane_info(player_ptr, comment, player_ptr->mane_spell[i], (baigaesi ? player_ptr->mane_dam[i] * 2 : player_ptr->mane_dam[i]));
if (chance < minfail)
chance = minfail;
- /* Stunning makes spells harder */
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
- /* Always a 5 percent chance of working */
- if (chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
+ if (chance > 95) {
chance = 95;
+ }
/* Failed spell */
if (randint0(100) < chance) {
if (cm_ptr->chance < cm_ptr->minfail)
cm_ptr->chance = cm_ptr->minfail;
- if (player_ptr->stun > 50)
- cm_ptr->chance += 25;
- else if (player_ptr->stun)
- cm_ptr->chance += 15;
+ auto player_stun = player_ptr->effects()->stun();
+ cm_ptr->chance += player_stun->decrease_chance();
if (cm_ptr->use_mind != mind_kind_type::KI)
return;
}
chance = mod_spell_chance_1(player_ptr, chance);
chance = MAX(chance, adj_mag_fail[player_ptr->stat_index[mp_ptr->spell_stat]]);
- /* Stunning makes spells harder */
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
- if (chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
+ if (chance > 95) {
chance = 95;
+ }
chance = mod_spell_chance_2(player_ptr, chance);
}
chance = mod_spell_chance_1(player_ptr, chance);
chance = MAX(chance, adj_mag_fail[player_ptr->stat_index[mp_ptr->spell_stat]]);
- /* Stunning makes spells harder */
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
- if (chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
+ if (chance > 95) {
chance = 95;
+ }
chance = mod_spell_chance_2(player_ptr, chance);
if (chance < minfail)
chance = minfail;
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
- if (chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
+ if (chance > 95) {
chance = 95;
+ }
chance = mod_spell_chance_2(player_ptr, chance);
const auto spell_type = i2enum<RF_ABILITY>(n);
if (chance < minfail)
chance = minfail;
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
if (heavy_armor(player_ptr))
chance += 5;
this->chance = minfail;
}
- if (this->player_ptr->stun > 50) {
- this->chance += 25;
- } else if (this->player_ptr->stun) {
- this->chance += 15;
- }
-
+ auto player_stun = this->player_ptr->effects()->stun();
+ this->chance += player_stun->decrease_chance();
add_ki_chance();
if (this->chance > 95) {
this->chance = 95;
if (chance < minfail)
chance = minfail;
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
- if (chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
+ if (chance > 95) {
chance = 95;
+ }
if ((use_realm == player_ptr->realm1) || (use_realm == player_ptr->realm2) || (player_ptr->pclass == CLASS_SORCERER)
|| (player_ptr->pclass == CLASS_RED_MAGE)) {
*/
bool set_stun(player_type *player_ptr, TIME_EFFECT v)
{
- int old_aux, new_aux;
bool notice = false;
v = (v > 10000) ? 10000 : (v < 0) ? 0 : v;
if (player_ptr->is_dead)
if (PlayerRace(player_ptr).equals(player_race_type::GOLEM) || PlayerClass(player_ptr).can_resist_stun())
v = 0;
- if (player_ptr->stun > 100) {
- old_aux = 3;
- } else if (player_ptr->stun > 50) {
- old_aux = 2;
- } else if (player_ptr->stun > 0) {
- old_aux = 1;
- } else {
- old_aux = 0;
- }
-
- if (v > 100) {
- new_aux = 3;
- } else if (v > 50) {
- new_aux = 2;
- } else if (v > 0) {
- new_aux = 1;
- } else {
- new_aux = 0;
- }
-
+ auto player_stun = player_ptr->effects()->stun();
+ auto old_aux = player_stun->get_rank();
+ auto new_aux = player_stun->get_rank(v);
if (new_aux > old_aux) {
- switch (new_aux) {
- case 1:
- msg_print(_("意識がもうろうとしてきた。", "You have been stunned."));
- break;
- case 2:
- msg_print(_("意識がひどくもうろうとしてきた。", "You have been heavily stunned."));
- break;
- case 3:
- msg_print(_("頭がクラクラして意識が遠のいてきた。", "You have been knocked out."));
- break;
- }
-
+ auto stun_mes = player_stun->get_stun_mes(new_aux);
+ msg_print(stun_mes.data());
if (randint1(1000) < v || one_in_(16)) {
msg_print(_("割れるような頭痛がする。", "A vicious blow hits your head."));
notice = true;
} else if (new_aux < old_aux) {
- if (new_aux == 0) {
+ if (new_aux == StunRank::NONE) {
msg_print(_("やっと朦朧状態から回復した。", "You are no longer stunned."));
if (disturb_state)
disturb(player_ptr, false, false);
if (chance < minfail)
chance = minfail;
- if (player_ptr->stun > 50)
- chance += 25;
- else if (player_ptr->stun)
- chance += 15;
-
- if (chance > 95)
+ auto player_stun = player_ptr->effects()->stun();
+ chance += player_stun->decrease_chance();
+ if (chance > 95) {
chance = 95;
+ }
mindcraft_info(player_ptr, comment, use_mind, i);
sprintf(psi_desc, " %c) %-30s%2d %4d %3d%%%s", I2A(i), spell.name, spell.min_lev, spell.mana_cost, chance, comment);