OSDN Git Service

Nazghul-0.7.1
[nazghul-jp/nazghul-jp.git] / worlds / haxima-1.002 / terrains.scm
1 ;;----------------------------------------------------------------------------
2 ;; Terrains
3 ;;----------------------------------------------------------------------------
4
5 (define (terrain-effect-burn obj)
6   (kern-obj-apply-damage obj "burning" 10))
7
8 (define (terrain-effect-poison obj)
9   (if (and (> (kern-dice-roll "1d20") 10)
10            (kern-obj-is-being? obj)
11            (kern-obj-add-effect obj ef_poison nil))
12       (kern-log-msg "Noxious fumes!")))
13         
14 ;; swamp logic:
15 ;; 1) swamp only effects you on your turn (ie the 'slow progress' doesnt mean you get whacked 3 times before your next turn)
16 ;;                      this is calculated by whether your character speed is enough to bring your ap positive in your next turn
17 ;; 2) swamp is weaker in the worldmap, where you are assumed to have some lattitude to go around the noxious bits
18 ;; 3) swamp gives 'noxious fumes' feedback if someone in your party gets poisoned, or you see an individual critter get poisoned
19 ;;       you dont get feedback when a npc party moves over swamp
20 (define (terrain-effect-swamp obj)
21   (if (and (kern-obj-is-being? obj)
22                         (if (kern-place-is-wilderness? (loc-place (kern-obj-get-location obj)))
23                                 (> (kern-obj-get-ap (kern-char-get-party obj)) (- 0 (kern-char-get-speed obj)))
24                                 (> (kern-obj-get-ap obj) (- 0 (kern-char-get-speed obj)))
25                                 ))
26         (let* (
27                         (difficulty
28                                 (cond ((< (kern-obj-get-movecost obj pclass-canfly) cant) 1)
29                                         ((kern-place-is-wilderness? (loc-place (kern-obj-get-location obj))) 4)
30                                         (else 6)
31                                 ))
32                         (avoid (* 2 (occ-ability-dexdefend obj)))
33                         (avoidroll (- (kern-dice-roll (mkdice 1 (+ avoid difficulty))) avoid ))
34                         (strength (kern-char-get-strength obj))
35                         (resistroll (- (kern-dice-roll (mkdice 1 (+ strength 10))) strength ))
36                         )
37                 (if (> avoidroll 0)
38                         (if (> resistroll 0)
39                                 (begin
40                                         (kern-obj-add-effect obj ef_poison nil)
41                                         (if (kern-place-is-wilderness? (loc-place (kern-obj-get-location obj)))
42                                                 (if (is-player-party-member? obj)
43                                                         (kern-log-msg "Noxious fumes!"))
44                                                 (msg-log-visible (kern-obj-get-location obj) "Noxious fumes!")
45                                         )                       
46                                 )
47                         ))
48         )))
49         
50 (define (terrain-effect-lava obj)
51   (if (eqv? (kern-obj-get-movecost obj pclass-canfly) cant)
52         (if (and (kern-obj-is-being? obj)
53                         (kern-place-is-wilderness? (loc-place (kern-obj-get-location obj))))
54                 (let* ((avoid (* 2 (occ-ability-dexdefend obj)))
55                                 (avoidroll (- (kern-dice-roll (mkdice 1 (+ avoid 5))) avoid)))
56                         (if (> avoidroll 0)
57                                 (generic-burn obj (mkdice avoidroll 4)))
58                 )
59                 (burn obj))))
60
61 (define (terrain-effect-torch obj)
62         (generic-burn obj "1d4"))
63
64 ;; opacity constants:
65 (define opq 12) ;; opaque
66 (define hvy 5)  ;; heavy
67 (define dns 3)  ;; dense
68 (define lgt 2)  ;; light (density)
69 (define trn 0)  ;; transparent
70
71 (define terrains
72   (list
73    ;;    tag                name            pclass           sprite               t light step-on
74    ;;    =================  ==============  =============    ==============       = ===== =======
75    (list 't_stars           "stars"         pclass-space     s_stars             trn 0 'chasm-fall)
76    (list 't_deep            "deep water"    pclass-deep      s_deep              trn 0 nil)
77    (list 't_sunlit_deep     "deep water"    pclass-deep      s_deep              trn 64 nil)
78    (list 't_shallow         "water"          pclass-deep      s_shallow          trn 0 nil)
79    (list 't_blendable_shoals "shallow water" pclass-shoals    s_shoals           trn 0 nil)
80    (list 't_shoals          "shallow water" pclass-shoals    s_shoals            trn 0 nil)
81    (list 't_sludge          "oily sludge"   pclass-sludge    s_sludge            trn 0 nil)
82    (list 't_shallow_sludge  "oily sludge"   pclass-shallows  s_shallow_sludge    trn 0 nil)
83    (list 't_grass           "grass"         pclass-grass     s_grass             trn 0 nil)
84    (list 't_sunlit_grass    "grass"         pclass-grass     s_grass             trn 64 nil)
85    (list 't_dirt            "dirt"          pclass-grass     s_dirt              trn 0 nil)
86    (list 't_gravel          "gravel"        pclass-grass     s_gravel            trn 0 nil)
87    (list 't_trees_v         "trees"         pclass-trees     s_trees             trn 0 nil)
88    (list 't_trees           "trees"         pclass-trees     s_trees             lgt 0 nil)
89    (list 't_trees_d         "trees"         pclass-trees     s_trees             dns 0 nil)
90
91    (list 't_forest_v        "forest"        pclass-forest    s_forest            trn 0 nil)
92    (list 't_forest          "forest"        pclass-forest    s_forest            hvy 0 nil)
93    (list 't_forest_d        "forest"        pclass-forest    s_forest            7   0 nil)
94    (list 't_forest_l        "forest"        pclass-forest    s_forest            dns 0 nil)
95    (list 't_forest_b        "forest"        pclass-forest    s_forest            opq 0 nil)
96
97    (list 't_hills           "hills"         pclass-hills     s_hills             dns 0 nil)
98    (list 't_mountains_v     "mountains"     pclass-vmountains s_mountains         trn 0 nil)
99    (list 't_mountains_b     "mountains (below)"     pclass-space s_mountains         trn 0 nil)
100    (list 't_mountains       "mountains"     pclass-mountains s_mountains         opq 0 nil)
101    (list 't_fake_mountains  "mountains"     pclass-grass     s_mountains         opq 0 nil)
102    (list 't_bog             "bog"           pclass-hills    s_bog               trn 0 'terrain-effect-swamp)
103    (list 't_lava            "lava"          pclass-hills     s_lava              trn  128 'terrain-effect-lava)
104    (list 't_fake_lava       "lava"          pclass-grass     s_lava              trn  128 nil)
105    (list 't_deep_lava       "deep lava"     pclass-deep      s_deep_lava         trn   16 'great-burn)
106    (list 't_fire_terrain    "fire"          pclass-grass     s_field_fire        trn  512 'burn)
107    (list 't_fireplace       "fireplace"     pclass-grass     s_fireplace         trn 2048 'burn)
108
109    (list 't_cobblestone     "cobblestone"   pclass-grass     s_cobblestone       trn 0 nil)
110    (list 't_gold_cobble     "cobblestone"   pclass-grass     s_gold_cobble       trn 0 nil)
111    (list 't_cyan_cobble     "cobblestone"   pclass-grass     s_cyan_cobble       trn 0 nil)
112    (list 't_gray_cobble     "cobblestone"   pclass-grass     s_gray_cobble       trn 0 nil)
113    (list 't_blue_cobble     "cobblestone"   pclass-grass     s_blue_cobble       trn 0 nil)
114    (list 't_olive_cobble     "cobblestone"   pclass-grass     s_olive_cobble       trn 0 nil)
115    (list 't_white_cobble     "cobblestone"   pclass-grass     s_white_cobble       trn 0 nil)
116    (list 't_black_tile     "floor tile"   pclass-grass     s_black_tile       trn 0 nil)
117    (list 't_gold_spiral_tile     "floor tile"   pclass-grass     s_gold_spiral_tile       trn 0 nil)
118    (list 't_blue_spiral_tile     "floor tile"   pclass-grass     s_blue_spiral_tile       trn 0 nil)
119    (list 't_tombstone       "tombstone"     pclass-boulder s_tombstone trn 0 nil)
120    (list 't_tombstone2       "tombstone"     pclass-boulder s_tombstone2 trn 0 nil)
121
122    (list 't_impassable_cobblestone    "cobblestone"   pclass-wall     s_cobblestone       trn 0 nil)
123    (list 't_flagstones      "flagstones"    pclass-grass     s_flagstone         trn 0 nil)
124    (list 't_inv_wall        "flagstones"    pclass-repel     s_flagstone         trn 0 'burn)
125    (list 't_doorway         "doorway"       pclass-grass     s_stone_arch        trn 0 nil) ;;dont use this if poss
126    (list 't_leftwing        "castle wall"   pclass-wall      s_leftwing          trn 0 nil)
127    (list 't_rightwing       "castle wall"   pclass-wall      s_rightwing         trn 0 nil)
128    (list 't_ship_hull       "ship's bulwark"   pclass-wall      s_wall           trn 0 nil)
129    (list 't_ship_hull2      "ship's hull"   pclass-wall      s_wall              opq 0 nil)
130    (list 't_sh_hull_NE      "ship's hull"   pclass-wall      s_wall_b            trn 0 nil)
131    (list 't_sh_hull_NW      "ship's hull"   pclass-wall      s_wall_a            trn 0 nil)
132    (list 't_sh_hull_SE      "ship's hull"   pclass-wall      s_wall_c            trn 0 nil)
133    (list 't_sh_hull_SW      "ship's hull"   pclass-wall      s_wall_d            trn 0 nil)
134    (list 't_mast            "mast"          pclass-wall      s_mast              trn 0 nil)
135    (list 't_ships_wheel     "ship's wheel"  pclass-wall      s_ships_wheel       trn 0 nil)
136    (list 't_deck            "deck"          pclass-grass     s_deck              trn 0 nil)
137    (list 't_boulder         "boulder"       pclass-boulder   s_boulder           lgt 0 nil)
138    (list 't_wall_rock_v     "rock wall"     pclass-wall      s_wall_rock         trn 0 nil)
139    (list 't_wall_rock       "rock wall"     pclass-wall      s_wall_rock         opq 0 nil)
140    (list 't_fake_wall_rock  "rock wall"     pclass-forest    s_secret_rock       opq 0 nil)
141    (list 't_wall_v          "wall"          pclass-wall      s_wall_stone        trn 0 nil)
142    (list 't_wall            "wall"          pclass-wall      s_wall_stone        opq 0 nil)
143    (list 't_fake_wall       "wall"          pclass-forest    s_wall_stone        opq 0 nil)
144    (list 't_wall_torch      "wall torch"    pclass-wall      s_wall_torch        opq 1024 'terrain-effect-torch)
145    (list 't_arrow_slit      "arrow slit"    pclass-bars      s_arrow_slit        trn 0 nil)
146    (list 't_window_in_stone "window"        pclass-bars      s_window_in_stone   trn 0 nil)
147    (list 't_window_in_rock  "window"        pclass-bars      s_window_in_rock    trn 0 nil)
148    (list 't_secret_door     "secret door"   pclass-grass     s_secret_door       opq 0 nil)
149    (list 't_sea_wall_v      "sea wall"      pclass-wall      s_wall              trn 0 nil)
150    (list 't_sea_wall        "sea wall"      pclass-wall      s_wall              opq 0 nil)
151    (list 't_sea_wall_NE     "sea wall"      pclass-wall      s_wall_b            opq 0 nil)
152    (list 't_sea_wall_NW     "sea wall"      pclass-wall      s_wall_a            opq 0 nil)
153    (list 't_sea_wall_SE     "sea wall"      pclass-wall      s_wall_c            opq 0 nil)
154    (list 't_sea_wall_SW     "sea wall"      pclass-wall      s_wall_d            opq 0 nil)
155    (list 't_ankh            "ankh"          pclass-wall      s_ankh              trn 0 nil)
156    (list 't_statue          "statue"        pclass-wall      s_statue            trn 0 nil)
157    (list 't_altar           "altar"         pclass-boulder      s_altar             trn 0 nil)
158    (list 't_rune_altar      "rune altar"    pclass-boulder      s_altar             trn 64 nil)
159    (list 't_active_altar    "activated rune altar" pclass-boulder s_active_altar    trn 512 nil)
160    (list 't_pillar          "pillar"        pclass-wall      s_pillar            trn 0 nil)
161    (list 't_false_pillar    "pillar"        pclass-grass     s_pillar            trn 0 nil)
162    (list 't_counter_2x1_w   "counter"       pclass-boulder   s_counter_2x1_w     trn 0 nil)
163    (list 't_counter_2x1_c   "counter"       pclass-boulder   s_counter_2x1_c     trn 0 nil)
164    (list 't_counter_2x1_e   "counter"       pclass-boulder   s_counter_2x1_e     trn 0 nil)
165    (list 't_counter_1x1     "counter"       pclass-boulder   s_counter_1x1       trn 0 nil)
166    (list 't_bridge_WE       "bridge"        pclass-bridge    s_ew_bridge         trn 0 nil)
167    (list 't_bridge_NS       "bridge"        pclass-bridge    s_ns_bridge         trn 0 nil)
168    (list 't_lava_bridge_NS  "bridge"        pclass-bridge    s_ns_bridge         trn 0 nil)
169    (list 't_chasm           "chasm"         pclass-space     s_null              trn 0 nil)
170    (list 't_void            "empty space"   pclass-space     s_null       trn 0 nil)
171    (list 't_trail_0         "trail"         pclass-grass     s_trail_0           trn 0 nil)
172    (list 't_trail_1         "trail"         pclass-grass     s_trail_1           trn 0 nil)
173    (list 't_trail_2         "trail"         pclass-grass     s_trail_2           trn 0 nil)
174    (list 't_trail_3         "trail"         pclass-grass     s_trail_3           trn 0 nil)
175    (list 't_trail_4         "trail"         pclass-grass     s_trail_4           trn 0 nil)
176    (list 't_trail_5         "trail"         pclass-grass     s_trail_5           trn 0 nil)
177    (list 't_trail_6         "trail"         pclass-grass     s_trail_6           trn 0 nil)
178    (list 't_trail_7         "trail"         pclass-grass     s_trail_7           trn 0 nil)
179    (list 't_trail_8         "trail"         pclass-grass     s_trail_8           trn 0 nil)
180    (list 't_trail_9         "trail"         pclass-grass     s_trail_9           trn 0 nil)
181    (list 't_trail_a         "trail"         pclass-grass     s_trail_a           trn 0 nil)
182    (list 't_trail_b         "trail"         pclass-grass     s_trail_b           trn 0 nil)
183    (list 't_trail_c         "trail"         pclass-grass     s_trail_c           trn 0 nil)
184    (list 't_trail_d         "trail"         pclass-grass     s_trail_d           trn 0 nil)
185    (list 't_trail_e         "trail"         pclass-grass     s_trail_e           trn 0 nil)
186    (list 't_trail_f         "trail"         pclass-grass     s_trail_f           trn 0 nil)
187    (list 't_A               "an A"          pclass-wall      s_A                 trn 0 nil)
188    (list 't_B               "a B"           pclass-wall      s_B                 trn 0 nil)
189    (list 't_fake_B          "a B"           pclass-forest    s_B                 trn 0 nil)
190    (list 't_C               "a C"           pclass-wall      s_C                 trn 0 nil)
191    (list 't_D               "a D"           pclass-wall      s_D                 trn 0 nil)
192    (list 't_E               "an E"          pclass-wall      s_E                 trn 0 nil)
193    (list 't_F               "an F"          pclass-wall      s_F                 trn 0 nil)
194    (list 't_G               "a G"           pclass-wall      s_G                 trn 0 nil)
195    (list 't_H               "an H"          pclass-wall      s_H                 trn 0 nil)
196    (list 't_I               "an I"          pclass-wall      s_I                 trn 0 nil)
197    (list 't_J               "a J"           pclass-wall      s_J                 trn 0 nil)
198    (list 't_K               "a K"           pclass-wall      s_K                 trn 0 nil)
199    (list 't_L               "an L"          pclass-wall      s_L                 trn 0 nil)
200    (list 't_M               "an M"          pclass-wall      s_M                 trn 0 nil)
201    (list 't_N               "an N"          pclass-wall      s_N                 trn 0 nil)
202    (list 't_O               "an O"          pclass-wall      s_O                 trn 0 nil)
203    (list 't_fake_O          "an O"          pclass-forest    s_O                 trn 0 nil)
204    (list 't_P               "a P"           pclass-wall      s_P                 trn 0 nil)
205    (list 't_Q               "a Q"           pclass-wall      s_Q                 trn 0 nil)
206    (list 't_R               "an R"          pclass-wall      s_R                 trn 0 nil)
207    (list 't_S               "an S"          pclass-wall      s_S                 trn 0 nil)
208    (list 't_T               "a T"           pclass-wall      s_T                 trn 0 nil)
209    (list 't_U               "a U"           pclass-wall      s_U                 trn 0 nil)
210    (list 't_V               "a V"           pclass-wall      s_V                 trn 0 nil)
211    (list 't_W               "a W"           pclass-wall      s_W                 trn 0 nil)
212    (list 't_X               "an X"          pclass-wall      s_X                 trn 0 nil)
213    (list 't_Y               "a Y"           pclass-wall      s_Y                 trn 0 nil)
214    (list 't_Z               "a Z"           pclass-wall      s_Z                 trn 0 nil)
215    (list 't_rune_A          "a runic A"        pclass-wall      s_rune_A      trn 0 nil)
216    (list 't_rune_B          "a runic B"        pclass-wall      s_rune_B      trn 0 nil)
217    (list 't_rune_C          "a runic C"        pclass-wall      s_rune_C      trn 0 nil)
218    (list 't_rune_D          "a runic D"        pclass-wall      s_rune_D      trn 0 nil)
219    (list 't_rune_E          "a runic E"        pclass-wall      s_rune_E      trn 0 nil)
220    (list 't_rune_F          "a runic F"        pclass-wall      s_rune_F      trn 0 nil)
221    (list 't_rune_G          "a runic G"        pclass-wall      s_rune_G      trn 0 nil)
222    (list 't_rune_H          "a runic H"        pclass-wall      s_rune_H      trn 0 nil)
223    (list 't_rune_I          "a runic I"        pclass-wall      s_rune_I      trn 0 nil)
224    (list 't_rune_J          "a runic J"        pclass-wall      s_rune_J      trn 0 nil)
225    (list 't_rune_K          "a runic K"        pclass-wall      s_rune_K      trn 0 nil)
226    (list 't_rune_L          "a runic L"        pclass-wall      s_rune_L      trn 0 nil)
227    (list 't_rune_M          "a runic M"        pclass-wall      s_rune_M      trn 0 nil)
228    (list 't_rune_N          "a runic N"        pclass-wall      s_rune_N      trn 0 nil)
229    (list 't_rune_O          "a runic O"        pclass-wall      s_rune_O      trn 0 nil)
230    (list 't_rune_P          "a runic P"        pclass-wall      s_rune_P      trn 0 nil)
231    (list 't_rune_Q          "a runic Q"        pclass-wall      s_rune_Q      trn 0 nil)
232    (list 't_rune_R          "a runic R"        pclass-wall      s_rune_R      trn 0 nil)
233    (list 't_rune_S          "a runic S"        pclass-wall      s_rune_S      trn 0 nil)
234    (list 't_rune_T          "a runic T"        pclass-wall      s_rune_T      trn 0 nil)
235    (list 't_rune_U          "a runic U"        pclass-wall      s_rune_U      trn 0 nil)
236    (list 't_rune_V          "a runic V"        pclass-wall      s_rune_V      trn 0 nil)
237    (list 't_rune_W          "a runic W"        pclass-wall      s_rune_W      trn 0 nil)
238    (list 't_rune_X          "a runic X"        pclass-wall      s_rune_X      trn 0 nil)
239    (list 't_rune_Y          "a runic Y"        pclass-wall      s_rune_Y      trn 0 nil)
240    (list 't_rune_Z          "a runic Z"        pclass-wall      s_rune_Z      trn 0 nil)
241    (list 't_rune_TH         "a runic TH"        pclass-wall      s_rune_TH     trn 0 nil)
242    (list 't_rune_EE         "a runic EE"        pclass-wall      s_rune_EE     trn 0 nil)
243    (list 't_rune_NG         "a runic NG"        pclass-wall      s_rune_NG     trn 0 nil)
244    (list 't_rune_EA         "a runic EA"        pclass-wall      s_rune_EA     trn 0 nil)
245    (list 't_rune_ST         "a runic ST"        pclass-wall      s_rune_ST     trn 0 nil)
246    (list 't_rune_DOT        "a runic ."        pclass-wall      s_rune_DOTSEP trn 0 nil)
247    (list 't_equip_sign    "an equipment shop sign" pclass-wall s_torch_sign      opq 0 nil)
248    (list 't_weapon_sign   "an arms shop sign" pclass-wall s_shield_sign          opq 0 nil)
249    (list 't_healer_sign   "a hospital sign" pclass-wall s_ankh_sign              opq 0 nil)
250    (list 't_tavern_sign   "a tavern sign" pclass-wall s_beer_sign                opq 0 nil)
251    (list 't_inn_sign      "an inn sign" pclass-wall s_bed_sign                   opq 0 nil) 
252    (list 't_alchemy_sign      "an alchemy sign" pclass-wall s_potion_sign        opq 0 nil) 
253    (list 't_magic_sign      "a reagent shop sign" pclass-wall s_mushroom_sign    opq 0 nil) 
254    (list 't_str_sign      "a sign of strength" pclass-wall s_axe_sign            trn 1024 nil) 
255    (list 't_dex_sign      "a sign of dexterity" pclass-wall s_key_sign           trn 1024 nil) 
256    (list 't_wis_sign      "a sign of wisdom" pclass-wall s_book_sign             trn 1024 nil) 
257    (list 't_nat_rock      "natural stone wall" pclass-wall s_nat_rock            opq 0 nil) 
258    (list 't_fake_wall_nrock  "natural stone wall" pclass-forest  s_secret_nrock   opq 0 nil)
259    ))
260
261 (map (lambda (terrain) (apply kern-mk-terrain terrain)) terrains)
262
263 ;;----------------------------------------------------------------------------
264 ;; Make some blended shore terrain types
265
266 (define (mk-shore-terrain tag . sprites)
267   (kern-mk-terrain tag "shallow water" pclass-shoals
268                    (mk-composite-sprite (cons s_shoals sprites))
269                    trn 0 nil))
270
271 (mk-shore-terrain 't_shore_n  s_grass_n )
272 (mk-shore-terrain 't_shore_w  s_grass_w )
273 (mk-shore-terrain 't_shore_nw s_grass_nw)
274 (mk-shore-terrain 't_shore_e  s_grass_e )
275 (mk-shore-terrain 't_shore_ne s_grass_ne)
276 (mk-shore-terrain 't_shore_we s_grass_e s_grass_w)
277 (mk-shore-terrain 't_shore_nwe s_grass_ne s_grass_nw)
278 (mk-shore-terrain 't_shore_s  s_grass_s )
279 (mk-shore-terrain 't_shore_ns s_grass_s s_grass_n)
280 (mk-shore-terrain 't_shore_ws s_grass_sw)
281 (mk-shore-terrain 't_shore_nws s_grass_sw s_grass_nw)
282 (mk-shore-terrain 't_shore_es s_grass_se)
283 (mk-shore-terrain 't_shore_nes s_grass_se s_grass_ne)
284 (mk-shore-terrain 't_shore_wes s_grass_se s_grass_sw)
285 (mk-shore-terrain 't_shore_c s_grass_se s_grass_sw s_grass_ne s_grass_nw)
286
287 (define tset_shore
288 (list
289    t_shoals    ;; 0: none
290    t_shore_n   ;; 1: north
291    t_shore_w   ;; 2: west
292    t_shore_nw  ;; 3: north west
293    t_shore_e   ;; 4: east
294    t_shore_ne  ;; 5: east north
295    t_shore_we  ;; 6: east west
296    t_shore_nwe ;; 7: east west north
297    t_shore_s   ;; 8: south
298    t_shore_ns  ;; 9: south north
299    t_shore_ws  ;; 10: south west
300    t_shore_nws ;; 11: south west north
301    t_shore_es  ;; 12: south east
302    t_shore_nes ;; 13: south east north
303    t_shore_wes ;; 14: south east west
304    t_shore_c ;; 15: south east west north
305    ))
306    
307 (define tset_water
308 (append tset_shore
309           (list t_shoals
310                 t_shallow
311                 t_deep
312                 t_sunlit_deep
313                 t_bridge_WE
314                 t_bridge_NS)))
315
316 ;;----------------------------------------------------------------------------
317 ;; bits of ship
318
319 ;; regular terrains
320
321 (map
322         (lambda (terrainentry)
323                 (apply
324                         (lambda (tag name pclass opacity sprite)
325                                 (kern-mk-terrain tag name pclass sprite
326                                         opacity 0 nil)
327                         )
328                         terrainentry
329                 )
330         )
331         (list
332         
333 (list 't_bulwark_x_ns "bulwark" pclass-wall opq s_bulwark_ns)
334 (list 't_bulwark_x_ew "bulwark" pclass-wall opq s_bulwark_ew)
335         
336 (list 't_bulwark_v_ne "bulwark" pclass-boulder trn s_bulwark_sw)
337 (list 't_bulwark_v_nw "bulwark" pclass-boulder trn s_bulwark_se)
338 (list 't_bulwark_v_se "bulwark" pclass-boulder trn s_bulwark_nw)
339 (list 't_bulwark_v_sw "bulwark" pclass-boulder trn s_bulwark_ne)
340         
341 (list 't_bulwark_x_ne "bulwark" pclass-wall opq s_bulwark_sw)
342 (list 't_bulwark_x_nw "bulwark" pclass-wall opq s_bulwark_se)
343 (list 't_bulwark_x_se "bulwark" pclass-wall opq s_bulwark_nw)
344 (list 't_bulwark_x_sw "bulwark" pclass-wall opq s_bulwark_ne)
345
346 (list 't_stair_un "stairs" pclass-grass trn s_stair_n)
347 (list 't_stair_uw "stairs" pclass-grass trn s_stair_w)
348 (list 't_stair_ue "stairs" pclass-grass trn s_stair_e)
349 (list 't_stair_us "stairs" pclass-grass trn s_stair_s)
350
351 (list 't_tank_l "metal tank" pclass-mountains opq s_tank_l)
352 (list 't_tank_d "metal tank" pclass-mountains opq s_tank_d)
353 (list 't_tank_nw "metal tank" pclass-mountains opq s_tank_nw)
354 (list 't_tank_ne "metal tank" pclass-mountains opq s_tank_ne)
355 (list 't_tank_sw "metal tank" pclass-mountains opq s_tank_sw)
356 (list 't_tank_se "metal tank" pclass-mountains opq s_tank_se)
357
358         )
359 )
360         
361                 
362 ;; composite terrains
363 (map
364         (lambda (terrainentry)
365                 (apply
366                         (lambda (tag name pclass opacity sprites)
367                                 (kern-mk-terrain tag name pclass (mk-composite-sprite sprites)
368                                         opacity 0 nil)
369                                 )
370                         terrainentry
371                 )
372         )
373         (list
374         
375 (list 't_rail_ew "railing" pclass-boulder trn (list s_deck s_bulwark_ew))
376 (list 't_rail_ns "railing" pclass-boulder trn (list s_deck s_bulwark_ns))
377
378 (list 't_bulwark_n "bulwark" pclass-boulder trn (list s_shallow s_deck_s s_bulwark_ew))
379 (list 't_bulwark_w "bulwark" pclass-boulder trn (list s_shallow s_deck_e s_bulwark_ns))
380 (list 't_bulwark_e "bulwark" pclass-boulder trn (list s_shallow s_deck_w s_bulwark_ns))
381 (list 't_bulwark_s "bulwark" pclass-boulder trn (list s_shallow s_deck_n s_bulwark_ew))
382
383 (list 't_bulwark_v_n "bulwark" pclass-boulder trn (list s_deck_s s_bulwark_ew))
384 (list 't_bulwark_v_w "bulwark" pclass-boulder trn (list s_deck_e s_bulwark_ns))
385 (list 't_bulwark_v_e "bulwark" pclass-boulder trn (list s_deck_w s_bulwark_ns))
386 (list 't_bulwark_v_s "bulwark" pclass-boulder trn (list s_deck_n s_bulwark_ew))
387
388 (list 't_bulwark_w_ne "bulwark" pclass-boulder trn (list s_shallow s_bulwark_sw))
389 (list 't_bulwark_w_nw "bulwark" pclass-boulder trn (list s_shallow s_bulwark_se))
390 (list 't_bulwark_w_se "bulwark" pclass-boulder trn (list s_shallow s_bulwark_nw))
391 (list 't_bulwark_w_sw "bulwark" pclass-boulder trn (list s_shallow s_bulwark_ne))
392
393 (list 't_bulwark_d_ne "bulwark" pclass-boulder trn (list s_deck s_bulwark_ne))
394 (list 't_bulwark_d_nw "bulwark" pclass-boulder trn (list s_deck s_bulwark_nw))
395 (list 't_bulwark_d_se "bulwark" pclass-boulder trn (list s_deck s_bulwark_se))
396 (list 't_bulwark_d_sw "bulwark" pclass-boulder trn (list s_deck s_bulwark_sw))
397
398 (list 't_tank_d_nw "metal tank" pclass-mountains opq (list s_deck s_tank_nw))
399 (list 't_tank_d_ne "metal tank" pclass-mountains opq (list s_deck s_tank_ne))
400 (list 't_tank_d_sw "metal tank" pclass-mountains opq (list s_deck s_tank_sw))
401 (list 't_tank_d_se "metal tank" pclass-mountains opq (list s_deck s_tank_se))
402
403         )
404 )
405                                     
406 ;;----------------------------------------------------------------------------
407
408 (define bad-terrain-list
409   (list t_bog
410         t_lava
411         t_deep_lava
412         t_fire_terrain
413         t_fireplace
414         t_inv_wall
415         t_wall_torch
416         ))
417
418 (define inflammable-terrain-list
419   (list t_bog
420         t_deep
421         t_shallow
422         t_shoals
423         t_sunlit_deep
424         t_stars
425                 t_void
426                 t_chasm
427         ))
428                 
429 (load "blendterrains.scm")
430
431 (define (is-bad-terrain? kter)
432   (in-list? kter bad-terrain-list))
433
434 (define (is-inflammable-terrain? kter)
435   (in-list? kter inflammable-terrain-list))
436
437 (define (is-deck? kter)
438         (in-list? kter 
439                 (list
440                         t_deck
441                         t_ship_hull
442                         t_ship_hull2
443                         t_mast
444                         t_ships_wheel
445                         
446                         t_bulwark_v_ne
447                         t_bulwark_v_nw
448                         t_bulwark_v_se
449                         t_bulwark_v_sw
450                         
451                         t_bulwark_n
452                         t_bulwark_w
453                         t_bulwark_e
454                         t_bulwark_s
455                         
456                         t_bulwark_w_ne
457                         t_bulwark_w_nw
458                         t_bulwark_w_se
459                         t_bulwark_w_sw
460                         
461                         t_bulwark_d_ne
462                         t_bulwark_d_nw
463                         t_bulwark_d_se
464                         t_bulwark_d_sw
465                         
466                         t_bulwark_v_n
467                         t_bulwark_v_w
468                         t_bulwark_v_e
469                         t_bulwark_v_s
470         )))