1 #include "mspell/mspell-curse.h"
2 #include "core/disturbance.h"
3 #include "monster/monster-info.h"
4 #include "monster/monster-list.h"
5 #include "mspell/mspell-checker.h"
6 #include "mspell/mspell-damage-calculator.h"
7 #include "mspell/mspell-type.h"
8 #include "mspell/mspell-util.h"
9 #include "spell/spell-types.h"
10 #include "system/floor-type-definition.h"
11 #include "view/display-messages.h"
14 * @brief RF5_CAUSE_*のメッセージ処理関数 /
15 * @param target_ptr プレーヤーへの参照ポインタ
16 * @param GF_TYPE 攻撃に使用する属性
17 * @param dam 攻撃に使用するダメージ量
20 * @param m_idx 呪文を唱えるモンスターID
21 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
22 * @param msg1 対プレイヤー、盲目時メッセージ
23 * @param msg2 対プレイヤー、非盲目時メッセージ
24 * @param msg3 対モンスターのメッセージ
25 * @param MS_TYPE 呪文の番号
26 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
29 void spell_RF5_CAUSE(player_type *target_ptr, int GF_TYPE, HIT_POINT dam, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1,
30 concptr msg2, concptr msg3, int MS_TYPE, int TARGET_TYPE)
32 GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
33 monster_name(target_ptr, m_idx, m_name);
34 monster_name(target_ptr, t_idx, t_name);
36 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
37 disturb(target_ptr, TRUE, TRUE);
38 if (target_ptr->blind)
39 msg_format(msg1, m_name);
41 msg_format(msg2, m_name);
42 breath(target_ptr, y, x, m_idx, GF_TYPE, dam, 0, FALSE, MS_TYPE, TARGET_TYPE);
46 if (TARGET_TYPE == MONSTER_TO_MONSTER) {
47 if (see_monster(target_ptr, m_idx)) {
48 msg_format(msg3, m_name, t_name);
50 target_ptr->current_floor_ptr->monster_noise = TRUE;
54 breath(target_ptr, y, x, m_idx, GF_TYPE, dam, 0, FALSE, MS_TYPE, TARGET_TYPE);
58 * @brief RF5_CAUSE_1の処理。軽傷の呪い。 /
59 * @param target_ptr プレーヤーへの参照ポインタ
62 * @param m_idx 呪文を唱えるモンスターID
63 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
64 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
67 HIT_POINT spell_RF5_CAUSE_1(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
69 concptr msg1, msg2, msg3;
71 dam = monspell_damage(target_ptr, (MS_CAUSE_1), m_idx, DAM_ROLL);
73 msg1 = _("%^sが何かをつぶやいた。", "%^s mumbles.");
74 msg2 = _("%^sがあなたを指さして呪った。", "%^s points at you and curses.");
75 msg3 = _("%^sは%sを指さして呪いをかけた。", "%^s points at %s and curses.");
77 spell_RF5_CAUSE(target_ptr, GF_CAUSE_1, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_1, TARGET_TYPE);
82 * @brief RF5_CAUSE_2の処理。重傷の呪い。 /
83 * @param target_ptr プレーヤーへの参照ポインタ
86 * @param m_idx 呪文を唱えるモンスターID
87 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
88 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
91 HIT_POINT spell_RF5_CAUSE_2(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
93 concptr msg1, msg2, msg3;
95 dam = monspell_damage(target_ptr, (MS_CAUSE_2), m_idx, DAM_ROLL);
97 msg1 = _("%^sが何かをつぶやいた。", "%^s mumbles.");
98 msg2 = _("%^sがあなたを指さして恐ろしげに呪った。", "%^s points at you and curses horribly.");
99 msg3 = _("%^sは%sを指さして恐ろしげに呪いをかけた。", "%^s points at %s and curses horribly.");
101 spell_RF5_CAUSE(target_ptr, GF_CAUSE_2, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_2, TARGET_TYPE);
106 * @brief RF5_CAUSE_3の処理。致命傷の呪い。 /
107 * @param target_ptr プレーヤーへの参照ポインタ
110 * @param m_idx 呪文を唱えるモンスターID
111 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
112 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
115 HIT_POINT spell_RF5_CAUSE_3(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
117 concptr msg1, msg2, msg3;
119 dam = monspell_damage(target_ptr, (MS_CAUSE_3), m_idx, DAM_ROLL);
121 msg1 = _("%^sが何かを大声で叫んだ。", "%^s mumbles loudly.");
122 msg2 = _("%^sがあなたを指さして恐ろしげに呪文を唱えた!", "%^s points at you, incanting terribly!");
123 msg3 = _("%^sは%sを指さし、恐ろしげに呪文を唱えた!", "%^s points at %s, incanting terribly!");
125 spell_RF5_CAUSE(target_ptr, GF_CAUSE_3, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_3, TARGET_TYPE);
130 * @brief RF5_CAUSE_4の処理。秘孔を突く。 /
131 * @param target_ptr プレーヤーへの参照ポインタ
134 * @param m_idx 呪文を唱えるモンスターID
135 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
136 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
139 HIT_POINT spell_RF5_CAUSE_4(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
141 concptr msg1, msg2, msg3;
143 dam = monspell_damage(target_ptr, (MS_CAUSE_4), m_idx, DAM_ROLL);
145 msg1 = _("%^sが「お前は既に死んでいる」と叫んだ。", "%^s screams the word 'DIE!'");
146 msg2 = _("%^sがあなたの秘孔を突いて「お前は既に死んでいる」と叫んだ。", "%^s points at you, screaming the word DIE!");
147 msg3 = _("%^sが%sの秘孔を突いて、「お前は既に死んでいる」と叫んだ。", "%^s points at %s, screaming the word, 'DIE!'");
149 spell_RF5_CAUSE(target_ptr, GF_CAUSE_4, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_4, TARGET_TYPE);