OSDN Git Service

[Refactor] #37353 buki_motteruka() を has_melee_weapon() に改名。 / Rename buki_motteruka...
[hengband/hengband.git] / src / mspells4.c
index bf703f8..a3ee739 100644 (file)
@@ -7,6 +7,10 @@
 
 
 #include "angband.h"
+#include "projection.h"
+#include "spells-summon.h"
+#include "artifact.h"
+#include "player-status.h"
 
 /*!
 * @brief モンスターIDを取り、モンスター名をm_nameに代入する /
@@ -25,7 +29,7 @@ void monster_name(MONSTER_IDX m_idx, char* m_name)
 * @param t_idx モンスターID二体目
 * @return モンスター2体のどちらかがプレイヤーの近くに居ればTRUE、どちらも遠ければFALSEを返す。
 */
-bool monster_near_player(MONSTER_IDX m_idx, IDX t_idx)
+bool monster_near_player(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        monster_type    *t_ptr = &m_list[t_idx];
@@ -102,7 +106,7 @@ u32b monster_u_mode(MONSTER_IDX m_idx)
 * @brief モンスターを起こす /
 * @param t_idx モンスターID
 */
-void monster_wakeup(IDX t_idx)
+void monster_wakeup(MONSTER_IDX t_idx)
 {
        (void)set_monster_csleep(t_idx, 0);
 }
@@ -118,18 +122,18 @@ void monster_wakeup(IDX t_idx)
  * @param msg_flag_aux メッセージを分岐するためのフラグ
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-static void monspell_message_base(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool msg_flag_aux, int TARGET_TYPE)
+static void monspell_message_base(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, concptr msg4, bool msg_flag_aux, int TARGET_TYPE)
 {
        bool known = monster_near_player(m_idx, t_idx);
        bool see_either = see_monster(m_idx) || see_monster(t_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
        if (mon_to_player || (mon_to_mon && known && see_either))
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
 
        if (msg_flag_aux)
        {
@@ -163,7 +167,7 @@ static void monspell_message_base(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr
 * @param msg3 プレイヤーが盲目でなく、モンスター対象とする場合のメッセージ
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE)
+void monspell_message(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, int TARGET_TYPE)
 {
        monspell_message_base(m_idx, t_idx, msg1, msg1, msg2, msg3, p_ptr->blind > 0, TARGET_TYPE);
 }
@@ -176,7 +180,7 @@ void monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr m
 * @param msg2 モンスター対象とする場合のメッセージ
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void simple_monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, int TARGET_TYPE)
+void simple_monspell_message(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, int TARGET_TYPE)
 {
        monspell_message_base(m_idx, t_idx, msg1, msg2, msg1, msg2, p_ptr->blind > 0, TARGET_TYPE);
 }
@@ -187,7 +191,7 @@ void simple_monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2,
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-void spell_RF4_SHRIEK(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF4_SHRIEK(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        simple_monspell_message(m_idx, t_idx,
                _("%^sがかん高い金切り声をあげた。", "%^s makes a high pitched shriek."),
@@ -210,9 +214,9 @@ void spell_RF4_SHRIEK(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-void spell_RF4_DISPEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF4_DISPEL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
@@ -229,6 +233,11 @@ void spell_RF4_DISPEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 
                if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
                        msg_print(_("やりやがったな!", ""));
+               else if ((p_ptr->pseikaku == SEIKAKU_CHARGEMAN))
+               {
+                       if (randint0(2) == 0) msg_print(_("ジュラル星人め!", ""));
+                       else msg_print(_("弱い者いじめは止めるんだ!", ""));
+               }
 
                learn_spell(MS_DISPEL);
        }
@@ -248,7 +257,7 @@ void spell_RF4_DISPEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF4_ROCKET(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF4_ROCKET(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -274,7 +283,7 @@ HIT_POINT spell_RF4_ROCKET(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF4_SHOOT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,int TARGET_TYPE)
+HIT_POINT spell_RF4_SHOOT(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx,int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -301,17 +310,17 @@ HIT_POINT spell_RF4_SHOOT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,i
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam, ms_type, drs_type = 0;
-       cptr type_s;
+       concptr type_s;
        bool smart_learn_aux = TRUE;
        monster_type    *m_ptr = &m_list[m_idx];
        bool known = monster_near_player(m_idx, t_idx);
        bool see_either = see_monster(m_idx) || see_monster(t_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
@@ -459,7 +468,7 @@ HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_id
        }
 
        if (mon_to_player || (mon_to_mon && known && see_either))
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
 
        if (m_ptr->r_idx == MON_JAIAN && GF_TYPE == GF_SOUND)
        {
@@ -507,7 +516,7 @@ HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_id
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF4_BA_NUKE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF4_BA_NUKE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -534,7 +543,7 @@ HIT_POINT spell_RF4_BA_NUKE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF4_BA_CHAO(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF4_BA_CHAO(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -561,7 +570,7 @@ HIT_POINT spell_RF4_BA_CHAO(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam, rad;
 
@@ -590,7 +599,7 @@ HIT_POINT spell_RF5_BA_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam, rad;
 
@@ -619,7 +628,7 @@ HIT_POINT spell_RF5_BA_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam, rad;
        monster_type    *m_ptr = &m_list[m_idx];
@@ -659,7 +668,7 @@ HIT_POINT spell_RF5_BA_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam, rad;
 
@@ -688,7 +697,7 @@ HIT_POINT spell_RF5_BA_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_POIS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_POIS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -715,7 +724,7 @@ HIT_POINT spell_RF5_BA_POIS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -742,14 +751,14 @@ HIT_POINT spell_RF5_BA_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
        bool known = monster_near_player(m_idx, t_idx);
        bool see_either = see_monster(m_idx) || see_monster(t_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
-       char t_name[80];
+       GAME_TEXT t_name[MAX_NLEN];
        monster_name(t_idx, t_name);
 
 
@@ -782,7 +791,7 @@ HIT_POINT spell_RF5_BA_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -806,7 +815,7 @@ HIT_POINT spell_RF5_BA_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_DARK(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_DARK(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -833,17 +842,17 @@ HIT_POINT spell_RF5_BA_DARK(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_DRAIN_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_DRAIN_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
 
        if (TARGET_TYPE == MONSTER_TO_PLAYER)
        {
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
        }
        else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
        { 
@@ -868,19 +877,19 @@ HIT_POINT spell_RF5_DRAIN_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        bool seen = (!p_ptr->blind && m_ptr->ml);
        HIT_POINT dam;
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
 
        if (TARGET_TYPE == MONSTER_TO_PLAYER)
        {
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
                if (!seen)
                        msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
                else
@@ -905,19 +914,19 @@ HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BRAIN_SMASH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BRAIN_SMASH(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type *m_ptr = &m_list[m_idx];
        bool seen = (!p_ptr->blind && m_ptr->ml);
        HIT_POINT dam;
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
 
        if (TARGET_TYPE == MONSTER_TO_PLAYER)
        {
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
                if (!seen)
                        msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
                else
@@ -948,15 +957,15 @@ HIT_POINT spell_RF5_BRAIN_SMASH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, int MS_TYPE, int TARGET_TYPE)
+void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, int MS_TYPE, int TARGET_TYPE)
 {
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
        if (TARGET_TYPE == MONSTER_TO_PLAYER)
        {
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
                if (p_ptr->blind)
                        msg_format(msg1, m_name);
                else
@@ -985,9 +994,9 @@ void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, POSITION y, POSITION x, MONSTER
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_CAUSE_1(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_CAUSE_1(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       cptr msg1, msg2, msg3;
+       concptr msg1, msg2, msg3;
        HIT_POINT dam;
        dam = monspell_damage((MS_CAUSE_1), m_idx, DAM_ROLL);
 
@@ -1008,9 +1017,9 @@ HIT_POINT spell_RF5_CAUSE_1(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_CAUSE_2(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_CAUSE_2(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       cptr msg1, msg2, msg3;
+       concptr msg1, msg2, msg3;
        HIT_POINT dam;
        dam = monspell_damage((MS_CAUSE_2), m_idx, DAM_ROLL);
 
@@ -1031,9 +1040,9 @@ HIT_POINT spell_RF5_CAUSE_2(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_CAUSE_3(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_CAUSE_3(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       cptr msg1, msg2, msg3;
+       concptr msg1, msg2, msg3;
        HIT_POINT dam;
        dam = monspell_damage((MS_CAUSE_3), m_idx, DAM_ROLL);
 
@@ -1054,9 +1063,9 @@ HIT_POINT spell_RF5_CAUSE_3(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_CAUSE_4(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_CAUSE_4(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       cptr msg1, msg2, msg3;
+       concptr msg1, msg2, msg3;
        HIT_POINT dam;
        dam = monspell_damage((MS_CAUSE_4), m_idx, DAM_ROLL);
 
@@ -1077,7 +1086,7 @@ HIT_POINT spell_RF5_CAUSE_4(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1106,7 +1115,7 @@ HIT_POINT spell_RF5_BO_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1135,7 +1144,7 @@ HIT_POINT spell_RF5_BO_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1164,7 +1173,7 @@ HIT_POINT spell_RF5_BO_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1193,7 +1202,7 @@ HIT_POINT spell_RF5_BO_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BA_LITE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BA_LITE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1220,7 +1229,7 @@ HIT_POINT spell_RF5_BA_LITE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1249,7 +1258,7 @@ HIT_POINT spell_RF5_BO_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1277,7 +1286,7 @@ HIT_POINT spell_RF5_BO_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1305,7 +1314,7 @@ HIT_POINT spell_RF5_BO_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_PLAS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_PLAS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1333,7 +1342,7 @@ HIT_POINT spell_RF5_BO_PLAS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_BO_ICEE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_BO_ICEE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1362,7 +1371,7 @@ HIT_POINT spell_RF5_BO_ICEE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF5_MISSILE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF5_MISSILE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -1393,18 +1402,18 @@ HIT_POINT spell_RF5_MISSILE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param saving_throw 抵抗に成功したか判別するフラグ
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void spell_badstatus_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool resist, bool saving_throw, int TARGET_TYPE)
+void spell_badstatus_message(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, concptr msg4, bool resist, bool saving_throw, int TARGET_TYPE)
 {
        bool see_either = see_monster(m_idx) || see_monster(t_idx);
        bool see_t = see_monster(t_idx);
        bool known = monster_near_player(m_idx, t_idx);
-       char m_name[80], t_name[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
 
        if (TARGET_TYPE == MONSTER_TO_PLAYER)
        {
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
                if (p_ptr->blind)
                        msg_format(msg1, m_name);
                else
@@ -1455,7 +1464,7 @@ void spell_badstatus_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2,
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-void spell_RF5_SCARE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF5_SCARE(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *t_ptr = &m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -1505,7 +1514,7 @@ void spell_RF5_SCARE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-void spell_RF5_BLIND(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF5_BLIND(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *t_ptr = &m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -1532,8 +1541,8 @@ void spell_RF5_BLIND(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
        }
        else if (TARGET_TYPE == MONSTER_TO_MONSTER)
        {
-               cptr msg1;
-               char t_name[80];
+               concptr msg1;
+               GAME_TEXT t_name[MAX_NLEN];
                monster_name(t_idx, t_name);
                
                if (streq(t_name, "it"))
@@ -1568,7 +1577,7 @@ void spell_RF5_BLIND(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-void spell_RF5_CONF(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF5_CONF(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *t_ptr = &m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -1618,7 +1627,7 @@ void spell_RF5_CONF(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-void spell_RF5_SLOW(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF5_SLOW(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *t_ptr = &m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -1645,8 +1654,8 @@ void spell_RF5_SLOW(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
        }
        else if (TARGET_TYPE == MONSTER_TO_MONSTER)
        {
-               cptr msg1;
-               char t_name[80];
+               concptr msg1;
+               GAME_TEXT t_name[MAX_NLEN];
                monster_name(t_idx, t_name);
 
                if (streq(t_name, "it"))
@@ -1681,7 +1690,7 @@ void spell_RF5_SLOW(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
  * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  */
-void spell_RF5_HOLD(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF5_HOLD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *t_ptr = &m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -1731,11 +1740,11 @@ void spell_RF5_HOLD(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void spell_RF6_HASTE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_HASTE(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        bool see_m = see_monster(m_idx);
        monster_type    *m_ptr = &m_list[m_idx];
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
        monspell_message_base(m_idx, t_idx,
@@ -1763,7 +1772,7 @@ void spell_RF6_HASTE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF6_HAND_DOOM(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_HAND_DOOM(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam = 0;
 
@@ -1791,17 +1800,16 @@ HIT_POINT spell_RF6_HAND_DOOM(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i
 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_HEAL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        int rlev = monster_level_idx(m_idx);
        bool seen = (!p_ptr->blind && m_ptr->ml);
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
 
-       /* Message */
        monspell_message_base(m_idx, t_idx,
                _("%^sが何かをつぶやいた。", "%^s mumbles."),
                _("%^sは自分の傷に念を集中した。", "%^s concentrates on %s wounds."),
@@ -1818,7 +1826,6 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
                /* Fully healed */
                m_ptr->hp = m_ptr->maxhp;
 
-               /* Message */
                monspell_message_base(m_idx, t_idx,
                        _("%^sは完全に治ったようだ!", "%^s sounds completely healed!"),
                        _("%^sは完全に治ったようだ!", "%^s sounds completely healed!"),
@@ -1830,7 +1837,6 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
        /* Partially healed */
        else
        {
-               /* Message */
                monspell_message_base(m_idx, t_idx,
                        _("%^sは体力を回復したようだ。", "%^s sounds healthier."),
                        _("%^sは体力を回復したようだ。", "%^s sounds healthier."),
@@ -1849,7 +1855,6 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
                /* Cancel fear */
                (void)set_monster_monfear(m_idx, 0);
 
-               /* Message */
                if (see_monster(m_idx))
                        msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), m_name);
        }
@@ -1861,12 +1866,11 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void spell_RF6_INVULNER(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_INVULNER(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        bool seen = (!p_ptr->blind && m_ptr->ml);
 
-       /* Message */
        monspell_message_base(m_idx, t_idx,
                        _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."),
                        _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."),
@@ -1884,11 +1888,11 @@ void spell_RF6_INVULNER(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 */
 void spell_RF6_BLINK(MONSTER_IDX m_idx, int TARGET_TYPE)
 {
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        
        if (TARGET_TYPE==MONSTER_TO_PLAYER)
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
 
        if (teleport_barrier(m_idx))
        {
@@ -1915,11 +1919,11 @@ void spell_RF6_BLINK(MONSTER_IDX m_idx, int TARGET_TYPE)
 */
 void spell_RF6_TPORT(MONSTER_IDX m_idx, int TARGET_TYPE)
 {      
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
        
        if (TARGET_TYPE==MONSTER_TO_PLAYER)
-               disturb(1, 1);
+               disturb(TRUE, TRUE);
        if (teleport_barrier(m_idx))
        {
                if(see_monster(m_idx))
@@ -1942,11 +1946,11 @@ void spell_RF6_TPORT(MONSTER_IDX m_idx, int TARGET_TYPE)
 HIT_POINT spell_RF6_WORLD(MONSTER_IDX m_idx)
 {
        monster_type    *m_ptr = &m_list[m_idx];
-       int who = 0;
-       char m_name[80];
+       MONSTER_IDX who = 0;
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
        if (m_ptr->r_idx == MON_DIO) who = 1;
        else if (m_ptr->r_idx == MON_WONG) who = 3;
        if (!process_the_world(randint1(2) + 2, who, TRUE)) return (FALSE);
@@ -2027,7 +2031,7 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF6_SPECIAL_ROLENTO(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_SPECIAL_ROLENTO(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int num = 1 + randint1(3);
@@ -2059,7 +2063,7 @@ HIT_POINT spell_RF6_SPECIAL_ROLENTO(POSITION y, POSITION x, MONSTER_IDX m_idx, I
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam = -1;
        monster_type    *m_ptr = &m_list[m_idx];
@@ -2068,10 +2072,10 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i
        bool monster_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
        bool monster_to_monster = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool direct = player_bold(y, x);
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
        if (one_in_(3) || !direct)
        {               
                simple_monspell_message(m_idx, t_idx,
@@ -2085,7 +2089,7 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i
        else
        {
                int get_damage = 0;
-               bool fear; /* dummy */
+               bool fear, dead; /* dummy */
        
                simple_monspell_message(m_idx, t_idx,
                        _("%^sがあなたを掴んで空中から投げ落とした。", "%^s holds you, and drops from the sky."),
@@ -2127,7 +2131,7 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i
                        get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
                        if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
                        {
-                               char m_name_self[80];
+                               GAME_TEXT m_name_self[80];
                                /* hisself */
                                monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
 
@@ -2139,10 +2143,10 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i
                }
 
                if(monster_to_player && p_ptr->riding)
-                       mon_take_hit_mon(p_ptr->riding, dam, &fear, extract_note_dies(real_r_ptr(&m_list[p_ptr->riding])), m_idx);
+                       mon_take_hit_mon(p_ptr->riding, dam, &dead, &fear, extract_note_dies(real_r_idx(&m_list[p_ptr->riding])), m_idx);
 
                if(monster_to_monster)
-                       mon_take_hit_mon(t_idx, dam, &fear, extract_note_dies(real_r_ptr(t_ptr)), m_idx);
+                       mon_take_hit_mon(t_idx, dam, &dead, &fear, extract_note_dies(real_r_idx(t_ptr)), m_idx);
        }
        return dam;
 }
@@ -2156,12 +2160,12 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
 
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
        switch (m_ptr->r_idx)
        {
                case MON_OHMU:
@@ -2196,7 +2200,7 @@ HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-void spell_RF6_TELE_TO(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_TELE_TO(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        monster_type    *t_ptr = &m_list[t_idx];
@@ -2215,7 +2219,7 @@ void spell_RF6_TELE_TO(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
        else if (TARGET_TYPE == MONSTER_TO_MONSTER)
        {
                bool resists_tele = FALSE;
-               char t_name[80];
+               GAME_TEXT t_name[MAX_NLEN];
                monster_name(t_idx, t_name);
 
                if (tr_ptr->flagsr & RFR_RES_TELE)
@@ -2258,7 +2262,7 @@ void spell_RF6_TELE_TO(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *t_ptr = &m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -2272,14 +2276,19 @@ void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
        {
                if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
                        msg_print(_("くっそ~", ""));
-               
+               else if ((p_ptr->pseikaku == SEIKAKU_CHARGEMAN))
+               {
+                       if (randint0(2) == 0) msg_print(_("ジュラル星人め!", ""));
+                       else msg_print(_("弱い者いじめは止めるんだ!", ""));
+               }
+
                learn_spell(MS_TELE_AWAY);
                teleport_player_away(m_idx, 100);
        }
        else if (TARGET_TYPE == MONSTER_TO_MONSTER)
        {
                bool resists_tele = FALSE;
-               char t_name[80];
+               GAME_TEXT t_name[MAX_NLEN];
                monster_name(t_idx, t_name);
 
                if (tr_ptr->flagsr & RFR_RES_TELE)
@@ -2322,7 +2331,7 @@ void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-void spell_RF6_TELE_LEVEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_TELE_LEVEL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *t_ptr = &m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
@@ -2376,7 +2385,7 @@ void spell_RF6_TELE_LEVEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return ダメージ量を返す。
 */
-HIT_POINT spell_RF6_PSY_SPEAR(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+HIT_POINT spell_RF6_PSY_SPEAR(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam;
 
@@ -2399,7 +2408,7 @@ HIT_POINT spell_RF6_PSY_SPEAR(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i
 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        monster_type    *t_ptr = &m_list[t_idx];
@@ -2407,7 +2416,7 @@ void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
        bool can_use_lite_area = FALSE;
        bool monster_to_monster = TARGET_TYPE == MONSTER_TO_MONSTER;
        bool monster_to_player = TARGET_TYPE == MONSTER_TO_PLAYER;
-       char t_name[80];
+       GAME_TEXT t_name[MAX_NLEN];
        monster_name(t_idx, t_name);
 
        if ((p_ptr->pclass == CLASS_NINJA) &&
@@ -2481,9 +2490,9 @@ void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
 */
 void spell_RF6_TRAPS(POSITION y, POSITION x, MONSTER_IDX m_idx)
 {
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
 
        if (p_ptr->blind)
                msg_format(_("%^sが何かをつぶやいて邪悪に微笑んだ。",
@@ -2503,10 +2512,10 @@ void spell_RF6_TRAPS(POSITION y, POSITION x, MONSTER_IDX m_idx)
 void spell_RF6_FORGET(MONSTER_IDX m_idx)
 {
        int rlev = monster_level_idx(m_idx);
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
 
        msg_format(_("%^sがあなたの記憶を消去しようとしている。",
                "%^s tries to blank your mind."), m_name);
@@ -2529,7 +2538,7 @@ void spell_RF6_FORGET(MONSTER_IDX m_idx)
 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type *m_ptr = &m_list[m_idx];
 
@@ -2557,7 +2566,7 @@ MONSTER_NUMBER summon_EAGLE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
        int num = 4 + randint1(3);
        for (k = 0; k < num; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
        }
        return count;
 }
@@ -2592,7 +2601,7 @@ MONSTER_NUMBER summon_IE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
  * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
  * @return 召喚したモンスターの数を返す。
  */
-MONSTER_NUMBER summon_Guardian(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+MONSTER_NUMBER summon_Guardian(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int k, count = 0;       
        int num = 2 + randint1(3);
@@ -2614,7 +2623,7 @@ MONSTER_NUMBER summon_Guardian(POSITION y, POSITION x, int rlev, MONSTER_IDX m_i
 
        for (k = 0; k < num; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
        }
        return count;
 }
@@ -2654,7 +2663,7 @@ MONSTER_NUMBER summon_LOUSE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
        int num = 2 + randint1(3);
        for (k = 0; k < num; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP, '\0');
        }
        return count;
 }
@@ -2670,13 +2679,12 @@ MONSTER_NUMBER summon_LOUSE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 MONSTER_NUMBER summon_Kin(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 {
        int k, count = 0;
-       monster_type    *m_ptr = &m_list[m_idx];
-       monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-       summon_kin_type = r_ptr->d_char; /* Big hack */
+       monster_type *m_ptr = &m_list[m_idx];
+       monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
        for (k = 0; k < 4; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP, r_ptr->d_char);
        }
        return count;
 }
@@ -2690,7 +2698,7 @@ MONSTER_NUMBER summon_Kin(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        bool known = monster_near_player(m_idx, t_idx);
        bool see_either = see_monster(m_idx) || see_monster(t_idx);
@@ -2700,12 +2708,12 @@ void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        int count = 0;
-       char m_name[80], t_name[80], m_poss[80];
+       GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN], m_poss[80];
        monster_name(m_idx, m_name);
        monster_name(t_idx, t_name);
        monster_desc(m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
 
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
        if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT)
        {
                monspell_message(m_idx, t_idx,
@@ -2717,7 +2725,7 @@ void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T
        else
        {
                if (mon_to_player || (mon_to_mon && known && see_either))
-                       disturb(1, 1);
+                       disturb(TRUE, TRUE);
 
                if (p_ptr->blind)
                {
@@ -2783,7 +2791,7 @@ void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0;
        monster_type    *m_ptr = &m_list[m_idx];
@@ -2799,7 +2807,7 @@ void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
 
        if (is_friendly(m_ptr) && mon_to_mon)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP));
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP), '\0');
        }
        else
        {
@@ -2822,7 +2830,7 @@ void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -2838,10 +2846,10 @@ void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, i
        for (k = 0; k < 1; k++)
        {
                if(mon_to_player)
-                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
 
                if(mon_to_mon)
-                       count += summon_specific(m_idx, y, x, rlev, 0, (monster_u_mode(m_idx)));
+                       count += summon_specific(m_idx, y, x, rlev, 0, (monster_u_mode(m_idx)), '\0');
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2860,7 +2868,7 @@ void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, i
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -2876,10 +2884,10 @@ void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
        for (k = 0; k < S_NUM_6; k++)
        {
                if(mon_to_player)
-                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
 
                if(mon_to_mon)
-                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
+                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0');
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2898,7 +2906,7 @@ void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -2913,7 +2921,7 @@ void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T
        
        for (k = 0; k < S_NUM_6; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP, '\0');
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2932,7 +2940,7 @@ void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
@@ -2947,7 +2955,7 @@ void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
        
        for (k = 0; k < S_NUM_6; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP, '\0');
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2966,7 +2974,7 @@ void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -2981,7 +2989,7 @@ void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
        
        for (k = 0; k < S_NUM_4; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP, '\0');
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -3000,7 +3008,7 @@ void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -3015,7 +3023,7 @@ void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
        
        for (k = 0; k < S_NUM_4; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP, '\0');
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -3034,7 +3042,7 @@ void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int num = 1;
@@ -3056,7 +3064,7 @@ void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
        
        for (k = 0; k < num; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP, '\0');
        }
        
        if (count < 2)
@@ -3083,7 +3091,7 @@ void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -3097,7 +3105,7 @@ void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
        
        for (k = 0; k < 1; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP, '\0');
        }
        
        if (p_ptr->blind && count)
@@ -3116,7 +3124,7 @@ void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -3130,7 +3138,7 @@ void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
        
        for (k = 0; k < 1; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP, '\0');
        }
        
        if (p_ptr->blind && count)
@@ -3149,7 +3157,7 @@ void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -3163,7 +3171,7 @@ void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
        
        for (k = 0; k < 1; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP, '\0');
        }
        
        if (p_ptr->blind && count)
@@ -3186,7 +3194,7 @@ MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx)
        int count = 0, k;
        POSITION cy = y;
        POSITION cx = x;
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
        if (p_ptr->blind)
@@ -3240,17 +3248,17 @@ MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx)
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
        monster_type    *m_ptr = &m_list[m_idx];
        int rlev = monster_level_idx(m_idx);
        int k, count = 0;
-       char m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
-       disturb(1, 1);
+       disturb(TRUE, TRUE);
 
        if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) &&
                ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num) &&
@@ -3269,10 +3277,10 @@ void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
                for (k = 0; k < S_NUM_6; k++)
                {
                        if(mon_to_player)
-                               count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+                               count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
 
                        if(mon_to_mon)
-                               count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
+                               count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0');
                }
        }
        if (p_ptr->blind && count && mon_to_player)
@@ -3293,7 +3301,7 @@ void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -3309,10 +3317,10 @@ void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
        for (k = 0; k < S_NUM_4; k++)
        {       
                if(mon_to_player)
-                       count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+                       count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
 
                if(mon_to_mon)
-                       count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
+                       count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0');
        }
        
        if (p_ptr->blind && count && mon_to_player)
@@ -3333,7 +3341,7 @@ void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        int rlev = monster_level_idx(m_idx);
@@ -3348,7 +3356,7 @@ void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
        
        for (k = 0; k < S_NUM_4; k++)
        {       
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
        }
        
        if (p_ptr->blind && count && mon_to_player)
@@ -3369,7 +3377,7 @@ void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 * @return 召喚したモンスターの数を返す。
 */
-void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE)
+void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
        monster_type    *m_ptr = &m_list[m_idx];
@@ -3387,7 +3395,7 @@ void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
        
        for (k = 0; k < S_NUM_4; k++)
        {       
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
        }
        
        if (count) uniques_are_summoned = TRUE;
@@ -3399,7 +3407,7 @@ void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in
 
        for (k = count; k < S_NUM_4; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
+               count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -3535,7 +3543,7 @@ HIT_POINT monspell_to_player(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX
 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
 * @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。
 */
-HIT_POINT monspell_to_monster(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx)
+HIT_POINT monspell_to_monster(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 {
        switch (SPELL_NUM)
        {
@@ -4141,14 +4149,14 @@ HIT_POINT monspell_race_damage(int SPELL_NUM, MONRACE_IDX r_idx, int TYPE)
 * @param TYPE  DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。
 * @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。
 */
-HIT_POINT monspell_bluemage_damage(int SPELL_NUM, int plev, int TYPE)
+HIT_POINT monspell_bluemage_damage(int SPELL_NUM, PLAYER_LEVEL plev, int TYPE)
 {
        int hp = p_ptr->chp;
        int shoot_dd = 1, shoot_ds = 1, shoot_base = 0;
        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];
+       if (has_melee_weapon(INVEN_RARM)) o_ptr = &inventory[INVEN_RARM];
+       else if (has_melee_weapon(INVEN_LARM)) o_ptr = &inventory[INVEN_LARM];
 
        if (o_ptr)
        {