*/
#include "angband.h"
+#include "selfinfo.h"
/*!
* @brief プレイヤーに突然変異を与える
}
}
+void lose_all_mutations(void)
+{
+ if (p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3)
+ {
+ chg_virtue(V_CHANCE, -5);
+ msg_print(_("全ての突然変異が治った。", "You are cured of all mutations."));
+ p_ptr->muta1 = p_ptr->muta2 = p_ptr->muta3 = 0;
+ p_ptr->update |= PU_BONUS;
+ handle_stuff();
+ mutant_regenerate_mod = calc_mutant_regenerate_mod();
+ }
+}
+
/*!
* @brief ファイルポインタを通じて突然変異の一覧を出力する
* @param OutFile 出力先ファイルポインタ
* @param x ビット数を調べたい変数
* @return ビット数
*/
-int count_bits(u32b x)
+int count_bits(BIT_FLAGS x)
{
int n = 0;
* @brief 突然変異レイシャル上で口を使うよりを行った際に歌や呪術を停止する /
* @return なし
*/
-void mutation_stop_mouth()
+static void mutation_stop_mouth(void)
{
if (music_singing_any()) stop_singing();
if (hex_spelling_any()) stop_hex_spell_all();
mutation_stop_mouth();
msg_print(_("あなたは火炎のブレスを吐いた...", "You breathe fire..."));
- fire_ball(GF_FIRE, dir, lvl * 2, 1 + (lvl / 20));
+ fire_breath(GF_FIRE, dir, lvl * 2, 1 + (lvl / 20));
break;
case MUT1_HYPN_GAZE:
/* Only works on adjacent monsters */
if (!get_rep_dir2(&dir)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
c_ptr = &cave[y][x];
mutation_stop_mouth();
dummy = lvl * 2;
- if (drain_life(dir, dummy))
+ if (hypodynamic_bolt(dir, dummy))
{
if (p_ptr->food < PY_FOOD_FULL)
/* No heal if we are "full" */
feature_type *f_ptr, *mimic_f_ptr;
if (!get_rep_dir2(&dir)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
c_ptr = &cave[y][x];
f_ptr = &f_info[c_ptr->feat];
mimic_f_ptr = &f_info[get_feat_mimic(c_ptr)];
int i;
for (i = 0; i < 8; i++)
{
- summon_specific(-1, py, px, lvl, SUMMON_MOLD, PM_FORCE_PET);
+ summon_specific(-1, p_ptr->y, p_ptr->x, lvl, SUMMON_MOLD, PM_FORCE_PET);
}
}
break;
case MUT1_RESIST:
{
int num = lvl / 10;
- int dur = randint1(20) + 20;
+ TIME_EFFECT dur = randint1(20) + 20;
if (randint0(5) < num)
{
break;
case MUT1_EARTHQUAKE:
- (void)earthquake(py, px, 10);
+ (void)earthquake(p_ptr->y, p_ptr->x, 10);
break;
case MUT1_EAT_MAGIC:
int x, y;
if (!get_rep_dir2(&dir)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
if (cave[y][x].m_idx)
{
py_attack(y, x, 0);
monster_race *r_ptr;
if (!get_rep_dir2(&dir)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
c_ptr = &cave[y][x];
if (!c_ptr->m_idx)
cave_type *c_ptr;
if (!get_rep_dir2(&dir)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
c_ptr = &cave[y][x];
if (!c_ptr->m_idx)
break;
default:
- energy_use = 0;
+ p_ptr->energy_use = 0;
msg_format(_("能力 %s は実装されていません。", "Power %s not implemented. Oops."), power);
}