From: Christian Heller Date: Sun, 21 Feb 2016 20:26:25 +0000 (+0100) Subject: Server: Fix dependences on possibly undefined actions. X-Git-Tag: tce~192 X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/cards/%7B%7B%20card_id%20%7D%7D/condition?a=commitdiff_plain;h=54243f78131ceab5aeff854321cb0598abbb8bf2;p=plomrogue Server: Fix dependences on possibly undefined actions. --- diff --git a/server/ai.py b/server/ai.py index 21241fc..3212be0 100644 --- a/server/ai.py +++ b/server/ai.py @@ -274,21 +274,26 @@ def ai(t): """Determine next command/argment for actor t via AI algorithms.""" t["T_COMMAND"] = [id for id in world_db["ThingActions"] if world_db["ThingActions"][id]["TA_NAME"] == "wait"][0] - if get_dir_to_target(t, "f"): - return - sel = get_inventory_slot_to_consume(t) - if -1 != sel: - t["T_COMMAND"] = [id for id in world_db["ThingActions"] - if world_db["ThingActions"][id]["TA_NAME"] - == "use"][0] - t["T_ARGUMENT"] = sel - elif standing_on_food(t): + eating = len([id for id in world_db["ThingActions"] + if world_db["ThingActions"][id]["TA_NAME"] == "use"]) > 0 + picking = len([id for id in world_db["ThingActions"] + if world_db["ThingActions"][id]["TA_NAME"] == "pickup"]) > 0 + if eating and picking: + if get_dir_to_target(t, "f"): + return + sel = get_inventory_slot_to_consume(t) + if -1 != sel: t["T_COMMAND"] = [id for id in world_db["ThingActions"] if world_db["ThingActions"][id]["TA_NAME"] - == "pickup"][0] - else: - going_to_known_food_spot = get_dir_to_target(t, "c") - if not going_to_known_food_spot: - aiming_for_walking_food = get_dir_to_target(t, "a") - if not aiming_for_walking_food: - get_dir_to_target(t, "s") + == "use"][0] + t["T_ARGUMENT"] = sel + elif standing_on_food(t): + t["T_COMMAND"] = [id for id in world_db["ThingActions"] + if world_db["ThingActions"][id]["TA_NAME"] + == "pickup"][0] + else: + going_to_known_food_spot = get_dir_to_target(t, "c") + if not going_to_known_food_spot: + aiming_for_walking_food = get_dir_to_target(t, "a") + if not aiming_for_walking_food: + get_dir_to_target(t, "s")