#include "angband.h"
#include "util.h"
+#include "main/sound-definitions-table.h"
#include "floor.h"
#include "grid.h"
#include "player-class.h"
#include "player-personality.h"
#include "player-damage.h"
-#include "realm-hex.h"
+#include "realm/realm-hex.h"
#include "player-move.h"
#include "monster-spell.h"
#include "monster-status.h"
#include "melee.h"
#include "player-effects.h"
#include "world.h"
-#include "view-mainwindow.h"
+#include "view/display-main-window.h"
/*!
* @brief モンスター2体がプレイヤーの近くに居るかの判定 /
*/
void spell_RF4_SHRIEK(MONSTER_IDX m_idx, player_type *target_ptr, MONSTER_IDX t_idx, int TARGET_TYPE)
{
- // temporary unused
- (target_ptr);
-
simple_monspell_message(target_ptr, m_idx, t_idx,
_("%^sがかん高い金切り声をあげた。", "%^s makes a high pitched shriek."),
_("%^sが%sに向かって叫んだ。", "%^s shrieks at %s."),
dispel_player(target_ptr);
if (target_ptr->riding) dispel_monster_status(target_ptr, target_ptr->riding);
- if ((target_ptr->pseikaku == SEIKAKU_COMBAT) || (target_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
+ if (IS_ECHIZEN(target_ptr))
msg_print(_("やりやがったな!", ""));
else if ((target_ptr->pseikaku == SEIKAKU_CHARGEMAN))
{
* @brief RF6_BLINKの処理。ショート・テレポート。 /
* @param target_ptr プレーヤーへの参照ポインタ
* @param m_idx 呪文を唱えるモンスターID
+* @param is_quantum_effect 量子的効果によるショート・テレポートの場合時TRUE
* @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
*/
-void spell_RF6_BLINK(player_type *target_ptr, MONSTER_IDX m_idx, int TARGET_TYPE)
+void spell_RF6_BLINK(player_type *target_ptr, MONSTER_IDX m_idx, int TARGET_TYPE, bool is_quantum_effect)
{
GAME_TEXT m_name[MAX_NLEN];
monster_name(target_ptr, m_idx, m_name);
disturb(target_ptr, TRUE, TRUE);
floor_type *floor_ptr = target_ptr->current_floor_ptr;
- if (teleport_barrier(target_ptr, m_idx))
+ if (!is_quantum_effect && teleport_barrier(target_ptr, m_idx))
{
if (see_monster(floor_ptr, m_idx))
msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。",
for (k = 0; k < num; k++)
{
- count += summon_named_creature(target_ptr, m_idx, y, x, MON_SHURYUUDAN, mode);
+ count += summon_named_creature(target_ptr, m_idx, y, x, MON_GRENADE, mode);
}
if (target_ptr->blind && count)
{
if (TARGET_TYPE == MONSTER_TO_PLAYER)
{
- if ((target_ptr->pseikaku == SEIKAKU_COMBAT) || (target_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))
+ if (IS_ECHIZEN(target_ptr))
msg_print(_("くっそ~", ""));
else if ((target_ptr->pseikaku == SEIKAKU_CHARGEMAN))
{
}
learn_spell(target_ptr, MS_TELE_AWAY);
- teleport_player_away(m_idx, target_ptr, 100);
+ teleport_player_away(m_idx, target_ptr, 100, FALSE);
return;
}
}
if (t_idx == target_ptr->riding)
- teleport_player_away(m_idx, target_ptr, MAX_SIGHT * 2 + 5);
+ teleport_player_away(m_idx, target_ptr, MAX_SIGHT * 2 + 5, FALSE);
else
teleport_away(target_ptr, t_idx, MAX_SIGHT * 2 + 5, TELEPORT_PASSIVE);
set_monster_csleep(target_ptr, t_idx, 0);
* @param m_idx 呪文を唱えるモンスターID
* @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。
*/
-HIT_POINT monspell_to_player(int SPELL_NUM, player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
+HIT_POINT monspell_to_player(player_type *target_ptr, int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx)
{
switch (SPELL_NUM)
{
case RF6_SPELL_START + 1: return spell_RF6_HAND_DOOM(target_ptr, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_HAND_DOOM */
case RF6_SPELL_START + 2: spell_RF6_HEAL(target_ptr, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_HEAL */
case RF6_SPELL_START + 3: spell_RF6_INVULNER(target_ptr, m_idx, 0, MONSTER_TO_PLAYER); break; /* RF6_INVULNER */
- case RF6_SPELL_START + 4: spell_RF6_BLINK(target_ptr, m_idx, MONSTER_TO_PLAYER); break; /* RF6_BLINK */
+ case RF6_SPELL_START + 4: spell_RF6_BLINK(target_ptr, m_idx, MONSTER_TO_PLAYER, FALSE); break; /* RF6_BLINK */
case RF6_SPELL_START + 5: spell_RF6_TPORT(target_ptr, m_idx, MONSTER_TO_PLAYER); break; /* RF6_TPORT */
case RF6_SPELL_START + 6: return spell_RF6_WORLD(target_ptr, m_idx); break; /* RF6_WORLD */
case RF6_SPELL_START + 7: return spell_RF6_SPECIAL(target_ptr, y, x, m_idx, 0, MONSTER_TO_PLAYER); /* RF6_SPECIAL */
* @param x 対象の地点のx座標
* @param m_idx 呪文を唱えるモンスターID
* @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
+* @param is_special_spell 特殊な行動である時TRUE
* @return 攻撃呪文のダメージ、または召喚したモンスターの数を返す。その他の場合0。以降の処理を中断するなら-1を返す。
*/
-HIT_POINT monspell_to_monster(player_type *target_ptr, int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx)
+HIT_POINT monspell_to_monster(player_type *target_ptr, int SPELL_NUM, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, bool is_special_spell)
{
switch (SPELL_NUM)
{
case RF6_SPELL_START + 1: return spell_RF6_HAND_DOOM(target_ptr, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_HAND_DOOM */
case RF6_SPELL_START + 2: spell_RF6_HEAL(target_ptr, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_HEAL */
case RF6_SPELL_START + 3: spell_RF6_INVULNER(target_ptr, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF6_INVULNER */
- case RF6_SPELL_START + 4: spell_RF6_BLINK(target_ptr, m_idx, MONSTER_TO_MONSTER); break; /* RF6_BLINK */
+ case RF6_SPELL_START + 4: spell_RF6_BLINK(target_ptr, m_idx, MONSTER_TO_MONSTER, is_special_spell); break; /* RF6_BLINK */
case RF6_SPELL_START + 5: spell_RF6_TPORT(target_ptr, m_idx, MONSTER_TO_MONSTER); break; /* RF6_TPORT */
case RF6_SPELL_START + 6: return -1; break; /* RF6_WORLD */
case RF6_SPELL_START + 7: return spell_RF6_SPECIAL(target_ptr, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); /* RF6_SPECIAL */