From 0dd5be3b48b45d1be5cec5ff18f3cb633f99886d Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Wed, 24 Feb 2016 00:00:30 +0100
Subject: [PATCH] Server: Make decrement_lifepoints function selectable.

---
 server/actions.py              |  4 ++--
 server/config/misc.py          |  2 ++
 server/decrement_lifepoints.py | 31 +++++++++++++++++++++++++++++++
 server/world.py                | 29 ++---------------------------
 4 files changed, 37 insertions(+), 29 deletions(-)
 create mode 100644 server/decrement_lifepoints.py

diff --git a/server/actions.py b/server/actions.py
index 302c36d..0fd5986 100644
--- a/server/actions.py
+++ b/server/actions.py
@@ -16,7 +16,7 @@ def actor_wait(t):
 def actor_move(t):
     """If passable, move/collide(=attack) thing into T_ARGUMENT's direction."""
     from server.build_fov_map import build_fov_map
-    from server.world import decrement_lifepoints
+    from server.config.misc import decrement_lifepoints_func
     from server.utils import mv_yx_in_dir_legal
     from server.config.world_data import directions_db, symbols_passable
     passable = False
@@ -38,7 +38,7 @@ def actor_move(t):
             elif 0 == hit_id:
                 hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
                 log(hitter_name +" WOUNDS you.")
-            decrement_lifepoints(world_db["Things"][hit_id])
+            decrement_lifepoints_func(world_db["Things"][hit_id])
             return
         passable = chr(world_db["MAP"][pos]) in symbols_passable
     dir = [dir for dir in directions_db
diff --git a/server/config/misc.py b/server/config/misc.py
index 8d0b6b0..c7a701e 100644
--- a/server/config/misc.py
+++ b/server/config/misc.py
@@ -5,7 +5,9 @@
 from server.make_map import make_map
 from server.thingproliferation import thingproliferation
 from server.make_world import make_world
+from server.decrement_lifepoints import decrement_lifepoints
 
+decrement_lifepoints_func = decrement_lifepoints
 make_map_func = make_map
 thingproliferation_func = thingproliferation
 make_world_func = make_world
diff --git a/server/decrement_lifepoints.py b/server/decrement_lifepoints.py
new file mode 100644
index 0000000..8fe5de8
--- /dev/null
+++ b/server/decrement_lifepoints.py
@@ -0,0 +1,31 @@
+# This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3
+# or any later version. For details on its copyright, license, and warranties,
+# see the file NOTICE in the root directory of the PlomRogue source package.
+
+
+def decrement_lifepoints(t):
+    """Decrement t's lifepoints by 1, and if to zero, corpse it.
+
+    If t is the player avatar, only blank its fovmap, so that the client may
+    still display memory data. On non-player things, erase fovmap and memory.
+    Dying actors drop all their things.
+    """
+    from server.config.world_data import world_db
+    from server.io import log
+    t["T_LIFEPOINTS"] -= 1
+    if 0 == t["T_LIFEPOINTS"]:
+        for id in t["T_CARRIES"]:
+            t["T_CARRIES"].remove(id)
+            world_db["Things"][id]["T_POSY"] = t["T_POSY"]
+            world_db["Things"][id]["T_POSX"] = t["T_POSX"]
+            world_db["Things"][id]["carried"] = False
+        t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
+        if world_db["Things"][0] == t:
+            t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2))
+            log("You die.")
+            log("See README on how to start over.")
+        else:
+            t["fovmap"] = False
+            t["T_MEMMAP"] = False
+            t["T_MEMDEPTHMAP"] = False
+            t["T_MEMTHING"] = []
diff --git a/server/world.py b/server/world.py
index 6b03d0a..3a68ee4 100644
--- a/server/world.py
+++ b/server/world.py
@@ -9,32 +9,6 @@ from server.utils import rand
 from server.utils import id_setter
 
 
-def decrement_lifepoints(t):
-    """Decrement t's lifepoints by 1, and if to zero, corpse it.
-
-    If t is the player avatar, only blank its fovmap, so that the client may
-    still display memory data. On non-player things, erase fovmap and memory.
-    Dying actors drop all their things.
-    """
-    t["T_LIFEPOINTS"] -= 1
-    if 0 == t["T_LIFEPOINTS"]:
-        for id in t["T_CARRIES"]:
-            t["T_CARRIES"].remove(id)
-            world_db["Things"][id]["T_POSY"] = t["T_POSY"]
-            world_db["Things"][id]["T_POSX"] = t["T_POSX"]
-            world_db["Things"][id]["carried"] = False
-        t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
-        if world_db["Things"][0] == t:
-            t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2))
-            log("You die.")
-            log("See README on how to start over.")
-        else:
-            t["fovmap"] = False
-            t["T_MEMMAP"] = False
-            t["T_MEMDEPTHMAP"] = False
-            t["T_MEMTHING"] = []
-
-
 def try_healing(t):
     """If t's HP < max, increment them if well-nourished, maybe waiting."""
     if t["T_LIFEPOINTS"] < \
@@ -57,6 +31,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
     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"])):
@@ -65,7 +40,7 @@ def hunger(t):
                 log("You SUFFER from hunger.")
             else:
                 log("You SUFFER from over-eating.")
-        decrement_lifepoints(t)
+        decrement_lifepoints_func(t)
 
 
 def set_world_inactive():
-- 
2.30.2