}
}
- if (compare_virtue(V_KNOWLEDGE, 100, VIRTUE_LARGE)) heavy = TRUE;
+ if (compare_virtue(p_ptr, V_KNOWLEDGE, 100, VIRTUE_LARGE)) heavy = TRUE;
/*** Sense everything ***/
if ((PRACE_IS_(p_ptr, RACE_AMBERITE)) &&
(p_ptr->cut > 0) && one_in_(10))
{
- wreck_the_pattern();
+ wreck_the_pattern(p_ptr);
}
pattern_type = f_info[current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].feat].subtype;
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 (have_flag(f_ptr->flags, FF_WATER) && have_flag(f_ptr->flags, FF_DEEP) &&
!p_ptr->levitation && !p_ptr->can_swim && !p_ptr->resist_water)
{
- if (p_ptr->total_weight > weight_limit())
+ if (p_ptr->total_weight > weight_limit(p_ptr))
{
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);
}
}
if (p_ptr->ult_res)
{
- (void)set_ultimate_res(p_ptr->ult_res - 1, TRUE);
+ (void)set_ultimate_res(p_ptr, p_ptr->ult_res - 1, TRUE);
}
/*** Poison and Stun and Cut ***/
}
if ((p_ptr->muta2 & MUT2_NORMALITY) && one_in_(5000))
{
- if (!lose_mutation(0))
+ if (!lose_mutation(p_ptr, 0))
msg_print(_("奇妙なくらい普通になった気がする。", "You feel oddly normal."));
}
if ((p_ptr->muta2 & MUT2_WRAITH) && !p_ptr->anti_magic && one_in_(3000))
msg_print(_("胃が痙攣し、食事を失った!", "Your stomach roils, and you lose your lunch!"));
msg_print(NULL);
set_food(p_ptr, PY_FOOD_WEAK);
- if (music_singing_any()) stop_singing(p_ptr);
- if (hex_spelling_any()) stop_hex_spell_all();
+ if (music_singing_any(p_ptr)) stop_singing(p_ptr);
+ if (hex_spelling_any(p_ptr)) stop_hex_spell_all();
}
if ((p_ptr->muta2 & MUT2_WALK_SHAD) && !p_ptr->anti_magic && one_in_(12000) && !p_ptr->inside_arena)
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))
+ if (has_melee_weapon(p_ptr, INVEN_RARM))
{
slot = INVEN_RARM;
o_ptr = &p_ptr->inventory_list[INVEN_RARM];
- if (has_melee_weapon(INVEN_LARM) && one_in_(2))
+ if (has_melee_weapon(p_ptr, INVEN_LARM) && one_in_(2))
{
o_ptr = &p_ptr->inventory_list[INVEN_LARM];
slot = INVEN_LARM;
}
}
- else if (has_melee_weapon(INVEN_LARM))
+ else if (has_melee_weapon(p_ptr, INVEN_LARM))
{
o_ptr = &p_ptr->inventory_list[INVEN_LARM];
slot = INVEN_LARM;
if (p_ptr->exp < 0) p_ptr->exp = 0;
p_ptr->max_exp -= (p_ptr->lev + 1) / 2;
if (p_ptr->max_exp < 0) p_ptr->max_exp = 0;
- check_experience();
+ check_experience(p_ptr);
}
/* Add light curse (Later) */
if ((p_ptr->cursed & TRC_ADD_L_CURSE) && one_in_(2000))
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);
}
}
}
}
/*** Wizard Commands ***/
-
- /* Toggle Wizard Mode */
case KTRL('W'):
{
if (p_ptr->wizard)
break;
}
- /* Hack -- toggle windows */
case KTRL('I'):
{
- toggle_inven_equip();
+ toggle_inven_equip(p_ptr);
break;
}
break;
}
- /* Toggle search mode */
case 'S':
{
- if (p_ptr->action == ACTION_SEARCH) set_action(ACTION_NONE);
- else set_action(ACTION_SEARCH);
+ if (p_ptr->action == ACTION_SEARCH) set_action(p_ptr, ACTION_NONE);
+ else set_action(p_ptr, ACTION_SEARCH);
break;
}
if (!p_ptr->wild_mode) do_cmd_travel();
if (p_ptr->special_defense & KATA_MUSOU)
{
- set_action(ACTION_NONE);
+ set_action(p_ptr, ACTION_NONE);
}
break;
}
if ((p_ptr->chp == p_ptr->mhp) &&
(p_ptr->csp >= p_ptr->msp))
{
- set_action(ACTION_NONE);
+ set_action(p_ptr, ACTION_NONE);
}
}
!p_ptr->image && !p_ptr->word_recall &&
!p_ptr->alter_reality)
{
- set_action(ACTION_NONE);
+ set_action(p_ptr, ACTION_NONE);
}
}
}
/* Mana run out */
p_ptr->csp = 0;
p_ptr->csp_frac = 0;
- set_action(ACTION_NONE);
+ set_action(p_ptr, ACTION_NONE);
}
else
{
{
if (p_ptr->csp < 3)
{
- set_action(ACTION_NONE);
+ set_action(p_ptr, ACTION_NONE);
}
else
{
/* Reduce rest count */
p_ptr->resting--;
- if (!p_ptr->resting) set_action(ACTION_NONE);
+ if (!p_ptr->resting) set_action(p_ptr, ACTION_NONE);
p_ptr->redraw |= (PR_STATE);
}
current_world_ptr->seed_town = randint0(0x10000000);
/* Roll up a new character */
- player_birth();
+ player_birth(p_ptr);
counts_write(2,0);
p_ptr->count = 0;
/* Give startup outfit (after loading pref files) */
if (new_game)
{
- player_outfit();
+ player_outfit(p_ptr);
}
/* React to changes */
p_ptr->chp = 0;
p_ptr->chp_frac = 0;
p_ptr->exit_bldg = TRUE;
- reset_tim_flags();
+ reset_tim_flags(p_ptr);
/* Leave through the exit */
prepare_change_floor_mode(CFM_SAVE_FLOORS | CFM_RAND_CONNECT);