X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=rogue_chat.html;h=2e37e7f3376b2ed24f0600f6a63c1564833e90ba;hb=ba09978e0179406218f052ed29690f1f7c508920;hp=3b9238f098e12eb1daa4a69b1f78065dfc8a862c;hpb=22d0a54ba1131600ad5cab77318cc51896c951f0;p=plomrogue2 diff --git a/rogue_chat.html b/rogue_chat.html index 3b9238f..2e37e7f 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -485,6 +485,7 @@ let server = { t.type_ = tokens[2]; t.protection = tokens[3]; t.portable = parseInt(tokens[5]); + t.commandable = parseInt(tokens[6]); } else if (tokens[0] === 'THING_NAME') { let t = game.get_thing(tokens[1], false); t.name_ = tokens[2]; @@ -506,7 +507,7 @@ let server = { game.thing_types[tokens[1]] = tokens[2] } else if (tokens[0] === 'THING_CARRYING') { let t = game.get_thing(tokens[1], false); - t.carrying = true; + t.carrying = t = game.get_thing(tokens[2], false); } else if (tokens[0] === 'THING_INSTALLED') { let t = game.get_thing(tokens[1], false); t.installed = true; @@ -756,17 +757,24 @@ let tui = { tui.log_msg('@ finished tile protection drawing.') } this.tile_draw = false; + const player = game.things[game.player_id]; + if (mode_name == 'command_thing' && (!player.carrying || !player.carrying.commandable)) { + this.log_msg('? not carrying anything commandable'); + 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)) { - let player_position = game.things[game.player_id].position; let thing_id = null; for (let t_id in game.things) { if (t_id == game.player_id) { continue; } let t = game.things[t_id]; - if (player_position[0] == t.position[0] && player_position[1] == t.position[1]) { + if (player.position[0] == t.position[0] + && player.position[1] == t.position[1]) { thing_id = t_id; break; } @@ -853,7 +861,10 @@ let tui = { } }; if (this.selectables.length == 0) { - this.log_msg('none') + this.log_msg('none'); + terminal.blink_screen(); + this.switch_mode('play'); + return; } else { for (let [i, t] of this.selectables.entries()) { this.log_msg(i + ': ' + explorer.get_thing_info(t[1])); @@ -1456,10 +1467,8 @@ tui.inputEl.addEventListener('keydown', (event) => { tui.inputEl.value = ""; tui.switch_mode('edit'); } else if (tui.mode.name == 'command_thing' && event.key == 'Enter') { - if (tui.task_action_on('command')) { - server.send(['TASK:COMMAND', tui.inputEl.value]); - tui.inputEl.value = ""; - } + server.send(['TASK:COMMAND', tui.inputEl.value]); + tui.inputEl.value = ""; } else if (tui.mode.name == 'take_thing' && event.key == 'Enter') { const i = parseInt(tui.inputEl.value); if (isNaN(i) || i < 0 || i >= tui.selectables.length) { @@ -1686,13 +1695,16 @@ document.getElementById("teleport").onclick = function() { game.teleport(); }; for (const move_button of document.querySelectorAll('[id*="_move_"]')) { + if (move_button.id.startsWith('key_')) { // not a move button + continue; + }; let direction = move_button.id.split('_')[2].toUpperCase(); move_button.onclick = function() { - if (tui.mode.available_actions.includes("move") - || tui.mode.available_actions.includes("move_explorer")) { + if (tui.mode.available_actions.includes("move")) { server.send(['TASK:MOVE', direction]); - } else { + } else if (tui.mode.available_actions.includes("move_explorer")) { explorer.move(direction); + tui.full_refresh(); }; }; };