1;;----------------------------------------------------------------------------
2;; Trigrave
3;;
4;; This town is at the heart of the starting region. It's a frontier town in
5;; the province of a lord who rules from the south, so don't expect anything
6;; too fancy. Here the player will find the basic shops and amenities needed to
7;; get by.
8;;----------------------------------------------------------------------------
9
10;;----------------------------------------------------------------------------
11;; Map
12;;
13;; This is the terrain map for the place. It may be altered at run-time so it
14;; must be saved and loaded with every session.
15;;
16;; This is a "composite" map. The individual building maps are defined
17;; separately and then blitted onto the terrain map.
18;;----------------------------------------------------------------------------
19(kern-mk-map
20 'm_lusty_juggs 14 10 pal_expanded
21 (list
22  "xx xx xx xx xx xx xx xx xx xx xx xx xx xx "
23  "xx x! @@ .L .U .S .T .Y x! xx cc cc cc xx "
24  "ws cc cc 00 cc cc 00 cc cc xx cc cc cc xx "
25  "sT cc cc 00 cc cc 00 cc cc x! xx cc xx xx "
26  "cc cc cc cc cc cc cc cc cc cc cc cc cc xx "
27  "cc cc cc cc cc cc cc cc cc cc cc cc && xx "
28  "xx cc cc 00 cc cc 00 cc cc x! cc cc && xx "
29  "ws cc cc 00 cc cc 00 cc cc xx cc cc cc xx "
30  "xx x! @@ .J .U .G .S @@ x! xx cc cc cc xx "
31  "xx xx xx xx xx xx xx xx xx xx xx ws xx xx "
32  )
33)
34
35(kern-mk-map
36 'm_iron_works 7 12 pal_expanded
37 (list
38  "xx xx xx xx xx xx xx "
39  "xx .I .R .O .N @@ xx "
40  "xx .W .O .R .K .S xx "
41  "ws cc cc cc cc cc xx "
42  "sA cc cc cc cc cc xx "
43  "cc cc cc cc cc __ xx "
44  "xx cc cc cc cc !! xx "
45  "ws cc cc cc cc cc xx "
46  "xx xx cc xx cc xx xx "
47  "xx cc cc x! cc cc xx "
48  "xx cc cc xx cc cc xx "
49  "xx xx xx xx xx xx xx "
50  ))
51
52(kern-mk-map
53 'm_quiet_inn 13 11 pal_expanded
54 (list
55  "xx xx xx xx xx xx xx xx xx xx xx xx xx "
56  "xx cc cc x! .G .R .A .Y @@ x! cc cc xx "
57  "xx cc cc x! @@ .D .O .V .E x! cc cc xx "
58  "cc cc cc cc cc cc cc cc cc cc cc cc xx "
59  "xx xx xx x! @@ .I .N .N @@ x! xx xx xx "
60  "xx cc cc xx cc cc cc cc cc xx cc cc xx "
61  "xx cc cc cc cc cc cc cc cc cc cc cc xx "
62  "xx xx xx x! cc cc cc cc cc x! xx xx xx "
63  "xx cc cc cc cc cc cc cc cc cc cc cc xx "
64  "xx cc cc xx cc cc cc cc cc xx cc cc xx "
65  "xx xx xx xx ws x! cc x! ws xx xx xx xx "
66  )
67 )
68
69(kern-mk-map
70 'm_dry_goods 7 10 pal_expanded
71 (list
72  " xx xx xx xx xx xx xx "
73  " xx @@ .D .R .Y @@ xx "
74  " xx .G .O .O .D .S xx "
75  " cc cc cc cc cc cc ws "
76  " xx @@ @@ @@ @@ @@ xx "
77  " xx cc cc cc cc cc sE "
78  " xx cc cc cc cc cc cc "
79  " xx cc cc cc cc cc xx "
80  " xx cc cc cc cc cc ws "
81  " xx xx xx xx xx xx xx "
82  )
83 )
84
85
86(kern-mk-map
87 'm_trigrave 32 32 pal_expanded
88	(list
89		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt bb .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt "
90		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt td .. .. .. tb tt tt tt tt tt tt tt tt tt tt tt "
91		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt bb .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt "
92		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt td .. .. .. tb tt tt tt tt tt tt tt tt tt tt tt "
93		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt bb .. .. .. bb ta tt tt tt tt tt tt tt tt tt tt "
94		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt td .. .. .. .. .. bb ta tt tt tt tt tt tt tt tt "
95		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt bb .. .. .. .. .. .. tD tt tt tt tt tt tt tt tt "
96		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt td .. .. .. .. .. bb t3 tt tt tt tt tt tt tt tt "
97		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt bb .. .. .. bb t3 tt tt tt tt tt tt tt tt tt tt "
98		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt td .. .. .. tb tt tt tt tt tt tt tt tt tt tt tt "
99		"tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt bb .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt "
100		"tt tt tt tt tt tt tc t& ta tt tt tt tt tt tt tt td .. .. .. tb tt tt tt tt tt tt tt tt tt tt tt "
101		"tt tt tt tt tt tc bb .. bb tt tt tt tt tt tt tt bb .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt "
102		"tt tt tt tt tc sI .. .. .. ta tt tt tt tt tt tc .. .. .. .. .. ta tt tt tt tt tt tt tt tt tt tt "
103		"bb te bb te bb .. .. .. .. .. bb te bb te bb .. .. .. .. .. .. .. bb te bb te bb te bb te bb ta "
104		".. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. "
105		".. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. "
106		".. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. "
107		"bb t7 bb t7 bb t7 bb t7 bb .. .. .. .. .. .. .. bb t7 bb t7 bb t7 bb t7 bb t7 bb t7 bb t7 bb t3 "
108		"tt tt tt tt tt tt tt tt tt t5 .. .. .. .. .. t3 tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
109		"tt tt tt tt tt tt tt tt tt tt bb .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
110		"tt tt tt tt tt tt tt tt tt tt td .. .. .. tb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
111		"tt tt tt tt tt tt tt tt tt tt bb .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
112		"tt tt tt tt tt tt tt tt tt tt td .. .. .. .. ta tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
113		"tt tt tt tt tt tt tt tt tt tt bb .. .. .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
114		"tt tt tt tt tt tt tt tt tt tt td .. .. .. .. .. .. tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
115		"tt tt tt tt tt tt tt tt bb .. .. .. .. .. .. .. .. tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
116		"tt tt tt tt tt tt tt tt .. .. .. .. .. .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
117		"tt tt tt tt tt tt tt tt bb .. .. .. .. .. .. t3 tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
118		"tt tt tt tt tt tt tt tt tt tt td .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
119		"tt tt tt tt tt tt tt tt tt tt bb .. .. .. tb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
120		"tt tt tt tt tt tt tt tt tt tt t5 .. .. .. bb tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt "
121	)
122 )
123
124;;----------------------------------------------------------------------------
125;; NPCs
126;;
127;; NPC's are defined in two steps. Step 1 is to kern-load their read-only
128;; definition file (this file includes their conversation, schedule,
129;; constructor, etc). Step 2 is to call kern-mk-char to instantiate them.
130;;----------------------------------------------------------------------------
131(kern-load "jim.scm")
132(bind
133 (kern-mk-char 'ch_jim ; tag
134               "Jim"                ; name
135               sp_human            ; species
136               nil                 ; occ
137               s_townsman          ; sprite
138               faction-men         ; starting alignment
139               4 1 2              ; str/int/dex
140               0 0                 ; hp mod/mult
141               0 0                 ; mp mod/mult
142               max-health -1 max-health 0 4  ; hp/xp/mp/AP_per_turn/lvl
143               #f                  ; dead
144               'jim-conv          ; conv
145               sch_jim           ; sched
146               'townsman-ai                 ; special ai
147               nil                 ; container
148               (list t_mace   ; we need a 'hammer'
149                 			t_armor_chain)
150               )
151 (jim-mk))
152
153(kern-load "gwen.scm")
154(bind
155 (kern-mk-char 'ch_gwen ; tag
156               "Gwen"               ; name
157               sp_human            ; species
158               nil                 ; occ
159               s_gwen ; sprite
160               faction-men         ; starting alignment
161               0 1 2              ; str/int/dex
162               0 0                 ; hp mod/mult
163               0 0                 ; mp mod/mult
164               max-health -1 max-health 0 2  ; hp/xp/mp/AP_per_turn/lvl
165               #f                  ; dead
166               'gwen-conv          ; conv
167               sch_gwen           ; sched
168               'townsman-ai                 ; special ai
169               (mk-inventory (list (list 1 t_dagger)))                 ; container
170               nil                 ; readied
171               )
172 (gwen-mk))
173
174(kern-load "chanticleer.scm")
175(bind
176 (kern-mk-char 'ch_chant ; tag
177               "Chanticleer"          ; name
178               sp_human            ; species
179               nil                 ; occ
180               s_chanticleer     ; sprite
181               faction-men         ; starting alignment
182               0 4 2              ; str/int/dex
183               0 0                 ; hp mod/mult
184               0 0                 ; mp mod/mult
185               max-health -1 max-health 0 5  ; hp/xp/mp/AP_per_turn/lvl
186               #f                  ; dead
187               'chant-conv         ; conv
188               sch_chant           ; sched
189               'townsman-ai                 ; special ai
190               (mk-inventory (list (list 1 t_sword)))                 ; container
191               (list t_armor_leather)                 ; readied
192               )
193 (chant-mk))
194
195(kern-load "earl.scm")
196(bind
197 (kern-mk-char 'ch_earl     ;; tag
198               "Earl"       ;; name
199               sp_human     ;; species
200               nil          ;; occ
201               s_townsman   ;; sprite
202               faction-men  ;; starting alignment
203               0 5 3       ;; str/int/dex
204               0 0          ;; hp mod/mult
205               0 0          ;; mp mod/mult
206               max-health -1 max-health 0 4  ;; hp/xp/mp/AP_per_turn/lvl
207               #f                  ; dead
208               'earl-conv   ;; conv
209               sch_earl     ;; sched
210               'townsman-ai          ;; special ai
211               (mk-inventory (list
212               	(list 1 t_staff)
213               	(list 1 t_sling)))          ;; container
214               nil          ;; readied
215               )
216 (earl-mk))
217
218(kern-load "miggs.scm")
219(mk-miggs 'ch_miggs)
220
221;;----------------------------------------------------------------------------
222;; Special Objects
223;;----------------------------------------------------------------------------
224(define jims-chest
225  (mk-chest
226   nil ;; trap
227   '((1 t_scratched_shield)
228                (1 t_armor_plate)
229                (1 t_iron_helm))))
230
231(define jims-other-chest
232  (mk-chest
233   'spike-trap ;; trap
234   '((100 t_gold_coins)
235                (3 t_dagger)
236                (3 t_mace)
237                (3 t_sword)
238                )))
239
240(define earls-chest
241  (make-invisible
242   (mk-chest
243    nil ;; trap
244    '((1 t_stun_wand)
245                 (3 t_xen_corp_scroll)
246                 (3 t_in_vas_por_ylem_scroll)
247                 (5 t_vas_mani_scroll)))))
248
249;;----------------------------------------------------------------------------
250;; Place
251;;
252;; The place definition instantiates the place.
253;;----------------------------------------------------------------------------
254(kern-mk-place
255 'p_trigrave     ; tag
256 "Trigrave"      ; name
257 s_town          ; sprite
258
259 ;; Blit the buildings over the basic terrain map.
260 (if #f
261     m_trigrave
262     (blit-maps m_trigrave
263                (list 17 21 m_lusty_juggs 0 0 14 10)
264                (list 24 1  m_iron_works  0 0 7  12)
265                (list 1  1  m_quiet_inn   0 0 13 11)
266                (list 1 21  m_dry_goods   0 0 7  10)))
267
268 #f              ; wraps
269 #f              ; underground
270 #f              ; large-scale (wilderness)
271 #f              ; tmp combat place
272 nil ; subplaces
273 nil ; neighbors
274 (list ; objects
275
276  ;; characters
277  (list ch_jim   15 15)
278  (list ch_gwen  15 15)
279  (list ch_chant 15 15)
280  (list ch_earl  15 15)
281  (put ch_miggs 15 15)
282
283  ;; Inn
284  (list (kern-tag 'trigrave-inn-room-1-door (mk-locked-door))  4 7)
285  (list (kern-tag 'trigrave-inn-room-2-door (mk-locked-door))  4 9)
286  (list (kern-tag 'trigrave-inn-room-3-door (mk-locked-door)) 10 9)
287  (list (kern-tag 'trigrave-inn-room-4-door (mk-locked-door)) 10 7)
288  (list (mk-locked-door) 1 4)
289  (list (mk-door)  4  4)
290  (list (mk-door) 10  4)
291  (list (mk-door)  7 11)
292  (list (mk-bed)   2  6)
293  (list (mk-bed)  12  6)
294  (list (mk-bed)  12  9)
295  (list (mk-bed)  12  2)
296
297  ;; Earl's room in the inn
298  (put (mk-bed)   2  9)
299  (put earls-chest 2 10)
300
301  ;; General store
302  (list (mk-locked-door)  1 24)
303  (list (mk-door)         7 27)
304
305  ;; Iron Works
306  (list (mk-door)                                  24 6)
307  (list (mk-locked-door)                           26 9)
308  (list (kern-tag 'tiw-portcullis (mk-portcullis)) 28 9)
309  (list (mk-lever 'tiw-portcullis)                 25 11)
310  (list (mk-bed)                                   25 10)
311  (put jims-chest                                  28 11)
312  (put jims-other-chest                            29 11)
313
314  ;; Lusty Juggs (tavern)
315  (list (mk-locked-door) 28 24)
316  (list (kern-tag 'tlj-d-1 (mk-connected-door 'tlj-d-2)) 17 25)
317  (list (kern-tag 'tlj-d-2 (mk-connected-door 'tlj-d-1)) 17 26)
318  (list (mk-clock) 25 23)
319  (put (mk-bed) 27 22)
320
321  ;; Chickens!
322  (put (mk-npc 'chicken 5) 15 15)
323  (put (mk-npc 'chicken 5) 16 16)
324
325
326  )
327 (list 'lock-inn-room-doors) ;; hooks
328 (list  ;; edge entrances
329  (list south 18 0)
330  (list north  12 31)
331  )
332 )
333
334(mk-place-music p_trigrave 'ml-small-town)
335