3 #include "system/angband.h"
6 #define MONSTER_TO_PLAYER 0x01
7 #define MONSTER_TO_MONSTER 0x02
9 /* monster spell number */
10 #define RF4_SPELL_START 32 * 3
11 #define RF5_SPELL_START 32 * 4
12 #define RF6_SPELL_START 32 * 5
17 struct mspell_cast_msg {
18 template <typename T, typename U, typename V, typename W>
19 mspell_cast_msg(T &&to_player_true, U &&to_mons_true, V &&to_player_false, W &&to_mons_false)
20 : to_player_true(std::forward<T>(to_player_true))
21 , to_mons_true(std::forward<U>(to_mons_true))
22 , to_player_false(std::forward<V>(to_player_false))
23 , to_mons_false(std::forward<W>(to_mons_false))
26 mspell_cast_msg() = default;
27 std::string to_player_true; /*!< msg_flagがTRUEかつプレイヤー対象*/
28 std::string to_mons_true; /*!< msg_flagがTRUEかつモンスター対象*/
29 std::string to_player_false; /*!< msg_flagがFALSEかつプレイヤー対象*/
30 std::string to_mons_false; /*!< msg_flagがFALSEかつモンスター対象*/
33 struct mspell_cast_msg_blind {
34 mspell_cast_msg_blind(concptr blind, concptr to_player, concptr to_mons);
35 mspell_cast_msg_blind() = default;
36 concptr blind; /*!< 盲目時*/
37 concptr to_player; /*!< 対プレイヤーかつ非盲目時*/
38 concptr to_mons; /*!< 対モンスター*/
41 struct mspell_cast_msg_simple {
42 mspell_cast_msg_simple(concptr to_player, concptr to_mons);
43 mspell_cast_msg_simple() = default;
44 concptr to_player; /*!< プレイヤー対象*/
45 concptr to_mons; /*!< モンスター対象*/
48 bool see_monster(PlayerType *player_ptr, MONSTER_IDX m_idx);
49 bool monster_near_player(FloorType *floor_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx);
50 bool monspell_message_base(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, const mspell_cast_msg &msgs, bool msg_flag_aux, int target_type);
51 bool monspell_message(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, const mspell_cast_msg_blind &msgs, int target_type);
52 void simple_monspell_message(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, const mspell_cast_msg_simple &msgs, int target_type);