[566] | 1 | ;; Copyright 1997 Mike Moss (tfirestorm@aol.com), All Rights reserved |
---|
| 2 | ;; See read me for more details on usage rights |
---|
| 3 | ;; blah blah yackety smackety |
---|
| 4 | |
---|
| 5 | ;; New Power Up objects |
---|
| 6 | |
---|
[582] | 7 | (defun shlmp_ai () |
---|
[566] | 8 | (try_move 0 10) |
---|
| 9 | (next_picture) |
---|
| 10 | (if (touching_bg) |
---|
| 11 | (progn |
---|
| 12 | (with_object (bg) (make_view_solid (find_rgb 255 255 255))) |
---|
[589] | 13 | (with_object (bg) (setq special_power SHLAMP_POWER)) |
---|
[566] | 14 | (with_object (add_object_after SHLMP2 (x) (y)) (link_object (bg))) |
---|
| 15 | (with_object (add_object_after WTW (x) (y)) (link_object (bg))) |
---|
| 16 | nil) |
---|
| 17 | T)) |
---|
| 18 | |
---|
| 19 | (def_char SHOULDER_LAMP |
---|
| 20 | (funs (ai_fun shlmp_ai)) |
---|
| 21 | (range 20 20) |
---|
| 22 | (states "addon/aliens/aliens.spe" (stopped "shlamp"))) |
---|
| 23 | |
---|
| 24 | (defun shlmp2_ai () |
---|
| 25 | (if (> (total_objects) 0) |
---|
| 26 | (progn |
---|
| 27 | (set_x (with_object (get_object 0) (x))) |
---|
| 28 | (set_y (with_object (get_object 0) (- (y) (/ (picture_height) 2) ))))) |
---|
| 29 | (if (eq (total_lights) 1) |
---|
| 30 | (progn |
---|
| 31 | (set_light_x (get_light 0) (x)) |
---|
| 32 | (set_light_y (get_light 0) (y))) |
---|
| 33 | nil) |
---|
[589] | 34 | (if (not (eq (with_object (get_object 0) special_power) SHLAMP_POWER)) |
---|
[566] | 35 | (progn |
---|
| 36 | (if (eq (total_lights) 1) |
---|
| 37 | (delete_light (get_light 0))) nil) |
---|
| 38 | T)) |
---|
| 39 | |
---|
| 40 | (defun slamp_cons () |
---|
| 41 | (link_light (add_light 0 (x) (y) 1 100 0 0))) |
---|
| 42 | |
---|
| 43 | (def_char SHLMP2 |
---|
| 44 | (range 1000 1000) |
---|
| 45 | (flags (unlistable T)) |
---|
| 46 | (funs (ai_fun shlmp2_ai) |
---|
| 47 | (constructor slamp_cons) |
---|
| 48 | (draw_fun dev_draw)) |
---|
[582] | 49 | (states "art/misc.spe" |
---|
[566] | 50 | (stopped "lhold"))) |
---|
| 51 | |
---|
| 52 | (def_char WTW |
---|
| 53 | (range 1000 1000) |
---|
| 54 | (flags (unlistable T)) |
---|
| 55 | (funs (draw_fun dev_draw)) |
---|
| 56 | (states "art/misc.spe" (stopped "marker"))) |
---|
| 57 | |
---|
| 58 | ;; New Power Up code |
---|
| 59 | |
---|
| 60 | (setf shlamp_image (def_image "addon/aliens/aliens.spe" "slmp_img")) |
---|
| 61 | |
---|
| 62 | (enum 'NO_POWER |
---|
| 63 | 'FAST_POWER |
---|
| 64 | 'FLY_POWER |
---|
| 65 | 'SNEAKY_POWER |
---|
| 66 | 'HEALTH_POWER |
---|
[589] | 67 | 'SHLAMP_POWER) |
---|
[566] | 68 | |
---|
| 69 | (defun give_player_health (amount) |
---|
| 70 | (let ((h_amount (select difficulty |
---|
| 71 | ('easy amount) |
---|
| 72 | ('medium (/ (* amount 3) 4)) |
---|
| 73 | ('hard (/ amount 2)) |
---|
| 74 | ('extreme (/ amount 5)))) |
---|
| 75 | (h_max (if (or (eq special_power HEALTH_POWER)) |
---|
| 76 | 200 |
---|
| 77 | 100))) |
---|
| 78 | (if (eq (hp) h_max) |
---|
| 79 | nil |
---|
| 80 | (progn |
---|
| 81 | (if (<= (+ (hp) h_amount) h_max) |
---|
| 82 | (add_hp h_amount) |
---|
| 83 | (add_hp (- h_max (hp)))) |
---|
| 84 | (setq b_ramp (+ b_ramp (* h_amount 2))) |
---|
| 85 | T)))) |
---|
| 86 | |
---|
| 87 | (setq sec1 0) |
---|
| 88 | (setq sec2 0) |
---|
| 89 | (setq sec3 0) |
---|
| 90 | (setq min1 0) |
---|
| 91 | (setq min2 0) |
---|
| 92 | |
---|
| 93 | (setq ani_reg 0) |
---|
| 94 | |
---|
| 95 | (defun bottom_draw () |
---|
| 96 | (if (not (and (eq r_ramp 0) ;; need to draw red palette |
---|
| 97 | (eq g_ramp 0) |
---|
| 98 | (eq b_ramp 0))) |
---|
| 99 | (progn |
---|
| 100 | (if (> r_ramp 7) |
---|
| 101 | (setq r_ramp (- r_ramp 7)) |
---|
| 102 | (if (< r_ramp -7) |
---|
| 103 | (setq r_ramp (+ r_ramp 7)) |
---|
| 104 | (setq r_ramp 0))) |
---|
| 105 | (if (> g_ramp 7) |
---|
| 106 | (setq g_ramp (- g_ramp 7)) |
---|
| 107 | (if (< g_ramp -7) |
---|
| 108 | (setq g_ramp (+ g_ramp 7)) |
---|
| 109 | (setq g_ramp 0))) |
---|
| 110 | (if (> b_ramp 7) |
---|
| 111 | (setq b_ramp (- b_ramp 7)) |
---|
| 112 | (if (< b_ramp -7) |
---|
| 113 | (setq b_ramp (+ b_ramp 7)) |
---|
| 114 | (setq b_ramp 0))) |
---|
[582] | 115 | (if (local_player) |
---|
[566] | 116 | (tint_palette r_ramp g_ramp b_ramp)))) |
---|
| 117 | |
---|
| 118 | (select (aistate) |
---|
| 119 | (NORMAL_PLAY |
---|
| 120 | (if (eq ani_reg 24) |
---|
| 121 | (setq ani_reg 1) |
---|
| 122 | (setq ani_reg (+ ani_reg 1))) |
---|
| 123 | |
---|
| 124 | (setq sec1 (+ sec1 1)) |
---|
| 125 | (if (eq sec1 10) |
---|
| 126 | (progn |
---|
| 127 | (setq sec2 (+ sec2 1)) |
---|
| 128 | (setq sec1 0))) |
---|
| 129 | (if (eq sec2 10) |
---|
| 130 | (progn |
---|
| 131 | (setq sec3 (+ sec3 1)) |
---|
| 132 | (setq sec2 0))) |
---|
| 133 | (if (eq sec3 6) |
---|
| 134 | (progn |
---|
| 135 | (setq min1 (+ min1 1)) |
---|
| 136 | (setq sec3 0))) |
---|
| 137 | (if (eq min1 10) |
---|
| 138 | (progn |
---|
| 139 | (setq min2 (+ min2 1)) |
---|
[582] | 140 | (setq min1 0))) |
---|
[566] | 141 | (if (eq min2 10) |
---|
| 142 | (setq min2 0)) |
---|
| 143 | (select special_power |
---|
| 144 | (NO_POWER (player_draw (player_number))) |
---|
| 145 | (HEALTH_POWER (player_draw (player_number)) |
---|
| 146 | (if (local_player) |
---|
| 147 | (put_image (- (view_x2) 20) (+ (view_y1) 5) health_image))) |
---|
| 148 | (FAST_POWER (draw_fast) (player_draw (player_number))) |
---|
| 149 | (FLY_POWER (player_draw (player_number)) |
---|
| 150 | (if (local_player) |
---|
| 151 | (put_image (- (view_x2) 20) (+ (view_y1) 5) fly_image))) |
---|
[582] | 152 | (SNEAKY_POWER |
---|
[566] | 153 | (if (local_player) |
---|
| 154 | (put_image (- (view_x2) 20) (+ (view_y1) 5) sneaky_image)) |
---|
| 155 | (sneaky_draw used_special_power (player_number))) |
---|
[589] | 156 | (SHLAMP_POWER (player_draw (player_number)) |
---|
[566] | 157 | (if (local_player) |
---|
| 158 | (put_image (- (view_x2) 20) (+ (view_y1) 5) shlamp_image))) |
---|
[589] | 159 | )))) |
---|