home · contact · privacy
Make button header less confusing.
[plomrogue2] / rogue_chat.html
index 9d5eddf47c8a44e3147185daefa322d582bd1435..c871b6a8f48eba02a27f7283c1922733211468b7 100644 (file)
@@ -19,7 +19,7 @@ terminal rows: <input id="n_rows" type="number" step=4 min=24 value=24 />
 <div>
 keyboard input/control: <span id="keyboard_control"></span>
 </div>
-<h3>button controls for mouse players</h3>
+<h3>button controls for hard-to-remember keybindings</h3>
 <table id="move_table" style="float: left">
   <tr>
     <td style="text-align: right"><button id="hex_move_upleft"></button></td>
@@ -59,6 +59,7 @@ keyboard input/control: <span id="keyboard_control"></span>
       <button id="teleport"></button>
       <button id="install"></button>
       <button id="wear"></button>
+      <button id="spin"></button>
     </td>
   </tr>
   <tr>
@@ -99,6 +100,7 @@ keyboard input/control: <span id="keyboard_control"></span>
 <li>help: <input id="key_help" type="text" value="h" />
 <li>flatten surroundings: <input id="key_flatten" type="text" value="F" />
 <li>teleport: <input id="key_teleport" type="text" value="p" />
+<li>spin: <input id="key_spin" type="text" value="S" />
 <li>open/close: <input id="key_door" type="text" value="D" />
 <li>consume: <input id="key_consume" type="text" value="C" />
 <li>install: <input id="key_install" type="text" value="I" />
@@ -253,6 +255,7 @@ let key_descriptions = {
     'consume': 'consume',
     'install': '(un-)install',
     'wear': '(un-)wear',
+    'spin': 'spin',
     'toggle_map_mode': 'toggle map view',
     'toggle_tile_draw': 'toggle protection character drawing',
     'hex_move_upleft': 'up-left',
@@ -693,6 +696,7 @@ let tui = {
       'wear': 'WEAR',
       'command': 'COMMAND',
       'consume': 'INTOXICATE',
+      'spin': 'SPIN',
   },
   offset: [0,0],
   map_lines: [],
@@ -701,7 +705,7 @@ let tui = {
       this.mode_play.available_modes = ["chat", "study", "edit", "admin_enter",
                                         "command_thing", "take_thing", "drop_thing"]
       this.mode_play.available_actions = ["move", "teleport", "door", "consume",
-                                          "install", "wear"];
+                                          "install", "wear", "spin"];
       this.mode_study.available_modes = ["chat", "play", "admin_enter", "edit"]
       this.mode_study.available_actions = ["toggle_map_mode", "move_explorer"];
       this.mode_admin.available_modes = ["admin_thing_protect", "control_pw_type",
@@ -770,6 +774,12 @@ let tui = {
         this.switch_mode('play');
         return;
     };
+    if (mode_name == 'drop_thing' && (!player.carrying)) {
+        this.log_msg('? not carrying anything droppable');
+        terminal.blink_screen();
+        this.switch_mode('play');
+        return;
+    }
     if (mode_name == 'admin_enter' && this.is_admin) {
         mode_name = 'admin';
     } else if (['name_thing', 'admin_thing_protect'].includes(mode_name)) {
@@ -1582,6 +1592,8 @@ tui.inputEl.addEventListener('keydown', (event) => {
               server.send(["TASK:INSTALL"]);
           } else if (event.key === tui.keys.wear && tui.task_action_on('wear')) {
               server.send(["TASK:WEAR"]);
+          } else if (event.key === tui.keys.spin && tui.task_action_on('spin')) {
+              server.send(["TASK:SPIN"]);
           } else if (event.key in tui.movement_keys && tui.task_action_on('move')) {
               server.send(['TASK:MOVE', tui.movement_keys[event.key]]);
           } else if (event.key === tui.keys.teleport) {
@@ -1704,6 +1716,9 @@ document.getElementById("install").onclick = function() {
 document.getElementById("wear").onclick = function() {
     server.send(['TASK:WEAR']);
 };
+document.getElementById("spin").onclick = function() {
+    server.send(['TASK:SPIN']);
+};
 document.getElementById("teleport").onclick = function() {
     game.teleport();
 };