Ejemplo n.º 1
0
    private void a(MySpell A_0, int A_1, int A_2)
    {
        if (!this.e.ContainsKey(A_0.Id))
        {
            throw new Exception("DebuffTarget: Uncached state detected.");
        }
        bw.a a = this.e[A_0.Id];
        if (a.e.b == null)
        {
            a5.a(eChatType.Errors, "Error: no way to apply a required debuff similar to \"" + A_0.Name + "\"");
            PluginCore.cq.c.StopMacro();
        }
        else
        {
            switch (a.e.c)
            {
            case bw.b.a.a:
            {
                PluginCore.cq.v.d();
                if (!er.j("SwitchWandsToDebuff"))
                {
                    if (!PluginCore.cq.n.a(8, 0, true))
                    {
                        return;
                    }
                    break;
                }
                cv cv = PluginCore.cq.p.d(A_2);
                if ((cv != null) && (PluginCore.cq.n.a(cv.c()) == 8))
                {
                    if (PluginCore.cq.n.a(8, A_2, false))
                    {
                        break;
                    }
                    return;
                }
                if (PluginCore.cq.n.a(8, 0, true))
                {
                    break;
                }
                return;
            }

            case bw.b.a.b:
            {
                ObjectClass class2 = PluginCore.cq.aw.get_WorldFilter().get_Item(a.d).get_ObjectClass();
                CombatState state  = PluginCore.cq.n.a(class2);
                if (state != 8)
                {
                    if (!PluginCore.cq.n.a(state, a.d, false))
                    {
                        PluginCore.cq.v.d();
                        return;
                    }
                    float num = 0f;
                    if (state == 2)
                    {
                        num = 0f;
                    }
                    if (state == 4)
                    {
                        num = 1f;
                    }
                    PluginCore.cq.v.a(A_1, num, a.e.b);
                    return;
                }
                if (PluginCore.cq.n.a(state, a.d, false))
                {
                    PluginCore.cq.z.a(a.d, A_1);
                    return;
                }
                return;
            }

            case bw.b.a.c:
                if (a.b == null)
                {
                    if (a.a != 0)
                    {
                        if (!PluginCore.cq.n.a(4, a.a, false))
                        {
                            return;
                        }
                        PluginCore.cq.v.a(A_1, 1f, a.e.b);
                    }
                    return;
                }
                if (dh.d() == 1)
                {
                    PluginCore.cq.y.a(a.b.a, a.b.b, a.c);
                    return;
                }
                dh.a(1);
                return;

            default:
                return;
            }
            this.a(a.e.b, A_1);
        }
    }
Ejemplo n.º 2
0
    private MySpell a(MySpell A_0)
    {
        if (A_0 == null)
        {
            return(null);
        }
        if (this.e.ContainsKey(A_0.Id))
        {
            return(this.e[A_0.Id].e.b);
        }
        bw.a a = new bw.a {
            e = new bw.b(bw.b.a.a)
        };
        bw.b b = new bw.b(bw.b.a.a)
        {
            b = PluginCore.cq.h.a(A_0)
        };
        if (b.b != null)
        {
            b.a = b.b.SkillWithSchool;
        }
        bw.b b2 = new bw.b(bw.b.a.b);
        foreach (int num in PluginCore.cq.j.e())
        {
            string str;
            if (PluginCore.cq.p.d(num) != null)
            {
                str = PluginCore.cq.p.d(num).g() + " [" + num.ToString() + "]";
            }
            else
            {
                str = num.ToString();
            }
            PluginCore.cq.n.a("Find debuff choice (" + str + "): Begin", e8.j);
            if (!dh.b(num) || (dh.c(num) != PluginCore.cg))
            {
                goto Label_03EA;
            }
            if (!fn.b(PluginCore.cq.aw.get_WorldFilter().get_Item(num)))
            {
                goto Label_03B9;
            }
            a1   a2 = PluginCore.cq.n.c(num);
            fn.a a3 = PluginCore.cq.n.d(num);
            if (((a2 != a1.c) && (a2 != a1.e)) && (((a2 != a1.f) && (a2 != a1.g)) && (a2 != a1.b)))
            {
                goto Label_0392;
            }
            if ((a2 != a1.b) || PluginCore.cq.z.a(num))
            {
                PluginCore.cq.n.a("Find debuff choice (" + str + "): Test 1 passed", e8.j);
                if (a3.g != null)
                {
                    PluginCore.cq.n.a("Find debuff choice (" + str + "): Test 2 passed", e8.j);
                    if (a3.g.RealFamily == A_0.RealFamily)
                    {
                        PluginCore.cq.n.a("Find debuff choice (" + str + "): Test 3 passed", e8.j);
                        if (b2.b != null)
                        {
                            PluginCore.cq.n.a("Find debuff choice (" + str + "): Test 4 passed", e8.j);
                            if (a3.g.Quality <= b2.b.Quality)
                            {
                                PluginCore.cq.n.a("Find debuff choice (" + str + "): Test 5 passed", e8.j);
                                if (a3.h <= b2.a)
                                {
                                    PluginCore.cq.n.a("Find debuff choice (" + str + "): Test 6 passed", e8.j);
                                    goto Label_036B;
                                }
                            }
                        }
                        b2.b = a3.g;
                        b2.a = a3.h;
                        a.d  = num;
                        PluginCore.cq.n.a("Find debuff choice (" + str + "): Item set to be used, quality " + b2.a.ToString() + ".", e8.j);
                    }
                }
            }
Label_036B:
            PluginCore.cq.n.a("Find debuff choice (" + str + "): Item tests done.", e8.j);
            continue;
Label_0392:
            PluginCore.cq.n.a("Find debuff choice (" + str + "): Stop, wrong object type", e8.j);
            continue;
Label_03B9:
            ai.a("Warning: DbT ignoring item " + PluginCore.cq.aw.get_WorldFilter().get_Item(num).get_Name() + " because it cannot currently be wielded.");
            continue;
Label_03EA:
            PluginCore.cq.n.a("Find debuff choice (" + str + "): Stop, object invalid", e8.j);
        }
        bw.b b3 = new bw.b(bw.b.a.c);
        foreach (KeyValuePair <string, fz> pair in PluginCore.cq.l.h)
        {
            if (((fz)pair.Value) == fz.h)
            {
                bz bz = PluginCore.cq.x.d(pair.Key);
                if (bz == null)
                {
                    ai.a("Warning: DbT ignoring item " + pair.Key + " because it is not in the grenade database.");
                }
                else if (!fn.b(bz.b, bz.c, bz.d, bz.a))
                {
                    ai.a("Warning: DbT ignoring item " + bz.a + " because it cannot currently be wielded.");
                }
                else if (bz.e.RealFamily == A_0.RealFamily)
                {
                    bw.b b4 = new bw.b(bw.b.a.c)
                    {
                        b = bz.e,
                        a = bz.f
                    };
                    if (b4.a(b3) > 0)
                    {
                        MyList <int> list2 = dh.d(pair.Key);
                        if (list2.Count > 0)
                        {
                            int num2 = 0x7fffffff;
                            int num3 = 0;
                            foreach (int num4 in list2)
                            {
                                int num5 = PluginCore.cq.aw.get_WorldFilter().get_Item(num4).Values(0xd000006);
                                if (num5 < num2)
                                {
                                    num3 = num4;
                                    num2 = num5;
                                }
                            }
                            if (num3 != 0)
                            {
                                a.b = null;
                                a.c = "";
                                a.a = num3;
                                b3  = b4;
                            }
                        }
                        else
                        {
                            MyPair <int, int> pair2 = PluginCore.cq.y.a(pair.Key, 1);
                            if (pair2 != null)
                            {
                                a.b = pair2;
                                a.c = pair.Key;
                                a.a = 0;
                                b3  = b4;
                            }
                        }
                    }
                }
            }
        }
        a.e = b;
        if (a.e.a(b2) < 0)
        {
            a.e = b2;
        }
        if (a.e.a(b3) < 0)
        {
            a.e = b3;
        }
        this.e[A_0.Id] = a;
        return(a.e.b);
    }