Integrate some effects to restore_mana().
case ACT_CURE_MANA_FULL:
{
msg_format(_("%sが青白く光った...", "The %s glows pale..."), name);
- if (p_ptr->pclass == CLASS_MAGIC_EATER)
- {
- int i;
- for (i = 0; i < EATER_EXT * 2; i++)
- {
- p_ptr->magic_num1[i] += (p_ptr->magic_num2[i] < 10) ? EATER_CHARGE * 3 : p_ptr->magic_num2[i] * EATER_CHARGE / 3;
- if (p_ptr->magic_num1[i] > p_ptr->magic_num2[i] * EATER_CHARGE) p_ptr->magic_num1[i] = p_ptr->magic_num2[i] * EATER_CHARGE;
- }
- for (; i < EATER_EXT * 3; i++)
- {
- KIND_OBJECT_IDX k_idx = lookup_kind(TV_ROD, i - EATER_EXT * 2);
- p_ptr->magic_num1[i] -= ((p_ptr->magic_num2[i] < 10) ? EATER_ROD_CHARGE * 3 : p_ptr->magic_num2[i] * EATER_ROD_CHARGE / 3)*k_info[k_idx].pval;
- if (p_ptr->magic_num1[i] < 0) p_ptr->magic_num1[i] = 0;
- }
- msg_print(_("頭がハッキリとした。", "You feel your head clear."));
- p_ptr->window |= (PW_PLAYER);
- }
- else if (p_ptr->csp < p_ptr->msp)
- {
- p_ptr->csp = p_ptr->msp;
- p_ptr->csp_frac = 0;
- msg_print(_("頭がハッキリとした。", "You feel your head clear."));
- p_ptr->redraw |= (PR_MANA);
- p_ptr->window |= (PW_PLAYER);
- p_ptr->window |= (PW_SPELL);
- }
+ restore_mana(TRUE);
break;
}
break;\r
\r
case SV_POTION_RESTORE_MANA:\r
- if (p_ptr->pclass == CLASS_MAGIC_EATER)\r
- {\r
- int i;\r
- for (i = 0; i < EATER_EXT*2; i++)\r
- {\r
- p_ptr->magic_num1[i] += (p_ptr->magic_num2[i] < 10) ? EATER_CHARGE * 3 : p_ptr->magic_num2[i]*EATER_CHARGE/3;\r
- if (p_ptr->magic_num1[i] > p_ptr->magic_num2[i]*EATER_CHARGE) p_ptr->magic_num1[i] = p_ptr->magic_num2[i]*EATER_CHARGE;\r
- }\r
- for (; i < EATER_EXT*3; i++)\r
- {\r
- KIND_OBJECT_IDX k_idx = lookup_kind(TV_ROD, i-EATER_EXT*2);\r
- p_ptr->magic_num1[i] -= ((p_ptr->magic_num2[i] < 10) ? EATER_ROD_CHARGE*3 : p_ptr->magic_num2[i]*EATER_ROD_CHARGE/3)*k_info[k_idx].pval;\r
- if (p_ptr->magic_num1[i] < 0) p_ptr->magic_num1[i] = 0;\r
- }\r
- msg_print(_("頭がハッキリとした。", "You feel your head clear."));\r
- p_ptr->window |= (PW_PLAYER);\r
- ident = TRUE;\r
- }\r
- else if (p_ptr->csp < p_ptr->msp)\r
- {\r
- p_ptr->csp = p_ptr->msp;\r
- p_ptr->csp_frac = 0;\r
- msg_print(_("頭がハッキリとした。", "You feel your head clear."));\r
-\r
- p_ptr->redraw |= (PR_MANA);\r
- p_ptr->window |= (PW_PLAYER);\r
- p_ptr->window |= (PW_SPELL);\r
- ident = TRUE;\r
- }\r
- if (set_shero(0,TRUE)) ident = TRUE;\r
+ ident = restore_mana(TRUE);\r
break;\r
\r
case SV_POTION_RESTORE_EXP:\r
case SV_STAFF_THE_MAGI:\r
{\r
if (do_res_stat(A_INT)) ident = TRUE;\r
- if (p_ptr->csp < p_ptr->msp)\r
- {\r
- p_ptr->csp = p_ptr->msp;\r
- p_ptr->csp_frac = 0;\r
- ident = TRUE;\r
- msg_print(_("頭がハッキリとした。", "You feel your head clear."));\r
-\r
- p_ptr->redraw |= (PR_MANA);\r
- p_ptr->window |= (PW_PLAYER);\r
- p_ptr->window |= (PW_SPELL);\r
- }\r
+ ident |= restore_mana(FALSE);\r
if (set_shero(0, TRUE)) ident = TRUE;\r
break;\r
}\r
extern bool_hack cure_light_wounds(int dice, int sides);
extern bool_hack cure_serious_wounds(int dice, int sides);
extern bool_hack cure_critical_wounds(HIT_POINT pow);
+extern bool_hack restore_mana(bool_hack magic_eater);
/* spells3.c */
extern bool teleport_away(MONSTER_IDX m_idx, int dis, BIT_FLAGS mode);
int power = 90;\r
\r
if (info) return info_power(power);\r
-\r
if (cast)\r
{\r
if (!recharge(power)) return NULL;\r
if (cast)\r
{\r
if (!get_aim_dir(&dir)) return NULL;\r
-\r
fire_beam(GF_GRAVITY, dir, damroll(dice, sides));\r
}\r
}\r
if (cast)\r
{\r
if (!get_aim_dir(&dir)) return NULL;\r
-\r
fire_ball(GF_MANA, dir, dam, rad);\r
}\r
}\r
\r
case 31:\r
if (name) return _("\8b\95\96³\8f¢\97\88", "Call the Void");\r
- if (desc) return _("\8e©\95ª\82É\8eü\88Í\82É\8cü\82©\82Á\82Ä\81A\83\8d\83P\83b\83g\81A\8f\83\90\88\82È\96\82\97Í\82Ì\8b\85\81A\95ú\8eË\90«\94p\8aü\95¨\82Ì\8b\85\82ð\95ú\82Â\81B\82½\82¾\82µ\81A\95Ç\82É\97×\90Ú\82µ\82Ä\8eg\97p\82·\82é\82Æ\8dL\94Í\88Í\82ð\94j\89ó\82·\82é\81B",\r
+ if (desc) return _("\8e©\95ª\82Ì\8eü\88Í\82É\8cü\82©\82Á\82Ä\81A\83\8d\83P\83b\83g\81A\8f\83\90\88\82È\96\82\97Í\82Ì\8b\85\81A\95ú\8eË\90«\94p\8aü\95¨\82Ì\8b\85\82ð\95ú\82Â\81B\82½\82¾\82µ\81A\95Ç\82É\97×\90Ú\82µ\82Ä\8eg\97p\82·\82é\82Æ\8dL\94Í\88Í\82ð\94j\89ó\82·\82é\81B",\r
"Fires rockets, mana balls and nuclear waste balls in all directions each unless you are not adjacent to any walls. Otherwise *destroys* huge area.");\r
\r
{\r
if (set_shero(0, TRUE)) ident = TRUE;
return ident;
}
+
+bool_hack restore_mana(bool_hack magic_eater)
+{
+ bool_hack ident = FALSE;
+
+ if (p_ptr->pclass == CLASS_MAGIC_EATER && magic_eater)
+ {
+ int i;
+ for (i = 0; i < EATER_EXT * 2; i++)
+ {
+ p_ptr->magic_num1[i] += (p_ptr->magic_num2[i] < 10) ? EATER_CHARGE * 3 : p_ptr->magic_num2[i] * EATER_CHARGE / 3;
+ if (p_ptr->magic_num1[i] > p_ptr->magic_num2[i] * EATER_CHARGE) p_ptr->magic_num1[i] = p_ptr->magic_num2[i] * EATER_CHARGE;
+ }
+ for (; i < EATER_EXT * 3; i++)
+ {
+ KIND_OBJECT_IDX k_idx = lookup_kind(TV_ROD, i - EATER_EXT * 2);
+ p_ptr->magic_num1[i] -= ((p_ptr->magic_num2[i] < 10) ? EATER_ROD_CHARGE * 3 : p_ptr->magic_num2[i] * EATER_ROD_CHARGE / 3)*k_info[k_idx].pval;
+ if (p_ptr->magic_num1[i] < 0) p_ptr->magic_num1[i] = 0;
+ }
+ msg_print(_("頭がハッキリとした。", "You feel your head clear."));
+ p_ptr->window |= (PW_PLAYER);
+ ident = TRUE;
+ }
+ else if (p_ptr->csp < p_ptr->msp)
+ {
+ p_ptr->csp = p_ptr->msp;
+ p_ptr->csp_frac = 0;
+ msg_print(_("頭がハッキリとした。", "You feel your head clear."));
+ p_ptr->redraw |= (PR_MANA);
+ p_ptr->window |= (PW_PLAYER);
+ p_ptr->window |= (PW_SPELL);
+ ident = TRUE;
+ }
+
+ return ident;
+}
\ No newline at end of file