OSDN Git Service

[Fix] #41487 SoundとMusicを間違えていたので修正 / Resolved the typo
[hengband/hengband.git] / src / monster-attack / monster-eating.c
index a36c55d..0d03825 100644 (file)
@@ -207,16 +207,24 @@ bool process_un_power(player_type *target_ptr, monap_type *monap_ptr)
         return FALSE;
 
     bool is_magic_mastery = has_magic_mastery(target_ptr) != 0;
-    PARAMETER_VALUE pval = k_info[monap_ptr->o_ptr->k_idx].pval;
+    object_kind *kind_ptr = &k_info[monap_ptr->o_ptr->k_idx];
+    PARAMETER_VALUE pval = kind_ptr->pval;
     DEPTH level = monap_ptr->rlev;
-    HIT_POINT drain = pval * level / 400 + pval * randint1(level) / 400;
+    HIT_POINT drain = is_magic_mastery ? pval * level / 400 + pval * randint1(level) / 400 : pval;
+    if (drain <= 0)
+        return FALSE;
+
     if (monap_ptr->o_ptr->tval == TV_STAFF)
         drain *= monap_ptr->o_ptr->number;
 
-    drain = MIN(drain, (monap_ptr->m_ptr->maxhp - monap_ptr->m_ptr->hp) / drain);
-    msg_print(_("ザックからエネルギーが吸い取られた!", "Energy drains from your pack!"));
+    msg_print(_("ザックからエネルギーが吸い取られた!", "Energy was drained from your pack!"));
+    if (is_magic_mastery)
+        msg_print(_("しかし、あなたの魔法を操る力がその一部を取り返した!", "However, your skill of magic mastery got back the part of energy!"));
+
     monap_ptr->obvious = TRUE;
-    monap_ptr->m_ptr->hp += drain;
+    HIT_POINT recovery = drain * kind_ptr->level;
+    recovery = MIN(recovery, monap_ptr->m_ptr->maxhp - monap_ptr->m_ptr->hp);
+    monap_ptr->m_ptr->hp += recovery;
     if (target_ptr->health_who == monap_ptr->m_idx)
         target_ptr->redraw |= PR_HEALTH;
 
@@ -284,4 +292,4 @@ void process_drain_mana(player_type *target_ptr, monap_type *monap_ptr)
     }
 
     target_ptr->redraw |= (PR_MANA);
-}
+}
\ No newline at end of file