OSDN Git Service

refactor: blue-mage spell damage explain
authordis- <dis.rogue@gmail.com>
Wed, 26 Feb 2014 07:00:40 +0000 (16:00 +0900)
committerdis- <dis.rogue@gmail.com>
Wed, 26 Feb 2014 07:00:40 +0000 (16:00 +0900)
src/defines.h
src/externs.h
src/monster1.c
src/mspells3.c
src/mspells4.c
src/object2.c
src/spells1.c

index 21b723a..902b9d5 100644 (file)
@@ -5716,3 +5716,8 @@ extern int PlayerUID;
 #define DAM_ROLL 1
 #define DAM_MAX 2
 #define DAM_MIN 3
+#define DICE_NUM 4
+#define DICE_SIDE 5
+#define DICE_MULT 6
+#define DICE_DIV 7
+#define BASE_DAM 8
index 9d46625..e45958a 100644 (file)
@@ -964,6 +964,7 @@ extern bool are_enemies(monster_type *m_ptr1, monster_type *m_ptr2);
 extern bool monster_has_hostile_align(monster_type *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr);
 extern bool monster_living(monster_race *r_ptr);
 extern bool no_questor_or_bounty_uniques(int r_idx);
+extern void dice_to_string(int base_damage, int dice_num, int dice_side, int dice_mult, int dice_div, char* msg);
 
 
 /* monster2.c */
@@ -1594,7 +1595,6 @@ extern void learn_spell(int monspell);
 extern void set_rf_masks(s32b *f4, s32b *f5, s32b *f6, int mode);
 
 /* mspells4.c */
-extern int monspell_num(int SPELL_NUM_BASE, u32b SPELL_FLAG);
 extern bool spell_learnable(int m_idx);
 extern int monspell_to_player(int SPELL_NUM, int y, int x, int m_idx);
 extern int monspell_to_monster(int SPELL_NUM, int y, int x, int m_idx, int t_idx);
index e17cedc..1795b2c 100644 (file)
@@ -129,22 +129,62 @@ static void hooked_roff(cptr str)
 }
 
 /*!
- * @brief Ê¸»úÎó¤Ë¥â¥ó¥¹¥¿¡¼¤Î¹¶·âÎϤò²Ã¤¨¤ë
- * @param r_idx ¥â¥ó¥¹¥¿¡¼¤Î¼ï²ID
- * @param SPELL_NUM ¼öʸÈÖ¹æ
- * @param msg É½¼¨¤¹¤ëʸ»úÎó
- * @param tmp ÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤ò³ÊǼ¤¹¤ëÇÛÎó
- * @param min_max TRUE¤Ê¤é(ºÇ¾®-ºÇÂç)·Á¼°¤Ç¡¢FALSE¤Ê¤é(ºÇÂçÃÍ)·Á¼°¤ÇÊÖ¤¹
- * @return ¤Ê¤·
- */
-void set_damage(int r_idx, int SPELL_NUM, char* msg, char* tmp, bool min_max)
+* @brief ¥À¥¤¥¹Ìܤòʸ»úÎó¤ËÊÑ´¹¤¹¤ë
+* @param base_damage ¸ÇÄêÃÍ
+* @param dice_num ¥À¥¤¥¹¿ô
+* @param dice_side ¥À¥¤¥¹ÌÌ
+* @param dice_mult ¥À¥¤¥¹ÇÜΨ
+* @param dice_div ¥À¥¤¥¹½ü¿ô
+* @param msg Ê¸»úÎó¤ò³ÊǼ¤¹¤ë¥Ý¥¤¥ó¥¿
+* @return ¤Ê¤·
+*/
+void dice_to_string(int base_damage, int dice_num, int dice_side, int dice_mult, int dice_div, char* msg)
 {
-       int dam_min = monspell_race_damage(SPELL_NUM, r_idx, DAM_MIN);
-       int dam_max = monspell_race_damage(SPELL_NUM, r_idx, DAM_MAX);
-       if(min_max)
-           sprintf(tmp, msg, dam_min, dam_max);
-       else
-           sprintf(tmp, msg, dam_max);
+    char base[80] = "", dice[80] = "", mult[80]="";
+
+    if (dice_num == 0)
+    {
+        sprintf(msg, "%d", base_damage);
+    }
+    else
+    {
+        if (base_damage != 0)
+            sprintf(base, "%d+", base_damage);
+
+        if (dice_num == 1)
+            sprintf(dice, "d%d", dice_side);
+        else
+            sprintf(dice, "%dd%d", dice_num, dice_side);
+
+        if (dice_mult != 1 || dice_div != 1)
+        {
+            if (dice_div == 1)
+                sprintf(mult, "*%d", dice_mult);
+            else
+                sprintf(mult, "*(%d/%d)", dice_mult, dice_div);
+        }
+        sprintf(msg, "%s%s%s", base, dice, mult);
+    }
+}
+
+/*!
+* @brief Ê¸»úÎó¤Ë¥â¥ó¥¹¥¿¡¼¤Î¹¶·âÎϤò²Ã¤¨¤ë
+* @param r_idx ¥â¥ó¥¹¥¿¡¼¤Î¼ï²ID
+* @param SPELL_NUM ¼öʸÈÖ¹æ
+* @param msg É½¼¨¤¹¤ëʸ»úÎó
+* @param tmp ÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤ò³ÊǼ¤¹¤ëÇÛÎó
+* @return ¤Ê¤·
+*/
+void set_damage(int r_idx, int SPELL_NUM, char* msg, char* tmp)
+{
+    int base_damage = monspell_race_damage(SPELL_NUM, r_idx, BASE_DAM);
+    int dice_num = monspell_race_damage(SPELL_NUM, r_idx, DICE_NUM);
+    int dice_side = monspell_race_damage(SPELL_NUM, r_idx, DICE_SIDE);
+    int dice_mult = monspell_race_damage(SPELL_NUM, r_idx, DICE_MULT);
+    int dice_div = monspell_race_damage(SPELL_NUM, r_idx, DICE_DIV);
+    char dmg_str[80];
+    dice_to_string(base_damage, dice_num, dice_side, dice_mult, dice_div, dmg_str);
+    sprintf(tmp, msg, dmg_str);
 }
 
 /*!
@@ -741,7 +781,7 @@ static void roff_aux(int r_idx, int mode)
        if (flags4 & RF4_SHRIEK)  { vp[vn] = _("ÈáÌĤǽõ¤±¤òµá¤á¤ë", "shriek for help"); color[vn++] = TERM_L_WHITE; }
        if (flags4 & RF4_ROCKET)  
     {
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_ROCKET), _("¥í¥±¥Ã¥È(%d)¤òȯ¼Í¤¹¤ë", "shoot a rocket(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_ROCKET), _("¥í¥±¥Ã¥È(%s)¤òȯ¼Í¤¹¤ë", "shoot a rocket(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
         color[vn++] = TERM_UMBER; 
     }
@@ -800,133 +840,133 @@ static void roff_aux(int r_idx, int mode)
        vn = 0;
        if (flags4 & (RF4_BR_ACID))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_ACID), _("»À(%d)", "acid(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_ACID), _("»À(%s)", "acid(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_GREEN; 
        }
        if (flags4 & (RF4_BR_ELEC))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_ELEC), _("°ðºÊ(%d)", "lightning(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_ELEC), _("°ðºÊ(%s)", "lightning(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_BLUE; 
        }
        if (flags4 & (RF4_BR_FIRE))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_FIRE), _("²Ð±ê(%d)", "fire(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_FIRE), _("²Ð±ê(%s)", "fire(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_RED; 
        }
-       if (flags4 & (RF4_BR_FIRE))             
+       if (flags4 & (RF4_BR_COLD))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_COLD), _("Î䵤(%d)", "frost(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_COLD), _("Î䵤(%s)", "frost(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_WHITE; 
        }
        if (flags4 & (RF4_BR_POIS))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_POIS), _("ÆÇ(%d)", "poison(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_POIS), _("ÆÇ(%s)", "poison(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_GREEN; 
        }
        if (flags4 & (RF4_BR_NETH))
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_NETH), _("ÃϹö(%d)", "nether(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_NETHER), _("ÃϹö(%s)", "nether(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_DARK; 
        }
        if (flags4 & (RF4_BR_LITE))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_LITE), _("Á®¸÷(%d)", "light(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_LITE), _("Á®¸÷(%s)", "light(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_YELLOW; 
        }
        if (flags4 & (RF4_BR_DARK))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_DARK), _("°Å¹õ(%d)", "darkness(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_DARK), _("°Å¹õ(%s)", "darkness(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_DARK; 
        }
        if (flags4 & (RF4_BR_CONF))
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_CONF), _("º®Íð(%d)", "confusion(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_CONF), _("º®Íð(%s)", "confusion(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_UMBER; 
        }
        if (flags4 & (RF4_BR_SOUN))             
        {
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_SOUN), _("¹ì²»(%d)", "sound(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_SOUND), _("¹ì²»(%s)", "sound(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_ORANGE; 
        }
        if (flags4 & (RF4_BR_CHAO))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_CHAO), _("¥«¥ª¥¹(%d)", "chaos(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_CHAOS), _("¥«¥ª¥¹(%s)", "chaos(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_VIOLET; 
        }
        if (flags4 & (RF4_BR_DISE))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_DISE), _("Îô²½(%d)", "disenchantment(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_DISEN), _("Îô²½(%s)", "disenchantment(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_VIOLET; 
        }
        if (flags4 & (RF4_BR_NEXU))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_NEXU), _("°ø²Ìº®Íð(%d)", "nexus(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_NEXUS), _("°ø²Ìº®Íð(%s)", "nexus(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_VIOLET; 
        }
        if (flags4 & (RF4_BR_TIME))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_TIME), _("»þ´ÖµÕž(%d)", "time(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_TIME), _("»þ´ÖµÕž(%s)", "time(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_BLUE; 
        }
        if (flags4 & (RF4_BR_INER))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_INER), _("ÃÙÆß(%d)", "inertia(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_INERTIA), _("ÃÙÆß(%s)", "inertia(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_SLATE; 
        }
        if (flags4 & (RF4_BR_GRAV))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_GRAV), _("½ÅÎÏ(%d)", "gravity(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_GRAVITY), _("½ÅÎÏ(%s)", "gravity(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_SLATE; 
        }
        if (flags4 & (RF4_BR_SHAR))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_SHAR), _("ÇËÊÒ(%d)", "shards(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_SHARDS), _("ÇËÊÒ(%s)", "shards(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_UMBER; 
        }
        if (flags4 & (RF4_BR_PLAS))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_PLAS), _("¥×¥é¥º¥Þ(%d)", "plasma(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_PLASMA), _("¥×¥é¥º¥Þ(%s)", "plasma(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_RED; 
        }
        if (flags4 & (RF4_BR_WALL))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_WALL), _("¥Õ¥©¡¼¥¹(%d)", "force(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_FORCE), _("¥Õ¥©¡¼¥¹(%s)", "force(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_UMBER; 
        }
        if (flags4 & (RF4_BR_MANA))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_MANA), _("ËâÎÏ(%d)", "mana(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_MANA), _("ËâÎÏ(%s)", "mana(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_BLUE; 
        }
        if (flags4 & (RF4_BR_NUKE))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_NUKE), _("Êü¼ÍÀ­ÇÑ´þʪ(%d)", "toxic waste(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_NUKE), _("Êü¼ÍÀ­ÇÑ´þʪ(%s)", "toxic waste(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_GREEN; 
        }
        if (flags4 & (RF4_BR_DISI))             
        { 
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BR_DISI), _("ʬ²ò(%d)", "disintegration(%d)"), tmp_msg[vn], FALSE);
+               set_damage(r_idx, (MS_BR_DISI), _("ʬ²ò(%s)", "disintegration(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_SLATE; 
        }
@@ -966,186 +1006,186 @@ static void roff_aux(int r_idx, int mode)
        vn = 0;
        if (flags5 & (RF5_BA_ACID))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_ACID), _("¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë(%d-%d)", "produce acid balls(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_ACID), _("¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë(%s)", "produce acid balls(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_GREEN;
        }
        if (flags5 & (RF5_BA_ELEC))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_ELEC), _("¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë(%d-%d)", "produce lightning balls(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_ELEC), _("¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë(%s)", "produce lightning balls(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_BLUE;
        }
        if (flags5 & (RF5_BA_FIRE))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_FIRE), _("¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë(%d-%d)", "produce fire balls(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_FIRE), _("¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë(%s)", "produce fire balls(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_RED;
        }
        if (flags5 & (RF5_BA_COLD))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_COLD), _("¥¢¥¤¥¹¡¦¥Ü¡¼¥ë(%d-%d)", "produce frost balls(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_COLD), _("¥¢¥¤¥¹¡¦¥Ü¡¼¥ë(%s)", "produce frost balls(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_WHITE;
        }
        if (flags5 & (RF5_BA_POIS))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_POIS), _("°­½­±À(%d-%d)", "produce poison balls(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_POIS), _("°­½­±À(%s)", "produce poison balls(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_GREEN;
        }
        if (flags5 & (RF5_BA_NETH))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_NETH), _("ÃϹöµå(%d-%d)", "produce nether balls(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_NETHER), _("ÃϹöµå(%s)", "produce nether balls(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_DARK;
        }
        if (flags5 & (RF5_BA_WATE))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_WATE), _("¥¦¥©¡¼¥¿¡¼¡¦¥Ü¡¼¥ë(%d-%d)", "produce water balls(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_WATER), _("¥¦¥©¡¼¥¿¡¼¡¦¥Ü¡¼¥ë(%s)", "produce water balls(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_BLUE;
        }
        if (flags4 & (RF4_BA_NUKE))         
        {
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BA_NUKE), _("Êü¼Íǽµå(%d-%d)", "produce balls of radiation(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_NUKE), _("Êü¼Íǽµå(%s)", "produce balls of radiation(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_GREEN;
        }
        if (flags5 & (RF5_BA_MANA))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_MANA), _("ËâÎϤÎÍò(%d-%d)", "invoke mana storms(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_MANA), _("ËâÎϤÎÍò(%s)", "invoke mana storms(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_BLUE;
        }
        if (flags5 & (RF5_BA_DARK))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_DARK), _("°Å¹õ¤ÎÍò(%d-%d)", "invoke darkness storms(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_DARK), _("°Å¹õ¤ÎÍò(%s)", "invoke darkness storms(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_DARK;
        }
        if (flags5 & (RF5_BA_LITE))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BA_LITE), _("¥¹¥¿¡¼¥Ð¡¼¥¹¥È(%d-%d)", "invoke starburst(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_STARBURST), _("¥¹¥¿¡¼¥Ð¡¼¥¹¥È(%s)", "invoke starburst(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_YELLOW;
        }
        if (flags4 & (RF4_BA_CHAO))         
        {
-               set_damage(r_idx, monspell_num(RF4_SPELL_START, RF4_BA_CHAO), _("½ã¥í¥°¥ë¥¹(%d-%d)", "invoke raw Logrus(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BALL_CHAOS), _("½ã¥í¥°¥ë¥¹(%s)", "invoke raw Logrus(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_VIOLET;
        }
        if (flags6 & (RF6_HAND_DOOM)){ vp[vn] = _("ÇËÌǤμê(40%-60%)", "invoke the Hand of Doom(40%-60%)"); color[vn++] = TERM_VIOLET; }
        if (flags6 & (RF6_PSY_SPEAR))
        {
-               set_damage(r_idx, monspell_num(RF6_SPELL_START, RF6_PSY_SPEAR), _("¸÷¤Î·õ(%d-%d)", "psycho-spear(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_PSY_SPEAR), _("¸÷¤Î·õ(%s)", "psycho-spear(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_YELLOW;
        }
        if (flags5 & (RF5_DRAIN_MANA))
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_DRAIN_MANA), _("ËâÎϵۼý(%d-%d)", "drain mana(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_DRAIN_MANA), _("ËâÎϵۼý(%s)", "drain mana(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_SLATE;
        }
        if (flags5 & (RF5_MIND_BLAST))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_MIND_BLAST), _("Àº¿À¹¶·â(%d-%d)", "cause mind blasting(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_MIND_BLAST), _("Àº¿À¹¶·â(%s)", "cause mind blasting(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_RED;
        }
        if (flags5 & (RF5_BRAIN_SMASH))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BRAIN_SMASH), _("Ǿ¹¶·â(%d-%d)", "cause brain smashing(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BRAIN_SMASH), _("Ǿ¹¶·â(%s)", "cause brain smashing(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_RED;
        }
        if (flags5 & (RF5_CAUSE_1))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_CAUSE_1), 
-                       _("·Ú½ý¡Ü¼ö¤¤(%d-%d)", "cause light wounds and cursing(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_CAUSE_1), 
+                       _("·Ú½ý¡Ü¼ö¤¤(%s)", "cause light wounds and cursing(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_WHITE;
        }
        if (flags5 & (RF5_CAUSE_2))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_CAUSE_2), 
-                       _("½Å½ý¡Ü¼ö¤¤(%d-%d)", "cause serious wounds and cursing(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_CAUSE_2), 
+                       _("½Å½ý¡Ü¼ö¤¤(%s)", "cause serious wounds and cursing(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_WHITE;
        }
        if (flags5 & (RF5_CAUSE_3))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_CAUSE_3), 
-                       _("Ã×Ì¿½ý¡Ü¼ö¤¤(%d-%d)", "cause critical wounds and cursing(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_CAUSE_3), 
+                       _("Ã×Ì¿½ý¡Ü¼ö¤¤(%s)", "cause critical wounds and cursing(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_WHITE;
        }
        if (flags5 & (RF5_CAUSE_4))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_CAUSE_4), 
-                       _("È빦¤òÆͤ¯(%d-%d)", "cause mortal wounds(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_CAUSE_4), 
+                       _("È빦¤òÆͤ¯(%s)", "cause mortal wounds(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_WHITE;
        }
        if (flags5 & (RF5_BO_ACID))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_ACID), _("¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È(%d-%d)", "produce acid bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_ACID), _("¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È(%s)", "produce acid bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_GREEN;
        }
        if (flags5 & (RF5_BO_ELEC))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_ELEC), _("¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(%d-%d)", "produce lightning bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_ELEC), _("¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(%s)", "produce lightning bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_BLUE;
        }
        if (flags5 & (RF5_BO_FIRE))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_FIRE), _("¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(%d-%d)", "produce fire bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_FIRE), _("¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(%s)", "produce fire bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_RED;
        }
        if (flags5 & (RF5_BO_COLD))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_COLD), _("¥¢¥¤¥¹¡¦¥Ü¥ë¥È(%d-%d)", "produce frost bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_COLD), _("¥¢¥¤¥¹¡¦¥Ü¥ë¥È(%s)", "produce frost bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_WHITE;
        }
        if (flags5 & (RF5_BO_NETH))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_NETH), _("ÃϹö¤ÎÌð(%d-%d)", "produce nether bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_NETHER), _("ÃϹö¤ÎÌð(%s)", "produce nether bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_DARK;
        }
        if (flags5 & (RF5_BO_WATE))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_WATE), _("¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È(%d-%d)", "produce water bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_WATER), _("¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È(%s)", "produce water bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_BLUE;
        }
        if (flags5 & (RF5_BO_MANA))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_MANA), _("ËâÎϤÎÌð(%d-%d)", "produce mana bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_MANA), _("ËâÎϤÎÌð(%s)", "produce mana bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_BLUE;
        }
        if (flags5 & (RF5_BO_PLAS))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_PLAS), _("¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È(%d-%d)", "produce plasma bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_PLASMA), _("¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È(%s)", "produce plasma bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_L_RED;
        }
        if (flags5 & (RF5_BO_ICEE))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_BO_ICEE), _("¶Ë´¨¤ÎÌð(%d-%d)", "produce ice bolts(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_BOLT_ICE), _("¶Ë´¨¤ÎÌð(%s)", "produce ice bolts(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_WHITE;
        }
        if (flags5 & (RF5_MISSILE))         
        {
-               set_damage(r_idx, monspell_num(RF5_SPELL_START, RF5_MISSILE), _("¥Þ¥¸¥Ã¥¯¥ß¥µ¥¤¥ë(%d-%d)", "produce magic missiles(%d-%d)"), tmp_msg[vn], TRUE);
+               set_damage(r_idx, (MS_MAGIC_MISSILE), _("¥Þ¥¸¥Ã¥¯¥ß¥µ¥¤¥ë(%s)", "produce magic missiles(%s)"), tmp_msg[vn]);
         vp[vn] = tmp_msg[vn];
                color[vn++] = TERM_SLATE;
        }
index c2555f1..4442867 100644 (file)
 
 #define pseudo_plev() (((p_ptr->lev + 40) * (p_ptr->lev + 40) - 1550) / 130) /*!< ¥â¥ó¥¹¥¿¡¼ËâË¡¤ò¥×¥ì¥¤¥ä¡¼¤¬»ÈÍѤ¹¤ë¾ì¹ç¤Î´¹»»¥ì¥Ù¥ë */
 
+
+/*!
+* @brief Ê¸»úÎó¤ËÀÄËâƳ»Õ¤Î¼öʸ¤Î¹¶·âÎϤò²Ã¤¨¤ë
+* @param r_idx ¥â¥ó¥¹¥¿¡¼¤Î¼ï²ID
+* @param SPELL_NUM ¼öʸÈÖ¹æ
+* @param msg É½¼¨¤¹¤ëʸ»úÎó
+* @param tmp ÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤ò³ÊǼ¤¹¤ëÇÛÎó
+* @return ¤Ê¤·
+*/
+void set_bluemage_damage(int SPELL_NUM, int plev, cptr msg, char* tmp)
+{
+    int base_damage = monspell_bluemage_damage(SPELL_NUM, plev, BASE_DAM);
+    int dice_num = monspell_bluemage_damage(SPELL_NUM, plev, DICE_NUM);
+    int dice_side = monspell_bluemage_damage(SPELL_NUM, plev, DICE_SIDE);
+    int dice_mult = monspell_bluemage_damage(SPELL_NUM, plev, DICE_MULT);
+    int dice_div = monspell_bluemage_damage(SPELL_NUM, plev, DICE_DIV);
+    char dmg_str[80];
+    dice_to_string(base_damage, dice_num, dice_side, dice_mult, dice_div, dmg_str);
+    sprintf(tmp, msg, dmg_str);
+}
+
 /*!
  * @brief ¼õ¤±¼è¤Ã¤¿¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID¤Ë±þ¤¸¤ÆÀÄËâË¡¤Î¸ú²Ì¾ðÊó¤ò¤Þ¤È¤á¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤òÊÖ¤¹
  * @param p ¾ðÊó¤òÊÖ¤¹Ê¸»úÎ󻲾ȥݥ¤¥ó¥¿
@@ -26,15 +47,15 @@ static void learned_info(char *p, int power)
        int hp = p_ptr->chp;
 
 #ifdef JP
-       cptr s_dam = "»½ý:";
+       cptr s_dam = " Â»½ý:%s";
        cptr s_dur = "´ü´Ö:";
        cptr s_range = "ÈÏ°Ï:";
-       cptr s_heal = "²óÉü:";
+       cptr s_heal = " ²óÉü:%s";
 #else
-       cptr s_dam = "dam ";
+       cptr s_dam = " dam %s";
        cptr s_dur = "dur ";
        cptr s_range = "range ";
-       cptr s_heal = "heal ";
+       cptr s_heal = " heal %s";
 #endif
 
        strcpy(p, "");
@@ -77,149 +98,70 @@ static void learned_info(char *p, int power)
                case MS_S_AMBERITE:
                case MS_S_UNIQUE:
                        break;
-               case MS_BALL_MANA:
-               case MS_BALL_DARK:
-               case MS_STARBURST:
-                       sprintf(p, " %s%d+10d10", s_dam, plev * 8 + 50);
-                       break;
+        case MS_BALL_MANA:
+        case MS_BALL_DARK:
+        case MS_STARBURST: 
+            set_bluemage_damage((power), plev, s_dam, p); break;
                case MS_DISPEL:
                        break;
-               case MS_ROCKET:
-                       sprintf(p, " %s%d", s_dam, hp/4);
-                       break;
-               case MS_SHOOT:
-               {
-                       object_type *o_ptr = NULL;
-                       if (buki_motteruka(INVEN_RARM)) o_ptr = &inventory[INVEN_RARM];
-                       else if (buki_motteruka(INVEN_LARM)) o_ptr = &inventory[INVEN_LARM];
-                       else
-                               sprintf(p, " %s1", s_dam);
-                       if (o_ptr)
-                               sprintf(p, " %s%dd%d+%d", s_dam, o_ptr->dd, o_ptr->ds, o_ptr->to_d);
-                       break;
-               }
-               case MS_BR_ACID:
-               case MS_BR_ELEC:
-               case MS_BR_FIRE:
-               case MS_BR_COLD:
-               case MS_BR_POIS:
-               case MS_BR_NUKE:
-                       sprintf(p, " %s%d", s_dam, hp/3);
-                       break;
-               case MS_BR_NEXUS:
-                       sprintf(p, " %s%d", s_dam, MIN(hp/3, 250));
-                       break;
-               case MS_BR_TIME:
-                       sprintf(p, " %s%d", s_dam, MIN(hp/3, 150));
-                       break;
-               case MS_BR_GRAVITY:
-                       sprintf(p, " %s%d", s_dam, MIN(hp/3, 200));
-                       break;
-               case MS_BR_MANA:
-                       sprintf(p, " %s%d", s_dam, MIN(hp/3, 250));
-                       break;
-               case MS_BR_NETHER:
-               case MS_BR_LITE:
-               case MS_BR_DARK:
-               case MS_BR_CONF:
-               case MS_BR_SOUND:
-               case MS_BR_CHAOS:
-               case MS_BR_DISEN:
-               case MS_BR_SHARDS:
-               case MS_BR_PLASMA:
-                       sprintf(p, " %s%d", s_dam, hp/6);
-                       break;
-               case MS_BR_INERTIA:
-               case MS_BR_FORCE:
-                       sprintf(p, " %s%d", s_dam, MIN(hp/6, 200));
-                       break;
-               case MS_BR_DISI:
-                       sprintf(p, " %s%d", s_dam, MIN(hp/6, 150));
-                       break;
-               case MS_BALL_NUKE:
-                       sprintf(p, " %s%d+10d6", s_dam, plev * 2);
-                       break;
-               case MS_BALL_CHAOS:
-                       sprintf(p, " %s%d+10d10", s_dam, plev * 4);
-                       break;
-               case MS_BALL_ACID:
-                       sprintf(p, " %s15+d%d", s_dam, plev * 6);
-                       break;
-               case MS_BALL_ELEC:
-                       sprintf(p, " %s8+d%d", s_dam, plev * 3);
-                       break;
-               case MS_BALL_FIRE:
-                       sprintf(p, " %s10+d%d", s_dam, plev * 7);
-                       break;
-               case MS_BALL_COLD:
-                       sprintf(p, " %s10+d%d", s_dam, plev * 3);
-                       break;
-               case MS_BALL_POIS:
-                       sprintf(p, " %s12d2", s_dam);
-                       break;
-               case MS_BALL_NETHER:
-                       sprintf(p, " %s%d+10d10", s_dam, plev * 2 + 50);
-                       break;
-               case MS_BALL_WATER:
-                       sprintf(p, " %s50+d%d", s_dam, plev * 4);
-                       break;
-               case MS_DRAIN_MANA:
-                       sprintf(p, " %sd%d+%d", s_heal, plev, plev);
-                       break;
-               case MS_MIND_BLAST:
-                       sprintf(p, " %s8d8", s_dam);
-                       break;
-               case MS_BRAIN_SMASH:
-                       sprintf(p, " %s12d15", s_dam);
-                       break;
-               case MS_CAUSE_1:
-                       sprintf(p, " %s3d8", s_dam);
-                       break;
-               case MS_CAUSE_2:
-                       sprintf(p, " %s8d8", s_dam);
-                       break;
-               case MS_CAUSE_3:
-                       sprintf(p, " %s10d15", s_dam);
-                       break;
-               case MS_CAUSE_4:
-                       sprintf(p, " %s15d15", s_dam);
-                       break;
-               case MS_BOLT_ACID:
-                       sprintf(p, " %s%d+7d8", s_dam, plev * 2 / 3);
-                       break;
-               case MS_BOLT_ELEC:
-                       sprintf(p, " %s%d+4d8", s_dam, plev * 2 / 3);
-                       break;
-               case MS_BOLT_FIRE:
-                       sprintf(p, " %s%d+9d8", s_dam, plev * 2 / 3);
-                       break;
-               case MS_BOLT_COLD:
-                       sprintf(p, " %s%d+6d8", s_dam, plev * 2 / 3);
-                       break;
-               case MS_BOLT_NETHER:
-                       sprintf(p, " %s%d+5d5", s_dam, 30 + plev * 8 / 3);
-                       break;
-               case MS_BOLT_WATER:
-                       sprintf(p, " %s%d+10d10", s_dam, plev * 2);
-                       break;
-               case MS_BOLT_MANA:
-                       sprintf(p, " %s50+d%d", s_dam, plev * 7);
-                       break;
-               case MS_BOLT_PLASMA:
-                       sprintf(p, " %s%d+8d7", s_dam, plev * 2 + 10);
-                       break;
-               case MS_BOLT_ICE:
-                       sprintf(p, " %s%d+6d6", s_dam, plev * 2);
-                       break;
-               case MS_MAGIC_MISSILE:
-                       sprintf(p, " %s%d+2d6", s_dam, plev * 2 / 3);
-                       break;
+        case MS_ROCKET:
+        case MS_SHOOT:
+        case MS_BR_ACID:
+        case MS_BR_ELEC:
+        case MS_BR_FIRE:
+        case MS_BR_COLD:
+        case MS_BR_POIS:
+        case MS_BR_NUKE: 
+        case MS_BR_NEXUS:
+        case MS_BR_TIME:
+        case MS_BR_GRAVITY:
+        case MS_BR_MANA:
+        case MS_BR_NETHER:
+        case MS_BR_LITE:
+        case MS_BR_DARK:
+        case MS_BR_CONF:
+        case MS_BR_SOUND:
+        case MS_BR_CHAOS:
+        case MS_BR_DISEN:
+        case MS_BR_SHARDS:
+        case MS_BR_PLASMA:
+        case MS_BR_INERTIA:
+        case MS_BR_FORCE:
+        case MS_BR_DISI:
+        case MS_BALL_NUKE:
+        case MS_BALL_CHAOS:
+        case MS_BALL_ACID:
+        case MS_BALL_ELEC:
+        case MS_BALL_FIRE:
+        case MS_BALL_COLD:
+        case MS_BALL_POIS:
+        case MS_BALL_NETHER:
+        case MS_BALL_WATER:
+            set_bluemage_damage((power), plev, s_dam, p); break;
+        case MS_DRAIN_MANA:
+            set_bluemage_damage((power), plev, s_heal, p); break;
+        case MS_MIND_BLAST:
+        case MS_BRAIN_SMASH:
+        case MS_CAUSE_1:
+        case MS_CAUSE_2:
+        case MS_CAUSE_3:
+        case MS_CAUSE_4:
+        case MS_BOLT_ACID:
+        case MS_BOLT_ELEC:
+        case MS_BOLT_FIRE:
+        case MS_BOLT_COLD:
+        case MS_BOLT_NETHER:
+        case MS_BOLT_WATER:
+        case MS_BOLT_MANA:
+        case MS_BOLT_PLASMA:
+        case MS_BOLT_ICE: 
+        case MS_MAGIC_MISSILE: 
+            set_bluemage_damage((power), plev, s_dam, p); break;
                case MS_SPEED:
                        sprintf(p, " %sd%d+%d", s_dur, 20+plev, plev);
                        break;
-               case MS_HEAL:
-                       sprintf(p, " %s%d", s_heal, plev*4);
-                       break;
+        case MS_HEAL:
+            set_bluemage_damage((power), plev, s_heal, p); break;
                case MS_INVULNER:
                        sprintf(p, " %sd7+7", s_dur);
                        break;
@@ -229,8 +171,8 @@ static void learned_info(char *p, int power)
                case MS_TELEPORT:
                        sprintf(p, " %s%d", s_range, plev * 5);
                        break;
-               case MS_PSY_SPEAR:
-                       sprintf(p, " %s100+d%d", s_dam, plev * 3);
+        case MS_PSY_SPEAR:
+            set_bluemage_damage((power), plev, s_dam, p); break;
                        break;
                case MS_RAISE_DEAD:
                        sprintf(p, " %s5", s_range);
@@ -745,7 +687,7 @@ static bool cast_learned_spell(int spell, bool success)
                if (!get_aim_dir(&dir)) return FALSE;
                
         msg_print(_("¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "You fire a rocket."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_ROCKET), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_ROCKET), plev, DAM_ROLL);
                fire_rocket(GF_ROCKET, dir, damage, 2);
                break;
        case MS_SHOOT:
@@ -755,7 +697,7 @@ static bool cast_learned_spell(int spell, bool success)
                if (!get_aim_dir(&dir)) return FALSE;
                
         msg_print(_("Ìð¤òÊü¤Ã¤¿¡£", "You fire an arrow."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_SHOOT), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_SHOOT), plev, DAM_ROLL);
                fire_bolt(GF_ARROW, dir, damage);
                break;
        }
@@ -769,350 +711,350 @@ static bool cast_learned_spell(int spell, bool success)
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("»À¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe acid."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_ACID), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_ACID), plev, DAM_ROLL);
                fire_ball(GF_ACID, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_ELEC:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("°ðºÊ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe lightning."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_ELEC), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_ELEC), plev, DAM_ROLL);
                fire_ball(GF_ELEC, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_FIRE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe fire."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_FIRE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_FIRE), plev, DAM_ROLL);
                fire_ball(GF_FIRE, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_COLD:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("Î䵤¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe frost."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_COLD), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_COLD), plev, DAM_ROLL);
                fire_ball(GF_COLD, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_POIS:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥¬¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe gas."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_POIS), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_POIS), plev, DAM_ROLL);
                fire_ball(GF_POIS, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_NETHER:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ÃϹö¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe nether."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_NETH), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_NETHER), plev, DAM_ROLL);
                fire_ball(GF_NETHER, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_LITE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("Á®¸÷¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe light."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_LITE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_LITE), plev, DAM_ROLL);
                fire_ball(GF_LITE, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_DARK:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("°Å¹õ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe darkness."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_DARK), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_DARK), plev, DAM_ROLL);
                fire_ball(GF_DARK, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_CONF:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("º®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe confusion."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_CONF), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_CONF), plev, DAM_ROLL);
                fire_ball(GF_CONFUSION, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_SOUND:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¹ì²»¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe sound."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_SOUN), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_SOUND), plev, DAM_ROLL);
                fire_ball(GF_SOUND, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_CHAOS:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥«¥ª¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe chaos."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_CHAO), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_CHAOS), plev, DAM_ROLL);
                fire_ball(GF_CHAOS, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_DISEN:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("Îô²½¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe disenchantment."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_DISEN), plev, DAM_ROLL);
                fire_ball(GF_DISENCHANT, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_NEXUS:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("°ø²Ìº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe nexus."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_NEXU), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_NEXUS), plev, DAM_ROLL);
                fire_ball(GF_NEXUS, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_TIME:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("»þ´ÖµÕž¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe time."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_TIME), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_TIME), plev, DAM_ROLL);
                fire_ball(GF_TIME, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_INERTIA:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ÃÙÆߤΥ֥쥹¤òÅǤ¤¤¿¡£", "You breathe inertia."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_INER), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_INERTIA), plev, DAM_ROLL);
                fire_ball(GF_INERTIA, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_GRAVITY:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("½ÅÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", "You breathe gravity."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_GRAV), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_GRAVITY), plev, DAM_ROLL);
                fire_ball(GF_GRAVITY, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_SHARDS:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ÇËÊҤΥ֥쥹¤òÅǤ¤¤¿¡£", "You breathe shards."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_SHAR), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_SHARDS), plev, DAM_ROLL);
                fire_ball(GF_SHARDS, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_PLASMA:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥×¥é¥º¥Þ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe plasma."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_PLAS), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_PLASMA), plev, DAM_ROLL);
                fire_ball(GF_PLASMA, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_FORCE:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥Õ¥©¡¼¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe force."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_WALL), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_FORCE), plev, DAM_ROLL);
                fire_ball(GF_FORCE, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BR_MANA:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ËâÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", "You breathe mana."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_MANA), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_MANA), plev, DAM_ROLL);
                fire_ball(GF_MANA, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BALL_NUKE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("Êü¼Íǽµå¤òÊü¤Ã¤¿¡£", "You cast a ball of radiation."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BA_NUKE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_NUKE), plev, DAM_ROLL);
                fire_ball(GF_NUKE, dir, damage, 2);
                break;
        case MS_BR_NUKE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("Êü¼ÍÀ­ÇÑ´þʪ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe toxic waste."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_NUKE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_NUKE), plev, DAM_ROLL);
                fire_ball(GF_NUKE, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BALL_CHAOS:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "You invoke a raw Logrus."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BA_CHAO), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_CHAOS), plev, DAM_ROLL);
                fire_ball(GF_CHAOS, dir, damage, 4);
                break;
        case MS_BR_DISI:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ʬ²ò¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "You breathe disintegration."));
-        damage = monspell_bluemage_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISI), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BR_DISI), plev, DAM_ROLL);
                fire_ball(GF_DISINTEGRATE, dir, damage, (plev > 40 ? -3 : -2));
                break;
        case MS_BALL_ACID:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast an acid ball."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_ACID), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_ACID), plev, DAM_ROLL);
                fire_ball(GF_ACID, dir, damage, 2);
                break;
        case MS_BALL_ELEC:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a lightning ball."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_ELEC), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_ELEC), plev, DAM_ROLL);
                fire_ball(GF_ELEC, dir, damage, 2);
                break;
        case MS_BALL_FIRE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a fire ball."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_FIRE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_FIRE), plev, DAM_ROLL);
                fire_ball(GF_FIRE, dir, damage, 2);
                break;
        case MS_BALL_COLD:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a frost ball."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_COLD), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_COLD), plev, DAM_ROLL);
                fire_ball(GF_COLD, dir, damage, 2);
                break;
        case MS_BALL_POIS:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a stinking cloud."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_POIS), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_POIS), plev, DAM_ROLL);
                fire_ball(GF_POIS, dir, damage, 2);
                break;
        case MS_BALL_NETHER:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a nether ball."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_NETH), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_NETHER), plev, DAM_ROLL);
                fire_ball(GF_NETHER, dir, damage, 2);
                break;
        case MS_BALL_WATER:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ή¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "You gesture fluidly."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_WATE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_WATER), plev, DAM_ROLL);
                fire_ball(GF_WATER, dir, damage, 4);
                break;
        case MS_BALL_MANA:
         if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "You invoke a mana storm."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_MANA), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_MANA), plev, DAM_ROLL);
                fire_ball(GF_MANA, dir, damage, 4);
                break;
        case MS_BALL_DARK:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "You invoke a darkness storm."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_DARK), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BALL_DARK), plev, DAM_ROLL);
                fire_ball(GF_DARK, dir, damage, 4);
                break;
        case MS_DRAIN_MANA:
                if (!get_aim_dir(&dir)) return FALSE;
 
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_DRAIN_MANA), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_DRAIN_MANA), plev, DAM_ROLL);
         fire_ball_hide(GF_DRAIN_MANA, dir, damage, 0);
                break;
        case MS_MIND_BLAST:
                if (!get_aim_dir(&dir)) return FALSE;
 
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_MIND_BLAST), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_MIND_BLAST), plev, DAM_ROLL);
                fire_ball_hide(GF_MIND_BLAST, dir, damage, 0);
                break;
        case MS_BRAIN_SMASH:
         if (!get_aim_dir(&dir)) return FALSE;
 
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BRAIN_SMASH), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BRAIN_SMASH), plev, DAM_ROLL);
                fire_ball_hide(GF_BRAIN_SMASH, dir, damage, 0);
                break;
        case MS_CAUSE_1:
                if (!get_aim_dir(&dir)) return FALSE;
 
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_1), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_CAUSE_1), plev, DAM_ROLL);
                fire_ball_hide(GF_CAUSE_1, dir, damage, 0);
                break;
        case MS_CAUSE_2:
                if (!get_aim_dir(&dir)) return FALSE;
 
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_2), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_CAUSE_2), plev, DAM_ROLL);
                fire_ball_hide(GF_CAUSE_2, dir, damage, 0);
                break;
        case MS_CAUSE_3:
                if (!get_aim_dir(&dir)) return FALSE;
 
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_3), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_CAUSE_3), plev, DAM_ROLL);
                fire_ball_hide(GF_CAUSE_3, dir, damage, 0);
                break;
        case MS_CAUSE_4:
                if (!get_aim_dir(&dir)) return FALSE;
 
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_4), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_CAUSE_4), plev, DAM_ROLL);
                fire_ball_hide(GF_CAUSE_4, dir, damage, 0);
                break;
        case MS_BOLT_ACID:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast an acid bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_ACID), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_ACID), plev, DAM_ROLL);
         fire_bolt(GF_ACID, dir, damage);
                break;
        case MS_BOLT_ELEC:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a lightning bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_ELEC), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_ELEC), plev, DAM_ROLL);
                fire_bolt(GF_ELEC, dir, damage);
                break;
        case MS_BOLT_FIRE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a fire bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_FIRE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_FIRE), plev, DAM_ROLL);
                fire_bolt(GF_FIRE, dir, damage);
                break;
        case MS_BOLT_COLD:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a frost bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_COLD), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_COLD), plev, DAM_ROLL);
                fire_bolt(GF_COLD, dir, damage);
                break;
        case MS_STARBURST:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "You invoke a starburst."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BA_LITE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_STARBURST), plev, DAM_ROLL);
                fire_ball(GF_LITE, dir, damage, 4);
                break;
        case MS_BOLT_NETHER:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a nether bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_NETH), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_NETHER), plev, DAM_ROLL);
                fire_bolt(GF_NETHER, dir, damage);
                break;
        case MS_BOLT_WATER:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a water bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_WATE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_WATER), plev, DAM_ROLL);
                fire_bolt(GF_WATER, dir, damage);
                break;
        case MS_BOLT_MANA:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a mana bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_MANA), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_MANA), plev, DAM_ROLL);
                fire_bolt(GF_MANA, dir, damage);
                break;
        case MS_BOLT_PLASMA:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a plasma bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_PLAS), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_PLASMA), plev, DAM_ROLL);
                fire_bolt(GF_PLASMA, dir, damage);
                break;
        case MS_BOLT_ICE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a ice bolt."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_BO_ICEE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_BOLT_ICE), plev, DAM_ROLL);
                fire_bolt(GF_ICE, dir, damage);
                break;
        case MS_MAGIC_MISSILE:
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "You cast a magic missile."));
-        damage = monspell_bluemage_damage(monspell_num(RF5_SPELL_START, RF5_MISSILE), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_MAGIC_MISSILE), plev, DAM_ROLL);
                fire_bolt(GF_MISSILE, dir, damage);
                break;
        case MS_SCARE:
@@ -1253,7 +1195,7 @@ static bool cast_learned_spell(int spell, bool success)
                if (!get_aim_dir(&dir)) return FALSE;
 
         msg_print(_("¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", "You throw a psycho-spear."));
-        damage = monspell_bluemage_damage(monspell_num(RF6_SPELL_START, RF6_PSY_SPEAR), plev, DAM_ROLL);
+        damage = monspell_bluemage_damage((MS_PSY_SPEAR), plev, DAM_ROLL);
                (void)fire_beam(GF_PSY_SPEAR, dir, damage);
                break;
        case MS_DARKNESS:
index 9bf2efa..bc6093f 100644 (file)
@@ -1,23 +1,6 @@
 #include "angband.h"
 
 /*!
-* @brief ¥â¥ó¥¹¥¿¡¼¤Î¼öʸ¤ÎÄ̤·ÈÖ¹æ¤ò¼èÆÀ¤¹¤ë /
-* @param SPELL_NUM_BASE RF4¤Ê¤éRF4_SPELL_START¤Î¤è¤¦¤Ë32¶èÀÚ¤ê¤Î¥Ù¡¼¥¹¤È¤Ê¤ë¿ôÃÍ
-* @param SPELL_FLAG RF4_SHRIEK¤Ê¤É¤Î¥¹¥Ú¥ë¥Õ¥é¥°
-* @return ¼öʸ¤ÎÄ̤·Èֹ档
-*/
-int monspell_num(int SPELL_NUM_BASE, u32b SPELL_FLAG)
-{
-    int k;
-    for (k = 0; k < 32; k++)
-    {
-        if (SPELL_FLAG & (1L << k)) return k + SPELL_NUM_BASE;
-    }
-    return 0;
-}
-
-
-/*!
 * @brief ¥â¥ó¥¹¥¿¡¼ID¤ò¼è¤ê¡¢¥â¥ó¥¹¥¿¡¼Ì¾¤òm_name¤ËÂåÆþ¤¹¤ë /
 * @param m_idx ¥â¥ó¥¹¥¿¡¼ID
 * @param m_name ¥â¥ó¥¹¥¿¡¼Ì¾¤òÆþÎϤ¹¤ëÇÛÎó
@@ -89,7 +72,8 @@ bool monster_is_powerful(int m_idx)
 {
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    return (r_ptr->flags2 & RF2_POWERFUL);
+    bool powerful = r_ptr->flags2 & RF2_POWERFUL ? TRUE : FALSE;
+    return powerful;
 }
 
 /*!
@@ -268,7 +252,7 @@ int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_ROCKET), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_ROCKET), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_SHARD);
@@ -294,7 +278,7 @@ int spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx,int TARGET_TYPE)
         _("%^s¤¬%s¤ËÌð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_SHOOT), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_SHOOT), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, TARGET_TYPE);
     sound(SOUND_SHOOT);
 
@@ -328,133 +312,133 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET
     switch (GF_TYPE)
     {
     case GF_ACID:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_ACID), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_ACID), m_idx, DAM_ROLL);
         type_s = _("»À", "acid");
         ms_type = MS_BR_ACID;
         drs_type = DRS_ACID;
         break;
     case GF_ELEC:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_ELEC), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_ELEC), m_idx, DAM_ROLL);
         type_s = _("°ðºÊ", "lightning");
         ms_type = MS_BR_ELEC;
         drs_type = DRS_ELEC;
         break;
     case GF_FIRE:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_FIRE), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_FIRE), m_idx, DAM_ROLL);
         type_s = _("²Ð±ê", "fire");
         ms_type = MS_BR_FIRE;
         drs_type = DRS_FIRE;
         break;
     case GF_COLD:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_COLD), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_COLD), m_idx, DAM_ROLL);
         type_s = _("Î䵤", "frost");
         ms_type = MS_BR_COLD;
         drs_type = DRS_COLD;
         break;
     case GF_POIS:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_POIS), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_POIS), m_idx, DAM_ROLL);
         type_s = _("¥¬¥¹", "gas");
         ms_type = MS_BR_POIS;
         drs_type = DRS_POIS;
         break;
     case GF_NETHER:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NETH), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_NETHER), m_idx, DAM_ROLL);
         type_s = _("ÃϹö", "nether");
         ms_type = MS_BR_NETHER;
         drs_type = DRS_NETH;
         break;
     case GF_LITE:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_LITE), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_LITE), m_idx, DAM_ROLL);
         type_s = _("Á®¸÷", "light");
         ms_type = MS_BR_LITE;
         drs_type = DRS_LITE;
         break;
     case GF_DARK:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DARK), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_DARK), m_idx, DAM_ROLL);
         type_s = _("°Å¹õ", "darkness");
         ms_type = MS_BR_DARK;
         drs_type = DRS_DARK;
         break;
     case GF_CONFUSION:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_CONF), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_CONF), m_idx, DAM_ROLL);
         type_s = _("º®Íð", "confusion");
         ms_type = MS_BR_CONF;
         drs_type = DRS_CONF;
         break;
     case GF_SOUND:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_SOUN), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_SOUND), m_idx, DAM_ROLL);
         type_s = _("¹ì²»", "sound");
         ms_type = MS_BR_SOUND;
         drs_type = DRS_SOUND;
         break;
     case GF_CHAOS:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_CHAO), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_CHAOS), m_idx, DAM_ROLL);
         type_s = _("¥«¥ª¥¹", "chaos");
         ms_type = MS_BR_CHAOS;
         drs_type = DRS_CHAOS;
         break;
     case GF_DISENCHANT:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISE), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_DISEN), m_idx, DAM_ROLL);
         type_s = _("Îô²½", "disenchantment");
         ms_type = MS_BR_DISEN;
         drs_type = DRS_DISEN;
         break;
     case GF_NEXUS:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NEXU), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_NEXUS), m_idx, DAM_ROLL);
         type_s = _("°ø²Ìº®Íð", "nexus");
         ms_type = MS_BR_NEXUS;
         drs_type = DRS_NEXUS;
         break;
     case GF_TIME:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_TIME), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_TIME), m_idx, DAM_ROLL);
         type_s = _("»þ´ÖµÕž", "time");
         ms_type = MS_BR_TIME;
         smart_learn = FALSE;
         break;
     case GF_INERTIA:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_INER), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_INERTIA), m_idx, DAM_ROLL);
         type_s = _("ÃÙÆß", "inertia");
         ms_type = MS_BR_INERTIA;
         smart_learn = FALSE;
         break;
     case GF_GRAVITY:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_GRAV), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_GRAVITY), m_idx, DAM_ROLL);
         type_s = _("½ÅÎÏ", "gravity");
         ms_type = MS_BR_GRAVITY;
         smart_learn = FALSE;
         break;
     case GF_SHARDS:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_SHAR), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_SHARDS), m_idx, DAM_ROLL);
         type_s = _("ÇËÊÒ", "shards");
         ms_type = MS_BR_SHARDS;
         drs_type = DRS_SHARD;
         break;
     case GF_PLASMA:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_PLAS), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_PLASMA), m_idx, DAM_ROLL);
         type_s = _("¥×¥é¥º¥Þ", "plasma");
         ms_type = MS_BR_PLASMA;
         smart_learn = FALSE;
         break;
     case GF_FORCE:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_WALL), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_FORCE), m_idx, DAM_ROLL);
         type_s = _("¥Õ¥©¡¼¥¹", "force");
         ms_type = MS_BR_FORCE;
         smart_learn = FALSE;
         break;
     case GF_MANA:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_MANA), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_MANA), m_idx, DAM_ROLL);
         type_s = _("ËâÎÏ", "mana");
         ms_type = MS_BR_MANA;
         smart_learn = FALSE;
         break;
     case GF_NUKE:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_NUKE), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_NUKE), m_idx, DAM_ROLL);
         type_s = _("Êü¼ÍÀ­ÇÑ´þʪ", "toxic waste");
         ms_type = MS_BR_NUKE;
         drs_type = DRS_POIS;
         break;
     case GF_DISINTEGRATE:
-        dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BR_DISI), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_BR_DISI), m_idx, DAM_ROLL);
         type_s = _("ʬ²ò", "disintegration");
         ms_type = MS_BR_DISI;
         smart_learn = FALSE;
@@ -522,7 +506,7 @@ int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤ËÊü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BA_NUKE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_NUKE), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_POIS);
@@ -549,7 +533,7 @@ int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes raw Logrus upon %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF4_SPELL_START, RF4_BA_CHAO), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_CHAOS), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_CHAOS);
@@ -578,7 +562,7 @@ int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         TARGET_TYPE);
 
     rad = monster_is_powerful(m_idx) ? 4 : 2;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_ACID), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_ACID), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_ACID);
@@ -607,7 +591,7 @@ int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         TARGET_TYPE);
 
     rad = monster_is_powerful(m_idx) ? 4 : 2;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_ELEC), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_ELEC), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_ELEC);
@@ -647,7 +631,7 @@ int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
             TARGET_TYPE);
     }
     rad = monster_is_powerful(m_idx) ? 4 : 2;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_FIRE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_FIRE), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_FIRE);
@@ -676,7 +660,7 @@ int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         TARGET_TYPE);
 
     rad = monster_is_powerful(m_idx) ? 4 : 2;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_COLD), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_COLD), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_COLD);
@@ -703,7 +687,7 @@ int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_POIS), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_POIS), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_POIS);
@@ -730,7 +714,7 @@ int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_NETH), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_NETHER), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_NETH);
@@ -773,7 +757,7 @@ int spell_RF5_BA_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         msg_format(_("%^s¤Ï±²´¬¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "%^s is engulfed in a whirlpool."), t_name);
     }
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_WATE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_WATER), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, TARGET_TYPE);
     return dam;
 }
@@ -797,7 +781,7 @@ int spell_RF5_BA_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤ËÂФ·¤ÆËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm upon %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_MANA), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_MANA), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, TARGET_TYPE);
     return dam;
 }
@@ -821,7 +805,7 @@ int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤ËÂФ·¤Æ°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm upon %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_DARK), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BALL_DARK), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_DARK);
@@ -856,7 +840,7 @@ int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         msg_format(_("%^s¤ÏÀº¿À¥¨¥Í¥ë¥®¡¼¤ò%s¤«¤éµÛ¤¤¤È¤Ã¤¿¡£", "%^s draws psychic energy from %s."), m_name, t_name);
     }
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_DRAIN_MANA), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_DRAIN_MANA), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_MANA);
@@ -896,7 +880,7 @@ int spell_RF5_MIND_BLAST(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
     }
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_MIND_BLAST), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_MIND_BLAST), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, TARGET_TYPE);
     return dam;
 }
@@ -933,7 +917,7 @@ int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
     }
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BRAIN_SMASH), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BRAIN_SMASH), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, TARGET_TYPE);
     return dam;
 }
@@ -994,7 +978,7 @@ int spell_RF5_CAUSE_1(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
     cptr msg1, msg2, msg3;
     int dam;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_1), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_CAUSE_1), m_idx, DAM_ROLL);
 
     msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", "%^s points at you and curses.");
@@ -1017,7 +1001,7 @@ int spell_RF5_CAUSE_2(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
     cptr msg1, msg2, msg3;
     int dam;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_2), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_CAUSE_2), m_idx, DAM_ROLL);
 
     msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly.");
@@ -1040,7 +1024,7 @@ int spell_RF5_CAUSE_3(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
     cptr msg1, msg2, msg3;
     int dam;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_3), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_CAUSE_3), m_idx, DAM_ROLL);
 
     msg1 = _("%^s¤¬²¿¤«¤òÂçÀ¼¤Ç¶«¤ó¤À¡£", "%^s mumbles loudly.");
     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!");
@@ -1063,7 +1047,7 @@ int spell_RF5_CAUSE_4(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
     cptr msg1, msg2, msg3;
     int dam;
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_CAUSE_4), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_CAUSE_4), m_idx, DAM_ROLL);
 
     msg1 = _("%^s¤¬¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s screams the word 'DIE!'");
     msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ÎÈ빦¤òÆͤ¤¤Æ¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s points at you, screaming the word DIE!");
@@ -1092,7 +1076,7 @@ int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ACID), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_ACID), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1121,7 +1105,7 @@ int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ELEC), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_ELEC), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1150,7 +1134,7 @@ int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_FIRE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_FIRE), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1179,7 +1163,7 @@ int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_COLD), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_COLD), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1208,7 +1192,7 @@ int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤ËÂФ·¤Æ¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst upon %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BA_LITE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_STARBURST), m_idx, DAM_ROLL);
     breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
         update_smart_learn(m_idx, DRS_LITE);
@@ -1235,7 +1219,7 @@ int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_NETH), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_NETHER), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1265,7 +1249,7 @@ int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_WATE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_WATER), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1294,7 +1278,7 @@ int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_MANA), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_MANA), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1323,7 +1307,7 @@ int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_PLAS), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_PLASMA), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1352,7 +1336,7 @@ int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_BO_ICEE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_BOLT_ICE), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1382,7 +1366,7 @@ int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF5_SPELL_START, RF5_MISSILE), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_MAGIC_MISSILE), m_idx, DAM_ROLL);
     bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, TARGET_TYPE);
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
@@ -1794,7 +1778,7 @@ int spell_RF6_HAND_DOOM(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 
     if (TARGET_TYPE == MONSTER_TO_PLAYER)
     {
-        dam = monspell_damage(monspell_num(RF6_SPELL_START, RF6_HAND_DOOM), m_idx, DAM_ROLL);
+        dam = monspell_damage((MS_HAND_DOOM), m_idx, DAM_ROLL);
         breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
     }
     else if (TARGET_TYPE == MONSTER_TO_MONSTER)
@@ -2409,7 +2393,7 @@ int spell_RF6_PSY_SPEAR(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
         _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", "%^s throw a Psycho-spear at %s."),
         TARGET_TYPE);
 
-    dam = monspell_damage(monspell_num(RF6_SPELL_START, RF6_PSY_SPEAR), m_idx, DAM_ROLL);
+    dam = monspell_damage((MS_PSY_SPEAR), m_idx, DAM_ROLL);
     beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_PLAYER);
     return dam;
 }
@@ -3677,6 +3661,33 @@ int monspell_to_monster(int SPELL_NUM, int y, int x, int m_idx, int t_idx)
 }
 
 /*!
+* @brief ¥â¥ó¥¹¥¿¡¼¤Î»È¤¦¼öʸ¤Î°ÒÎϤò·èÄꤹ¤ë /
+* @param dam Äê¿ôÃÍ
+* @param dice_num ¥À¥¤¥¹¿ô
+* @param dice_side ¥À¥¤¥¹ÌÌ
+* @param mult ¥À¥¤¥¹ÇÜΨ
+* @param div ¥À¥¤¥¹ÇÜΨ
+* @param TYPE  DAM_MAX¤ÇºÇÂçÃͤòÊÖ¤·¡¢DAM_MIN¤ÇºÇ¾®ÃͤòÊÖ¤¹¡£DAM_ROLL¤Ï¥À¥¤¥¹¤ò¿¶¤Ã¤ÆÃͤò·èÄꤹ¤ë¡£
+* @return ¹¶·â¼öʸ¤Î¥À¥á¡¼¥¸¤òÊÖ¤¹¡£¹¶·â¼öʸ°Ê³°¤Ï-1¤òÊÖ¤¹¡£
+*/
+int monspell_damage_roll(int dam, int dice_num, int dice_side, int mult, int div, int TYPE)
+{
+    switch (TYPE)
+    {
+        case DAM_MAX: dam += maxroll(dice_num, dice_side) * mult / div; break;
+        case DAM_MIN: dam += dice_num * 1 * mult / div; break;
+        case DAM_ROLL: dam += damroll(dice_num, dice_side) * mult / div; break;
+        case DICE_NUM: return dice_num;
+        case DICE_SIDE: return dice_side;
+        case DICE_MULT: return mult;
+        case DICE_DIV: return div;
+        case BASE_DAM: return dam;
+    }
+    if (dam < 1) dam = 1;
+    return dam;
+}
+
+/*!
 * @brief ¥â¥ó¥¹¥¿¡¼¤Î»È¤¦¼öʸ¤Î°ÒÎϤòÊÖ¤¹ /
 * @param SPELL_NUM ¼öʸÈÖ¹æ
 * @param hp ¼öʸ¤ò¾§¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ÎÂÎÎÏ
@@ -3693,109 +3704,109 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
 
     switch (SPELL_NUM)
     {
-    case RF4_SPELL_START + 0:   return -1;   /* RF4_SHRIEK */
-    case RF4_SPELL_START + 1:   return -1;   /* RF4_XXX1 */
-    case RF4_SPELL_START + 2:   return -1;   /* RF4_DISPEL */
+    case MS_SHRIEK:   return -1;   /* RF4_SHRIEK */
+    case MS_XXX1:   return -1;   /* RF4_XXX1 */
+    case MS_DISPEL:   return -1;   /* RF4_DISPEL */
 
         /* RF4_ROCKET */
-    case RF4_SPELL_START + 3:
+    case MS_ROCKET:
         dam = (hp / 4) > 800 ? 800 : (hp / 4);
         break;
 
         /* RF4_SHOOT */
-    case RF4_SPELL_START + 4:
+    case MS_SHOOT:
         dice_num = shoot_dd;
         dice_side = shoot_ds;
         dam = shoot_base;
         break;
-    case RF4_SPELL_START + 5:   return -1;   /* RF4_XXX2 */
-    case RF4_SPELL_START + 6:   return -1;   /* RF4_XXX3 */
-    case RF4_SPELL_START + 7:   return -1;   /* RF4_XXX4 */
+    case MS_XXX2:   return -1;   /* RF4_XXX2 */
+    case MS_XXX3:   return -1;   /* RF4_XXX3 */
+    case MS_XXX4:   return -1;   /* RF4_XXX4 */
 
         /* RF4_BR_ACID */
         /* RF4_BR_ELEC */
         /* RF4_BR_FIRE */
         /* RF4_BR_COLD */
-    case RF4_SPELL_START + 8:
-    case RF4_SPELL_START + 9:
-    case RF4_SPELL_START + 10:
-    case RF4_SPELL_START + 11:
+    case MS_BR_ACID:
+    case MS_BR_ELEC:
+    case MS_BR_FIRE:
+    case MS_BR_COLD:
         dam = ((hp / 3) > 1600 ? 1600 : (hp / 3));
         break;
 
         /* RF4_BR_POIS */
-    case RF4_SPELL_START + 12:
+    case MS_BR_POIS:
         dam = ((hp / 3) > 800 ? 800 : (hp / 3));
         break;
 
         /* RF4_BR_NETH */
-    case RF4_SPELL_START + 13:
+    case MS_BR_NETHER:
         dam = ((hp / 6) > 550 ? 550 : (hp / 6));
         break;
 
         /* RF4_BR_LITE */
         /* RF4_BR_DARK */
-    case RF4_SPELL_START + 14:
-    case RF4_SPELL_START + 15:
+    case MS_BR_LITE:
+    case MS_BR_DARK:
         dam = ((hp / 6) > 400 ? 400 : (hp / 6));
         break;
 
         /* RF4_BR_CONF */
         /* RF4_BR_SOUN */
-    case RF4_SPELL_START + 16:
-    case RF4_SPELL_START + 17:
+    case MS_BR_CONF:
+    case MS_BR_SOUND:
         dam = ((hp / 6) > 450 ? 450 : (hp / 6));
         break;
 
         /* RF4_BR_CHAO */
-    case RF4_SPELL_START + 18:
+    case MS_BR_CHAOS:
         dam = ((hp / 6) > 600 ? 600 : (hp / 6));
         break;
 
         /* RF4_BR_DISE */
-    case RF4_SPELL_START + 19:
+    case MS_BR_DISEN:
         dam = ((hp / 6) > 500 ? 500 : (hp / 6));
         break;
 
         /* RF4_BR_NEXU */
-    case RF4_SPELL_START + 20:
+    case MS_BR_NEXUS:
         dam = ((hp / 3) > 250 ? 250 : (hp / 3));
         break;
 
         /* RF4_BR_TIME */
-    case RF4_SPELL_START + 21:
+    case MS_BR_TIME:
         dam = ((hp / 3) > 150 ? 150 : (hp / 3));
         break;
 
         /* RF4_BR_INER */
         /* RF4_BR_GRAV */
-    case RF4_SPELL_START + 22:
-    case RF4_SPELL_START + 23:
+    case MS_BR_INERTIA:
+    case MS_BR_GRAVITY:
         dam = ((hp / 6) > 200 ? 200 : (hp / 6));
         break;
 
         /* RF4_BR_SHAR */
-    case RF4_SPELL_START + 24:
+    case MS_BR_SHARDS:
         dam = ((hp / 6) > 500 ? 500 : (hp / 6));
         break;
 
         /* RF4_BR_PLAS */
-    case RF4_SPELL_START + 25:
+    case MS_BR_PLASMA:
         dam = ((hp / 6) > 150 ? 150 : (hp / 6));
         break;
 
         /* RF4_BR_WALL */
-    case RF4_SPELL_START + 26:
+    case MS_BR_FORCE:
         dam = ((hp / 6) > 200 ? 200 : (hp / 6));
         break;
 
         /* RF4_BR_MANA */
-    case RF4_SPELL_START + 27:
+    case MS_BR_MANA:
         dam = ((hp / 3) > 250 ? 250 : (hp / 3));
         break;
 
         /* RF4_BA_NUKE */
-    case RF4_SPELL_START + 28:
+    case MS_BALL_NUKE:
         mult = powerful ? 2 : 1;
         dam = rlev * (mult / div);
         dice_num = 10;
@@ -3803,24 +3814,24 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF4_BR_NUKE */
-    case RF4_SPELL_START + 29:
+    case MS_BR_NUKE:
         dam = ((hp / 3) > 800 ? 800 : (hp / 3));
         break;
 
         /* RF4_BA_CHAO */
-    case RF4_SPELL_START + 30:
+    case MS_BALL_CHAOS:
         dam = (powerful ? (rlev * 3) : (rlev * 2));
         dice_num = 10;
         dice_side = 10;
         break;
 
         /* RF4_BR_DISI */
-    case RF4_SPELL_START + 31:
+    case MS_BR_DISI:
         dam = ((hp / 6) > 150 ? 150 : (hp / 6));
         break;
 
         /* RF5_BA_ACID */
-    case RF5_SPELL_START + 0:
+    case MS_BALL_ACID:
         if (powerful)
         {
             dam = (rlev * 4) + 50;
@@ -3836,7 +3847,7 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BA_ELEC */
-    case RF5_SPELL_START + 1:
+    case MS_BALL_ELEC:
         if (powerful)
         {
             dam = (rlev * 4) + 50;
@@ -3852,7 +3863,7 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BA_FIRE */
-    case RF5_SPELL_START + 2:
+    case MS_BALL_FIRE:
         if (powerful)
         {
             dam = (rlev * 4) + 50;
@@ -3868,7 +3879,7 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BA_COLD */
-    case RF5_SPELL_START + 3:
+    case MS_BALL_COLD:
         if (powerful)
         {
             dam = (rlev * 4) + 50;
@@ -3884,21 +3895,21 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BA_POIS */
-    case RF5_SPELL_START + 4:
+    case MS_BALL_POIS:
         mult = powerful ? 2 : 1;
         dice_num = 12;
         dice_side = 2;
         break;
 
         /* RF5_BA_NETH */
-    case RF5_SPELL_START + 5:
-        dam = 50 + (rlev * powerful ? 2 : 1);
+    case MS_BALL_NETHER:
+        dam = 50 + rlev * (powerful ? 2 : 1);
         dice_num = 10;
         dice_side = 10;
         break;
 
         /* RF5_BA_WATE */
-    case RF5_SPELL_START + 6:
+    case MS_BALL_WATER:
         dam = 50;
         dice_num = 1;
         dice_side = powerful ? (rlev * 3) : (rlev * 2);
@@ -3906,59 +3917,59 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
 
         /* RF5_BA_MANA */
         /* RF5_BA_DARK */
-    case RF5_SPELL_START + 7:
-    case RF5_SPELL_START + 8:
+    case MS_BALL_MANA:
+    case MS_BALL_DARK:
         dam = (rlev * 4) + 50;
         dice_num = 10;
         dice_side = 10;
         break;
 
         /* RF5_DRAIN_MANA */
-    case RF5_SPELL_START + 9:
-        dam = 1;
-        div = 2;
+    case MS_DRAIN_MANA:
+        dam = rlev;
+        div = 1;
         dice_num = 1;
         dice_side = rlev;
         break;
 
         /* RF5_MIND_BLAST */
-    case RF5_SPELL_START + 10:
+    case MS_MIND_BLAST:
         dice_num = 7;
         dice_side = 7;
         break;
 
         /* RF5_BRAIN_SMASH */
-    case RF5_SPELL_START + 11:
+    case MS_BRAIN_SMASH:
         dice_num = 12;
         dice_side = 12;
         break;
 
         /* RF5_CAUSE_1 */
-    case RF5_SPELL_START + 12:
+    case MS_CAUSE_1:
         dice_num = 3;
         dice_side = 8;
         break;
 
         /* RF5_CAUSE_2 */
-    case RF5_SPELL_START + 13:
+    case MS_CAUSE_2:
         dice_num = 8;
         dice_side = 8;
         break;
 
         /* RF5_CAUSE_3 */
-    case RF5_SPELL_START + 14:
+    case MS_CAUSE_3:
         dice_num = 10;
         dice_side = 15;
         break;
 
         /* RF5_CAUSE_4 */
-    case RF5_SPELL_START + 15:
+    case MS_CAUSE_4:
         dice_num = 15;
         dice_side = 15;
         break;
 
         /* RF5_BO_ACID */
-    case RF5_SPELL_START + 16:
+    case MS_BOLT_ACID:
         mult = powerful ? 2 : 1;
         dam = rlev / 3 * (mult / div);
         dice_num = 7;
@@ -3966,7 +3977,7 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BO_ELEC */
-    case RF5_SPELL_START + 17:
+    case MS_BOLT_ELEC:
         mult = powerful ? 2 : 1;
         dam = rlev / 3 * (mult / div);
         dice_num = 4;
@@ -3974,7 +3985,7 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BO_FIRE */
-    case RF5_SPELL_START + 18:
+    case MS_BOLT_FIRE:
         mult = powerful ? 2 : 1;
         dam = rlev / 3 * (mult / div);
         dice_num = 9;
@@ -3982,7 +3993,7 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BO_COLD */
-    case RF5_SPELL_START + 19:
+    case MS_BOLT_COLD:
         mult = powerful ? 2 : 1;
         dam = rlev / 3 * (mult / div);
         dice_num = 6;
@@ -3990,63 +4001,63 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         break;
 
         /* RF5_BA_LITE */
-    case RF5_SPELL_START + 20:
+    case MS_STARBURST:
         dam = (rlev * 4) + 50;
         dice_num = 10;
         dice_side = 10;
         break;
 
         /* RF5_BO_NETH */
-    case RF5_SPELL_START + 21:
+    case MS_BOLT_NETHER:
         dam = 30 + (rlev * 4) / (powerful ? 2 : 3);
         dice_num = 5;
         dice_side = 5;
         break;
 
         /* RF5_BO_WATE */
-    case RF5_SPELL_START + 22:
+    case MS_BOLT_WATER:
         dam = (rlev * 3 / (powerful ? 2 : 3));
         dice_num = 10;
         dice_side = 10;
         break;
 
         /* RF5_BO_MANA */
-    case RF5_SPELL_START + 23:
+    case MS_BOLT_MANA:
         dam = 50;
         dice_num = 1;
         dice_side = rlev * 7 / 2;
         break;
 
         /* RF5_BO_PLAS */
-    case RF5_SPELL_START + 24:
+    case MS_BOLT_PLASMA:
         dam = 10 + (rlev * 3 / (powerful ? 2 : 3));
         dice_num = 8;
         dice_side = 7;
         break;
 
         /* RF5_BO_ICEE */
-    case RF5_SPELL_START + 25:
+    case MS_BOLT_ICE:
         dam = (rlev * 3 / (powerful ? 2 : 3));
         dice_num = 6;
         dice_side = 6;
         break;
 
         /* RF5_MISSILE */
-    case RF5_SPELL_START + 26:
+    case MS_MAGIC_MISSILE:
         dam = (rlev / 3);
         dice_num = 2;
         dice_side = 6;
         break;
 
-    case RF5_SPELL_START + 27: return -1;   /* RF5_SCARE */
-    case RF5_SPELL_START + 28: return -1;   /* RF5_BLIND */
-    case RF5_SPELL_START + 29: return -1;   /* RF5_CONF */
-    case RF5_SPELL_START + 30: return -1;   /* RF5_SLOW */
-    case RF5_SPELL_START + 31: return -1;   /* RF5_HOLD */
-    case RF6_SPELL_START + 0:  return -1;   /* RF6_HASTE */
+    case MS_SCARE: return -1;   /* RF5_SCARE */
+    case MS_BLIND: return -1;   /* RF5_BLIND */
+    case MS_CONF: return -1;   /* RF5_CONF */
+    case MS_SLOW: return -1;   /* RF5_SLOW */
+    case MS_SLEEP: return -1;   /* RF5_HOLD */
+    case MS_SPEED:  return -1;   /* RF6_HASTE */
 
         /* RF6_HAND_DOOM */
-    case RF6_SPELL_START + 1:
+    case MS_HAND_DOOM:
         mult = p_ptr->chp;
         div = 100;
         dam = 40 * (mult / div);
@@ -4054,53 +4065,46 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho
         dice_side = 20;
         break;
 
-    case RF6_SPELL_START + 2:  return -1;   /* RF6_HEAL */
-    case RF6_SPELL_START + 3:  return -1;   /* RF6_INVULNER */
-    case RF6_SPELL_START + 4:  return -1;   /* RF6_BLINK */
-    case RF6_SPELL_START + 5:  return -1;   /* RF6_TPORT */
-    case RF6_SPELL_START + 6:  return -1;   /* RF6_WORLD */
-    case RF6_SPELL_START + 7:  return -1;   /* RF6_SPECIAL */
-    case RF6_SPELL_START + 8:  return -1;   /* RF6_TELE_TO */
-    case RF6_SPELL_START + 9:  return -1;   /* RF6_TELE_AWAY */
-    case RF6_SPELL_START + 10: return -1;   /* RF6_TELE_LEVEL */
+    case MS_HEAL:  return -1;   /* RF6_HEAL */
+    case MS_INVULNER:  return -1;   /* RF6_INVULNER */
+    case MS_BLINK:  return -1;   /* RF6_BLINK */
+    case MS_TELEPORT:  return -1;   /* RF6_TPORT */
+    case MS_WORLD:  return -1;   /* RF6_WORLD */
+    case MS_SPECIAL:  return -1;   /* RF6_SPECIAL */
+    case MS_TELE_TO:  return -1;   /* RF6_TELE_TO */
+    case MS_TELE_AWAY:  return -1;   /* RF6_TELE_AWAY */
+    case MS_TELE_LEVEL: return -1;   /* RF6_TELE_LEVEL */
 
         /* RF6_PSY_SPEAR */
-    case RF6_SPELL_START + 11:
+    case MS_PSY_SPEAR:
         dam = powerful ? 150 : 100;
         dice_num = 1;
         dice_side = powerful ? (rlev * 2) : (rlev * 3 / 2);
         break;
 
-    case RF6_SPELL_START + 12: return -1;   /* RF6_DARKNESS */
-    case RF6_SPELL_START + 13: return -1;   /* RF6_TRAPS */
-    case RF6_SPELL_START + 14: return -1;   /* RF6_FORGET */
-    case RF6_SPELL_START + 15: return -1;   /* RF6_RAISE_DEAD */
-    case RF6_SPELL_START + 16: return -1;   /* RF6_S_KIN */
-    case RF6_SPELL_START + 17: return -1;   /* RF6_S_CYBER */
-    case RF6_SPELL_START + 18: return -1;   /* RF6_S_MONSTER */
-    case RF6_SPELL_START + 19: return -1;   /* RF6_S_MONSTER */
-    case RF6_SPELL_START + 20: return -1;   /* RF6_S_ANT */
-    case RF6_SPELL_START + 21: return -1;   /* RF6_S_SPIDER */
-    case RF6_SPELL_START + 22: return -1;   /* RF6_S_HOUND */
-    case RF6_SPELL_START + 23: return -1;   /* RF6_S_HYDRA */
-    case RF6_SPELL_START + 24: return -1;   /* RF6_S_ANGEL */
-    case RF6_SPELL_START + 25: return -1;   /* RF6_S_DEMON */
-    case RF6_SPELL_START + 26: return -1;   /* RF6_S_UNDEAD */
-    case RF6_SPELL_START + 27: return -1;   /* RF6_S_DRAGON */
-    case RF6_SPELL_START + 28: return -1;   /* RF6_S_HI_UNDEAD */
-    case RF6_SPELL_START + 29: return -1;   /* RF6_S_HI_DRAGON */
-    case RF6_SPELL_START + 30: return -1;   /* RF6_S_AMBERITES */
-    case RF6_SPELL_START + 31: return -1;   /* RF6_S_UNIQUE */
+    case MS_DARKNESS: return -1;   /* RF6_DARKNESS */
+    case MS_MAKE_TRAP: return -1;   /* RF6_TRAPS */
+    case MS_FORGET: return -1;   /* RF6_FORGET */
+    case MS_RAISE_DEAD: return -1;   /* RF6_RAISE_DEAD */
+    case MS_S_KIN: return -1;   /* RF6_S_KIN */
+    case MS_S_CYBER: return -1;   /* RF6_S_CYBER */
+    case MS_S_MONSTER: return -1;   /* RF6_S_MONSTER */
+    case MS_S_MONSTERS: return -1;   /* RF6_S_MONSTER */
+    case MS_S_ANT: return -1;   /* RF6_S_ANT */
+    case MS_S_SPIDER: return -1;   /* RF6_S_SPIDER */
+    case MS_S_HOUND: return -1;   /* RF6_S_HOUND */
+    case MS_S_HYDRA: return -1;   /* RF6_S_HYDRA */
+    case MS_S_ANGEL: return -1;   /* RF6_S_ANGEL */
+    case MS_S_DEMON: return -1;   /* RF6_S_DEMON */
+    case MS_S_UNDEAD: return -1;   /* RF6_S_UNDEAD */
+    case MS_S_DRAGON: return -1;   /* RF6_S_DRAGON */
+    case MS_S_HI_UNDEAD: return -1;   /* RF6_S_HI_UNDEAD */
+    case MS_S_HI_DRAGON: return -1;   /* RF6_S_HI_DRAGON */
+    case MS_S_AMBERITE: return -1;   /* RF6_S_AMBERITES */
+    case MS_S_UNIQUE: return -1;   /* RF6_S_UNIQUE */
     }
 
-    switch (TYPE)
-    {
-    case DAM_MAX: dam += maxroll(dice_num, dice_side) * mult / div ; break;
-    case DAM_MIN: dam += dice_num * 1 * mult / div; break;
-    case DAM_ROLL: dam += damroll(dice_num, dice_side) * mult / div; break;
-    }
-    if (dam < 1) dam = 1;
-    return dam;
+    return monspell_damage_roll(dam, dice_num, dice_side, mult, div, TYPE);
 }
 
 
@@ -4120,14 +4124,14 @@ int monspell_damage(int SPELL_NUM, int m_idx, int TYPE)
     int shoot_dd = r_ptr->blow[0].d_dice;
     int shoot_ds = r_ptr->blow[0].d_side;
 
-    if (TYPE == DAM_MAX)
-    {
-        hp = m_ptr->max_maxhp;
-    }
-    else if (TYPE == DAM_ROLL)
+    if (TYPE == DAM_ROLL)
     {
         hp = m_ptr->hp;
     }
+    else
+    {
+        hp = m_ptr->max_maxhp;
+    } 
     return monspell_damage_base(SPELL_NUM, hp, rlev, monster_is_powerful(m_idx), shoot_dd, shoot_ds, 0, TYPE);
 }
 
@@ -4142,7 +4146,7 @@ int monspell_race_damage(int SPELL_NUM, int r_idx, int TYPE)
 {
     monster_race    *r_ptr = &r_info[r_idx];
     int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
-    bool powerful = r_ptr->flags2 & RF2_POWERFUL;
+    bool powerful = r_ptr->flags2 & RF2_POWERFUL ? TRUE : FALSE;
     u32b hp = r_ptr->hdice * (ironman_nightmare ? 2 : 1) * r_ptr->hside;
     int shoot_dd = r_ptr->blow[0].d_dice;
     int shoot_ds = r_ptr->blow[0].d_side;
index 54c8472..ed3959b 100644 (file)
@@ -7147,10 +7147,10 @@ static void spell_damcalc(monster_type *m_ptr, int typ, int dam, int *max)
 * @param max »»½Ð¤·¤¿ºÇÂç¥À¥á¡¼¥¸¤òÊÖ¤¹¥Ý¥¤¥ó¥¿
 * @return ¤Ê¤·
 */
-void spell_damcalc_by_spellnum(int spell_num, int spell_flag, int typ, int m_idx, int *max)
+void spell_damcalc_by_spellnum(int spell_num, int typ, int m_idx, int *max)
 {
     monster_type *m_ptr = &m_list[m_idx];
-    int dam = monspell_damage(monspell_num(spell_num, spell_flag), m_idx, DAM_MAX);
+    int dam = monspell_damage((spell_num), m_idx, DAM_MAX);
     spell_damcalc(m_ptr, typ, dam, max);
 }
 
@@ -7278,36 +7278,36 @@ bool process_warning(int xx, int yy)
 
                                if (!(d_info[dungeon_type].flags1 & DF1_NO_MAGIC))
                                {
-                    if (f4 & RF4_BA_CHAO) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BA_CHAO, GF_CHAOS, c_ptr->m_idx,  &dam_max0);
-                    if (f5 & RF5_BA_MANA) spell_damcalc_by_spellnum(RF5_SPELL_START, RF5_BA_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
-                    if (f5 & RF5_BA_DARK) spell_damcalc_by_spellnum(RF5_SPELL_START, RF5_BA_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
-                    if (f5 & RF5_BA_LITE) spell_damcalc_by_spellnum(RF5_SPELL_START, RF5_BA_LITE, GF_LITE, c_ptr->m_idx, &dam_max0);
-                    if (f6 & RF6_HAND_DOOM) spell_damcalc_by_spellnum(RF6_SPELL_START, RF6_HAND_DOOM, GF_HAND_DOOM, c_ptr->m_idx, &dam_max0);
-                    if (f6 & RF6_PSY_SPEAR) spell_damcalc_by_spellnum(RF6_SPELL_START, RF6_PSY_SPEAR, GF_PSY_SPEAR, c_ptr->m_idx, &dam_max0);
+                    if (f4 & RF4_BA_CHAO) spell_damcalc_by_spellnum(MS_BALL_CHAOS, GF_CHAOS, c_ptr->m_idx,  &dam_max0);
+                    if (f5 & RF5_BA_MANA) spell_damcalc_by_spellnum(MS_BALL_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
+                    if (f5 & RF5_BA_DARK) spell_damcalc_by_spellnum(MS_BALL_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
+                    if (f5 & RF5_BA_LITE) spell_damcalc_by_spellnum(MS_STARBURST, GF_LITE, c_ptr->m_idx, &dam_max0);
+                    if (f6 & RF6_HAND_DOOM) spell_damcalc_by_spellnum(MS_HAND_DOOM, GF_HAND_DOOM, c_ptr->m_idx, &dam_max0);
+                    if (f6 & RF6_PSY_SPEAR) spell_damcalc_by_spellnum(MS_PSY_SPEAR, GF_PSY_SPEAR, c_ptr->m_idx, &dam_max0);
                                }
-                if (f4 & RF4_ROCKET) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_ROCKET, GF_ROCKET, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_ACID) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_ACID, GF_ACID, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_ELEC) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_ELEC, GF_ELEC, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_FIRE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_FIRE, GF_FIRE, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_COLD) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_COLD, GF_COLD, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_POIS) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_POIS, GF_POIS, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_NETH) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_NETH, GF_NETHER, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_LITE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_LITE, GF_LITE, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_DARK) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_CONF) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_CONF, GF_CONFUSION, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_SOUN) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_SOUN, GF_SOUND, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_CHAO) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_CHAO, GF_CHAOS, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_DISE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_DISE, GF_DISENCHANT, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_NEXU) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_NEXU, GF_NEXUS, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_TIME) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_TIME, GF_TIME, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_INER) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_INER, GF_INERTIA, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_GRAV) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_GRAV, GF_GRAVITY, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_SHAR) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_SHAR, GF_SHARDS, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_PLAS) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_PLAS, GF_PLASMA, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_WALL) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_WALL, GF_FORCE, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_MANA) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_NUKE) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_NUKE, GF_NUKE, c_ptr->m_idx, &dam_max0);
-                if (f4 & RF4_BR_DISI) spell_damcalc_by_spellnum(RF4_SPELL_START, RF4_BR_DISI, GF_DISINTEGRATE, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_ROCKET) spell_damcalc_by_spellnum(MS_ROCKET, GF_ROCKET, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_ACID) spell_damcalc_by_spellnum(MS_BR_ACID, GF_ACID, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_ELEC) spell_damcalc_by_spellnum(MS_BR_ELEC, GF_ELEC, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_FIRE) spell_damcalc_by_spellnum(MS_BR_FIRE, GF_FIRE, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_COLD) spell_damcalc_by_spellnum(MS_BR_COLD, GF_COLD, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_POIS) spell_damcalc_by_spellnum(MS_BR_POIS, GF_POIS, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_NETH) spell_damcalc_by_spellnum(MS_BR_NETHER, GF_NETHER, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_LITE) spell_damcalc_by_spellnum(MS_BR_LITE, GF_LITE, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_DARK) spell_damcalc_by_spellnum(MS_BR_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_CONF) spell_damcalc_by_spellnum(MS_BR_CONF, GF_CONFUSION, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_SOUN) spell_damcalc_by_spellnum(MS_BR_SOUND, GF_SOUND, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_CHAO) spell_damcalc_by_spellnum(MS_BR_CHAOS, GF_CHAOS, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_DISE) spell_damcalc_by_spellnum(MS_BR_DISEN, GF_DISENCHANT, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_NEXU) spell_damcalc_by_spellnum(MS_BR_NEXUS, GF_NEXUS, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_TIME) spell_damcalc_by_spellnum(MS_BR_TIME, GF_TIME, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_INER) spell_damcalc_by_spellnum(MS_BR_INERTIA, GF_INERTIA, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_GRAV) spell_damcalc_by_spellnum(MS_BR_GRAVITY, GF_GRAVITY, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_SHAR) spell_damcalc_by_spellnum(MS_BR_SHARDS, GF_SHARDS, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_PLAS) spell_damcalc_by_spellnum(MS_BR_PLASMA, GF_PLASMA, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_WALL) spell_damcalc_by_spellnum(MS_BR_FORCE, GF_FORCE, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_MANA) spell_damcalc_by_spellnum(MS_BR_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_NUKE) spell_damcalc_by_spellnum(MS_BR_NUKE, GF_NUKE, c_ptr->m_idx, &dam_max0);
+                if (f4 & RF4_BR_DISI) spell_damcalc_by_spellnum(MS_BR_DISI, GF_DISINTEGRATE, c_ptr->m_idx, &dam_max0);
                        }
 
                        /* Monster melee attacks */
index cd6ac18..c3e4244 100644 (file)
@@ -4951,7 +4951,7 @@ note_dies = "
                                        if (caster_ptr->hp < caster_ptr->maxhp)
                                        {
                                                /* Heal */
-                                               caster_ptr->hp += 6 * dam;
+                                               caster_ptr->hp += dam;
                                                if (caster_ptr->hp > caster_ptr->maxhp) caster_ptr->hp = caster_ptr->maxhp;
 
                                                /* Redraw (later) if needed */
@@ -7463,7 +7463,7 @@ static bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int
                                        if (m_ptr->hp < m_ptr->maxhp)
                                        {
                                                /* Heal */
-                                               m_ptr->hp += (6 * dam);
+                                               m_ptr->hp += dam;
                                                if (m_ptr->hp > m_ptr->maxhp) m_ptr->hp = m_ptr->maxhp;
 
                                                /* Redraw (later) if needed */