001    
002    import java.util.List;
003    import java.util.Random;
004    
005    public abstract class hl extends mj {
006    
007        public ji an = new ji(this);
008        public ei ao;
009        public ei ap;
010        public byte aq = 0;
011        public int ar = 0;
012        public float as;
013        public float at;
014        public boolean au = false;
015        public int av = 0;
016        public String aw;
017        public int ax;
018        public double ay;
019        public double az;
020        public double aA;
021        public double aB;
022        public double aC;
023        public double aD;
024        private int a = 0;
025        public mq aE = null;
026    
027        public hl(fv paramfv) {
028            super(paramfv);
029    
030            ao = new ae(an, !paramfv.z);
031    
032            ap = ao;
033    
034            H = 1.62F;
035            c(paramfv.m + 0.5D, paramfv.n + 1, paramfv.o + 0.5D, 0.0F, 0.0F);
036    
037            aZ = 20;
038            aS = "humanoid";
039            aR = 180.0F;
040            Y = 20;
041    
042            aP = "/mob/char.png";
043        }
044    
045        public void b_() {
046            super.b_();
047    
048            if ((!l.z)
049                    && (ap != null) && (!ap.b(this))) {
050                L();
051                ap = ao;
052            }
053    
054            ay = aB;
055            az = aC;
056            aA = aD;
057    
058            double d1 = p - aB;
059            double d2 = q - aC;
060            double d3 = r - aD;
061    
062            double d4 = 10.0D;
063            if (d1 > d4) {
064                ay = (this.aB = p);
065            }
066            if (d3 > d4) {
067                aA = (this.aD = r);
068            }
069            if (d2 > d4) {
070                az = (this.aC = q);
071            }
072            if (d1 < -d4) {
073                ay = (this.aB = p);
074            }
075            if (d3 < -d4) {
076                aA = (this.aD = r);
077            }
078            if (d2 < -d4) {
079                az = (this.aC = q);
080            }
081    
082            aB += d1 * 0.25D;
083            aD += d3 * 0.25D;
084            aC += d2 * 0.25D;
085        }
086    
087        protected void L() {
088            ap = ao;
089        }
090    
091        public void D() {
092            super.D();
093            as = at;
094            at = 0.0F;
095        }
096    
097        protected void d() {
098            if (au) {
099                av += 1;
100                if (av == 8) {
101                    av = 0;
102                    au = false;
103                }
104            } else {
105                av = 0;
106            }
107    
108            aY = (av / 8.0F);
109        }
110    
111        public void o() {
112            // hMod: adjust 'healing over time' independent of monster-spawn=true/false (nice notchup!)
113            PluginLoader.HookResult autoHeal = etc.getInstance().autoHeal();
114            if ((l.k == 0) && (autoHeal == PluginLoader.HookResult.DEFAULT_ACTION) || autoHeal == PluginLoader.HookResult.ALLOW_ACTION) {
115                if ((aZ < 20) && (X % 20 * 12 == 0)) {
116                    d(1);
117                }
118            }
119    
120            an.f();
121            as = at;
122    
123            super.o();
124    
125            float f1 = iz.a(s * s + u * u);
126            float f2 = (float) Math.atan(-t * 0.2000000029802322D) * 15.0F;
127            if (f1 > 0.1F) {
128                f1 = 0.1F;
129            }
130            if ((!A) || (aZ <= 0)) {
131                f1 = 0.0F;
132            }
133            if ((A) || (aZ <= 0)) {
134                f2 = 0.0F;
135            }
136            at += (f1 - at) * 0.4F;
137            bh += (f2 - bh) * 0.8F;
138    
139            if (aZ > 0) {
140                List localList = l.b(this, z.b(1.0D, 0.0D, 1.0D));
141                if (localList != null) {
142                    for (int i = 0; i < localList.size(); i++) {
143                        fe localfe = (fe) localList.get(i);
144                        if (!localfe.G) {
145                            j(localfe);
146                        }
147                    }
148                }
149            }
150        }
151    
152        private void j(fe paramfe) {
153            paramfe.b(this);
154        }
155    
156        public void f(fe paramfe) {
157            super.f(paramfe);
158            a(0.2F, 0.2F);
159            a(p, q, r);
160            t = 0.1000000014901161D;
161            // gives player with name "Notch" an free apple; god may know why.
162            if (aw.equals("Notch")) {
163                a(new jl(hg.h, 1), true);
164            }
165            an.h();
166    
167            if (paramfe != null) {
168                s = (-iz.b((bd + v) * 3.141593F / 180.0F) * 0.1F);
169                u = (-iz.a((bd + v) * 3.141593F / 180.0F) * 0.1F);
170            } else {
171                s = (this.u = 0.0D);
172            }
173            H = 0.1F;
174        }
175    
176        public void b(fe paramfe, int paramInt) {
177            ar += paramInt;
178        }
179    
180        public void O() {
181            a(an.b(an.c, 1), false);
182        }
183    
184        public void b(jl paramjl) {
185            a(paramjl, false);
186        }
187    
188        public void a(jl paramjl, boolean paramBoolean) {
189            if (paramjl == null) {
190                return;
191            }
192    
193            ic localic = new ic(l, p, q - 0.300000011920929D + w(), r, paramjl);
194            localic.c = 40;
195    
196            float f1 = 0.1F;
197            float f2;
198            if (paramBoolean) {
199                f2 = W.nextFloat() * 0.5F;
200                float f3 = W.nextFloat() * 3.141593F * 2.0F;
201                localic.s = (-iz.a(f3) * f2);
202                localic.u = (iz.b(f3) * f2);
203                localic.t = 0.2000000029802322D;
204            } else {
205                f1 = 0.3F;
206                localic.s = (-iz.a(v / 180.0F * 3.141593F) * iz.b(w / 180.0F * 3.141593F) * f1);
207                localic.u = (iz.b(v / 180.0F * 3.141593F) * iz.b(w / 180.0F * 3.141593F) * f1);
208                localic.t = (-iz.a(w / 180.0F * 3.141593F) * f1 + 0.1F);
209                f1 = 0.02F;
210    
211                f2 = W.nextFloat() * 3.141593F * 2.0F;
212                f1 *= W.nextFloat();
213                localic.s += Math.cos(f2) * f1;
214                localic.t += (W.nextFloat() - W.nextFloat()) * 0.1F;
215                localic.u += Math.sin(f2) * f1;
216            }
217    
218            a(localic);
219        }
220    
221        protected void a(ic paramic) {
222            l.a(paramic);
223        }
224    
225        public float a(hr paramhr) {
226            float f = an.a(paramhr);
227            if (a(mh.f)) {
228                f /= 5.0F;
229            }
230            if (!A) {
231                f /= 5.0F;
232            }
233    
234            return f;
235        }
236    
237        public boolean b(hr paramhr) {
238            return an.b(paramhr);
239        }
240    
241        public void b(ah paramah) {
242            super.b(paramah);
243            fh localfh = paramah.k("Inventory");
244            an.b(localfh);
245            ax = paramah.d("Dimension");
246        }
247    
248        public void a(ah paramah) {
249            super.a(paramah);
250            paramah.a("Inventory", an.a(new fh()));
251            paramah.a("Dimension", ax);
252        }
253    
254        public void a(mn parammn) {
255        }
256    
257        public void a(int paramInt1, int paramInt2, int paramInt3) {
258        }
259    
260        public void c(fe paramfe, int paramInt) {
261        }
262    
263        public float w() {
264            return 0.12F;
265        }
266    
267        public boolean a(fe paramfe, int paramInt) {
268            bw = 0;
269            if (aZ <= 0) {
270                return false;
271            }
272    
273            if (((paramfe instanceof hq)) || ((paramfe instanceof fc))) {
274                if (l.k == 0) {
275                    paramInt = 0;
276                }
277                if (l.k == 1) {
278                    paramInt = paramInt / 3 + 1;
279                }
280                if (l.k == 3) {
281                    paramInt = paramInt * 3 / 2;
282                }
283            }
284    
285            if (paramInt == 0) {
286                return false;
287            }
288    
289            return super.a(paramfe, paramInt);
290        }
291    
292        protected void e(int paramInt) {
293            int i = 25 - an.g();
294            int j = paramInt * i + a;
295            an.c(paramInt);
296            paramInt = j / 25;
297            a = (j % 25);
298            super.e(paramInt);
299        }
300    
301        public void a(ez paramez) {
302        }
303    
304        public void a(bf parambf) {
305        }
306    
307        public void a(lv paramlv) {
308        }
309    
310        public void g(fe paramfe) {
311            if (paramfe.a(this)) {
312                return;
313            }
314            jl localjl = P();
315            if ((localjl != null) && ((paramfe instanceof mj))) {
316                localjl.b((mj) paramfe);
317                if (localjl.a <= 0) {
318                    localjl.a(this);
319                    Q();
320                }
321            }
322        }
323    
324        public jl P() {
325            return an.e();
326        }
327    
328        public void Q() {
329            an.a(an.c, null);
330        }
331    
332        public double F() {
333            return H - 0.5F;
334        }
335    
336        public void K() {
337            av = -1;
338            au = true;
339        }
340    
341        public void h(fe paramfe) {
342            int i = an.a(paramfe);
343            if (i > 0) {
344                paramfe.a(this, i);
345                jl localjl = P();
346                if ((localjl != null) && ((paramfe instanceof mj))) {
347                    localjl.a((mj) paramfe);
348                    if (localjl.a <= 0) {
349                        localjl.a(this);
350                        Q();
351                    }
352                }
353            }
354        }
355    
356        public void a(jl paramjl) {
357        }
358    
359        public void q() {
360            super.q();
361            ao.a(this);
362            if (ap != null) {
363                ap.a(this);
364            }
365        }
366    }