*/
#include "mspell/mspell-status.h"
-#include "art-definition/art-bow-types.h"
+#include "blue-magic/blue-magic-checker.h"
+#include "core/disturbance.h"
+#include "core/player-redraw-types.h"
#include "mind/drs-types.h"
-#include "monster/monster-status.h"
+#include "monster-race/monster-race.h"
+#include "monster-race/race-indice-types.h"
+#include "monster-race/race-flags1.h"
+#include "monster-race/race-flags3.h"
+#include "monster/monster-describer.h"
#include "monster/monster-description-types.h"
-#include "monster/monster2.h"
-#include "mspell/monster-spell.h"
+#include "monster/monster-info.h"
+#include "monster/monster-status-setter.h"
+#include "monster/monster-status.h"
+#include "monster/monster-update.h"
+#include "mspell/mspell-checker.h"
#include "mspell/mspell-damage-calculator.h"
#include "mspell/mspell-util.h"
-#include "player/player-effects.h"
-#include "player/player-move.h"
-#include "player/player-personalities-table.h"
-#include "spell/spells-type.h"
+#include "player/player-personalities-types.h"
+#include "player/player-status-flags.h"
+#include "spell/spell-types.h"
+#include "status/bad-status-setter.h"
+#include "status/base-status.h"
+#include "system/floor-type-definition.h"
+#include "view/display-messages.h"
/*!
* @brief 状態異常呪文のメッセージ処理関数。 /
bool saving_throw, int TARGET_TYPE)
{
floor_type *floor_ptr = target_ptr->current_floor_ptr;
- bool see_either = see_monster(floor_ptr, m_idx) || see_monster(floor_ptr, t_idx);
- bool see_t = see_monster(floor_ptr, t_idx);
+ bool see_either = see_monster(target_ptr, m_idx) || see_monster(target_ptr, t_idx);
+ bool see_t = see_monster(target_ptr, t_idx);
bool known = monster_near_player(floor_ptr, m_idx, t_idx);
GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
monster_name(target_ptr, m_idx, m_name);
}
/*!
- * @brief RF4_DISPELの処理。魔力消去。 /
- * @param m_idx 呪文を唱えるモンスターID
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param t_idx 呪文を受けるモンスターID。プレイヤーの場合はdummyで0とする。
- * @param TARGET_TYPE プレイヤーを対象とする場合MONSTER_TO_PLAYER、モンスターを対象とする場合MONSTER_TO_MONSTER
- */
-void spell_RF4_DISPEL(MONSTER_IDX m_idx, player_type *target_ptr, MONSTER_IDX t_idx, int TARGET_TYPE)
-{
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(target_ptr, m_idx, m_name);
- monster_name(target_ptr, t_idx, t_name);
-
- monspell_message(target_ptr, m_idx, t_idx, _("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."),
- _("%^sが魔力消去の呪文を念じた。", "%^s invokes a dispel magic."), _("%^sが%sに対して魔力消去の呪文を念じた。", "%^s invokes a dispel magic at %s."),
- TARGET_TYPE);
-
- if (TARGET_TYPE == MONSTER_TO_PLAYER) {
- dispel_player(target_ptr);
- if (target_ptr->riding)
- dispel_monster_status(target_ptr, target_ptr->riding);
-
- if (IS_ECHIZEN(target_ptr))
- msg_print(_("やりやがったな!", ""));
- else if ((target_ptr->pseikaku == PERSONALITY_CHARGEMAN)) {
- if (randint0(2) == 0)
- msg_print(_("ジュラル星人め!", ""));
- else
- msg_print(_("弱い者いじめは止めるんだ!", ""));
- }
-
- learn_spell(target_ptr, MS_DISPEL);
- return;
- }
-
- if (TARGET_TYPE == MONSTER_TO_MONSTER) {
- if (t_idx == target_ptr->riding)
- dispel_player(target_ptr);
- dispel_monster_status(target_ptr, t_idx);
- }
-}
-
-/*!
* @brief RF5_DRAIN_MANAの処理。魔力吸収。 /
* @param target_ptr プレーヤーへの参照ポインタ
* @param y 対象の地点のy座標
if (TARGET_TYPE == MONSTER_TO_PLAYER) {
disturb(target_ptr, TRUE, TRUE);
- } else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(target_ptr->current_floor_ptr, m_idx)) {
+ } else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(target_ptr, m_idx)) {
/* Basic message */
msg_format(_("%^sは精神エネルギーを%sから吸いとった。", "%^s draws psychic energy from %s."), m_name, t_name);
}
*/
HIT_POINT spell_RF5_MIND_BLAST(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
{
- floor_type *floor_ptr = target_ptr->current_floor_ptr;
- monster_type *m_ptr = &floor_ptr->m_list[m_idx];
+ monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
bool seen = (!target_ptr->blind && m_ptr->ml);
HIT_POINT dam;
GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
else
msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name);
- } else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(floor_ptr, m_idx)) {
+ } else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(target_ptr, m_idx)) {
msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name, t_name);
}
*/
HIT_POINT spell_RF5_BRAIN_SMASH(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
{
- floor_type *floor_ptr = target_ptr->current_floor_ptr;
- monster_type *m_ptr = &floor_ptr->m_list[m_idx];
+ monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
bool seen = (!target_ptr->blind && m_ptr->ml);
HIT_POINT dam;
GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
else
msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name);
- } else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(floor_ptr, m_idx)) {
+ } else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(target_ptr, m_idx)) {
msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name, t_name);
}
bool resist, saving_throw;
if (TARGET_TYPE == MONSTER_TO_PLAYER) {
- resist = target_ptr->resist_fear;
+ resist = (has_resist_fear(target_ptr) != 0);
saving_throw = (randint0(100 + rlev / 2) < target_ptr->skill_sav);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやくと、恐ろしげな音が聞こえた。", "%^s mumbles, and you hear scary noises."),
_("%^sが恐ろしげな幻覚を作り出した。", "%^s casts a fearful illusion."), _("しかし恐怖に侵されなかった。", "You refuse to be frightened."),
if (TARGET_TYPE != MONSTER_TO_MONSTER)
return;
- resist = tr_ptr->flags3 & RF3_NO_FEAR;
+ resist = ((tr_ptr->flags3 & RF3_NO_FEAR) != 0);
saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sが恐ろしげな幻覚を作り出した。", "%^s casts a fearful illusion in front of %s."),
bool resist, saving_throw;
if (TARGET_TYPE == MONSTER_TO_PLAYER) {
- resist = target_ptr->resist_blind;
+ resist = (has_resist_blind(target_ptr) != 0);
saving_throw = (randint0(100 + rlev / 2) < target_ptr->skill_sav);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
_("%^sが呪文を唱えてあなたの目をくらました!", "%^s casts a spell, burning your eyes!"), _("しかし効果がなかった!", "You are unaffected!"),
msg1 = _("%sは呪文を唱えて%sの目を焼き付かせた。", "%^s casts a spell, burning %s's eyes.");
}
- resist = tr_ptr->flags3 & RF3_NO_CONF;
+ resist = ((tr_ptr->flags3 & RF3_NO_CONF) != 0);
saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
spell_badstatus_message(target_ptr, m_idx, t_idx, msg1, _("%^sには効果がなかった。", "%^s is unaffected."),
bool resist, saving_throw;
if (TARGET_TYPE == MONSTER_TO_PLAYER) {
- resist = target_ptr->resist_conf;
+ resist = (has_resist_conf(target_ptr) != 0);
saving_throw = (randint0(100 + rlev / 2) < target_ptr->skill_sav);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやくと、頭を悩ます音がした。", "%^s mumbles, and you hear puzzling noises."),
_("%^sが誘惑的な幻覚を作り出した。", "%^s creates a mesmerising illusion."),
if (TARGET_TYPE != MONSTER_TO_MONSTER)
return;
- resist = tr_ptr->flags3 & RF3_NO_CONF;
+ resist = ((tr_ptr->flags3 & RF3_NO_CONF) != 0);
saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sが%sの前に幻惑的な幻をつくり出した。", "%^s casts a mesmerizing illusion in front of %s."),
bool resist, saving_throw;
if (TARGET_TYPE == MONSTER_TO_PLAYER) {
- resist = target_ptr->free_act;
+ resist = (target_ptr->free_act != 0);
saving_throw = (randint0(100 + rlev / 2) < target_ptr->skill_sav);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sが何かをつぶやいた。", "%^s mumbles."),
_("%^sがあなたの目をじっと見つめた!", "%^s stares deep into your eyes!"), _("しかし効果がなかった!", "You are unaffected!"),
- _("しかし効力を跳ね返した!", "You resist the effects!"), resist, saving_throw, TARGET_TYPE);
+ _("しかし効力を跳ね返した!", "You resist the effects!"), (bool)resist, saving_throw, TARGET_TYPE);
if (!resist && !saving_throw) {
(void)set_paralyzed(target_ptr, target_ptr->paralyzed + randint0(4) + 4);
if (TARGET_TYPE != MONSTER_TO_MONSTER)
return;
- resist = (tr_ptr->flags1 & RF1_UNIQUE) || (tr_ptr->flags3 & RF3_NO_STUN);
+ resist = ((tr_ptr->flags1 & RF1_UNIQUE) != 0 || (tr_ptr->flags3 & RF3_NO_STUN) != 0);
saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sは%sをじっと見つめた。", "%^s stares intently at %s."),
_("%^sには効果がなかった。", "%^s is unaffected."), _("%^sには効果がなかった。", "%^s is unaffected."), _("%^sは麻痺した!", "%^s is paralyzed!"),
- resist, saving_throw, TARGET_TYPE);
+ (bool)resist, saving_throw, TARGET_TYPE);
if (!resist && !saving_throw) {
(void)set_monster_stunned(target_ptr, t_idx, monster_stunned_remaining(t_ptr) + randint1(4) + 4);
*/
void spell_RF6_HASTE(player_type *target_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
{
- floor_type *floor_ptr = target_ptr->current_floor_ptr;
- bool see_m = see_monster(floor_ptr, m_idx);
- monster_type *m_ptr = &floor_ptr->m_list[m_idx];
+ bool see_m = see_monster(target_ptr, m_idx);
+ monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
GAME_TEXT m_name[MAX_NLEN];
monster_name(target_ptr, m_idx, m_name);
char m_poss[10];
bool resist, saving_throw;
if (TARGET_TYPE == MONSTER_TO_PLAYER) {
- resist = target_ptr->resist_conf;
+ resist = (has_resist_conf(target_ptr) != 0);
saving_throw = (randint0(100 + rlev / 2) < target_ptr->skill_sav);
spell_badstatus_message(target_ptr, m_idx, t_idx, _("%^sがあなたの筋力を吸い取ろうとした!", "%^s drains power from your muscles!"),
_("%^sがあなたの筋力を吸い取ろうとした!", "%^s drains power from your muscles!"), _("しかし効果がなかった!", "You are unaffected!"),
msg1 = _("%sが%sの筋肉から力を吸いとった。", "%^s drains power from %s's muscles.");
}
- resist = tr_ptr->flags1 & RF1_UNIQUE;
+ resist = ((tr_ptr->flags1 & RF1_UNIQUE) != 0);
saving_throw = (tr_ptr->level > randint1((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10);
spell_badstatus_message(target_ptr, m_idx, t_idx, msg1, _("%^sには効果がなかった。", "%^s is unaffected."),
(void)set_monster_monfear(target_ptr, m_idx, 0);
- if (see_monster(floor_ptr, m_idx))
+ if (see_monster(target_ptr, m_idx))
msg_format(_("%^sは勇気を取り戻した。", format("%%^s recovers %s courage.", m_poss)), m_name);
}
_("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), _("%sは無傷の球の呪文を唱えた。", "%^s casts a Globe of Invulnerability."),
_("%sは無傷の球の呪文を唱えた。", "%^s casts a Globe of Invulnerability."), !seen, TARGET_TYPE);
+ MONRACE_IDX r_idx = m_ptr->r_idx;
+ if ((r_idx == MON_MARIO) || r_idx == MON_LUIGI) {
+ GAME_TEXT m_name[MAX_NLEN];
+ monster_desc(target_ptr, m_name, m_ptr, MD_NONE);
+ msg_format(_("%sはスターを取った!", "%^s got a star!"), m_name);
+ }
+
if (!monster_invulner_remaining(m_ptr))
(void)set_monster_invulner(target_ptr, m_idx, randint1(4) + 4, FALSE);
}