/* Get the cave grid */
cave_type *c_ptr = &cave[y][x];
-
- int trap_feat = c_ptr->feat;
+ feature_type *f_ptr = &f_info[c_ptr->feat];
+ int trap_feat_type = have_flag(f_ptr->flags, FF_TRAP) ? f_ptr->subtype : NOT_TRAP;
#ifdef JP
cptr name = "¥È¥é¥Ã¥×";
cave_alter_feat(y, x, FF_HIT_TRAP);
/* Analyze XXX XXX XXX */
- switch (trap_feat)
+ switch (trap_feat_type)
{
- case FEAT_TRAP_TRAPDOOR:
+ case TRAP_TRAPDOOR:
{
if (p_ptr->levitation)
{
#ifdef JP
- msg_print("Í¸Í¤òÈô¤Ó±Û¤¨¤¿¡£");
+ msg_print("Íî¤Ȥ·¸Í¤òÈô¤Ó±Û¤¨¤¿¡£");
#else
msg_print("You fly over a trap door.");
#endif
else
{
#ifdef JP
- msg_print("Í¸Í¤ËÍî¤Á¤¿¡ª");
+ msg_print("Íî¤Ȥ·¸Í¤ËÍî¤Á¤¿¡ª");
if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
msg_print("¤¯¤Ã¤½¡Á¡ª");
#else
sound(SOUND_FALL);
dam = damroll(2, 8);
#ifdef JP
- name = "Í¸Í";
+ name = "Íî¤Ȥ·¸Í";
#else
name = "a trap door";
#endif
do_cmd_save_game(TRUE);
#ifdef JP
- do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "Í¸Í¤ËÍî¤Á¤¿");
+ do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "Íî¤Ȥ·¸Í¤ËÍî¤Á¤¿");
#else
do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "You have fallen through a trap door!");
#endif
break;
}
- case FEAT_TRAP_PIT:
+ case TRAP_PIT:
{
if (p_ptr->levitation)
{
#ifdef JP
- msg_print("Í·ê¤òÈô¤Ó±Û¤¨¤¿¡£");
+ msg_print("Íî¤Ȥ··ê¤òÈô¤Ó±Û¤¨¤¿¡£");
#else
msg_print("You fly over a pit trap.");
#endif
else
{
#ifdef JP
- msg_print("Í·ê¤ËÍî¤Á¤Æ¤·¤Þ¤Ã¤¿¡ª");
+ msg_print("Íî¤Ȥ··ê¤ËÍî¤Á¤Æ¤·¤Þ¤Ã¤¿¡ª");
#else
msg_print("You have fallen into a pit!");
#endif
dam = damroll(2, 6);
#ifdef JP
- name = "Í·ê";
+ name = "Íî¤Ȥ··ê";
#else
name = "a pit trap";
#endif
break;
}
- case FEAT_TRAP_SPIKED_PIT:
+ case TRAP_SPIKED_PIT:
{
if (p_ptr->levitation)
{
#ifdef JP
- msg_print("¥È¥²¤Î¤¢¤ëÍ·ê¤òÈô¤Ó±Û¤¨¤¿¡£");
+ msg_print("¥È¥²¤Î¤¢¤ëÍî¤Ȥ··ê¤òÈô¤Ó±Û¤¨¤¿¡£");
#else
msg_print("You fly over a spiked pit.");
#endif
else
{
#ifdef JP
- msg_print("¥¹¥Ñ¥¤¥¯¤¬Éߤ«¤ì¤¿Í·ê¤ËÍî¤Á¤Æ¤·¤Þ¤Ã¤¿¡ª");
+ msg_print("¥¹¥Ñ¥¤¥¯¤¬Éߤ«¤ì¤¿Íî¤È¤··ê¤ËÍî¤Á¤Æ¤·¤Þ¤Ã¤¿¡ª");
#else
msg_print("You fall into a spiked pit!");
#endif
/* Base damage */
#ifdef JP
- name = "Í·ê";
+ name = "Íî¤Ȥ··ê";
#else
name = "a pit trap";
#endif
#ifdef JP
- name = "¥È¥²¤Î¤¢¤ëÍ·ê";
+ name = "¥È¥²¤Î¤¢¤ëÍî¤Ȥ··ê";
#else
name = "a spiked pit";
#endif
break;
}
- case FEAT_TRAP_POISON_PIT:
+ case TRAP_POISON_PIT:
{
if (p_ptr->levitation)
{
#ifdef JP
- msg_print("¥È¥²¤Î¤¢¤ëÍ·ê¤òÈô¤Ó±Û¤¨¤¿¡£");
+ msg_print("¥È¥²¤Î¤¢¤ëÍî¤Ȥ··ê¤òÈô¤Ó±Û¤¨¤¿¡£");
#else
msg_print("You fly over a spiked pit.");
#endif
else
{
#ifdef JP
- msg_print("¥¹¥Ñ¥¤¥¯¤¬Éߤ«¤ì¤¿Í·ê¤ËÍî¤Á¤Æ¤·¤Þ¤Ã¤¿¡ª");
+ msg_print("¥¹¥Ñ¥¤¥¯¤¬Éߤ«¤ì¤¿Íî¤Ȥ··ê¤ËÍî¤Á¤Æ¤·¤Þ¤Ã¤¿¡ª");
#else
msg_print("You fall into a spiked pit!");
#endif
dam = damroll(2, 6);
#ifdef JP
- name = "Í·ê";
+ name = "Íî¤Ȥ··ê";
#else
name = "a pit trap";
#endif
#ifdef JP
- name = "¥È¥²¤Î¤¢¤ëÍ·ê";
+ name = "¥È¥²¤Î¤¢¤ëÍî¤Ȥ··ê";
#else
name = "a spiked pit";
#endif
break;
}
- case FEAT_TRAP_TY_CURSE:
+ case TRAP_TY_CURSE:
{
#ifdef JP
msg_print("²¿¤«¤¬¥Ô¥«¥Ã¤È¸÷¤Ã¤¿¡ª");
break;
}
- case FEAT_TRAP_TELEPORT:
+ case TRAP_TELEPORT:
{
#ifdef JP
msg_print("¥Æ¥ì¥Ý¡¼¥È¡¦¥È¥é¥Ã¥×¤Ë¤Ò¤Ã¤«¤«¤Ã¤¿¡ª");
break;
}
- case FEAT_TRAP_FIRE:
+ case TRAP_FIRE:
{
#ifdef JP
msg_print("±ê¤ËÊñ¤Þ¤ì¤¿¡ª");
break;
}
- case FEAT_TRAP_ACID:
+ case TRAP_ACID:
{
#ifdef JP
msg_print("»À¤¬¿á¤¤«¤±¤é¤ì¤¿¡ª");
break;
}
- case FEAT_TRAP_SLOW:
+ case TRAP_SLOW:
{
if (check_hit(125))
{
break;
}
- case FEAT_TRAP_LOSE_STR:
+ case TRAP_LOSE_STR:
{
if (check_hit(125))
{
break;
}
- case FEAT_TRAP_LOSE_DEX:
+ case TRAP_LOSE_DEX:
{
if (check_hit(125))
{
break;
}
- case FEAT_TRAP_LOSE_CON:
+ case TRAP_LOSE_CON:
{
if (check_hit(125))
{
break;
}
- case FEAT_TRAP_BLIND:
+ case TRAP_BLIND:
{
#ifdef JP
msg_print("¹õ¤¤¥¬¥¹¤ËÊñ¤ß¹þ¤Þ¤ì¤¿¡ª");
break;
}
- case FEAT_TRAP_CONFUSE:
+ case TRAP_CONFUSE:
{
#ifdef JP
msg_print("¤¤é¤á¤¯¥¬¥¹¤ËÊñ¤ß¹þ¤Þ¤ì¤¿¡ª");
break;
}
- case FEAT_TRAP_POISON:
+ case TRAP_POISON:
{
#ifdef JP
msg_print("»É·ãŪ¤ÊÎп§¤Î¥¬¥¹¤ËÊñ¤ß¹þ¤Þ¤ì¤¿¡ª");
break;
}
- case FEAT_TRAP_SLEEP:
+ case TRAP_SLEEP:
{
#ifdef JP
msg_print("´ñ̯¤ÊÇò¤¤Ì¸¤ËÊñ¤Þ¤ì¤¿¡ª");
break;
}
- case FEAT_TRAP_TRAPS:
+ case TRAP_TRAPS:
{
#ifdef JP
msg_print("¤Þ¤Ð¤æ¤¤Á®¸÷¤¬Áö¤Ã¤¿¡ª");
break;
}
- case FEAT_TRAP_ALARM:
+ case TRAP_ALARM:
{
#ifdef JP
msg_print("¤±¤¿¤¿¤Þ¤·¤¤²»¤¬ÌĤê¶Á¤¤¤¿¡ª");
break;
}
- case FEAT_TRAP_OPEN:
+ case TRAP_OPEN:
{
#ifdef JP
msg_print("Âç²»¶Á¤È¶¦¤Ë¤Þ¤ï¤ê¤ÎÊɤ¬Êø¤ì¤¿¡ª");
break;
}
- case FEAT_TRAP_ARMAGEDDON:
+ case TRAP_ARMAGEDDON:
{
static int levs[10] = {0, 0, 20, 10, 5, 3, 2, 1, 1, 1};
int evil_idx = 0, good_idx = 0;
break;
}
- case FEAT_TRAP_PIRANHA:
+ case TRAP_PIRANHA:
{
#ifdef JP
msg_print("ÆÍÁ³Êɤ«¤é¿å¤¬°î¤ì½Ð¤·¤¿¡ª¥Ô¥é¥Ë¥¢¤¬¤¤¤ë¡ª");
case CLASS_MONK:
case CLASS_FORCETRAINER:
case CLASS_BERSERKER:
- if (empty_hands(TRUE) & EMPTY_HAND_RARM) monk_attack = TRUE;
+ if ((empty_hands(TRUE) & EMPTY_HAND_RARM) && !p_ptr->riding) monk_attack = TRUE;
break;
}
}
m_ptr->maxhp -= (k+7)/8;
if (m_ptr->hp > m_ptr->maxhp) m_ptr->hp = m_ptr->maxhp;
+ if (m_ptr->maxhp < 1) m_ptr->maxhp = 1;
weak = TRUE;
}
can_drain = FALSE;
if (!is_pattern_tile_cur && !is_pattern_tile_new) return TRUE;
- pattern_type_cur = is_pattern_tile_cur ? cur_f_ptr->power : NOT_PATTERN_TILE;
- pattern_type_new = is_pattern_tile_new ? new_f_ptr->power : NOT_PATTERN_TILE;
+ pattern_type_cur = is_pattern_tile_cur ? cur_f_ptr->subtype : NOT_PATTERN_TILE;
+ pattern_type_new = is_pattern_tile_new ? new_f_ptr->subtype : NOT_PATTERN_TILE;
if (pattern_type_new == PATTERN_TILE_START)
{
bool trap_can_be_ignored(int feat)
{
- switch (feat)
+ feature_type *f_ptr = &f_info[feat];
+
+ if (!have_flag(f_ptr->flags, FF_TRAP)) return TRUE;
+
+ switch (f_ptr->subtype)
{
- case FEAT_TRAP_TRAPDOOR:
- case FEAT_TRAP_PIT:
- case FEAT_TRAP_SPIKED_PIT:
- case FEAT_TRAP_POISON_PIT:
+ case TRAP_TRAPDOOR:
+ case TRAP_PIT:
+ case TRAP_SPIKED_PIT:
+ case TRAP_POISON_PIT:
if (p_ptr->levitation) return TRUE;
break;
- case FEAT_TRAP_TELEPORT:
+ case TRAP_TELEPORT:
if (p_ptr->anti_tele) return TRUE;
break;
- case FEAT_TRAP_FIRE:
+ case TRAP_FIRE:
if (p_ptr->immune_fire) return TRUE;
break;
- case FEAT_TRAP_ACID:
+ case TRAP_ACID:
if (p_ptr->immune_acid) return TRUE;
break;
- case FEAT_TRAP_BLIND:
+ case TRAP_BLIND:
if (p_ptr->resist_blind) return TRUE;
break;
- case FEAT_TRAP_CONFUSE:
+ case TRAP_CONFUSE:
if (p_ptr->resist_conf) return TRUE;
break;
- case FEAT_TRAP_POISON:
+ case TRAP_POISON:
if (p_ptr->resist_pois) return TRUE;
break;
- case FEAT_TRAP_SLEEP:
+ case TRAP_SLEEP:
if (p_ptr->free_act) return TRUE;
break;
}
/* Player can not walk through "walls"... */
/* unless in Shadow Form */
- p_can_kill_walls = p_ptr->kill_wall && have_flag(f_ptr->flags, FF_TUNNEL) &&
+ p_can_kill_walls = p_ptr->kill_wall && have_flag(f_ptr->flags, FF_HURT_DISI) &&
(!p_can_enter || !have_flag(f_ptr->flags, FF_LOS)) &&
!have_flag(f_ptr->flags, FF_PERMANENT);
*/
else if (have_flag(f_ptr->flags, FF_TREE) && !p_can_kill_walls)
{
- if ((p_ptr->pclass != CLASS_RANGER) && !p_ptr->levitation) energy_use *= 2;
+ if ((p_ptr->pclass != CLASS_RANGER) && !p_ptr->levitation && (!p_ptr->riding || !(riding_r_ptr->flags8 & RF8_WILD_WOOD))) energy_use *= 2;
}
#ifdef ALLOW_EASY_DISARM /* TNB */