OSDN Git Service

[Refactor] #39068 summon_kin_type によるグローバル変数渡しを修正.
authordeskull <deskull@users.sourceforge.jp>
Sun, 5 May 2019 02:09:37 +0000 (11:09 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sun, 5 May 2019 02:40:44 +0000 (11:40 +0900)
29 files changed:
src/chest.c
src/cmd-activate.c
src/cmd-mane.c
src/cmd-read.c
src/cmd-usestaff.c
src/core.c
src/externs.h
src/mind.c
src/monster-process.c
src/monster1.c
src/monster2.c
src/mspells3.c
src/mspells4.c
src/mutation.c
src/patron.c
src/player-race.c
src/player-race.h
src/realm-arcane.c
src/realm-craft.c
src/realm-crusade.c
src/realm-daemon.c
src/realm-nature.c
src/spells-summon.c
src/spells-summon.h
src/spells2.c
src/spells3.c
src/trap.c
src/variable.c
src/wizard2.c

index c969353..ed58e86 100644 (file)
@@ -198,7 +198,7 @@ void chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
                        if (randint1(100)<current_floor_ptr->dun_level)
                                activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                        else
-                               (void)summon_specific(0, y, x, mon_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                               (void)summon_specific(0, y, x, mon_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                }
        }
 
@@ -208,7 +208,7 @@ void chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
                msg_print(_("宝を守るためにエレメンタルが現れた!", "Elemental beings appear to protect their treasures!"));
                for (i = 0; i < randint1(3) + 5; i++)
                {
-                       (void)summon_specific(0, y, x, mon_level, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                       (void)summon_specific(0, y, x, mon_level, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                }
        }
 
@@ -222,7 +222,7 @@ void chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
 
                for (i = 0; i < randint1(5) + o_ptr->pval / 5; i++)
                {
-                       (void)summon_specific(0, y, x, mon_level, SUMMON_BIRD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                       (void)summon_specific(0, y, x, mon_level, SUMMON_BIRD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                }
        }
 
@@ -236,7 +236,7 @@ void chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
                        for (i = 0; i < randint1(3) + 2; i++)
                        {
                                (void)fire_meteor(-1, GF_FIRE, y, x, 10, 5);
-                               (void)summon_specific(0, y, x, mon_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                               (void)summon_specific(0, y, x, mon_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        }
                }
 
@@ -246,7 +246,7 @@ void chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
                        msg_print(_("暗闇にドラゴンの影がぼんやりと現れた!", "Draconic forms loom out of the darkness!"));
                        for (i = 0; i < randint1(3) + 2; i++)
                        {
-                               (void)summon_specific(0, y, x, mon_level, SUMMON_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                               (void)summon_specific(0, y, x, mon_level, SUMMON_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        }
                }
 
@@ -256,7 +256,7 @@ void chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
                        msg_print(_("奇妙な姿の怪物が襲って来た!", "Creatures strange and twisted assault you!"));
                        for (i = 0; i < randint1(5) + 3; i++)
                        {
-                               (void)summon_specific(0, y, x, mon_level, SUMMON_HYBRID, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                               (void)summon_specific(0, y, x, mon_level, SUMMON_HYBRID, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        }
                }
 
@@ -266,7 +266,7 @@ void chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
                        msg_print(_("渦巻が合体し、破裂した!", "Vortices coalesce and wreak destruction!"));
                        for (i = 0; i < randint1(3) + 2; i++)
                        {
-                               (void)summon_specific(0, y, x, mon_level, SUMMON_VORTEX, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                               (void)summon_specific(0, y, x, mon_level, SUMMON_VORTEX, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        }
                }
        }
index 01a9798..cddd228 100644 (file)
@@ -1189,14 +1189,14 @@ bool activate_artifact(object_type *o_ptr)
 
        case ACT_SUMMON_ANIMAL:
        {
-               (void)summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0');
+               (void)summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET));
                break;
        }
 
        case ACT_SUMMON_PHANTOM:
        {
                msg_print(_("幻霊を召喚した。", "You summon a phantasmal servant."));
-               (void)summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_PHANTOM, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0');
+               (void)summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_PHANTOM, (PM_ALLOW_GROUP | PM_FORCE_PET));
                break;
        }
 
@@ -1221,7 +1221,7 @@ bool activate_artifact(object_type *o_ptr)
        case ACT_SUMMON_DAWN:
        {
                msg_print(_("暁の師団を召喚した。", "You summon the Legion of the Dawn."));
-               (void)summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DAWN, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0');
+               (void)summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DAWN, (PM_ALLOW_GROUP | PM_FORCE_PET));
                break;
        }
 
index 37ee4b7..aabd8e3 100644 (file)
@@ -761,7 +761,7 @@ static bool use_mane(int spell)
                msg_print(_("サイバーデーモンを召喚した!", "You summon Cyberdemons!"));
                if (max_cyber > 4) max_cyber = 4;
                for (k = 0;k < max_cyber; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_CYBER, mode, '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_CYBER, mode);
                break;
        }
        case MS_S_MONSTER:
@@ -770,7 +770,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("仲間を召喚した。", "You summon help."));
                for (k = 0;k < 1; k++)
-                       summon_specific(-1, target_row, target_col, plev, 0, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, 0, (mode | u_mode));
                break;
        }
        case MS_S_MONSTERS:
@@ -779,7 +779,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("モンスターを召喚した!", "You summon monsters!"));
                for (k = 0; k < 6; k++)
-                       summon_specific(-1, target_row, target_col, plev, 0, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, 0, (mode | u_mode));
                break;
        }
        case MS_S_ANT:
@@ -788,7 +788,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("アリを召喚した。", "You summon ants."));
                for (k = 0; k < 6; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_ANT, mode, '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_ANT, mode);
                break;
        }
        case MS_S_SPIDER:
@@ -797,7 +797,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
                for (k = 0; k < 6; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_SPIDER, mode, '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_SPIDER, mode);
                break;
        }
        case MS_S_HOUND:
@@ -806,7 +806,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("ハウンドを召喚した。", "You summon hounds."));
                for (k = 0; k < 4; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_HOUND, mode, '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_HOUND, mode);
                break;
        }
        case MS_S_HYDRA:
@@ -815,7 +815,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("ヒドラを召喚した。", "You summon hydras."));
                for (k = 0; k < 4; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_HYDRA, mode, '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_HYDRA, mode);
                break;
        }
        case MS_S_ANGEL:
@@ -824,7 +824,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("天使を召喚した!", "You summon angel!"));
                for (k = 0; k < 1; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_ANGEL, mode, '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_ANGEL, mode);
                break;
        }
        case MS_S_DEMON:
@@ -833,7 +833,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
                for (k = 0; k < 1; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_DEMON, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_DEMON, (mode | u_mode));
                break;
        }
        case MS_S_UNDEAD:
@@ -842,7 +842,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
                for (k = 0; k < 1; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_UNDEAD, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_UNDEAD, (mode | u_mode));
                break;
        }
        case MS_S_DRAGON:
@@ -851,7 +851,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("ドラゴンを召喚した!", "You summon dragon!"));
                for (k = 0; k < 1; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_DRAGON, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_DRAGON, (mode | u_mode));
                break;
        }
        case MS_S_HI_UNDEAD:
@@ -860,7 +860,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("強力なアンデッドを召喚した!", "You summon greater undead!"));
                for (k = 0; k < 6; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode));
                break;
        }
        case MS_S_HI_DRAGON:
@@ -869,7 +869,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("古代ドラゴンを召喚した!", "You summon ancient dragons!"));
                for (k = 0; k < 4; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_HI_DRAGON, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_HI_DRAGON, (mode | u_mode));
                break;
        }
        case MS_S_AMBERITE:
@@ -878,7 +878,7 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("アンバーの王族を召喚した!", "You summon Lords of Amber!"));
                for (k = 0; k < 4; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE), '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE));
                break;
        }
        case MS_S_UNIQUE:
@@ -887,9 +887,9 @@ static bool use_mane(int spell)
                if (!target_set(TARGET_KILL)) return FALSE;
                msg_print(_("特別な強敵を召喚した!", "You summon special opponents!"));
                for (k = 0;k < 4; k++)
-                       if (summon_specific(-1, target_row, target_col, plev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE), '\0')) count++;
+                       if (summon_specific(-1, target_row, target_col, plev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE))) count++;
                for (k = count;k < 4; k++)
-                       summon_specific(-1, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode), '\0');
+                       summon_specific(-1, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode));
                break;
        }
        default:
index 07574d9..c77c3f4 100644 (file)
@@ -129,7 +129,7 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known)
                {
                        for (k = 0; k < randint1(3); k++)
                        {
-                               if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))
+                               if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
                                {
                                        ident = TRUE;
                                }
@@ -141,7 +141,7 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known)
                {
                        for (k = 0; k < randint1(3); k++)
                        {
-                               if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))
+                               if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
                                {
                                        ident = TRUE;
                                }
@@ -151,7 +151,7 @@ void do_cmd_read_scroll_aux(INVENTORY_IDX item, bool known)
 
                case SV_SCROLL_SUMMON_PET:
                {
-                       if (summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'))
+                       if (summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_FORCE_PET)))
                        {
                                ident = TRUE;
                        }
index 2a2c1e1..cd9e5f8 100644 (file)
@@ -61,7 +61,7 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo
                        const int times = randint1(powerful ? 8 : 4);
                        for (k = 0; k < times; k++)
                        {
-                               if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))
+                               if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
                                {
                                        ident = TRUE;
                                }
index 1e79d20..1f80320 100644 (file)
@@ -2226,7 +2226,7 @@ static void process_world_aux_mutation(void)
                if (pet) mode |= PM_FORCE_PET;
                else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET);
 
-               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, mode, '\0'))
+               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, mode))
                {
                        msg_print(_("あなたはデーモンを引き寄せた!", "You have attracted a demon!"));
                        disturb(FALSE, TRUE);
@@ -2335,7 +2335,7 @@ static void process_world_aux_mutation(void)
                if (pet) mode |= PM_FORCE_PET;
                else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET);
 
-               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_ANIMAL, mode, '\0'))
+               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_ANIMAL, mode))
                {
                        msg_print(_("動物を引き寄せた!", "You have attracted an animal!"));
                        disturb(FALSE, TRUE);
@@ -2413,7 +2413,7 @@ static void process_world_aux_mutation(void)
                if (pet) mode |= PM_FORCE_PET;
                else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET);
 
-               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DRAGON, mode, '\0'))
+               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DRAGON, mode))
                {
                        msg_print(_("ドラゴンを引き寄せた!", "You have attracted a dragon!"));
                        disturb(FALSE, TRUE);
@@ -2676,7 +2676,7 @@ static void process_world_aux_curse(void)
                /* Call animal */
                if ((p_ptr->cursed & TRC_CALL_ANIMAL) && one_in_(2500))
                {
-                       if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_ANIMAL, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))
+                       if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_ANIMAL, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
                        {
                                GAME_TEXT o_name[MAX_NLEN];
 
@@ -2688,7 +2688,7 @@ static void process_world_aux_curse(void)
                /* Call demon */
                if ((p_ptr->cursed & TRC_CALL_DEMON) && one_in_(1111))
                {
-                       if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))
+                       if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
                        {
                                GAME_TEXT o_name[MAX_NLEN];
 
@@ -2701,7 +2701,7 @@ static void process_world_aux_curse(void)
                if ((p_ptr->cursed & TRC_CALL_DRAGON) && one_in_(800))
                {
                        if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DRAGON,
-                           (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))
+                           (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
                        {
                                GAME_TEXT o_name[MAX_NLEN];
 
@@ -2714,7 +2714,7 @@ static void process_world_aux_curse(void)
                if ((p_ptr->cursed & TRC_CALL_UNDEAD) && one_in_(1111))
                {
                        if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD,
-                           (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0'))
+                           (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
                        {
                                GAME_TEXT o_name[MAX_NLEN];
 
index b7a767c..e21b0f2 100644 (file)
@@ -146,7 +146,6 @@ extern int total_friends;
 extern int leaving_quest;
 extern bool reinit_wilderness;
 extern bool multi_rew;
-extern char summon_kin_type;
 extern bool is_loading_now;
 extern bool reset_concent;
 extern bool is_fired;
index 8de4155..16c4c6c 100644 (file)
@@ -1255,7 +1255,7 @@ static bool cast_force_spell(int spell)
                bool success = FALSE;
 
                for (i = 0; i < 1 + boost/100; i++)
-                       if (summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_PHANTOM, PM_FORCE_PET, '\0'))
+                       if (summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_PHANTOM, PM_FORCE_PET))
                                success = TRUE;
                if (success)
                {
index 9acd600..4256b41 100644 (file)
@@ -2199,7 +2199,7 @@ void process_monster(MONSTER_IDX m_idx)
 
                                        for (k = 0; k < A_MAX; k++)
                                        {
-                                               if (summon_specific(m_idx, m_ptr->fy, m_ptr->fx, rlev, SUMMON_MOLD, (PM_ALLOW_GROUP | p_mode), '\0'))
+                                               if (summon_specific(m_idx, m_ptr->fy, m_ptr->fx, rlev, SUMMON_MOLD, (PM_ALLOW_GROUP | p_mode)))
                                                {
                                                        if (current_floor_ptr->m_list[hack_m_idx_ii].ml) count++;
                                                }
index 48d8593..cd759d9 100644 (file)
@@ -2688,7 +2688,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
 
                                if (pet) mode |= PM_FORCE_PET;
 
-                               if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_BLUE_HORROR, mode, '\0'))
+                               if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_BLUE_HORROR, mode))
                                {
                                        if (player_can_see_bold(wy, wx)) notice = TRUE;
                                }
@@ -2753,7 +2753,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item)
                                        BIT_FLAGS mode = 0L;
                                        if (pet) mode |= PM_FORCE_PET;
 
-                                       if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode, '\0'))
+                                       if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode))
                                        {
                                                if (player_can_see_bold(wy, wx))
                                                        msg_print(_("新たな戦士が現れた!", "A new warrior steps forth!"));
index 40213be..8cd25a1 100644 (file)
 #include "quest.h"
 #include "grid.h"
 #include "player-move.h"
+#include "player-status.h"
+#include "player-race.h"
 #include "wild.h"
 #include "warning.h"
-#include "player-status.h"
 #include "monster-spell.h"
 #include "files.h"
 #include "view-mainwindow.h"
@@ -514,7 +515,7 @@ static bool summon_unique_okay = FALSE;
  * @return 召喚条件が一致するならtrue
  * @details
  */
-static bool summon_specific_aux(MONRACE_IDX r_idx)
+static bool summon_specific_aux(MONRACE_IDX summoner_idx, MONRACE_IDX r_idx)
 {
        monster_race *r_ptr = &r_info[r_idx];
        int okay = FALSE;
@@ -652,6 +653,16 @@ static bool summon_specific_aux(MONRACE_IDX r_idx)
 
                case SUMMON_KIN:
                {
+                       SYMBOL_CODE summon_kin_type;
+                       if (summoner_idx)
+                       {
+                               summon_kin_type = r_info[summoner_idx].d_char;
+                       }
+                       else
+                       {
+                               summon_kin_type = get_summon_symbol_from_player(p_ptr);
+                       }
+
                        okay = ((r_ptr->d_char == summon_kin_type) && (r_idx != MON_HAGURE));
                        break;
                }
@@ -3264,7 +3275,7 @@ bool alloc_horde(POSITION y, POSITION x)
        {
                scatter(&cy, &cx, y, x, 5, 0);
 
-               (void)summon_specific(m_idx, cy, cx, current_floor_ptr->dun_level + 5, SUMMON_KIN, PM_ALLOW_GROUP, r_ptr->d_char);
+               (void)summon_specific(m_idx, cy, cx, current_floor_ptr->dun_level + 5, SUMMON_KIN, PM_ALLOW_GROUP);
 
                y = cy;
                x = cx;
@@ -3389,6 +3400,7 @@ bool alloc_monster(POSITION dis, BIT_FLAGS mode)
 static bool summon_specific_okay(MONRACE_IDX r_idx)
 {
        monster_race *r_ptr = &r_info[r_idx];
+       monster_type *m_ptr = &current_floor_ptr->m_list[summon_specific_who];
 
        /* Hack - Only summon dungeon monsters */
        if (!mon_hook_dungeon(r_idx)) return (FALSE);
@@ -3396,7 +3408,6 @@ static bool summon_specific_okay(MONRACE_IDX r_idx)
        /* Hack -- identify the summoning monster */
        if (summon_specific_who > 0)
        {
-               monster_type *m_ptr = &current_floor_ptr->m_list[summon_specific_who];
 
                /* Do not summon enemies */
 
@@ -3425,7 +3436,7 @@ static bool summon_specific_okay(MONRACE_IDX r_idx)
 
        if ((r_ptr->flags7 & RF7_CHAMELEON) && (d_info[p_ptr->dungeon_idx].flags1 & DF1_CHAMELEON)) return TRUE;
 
-       return (summon_specific_aux(r_idx));
+       return (summon_specific_aux(m_ptr->r_idx, r_idx));
 }
 
 
@@ -3460,7 +3471,7 @@ static bool summon_specific_okay(MONRACE_IDX r_idx)
  *
  * Note that this function may not succeed, though this is very rare.
  */
-bool summon_specific(MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode, SYMBOL_CODE symbol)
+bool summon_specific(MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode)
 {
        POSITION x, y;
        MONRACE_IDX r_idx;
@@ -3475,8 +3486,6 @@ bool summon_specific(MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int t
        /* Save the "summon" type */
        summon_specific_type = type;
 
-       summon_kin_type = symbol;
-
        summon_unique_okay = (mode & PM_ALLOW_UNIQUE) ? TRUE : FALSE;
        get_mon_num_prep(summon_specific_okay, get_monster_hook2(y, x));
 
index 3214a1a..1be660f 100644 (file)
@@ -1387,7 +1387,7 @@ static bool cast_learned_spell(int spell, bool success)
 
         msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!"));
                for (k = 0 ;k < 1 ; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_CYBER, p_mode, '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_CYBER, p_mode))
                        {
                 if (!pet)
                     msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon are angry!"));
@@ -1403,7 +1403,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("仲間を召喚した。", "You summon help."));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, 0, p_mode, '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, 0, p_mode))
                        {
                 if (!pet)
                     msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!"));
@@ -1419,7 +1419,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("モンスターを召喚した!", "You summon monsters!"));
                for (k = 0;k < plev / 15 + 2; k++)
-                       if(summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, 0, (p_mode | u_mode), '\0'))
+                       if(summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, 0, (p_mode | u_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!"));
@@ -1435,7 +1435,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("アリを召喚した。", "You summon ants."));
                for (k = 0; k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_ANT, (PM_ALLOW_GROUP | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_ANT, (PM_ALLOW_GROUP | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!"));
@@ -1451,7 +1451,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_SPIDER, (PM_ALLOW_GROUP | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_SPIDER, (PM_ALLOW_GROUP | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚された蜘蛛は怒っている!", "Summoned spiders are angry!"));
@@ -1467,7 +1467,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("ハウンドを召喚した。", "You summon hounds."));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HOUND, (PM_ALLOW_GROUP | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HOUND, (PM_ALLOW_GROUP | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたハウンドは怒っている!", "Summoned hounds are angry!"));
@@ -1483,7 +1483,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("ヒドラを召喚した。", "You summon a hydras."));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HYDRA, (g_mode | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HYDRA, (g_mode | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたヒドラは怒っている!", "Summoned hydras are angry!"));
@@ -1499,7 +1499,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("天使を召喚した!", "You summon an angel!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_ANGEL, (g_mode | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_ANGEL, (g_mode | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚された天使は怒っている!", "Summoned angels are angry!"));
@@ -1515,7 +1515,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_DEMON, (g_mode | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_DEMON, (g_mode | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたデーモンは怒っている!", "Summoned demons are angry!"));
@@ -1531,7 +1531,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_UNDEAD, (g_mode | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_UNDEAD, (g_mode | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたアンデッドは怒っている!", "Summoned undeads are angry!"));
@@ -1547,7 +1547,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("ドラゴンを召喚した!", "You summon a dragon!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_DRAGON, (g_mode | p_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_DRAGON, (g_mode | p_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたドラゴンは怒っている!", "Summoned dragons are angry!"));
@@ -1563,7 +1563,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_UNDEAD, (g_mode | p_mode | u_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_UNDEAD, (g_mode | p_mode | u_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚された上級アンデッドは怒っている!", "Summoned greater undeads are angry!"));
@@ -1579,7 +1579,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_DRAGON, (g_mode | p_mode | u_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_DRAGON, (g_mode | p_mode | u_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚された古代ドラゴンは怒っている!", "Summoned ancient dragons are angry!"));
@@ -1595,7 +1595,7 @@ static bool cast_learned_spell(int spell, bool success)
                int k;
         msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_AMBERITES, (g_mode | p_mode | u_mode), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_AMBERITES, (g_mode | p_mode | u_mode)))
                        {
                 if (!pet)
                     msg_print(_("召喚されたアンバーの王族は怒っている!", "Summoned Lords of Amber are angry!"));
@@ -1611,14 +1611,14 @@ static bool cast_learned_spell(int spell, bool success)
                int k, count = 0;
                msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!"));
                for (k = 0;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_UNIQUE, (g_mode | p_mode | PM_ALLOW_UNIQUE), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_UNIQUE, (g_mode | p_mode | PM_ALLOW_UNIQUE)))
                        {
                                count++;
                                if (!pet)
                                        msg_print(_("召喚されたユニーク・モンスターは怒っている!", "Summoned special opponents are angry!"));
                        }
                for (k = count;k < 1; k++)
-                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_UNDEAD, (g_mode | p_mode | PM_ALLOW_UNIQUE), '\0'))
+                       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_UNDEAD, (g_mode | p_mode | PM_ALLOW_UNIQUE)))
                        {
                                count++;
                                if (!pet)
index af799fc..4db052c 100644 (file)
@@ -2535,7 +2535,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), '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
        }
        return count;
 }
@@ -2592,7 +2592,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), '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
        }
        return count;
 }
@@ -2632,7 +2632,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, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP);
        }
        return count;
 }
@@ -2648,12 +2648,10 @@ 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 = &current_floor_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, r_ptr->d_char);
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP);
        }
        return count;
 }
@@ -2776,7 +2774,7 @@ void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_
 
        if (is_friendly(m_ptr) && mon_to_mon)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP), '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP));
        }
        else
        {
@@ -2815,10 +2813,10 @@ void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX
        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), '\0');
+                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
 
                if(mon_to_mon)
-                       count += summon_specific(m_idx, y, x, rlev, 0, (monster_u_mode(m_idx)), '\0');
+                       count += summon_specific(m_idx, y, x, rlev, 0, (monster_u_mode(m_idx)));
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2853,10 +2851,10 @@ void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_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), '\0');
+                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
 
                if(mon_to_mon)
-                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0');
+                       count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2890,7 +2888,7 @@ void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_id
        
        for (k = 0; k < S_NUM_6; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP);
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2924,7 +2922,7 @@ void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t
        
        for (k = 0; k < S_NUM_6; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP);
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2958,7 +2956,7 @@ void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_
        
        for (k = 0; k < S_NUM_4; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP);
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -2992,7 +2990,7 @@ void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_
        
        for (k = 0; k < S_NUM_4; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP);
        }
 
        if (p_ptr->blind && count && mon_to_player)
@@ -3033,7 +3031,7 @@ void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_
        
        for (k = 0; k < num; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP);
        }
        
        if (count < 2)
@@ -3074,7 +3072,7 @@ void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_
        
        for (k = 0; k < 1; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP);
        }
        
        if (p_ptr->blind && count)
@@ -3107,7 +3105,7 @@ void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t
        
        for (k = 0; k < 1; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP);
        }
        
        if (p_ptr->blind && count)
@@ -3140,7 +3138,7 @@ void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t
        
        for (k = 0; k < 1; k++)
        {
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP, '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP);
        }
        
        if (p_ptr->blind && count)
@@ -3246,10 +3244,10 @@ void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_ID
                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), '\0');
+                               count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
 
                        if(mon_to_mon)
-                               count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0');
+                               count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
                }
        }
        if (p_ptr->blind && count && mon_to_player)
@@ -3286,10 +3284,10 @@ void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_ID
        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), '\0');
+                       count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
 
                if(mon_to_mon)
-                       count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0');
+                       count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | monster_u_mode(m_idx)));
        }
        
        if (p_ptr->blind && count && mon_to_player)
@@ -3325,7 +3323,7 @@ void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_ID
        
        for (k = 0; k < S_NUM_4; k++)
        {       
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
        }
        
        if (p_ptr->blind && count && mon_to_player)
@@ -3364,7 +3362,7 @@ void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t
        
        for (k = 0; k < S_NUM_4; k++)
        {       
-               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
+               count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
        }
        
        if (count) uniques_are_summoned = TRUE;
@@ -3376,7 +3374,7 @@ void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t
 
        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), '\0');
+               count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
        }
 
        if (p_ptr->blind && count && mon_to_player)
index d57f9ea..a26fd7f 100644 (file)
@@ -2210,7 +2210,7 @@ bool mutation_power_aux(int power)
                                DIRECTION i;
                                for (i = 0; i < 8; i++)
                                {
-                                       summon_specific(-1, p_ptr->y, p_ptr->x, lvl, SUMMON_MOLD, PM_FORCE_PET, '\0');
+                                       summon_specific(-1, p_ptr->y, p_ptr->x, lvl, SUMMON_MOLD, PM_FORCE_PET);
                                }
                        }
                        break;
index f5e40f3..31344d5 100644 (file)
@@ -383,7 +383,7 @@ void gain_level_reward(int chosen_reward)
 
                        for (dummy = 0; dummy < randint1(5) + 1; dummy++)
                        {
-                               (void)summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                               (void)summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        }
                        reward = _("モンスターを召喚された。", "summoning hostile monsters");
                        break;
@@ -629,7 +629,7 @@ void gain_level_reward(int chosen_reward)
 
                        msg_format(_("%sは褒美として悪魔の使いをよこした!", "%s rewards you with a demonic servant!"), chaos_patrons[p_ptr->chaos_patron]);
 
-                       if (!summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, PM_FORCE_PET, '\0'))
+                       if (!summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, PM_FORCE_PET))
                                msg_print(_("何も現れなかった...", "Nobody ever turns up..."));
                        else
                                reward = _("悪魔がペットになった。", "a demonic servant");
@@ -639,7 +639,7 @@ void gain_level_reward(int chosen_reward)
                case REW_SER_MONS:
                        msg_format(_("%sは褒美として使いをよこした!", "%s rewards you with a servant!"), chaos_patrons[p_ptr->chaos_patron]);
 
-                       if (!summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, PM_FORCE_PET, '\0'))
+                       if (!summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, PM_FORCE_PET))
                                msg_print(_("何も現れなかった...", "Nobody ever turns up..."));
                        else
                                reward = _("モンスターがペットになった。", "a servant");
@@ -649,7 +649,7 @@ void gain_level_reward(int chosen_reward)
                case REW_SER_UNDE:
                        msg_format(_("%sは褒美としてアンデッドの使いをよこした。", "%s rewards you with an undead servant!"), chaos_patrons[p_ptr->chaos_patron]);
 
-                       if (!summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD, PM_FORCE_PET, '\0'))
+                       if (!summon_specific(-1, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD, PM_FORCE_PET))
                                msg_print(_("何も現れなかった...", "Nobody ever turns up..."));
                        else
                                reward = _("アンデッドがペットになった。", "an undead servant");
index 7beb26f..8268f46 100644 (file)
@@ -1,8 +1,6 @@
 #include "angband.h"
 #include "player-race.h"
 
-
-
 /*!
  * @brief 種族情報 /
  * Player Races
@@ -663,3 +661,109 @@ const player_race mimic_info[] =
 };
 
 const player_race *rp_ptr;
+
+SYMBOL_CODE get_summon_symbol_from_player(player_type *creature_ptr)
+{
+       SYMBOL_CODE symbol = 'N';
+       switch (creature_ptr->mimic_form)
+       {
+       case MIMIC_NONE:
+               switch (creature_ptr->prace)
+               {
+               case RACE_HUMAN:
+               case RACE_AMBERITE:
+               case RACE_BARBARIAN:
+               case RACE_BEASTMAN:
+               case RACE_DUNADAN:
+                       symbol = 'p';
+                       break;
+               case RACE_HALF_ELF:
+               case RACE_ELF:
+               case RACE_HOBBIT:
+               case RACE_GNOME:
+               case RACE_DWARF:
+               case RACE_HIGH_ELF:
+               case RACE_NIBELUNG:
+               case RACE_DARK_ELF:
+               case RACE_MIND_FLAYER:
+               case RACE_KUTAR:
+               case RACE_S_FAIRY:
+                       symbol = 'h';
+                       break;
+               case RACE_HALF_ORC:
+                       symbol = 'o';
+                       break;
+               case RACE_HALF_TROLL:
+                       symbol = 'T';
+                       break;
+               case RACE_HALF_OGRE:
+                       symbol = 'O';
+                       break;
+               case RACE_HALF_GIANT:
+               case RACE_HALF_TITAN:
+               case RACE_CYCLOPS:
+                       symbol = 'P';
+                       break;
+               case RACE_YEEK:
+                       symbol = 'y';
+                       break;
+               case RACE_KLACKON:
+                       symbol = 'K';
+                       break;
+               case RACE_KOBOLD:
+                       symbol = 'k';
+                       break;
+               case RACE_IMP:
+                       if (one_in_(13)) symbol = 'U';
+                       else symbol = 'u';
+                       break;
+               case RACE_DRACONIAN:
+                       symbol = 'd';
+                       break;
+               case RACE_GOLEM:
+               case RACE_ANDROID:
+                       symbol = 'g';
+                       break;
+               case RACE_SKELETON:
+                       if (one_in_(13)) symbol = 'L';
+                       else symbol = 's';
+                       break;
+               case RACE_ZOMBIE:
+                       symbol = 'z';
+                       break;
+               case RACE_VAMPIRE:
+                       symbol = 'V';
+                       break;
+               case RACE_SPECTRE:
+                       symbol = 'G';
+                       break;
+               case RACE_SPRITE:
+                       symbol = 'I';
+                       break;
+               case RACE_ENT:
+                       symbol = '#';
+                       break;
+               case RACE_ANGEL:
+                       symbol = 'A';
+                       break;
+               case RACE_DEMON:
+                       symbol = 'U';
+                       break;
+               default:
+                       symbol = 'p';
+                       break;
+               }
+               break;
+       case MIMIC_DEMON:
+               if (one_in_(13)) symbol = 'U';
+               else symbol = 'u';
+               break;
+       case MIMIC_DEMON_LORD:
+               symbol = 'U';
+               break;
+       case MIMIC_VAMPIRE:
+               symbol = 'V';
+               break;
+       }
+       return symbol;
+}
index 64558c1..cadf9e1 100644 (file)
@@ -52,3 +52,5 @@ extern const player_race *rp_ptr;
 
 extern const player_race race_info[MAX_RACES];
 extern const player_race mimic_info[];
+
+SYMBOL_CODE get_summon_symbol_from_player(player_type *p_ptr);
index bbd5a0a..a1fa21d 100644 (file)
@@ -429,7 +429,7 @@ concptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'))
+                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET)))
                                {
                                        msg_print(_("エレメンタルは現れなかった。", "No Elementals arrive."));
                                }
index 3f42b00..d4a7db7 100644 (file)
@@ -382,7 +382,7 @@ concptr do_craft_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_GOLEM, PM_FORCE_PET, '\0'))
+                               if (summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_GOLEM, PM_FORCE_PET))
                                {
                                        msg_print(_("ゴーレムを作った。", "You make a golem."));
                                }
index ee93e84..74957e2 100644 (file)
@@ -396,7 +396,7 @@ concptr do_crusade_spell(SPELL_IDX spell, BIT_FLAGS mode)
                                else flg |= PM_NO_PET;
                                if (!(pet && (plev < 50))) flg |= PM_ALLOW_GROUP;
 
-                               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_ANGEL, flg, '\0'))
+                               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_ANGEL, flg))
                                {
                                        if (pet)
                                        {
@@ -558,7 +558,7 @@ concptr do_crusade_spell(SPELL_IDX spell, BIT_FLAGS mode)
                                                if (cave_empty_bold2(my, mx)) break;
                                        }
                                        if (attempt < 0) continue;
-                                       summon_specific(-1, my, mx, plev, SUMMON_KNIGHTS, (PM_ALLOW_GROUP | PM_FORCE_PET | PM_HASTE), '\0');
+                                       summon_specific(-1, my, mx, plev, SUMMON_KNIGHTS, (PM_ALLOW_GROUP | PM_FORCE_PET | PM_HASTE));
                                }
                                set_hero(randint1(base) + base, FALSE);
                                set_blessed(randint1(base) + base, FALSE);
index b2d672f..d9e408c 100644 (file)
@@ -140,7 +140,7 @@ concptr do_daemon_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_MANES, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'))
+                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_MANES, (PM_ALLOW_GROUP | PM_FORCE_PET)))
                                {
                                        msg_print(_("古代の死霊は現れなかった。", "No Manes arrive."));
                                }
index b11208e..d4f989a 100644 (file)
@@ -298,7 +298,7 @@ concptr do_nature_spell(SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               if (!(summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0')))
+                               if (!(summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET))))
                                {
                                        msg_print(_("動物は現れなかった。", "No animals arrive."));
                                }
index fbbeb4d..be9a450 100644 (file)
@@ -55,7 +55,7 @@ bool trump_summoning(int num, bool pet, POSITION y, POSITION x, DEPTH lev, int t
 
        for (i = 0; i < num; i++)
        {
-               if (summon_specific(who, y, x, lev, type, mode, '\0'))
+               if (summon_specific(who, y, x, lev, type, mode))
                        success = TRUE;
        }
 
@@ -77,7 +77,7 @@ bool cast_summon_demon(int power)
        else flg |= PM_NO_PET;
        if (!(pet && (p_ptr->lev < 50))) flg |= PM_ALLOW_GROUP;
 
-       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, power, SUMMON_DEMON, flg, '\0'))
+       if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, power, SUMMON_DEMON, flg))
        {
                msg_print(_("硫黄の悪臭が充満した。", "The area fills with a stench of sulphur and brimstone."));
                if (pet)
@@ -105,7 +105,7 @@ bool cast_summon_undead(player_type *creature_ptr, int power)
        if (pet) mode |= PM_FORCE_PET;
        else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET);
 
-       if (summon_specific((pet ? -1 : 0), creature_ptr->y, creature_ptr->x, power, type, mode, '\0'))
+       if (summon_specific((pet ? -1 : 0), creature_ptr->y, creature_ptr->x, power, type, mode))
        {
                msg_print(_("冷たい風があなたの周りに吹き始めた。それは腐敗臭を運んでいる...",
                        "Cold winds begin to blow around you, carrying with them the stench of decay..."));
@@ -127,7 +127,7 @@ bool cast_summon_hound(player_type *creature_ptr, int power)
        if (pet) mode |= PM_FORCE_PET;
        else mode |= PM_NO_PET;
 
-       if (summon_specific((pet ? -1 : 0), creature_ptr->y, creature_ptr->x, power, SUMMON_HOUND, mode, '\0'))
+       if (summon_specific((pet ? -1 : 0), creature_ptr->y, creature_ptr->x, power, SUMMON_HOUND, mode))
        {
                if (pet)
                        msg_print(_("ハウンドがあなたの下僕として出現した。", "A group of hounds appear as your servant."));
@@ -146,7 +146,7 @@ bool cast_summon_elemental(player_type *creature_ptr, int power)
        if (pet) mode |= PM_FORCE_PET;
        else mode |= PM_NO_PET;
 
-       if (summon_specific((pet ? -1 : 0), creature_ptr->y, creature_ptr->x, power, SUMMON_ELEMENTAL, mode, '\0'))
+       if (summon_specific((pet ? -1 : 0), creature_ptr->y, creature_ptr->x, power, SUMMON_ELEMENTAL, mode))
        {
                msg_print(_("エレメンタルが現れた...", "An elemental materializes..."));
                if (pet)
@@ -213,7 +213,7 @@ bool cast_summon_greater_demon(void)
 
        summon_lev = plev * 2 / 3 + r_info[o_ptr->pval].level;
 
-       if (summon_specific(-1, p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_DEMON, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'))
+       if (summon_specific(-1, p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_DEMON, (PM_ALLOW_GROUP | PM_FORCE_PET)))
        {
                msg_print(_("硫黄の悪臭が充満した。", "The area fills with a stench of sulphur and brimstone."));
                msg_print(_("「ご用でございますか、ご主人様」", "'What is thy bidding... Master?'"));
@@ -253,110 +253,8 @@ bool cast_summon_greater_demon(void)
 bool summon_kin_player(DEPTH level, POSITION y, POSITION x, BIT_FLAGS mode)
 {
        bool pet = (bool)(mode & PM_FORCE_PET);
-       SYMBOL_CODE symbol = '\0';
        if (!pet) mode |= PM_NO_PET;
-
-       switch (p_ptr->mimic_form)
-       {
-       case MIMIC_NONE:
-               switch (p_ptr->prace)
-               {
-               case RACE_HUMAN:
-               case RACE_AMBERITE:
-               case RACE_BARBARIAN:
-               case RACE_BEASTMAN:
-               case RACE_DUNADAN:
-                       symbol = 'p';
-                       break;
-               case RACE_HALF_ELF:
-               case RACE_ELF:
-               case RACE_HOBBIT:
-               case RACE_GNOME:
-               case RACE_DWARF:
-               case RACE_HIGH_ELF:
-               case RACE_NIBELUNG:
-               case RACE_DARK_ELF:
-               case RACE_MIND_FLAYER:
-               case RACE_KUTAR:
-               case RACE_S_FAIRY:
-                       symbol = 'h';
-                       break;
-               case RACE_HALF_ORC:
-                       symbol = 'o';
-                       break;
-               case RACE_HALF_TROLL:
-                       symbol = 'T';
-                       break;
-               case RACE_HALF_OGRE:
-                       symbol = 'O';
-                       break;
-               case RACE_HALF_GIANT:
-               case RACE_HALF_TITAN:
-               case RACE_CYCLOPS:
-                       symbol = 'P';
-                       break;
-               case RACE_YEEK:
-                       symbol = 'y';
-                       break;
-               case RACE_KLACKON:
-                       symbol = 'K';
-                       break;
-               case RACE_KOBOLD:
-                       symbol = 'k';
-                       break;
-               case RACE_IMP:
-                       if (one_in_(13)) symbol = 'U';
-                       else symbol = 'u';
-                       break;
-               case RACE_DRACONIAN:
-                       symbol = 'd';
-                       break;
-               case RACE_GOLEM:
-               case RACE_ANDROID:
-                       symbol = 'g';
-                       break;
-               case RACE_SKELETON:
-                       if (one_in_(13)) symbol = 'L';
-                       else symbol = 's';
-                       break;
-               case RACE_ZOMBIE:
-                       symbol = 'z';
-                       break;
-               case RACE_VAMPIRE:
-                       symbol = 'V';
-                       break;
-               case RACE_SPECTRE:
-                       symbol = 'G';
-                       break;
-               case RACE_SPRITE:
-                       symbol = 'I';
-                       break;
-               case RACE_ENT:
-                       symbol = '#';
-                       break;
-               case RACE_ANGEL:
-                       symbol = 'A';
-                       break;
-               case RACE_DEMON:
-                       symbol = 'U';
-                       break;
-               default:
-                       symbol = 'p';
-                       break;
-               }
-               break;
-       case MIMIC_DEMON:
-               if (one_in_(13)) symbol = 'U';
-               else symbol = 'u';
-               break;
-       case MIMIC_DEMON_LORD:
-               symbol = 'U';
-               break;
-       case MIMIC_VAMPIRE:
-               symbol = 'V';
-               break;
-       }
-       return summon_specific((pet ? -1 : 0), y, x, level, SUMMON_KIN, mode, symbol);
+       return summon_specific((pet ? -1 : 0), y, x, level, SUMMON_KIN, mode);
 }
 
 /*!
@@ -384,7 +282,7 @@ int summon_cyber(MONSTER_IDX who, POSITION y, POSITION x)
 
        for (i = 0; i < max_cyber; i++)
        {
-               count += summon_specific(who, y, x, 100, SUMMON_CYBER, mode, '\0');
+               count += summon_specific(who, y, x, 100, SUMMON_CYBER, mode);
        }
 
        return count;
index a212c65..a1790d6 100644 (file)
@@ -53,7 +53,7 @@
 #define SUMMON_ARMAGE_GOOD          66 /*!< 召喚タイプ: ハルマゲドン・トラップ用天使陣営 */
 #define SUMMON_ARMAGE_EVIL          67 /*!< 召喚タイプ: ハルマゲドン・トラップ用悪魔陣営 */
 
-extern bool summon_specific(MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode, SYMBOL_CODE symbol);
+extern bool summon_specific(MONSTER_IDX who, POSITION y1, POSITION x1, DEPTH lev, int type, BIT_FLAGS mode);
 extern bool summon_named_creature(MONSTER_IDX who, POSITION oy, POSITION ox, MONRACE_IDX r_idx, BIT_FLAGS mode);
 
 extern bool trump_summoning(int num, bool pet, POSITION y, POSITION x, DEPTH lev, int type, BIT_FLAGS mode);
index c00a8db..a6967f6 100644 (file)
@@ -3333,7 +3333,7 @@ bool activate_ty_curse(bool stop_ty, int *count)
                        (*count) += activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                        if (!one_in_(6)) break;
                case 7: case 8: case 9: case 18:
-                       (*count) += summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                       (*count) += summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        if (!one_in_(6)) break;
                case 10: case 11: case 12:
                        msg_print(_("経験値が体から吸い取られた気がする!", "You feel your experience draining away..."));
@@ -3427,51 +3427,51 @@ int activate_hi_summon(POSITION y, POSITION x, bool can_pet)
                switch (randint1(25) + (current_floor_ptr->dun_level / 20))
                {
                        case 1: case 2:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANT, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANT, mode);
                                break;
                        case 3: case 4:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_SPIDER, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_SPIDER, mode);
                                break;
                        case 5: case 6:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HOUND, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HOUND, mode);
                                break;
                        case 7: case 8:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HYDRA, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HYDRA, mode);
                                break;
                        case 9: case 10:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANGEL, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANGEL, mode);
                                break;
                        case 11: case 12:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNDEAD, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNDEAD, mode);
                                break;
                        case 13: case 14:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DRAGON, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DRAGON, mode);
                                break;
                        case 15: case 16:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DEMON, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DEMON, mode);
                                break;
                        case 17:
                                if (can_pet) break;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE), '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE));
                                break;
                        case 18: case 19:
                                if (can_pet) break;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE), '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE));
                                break;
                        case 20: case 21:
                                if (!can_pet) mode |= PM_ALLOW_UNIQUE;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_UNDEAD, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_UNDEAD, mode);
                                break;
                        case 22: case 23:
                                if (!can_pet) mode |= PM_ALLOW_UNIQUE;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_DRAGON, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_DRAGON, mode);
                                break;
                        case 24:
-                               count += summon_specific((pet ? -1 : 0), y, x, 100, SUMMON_CYBER, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x, 100, SUMMON_CYBER, mode);
                                break;
                        default:
                                if (!can_pet) mode |= PM_ALLOW_UNIQUE;
-                               count += summon_specific((pet ? -1 : 0), y, x,pet ? summon_lev : (((summon_lev * 3) / 2) + 5), 0, mode, '\0');
+                               count += summon_specific((pet ? -1 : 0), y, x,pet ? summon_lev : (((summon_lev * 3) / 2) + 5), 0, mode);
                }
        }
 
@@ -4008,7 +4008,7 @@ void wild_magic(int spell)
        case 35:
                while (counter++ < 8)
                {
-                       (void)summon_specific(0, p_ptr->y, p_ptr->x, (current_floor_ptr->dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET), '\0');
+                       (void)summon_specific(0, p_ptr->y, p_ptr->x, (current_floor_ptr->dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET));
                }
                break;
        case 36:
@@ -4289,7 +4289,7 @@ void cast_invoke_spirits(DIRECTION dir)
                msg_print(_("なんてこった!あなたの周りの地面から朽ちた人影が立ち上がってきた!",
                        "Oh no! Mouldering forms rise from the earth around you!"));
 
-               (void)summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+               (void)summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                chg_virtue(V_UNLIFE, 1);
        }
        else if (die < 14)
@@ -4449,7 +4449,7 @@ void cast_shuffle(void)
        else if (die < 14)
        {
                msg_print(_("なんてこった!《悪魔》だ!", "Oh no! It's the Devil!"));
-               summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+               summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
        }
        else if (die < 18)
        {
index d909132..bedb37b 100644 (file)
@@ -3954,7 +3954,7 @@ void blood_curse_to_enemy(MONSTER_IDX m_idx)
                        if (pet) mode |= PM_FORCE_PET;
                        else mode |= (PM_NO_PET | PM_FORCE_FRIENDLY);
 
-                       count += summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (pet ? p_ptr->lev * 2 / 3 + randint1(p_ptr->lev / 2) : current_floor_ptr->dun_level), 0, mode, '\0');
+                       count += summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (pet ? p_ptr->lev * 2 / 3 + randint1(p_ptr->lev / 2) : current_floor_ptr->dun_level), 0, mode);
                        if (!one_in_(6)) break;
                }
                case 23: case 24: case 25:
index e75729f..75af616 100644 (file)
@@ -452,7 +452,7 @@ void hit_trap(bool break_trap)
                num = 2 + randint1(3);
                for (i = 0; i < num; i++)
                {
-                       (void)summon_specific(0, y, x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
+                       (void)summon_specific(0, y, x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                }
 
                if (current_floor_ptr->dun_level > randint1(100)) /* No nasty effect for low levels */
@@ -614,10 +614,10 @@ void hit_trap(bool break_trap)
                                /* Require line of projection */
                                if (!projectable(p_ptr->y, p_ptr->x, y1, x1)) continue;
 
-                               if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_EVIL, (PM_NO_PET), '\0'))
+                               if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_EVIL, (PM_NO_PET)))
                                        evil_idx = hack_m_idx_ii;
 
-                               if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_GOOD, (PM_NO_PET), '\0'))
+                               if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_GOOD, (PM_NO_PET)))
                                {
                                        good_idx = hack_m_idx_ii;
                                }
@@ -648,7 +648,7 @@ void hit_trap(bool break_trap)
                num = 1 + current_floor_ptr->dun_level / 20;
                for (i = 0; i < num; i++)
                {
-                       (void)summon_specific(0, y, x, current_floor_ptr->dun_level, SUMMON_PIRANHAS, (PM_ALLOW_GROUP | PM_NO_PET), '\0');
+                       (void)summon_specific(0, y, x, current_floor_ptr->dun_level, SUMMON_PIRANHAS, (PM_ALLOW_GROUP | PM_NO_PET));
                }
                break;
        }
index efb86d5..ce437b3 100644 (file)
@@ -132,7 +132,6 @@ MONSTER_IDX hack_m_idx = 0; /* Hack -- see "process_monsters()" */
 MONSTER_IDX hack_m_idx_ii = 0;
 
 bool multi_rew = FALSE;
-char summon_kin_type;   /* Hack, by Julian Lighton: summon 'relatives' */
 
 int total_friends = 0;
 int leaving_quest = 0;
index 293cb78..f952a26 100644 (file)
@@ -1425,7 +1425,7 @@ static void do_cmd_wiz_summon(int num)
        int i;
        for (i = 0; i < num; i++)
        {
-               (void)summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0');
+               (void)summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
        }
 }