1 | ;; Copyright 1995 Crack dot Com, All Rights reserved |
---|
2 | ;; See licencing information for more details on usage rights |
---|
3 | |
---|
4 | (make_ammo_icon 'PLASMA_ICON20 "plasma_small" 20) |
---|
5 | (make_ammo_icon 'PLASMA_ICON50 "plasma_large" 50) |
---|
6 | |
---|
7 | (make_ammo_icon 'LSABER_ICON50 "lsaber_small" 50) |
---|
8 | (make_ammo_icon 'LSABER_ICON100 "lsaber_large" 100) |
---|
9 | |
---|
10 | (make_ammo_icon 'DFRIS_ICON4 "dfris_small" 4) |
---|
11 | (make_ammo_icon 'DFRIS_ICON10 "dfris_large" 10) |
---|
12 | |
---|
13 | |
---|
14 | (defun pgun_draw () |
---|
15 | (let ((c (- 255 (* (state_time) 40)))) |
---|
16 | (scatter_line sgb_lastx sgb_lasty (x) (y) (find_rgb c (/ c 2) c) (state_time)) |
---|
17 | (scatter_line sgb_lastx sgb_lasty (x) (y) (find_rgb c (/ c 2) c) 0) |
---|
18 | )) |
---|
19 | |
---|
20 | |
---|
21 | |
---|
22 | (defun pgun_ai () |
---|
23 | (select (state_time) |
---|
24 | (0 T) |
---|
25 | (1 T) |
---|
26 | (2 T) |
---|
27 | (3 T) |
---|
28 | (4 T) |
---|
29 | (5 nil))) |
---|
30 | |
---|
31 | (def_char PLASMAGUN_BULLET |
---|
32 | (vars sgb_angle sgb_lastx sgb_lasty) |
---|
33 | (funs (ai_fun pgun_ai) |
---|
34 | (draw_fun pgun_draw)) |
---|
35 | (range 10000 10000) |
---|
36 | (flags (unlistable T) |
---|
37 | (add_front T)) |
---|
38 | (states "art/misc.spe" (stopped "sgun_bullet"))) |
---|
39 | |
---|
40 | |
---|
41 | (defun lsaber_ai () |
---|
42 | (shift_rand_table (random 80)) |
---|
43 | nil) |
---|
44 | |
---|
45 | |
---|
46 | (defun lsaber_draw () |
---|
47 | (let ((c1 (find_rgb 255 255 255)) |
---|
48 | (c2 (find_rgb 70 59 67)) |
---|
49 | (c3 (find_rgb 147 155 195))) |
---|
50 | |
---|
51 | |
---|
52 | (scatter_line sgb_lastx sgb_lasty (x) (y) c1 0) |
---|
53 | (scatter_line sgb_lastx sgb_lasty (x) (y) c3 2) |
---|
54 | (ascatter_line sgb_lastx sgb_lasty (x) (y) c1 c2 1) |
---|
55 | )) |
---|
56 | |
---|
57 | |
---|
58 | |
---|
59 | (def_char LSABER_BULLET |
---|
60 | (vars sgb_angle sgb_lastx sgb_lasty) |
---|
61 | (funs (ai_fun lsaber_ai) |
---|
62 | (draw_fun lsaber_draw)) |
---|
63 | (range 10000 10000) |
---|
64 | (flags (unlistable T) |
---|
65 | (add_front T)) |
---|
66 | (states "art/misc.spe" (stopped "sgun_bullet"))) |
---|
67 | |
---|
68 | |
---|
69 | (defun angle_diff (a1 a2) |
---|
70 | (if (< (abs (- a2 a1)) 180) |
---|
71 | (- a2 a1) |
---|
72 | (if (< a1 a2) |
---|
73 | (+ (- a1 a2) 180) |
---|
74 | (- (- a1 a2) 180)))) |
---|
75 | |
---|
76 | |
---|
77 | (defun get_fris_angle () |
---|
78 | (let ((px (with_object (get_object 0) (player_pointer_x))) |
---|
79 | (py (with_object (get_object 0) (player_pointer_y)))) |
---|
80 | (atan2 (- (y) py 4) |
---|
81 | (- px (x))))) |
---|
82 | |
---|
83 | (defun dfris_ai () |
---|
84 | (if (and (eq 0 (mod (game_tick) 2)) (not (frame_panic))) |
---|
85 | (let ((rand (rand_on))) |
---|
86 | (with_object (add_object SMALL_LIGHT_CLOUD (+ (x) (random 3)) |
---|
87 | (- (y) (random 3) (/ (picture_height) 2))) |
---|
88 | (set_fade_count 11)) |
---|
89 | (set_rand_on rand))) |
---|
90 | (set_course (aistate) 12) |
---|
91 | (if (or (not (eq (bmove (if (> (total_objects) 0) (get_object 0) nil)) T)) |
---|
92 | (< (total_objects) 1) |
---|
93 | (let ((mex (x)) |
---|
94 | (mey (y))) |
---|
95 | (with_object (get_object 0) (find_object_in_area (- mex 7) |
---|
96 | (- mey 7) |
---|
97 | (+ mex 7) |
---|
98 | (+ mey 7) bad_guy_list)))) |
---|
99 | (progn |
---|
100 | (do_white_explo 40 45) |
---|
101 | nil) |
---|
102 | (progn |
---|
103 | (next_picture) |
---|
104 | (if (> (with_object (get_object 0) (total_objects)) 0) |
---|
105 | (let ((player_angle (get_fris_angle))) |
---|
106 | (let ((angle_change (angle_diff (aistate) player_angle))) |
---|
107 | (if (< (abs angle_change) 35) |
---|
108 | (set_aistate (mod (+ (aistate) angle_change 360) 360)) |
---|
109 | (if (>= angle_change 0) |
---|
110 | (set_aistate (mod (+ (aistate) 35) 360)) |
---|
111 | (set_aistate (mod (+ (aistate) 325 ) 360))))))) |
---|
112 | T)) |
---|
113 | ) |
---|
114 | |
---|
115 | |
---|
116 | |
---|
117 | (defun dfris_cache (type) |
---|
118 | (list (list EXPLODE8 EXP_LIGHT) |
---|
119 | (list GRENADE_SND))) |
---|
120 | |
---|
121 | (def_char DFRIS_BULLET |
---|
122 | (funs (ai_fun dfris_ai) |
---|
123 | (get_cache_list_fun dfris_cache)) |
---|
124 | (range 10000 10000) |
---|
125 | (flags (unlistable T) |
---|
126 | (add_front T)) |
---|
127 | (states "art/misc.spe" (stopped "dfris_bullet"))) |
---|
128 | |
---|