BadStatusSetter bss(player_ptr);
switch (o_ptr->sval) {
case SV_FOOD_POISON:
- return (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) && bss.poison(player_ptr->poisoned + randint0(10) + 10);
+ return (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) && bss.mod_poison(randint0(10) + 10);
case SV_FOOD_BLINDNESS:
return !has_resist_blind(player_ptr) && bss.mod_blindness(randint0(200) + 200);
case SV_FOOD_PARANOIA:
if (player_ptr->poisoned) {
int adjust = adj_con_fix[player_ptr->stat_index[A_CON]] + 1;
- (void)bss.poison(player_ptr->poisoned - adjust);
+ (void)bss.mod_poison(-adjust);
}
auto player_stun = effects->stun();
ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
if (!(double_resist || has_resist_pois(player_ptr)) && !check_multishadow(player_ptr)) {
- (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint0(ep_ptr->dam) + 10);
+ (void)BadStatusSetter(player_ptr).mod_poison(randint0(ep_ptr->dam) + 10);
}
}
if ((double_resist || has_resist_pois(player_ptr)) || check_multishadow(player_ptr))
return;
- (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint0(ep_ptr->dam) + 10);
+ (void)BadStatusSetter(player_ptr).mod_poison(randint0(ep_ptr->dam) + 10);
if (one_in_(5)) /* 6 */
{
msg_print(_("奇形的な変身を遂げた!", "You undergo a freakish metamorphosis!"));
}
dam = dam * 2;
- (void)bss.poison(player_ptr->poisoned + randint1(dam));
+ (void)bss.mod_poison(randint1(dam));
take_hit(player_ptr, DAMAGE_NOESCAPE, dam, trap_name);
}
case TRAP_POISON: {
msg_print(_("刺激的な緑色のガスに包み込まれた!", "A pungent green gas surrounds you!"));
if (has_resist_pois(player_ptr) == 0) {
- (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + (TIME_EFFECT)randint0(20) + 10);
+ (void)BadStatusSetter(player_ptr).mod_poison((TIME_EFFECT)randint0(20) + 10);
}
break;
if (deal_damege_by_feat(player_ptr, g_ptr, _("毒気を吸い込んだ!", "The gas poisons you!"), _("に毒された!", "poisons you!"), calc_acid_damage_rate,
[](player_type *player_ptr, int damage) {
if (!has_resist_pois(player_ptr))
- (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + damage);
+ (void)BadStatusSetter(player_ptr).mod_poison(static_cast<TIME_EFFECT>(damage));
})) {
cave_no_regen = true;
sound(SOUND_TERRAIN_DAMAGE);
if (player_ptr->is_dead || check_multishadow(player_ptr))
return;
- if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr)) && BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
+ if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr)) && BadStatusSetter(player_ptr).mod_poison(randint1(monap_ptr->rlev) + 5))
monap_ptr->obvious = true;
bool disease_possibility = randint1(100) > calc_nuke_damage_rate(player_ptr);
return;
if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr)) && !check_multishadow(player_ptr)
- && BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
+ && BadStatusSetter(player_ptr).mod_poison(randint1(monap_ptr->rlev) + 5))
monap_ptr->obvious = true;
monap_ptr->damage = monap_ptr->damage * calc_nuke_damage_rate(player_ptr) / 100;
}
case SV_POTION_POISON:
if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) {
- if (BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint0(15) + 10)) {
+ if (BadStatusSetter(player_ptr).mod_poison(randint0(15) + 10)) {
ident = true;
}
}
if (trap & (CHEST_POISON)) {
msg_print(_("突如吹き出した緑色のガスに包み込まれた!", "A puff of green gas surrounds you!"));
if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) {
- (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + 10 + randint1(20));
+ (void)BadStatusSetter(player_ptr).mod_poison(10 + randint1(20));
}
}
return true;
}
+bool BadStatusSetter::mod_poison(const TIME_EFFECT tmp_v)
+{
+ return this->poison(this->player_ptr->poisoned + tmp_v);
+}
+
/*!
* @brief 恐怖の継続時間をセットする / Set "afraid", notice observable changes
* @param v 継続時間
bool confusion(const TIME_EFFECT tmp_v);
bool mod_confusion(const TIME_EFFECT tmp_v);
bool poison(const TIME_EFFECT tmp_v);
+ bool mod_poison(const TIME_EFFECT tmp_v);
bool afraidness(const TIME_EFFECT tmp_v);
bool paralysis(const TIME_EFFECT tmp_v);
bool hallucination(const TIME_EFFECT tmp_v);