OSDN Git Service

a6f41b33a5c29ed4c7574bd6b905af2d6f4a9a1e
[nazghul-jp/nazghul-jp.git] / worlds / haxima-1.002 / keys.scm
1 ;; Keys are a bit unusual in that each unique key must be a unique object
2 ;; type. This is because player inventory consists only of object types, not
3 ;; instances, and to use a key it must be in player inventory.
4
5 (define (mk-key-type tag name sprite)
6   (mk-reusable-item 
7    tag name sprite norm
8    (lambda (ktype kuser)
9      (let ((ktarg (ui-target (kern-obj-get-location kuser)
10                              1 
11                              (mk-ifc-query 'use-key))))
12        (cond ((null? ktarg) 
13               result-no-target)
14              (else
15               (ifccall ktarg 'use-key ktype)
16               result-ok))))))
17
18 (define (mk-key type)
19   (kern-mk-obj type 1))
20
21 ;; List all the key types. This doesn't *need* to be done here, but like any
22 ;; type, it must be done in a file that is kern-loaded, which means it can't be
23 ;; done in a place file. So by convention let's list them here.
24 (mk-key-type 't_brundegardt_tower_4_key "weathered key" s_picklock)
25 (mk-key-type 't_stewardess_chest_key    "shiny key"     s_picklock)