home · contact · privacy
Server: Simplify code.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 2 Mar 2016 00:57:24 +0000 (01:57 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 2 Mar 2016 00:57:24 +0000 (01:57 +0100)
server/ai.py

index 854340958c54a3e2873231176187b44865ccf01a..415d533a5b70603c56eec796dd8f24df5d2991be 100644 (file)
@@ -84,35 +84,28 @@ def get_dir_to_target(t, filter):
         return False
 
     def seeing_thing():
-        maplength = world_db["MAP_LENGTH"]
-        if t["fovmap"] and "a" == filter:
+        def exists(gen):
             try:
-                next((Thing for Thing in animates_in_fov(maplength)
-                            if good_attack_target(Thing)))
+                next(gen)
             except StopIteration:
                 return False
             return True
+        maplength = world_db["MAP_LENGTH"]
+        if t["fovmap"] and "a" == filter:
+            return exists(Thing for Thing in animates_in_fov(maplength)
+                                if good_attack_target(Thing))
         elif t["fovmap"] and "f" == filter:
-            try:
-                next((Thing for Thing in animates_in_fov(maplength)
-                            if good_flee_target(Thing)))
-            except StopIteration:
-                return False
-            return True
+            return exists(Thing for Thing in animates_in_fov(maplength)
+                                if good_flee_target(Thing))
         elif t["T_MEMMAP"] and "c" == filter:
             eat_cost = eat_vs_hunger_threshold(t["T_TYPE"])
             ord_blank = ord(" ")
             map_len = world_db["MAP_LENGTH"]
-            try:
-                next(mt for mt in t["T_MEMTHING"]
-                     if ord_blank != t["T_MEMMAP"][mt[1] * map_len + mt[2]]
-                     and world_db["ThingTypes"][mt[0]]["TT_TOOL"] == "food"
-                     and world_db["ThingTypes"][mt[0]]["TT_TOOLPOWER"]
-                        > eat_cost)
-            except StopIteration:
-                return False
-            return True
-
+            return exists(mt for mt in t["T_MEMTHING"]
+                          if ord_blank != t["T_MEMMAP"][mt[1] * map_len + mt[2]]
+                          and world_db["ThingTypes"][mt[0]]["TT_TOOL"] == "food"
+                          and world_db["ThingTypes"][mt[0]]["TT_TOOLPOWER"]
+                             > eat_cost)
         return False
 
     def set_cells_passable_on_memmap_to_65534_on_scoremap():