;; Copyright 1995 Crack dot Com, All Rights reserved ;; See licencing information for more details on usage rights (defun pusher_cons () (set_aistate 4)) (defun pusher_ai () (if (or (eq (total_objects) 0) (not (eq (with_object (get_object 0) (aistate)) 0))) (progn (next_picture) (if (touching_bg) (let ((xamount (if (> (direction) 0) (aistate) (- 0 (aistate))))) (with_object (bg) (try_move xamount 0)))))) T) (def_char PUSHER (range 5 5) (funs (ai_fun pusher_ai) ; (draw_fun dev_draw) (constructor pusher_cons)) (fields ("aistate" "push speed")) (states "art/chars/push.spe" (stopped (seq "push" 1 5)))) (defun spring_cons () (set_yvel -15)) (defun spring_ai () (if (or (eq (total_objects) 0) (not (eq (with_object (get_object 0) (aistate)) 0))) (select (aistate) (0 (if (touching_bg) (let ((add_yvel (yvel))) (play_sound SPRING_SOUND 127 (x) (y)) (with_object (bg) (progn (set_yvel (+ (yvel) add_yvel)) (if (eq (gravity) 0) (progn (set_state run_jump) (set_gravity 1))))) (set_state running) (set_aistate 1)))) (1 (if (next_picture) nil (progn (set_aistate 0) (set_state stopped)))))) T) (def_char SPRING (range 5 5) (funs (ai_fun spring_ai) (constructor spring_cons)) (fields ("yvel" "set yvel to?")) (states "art/misc.spe" (stopped "spri0004.pcx") (running (rep "spri0001.pcx" 4)))) (defun pr_draw () (draw_predator) ) (defun train_ai () (if (eq (aistate) 0) (if (activated) (progn (show_help (get_train_msg (aitype))) (with_object (bg) (freeze_player 100)) (set_aistate 1) T) T) (if (eq (aistate) 100) nil (progn (show_help (get_train_msg (aitype))) (set_aistate (+ (aistate) 1)) T)))) (def_char TRAIN_MSG (funs (ai_fun train_ai) (draw_fun dev_draw)) (fields ("aitype" "message num")) (states "art/misc.spe" (stopped "bubble"))) (defun sball_damage (amount from hitx hity push_xvel push_yvel) ; transfer damage to lower half (if (eq (state) stopped) (progn (set_aistate 1) (set_state running)))) (def_char SWITCH_BALL (funs (damage_fun sball_damage) (ai_fun do_nothing)) (flags (hurtable T)) (states "art/misc.spe" (stopped (seq "swit" 1 9)) (running (seq "swit" 10 18)))) (def_char POINTER (funs (ai_fun do_nothing)) (states "art/misc.spe" (stopped "pointer"))) (defun shifter_cons () (set_xvel 300) (set_yvel 300) (set_xacel 0) (set_yacel -1)) (defun holder_ai () (select (total_objects) (2 (let ((newx (+ (with_object (get_object 1) (x)) (xvel))) (newy (+ (with_object (get_object 1) (y)) (yvel)))) (with_obj0 (set_x newx) (set_y newy)) (set_x newx) (set_y newy) T)) (3 (if (with_object (get_object 2) (not (eq (aistate) 0))) (let ((newx (+ (with_object (get_object 1) (x)) (xvel))) (newy (+ (with_object (get_object 1) (y)) (yvel)))) (with_obj0 (set_x newx) (set_y newy)) (set_x newx) (set_y newy) T) (if (eq (xacel) 1) nil T))) (4 T) (5 T) (6 T) (0 nil) (1 nil))) (def_char OBJ_HOLDER (funs (ai_fun holder_ai) (draw_fun dev_draw)) (fields ("xvel" "x offset") ("yvel" "y offset") ("xacel" "delete if off (1=yes)")) (states "art/misc.spe" (stopped "o_hold")))