X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=plomrogue-server.py;h=06fe20819d1a3a66d293ae99b4a564131d2505a1;hb=c242d3a120afe8305aabb8d280b609f5957ed43d;hp=d0c0e0c58d82cb3d0db038896ab436e926c59145;hpb=49769c980ccccfee67754b7bcc83c3b42588ded8;p=plomrogue diff --git a/plomrogue-server.py b/plomrogue-server.py index d0c0e0c..06fe208 100755 --- a/plomrogue-server.py +++ b/plomrogue-server.py @@ -468,13 +468,16 @@ def update_map_memory(t): t["T_MEMMAP"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2)) if not t["T_MEMDEPTHMAP"]: t["T_MEMDEPTHMAP"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2)) - for pos in [pos for pos in range(world_db["MAP_LENGTH"] ** 2) - if "v" == chr(t["fovmap"][pos])]: + for pos in range(world_db["MAP_LENGTH"] ** 2): + if "v" == chr(t["fovmap"][pos]): t["T_MEMDEPTHMAP"][pos] = ord("0") if " " == chr(t["T_MEMMAP"][pos]): t["T_MEMMAP"][pos] = world_db["MAP"][pos] continue - # TODO: Aging of MEMDEPTHMAP. + if ord('0') <= t["T_MEMDEPTHMAP"][pos] \ + and ord('9') >= t["T_MEMDEPTHMAP"][pos] \ + and not rand.next() % (2 ** (t["T_MEMDEPTHMAP"][pos] - 48)): + t["T_MEMDEPTHMAP"][pos] += 1 for mt in [mt for mt in t["T_MEMTHING"] if "v" == chr(t["fovmap"][(mt[1] * world_db["MAP_LENGTH"]) + mt[2]])]: @@ -601,7 +604,7 @@ def actor_move(t): hitted_name = world_db["ThingTypes"][hitted_type]["TT_NAME"] hitted = "you" if hit_id == 0 else hitted_name verb = " wound " if hitter == "You" else " wounds " - strong_write(io_db["file_out"], "LOG " + hitter + verb + hitted + \ + strong_write(io_db["file_out"], "LOG " + hitter + verb + hitted + ".\n") decrement_lifepoints(world_db["Things"][hit_id]) return @@ -684,7 +687,7 @@ def thingproliferation(t): if y == world_db["Things"][id]["T_POSY"] if x == world_db["Things"][id]["T_POSX"] if (t["T_TYPE"] == world_db["Things"][id]["T_TYPE"]) - or (t["T_LIFEPOINTS"] and + or (t["T_LIFEPOINTS"] and world_db["Things"][id]["T_LIFEPOINTS"])]: return False return True @@ -703,8 +706,29 @@ def thingproliferation(t): world_db["Things"][id] = newT +def try_healing(t): + """Grow t's HP to a 1/32 chance if < HP max, satiation > 0, and waiting. + + On success, decrease satiation score by 32. + """ + if t["T_SATIATION"] > 0 \ + and t["T_LIFEPOINTS"] < \ + world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"] \ + and 0 == (rand.next() % 31) \ + and t["T_COMMAND"] == [id for id in world_db["ThingActions"] + if world_db["ThingActions"][id]["TA_NAME"] == + "wait"][0]: + t["T_LIFEPOINTS"] += 1 + t["T_SATIATION"] -= 32 + if t == world_db["Things"][0]: + strong_write(io_db["file_out"], "LOG You heal.\n") + else: + name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"] + strong_write(io_db["file_out"], "LOG " + name + "heals.\n") + + def hunger(t): - """Decrement t's satiation, dependent on it trigger lifepoint dec chance.""" + """Decrement t's satiation,dependent on it trigger lifepoint dec chance.""" if t["T_SATIATION"] > -32768: t["T_SATIATION"] -= 1 testbase = t["T_SATIATION"] if t["T_SATIATION"] >= 0 else -t["T_SATIATION"] @@ -716,7 +740,7 @@ def hunger(t): strong_write(io_db["file_out"], "LOG You suffer from hunger.\n") else: name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"] - strong_write(io_db["file_out"], "LOG " + name + \ + strong_write(io_db["file_out"], "LOG " + name + " suffers from hunger.\n") decrement_lifepoints(t) @@ -736,7 +760,7 @@ def turn_over(): break # DUMMY: ai(thing) Thing["T_COMMAND"] = 1 - # DUMMY: try_healing + try_healing(Thing) Thing["T_PROGRESS"] += 1 taid = [a for a in world_db["ThingActions"] if a == Thing["T_COMMAND"]][0] @@ -752,7 +776,7 @@ def turn_over(): world_db["TURN"] += 1 -def new_Thing(type, pos=(0,0)): +def new_Thing(type, pos=(0, 0)): """Return Thing of type T_TYPE, with fovmap if alive and world active.""" thing = { "T_LIFEPOINTS": world_db["ThingTypes"][type]["TT_LIFEPOINTS"],