From 8b3752b7fa7398628c7d147aa237ef96d7f5d6d2 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Fri, 11 Mar 2016 12:55:15 +0100
Subject: [PATCH] TCE: Fluid trickles down into earth, dirt; re-surfaces on
 ground.

---
 plugins/client/TheCrawlingEater.py |  4 ++--
 plugins/server/TheCrawlingEater.py | 29 +++++++++++++++++++++++++----
 2 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/plugins/client/TheCrawlingEater.py b/plugins/client/TheCrawlingEater.py
index 081960a..b1f4005 100644
--- a/plugins/client/TheCrawlingEater.py
+++ b/plugins/client/TheCrawlingEater.py
@@ -46,8 +46,8 @@ def win_map(self):
     curses.init_pair(5, curses.COLOR_CYAN, curses.COLOR_BLACK)
     curses.init_pair(6, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
     curses.init_pair(7, curses.COLOR_GREEN, curses.COLOR_BLACK)
-    curses.init_pair(8, curses.COLOR_BLACK, curses.COLOR_MAGENTA)
-    curses.init_pair(9, curses.COLOR_BLACK, curses.COLOR_BLUE)
+    curses.init_pair(8, curses.COLOR_BLACK, curses.COLOR_BLUE)
+    curses.init_pair(9, curses.COLOR_BLACK, curses.COLOR_MAGENTA)
     curses.init_pair(10, curses.COLOR_BLACK, curses.COLOR_CYAN)
     col_unknown = curses.color_pair(1)
     col_mem_obstacle = curses.color_pair(2)
diff --git a/plugins/server/TheCrawlingEater.py b/plugins/server/TheCrawlingEater.py
index 7c05e78..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():
@@ -249,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()
@@ -310,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
-- 
2.30.2