if (trap & (CHEST_LOSE_STR))
{
msg_print(_("仕掛けられていた小さな針に刺されてしまった!", "A small needle has pricked you!"));
- take_hit(DAMAGE_NOESCAPE, damroll(1, 4), _("毒針", "a poison needle"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(1, 4), _("毒針", "a poison needle"), -1);
(void)do_dec_stat(p_ptr, A_STR);
}
if (trap & (CHEST_LOSE_CON))
{
msg_print(_("仕掛けられていた小さな針に刺されてしまった!", "A small needle has pricked you!"));
- take_hit(DAMAGE_NOESCAPE, damroll(1, 4), _("毒針", "a poison needle"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(1, 4), _("毒針", "a poison needle"), -1);
(void)do_dec_stat(p_ptr, A_CON);
}
/* ...but a high saving throw does help a little. */
if (randint1(100 + o_ptr->pval * 2) > p_ptr->skill_sav)
{
- if (one_in_(6)) take_hit(DAMAGE_NOESCAPE, damroll(5, 20), _("破滅のトラップの宝箱", "a chest dispel-player trap"), -1);
+ if (one_in_(6)) take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(5, 20), _("破滅のトラップの宝箱", "a chest dispel-player trap"), -1);
else if (one_in_(5)) (void)set_cut(p_ptr,p_ptr->cut + 200);
else if (one_in_(4))
{
msg_print(_("箱の中の物はすべて粉々に砕け散った!", "Everything inside the chest is destroyed!"));
o_ptr->pval = 0;
sound(SOUND_EXPLODE);
- take_hit(DAMAGE_ATTACK, damroll(5, 8), _("爆発する箱", "an exploding chest"), -1);
+ take_hit(p_ptr, DAMAGE_ATTACK, damroll(5, 8), _("爆発する箱", "an exploding chest"), -1);
}
/* Scatter contents. */
if ((trap & (CHEST_SCATTER)) && o_ptr->k_idx)
wiz_lite(FALSE);
msg_format(_("%sはあなたの体力を奪った...", "The %s drains your vitality..."), name);
- take_hit(DAMAGE_LOSELIFE, damroll(3, 8), _("審判の宝石", "the Jewel of Judgement"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, damroll(3, 8), _("審判の宝石", "the Jewel of Judgement"), -1);
(void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
(void)detect_doors(DETECT_RAD_DEFAULT);
{
int t;
msg_format(_("%sはあなたの体力を奪った...", "The %s drains your vitality..."), name);
- take_hit(DAMAGE_LOSELIFE, damroll(3, 8), _("加速した疲労", "the strain of haste"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, damroll(3, 8), _("加速した疲労", "the strain of haste"), -1);
t = 25 + randint1(25);
(void)set_fast(p_ptr, p_ptr->fast + t, FALSE);
break;
case SV_FOOD_WEAKNESS:
{
- take_hit(DAMAGE_NOESCAPE, damroll(6, 6), _("毒入り食料", "poisonous food"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(6, 6), _("毒入り食料", "poisonous food"), -1);
(void)do_dec_stat(p_ptr, A_STR);
ident = TRUE;
break;
case SV_FOOD_SICKNESS:
{
- take_hit(DAMAGE_NOESCAPE, damroll(6, 6), _("毒入り食料", "poisonous food"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(6, 6), _("毒入り食料", "poisonous food"), -1);
(void)do_dec_stat(p_ptr, A_CON);
ident = TRUE;
break;
case SV_FOOD_STUPIDITY:
{
- take_hit(DAMAGE_NOESCAPE, damroll(8, 8), _("毒入り食料", "poisonous food"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(8, 8), _("毒入り食料", "poisonous food"), -1);
(void)do_dec_stat(p_ptr, A_INT);
ident = TRUE;
break;
case SV_FOOD_NAIVETY:
{
- take_hit(DAMAGE_NOESCAPE, damroll(8, 8), _("毒入り食料", "poisonous food"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(8, 8), _("毒入り食料", "poisonous food"), -1);
(void)do_dec_stat(p_ptr, A_WIS);
ident = TRUE;
break;
case SV_FOOD_UNHEALTH:
{
- take_hit(DAMAGE_NOESCAPE, damroll(10, 10), _("毒入り食料", "poisonous food"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(10, 10), _("毒入り食料", "poisonous food"), -1);
(void)do_dec_stat(p_ptr, A_CON);
ident = TRUE;
break;
case SV_FOOD_DISEASE:
{
- take_hit(DAMAGE_NOESCAPE, damroll(10, 10), _("毒入り食料", "poisonous food"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(10, 10), _("毒入り食料", "poisonous food"), -1);
(void)do_dec_stat(p_ptr, A_STR);
ident = TRUE;
break;
{
monster_desc(m_name, m_ptr, 0);
msg_format(_("%sから振り落とされそうになって、壁にぶつかった。", "You have nearly fallen from %s, but bumped into wall."), m_name);
- take_hit(DAMAGE_NOESCAPE, r_ptr->level + 3, _("壁への衝突", "bumping into wall"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, r_ptr->level + 3, _("壁への衝突", "bumping into wall"), -1);
return FALSE;
}
}
else
{
- take_hit(DAMAGE_NOESCAPE, r_ptr->level + 3, _("落馬", "Falling from riding"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, r_ptr->level + 3, _("落馬", "Falling from riding"), -1);
fall_dam = TRUE;
}
case SV_POTION_RUINATION:
msg_print(_("身も心も弱ってきて、精気が抜けていくようだ。", "Your nerves and muscles feel weak and lifeless!"));
- take_hit(DAMAGE_LOSELIFE, damroll(10, 10), _("破滅の薬", "a potion of Ruination"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, damroll(10, 10), _("破滅の薬", "a potion of Ruination"), -1);
(void)dec_stat(p_ptr, A_DEX, 25, TRUE);
(void)dec_stat(p_ptr, A_WIS, 25, TRUE);
chg_virtue(p_ptr, V_VITALITY, -1);
chg_virtue(p_ptr, V_UNLIFE, 5);
msg_print(_("死の予感が体中を駆けめぐった。", "A feeling of Death flows through your body."));
- take_hit(DAMAGE_LOSELIFE, 5000, _("死の薬", "a potion of Death"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, 5000, _("死の薬", "a potion of Death"), -1);
ident = TRUE;
break;
fire_ball(GF_FIRE, 0, 666, 4);
/* Note: "Double" damage since it is centered on the player ... */
if (!(IS_OPPOSE_FIRE() || p_ptr->resist_fire || p_ptr->immune_fire))
- take_hit(DAMAGE_NOESCAPE, 50+randint1(50), _("炎の巻物", "a Scroll of Fire"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 50+randint1(50), _("炎の巻物", "a Scroll of Fire"), -1);
ident = TRUE;
break;
{
fire_ball(GF_ICE, 0, 777, 4);
if (!(IS_OPPOSE_COLD() || p_ptr->resist_cold || p_ptr->immune_cold))
- take_hit(DAMAGE_NOESCAPE, 100+randint1(100), _("氷の巻物", "a Scroll of Ice"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 100+randint1(100), _("氷の巻物", "a Scroll of Ice"), -1);
ident = TRUE;
break;
{
fire_ball(GF_CHAOS, 0, 1000, 4);
if (!p_ptr->resist_chaos)
- take_hit(DAMAGE_NOESCAPE, 111+randint1(111), _("ログルスの巻物", "a Scroll of Logrus"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 111+randint1(111), _("ログルスの巻物", "a Scroll of Logrus"), -1);
ident = TRUE;
break;
else
{
msg_print(_("痛い!", "It hurts!"));
- take_hit(DAMAGE_LOSELIFE, damroll(o_ptr->sval + 1, 6), _("暗黒魔法の逆流", "a miscast Death spell"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, damroll(o_ptr->sval + 1, 6), _("暗黒魔法の逆流", "a miscast Death spell"), -1);
if ((spell > 15) && one_in_(6) && !p_ptr->hold_exp)
lose_exp(p_ptr, spell * 250);
case PATTERN_TILE_WRECKED:
if (!IS_INVULN())
- take_hit(DAMAGE_NOESCAPE, 200, _("壊れた「パターン」を歩いたダメージ", "walking the corrupted Pattern"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 200, _("壊れた「パターン」を歩いたダメージ", "walking the corrupted Pattern"), -1);
break;
default:
if (PRACE_IS_(p_ptr, RACE_AMBERITE) && !one_in_(2))
return TRUE;
else if (!IS_INVULN())
- take_hit(DAMAGE_NOESCAPE, damroll(1, 3), _("「パターン」を歩いたダメージ", "walking the Pattern"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(1, 3), _("「パターン」を歩いたダメージ", "walking the Pattern"), -1);
break;
}
/* Calculate damage */
HIT_POINT dam = (PY_FOOD_STARVE - p_ptr->food) / 10;
- if (!IS_INVULN()) take_hit(DAMAGE_LOSELIFE, dam, _("空腹", "starvation"), -1);
+ if (!IS_INVULN()) take_hit(p_ptr, DAMAGE_LOSELIFE, dam, _("空腹", "starvation"), -1);
}
}
}
/* Take damage from poison */
if (p_ptr->poisoned && !IS_INVULN())
{
- take_hit(DAMAGE_NOESCAPE, 1, _("毒", "poison"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 1, _("毒", "poison"), -1);
}
/* Take damage from cuts */
dam = 1;
}
- take_hit(DAMAGE_NOESCAPE, dam, _("致命傷", "a fatal wound"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, dam, _("致命傷", "a fatal wound"), -1);
}
/* (Vampires) Take damage from sunlight */
if ((current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].info & (CAVE_GLOW | CAVE_MNDK)) == CAVE_GLOW)
{
msg_print(_("日光があなたのアンデッドの肉体を焼き焦がした!", "The sun's rays scorch your undead flesh!"));
- take_hit(DAMAGE_NOESCAPE, 1, _("日光", "sunlight"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 1, _("日光", "sunlight"), -1);
cave_no_regen = TRUE;
}
}
object_desc(o_name, o_ptr, OD_NAME_ONLY);
sprintf(ouch, _("%sを装備したダメージ", "wielding %s"), o_name);
- if (!IS_INVULN()) take_hit(DAMAGE_NOESCAPE, 1, ouch, -1);
+ if (!IS_INVULN()) take_hit(p_ptr, DAMAGE_NOESCAPE, 1, ouch, -1);
}
}
if (p_ptr->levitation)
{
msg_print(_("熱で火傷した!", "The heat burns you!"));
- take_hit(DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name), -1);
}
else
{
concptr name = f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name;
msg_format(_("%sで火傷した!", "The %s burns you!"), name);
- take_hit(DAMAGE_NOESCAPE, damage, name, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, name, -1);
}
cave_no_regen = TRUE;
if (p_ptr->levitation)
{
msg_print(_("冷気に覆われた!", "The cold engulfs you!"));
- take_hit(DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name), -1);
}
else
{
concptr name = f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name;
msg_format(_("%sに凍えた!", "The %s frostbites you!"), name);
- take_hit(DAMAGE_NOESCAPE, damage, name, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, name, -1);
}
cave_no_regen = TRUE;
if (p_ptr->levitation)
{
msg_print(_("電撃を受けた!", "The electric shocks you!"));
- take_hit(DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name), -1);
}
else
{
concptr name = f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name;
msg_format(_("%sに感電した!", "The %s shocks you!"), name);
- take_hit(DAMAGE_NOESCAPE, damage, name, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, name, -1);
}
cave_no_regen = TRUE;
if (p_ptr->levitation)
{
msg_print(_("酸が飛び散った!", "The acid melt you!"));
- take_hit(DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name), -1);
}
else
{
concptr name = f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name;
msg_format(_("%sに溶かされた!", "The %s melts you!"), name);
- take_hit(DAMAGE_NOESCAPE, damage, name, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, name, -1);
}
cave_no_regen = TRUE;
if (p_ptr->levitation)
{
msg_print(_("毒気を吸い込んだ!", "The gas poisons you!"));
- take_hit(DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, format(_("%sの上に浮遊したダメージ", "flying over %s"),
f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name), -1);
if (p_ptr->resist_pois) (void)set_poisoned(p_ptr, p_ptr->poisoned + 1);
}
{
concptr name = f_name + f_info[get_feat_mimic(¤t_floor_ptr->grid_array[p_ptr->y][p_ptr->x])].name;
msg_format(_("%sに毒された!", "The %s poisons you!"), name);
- take_hit(DAMAGE_NOESCAPE, damage, name, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, name, -1);
if (p_ptr->resist_pois) (void)set_poisoned(p_ptr, p_ptr->poisoned + 3);
}
if (p_ptr->total_weight > weight_limit())
{
msg_print(_("溺れている!", "You are drowning!"));
- take_hit(DAMAGE_NOESCAPE, randint1(p_ptr->lev), _("溺れ", "drowning"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, randint1(p_ptr->lev), _("溺れ", "drowning"), -1);
cave_no_regen = TRUE;
}
}
if (p_ptr->resist_fire) damage = damage / 3;
if (IS_OPPOSE_FIRE()) damage = damage / 3;
msg_print(_("熱い!", "It's hot!"));
- take_hit(DAMAGE_NOESCAPE, damage, _("炎のオーラ", "Fire aura"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, _("炎のオーラ", "Fire aura"), -1);
}
if ((r_info[current_floor_ptr->m_list[p_ptr->riding].r_idx].flags2 & RF2_AURA_ELEC) && !p_ptr->immune_elec)
{
if (p_ptr->resist_elec) damage = damage / 3;
if (IS_OPPOSE_ELEC()) damage = damage / 3;
msg_print(_("痛い!", "It hurts!"));
- take_hit(DAMAGE_NOESCAPE, damage, _("電気のオーラ", "Elec aura"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, _("電気のオーラ", "Elec aura"), -1);
}
if ((r_info[current_floor_ptr->m_list[p_ptr->riding].r_idx].flags3 & RF3_AURA_COLD) && !p_ptr->immune_cold)
{
if (p_ptr->resist_cold) damage = damage / 3;
if (IS_OPPOSE_COLD()) damage = damage / 3;
msg_print(_("冷たい!", "It's cold!"));
- take_hit(DAMAGE_NOESCAPE, damage, _("冷気のオーラ", "Cold aura"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damage, _("冷気のオーラ", "Cold aura"), -1);
}
}
dam_desc = _("硬い岩", "solid rock");
}
- take_hit(DAMAGE_NOESCAPE, 1 + (p_ptr->lev / 5), dam_desc, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 1 + (p_ptr->lev / 5), dam_desc, -1);
}
}
p_ptr->csp += healing;
p_ptr->redraw |= (PR_HP | PR_MANA);
- take_hit(DAMAGE_LOSELIFE, healing, _("頭に昇った血", "blood rushing to the head"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, healing, _("頭に昇った血", "blood rushing to the head"), -1);
}
}
disturb(FALSE, TRUE);
msg_print(_("足がもつれて転んだ!", "You trip over your own feet!"));
- take_hit(DAMAGE_NOESCAPE, randint1(p_ptr->wt / 6), _("転倒", "tripping"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, randint1(p_ptr->wt / 6), _("転倒", "tripping"), -1);
msg_print(NULL);
if (has_melee_weapon(INVEN_RARM))
object_desc(o_name, choose_cursed_obj_name(TRC_DRAIN_HP), (OD_OMIT_PREFIX | OD_NAME_ONLY));
msg_format(_("%sはあなたの体力を吸収した!", "Your %s drains HP from you!"), o_name);
- take_hit(DAMAGE_LOSELIFE, MIN(p_ptr->lev*2, 100), o_name, -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, MIN(p_ptr->lev*2, 100), o_name, -1);
}
/* Handle mana draining */
if ((p_ptr->cursed & TRC_DRAIN_MANA) && p_ptr->csp && one_in_(666))
msg_print(_("『審判の宝石』はあなたの体力を吸収した!", "The Jewel of Judgement drains life from you!"));
else
msg_print(_("なにかがあなたの体力を吸収した!", "Something drains life from you!"));
- take_hit(DAMAGE_LOSELIFE, MIN(p_ptr->lev, 50), _("審判の宝石", "the Jewel of Judgement"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, MIN(p_ptr->lev, 50), _("審判の宝石", "the Jewel of Judgement"), -1);
}
}
}
k += (p_ptr->to_d[hand] + o_ptr->to_d);
if (k < 0) k = 0;
- take_hit(DAMAGE_FORCE, k, _("死の大鎌", "Death scythe"), -1);
+ take_hit(p_ptr, DAMAGE_FORCE, k, _("死の大鎌", "Death scythe"), -1);
handle_stuff();
}
else
msg_print(_("痛恨の一撃!", "It was a critical hit!"));
tmp_damage = MAX(damage, tmp_damage*2);
- get_damage += take_hit(DAMAGE_ATTACK, tmp_damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, tmp_damage, ddesc, -1);
break;
}
}
{
obvious = TRUE;
damage -= (damage * ((ac < 150) ? ac : 150) / 250);
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
break;
}
}
}
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
/* Learn about the player */
update_smart_learn(m_idx, DRS_POIS);
}
}
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
/* Learn about the player */
update_smart_learn(m_idx, DRS_DISEN);
case RBE_UN_POWER:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
case RBE_EAT_GOLD:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
/* Confused monsters cannot steal successfully. -LM-*/
if (MON_CONFUSED(m_ptr)) break;
case RBE_EAT_ITEM:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
/* Confused monsters cannot steal successfully. -LM-*/
if (MON_CONFUSED(m_ptr)) break;
case RBE_EAT_FOOD:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
{
/* Access the lite */
o_ptr = &p_ptr->inventory_list[INVEN_LITE];
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
case RBE_BLIND:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead) break;
/* Increase "blind" */
case RBE_CONFUSE:
{
if (explode) break;
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead) break;
case RBE_TERRIFY:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead) break;
case RBE_PARALYZE:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead) break;
case RBE_LOSE_STR:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
if (do_dec_stat(p_ptr, A_STR)) obvious = TRUE;
case RBE_LOSE_INT:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
if (do_dec_stat(p_ptr, A_INT)) obvious = TRUE;
case RBE_LOSE_WIS:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
if (do_dec_stat(p_ptr, A_WIS)) obvious = TRUE;
case RBE_LOSE_DEX:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
if (do_dec_stat(p_ptr, A_DEX)) obvious = TRUE;
case RBE_LOSE_CON:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
if (do_dec_stat(p_ptr, A_CON)) obvious = TRUE;
case RBE_LOSE_CHR:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
if (do_dec_stat(p_ptr, A_CHR)) obvious = TRUE;
case RBE_LOSE_ALL:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
/* Hack -- Reduce damage based on the player armor class */
damage -= (damage * ((ac < 150) ? ac : 150) / 250);
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
/* Radius 8 earthquake centered at the monster */
if (damage > 23 || explode)
obvious = TRUE;
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
obvious = TRUE;
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
obvious = TRUE;
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
obvious = TRUE;
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
case RBE_DISEASE:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
}
}
}
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
break;
}
obvious = TRUE;
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead || CHECK_MULTISHADOW()) break;
}
case RBE_INERTIA:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead) break;
}
case RBE_STUN:
{
- get_damage += take_hit(DAMAGE_ATTACK, damage, ddesc, -1);
+ get_damage += take_hit(p_ptr, DAMAGE_ATTACK, damage, ddesc, -1);
if (p_ptr->is_dead) break;
{
msg_print(_("気が暴走した!", "The Force exploded!"));
fire_ball(GF_MANA, 0, P_PTR_KI / 2, 10);
- take_hit(DAMAGE_LOSELIFE, p_ptr->magic_num1[0] / 2, _("気の暴走", "Explosion of the Force"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, p_ptr->magic_num1[0] / 2, _("気の暴走", "Explosion of the Force"), -1);
}
else return TRUE;
break;
if ((use_mind == MIND_BERSERKER) || (use_mind == MIND_NINJUTSU))
{
- take_hit(DAMAGE_USELIFE, mana_cost, _("過度の集中", "concentrating too hard"), -1);
+ take_hit(p_ptr, DAMAGE_USELIFE, mana_cost, _("過度の集中", "concentrating too hard"), -1);
/* Redraw hp */
p_ptr->redraw |= (PR_HP);
}
/* Mega hack -- this special action deals damage to the player. Therefore the code of "eyeeye" is necessary.
-- henkma
*/
- get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
+ get_damage = take_hit(p_ptr, DAMAGE_NOESCAPE, dam, m_name, -1);
if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
{
GAME_TEXT m_name_self[80];
case MUT1_STERILITY:
msg_print(_("突然頭が痛くなった!", "You suddenly have a headache!"));
- take_hit(DAMAGE_LOSELIFE, randint1(17) + 17, _("禁欲を強いた疲労", "the strain of forcing abstinence"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, randint1(17) + 17, _("禁欲を強いた疲労", "the strain of forcing abstinence"), -1);
current_floor_ptr->num_repro += MAX_REPRO;
break;
msg_print(_("「苦しむがよい、無能な愚か者よ!」", "'Suffer, pathetic fool!'"));
fire_ball(GF_DISINTEGRATE, 0, creature_ptr->lev * 4, 4);
- take_hit(DAMAGE_NOESCAPE, creature_ptr->lev * 4, wrath_reason, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, creature_ptr->lev * 4, wrath_reason, -1);
reward = _("分解の球が発生した。", "generating disintegration ball");
break;
msg_format(_("%sの声が轟き渡った:", "The voice of %s thunders:"), chaos_patrons[creature_ptr->chaos_patron]);
msg_print(_("「死ぬがよい、下僕よ!」", "'Die, mortal!'"));
- take_hit(DAMAGE_LOSELIFE, creature_ptr->lev * 4, wrath_reason, -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, creature_ptr->lev * 4, wrath_reason, -1);
for (dummy = 0; dummy < A_MAX; dummy++)
{
(void)dec_stat(creature_ptr, dummy, 10 + randint1(15), FALSE);
if (acid_minus_ac(p_ptr)) dam = (dam + 1) / 2;
}
- get_damage = take_hit(aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
+ get_damage = take_hit(p_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
/* Inventory damage */
if (!aura && !(double_resist && p_ptr->resist_acid))
(void)do_dec_stat(p_ptr, A_DEX);
}
- get_damage = take_hit(aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
+ get_damage = take_hit(p_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
/* Inventory damage */
if (!aura && !(double_resist && p_ptr->resist_elec))
(void)do_dec_stat(p_ptr, A_STR);
}
- get_damage = take_hit(aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
+ get_damage = take_hit(p_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
/* Inventory damage */
if (!aura && !(double_resist && p_ptr->resist_fire))
(void)do_dec_stat(p_ptr, A_STR);
}
- get_damage = take_hit(aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
+ get_damage = take_hit(p_ptr, aura ? DAMAGE_NOESCAPE : DAMAGE_ATTACK, dam, kb_str, monspell);
/* Inventory damage */
if (!aura && !(double_resist && p_ptr->resist_cold))
* setting the player to "dead".
*/
-int take_hit(int damage_type, HIT_POINT damage, concptr hit_from, int monspell)
+int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concptr hit_from, int monspell)
{
- int old_chp = p_ptr->chp;
+ int old_chp = creature_ptr->chp;
char death_message[1024];
char tmp[1024];
- int warning = (p_ptr->mhp * hitpoint_warn / 10);
- if (p_ptr->is_dead) return 0;
+ int warning = (creature_ptr->mhp * hitpoint_warn / 10);
+ if (creature_ptr->is_dead) return 0;
- if (p_ptr->sutemi) damage *= 2;
- if (p_ptr->special_defense & KATA_IAI) damage += (damage + 4) / 5;
+ if (creature_ptr->sutemi) damage *= 2;
+ if (creature_ptr->special_defense & KATA_IAI) damage += (damage + 4) / 5;
if (easy_band) damage = (damage + 1) / 2;
disturb(TRUE, TRUE);
if (auto_more)
{
- p_ptr->now_damaged = TRUE;
+ creature_ptr->now_damaged = TRUE;
}
}
}
}
- if (p_ptr->wraith_form)
+ if (creature_ptr->wraith_form)
{
if (damage_type == DAMAGE_FORCE)
{
}
}
- if (p_ptr->special_defense & KATA_MUSOU)
+ if (creature_ptr->special_defense & KATA_MUSOU)
{
damage /= 2;
if ((damage == 0) && one_in_(2)) damage = 1;
} /* not if LOSELIFE USELIFE */
/* Hurt the player */
- p_ptr->chp -= damage;
- if (damage_type == DAMAGE_GENO && p_ptr->chp < 0)
+ creature_ptr->chp -= damage;
+ if (damage_type == DAMAGE_GENO && creature_ptr->chp < 0)
{
- damage += p_ptr->chp;
- p_ptr->chp = 0;
+ damage += creature_ptr->chp;
+ creature_ptr->chp = 0;
}
/* Display the hitpoints */
- p_ptr->redraw |= (PR_HP);
+ creature_ptr->redraw |= (PR_HP);
- p_ptr->window |= (PW_PLAYER);
+ creature_ptr->window |= (PW_PLAYER);
- if (damage_type != DAMAGE_GENO && p_ptr->chp == 0)
+ if (damage_type != DAMAGE_GENO && creature_ptr->chp == 0)
{
- chg_virtue(p_ptr, V_SACRIFICE, 1);
- chg_virtue(p_ptr, V_CHANCE, 2);
+ chg_virtue(creature_ptr, V_SACRIFICE, 1);
+ chg_virtue(creature_ptr, V_CHANCE, 2);
}
/* Dead player */
- if (p_ptr->chp < 0)
+ if (creature_ptr->chp < 0)
{
- bool android = (p_ptr->prace == RACE_ANDROID ? TRUE : FALSE);
+ bool android = (creature_ptr->prace == RACE_ANDROID ? TRUE : FALSE);
#ifdef JP /* 死んだ時に強制終了して死を回避できなくしてみた by Habu */
if (!cheat_save)
sound(SOUND_DEATH);
- chg_virtue(p_ptr, V_SACRIFICE, 10);
+ chg_virtue(creature_ptr, V_SACRIFICE, 10);
handle_stuff();
- p_ptr->leaving = TRUE;
+ creature_ptr->leaving = TRUE;
/* Note death */
- p_ptr->is_dead = TRUE;
+ creature_ptr->is_dead = TRUE;
- if (p_ptr->inside_arena)
+ if (creature_ptr->inside_arena)
{
- concptr m_name = r_name + r_info[arena_info[p_ptr->arena_number].r_idx].name;
+ concptr m_name = r_name + r_info[arena_info[creature_ptr->arena_number].r_idx].name;
msg_format(_("あなたは%sの前に敗れ去った。", "You are beaten by %s."), m_name);
msg_print(NULL);
- if (record_arena) do_cmd_write_nikki(NIKKI_ARENA, -1 - p_ptr->arena_number, m_name);
+ if (record_arena) do_cmd_write_nikki(NIKKI_ARENA, -1 - creature_ptr->arena_number, m_name);
}
else
{
QUEST_IDX q_idx = quest_number(current_floor_ptr->dun_level);
bool seppuku = streq(hit_from, "Seppuku");
- bool winning_seppuku = p_ptr->total_winner && seppuku;
+ bool winning_seppuku = creature_ptr->total_winner && seppuku;
play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_GAMEOVER);
/* Note cause of death */
if (seppuku)
{
- strcpy(p_ptr->died_from, hit_from);
+ strcpy(creature_ptr->died_from, hit_from);
#ifdef JP
- if (!winning_seppuku) strcpy(p_ptr->died_from, "切腹");
+ if (!winning_seppuku) strcpy(creature_ptr->died_from, "切腹");
#endif
}
else
{
char dummy[1024];
#ifdef JP
- sprintf(dummy, "%s%s%s", !p_ptr->paralyzed ? "" : p_ptr->free_act ? "彫像状態で" : "麻痺状態で", p_ptr->image ? "幻覚に歪んだ" : "", hit_from);
+ sprintf(dummy, "%s%s%s", !creature_ptr->paralyzed ? "" : creature_ptr->free_act ? "彫像状態で" : "麻痺状態で", creature_ptr->image ? "幻覚に歪んだ" : "", hit_from);
#else
- sprintf(dummy, "%s%s", hit_from, !p_ptr->paralyzed ? "" : " while helpless");
+ sprintf(dummy, "%s%s", hit_from, !creature_ptr->paralyzed ? "" : " while helpless");
#endif
- my_strcpy(p_ptr->died_from, dummy, sizeof p_ptr->died_from);
+ my_strcpy(creature_ptr->died_from, dummy, sizeof creature_ptr->died_from);
}
/* No longer a winner */
- p_ptr->total_winner = FALSE;
+ creature_ptr->total_winner = FALSE;
if (winning_seppuku)
{
{
char buf[20];
- if (p_ptr->inside_arena)
+ if (creature_ptr->inside_arena)
strcpy(buf, _("アリーナ", "in the Arena"));
else if (!current_floor_ptr->dun_level)
strcpy(buf, _("地上", "on the surface"));
else
sprintf(buf, _("%d階", "level %d"), (int)current_floor_ptr->dun_level);
- sprintf(tmp, _("%sで%sに殺された。", "killed by %s %s."), buf, p_ptr->died_from);
+ sprintf(tmp, _("%sで%sに殺された。", "killed by %s %s."), buf, creature_ptr->died_from);
do_cmd_write_nikki(NIKKI_BUNSHOU, 0, tmp);
}
flush();
/* Initialize "last message" buffer */
- if (p_ptr->last_message) string_free(p_ptr->last_message);
- p_ptr->last_message = NULL;
+ if (creature_ptr->last_message) string_free(creature_ptr->last_message);
+ creature_ptr->last_message = NULL;
/* Hack -- Note death */
if (!last_words)
strcpy(death_message, android ? "You are broken." : "You die.");
#endif
}
- else p_ptr->last_message = string_make(death_message);
+ else creature_ptr->last_message = string_make(death_message);
#ifdef JP
if (winning_seppuku)
handle_stuff();
/* Hitpoint warning */
- if (p_ptr->chp < warning)
+ if (creature_ptr->chp < warning)
{
/* Hack -- bell on first notice */
if (old_chp > warning) bell();
if (record_danger && (old_chp > warning))
{
- if (p_ptr->image && damage_type == DAMAGE_ATTACK)
+ if (creature_ptr->image && damage_type == DAMAGE_ATTACK)
hit_from = _("何か", "something");
sprintf(tmp, _("%sによってピンチに陥った。", "A critical situation because of %s."), hit_from);
if (auto_more)
{
/* stop auto_more even if DAMAGE_USELIFE */
- p_ptr->now_damaged = TRUE;
+ creature_ptr->now_damaged = TRUE;
}
msg_print(_("*** 警告:低ヒット・ポイント! ***", "*** LOW HITPOINT WARNING! ***"));
msg_print(NULL);
flush();
}
- if (p_ptr->wild_mode && !p_ptr->leaving && (p_ptr->chp < MAX(warning, p_ptr->mhp / 5)))
+ if (creature_ptr->wild_mode && !creature_ptr->leaving && (creature_ptr->chp < MAX(warning, creature_ptr->mhp / 5)))
{
change_wild_mode(FALSE);
}
#define DAMAGE_ATTACK 4
#define DAMAGE_NOESCAPE 5
#define DAMAGE_USELIFE 6
-extern int take_hit(int damage_type, HIT_POINT damage, concptr kb_str, int monspell);
+extern int take_hit(player_type *creature_ptr, int damage_type, HIT_POINT damage, concptr kb_str, int monspell);
/*
* This seems like a pretty standard "typedef"
if (Nasty_effect)
{
msg_print(_("新たな傷ができた!", "A new wound was created!"));
- take_hit(DAMAGE_LOSELIFE, change / 2, _("変化した傷", "a polymorphed wound"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, change / 2, _("変化した傷", "a polymorphed wound"), -1);
set_cut(creature_ptr,change);
}
else
if (one_in_(6))
{
msg_print(_("現在の姿で生きていくのは困難なようだ!", "You find living difficult in your present form!"));
- take_hit(DAMAGE_LOSELIFE, damroll(randint1(10), creature_ptr->lev), _("致命的な突然変異", "a lethal mutation"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, damroll(randint1(10), creature_ptr->lev), _("致命的な突然変異", "a lethal mutation"), -1);
power -= 10;
}
msg_print(_("パターンを血で汚してしまった!", "You bleed on the Pattern!"));
msg_print(_("何か恐ろしい事が起こった!", "Something terrible happens!"));
- if (!IS_INVULN()) take_hit(DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1);
+ if (!IS_INVULN()) take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1);
to_ruin = randint1(45) + 35;
while (to_ruin--)
{
actual_racial_cost -= p_ptr->csp;
p_ptr->csp = 0;
- take_hit(DAMAGE_USELIFE, actual_racial_cost, _("過度の集中", "concentrating too hard"), -1);
+ take_hit(p_ptr, DAMAGE_USELIFE, actual_racial_cost, _("過度の集中", "concentrating too hard"), -1);
}
else p_ptr->csp -= actual_racial_cost;
if (!get_aim_dir(&dir)) return NULL;
fire_ball_hide(GF_BLOOD_CURSE, dir, dam, rad);
- take_hit(DAMAGE_USELIFE, 20 + randint1(30), _("血の呪い", "Blood curse"), -1);
+ take_hit(p_ptr, DAMAGE_USELIFE, 20 + randint1(30), _("血の呪い", "Blood curse"), -1);
}
}
break;
if (!get_aim_dir(&dir)) return NULL;
fire_ball(GF_HELL_FIRE, dir, dam, rad);
- take_hit(DAMAGE_USELIFE, 20 + randint1(30), _("地獄の劫火の呪文を唱えた疲労", "the strain of casting Hellfire"), -1);
+ take_hit(p_ptr, DAMAGE_USELIFE, 20 + randint1(30), _("地獄の劫火の呪文を唱えた疲労", "the strain of casting Hellfire"), -1);
}
}
break;
msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
return NULL;
}
- take_hit(DAMAGE_NOESCAPE, 100 + randint1(100), _("慶雲鬼忍剣を使った衝撃", "exhaustion on using Keiun-Kininken"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 100 + randint1(100), _("慶雲鬼忍剣を使った衝撃", "exhaustion on using Keiun-Kininken"), -1);
}
break;
if (i != '@') return NULL;
if (p_ptr->total_winner)
{
- take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
+ take_hit(p_ptr, DAMAGE_FORCE, 9999, "Seppuku", -1);
p_ptr->total_winner = TRUE;
}
else
{
msg_print(_("武士道とは、死ぬことと見つけたり。", "Meaning of Bushi-do is found in the death."));
- take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
+ take_hit(p_ptr, DAMAGE_FORCE, 9999, "Seppuku", -1);
}
}
break;
if ((PRACE_IS_(p_ptr, RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
{
msg_print(_("日の光があなたの肉体を焦がした!", "The daylight scorches your flesh!"));
- take_hit(DAMAGE_NOESCAPE, damroll(2, 2), _("日の光", "daylight"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(2, 2), _("日の光", "daylight"), -1);
}
}
}
if ((PRACE_IS_(p_ptr, RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
{
msg_print(_("日光があなたの肉体を焦がした!", "The sunlight scorches your flesh!"));
- take_hit(DAMAGE_NOESCAPE, 50, _("日光", "sunlight"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 50, _("日光", "sunlight"), -1);
}
}
}
killer = _("地震", "an earthquake");
}
- take_hit(DAMAGE_ATTACK, damage, killer, -1);
+ take_hit(p_ptr, DAMAGE_ATTACK, damage, killer, -1);
}
}
}
creature_ptr->redraw |= (PR_MANA);
}
- take_hit(DAMAGE_LOSELIFE, damroll(1, 12), _("危険な秘密", "perilous secrets"), -1);
+ take_hit(p_ptr, DAMAGE_LOSELIFE, damroll(1, 12), _("危険な秘密", "perilous secrets"), -1);
/* Confusing. */
if (one_in_(5)) (void)set_confused(p_ptr, creature_ptr->confused + randint1(10));
/* Exercise a little care... */
- if (one_in_(20)) take_hit(DAMAGE_LOSELIFE, damroll(4, 10), _("危険な秘密", "perilous secrets"), -1);
+ if (one_in_(20)) take_hit(p_ptr, DAMAGE_LOSELIFE, damroll(4, 10), _("危険な秘密", "perilous secrets"), -1);
return TRUE;
}
{
/* Injure +/- confusion */
monster_desc(killer, m_ptr, MD_WRONGDOER_NAME);
- take_hit(DAMAGE_ATTACK, dam, killer, -1); /* has already been /3 */
+ take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, -1); /* has already been /3 */
if (one_in_(4) && !CHECK_MULTISHADOW())
{
switch (randint1(4))
p_ptr->redraw |= PR_MANA;
p_ptr->window |= (PW_SPELL);
}
- take_hit(DAMAGE_ATTACK, dam, killer, -1); /* has already been /3 */
+ take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, -1); /* has already been /3 */
}
dam = 0;
}
do_dec_stat(p_ptr, A_CON);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
if (!(double_resist || p_ptr->resist_pois) && !CHECK_MULTISHADOW())
{
if (p_ptr->resist_pois) dam = (2 * dam + 2) / 5;
if (double_resist) dam = (2 * dam + 2) / 5;
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
if (!(double_resist || p_ptr->resist_pois) && !CHECK_MULTISHADOW())
{
set_poisoned(p_ptr, p_ptr->poisoned + randint0(dam) + 10);
case GF_MISSILE:
{
if (fuzzy) msg_print(_("何かで攻撃された!", "You are hit by something!"));
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
dam /= 2;
else if (p_ptr->align < -10)
dam *= 2;
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
if (fuzzy) msg_print(_("何かで攻撃された!", "You are hit by something!"));
if (p_ptr->align > 10)
dam *= 2;
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
msg_print(_("矢を斬り捨てた!", "You cut down the arrow!"));
break;
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
case GF_PLASMA:
{
if (fuzzy) msg_print(_("何かとても熱いもので攻撃された!", "You are hit by something *HOT*!"));
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
if (!p_ptr->resist_sound && !CHECK_MULTISHADOW())
{
}
else
{
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
}
break;
if (p_ptr->resist_water) get_damage /= 4;
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
}
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
inven_damage(set_cold_destroy, 2);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
inven_damage(set_cold_destroy, 2);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
{
(void)set_confused(p_ptr, p_ptr->confused + randint1(20) + 10);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
{
(void)apply_disenchant(0);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
{
apply_nexus(m_ptr);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
{
(void)set_stun(p_ptr, p_ptr->stun + randint1(20));
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
inven_damage(set_cold_destroy, 3);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
{
if (fuzzy) msg_print(_("何か遅いもので攻撃された!", "You are hit by something slow!"));
if (!CHECK_MULTISHADOW()) (void)set_slow(p_ptr, p_ptr->slow + randint0(4) + 4, FALSE);
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
}
if (p_ptr->wraith_form) dam *= 2;
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
if (p_ptr->wraith_form && !CHECK_MULTISHADOW())
{
{
(void)set_blind(p_ptr, p_ptr->blind + randint1(5) + 2);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
}
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
inven_damage(set_cold_destroy, 2);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
{
if (fuzzy) msg_print(_("純粋なエネルギーで攻撃された!", "You are hit by pure energy!"));
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
case GF_SUPER_RAY:
{
if (fuzzy) msg_print(_("魔法のオーラで攻撃された!", "You are hit by an aura of magic!"));
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
case GF_PSY_SPEAR:
{
if (fuzzy) msg_print(_("エネルギーの塊で攻撃された!", "You are hit by an energy!"));
- get_damage = take_hit(DAMAGE_FORCE, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_FORCE, dam, killer, monspell);
break;
}
{
if (fuzzy) msg_print(_("何かが空からあなたの頭上に落ちてきた!", "Something falls from the sky on you!"));
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
if (!p_ptr->resist_shard || one_in_(13))
{
if (!p_ptr->immune_fire) inven_damage(set_fire_destroy, 2);
if (p_ptr->mimic_form)
{
if (!(mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING))
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
}
else
{
/* Hurt a lot */
default:
{
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
break;
}
}
p_ptr->redraw |= PR_MANA;
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
}
break;
}
p_ptr->redraw |= PR_MANA;
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
if (!CHECK_MULTISHADOW())
{
if (!p_ptr->resist_blind)
else
{
if (!CHECK_MULTISHADOW()) curse_equipment(15, 0);
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
}
break;
}
else
{
if (!CHECK_MULTISHADOW()) curse_equipment(25, MIN(rlev / 2 - 15, 5));
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
}
break;
}
else
{
if (!CHECK_MULTISHADOW()) curse_equipment(33, MIN(rlev / 2 - 15, 15));
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
}
break;
}
}
else
{
- get_damage = take_hit(DAMAGE_ATTACK, dam, killer, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, killer, monspell);
if (!CHECK_MULTISHADOW()) (void)set_cut(p_ptr,p_ptr->cut + damroll(10, 10));
}
break;
curse_equipment(40, 20);
}
- get_damage = take_hit(DAMAGE_ATTACK, dam, m_name, monspell);
+ get_damage = take_hit(p_ptr, DAMAGE_ATTACK, dam, m_name, monspell);
if (p_ptr->chp < 1) p_ptr->chp = 1;
}
(randint1(200) + (powerful ? 500 : 300)) * 2, GF_MANA, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID, -1);
if ((creature_ptr->pclass != CLASS_MAGE) && (creature_ptr->pclass != CLASS_HIGH_MAGE) && (creature_ptr->pclass != CLASS_SORCERER) && (creature_ptr->pclass != CLASS_MAGIC_EATER) && (creature_ptr->pclass != CLASS_BLUE_MAGE))
{
- (void)take_hit(DAMAGE_NOESCAPE, 50, _("コントロールし難い強力な魔力の解放", "unleashing magics too mighty to control"), -1);
+ (void)take_hit(p_ptr, DAMAGE_NOESCAPE, 50, _("コントロールし難い強力な魔力の解放", "unleashing magics too mighty to control"), -1);
}
return TRUE;
}
if (player_cast)
{
- take_hit(DAMAGE_GENO, randint1(dam_side), format(_("%^sの呪文を唱えた疲労", "the strain of casting %^s"), spell_name), -1);
+ take_hit(p_ptr, DAMAGE_GENO, randint1(dam_side), format(_("%^sの呪文を唱えた疲労", "the strain of casting %^s"), spell_name), -1);
}
/* Visual feedback */
HIT_POINT dam = damroll(10, 10);
msg_print(_("純粋な魔力の次元への扉が開いた!", "A portal opens to a plane of raw mana!"));
project(0, 8, p_ptr->y, p_ptr->x, dam, GF_MANA, flg, -1);
- take_hit(DAMAGE_NOESCAPE, dam, _("純粋な魔力の解放", "released pure mana"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, dam, _("純粋な魔力の解放", "released pure mana"), -1);
if (!one_in_(6)) break;
}
case 32: case 33:
if (!randint0(7))
{
project(0, 7, p_ptr->y, p_ptr->x, 50, GF_KILL_WALL, flg, -1);
- take_hit(DAMAGE_NOESCAPE, 50, _("エネルギーのうねり", "surge of energy"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 50, _("エネルギーのうねり", "surge of energy"), -1);
}
if (!one_in_(6)) break;
case 1: case 2: case 3: case 16: case 17:
bool comvert_hp_to_mp(player_type *creature_ptr)
{
- int gain_sp = take_hit(DAMAGE_USELIFE, creature_ptr->lev, _("HPからMPへの無謀な変換", "thoughtless convertion from HP to SP"), -1) / 5;
+ int gain_sp = take_hit(p_ptr, DAMAGE_USELIFE, creature_ptr->lev, _("HPからMPへの無謀な変換", "thoughtless convertion from HP to SP"), -1) / 5;
if (gain_sp)
{
creature_ptr->csp += gain_sp;
msg_print(_("ダンジョンは大きく揺れた。", "The dungeon trembles."));
}
- take_hit(DAMAGE_NOESCAPE, 100 + randint1(150), _("自殺的な虚無招来", "a suicidal Call the Void"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, 100 + randint1(150), _("自殺的な虚無招来", "a suicidal Call the Void"), -1);
}
}
bool detonation(player_type *creature_ptr)
{
msg_print(_("体の中で激しい爆発が起きた!", "Massive explosions rupture your body!"));
- take_hit(DAMAGE_NOESCAPE, damroll(50, 20), _("爆発の薬", "a potion of Detonation"), -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, damroll(50, 20), _("爆発の薬", "a potion of Detonation"), -1);
(void)set_stun(p_ptr, creature_ptr->stun + 75);
(void)set_cut(p_ptr,creature_ptr->cut + 5000);
return TRUE;
}
}
- take_hit(DAMAGE_NOESCAPE, dam, trap_name, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, dam, trap_name, -1);
}
/*!
if (check_hit(125))
{
msg_print(_("小さなダーツが飛んできて刺さった!", "A small dart hits you!"));
- take_hit(DAMAGE_ATTACK, damroll(1, 4), _("ダーツの罠", "a dart trap"), -1);
+ take_hit(p_ptr, DAMAGE_ATTACK, damroll(1, 4), _("ダーツの罠", "a dart trap"), -1);
if (!CHECK_MULTISHADOW()) hit = TRUE;
}
else
dam = damroll(2, 8);
name = _("落とし戸", "a trap door");
- take_hit(DAMAGE_NOESCAPE, dam, name, -1);
+ take_hit(p_ptr, DAMAGE_NOESCAPE, dam, name, -1);
/* Still alive and autosave enabled */
if (autosave_l && (p_ptr->chp >= 0))