From fd4e927bf5bd2b7b976ab971427960012523a9ca Mon Sep 17 00:00:00 2001 From: nothere Date: Fri, 16 May 2003 08:17:24 +0000 Subject: [PATCH] =?utf8?q?=E3=83=9A=E3=83=83=E3=83=88=E3=81=AE=E5=91=BD?= =?utf8?q?=E4=BB=A4=E5=87=A6=E7=90=86=E9=83=A8=E5=88=86=E3=82=92=E6=95=B4?= =?utf8?q?=E7=90=86.=20=E3=81=BE=E3=81=9F,=20RF=3F=5FBALL=5FMASK=E3=81=AE?= =?utf8?q?=E9=AD=94=E6=B3=95=E3=82=92=E6=8C=81=E3=81=9F=E3=81=AA=E3=81=84?= =?utf8?q?=E3=83=A2=E3=83=B3=E3=82=B9=20=E3=82=BF=E3=83=BC=E3=81=A7?= =?utf8?q?=E3=81=AF=E3=83=9C=E3=83=BC=E3=83=AB=E9=AD=94=E6=B3=95=E5=B7=BB?= =?utf8?q?=E3=81=8D=E6=B7=BB=E3=81=88=E5=88=A4=E5=AE=9A=E3=81=AE=E5=87=A6?= =?utf8?q?=E7=90=86=E3=82=92=E3=81=97=E3=81=AA=E3=81=84=E3=82=88=E3=81=86?= =?utf8?q?=E3=81=AB=E5=A4=89=E6=9B=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/mspells2.c | 137 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 72 insertions(+), 65 deletions(-) diff --git a/src/mspells2.c b/src/mspells2.c index 9318bbb0a..dd795e488 100644 --- a/src/mspells2.c +++ b/src/mspells2.c @@ -317,12 +317,6 @@ bool monst_spell_monst(int m_idx) /* Extract the monster level */ rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1); - if (pet) - { - f4 &= ~(RF4_SHRIEK); - f6 &= ~(RF6_DARKNESS | RF6_TRAPS); - } - if (dun_level && (!p_ptr->inside_quest || (p_ptr->inside_quest < MIN_RANDOM_QUEST)) && (d_info[dungeon_type].flags1 & DF1_NO_MAGIC)) { f4 &= (RF4_NOMAGIC_MASK); @@ -341,11 +335,6 @@ bool monst_spell_monst(int m_idx) f6 &= ~(RF6_HEAL); } - if (!(p_ptr->pet_extra_flags & PF_TELEPORT) && pet) - { - f6 &= ~((RF6_BLINK | RF6_TPORT | RF6_TELE_AWAY)); - } - if (m_idx == p_ptr->riding) { f4 &= ~(RF4_RIDING_MASK); @@ -353,72 +342,90 @@ bool monst_spell_monst(int m_idx) f6 &= ~(RF6_RIDING_MASK); } - if (!(p_ptr->pet_extra_flags & PF_ATTACK_SPELL) && pet) - { - f4 &= ~(RF4_ATTACK_MASK); - f5 &= ~(RF5_ATTACK_MASK); - f6 &= ~(RF6_ATTACK_MASK); - } - - if (!(p_ptr->pet_extra_flags & PF_SUMMON_SPELL) && pet) + if (pet) { - f4 &= ~(RF4_SUMMON_MASK); - f5 &= ~(RF5_SUMMON_MASK); - f6 &= ~(RF6_SUMMON_MASK); - } + f4 &= ~(RF4_SHRIEK); + f6 &= ~(RF6_DARKNESS | RF6_TRAPS); - /* Prevent collateral damage */ - if (!(p_ptr->pet_extra_flags & PF_BALL_SPELL) && pet && (m_idx != p_ptr->riding)) - { - int real_y = y; - int real_x = x; - int dist; + if (!(p_ptr->pet_extra_flags & PF_TELEPORT)) + { + f6 &= ~(RF6_BLINK | RF6_TPORT | RF6_TELE_AWAY); + } - /* Expected breath radius */ - int rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2; + if (!(p_ptr->pet_extra_flags & PF_ATTACK_SPELL)) + { + f4 &= ~(RF4_ATTACK_MASK); + f5 &= ~(RF5_ATTACK_MASK); + f6 &= ~(RF6_ATTACK_MASK); + } - get_project_point(m_ptr->fy, m_ptr->fx, &real_y, &real_x); - dist = distance(real_y, real_x, py, px); + if (!(p_ptr->pet_extra_flags & PF_SUMMON_SPELL)) + { + f4 &= ~(RF4_SUMMON_MASK); + f5 &= ~(RF5_SUMMON_MASK); + f6 &= ~(RF6_SUMMON_MASK); + } - if (los(real_y, real_x, py, px)) + /* Prevent collateral damage */ + if (!(p_ptr->pet_extra_flags & PF_BALL_SPELL) && (m_idx != p_ptr->riding)) { - if (dist <= 2) + if ((f4 & RF4_BALL_MASK) || + (f5 & RF5_BALL_MASK) || + (f6 & RF6_BALL_MASK)) { - f4 &= ~(RF4_BALL_MASK); - f5 &= ~(RF5_BALL_MASK); - f6 &= ~(RF6_BALL_MASK); + int real_y = y; + int real_x = x; + int dist; + + get_project_point(m_ptr->fy, m_ptr->fx, &real_y, &real_x); + dist = distance(real_y, real_x, py, px); + + if (los(real_y, real_x, py, px)) + { + if (dist <= 2) + { + f4 &= ~(RF4_BALL_MASK); + f5 &= ~(RF5_BALL_MASK); + f6 &= ~(RF6_BALL_MASK); + } + else if (dist <= 4) + { + f4 &= ~(RF4_BIG_BALL_MASK); + f5 &= ~(RF5_BIG_BALL_MASK); + f6 &= ~(RF6_BIG_BALL_MASK); + } + } } - else if (dist <= 4) + + if (((f4 & RF4_BEAM_MASK) || + (f5 & RF5_BEAM_MASK) || + (f6 & RF6_BEAM_MASK)) && + !direct_beam(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, m_ptr)) { - f4 &= ~(RF4_BIG_BALL_MASK); - f5 &= ~(RF5_BIG_BALL_MASK); - f6 &= ~(RF6_BIG_BALL_MASK); + f4 &= ~(RF4_BEAM_MASK); + f5 &= ~(RF5_BEAM_MASK); + f6 &= ~(RF6_BEAM_MASK); } - } - if (((f4 & RF4_BEAM_MASK) || - (f5 & RF5_BEAM_MASK) || - (f6 & RF6_BEAM_MASK)) && - !direct_beam(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, m_ptr)) - { - f4 &= ~(RF4_BEAM_MASK); - f5 &= ~(RF5_BEAM_MASK); - f6 &= ~(RF6_BEAM_MASK); - } + if ((f4 & RF4_BREATH_MASK) || + (f5 & RF5_BREATH_MASK) || + (f6 & RF6_BREATH_MASK)) + { + /* Expected breath radius */ + int rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2; - if (((f4 & RF4_BREATH_MASK) || - (f5 & RF5_BREATH_MASK) || - (f6 & RF6_BREATH_MASK)) && - !breath_direct(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, rad, FALSE, TRUE)) - { - f4 &= ~(RF4_BREATH_MASK); - f5 &= ~(RF5_BREATH_MASK); - f6 &= ~(RF6_BREATH_MASK); - } - else if ((f4 & RF4_BR_DISI) && - !breath_direct(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, rad, TRUE, TRUE)) - { - f4 &= ~(RF4_BR_DISI); + if (!breath_direct(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, rad, FALSE, TRUE)) + { + f4 &= ~(RF4_BREATH_MASK); + f5 &= ~(RF5_BREATH_MASK); + f6 &= ~(RF6_BREATH_MASK); + } + else if ((f4 & RF4_BR_DISI) && + !breath_direct(m_ptr->fy, m_ptr->fx, t_ptr->fy, t_ptr->fx, rad, TRUE, TRUE)) + { + f4 &= ~(RF4_BR_DISI); + } + } } } -- 2.11.0