X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmspells3.c;h=8c64a1b304d1aa89ca97b70f4c6bfcea7958cfe0;hb=f9e0daf8b79c82c8de8e82bdbe6cd9f9c6cb7dfd;hp=54698f96ef06b0736e926291450147ebc488031b;hpb=d598d23a3d8fe6ecccf2f3b25bca8bb78ec3ac4d;p=hengband%2Fhengband.git diff --git a/src/mspells3.c b/src/mspells3.c index 54698f96e..8c64a1b30 100644 --- a/src/mspells3.c +++ b/src/mspells3.c @@ -8,7 +8,7 @@ * are included in all such copies. Other copyrights may also apply. */ -/* Purpose: Mane code */ +/* Purpose: Imitation code */ #include "angband.h" @@ -724,49 +724,14 @@ msg_print(" break; case MS_DISPEL: { - monster_type *m_ptr; - char m_name[80]; + int m_idx; if (!target_set(TARGET_KILL)) return FALSE; - if (!cave[target_row][target_col].m_idx) break; - if (!los(py, px, target_row, target_col)) break; + m_idx = cave[target_row][target_col].m_idx; + if (!m_idx) break; + if (!player_has_los_bold(target_row, target_col)) break; if (!projectable(py, px, target_row, target_col)) break; - m_ptr = &m_list[cave[target_row][target_col].m_idx]; - monster_desc(m_name, m_ptr, 0); - if (m_ptr->invulner) - { - m_ptr->invulner = 0; - if (m_ptr->ml) - { -#ifdef JP - msg_format("%s¤Ï¤â¤¦ÌµÅ¨¤Ç¤Ï¤Ê¤¤¡£", m_name); -#else - msg_format("%^s is no longer invulnerable.", m_name); -#endif - p_ptr->redraw |= (PR_HEALTH); - if (p_ptr->riding == cave[target_row][target_col].m_idx) p_ptr->redraw |= (PR_UHEALTH); - } - m_ptr->energy_need += ENERGY_NEED(); - } - if (m_ptr->fast) - { - m_ptr->fast = 0; -#ifdef JP - if (m_ptr->ml) msg_format("%s¤Ï¤â¤¦²Ã®¤µ¤ì¤Æ¤¤¤Ê¤¤¡£", m_name); -#else - if (m_ptr->ml) msg_format("%^s is no longer fast.", m_name); -#endif - } - if (m_ptr->slow) - { - m_ptr->slow = 0; -#ifdef JP - if (m_ptr->ml) msg_format("%s¤Ï¤â¤¦¸ºÂ®¤µ¤ì¤Æ¤¤¤Ê¤¤¡£", m_name); -#else - if (m_ptr->ml) msg_format("%^s is no longer slow.", m_name); -#endif - } - + dispel_monster_status(m_idx); break; } case MS_ROCKET: @@ -1311,11 +1276,11 @@ else msg_print("Ͷ break; case MS_SLOW: if (!get_aim_dir(&dir)) return FALSE; - slow_monster(dir); + slow_monster(dir, plev); break; case MS_SLEEP: if (!get_aim_dir(&dir)) return FALSE; - sleep_monster(dir); + sleep_monster(dir, plev); break; case MS_SPEED: (void)set_fast(randint1(20 + plev) + plev, FALSE); @@ -1351,10 +1316,10 @@ msg_print("̵ (void)set_invuln(randint1(4) + 4, FALSE); break; case MS_BLINK: - teleport_player(10); + teleport_player(10, 0L); break; case MS_TELEPORT: - teleport_player(plev * 5); + teleport_player(plev * 5, 0L); break; case MS_WORLD: world_player = TRUE; @@ -1398,7 +1363,7 @@ msg_print("̵ { if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flagsr & RFR_RES_ALL)) { - if (is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE; + if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE; #ifdef JP msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", m_name); #else @@ -1409,7 +1374,7 @@ msg_print("̵ } else if (r_ptr->level > randint1(100)) { - if (is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE; + if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE; #ifdef JP msg_format("%s¤Ë¤ÏÂÑÀ­¤¬¤¢¤ë¡ª", m_name); #else @@ -1425,7 +1390,7 @@ msg_format("%s msg_format("You command %s to return.", m_name); #endif - teleport_monster_to(cave[target_row][target_col].m_idx, py, px, 100); + teleport_monster_to(cave[target_row][target_col].m_idx, py, px, 100, TELEPORT_PASSIVE); break; } case MS_TELE_AWAY: @@ -1443,7 +1408,7 @@ msg_format("%s if (!target_set(TARGET_KILL)) return FALSE; target_m_idx = cave[target_row][target_col].m_idx; if (!target_m_idx) break; - if (!los(py, px, target_row, target_col)) break; + if (!player_has_los_bold(target_row, target_col)) break; if (!projectable(py, px, target_row, target_col)) break; m_ptr = &m_list[target_m_idx]; r_ptr = &r_info[m_ptr->r_idx];