+ def animate_in_fov(Thing):
+ if Thing["carried"] or Thing == t or not Thing["T_LIFEPOINTS"]:
+ return False
+ pos = Thing["T_POSY"] * world_db["MAP_LENGTH"] + Thing["T_POSX"]
+ if ord("v") == t["fovmap"][pos]:
+ return True
+
+ def good_attack_target(v):
+ eat_cost = eat_vs_hunger_threshold(t["T_TYPE"])
+ type = world_db["ThingTypes"][v["T_TYPE"]]
+ type_corpse = world_db["ThingTypes"][type["TT_CORPSE_ID"]]
+ if t["T_LIFEPOINTS"] > type["TT_LIFEPOINTS"] \
+ and type_corpse["TT_TOOL"] == "food" \
+ and type_corpse["TT_TOOLPOWER"] > eat_cost:
+ return True
+ return False
+
+ def good_flee_target(m):
+ own_corpse_id = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
+ corpse_type = world_db["ThingTypes"][own_corpse_id]
+ targetness = 0 if corpse_type["TT_TOOL"] != "food" \
+ else corpse_type["TT_TOOLPOWER"]
+ type = world_db["ThingTypes"][m["T_TYPE"]]
+ if t["T_LIFEPOINTS"] < type["TT_LIFEPOINTS"] \
+ and targetness > eat_vs_hunger_threshold(m["T_TYPE"]):
+ return True
+ return False
+