From: Christian Heller <c.heller@plomlompom.de>
Date: Wed, 4 Mar 2015 13:20:26 +0000 (+0100)
Subject: Server/py: Undummify actor_pick_up, correct some bugs encountered onway.
X-Git-Tag: tce~418
X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/%7B%7Bprefix%7D%7D/%7B%7Bdb.prefix%7D%7D/%7B%7Bdb.prefix%7D%7D/process?a=commitdiff_plain;h=e7310e4bba2ebdc194f079e68530ddd73fe0ba51;p=plomrogue

Server/py: Undummify actor_pick_up, correct some bugs encountered onway.
---

diff --git a/plomrogue-server.py b/plomrogue-server.py
index c3600aa..a66e2ae 100755
--- a/plomrogue-server.py
+++ b/plomrogue-server.py
@@ -460,7 +460,19 @@ def actor_move(Thing):
 
 
 def actor_pick_up(Thing):
-    pass
+    """Pick up (topmost?) thing from ground into inventory."""
+    # Topmostness is actually not defined so far.
+    ids = [id for id in world_db["Things"] if world_db["Things"][id] != Thing
+           if not world_db["Things"][id]["carried"]
+           if world_db["Things"][id]["T_POSY"] == Thing["T_POSY"]
+           if world_db["Things"][id]["T_POSX"] == Thing["T_POSX"]]
+    if ids:
+        world_db["Things"][ids[0]]["carried"] = True
+        Thing["T_CARRIES"].append(ids[0])
+        strong_write(io_db["file_out"], "LOG You pick up an object.\n")
+    else:
+        err = "You try to pick up an object, but there is none."
+        strong_write(io_db["file_out"], "LOG " + err + "\n")
 
 
 def actor_drop(Thing):
@@ -477,8 +489,7 @@ def turn_over():
     whilebreaker = False
     while world_db["Things"][0]["T_LIFEPOINTS"]:
         for id in [id for id in world_db["Things"]
-                      if not world_db["Things"][id]["carried"]
-                      if world_db["Things"][id]["T_LIFEPOINTS"]]:
+                   if world_db["Things"][id]["T_LIFEPOINTS"]]:
             Thing = world_db["Things"][id]
             if Thing["T_LIFEPOINTS"]:
                 if not Thing["T_COMMAND"]:
@@ -576,7 +587,8 @@ def command_thingshere(str_y, str_x):
     """Write to out file list of Things known to player at coordinate y, x."""
     def write_thing_if_here():
         if y == world_db["Things"][id]["T_POSY"] \
-           and x == world_db["Things"][id]["T_POSX"]:
+           and x == world_db["Things"][id]["T_POSX"] \
+           and not world_db["Things"][id]["carried"]:
             type = world_db["Things"][id]["T_TYPE"]
             name = world_db["ThingTypes"][type]["TT_NAME"]
             strong_write(io_db["file_out"], name + "\n")