1;;---------------------------------------------------------------------------- 2;; hidden -- wrapper object; when s)earched it creates the revelaed object and 3;; removes itself 4 5(define (hidden-mk objtype-tag quan) (list objtype-tag quan)) 6(define (hidden-objtype-tag hidden) (car hidden)) 7(define (hidden-quan hidden) (cadr hidden)) 8 9(define (hidden-search khidden ksearcher) 10 (println "hidden-search") 11 (let* ((hidden (kobj-gob-data khidden)) 12 (kobj (kern-mk-obj (eval (hidden-objtype-tag hidden)) 13 (hidden-quan hidden)))) 14 (kern-obj-put-at kobj 15 (kern-obj-get-location khidden)) 16 (kern-log-msg "You find something!") 17 (kern-obj-remove khidden))) 18 19(define hidden-ifc 20 (ifc nil 21 (method 'search hidden-search))) 22 23(mk-obj-type 't_hidden nil nil layer-none hidden-ifc) 24 25(define (mk-hidden objtype-tag quan) 26 (bind (kern-mk-obj t_hidden 1) 27 (hidden-mk objtype-tag quan))) 28 29(define (is-hidden? kobj) 30 (eqv? (kern-obj-get-type kobj) 31 t_hidden)) 32