OSDN Git Service

[Refactor] #37353 自己分析処理を selfinfo.c/h に分離。 / Separate self knoledge spells to selfin...
[hengband/hengband.git] / src / mutation.c
index 4fbddde..aa4ec13 100644 (file)
@@ -12,6 +12,7 @@
  */
 
 #include "angband.h"
+#include "selfinfo.h"
 
 /*!
  * @brief プレイヤーに突然変異を与える
@@ -1478,6 +1479,19 @@ bool lose_mutation(int choose_mut)
        }
 }
 
+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 出力先ファイルポインタ
@@ -2010,7 +2024,7 @@ void do_cmd_knowledge_mutations(void)
  * @param x ビット数を調べたい変数
  * @return ビット数
  */
-int count_bits(u32b x)
+int count_bits(BIT_FLAGS x)
 {
        int n = 0;
 
@@ -2106,7 +2120,7 @@ bool mutation_power_aux(u32b power)
                        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:
@@ -2167,7 +2181,7 @@ bool mutation_power_aux(u32b power)
 
                                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" */
@@ -2334,7 +2348,7 @@ bool mutation_power_aux(u32b power)
                case MUT1_RESIST:
                        {
                                int num = lvl / 10;
-                               time_effect dur = randint1(20) + 20;
+                               TIME_EFFECT dur = randint1(20) + 20;
 
                                if (randint0(5) < num)
                                {