OSDN Git Service

Nazghul-0.7.1
[nazghul-jp/nazghul-jp.git] / worlds / haxima-1.002 / hidden.scm
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))