home · contact · privacy
Fix bug in dying actor dropping Things: Unset "carried" flag on event.
[plomrogue] / roguelike-server
index 849edee2b9cd9e42c445ed2a6a6bab9c8b84d6c7..707a5fdbf048d28e02a2dcbebb06bdc635e9f8c9 100755 (executable)
@@ -582,6 +582,7 @@ def decrement_lifepoints(t):
 
     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.
     """
     # # 7DRL: also decrements God's mood; deaths heavily so
     # # 7DRL: return 1 if death, else 0
@@ -590,6 +591,11 @@ def decrement_lifepoints(t):
     if 0 == t["T_LIFEPOINTS"]:
         sadness = world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]  # #
         world_db["GOD_MOOD"] -= sadness  # #        
+        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))