Esempio n. 1
0
    public float GetEnhancementEffect(Enums.eEnhance iEffect, int subEnh, float mag)
    {
        float num1;

        if (this.Enh < 0)
        {
            num1 = 0.0f;
        }
        else
        {
            float        num2        = 0.0f;
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[this.Enh];
            foreach (Enums.sEffect sEffect in enhancement.Effect)
            {
                if (sEffect.Mode == Enums.eEffMode.Enhancement && (sEffect.BuffMode != Enums.eBuffDebuff.DeBuffOnly || (double)mag <= 0.0) && ((sEffect.BuffMode != Enums.eBuffDebuff.BuffOnly || (double)mag >= 0.0) && (sEffect.Schedule != Enums.eSchedule.None && (Enums.eEnhance)sEffect.Enhance.ID == iEffect)) && (subEnh < 0 || subEnh == sEffect.Enhance.SubID))
                {
                    float scheduleMult = this.GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
                    if ((double)Math.Abs(sEffect.Multiplier) > 0.01)
                    {
                        scheduleMult *= sEffect.Multiplier;
                    }
                    num2 += scheduleMult;
                }
            }
            num1 = num2;
        }
        return(num1);
    }
Esempio n. 2
0
    public float GetEnhancementEffect(Enums.eEnhance iEffect, int subEnh, float mag)
    {
        if (Enh < 0)
        {
            return(0.0f);
        }

        float        num2        = 0.0f;
        IEnhancement enhancement = DatabaseAPI.Database.Enhancements[Enh];

        foreach (Enums.sEffect sEffect in enhancement.Effect)
        {
            if (sEffect.Mode != Enums.eEffMode.Enhancement || (sEffect.BuffMode == Enums.eBuffDebuff.DeBuffOnly && !(mag <= 0.0)) ||
                ((sEffect.BuffMode == Enums.eBuffDebuff.BuffOnly && !(mag >= 0.0)) ||
                 (sEffect.Schedule == Enums.eSchedule.None || (Enums.eEnhance)sEffect.Enhance.ID != iEffect)) ||
                (subEnh >= 0 && subEnh != sEffect.Enhance.SubID))
            {
                continue;
            }
            float scheduleMult = GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
            if (Math.Abs(sEffect.Multiplier) > 0.01)
            {
                scheduleMult *= sEffect.Multiplier;
            }
            num2 += scheduleMult;
        }
        return(num2);
    }
Esempio n. 3
0
    public static Enums.eSchedule GetSchedule(Enums.eEnhance iEnh, int tSub = -1)
    {
        Enums.eSchedule eSchedule;
        switch (iEnh)
        {
        case Enums.eEnhance.Defense:
            eSchedule = Enums.eSchedule.B;
            break;

        case Enums.eEnhance.Interrupt:
            return(Enums.eSchedule.C);

        case Enums.eEnhance.Mez:
            return(tSub <= -1 || !(tSub == 4 | tSub == 5) ? Enums.eSchedule.A : Enums.eSchedule.D);

        case Enums.eEnhance.Range:
            return(Enums.eSchedule.B);

        case Enums.eEnhance.Resistance:
            return(Enums.eSchedule.B);

        case Enums.eEnhance.ToHit:
            return(Enums.eSchedule.B);

        default:
            eSchedule = Enums.eSchedule.A;
            break;
        }
        return(eSchedule);
    }
Esempio n. 4
0
    public static Enums.eSchedule GetSchedule(Enums.eEnhance iEnh, int tSub = -1)
    {
        Enums.eSchedule eSchedule;
        if (iEnh != Enums.eEnhance.Defense)
        {
            switch (iEnh)
            {
            case Enums.eEnhance.Interrupt:
                return(Enums.eSchedule.C);

            case Enums.eEnhance.JumpHeight:
            case Enums.eEnhance.SpeedJumping:
                break;

            case Enums.eEnhance.Mez:
                if (tSub <= -1)
                {
                    return(Enums.eSchedule.A);
                }
                if (tSub == 4 | tSub == 5)
                {
                    return(Enums.eSchedule.D);
                }
                return(Enums.eSchedule.A);

            case Enums.eEnhance.Range:
                return(Enums.eSchedule.B);

            default:
                switch (iEnh)
                {
                case Enums.eEnhance.Resistance:
                    return(Enums.eSchedule.B);

                case Enums.eEnhance.ToHit:
                    return(Enums.eSchedule.B);
                }
                break;
            }
            eSchedule = Enums.eSchedule.A;
        }
        else
        {
            eSchedule = Enums.eSchedule.B;
        }
        return(eSchedule);
    }
Esempio n. 5
0
    public string GetEnhancementStringLong()
    {
        string str1;

        if (this.Enh < 0)
        {
            str1 = string.Empty;
        }
        else
        {
            StringBuilder stringBuilder = new StringBuilder();
            bool          flag1         = false;
            bool          flag2         = false;
            bool          flag3         = false;
            bool          flag4         = false;
            bool          flag5         = false;
            IEnhancement  enhancement   = DatabaseAPI.Database.Enhancements[this.Enh];
            if (enhancement.Effect.Length == 0)
            {
                str1 = enhancement.Desc;
            }
            else
            {
                foreach (Enums.sEffect sEffect in enhancement.Effect)
                {
                    if (sEffect.Mode == Enums.eEffMode.FX)
                    {
                        flag1 = true;
                    }
                    if (sEffect.Mode == Enums.eEffMode.Enhancement && sEffect.Schedule != Enums.eSchedule.None)
                    {
                        float scheduleMult = this.GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
                        if ((double)sEffect.Multiplier > 0.0)
                        {
                            scheduleMult *= sEffect.Multiplier;
                        }
                        Enums.eEnhance id = (Enums.eEnhance)sEffect.Enhance.ID;
                        string         str2;
                        if (id == Enums.eEnhance.Mez)
                        {
                            Enums.eMez subId = (Enums.eMez)sEffect.Enhance.SubID;
                            str2 = Enum.GetName(subId.GetType(), subId);
                        }
                        else
                        {
                            str2 = Enum.GetName(id.GetType(), id);
                        }
                        if (sEffect.Enhance.ID == 7 || sEffect.Enhance.ID == 8 || sEffect.Enhance.ID == 17)
                        {
                            str2  = !flag2 ? "Heal" : string.Empty;
                            flag2 = true;
                        }
                        else if (sEffect.Enhance.ID == 10 || sEffect.Enhance.ID == 11 && !flag5)
                        {
                            str2  = !flag3 ? "Jump" : string.Empty;
                            flag3 = true;
                        }
                        else if (sEffect.Enhance.ID == 5 || sEffect.Enhance.ID == 16)
                        {
                            str2  = !flag4 ? "EndMod" : string.Empty;
                            flag4 = true;
                        }
                        else if (((enhancement.Name.IndexOf("Slow", StringComparison.Ordinal) > -1 ? 1 : 0) & (sEffect.BuffMode != Enums.eBuffDebuff.DeBuffOnly ? 0 : (sEffect.Enhance.ID == 6 || sEffect.Enhance.ID == 11 ? 1 : (sEffect.Enhance.ID == 19 ? 1 : 0)))) != 0 || sEffect.Enhance.ID == 21)
                        {
                            str2  = !flag5 ? "Slow Movement" : string.Empty;
                            flag5 = true;
                        }
                        if (!string.IsNullOrEmpty(str2))
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append("\n");
                            }
                            stringBuilder.AppendFormat("{0}  enhancement (Sched. {1}: {2}%)", str2, Enum.GetName(sEffect.Schedule.GetType(), sEffect.Schedule), (scheduleMult * 100f).ToString((IFormatProvider)NumberFormatInfo.CurrentInfo));
                        }
                    }
                }
                if (!flag1)
                {
                    str1 = stringBuilder.ToString();
                }
                else
                {
                    IPower power = new Power(enhancement.GetPower());
                    power.ApplyGrantPowerEffects();
                    int[] returnMask = new int[0];
                    for (int index1 = 0; index1 <= power.Effects.Length - 1; ++index1)
                    {
                        if (power.Effects[index1].EffectType == Enums.eEffectType.GrantPower)
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append("\n");
                            }
                            stringBuilder.Append(power.Effects[index1].BuildEffectString(true, "", false, false, false));
                            string empty = string.Empty;
                            for (int idEffect = 0; idEffect <= power.Effects.Length - 1; ++idEffect)
                            {
                                power.Effects[idEffect].Stacking = Enums.eStacking.Yes;
                                power.Effects[idEffect].Buffable = true;
                                if (power.Effects[idEffect].Absorbed_EffectID == index1)
                                {
                                    power.GetEffectStringGrouped(idEffect, ref empty, ref returnMask, false, false, false);
                                }
                                if (returnMask.Length > 0)
                                {
                                    if (stringBuilder.Length > 0)
                                    {
                                        stringBuilder.Append("\n");
                                    }
                                    stringBuilder.AppendFormat("  {0}", empty);
                                    break;
                                }
                            }
                            for (int index2 = 0; index2 <= power.Effects.Length - 1; ++index2)
                            {
                                bool flag6 = false;
                                for (int index3 = 0; index3 <= returnMask.Length - 1; ++index3)
                                {
                                    if (returnMask[index3] == index2)
                                    {
                                        flag6 = true;
                                        break;
                                    }
                                }
                                if (power.Effects[index2].Absorbed_EffectID == index1 && !flag6)
                                {
                                    if (stringBuilder.Length > 0)
                                    {
                                        stringBuilder.Append("\n");
                                    }
                                    power.Effects[index2].Stacking = Enums.eStacking.Yes;
                                    power.Effects[index2].Buffable = true;
                                    stringBuilder.AppendFormat("  {0}", power.Effects[index2].BuildEffectString(false, "", false, false, false));
                                }
                            }
                        }
                        else if (!power.Effects[index1].Absorbed_Effect && power.Effects[index1].EffectType != Enums.eEffectType.Enhancement)
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append("\n");
                            }
                            stringBuilder.Append(power.Effects[index1].BuildEffectString(true, "", false, false, false));
                        }
                    }
                    str1 = stringBuilder.ToString().Replace("Slf", "Self").Replace("Tgt", "Target");
                }
            }
        }
        return(str1);
    }