'name_thing': {
'short': 'name thing',
'intro': '',
- 'long': 'Give name to/change name of thing here.'
+ 'long': 'Give name to/change name of carried thing.'
},
'command_thing': {
'short': 'command',
'admin_thing_protect': {
'short': 'change thing protection',
'intro': '@ enter thing protection character:',
- 'long': 'Change protection character for thing here.'
+ 'long': 'Change protection character for carried thing.'
},
'enter_face': {
'short': 'edit face',
cmd_THING_INSTALLED.argtypes = 'int:pos'
def cmd_THING_CARRYING(game, thing_id, carried_id):
- game.get_thing_temp(thing_id).carrying = game.get_thing(carried_id)
+ game.get_thing_temp(thing_id).carrying = game.get_thing_temp(carried_id)
cmd_THING_CARRYING.argtypes = 'int:pos int:pos'
def cmd_TERRAIN(game, terrain_char, terrain_desc):
self.mode_control_tile_draw.available_actions = ["move_explorer",
"toggle_tile_draw"]
self.mode_edit.available_modes = ["write", "annotate", "portal",
- "name_thing", "enter_face", "enter_hat", "password",
+ "name_thing", "enter_face", "enter_hat",
+ "password",
"chat", "study", "play", "admin_enter"]
self.mode_edit.available_actions = ["move", "flatten", "install",
"toggle_map_mode"]
elif self.mode.name == 'password':
self.input_ = self.password
elif self.mode.name == 'name_thing':
- if hasattr(self.thing_selected, 'name'):
- self.input_ = self.thing_selected.name
+ if hasattr(self.game.player.carrying, 'name'):
+ self.input_ = self.game.player.carrying.name
elif self.mode.name == 'admin_thing_protect':
- if hasattr(self.thing_selected, 'protection'):
- self.input_ = self.thing_selected.protection
+ if hasattr(self.game.player.carrying, 'protection'):
+ self.input_ = self.game.player.carrying.protection
elif self.mode.name in {'enter_face', 'enter_hat'}:
start = self.ascii_draw_stage * 6
end = (self.ascii_draw_stage + 1) * 6
(not self.game.player.carrying or
not self.game.player.carrying.commandable):
return fail('not carrying anything commandable')
+ if mode_name == 'name_thing' and not self.game.player.carrying:
+ return fail('not carrying anything to re-name')
+ if mode_name == 'admin_thing_protect' and not self.game.player.carrying:
+ return fail('not carrying anything to protect')
if mode_name == 'take_thing' and self.game.player.carrying:
return fail('already carrying something')
if mode_name == 'drop_thing' and not self.game.player.carrying:
return fail('not wearing hat to edit', 'edit')
if mode_name == 'admin_enter' and self.is_admin:
mode_name = 'admin'
- elif mode_name in {'name_thing', 'admin_thing_protect'}:
- thing = None
- for t in [t for t in self.game.things
- if t.position == self.game.player.position
- and t.id_ != self.game.player.id_]:
- thing = t
- break
- if not thing:
- return fail('not standing over thing', 'edit')
- else:
- self.thing_selected = thing
self.mode = getattr(self, 'mode_' + mode_name)
if self.mode.name in {'control_tile_draw', 'control_tile_type',
'control_pw_type'}:
self.log_msg('@ enter username')
elif self.mode.name == 'take_thing':
self.log_msg('Portable things in reach for pick-up:')
- select_range = [self.game.player.position,
- self.game.player.position + YX(0,-1),
- self.game.player.position + YX(0, 1),
- self.game.player.position + YX(-1, 0),
- self.game.player.position + YX(1, 0)]
- if type(self.game.map_geometry) == MapGeometryHex:
+ directed_moves = {
+ 'HERE': YX(0, 0), 'LEFT': YX(0, -1), 'RIGHT': YX(0, 1)
+ }
+ if type(self.game.map_geometry) == MapGeometrySquare:
+ directed_moves['UP'] = YX(-1, 0)
+ directed_moves['DOWN'] = YX(1, 0)
+ elif type(self.game.map_geometry) == MapGeometryHex:
if self.game.player.position.y % 2:
- select_range += [self.game.player.position + YX(-1, 1),
- self.game.player.position + YX(1, 1)]
+ directed_moves['UPLEFT'] = YX(-1, 0)
+ directed_moves['UPRIGHT'] = YX(-1, 1)
+ directed_moves['DOWNLEFT'] = YX(1, 0)
+ directed_moves['DOWNRIGHT'] = YX(1, 1)
else:
- select_range += [self.game.player.position + YX(-1, -1),
- self.game.player.position + YX(1, -1)]
- self.selectables = [t.id_ for t in self.game.things
- if t.portable and t.position in select_range]
+ directed_moves['UPLEFT'] = YX(-1, -1)
+ directed_moves['UPRIGHT'] = YX(-1, 0)
+ directed_moves['DOWNLEFT'] = YX(1, -1)
+ directed_moves['DOWNRIGHT'] = YX(1, 0)
+ select_range = {}
+ for direction in directed_moves:
+ move = directed_moves[direction]
+ select_range[direction] = self.game.player.position + move
+ self.selectables = []
+ directions = []
+ for direction in select_range:
+ for t in [t for t in self.game.things
+ if t.portable and t.position == select_range[direction]]:
+ self.selectables += [t.id_]
+ directions += [direction]
if len(self.selectables) == 0:
return fail('nothing to pick-up')
else:
for i in range(len(self.selectables)):
t = self.game.get_thing(self.selectables[i])
- self.log_msg(str(i) + ': ' + self.get_thing_info(t))
+ self.log_msg('%s %s: %s' % (i, directions[i],
+ self.get_thing_info(t)))
elif self.mode.name == 'drop_thing':
self.log_msg('Direction to drop thing to:')
self.selectables =\
if not self.mode.has_input_prompt:
self.input_lines = []
else:
- self.input_lines = msg_into_lines_of_width(input_prompt + self.input_,
+ self.input_lines = msg_into_lines_of_width(input_prompt
+ + self.input_ + '█',
self.window_width)
def move_explorer(direction):
if len(self.input_) != 1:
self.log_msg('@ entered non-single-char, therefore aborted')
else:
- self.send('THING_PROTECTION %s %s' % (self.thing_selected.id_,
- quote(self.input_)))
+ self.send('THING_PROTECTION %s' % (quote(self.input_)))
self.log_msg('@ sent new protection character for thing')
self.switch_mode('admin')
elif self.mode.name == 'control_tile_type' and key == '\n':
elif self.mode.name == 'name_thing' and key == '\n':
if self.input_ == '':
self.input_ = ' '
- self.send('THING_NAME %s %s %s' % (self.thing_selected.id_,
- quote(self.input_),
- quote(self.password)))
+ self.send('THING_NAME %s %s' % (quote(self.input_),
+ quote(self.password)))
self.switch_mode('edit')
elif self.mode.name == 'annotate' and key == '\n':
if self.input_ == '':