home · contact · privacy
Further improve get_inventory_slot_to_consume() healthiness test.
authorChristian Heller <c.heller@plomlompom.de>
Sat, 14 Mar 2015 04:33:06 +0000 (05:33 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 14 Mar 2015 04:33:06 +0000 (05:33 +0100)
roguelike-server

index b5468a59c3b91fa675144f63fd9f1cb374df8e8d..c51b65de6a9eeb5f830caef517ffef1efc6027fb 100755 (executable)
@@ -1089,11 +1089,16 @@ def try_healing(t):
                 strong_write(io_db["file_out"], "LOG You heal.\n")
 
 
+def hunger_per_turn(type_id):
+    """The amount of satiation score lost per turn for things of given type."""
+    return int(math.sqrt(world_db["ThingTypes"][type_id]["TT_LIFEPOINTS"]))
+
+
 def hunger(t):
     """Decrement t's satiation,dependent on it trigger lifepoint dec chance."""
     if t["T_SATIATION"] > -32768:
-        max_hp = world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]
-        t["T_SATIATION"] -= int(math.sqrt(max_hp))
+        #max_hp = world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]
+        t["T_SATIATION"] -= hunger_per_turn(t["T_TYPE"]) # int(math.sqrt(max_hp))
     if 0 != t["T_SATIATION"] and 0 == int(rand.next() / abs(t["T_SATIATION"])):
         if t == world_db["Things"][0]:
             if t["T_SATIATION"] < 0:
@@ -1314,16 +1319,20 @@ def standing_on_food(t):
 
 
 def get_inventory_slot_to_consume(t):
-    """Return slot Id of healthiest consumable in t's inventory, else -1."""
+    """Return invent. slot of healthiest consumable(if any healthy),else -1."""
     cmp_food = -1
     selection = -1
     i = 0
+    hunger_u = hunger_per_turn(t["T_TYPE"])
+    type = [id for id in world_db["ThingActions"]
+               if world_db["ThingActions"][id]["TA_NAME"] == "use"][0]
+    consume_hungering =  world_db["ThingActions"][type]["TA_EFFORT"] * hunger_u
     for id in t["T_CARRIES"]:
         type = world_db["Things"][id]["T_TYPE"]
         if world_db["ThingTypes"][type]["TT_TOOL"] == "food" \
            and world_db["ThingTypes"][type]["TT_TOOLPOWER"]:
             nutvalue = world_db["ThingTypes"][type]["TT_TOOLPOWER"]
-            tmp_cmp = abs(t["T_SATIATION"] + nutvalue)
+            tmp_cmp = abs(t["T_SATIATION"] + nutvalue - consume_hungering)
             if (cmp_food < 0 and tmp_cmp < abs(t["T_SATIATION"])) \
             or tmp_cmp < cmp_food:
                 cmp_food = tmp_cmp