home · contact · privacy
Server: Update worldstate during any turn change -> be more responsive.
[plomrogue] / server / world.py
index cde01988a2fe542e5cb7c95a2b61e3928bd2efb7..ff8043ed492398fa9ce5947e868696fb738124af 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
@@ -56,13 +67,15 @@ def turn_over():
     from server.config.misc import calc_effort
     from server.update_map_memory import update_map_memory
     from server.thingproliferation import thingproliferation
+    from server.io import try_worldstate_update
+    from server.config.io import io_db
     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 \
@@ -90,3 +103,5 @@ def turn_over():
                         Thing["T_PROGRESS"] = 0
             thingproliferation(Thing, proliferable_map)
         world_db["TURN"] += 1
+        io_db["worldstate_updateable"] = True
+        try_worldstate_update()