 diff --git a/ai/default/daimilitary.c b/ai/default/daimilitary.c
-index fa00e7e..d6e21f8 100644
+index fa00e7e..078ab0c 100644
 --- a/ai/default/daimilitary.c
 +++ b/ai/default/daimilitary.c
+@@ -527,7 +527,7 @@ static unsigned int assess_danger(struct ai_type *ait, struct city *pcity)
+   if (player_is_cpuhog(pplayer)) {
+     assess_turns = 6;
+   } else {
+-    assess_turns = 3;
++    assess_turns = has_handicap(pplayer, H_ASSESS_DANGER_LIMITED) ? 2 : 3;
+   }
+ 
+   omnimap = !has_handicap(pplayer, H_MAP);
 @@ -552,6 +552,14 @@ static unsigned int assess_danger(struct ai_type *ait, struct city *pcity)
        struct unit_type *utype = unit_type_get(punit);
        struct unit_type_ai *utai = utype_ai_data(utype, ait);

           && !utype_acts_hostile(utype)
           && (utype_has_flag(utype, UTYF_CIVILIAN)
diff --git a/ai/default/daimilitary.h b/ai/default/daimilitary.h
index a494aaa..3939709 100644
--- a/ai/default/daimilitary.h
+++ b/ai/default/daimilitary.h
@@ -20,6 +20,9 @@
 /* server/advisors */
 #include "advchoice.h"
 
+#define ASSESS_DANGER_MAX_DISTANCE         35
+#define AI_HANDICAP_DISTANCE_LIMIT         6
+
 struct unit_type *dai_choose_defender_versus(struct city *pcity,
                                              struct unit *attacker);

+      if (unit_distance > ASSESS_DANGER_MAX_DISTANCE
+          || (has_handicap(pplayer, H_ASSESS_DANGER_LIMITED)
+              && unit_distance > AI_HANDICAP_DISTANCE_LIMIT)) {
+        /* Too far away. */
+        continue;
+      }
+
