X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmspells4.c;h=72dfccc8a295519c6a235ce3aee587198deb9a68;hb=3b87c7250e7a560a11398daa278da2018efaeff8;hp=6cd077ddecf7cd1ca4feeb7cbba80cc9113d1e6d;hpb=26694933288f76d3f8b4e72c66ab39806224868d;p=hengband%2Fhengband.git diff --git a/src/mspells4.c b/src/mspells4.c index 6cd077dde..72dfccc8a 100644 --- a/src/mspells4.c +++ b/src/mspells4.c @@ -7,6 +7,11 @@ #include "angband.h" +#include "projection.h" +#include "spells-summon.h" +#include "artifact.h" +#include "player-status.h" +#include "realm-hex.h" /*! * @brief モンスターIDを取り、モンスター名をm_nameに代入する / @@ -15,7 +20,7 @@ */ void monster_name(MONSTER_IDX m_idx, char* m_name) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monster_desc(m_name, m_ptr, 0x00); } @@ -25,10 +30,10 @@ void monster_name(MONSTER_IDX m_idx, char* m_name) * @param t_idx モンスターID二体目 * @return モンスター2体のどちらかがプレイヤーの近くに居ればTRUE、どちらも遠ければFALSEを返す。 */ -bool monster_near_player(MONSTER_IDX m_idx, IDX t_idx) +bool monster_near_player(MONSTER_IDX m_idx, MONSTER_IDX t_idx) { - monster_type *m_ptr = &m_list[m_idx]; - monster_type *t_ptr = &m_list[t_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + monster_type *t_ptr = ¤t_floor_ptr->m_list[t_idx]; return (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT); } @@ -39,7 +44,7 @@ bool monster_near_player(MONSTER_IDX m_idx, IDX t_idx) */ bool see_monster(MONSTER_IDX m_idx) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; return is_seen(m_ptr); } @@ -50,7 +55,7 @@ bool see_monster(MONSTER_IDX m_idx) */ bool spell_learnable(MONSTER_IDX m_idx) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; /* Extract the "see-able-ness" */ bool seen = (!p_ptr->blind && m_ptr->ml); @@ -65,7 +70,7 @@ bool spell_learnable(MONSTER_IDX m_idx) */ int monster_level_idx(MONSTER_IDX m_idx) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1); return rlev; @@ -78,7 +83,7 @@ int monster_level_idx(MONSTER_IDX m_idx) */ bool monster_is_powerful(MONSTER_IDX m_idx) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; bool powerful = r_ptr->flags2 & RF2_POWERFUL ? TRUE : FALSE; return powerful; @@ -92,7 +97,7 @@ bool monster_is_powerful(MONSTER_IDX m_idx) u32b monster_u_mode(MONSTER_IDX m_idx) { u32b u_mode = 0L; - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; bool pet = is_pet(m_ptr); if (!pet) u_mode |= PM_ALLOW_UNIQUE; return u_mode; @@ -102,7 +107,7 @@ u32b monster_u_mode(MONSTER_IDX m_idx) * @brief モンスターを起こす / * @param t_idx モンスターID */ -void monster_wakeup(IDX t_idx) +void monster_wakeup(MONSTER_IDX t_idx) { (void)set_monster_csleep(t_idx, 0); } @@ -118,18 +123,18 @@ void monster_wakeup(IDX t_idx) * @param msg_flag_aux メッセージを分岐するためのフラグ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -static void monspell_message_base(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool msg_flag_aux, int TARGET_TYPE) +static void monspell_message_base(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, concptr msg4, bool msg_flag_aux, int TARGET_TYPE) { bool known = monster_near_player(m_idx, t_idx); bool see_either = see_monster(m_idx) || see_monster(t_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); - char m_name[80], t_name[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; 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); + disturb(TRUE, TRUE); if (msg_flag_aux) { @@ -163,7 +168,7 @@ static void monspell_message_base(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr * @param msg3 プレイヤーが盲目でなく、モンスター対象とする場合のメッセージ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE) +void monspell_message(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, int TARGET_TYPE) { monspell_message_base(m_idx, t_idx, msg1, msg1, msg2, msg3, p_ptr->blind > 0, TARGET_TYPE); } @@ -176,7 +181,7 @@ void monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr m * @param msg2 モンスター対象とする場合のメッセージ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void simple_monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, int TARGET_TYPE) +void simple_monspell_message(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, int TARGET_TYPE) { monspell_message_base(m_idx, t_idx, msg1, msg2, msg1, msg2, p_ptr->blind > 0, TARGET_TYPE); } @@ -187,7 +192,7 @@ void simple_monspell_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF4_SHRIEK(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF4_SHRIEK(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { simple_monspell_message(m_idx, t_idx, _("%^sがかん高い金切り声をあげた。", "%^s makes a high pitched shriek."), @@ -210,9 +215,9 @@ void spell_RF4_SHRIEK(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF4_DISPEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF4_DISPEL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - char m_name[80], t_name[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); @@ -229,6 +234,11 @@ void spell_RF4_DISPEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON)) msg_print(_("やりやがったな!", "")); + else if ((p_ptr->pseikaku == SEIKAKU_CHARGEMAN)) + { + if (randint0(2) == 0) msg_print(_("ジュラル星人め!", "")); + else msg_print(_("弱い者いじめは止めるんだ!", "")); + } learn_spell(MS_DISPEL); } @@ -248,7 +258,7 @@ void spell_RF4_DISPEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF4_ROCKET(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF4_ROCKET(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -274,7 +284,7 @@ HIT_POINT spell_RF4_ROCKET(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF4_SHOOT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,int TARGET_TYPE) +HIT_POINT spell_RF4_SHOOT(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx,int TARGET_TYPE) { HIT_POINT dam; @@ -301,17 +311,17 @@ HIT_POINT spell_RF4_SHOOT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx,i * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - HIT_POINT dam, ms_type, drs_type; - cptr type_s; + HIT_POINT dam, ms_type, drs_type = 0; + concptr type_s; bool smart_learn_aux = TRUE; - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; bool known = monster_near_player(m_idx, t_idx); bool see_either = see_monster(m_idx) || see_monster(t_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); - char m_name[80], t_name[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); @@ -450,11 +460,16 @@ HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_id smart_learn_aux = FALSE; break; default: + /* Do not reach here */ + dam = 0; + type_s = _("不明", "Unknown"); + ms_type = MS_BR_ACID; + smart_learn_aux = FALSE; break; } if (mon_to_player || (mon_to_mon && known && see_either)) - disturb(1, 1); + disturb(TRUE, TRUE); if (m_ptr->r_idx == MON_JAIAN && GF_TYPE == GF_SOUND) { @@ -502,7 +517,7 @@ HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_id * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF4_BA_NUKE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF4_BA_NUKE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -529,7 +544,7 @@ HIT_POINT spell_RF4_BA_NUKE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF4_BA_CHAO(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF4_BA_CHAO(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -556,7 +571,7 @@ HIT_POINT spell_RF4_BA_CHAO(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam, rad; @@ -585,7 +600,7 @@ HIT_POINT spell_RF5_BA_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam, rad; @@ -614,10 +629,10 @@ HIT_POINT spell_RF5_BA_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam, rad; - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; if (m_ptr->r_idx == MON_ROLENTO) { @@ -654,7 +669,7 @@ HIT_POINT spell_RF5_BA_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam, rad; @@ -683,7 +698,7 @@ HIT_POINT spell_RF5_BA_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_POIS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_POIS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -710,7 +725,7 @@ HIT_POINT spell_RF5_BA_POIS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -737,14 +752,14 @@ HIT_POINT spell_RF5_BA_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; bool known = monster_near_player(m_idx, t_idx); bool see_either = see_monster(m_idx) || see_monster(t_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); - char t_name[80]; + GAME_TEXT t_name[MAX_NLEN]; monster_name(t_idx, t_name); @@ -777,7 +792,7 @@ HIT_POINT spell_RF5_BA_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -801,7 +816,7 @@ HIT_POINT spell_RF5_BA_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_DARK(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_DARK(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -828,17 +843,17 @@ HIT_POINT spell_RF5_BA_DARK(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_DRAIN_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_DRAIN_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; - char m_name[80], t_name[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - disturb(1, 1); + disturb(TRUE, TRUE); } else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx)) { @@ -863,19 +878,19 @@ HIT_POINT spell_RF5_DRAIN_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; bool seen = (!p_ptr->blind && m_ptr->ml); HIT_POINT dam; - char m_name[80], t_name[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - disturb(1, 1); + disturb(TRUE, TRUE); if (!seen) msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind.")); else @@ -900,19 +915,19 @@ HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BRAIN_SMASH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BRAIN_SMASH(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; bool seen = (!p_ptr->blind && m_ptr->ml); HIT_POINT dam; - char m_name[80], t_name[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - disturb(1, 1); + disturb(TRUE, TRUE); if (!seen) msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind.")); else @@ -943,15 +958,15 @@ HIT_POINT spell_RF5_BRAIN_SMASH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, int MS_TYPE, int TARGET_TYPE) +void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, int MS_TYPE, int TARGET_TYPE) { - char m_name[80], t_name[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - disturb(1, 1); + disturb(TRUE, TRUE); if (p_ptr->blind) msg_format(msg1, m_name); else @@ -980,9 +995,9 @@ void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, POSITION y, POSITION x, MONSTER * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_CAUSE_1(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_CAUSE_1(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - cptr msg1, msg2, msg3; + concptr msg1, msg2, msg3; HIT_POINT dam; dam = monspell_damage((MS_CAUSE_1), m_idx, DAM_ROLL); @@ -1003,9 +1018,9 @@ HIT_POINT spell_RF5_CAUSE_1(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_CAUSE_2(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_CAUSE_2(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - cptr msg1, msg2, msg3; + concptr msg1, msg2, msg3; HIT_POINT dam; dam = monspell_damage((MS_CAUSE_2), m_idx, DAM_ROLL); @@ -1026,9 +1041,9 @@ HIT_POINT spell_RF5_CAUSE_2(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_CAUSE_3(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_CAUSE_3(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - cptr msg1, msg2, msg3; + concptr msg1, msg2, msg3; HIT_POINT dam; dam = monspell_damage((MS_CAUSE_3), m_idx, DAM_ROLL); @@ -1049,9 +1064,9 @@ HIT_POINT spell_RF5_CAUSE_3(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_CAUSE_4(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_CAUSE_4(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - cptr msg1, msg2, msg3; + concptr msg1, msg2, msg3; HIT_POINT dam; dam = monspell_damage((MS_CAUSE_4), m_idx, DAM_ROLL); @@ -1072,7 +1087,7 @@ HIT_POINT spell_RF5_CAUSE_4(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1101,7 +1116,7 @@ HIT_POINT spell_RF5_BO_ACID(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1130,7 +1145,7 @@ HIT_POINT spell_RF5_BO_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1159,7 +1174,7 @@ HIT_POINT spell_RF5_BO_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1188,7 +1203,7 @@ HIT_POINT spell_RF5_BO_COLD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BA_LITE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BA_LITE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1215,7 +1230,7 @@ HIT_POINT spell_RF5_BA_LITE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1244,7 +1259,7 @@ HIT_POINT spell_RF5_BO_NETH(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1272,7 +1287,7 @@ HIT_POINT spell_RF5_BO_WATE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1300,7 +1315,7 @@ HIT_POINT spell_RF5_BO_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_PLAS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_PLAS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1328,7 +1343,7 @@ HIT_POINT spell_RF5_BO_PLAS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_BO_ICEE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_BO_ICEE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1357,7 +1372,7 @@ HIT_POINT spell_RF5_BO_ICEE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF5_MISSILE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF5_MISSILE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -1388,18 +1403,18 @@ HIT_POINT spell_RF5_MISSILE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param saving_throw 抵抗に成功したか判別するフラグ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_badstatus_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, cptr msg3, cptr msg4, bool resist, bool saving_throw, int TARGET_TYPE) +void spell_badstatus_message(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1, concptr msg2, concptr msg3, concptr msg4, bool resist, bool saving_throw, int TARGET_TYPE) { 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]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); if (TARGET_TYPE == MONSTER_TO_PLAYER) { - disturb(1, 1); + disturb(TRUE, TRUE); if (p_ptr->blind) msg_format(msg1, m_name); else @@ -1450,9 +1465,9 @@ void spell_badstatus_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF5_SCARE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF5_SCARE(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *t_ptr = &m_list[t_idx]; + monster_type *t_ptr = ¤t_floor_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; @@ -1500,9 +1515,9 @@ void spell_RF5_SCARE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF5_BLIND(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF5_BLIND(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *t_ptr = &m_list[t_idx]; + monster_type *t_ptr = ¤t_floor_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; @@ -1527,8 +1542,8 @@ void spell_RF5_BLIND(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) } else if (TARGET_TYPE == MONSTER_TO_MONSTER) { - cptr msg1; - char t_name[80]; + concptr msg1; + GAME_TEXT t_name[MAX_NLEN]; monster_name(t_idx, t_name); if (streq(t_name, "it")) @@ -1563,9 +1578,9 @@ void spell_RF5_BLIND(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF5_CONF(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF5_CONF(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *t_ptr = &m_list[t_idx]; + monster_type *t_ptr = ¤t_floor_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; @@ -1613,9 +1628,9 @@ void spell_RF5_CONF(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF5_SLOW(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF5_SLOW(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *t_ptr = &m_list[t_idx]; + monster_type *t_ptr = ¤t_floor_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; @@ -1640,8 +1655,8 @@ void spell_RF5_SLOW(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) } else if (TARGET_TYPE == MONSTER_TO_MONSTER) { - cptr msg1; - char t_name[80]; + concptr msg1; + GAME_TEXT t_name[MAX_NLEN]; monster_name(t_idx, t_name); if (streq(t_name, "it")) @@ -1676,9 +1691,9 @@ void spell_RF5_SLOW(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF5_HOLD(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF5_HOLD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *t_ptr = &m_list[t_idx]; + monster_type *t_ptr = ¤t_floor_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; @@ -1726,11 +1741,11 @@ void spell_RF5_HOLD(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF6_HASTE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_HASTE(MONSTER_IDX m_idx, MONSTER_IDX 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_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); monspell_message_base(m_idx, t_idx, @@ -1758,7 +1773,7 @@ void spell_RF6_HASTE(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF6_HAND_DOOM(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF6_HAND_DOOM(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam = 0; @@ -1786,17 +1801,16 @@ HIT_POINT spell_RF6_HAND_DOOM(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_HEAL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; int rlev = monster_level_idx(m_idx); bool seen = (!p_ptr->blind && m_ptr->ml); - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); - disturb(1, 1); + disturb(TRUE, TRUE); - /* Message */ monspell_message_base(m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sは自分の傷に念を集中した。", "%^s concentrates on %s wounds."), @@ -1813,7 +1827,6 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) /* Fully healed */ m_ptr->hp = m_ptr->maxhp; - /* Message */ monspell_message_base(m_idx, t_idx, _("%^sは完全に治ったようだ!", "%^s sounds completely healed!"), _("%^sは完全に治ったようだ!", "%^s sounds completely healed!"), @@ -1825,7 +1838,6 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) /* Partially healed */ else { - /* Message */ monspell_message_base(m_idx, t_idx, _("%^sは体力を回復したようだ。", "%^s sounds healthier."), _("%^sは体力を回復したようだ。", "%^s sounds healthier."), @@ -1844,7 +1856,6 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) /* Cancel fear */ (void)set_monster_monfear(m_idx, 0); - /* Message */ if (see_monster(m_idx)) msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), m_name); } @@ -1856,12 +1867,11 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF6_INVULNER(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_INVULNER(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; bool seen = (!p_ptr->blind && m_ptr->ml); - /* Message */ monspell_message_base(m_idx, t_idx, _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), @@ -1879,11 +1889,11 @@ void spell_RF6_INVULNER(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) */ void spell_RF6_BLINK(MONSTER_IDX m_idx, int TARGET_TYPE) { - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); if (TARGET_TYPE==MONSTER_TO_PLAYER) - disturb(1, 1); + disturb(TRUE, TRUE); if (teleport_barrier(m_idx)) { @@ -1910,11 +1920,11 @@ void spell_RF6_BLINK(MONSTER_IDX m_idx, int TARGET_TYPE) */ void spell_RF6_TPORT(MONSTER_IDX m_idx, int TARGET_TYPE) { - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); if (TARGET_TYPE==MONSTER_TO_PLAYER) - disturb(1, 1); + disturb(TRUE, TRUE); if (teleport_barrier(m_idx)) { if(see_monster(m_idx)) @@ -1936,12 +1946,12 @@ void spell_RF6_TPORT(MONSTER_IDX m_idx, int TARGET_TYPE) */ HIT_POINT spell_RF6_WORLD(MONSTER_IDX m_idx) { - monster_type *m_ptr = &m_list[m_idx]; - int who = 0; - char m_name[80]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + MONSTER_IDX who = 0; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); - disturb(1, 1); + disturb(TRUE, TRUE); if (m_ptr->r_idx == MON_DIO) who = 1; else if (m_ptr->r_idx == MON_WONG) who = 3; if (!process_the_world(randint1(2) + 2, who, TRUE)) return (FALSE); @@ -1954,7 +1964,7 @@ HIT_POINT spell_RF6_WORLD(MONSTER_IDX m_idx) */ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; HIT_POINT dummy_hp, dummy_maxhp; MONSTER_IDX k; POSITION dummy_y = m_ptr->fy; @@ -1970,13 +1980,13 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx) if (p_ptr->inside_arena || p_ptr->inside_battle || !summon_possible(m_ptr->fy, m_ptr->fx)) return -1; - delete_monster_idx(cave[m_ptr->fy][m_ptr->fx].m_idx); + delete_monster_idx(current_floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].m_idx); summon_named_creature(0, dummy_y, dummy_x, MON_BANOR, mode); - m_list[hack_m_idx_ii].hp = dummy_hp; - m_list[hack_m_idx_ii].maxhp = dummy_maxhp; + current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp; + current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp; summon_named_creature(0, dummy_y, dummy_x, MON_LUPART, mode); - m_list[hack_m_idx_ii].hp = dummy_hp; - m_list[hack_m_idx_ii].maxhp = dummy_maxhp; + current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp; + current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp; msg_print(_("『バーノール・ルパート』が分裂した!","Banor=Rupart splits in two person!")); break; @@ -1991,21 +2001,21 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx) for (k = 1; k < m_max; k++) { - if (m_list[k].r_idx == MON_BANOR || m_list[k].r_idx == MON_LUPART) + if (current_floor_ptr->m_list[k].r_idx == MON_BANOR || current_floor_ptr->m_list[k].r_idx == MON_LUPART) { - dummy_hp += m_list[k].hp; - dummy_maxhp += m_list[k].maxhp; - if (m_list[k].r_idx != m_ptr->r_idx) + dummy_hp += current_floor_ptr->m_list[k].hp; + dummy_maxhp += current_floor_ptr->m_list[k].maxhp; + if (current_floor_ptr->m_list[k].r_idx != m_ptr->r_idx) { - dummy_y = m_list[k].fy; - dummy_x = m_list[k].fx; + dummy_y = current_floor_ptr->m_list[k].fy; + dummy_x = current_floor_ptr->m_list[k].fx; } delete_monster_idx(k); } } summon_named_creature(0, dummy_y, dummy_x, MON_BANORLUPART, mode); - m_list[hack_m_idx_ii].hp = dummy_hp; - m_list[hack_m_idx_ii].maxhp = dummy_maxhp; + current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp; + current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp; msg_print(_("『バーノール』と『ルパート』が合体した!", "Banor and Rupart combine into one!")); break; @@ -2022,11 +2032,11 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF6_SPECIAL_ROLENTO(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF6_SPECIAL_ROLENTO(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int num = 1 + randint1(3); - u32b mode = 0L; + BIT_FLAGS mode = 0L; monspell_message(m_idx, t_idx, _("%^sが何か大量に投げた。", "%^s spreads something."), @@ -2054,19 +2064,19 @@ HIT_POINT spell_RF6_SPECIAL_ROLENTO(POSITION y, POSITION x, MONSTER_IDX m_idx, I * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - HIT_POINT dam; - monster_type *m_ptr = &m_list[m_idx]; - monster_type *t_ptr = &m_list[t_idx]; + HIT_POINT dam = -1; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + monster_type *t_ptr = ¤t_floor_ptr->m_list[t_idx]; monster_race *tr_ptr = &r_info[t_ptr->r_idx]; bool monster_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); bool monster_to_monster = (TARGET_TYPE == MONSTER_TO_MONSTER); bool direct = player_bold(y, x); - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); - disturb(1, 1); + disturb(TRUE, TRUE); if (one_in_(3) || !direct) { simple_monspell_message(m_idx, t_idx, @@ -2080,7 +2090,7 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i else { int get_damage = 0; - bool fear; /* dummy */ + bool fear, dead; /* dummy */ simple_monspell_message(m_idx, t_idx, _("%^sがあなたを掴んで空中から投げ落とした。", "%^s holds you, and drops from the sky."), @@ -2122,7 +2132,7 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1); if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead) { - char m_name_self[80]; + GAME_TEXT m_name_self[80]; /* hisself */ monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE); @@ -2134,10 +2144,10 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i } if(monster_to_player && p_ptr->riding) - mon_take_hit_mon(p_ptr->riding, dam, &fear, extract_note_dies(real_r_ptr(&m_list[p_ptr->riding])), m_idx); + mon_take_hit_mon(p_ptr->riding, dam, &dead, &fear, extract_note_dies(real_r_idx(¤t_floor_ptr->m_list[p_ptr->riding])), m_idx); if(monster_to_monster) - mon_take_hit_mon(t_idx, dam, &fear, extract_note_dies(real_r_ptr(t_ptr)), m_idx); + mon_take_hit_mon(t_idx, dam, &dead, &fear, extract_note_dies(real_r_idx(t_ptr)), m_idx); } return dam; } @@ -2151,12 +2161,12 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; - disturb(1, 1); + disturb(TRUE, TRUE); switch (m_ptr->r_idx) { case MON_OHMU: @@ -2191,10 +2201,10 @@ HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -void spell_RF6_TELE_TO(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_TELE_TO(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; - monster_type *t_ptr = &m_list[t_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + monster_type *t_ptr = ¤t_floor_ptr->m_list[t_idx]; monster_race *tr_ptr = &r_info[t_ptr->r_idx]; simple_monspell_message(m_idx, t_idx, @@ -2210,7 +2220,7 @@ void spell_RF6_TELE_TO(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) else if (TARGET_TYPE == MONSTER_TO_MONSTER) { bool resists_tele = FALSE; - char t_name[80]; + GAME_TEXT t_name[MAX_NLEN]; monster_name(t_idx, t_name); if (tr_ptr->flagsr & RFR_RES_TELE) @@ -2253,9 +2263,9 @@ void spell_RF6_TELE_TO(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *t_ptr = &m_list[t_idx]; + monster_type *t_ptr = ¤t_floor_ptr->m_list[t_idx]; monster_race *tr_ptr = &r_info[t_ptr->r_idx]; simple_monspell_message(m_idx, t_idx, @@ -2267,14 +2277,19 @@ void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) { if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON)) msg_print(_("くっそ~", "")); - + else if ((p_ptr->pseikaku == SEIKAKU_CHARGEMAN)) + { + if (randint0(2) == 0) msg_print(_("ジュラル星人め!", "")); + else msg_print(_("弱い者いじめは止めるんだ!", "")); + } + learn_spell(MS_TELE_AWAY); teleport_player_away(m_idx, 100); } else if (TARGET_TYPE == MONSTER_TO_MONSTER) { bool resists_tele = FALSE; - char t_name[80]; + GAME_TEXT t_name[MAX_NLEN]; monster_name(t_idx, t_name); if (tr_ptr->flagsr & RFR_RES_TELE) @@ -2317,9 +2332,9 @@ void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -void spell_RF6_TELE_LEVEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_TELE_LEVEL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *t_ptr = &m_list[t_idx]; + monster_type *t_ptr = ¤t_floor_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; @@ -2371,7 +2386,7 @@ void spell_RF6_TELE_LEVEL(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -HIT_POINT spell_RF6_PSY_SPEAR(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +HIT_POINT spell_RF6_PSY_SPEAR(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { HIT_POINT dam; @@ -2394,15 +2409,15 @@ HIT_POINT spell_RF6_PSY_SPEAR(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_i * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; - monster_type *t_ptr = &m_list[t_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + monster_type *t_ptr = ¤t_floor_ptr->m_list[t_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; bool can_use_lite_area = FALSE; bool monster_to_monster = TARGET_TYPE == MONSTER_TO_MONSTER; bool monster_to_player = TARGET_TYPE == MONSTER_TO_PLAYER; - char t_name[80]; + GAME_TEXT t_name[MAX_NLEN]; monster_name(t_idx, t_name); if ((p_ptr->pclass == CLASS_NINJA) && @@ -2476,9 +2491,9 @@ void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in */ void spell_RF6_TRAPS(POSITION y, POSITION x, MONSTER_IDX m_idx) { - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); - disturb(1, 1); + disturb(TRUE, TRUE); if (p_ptr->blind) msg_format(_("%^sが何かをつぶやいて邪悪に微笑んだ。", @@ -2498,10 +2513,10 @@ void spell_RF6_TRAPS(POSITION y, POSITION x, MONSTER_IDX m_idx) void spell_RF6_FORGET(MONSTER_IDX m_idx) { int rlev = monster_level_idx(m_idx); - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); - disturb(1, 1); + disturb(TRUE, TRUE); msg_format(_("%^sがあなたの記憶を消去しようとしている。", "%^s tries to blank your mind."), m_name); @@ -2524,9 +2539,9 @@ void spell_RF6_FORGET(MONSTER_IDX m_idx) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monspell_message(m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."), @@ -2552,7 +2567,7 @@ MONSTER_NUMBER summon_EAGLE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) int num = 4 + randint1(3); for (k = 0; k < num; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); } return count; } @@ -2567,7 +2582,7 @@ MONSTER_NUMBER summon_EAGLE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) */ MONSTER_NUMBER summon_IE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) { - u32b mode = 0L; + BIT_FLAGS mode = 0L; int k, count = 0; int num = 2 + randint1(1 + rlev / 20); for (k = 0; k < num; k++) @@ -2587,7 +2602,7 @@ MONSTER_NUMBER summon_IE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -MONSTER_NUMBER summon_Guardian(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +MONSTER_NUMBER summon_Guardian(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int k, count = 0; int num = 2 + randint1(3); @@ -2609,7 +2624,7 @@ MONSTER_NUMBER summon_Guardian(POSITION y, POSITION x, int rlev, MONSTER_IDX m_i for (k = 0; k < num; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); } return count; } @@ -2622,12 +2637,12 @@ MONSTER_NUMBER summon_Guardian(POSITION y, POSITION x, int rlev, MONSTER_IDX m_i * @param m_idx 呪文を唱えるモンスターID * @return 召喚したモンスターの数を返す。 */ -MONSTER_NUMBER summon_LOCK_CLONE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) +MONSTER_NUMBER summon_LOCK_CLONE(POSITION y, POSITION x, DEPTH rlev, MONSTER_IDX m_idx) { - u32b mode = 0L; + BIT_FLAGS mode = 0L; int k, count = 0; int num = randint1(3); - rlev; + rlev = rlev; for (k = 0; k < num; k++) { count += summon_named_creature(m_idx, y, x, MON_LOCKE_CLONE, mode); @@ -2649,7 +2664,7 @@ MONSTER_NUMBER summon_LOUSE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) int num = 2 + randint1(3); for (k = 0; k < num; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP, '\0'); } return count; } @@ -2665,13 +2680,12 @@ MONSTER_NUMBER summon_LOUSE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) MONSTER_NUMBER summon_Kin(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) { int k, count = 0; - monster_type *m_ptr = &m_list[m_idx]; - monster_race *r_ptr = &r_info[m_ptr->r_idx]; - summon_kin_type = r_ptr->d_char; /* Big hack */ + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + monster_race *r_ptr = &r_info[m_ptr->r_idx]; for (k = 0; k < 4; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP, r_ptr->d_char); } return count; } @@ -2685,22 +2699,22 @@ MONSTER_NUMBER summon_Kin(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { bool known = monster_near_player(m_idx, t_idx); bool see_either = see_monster(m_idx) || see_monster(t_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; int rlev = monster_level_idx(m_idx); int count = 0; - char m_name[80], t_name[80], m_poss[80]; + GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN], m_poss[80]; monster_name(m_idx, m_name); monster_name(t_idx, t_name); monster_desc(m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE); - disturb(1, 1); + disturb(TRUE, TRUE); if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT) { monspell_message(m_idx, t_idx, @@ -2712,7 +2726,7 @@ void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T else { if (mon_to_player || (mon_to_mon && known && see_either)) - disturb(1, 1); + disturb(TRUE, TRUE); if (p_ptr->blind) { @@ -2778,10 +2792,10 @@ void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0; - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; int rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -2794,7 +2808,7 @@ void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int if (is_friendly(m_ptr) && mon_to_mon) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP)); + count += summon_specific(m_idx, y, x, rlev, SUMMON_CYBER, (PM_ALLOW_GROUP), '\0'); } else { @@ -2817,7 +2831,7 @@ void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -2833,10 +2847,10 @@ void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, i for (k = 0; k < 1; k++) { if(mon_to_player) - count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); if(mon_to_mon) - count += summon_specific(m_idx, y, x, rlev, 0, (monster_u_mode(m_idx))); + count += summon_specific(m_idx, y, x, rlev, 0, (monster_u_mode(m_idx)), '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -2855,7 +2869,7 @@ void spell_RF6_S_MONSTER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, i * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -2871,10 +2885,10 @@ void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, for (k = 0; k < S_NUM_6; k++) { if(mon_to_player) - count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); if(mon_to_mon) - count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | monster_u_mode(m_idx))); + count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -2893,7 +2907,7 @@ void spell_RF6_S_MONSTERS(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -2908,7 +2922,7 @@ void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T for (k = 0; k < S_NUM_6; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP, '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -2927,7 +2941,7 @@ void spell_RF6_S_ANT(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int T * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); @@ -2942,7 +2956,7 @@ void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in for (k = 0; k < S_NUM_6; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP, '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -2961,7 +2975,7 @@ void spell_RF6_S_SPIDER(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -2976,7 +2990,7 @@ void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int for (k = 0; k < S_NUM_4; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP, '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -2995,7 +3009,7 @@ void spell_RF6_S_HOUND(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -3010,7 +3024,7 @@ void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int for (k = 0; k < S_NUM_4; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP, '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -3029,11 +3043,11 @@ void spell_RF6_S_HYDRA(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int num = 1; - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; int rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); @@ -3051,7 +3065,7 @@ void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int for (k = 0; k < num; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP, '\0'); } if (count < 2) @@ -3078,7 +3092,7 @@ void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -3092,7 +3106,7 @@ void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int for (k = 0; k < 1; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP, '\0'); } if (p_ptr->blind && count) @@ -3111,7 +3125,7 @@ void spell_RF6_S_DEMON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -3125,7 +3139,7 @@ void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in for (k = 0; k < 1; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP, '\0'); } if (p_ptr->blind && count) @@ -3144,7 +3158,7 @@ void spell_RF6_S_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -3158,7 +3172,7 @@ void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in for (k = 0; k < 1; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP); + count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP, '\0'); } if (p_ptr->blind && count) @@ -3177,11 +3191,11 @@ void spell_RF6_S_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in */ MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx) { - u32b mode = 0L; + BIT_FLAGS mode = 0L; int count = 0, k; POSITION cy = y; POSITION cx = x; - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); if (p_ptr->blind) @@ -3235,17 +3249,17 @@ MONSTER_NUMBER summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; int rlev = monster_level_idx(m_idx); int k, count = 0; - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_name(m_idx, m_name); - disturb(1, 1); + disturb(TRUE, TRUE); if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) && ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num) && @@ -3264,10 +3278,10 @@ void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, for (k = 0; k < S_NUM_6; k++) { if(mon_to_player) - count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); if(mon_to_mon) - count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx))); + count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0'); } } if (p_ptr->blind && count && mon_to_player) @@ -3288,7 +3302,7 @@ void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -3304,10 +3318,10 @@ void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, for (k = 0; k < S_NUM_4; k++) { if(mon_to_player) - count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); if(mon_to_mon) - count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | monster_u_mode(m_idx))); + count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | monster_u_mode(m_idx)), '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -3328,7 +3342,7 @@ void spell_RF6_S_HI_DRAGON(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; int rlev = monster_level_idx(m_idx); @@ -3343,7 +3357,7 @@ void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, for (k = 0; k < S_NUM_4; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -3364,10 +3378,10 @@ void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) +void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE) { int count = 0, k; - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; int rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -3382,7 +3396,7 @@ void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in for (k = 0; k < S_NUM_4; k++) { - count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); } if (count) uniques_are_summoned = TRUE; @@ -3394,7 +3408,7 @@ void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in for (k = count; k < S_NUM_4; k++) { - count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE)); + count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE), '\0'); } if (p_ptr->blind && count && mon_to_player) @@ -3530,7 +3544,7 @@ HIT_POINT monspell_to_player(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。 */ -HIT_POINT monspell_to_monster(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx) +HIT_POINT monspell_to_monster(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx) { switch (SPELL_NUM) { @@ -3609,7 +3623,7 @@ HIT_POINT monspell_to_monster(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX case RF6_SPELL_START + 8: spell_RF6_TELE_TO(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_TO */ case RF6_SPELL_START + 9: spell_RF6_TELE_AWAY(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_AWAY */ case RF6_SPELL_START + 10: spell_RF6_TELE_LEVEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_TELE_LEVEL */ - case RF6_SPELL_START + 11: spell_RF6_PSY_SPEAR(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_PSY_SPEAR */ + case RF6_SPELL_START + 11: return spell_RF6_PSY_SPEAR(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_PSY_SPEAR */ case RF6_SPELL_START + 12: spell_RF6_DARKNESS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_DARKNESS */ case RF6_SPELL_START + 13: return -1; /* RF6_TRAPS */ case RF6_SPELL_START + 14: return -1; /* RF6_FORGET */ @@ -4092,7 +4106,7 @@ HIT_POINT monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, i */ HIT_POINT monspell_damage(int SPELL_NUM, MONSTER_IDX m_idx, int TYPE) { - monster_type *m_ptr = &m_list[m_idx]; + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; int hp; int rlev = monster_level_idx(m_idx); @@ -4136,14 +4150,14 @@ HIT_POINT monspell_race_damage(int SPELL_NUM, MONRACE_IDX r_idx, int TYPE) * @param TYPE DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。 * @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。 */ -HIT_POINT monspell_bluemage_damage(int SPELL_NUM, int plev, int TYPE) +HIT_POINT monspell_bluemage_damage(int SPELL_NUM, PLAYER_LEVEL plev, int TYPE) { int hp = p_ptr->chp; int shoot_dd = 1, shoot_ds = 1, shoot_base = 0; object_type *o_ptr = NULL; - if (buki_motteruka(INVEN_RARM)) o_ptr = &inventory[INVEN_RARM]; - else if (buki_motteruka(INVEN_LARM)) o_ptr = &inventory[INVEN_LARM]; + if (has_melee_weapon(INVEN_RARM)) o_ptr = &inventory[INVEN_RARM]; + else if (has_melee_weapon(INVEN_LARM)) o_ptr = &inventory[INVEN_LARM]; if (o_ptr) {