source: abuse/trunk/data/lisp/general.lsp @ 589

Last change on this file since 589 was 589, checked in by Sam Hocevar, 10 years ago

data: remove exact duplicate Lisp files, merge all main space Lisp files,
and move most frabs addons to the main data directory.

File size: 3.7 KB
Line 
1;; Copyright 1995 Crack dot Com,  All Rights reserved
2;; See licensing information for more details on usage rights
3
4(defun pusher_cons () (set_aistate 4))
5(defun pusher_ai ()
6  (if (or (eq (total_objects) 0) (not (eq (with_object (get_object 0) (aistate)) 0)))
7      (progn
8        (next_picture)
9        (if (touching_bg)
10            (let ((xamount
11                   (if (> (direction) 0)
12                       (aistate)
13                     (- 0 (aistate)))))
14              (with_object (bg) (try_move xamount 0)))))) T)
15
16
17(def_char PUSHER
18  (range 5 5)
19  (funs (ai_fun      pusher_ai)
20;       (draw_fun    dev_draw)
21        (constructor pusher_cons))
22  (fields ("aistate" pusher_speed))
23  (states "art/chars/push.spe"
24          (stopped (seq "push" 1 5))))
25
26(defun spring_cons () (set_yvel -15))
27(defun spring_ai ()
28  (if (or (eq (total_objects) 0) (not (eq (with_object (get_object 0) (aistate)) 0)))
29      (select (aistate)
30              (0
31               (if (touching_bg)
32                   (let ((add_yvel (yvel)))
33                     (play_sound SPRING_SOUND 127 (x) (y))
34                     (with_object (bg)
35                              (progn
36                                (set_yvel (+ (yvel) add_yvel))
37                                (if (eq (gravity) 0)
38                                    (progn
39                                      (set_state run_jump)
40                                      (set_gravity 1)))))
41                 (set_state running)
42                 (set_aistate 1))))
43          (1 (if (next_picture) nil
44               (progn
45                 (set_aistate 0)
46                 (set_state stopped))))))
47  T)
48
49
50
51(def_char SPRING
52  (range 5 5)
53  (funs (ai_fun      spring_ai)
54        (constructor spring_cons))
55  (fields ("yvel" spring_yvel))
56  (states "art/misc.spe"
57          (stopped "spri0004.pcx")
58          (running (rep "spri0001.pcx" 4))))
59
60(defun pr_draw ()
61  (draw_predator)
62
63  )
64
65
66(defun train_ai ()
67  (if (eq (aistate) 0)
68      (if (activated)
69          (let ((my_type (aitype)))
70            (with_object (bg)
71                         (if (local_player)
72                             (progn
73                               ;; XXX: Mac Abuse plays voice hint SFXs
74                               ;(play_sound (aref voice_hints my_type))
75                               ;(expire_cache_item (aref voice_hints my_type))
76                               (show_help (get_train_msg my_type)))))
77            (set_aistate 1)
78            T)
79        T)
80    (if (eq (aistate) 100)
81        nil
82      (progn
83        (if (with_object (bg) (local_player))
84            (show_help (get_train_msg (aitype))))
85        (set_aistate (+ (aistate) 1))
86        T))))
87
88
89(def_char TRAIN_MSG
90  (funs (ai_fun train_ai)
91        (draw_fun dev_draw))
92  (fields ("aitype" train_msg_num))
93  (states "art/misc.spe"
94          (stopped "bubble")))
95
96(defun sball_damage (amount from hitx hity push_xvel push_yvel)  ; transfer damage to lower half
97  (if (eq (state) stopped)
98      (progn
99        (set_aistate 1)
100        (set_state running))))
101
102
103(def_char SWITCH_BALL
104  (funs (damage_fun sball_damage)
105        (ai_fun do_nothing))
106  (flags (hurtable T))
107  (states "art/misc.spe"
108          (stopped (seq "swit" 1 9))
109          (running (seq "swit" 10 18))))
110
111(def_char POINTER
112  (funs (ai_fun do_nothing))
113  (states "art/misc.spe"
114          (stopped "pointer")))
115
116(defun shifter_cons ()
117  (set_xvel 300)
118  (set_yvel 300)
119  (set_xacel 0)
120  (set_yacel -1))
121
122(defun holder_ai ()
123  (select (total_objects)
124          (2
125           (let ((newx (+ (with_object (get_object 1) (x)) (xvel)))
126                 (newy (+ (with_object (get_object 1) (y)) (yvel))))
127             (with_obj0 (set_x newx) (set_y newy))
128             (set_x newx)
129             (set_y newy)
130             T))
131          (3
132           (if (with_object (get_object 2) (not (eq (aistate) 0)))
133               (let ((newx (+ (with_object (get_object 1) (x)) (xvel)))
134                     (newy (+ (with_object (get_object 1) (y)) (yvel))))
135                 (with_obj0 (set_x newx) (set_y newy))
136                 (set_x newx)
137                 (set_y newy)
138                 T)
139             (if (eq (xacel) 1)
140                 nil
141               T)))
142          (4 T)
143          (5 T)
144          (6 T)
145          (0 nil)
146          (1 nil)))
147
148
149(def_char OBJ_HOLDER
150  (funs (ai_fun holder_ai)
151        (draw_fun dev_draw))
152  (fields ("xvel"  obj_holder_xoff)
153          ("yvel"  obj_holder_xoff)
154          ("xacel" obj_holder_del))
155  (states "art/misc.spe"
156          (stopped "o_hold")))
Note: See TracBrowser for help on using the repository browser.