X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmspells4.c;h=b23352a918e99bfabb1bbf167841a8d8ccebd643;hb=9d59b53dd879fdbcc974d1d148f3b7831c43968f;hp=f1af190ed97fe69253fdc5fb75e6a1daa8ef172b;hpb=9d4b877c27a36774ae5256db6237264298837607;p=hengband%2Fhengband.git diff --git a/src/mspells4.c b/src/mspells4.c index f1af190ed..b23352a91 100644 --- a/src/mspells4.c +++ b/src/mspells4.c @@ -7,17 +7,14 @@ #include "angband.h" +#include "projection.h" +#include "spells-summon.h" +#include "artifact.h" +#include "player-status.h" +#include "realm-hex.h" +#include "player-move.h" +#include "monster-spell.h" -/*! -* @brief モンスターIDを取り、モンスター名をm_nameに代入する / -* @param m_idx モンスターID -* @param m_name モンスター名を入力する配列 -*/ -void monster_name(MONSTER_IDX m_idx, char* m_name) -{ - monster_type *m_ptr = &m_list[m_idx]; - monster_desc(m_name, m_ptr, 0x00); -} /*! * @brief モンスター2体がプレイヤーの近くに居るかの判定 / @@ -25,10 +22,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 +36,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,24 +47,24 @@ 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); bool maneable = player_has_los_bold(m_ptr->fy, m_ptr->fx); - return (seen && maneable && !world_monster); + return (seen && maneable && !current_world_ptr->timewalk_m_idx); } /*! -* @brief モンスターIDからモンスターのレベルを取得する / +* @brief モンスターIDからモンスターのレベルを取得する(ただし最低1を保証する) / * @param m_idx モンスターID * @return モンスターのレベル */ -int monster_level_idx(MONSTER_IDX m_idx) +DEPTH monster_level_idx(MONSTER_IDX m_idx) { - monster_type *m_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); + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + monster_race *r_ptr = &r_info[m_ptr->r_idx]; + DEPTH rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1); return rlev; } @@ -78,36 +75,27 @@ 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; } /*! -* @brief モンスターがユニーク召喚可能であるかを判定する / +* @brief 特定条件のモンスター召喚のみPM_ALLOW_UNIQUEを許可する / * @param m_idx モンスターID * @return 召喚可能であればPM_ALLOW_UNIQUEを返す。 */ -u32b monster_u_mode(MONSTER_IDX m_idx) +BIT_FLAGS monster_u_mode(MONSTER_IDX m_idx) { - u32b u_mode = 0L; - monster_type *m_ptr = &m_list[m_idx]; + BIT_FLAGS u_mode = 0L; + 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; } /*! -* @brief モンスターを起こす / -* @param t_idx モンスターID -*/ -void monster_wakeup(IDX t_idx) -{ - (void)set_monster_csleep(t_idx, 0); -} - -/*! * @brief モンスターが呪文行使する際のメッセージを処理する汎用関数 / * @param m_idx 呪文を唱えるモンスターID * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 @@ -118,18 +106,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 +151,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 +164,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 +175,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."), @@ -200,7 +188,7 @@ void spell_RF4_SHRIEK(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) } else if (TARGET_TYPE == MONSTER_TO_MONSTER) { - monster_wakeup(t_idx); + set_monster_csleep(t_idx, 0); } } @@ -210,9 +198,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 +217,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 +241,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 ダメージ量を返す。 */ -int spell_RF4_ROCKET(int y, int 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 +267,7 @@ int spell_RF4_ROCKET(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF4_SHOOT(int y, int 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 +294,17 @@ int spell_RF4_SHOOT(int y, int x, MONSTER_IDX m_idx, IDX t_idx,int TARGET_TYPE) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF4_BREATH(int GF_TYPE, int y, int 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 +443,16 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, MONSTER_IDX m_idx, IDX t_idx, in 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 +500,7 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, MONSTER_IDX m_idx, IDX t_idx, in * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF4_BA_NUKE(int y, int 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 +527,7 @@ int spell_RF4_BA_NUKE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF4_BA_CHAO(int y, int 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 +554,7 @@ int spell_RF4_BA_CHAO(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_ACID(int y, int 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 +583,7 @@ int spell_RF5_BA_ACID(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_ELEC(int y, int 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 +612,10 @@ int spell_RF5_BA_ELEC(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_FIRE(int y, int 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 +652,7 @@ int spell_RF5_BA_FIRE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_COLD(int y, int 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 +681,7 @@ int spell_RF5_BA_COLD(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_POIS(int y, int 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 +708,7 @@ int spell_RF5_BA_POIS(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_NETH(int y, int 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 +735,14 @@ int spell_RF5_BA_NETH(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_WATE(int y, int 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 +775,7 @@ int spell_RF5_BA_WATE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_MANA(int y, int 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 +799,7 @@ int spell_RF5_BA_MANA(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_DARK(int y, int 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 +826,17 @@ int spell_RF5_BA_DARK(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_DRAIN_MANA(int y, int 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 +861,19 @@ int spell_RF5_DRAIN_MANA(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_MIND_BLAST(int y, int 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 +898,19 @@ int spell_RF5_MIND_BLAST(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BRAIN_SMASH(int y, int 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 +941,15 @@ int spell_RF5_BRAIN_SMASH(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, int y, int 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 +978,9 @@ void spell_RF5_CAUSE(int GF_TYPE, HIT_POINT dam, int y, int x, MONSTER_IDX m_idx * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_CAUSE_1(int y, int 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 +1001,9 @@ int spell_RF5_CAUSE_1(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_CAUSE_2(int y, int 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 +1024,9 @@ int spell_RF5_CAUSE_2(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_CAUSE_3(int y, int 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 +1047,9 @@ int spell_RF5_CAUSE_3(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_CAUSE_4(int y, int 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 +1070,7 @@ int spell_RF5_CAUSE_4(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_ACID(int y, int 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 +1099,7 @@ int spell_RF5_BO_ACID(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_ELEC(int y, int 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 +1128,7 @@ int spell_RF5_BO_ELEC(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_FIRE(int y, int 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 +1157,7 @@ int spell_RF5_BO_FIRE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_COLD(int y, int 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 +1186,7 @@ int spell_RF5_BO_COLD(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BA_LITE(int y, int 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 +1213,7 @@ int spell_RF5_BA_LITE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_NETH(int y, int 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 +1242,7 @@ int spell_RF5_BO_NETH(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_WATE(int y, int 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 +1270,7 @@ int spell_RF5_BO_WATE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_MANA(int y, int 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 +1298,7 @@ int spell_RF5_BO_MANA(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_PLAS(int y, int 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 +1326,7 @@ int spell_RF5_BO_PLAS(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_BO_ICEE(int y, int 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 +1355,7 @@ int spell_RF5_BO_ICEE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF5_MISSILE(int y, int 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 +1386,18 @@ int spell_RF5_MISSILE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYP * @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 @@ -1440,7 +1438,7 @@ void spell_badstatus_message(MONSTER_IDX m_idx, IDX t_idx, cptr msg1, cptr msg2, { if (see_t) msg_format(msg4, t_name); } - monster_wakeup(t_idx); + set_monster_csleep(t_idx, 0); } } @@ -1450,11 +1448,11 @@ 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); + DEPTH rlev = monster_level_idx(m_idx); bool resist, saving_throw; if (TARGET_TYPE == MONSTER_TO_PLAYER) @@ -1500,11 +1498,11 @@ 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); + DEPTH rlev = monster_level_idx(m_idx); bool resist, saving_throw; if (TARGET_TYPE == MONSTER_TO_PLAYER) @@ -1527,8 +1525,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,11 +1561,11 @@ 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); + DEPTH rlev = monster_level_idx(m_idx); bool resist, saving_throw; if (TARGET_TYPE == MONSTER_TO_PLAYER) @@ -1613,11 +1611,11 @@ 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); + DEPTH rlev = monster_level_idx(m_idx); bool resist, saving_throw; if (TARGET_TYPE == MONSTER_TO_PLAYER) @@ -1640,8 +1638,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,11 +1674,11 @@ 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); + DEPTH rlev = monster_level_idx(m_idx); bool resist, saving_throw; if (TARGET_TYPE == MONSTER_TO_PLAYER) @@ -1726,11 +1724,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 +1756,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 ダメージ量を返す。 */ -int spell_RF6_HAND_DOOM(int y, int 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 +1784,16 @@ int spell_RF6_HAND_DOOM(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T * @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]; - int rlev = monster_level_idx(m_idx); + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + DEPTH 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 +1810,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 +1821,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 +1839,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 +1850,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 +1872,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 +1903,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)) @@ -1934,14 +1927,14 @@ void spell_RF6_TPORT(MONSTER_IDX m_idx, int TARGET_TYPE) * @brief RF6_WORLDの処理。時を止める。 / * @param m_idx 呪文を唱えるモンスターID */ -int spell_RF6_WORLD(MONSTER_IDX m_idx) +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); @@ -1952,9 +1945,9 @@ int spell_RF6_WORLD(MONSTER_IDX m_idx) * @brief バーノール・ルパートのRF6_SPECIALの処理。分裂・合体。 / * @param m_idx 呪文を唱えるモンスターID */ -int spell_RF6_SPECIAL_BANORLUPART(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 +1963,13 @@ int 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 +1984,21 @@ int 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 +2015,11 @@ int spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int spell_RF6_SPECIAL_ROLENTO(int y, int 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 +2047,19 @@ int spell_RF6_SPECIAL_ROLENTO(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TA * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int 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 +2073,7 @@ int spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in 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 +2115,7 @@ int spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in 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 +2127,10 @@ int spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in } 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 +2144,12 @@ int spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, IDX t_idx, in * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return ダメージ量を返す。 */ -int 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 +2184,10 @@ int spell_RF6_SPECIAL(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_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 +2203,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) @@ -2242,7 +2235,8 @@ void spell_RF6_TELE_TO(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) else teleport_monster_to(t_idx, m_ptr->fy, m_ptr->fx, 100, TELEPORT_PASSIVE); } - monster_wakeup(t_idx); + + set_monster_csleep(t_idx, 0); } } @@ -2253,9 +2247,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 +2261,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) @@ -2306,7 +2305,8 @@ void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) else teleport_away(t_idx, MAX_SIGHT * 2 + 5, TELEPORT_PASSIVE); } - monster_wakeup(t_idx); + + set_monster_csleep(t_idx, 0); } } @@ -2317,11 +2317,11 @@ 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); + DEPTH rlev = monster_level_idx(m_idx); bool resist, saving_throw; if (TARGET_TYPE == MONSTER_TO_PLAYER) @@ -2371,7 +2371,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 ダメージ量を返す。 */ -int spell_RF6_PSY_SPEAR(int y, int 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 +2394,15 @@ int spell_RF6_PSY_SPEAR(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER */ -void spell_RF6_DARKNESS(int y, int 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) && @@ -2474,11 +2474,11 @@ void spell_RF6_DARKNESS(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T * @param x 対象の地点のx座標 * @param m_idx 呪文を唱えるモンスターID */ -void spell_RF6_TRAPS(int y, int x, MONSTER_IDX m_idx) +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が何かをつぶやいて邪悪に微笑んだ。", @@ -2497,11 +2497,11 @@ void spell_RF6_TRAPS(int y, int x, MONSTER_IDX m_idx) */ void spell_RF6_FORGET(MONSTER_IDX m_idx) { - int rlev = monster_level_idx(m_idx); - char m_name[80]; + DEPTH rlev = monster_level_idx(m_idx); + 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 +2524,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."), @@ -2546,13 +2546,13 @@ void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE) * @param m_idx 呪文を唱えるモンスターID * @return 召喚したモンスターの数を返す。 */ -int summon_EAGLE(int y, int x, int rlev, MONSTER_IDX m_idx) +MONSTER_NUMBER summon_EAGLE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) { int k, count = 0; 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; } @@ -2565,9 +2565,9 @@ int summon_EAGLE(int y, int x, int rlev, MONSTER_IDX m_idx) * @param m_idx 呪文を唱えるモンスターID * @return 召喚したモンスターの数を返す。 */ -int summon_IE(int y, int 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 +2587,7 @@ int summon_IE(int y, int x, int rlev, MONSTER_IDX m_idx) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -int summon_Guardian(int y, int 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 +2609,7 @@ int summon_Guardian(int y, int x, int rlev, MONSTER_IDX m_idx, IDX t_idx, int TA 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 +2622,12 @@ int summon_Guardian(int y, int x, int rlev, MONSTER_IDX m_idx, IDX t_idx, int TA * @param m_idx 呪文を唱えるモンスターID * @return 召喚したモンスターの数を返す。 */ -int summon_LOCK_CLONE(int y, int 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); @@ -2643,13 +2643,13 @@ int summon_LOCK_CLONE(int y, int x, int rlev, MONSTER_IDX m_idx) * @param m_idx 呪文を唱えるモンスターID * @return 召喚したモンスターの数を返す。 */ -int summon_LOUSE(int y, int x, int rlev, MONSTER_IDX m_idx) +MONSTER_NUMBER summon_LOUSE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx) { int k, count = 0; 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; } @@ -2662,16 +2662,15 @@ int summon_LOUSE(int y, int x, int rlev, MONSTER_IDX m_idx) * @param m_idx 呪文を唱えるモンスターID * @return 召喚したモンスターの数を返す。 */ -int summon_Kin(int y, int 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 +2684,22 @@ int summon_Kin(int y, int x, int rlev, MONSTER_IDX m_idx) * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_KIN(int y, int 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); + DEPTH 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 +2711,7 @@ void spell_RF6_S_KIN(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE else { if (mon_to_player || (mon_to_mon && known && see_either)) - disturb(1, 1); + disturb(TRUE, TRUE); if (p_ptr->blind) { @@ -2778,11 +2777,11 @@ void spell_RF6_S_KIN(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_CYBER(int y, int 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]; - int rlev = monster_level_idx(m_idx); + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + DEPTH 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 +2793,7 @@ void spell_RF6_S_CYBER(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY 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,10 +2816,10 @@ void spell_RF6_S_CYBER(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_MONSTER(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -2833,10 +2832,10 @@ void spell_RF6_S_MONSTER(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_ 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,10 +2854,10 @@ void spell_RF6_S_MONSTER(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_ * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_MONSTERS(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -2871,10 +2870,10 @@ void spell_RF6_S_MONSTERS(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET 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,10 +2892,10 @@ void spell_RF6_S_MONSTERS(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_ANT(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -2908,7 +2907,7 @@ void spell_RF6_S_ANT(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE 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,12 +2926,12 @@ void spell_RF6_S_ANT(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TYPE * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_SPIDER(int y, int 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); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); - int rlev = monster_level_idx(m_idx); + DEPTH rlev = monster_level_idx(m_idx); monspell_message(m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."), @@ -2942,7 +2941,7 @@ void spell_RF6_S_SPIDER(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T 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,10 +2960,10 @@ void spell_RF6_S_SPIDER(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_HOUND(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -2976,7 +2975,7 @@ void spell_RF6_S_HOUND(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY 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,10 +2994,10 @@ void spell_RF6_S_HOUND(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_HYDRA(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -3010,7 +3009,7 @@ void spell_RF6_S_HYDRA(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY 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,13 +3028,13 @@ void spell_RF6_S_HYDRA(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_ANGEL(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); monspell_message(m_idx, t_idx, @@ -3051,7 +3050,7 @@ void spell_RF6_S_ANGEL(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY 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,10 +3077,10 @@ void spell_RF6_S_ANGEL(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_DEMON(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); monspell_message(m_idx, t_idx, @@ -3092,7 +3091,7 @@ void spell_RF6_S_DEMON(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY 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,10 +3110,10 @@ void spell_RF6_S_DEMON(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_TY * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_UNDEAD(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); monspell_message(m_idx, t_idx, @@ -3125,7 +3124,7 @@ void spell_RF6_S_UNDEAD(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T 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,10 +3143,10 @@ void spell_RF6_S_UNDEAD(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_DRAGON(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); monspell_message(m_idx, t_idx, @@ -3158,7 +3157,7 @@ void spell_RF6_S_DRAGON(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T 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) @@ -3175,13 +3174,13 @@ void spell_RF6_S_DRAGON(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T * @param m_idx 呪文を唱えるモンスターID * @return 召喚したモンスターの数を返す。 */ -int summon_NAZGUL(POSITION y, POSITION x, MONSTER_IDX m_idx) +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 +3234,17 @@ int 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]; - int rlev = monster_level_idx(m_idx); + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + DEPTH 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 +3263,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,10 +3287,10 @@ 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(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -3304,10 +3303,10 @@ void spell_RF6_S_HI_DRAGON(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGE 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,10 +3327,10 @@ void spell_RF6_S_HI_DRAGON(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGE * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_AMBERITES(int y, int 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); + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); @@ -3343,7 +3342,7 @@ void spell_RF6_S_AMBERITES(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGE 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,11 +3363,11 @@ void spell_RF6_S_AMBERITES(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGE * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER * @return 召喚したモンスターの数を返す。 */ -void spell_RF6_S_UNIQUE(int y, int 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]; - int rlev = monster_level_idx(m_idx); + monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + DEPTH rlev = monster_level_idx(m_idx); bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER); bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER); bool uniques_are_summoned = FALSE; @@ -3382,7 +3381,7 @@ void spell_RF6_S_UNIQUE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T 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 +3393,7 @@ void spell_RF6_S_UNIQUE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T 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) @@ -3417,7 +3416,7 @@ void spell_RF6_S_UNIQUE(int y, int x, MONSTER_IDX m_idx, IDX t_idx, int TARGET_T * @param m_idx 呪文を唱えるモンスターID * @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。 */ -int monspell_to_player(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx) +HIT_POINT monspell_to_player(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx) { switch (SPELL_NUM) { @@ -3530,7 +3529,7 @@ int monspell_to_player(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx) * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。 * @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。 */ -int 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 +3608,7 @@ int monspell_to_monster(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_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 */ @@ -3644,7 +3643,7 @@ int monspell_to_monster(int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx * @param TYPE DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。 * @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。 */ -int monspell_damage_roll(HIT_POINT dam, int dice_num, int dice_side, int mult, int div, int TYPE) +HIT_POINT monspell_damage_roll(HIT_POINT dam, int dice_num, int dice_side, int mult, int div, int TYPE) { switch (TYPE) { @@ -3673,7 +3672,7 @@ int monspell_damage_roll(HIT_POINT dam, int dice_num, int dice_side, int mult, i * @param TYPE DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。 * @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。 */ -int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int shoot_dd, int shoot_ds, int shoot_base, int TYPE) +HIT_POINT monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int shoot_dd, int shoot_ds, int shoot_base, int TYPE) { HIT_POINT dam = 0, dice_num = 0, dice_side = 0, mult = 1, div = 1; @@ -4090,12 +4089,12 @@ int monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, int sho * @param TYPE DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。 * @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。 */ -int monspell_damage(int SPELL_NUM, MONSTER_IDX m_idx, int TYPE) +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); + DEPTH rlev = monster_level_idx(m_idx); int shoot_dd = r_ptr->blow[0].d_dice; int shoot_ds = r_ptr->blow[0].d_side; @@ -4117,7 +4116,7 @@ int monspell_damage(int SPELL_NUM, MONSTER_IDX m_idx, int TYPE) * @param TYPE DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。 * @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。 */ -int monspell_race_damage(int SPELL_NUM, MONRACE_IDX r_idx, int TYPE) +HIT_POINT monspell_race_damage(int SPELL_NUM, MONRACE_IDX r_idx, int TYPE) { monster_race *r_ptr = &r_info[r_idx]; int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1); @@ -4136,14 +4135,14 @@ int monspell_race_damage(int SPELL_NUM, MONRACE_IDX r_idx, int TYPE) * @param TYPE DAM_MAXで最大値を返し、DAM_MINで最小値を返す。DAM_ROLLはダイスを振って値を決定する。 * @return 攻撃呪文のダメージを返す。攻撃呪文以外は-1を返す。 */ -int 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) {