X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=sidebyside;f=plomrogue%2Fcommands.py;h=0ccbdc1cb50ef3b646474e1d165fe0a4444ea701;hb=c7a3af00680ba0449310bbb7336a187dd4ed6bcf;hp=dc2e6ead099deb9c2a873f93e3309bd327d7d464;hpb=0ec2f3df7ef3b2f7bdbe7c45278e0944e64a56fe;p=plomrogue2
diff --git a/plomrogue/commands.py b/plomrogue/commands.py
index dc2e6ea..0ccbdc1 100644
--- a/plomrogue/commands.py
+++ b/plomrogue/commands.py
@@ -1,5 +1,5 @@
from plomrogue.misc import quote
-from plomrogue.errors import GameError
+from plomrogue.errors import GameError, ArgError
@@ -151,6 +151,8 @@ def cmd_TURN(game, n):
cmd_TURN.argtypes = 'int:nonneg'
def cmd_ANNOTATE(game, yx, msg, pw, connection_id):
+ if len(msg) > 500:
+ raise ArgError('annotation text must be <= 500 characters')
player = game.get_player(connection_id)
big_yx, little_yx = player.fov_stencil.source_yxyx(yx)
if not player.fov_test(big_yx, little_yx):
@@ -200,18 +202,6 @@ def cmd_GOD_PORTAL(game, big_yx, little_yx, msg):
game.changed = True
cmd_GOD_PORTAL.argtypes = 'yx_tuple yx_tuple:nonneg string'
-def cmd_GET_ANNOTATION(game, yx, connection_id):
- player = game.get_player(connection_id)
- big_yx, little_yx = player.fov_stencil.source_yxyx(yx)
- annotation = '(unknown)'
- if player.fov_test(big_yx, little_yx):
- annotation = '(none)'
- if big_yx in game.annotations:
- if little_yx in game.annotations[big_yx]:
- annotation = game.annotations[big_yx][little_yx]
- game.io.send('ANNOTATION %s %s' % (yx, quote(annotation)))
-cmd_GET_ANNOTATION.argtypes = 'yx_tuple:nonneg'
-
def cmd_MAP_LINE(game, big_yx, y, line):
map_ = game.get_map(big_yx)
map_.set_line(y, line)
@@ -295,7 +285,7 @@ def cmd_THING_MUSICPLAYER_SETTINGS(game, thing_id, playing, index, repeat):
t.playing = playing
t.playlist_index = index
t.repeat = repeat
-cmd_THING_MUSICPLAYER_SETTINGS.argtypes = 'int:pos bool int:nonneg bool'
+cmd_THING_MUSICPLAYER_SETTINGS.argtypes = 'int:pos bool int bool'
def cmd_THING_MUSICPLAYER_PLAYLIST_ITEM(game, thing_id, title, length):
t = game.get_thing(thing_id)
@@ -314,3 +304,26 @@ def cmd_THING_BOTTLE_EMPTY(game, thing_id):
raise GameError('thing of ID %s not bottle' % thing_id)
t.empty()
cmd_THING_BOTTLE_EMPTY.argtypes = 'int:pos'
+
+def cmd_THING_INSTALLED(game, thing_id):
+ t = game.get_thing(thing_id)
+ if not t:
+ raise GameError('thing of ID %s not found' % thing_id)
+ if not hasattr(t, 'installable'):
+ raise GameError('thing of ID %s not installable' % thing_id)
+ t.install()
+cmd_THING_INSTALLED.argtypes = 'int:pos'
+
+def cmd_PLAYER_FACE(game, face, connection_id):
+ t = game.get_player(connection_id)
+ if not t:
+ raise GameError('can only draw face when already logged in')
+ if len(face) != 9:
+ raise GameError('wrong face string length')
+ game.faces[t.name] = face
+ game.changed = True
+cmd_PLAYER_FACE.argtypes = 'string'
+
+def cmd_GOD_PLAYER_FACE(game, name, face):
+ game.faces[name] = face
+cmd_GOD_PLAYER_FACE.argtypes = 'string string'