/* Blink away */
if (blinked && alive && !target_ptr->is_dead)
{
- if (teleport_barrier(m_idx))
+ if (teleport_barrier(target_ptr, m_idx))
{
msg_print(_("泥棒は笑って逃げ...ようとしたがバリアに防がれた。", "The thief flees laughing...? But magic barrier obstructs it."));
}
/* Blink away */
if (blinked && m_ptr->r_idx)
{
- if (teleport_barrier(m_idx))
+ if (teleport_barrier(subject_ptr, m_idx))
{
if (see_m)
{
if (TARGET_TYPE==MONSTER_TO_PLAYER)
disturb(p_ptr, TRUE, TRUE);
- if (teleport_barrier(m_idx))
+ if (teleport_barrier(p_ptr, m_idx))
{
if(see_monster(m_idx))
msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。",
if (TARGET_TYPE==MONSTER_TO_PLAYER)
disturb(p_ptr, TRUE, TRUE);
- if (teleport_barrier(m_idx))
+ if (teleport_barrier(p_ptr, m_idx))
{
if(see_monster(m_idx))
msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。",
* @param m_idx 判定の対象となるモンスターID
* @return 反テレポートの効果が適用されるならTRUEを返す
*/
-bool teleport_barrier(MONSTER_IDX m_idx)
+bool teleport_barrier(player_type *caster_ptr, MONSTER_IDX m_idx)
{
- monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[m_idx];
+ monster_type *m_ptr = &caster_ptr->current_floor_ptr->m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
if (!hex_spelling(HEX_ANTI_TELE)) return FALSE;
- if ((p_ptr->lev * 3 / 2) < randint1(r_ptr->level)) return FALSE;
+ if ((caster_ptr->lev * 3 / 2) < randint1(r_ptr->level)) return FALSE;
return TRUE;
}
extern bool hex_spell_fully(player_type *caster_ptr);
extern void revenge_spell(player_type *caster_ptr);
extern void revenge_store(HIT_POINT dam);
-extern bool teleport_barrier(MONSTER_IDX m_idx);
+extern bool teleport_barrier(player_type *caster_ptr, MONSTER_IDX m_idx);
extern bool magic_barrier(player_type *target_ptr, MONSTER_IDX m_idx);
extern bool multiply_barrier(MONSTER_IDX m_idx);
extern concptr do_hex_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode);