X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=plomrogue%2Ftasks.py;h=105002316193b544448cdecabdc2a6410a5b41ef;hb=c99f3476d21b7416d584c33bfe3b1010ada523e2;hp=8fa3a178067bf4864f929638b79d5a8e4d8bb6d2;hpb=d56384f9b6c88bab666162a0f97d7e64f2b3951c;p=plomrogue2
diff --git a/plomrogue/tasks.py b/plomrogue/tasks.py
index 8fa3a17..1050023 100644
--- a/plomrogue/tasks.py
+++ b/plomrogue/tasks.py
@@ -76,24 +76,25 @@ class Task_FLATTEN_SURROUNDINGS(Task):
class Task_PICK_UP(Task):
+ argtypes = 'int:nonneg'
def check(self):
if self.thing.carrying:
raise PlayError('already carrying something')
- nothing_to_pick_up = True
- for t in [t for t in self.thing.game.things
- if t.portable
- and t != self.thing and t.position == self.thing.position and
- t.type_ != 'Player']:
- nothing_to_pick_up = False
- break
- if nothing_to_pick_up:
- raise PlayError('nothing to pick up')
+ to_pick_up = self.thing.game.get_thing(self.args[0])
+ 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:
+ 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 = [t for t in self.thing.game.things
- if t.portable
- and t != self.thing and t.position == self.thing.position][0]
+ to_pick_up = self.thing.game.get_thing(self.args[0])
self.thing.carrying = to_pick_up