#include "angband.h"
/*!
- * @brief ¥â¥ó¥¹¥¿¡¼¤¬Å¨ÂÐ¥â¥ó¥¹¥¿¡¼¤Ë¥Ü¥ë¥È·¿Æü쵻ǽ¤òÊü¤Ä½èÍý /
- * Monster casts a bolt at another monster
- * @param m_idx Æü쵻ǽ¤ò»È¤¦¥â¥ó¥¹¥¿¡¼¤Î»²¾ÈID
- * @param y ÌÜɸ¤ÎYºÂɸ
- * @param x ÌÜɸ¤ÎXºÂɸ
- * @param typ ¸ú²Ì°À¤ÎID
- * @param dam_hp °ÒÎÏ
- * @param monspell Æü칶·â¤ÎID
- * @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤ÊÁ°Äó¤¬Â·¤Ã¤Æ¤¤¤ë¤Ê¤é¤ÐTRUE
- * @return ¤Ê¤·
- * @details
- * Stop if we hit a monster
- * Affect monsters and the player
- */
-static void monst_bolt_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell)
-{
- int flg = PROJECT_STOP | PROJECT_KILL;
- bool learnable = spell_learnable(m_idx);
-
- if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE;
- (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
-}
-
-
-/*!
- * @brief ¥â¥ó¥¹¥¿¡¼¤¬Å¨ÂÐ¥â¥ó¥¹¥¿¡¼¤Ë¥Ó¡¼¥à·¿Æü쵻ǽ¤òÊü¤Ä½èÍý /
- * Monster casts a bolt at another monster
- * @param m_idx Æü쵻ǽ¤ò»È¤¦¥â¥ó¥¹¥¿¡¼¤Î»²¾ÈID
- * @param y ÌÜɸ¤ÎYºÂɸ
- * @param x ÌÜɸ¤ÎXºÂɸ
- * @param typ ¸ú²Ì°À¤ÎID
- * @param dam_hp °ÒÎÏ
- * @param monspell Æü칶·â¤ÎID
- * @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤ÊÁ°Äó¤¬Â·¤Ã¤Æ¤¤¤ë¤Ê¤é¤ÐTRUE
- * @return ¤Ê¤·
- */
-static void monst_beam_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell)
-{
- int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
- bool learnable = spell_learnable(m_idx);
-
- (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
-}
-
-/*!
* @brief ¥â¥ó¥¹¥¿¡¼¤¬Å¨ÂÐ¥â¥ó¥¹¥¿¡¼¤Ë¥Ó¡¼¥à¤òÅö¤Æ¤ë¤³¤È²Äǽ¤«¤òȽÄꤹ¤ë /
* Determine if a beam spell will hit the target.
* @param y1 »ÏÅÀ¤ÎYºÂɸ
}
dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
- monst_bolt_monst(m_idx, y, x, GF_ARROW, dam, MS_SHOOT);
+ bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, SPELL_MON_TO_MON);
break;
}
dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID);
+ bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, SPELL_MON_TO_MON);
break;
}
dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC);
+ bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, SPELL_MON_TO_MON);
break;
}
dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE);
+ bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, SPELL_MON_TO_MON);
break;
}
dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
- monst_bolt_monst(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD);
+ bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, SPELL_MON_TO_MON);
break;
}
dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
- monst_bolt_monst(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER);
+ bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, SPELL_MON_TO_MON);
break;
}
dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- monst_bolt_monst(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER);
+ bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, SPELL_MON_TO_MON);
break;
}
dam = randint1(rlev * 7 / 2) + 50;
- monst_bolt_monst(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA);
+ bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, SPELL_MON_TO_MON);
break;
}
dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- monst_bolt_monst(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA);
+ bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, SPELL_MON_TO_MON);
break;
}
dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
- monst_bolt_monst(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE);
+ bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, SPELL_MON_TO_MON);
break;
}
dam = damroll(2, 6) + (rlev / 3);
- monst_bolt_monst(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE);
+ bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, SPELL_MON_TO_MON);
break;
}
dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 180) : (randint1(rlev * 3 / 2) + 120);
- monst_beam_monst(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR);
+ beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, SPELL_MON_TO_MON);
break;
/* RF6_DARKNESS */