X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/static/git-logo.png?a=blobdiff_plain;f=plugins%2Fserver%2FTheCrawlingEater.py;h=d4f0525efb365b62be885d5f16a878a844ca66fc;hb=8b3752b7fa7398628c7d147aa237ef96d7f5d6d2;hp=7a634165d8e83249426a9a0a3e0f708e2e88e5cb;hpb=3e0b61dfec2261beabdfc7839505e03eb060da2d;p=plomrogue diff --git a/plugins/server/TheCrawlingEater.py b/plugins/server/TheCrawlingEater.py index 7a63416..d4f0525 100644 --- a/plugins/server/TheCrawlingEater.py +++ b/plugins/server/TheCrawlingEater.py @@ -42,14 +42,13 @@ def actor_pee(t): log("You LOSE fluid.") t["T_BLADDER"] -= 1 terrain = world_db["MAP"][t["pos"]] - world_db["wetmap"][t["pos"]] += 1 - if terrain == ord("_"): - world_db["MAP"][t["pos"]] = ord("~") - elif world_db["wetmap"][t["pos"]] > 51: + if world_db["wetmap"][t["pos"]] == 51: t["T_LIFEPOINTS"] = 0 if t == world_db["Things"][0]: t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2)) log("You DROWN.") + else: + world_db["wet_ground"](t["pos"]) def play_drop(): @@ -147,17 +146,21 @@ def actor_move(t): else: if t["T_BOWEL"] >= 32 or chr(world_db["MAP"][pos]) == "X": return - elif chr(world_db["MAP"][pos]) == "%" and 0 == int(rand.next() % 2): + eaten = False + if chr(world_db["MAP"][pos]) == "%" and 0 == int(rand.next() % 2): t["T_BOWEL"] += 3 + eaten = True elif chr(world_db["MAP"][pos]) in "#BEH" and 0 == int(rand.next() % 5): t["T_BOWEL"] += 4 + eaten = True log("You EAT.") - if world_db["wetmap"][pos] == 48: - world_db["MAP"][pos] = ord("_") - else: - world_db["MAP"][pos] = ord("~") - if t["T_BOWEL"] > 32: - t["T_BOWEL"] = 32 + if eaten: + if world_db["wetmap"][pos] == 48: + world_db["MAP"][pos] = ord("_") + else: + world_db["MAP"][pos] = ord("~") + if t["T_BOWEL"] > 32: + t["T_BOWEL"] = 32 def make_map(): @@ -245,6 +248,22 @@ def turn_over(): if Thing["T_BLADDER"] > 16: if 0 == (rand.next() % (33 - Thing["T_BLADDER"])): action_db["actor_pee"](Thing) + wetness = 0 + for i in range(world_db["MAP_LENGTH"] ** 2): + if world_db["MAP"][i] != ord("~") and world_db["wetmap"][i] > 48 \ + and 0 == (rand.next() % 5): + world_db["wetmap"][i] -= 1 + wetness += 1 + if wetness > 0: + positions_to_wet = [] + for i in range(world_db["MAP_LENGTH"] ** 2): + if chr(world_db["MAP"][i]) in "_~": + positions_to_wet += [i] + while wetness > 0: + select = rand.next() % len(positions_to_wet) + world_db["wet_ground"](positions_to_wet[select]) + wetness -= 1 + log("New water at " + str(positions_to_wet[select])) world_db["TURN"] += 1 io_db["worldstate_updateable"] = True try_worldstate_update() @@ -306,6 +325,12 @@ def wetmapset(str_int, mapline): if not world_db["wetmap"]: world_db["wetmap"] = m +def wet_ground(pos): + if world_db["MAP"][pos] == ord("_"): + world_db["MAP"][pos] = ord("~") + world_db["wetmap"][pos] += 1 +world_db["wet_ground"] = wet_ground + def write_wetmap(): from server.worldstate_write_helpers import write_map