OSDN Git Service

342058f9c795423bf8e87ada586d45e2f49b611a
[nazghul-jp/nazghul-jp.git] / worlds / haxima-1.002 / enchanters-tower.scm
1 (kern-load "enchanters-tower-mech.scm")
2
3 ;;----------------------------------------------------------------------------
4 ;; Map
5 ;;
6 ;; Declare the map for the place here.
7 ;;----------------------------------------------------------------------------
8 (kern-mk-map 
9  'm_enchanters_tower 31 31 pal_expanded
10         (list
11           "tt tt bb te bb |v |v tt %a %% %% %% %% %c .. .. .. %a %% %% %% %% %% %% %% %% %% %% %% %% %% "
12           "bb te .. t% tb tt |v |v tt t5 %% %% %% bb .. .. .. bb .. bb .. bb .. bb .. bb .. bb .. %a %% "
13           "td t# .. .. .. .. bb |v |v tt %% %% %% .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. %% "
14           "bb .. .. .. .. .. .. ta |v |v %a %% %% bb .. .. .. bb .. bb .. bb .. bb .. bb .. .. .. bb %% "
15           "|v .. .. .. .. .. .. .. bb |v t5 %% %% %d .. .. .. %b %% %% %% %% %% %% %% %% %5 .. .. .. %% "
16           "|v bb .. .. .. .. .. .. .. |v |v %a %c xx w+ cc w+ xx %e tb tt tt tt tt t5 %a %% bb .. bb %% "
17           "|v |v .. .. .. .. && .. .. ta |v xx xx xx ,, cc ,, xx xx xx |v |v |v tt tt t5 %% .. .. .. %% "
18           "tc bb .. .. bb .. .. .. .. xx w+ xx && xx ,, cc ,, xx ,, xx xx xx |v |v |v tt %% bb .. bb %% "
19           "%5 .. .. |v |v tA .. .. xx xx ,, ,, ,, xx x! cc x! xx ,, 00 x! xx ?? xx |v tt %% .. .. .. %% "
20           "%% bb .. bb |v t5 tA xx xx ,, ,, ,, ,, xx ,, cc ,, xx ,, ,, xx ,, ,, xx |v tt %% bb .. bb %% "
21           "%% .. .. |v |v tt td xx ,, ,, 00 ,, ,, xx ,, cc ,, xx ,, ,, xx xx xx xx |v tc %% .. .. .. %% "
22           "%% bb .. bb |v |v xx xx ,, ,, 00 ,, ,, xx ,, cc ,, xx ,, ,, ,, ,, ,, xx xx %3 %% bb .. bb %% "
23           "%% .. .. %f ta |v xx ,, ,, ,, ,, ,, ,, ,, ,, cc ,, ,, ,, ,, ,, ,, ,, && xx %a %% .. .. .. %% "
24           "%c bb .. bb %f xx xx xx xx xx xx xx xx xx ,, cc ,, xx xx xx xx xx xx xx xx xx %e bb .. bb %a "
25           ".. .. .. .. .. w+ ,, ,, ,, ,, xx ,, ,, x! ,, cc ,, ,, xx ,, xx ,, ,, ,, ,, w+ .. .. .. .. .. "
26           ".. .. .. .. .. cc cc cc cc ,, xx ,, ,, ,, ,, cc cc ,, xx w+ xx ,, cc cc cc cc .. .. .. .. .. "
27           ".. .. .. .. .. w+ ,, ,, cc ,, xx ,, ,, xx ,, cc ,, ,, xx ,, xx ,, cc ,, ,, w+ .. .. .. .. .. "
28           "%5 bb .. bb %7 xx xx x! cc x! xx xx xx xx ,, cc ,, xx xx xx xx x! cc x! xx xx %7 bb .. bb %3 "
29           "%% %% %% %% %% %5 w+ ,, cc ,, ,, ,, ,, ,, ,, cc ,, ,, ,, ,, ,, ,, cc ,, w+ t7 %a %% %% %% %% "
30           "%% %c .. %a %% %% xx xx cc ,, pp ,, ,, pp ,, cc ,, pp ,, ,, pp ,, cc xx xx tt tt tt tt tt tt "
31           "%% .. .. .. %% %% %5 w+ cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc xx t3 |v |v |v |v |v tt "
32           "%% %5 .. %3 %% %% %% xx xx cc cc cc cc cc cc cc cc cc cc cc cc cc xx xx |v |v bb te bb |v |v "
33           "%% %% %% %% %% %% %% %5 xx xx x! ,, ,, pp ,, cc ,, pp ,, ,, x! xx xx |v |v tt td t& tb tt |v "
34           "%% %c t3 tt tt t5 tA %a %5 xx xx xx ,, ,, ,, cc ,, ,, ,, xx xx xx tb |v |v bb .. .. .. bb |v "
35           "%c t3 tL ~3 ~5 tJ t5 tA %a %% %5 xx w+ xx xx cc xx xx w+ xx %3 %% ~5 ta |v td .. ++ .. tb |v "
36           "tt tL ~3 -- -- ~5 tJ t5 .. %% %% %% %5 xx ,, cc ,, xx %3 %% %% ~b ~~ -d |v bb .. .. .. bb |v "
37           "tt ~3 -- __ __ -- ~5 tt .. %% %% %% %% xx ,, cc ,, xx %a %% %% %% ~c %% |v |v td .. tb |v |v "
38           "tt ~a -- __ __ -- ~c tt .. %% %% %% %% xx w+ cc w+ xx .. bb .. bb %% %c |v |v bb .. bb |v |v "
39           "tt tH ~a -- -- ~c tG tc .. %e .. %a %% .. .. .. .. .. .. .. .. .. == .. tt tc tA .. t3 |v |v "
40           "%5 ta tH ~a ~c tG tc t# %7 .. .. .. %% bb .. .. .. bb .. bb .. bb %% %5 |v bb t7 bb |v |v |v "
41           "%% %5 tt tt tt tt t# %3 %% %5 .. %3 %% %5 .. .. .. %3 %% %% %% %% %% %% |v |v |v |v |v |v |v "
42         )
43 )
44
45 (kern-mk-map 
46  'm_enchanters_tower_l2 31 31 pal_expanded
47         (list
48           "tt tt bb te bb |. |. tt %a %% %% %% %% %c .. .. .. %a %% %% %% %% %% %% %% %% %% %% %% %% %% "
49           "bb te .. t% tb tt |. |. tt t5 %% %% %% bb .. .. .. bb .. bb .. bb .. bb .. bb .. bb .. %a %% "
50           "td t# .. .. .. .. bb |. |. tt %% %% %% .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. %% "
51           "bb .. .. .. .. .. .. ta |. |. %a %% %% bb .. .. .. bb .. bb .. bb .. bb .. bb .. .. .. bb %% "
52           "|. .. .. .. .. .. .. .. bb |. t5 %% %% %d .. .. .. %b %% %% %% %% %% %% %% %% %5 .. .. .. %% "
53           "|. bb .. .. .. .. .. .. .. |. |. %a %c ee ee ee ee ee %e tb tt tt tt tt t5 %a %% bb .. bb %% "
54           "|. |. .. .. .. .. && .. .. ta |. ee ee ee ee ee ee ee ee ee |. |. |. tt tt t5 %% .. .. .. %% "
55           "tc bb .. .. bb .. .. .. .. ee ee ee ee ee ee ee ee ee ee ee ee ee |. |. |. tt %% bb .. bb %% "
56           "%5 .. .. |. |. tA .. .. ee ee ee ee xx w+ xx xx xx w+ xx ee ee ee ee ee |. tt %% .. .. .. %% "
57           "%% bb .. bb |. t5 tA ee ee ee xx xx xx ,, ,, xx ,, ,, xx xx xx ee ee ee |. tt %% bb .. bb %% "
58           "%% .. .. |. |. tt td ee ee xx xx ,, ,, ,, ,, xx ,, ,, ,, 00 xx xx ee ee |. tc %% .. .. .. %% "
59           "%% bb .. bb |. |. ee ee ee w+ ,, ,, ,, ,, ,, x! ,, ,, ,, ,, ,, w+ ee ee ee %3 %% bb .. bb %% "
60           "%% .. .. %f ta |. ee ee xx xx ,, 00 ,, ,, ,, xx ,, ,, ,, xx xx xx xx ee ee %a %% .. .. .. %% "
61           "%c bb .. bb %f ee ee ee xx ,, ,, ,, xx xx ,, xx ,, xx xx xx [[ ]] xx ee ee ee %e bb .. bb %a "
62           ".. .. .. .. .. ee ee ee w+ ,, ,, ,, xx ,, ,, ,, ,, ,, xx 00 ,, 00 xx ee ee ee .. .. .. .. .. "
63           ".. .. .. .. .. ee ee ee xx ,, ,, ,, x! ,, cc cc cc ,, x! ,, ,, 00 xx ee ee ee .. .. .. .. .. "
64           ".. .. .. .. .. ee ee ee xx xx xx xx xx ,, ,, ,, ,, ,, xx 00 ,, 00 xx ee ee ee .. .. .. .. .. "
65           "%5 bb .. bb %7 ee ee ee xx ,, ,, xx xx xx x! ,, x! xx xx xx [[ ]] xx ee ee ee %7 bb .. bb %3 "
66           "%% %% %% %% %% %5 ee ee xx xx xx x! ,, ,, ,, ,, ,, ,, ,, x! xx xx xx ee ee t7 %a %% %% %% %% "
67           "%% %c .. %a %% %% ee ee ee w+ ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, w+ ee ee ee tt tt tt tt tt tt "
68           "%% .. .. .. %% %% %5 ee ee xx xx [[ ]] ,, ,, ,, ,, ,, [[ ]] xx xx ee ee t3 |. |. |. |. |. tt "
69           "%% %5 .. %3 %% %% %% ee ee ee xx w+ xx [[ @@ @@ @@ ]] xx w+ xx ee ee ee |. |. bb te bb |. |. "
70           "%% %% %% %% %% %% %% %5 ee ee ee ee xx w+ xx xx xx w+ xx ee ee ee ee |. |. tt td t& tb tt |. "
71           "%% %c t3 tt tt t5 tA %a %5 ee ee ee ee ee ee ee ee ee ee ee ee ee tb |. |. bb .. .. .. bb |. "
72           "%c t3 tL ~3 ~5 tJ t5 tA %a %% %5 ee ee ee ee ee ee ee ee ee %3 %% ~5 ta |. td .. ++ .. tb |. "
73           "tt tL ~3 -- -- ~5 tJ t5 .. %% %% %% %5 ee ee ee ee ee %3 %% %% ~b ~~ -d |. bb .. .. .. bb |. "
74           "tt ~3 -- __ __ -- ~5 tt .. %% %% %% %% ee ee ee ee ee %a %% %% %% ~c %% |. |. td .. tb |. |. "
75           "tt ~a -- __ __ -- ~c tt .. %% %% %% %% ee ee ee ee ee .. bb .. bb %% %c |. |. bb .. bb |. |. "
76           "tt tH ~a -- -- ~c tG tc .. %e .. %a %% .. .. .. .. .. .. .. .. .. == .. tt tc tA .. t3 |. |. "
77           "%5 ta tH ~a ~c tG tc t# %7 .. .. .. %% bb .. .. .. bb .. bb .. bb %% %5 |. bb t7 bb |. |. |. "
78           "%% %5 tt tt tt tt t# %3 %% %5 .. %3 %% %5 .. .. .. %3 %% %% %% %% %% %% |. |. |. |. |. |. |. "
79         )
80 )
81
82 (kern-mk-map 
83  'm_enchanters_tower_l3 31 31 pal_expanded
84         (list
85           "tt tt bb te bb |. |. tt %a %% %% %% %% %c .. .. .. %a %% %% %% %% %% %% %% %% %% %% %% %% %% "
86           "bb te .. t% tb tt |. |. tt t5 %% %% %% bb .. .. .. bb .. bb .. bb .. bb .. bb .. bb .. %a %% "
87           "td t# .. .. .. .. bb |. |. tt %% %% %% .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. %% "
88           "bb .. .. .. .. .. .. ta |. |. %a %% %% bb .. .. .. bb .. bb .. bb .. bb .. bb .. .. .. bb %% "
89           "|. .. .. .. .. .. .. .. bb |. t5 %% %% %d .. .. .. %b %% %% %% %% %% %% %% %% %5 .. .. .. %% "
90           "|. bb .. .. .. .. .. .. .. |. |. %a %c ee ee ee ee ee %e tb tt tt tt tt t5 %a %% bb .. bb %% "
91           "|. |. .. .. .. .. && .. .. ta |. ee ee ee ee ee ee ee ee ee |. |. |. tt tt t5 %% .. .. .. %% "
92           "tc bb .. .. bb .. .. .. .. ee ee ee ee ee ee ee ee ee ee ee ee ee |. |. |. tt %% bb .. bb %% "
93           "%5 .. .. |. |. tA .. .. ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee |. tt %% .. .. .. %% "
94           "%% bb .. bb |. t5 tA ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee |. tt %% bb .. bb %% "
95           "%% .. .. |. |. tt td ee ee ee ee ee ee 00 00 00 00 00 ee ee ee ee ee ee |. tc %% .. .. .. %% "
96           "%% bb .. bb |. |. ee ee ee ee ee 00 00 00 ,, ,, ,, 00 00 00 ee ee ee ee ee %3 %% bb .. bb %% "
97           "%% .. .. %f ta |. ee ee ee ee ee 00 ,, ,, ,, xx ,, ,, ,, 00 ee ee ee ee ee %a %% .. .. .. %% "
98           "%c bb .. bb %f ee ee ee ee ee 00 00 ,, x! ,, ,, ,, x! ,, 00 00 ee ee ee ee ee %e bb .. bb %a "
99           ".. .. .. .. .. ee ee ee ee ee 00 ,, ,, ,, ,, cc ,, ,, ,, ,, 00 ee ee ee ee ee .. .. .. .. .. "
100           ".. .. .. .. .. ee ee ee ee ee 00 ,, xx ,, cc cc cc ,, xx ,, 00 ee ee ee ee ee .. .. .. .. .. "
101           ".. .. .. .. .. ee ee ee ee ee 00 ,, ,, ,, ,, cc ,, ,, ,, ,, 00 ee ee ee ee ee .. .. .. .. .. "
102           "%5 bb .. bb %7 ee ee ee ee ee 00 00 ,, x! ,, ,, ,, x! ,, 00 00 ee ee ee ee ee %7 bb .. bb %3 "
103           "%% %% %% %% %% %5 ee ee ee ee ee 00 ,, ,, ,, xx ,, ,, ,, 00 ee ee ee ee ee t7 %a %% %% %% %% "
104           "%% %c .. %a %% %% ee ee ee ee ee 00 00 00 ,, ,, ,, 00 00 00 ee ee ee ee ee tt tt tt tt tt tt "
105           "%% .. .. .. %% %% %5 ee ee ee ee ee ee 00 00 00 00 00 ee ee ee ee ee ee t3 |. |. |. |. |. tt "
106           "%% %5 .. %3 %% %% %% ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee |. |. bb te bb |. |. "
107           "%% %% %% %% %% %% %% %5 ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee |. |. tt td t& tb tt |. "
108           "%% %c t3 tt tt t5 tA %a %5 ee ee ee ee ee ee ee ee ee ee ee ee ee tb |. |. bb .. .. .. bb |. "
109           "%c t3 tL ~3 ~5 tJ t5 tA %a %% %5 ee ee ee ee ee ee ee ee ee %3 %% ~5 ta |. td .. ++ .. tb |. "
110           "tt tL ~3 -- -- ~5 tJ t5 .. %% %% %% %5 ee ee ee ee ee %3 %% %% ~b ~~ -d |. bb .. .. .. bb |. "
111           "tt ~3 -- __ __ -- ~5 tt .. %% %% %% %% ee ee ee ee ee %a %% %% %% ~c %% |. |. td .. tb |. |. "
112           "tt ~a -- __ __ -- ~c tt .. %% %% %% %% ee ee ee ee ee .. bb .. bb %% %c |. |. bb .. bb |. |. "
113           "tt tH ~a -- -- ~c tG tc .. %e .. %a %% .. .. .. .. .. .. .. .. .. == .. tt tc tA .. t3 |. |. "
114           "%5 ta tH ~a ~c tG tc t# %7 .. .. .. %% bb .. .. .. bb .. bb .. bb %% %5 |. bb t7 bb |. |. |. "
115           "%% %5 tt tt tt tt t# %3 %% %5 .. %3 %% %5 .. .. .. %3 %% %% %% %% %% %% |. |. |. |. |. |. |. "
116         )
117 )
118
119 ;;----------------------------------------------------------------------------
120 ;; Characters
121 ;;
122 ;; kern-load the character files here and call their first-time constructors.
123 ;;----------------------------------------------------------------------------
124 (kern-load "zane.scm")
125 (mk-zane-first-time 'ch_zane)
126
127 ;;(kern-load "gate-guard.scm")
128
129 (kern-load "enchanter.scm")
130 (mk-enchanter-first-time 'ch_enchanter)
131
132 ;;----------------------------------------------------------------------------
133 ;; Place
134 ;;
135 ;; Call the place constructor here.
136 ;;----------------------------------------------------------------------------
137 (kern-mk-place 
138  'p_enchanters_tower ; tag
139  "Enchanters Tower" ; name
140  s_tower             ; sprite
141  m_enchanters_tower ; map
142  #f                 ; wraps
143  #f                 ; underground
144  #f                 ; large-scale (wilderness)
145  #f                 ; tmp combat place
146  nil ; subplaces
147  nil ; neighbors
148
149  ;;objects
150  (list  
151
152   ;; characters
153   (list ch_zane 0 0) 
154
155   ;; magically locked doors at all entrances
156   (put (mk-magic-locked-door) 5 15)
157   (put (mk-magic-locked-door) 25 15)
158   (put (mk-magic-locked-door) 15 5)
159   (put (mk-magic-locked-door) 15 27)
160   
161   ;; dbg hack
162   ;; (put (kern-mk-obj t_poison_immunity_potion 1) 14 4)
163   ;; (put (kern-mk-obj t_in_ex_por_scroll 1) 16 4)
164
165   ;; portcullis's & levers for west store room
166   (put (kern-tag 'enchtwr-port-4 (mk-portcullis)) 13 15)
167   (put (mk-lever 'enchtwr-port-4) 21 9)
168
169   ;; treasure in west store room
170   (put (mk-chest 
171         'burn-trap
172         '((10 sulphorous_ash)
173                      (10 ginseng)
174                      (10 garlic)
175                      (10 spider_silk)
176                      (10 blood_moss)
177                      (10 black_pearl)
178                      (10 nightshade)
179                      (10 mandrake)
180                      (1 t_spell_book_white_magick_1)
181                      (1 t_spell_book_white_magick_2)
182                      ))
183        11 14)
184   (put (mk-chest
185         'spike-trap
186         '((10 t_heal_potion)
187                      (10 t_mana_potion)
188                      (5 t_cure_potion)
189                      (5 t_poison_immunity_potion)
190                      (1 t_invisibility_potion)
191                      (1 t_spell_book_force_magick_fields)
192                      ))
193        11 15)
194   (put (mk-chest
195         'lightning-trap
196         '(
197           (100 t_gold_coins)
198           ))
199        11 16)
200
201   (put (mk-bed) 21 11)
202   
203   (put (mk-magic-locked-door) 19 14)
204
205   (put (mk-door) 15  8)
206   (put (mk-door) 15 24)
207   (put (mk-door) 22 17)
208   (put (mk-door)  8 17)
209
210   (put (mk-ladder-up 'p_enchanters_tower_l2 16 15) 
211                 16 15)
212
213   (put (mk-door) 13 12)
214   (put (mk-door) 17 12)
215   (put (mk-clock) 7 12)
216   
217   (put (mk-shelf) 18 7)
218   (put (mk-shelf) 19 10)
219   )
220
221  (list 'on-entry-trigger-all 'quest-calltoarms-tower) ; hooks
222  (list  ; edge entrances
223         (list northeast 3 30)
224         (list southwest 30 14)
225  )
226  
227  )
228  
229 (mk-place-music p_enchanters_tower 'ml-castle)
230
231 (kern-mk-place 
232  'p_enchanters_tower_l2 ; tag
233  "Enchanters Tower" ; name
234  s_keep             ; sprite
235  m_enchanters_tower_l2 ; map
236  #f                 ; wraps
237  #f                 ; underground
238  #f                 ; large-scale (wilderness)
239  #f                 ; tmp combat place
240  nil ; subplaces
241  nil ; neighbors
242  ;;objects
243  (list
244  
245         (put (mk-ladder-down 'p_enchanters_tower 16 15) 
246                 16 15)
247         (put (mk-ladder-up 'p_enchanters_tower_l3 14 15) 
248                 14 15)
249  
250     (put (mk-door) 16 13)
251         (put (mk-door) 14 13)
252         (put (mk-door) 15 17)
253         
254         (put (mk-bed) 18 12)
255         
256         (put (mk-shelf) 14 9)
257         (put (mk-shelf) 14 10)
258         (put (mk-shelf) 14 11)
259         (put (mk-shelf) 11 10)
260         (put (mk-shelf) 12 10)
261         (put (mk-shelf) 12 12)
262         (put (mk-shelf) 9 13)
263         (put (mk-shelf) 11 13)
264         
265         (put (mk-shelf) 10 15)
266         (put (mk-shelf) 11 15)
267
268         (put (mk-shelf) 16 18)
269         (put (mk-shelf) 17 18)
270
271         (put (mk-hidden 't_ylem_an_ex_book 1) 14 9)
272         (put (mk-hidden 't_bet_flam_hur_book 1) 11 10)
273    
274     ;; treasure in east store room
275   (put (kern-mk-obj t_doom_staff               1) 20 13)
276   (put (kern-mk-obj t_xen_corp_scroll          1) 21 13)
277
278   (put (kern-mk-obj t_an_tym_scroll            1) 21 14)
279
280   (put (kern-mk-obj t_vas_rel_por_scroll       1) 20 17)
281   (put (kern-mk-obj t_spell_book_divination    1) 20 17)
282   (put (kern-mk-obj t_in_vas_por_ylem_scroll   1) 21 17)
283   (put (kern-mk-obj t_spell_book_gate_magick   1) 21 17)
284
285   (put (kern-mk-obj t_spell_book_enchantment_wards       1) 21 15)
286   (put (kern-mk-obj t_spell_book_enchantment_curses      1) 21 15)
287   (put (kern-mk-obj t_spell_book_enchantment_miscellanea 1) 21 15)
288
289   (put (kern-mk-obj t_gold_coins             500) 21 16)
290
291   (put (kern-mk-obj t_mans_note                1) 19 16)
292
293   
294     (put (kern-tag 'openlibwall 
295                  (mk-tblitter 'p_
296                               8
297                               0
298                               3
299                               1
300                               'm_hall_section))
301        0
302        0)
303
304     (put (kern-tag 'closelibwall 
305                  (mk-tblitter 'p_
306                               8
307                               0
308                               3
309                               1
310                               'm_hall_section))
311        0
312        0)
313   
314  )
315  (list 'on-entry-trigger-all) ; hooks
316  nil ; edge entrances
317  )
318  
319 (mk-place-music p_enchanters_tower_l2 'ml-castle)
320
321 ;;plain old mirror mirror
322 (let* ((kmir (kern-tag 'ench-guest-mirror (mk-mirror 's_mirror_bg_flagstones)))
323          (ksen (mk-char-sensor 'ench-guest-mirror)))
324         (kern-obj-put-at kmir (list p_enchanters_tower_l2 16 9))
325         (kern-obj-put-at ksen (list p_enchanters_tower_l2 16 10)))
326
327 ;;decorative test mirror
328 (let* ((testmirror1 (kern-tag 'ench-test-mirror1 
329                         (mk-mag-mirror 's_mirror_bg_flagstones
330                                 (list 'p_enchanters_tower_l2 14 19) 
331                                 (list 'p_enchanters_tower_l2 12 19)
332                                 #t 'testmirhandler
333                                 )))
334          (testmirror2 (kern-tag 'ench-test-mirror2
335                         (mk-mag-mirror 's_mirror_bg_flagstones
336                                 (list 'p_enchanters_tower_l2 12 19)
337                                 (list 'p_enchanters_tower_l2 14 19)
338                                 #t 'testmirhandler
339                                 )))
340                 (sigsplit (kern-tag 'ench-test-mirrors
341                         (mk-sig-splitter (list 'ench-test-mirror1 'ench-test-mirror2 nil))
342                         )))
343         (kern-obj-put-at testmirror1 (list p_enchanters_tower_l2 12 18))
344         (kern-obj-put-at testmirror2 (list p_enchanters_tower_l2 14 18))
345         (kern-obj-put-at sigsplit (list p_enchanters_tower_l2  0 0))
346         (kern-obj-put-at (mk-char-sensor 'ench-test-mirrors) (list p_enchanters_tower_l2 12 19))
347         (kern-obj-put-at (mk-char-sensor 'ench-test-mirrors) (list p_enchanters_tower_l2 14 19))
348         (kern-obj-put-at (mk-lever-on 'ench-test-mirrors)  (list p_enchanters_tower_l2 13 18))
349         )
350         
351 ;;working portal mirror
352 (let* ((doormirror1 (kern-tag 'ench-door-mirror1 
353                         (mk-mag-mirror 's_mirror_bg_flagstones
354                                 (list 'p_enchanters_tower_l2 20 15)
355                                 (list 'p_enchanters_tower_l2 9 17) 
356                                 #f 'doormirhandler
357                                 )))
358          (doormirror2 (kern-tag 'ench-door-mirror2
359                         (mk-mag-mirror 's_mirror_bg_flagstones
360                                 (list 'p_enchanters_tower_l2 9 17)
361                                 (list 'p_enchanters_tower_l2 20 15)
362                                 #f 'doormirhandler
363                                 )))
364                 (sigsplit (kern-tag 'ench-door-mirrors
365                         (mk-sig-splitter (list 'ench-door-mirror1 'ench-door-mirror2 nil))
366                         )))
367         (kern-obj-put-at doormirror1 (list p_enchanters_tower_l2 10 17))
368         (kern-obj-put-at doormirror2 (list p_enchanters_tower_l2 19 15))
369         (kern-obj-put-at sigsplit (list p_enchanters_tower_l2  0 0))
370         (kern-obj-put-at (mk-char-sensor 'ench-door-mirrors) (list p_enchanters_tower_l2 9 17))
371         (kern-obj-put-at (mk-char-sensor 'ench-door-mirrors) (list p_enchanters_tower_l2 20 15))
372         (kern-obj-put-at (mk-lever 'ench-door-mirrors)  (list p_enchanters_tower 19 16))
373         )
374  
375 ;;ench bedroom entrance
376 (let* ((broomwall (kern-tag 'ench-broom-wall
377                         (mk-bim-secret 't_secret_door 't_wall (list 'p_enchanters_tower 19 13)))))
378         (kern-obj-put-at ench-broom-wall (list p_enchanters_tower 19 13))
379         (kern-obj-put-at (mk-hidden-mech) (list p_enchanters_tower 20 8))
380         (kern-obj-put-at (mk-disg-lvr 'ench-broom-wall 's_wall_torch) (list p_enchanters_tower 20 8))
381         ) 
382  
383 ;;library wall entrance
384 (let* ((libwall (kern-tag 'ench-lib-wall
385                         (mk-bim-secret 't_secret_door 't_wall (list 'p_enchanters_tower_l2 9 16)))))
386         (kern-obj-put-at ench-lib-wall (list p_enchanters_tower_l2 9 16))
387         (kern-obj-put-at (mk-moving-shelf 
388                 (list 'p_enchanters_tower_l2 10 15)
389                 (list 'p_enchanters_tower_l2 9 15)
390                 'ench-lib-wall)
391                         (list p_enchanters_tower_l2 9 15))
392         )       
393         
394 ;;magic clock
395 (kern-obj-put-at (mk-mag-clock) (list p_enchanters_tower_l2 18 18))
396  
397  
398 (kern-mk-place 
399  'p_enchanters_tower_l3 ; tag
400  "Enchanters Tower Roof" ; name
401  s_keep             ; sprite
402  m_enchanters_tower_l3 ; map
403  #f                 ; wraps
404  #f                 ; underground
405  #f                 ; large-scale (wilderness)
406  #f                 ; tmp combat place
407  nil ; subplaces
408  nil ; neighbors
409  ;;objects
410  (list
411         (put (mk-ladder-down 'p_enchanters_tower_l2 14 15) 
412                 14 15)
413         ;; this needs a telescope 
414  )
415  
416  (list 'on-entry-trigger-all) ; hooks
417  nil ; edge entrances
418  )
419
420 (define (obj-line objfactory place yloc xloc xmax)
421         (kern-obj-put-at (objfactory xloc yloc) (list place xloc yloc))
422         (if (< xloc xmax)
423                 (obj-line objfactory place yloc (+ xloc 1) xmax)
424         ))  
425         
426 (define (obj-rect objfactory place xmin xmax ymin ymax)
427         (obj-line objfactory place ymin xmin xmax)
428         (if (< ymin ymax)
429                 (obj-rect objfactory place xmin xmax (+ ymin 1) ymax)
430         ))
431
432 (define (obj-list objfactory place loclist)
433         (kern-obj-put-at (objfactory (caar loclist) (cadar loclist)) (list place (caar loclist) (cadar loclist)))       
434         (if (not (equal? (cadr loclist) '()))
435                 (obj-list objfactory place (cdr loclist))
436         ))
437
438 (mk-place-music p_enchanters_tower_l3 'ml-castle)
439         
440 ;;no teleporting out of the tower!
441 ;; TODO use same mechanism as gryphon peak
442
443 (let ((blockers
444                 (lambda (xloc yloc) (mk-blocker))))
445         (obj-rect blockers p_enchanters_tower_l2 0 30 0 7)
446         (obj-rect blockers p_enchanters_tower_l2 0 7 8 22)
447         (obj-rect blockers p_enchanters_tower_l2 23 30 8 22)
448         (obj-rect blockers p_enchanters_tower_l2 0 30 23 30)
449         (obj-rect blockers p_enchanters_tower_l2 8 11 8 8)
450         (obj-rect blockers p_enchanters_tower_l2 19 22 8 8)
451         (obj-rect blockers p_enchanters_tower_l2 8 11 22 22)
452         (obj-rect blockers p_enchanters_tower_l2 19 22 22 22)
453         (obj-list blockers p_enchanters_tower_l2 (list 
454                 (list 8 9) (list 8 10) (list 8 11) (list 9 9) 
455                 (list 22 9) (list 22 10) (list 22 11) (list 21 9) 
456                 (list 8 19) (list 8 20) (list 8 21) (list 9 21) 
457                 (list 22 19) (list 22 20) (list 22 21) (list 21 21) 
458                 nil))
459         (obj-rect blockers p_enchanters_tower_l3 0 30 0 9)
460         (obj-rect blockers p_enchanters_tower_l3 0 9 10 20)
461         (obj-rect blockers p_enchanters_tower_l3 21 30 10 20)
462         (obj-rect blockers p_enchanters_tower_l3 0 30 21 30)
463         (obj-rect blockers p_enchanters_tower_l3 10 12 10 10)
464         (obj-rect blockers p_enchanters_tower_l3 18 20 10 10)
465         (obj-rect blockers p_enchanters_tower_l3 10 12 20 20)
466         (obj-rect blockers p_enchanters_tower_l3 18 20 20 20)
467         (obj-list blockers p_enchanters_tower_l3 (list 
468                 (list 10 11) (list 10 12) (list 20 11) (list 20 12) 
469                 (list 10 18) (list 10 19) (list 20 18) (list 20 29) 
470                 nil))
471         )
472         
473         
474