if self.thing.carrying:
raise PlayError('already carrying something')
to_pick_up = self.thing.game.get_thing(self.args[0])
+ neighbors = self.thing.game.map_geometry.\
+ get_neighbors_yxyx(self.thing.position).values()
+ reach = [self.thing.position] + list(neighbors)
if to_pick_up is None:
raise PlayError('no thing of ID %s exists %s' % self.args[0])
elif to_pick_up == self.thing:
raise PlayError('cannot pick up oneself')
elif to_pick_up.type_ == 'Player':
raise PlayError('cannot pick up player')
- elif to_pick_up.position != self.thing.position:
+ elif to_pick_up.position not in reach:
raise PlayError('thing of ID %s not in reach' % self.args[0])
elif not to_pick_up.portable:
raise PlayError('thing of ID %s not portable' % self.args[0])
def do(self):
to_pick_up = self.thing.game.get_thing(self.args[0])
+ to_pick_up.position = self.thing.position[:]
self.thing.carrying = to_pick_up