X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=sidebyside;f=rogue_chat_curses.py;h=15f59bf5d915bd13d8b3c5fafe1f761440854cd8;hb=ba09978e0179406218f052ed29690f1f7c508920;hp=aeb955e60f9593d113f37fb6f0f33c4f9b2817d6;hpb=dbb17811ffb485471c228544549e8c8ff940a946;p=plomrogue2 diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index aeb955e..15f59bf 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -199,7 +199,7 @@ def cmd_PLAYER_ID(game, player_id): game.player_id = player_id cmd_PLAYER_ID.argtypes = 'int:nonneg' -def cmd_THING(game, yx, thing_type, protection, thing_id, portable): +def cmd_THING(game, yx, thing_type, protection, thing_id, portable, commandable): t = game.get_thing(thing_id) if not t: t = ThingBase(game, thing_id) @@ -208,7 +208,8 @@ def cmd_THING(game, yx, thing_type, protection, thing_id, portable): t.type_ = thing_type t.protection = protection t.portable = portable -cmd_THING.argtypes = 'yx_tuple:nonneg string:thing_type char int:nonneg bool' + t.commandable = commandable +cmd_THING.argtypes = 'yx_tuple:nonneg string:thing_type char int:nonneg bool bool' def cmd_THING_NAME(game, thing_id, name): t = game.get_thing(thing_id) @@ -309,9 +310,9 @@ def cmd_THING_INSTALLED(game, thing_id): game.get_thing(thing_id).installed = True cmd_THING_INSTALLED.argtypes = 'int:pos' -def cmd_THING_CARRYING(game, thing_id): - game.get_thing(thing_id).carrying = True -cmd_THING_CARRYING.argtypes = 'int:pos' +def cmd_THING_CARRYING(game, thing_id, carried_id): + game.get_thing(thing_id).carrying = game.get_thing(carried_id) +cmd_THING_CARRYING.argtypes = 'int:pos int:pos' def cmd_TERRAIN(game, terrain_char, terrain_desc): game.terrains[terrain_char] = terrain_desc @@ -620,10 +621,16 @@ class TUI: if self.mode and self.mode.name == 'control_tile_draw': self.log_msg('@ finished tile protection drawing.') self.tile_draw = False + player = self.game.get_thing(self.game.player_id) + if mode_name == 'command_thing' and\ + (not hasattr(player, 'carrying') or not player.carrying.commandable): + self.log_msg('? not carrying anything commandable') + self.flash = True + self.switch_mode('play') + return if mode_name == 'admin_enter' and self.is_admin: mode_name = 'admin' elif mode_name in {'name_thing', 'admin_thing_protect'}: - player = self.game.get_thing(self.game.player_id) thing = None for t in [t for t in self.game.things if t.position == player.position and t.id_ != player.id_]: @@ -1090,9 +1097,8 @@ class TUI: self.input_ = '' self.switch_mode('play') elif self.mode.name == 'command_thing' and key == '\n': - if task_action_on('command'): - self.send('TASK:COMMAND ' + quote(self.input_)) - self.input_ = "" + self.send('TASK:COMMAND ' + quote(self.input_)) + self.input_ = "" elif self.mode.name == 'control_pw_pw' and key == '\n': if self.input_ == '': self.log_msg('@ aborted')