From: Christian Heller Date: Sat, 27 Apr 2019 10:29:34 +0000 (+0200) Subject: Fix save game corruption due to insufficient .in_inventory handling. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/static/%7B%7Bprefix%7D%7D/copy_structured?a=commitdiff_plain;h=e3992a6473984ae21445b1ab9e28976ace474a0c;p=plomrogue2-experiments Fix save game corruption due to insufficient .in_inventory handling. --- 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]