case ACT_SLEEP:
{
msg_print(_("深青色に輝いている...", "It glows deep blue..."));
- sleep_monsters_touch();
+ sleep_monsters_touch(user_ptr);
break;
}
case ACT_DEST_DOOR:
{
msg_print(_("明るい赤色に輝いている...", "It glows bright red..."));
- destroy_doors_touch();
+ destroy_doors_touch(user_ptr);
break;
}
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:
{
case SV_SCROLL_TRAP_DOOR_DESTRUCTION:
{
- if (destroy_doors_touch()) ident = TRUE;
+ if (destroy_doors_touch(creature_ptr)) ident = TRUE;
break;
}
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;
}
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;
}
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;
}
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:
{
/*!
* @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];
_("%^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);
}
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 */
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 */
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;
}
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;
if (cast)
{
- destroy_doors_touch();
+ destroy_doors_touch(caster_ptr);
}
}
break;
{
PLAYER_LEVEL power = plev;
if (info) return info_power(power);
- if (cast) sleep_monsters_touch();
+ if (cast) sleep_monsters_touch(caster_ptr);
}
break;
{
if (cast)
{
- animate_dead(0, caster_ptr->y, caster_ptr->x);
+ animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
}
}
break;
}
if (cast || cont)
{
- animate_dead(0, caster_ptr->y, caster_ptr->x);
+ animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
}
break;
{
if (cast)
{
- wall_stone();
+ wall_stone(caster_ptr);
}
}
break;
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;
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);
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);
* @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;
}
* @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));
}
* @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));
}
* @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));
}
* @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));
}
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:
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:
else if (die < 72)
{
msg_print(_("《節制》だ。", "It's Temperance."));
- sleep_monsters_touch();
+ sleep_monsters_touch(caster_ptr);
}
else if (die < 80)
{
else if (die < 101)
{
msg_print(_("《隠者》だ。", "It's the Hermit."));
- wall_stone();
+ wall_stone(caster_ptr);
}
else if (die < 111)
{