if t.type_ == 'BottleDeposit'
                       and t.position == target_position]:
                 raise PlayError('cannot drop full bottle into bottle deposit')
+        for t in [t for t in self.thing.game.things
+                  if t.type_ == 'CookieSpawner'
+                  and t.position == target_position]:
+            if not self.thing.carrying.cookable:
+                raise PlayError('cannot cook items of this type')
+            break
 
     def do(self):
         target_position = self._get_move_target()
 
     portable = False
     protection = '.'
     commandable = False
+    cookable = False
     carried = False
 
     def __init__(self, *args, **kwargs):
 class Thing_Psychedelic(Thing):
     symbol_hint = 'P'
     portable = True
+    cookable = True
 
 
 
     full = True
     thing_char = '~'
     spinnable = True
+    cookable = True
 
     def empty(self):
         self.thing_char = '_'
     portable = True
     design = ' +--+ ' + ' |  | ' + '======'
     spinnable = True
+    cookable = True
 
     def spin(self):
         new_design = ''
     next_song_start = datetime.datetime.now()
     playlist_index = -1
     playing = True
+    cookable = True
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)