1;; Copyright 1995 Crack dot Com, All Rights reserved 2;; See licensing information for more details on usage rights 3 4(setq ant_tints (make-array 13 :initial-contents (list 5 (def_tint "art/tints/ant/green.spe") 6 (def_tint "art/tints/ant/blue.spe") 7 (def_tint "art/tints/ant/brown.spe") 8 (def_tint "art/tints/ant/egg.spe") 9 (def_tint "art/tints/ant/yellow.spe") 10 (def_tint "art/tints/ant/mustard.spe") 11 (def_tint "art/tints/ant/orange.spe") 12 (def_tint "art/tints/ant/gray.spe") 13 (def_tint "art/tints/guns/green.spe") 14 (def_tint "art/tints/ant/darkblue.spe") 15 normal_tint 16 normal_tint 17 normal_tint 18 ))) 19 20/* 21------ this code has been compiled -------- 22(defun no_fall_move (xm ym but) 23 (move xm ym but)) 24 (if (not (eq (gravity) 0)) ;; if we are in the air don't check for no fall 25 (move xm ym but) 26 (let ((oldx (x)) 27 (oldy (y)) 28 (ret (move xm ym but))) 29 (if (try_move 0 5) 30 (progn 31 (set_x oldx) 32 (set_y oldy) 33 (set_xacel 0) 34 (set_state stopped) 35 (set_xv 0) 36 (set_gravity 0) 37 0) 38 ret)))) 39 40 41(defun will_fall_if_jump () 42 nil) 43 (let ((dist (* (abs (get_ability jump_yvel)) (get_ability jump_xvel))) 44 (oldx (x)) 45 (oldy (y)) 46 ) 47 (if (> (direction) 0) 48 (set_x (+ (x) dist)) 49 (set_x (- (x) dist))) 50 (if (try_move 0 5) 51 (progn 52 (set_x oldx) 53 (set_y oldy) 54 T) 55 (progn 56 (set_x oldx) 57 (set_y oldy) 58 nil)))) 59^^^^^^ this code has been compiled ^^^^^^^^ 60*/ 61 62 63(defun strait_rocket_ai () 64 (set_course (aistate) 65 (select difficulty 66 ('easy 12) 67 ('medium 15) 68 ('hard 17) 69 ('extreme 22) )) 70 (set_frame_angle 0 359 (aistate)) 71 (let ((stat (bmove nil))) 72 (if (eq stat T) 73 T 74 (progn 75 (if (not (eq stat nil)) 76 (progn 77 (add_object EXPLODE3 (+ (x) (random 5)) (+ (y) (random 5)) 0) 78 (add_object EXPLODE2 (+ (x) (random 5)) (+ (y) (random 5)) 2) 79 (add_object EXPLODE3 (- (x) (random 5)) (- (y) (random 5)) 1) 80 (add_object EXPLODE3 (- (x) (random 5)) (- (y) (random 5)) 2) 81 (hurt_radius (x) (+ (y) 20) 25 15 nil 10) 82 ) 83 (let ((myself (me))) 84 (with_object (add_object EG_EXPLO (x) (y)) (user_fun myself (car stat))))) 85 nil)))) 86 87 88(def_char STRAIT_ROCKET 89 (funs (ai_fun strait_rocket_ai)) 90 (range 10000 10000) 91 (flags (unlistable T)) 92 (states "art/missle.spe" (stopped (seq "b32r" 1 32)))) 93 94(defun animate_ai () (next_picture)) 95 96(defun eg_explo_ufun (creator block_flags) 97 (set_direction (with_object creator (direction))) 98 (if block_flags 99 (if (or (blocked_left block_flags) (blocked_right block_flags)) 100 (set_state blocking)))) 101 102(def_char EG_EXPLO 103 (funs (ai_fun animate_ai) 104 (user_fun eg_explo_ufun)) 105 (range 10000 10000) 106 (flags (unlistable T)) 107 (states "art/missle.spe" 108 (stopped (seq "bifl" 1 4)) 109 (blocking (seq "bilw" 1 4)))) 110 111/* 112------ this code has been compiled -------- 113(defun alien_wait_time () 114 (select difficulty 115 ('easy 6) 116 ('medium 4) 117 ('hard 2) 118 ('extreme 1))) 119 120(defun can_hit_player () 121 (let ((firex (+ (x) (* (direction) 15)) ) 122 (firey (- (y) 15)) 123 (playerx (with_object (bg) (x))) 124 (playery (- (with_object (bg) (y)) 15))) 125 (can_see firex firey playerx playery nil))) 126 127(defun not_ant_congestion () 128 (if (> (direction) 0) 129 (if (find_object_in_area (+ (x) 23) (- (y) 20) (+ (x) 30) (+ (y) 20) (list ANT_ROOF)) 130 nil 131 T) 132 (if (find_object_in_area (- (x) 30) (- (y) 20) (- (x) 23) (+ (y) 20) (list ANT_ROOF)) 133 nil 134 T))) 135 136 137(defun roof_above () (not (can_see (x) (y) (x) (- (y) 120) nil))) 138 139(defun fire_at_player () 140 (let ((firex (+ (x) (* (direction) 15)) ) 141 (firey (- (y) 15)) 142 (playerx (+ (with_object (bg) (x)) (with_object (bg) (* (xvel) 8)))) 143 (playery (+ (- (with_object (bg) (y)) 15) (with_object (bg) (* (yvel) 2))))) 144 145 (if (and (can_see (x) (y) firex firey nil) (can_see firex firey playerx playery nil)) 146 (progn 147 (let ((angle (atan2 (- firey playery) 148 (- playerx firex)))) 149 (fire_object (me) (aitype) firex firey angle (bg)) 150 (set_state weapon_fire)) 151 152 )))) 153 154(defun ant_dodge () 155 (if (eq need_to_dodge 1) 156 (progn 157 (setq need_to_dodge 0) 158 (if (eq (random 2) 1) 159 (progn 160 (set_state stopped) 161 (go_state 6)) ;; jump at player 162 (if (roof_above) 163 (progn 164 (set_yvel -17) ;; jump up 165 (set_xvel 0) 166 (go_state 12)) 167 (progn 168 (set_yvel -12) ;; long jump 169 (set_xvel (* (direction) 20)) 170 (set_aistate 6)))) 171 T 172 nil))) 173 174(defun scream_check () 175 (if (can_see (x) (y) (with_object (bg) (x)) (with_object (bg) (y)) nil) 176 (progn 177 (if (or (eq no_see_time 0) (> no_see_time 20)) 178 (play_sound ASCREAM_SND 127 (x) (y))) 179 (setq no_see_time 1)) 180 (setq no_see_time (+ no_see_time 1)))) 181 182(defun ant_ai () 183 (push_char 30 20) 184 (if (or (eq (state) flinch_up) (eq (state) flinch_down)) 185 (progn (next_picture) T) 186 (progn 187 188 (select (aistate) 189 (0 (set_state hanging) 190 (if (eq hide_flag 0) 191 (set_aistate 15) 192 (set_aistate 16))) 193 194 (15 ;; hanging on the roof waiting for the main character 195 (if (next_picture) T (set_state hanging)) 196 (if (if (eq (total_objects) 0);; no sensor, wait for guy 197 (and (< (distx) 130) (< (y) (with_object (bg) (y)))) 198 (not (eq (with_object (get_object 0) (aistate)) 0))) 199 (progn 200 (set_state fall_start) (set_direction (toward)) 201 (set_aistate 1)))) 202 203 (16 ;; hiding 204 (set_state hiding) 205 (if (if (eq (total_objects) 0);; no sensor, wait for guy 206 (and (< (distx) 130) (< (y) (with_object (bg) (y)))) 207 (not (eq (with_object (get_object 0) (aistate)) 0))) 208 (progn 209 (set_state fall_start) (set_direction (toward)) 210 (set_aistate 1)))) 211 212 (1 ;; falling down 213 (set_state falling) 214 (scream_check) 215 (if (blocked_down (move 0 0 0)) 216 (progn 217 (set_state landing) 218 (play_sound ALAND_SND 127 (x) (y)) 219 (set_aistate 9)))) 220 221 (9 ;; landing / turn around (gerneal finish animation state) 222 (if (next_picture) T 223 (if (try_move 0 2) 224 (progn 225 (set_gravity 1) 226 (set_aistate 1)) 227 (progn (set_state stopped) 228 (go_state 2))))) ;; running 229 230 (2 ;; running 231 (scream_check) 232 (if (eq (random 20) 0) (setq need_to_dodge 1)) 233 (if (not (ant_dodge)) 234 (if (eq (facing) (toward)) 235 (progn 236 (next_picture) 237 (if (and (eq (random 5) 0) (< (distx) 180) (< (disty) 100) (can_hit_player)) 238 (progn 239 (set_state weapon_fire) 240 (set_aistate 8)) ;; fire at player 241 (if (and (< (distx) 100) (> (distx) 10) (eq (random 5) 0)) 242 (set_aistate 4) ;; wait for pounce 243 244 (if (and (> (distx) 140) 245 (not_ant_congestion) 246 (not (will_fall_if_jump))) 247 (set_aistate 6) 248 249 (if (> (direction) 0) 250 (if (and (not_ant_congestion) (blocked_right (no_fall_move 1 0 0))) 251 (set_direction -1)) 252 (if (and (not_ant_congestion) (blocked_left (no_fall_move -1 0 0))) 253 (set_direction 1))))))) 254 (progn 255 (set_direction (toward)) 256 (set_state turn_around) 257 (set_aistate 9))))) 258 259 (4 ;; wait for pounce 260 (if (ant_dodge) T 261 (progn 262 (set_state pounce_wait) 263 (move 0 0 0) 264 (if (> (state_time) (alien_wait_time)) 265 (progn 266 (play_sound ASLASH_SND 127 (x) (y)) 267 (set_state stopped) 268 (go_state 6)))))) 269 270 (6 ;; jump 271 (setq need_to_dodge 0) 272 (if (blocked_down (move (direction) -1 0)) 273 (progn 274 (set_aistate 2)))) 275 276 (8 ;; fire at player 277 (if (ant_dodge) T 278 (if (eq (state) fire_wait) 279 (if (next_picture) 280 T 281 (progn 282 (fire_at_player) 283 (set_state stopped) 284 (set_aistate 2))) 285 (set_state fire_wait)))) 286 287 (12 ;; jump to roof 288 (setq need_to_dodge 0) 289 (set_state jump_up) 290 (set_yvel (+ (yvel) 1)) 291 (set_xacel 0) 292 (let ((top (- (y) 31)) 293 (old_yvel (yvel)) 294 (new_top (+ (- (y) 31) (yvel)))) 295 (let ((y2 (car (cdr (see_dist (x) top (x) new_top))))) 296 (try_move 0 (- y2 top) nil) 297 (if (not (eq y2 new_top)) 298 (if (> old_yvel 0) 299 (progn 300 (set_state stopped) 301 (set_aistate 2)) 302 (progn 303 (set_state top_walk) 304 (set_aistate 13))))))) 305 306 (13 ;; roof walking 307 (scream_check) 308 (if (or (and (< (y) (with_object (bg) (y))) 309 (< (distx) 10) (eq (random 8) 0)) 310 (eq need_to_dodge 1)) ;; shooting at us, fall down 311 (progn 312 (set_gravity 1) 313 (set_state run_jump) 314 (go_state 6)) 315 (progn 316 (if (not (eq (facing) (toward))) ;; run toward player 317 (set_direction (- 0 (direction)))) 318 (if (and (< (distx) 120) (eq (random 5) 0)) 319 (progn 320 (set_state ceil_fire) 321 (go_state 14)) 322 (let ((xspeed (if (> (direction) 0) (get_ability run_top_speed) 323 (- 0 (get_ability run_top_speed))))) 324 (if (and (can_see (x) (- (y) 31) (+ (x) xspeed) (- (y) 31) nil) 325 (not (can_see (+ (x) xspeed) (- (y) 31) 326 (+ (x) xspeed) (- (y) 32) nil))) 327 (progn 328 (set_x (+ (x) xspeed)) 329 (if (not (next_picture)) 330 (set_state top_walk))) 331 (set_aistate 1))))))) 332 333 334 (14 ;; cieling shoot 335 (if (next_picture) 336 T 337 (progn 338 (fire_at_player) 339 (set_state top_walk) 340 (set_aistate 13)))) 341 342 ))) 343 344 T) 345*/ 346 347 348(defun create_dead_parts (array part_num type) 349 (let ((dir (direction)) 350 (rand (rand_on))) 351 (with_object (add_object (aref array part_num) (x) (y)) 352 (progn (set_aitype type) 353 (set_xvel (* dir (random 10))) 354 (set_yvel (- 0 (random 25))))) 355 (with_object (add_object (aref array (+ part_num 1)) (x) (y)) 356 (progn (set_aitype type) 357 (set_xvel (* dir (random 10))) 358 (set_yvel (- 0 (random 25))))) 359 (with_object (add_object (aref array (+ part_num 2)) (x) (y)) 360 (progn (set_aitype type) 361 (next_picture) ;; unsync the animations 362 (set_xvel (* dir (random 10))) 363 (set_yvel (- 0 (random 25))))) 364 (with_object (add_object (aref array (+ part_num 2)) (x) (y)) 365 (progn (set_aitype type) 366 (next_picture) 367 (next_picture) 368 (set_xvel (* dir (random 10))) 369 (set_yvel (- 0 (random 25))))) 370 (with_object (add_object (aref array (+ part_num 2)) (x) (y)) 371 (progn (set_aitype type) 372 (next_picture) 373 (next_picture) 374 (next_picture) 375 (set_xvel (* dir (random 10))) 376 (set_yvel (- 0 (random 25))))) 377 (set_rand_on rand))) ;; restore random table, in case this didn't get called because of frame panic 378 379 380(enum 'decay_part 381 'flaming_part 382 'electric_part 383 'normal_part) 384 385(defun get_dead_part (from) 386 (if from 387 (let ((type (with_object from (otype)))) 388 (if (or (eq type GRENADE) (eq type ROCKET) (eq type FIREBOMB)) 389 flaming_part 390 (if (or (eq type PLASMAGUN_BULLET) (eq type LSABER_BULLET)) 391 electric_part 392 normal_part))) 393 normal_part) 394 395) 396 397 398(defun ant_damage (amount from hitx hity push_xvel push_yvel) ; transfer damage to lower half 399 400 (if (and (not (eq (state) dead)) 401 (or (not from) 402 (with_object from (if (eq (total_objects) 0) 403 (not (eq (otype) ANT_ROOF)) 404 (with_object (get_object 0) (not (eq (otype) ANT_ROOF))))))) 405 (if (not (eq (aistate) 15)) 406 (progn 407 (if (eq (random 2) 0) 408 (set_state flinch_up) 409 (set_state flinch_down)) 410 (damage_fun amount from hitx hity push_xvel push_yvel) 411 (play_sound APAIN_SND 127 (x) (y)) 412 (setq need_to_dodge 1) 413 (if (<= (hp) 0) 414 (progn 415 (if (eq (aitype) 0) 416 (play_sound (aref ASML_DEATH (random 2)) 127 (x) (y)) 417 (play_sound (aref ALRG_DEATH (random 3)) 127 (x) (y))) 418 419 (set_state dead) 420 (if (eq (random (select difficulty 421 ('easy 2) 422 ('medium 5) 423 ('hard 8) 424 ('extreme 20))) 0) 425 (if (eq (random 4) 0) 426 (add_object (aitype_to_ammo (+ (aitype) 1)) (x) (y))) 427 (add_object (aitype_to_ammo (aitype)) (x) (y))) 428 (create_dead_parts ant_dead_parts (* (get_dead_part from) 3) (aitype))) 429 ))))) 430 431(defun ant_cons () 432 (set_state hanging) 433 (setq no_see_time 300)) 434 435(defun ant_ct () 436 (select (aitype) 437 (0 (set_hp 15)) 438 (1 (set_hp 50)) 439 (2 (set_hp 25)) 440 (3 (set_hp 35)) 441 (4 (set_hp 35)) 442 (5 (set_hp 20)) 443 444 )) 445 446 447;; XXX: Mac Abuse reimplements this in C++ 448(defun ant_draw () 449 (if (eq 0 (aitype)) 450 (draw) 451 (draw_tint (aref ant_tints (aitype))))) 452 453(def_char ANT_ROOF 454 (vars need_to_dodge 455 no_see_time 456 hide_flag) 457 (fields 458 ("hide_flag" ant_hide) 459 ("fade_count" ai_fade) 460 ("aitype" ai_type) 461 ("hp" ai_health) 462 ("aistate" ai_state)) 463 (range 250 20) 464 (draw_range 40 40) 465 (funs (ai_fun ant_ai) 466 (draw_fun ant_draw) 467 (constructor ant_cons) 468 (type_change_fun ant_ct) 469 (get_cache_list_fun ant_cache) 470 (damage_fun ant_damage)) 471 472 (abilities (run_top_speed 7) 473 (start_hp 20) 474 (stop_acel 20) 475 (start_acel 20) 476 (jump_yvel -4) 477 (jump_xvel 20) 478 (push_xrange 1) 479 (jump_top_speed 20)) 480 481 (flags (hurtable T) 482 (force_health T)) 483 484 (states "art/ant.spe" 485 (hanging (rep "ant" 2)) 486 487 (fall_start "affc0001.pcx") 488 (falling "affc0002.pcx") 489 490 (stopped "awlk0001.pcx") 491 (running (seq "awlk" 1 10)) 492 (landing (seq "acff" 1 4)) 493 (pounce_wait "acff0001.pcx") 494 (turn_around (seq "atrn" 1 5)) 495 496 (run_jump "dive") 497 (run_jump_fall "dive") 498 (start_run_jump "dive") 499 (fire_wait (seq "wait" 1 3)) 500 501 (ceil_fire (seq "cfire" 1 3)) 502 (top_walk (seq "awkc" 1 10)) 503 (flinch_up (rep "afh10001.pcx" 2)) 504 (flinch_down (rep "afh20001.pcx" 2)) 505 (blown_back_dead "adib0009.pcx") 506 (jump_up "ajmp.pcx") 507 (hiding "hidden") 508 (dead "hidden") 509 (weapon_fire (seq "asht" 2 5)))) 510 511 512(def_char HIDDEN_ANT 513 (funs (ai_fun ant_ai) 514 (draw_fun dev_draw)) 515 (flags (unlistable T)) 516 (vars need_to_dodge 517 no_see_time 518 hide_flag) 519 (states "art/ant.spe" (stopped "hidden"))) 520 521 522 523 524(defun crack_ai () 525 (if (eq (aistate) 0) 526 (if (if (eq (total_objects) 0) 527 (and (< (distx) 50) (< (disty) 70)) 528 (with_object (get_object 0) (not (eq (aistate) 0)))) 529 (set_aistate 1)) 530 (select (current_frame) 531 (4 nil) 532 (3 533 (let ((d (direction)) 534 (type (aitype))) 535 (if (or (eq create_total 0) (eq create_total 1)) 536 (set_current_frame 4) 537 (progn 538 (setq create_total (- create_total 1)) 539 (set_current_frame 0))) 540 (with_object (add_object_after ANT_ROOF (+ (x) (* (direction) 20)) (y)) 541 (progn 542 (set_aitype type) 543 (set_direction d) 544 (set_xvel (* d 20)) 545 (set_state run_jump) 546 (set_aistate 6))) 547 )) 548 (0 (next_picture)) 549 (1 (next_picture)) 550 (2 (next_picture)))) 551 T) 552 553 554(defun crack_cons () 555 (setq create_total 1) 556 (set_aitype 1)) 557 558 559(def_char ANT_CRACK 560 (funs (ai_fun crack_ai) 561 (draw_fun ant_draw) 562 (get_cache_list_fun ant_cache) 563 (constructor crack_cons)) 564 (range 250 0) 565 (vars create_total) 566 (fields ("create_total" ant_total) 567 ("aitype" ant_type)) 568 (states "art/ant.spe" 569 (stopped (seq "aisw" 2 6)))) 570 571 572(defun head_ai () 573 (select (aistate) 574 (0 ;; falling 575 (next_picture) 576 (set_yvel (+ (yvel) 3)) 577 (bounce_move T T T '(progn (set_state dieing) (set_aistate 1)) T) 578 (or (< (state_time) 15) 579 (not (frame_panic)))) 580 (1 ;; hit the ground 581 nil) 582 )) 583 584(setq ant_dead_parts (make-array (* 3 4) :initial-contents 585 '((AD_1 "adbn") (AD_2 "adha") (AD_3 "adla") ; disapear 586 (AD_4 "adaf") (AD_5 "adah") (AD_6 "adlf") ; flaming 587 (AD_7 "adbe") (AD_8 "adhe") (AD_9 "adle") ; electrical 588 (AD_10 "adan") (AD_11 "adhn") (AD_12 "adln")))) ; normal 589 590 591(defun ant_cache (type) ;; cache in the ant (from crack) and the dead body parts and the ant tints 592 (list 593 (list ANT_ROOF AD_1 AD_2 AD_3 AD_4 AD_5 AD_6 AD_7 AD_8 AD_9 AD_10 AD_11 AD_12) 594 (list (aref ant_tints 0) (aref ant_tints 1) (aref ant_tints 2) (aref ant_tints 3) 595 (aref ant_tints 4) (aref ant_tints 5) (aref ant_tints 6) (aref ant_tints 7) 596 (aref ant_tints 8) (aref ant_tints 9) (aref ant_tints 10)))) 597 598 599 600(defun make_dead_part (sym base frames filename draw) 601 (eval `(def_char ,sym 602 (range 100 100) 603 (funs (ai_fun head_ai) 604 (draw_fun ,draw)) 605 (flags (unlistable T) 606 (add_front T)) 607 (states filename 608 (stopped (seq base 1 ,frames)))))) 609 610 611(do ((i 0 (setq i (+ i 1)))) 612 ((>= i 12) nil) 613 (setq (aref ant_dead_parts i) 614 (make_dead_part (car (aref ant_dead_parts i)) 615 (car (cdr (aref ant_dead_parts i))) 4 "art/ant.spe" 'ant_draw))) 616 617 618 619(defun boss_damage (amount from hitx hity push_xvel push_yvel) 620 (if (and (eq (fade_count) 0) (not (eq (aistate) 0)) (< (aitype) 6)) 621 (progn 622 (damage_fun amount from hitx hity push_xvel push_yvel) 623 (if (eq (hp) 0) 624 (progn 625 (set_hp 1) 626 (set_aitype (+ (aitype) 1)) 627 (if (eq (aitype) 6) ;; go to next alien type 628 (set_aistate 10) ;; end game 629 (set_aistate 5))))))) ;; fade out 630 631(defun boss_cons () 632 (set_hp 1) 633 (setq taunt_time 20)) 634 635(defun boss_fire () 636 (let ((firex (+ (x) (* (direction) 17)) ) 637 (firey (- (y) 25)) 638 (playerx (+ (with_object (bg) (x)) (with_object (bg) (* (xvel) 8)))) 639 (playery (+ (- (with_object (bg) (y)) 15) (with_object (bg) (* (yvel) 2))))) 640 641 (if (and (can_see (x) (y) firex firey nil) (can_see firex firey playerx playery nil)) 642 (progn 643 (let ((angle (atan2 (- firey playery) 644 (- playerx firex)))) 645 (fire_object (me) (aitype) firex firey angle (bg)) 646 (set_state weapon_fire)) 647 648 )))) 649 650 651(defun boss_ai () 652 (if (total_objects) 653 654 (if (eq (aistate) 11) 655 nil 656 (progn 657 (select (aistate) 658 (0;; wait for turn on 659 (set_state hiding);; can't see us 660 (set_targetable nil) 661 (if (activated) 662 (set_aistate 1))) 663 (1;; taunt for a while 664 (set_targetable nil) 665 (if (eq taunt_time 0) 666 (progn 667 (set_fade_count 14) 668 (set_state stopped) 669 (play_sound APPEAR_SND 127 (x) (y)) 670 (set_aistate 2)));; fade in 671 (progn 672 (setq taunt_time (- taunt_time 1)) 673 (if (eq (mod taunt_time 25) 0) 674 (play_sound TAUNT_SND 127 (x) (y))))) 675 676 (2;; fade in 677 (set_direction (toward)) 678 (if (eq (fade_count) 0) 679 (progn 680 (set_state weapon_fire) 681 (go_state 3)) 682 (set_fade_count (- (fade_count) 2)))) 683 684 (3;; wait to fire 685 (set_targetable T) 686 (if (next_picture) T 687 (go_state 4))) 688 689 (4;; fire1 690 (boss_fire) 691 (set_aistate 5) 692 (set_state weapon_fire)) 693 694 (5;; wait to fire 695 (set_targetable T) 696 (if (next_picture) T 697 (go_state 6))) 698 699 (6;; fire1 700 (boss_fire) 701 (set_aistate 7) 702 (set_state stopped)) 703 704 (7;; fade out 705 (set_targetable nil) 706 (set_fade_count (+ (fade_count) 2)) 707 (if (eq (fade_count) 14) 708 (progn 709 (set_state hiding) 710 (let ((to_object (get_object (random (total_objects))))) 711 (set_x (with_object to_object (x))) 712 (set_y (with_object to_object (y)))) 713 (setq taunt_time (- 30 (* (aitype) 2))) 714 (go_state 0)))) 715 716 (10;; game over 717 (set_state hiding) 718 (set_targetable nil) 719 (if (eq (state_time) 60) 720 (go_state 11)) 721 (if (not (eq (state_time) 0)) 722 (progn 723 (if (eq (mod (state_time) 8) 0) 724 (play_sound GRENADE_SND 127 (x) (y))) 725 (add_object EXPLODE1 (+ (x) (random (* (state_time) 2))) (+ (random (state_time)) (y))) 726 (add_object EXPLODE1 (- (x) (random (* (state_time) 2))) (- (y) (random (state_time))))))) 727 ) 728 729 T)))) 730 731 732 733(def_char BOSS_ANT 734 (funs (ai_fun boss_ai) 735 (draw_fun ant_draw) 736 (damage_fun boss_damage)) 737 (vars taunt_time) 738 (flags (hurtable T) 739 (unlistable T)) 740 (fields ("taunt_time" "taunt_tint") 741 ("aistate" "aistate")) 742 (states "art/boss.spe" 743 (stopped "awlk0001.pcx") 744 (hiding "hidden") 745 (weapon_fire (seq "asht" 2 5)))) 746 747