OSDN Git Service

[Refactor] #38997 wall_stone()、destroy_doors_touch()、disarm_traps_touch()、sleep_monst...
authorHourier <hourier@users.sourceforge.jp>
Tue, 7 Jan 2020 11:31:44 +0000 (20:31 +0900)
committerHourier <hourier@users.sourceforge.jp>
Tue, 7 Jan 2020 11:31:44 +0000 (20:31 +0900)
17 files changed:
src/cmd/cmd-activate.c
src/cmd/cmd-mane.c
src/cmd/cmd-read.c
src/cmd/cmd-usestaff.c
src/cmd/cmd-zaprod.c
src/cmd/cmd-zapwand.c
src/mspells3.c
src/mspells4.c
src/racial.c
src/realm-chaos.c
src/realm-crusade.c
src/realm-death.c
src/realm-hex.c
src/realm-nature.c
src/realm-song.c
src/spells.h
src/spells2.c

index a6a7178..f732b8a 100644 (file)
@@ -1081,7 +1081,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_SLEEP:
        {
                msg_print(_("深青色に輝いている...", "It glows deep blue..."));
-               sleep_monsters_touch();
+               sleep_monsters_touch(user_ptr);
                break;
        }
 
@@ -1502,7 +1502,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_DEST_DOOR:
        {
                msg_print(_("明るい赤色に輝いている...", "It glows bright red..."));
-               destroy_doors_touch();
+               destroy_doors_touch(user_ptr);
                break;
        }
 
index 75d3405..66fefa5 100644 (file)
@@ -740,7 +740,7 @@ static bool use_mane(player_type *caster_ptr, int spell)
                break;
        case MS_RAISE_DEAD:
                msg_print(_("死者復活の呪文を唱えた。", "You cast a animate dead."));
-               (void)animate_dead(0, caster_ptr->y, caster_ptr->x);
+               (void)animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
                break;
        case MS_S_KIN:
        {
index 7975832..bc21d2c 100644 (file)
@@ -372,7 +372,7 @@ void exe_read(player_type *creature_ptr, INVENTORY_IDX item, bool known)
 
                case SV_SCROLL_TRAP_DOOR_DESTRUCTION:
                {
-                       if (destroy_doors_touch()) ident = TRUE;
+                       if (destroy_doors_touch(creature_ptr)) ident = TRUE;
                        break;
                }
 
index 4935d7f..ad6ad03 100644 (file)
@@ -250,7 +250,7 @@ int staff_effect(player_type *creature_ptr, OBJECT_SUBTYPE_VALUE sval, bool *use
 
                case SV_STAFF_ANIMATE_DEAD:
                {
-                       ident = animate_dead(0, creature_ptr->y, creature_ptr->x);
+                       ident = animate_dead(creature_ptr, 0, creature_ptr->y, creature_ptr->x);
                        break;
                }
 
index 144a66b..4241a52 100644 (file)
@@ -140,7 +140,7 @@ int rod_effect(player_type *creature_ptr, OBJECT_SUBTYPE_VALUE sval, DIRECTION d
        case SV_ROD_DISARMING:
        {
                if (disarm_trap(creature_ptr, dir)) ident = TRUE;
-               if (powerful && disarm_traps_touch()) ident = TRUE;
+               if (powerful && disarm_traps_touch(creature_ptr)) ident = TRUE;
                break;
        }
 
index f7fe8f0..641feea 100644 (file)
@@ -85,14 +85,14 @@ bool wand_effect(player_type *creature_ptr, OBJECT_SUBTYPE_VALUE sval, DIRECTION
                case SV_WAND_DISARMING:
                {
                        if (disarm_trap(creature_ptr, dir)) ident = TRUE;
-                       if (powerful && disarm_traps_touch()) ident = TRUE;
+                       if (powerful && disarm_traps_touch(creature_ptr)) ident = TRUE;
                        break;
                }
 
                case SV_WAND_TRAP_DOOR_DEST:
                {
                        if (destroy_door(creature_ptr, dir)) ident = TRUE;
-                       if (powerful && destroy_doors_touch()) ident = TRUE;
+                       if (powerful && destroy_doors_touch(creature_ptr)) ident = TRUE;
                        break;
                }
 
index 17b135e..b126276 100644 (file)
@@ -1363,7 +1363,7 @@ static bool cast_learned_spell(player_type *caster_ptr, int spell, bool success)
                break;
     case MS_RAISE_DEAD:
         msg_print(_("死者復活の呪文を唱えた。", "You cast a animate dead."));
-               (void)animate_dead(0, caster_ptr->y, caster_ptr->x);
+               (void)animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
                break;
        case MS_S_KIN:
        {
index 42cce39..8fdd62e 100644 (file)
@@ -2514,11 +2514,12 @@ void spell_RF6_FORGET(MONSTER_IDX m_idx)
 
 /*!
 * @brief RF6_RAISE_DEADの処理。死者復活。 /
+* @param target_ptr プレーヤーへの参照ポインタ
 * @param m_idx 呪文を唱えるモンスターID
 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
 */
-void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
+void spell_RF6_RAISE_DEAD(player_type *target_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
 
@@ -2528,7 +2529,7 @@ void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
                _("%^sが死者復活の呪文を唱えた。", "%^s casts a spell to revive corpses."),
                TARGET_TYPE);
 
-       animate_dead(m_idx, m_ptr->fy, m_ptr->fx);
+       animate_dead(target_ptr, m_idx, m_ptr->fy, m_ptr->fx);
 }
 
 
@@ -3491,7 +3492,7 @@ HIT_POINT monspell_to_player(int SPELL_NUM, player_type *target_ptr, POSITION y,
        case RF6_SPELL_START + 12: spell_RF6_DARKNESS(target_ptr, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF6_DARKNESS */
        case RF6_SPELL_START + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */
        case RF6_SPELL_START + 14: spell_RF6_FORGET(m_idx); break;  /* RF6_FORGET */
-       case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_RAISE_DEAD */
+       case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(target_ptr, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF6_RAISE_DEAD */
        case RF6_SPELL_START + 16: spell_RF6_S_KIN(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_KIN */
        case RF6_SPELL_START + 17: spell_RF6_S_CYBER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF6_S_CYBER */
        case RF6_SPELL_START + 18: spell_RF6_S_MONSTER(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_S_MONSTER */
@@ -3606,7 +3607,7 @@ HIT_POINT monspell_to_monster(player_type *target_ptr, int SPELL_NUM, POSITION y
        case RF6_SPELL_START + 12: spell_RF6_DARKNESS(target_ptr, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;       /* RF6_DARKNESS */
        case RF6_SPELL_START + 13: return -1; /* RF6_TRAPS */
        case RF6_SPELL_START + 14: return -1;  /* RF6_FORGET */
-       case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_RAISE_DEAD */
+       case RF6_SPELL_START + 15: spell_RF6_RAISE_DEAD(target_ptr, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_RAISE_DEAD */
        case RF6_SPELL_START + 16: spell_RF6_S_KIN(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_KIN */
        case RF6_SPELL_START + 17: spell_RF6_S_CYBER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_CYBER */
        case RF6_SPELL_START + 18: spell_RF6_S_MONSTER(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_S_MONSTER */
@@ -3624,6 +3625,7 @@ HIT_POINT monspell_to_monster(player_type *target_ptr, int SPELL_NUM, POSITION y
        case RF6_SPELL_START + 30: spell_RF6_S_AMBERITES(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;   /* RF6_S_AMBERITES */
        case RF6_SPELL_START + 31: spell_RF6_S_UNIQUE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break;  /* RF6_S_UNIQUE */
        }
+
        return 0;
 }
 
index 52550c8..3e391b6 100644 (file)
@@ -797,7 +797,7 @@ static bool exe_racial_power(player_type *creature_ptr, s32b command)
 
                case RACE_SPRITE:
                        msg_print(_("あなたは魔法の粉を投げつけた...", "You throw some magic dust..."));
-                       if (plev < 25) sleep_monsters_touch();
+                       if (plev < 25) sleep_monsters_touch(creature_ptr);
                        else (void)sleep_monsters(creature_ptr, plev);
                        break;
 
index 8258f6b..f6e341b 100644 (file)
@@ -62,7 +62,7 @@ concptr do_chaos_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               destroy_doors_touch();
+                               destroy_doors_touch(caster_ptr);
                        }
                }
                break;
index bd65fbc..b485d2b 100644 (file)
@@ -92,7 +92,7 @@ concptr do_crusade_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mod
                {
                        PLAYER_LEVEL power = plev;
                        if (info) return info_power(power);
-                       if (cast) sleep_monsters_touch();
+                       if (cast) sleep_monsters_touch(caster_ptr);
                }
                break;
 
index 8c2a00b..1e764ed 100644 (file)
@@ -345,7 +345,7 @@ concptr do_death_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
                {
                        if (cast)
                        {
-                               animate_dead(0, caster_ptr->y, caster_ptr->x);
+                               animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
                        }
                }
                break;
index fa24c17..6baf1e1 100644 (file)
@@ -711,7 +711,7 @@ concptr do_hex_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
                }
                if (cast || cont)
                {
-                       animate_dead(0, caster_ptr->y, caster_ptr->x);
+                       animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
                }
                break;
 
index 5d70278..1a2a31e 100644 (file)
@@ -414,7 +414,7 @@ concptr do_nature_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode
                {
                        if (cast)
                        {
-                               wall_stone();
+                               wall_stone(caster_ptr);
                        }
                }
                break;
index d4464ca..8b1df4c 100644 (file)
@@ -465,7 +465,7 @@ concptr do_music_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
                        if (cast)
                        {
                                msg_print(_("生命と復活のテーマを奏で始めた...", "The themes of life and revival are woven into your song..."));
-                               animate_dead(0, caster_ptr->y, caster_ptr->x);
+                               animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
                        }
                }
                break;
index b32873b..a1a950d 100644 (file)
@@ -170,7 +170,7 @@ extern bool detect_monsters_string(player_type *caster_ptr, POSITION range, conc
 extern bool detect_monsters_nonliving(player_type *caster_ptr, POSITION range);
 extern bool detect_monsters_mind(player_type *caster_ptr, POSITION range);
 extern bool detect_all(player_type *caster_ptr, POSITION range);
-extern bool wall_stone(void);
+extern bool wall_stone(player_type *caster_ptr);
 extern bool speed_monsters(player_type *caster_ptr);
 extern bool slow_monsters(player_type *caster_ptr, int power);
 extern bool sleep_monsters(player_type *caster_ptr, int power);
@@ -218,10 +218,10 @@ extern bool door_creation(player_type *caster_ptr, POSITION y, POSITION x);
 extern bool trap_creation(player_type *caster_ptr, POSITION y, POSITION x);
 extern bool tree_creation(player_type *caster_ptr, POSITION y, POSITION x);
 extern bool glyph_creation(player_type *caster_ptr, POSITION y, POSITION x);
-extern bool destroy_doors_touch(void);
-extern bool disarm_traps_touch(void);
-extern bool animate_dead(MONSTER_IDX who, POSITION y, POSITION x);
-extern bool sleep_monsters_touch(void);
+extern bool destroy_doors_touch(player_type *caster_ptr);
+extern bool disarm_traps_touch(player_type *caster_ptr);
+extern bool animate_dead(player_type *caster_ptr, MONSTER_IDX who, POSITION y, POSITION x);
+extern bool sleep_monsters_touch(player_type *caster_ptr);
 extern bool activate_ty_curse(player_type *target_ptr, bool stop_ty, int *count);
 extern int activate_hi_summon(POSITION y, POSITION x, bool can_pet);
 extern void wall_breaker(player_type *caster_ptr);
index 4e953ee..679d745 100644 (file)
@@ -2562,12 +2562,12 @@ bool glyph_creation(player_type *caster_ptr, POSITION y, POSITION x)
  * @param caster_ptr プレーヤーへの参照ポインタ
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool wall_stone(void)
+bool wall_stone(player_type *caster_ptr)
 {
        BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       bool dummy = (project(p_ptr, 0, 1, p_ptr->y, p_ptr->x, 0, GF_STONE_WALL, flg, -1));
-       p_ptr->update |= (PU_FLOW);
-       p_ptr->redraw |= (PR_MAP);
+       bool dummy = (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, 0, GF_STONE_WALL, flg, -1));
+       caster_ptr->update |= (PU_FLOW);
+       caster_ptr->redraw |= (PR_MAP);
        return dummy;
 }
 
@@ -2577,10 +2577,10 @@ bool wall_stone(void)
  * @param caster_ptr プレーヤーへの参照ポインタ
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool destroy_doors_touch(void)
+bool destroy_doors_touch(player_type *caster_ptr)
 {
        BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(p_ptr, 0, 1, p_ptr->y, p_ptr->x, 0, GF_KILL_DOOR, flg, -1));
+       return (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, 0, GF_KILL_DOOR, flg, -1));
 }
 
 
@@ -2589,10 +2589,10 @@ bool destroy_doors_touch(void)
  * @param caster_ptr プレーヤーへの参照ポインタ
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool disarm_traps_touch(void)
+bool disarm_traps_touch(player_type *caster_ptr)
 {
        BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(p_ptr, 0, 1, p_ptr->y, p_ptr->x, 0, GF_KILL_TRAP, flg, -1));
+       return (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, 0, GF_KILL_TRAP, flg, -1));
 }
 
 
@@ -2601,10 +2601,10 @@ bool disarm_traps_touch(void)
  * @param caster_ptr プレーヤーへの参照ポインタ
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool sleep_monsters_touch(void)
+bool sleep_monsters_touch(player_type *caster_ptr)
 {
        BIT_FLAGS flg = PROJECT_KILL | PROJECT_HIDE;
-       return (project(p_ptr, 0, 1, p_ptr->y, p_ptr->x, p_ptr->lev, GF_OLD_SLEEP, flg, -1));
+       return (project(caster_ptr, 0, 1, caster_ptr->y, caster_ptr->x, caster_ptr->lev, GF_OLD_SLEEP, flg, -1));
 }
 
 
@@ -2616,10 +2616,10 @@ bool sleep_monsters_touch(void)
  * @param x 起点X座標
  * @return 作用が実際にあった場合TRUEを返す
  */
-bool animate_dead(MONSTER_IDX who, POSITION y, POSITION x)
+bool animate_dead(player_type *caster_ptr, MONSTER_IDX who, POSITION y, POSITION x)
 {
        BIT_FLAGS flg = PROJECT_ITEM | PROJECT_HIDE;
-       return (project(p_ptr, who, 5, y, x, 0, GF_ANIM_DEAD, flg, -1));
+       return (project(caster_ptr, who, 5, y, x, 0, GF_ANIM_DEAD, flg, -1));
 }
 
 
@@ -3399,12 +3399,12 @@ void wild_magic(player_type *caster_ptr, int spell)
                lite_area(caster_ptr, damroll(2, 3), 2);
                break;
        case 15:
-               destroy_doors_touch();
+               destroy_doors_touch(caster_ptr);
                break;
        case 16: case 17:
                wall_breaker(caster_ptr);
        case 18:
-               sleep_monsters_touch();
+               sleep_monsters_touch(caster_ptr);
                break;
        case 19:
        case 20:
@@ -3437,7 +3437,7 @@ void wild_magic(player_type *caster_ptr, int spell)
                fire_ball(caster_ptr, GF_CHAOS, 0, spell + 5, 1 + (spell / 10));
                break;
        case 33:
-               wall_stone();
+               wall_stone(caster_ptr);
                break;
        case 34:
        case 35:
@@ -3953,7 +3953,7 @@ void cast_shuffle(player_type *caster_ptr)
        else if (die < 72)
        {
                msg_print(_("《節制》だ。", "It's Temperance."));
-               sleep_monsters_touch();
+               sleep_monsters_touch(caster_ptr);
        }
        else if (die < 80)
        {
@@ -3991,7 +3991,7 @@ void cast_shuffle(player_type *caster_ptr)
        else if (die < 101)
        {
                msg_print(_("《隠者》だ。", "It's the Hermit."));
-               wall_stone();
+               wall_stone(caster_ptr);
        }
        else if (die < 111)
        {