Index: mspells1.c
===================================================================
RCS file: /home/zangband/cvs/z-2.3/src/mspells1.c,v
retrieving revision 1.36
retrieving revision 1.18.4.3
diff -u -r1.36 -r1.18.4.3
--- mspells1.c	2000/08/17 11:39:12	1.36
+++ mspells1.c	2000/08/21 11:27:14	1.18.4.3
@@ -1,4 +1,4 @@
-/* CVS: Last edit by $Author: habu $ on $Date: 2001-05-11 07:35:58 +0900 (Fri, 11 May 2001) $ */
+/* CVS: Last edit by $Author: habu $ on $Date: 2001-05-11 07:35:58 +0900 (Fri, 11 May 2001) $ */
 /* File: mspells1.c */
 
 /* Purpose: Monster spells (attack player) */
@@ -14,6 +14,8 @@
 #include "angband.h"
 
 
+#ifdef DRS_SMART_OPTIONS
+
 /*
  * And now for Intelligent monster attacks (including spells).
  *
@@ -49,8 +51,8 @@
  * Internal probability routine
  */
 
-#define int_outof(dumb, prob) \
-	(randint((dumb) ? ((prob) / 2) : (prob)) < 100)
+#define int_outof(dumb,prob) \
+	(randint((dumb)?((prob) / 2):(prob)) < 100) 
 
 /*
  * Remove the "bad" spells from a spell list
@@ -130,7 +132,7 @@
 	/* Nothing known */
 	if (!smart) return;
 
-	/*
+	/* 
 	 * Hack - some of the RNG calls have been removed from the
 	 * earlier code.  This should speed it up.
 	 */
@@ -216,7 +218,7 @@
 	{
 		f4 &= ~(RF4_BR_POIS);
 		f5 &= ~(RF5_BA_POIS);
-
+		
 		if (rand_int(2))
 		{
 			f4 &= ~(RF4_BA_NUKE | RF4_BR_NUKE);
@@ -257,7 +259,7 @@
 	if ((smart & (SM_RES_CONF)) && (int_outof(is_dumb, 100)))
 	{
 		f5 &= ~(RF5_CONF);
-
+		
 		if (rand_int(2))
 		{
 			f4 &= ~(RF4_BR_CONF);
@@ -296,7 +298,7 @@
 	if ((smart & (SM_RES_SHARD)) && (int_outof(is_dumb, 50)))
 	{
 		f4 &= ~(RF4_BR_SHAR);
-
+		
 		if (rand_int(2))
 		{
 			f4 &= ~(RF4_ROCKET);
@@ -331,6 +333,8 @@
 	(*f6p) = f6;
 }
 
+#endif /* DRS_SMART_OPTIONS */
+
 
 /*
  * Determine if there is a space near the player in which
@@ -347,19 +351,19 @@
 	for (dy = -2; dy <= 2; dy++)
 	{
 		for (dx = -2; dx <= 2; dx++)
-		{
+		{			
 			/* Only check a circular area */
 			if ((abs(dx) == 2) && (abs(dy) == 2)) continue;
-
+			
 			/* Get square */
 			x = x1 + dx;
 			y = y1 + dy;
 
 			/* Ignore illegal locations */
 			if (!in_bounds(y, x)) continue;
-
+			
 			/* Access Grid */
-			c_ptr = area(y, x);
+			c_ptr = &cave[y][x];
 
 			/* Hack: no summon on glyph of warding */
 			if (c_ptr->feat == FEAT_GLYPH) continue;
@@ -368,16 +372,9 @@
 			/* ...nor on the Pattern */
 			if ((c_ptr->feat >= FEAT_PATTERN_START) &&
 			    (c_ptr->feat <= FEAT_PATTERN_XTRA2)) continue;
-				
-			/* Check to see if fields dissallow placement */
-			if (fields_have_flags(c_ptr->fld_idx, FIELD_INFO_ENTER))
-			{ 
-				/* Cannot create */
-				return(FALSE);
-			}
 
-			/* Require empty floor grid in line of sight of player */
-			if (cave_empty_grid(c_ptr) && (c_ptr->info & CAVE_VIEW)) return (TRUE);
+			/* Require empty floor grid in line of sight */
+			if (cave_empty_bold(y,x) && los(y1, x1, y, x)) return (TRUE);
 		}
 	}
 
@@ -482,7 +479,9 @@
 	{
 		char o_name[256];
 		object_desc(o_name, o_ptr, FALSE, 0);
-		msg_format("Your %s resists cursing!", o_name);
+		msg_format("Your %s resist%s cursing!", o_name,
+			((o_ptr->number > 1) ? "" : "s"));
+		/* Hmmm -- can we wear multiple items? If not, this is unnecessary */
 		return;
 	}
 
@@ -536,7 +535,7 @@
 
 	bool has_escape, has_attack, has_summon, has_tactic;
 	bool has_annoy, has_invul, has_haste, has_heal;
-
+	
 	int num = 0;
 	byte spells[96];
 
@@ -570,7 +569,7 @@
 		has_heal = ((f4 & (RF4_HEAL_MASK)) ||
 		            (f5 & (RF5_HEAL_MASK)) ||
 		            (f6 & (RF6_HEAL_MASK)));
-
+	
 		/*** Try to pick an appropriate spell type ***/
 
 		/* Hurt badly or afraid, attempt to flee */
@@ -668,7 +667,7 @@
 			f5_mask = (RF5_ANNOY_MASK);
 			f6_mask = (RF6_ANNOY_MASK);
 		}
-
+		
 		/* Else choose no spell (The masks default to this.) */
 
 		/* Keep only the interesting spells */
@@ -678,8 +677,8 @@
 
 		/* Anything left? */
 		if (!(f4 || f5 || f6)) return (0);
-	}
-
+	}		
+	
 	/* Extract the "innate" spells */
 	for (i = 0; i < 32; i++)
 	{
@@ -858,12 +857,16 @@
 		if (!f4 && !f5 && !f6) return (FALSE);
 	}
 
+#ifdef DRS_SMART_OPTIONS
+
 	/* Remove the "ineffective" spells */
 	remove_bad_spells(m_idx, &f4, &f5, &f6);
 
 	/* No spells left */
 	if (!f4 && !f5 && !f6) return (FALSE);
 
+#endif /* DRS_SMART_OPTIONS */
+
 	if (!stupid_monsters)
 	{
 		/* Check for a clean bolt shot */
@@ -1080,7 +1083,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes nether.", m_name);
 			breath(m_idx, GF_NETHER,
-				((m_ptr->hp / 6) > 550 ? 450 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_NETH);
 			break;
 		}
@@ -1092,7 +1095,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes light.", m_name);
 			breath(m_idx, GF_LITE,
-				((m_ptr->hp / 6) > 350 ? 350 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_LITE);
 			break;
 		}
@@ -1104,7 +1107,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes darkness.", m_name);
 			breath(m_idx, GF_DARK,
-				((m_ptr->hp / 6) > 350 ? 350 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_DARK);
 			break;
 		}
@@ -1116,7 +1119,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes confusion.", m_name);
 			breath(m_idx, GF_CONFUSION,
-				((m_ptr->hp / 6) > 350 ? 350 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_CONF);
 			break;
 		}
@@ -1128,7 +1131,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes sound.", m_name);
 			breath(m_idx, GF_SOUND,
-				((m_ptr->hp / 6) > 350 ? 350 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_SOUND);
 			break;
 		}
@@ -1140,7 +1143,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes chaos.", m_name);
 			breath(m_idx, GF_CHAOS,
-				((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 500 ? 500 : (m_ptr->hp / 4)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_CHAOS);
 			break;
 		}
@@ -1152,7 +1155,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes disenchantment.", m_name);
 			breath(m_idx, GF_DISENCHANT,
-				((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_DISEN);
 			break;
 		}
@@ -1187,7 +1190,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes inertia.", m_name);
 			breath(m_idx, GF_INERTIA,
-				((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 200 ? 200 : (m_ptr->hp / 4)), 0, TRUE);
 			break;
 		}
 
@@ -1209,7 +1212,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes shards.", m_name);
 			breath(m_idx, GF_SHARDS,
-				((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_SHARD);
 			break;
 		}
@@ -1221,7 +1224,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes plasma.", m_name);
 			breath(m_idx, GF_PLASMA,
-				((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 150 ? 150 : (m_ptr->hp / 4)), 0, TRUE);
 			break;
 		}
 
@@ -1232,7 +1235,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes force.", m_name);
 			breath(m_idx, GF_FORCE,
-				((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6)), 0, TRUE);
+				((m_ptr->hp / 4) > 200 ? 200 : (m_ptr->hp / 4)), 0, TRUE);
 			break;
 		}
 
@@ -1265,7 +1268,7 @@
 			if (blind) msg_format("%^s breathes.", m_name);
 			else msg_format("%^s breathes toxic waste.", m_name);
 			breath(m_idx, GF_NUKE,
-				((m_ptr->hp / 3) > 600 ? 600 : (m_ptr->hp / 3)), 0, TRUE);
+				((m_ptr->hp / 2) > 600 ? 600 : (m_ptr->hp / 2)), 0, TRUE);
 			update_smart_learn(m_idx, DRS_POIS);
 			break;
 		}
@@ -2118,9 +2121,9 @@
 		case 160+15:
 		{
 			disturb(1, 0);
-			msg_format("%^s mutters quietly.", m_name);
-
-			raise_dead(m_ptr->fy, m_ptr->fx, FALSE);
+			msg_format("%^s mutters quietly.", m_name);		
+			
+			/*raise_dead(m_ptr->fy, m_ptr->fx, FALSE);*/
 			break;
 		}
 
Index: mspells2.c
===================================================================
RCS file: /home/zangband/cvs/z-2.3/src/mspells2.c,v
retrieving revision 1.19
retrieving revision 1.13.4.2
diff -u -r1.19 -r1.13.4.2
--- mspells2.c	2000/07/26 09:09:59	1.19
+++ mspells2.c	2000/08/21 11:27:16	1.13.4.2
@@ -1,4 +1,4 @@
-/* CVS: Last edit by $Author: habu $ on $Date: 2001-05-11 07:35:58 +0900 (Fri, 11 May 2001) $ */
+/* CVS: Last edit by $Author: habu $ on $Date: 2001-05-11 07:35:58 +0900 (Fri, 11 May 2001) $ */
 /* File: mspells2.c */
 
 /* Purpose: Monster spells (attack monster) */
@@ -299,7 +299,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_ROCKET,
-					((m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4)), 2, FALSE);
+					((m_ptr->hp / 4) > 600 ? 600 : (m_ptr->hp / 4)), 2, FALSE);
 
 				break;
 			}
@@ -447,7 +447,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_ACID,
-					((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 1200 ? 1200 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -479,7 +479,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_ELEC,
-					((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 1200 ? 1200 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -511,7 +511,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_FIRE,
-					((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 1200 ? 1200 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -543,7 +543,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_COLD,
-					((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 1200 ? 1200 : (m_ptr->hp / 3)), 0, TRUE);
 				break;
 			}
 
@@ -574,7 +574,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_POIS,
-					((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 600 ? 600 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -606,7 +606,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_NETHER,
-					((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6)), 0, TRUE);
 
 				break;
 			}
@@ -638,7 +638,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_LITE,
-					((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -670,7 +670,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_DARK,
-					((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -702,7 +702,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_CONFUSION,
-					((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -734,7 +734,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_SOUND,
-					((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 350 ? 350 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -766,7 +766,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_CHAOS,
-					((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 500 ? 500 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -798,7 +798,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_DISENCHANT,
-					((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -830,7 +830,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_NEXUS,
-					((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -862,7 +862,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_TIME,
-					((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -894,7 +894,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_INERTIA,
-					((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 200 ? 200 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -926,7 +926,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_GRAVITY,
-					((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -958,7 +958,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_SHARDS,
-					((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 400 ? 400 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -990,7 +990,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_PLASMA,
-					((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 150 ? 150 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -1022,7 +1022,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_FORCE,
-					((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 4)), 0, TRUE);
+					((m_ptr->hp / 4) > 200 ? 200 : (m_ptr->hp / 4)), 0, TRUE);
 
 				break;
 			}
@@ -1054,12 +1054,12 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_MANA,
-					((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
 
-			/* RF4_BA_NUKE */
+			/* RF4_XXX5X4 */
 			case 96+28:
 			{
 				if (known)
@@ -1089,7 +1089,7 @@
 				break;
 			}
 
-			/* RF4_BR_NUKE */
+			/* RF4_XXX6X4 */
 			case 96+29:
 			{
 				if (known)
@@ -1116,12 +1116,12 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_NUKE,
-					((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 2) > 600 ? 600 : (m_ptr->hp / 2)), 0, TRUE);
 
 				break;
 			}
 
-			/* RF4_BA_CHAO */
+			/* RF4_XXX7X4 */
 			case 96+30:
 			{
 				if (known)
@@ -1151,7 +1151,7 @@
 				break;
 			}
 
-			/* RF4_BR_DISI -> Breathe Disintegration */
+			/* RF4_XXX8X4 -> Breathe Disintegration */
 			case 96+31:
 			{
 				if (known)
@@ -1178,7 +1178,7 @@
 				}
 
 				monst_breath_monst(m_idx, y, x, GF_DISINTEGRATE,
-					((m_ptr->hp / 3) > 300 ? 300 : (m_ptr->hp / 2)), 0, TRUE);
+					((m_ptr->hp / 3) > 300 ? 300 : (m_ptr->hp / 3)), 0, TRUE);
 
 				break;
 			}
@@ -1236,7 +1236,7 @@
 					}
 				}
 
-				monst_breath_monst(m_idx, y, x, GF_ELEC, randint(rlev * 3) / 2 + 8, 2, FALSE);
+				monst_breath_monst(m_idx, y, x, GF_ELEC, randint(rlev * 3 / 2) + 8, 2, FALSE);
 
 				break;
 			}
@@ -1294,7 +1294,7 @@
 					}
 				}
 
-				monst_breath_monst(m_idx, y, x, GF_COLD, randint(rlev * 3) / 2 + 10, 2, FALSE);
+				monst_breath_monst(m_idx, y, x, GF_COLD, randint(rlev * 3 / 2) + 10, 2, FALSE);
 
 				break;
 			}
@@ -1411,7 +1411,7 @@
 					}
 				}
 
-				monst_breath_monst(m_idx, y, x, GF_MANA, (rlev * 5) + damroll(10, 10), 4, FALSE);
+				monst_breath_monst(m_idx, y, x, GF_MANA, (rlev * 4) + damroll(10, 10), 4, FALSE);
 
 				break;
 			}
@@ -1440,7 +1440,7 @@
 					}
 				}
 
-				monst_breath_monst(m_idx, y, x, GF_DARK, (rlev * 5) + damroll(10, 10), 4, FALSE);
+				monst_breath_monst(m_idx, y, x, GF_DARK, (rlev * 4) + damroll(10, 10), 4, FALSE);
 
 				break;
 			}
@@ -1500,7 +1500,7 @@
 				/* Attempt a saving throw */
 				if ((tr_ptr->flags1 & RF1_UNIQUE) ||
 					 (tr_ptr->flags3 & RF3_NO_CONF) ||
-					 (tr_ptr->level > randint(rlev * 3) / 2))
+					 (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10))
 				{
 					/* No obvious effect */
 					if (see_both)
@@ -1542,7 +1542,7 @@
 				/* Attempt a saving throw */
 				if ((tr_ptr->flags1 & RF1_UNIQUE) ||
 					 (tr_ptr->flags3 & RF3_NO_CONF) ||
-					 (tr_ptr->level > randint(rlev * 3) / 2))
+					 (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10))
 				{
 					/* No obvious effect */
 					if (see_both)
@@ -1590,7 +1590,7 @@
 					}
 				}
 
-				if (tr_ptr->level > randint(rlev * 3) / 2)
+				if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_both) msg_format("%^s resists!", t_name);
 				}
@@ -1619,7 +1619,7 @@
 					}
 				}
 
-				if (tr_ptr->level > randint(rlev * 3) / 2)
+				if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_both) msg_format("%^s resists!", t_name);
 				}
@@ -1648,7 +1648,7 @@
 					}
 				}
 
-				if (tr_ptr->level > randint(rlev * 3) / 2)
+				if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_both) msg_format("%^s resists!", t_name);
 				}
@@ -1677,7 +1677,7 @@
 					}
 				}
 
-				if (tr_ptr->level > randint(rlev * 3) / 2)
+				if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_both) msg_format("%^s resists!", t_name);
 				}
@@ -1927,7 +1927,7 @@
 				{
 					if (see_t) msg_format("%^s refuses to be frightened.", t_name);
 				}
-				else if (tr_ptr->level > randint(rlev * 3) / 2)
+				else if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_t) msg_format("%^s refuses to be frightened.", t_name);
 				}
@@ -1964,7 +1964,7 @@
 				{
 					if (see_t) msg_format("%^s is unaffected.", t_name);
 				}
-				else if (tr_ptr->level > randint(rlev * 3) / 2)
+				else if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_t) msg_format("%^s is unaffected.", t_name);
 				}
@@ -1999,7 +1999,7 @@
 				{
 					if (see_t) msg_format("%^s disbelieves the feeble spell.", t_name);
 				}
-				else if (tr_ptr->level > randint(rlev * 3) / 2)
+				else if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_t) msg_format("%^s disbelieves the feeble spell.", t_name);
 				}
@@ -2035,7 +2035,7 @@
 				{
 					if (see_t) msg_format("%^s is unaffected.", t_name);
 				}
-				else if (tr_ptr->level > randint(rlev * 3) / 2)
+				else if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_t) msg_format("%^s is unaffected.", t_name);
 				}
@@ -2071,7 +2071,7 @@
 				{
 					if (see_t) msg_format("%^s is unaffected.", t_name);
 				}
-				else if (tr_ptr->level > randint(rlev * 3) / 2)
+				else if (tr_ptr->level > randint((rlev - 10) < 1 ? 1 : (rlev - 10)) + 10)
 				{
 					if (see_t) msg_format("%^s is unaffected.", t_name);
 				}
@@ -2397,13 +2397,9 @@
 				break;
 			}
 
-			/* RF6_RAISE_DEAD */
+			/* RF6_XXX6X6 */
 			case 160+15:
 			{
-				if (raise_dead(m_ptr->fy, m_ptr->fx, (bool)(!is_hostile(m_ptr))) && known && see_m)
-				{
-					msg_format("%^s mutters quietly.", m_name);
-				}
 				break;
 			}
 
