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

           && !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);

diff --git a/ai/default/daimilitary.c b/ai/default/daimilitary.c
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);
