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