home · contact · privacy
Minor optimization in update_map_memory().
[plomrogue] / roguelike-server
index 483dc22f75171bb588c2d4c471a44637da88938e..56354d51e23b3b2a090a0f8fe8b39601c7a15da5 100755 (executable)
@@ -500,10 +500,9 @@ def update_map_memory(t, age_map=True):
             t["T_MEMMAP"][pos] = world_db["MAP"][pos]
     if age_map:
         age_some_memdepthmap_on_nonfov_cells()
-    for mt in [mt for mt in t["T_MEMTHING"]
-               if ord_v == t["fovmap"][(mt[1] * world_db["MAP_LENGTH"])
-                                       + mt[2]]]:
-        t["T_MEMTHING"].remove(mt)
+    t["T_MEMTHING"] = [mt for mt in t["T_MEMTHING"]
+                       if ord_v != t["fovmap"][(mt[1] * world_db["MAP_LENGTH"])
+                                               + mt[2]]]
     for id in [id for id in world_db["Things"]
                if not world_db["Things"][id]["carried"]]:
         type = world_db["Things"][id]["T_TYPE"]
@@ -656,15 +655,18 @@ def actor_move(t):
 
 def actor_pick_up(t):
     """Make t pick up (topmost?) Thing from ground into inventory."""
-    # Topmostness is actually not defined so far. Picks Thing with highest ID.
+    # Topmostness is actually not defined so far. Picks most nutritious Thing.
     ids = [id for id in world_db["Things"] if world_db["Things"][id] != t
            if not world_db["Things"][id]["carried"]
            if world_db["Things"][id]["T_POSY"] == t["T_POSY"]
            if world_db["Things"][id]["T_POSX"] == t["T_POSX"]]
     if len(ids):
-        highest_id = 0
+        highest_id = ids[0]
+        nutritious = 0
         for id in ids:
-            if id > highest_id:
+            type = world_db["Things"][id]["T_TYPE"]
+            if world_db["ThingTypes"][type]["TT_CONSUMABLE"] > nutritious:
+                nutritious = world_db["ThingTypes"][type]["TT_CONSUMABLE"]
                 highest_id = id
         world_db["Things"][highest_id]["carried"] = True
         t["T_CARRIES"].append(highest_id)