View difference between Paste ID: t3meKpZA and PCpFCCqj
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
}