/*
+ * 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 \
u32b f4, f5, f6;
- /* Expected ball spell radius */
- int rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2;
-
bool wake_up = FALSE;
bool fear = FALSE;
/* 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) ||