home · contact · privacy
Server: Don't calculate eat_vs_hunger_threshold more often than needed.
[plomrogue] / server / world.py
index cde01988a2fe542e5cb7c95a2b61e3928bd2efb7..21d5f67c14e9bb950992ded6e6e2b3cd0e6f3ddf 100644 (file)
@@ -42,6 +42,17 @@ def hunger(t):
         decrement_lifepoints(t)
 
 
+def eat_vs_hunger_threshold(thingtype):
+    """Return satiation cost of eating for type. Good food for it must be >."""
+    hunger_unit = hunger_per_turn(thingtype)
+    try:
+        actiontype = next(taid for taid in world_db["ThingActions"] if
+                          world_db["ThingActions"][taid]["TA_NAME"] == "use")
+    except StopIteration:
+        return 0
+    return world_db["ThingActions"][actiontype]["TA_EFFORT"] * hunger_unit
+
+
 def set_world_inactive():
     """Set world_db["WORLD_ACTIVE"] to 0 and remove worldstate file."""
     from server.io import safely_remove_worldstate_file
@@ -59,10 +70,10 @@ def turn_over():
     id = 0
     while world_db["Things"][0]["T_LIFEPOINTS"]:
         proliferable_map = world_db["MAP"][:]
-        for id in [id for id in world_db["Things"]
-                   if not world_db["Things"][id]["carried"]]:
-            y = world_db["Things"][id]["T_POSY"]
-            x = world_db["Things"][id]["T_POSX"]
+        for tid in [tid for tid in world_db["Things"]
+                   if not world_db["Things"][tid]["carried"]]:
+            y = world_db["Things"][tid]["T_POSY"]
+            x = world_db["Things"][tid]["T_POSX"]
             proliferable_map[y * world_db["MAP_LENGTH"] + x] = ord('X')
         for id in [id for id in world_db["Things"]]:  # Only what's from start!
             if not id in world_db["Things"] or \