From e3992a6473984ae21445b1ab9e28976ace474a0c Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Sat, 27 Apr 2019 12:29:34 +0200
Subject: [PATCH] Fix save game corruption due to insufficient .in_inventory
 handling.

---
 new/plomrogue/commands.py | 8 ++++++--
 new/plomrogue/things.py   | 3 ++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/new/plomrogue/commands.py b/new/plomrogue/commands.py
index ef18bbb..b0f9460 100644
--- a/new/plomrogue/commands.py
+++ b/new/plomrogue/commands.py
@@ -36,6 +36,7 @@ def cmd_THING_TYPE(game, i, type_):
     #        continue
     #    setattr(t_new, attr_name, attr_old)
     t_new.position = t_old.position
+    t_new.in_inventory = t_old.in_inventory
     t_old_index = game.world.things.index(t_old)
     game.world.things[t_old_index] = t_new
 cmd_THING_TYPE.argtypes = 'int:nonneg string:thingtype'
@@ -46,8 +47,11 @@ def cmd_THING_POS(game, i, big_yx, small_yx):
 cmd_THING_POS.argtypes = 'int:nonneg yx_tuple yx_tuple:nonneg'
 
 def cmd_THING_INVENTORY(game, id_, ids):
-    t = game.world.get_thing(id_)
-    t.inventory = ids  # TODO: test whether valid IDs
+    carrier = game.world.get_thing(id_)
+    carrier.inventory = ids
+    for id_ in ids:
+        t = game.world.get_thing(id_)
+        t.in_inventory = True
 cmd_THING_INVENTORY.argtypes = 'int:nonneg seq:int:nonneg'
 
 def cmd_THING_HEALTH(game, id_, health):
diff --git a/new/plomrogue/things.py b/new/plomrogue/things.py
index df8c78a..07c6265 100644
--- a/new/plomrogue/things.py
+++ b/new/plomrogue/things.py
@@ -272,7 +272,8 @@ class ThingAnimate(Thing):
             small_pos = thing.position[1]
             pos_y = calc_pos_in_fov(big_pos[0], small_pos[0], offset[0], size[0])
             pos_x = calc_pos_in_fov(big_pos[1], small_pos[1], offset[1], size[1])
-            if pos_y < 0 or pos_x < 0 or pos_y >= fov_size[0] or pos_x >= fov_size[1]:
+            if pos_y < 0 or pos_x < 0 or\
+               pos_y >= fov_size[0] or pos_x >= fov_size[1]:
                 continue
             if (not thing.in_inventory) and stencil[(pos_y, pos_x)] == '.':
                 visible_things += [thing]
-- 
2.30.2