OSDN Git Service

ペットの嵐系のボール魔法が@にかするかどうかの判定が間違っていて、
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Wed, 7 Aug 2002 17:24:04 +0000 (17:24 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Wed, 7 Aug 2002 17:24:04 +0000 (17:24 +0000)
一番外側でかすってしまっていたので修正した。その他のボール魔法で
半径2なのに半径3と誤認して射たない事があったのでそれも同時に修正。

src/defines.h
src/mspells2.c

index 20b7497..f08db75 100644 (file)
 
 
 /*
+ * Hack -- 'ball' spells with radius 4 that may hurt friends
+ */
+#define RF4_BIG_BALL_MASK \
+       (RF4_BA_CHAO)
+
+#define RF5_BIG_BALL_MASK \
+       (RF5_BA_LITE | RF5_BA_DARK | RF5_BA_WATE | RF5_BA_MANA)
+
+#define RF6_BIG_BALL_MASK \
+       0L
+
+
+/*
  * Hack -- 'breath' spells that may hurt friends
  */
 #define RF4_BREATH_MASK \
index c57426a..0d8406e 100644 (file)
@@ -170,9 +170,6 @@ bool monst_spell_monst(int m_idx)
 
        u32b f4, f5, f6;
 
-       /* Expected ball spell radius */
-       int rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2;
-
        bool wake_up = FALSE;
        bool fear = FALSE;
 
@@ -318,12 +315,23 @@ bool monst_spell_monst(int m_idx)
                /* Prevent collateral damage */
                if (!(p_ptr->pet_extra_flags & PF_BALL_SPELL) && pet && (m_idx != p_ptr->riding))
                {
-                       if(distance(py, px, y, x) <= rad)
+                        int dist = distance(py, px, y, x);
+
+                        /* Expected breath radius */
+                        int rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2;
+
+                       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);
+                       }
 
                        if (((f4 & RF4_BEAM_MASK) ||
                             (f5 & RF5_BEAM_MASK) ||