home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer 13 / 1995-12_Disc_13.iso / abuse / lisp / gates.lsp < prev    next >
Lisp/Scheme  |  1995-08-31  |  4KB  |  165 lines

  1. ;; Copyright 1995 Crack dot Com,  All Rights reserved
  2. ;; See licencing information for more details on usage rights
  3. (defun delay_ai ()
  4.   (if (> (xvel) 0)
  5.       (progn
  6.     (set_xvel (- (xvel) 1))
  7.     (if (eq (xvel) 0)
  8.         (if (eq (state) stopped)
  9.         (progn
  10.           (set_aistate 1)
  11.           (set_state on_state))
  12.           (progn
  13.         (set_state stopped)
  14.         (set_aistate 0)))))
  15.     (if (> (total_objects) 0)
  16.     (if (eq (eq (aistate) 0) (eq (with_obj0 (aistate)) 0))
  17.       T
  18.     (set_xvel delay_time))))
  19. T)
  20.  
  21. (def_char GATE_DELAY
  22.   (funs (ai_fun delay_ai)
  23.     (draw_fun dev_draw))
  24.   (vars delay_time)
  25.   (fields ("delay_time" "delay_time")
  26.       ("aistate"    "state")
  27.       )
  28.   (states "art/misc.spe" 
  29.       (stopped "0_delay")
  30.       (on_state "1_delay")))
  31.  
  32.  
  33. (def_char GATE_OR
  34.   (funs (ai_fun or_ai)
  35.     (draw_fun dev_draw))
  36.   (states "art/misc.spe" 
  37.       (stopped "0_or_gate")
  38.       (on_state "1_or_gate")))
  39.       
  40. (def_char GATE_AND
  41.   (funs (ai_fun and_ai)
  42.     (draw_fun dev_draw))
  43.   (states "art/misc.spe" 
  44.       (stopped "0_and_gate")
  45.       (on_state "1_and_gate")))
  46.       
  47.       
  48. (def_char GATE_NOT
  49.   (funs (ai_fun not_ai)
  50.     (draw_fun dev_draw))
  51.   (states "art/misc.spe" 
  52.       (stopped "0_not_gate")
  53.       (on_state "1_not_gate")))
  54.  
  55.       
  56. (def_char GATE_XOR
  57.   (funs (ai_fun xor_ai)
  58.     (draw_fun dev_draw))
  59.   (states "art/misc.spe" 
  60.       (stopped "0_xor_gate")
  61.       (on_state "1_xor_gate")))
  62.  
  63. (def_char GATE_PULSE
  64.   (funs (ai_fun pulse_ai)
  65.     (draw_fun dev_draw))
  66.   (vars time_left pulse_speed)
  67.   (fields ("pulse_speed" "pulse_speed"))
  68.   (states "art/misc.spe"
  69.       (stopped "0_pulse")
  70.       (on_state "1_pulse")))
  71.  
  72.       
  73. (def_char INDICATOR
  74.   (funs (ai_fun indicator_ai))
  75.   (states "art/misc.spe" 
  76.       (stopped "0_indicator")
  77.       (on_state "1_indicator")))
  78.     
  79. (defun indicator_ai ()
  80.   (if (> (total_objects) 0)
  81.       (if (eq (with_obj0 (aistate)) 0)
  82.       (progn
  83.         (set_state stopped)
  84.         (set_aistate 0))
  85.     (progn
  86.       (set_state on_state)
  87.       (set_aistate 1)))) T)
  88.  
  89. (defun xor_check (last_object stat)
  90.   (if (< last_object 0)
  91.       stat
  92.     (if (eq (with_object (get_object last_object) (aistate)) 0)
  93.     (xor_check (- last_object 1) stat)
  94.       (xor_check (- last_object 1) (not stat)))))
  95.  
  96. (defun xor_ai ()
  97.   (if (xor_check (- (total_objects) 1) nil)
  98.       (progn
  99.     (set_state on_state)
  100.     (set_aistate 1))
  101.     (progn
  102.       (set_state stopped)
  103.       (set_aistate 0))) T)
  104.  
  105. (defun or_check (last_object)
  106.   (if (< last_object 0)
  107.       nil
  108.     (if (eq (with_object (get_object last_object) (aistate)) 0)
  109.     (or_check (- last_object 1))
  110.       T)))
  111.  
  112. (defun or_ai ()
  113.   (if (or_check (- (total_objects) 1))
  114.       (progn
  115.     (set_state on_state)
  116.     (set_aistate 1))
  117.     (progn
  118.       (set_state stopped)
  119.       (set_aistate 0))) T)
  120.  
  121.     
  122. (defun and_check (last_object)
  123.   (if (< last_object 0)
  124.       T
  125.     (if (eq (with_object (get_object last_object) (aistate)) 0)
  126.     nil
  127.       (and_check (- last_object 1)))))
  128.    
  129.  
  130. (defun and_ai ()
  131.   (if (and_check (- (total_objects) 1))
  132.       (progn
  133.     (set_state on_state)
  134.     (set_aistate 1))
  135.     (progn
  136.       (set_state stopped)
  137.       (set_aistate 0))) T)
  138.  
  139.  
  140. (defun not_ai ()
  141.   (if (> (total_objects) 0)
  142.       (if (eq (with_obj0 (aistate)) 0)
  143.       (progn
  144.         (set_state on_state)
  145.         (set_aistate 1))
  146.     (progn
  147.       (set_state stopped)
  148.       (set_aistate 0)))) T)
  149.  
  150. (defun pulse_ai ()
  151.   (if (> (total_objects) 0)
  152.       (if (not (eq (with_obj0 (aistate)) 0))
  153.       (if (eq time_left 0)
  154.           (if (eq (aistate) 0)
  155.           (progn
  156.             (setq time_left pulse_speed)
  157.             (set_state on_state)
  158.             (set_aistate 1))
  159.         (progn
  160.           (set_state stopped)
  161.           (set_aistate 0)))
  162.         (setq time_left (- time_left 1)))))
  163.   T)
  164.  
  165.