From 2bc91772ca3d5056eb5a252869d8dff33c586da5 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Mon, 7 Dec 2020 02:59:16 +0100 Subject: [PATCH] Exclude non-portable things from pick_up selection. --- plomrogue/game.py | 6 ++++-- rogue_chat.html | 5 +++-- rogue_chat_curses.py | 10 +++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/plomrogue/game.py b/plomrogue/game.py index cd1ce2e..7d4103d 100755 --- a/plomrogue/game.py +++ b/plomrogue/game.py @@ -231,8 +231,10 @@ class Game(GameBase): self.io.send('MAP_CONTROL %s' % quote(visible_control), c_id) for t in [t for t in self.things if player.fov_test(*t.position)]: target_yx = player.fov_stencil.target_yx(*t.position) - self.io.send('THING %s %s %s %s' % (target_yx, t.type_, - quote(t.protection), t.id_), c_id) + self.io.send('THING %s %s %s %s %s' % (target_yx, t.type_, + quote(t.protection), + t.id_, int(t.portable)), + c_id) if hasattr(t, 'name'): self.io.send('THING_NAME %s %s' % (t.id_, quote(t.name)), c_id) if hasattr(t, 'thing_char'): diff --git a/rogue_chat.html b/rogue_chat.html index 41cf365..f0f2faa 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -474,6 +474,7 @@ let server = { t.position = parser.parse_yx(tokens[1]); t.type_ = tokens[2]; t.protection = tokens[3]; + t.portable = parseInt(tokens[5]); } else if (tokens[0] === 'THING_NAME') { let t = game.get_thing(tokens[1], false); if (t) { @@ -809,7 +810,7 @@ let tui = { } else if (this.mode.is_single_char_entry) { this.show_help = true; } else if (this.mode.name == 'take_thing') { - this.log_msg("Things in reach for pick-up:"); + this.log_msg("Portable things in reach for pick-up:"); const player = game.things[game.player_id]; const y = player.position[0] const x = player.position[1] @@ -832,7 +833,7 @@ let tui = { const t = game.things[t_id]; if (select_range.includes(t.position[0].toString() + ':' + t.position[1].toString()) - && t != player && t.type_ != 'Player') { + && t.portable) { this.selectables.push([t_id, t]); } }; diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index c539062..e6ddda8 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -194,7 +194,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): +def cmd_THING(game, yx, thing_type, protection, thing_id, portable): t = game.get_thing(thing_id) if not t: t = ThingBase(game, thing_id) @@ -202,7 +202,8 @@ def cmd_THING(game, yx, thing_type, protection, thing_id): t.position = yx t.type_ = thing_type t.protection = protection -cmd_THING.argtypes = 'yx_tuple:nonneg string:thing_type char int:nonneg' + t.portable = portable +cmd_THING.argtypes = 'yx_tuple:nonneg string:thing_type char int:nonneg bool' def cmd_THING_NAME(game, thing_id, name): t = game.get_thing(thing_id) @@ -630,7 +631,7 @@ class TUI: else: self.log_msg('@ enter username') elif self.mode.name == 'take_thing': - self.log_msg('Things in reach for pick-up:') + self.log_msg('Portable things in reach for pick-up:') player = self.game.get_thing(self.game.player_id) select_range = [player.position, player.position + YX(0,-1), @@ -645,8 +646,7 @@ class TUI: select_range += [player.position + YX(-1, -1), player.position + YX(1, -1)] self.selectables = [t for t in self.game.things - if t != player and t.type_ != 'Player' - and t.position in select_range] + if t.portable and t.position in select_range] if len(self.selectables) == 0: self.log_msg('none') else: -- 2.30.2