X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=server%2Fworld.py;h=ff8043ed492398fa9ce5947e868696fb738124af;hb=96d30b59368f81d9813382785029a10176c94235;hp=8c85d153219b73edafebed56ad5ad12fd8534c2b;hpb=a138cf3250a860e1bdec7f84248577030948d29b;p=plomrogue diff --git a/server/world.py b/server/world.py index 8c85d15..ff8043e 100644 --- a/server/world.py +++ b/server/world.py @@ -30,7 +30,7 @@ def hunger_per_turn(type_id): def hunger(t): """Decrement t's satiation,dependent on it trigger lifepoint dec chance.""" - from server.config.misc import decrement_lifepoints_func + from server.config.misc import decrement_lifepoints if t["T_SATIATION"] > -32768: t["T_SATIATION"] -= hunger_per_turn(t["T_TYPE"]) if 0 != t["T_SATIATION"] and 0 == int(rand.next() / abs(t["T_SATIATION"])): @@ -39,7 +39,18 @@ def hunger(t): log("You SUFFER from hunger.") else: log("You SUFFER from over-eating.") - decrement_lifepoints_func(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(): @@ -51,16 +62,20 @@ def set_world_inactive(): def turn_over(): """Run game world and its inhabitants until new player input expected.""" - from server.config.actions import action_db, ai_func - from server.config.misc import thingproliferation_func, calc_effort_func + from server.ai import ai + from server.config.actions import action_db + 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 \ @@ -72,7 +87,7 @@ def turn_over(): update_map_memory(Thing) if 0 == id: return - ai_func(Thing) + ai(Thing) try_healing(Thing) hunger(Thing) if Thing["T_LIFEPOINTS"]: @@ -80,11 +95,13 @@ def turn_over(): taid = [a for a in world_db["ThingActions"] if a == Thing["T_COMMAND"]][0] ThingAction = world_db["ThingActions"][taid] - effort = calc_effort_func(ThingAction, Thing) + effort = calc_effort(ThingAction, Thing) if Thing["T_PROGRESS"] == effort: action = action_db["actor_" + ThingAction["TA_NAME"]] action(Thing) Thing["T_COMMAND"] = 0 Thing["T_PROGRESS"] = 0 - thingproliferation_func(Thing, proliferable_map) + thingproliferation(Thing, proliferable_map) world_db["TURN"] += 1 + io_db["worldstate_updateable"] = True + try_worldstate_update()