* @param feat 地形ID
* @return トラップが自動的に無効ならばTRUEを返す
*/
-bool trap_can_be_ignored(FEAT_IDX feat)
+bool trap_can_be_ignored(player_type *creature_ptr, FEAT_IDX feat)
{
feature_type *f_ptr = &f_info[feat];
case TRAP_PIT:
case TRAP_SPIKED_PIT:
case TRAP_POISON_PIT:
- if (p_ptr->levitation) return TRUE;
+ if (creature_ptr->levitation) return TRUE;
break;
case TRAP_TELEPORT:
- if (p_ptr->anti_tele) return TRUE;
+ if (creature_ptr->anti_tele) return TRUE;
break;
case TRAP_FIRE:
- if (p_ptr->immune_fire) return TRUE;
+ if (creature_ptr->immune_fire) return TRUE;
break;
case TRAP_ACID:
- if (p_ptr->immune_acid) return TRUE;
+ if (creature_ptr->immune_acid) return TRUE;
break;
case TRAP_BLIND:
- if (p_ptr->resist_blind) return TRUE;
+ if (creature_ptr->resist_blind) return TRUE;
break;
case TRAP_CONFUSE:
- if (p_ptr->resist_conf) return TRUE;
+ if (creature_ptr->resist_conf) return TRUE;
break;
case TRAP_POISON:
- if (p_ptr->resist_pois) return TRUE;
+ if (creature_ptr->resist_pois) return TRUE;
break;
case TRAP_SLEEP:
- if (p_ptr->free_act) return TRUE;
+ if (creature_ptr->free_act) return TRUE;
break;
}
/* Disarm a visible trap */
else if ((do_pickup != easy_disarm) && have_flag(f_ptr->flags, FF_DISARM) && !g_ptr->mimic)
{
- if (!trap_can_be_ignored(g_ptr->feat))
+ if (!trap_can_be_ignored(p_ptr, g_ptr->feat))
{
(void)do_cmd_disarm_aux(y, x, dir);
return;
if (!easy_open && is_closed_door(g_ptr->feat)) return (0);
/* Visible and unignorable trap abort tarveling */
- if (!g_ptr->mimic && !trap_can_be_ignored(g_ptr->feat)) return (0);
+ if (!g_ptr->mimic && !trap_can_be_ignored(p_ptr, g_ptr->feat)) return (0);
/* Move new grid */
return (new_dir);
extern void py_pickup_aux(OBJECT_IDX o_idx);
extern bool pattern_seq(POSITION c_y, POSITION c_x, POSITION n_y, POSITION n_x);
-extern bool trap_can_be_ignored(FEAT_IDX feat);
+extern bool trap_can_be_ignored(player_type *creature_ptr, FEAT_IDX feat);
extern void search(player_type *creature_ptr);
extern void carry(bool pickup);
#ifdef TRAVEL