home · contact · privacy
Only allow renaming and protection changing on thing player carries.
[plomrogue2] / rogue_chat.html
index 23626cf7503a91a5aeaa527b39f48cae1adfa698..35dc5d4aa812e88907dcdc80348f12e04b0476f2 100644 (file)
@@ -150,7 +150,7 @@ let mode_helps = {
     'name_thing': {
         'short': 'name thing',
         'intro': '',
-        'long': 'Give name to/change name of thing here.'
+        'long': 'Give name to/change name of carried thing.'
     },
     'command_thing': {
         'short': 'command',
@@ -170,7 +170,7 @@ let mode_helps = {
     'admin_thing_protect': {
         'short': 'change thing protection',
         'intro': '@ enter thing protection character:',
-        'long': 'Change protection character for thing here.'
+        'long': 'Change protection character for carried thing.'
     },
     'enter_face': {
         'short': 'edit face',
@@ -519,7 +519,7 @@ let server = {
             game.thing_types[tokens[1]] = tokens[2]
         } else if (tokens[0] === 'THING_CARRYING') {
             let t = game.get_thing_temp(tokens[1]);
-            t.carrying = game.get_thing(tokens[2], false);
+            t.carrying = game.get_thing_temp(tokens[2], false);
         } else if (tokens[0] === 'THING_INSTALLED') {
             let t = game.get_thing_temp(tokens[1]);
             t.installed = true;
@@ -787,7 +787,7 @@ let tui = {
   },
   switch_mode: function(mode_name) {
 
-    function fail(msg, return_mode) {
+    function fail(msg, return_mode='play') {
         tui.log_msg('? ' + msg);
         terminal.blink_screen();
         tui.switch_mode(return_mode);
@@ -800,34 +800,20 @@ let tui = {
     this.tile_draw = false;
     if (mode_name == 'command_thing' && (!game.player.carrying
                                          || !game.player.carrying.commandable)) {
-        return fail('not carrying anything commandable', 'play');
+        return fail('not carrying anything commandable');
+    } else if (mode_name == 'name_thing' && !game.player.carrying) {
+        return fail('not carrying anything to re-name');
+    } else if (mode_name == 'admin_thing_protect' && !game.player.carrying) {
+        return fail('not carrying anything to protect')
     } else if (mode_name == 'take_thing' && game.player.carrying) {
-        return fail('already carrying something', 'play');
+        return fail('already carrying something');
     } else if (mode_name == 'drop_thing' && !game.player.carrying) {
-        return fail('not carrying anything droppable', 'play');
+        return fail('not carrying anything droppable');
     } else if (mode_name == 'enter_hat' && !game.player.hat) {
         return fail('not wearing hat to edit', 'edit');
     }
     if (mode_name == 'admin_enter' && this.is_admin) {
         mode_name = 'admin';
-    } else if (['name_thing', 'admin_thing_protect'].includes(mode_name)) {
-        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 (game.player.position[0] == t.position[0]
-                && game.player.position[1] == t.position[1]) {
-                thing_id = t_id;
-                break;
-            }
-        }
-        if (!thing_id) {
-            return fail('not standing over thing', 'fail');
-        } else {
-            this.selected_thing_id = thing_id;
-        }
     };
     this.mode = this['mode_' + mode_name];
     if (["control_tile_draw", "control_tile_type", "control_pw_type"].includes(this.mode.name)) {
@@ -950,14 +936,12 @@ let tui = {
       } else if (this.mode.name == 'password') {
           this.inputEl.value = this.password;
       } else if (this.mode.name == 'name_thing') {
-          let t = game.get_thing(this.selected_thing_id);
-          if (t && t.name_) {
-              this.inputEl.value = t.name_;
+          if (game.player.carrying && game.player.carrying.name_) {
+              this.inputEl.value = game.player.carrying.name_;
           }
       } else if (this.mode.name == 'admin_thing_protect') {
-          let t = game.get_thing(this.selected_thing_id);
-          if (t && t.protection) {
-              this.inputEl.value = t.protection;
+          if (game.player.carrying && game.player.carrying.protection) {
+              this.inputEl.value = game.player.carrying.protection;
           }
       } else if (['enter_face', 'enter_hat'].includes(this.mode.name)) {
           const start = this.ascii_draw_stage * 6;
@@ -1606,8 +1590,7 @@ tui.inputEl.addEventListener('keydown', (event) => {
         if (tui.inputEl.value.length == 0) {
             tui.inputEl.value = " ";
         }
-        server.send(["THING_NAME", tui.selected_thing_id, tui.inputEl.value,
-                     tui.password]);
+        server.send(["THING_NAME", tui.inputEl.value, tui.password]);
         tui.switch_mode('edit');
     } else if (tui.mode.name == 'annotate' && event.key == 'Enter') {
         explorer.annotate(tui.inputEl.value);
@@ -1641,7 +1624,7 @@ tui.inputEl.addEventListener('keydown', (event) => {
         if (tui.inputEl.value.length != 1) {
             tui.log_msg('@ entered non-single-char, therefore aborted');
         } else {
-            server.send(['THING_PROTECTION', tui.selected_thing_id, tui.inputEl.value])
+            server.send(['THING_PROTECTION', tui.inputEl.value])
             tui.log_msg('@ sent new protection character for thing');
         }
         tui.switch_mode('admin');