1 | ;; Copyright 1999 Profound Corp, All Rights reserved
|
---|
2 | ;; See licensing information for more details on usage rights
|
---|
3 |
|
---|
4 |
|
---|
5 | (defun lower_draw ()
|
---|
6 | (lower)
|
---|
7 | (draw))
|
---|
8 |
|
---|
9 |
|
---|
10 | (defun mantrack_ai ()
|
---|
11 | (if (<= (total_objects) 0)
|
---|
12 | nil
|
---|
13 | (if (activated)
|
---|
14 | (if (eq (state) stopped)
|
---|
15 | (progn
|
---|
16 | (set_targetable T)
|
---|
17 | (set_state opening)
|
---|
18 | T)
|
---|
19 | (if (and (eq (state) opening) (next_picture))
|
---|
20 | T
|
---|
21 | (progn
|
---|
22 | (set_state spinning)
|
---|
23 | (set_frame_angle 0 359 angle)
|
---|
24 |
|
---|
25 | (if (eq continue_time_left 0);; do we need to wait?
|
---|
26 | (if (eq fire_delay_left 0)
|
---|
27 | ;; get the angle to the player
|
---|
28 | (let ((pangle (atan2 (- (- (y) (with_object (bg) (y))) -8)
|
---|
29 | (- (with_object (bg) (x)) (x) ))))
|
---|
30 | (let ((clock_dist (if (< pangle angle);; calculate clockwise angle distance
|
---|
31 | (- angle pangle)
|
---|
32 | (+ angle (- 360 pangle)))))
|
---|
33 | (let ((closest_dist (if (> clock_dist 180)
|
---|
34 | (- 360 clock_dist)
|
---|
35 | clock_dist)))
|
---|
36 | (let ((angle_add (if (>= closest_dist track_speed)
|
---|
37 | track_speed
|
---|
38 | closest_dist)))
|
---|
39 | (if (> clock_dist 180);; should we steer clowck wise or counter?
|
---|
40 | (track_set_angle (mod (+ angle angle_add) 360))
|
---|
41 | (track_set_angle (mod (+ (- angle angle_add) 360) 360)))
|
---|
42 | (if (< angle_add 5);; pretty close to target, FIRE!
|
---|
43 | (track_fire))))))
|
---|
44 | (setq fire_delay_left (- fire_delay_left 1)))
|
---|
45 | (progn
|
---|
46 | (setq continue_time_left (- continue_time_left 1))
|
---|
47 | (if (eq continue_time_left 0)
|
---|
48 | (setq burst_total_left burst_total))))
|
---|
49 | T))) (progn
|
---|
50 | (set_targetable nil)
|
---|
51 | (set_state stopped)
|
---|
52 | T))))
|
---|
53 |
|
---|
54 |
|
---|
55 | (defun manspray_ai ()
|
---|
56 | (if (<= (total_objects) 0)
|
---|
57 | nil
|
---|
58 | (if (and (< (distx) 450) (< (disty) 400))
|
---|
59 | (progn
|
---|
60 | (select (aistate)
|
---|
61 | (0;; look at sensor
|
---|
62 | (if (activated)
|
---|
63 | (if (eq (state) stopped)
|
---|
64 | (progn
|
---|
65 | (set_targetable T)
|
---|
66 | (set_state spray.appear)
|
---|
67 | (go_state 1))
|
---|
68 | (go_state 3))
|
---|
69 | (progn
|
---|
70 | (set_targetable nil)
|
---|
71 | (set_state stopped))))
|
---|
72 | (1;; unfold
|
---|
73 | (if (next_picture) T
|
---|
74 | (progn (set_aistate 3)
|
---|
75 | (set_state spray.aim)
|
---|
76 | (setq spray.angle spray.start_angle)
|
---|
77 | (set_frame_angle 0 359 spray.angle)
|
---|
78 | )))
|
---|
79 | (2;; fold up
|
---|
80 | (if (next_picture) T
|
---|
81 | (progn (set_state stopped)
|
---|
82 | (set_aistate 0))))
|
---|
83 | (3;; swivel down
|
---|
84 | (if (> (state_time) spray.fire_delay)
|
---|
85 | (progn
|
---|
86 | (set_aistate 3);; reset state time
|
---|
87 | (setq spray.angle (- spray.angle spray.angle_speed))
|
---|
88 | (if (<= spray.angle spray.start_angle)
|
---|
89 | (progn
|
---|
90 | (setq spray.angle spray.start_angle)
|
---|
91 | (set_aistate 4)))
|
---|
92 | (set_frame_angle 0 359 spray.angle)
|
---|
93 | (spray_fire))))
|
---|
94 | (4;; swivel up
|
---|
95 | (if (> (state_time) spray.fire_delay)
|
---|
96 | (progn
|
---|
97 | (set_aistate 4);; reset state time
|
---|
98 | (setq spray.angle (+ spray.angle spray.angle_speed))
|
---|
99 | (if (>= spray.angle spray.end_angle)
|
---|
100 | (progn
|
---|
101 | (setq spray.angle spray.end_angle)
|
---|
102 | (set_aistate 0)))
|
---|
103 | (set_frame_angle 0 359 spray.angle)
|
---|
104 | (spray_fire)))))
|
---|
105 | T) (progn (set_state stopped) T))))
|
---|
106 |
|
---|
107 |
|
---|
108 | (defun fire_ai ()
|
---|
109 | (if (and (touching_bg) (eq (mod (state_time) 10) 0))
|
---|
110 | (do_damage 10 (bg)))
|
---|
111 |
|
---|
112 | (select (aistate)
|
---|
113 | (0 (if (eq (random 75) 0)
|
---|
114 | (progn
|
---|
115 | (play_sound LAVA_SND 64 (x) (y))
|
---|
116 | (set_aistate 1)))
|
---|
117 | (next_picture))
|
---|
118 | (1 (next_picture)
|
---|
119 | (if (eq (state_time) 5)
|
---|
120 | (progn
|
---|
121 | (hurt_radius (x) (y) 20 20 nil 10)
|
---|
122 | (set_aistate 0)))))
|
---|
123 | T)
|
---|
124 |
|
---|
125 |
|
---|
126 |
|
---|
127 | (defun forceobj_ai ()
|
---|
128 | (if (<= (total_objects) 0)
|
---|
129 | nil
|
---|
130 | (progn
|
---|
131 | (let ((xfrc (xacel))
|
---|
132 | (yfrc (yacel)))
|
---|
133 | (try_move xfrc yfrc))
|
---|
134 | T)))
|
---|
135 |
|
---|
136 |
|
---|
137 | (defun forceobj_cons ()
|
---|
138 | (set_xacel 0)
|
---|
139 | (set_yacel 10))
|
---|
140 |
|
---|
141 |
|
---|
142 | (defun do_fire_explo (radius amount)
|
---|
143 | (play_sound GRENADE_SND 127 (x) (y))
|
---|
144 | (add_object EXPFIRE (+ (x) (random 10)) (+ (+ (random 10) (y)) -20) 0)
|
---|
145 | (if (not (frame_panic))
|
---|
146 | (progn
|
---|
147 | (add_object EXPFIRE (- (x) (random 10)) (+ (- (y) (random 10)) -20) 2)
|
---|
148 | (add_object EXP_LIGHT (x) (y) 100))) ; add cool light if not too slow
|
---|
149 | (hurt_radius (x) (y) radius amount (if (> (total_objects) 0)
|
---|
150 | (get_object 0)
|
---|
151 | nil) 20)
|
---|
152 | nil)
|
---|
153 |
|
---|
154 |
|
---|
155 | (defun do_light_explo (radius amount)
|
---|
156 | (play_sound GRENADE_SND 127 (x) (y))
|
---|
157 | ;; (add_object EXPFIRE (+ (x) (random 10)) (+ (+ (random 10) (y)) -20) 0)
|
---|
158 | (if (not (frame_panic))
|
---|
159 | (progn
|
---|
160 | ;; (add_object EXPFIRE (- (x) (random 10)) (+ (- (y) (random 10)) -20) 2)
|
---|
161 | (add_object EXP_LIGHT (x) (y) 100))) ; add cool light if not too slow
|
---|
162 | (hurt_radius (x) (y) radius amount (if (> (total_objects) 0)
|
---|
163 | (get_object 0)
|
---|
164 | nil) 20)
|
---|
165 | nil)
|
---|
166 |
|
---|
167 |
|
---|
168 | (defun msensor_ai ()
|
---|
169 | (if (and (< (distx) (xvel)) (< (disty) (yvel)))
|
---|
170 | (progn
|
---|
171 | (stop_song)
|
---|
172 | (select (aitype)
|
---|
173 | (0 (play_song "music/intro.hmi"))
|
---|
174 | (1 (play_song "music/abuse01.hmi"))
|
---|
175 | (2 (play_song "music/abuse02.hmi"))
|
---|
176 | (3 (play_song "music/abuse03.hmi"))
|
---|
177 | (4 (play_song "music/abuse04.hmi"))
|
---|
178 | (5 (play_song "music/abuse06.hmi"))
|
---|
179 | (6 (play_song "music/abuse08.hmi"))
|
---|
180 | (7 (play_song "music/abuse09.hmi"))
|
---|
181 | (8 (play_song "music/abuse11.hmi"))
|
---|
182 | (9 (play_song "music/abuse13.hmi"))
|
---|
183 | (10 (play_song "music/abuse15.hmi"))
|
---|
184 | (11 (play_song "music/abuse17.hmi")))
|
---|
185 | nil)
|
---|
186 | T))
|
---|
187 |
|
---|
188 | (defun msensor_cons ()
|
---|
189 | (set_xvel 50)
|
---|
190 | (set_yvel 50)
|
---|
191 | (set_xacel 0)
|
---|
192 | (set_yacel 0)
|
---|
193 | (add_hp -10))
|
---|
194 |
|
---|
195 |
|
---|
196 | (defun music_sensor_draw ()
|
---|
197 | (if (edit_mode)
|
---|
198 | (progn
|
---|
199 | (draw)
|
---|
200 | (let ((x1 (- (x) (xvel)))
|
---|
201 | (y1 (- (y) (yvel)))
|
---|
202 | (x2 (+ (x) (xvel)))
|
---|
203 | (y2 (+ (y) (yvel)))
|
---|
204 | (c (find_rgb 0 0 255)))
|
---|
205 | (draw_line x1 y1 x2 y1 c)
|
---|
206 | (draw_line x2 y1 x2 y2 c)
|
---|
207 | (draw_line x2 y2 x1 y2 c)
|
---|
208 | (draw_line x1 y2 x1 y1 c)))
|
---|
209 | nil))
|
---|
210 |
|
---|
211 |
|
---|
212 | (defun gsensor_ai ()
|
---|
213 | (if (and (< (distx) (xvel)) (< (disty) (yvel)))
|
---|
214 | (progn
|
---|
215 | (let ((xgvty (xacel))
|
---|
216 | (ygvty (yacel)))
|
---|
217 | (with_object (bg) (try_move xgvty ygvty))))
|
---|
218 | T)
|
---|
219 | T)
|
---|
220 |
|
---|
221 |
|
---|
222 | (defun gsensor_cons ()
|
---|
223 | (set_xvel 50)
|
---|
224 | (set_yvel 50)
|
---|
225 | (set_xacel 0)
|
---|
226 | (set_yacel -15))
|
---|
227 |
|
---|
228 |
|
---|
229 | (defun gravity_sensor_draw ()
|
---|
230 | (if (edit_mode)
|
---|
231 | (progn
|
---|
232 | (draw)
|
---|
233 | (let ((x1 (- (x) (xvel)))
|
---|
234 | (y1 (- (y) (yvel)))
|
---|
235 | (x2 (+ (x) (xvel)))
|
---|
236 | (y2 (+ (y) (yvel)))
|
---|
237 | (c (find_rgb 255 255 0)))
|
---|
238 | (draw_line x1 y1 x2 y1 c)
|
---|
239 | (draw_line x2 y1 x2 y2 c)
|
---|
240 | (draw_line x2 y2 x1 y2 c)
|
---|
241 | (draw_line x1 y2 x1 y1 c)))
|
---|
242 | nil))
|
---|
243 |
|
---|
244 |
|
---|
245 | (defun hsensor_ai ()
|
---|
246 | (if (and (< (distx) (xvel)) (< (disty) (yvel)))
|
---|
247 | (progn
|
---|
248 | (select (aitype)
|
---|
249 | (0 (let ((phlth (xacel))) (if (eq (mod (state_time) 10) 0) (do_damage phlth (bg)))))
|
---|
250 | (1 (let ((phlth (xacel)) (hlthrad (/ (xvel) 2))) (hurt_radius (x) (y) hlthrad phlth nil 10)))
|
---|
251 | (2 (let ((phlth (xacel)) (hlthrad (/ (xvel) 2))) (do_explo hlthrad phlth)))
|
---|
252 | )
|
---|
253 | T)
|
---|
254 | T))
|
---|
255 |
|
---|
256 |
|
---|
257 | (defun hsensor_cons ()
|
---|
258 | (set_xvel 50)
|
---|
259 | (set_yvel 50)
|
---|
260 | (set_aitype 0)
|
---|
261 | (set_aistate 0)
|
---|
262 | (set_xacel 10)
|
---|
263 | (set_yacel 0))
|
---|
264 |
|
---|
265 |
|
---|
266 | (defun health_sensor_draw ()
|
---|
267 | (if (edit_mode)
|
---|
268 | (progn
|
---|
269 | (draw)
|
---|
270 | (let ((x1 (- (x) (xvel)))
|
---|
271 | (y1 (- (y) (yvel)))
|
---|
272 | (x2 (+ (x) (xvel)))
|
---|
273 | (y2 (+ (y) (yvel)))
|
---|
274 | (c (find_rgb 255 0 255)))
|
---|
275 | (draw_line x1 y1 x2 y1 c)
|
---|
276 | (draw_line x2 y1 x2 y2 c)
|
---|
277 | (draw_line x2 y2 x1 y2 c)
|
---|
278 | (draw_line x1 y2 x1 y1 c)))
|
---|
279 | nil))
|
---|
280 |
|
---|
281 |
|
---|
282 | (defun lsensor_ai ()
|
---|
283 | (if (and (< (distx) (xvel)) (< (disty) (yvel)))
|
---|
284 | (progn
|
---|
285 | (if (eq (aistate) 1) (request_end_game))
|
---|
286 | (if (eq (aitype) 1) (show_stats))
|
---|
287 | (request_level_load (concatenate 'string "addon/twist/levels/l" (digstr (xacel) 2) "s" (digstr (yacel) 2) ".lvl"))
|
---|
288 | )
|
---|
289 | T)
|
---|
290 | T)
|
---|
291 |
|
---|
292 |
|
---|
293 | (defun lsensor_cons ()
|
---|
294 | (set_xvel 50)
|
---|
295 | (set_yvel 50)
|
---|
296 | (set_xacel 1)
|
---|
297 | (set_yacel 1)
|
---|
298 | (set_aistate 0)
|
---|
299 | (set_aitype 1))
|
---|
300 |
|
---|
301 |
|
---|
302 | (defun level_sensor_draw ()
|
---|
303 | (if (edit_mode)
|
---|
304 | (progn
|
---|
305 | (draw)
|
---|
306 | (let ((x1 (- (x) (xvel)))
|
---|
307 | (y1 (- (y) (yvel)))
|
---|
308 | (x2 (+ (x) (xvel)))
|
---|
309 | (y2 (+ (y) (yvel)))
|
---|
310 | (c (find_rgb 255 128 0)))
|
---|
311 | (draw_line x1 y1 x2 y1 c)
|
---|
312 | (draw_line x2 y1 x2 y2 c)
|
---|
313 | (draw_line x2 y2 x1 y2 c)
|
---|
314 | (draw_line x1 y2 x1 y1 c)))
|
---|
315 | nil))
|
---|
316 |
|
---|
317 |
|
---|
318 | ;; Cheats
|
---|
319 | ;;
|
---|
320 | ;; Add Health: Vitalize
|
---|
321 | ;; All Weapons: Arms
|
---|
322 | ;; Full Ammo: Reload
|
---|
323 | ;; Power Fast: Steroids
|
---|
324 | ;; Power Fly: Lift
|
---|
325 | ;; Power Sneaky:Mirage
|
---|
326 | ;; Power Health:Elixir
|
---|
327 | ;; Power Light: Visor
|
---|
328 | ;; End Game: Outcome
|
---|
329 | ;; To use cheat, type cheat code.
|
---|
330 | ;; Note: if you press any direction keys, you'll have to retype the whole thing.
|
---|
331 |
|
---|
332 | (defun csensor_ai ()
|
---|
333 | (progn (set_x (with_object (bg) (x))) (set_y (with_object (bg) (y))))
|
---|
334 |
|
---|
335 | (if (local_key_pressed up-key) (set_aistate 0))
|
---|
336 | (if (local_key_pressed down-key) (set_aistate 0))
|
---|
337 | (if (local_key_pressed left-key) (set_aistate 0))
|
---|
338 | (if (local_key_pressed right-key) (set_aistate 0))
|
---|
339 | (if (local_key_pressed weapon-left-key) (set_aistate 0))
|
---|
340 | (if (local_key_pressed weapon-right-key) (set_aistate 0))
|
---|
341 |
|
---|
342 | (if (eq (fourth (mouse_stat)) 1)
|
---|
343 | (progn
|
---|
344 | (select (aistate)
|
---|
345 | ;; First Letter
|
---|
346 | (0 (if (local_key_pressed key-v) (set_aistate 1))
|
---|
347 | (if (local_key_pressed key-a) (set_aistate 10))
|
---|
348 | (if (local_key_pressed key-r) (set_aistate 13))
|
---|
349 | (if (local_key_pressed key-s) (set_aistate 18))
|
---|
350 | (if (local_key_pressed key-l) (set_aistate 25))
|
---|
351 | (if (local_key_pressed key-m) (set_aistate 28))
|
---|
352 | (if (local_key_pressed key-e) (set_aistate 33))
|
---|
353 | (if (local_key_pressed key-o) (set_aistate 38)))
|
---|
354 | ;; Vitalize
|
---|
355 | (1 (if (local_key_pressed key-i) (set_aistate 2)))
|
---|
356 | (2 (if (local_key_pressed key-t) (set_aistate 3))
|
---|
357 | (if (local_key_pressed key-s) (set_aistate 8)))
|
---|
358 | (3 (if (local_key_pressed key-a) (set_aistate 4)))
|
---|
359 | (4 (if (local_key_pressed key-l) (set_aistate 5)))
|
---|
360 | (5 (if (local_key_pressed key-i) (set_aistate 6)))
|
---|
361 | (6 (if (local_key_pressed key-z) (set_aistate 44)))
|
---|
362 | (7 (if (local_key_pressed key-e) (set_aistate 44)))
|
---|
363 | ;; Visor
|
---|
364 | (8 (if (local_key_pressed key-o) (set_aistate 45)))
|
---|
365 | (9 (if (local_key_pressed key-r) (set_aistate 45)))
|
---|
366 | ;; Arms
|
---|
367 | (10 (if (local_key_pressed key-r) (set_aistate 11)))
|
---|
368 | (11 (if (local_key_pressed key-m) (set_aistate 46)))
|
---|
369 | (12 (if (local_key_pressed key-s) (set_aistate 46)))
|
---|
370 | ;; Reload
|
---|
371 | (13 (if (local_key_pressed key-e) (set_aistate 14)))
|
---|
372 | (14 (if (local_key_pressed key-l) (set_aistate 15)))
|
---|
373 | (15 (if (local_key_pressed key-o) (set_aistate 16)))
|
---|
374 | (16 (if (local_key_pressed key-a) (set_aistate 47)))
|
---|
375 | (17 (if (local_key_pressed key-d) (set_aistate 47)))
|
---|
376 | ;; Steroids
|
---|
377 | (18 (if (local_key_pressed key-t) (set_aistate 19)))
|
---|
378 | (19 (if (local_key_pressed key-e) (set_aistate 20)))
|
---|
379 | (20 (if (local_key_pressed key-r) (set_aistate 21)))
|
---|
380 | (21 (if (local_key_pressed key-o) (set_aistate 22)))
|
---|
381 | (22 (if (local_key_pressed key-i) (set_aistate 23)))
|
---|
382 | (23 (if (local_key_pressed key-d) (set_aistate 48)))
|
---|
383 | (24 (if (local_key_pressed key-s) (set_aistate 48)))
|
---|
384 | ;; Lift
|
---|
385 | (25 (if (local_key_pressed key-i) (set_aistate 26)))
|
---|
386 | (26 (if (local_key_pressed key-f) (set_aistate 49)))
|
---|
387 | (27 (if (local_key_pressed key-t) (set_aistate 49)))
|
---|
388 | ;; Mirage
|
---|
389 | (28 (if (local_key_pressed key-i) (set_aistate 29)))
|
---|
390 | (29 (if (local_key_pressed key-r) (set_aistate 30)))
|
---|
391 | (30 (if (local_key_pressed key-a) (set_aistate 31)))
|
---|
392 | (31 (if (local_key_pressed key-g) (set_aistate 50)))
|
---|
393 | (32 (if (local_key_pressed key-e) (set_aistate 50)))
|
---|
394 | ;; Elixir
|
---|
395 | (33 (if (local_key_pressed key-l) (set_aistate 34)))
|
---|
396 | (34 (if (local_key_pressed key-i) (set_aistate 35)))
|
---|
397 | (35 (if (local_key_pressed key-x) (set_aistate 36)))
|
---|
398 | (36 (if (local_key_pressed key-i) (set_aistate 51)))
|
---|
399 | (37 (if (local_key_pressed key-r) (set_aistate 51)))
|
---|
400 | ;; Outcome
|
---|
401 | (38 (if (local_key_pressed key-u) (set_aistate 39)))
|
---|
402 | (39 (if (local_key_pressed key-t) (set_aistate 40)))
|
---|
403 | (40 (if (local_key_pressed key-c) (set_aistate 41)))
|
---|
404 | (41 (if (local_key_pressed key-o) (set_aistate 42)))
|
---|
405 | (42 (if (local_key_pressed key-m) (set_aistate 52)))
|
---|
406 | (43 (if (local_key_pressed key-e) (set_aistate 52)))
|
---|
407 |
|
---|
408 | ;; Last Word
|
---|
409 | ;; Vitalize Activation
|
---|
410 | (44 (if (local_key_pressed key-e) (progn (with_object (bg) (give_player_health 20)) (set_aistate 0))))
|
---|
411 | ;; Visor Activation
|
---|
412 | (45 (if (local_key_pressed key-r) (progn (with_object (bg) (progn (setq special_power HEALTH_POWER))) (set_aistate 0))))
|
---|
413 | ;; Arms Activation
|
---|
414 | (46 (if (local_key_pressed key-s) (progn (with_object (bg) (progn (give_weapon 0)(give_weapon 1)(give_weapon 2)(give_weapon 3)(give_weapon 4)(give_weapon 5)(give_weapon 6)(give_weapon 7))) (set_aistate 0))))
|
---|
415 | ;; Reload Activation
|
---|
416 | (47 (if (local_key_pressed key-d) (progn (with_object (bg) (progn (add_ammo 0 999)(add_ammo 1 999)(add_ammo 2 999)(add_ammo 3 999)(add_ammo 4 999)(add_ammo 5 999)(add_ammo 6 999)(add_ammo 7 999))) (set_aistate 0))))
|
---|
417 | ;; Steroids Activation
|
---|
418 | (48 (if (local_key_pressed key-s) (progn (with_object (bg) (progn (setq special_power FAST_POWER))) (set_aistate 0))))
|
---|
419 | ;; Lift Activation
|
---|
420 | (49 (if (local_key_pressed key-t) (progn (with_object (bg) (progn (setq special_power FLY_POWER))) (set_aistate 0))))
|
---|
421 | ;; Mirage Activation
|
---|
422 | (50 (if (local_key_pressed key-e) (progn (with_object (bg) (progn (setq special_power SNEAKY_POWER))) (set_aistate 0))))
|
---|
423 | ;; Elixir Activation
|
---|
424 | (51 (if (local_key_pressed key-r) (progn (with_object (bg) (progn (setq special_power HEALTH_POWER))) (set_aistate 0))))
|
---|
425 | ;; Outcome Activation
|
---|
426 | (52 (if (local_key_pressed key-e) (progn (stop_song) (play_song "music/victory.hmi")(play_sound END_LEV_SND 127 (x) (y))(request_end_game))))
|
---|
427 | ) T) T))
|
---|
428 |
|
---|
429 |
|
---|
430 | (defun burst_fire (firex firey angle)
|
---|
431 | (if (> fire_time 0);; if we need to wait till next burst
|
---|
432 | (progn
|
---|
433 | (setq fire_time (- fire_time 1))
|
---|
434 | (if (eq fire_time 0)
|
---|
435 | (progn
|
---|
436 | (setq burst_left burst_total)
|
---|
437 | (setq burst_wait 0))))
|
---|
438 | (if (eq burst_wait 0)
|
---|
439 | (progn
|
---|
440 | (if (or (eq burst_left 1) (eq burst_left 0))
|
---|
441 | (setq fire_time fire_delay)
|
---|
442 | (setq burst_left (- burst_left 1)))
|
---|
443 | (setq burst_wait burst_delay)
|
---|
444 | (fire_object (me) (aitype) firex firey angle (bg)))
|
---|
445 | (setq burst_wait (- burst_wait 1)))))
|
---|
446 |
|
---|
447 |
|
---|
448 | (defun wrob_cons ()
|
---|
449 | (setq fire_delay 4)
|
---|
450 | (setq burst_delay 1)
|
---|
451 | (setq max_xvel 10)
|
---|
452 | (setq max_yvel 5)
|
---|
453 | (set_aitype 0)
|
---|
454 | (setq burst_total 5))
|
---|
455 |
|
---|
456 |
|
---|
457 | (defun wrob_ai ()
|
---|
458 | (if (eq (hp) 0)
|
---|
459 | (with_object (add_object WALK_ROBHEAD (x) (- (y) 24) 1)
|
---|
460 | nil)
|
---|
461 | (progn
|
---|
462 | (try_move 0 10)
|
---|
463 | (select (aistate)
|
---|
464 | (0;; walk toward player
|
---|
465 | (if (or (> (distx) 120) (not (eq (direction) (toward))))
|
---|
466 | (progn
|
---|
467 | (move (toward) 0 0)
|
---|
468 | (next_picture))
|
---|
469 | (progn
|
---|
470 | (set_state stopped)
|
---|
471 | (set_aistate 1))))
|
---|
472 | (1;; stop and fire
|
---|
473 | (burst_fire (+ (x) (* (direction) 28)) (- (y) 35)
|
---|
474 | (if (> (direction) 0)
|
---|
475 | (mod (- 375 (/ (* burst_left 30) burst_total)) 360)
|
---|
476 | (+ 165 (/ (* burst_left 30) burst_total))))
|
---|
477 | (if (not (eq fire_time 0))
|
---|
478 | (set_aistate 0))))
|
---|
479 | T)))
|
---|
480 |
|
---|
481 |
|
---|
482 | (defun telesensor_ai ()
|
---|
483 | (if (> (total_objects) 0)
|
---|
484 | (select (aistate)
|
---|
485 | (0 ;; wait for player to activate
|
---|
486 | (if (and (< (distx) (xvel)) (< (disty) (yvel)))
|
---|
487 | (progn
|
---|
488 | (if (eq (aitype) 0)
|
---|
489 | (progn
|
---|
490 | (link_object (bg))
|
---|
491 | (set_state running)
|
---|
492 | (set_aistate 1))
|
---|
493 |
|
---|
494 | (if (with_object (bg) (pressing_action_key))
|
---|
495 | (progn
|
---|
496 | (link_object (bg))
|
---|
497 | (set_state running)
|
---|
498 | (set_aistate 1))
|
---|
499 | )))) )
|
---|
500 | (1 ;; wait for animation
|
---|
501 | (if (next_picture)
|
---|
502 | (let ((x (x))
|
---|
503 | (y (- (y) 16))
|
---|
504 | (fade (if (< (current_frame) 16) (current_frame) 15)))
|
---|
505 | (with_object (get_object 1)
|
---|
506 | (progn
|
---|
507 | (set_x x)
|
---|
508 | (set_y y)
|
---|
509 | (user_fun SET_FADE_COUNT fade)
|
---|
510 | (setq is_teleporting 1)
|
---|
511 | )))
|
---|
512 |
|
---|
513 | (let ((x (with_object (get_object 0) (x)))
|
---|
514 | (y (with_object (get_object 0) (- (y) 16))))
|
---|
515 | (with_object (get_object 1)
|
---|
516 | (progn
|
---|
517 | (set_x x)
|
---|
518 | (set_y y)
|
---|
519 | (setq is_teleporting 0)
|
---|
520 | (user_fun SET_FADE_COUNT 0)
|
---|
521 | ))
|
---|
522 | (remove_object (get_object 1))
|
---|
523 | (set_aistate 0))))))
|
---|
524 | T)
|
---|
525 |
|
---|
526 |
|
---|
527 | (defun telesensor_cons ()
|
---|
528 | (set_xvel 50)
|
---|
529 | (set_yvel 50))
|
---|
530 |
|
---|
531 |
|
---|
532 | (defun teleport_sensor_draw ()
|
---|
533 | (if (edit_mode)
|
---|
534 | (progn
|
---|
535 | (draw)
|
---|
536 | (let ((x1 (- (x) (xvel)))
|
---|
537 | (y1 (- (y) (yvel)))
|
---|
538 | (x2 (+ (x) (xvel)))
|
---|
539 | (y2 (+ (y) (yvel)))
|
---|
540 | (c (find_rgb 128 255 0)))
|
---|
541 | (draw_line x1 y1 x2 y1 c)
|
---|
542 | (draw_line x2 y1 x2 y2 c)
|
---|
543 | (draw_line x2 y2 x1 y2 c)
|
---|
544 | (draw_line x1 y2 x1 y1 c)))
|
---|
545 | nil))
|
---|