'enter_face': {
'short': 'enter your face',
'intro': '@ enter face line (enter nothing to abort):',
- 'long': 'Draw your face as ASCII art. The string you enter must be 9 characters long, and will be divided on display into three lines of three characters each, from top to bottom..'
+ 'long': 'Draw your face as ASCII art. The string you enter must be 18 characters long, and will be divided on display into 3 lines of 6 characters each, from top to bottom..'
},
'write': {
'short': 'change terrain',
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)
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)
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
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_]:
if t.portable and t.position in select_range]
if len(self.selectables) == 0:
self.log_msg('none')
+ self.flash = True
+ self.switch_mode('play')
+ return
else:
for i in range(len(self.selectables)):
t = self.selectables[i]
protection = 'none'
info_to_cache += ' / protection: %s\n' % protection
if hasattr(t, 'hat'):
- info_to_cache += t.hat[0:3] + '\n'
- info_to_cache += t.hat[3:6] + '\n'
- info_to_cache += t.hat[6:9] + '\n'
+ info_to_cache += t.hat[0:6] + '\n'
+ info_to_cache += t.hat[6:12] + '\n'
+ info_to_cache += t.hat[12:18] + '\n'
if hasattr(t, 'face'):
- info_to_cache += t.face[0:3] + '\n'
- info_to_cache += t.face[3:6] + '\n'
- info_to_cache += t.face[6:9] + '\n'
+ info_to_cache += t.face[0:6] + '\n'
+ info_to_cache += t.face[6:12] + '\n'
+ info_to_cache += t.face[12:18] + '\n'
terrain_char = self.game.map_content[pos_i]
terrain_desc = '?'
if terrain_char in self.game.terrains:
self.send('LOGIN ' + quote(self.input_))
self.input_ = ""
elif self.mode.name == 'enter_face' and key == '\n':
- if len(self.input_) != 9:
+ if len(self.input_) != 18:
self.log_msg('? wrong input length, aborting')
else:
self.send('PLAYER_FACE %s' % quote(self.input_))
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')