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)) {
 
             self.flash = True
             self.switch_mode('play')
             return
+        if mode_name == 'drop_thing' and\
+           not (hasattr(player, 'carrying' or player.carrying)):
+            self.log_msg('? not carrying anything droppable')
+            self.flash = True
+            self.switch_mode('play')
+            return
         if mode_name == 'admin_enter' and self.is_admin:
             mode_name = 'admin'
         elif mode_name in {'name_thing', 'admin_thing_protect'}: