X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/static/gitweb.js?a=blobdiff_plain;f=plomrogue%2Fcommands.py;h=24e991c8f89e4c2b2605f9c29aef4d170fd36dd1;hb=feb0ffb7c7523ddee0cbd685cbc9c2e768a56cbd;hp=ca5c37c60ab635056cfd0bbdd11b662cc87232b7;hpb=2760d30c1b9cb8d68c0bdaf1449d3b17eed87ac0;p=plomrogue2 diff --git a/plomrogue/commands.py b/plomrogue/commands.py index ca5c37c..24e991c 100644 --- a/plomrogue/commands.py +++ b/plomrogue/commands.py @@ -95,19 +95,18 @@ def cmd_SET_TILE_CONTROL(game, yx, control_char, connection_id): game.record_change((big_yx, little_yx), 'fov') cmd_SET_TILE_CONTROL.argtypes = 'yx_tuple:nonneg char' -def cmd_THING_PROTECTION(game, thing_id, protection_char, connection_id): +def cmd_THING_PROTECTION(game, protection_char, connection_id): player = game.get_player(connection_id) if not player: raise GameError('need to be logged in for this') if not game.sessions[connection_id]['status'] == 'admin': raise GameError('need to be admin for this') - t = game.get_thing(thing_id) - if not t: - raise GameError('thing of ID %s not found' % thing_id) - t.protection = protection_char + if not player.carrying: + raise GameError('need to carry a thing to protect it') + player.carrying.protection = protection_char game.changed = True - game.record_change(t.position, 'other') -cmd_THING_PROTECTION.argtypes = 'int:pos char' + game.record_change(player.carrying.position, 'other') +cmd_THING_PROTECTION.argtypes = 'char' def cmd_SET_MAP_CONTROL_PASSWORD(game, tile_class, password, connection_id): player = game.get_player(connection_id) @@ -118,7 +117,6 @@ def cmd_SET_MAP_CONTROL_PASSWORD(game, tile_class, password, connection_id): if tile_class == '.': raise GameError('tile class "." must remain unprotected') game.map_control_passwords[tile_class] = password - #game.changed = True cmd_SET_MAP_CONTROL_PASSWORD.argtypes = 'char string' def cmd_NICK(game, nick, connection_id): @@ -246,26 +244,26 @@ def cmd_THING(game, big_yx, little_yx, thing_type, thing_id): raise GameError('illegal thing type %s' % thing_type) _ = game.get_map(big_yx) game.add_thing(thing_type, (big_yx, little_yx), id_=thing_id) - # game.changed = True handled by add_thing cmd_THING.argtypes = 'yx_tuple yx_tuple:nonneg string:thing_type int:nonneg' -def cmd_THING_NAME(game, thing_id, name, pw, connection_id): - # TODO check if thing in FOV - t = game.get_thing(thing_id) - if not t: - raise GameError('thing of ID %s not found' % thing_id) - if not game.can_do_thing_with_pw(t, pw): +def cmd_THING_NAME(game, name, pw, connection_id): + player = game.get_player(connection_id) + if not player: + raise GameError('need to be logged in for this') + if not player.carrying: + raise GameError('need to carry a thing to rename it') + if not game.can_do_thing_with_pw(player.carrying, pw): raise GameError('wrong password for thing') if name == ' ': - if hasattr(t.__class__, 'name'): + if hasattr(player.carrying.__class__, 'name'): raise GameError('cannot un-name things of this type') - if hasattr(t, 'name'): - del t.name + if hasattr(player.carrying, 'name'): + del player.carrying.name else: - t.name = name + player.carrying.name = name game.changed = True - game.record_change(t.position, 'other') -cmd_THING_NAME.argtypes = 'int:pos string string' + game.record_change(player.carrying.position, 'other') +cmd_THING_NAME.argtypes = 'string string' def cmd_GOD_THING_NAME(game, thing_id, name): t = game.get_thing(thing_id)