SHOW:
|
|
- or go back to the newest paste.
1 | //SS3 Goku (Buu) | |
2 | ||
3 | void switchToNearestTarget() | |
4 | { | |
5 | int nearestDistance=2000; | |
6 | int nearestIndex=0; | |
7 | int distance=abs(self.x-target.x); | |
8 | for (int i = 0; i < 400; ++i){ | |
9 | - | if ( (loadTarget(i) == 0)){ |
9 | + | if ( (loadTarget(i) == 0) && target.team != self.team){ |
10 | - | if (target.team != self.team) |
10 | + | |
11 | if (distance < nearestDistance) | |
12 | { | |
13 | nearestDistance=distance; | |
14 | nearestIndex=i; | |
15 | } | |
16 | } | |
17 | } | |
18 | print(nearestDistance+"\n"); | |
19 | loadTarget(nearestIndex); | |
20 | } | |
21 | bool facingTarget() | |
22 | { | |
23 | return ((!self.facing && self.x < target.x) || (self.facing && self.x > target.x)); | |
24 | } | |
25 | ||
26 | bool xDistanceBetween(int min, int max) | |
27 | { | |
28 | return abs(self.x-target.x)>=min && abs(self.x-target.x)<=max; | |
29 | } | |
30 | ||
31 | bool yDistanceBetween(int min, int max) | |
32 | { | |
33 | return abs(self.y-target.y)>=min && abs(self.y-target.y)<=max; | |
34 | } | |
35 | ||
36 | bool zDistanceBetween(int min, int max) | |
37 | { | |
38 | return abs(self.z-target.z)>=min && abs(self.z-target.z)<=max; | |
39 | } | |
40 | ||
41 | bool targetAttacking() | |
42 | { | |
43 | int itrcount=game.objects[target.num].data.frames[game.objects[target.num].data.frames[game.objects[target.num].frame1].next].itr_count; | |
44 | for (int itrindx=0; itrindx < itrcount; itrindx++) | |
45 | { | |
46 | return target.data.frames[target.data.frames[target.frame].next].itrs[itrindx].kind==0; | |
47 | //return target.data.frames[target.frame].itrs[itrindx].kind==0; | |
48 | } | |
49 | return false; | |
50 | } | |
51 | ||
52 | void changeDirection() | |
53 | { | |
54 | if (self.facing) right(1,0); | |
55 | else left(1,0); | |
56 | } | |
57 | ||
58 | bool targetInvulnerable() | |
59 | { | |
60 | return (target.state)==14; | |
61 | } | |
62 | ||
63 | void clearKeyClicks() | |
64 | { | |
65 | up(0,0); down(0,0); left(0,0); right(0,0); A(0,0); D(0,0); J(0,0); | |
66 | } | |
67 | ||
68 | void DfJ() | |
69 | { | |
70 | if (facingTarget() && self.facing) | |
71 | { | |
72 | DlJ(); | |
73 | } | |
74 | else | |
75 | { | |
76 | DrJ(); | |
77 | } | |
78 | } | |
79 | ||
80 | void DfA() | |
81 | { | |
82 | if (facingTarget() && self.facing) | |
83 | { | |
84 | DlA(); | |
85 | } | |
86 | else | |
87 | { | |
88 | DrA(); | |
89 | } | |
90 | } | |
91 | ||
92 | ||
93 | void id() | |
94 | { | |
95 | int abs_x_distance=abs(self.x-target.x); | |
96 | int abs_y_distance=abs(self.y-target.y); | |
97 | int abs_z_distance=abs(self.z-target.z); | |
98 | ||
99 | //----------------------Start writing your AI here---------------- | |
100 | clearKeyClicks(); | |
101 | switchToNearestTarget(); | |
102 | ||
103 | //face the target | |
104 | if (!facingTarget()) | |
105 | changeDirection(); | |
106 | ||
107 | //defend if attacked | |
108 | if (targetAttacking() && self.state==0) | |
109 | D(1,0); | |
110 | ||
111 | ||
112 | ||
113 | /* | |
114 | ||
115 | //Kamehameha | |
116 | if (abs(100*(self.z-target.z)/((self.x-target.x)*((self.facing?1:0)*2-1))) <= 4 && abs(self.x-target.x) < 500 && abs(self.x-target.x) > 300 && self.mp > 225) | |
117 | { | |
118 | if (self.x-target.x > 0) | |
119 | { | |
120 | DlJ(); | |
121 | } | |
122 | else if (self.x-target.x < 0) | |
123 | { | |
124 | DrJ(); | |
125 | } | |
126 | } | |
127 | ||
128 | //KiBlasts | |
129 | if (abs(100*(self.z-target.z)/((self.x-target.x)*((self.facing?1:0)*2-1))) <= 15 && abs(self.x-target.x) < 600 && abs(self.x-target.x) > 450 && self.mp > 125) | |
130 | { | |
131 | if (self.x-target.x > 0) | |
132 | { | |
133 | DlA(); | |
134 | A(1,0); | |
135 | up(1,0); | |
136 | A(1,0); | |
137 | down(1,0); | |
138 | } | |
139 | else if (self.x-target.x < 0) | |
140 | { | |
141 | DrA(); | |
142 | A(1,0); | |
143 | up(1,0); | |
144 | A(1,0); | |
145 | down(1,0); | |
146 | } | |
147 | } | |
148 | */ | |
149 | /* | |
150 | //Instant Kamehameha | |
151 | if (self.frame==266 || self.frame == 295 && abs(100*(self.z-target.z)/((self.x-target.x)*((self.facing?1:0)*2-1))) >= 6 || abs(self.x-target.x) > 500) { | |
152 | if (self.x-target.x > 0){ | |
153 | DrA(); | |
154 | } | |
155 | else if (self.x-target.x < 0){ | |
156 | DlA(); | |
157 | } | |
158 | } | |
159 | */ | |
160 | ||
161 | /* | |
162 | if ((abs(self.x-target.x) > 500) && self.mp < 500 ) | |
163 | { | |
164 | DJA(); | |
165 | A(1,0); | |
166 | } | |
167 | ||
168 | ||
169 | //IT Counter Attack | |
170 | if (self.frame==111) | |
171 | { | |
172 | A(1,0); | |
173 | } | |
174 | ||
175 | //combo | |
176 | if (self.frame == 73) | |
177 | { | |
178 | J(1,0); | |
179 | } | |
180 | ||
181 | ||
182 | //Explosive Wave | |
183 | if (abs(100*(self.z-target.z)/((self.x-target.x)*((self.facing?1:0)*2-1))) <= 30 && abs(self.x-target.x) < 200 && abs(self.x-target.x) > 50 && self.mp > 450 && self.hp < 250) | |
184 | { | |
185 | DuJ(); | |
186 | } | |
187 | ||
188 | //Kiai Blast Combo | |
189 | if (abs(100*(self.z-target.z)/((self.x-target.x)*((self.facing?1:0)*2-1))) <= 1 && abs(self.x-target.x) < 225 && abs(self.x-target.x) > 100 && self.mp > 300) | |
190 | { | |
191 | if (self.x-target.x > 0) | |
192 | { | |
193 | left(1,0); | |
194 | DuA(); | |
195 | A(1,0); | |
196 | } | |
197 | if (self.x-target.x < 0) | |
198 | { | |
199 | right(1,0); | |
200 | DuA(); | |
201 | A(1,0); | |
202 | } | |
203 | } | |
204 | ||
205 | //Kamehameha Finish on Combo end | |
206 | if (self.frame==169 && target.state==12) | |
207 | { | |
208 | J(1,0); | |
209 | } | |
210 | ||
211 | if (target.state==3 && abs(self.x-target.x) > 200 && self.mp > 475 && self.hp < 250) | |
212 | { | |
213 | if (self.x-target.x > 0) | |
214 | { | |
215 | left(1,0) ; | |
216 | DdJ(); | |
217 | A(1,0); | |
218 | } | |
219 | else if (self.x-target.x < 0) | |
220 | { | |
221 | right(1,0) ; | |
222 | DdJ(); | |
223 | A(1,0); | |
224 | } | |
225 | ||
226 | } | |
227 | ||
228 | //crazy | |
229 | if (difficulty == -1) | |
230 | { | |
231 | ||
232 | //combo | |
233 | if (self.frame == 70 && self.mp > 400) | |
234 | { | |
235 | J(1,0); | |
236 | } | |
237 | ||
238 | //combo | |
239 | if (self.frame == 28 || self.frame == 29) | |
240 | { | |
241 | J(1,0); | |
242 | } | |
243 | ||
244 | } | |
245 | ||
246 | */ | |
247 | ||
248 | ||
249 | ||
250 | // return 0; | |
251 | } |