source: abuse-frabs/trunk/addon/leon/lisp/lmisc.lsp @ 44

Last change on this file since 44 was 44, checked in by Sam Hocevar, 14 years ago
  • Importing abuse-frabs 2.10.
File size: 6.2 KB
Line 
1(defun lava2_ai ()
2  (if (eq (random 75) 0) (play_sound LAVA_SND 24 (x) (y)) )
3  (select (aistate)
4          (0
5             (if (eq (state_time) dam_spd)
6                 (progn
7                   (set_aistate 1)))
8             (next_picture))
9          (1 (next_picture)
10             (if (eq (state_time) dam_spd)
11                 (progn
12                   (hurt_radius (+ (x) 15) (y) 30 dam nil 4)
13                   (set_aistate 0)))))
14  T)
15
16(defun lava2_cons ()
17  (setq dam_spd 5)
18  (setq dam 10))
19
20(def_char LAVA2
21  (funs (ai_fun lava2_ai)
22        (constructor lava2_cons))
23  (vars dam_spd dam )
24  (fields  ("dam_spd" wrob_bdelay)
25           ("dam" wrob_btotal))
26  (states  "art/chars/lava.spe"
27           (stopped (seq "lava" 1 15))))
28
29(defun Lrestart_ai ()
30  (if (eq (total_players) 1)       ;; only allow saving in single player games
31      (select (aistate)
32              (0 (next_picture)
33                 (if (and (touching_bg) (with_object (bg) (pressing_action_key)))
34                     (set_aistate 2)))
35              (1 (next_picture);; wait for save (actived state)
36                 (if (and (touching_bg) (with_object (bg) (pressing_action_key)))
37                     (set_aistate 2)))
38              (2 (set_state running)       
39                 (set_aistate 3))
40              (3 (set_aistate 4))           
41              (4
42               (let ((spot (get_save_slot)))
43                 (set_state stopped)
44                 (set_aistate 1)
45                 (if (not (eq spot 0));; did they escape ?
46                     (progn
47                       (show_help (concatenate 'string Station (num2str (xvel)) secured))
48                       (with_object (bg)
49                                    (progn
50                                      (let ((old_hp (hp)))
51                                        (if (eq difficulty 'easy)
52                                            (set_hp 100));; save the player with 100 health, if on easy
53                                        (play_sound SAVE_SND 127 (x) (y))
54                                        (setq has_saved_this_level spot)
55                                        (save_game (concatenate 'string "save" (digstr spot 4) ".spe"))
56                                        (set_hp old_hp)
57                                        ))))))
58
59               )))
60  T)
61         
62
63(def_char LRESTART_POSITION
64  (funs (ai_fun Lrestart_ai)
65        (reload_fun lower_reload))
66  (fields ("xvel"  restart_station))
67  (states "art/misc.spe"
68          (stopped (app (rep "console" 3) (rep "console2" 3)))
69          (running (rep "console_on" 2))))
70
71(def_char HIDDEN_BACK_METAL
72           (funs (ai_fun hwall_ai)
73                 (reload_fun  hwall_reload)
74                 (damage_fun hwall_damage))
75           (abilities (start_hp 25))
76           (draw_range 80 80)
77           (flags (can_block nil)
78                  (unactive_shield nil)
79                  (hurtable nil))
80           (states "addon/leon/lmisc.spe"
81                   (stopped "Metal.pcx")))
82
83(def_char HIDDEN_BACK_METALBIG
84           (funs (ai_fun big_wall_ai)
85                 (reload_fun  hwall_reload)
86                 (damage_fun hwall_damage))
87           (abilities (start_hp 25))
88           (draw_range 80 80)
89           (flags (can_block nil)
90                  (unactive_shield nil)
91                  (hurtable nil))
92           (states "addon/leon/lmisc.spe"
93                   (stopped "Metalbig.pcx")))
94
95
96(defun Med_ai ()
97  (if (eq0 (aistate))     (progn
98            (try_move 0 10)
99            (if (eq (second (see_dist (x) (y) (x) (+ (y) 1))) (y))
100                (set_aistate 1))))
101        (if (and (touching_bg) (with_object (bg) (give_player_health 20)))
102           (progn
103             (play_sound HEALTH_UP_SND 127 (x) (y))
104             nil)
105          T))
106
107(def_char MEDKIT
108  (funs (ai_fun Med_ai))
109  (flags (add_front T))
110  (range 0 0)
111  (states "addon/leon/lmisc.spe" (stopped "medkit.pcx" )))
112
113(defun none_ai ()
114  (next_picture)
115  (if (touching_bg)
116      (progn (with_object (bg)
117                          (progn
118                            (setq special_power NO_POWER)
119                            (make_view_solid (find_rgb 0 0 0))))
120             nil) T))
121
122
123
124(def_char POWER_NONE
125  (funs (ai_fun none_ai)(draw_fun   dev_draw))
126  (flags (add_front T))
127  (range 20 20)
128  (states "art/misc.spe" (stopped "fast" )))
129
130(defun sensbeam_ai ()
131
132  (shift_rand_table (random 80))
133  (if (activated)
134      (let ((nowx (x))
135            (nowy (y)))
136
137        (if (eq (mod (game_tick) 4) 0)
138            (play_sound FF_SND 127 (x) (y)))
139        (try_move 0 (+ (y) 200))    ;; find the floor
140        (setq end_y (y))            ;; save the position
141        (set_x nowx)
142        (set_y nowy)))
143  T)
144       
145
146(defun sensbeam_draw ()
147  (if (edit_mode) (draw))
148  (if (activated)
149  (ascatter_line (x) (y) (x) end_y (find_rgb 255 0 0) (find_rgb 128 0 0)    1)))
150
151
152
153(def_char SENSORBEAM
154  (funs (ai_fun sensbeam_ai)
155        (draw_fun sensbeam_draw))
156  (range 10 500)
157  (vars end_y)
158  (states "art/misc.spe"
159          (stopped "force_field")))
160       
161
162(defun swtele_ai ()     ;; teleporting door ai
163  (if (activated)
164  (let ((player (bg)))
165;;    (if (has_object player)
166      (if (> (total_objects) 1)
167          (let ((otherx (+ (with_object (get_object 1) (x)) (- (with_object player (x) ) (x) ) ) )
168                (othery (+ (with_object (get_object 1) (y)) (- (with_object player (y) ) (y) ) ) ))
169            (with_object player (progn
170                                  (set_x otherx)
171                                  (set_y othery)
172                                  (bottom_draw)
173;;                                (with_object (get_object 0)
174;;                                    (progn
175;;                                      (set_x otherx)
176;;                                    (set_y othery)
177;;                                      (top_ai)
178;;                                    (top_draw)
179;;                                    )
180;;                                  )
181;;                                (with_object (get_object 0) (top_draw) )
182))))))
183T)
184
185(def_char SWITCH_TELEPORTER
186  (funs (ai_fun swtele_ai)
187        (draw_fun dev_draw))
188  (range 10 500)
189  (vars end_y)
190  (states "art/misc.spe"
191          (stopped "switch_mover")))
192
193(setq AMB_SOUNDS2 (make-array 3 :initial-contents (list
194                               (def_sound "addon/leon/sfx/ambship1.wav")   ;; 0
195                               (def_sound "addon/leon/sfx/ambship2.wav")   ;; 1
196                               (def_sound "addon/leon/sfx/thunder.wav")   ;; 4
197                               )))
198
199(defun amb_sound_ct2 ()
200  (if (> (aitype) 4)
201      (set_aitype 0)
202    (play_sound (aref AMB_SOUNDS2 (aitype)))))
203
204(defun amb_sound_ai2 ()
205  (if (activated)
206      (if (eq (aistate) 0)
207          (progn
208            (play_sound (aref AMB_SOUNDS2 (aitype)) (yvel) (x) (y))
209            (set_aistate (+ (xvel) (random (+ 1 (xacel)))))
210            (> (xvel) 0))
211        (progn
212          (set_aistate (- (aistate) 1))
213          T))
214    (progn
215      (set_aistate 0)
216      T)))
217
218       
219(defun ambs_cons2 ()
220  (set_xvel 10)  ;; delay time to 10
221  (set_yvel 127)) ;; set volume default to 127
222
223(def_char AMBIENT_SOUND2
224  (funs (ai_fun          amb_sound_ai2)
225        (draw_fun        dev_draw)
226        (constructor     ambs_cons2)
227        (type_change_fun amb_sound_ct2))
228  (range 500 500)
229  (fields ("aitype" amb_num)
230          ("yvel"   amb_vol)     
231          ("xvel"   amb_rep)
232          ("xacel"  amb_rand))
233  (states "art/misc.spe"
234          (stopped "sfx_player")))
Note: See TracBrowser for help on using the repository browser.