OSDN Git Service

Nazghul-0.7.1
[nazghul-jp/nazghul-jp.git] / worlds / haxima-1.002 / landslide.scm
1 ;; landslide -- shake the map, drop some boulders, and damage any non-flying,
2 ;; non-phasing beings that get hit.
3 (define (drop-rock-on kbeing)
4   (cond ((and (not (can-fly? kbeing))
5               (not (can-phase? kbeing)))
6          (kern-log-msg (kern-obj-get-name kbeing)
7                        " hit by falling rock!")
8          (kern-obj-apply-damage kbeing 
9                                 "hit"
10                                 (kern-dice-roll "1d10")))
11         ))
12
13 (define (drop-boulder x loc)
14   (cond ((<= (modulo (random-next) 100) 50)
15          (kern-place-set-terrain loc t_boulder)         
16          (map drop-rock-on (get-beings-at loc))
17          )))
18
19 (define (landslide kbeing x y w h)
20   (kern-log-msg "LANDSLIDE!")
21   (shake-map 10)
22   (foldr-rect (loc-place (kern-obj-get-location kbeing))
23              x
24              y
25              w
26              h
27              drop-boulder
28              #f)
29   #t)
30
31 (define (mk-landslide x y w h)
32   (mk-step-trig 'landslide x y w h))