Index: code/ai/aibig.cpp
===================================================================
--- code/ai/aibig.cpp	(revision 5643)
+++ code/ai/aibig.cpp	(working copy)
@@ -1417,7 +1417,7 @@
 	if (aip->submode_parm1 == 1) {
 		accelerate_ship(aip, 1.0f);
 		//Use afterburners if we have them and are pointed the right way
-		if (dot_to_goal > 0.99f) {
+		if (dot_to_goal > 0.99f && ai_maybe_fire_afterburner(Pl_objp, aip)) {
 			afterburners_start(Pl_objp);
 			aip->afterburner_stop_time = Missiontime + 3*F1_0;
 		}
Index: code/ai/aicode.cpp
===================================================================
--- code/ai/aicode.cpp	(revision 5643)
+++ code/ai/aicode.cpp	(working copy)
@@ -5057,15 +5057,17 @@
 	} else
 		accelerate_ship(aip, (float) (Game_skill_level+2) / (NUM_SKILL_LEVELS+1));
 
-	if ((Missiontime - aip->submode_start_time > F1_0/2) && (sip->afterburner_fuel_capacity > 0.0f)) {
-		float percent_left = 100.0f * shipp->afterburner_fuel / sip->afterburner_fuel_capacity;
-		if (percent_left > 30.0f + ((Pl_objp-Objects) & 0x0f)) {
-			afterburners_start(Pl_objp);
+	if (ai_maybe_fire_afterburner(Pl_objp, aip)){
+		if ((Missiontime - aip->submode_start_time > F1_0/2) && (sip->afterburner_fuel_capacity > 0.0f)) {
+			float percent_left = 100.0f * shipp->afterburner_fuel / sip->afterburner_fuel_capacity;
+			if (percent_left > 30.0f + ((Pl_objp-Objects) & 0x0f)) {
+				afterburners_start(Pl_objp);
 			
-			if (aip->ai_profile_flags & AIPF_SMART_AFTERBURNER_MANAGEMENT) {
-				aip->afterburner_stop_time = (fix) (Missiontime + F1_0 + static_randf(Pl_objp-Objects) * F1_0 / 4);
-			} else {				
-				aip->afterburner_stop_time = Missiontime + F1_0 + static_rand(Pl_objp-Objects)/4;
+				if (aip->ai_profile_flags & AIPF_SMART_AFTERBURNER_MANAGEMENT) {
+					aip->afterburner_stop_time = (fix) (Missiontime + F1_0 + static_randf(Pl_objp-Objects) * F1_0 / 4);
+				} else {				
+					aip->afterburner_stop_time = Missiontime + F1_0 + static_rand(Pl_objp-Objects)/4;
+				}
 			}
 		}
 	}
@@ -13788,7 +13790,7 @@
 	else {
 		accelerate_ship(aip, 1.0f + dot_to_goal);
 		if (dot_to_goal > 0.2f) {
-			if (!(objp->phys_info.flags & PF_AFTERBURNER_ON )) {
+			if (ai_maybe_fire_afterburner(Pl_objp, aip) && !(objp->phys_info.flags & PF_AFTERBURNER_ON )) {
 				afterburners_start(objp);
 				aip->afterburner_stop_time = Missiontime + 2*F1_0;
 			}
Index: code/ship/afterburner.cpp
===================================================================
--- code/ship/afterburner.cpp	(revision 5643)
+++ code/ship/afterburner.cpp	(working copy)
@@ -87,6 +87,13 @@
 	Assert( shipp->ship_info_index >= 0 && shipp->ship_info_index < Num_ship_classes );
 	sip = &Ship_info[shipp->ship_info_index];
 	
+    // When the ship has no afterburner, leave without doing anything.
+    // Caller should have tested ship equipment before deciding to start afterburners.
+	if ( !(sip->flags & SIF_AFTERBURNER) )	{
+        nprintf(("Warning","Ship type %s does not have afterburner capability\n", sip->name));
+		return;
+	}
+
 	// bail if afterburners are locked
 	if (shipp->flags2 & SF2_AFTERBURNER_LOCKED)	{
 		return;
@@ -113,11 +120,7 @@
 	//boosters take precedence
 	if (objp->phys_info.flags & PF_BOOSTER_ON)
 		return;	
-	
-	if ( !(sip->flags & SIF_AFTERBURNER) )	{
-		return;
-	}
-
+	    
 	// Check if there is enough afterburner fuel
 	if ( (shipp->afterburner_fuel < MIN_AFTERBURNER_FUEL_TO_ENGAGE) && !MULTIPLAYER_CLIENT ) {
 		if ( objp == Player_obj ) {
