2 * @brief ボルトでもボールでもブレスでもなく、ダメージを与える特殊なスペルの実行 /
3 * Performing special spells that take damage, not bolts, balls or breaths
6 * @details 肥大化しやすいファイル名なので、関数の追加時は共通部分を別ファイルに抜き出せるか検討すること /
7 * This is a filename that tends to be bloated.
8 * So when adding a function, please consider whether you can extract the common part to another file.
11 #include "mspell/mspell-particularity.h"
12 #include "mind/drs-types.h"
13 #include "monster/monster-update.h"
14 #include "mspell/mspell-checker.h"
15 #include "mspell/mspell-damage-calculator.h"
16 #include "mspell/mspell-type.h"
17 #include "mspell/mspell-util.h"
18 #include "spell/spell-types.h"
21 * @brief RF4_ROCKETの処理。ロケット。 /
22 * @param target_ptr プレーヤーへの参照ポインタ
25 * @param m_idx 呪文を唱えるモンスターID
26 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
27 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
30 HIT_POINT spell_RF4_ROCKET(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
34 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かを射った。", "%^s shoots something."), _("%^sがロケットを発射した。", "%^s fires a rocket."),
35 _("%^sが%sにロケットを発射した。", "%^s fires a rocket at %s."), TARGET_TYPE);
37 dam = monspell_damage(target_ptr, (MS_ROCKET), m_idx, DAM_ROLL);
38 breath(target_ptr, y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE);
39 if (TARGET_TYPE == MONSTER_TO_PLAYER)
40 update_smart_learn(target_ptr, m_idx, DRS_SHARD);
45 * @brief RF6_HAND_DOOMの処理。破滅の手。 /
46 * @param target_ptr プレーヤーへの参照ポインタ
49 * @param m_idx 呪文を唱えるモンスターID
50 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
51 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
54 HIT_POINT spell_RF6_HAND_DOOM(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
56 simple_monspell_message(target_ptr, m_idx, t_idx, _("%^sが<破滅の手>を放った!", "%^s invokes the Hand of Doom!"),
57 _("%^sが%sに<破滅の手>を放った!", "%^s invokes the Hand of Doom upon %s!"), TARGET_TYPE);
60 if (TARGET_TYPE == MONSTER_TO_PLAYER) {
61 dam = monspell_damage(target_ptr, (MS_HAND_DOOM), m_idx, DAM_ROLL);
62 breath(target_ptr, y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
63 } else if (TARGET_TYPE == MONSTER_TO_MONSTER) {
64 dam = 20; /* Dummy power */
65 breath(target_ptr, y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_MONSTER);
72 * @brief RF6_PSY_SPEARの処理。光の剣。 /
75 * @param m_idx 呪文を唱えるモンスターID
76 * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
77 * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
80 HIT_POINT spell_RF6_PSY_SPEAR(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
82 monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが光の剣を放った。", "%^s throw a Psycho-Spear."),
83 _("%^sが%sに向かって光の剣を放った。", "%^s throw a Psycho-spear at %s."), TARGET_TYPE);
85 HIT_POINT dam = monspell_damage(target_ptr, (MS_PSY_SPEAR), m_idx, DAM_ROLL);
86 beam(target_ptr, m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_PLAYER);