Index: code/object/object.cpp
===================================================================
RCS file: /home/fs2source/cvsroot/fs2_open/code/object/object.cpp,v
retrieving revision 2.63.2.2
diff -u -r2.63.2.2 object.cpp
--- code/object/object.cpp	5 Jul 2006 23:36:56 -0000	2.63.2.2
+++ code/object/object.cpp	21 Jul 2006 20:55:18 -0000
@@ -953,6 +953,10 @@
 
 	if (!(The_mission.ai_profile->flags & AIPF_SMART_SHIELD_MANAGEMENT))
 	{
+		// if we aren't going to change anything anyway then just bail
+		if (delta == 0.0f)
+			return;
+
 		for (i=0; i<MAX_SHIELD_SECTIONS; i++) {
 			objp->shield_quadrant[i] += delta/MAX_SHIELD_SECTIONS;
 			if (objp->shield_quadrant[i] > section_max)
Index: code/ai/aicode.cpp
===================================================================
RCS file: /home/fs2source/cvsroot/fs2_open/code/ai/aicode.cpp,v
retrieving revision 1.72.2.6
diff -u -r1.72.2.6 aicode.cpp
--- code/ai/aicode.cpp	5 Jul 2006 23:47:59 -0000	1.72.2.6
+++ code/ai/aicode.cpp	21 Jul 2006 20:55:20 -0000
@@ -12827,21 +12827,37 @@
 	float	shield_strength_avg;
 	float	delta;
 
+	// if we are already at the max shield strength for all quads then just bail now
+	if ( Ships[objp->instance].ship_max_shield_strength == get_shield_strength(objp) )
+		return;
+
 
 	shield_strength_avg = get_shield_strength(objp)/MAX_SHIELD_SECTIONS;
 
 	delta = SHIELD_BALANCE_RATE * shield_strength_avg;
 
-	for (i=0; i<MAX_SHIELD_SECTIONS; i++)
+	for (i=0; i<MAX_SHIELD_SECTIONS; i++) {
 		if (objp->shield_quadrant[i] < shield_strength_avg) {
-			add_shield_strength(objp, delta);
+			// only do it the retail way if using smart shields (since that's a bigger thing) - taylor
+			if (The_mission.ai_profile->flags & AIPF_SMART_SHIELD_MANAGEMENT)
+				add_shield_strength(objp, delta);
+			else
+				objp->shield_quadrant[i] += delta/MAX_SHIELD_SECTIONS;
+
 			if (objp->shield_quadrant[i] > shield_strength_avg)
 				objp->shield_quadrant[i] = shield_strength_avg;
+
 		} else {
-			add_shield_strength(objp, -delta);
+			// only do it the retail way if using smart shields (since that's a bigger thing) - taylor
+			if (The_mission.ai_profile->flags & AIPF_SMART_SHIELD_MANAGEMENT)
+				add_shield_strength(objp, -delta);
+			else
+				objp->shield_quadrant[i] -= delta/MAX_SHIELD_SECTIONS;
+
 			if (objp->shield_quadrant[i] < shield_strength_avg)
 				objp->shield_quadrant[i] = shield_strength_avg;
 		}
+	}
 }
 
 //	Manage the shield for this ship.
