+ "You hear nothing unexpected.")\r
+\r
+(defaction drink (what)\r
+ "You can't drink that.")\r
+\r
+(defaction eat (what)\r
+ "You can't eat that.")\r
+\r
+(defmethod eat ((obj food))\r
+ (if (has obj :edible)\r
+ (progn \r
+ (rmv obj)\r
+ (when (run-action-after obj)\r
+ (format nil "You eat ~a." (the-name obj))))\r
+ (call-next-method)))\r
+\r
+(defaction rub (what)\r
+ "This action achieves nothing.")\r
+\r
+(defaction turn (what)\r
+ "That's fixed in place")\r
+\r
+(defmethod turn ((item item))\r
+ (if (has item :item)\r
+ "This action achieves nothing."\r
+ (call-next-method)))\r
+\r
+(defaction switch-on (what)\r
+ "You can't switch this on")\r
+\r
+(defaction switch-off (what)\r
+ "You can't switch this off")\r
+\r
+(defmethod switch-on ((obj switchable))\r
+ (if (has obj :switchable)\r
+ (progn\r
+ (if (has obj :on)\r
+ (format nil "~a is already on." (the-name obj))\r
+ (progn (give obj :on)\r
+ (when (run-action-after obj) "Done."))))\r
+ (call-next-method)))\r
+\r
+(defmethod switch-off ((obj switchable))\r
+ (if (has obj :switchable)\r
+ (progn\r
+ (if (hasnt obj :on)\r
+ (format nil "~a is already off." (the-name obj))\r
+ (progn (give obj :~on)\r
+ (when (run-action-after obj) "Done."))))\r
+ (call-next-method))) \r
+ \r