* @param typ ¸ú²Ì°ÀID
* @param dam_hp °ÒÎÏ
* @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éMONSTER_TO_PLAYER
+ * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¡¦E¤¥ä¡¼¤Ê¤¡¦ONSTER_TO_PLAYER
* @return ¤Ê¤·
*/
void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type)
* @param typ ¸ú²Ì°ÀID
* @param dam_hp °ÒÎÏ
* @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éMONSTER_TO_PLAYER
+ * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¡¦E¤¥ä¡¼¤Ê¤¡¦ONSTER_TO_PLAYER
* @return ¤Ê¤·
*/
void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type)
* @param typ ¸ú²Ì°ÀID
* @param dam_hp °ÒÎÏ
* @param rad Ⱦ·Â
- * @param breath TRUE¤Ê¤é¤Ð¥Ö¥ì¥¹½èÍý¡¢FALSE¤Ê¤é¤Ð¥Ü¡¼¥ë½èÍý
+ * @param breath TRUE¤Ê¤é¤Ð¥Ö¡¦E¹½èÍ¡¦¡¥ALSE¤Ê¤é¤Ð¥Ü¡¼¡¦EèÍ
* @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éMONSTER_TO_PLAYER
+ * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¡¦E¤¥ä¡¼¤Ê¤¡¦ONSTER_TO_PLAYER
* @return ¤Ê¤·
*/
void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int target_type)
}
}
- /* Cast the spell. */
- switch (thrown_spell)
- {
- case 96 + 0: spell_RF4_SHRIEK(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_SHRIEK */
- case 96 + 1: break; /* RF4_XXX1 */
- case 96 + 2: spell_RF4_DISPEL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_DISPEL */
- case 96 + 3: dam = spell_RF4_ROCKET(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_ROCKET */
- case 96 + 4: dam = spell_RF4_SHOOT(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_SHOOT */
- case 96 + 5: break; /* RF4_XXX2 */
- case 96 + 6: break; /* RF4_XXX3 */
- case 96 + 7: break; /* RF4_XXX4 */
- case 96 + 8: dam = spell_RF4_BREATH(GF_ACID, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_ACID */
- case 96 + 9: dam = spell_RF4_BREATH(GF_ELEC, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_ELEC */
- case 96 + 10: dam = spell_RF4_BREATH(GF_FIRE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_FIRE */
- case 96 + 11: dam = spell_RF4_BREATH(GF_COLD, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_COLD */
- case 96 + 12: dam = spell_RF4_BREATH(GF_POIS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_POIS */
- case 96 + 13: dam = spell_RF4_BREATH(GF_NETHER, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_NETH */
- case 96 + 14: dam = spell_RF4_BREATH(GF_LITE, y_br_lite, x_br_lite, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_LITE */
- case 96 + 15: dam = spell_RF4_BREATH(GF_DARK, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_DARK */
- case 96 + 16: dam = spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_CONF */
- case 96 + 17: dam = spell_RF4_BREATH(GF_SOUND, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_SOUN */
- case 96 + 18: dam = spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_CHAO */
- case 96 + 19: dam = spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_DISE */
- case 96 + 20: dam = spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_NEXU */
- case 96 + 21: dam = spell_RF4_BREATH(GF_TIME, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_TIME */
- case 96 + 22: dam = spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_INER */
- case 96 + 23: dam = spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_GRAV */
- case 96 + 24: dam = spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_SHAR */
- case 96 + 25: dam = spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_PLAS */
- case 96 + 26: dam = spell_RF4_BREATH(GF_FORCE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_WALL */
- case 96 + 27: dam = spell_RF4_BREATH(GF_MANA, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_MANA */
- case 96 + 28: dam = spell_RF4_BA_NUKE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BA_NUKE */
- case 96 + 29: dam = spell_RF4_BREATH(GF_NUKE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_NUKE */
- case 96 + 30: dam = spell_RF4_BA_CHAO(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BA_CHAO */
- case 96 + 31: dam = spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_BR_DISI */
- case 128 + 0: dam = spell_RF5_BA_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_ACID */
- case 128 + 1: dam = spell_RF5_BA_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_ELEC */
- case 128 + 2: dam = spell_RF5_BA_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_FIRE */
- case 128 + 3: dam = spell_RF5_BA_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_COLD */
- case 128 + 4: dam = spell_RF5_BA_POIS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_POIS */
- case 128 + 5: dam = spell_RF5_BA_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_NETH */
- case 128 + 6: dam = spell_RF5_BA_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_WATE */
- case 128 + 7: dam = spell_RF5_BA_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_MANA */
- case 128 + 8: dam = spell_RF5_BA_DARK(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_DARK */
- case 128 + 9: dam = spell_RF5_DRAIN_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_DRAIN_MANA */
- case 128 + 10: dam = spell_RF5_MIND_BLAST(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_MIND_BLAST */
- case 128 + 11: dam = spell_RF5_BRAIN_SMASH(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_MIND_BLAST */
- case 128 + 12: dam = spell_RF5_CAUSE_1(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_CAUSE_1 */
- case 128 + 13: dam = spell_RF5_CAUSE_2(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_CAUSE_2 */
- case 128 + 14: dam = spell_RF5_CAUSE_3(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_CAUSE_3 */
- case 128 + 15: dam = spell_RF5_CAUSE_4(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_CAUSE_4 */
- case 128 + 16: dam = spell_RF5_BO_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_ACID */
- case 128 + 17: dam = spell_RF5_BO_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_ELEC */
- case 128 + 18: dam = spell_RF5_BO_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_FIRE */
- case 128 + 19: dam = spell_RF5_BO_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_COLD */
- case 128 + 20: dam = spell_RF5_BA_LITE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BA_LITE */
- case 128 + 21: dam = spell_RF5_BO_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_NETH */
- case 128 + 22: dam = spell_RF5_BO_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_WATE */
- case 128 + 23: dam = spell_RF5_BO_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_MANA */
- case 128 + 24: dam = spell_RF5_BO_PLAS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_PLAS */
- case 128 + 25: dam = spell_RF5_BO_ICEE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BO_ICEE */
- case 128 + 26: dam = spell_RF5_MISSILE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_MISSILE */
- case 128 + 27: spell_RF5_SCARE(y, x, m_idx); break; /* RF5_SCARE */
- case 128 + 28: spell_RF5_BLIND(y, x, m_idx); break; /* RF5_BLIND */
- case 128 + 29: spell_RF5_CONF(y, x, m_idx); break; /* RF5_CONF */
- case 128 + 30: spell_RF5_SLOW(y, x, m_idx); break; /* RF5_SLOW */
- case 128 + 31: spell_RF5_HOLD(y, x, m_idx); break; /* RF5_HOLD */
- case 160 + 0: spell_RF6_HASTE(m_idx); break; /* RF6_HASTE */
- case 160 + 1: dam = spell_RF6_HAND_DOOM(y, x, m_idx); break; /* RF6_HAND_DOOM */
- case 160 + 2: spell_RF6_HEAL(m_idx); break; /* RF6_HEAL */
- case 160 + 3: spell_RF6_INVULNER(m_idx); break; /* RF6_INVULNER */
- case 160 + 4: spell_RF6_BLINK(m_idx); break; /* RF6_BLINK */
- case 160 + 5: spell_RF6_TPORT(m_idx); break; /* RF6_TPORT */
- case 160 + 6: dam = spell_RF6_WORLD(m_idx); break; /* RF6_WORLD */
-
- /* RF6_SPECIAL */
- case 160 + 7:
- dam = spell_RF6_SPECIAL(y, x, m_idx);
- if (dam < 0) return FALSE;
- break;
-
- case 160 + 8: spell_RF6_TELE_TO(m_idx); break; /* RF6_TELE_TO */
- case 160 + 9: spell_RF6_TELE_AWAY(m_idx); break; /* RF6_TELE_AWAY */
- case 160 + 10: spell_RF6_TELE_LEVEL(m_idx); break; /* RF6_TELE_LEVEL */
- case 160 + 11: spell_RF6_PSY_SPEAR(y, x, m_idx); break; /* RF6_PSY_SPEAR */
- case 160 + 12: spell_RF6_DARKNESS(m_idx); break; /* RF6_DARKNESS */
- case 160 + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */
- case 160 + 14: spell_RF6_FORGET(m_idx); break; /* RF6_FORGET */
- case 160 + 15: spell_RF6_RAISE_DEAD(m_idx); break; /* RF6_RAISE_DEAD */
- case 160 + 16: spell_RF6_S_KIN(y, x, m_idx); break; /* RF6_S_KIN */
- case 160 + 17: spell_RF6_S_CYBER(y, x, m_idx); break; /* RF6_S_CYBER */
- case 160 + 18: spell_RF6_S_MONSTER(y, x, m_idx); break; /* RF6_S_MONSTER */
- case 160 + 19: spell_RF6_S_MONSTERS(y, x, m_idx); break; /* RF6_S_MONSTER */
- case 160 + 20: spell_RF6_S_ANT(y, x, m_idx); break; /* RF6_S_ANT */
- case 160 + 21: spell_RF6_S_SPIDER(y, x, m_idx); break; /* RF6_S_SPIDER */
- case 160 + 22: spell_RF6_S_HOUND(y, x, m_idx); break; /* RF6_S_HOUND */
- case 160 + 23: spell_RF6_S_HYDRA(y, x, m_idx); break; /* RF6_S_HYDRA */
- case 160 + 24: spell_RF6_S_ANGEL(y, x, m_idx); break; /* RF6_S_ANGEL */
- case 160 + 25: spell_RF6_S_DEMON(y, x, m_idx); break; /* RF6_S_DEMON */
- case 160 + 26: spell_RF6_S_UNDEAD(y, x, m_idx); break; /* RF6_S_UNDEAD */
- case 160 + 27: spell_RF6_S_DRAGON(y, x, m_idx); break; /* RF6_S_DRAGON */
- case 160 + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx); break; /* RF6_S_HI_UNDEAD */
- case 160 + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx); break; /* RF6_S_HI_DRAGON */
- case 160 + 30: spell_RF6_S_AMBERITES(y, x, m_idx); break; /* RF6_S_AMBERITES */
- case 160 + 31: spell_RF6_S_UNIQUE(y, x, m_idx); break; /* RF6_S_UNIQUE */
- }
+ /* Cast the spell. */
+ dam = monspell_to_player(thrown_spell, y, x, m_idx);
+ if (dam < 0) return FALSE;
if ((p_ptr->action == ACTION_LEARN) && thrown_spell > 175)
{
can_remember = is_original_ap_and_seen(m_ptr);
- switch (thrown_spell)
- {
- case 96 + 0: spell_RF4_SHRIEK(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_SHRIEK */
- case 96 + 1: return FALSE; /* RF4_XXX1 */
- case 96 + 2: spell_RF4_DISPEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_DISPEL */
- case 96 + 3: dam = spell_RF4_ROCKET(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_ROCKET */
- case 96 + 4: dam = spell_RF4_SHOOT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_SHOOT */
- case 96 + 5: return FALSE; /* RF4_XXX2 */
- case 96 + 6: return FALSE; /* RF4_XXX3 */
- case 96 + 7: return FALSE; /* RF4_XXX4 */
- case 96 + 8: dam = spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_ACID */
- case 96 + 9: dam = spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_ELEC */
- case 96 + 10: dam = spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_FIRE */
- case 96 + 11: dam = spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_COLD */
- case 96 + 12: dam = spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_POIS */
- case 96 + 13: dam = spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_NETH */
- case 96 + 14: dam = spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_LITE */
- case 96 + 15: dam = spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_DARK */
- case 96 + 16: dam = spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_CONF */
- case 96 + 17: dam = spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_SOUN */
- case 96 + 18: dam = spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_CHAO */
- case 96 + 19: dam = spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_DISE */
- case 96 + 20: dam = spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_NEXU */
- case 96 + 21: dam = spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_TIME */
- case 96 + 22: dam = spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_INER */
- case 96 + 23: dam = spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_GRAV */
- case 96 + 24: dam = spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_SHAR */
- case 96 + 25: dam = spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_PLAS */
- case 96 + 26: dam = spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_WALL */
- case 96 + 27: dam = spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_MANA */
- case 96 + 28: dam = spell_RF4_BA_NUKE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BA_NUKE */
- case 96 + 29: dam = spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_NUKE */
- case 96 + 30: dam = spell_RF4_BA_CHAO(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BA_CHAO */
- case 96 + 31: dam = spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_DISI */
- case 128 + 0: dam = spell_RF5_BA_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_ACID */
- case 128 + 1: dam = spell_RF5_BA_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_ELEC */
- case 128 + 2: dam = spell_RF5_BA_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_FIRE */
- case 128 + 3: dam = spell_RF5_BA_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_COLD */
- case 128 + 4: dam = spell_RF5_BA_POIS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_POIS */
- case 128 + 5: dam = spell_RF5_BA_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_NETH */
- case 128 + 6: dam = spell_RF5_BA_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_WATE */
- case 128 + 7: dam = spell_RF5_BA_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_MANA */
- case 128 + 8: dam = spell_RF5_BA_DARK(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_DARK */
- case 128 + 9: dam = spell_RF5_DRAIN_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_DRAIN_MANA */
- case 128 + 10: dam = spell_RF5_MIND_BLAST(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_MIND_BLAST */
- case 128 + 11: dam = spell_RF5_BRAIN_SMASH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BRAIN_SMASH */
- case 128 + 12: dam = spell_RF5_CAUSE_1(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_1 */
- case 128 + 13: dam = spell_RF5_CAUSE_2(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_2 */
- case 128 + 14: dam = spell_RF5_CAUSE_3(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_3 */
- case 128 + 15: dam = spell_RF5_CAUSE_4(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_4 */
- case 128 + 16: dam = spell_RF5_BO_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_ACID */
- case 128 + 17: dam = spell_RF5_BO_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_ELEC */
- case 128 + 18: dam = spell_RF5_BO_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_FIRE */
- case 128 + 19: dam = spell_RF5_BO_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_COLD */
- case 128 + 20: dam = spell_RF5_BA_LITE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_LITE */
- case 128 + 21: dam = spell_RF5_BO_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_NETH */
- case 128 + 22: dam = spell_RF5_BO_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_WATE */
- case 128 + 23: dam = spell_RF5_BO_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_MANA */
- case 128 + 24: dam = spell_RF5_BO_PLAS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_PLAS */
- case 128 + 25: dam = spell_RF5_BO_ICEE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_ICEE */
- case 128 + 26: dam = spell_RF5_MISSILE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_MISSILE */
-
- /* RF5_SCARE */
- case 128+27:
- if (known)
- {
- if (see_either)
- {
- msg_format(_("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£",
- "%^s casts a fearful illusion in front of %s."), m_name, t_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- if (tr_ptr->flags3 & RF3_NO_FEAR)
- {
- if (see_t) msg_format(_("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£",
- "%^s refuses to be frightened."), t_name);
-
- }
- else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
- {
- if (see_t) msg_format(_("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£",
- "%^s refuses to be frightened."), t_name);
- }
- else
- {
- if (set_monster_monfear(t_idx, MON_MONFEAR(t_ptr) + randint0(4) + 4)) fear = TRUE;
- }
-
- wake_up = TRUE;
-
- break;
-
- /* RF5_BLIND */
- case 128+28:
- if (known)
- {
- if (see_either)
- {
- _(msg_format("%s¤Ï¼öʸ¤ò¾§¤¨¤Æ%s¤ÎÌܤò¾Æ¤ÉÕ¤«¤»¤¿¡£", m_name, t_name),
- msg_format("%^s casts a spell, burning %s%s eyes.", m_name, t_name,
- (streq(t_name, "it") ? "s" : "'s")));
-
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- /* Simulate blindness with confusion */
- if (tr_ptr->flags3 & RF3_NO_CONF)
- {
- if (see_t) msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."), t_name);
- }
- else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
- {
- if (see_t) msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."), t_name);
- }
- else
- {
- if (see_t) msg_format(_("%^s¤ÏÌܤ¬¸«¤¨¤Ê¤¯¤Ê¤Ã¤¿¡ª ", "%^s is blinded!"), t_name);
-
- (void)set_monster_confused(t_idx, MON_CONFUSED(t_ptr) + 12 + randint0(4));
- }
-
- wake_up = TRUE;
-
- break;
-
- /* RF5_CONF */
- case 128+29:
- if (known)
- {
- if (see_either)
- {
- msg_format(_("%^s¤¬%s¤ÎÁ°¤Ë¸¸ÏÇŪ¤Ê¸¸¤ò¤Ä¤¯¤ê½Ð¤·¤¿¡£",
- "%^s casts a mesmerizing illusion in front of %s."), m_name, t_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- if (tr_ptr->flags3 & RF3_NO_CONF)
- {
- if (see_t) msg_format(_("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£",
- "%^s disbelieves the feeble spell."), t_name);
- }
- else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
- {
- if (see_t) msg_format(_("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£",
- "%^s disbelieves the feeble spell."), t_name);
- }
- else
- {
- if (see_t) msg_format(_("%^s¤Ïº®Í𤷤¿¤è¤¦¤À¡£",
- "%^s seems confused."), t_name);
-
- (void)set_monster_confused(t_idx, MON_CONFUSED(t_ptr) + 12 + randint0(4));
- }
-
- wake_up = TRUE;
-
- break;
-
- /* RF5_SLOW */
- case 128+30:
- if (known)
- {
- if (see_either)
- {
- _(msg_format("%s¤¬%s¤Î¶ÚÆù¤«¤éÎϤòµÛ¤¤¤È¤Ã¤¿¡£", m_name, t_name),
- msg_format("%^s drains power from %s%s muscles.", m_name, t_name,
- (streq(t_name, "it") ? "s" : "'s")));
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- if (tr_ptr->flags1 & RF1_UNIQUE)
- {
- if (see_t) msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£",
- "%^s is unaffected."), t_name);
- }
- else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
- {
- if (see_t) msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£",
- "%^s is unaffected."), t_name);
- }
- else
- {
- if (set_monster_slow(t_idx, MON_SLOW(t_ptr) + 50))
- {
- if (see_t) msg_format(_("%s¤ÎÆ°¤¤¬ÃÙ¤¯¤Ê¤Ã¤¿¡£",
- "%^s starts moving slower."), t_name);
- }
- }
-
- wake_up = TRUE;
-
- break;
-
- /* RF5_HOLD */
- case 128+31:
- if (known)
- {
- if (see_either)
- {
- msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡£", "%^s stares intently at %s."), m_name, t_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
+ dam = monspell_to_monster(thrown_spell, y, x, m_idx, t_idx);
+ if (dam < 0)return FALSE;
- if ((tr_ptr->flags1 & RF1_UNIQUE) ||
- (tr_ptr->flags3 & RF3_NO_STUN))
- {
- if (see_t) msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."), t_name);
- }
- else if (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
- {
- if (see_t) msg_format(_("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."), t_name);
- }
- else
- {
- if (see_t) msg_format(_("%^s¤ÏËãá㤷¤¿¡ª", "%^s is paralyzed!"), t_name);
-
- (void)set_monster_stunned(t_idx, MON_STUNNED(t_ptr) + randint1(4) + 4);
- }
-
- wake_up = TRUE;
-
- break;
-
-
- /* RF6_HASTE */
- case 160+0:
- if (known)
- {
- if (see_m)
- {
- msg_format(_("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."), m_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- /* Allow quick speed increases to base+10 */
- if (set_monster_fast(m_idx, MON_FAST(m_ptr) + 100))
- {
- if (see_m) msg_format(_("%^s¤ÎÆ°¤¤¬Â®¤¯¤Ê¤Ã¤¿¡£", "%^s starts moving faster."), m_name);
- }
- break;
-
- /* RF6_HAND_DOOM */
- case 160+1:
- if (known)
- {
- if (see_m)
- {
- msg_format(_("%^s¤¬%s¤Ë<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom upon %s!"), m_name, t_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- dam = 20; /* Dummy power */
- breath(y, x, m_idx,GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_MONSTER);
-
- break;
-
- /* RF6_HEAL */
- case 160+2:
- if (known)
- {
- if (see_m)
- {
- msg_format(_("%^s¤Ï¼«Ê¬¤Î½ý¤ËÇ°¤ò½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."), m_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- /* Heal some */
- m_ptr->hp += (rlev * 6);
-
- /* Fully healed */
- if (m_ptr->hp >= m_ptr->maxhp)
- {
- /* Fully healed */
- m_ptr->hp = m_ptr->maxhp;
-
- if (known)
- {
- if (see_m)
- {
- msg_format(_("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", "%^s looks completely healed!"), m_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
- }
-
- /* Partially healed */
- else if (known)
- {
- if (see_m)
- {
- msg_format(_("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s looks healthier."), m_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- /* Redraw (later) if needed */
- if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
- if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
-
- /* Cancel fear */
- if (MON_MONFEAR(m_ptr))
- {
- /* Cancel fear */
- (void)set_monster_monfear(m_idx, 0);
-
- /* Message */
- if (see_m) msg_format(_("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", "%^s recovers %s courage."), m_name);
- }
-
- break;
-
- /* RF6_INVULNER */
- case 160+3:
- if (known)
- {
- if (see_m)
- {
- disturb(1, 1);
- msg_format(_("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a Globe of Invulnerability."), m_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- if (!MON_INVULNER(m_ptr)) (void)set_monster_invulner(m_idx, randint1(4) + 4, FALSE);
- break;
-
- /* RF6_BLINK */
- case 160+4:
- if (teleport_barrier(m_idx))
- {
- if (see_m)
- {
- msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£", "Magic barrier obstructs teleporting of %^s."), m_name);
- }
- }
- else
- {
- if (see_m)
- {
- msg_format(_("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", "%^s blinks away."), m_name);
- }
- teleport_away(m_idx, 10, 0L);
- }
- break;
-
- /* RF6_TPORT */
- case 160+5:
- if (teleport_barrier(m_idx))
- {
- if (see_m)
- {
- msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£", "Magic barrier obstructs teleporting of %^s."), m_name);
- }
- }
- else
- {
- if (see_m)
- {
- msg_format(_("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", "%^s teleports away."), m_name);
- }
- teleport_away_followable(m_idx);
- }
- break;
-
- /* RF6_WORLD */
- case 160+6:
-#if 0
- int who = 0;
- if(m_ptr->r_idx = MON_DIO) who == 1;
- else if(m_ptr->r_idx = MON_WONG) who == 3;
- dam = who;
- if(!process_the_world(randint1(2)+2, who, player_has_los_bold(m_ptr->fy, m_ptr->fx))) return (FALSE);
-#endif
- return FALSE;
+ switch (thrown_spell)
+ {
/* RF6_SPECIAL */
case 160+7:
return (r_ptr->flags2 & RF2_POWERFUL);
}
-void monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE)
+void monster_wakeup(int t_idx)
+{
+ (void)set_monster_csleep(t_idx, 0);
+}
+
+void monster_fear_message(int t_idx)
+{
+ char t_name[80];
+ monster_name(t_idx, t_name);
+ if (see_monster(t_idx))
+ {
+ msg_format(_("%^s¤Ï¶²Éݤ·¤Æƨ¤²½Ð¤·¤¿¡ª", "%^s flees in terror!"), t_name);
+ }
+}
+
+void monspell_message_base(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool msg_flag, int TARGET_TYPE)
{
bool known = monster_near_player(m_idx, t_idx);
bool see_either = see_monster(m_idx) || see_monster(t_idx);
monster_name(m_idx, m_name);
monster_name(t_idx, t_name);
-
if (mon_to_player || (mon_to_mon && known && see_either))
disturb(1, 1);
- if (p_ptr->blind)
+ if (msg_flag)
{
- if (mon_to_player || (mon_to_mon && known && see_either))
+ if (mon_to_player)
msg_format(msg1, m_name);
+ else if (mon_to_mon && known && see_either)
+ msg_format(msg2, m_name);
}
else
{
if (mon_to_player)
{
- msg_format(msg2, m_name);
+ msg_format(msg3, m_name);
}
else if (mon_to_mon && known && see_either)
{
- msg_format(msg3, m_name, t_name);
+ msg_format(msg4, m_name, t_name);
}
}
mon_fight = TRUE;
}
+void monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE)
+{
+ monspell_message_base(m_idx, t_idx, msg1, msg1, msg2, msg3, p_ptr->blind, TARGET_TYPE);
+}
+
+void simple_monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, int TARGET_TYPE)
+{
+ monspell_message_base(m_idx, t_idx, msg1, msg1, msg2, msg2, p_ptr->blind, TARGET_TYPE);
+}
+
void spell_RF4_SHRIEK(int m_idx, int t_idx, int TARGET_TYPE)
{
- bool known = monster_near_player(m_idx, t_idx);
- bool see_m = see_monster(m_idx);
- char m_name[80], t_name[80];
- monster_name(m_idx, m_name);
- monster_name(t_idx, t_name);
+ simple_monspell_message(m_idx, t_idx,
+ _("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."),
+ _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶«¤ó¤À¡£", "%^s shrieks at %s."),
+ TARGET_TYPE);
- if (TARGET_TYPE == MONSTER_TO_MONSTER)
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- if (known)
- {
- if (see_m)
- {
- msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶«¤ó¤À¡£", "%^s shrieks at %s."), m_name, t_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
- (void)set_monster_csleep(t_idx, 0);
+ aggravate_monsters(m_idx);
}
- else if (TARGET_TYPE == MONSTER_TO_PLAYER)
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
{
- disturb(1, 1);
- msg_format(_("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."), m_name);
- aggravate_monsters(m_idx);
+ monster_wakeup(t_idx);
}
}
monster_name(m_idx, m_name);
monster_name(t_idx, t_name);
+ monspell_message(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
+ _("%^s¤¬ËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic."),
+ _("%^s¤¬%s¤ËÂФ·¤ÆËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic at %s."),
+ TARGET_TYPE);
- if (TARGET_TYPE == MONSTER_TO_MONSTER)
- {
- if (known)
- {
- if (see_m)
- {
- msg_format(_("%^s¤¬%s¤ËÂФ·¤ÆËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£",
- "%^s invokes a dispel magic at %s."), m_name, t_name);
- }
- else
- {
- mon_fight = TRUE;
- }
- }
-
- if (t_idx == p_ptr->riding) dispel_player();
- dispel_monster_status(t_idx);
- }
- else if (TARGET_TYPE == MONSTER_TO_PLAYER)
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- disturb(1, 1);
-
- if (p_ptr->blind)
- msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
- else
- msg_format(_("%^s¤¬ËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic."), m_name);
-
dispel_player();
if (p_ptr->riding) dispel_monster_status(p_ptr->riding);
learn_spell(MS_DISPEL);
}
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
+ {
+ if (t_idx == p_ptr->riding) dispel_player();
+ dispel_monster_status(t_idx);
+ }
}
int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
monster_name(m_idx, m_name);
monster_name(t_idx, t_name);
-
if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
disturb(1, 1);
return dam;
}
-void spell_RF5_SCARE(int y, int x, int m_idx)
+void spell_badstatus_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool resist, bool saving_throw, int TARGET_TYPE)
{
- int rlev = monster_level_idx(m_idx);
- char m_name[80];
+ bool see_either = see_monster(m_idx) || see_monster(t_idx);
+ bool see_t = see_monster(t_idx);
+ bool known = monster_near_player(m_idx, t_idx);
+ char m_name[80], t_name[80];
monster_name(m_idx, m_name);
- disturb(1, 1);
-
-
- if (p_ptr->blind)
- msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢¶²¤í¤·¤²¤Ê²»¤¬Ê¹¤³¤¨¤¿¡£", "%^s mumbles, and you hear scary noises."), m_name);
- else
- msg_format(_("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s casts a fearful illusion."), m_name);
+ monster_name(t_idx, t_name);
- if (p_ptr->resist_fear)
- {
- msg_print(_("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."));
- }
- else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- msg_print(_("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."));
+ disturb(1, 1);
+ if (p_ptr->blind)
+ msg_format(msg1, m_name);
+ else
+ msg_format(msg2, m_name);
+
+ if (resist)
+ {
+ msg_print(msg3);
+ }
+ else if (saving_throw)
+ {
+ msg_print(msg4);
+ }
}
- else
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
{
- (void)set_afraid(p_ptr->afraid + randint0(4) + 4);
+ if (known)
+ {
+ if (see_either)
+ {
+ msg_format(msg1, m_name, t_name);
+ }
+ else
+ {
+ mon_fight = TRUE;
+ }
+ }
+
+ if (resist)
+ {
+ if (see_t) msg_format(msg2, t_name);
+ }
+ else if (saving_throw)
+ {
+ if (see_t) msg_format(msg3, t_name);
+ }
+ else
+ {
+ if (see_t) msg_format(msg4, t_name);
+ }
+ monster_wakeup(t_idx);
}
- learn_spell(MS_SCARE);
- update_smart_learn(m_idx, DRS_FEAR);
}
-void spell_RF5_BLIND(int y, int x, int m_idx)
+void spell_RF5_SCARE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
{
+ monster_type *t_ptr = &m_list[t_idx];
+ monster_race *tr_ptr = &r_info[t_ptr->r_idx];
int rlev = monster_level_idx(m_idx);
- char m_name[80];
- monster_name(m_idx, m_name);
-
- disturb(1, 1);
-
- if (p_ptr->blind)
- msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
- else
- msg_format(_("%^s¤¬¼öʸ¤ò¾§¤¨¤Æ¤¢¤Ê¤¿¤ÎÌܤò¤¯¤é¤Þ¤·¤¿¡ª",
- "%^s casts a spell, burning your eyes!"), m_name);
+ bool resist, saving_throw;
- if (p_ptr->resist_blind)
- {
- msg_print(_("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"));
- }
- else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- msg_print(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
+ resist = p_ptr->resist_fear;
+ saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢¶²¤í¤·¤²¤Ê²»¤¬Ê¹¤³¤¨¤¿¡£", "%^s mumbles, and you hear scary noises."),
+ _("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s casts a fearful illusion."),
+ _("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."),
+ _("¤·¤«¤·¶²Éݤ˿¯¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You refuse to be frightened."),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ (void)set_afraid(p_ptr->afraid + randint0(4) + 4);
+ }
+ learn_spell(MS_SCARE);
+ update_smart_learn(m_idx, DRS_FEAR);
}
- else
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
{
- (void)set_blind(12 + randint0(4));
+ resist = tr_ptr->flags3 & RF3_NO_FEAR;
+ saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
+
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤¬¶²¤í¤·¤²¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s casts a fearful illusion in front of %s."),
+ _("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£", "%^s refuses to be frightened."),
+ _("%^s¤Ï¶²Éݤò´¶¤¸¤Ê¤¤¡£", "%^s refuses to be frightened."),
+ _("%^s¤Ï¶²Éݤ·¤Æƨ¤²½Ð¤·¤¿¡ª", "%^s flees in terror!"),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ set_monster_monfear(t_idx, MON_MONFEAR(t_ptr) + randint0(4) + 4);
+ }
}
- learn_spell(MS_BLIND);
- update_smart_learn(m_idx, DRS_BLIND);
}
-void spell_RF5_CONF(int y, int x, int m_idx)
+void spell_RF5_BLIND(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
{
+ monster_type *t_ptr = &m_list[t_idx];
+ monster_race *tr_ptr = &r_info[t_ptr->r_idx];
int rlev = monster_level_idx(m_idx);
- char m_name[80];
- monster_name(m_idx, m_name);
-
- disturb(1, 1);
-
- if (p_ptr->blind)
- msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢Æ¬¤òǺ¤Þ¤¹²»¤¬¤·¤¿¡£",
- "%^s mumbles, and you hear puzzling noises."), m_name);
- else
- msg_format(_("%^s¤¬Í¶ÏÇŪ¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£",
- "%^s creates a mesmerising illusion."), m_name);
+ bool resist, saving_throw;
- if (p_ptr->resist_conf)
- {
- msg_print(_("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."));
- }
- else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- msg_print(_("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."));
+ resist = p_ptr->resist_blind;
+ saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+ _("%^s¤¬¼öʸ¤ò¾§¤¨¤Æ¤¢¤Ê¤¿¤ÎÌܤò¤¯¤é¤Þ¤·¤¿¡ª", "%^s casts a spell, burning your eyes!"),
+ _("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"),
+ _("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ (void)set_blind(12 + randint0(4));
+ }
+ learn_spell(MS_BLIND);
+ update_smart_learn(m_idx, DRS_BLIND);
}
- else
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
{
- (void)set_confused(p_ptr->confused + randint0(4) + 4);
+ cptr msg1;
+ char t_name[80];
+ monster_name(t_idx, t_name);
+
+ if (streq(t_name, "it"))
+ {
+ msg1 = _("%s¤Ï¼öʸ¤ò¾§¤¨¤Æ%s¤ÎÌܤò¾Æ¤ÉÕ¤«¤»¤¿¡£", "%^s casts a spell, burning %ss eyes.");
+ }
+ else
+ {
+ msg1 = _("%s¤Ï¼öʸ¤ò¾§¤¨¤Æ%s¤ÎÌܤò¾Æ¤ÉÕ¤«¤»¤¿¡£", "%^s casts a spell, burning %s's eyes.");
+ }
+
+ resist = tr_ptr->flags3 & RF3_NO_CONF;
+ saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
+
+ spell_badstatus_message(m_idx, t_idx,
+ msg1,
+ _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
+ _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
+ _("%^s¤ÏÌܤ¬¸«¤¨¤Ê¤¯¤Ê¤Ã¤¿¡ª ", "%^s is blinded!"),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ (void)set_monster_confused(t_idx, MON_CONFUSED(t_ptr) + 12 + randint0(4));
+ }
}
- learn_spell(MS_CONF);
- update_smart_learn(m_idx, DRS_CONF);
}
-void spell_RF5_SLOW(int y, int x, int m_idx)
+void spell_RF5_CONF(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
{
+ monster_type *t_ptr = &m_list[t_idx];
+ monster_race *tr_ptr = &r_info[t_ptr->r_idx];
int rlev = monster_level_idx(m_idx);
- char m_name[80];
- monster_name(m_idx, m_name);
+ bool resist, saving_throw;
- disturb(1, 1);
-
- msg_format(_("%^s¤¬¤¢¤Ê¤¿¤Î¶ÚÎϤòµÛ¤¤¼è¤í¤¦¤È¤·¤¿¡ª",
- "%^s drains power from your muscles!"), m_name);
-
- if (p_ptr->free_act)
- {
- msg_print(_("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"));
- }
- else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- msg_print(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
+ resist = p_ptr->resist_conf;
+ saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢Æ¬¤òǺ¤Þ¤¹²»¤¬¤·¤¿¡£", "%^s mumbles, and you hear puzzling noises."),
+ _("%^s¤¬Í¶ÏÇŪ¤Ê¸¸³Ð¤òºî¤ê½Ð¤·¤¿¡£", "%^s creates a mesmerising illusion."),
+ _("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."),
+ _("¤·¤«¤·¸¸³Ð¤Ë¤Ï¤À¤Þ¤µ¤ì¤Ê¤«¤Ã¤¿¡£", "You disbelieve the feeble spell."),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ (void)set_confused(p_ptr->confused + randint0(4) + 4);
+ }
+ learn_spell(MS_CONF);
+ update_smart_learn(m_idx, DRS_CONF);
}
- else
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
{
- (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
+ resist = tr_ptr->flags3 & RF3_NO_CONF;
+ saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
+
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤¬%s¤ÎÁ°¤Ë¸¸ÏÇŪ¤Ê¸¸¤ò¤Ä¤¯¤ê½Ð¤·¤¿¡£", "%^s casts a mesmerizing illusion in front of %s."),
+ _("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£", "%^s disbelieves the feeble spell."),
+ _("%^s¤ÏÏǤ蘆¤ì¤Ê¤«¤Ã¤¿¡£", "%^s disbelieves the feeble spell."),
+ _("%^s¤Ïº®Í𤷤¿¤è¤¦¤À¡£", "%^s seems confused."),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ (void)set_monster_confused(t_idx, MON_CONFUSED(t_ptr) + 12 + randint0(4));
+ }
}
- learn_spell(MS_SLOW);
- update_smart_learn(m_idx, DRS_FREE);
}
-void spell_RF5_HOLD(int y, int x, int m_idx)
+
+void spell_RF5_SLOW(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
{
+ monster_type *t_ptr = &m_list[t_idx];
+ monster_race *tr_ptr = &r_info[t_ptr->r_idx];
int rlev = monster_level_idx(m_idx);
- char m_name[80];
- monster_name(m_idx, m_name);
- disturb(1, 1);
+ bool resist, saving_throw;
- if (p_ptr->blind)
- msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
- else
- msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÌܤò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡ª", "%^s stares deep into your eyes!"), m_name);
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
+ {
+ resist = p_ptr->resist_conf;
+ saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤¬¤¢¤Ê¤¿¤Î¶ÚÎϤòµÛ¤¤¼è¤í¤¦¤È¤·¤¿¡ª", "%^s drains power from your muscles!"),
+ _("%^s¤¬¤¢¤Ê¤¿¤Î¶ÚÎϤòµÛ¤¤¼è¤í¤¦¤È¤·¤¿¡ª", "%^s drains power from your muscles!"),
+ _("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"),
+ _("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"),
+ resist, saving_throw, TARGET_TYPE);
- if (p_ptr->free_act)
+ if (!resist && !saving_throw)
+ {
+ (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
+ }
+ learn_spell(MS_SLOW);
+ update_smart_learn(m_idx, DRS_FREE);
+ }
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
{
- msg_print(_("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"));
+ cptr msg1;
+ char t_name[80];
+ monster_name(t_idx, t_name);
+
+ if (streq(t_name, "it"))
+ {
+ msg1 = _("%s¤¬%s¤Î¶ÚÆù¤«¤éÎϤòµÛ¤¤¤È¤Ã¤¿¡£", "%^s drains power from %ss muscles.");
+ }
+ else
+ {
+ msg1 = _("%s¤¬%s¤Î¶ÚÆù¤«¤éÎϤòµÛ¤¤¤È¤Ã¤¿¡£", "%^s drains power from %s's muscles.");
+ }
+
+ resist = tr_ptr->flags1 & RF1_UNIQUE;
+ saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
+
+ spell_badstatus_message(m_idx, t_idx,
+ msg1,
+ _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
+ _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
+ _("%s¤ÎÆ°¤¤¬ÃÙ¤¯¤Ê¤Ã¤¿¡£", "%^s starts moving slower."),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ set_monster_slow(t_idx, MON_SLOW(t_ptr) + 50);
+ }
}
- else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
+}
+
+void spell_RF5_HOLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
+{
+ monster_type *t_ptr = &m_list[t_idx];
+ monster_race *tr_ptr = &r_info[t_ptr->r_idx];
+ int rlev = monster_level_idx(m_idx);
+ bool resist, saving_throw;
+
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- msg_format(_("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"));
+ resist = p_ptr->free_act;
+ saving_throw = (randint0(100 + rlev / 2) < p_ptr->skill_sav);
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+ _("%^s¤¬¤¢¤Ê¤¿¤ÎÌܤò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡ª", "%^s stares deep into your eyes!"),
+ _("¤·¤«¤·¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", "You are unaffected!"),
+ _("¤·¤«¤·¸úÎϤòÄ·¤ÍÊÖ¤·¤¿¡ª", "You resist the effects!"),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
+ }
+ learn_spell(MS_SLEEP);
+ update_smart_learn(m_idx, DRS_FREE);
}
- else
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
{
- (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
+ resist = (tr_ptr->flags1 & RF1_UNIQUE) || (tr_ptr->flags3 & RF3_NO_STUN);
+ saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
+
+ spell_badstatus_message(m_idx, t_idx,
+ _("%^s¤Ï%s¤ò¤¸¤Ã¤È¸«¤Ä¤á¤¿¡£", "%^s stares intently at %s."),
+ _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
+ _("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", "%^s is unaffected."),
+ _("%^s¤ÏËãá㤷¤¿¡ª", "%^s is paralyzed!"),
+ resist, saving_throw, TARGET_TYPE);
+
+ if (!resist && !saving_throw)
+ {
+ (void)set_monster_stunned(t_idx, MON_STUNNED(t_ptr) + randint1(4) + 4);
+ }
}
- learn_spell(MS_SLEEP);
- update_smart_learn(m_idx, DRS_FREE);
}
-void spell_RF6_HASTE(int m_idx)
+void spell_RF6_HASTE(int m_idx, int t_idx, int TARGET_TYPE)
{
+ bool see_m = see_monster(m_idx);
monster_type *m_ptr = &m_list[m_idx];
char m_name[80];
monster_name(m_idx, m_name);
- disturb(1, 1);
- if (p_ptr->blind)
- {
- msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
- }
- else
- {
- msg_format(_("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."), m_name);
- }
+
+ monspell_message_base(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+ _("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."),
+ _("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."),
+ _("%^s¤¬¼«Ê¬¤ÎÂΤËÇ°¤òÁ÷¤Ã¤¿¡£", "%^s concentrates on %s body."),
+ p_ptr->blind, TARGET_TYPE);
/* Allow quick speed increases to base+10 */
if (set_monster_fast(m_idx, MON_FAST(m_ptr) + 100))
{
- msg_format(_("%^s¤ÎÆ°¤¤¬Â®¤¯¤Ê¤Ã¤¿¡£", "%^s starts moving faster."), m_name);
+ if (TARGET_TYPE == MONSTER_TO_PLAYER ||
+ (TARGET_TYPE == MONSTER_TO_MONSTER && see_m))
+ msg_format(_("%^s¤ÎÆ°¤¤¬Â®¤¯¤Ê¤Ã¤¿¡£", "%^s starts moving faster."), m_name);
}
}
-int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
+int spell_RF6_HAND_DOOM(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
{
- monster_type *m_ptr = &m_list[m_idx];
int dam;
- char m_name[80];
- monster_name(m_idx, m_name);
- disturb(1, 1);
- msg_format(_("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"), m_name);
- dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
- breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
+
+ simple_monspell_message(m_idx, t_idx,
+ _("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"),
+ _("%^s¤¬%s¤Ë<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom upon %s!"),
+ TARGET_TYPE);
+
+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
+ {
+ dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
+ breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
+ }
+ else if (TARGET_TYPE == MONSTER_TO_MONSTER)
+ {
+ dam = 20; /* Dummy power */
+ breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_MONSTER);
+ }
return dam;
}
-void spell_RF6_HEAL(int m_idx)
+void spell_RF6_HEAL(int m_idx, int t_idx, int TARGET_TYPE)
{
monster_type *m_ptr = &m_list[m_idx];
int rlev = monster_level_idx(m_idx);
disturb(1, 1);
/* Message */
- if (p_ptr->blind)
- msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
- else
- msg_format(_("%^s¤¬¼«Ê¬¤Î½ý¤Ë½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."), m_name);
+ monspell_message_base(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+ _("%^s¤Ï¼«Ê¬¤Î½ý¤ËÇ°¤ò½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."),
+ _("%^s¤¬¼«Ê¬¤Î½ý¤Ë½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."),
+ _("%^s¤Ï¼«Ê¬¤Î½ý¤ËÇ°¤ò½¸Ã椷¤¿¡£", "%^s concentrates on %s wounds."),
+ p_ptr->blind, TARGET_TYPE);
/* Heal some */
m_ptr->hp += (rlev * 6);
m_ptr->hp = m_ptr->maxhp;
/* Message */
- if (seen)
- msg_format(_("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", "%^s looks completely healed!"), m_name);
- else
- msg_format(_("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¤è¤¦¤À¡ª", "%^s sounds completely healed!"), m_name);
+ monspell_message_base(m_idx, t_idx,
+ _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¤è¤¦¤À¡ª", "%^s sounds completely healed!"),
+ _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¤è¤¦¤À¡ª", "%^s sounds completely healed!"),
+ _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", "%^s looks completely healed!"),
+ _("%^s¤Ï´°Á´¤Ë¼£¤Ã¤¿¡ª", "%^s looks completely healed!"),
+ !seen, TARGET_TYPE);
}
/* Partially healed */
else
{
/* Message */
- if (seen)
- msg_format(_("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s looks healthier."), m_name);
- else
- msg_format(_("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s sounds healthier."), m_name);
+ monspell_message_base(m_idx, t_idx,
+ _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s sounds healthier."),
+ _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s sounds healthier."),
+ _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s looks healthier."),
+ _("%^s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", "%^s looks healthier."),
+ !seen, TARGET_TYPE);
}
/* Redraw (later) if needed */
(void)set_monster_monfear(m_idx, 0);
/* Message */
- msg_format(_("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", "%^s recovers %s courage."), m_name);
+ if (see_monster(m_idx))
+ msg_format(_("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", "%^s recovers %s courage."), m_name);
}
}
-void spell_RF6_INVULNER(int m_idx)
+void spell_RF6_INVULNER(int m_idx, int t_idx, int TARGET_TYPE)
{
monster_type *m_ptr = &m_list[m_idx];
bool seen = (!p_ptr->blind && m_ptr->ml);
- char m_name[80];
- monster_name(m_idx, m_name);
- disturb(1, 1);
/* Message */
- if (!seen)
- msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
- else
- msg_format(_("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a Globe of Invulnerability."), m_name);
+ monspell_message_base(m_idx, t_idx,
+ _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
+ _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
+ _("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a Globe of Invulnerability."),
+ _("%s¤Ï̵½ý¤Îµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a Globe of Invulnerability."),
+ !seen, TARGET_TYPE);
if (!MON_INVULNER(m_ptr)) (void)set_monster_invulner(m_idx, randint1(4) + 4, FALSE);
}
-void spell_RF6_BLINK(int m_idx)
+void spell_RF6_BLINK(int m_idx, int TARGET_TYPE)
{
char m_name[80];
monster_name(m_idx, m_name);
+
+ if (TARGET_TYPE==MONSTER_TO_PLAYER)
+ disturb(1, 1);
- disturb(1, 1);
if (teleport_barrier(m_idx))
{
- msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
- "Magic barrier obstructs teleporting of %^s."), m_name);
+ if(see_monster(m_idx))
+ msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
+ "Magic barrier obstructs teleporting of %^s."), m_name);
}
else
{
- msg_format(_("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", "%^s blinks away."), m_name);
+ if(see_monster(m_idx))
+ msg_format(_("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", "%^s blinks away."), m_name);
+
teleport_away(m_idx, 10, 0L);
- p_ptr->update |= (PU_MONSTERS);
+
+ if (TARGET_TYPE==MONSTER_TO_PLAYER)
+ p_ptr->update |= (PU_MONSTERS);
}
}
-void spell_RF6_TPORT(int m_idx)
+void spell_RF6_TPORT(int m_idx, int TARGET_TYPE)
{
char m_name[80];
monster_name(m_idx, m_name);
-
- disturb(1, 1);
+
+ if (TARGET_TYPE==MONSTER_TO_PLAYER)
+ disturb(1, 1);
if (teleport_barrier(m_idx))
{
- msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
- "Magic barrier obstructs teleporting of %^s."), m_name);
+ if(see_monster(m_idx))
+ msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
+ "Magic barrier obstructs teleporting of %^s."), m_name);
}
else
{
- msg_format(_("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", "%^s teleports away."), m_name);
+ if(see_monster(m_idx))
+ msg_format(_("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", "%^s teleports away."), m_name);
+
teleport_away_followable(m_idx);
}
}
}
}
+
+int monspell_to_player(int SPELL_NUM, int y, int x, int m_idx)
+{
+ switch (SPELL_NUM)
+ {
+ case 96 + 0: spell_RF4_SHRIEK(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_SHRIEK */
+ case 96 + 1: break; /* RF4_XXX1 */
+ case 96 + 2: spell_RF4_DISPEL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF4_DISPEL */
+ case 96 + 3: return spell_RF4_ROCKET(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_ROCKET */
+ case 96 + 4: return spell_RF4_SHOOT(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_SHOOT */
+ case 96 + 5: break; /* RF4_XXX2 */
+ case 96 + 6: break; /* RF4_XXX3 */
+ case 96 + 7: break; /* RF4_XXX4 */
+ case 96 + 8: return spell_RF4_BREATH(GF_ACID, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ACID */
+ case 96 + 9: return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_ELEC */
+ case 96 + 10: return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_FIRE */
+ case 96 + 11: return spell_RF4_BREATH(GF_COLD, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_COLD */
+ case 96 + 12: return spell_RF4_BREATH(GF_POIS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_POIS */
+ case 96 + 13: return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NETH */
+ case 96 + 14: return spell_RF4_BREATH(GF_LITE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_LITE */
+ case 96 + 15: return spell_RF4_BREATH(GF_DARK, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DARK */
+ case 96 + 16: return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_CONF */
+ case 96 + 17: return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_SOUN */
+ case 96 + 18: return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_CHAO */
+ case 96 + 19: return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DISE */
+ case 96 + 20: return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NEXU */
+ case 96 + 21: return spell_RF4_BREATH(GF_TIME, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_TIME */
+ case 96 + 22: return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_INER */
+ case 96 + 23: return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_GRAV */
+ case 96 + 24: return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_SHAR */
+ case 96 + 25: return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_PLAS */
+ case 96 + 26: return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_WALL */
+ case 96 + 27: return spell_RF4_BREATH(GF_MANA, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_MANA */
+ case 96 + 28: return spell_RF4_BA_NUKE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_NUKE */
+ case 96 + 29: return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_NUKE */
+ case 96 + 30: return spell_RF4_BA_CHAO(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BA_CHAO */
+ case 96 + 31: return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF4_BR_DISI */
+ case 128 + 0: return spell_RF5_BA_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ACID */
+ case 128 + 1: return spell_RF5_BA_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_ELEC */
+ case 128 + 2: return spell_RF5_BA_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_FIRE */
+ case 128 + 3: return spell_RF5_BA_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_COLD */
+ case 128 + 4: return spell_RF5_BA_POIS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_POIS */
+ case 128 + 5: return spell_RF5_BA_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_NETH */
+ case 128 + 6: return spell_RF5_BA_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_WATE */
+ case 128 + 7: return spell_RF5_BA_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_MANA */
+ case 128 + 8: return spell_RF5_BA_DARK(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_DARK */
+ case 128 + 9: return spell_RF5_DRAIN_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_DRAIN_MANA */
+ case 128 + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MIND_BLAST */
+ case 128 + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MIND_BLAST */
+ case 128 + 12: return spell_RF5_CAUSE_1(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_1 */
+ case 128 + 13: return spell_RF5_CAUSE_2(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_2 */
+ case 128 + 14: return spell_RF5_CAUSE_3(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_3 */
+ case 128 + 15: return spell_RF5_CAUSE_4(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_CAUSE_4 */
+ case 128 + 16: return spell_RF5_BO_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ACID */
+ case 128 + 17: return spell_RF5_BO_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ELEC */
+ case 128 + 18: return spell_RF5_BO_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_FIRE */
+ case 128 + 19: return spell_RF5_BO_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_COLD */
+ case 128 + 20: return spell_RF5_BA_LITE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BA_LITE */
+ case 128 + 21: return spell_RF5_BO_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_NETH */
+ case 128 + 22: return spell_RF5_BO_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_WATE */
+ case 128 + 23: return spell_RF5_BO_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_MANA */
+ case 128 + 24: return spell_RF5_BO_PLAS(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_PLAS */
+ case 128 + 25: return spell_RF5_BO_ICEE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_BO_ICEE */
+ case 128 + 26: return spell_RF5_MISSILE(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF5_MISSILE */
+ case 128 + 27: spell_RF5_SCARE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_SCARE */
+ case 128 + 28: spell_RF5_BLIND(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_BLIND */
+ case 128 + 29: spell_RF5_CONF(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_CONF */
+ case 128 + 30: spell_RF5_SLOW(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_SLOW */
+ case 128 + 31: spell_RF5_HOLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF5_HOLD */
+ case 160 + 0: spell_RF6_HASTE(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_HASTE */
+ case 160 + 1: return spell_RF6_HAND_DOOM(y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_HAND_DOOM */
+ case 160 + 2: spell_RF6_HEAL(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_HEAL */
+ case 160 + 3: spell_RF6_INVULNER(m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_INVULNER */
+ case 160 + 4: spell_RF6_BLINK(m_idx, MONSTER_TO_PLAYER); break; /* RF6_BLINK */
+ case 160 + 5: spell_RF6_TPORT(m_idx, MONSTER_TO_PLAYER); break; /* RF6_TPORT */
+ case 160 + 6: return spell_RF6_WORLD(m_idx); break; /* RF6_WORLD */
+ case 160 + 7: return spell_RF6_SPECIAL(y, x, m_idx); /* RF6_SPECIAL */
+ case 160 + 8: spell_RF6_TELE_TO(m_idx); break; /* RF6_TELE_TO */
+ case 160 + 9: spell_RF6_TELE_AWAY(m_idx); break; /* RF6_TELE_AWAY */
+ case 160 + 10: spell_RF6_TELE_LEVEL(m_idx); break; /* RF6_TELE_LEVEL */
+ case 160 + 11: spell_RF6_PSY_SPEAR(y, x, m_idx); break; /* RF6_PSY_SPEAR */
+ case 160 + 12: spell_RF6_DARKNESS(m_idx); break; /* RF6_DARKNESS */
+ case 160 + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */
+ case 160 + 14: spell_RF6_FORGET(m_idx); break; /* RF6_FORGET */
+ case 160 + 15: spell_RF6_RAISE_DEAD(m_idx); break; /* RF6_RAISE_DEAD */
+ case 160 + 16: spell_RF6_S_KIN(y, x, m_idx); break; /* RF6_S_KIN */
+ case 160 + 17: spell_RF6_S_CYBER(y, x, m_idx); break; /* RF6_S_CYBER */
+ case 160 + 18: spell_RF6_S_MONSTER(y, x, m_idx); break; /* RF6_S_MONSTER */
+ case 160 + 19: spell_RF6_S_MONSTERS(y, x, m_idx); break; /* RF6_S_MONSTER */
+ case 160 + 20: spell_RF6_S_ANT(y, x, m_idx); break; /* RF6_S_ANT */
+ case 160 + 21: spell_RF6_S_SPIDER(y, x, m_idx); break; /* RF6_S_SPIDER */
+ case 160 + 22: spell_RF6_S_HOUND(y, x, m_idx); break; /* RF6_S_HOUND */
+ case 160 + 23: spell_RF6_S_HYDRA(y, x, m_idx); break; /* RF6_S_HYDRA */
+ case 160 + 24: spell_RF6_S_ANGEL(y, x, m_idx); break; /* RF6_S_ANGEL */
+ case 160 + 25: spell_RF6_S_DEMON(y, x, m_idx); break; /* RF6_S_DEMON */
+ case 160 + 26: spell_RF6_S_UNDEAD(y, x, m_idx); break; /* RF6_S_UNDEAD */
+ case 160 + 27: spell_RF6_S_DRAGON(y, x, m_idx); break; /* RF6_S_DRAGON */
+ case 160 + 28: spell_RF6_S_HI_UNDEAD(y, x, m_idx); break; /* RF6_S_HI_UNDEAD */
+ case 160 + 29: spell_RF6_S_HI_DRAGON(y, x, m_idx); break; /* RF6_S_HI_DRAGON */
+ case 160 + 30: spell_RF6_S_AMBERITES(y, x, m_idx); break; /* RF6_S_AMBERITES */
+ case 160 + 31: spell_RF6_S_UNIQUE(y, x, m_idx); break; /* RF6_S_UNIQUE */
+ }
+ return 0;
+}
+
+int monspell_to_monster(int SPELL_NUM, int y, int x, int m_idx, int t_idx)
+{
+ switch (SPELL_NUM)
+ {
+ case 96 + 0: spell_RF4_SHRIEK(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_SHRIEK */
+ case 96 + 1: return -1; /* RF4_XXX1 */
+ case 96 + 2: spell_RF4_DISPEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_DISPEL */
+ case 96 + 3: return spell_RF4_ROCKET(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_ROCKET */
+ case 96 + 4: return spell_RF4_SHOOT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_SHOOT */
+ case 96 + 5: return -1; /* RF4_XXX2 */
+ case 96 + 6: return -1; /* RF4_XXX3 */
+ case 96 + 7: return -1; /* RF4_XXX4 */
+ case 96 + 8: return spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_ACID */
+ case 96 + 9: return spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_ELEC */
+ case 96 + 10: return spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_FIRE */
+ case 96 + 11: return spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_COLD */
+ case 96 + 12: return spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_POIS */
+ case 96 + 13: return spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NETH */
+ case 96 + 14: return spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_LITE */
+ case 96 + 15: return spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DARK */
+ case 96 + 16: return spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_CONF */
+ case 96 + 17: return spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_SOUN */
+ case 96 + 18: return spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_CHAO */
+ case 96 + 19: return spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DISE */
+ case 96 + 20: return spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NEXU */
+ case 96 + 21: return spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_TIME */
+ case 96 + 22: return spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_INER */
+ case 96 + 23: return spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_GRAV */
+ case 96 + 24: return spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_SHAR */
+ case 96 + 25: return spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_PLAS */
+ case 96 + 26: return spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_WALL */
+ case 96 + 27: return spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_MANA */
+ case 96 + 28: return spell_RF4_BA_NUKE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BA_NUKE */
+ case 96 + 29: return spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_NUKE */
+ case 96 + 30: return spell_RF4_BA_CHAO(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BA_CHAO */
+ case 96 + 31: return spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF4_BR_DISI */
+ case 128 + 0: return spell_RF5_BA_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_ACID */
+ case 128 + 1: return spell_RF5_BA_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_ELEC */
+ case 128 + 2: return spell_RF5_BA_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_FIRE */
+ case 128 + 3: return spell_RF5_BA_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_COLD */
+ case 128 + 4: return spell_RF5_BA_POIS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_POIS */
+ case 128 + 5: return spell_RF5_BA_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_NETH */
+ case 128 + 6: return spell_RF5_BA_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_WATE */
+ case 128 + 7: return spell_RF5_BA_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_MANA */
+ case 128 + 8: return spell_RF5_BA_DARK(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_DARK */
+ case 128 + 9: return spell_RF5_DRAIN_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_DRAIN_MANA */
+ case 128 + 10: return spell_RF5_MIND_BLAST(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_MIND_BLAST */
+ case 128 + 11: return spell_RF5_BRAIN_SMASH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BRAIN_SMASH */
+ case 128 + 12: return spell_RF5_CAUSE_1(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_1 */
+ case 128 + 13: return spell_RF5_CAUSE_2(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_2 */
+ case 128 + 14: return spell_RF5_CAUSE_3(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_3 */
+ case 128 + 15: return spell_RF5_CAUSE_4(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_CAUSE_4 */
+ case 128 + 16: return spell_RF5_BO_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ACID */
+ case 128 + 17: return spell_RF5_BO_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ELEC */
+ case 128 + 18: return spell_RF5_BO_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_FIRE */
+ case 128 + 19: return spell_RF5_BO_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_COLD */
+ case 128 + 20: return spell_RF5_BA_LITE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BA_LITE */
+ case 128 + 21: return spell_RF5_BO_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_NETH */
+ case 128 + 22: return spell_RF5_BO_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_WATE */
+ case 128 + 23: return spell_RF5_BO_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_MANA */
+ case 128 + 24: return spell_RF5_BO_PLAS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_PLAS */
+ case 128 + 25: return spell_RF5_BO_ICEE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_BO_ICEE */
+ case 128 + 26: return spell_RF5_MISSILE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF5_MISSILE */
+ case 128 + 27: spell_RF5_SCARE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_SCARE */
+ case 128 + 28: spell_RF5_BLIND(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BLIND */
+ case 128 + 29: spell_RF5_CONF(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CONF */
+ case 128 + 30: spell_RF5_SLOW(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_SLOW */
+ case 128 + 31: spell_RF5_HOLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_HOLD */
+ case 160 + 0: spell_RF6_HASTE(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_HASTE */
+ case 160 + 1: return spell_RF6_HAND_DOOM(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_HAND_DOOM */
+ case 160 + 2: spell_RF6_HEAL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_HEAL */
+ case 160 + 3: spell_RF6_INVULNER(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_INVULNER */
+ case 160 + 4: spell_RF6_BLINK(m_idx, MONSTER_TO_MONSTER); break; /* RF6_BLINK */
+ case 160 + 5: spell_RF6_TPORT(m_idx, MONSTER_TO_MONSTER); break; /* RF6_TPORT */
+ case 160 + 6: return -1; break; /* RF6_WORLD */
+ }
+ return 0;
+}
\ No newline at end of file