home · contact · privacy
Add wearable hats.
[plomrogue2] / rogue_chat_curses.py
index 89c841140edc871c4108d91c6bb3b5f389599e0a..ff00b503a3eb51de174715329cce08bfad59f323 100755 (executable)
@@ -220,6 +220,11 @@ def cmd_THING_FACE(game, thing_id, face):
     t.face = face
 cmd_THING_FACE.argtypes = 'int:pos string'
 
+def cmd_THING_HAT(game, thing_id, hat):
+    t = game.get_thing(thing_id)
+    t.hat = hat
+cmd_THING_HAT.argtypes = 'int:pos string'
+
 def cmd_THING_CHAR(game, thing_id, c):
     t = game.get_thing(thing_id)
     t.thing_char = c
@@ -343,6 +348,7 @@ class Game(GameBase):
         self.register_command(cmd_THING_NAME)
         self.register_command(cmd_THING_CHAR)
         self.register_command(cmd_THING_FACE)
+        self.register_command(cmd_THING_HAT)
         self.register_command(cmd_THING_CARRYING)
         self.register_command(cmd_THING_INSTALLED)
         self.register_command(cmd_TERRAIN)
@@ -449,7 +455,7 @@ class TUI:
                                           "command_thing", "take_thing"]
         self.mode_play.available_actions = ["move", "drop_thing",
                                             "teleport", "door", "consume",
-                                            "install"]
+                                            "install", "wear"]
         self.mode_study.available_modes = ["chat", "play", "admin_enter", "edit"]
         self.mode_study.available_actions = ["toggle_map_mode", "move_explorer"]
         self.mode_admin.available_modes = ["admin_thing_protect", "control_pw_type",
@@ -498,6 +504,7 @@ class TUI:
             'consume': 'C',
             'door': 'D',
             'install': 'I',
+            'wear': 'W',
             'help': 'h',
             'toggle_map_mode': 'L',
             'toggle_tile_draw': 'm',
@@ -708,6 +715,10 @@ class TUI:
                     if protection == '.':
                         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'
                     if hasattr(t, 'face'):
                         info_to_cache += t.face[0:3] + '\n'
                         info_to_cache += t.face[3:6] + '\n'
@@ -975,6 +986,7 @@ class TUI:
             'toggle_map_mode': 'toggle map view',
             'toggle_tile_draw': 'toggle protection character drawing',
             'install': '(un-)install',
+            'wear': '(un-)wear',
             'door': 'open/close',
             'consume': 'consume',
         }
@@ -985,6 +997,7 @@ class TUI:
             'drop_thing': 'DROP',
             'door': 'DOOR',
             'install': 'INSTALL',
+            'wear': 'WEAR',
             'move': 'MOVE',
             'command': 'COMMAND',
             'consume': 'INTOXICATE',
@@ -1166,6 +1179,8 @@ class TUI:
                     self.send('TASK:INTOXICATE')
                 elif key == self.keys['install'] and task_action_on('install'):
                     self.send('TASK:INSTALL')
+                elif key == self.keys['wear'] and task_action_on('wear'):
+                    self.send('TASK:WEAR')
                 elif key == self.keys['teleport']:
                     player = self.game.get_thing(self.game.player_id)
                     if player.position in self.game.portals: